diff --git a/README.md b/README.md index 6eace28ad..8bad4a80c 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,10 @@ #### Supported via GitHub Action (Automated & Always Up-to-Date) -[Arabic](./translations/ar/README.md) | [Bengali](./translations/bn/README.md) | [Bulgarian](./translations/bg/README.md) | [Burmese (Myanmar)](./translations/my/README.md) | [Chinese (Simplified)](./translations/zh/README.md) | [Chinese (Traditional, Hong Kong)](./translations/hk/README.md) | [Chinese (Traditional, Macau)](./translations/mo/README.md) | [Chinese (Traditional, Taiwan)](./translations/tw/README.md) | [Croatian](./translations/hr/README.md) | [Czech](./translations/cs/README.md) | [Danish](./translations/da/README.md) | [Dutch](./translations/nl/README.md) | [Estonian](./translations/et/README.md) | [Finnish](./translations/fi/README.md) | [French](./translations/fr/README.md) | [German](./translations/de/README.md) | [Greek](./translations/el/README.md) | [Hebrew](./translations/he/README.md) | [Hindi](./translations/hi/README.md) | [Hungarian](./translations/hu/README.md) | [Indonesian](./translations/id/README.md) | [Italian](./translations/it/README.md) | [Japanese](./translations/ja/README.md) | [Korean](./translations/ko/README.md) | [Lithuanian](./translations/lt/README.md) | [Malay](./translations/ms/README.md) | [Marathi](./translations/mr/README.md) | [Nepali](./translations/ne/README.md) | [Norwegian](./translations/no/README.md) | [Persian (Farsi)](./translations/fa/README.md) | [Polish](./translations/pl/README.md) | [Portuguese (Brazil)](./translations/br/README.md) | [Portuguese (Portugal)](./translations/pt/README.md) | [Punjabi (Gurmukhi)](./translations/pa/README.md) | [Romanian](./translations/ro/README.md) | [Russian](./translations/ru/README.md) | [Serbian (Cyrillic)](./translations/sr/README.md) | [Slovak](./translations/sk/README.md) | [Slovenian](./translations/sl/README.md) | [Spanish](./translations/es/README.md) | [Swahili](./translations/sw/README.md) | [Swedish](./translations/sv/README.md) | [Tagalog (Filipino)](./translations/tl/README.md) | [Tamil](./translations/ta/README.md) | [Thai](./translations/th/README.md) | [Turkish](./translations/tr/README.md) | [Ukrainian](./translations/uk/README.md) | [Urdu](./translations/ur/README.md) | [Vietnamese](./translations/vi/README.md) +[Arabic](./translations/ar/README.md) | [Bengali](./translations/bn/README.md) | [Bulgarian](./translations/bg/README.md) | [Burmese (Myanmar)](./translations/my/README.md) | [Chinese (Simplified)](./translations/zh/README.md) | [Chinese (Traditional, Hong Kong)](./translations/hk/README.md) | [Chinese (Traditional, Macau)](./translations/mo/README.md) | [Chinese (Traditional, Taiwan)](./translations/tw/README.md) | [Croatian](./translations/hr/README.md) | [Czech](./translations/cs/README.md) | [Danish](./translations/da/README.md) | [Dutch](./translations/nl/README.md) | [Estonian](./translations/et/README.md) | [Finnish](./translations/fi/README.md) | [French](./translations/fr/README.md) | [German](./translations/de/README.md) | [Greek](./translations/el/README.md) | [Hebrew](./translations/he/README.md) | [Hindi](./translations/hi/README.md) | [Hungarian](./translations/hu/README.md) | [Indonesian](./translations/id/README.md) | [Italian](./translations/it/README.md) | [Japanese](./translations/ja/README.md) | [Kannada](./translations/kn/README.md) | [Korean](./translations/ko/README.md) | [Lithuanian](./translations/lt/README.md) | [Malay](./translations/ms/README.md) | [Malayalam](./translations/ml/README.md) | [Marathi](./translations/mr/README.md) | [Nepali](./translations/ne/README.md) | [Nigerian Pidgin](./translations/pcm/README.md) | [Norwegian](./translations/no/README.md) | [Persian (Farsi)](./translations/fa/README.md) | [Polish](./translations/pl/README.md) | [Portuguese (Brazil)](./translations/br/README.md) | [Portuguese (Portugal)](./translations/pt/README.md) | [Punjabi (Gurmukhi)](./translations/pa/README.md) | [Romanian](./translations/ro/README.md) | [Russian](./translations/ru/README.md) | [Serbian (Cyrillic)](./translations/sr/README.md) | [Slovak](./translations/sk/README.md) | [Slovenian](./translations/sl/README.md) | [Spanish](./translations/es/README.md) | [Swahili](./translations/sw/README.md) | [Swedish](./translations/sv/README.md) | [Tagalog (Filipino)](./translations/tl/README.md) | [Tamil](./translations/ta/README.md) | [Telugu](./translations/te/README.md) | [Thai](./translations/th/README.md) | [Turkish](./translations/tr/README.md) | [Ukrainian](./translations/uk/README.md) | [Urdu](./translations/ur/README.md) | [Vietnamese](./translations/vi/README.md) - #### Join Our Community +#### Join Our Community [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) @@ -157,6 +157,12 @@ Find a pdf of the curriculum with links [here](https://microsoft.github.io/ML-Fo Our team produces other courses! Check out: +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) [![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -199,3 +205,5 @@ If you get stuck or have any questions about building AI apps. Join fellow learn If you have product feedback or errors while building visit: [![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) + + diff --git a/translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.kn.png b/translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.kn.png new file mode 100644 index 000000000..07d78b7fa Binary files /dev/null and b/translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.kn.png differ diff --git a/translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ml.png b/translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ml.png new file mode 100644 index 000000000..4027a60a4 Binary files /dev/null and b/translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ml.png differ diff --git a/translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.te.png b/translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.te.png new file mode 100644 index 000000000..50acfccd0 Binary files /dev/null and b/translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.te.png differ diff --git a/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.kn.png b/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.kn.png new file mode 100644 index 000000000..bc1b3c3e4 Binary files /dev/null and b/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.kn.png differ diff --git a/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.ml.png b/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.ml.png new file mode 100644 index 000000000..b3f2ec218 Binary files /dev/null and b/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.ml.png differ diff --git a/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.te.png b/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.te.png new file mode 100644 index 000000000..2f64ddfda Binary files /dev/null and b/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.te.png differ diff --git a/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.kn.png b/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.kn.png new file mode 100644 index 000000000..97faacdb9 Binary files /dev/null and b/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.kn.png differ diff --git a/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.ml.png b/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.ml.png new file mode 100644 index 000000000..ec7fe7ab5 Binary files /dev/null and b/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.ml.png differ diff --git a/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.te.png b/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.te.png new file mode 100644 index 000000000..4492a7308 Binary files /dev/null and b/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.te.png differ diff --git a/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.kn.png b/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.kn.png new file mode 100644 index 000000000..987ae50f9 Binary files /dev/null and b/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.kn.png differ diff --git a/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.ml.png b/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.ml.png new file mode 100644 index 000000000..987ae50f9 Binary files /dev/null and b/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.ml.png differ diff --git a/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.te.png b/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.te.png new file mode 100644 index 000000000..987ae50f9 Binary files /dev/null and b/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.te.png differ diff --git a/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.kn.png b/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.kn.png new file mode 100644 index 000000000..5fad23904 Binary files /dev/null and b/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.kn.png differ diff --git a/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.ml.png b/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.ml.png new file mode 100644 index 000000000..5ad82e16e Binary files /dev/null and b/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.ml.png differ diff --git a/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.te.png b/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.te.png new file mode 100644 index 000000000..52fd39e14 Binary files /dev/null and b/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.te.png differ diff --git a/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.kn.png b/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.kn.png new file mode 100644 index 000000000..c707b58a5 Binary files /dev/null and b/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.kn.png differ diff --git a/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.ml.png b/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.ml.png new file mode 100644 index 000000000..c707b58a5 Binary files /dev/null and b/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.ml.png differ diff --git a/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.te.png b/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.te.png new file mode 100644 index 000000000..c707b58a5 Binary files /dev/null and b/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.te.png differ diff --git a/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.kn.png b/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.kn.png new file mode 100644 index 000000000..80cd32c52 Binary files /dev/null and b/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.kn.png differ diff --git a/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.ml.png b/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.ml.png new file mode 100644 index 000000000..367731ae0 Binary files /dev/null and b/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.ml.png differ diff --git a/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.te.png b/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.te.png new file mode 100644 index 000000000..fe1188d71 Binary files /dev/null and b/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.te.png differ diff --git a/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.kn.png b/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.kn.png new file mode 100644 index 000000000..4fa08b2cc Binary files /dev/null and b/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.kn.png differ diff --git a/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.ml.png b/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.ml.png new file mode 100644 index 000000000..4fa08b2cc Binary files /dev/null and b/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.ml.png differ diff --git a/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.te.png b/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.te.png new file mode 100644 index 000000000..4fa08b2cc Binary files /dev/null and b/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.te.png differ diff --git a/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.kn.png b/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.kn.png new file mode 100644 index 000000000..372cf48c8 Binary files /dev/null and b/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.kn.png differ diff --git a/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.ml.png b/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.ml.png new file mode 100644 index 000000000..cf67d6394 Binary files /dev/null and b/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.ml.png differ diff --git a/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.te.png b/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.te.png new file mode 100644 index 000000000..82e24f665 Binary files /dev/null and b/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.te.png differ diff --git a/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.kn.png b/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.kn.png new file mode 100644 index 000000000..da2a64689 Binary files /dev/null and b/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.kn.png differ diff --git a/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.ml.png b/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.ml.png new file mode 100644 index 000000000..b4ead9c3b Binary files /dev/null and b/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.ml.png differ diff --git a/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.te.png b/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.te.png new file mode 100644 index 000000000..12176a550 Binary files /dev/null and b/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.te.png differ diff --git a/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.kn.png b/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.kn.png new file mode 100644 index 000000000..a2f8cd88e Binary files /dev/null and b/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.kn.png differ diff --git a/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.ml.png b/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.ml.png new file mode 100644 index 000000000..a2f8cd88e Binary files /dev/null and b/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.ml.png differ diff --git a/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.te.png b/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.te.png new file mode 100644 index 000000000..a2f8cd88e Binary files /dev/null and b/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.te.png differ diff --git a/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.kn.png b/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.kn.png new file mode 100644 index 000000000..503747771 Binary files /dev/null and b/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.kn.png differ diff --git a/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.ml.png b/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.ml.png new file mode 100644 index 000000000..996e3ffb2 Binary files /dev/null and b/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.ml.png differ diff --git a/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.te.png b/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.te.png new file mode 100644 index 000000000..267601415 Binary files /dev/null and b/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.te.png differ diff --git a/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.kn.png b/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.kn.png new file mode 100644 index 000000000..d4bc7b893 Binary files /dev/null and b/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.kn.png differ diff --git a/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.ml.png b/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.ml.png new file mode 100644 index 000000000..4ddfea6f8 Binary files /dev/null and b/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.ml.png differ diff --git a/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.te.png b/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.te.png new file mode 100644 index 000000000..42556b8c1 Binary files /dev/null and b/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.te.png differ diff --git a/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.kn.png b/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.kn.png new file mode 100644 index 000000000..0e09232b6 Binary files /dev/null and b/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.kn.png differ diff --git a/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.ml.png b/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.ml.png new file mode 100644 index 000000000..0b3285791 Binary files /dev/null and b/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.ml.png differ diff --git a/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.te.png b/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.te.png new file mode 100644 index 000000000..1ec4000e4 Binary files /dev/null and b/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.te.png differ diff --git a/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.kn.png b/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.kn.png new file mode 100644 index 000000000..2d87c80af Binary files /dev/null and b/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.kn.png differ diff --git a/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.ml.png b/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.ml.png new file mode 100644 index 000000000..9f626e829 Binary files /dev/null and b/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.ml.png differ diff --git a/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.te.png b/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.te.png new file mode 100644 index 000000000..e9f0b416d Binary files /dev/null and b/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.te.png differ diff --git a/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.kn.png b/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.kn.png new file mode 100644 index 000000000..d9740d66b Binary files /dev/null and b/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.kn.png differ diff --git a/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.ml.png b/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.ml.png new file mode 100644 index 000000000..4cd264d00 Binary files /dev/null and b/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.ml.png differ diff --git a/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.te.png b/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.te.png new file mode 100644 index 000000000..9af8a2a54 Binary files /dev/null and b/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.te.png differ diff --git a/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.kn.png b/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.kn.png new file mode 100644 index 000000000..76b66c47c Binary files /dev/null and b/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.kn.png differ diff --git a/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.ml.png b/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.ml.png new file mode 100644 index 000000000..76b66c47c Binary files /dev/null and b/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.ml.png differ diff --git a/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.te.png b/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.te.png new file mode 100644 index 000000000..76b66c47c Binary files /dev/null and b/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.te.png differ diff --git a/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.kn.png b/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.kn.png new file mode 100644 index 000000000..81c85893c Binary files /dev/null and b/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.kn.png differ diff --git a/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.ml.png b/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.ml.png new file mode 100644 index 000000000..81c85893c Binary files /dev/null and b/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.ml.png differ diff --git a/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.te.png b/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.te.png new file mode 100644 index 000000000..81c85893c Binary files /dev/null and b/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.te.png differ diff --git a/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.kn.png b/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.kn.png new file mode 100644 index 000000000..bbb373a47 Binary files /dev/null and b/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.kn.png differ diff --git a/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.ml.png b/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.ml.png new file mode 100644 index 000000000..bbb373a47 Binary files /dev/null and b/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.ml.png differ diff --git a/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.te.png b/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.te.png new file mode 100644 index 000000000..bbb373a47 Binary files /dev/null and b/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.te.png differ diff --git a/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.kn.png b/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.kn.png new file mode 100644 index 000000000..bbb373a47 Binary files /dev/null and b/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.kn.png differ diff --git a/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.ml.png b/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.ml.png new file mode 100644 index 000000000..bbb373a47 Binary files /dev/null and b/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.ml.png differ diff --git a/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.te.png b/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.te.png new file mode 100644 index 000000000..bbb373a47 Binary files /dev/null and b/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.te.png differ diff --git a/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.kn.png b/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.kn.png new file mode 100644 index 000000000..e6be774e7 Binary files /dev/null and b/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.kn.png differ diff --git a/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.ml.png b/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.ml.png new file mode 100644 index 000000000..3d9e84b10 Binary files /dev/null and b/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.ml.png differ diff --git a/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.te.png b/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.te.png new file mode 100644 index 000000000..797e42c68 Binary files /dev/null and b/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.te.png differ diff --git a/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.kn.png b/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.kn.png new file mode 100644 index 000000000..872e8264f Binary files /dev/null and b/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.kn.png differ diff --git a/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.ml.png b/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.ml.png new file mode 100644 index 000000000..1829cbc4d Binary files /dev/null and b/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.ml.png differ diff --git a/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.te.png b/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.te.png new file mode 100644 index 000000000..9bc409700 Binary files /dev/null and b/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.te.png differ diff --git a/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.kn.jpg b/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.kn.jpg new file mode 100644 index 000000000..afef99916 Binary files /dev/null and b/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.kn.jpg differ diff --git a/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.ml.jpg b/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.ml.jpg new file mode 100644 index 000000000..afef99916 Binary files /dev/null and b/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.ml.jpg differ diff --git a/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.te.jpg b/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.te.jpg new file mode 100644 index 000000000..afef99916 Binary files /dev/null and b/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.te.jpg differ diff --git a/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.kn.png b/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.kn.png new file mode 100644 index 000000000..d005eb0f7 Binary files /dev/null and b/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.kn.png differ diff --git a/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.ml.png b/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.ml.png new file mode 100644 index 000000000..d87f4a3c3 Binary files /dev/null and b/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.ml.png differ diff --git a/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.te.png b/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.te.png new file mode 100644 index 000000000..662ef6619 Binary files /dev/null and b/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.te.png differ diff --git a/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.kn.png b/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.kn.png new file mode 100644 index 000000000..5f991e289 Binary files /dev/null and b/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.kn.png differ diff --git a/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.ml.png b/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.ml.png new file mode 100644 index 000000000..5f991e289 Binary files /dev/null and b/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.ml.png differ diff --git a/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.te.png b/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.te.png new file mode 100644 index 000000000..5f991e289 Binary files /dev/null and b/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.te.png differ diff --git a/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.kn.png b/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.kn.png new file mode 100644 index 000000000..b21785fcc Binary files /dev/null and b/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.kn.png differ diff --git a/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.ml.png b/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.ml.png new file mode 100644 index 000000000..dce78eede Binary files /dev/null and b/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.ml.png differ diff --git a/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.te.png b/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.te.png new file mode 100644 index 000000000..54f08a981 Binary files /dev/null and b/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.te.png differ diff --git a/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.kn.png b/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.kn.png new file mode 100644 index 000000000..89327320d Binary files /dev/null and b/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.kn.png differ diff --git a/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.ml.png b/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.ml.png new file mode 100644 index 000000000..f206a4de1 Binary files /dev/null and b/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.ml.png differ diff --git a/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.te.png b/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.te.png new file mode 100644 index 000000000..8830fdddf Binary files /dev/null and b/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.te.png differ diff --git a/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.kn.png b/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.kn.png new file mode 100644 index 000000000..3b69181e1 Binary files /dev/null and b/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.kn.png differ diff --git a/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.ml.png b/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.ml.png new file mode 100644 index 000000000..094dedc52 Binary files /dev/null and b/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.ml.png differ diff --git a/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.te.png b/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.te.png new file mode 100644 index 000000000..5d35c45ef Binary files /dev/null and b/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.te.png differ diff --git a/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.kn.png b/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.kn.png new file mode 100644 index 000000000..1ddef9480 Binary files /dev/null and b/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.kn.png differ diff --git a/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.ml.png b/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.ml.png new file mode 100644 index 000000000..acc61c063 Binary files /dev/null and b/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.ml.png differ diff --git a/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.te.png b/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.te.png new file mode 100644 index 000000000..6648cdbc5 Binary files /dev/null and b/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.te.png differ diff --git a/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.kn.png b/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.kn.png new file mode 100644 index 000000000..9fab5a8ef Binary files /dev/null and b/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.kn.png differ diff --git a/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.ml.png b/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.ml.png new file mode 100644 index 000000000..265a19c8f Binary files /dev/null and b/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.ml.png differ diff --git a/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.te.png b/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.te.png new file mode 100644 index 000000000..c706441a2 Binary files /dev/null and b/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.te.png differ diff --git a/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.kn.png b/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.kn.png new file mode 100644 index 000000000..97b45b02a Binary files /dev/null and b/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.kn.png differ diff --git a/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.ml.png b/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.ml.png new file mode 100644 index 000000000..97b45b02a Binary files /dev/null and b/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.ml.png differ diff --git a/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.te.png b/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.te.png new file mode 100644 index 000000000..97b45b02a Binary files /dev/null and b/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.te.png differ diff --git a/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.kn.png b/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.kn.png new file mode 100644 index 000000000..0f56c6528 Binary files /dev/null and b/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.kn.png differ diff --git a/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.ml.png b/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.ml.png new file mode 100644 index 000000000..0f56c6528 Binary files /dev/null and b/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.ml.png differ diff --git a/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.te.png b/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.te.png new file mode 100644 index 000000000..0f56c6528 Binary files /dev/null and b/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.te.png differ diff --git a/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.kn.png b/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.kn.png new file mode 100644 index 000000000..4ae570db1 Binary files /dev/null and b/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.kn.png differ diff --git a/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.ml.png b/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.ml.png new file mode 100644 index 000000000..3c9fbdf5f Binary files /dev/null and b/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.ml.png differ diff --git a/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.te.png b/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.te.png new file mode 100644 index 000000000..2a310cdf2 Binary files /dev/null and b/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.te.png differ diff --git a/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.kn.png b/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.kn.png new file mode 100644 index 000000000..62fea0824 Binary files /dev/null and b/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.kn.png differ diff --git a/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.ml.png b/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.ml.png new file mode 100644 index 000000000..16081d1ab Binary files /dev/null and b/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.ml.png differ diff --git a/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.te.png b/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.te.png new file mode 100644 index 000000000..b11365994 Binary files /dev/null and b/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.te.png differ diff --git a/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.kn.png b/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.kn.png new file mode 100644 index 000000000..18da78485 Binary files /dev/null and b/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.kn.png differ diff --git a/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.ml.png b/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.ml.png new file mode 100644 index 000000000..88e3e085c Binary files /dev/null and b/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.ml.png differ diff --git a/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.te.png b/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.te.png new file mode 100644 index 000000000..ea2b810ec Binary files /dev/null and b/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.te.png differ diff --git a/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.kn.png b/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.kn.png new file mode 100644 index 000000000..7ec42743d Binary files /dev/null and b/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.kn.png differ diff --git a/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.ml.png b/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.ml.png new file mode 100644 index 000000000..4af6c6ee4 Binary files /dev/null and b/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.ml.png differ diff --git a/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.te.png b/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.te.png new file mode 100644 index 000000000..ff06cc119 Binary files /dev/null and b/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.te.png differ diff --git a/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.kn.jpg b/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.kn.jpg new file mode 100644 index 000000000..539fc92dc Binary files /dev/null and b/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.kn.jpg differ diff --git a/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.ml.jpg b/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.ml.jpg new file mode 100644 index 000000000..b1e4ce04f Binary files /dev/null and b/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.ml.jpg differ diff --git a/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.te.jpg b/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.te.jpg new file mode 100644 index 000000000..830551b80 Binary files /dev/null and b/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.te.jpg differ diff --git a/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.kn.png b/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.kn.png new file mode 100644 index 000000000..1d8fdada7 Binary files /dev/null and b/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.kn.png differ diff --git a/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.ml.png b/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.ml.png new file mode 100644 index 000000000..111a3462c Binary files /dev/null and b/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.ml.png differ diff --git a/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.te.png b/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.te.png new file mode 100644 index 000000000..04adfb8f3 Binary files /dev/null and b/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.te.png differ diff --git a/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.kn.png b/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.kn.png new file mode 100644 index 000000000..211209fb2 Binary files /dev/null and b/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.kn.png differ diff --git a/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.ml.png b/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.ml.png new file mode 100644 index 000000000..211209fb2 Binary files /dev/null and b/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.ml.png differ diff --git a/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.te.png b/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.te.png new file mode 100644 index 000000000..ce5e076d1 Binary files /dev/null and b/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.te.png differ diff --git a/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.kn.png b/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.kn.png new file mode 100644 index 000000000..a1746a3d9 Binary files /dev/null and b/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.kn.png differ diff --git a/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.ml.png b/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.ml.png new file mode 100644 index 000000000..0f350962f Binary files /dev/null and b/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.ml.png differ diff --git a/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.te.png b/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.te.png new file mode 100644 index 000000000..e728fe0d8 Binary files /dev/null and b/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.te.png differ diff --git a/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.kn.png b/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.kn.png new file mode 100644 index 000000000..57f9bc539 Binary files /dev/null and b/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.kn.png differ diff --git a/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.ml.png b/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.ml.png new file mode 100644 index 000000000..83df98ea9 Binary files /dev/null and b/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.ml.png differ diff --git a/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.te.png b/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.te.png new file mode 100644 index 000000000..035246092 Binary files /dev/null and b/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.te.png differ diff --git a/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.kn.png b/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.kn.png new file mode 100644 index 000000000..f7fdd2796 Binary files /dev/null and b/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.kn.png differ diff --git a/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.ml.png b/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.ml.png new file mode 100644 index 000000000..f7fdd2796 Binary files /dev/null and b/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.ml.png differ diff --git a/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.te.png b/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.te.png new file mode 100644 index 000000000..f7fdd2796 Binary files /dev/null and b/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.te.png differ diff --git a/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.kn.jpg b/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.kn.jpg new file mode 100644 index 000000000..9616118e7 Binary files /dev/null and b/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.kn.jpg differ diff --git a/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.ml.jpg b/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.ml.jpg new file mode 100644 index 000000000..9616118e7 Binary files /dev/null and b/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.ml.jpg differ diff --git a/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.te.jpg b/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.te.jpg new file mode 100644 index 000000000..9616118e7 Binary files /dev/null and b/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.te.jpg differ diff --git a/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.kn.png b/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.kn.png new file mode 100644 index 000000000..590df72b1 Binary files /dev/null and b/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.kn.png differ diff --git a/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.ml.png b/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.ml.png new file mode 100644 index 000000000..5ea396b3e Binary files /dev/null and b/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.ml.png differ diff --git a/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.te.png b/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.te.png new file mode 100644 index 000000000..ab585d279 Binary files /dev/null and b/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.te.png differ diff --git a/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.kn.png b/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.kn.png new file mode 100644 index 000000000..ef0811665 Binary files /dev/null and b/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.kn.png differ diff --git a/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.ml.png b/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.ml.png new file mode 100644 index 000000000..b5fc7644f Binary files /dev/null and b/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.ml.png differ diff --git a/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.te.png b/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.te.png new file mode 100644 index 000000000..fc9083e80 Binary files /dev/null and b/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.te.png differ diff --git a/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.kn.jpg b/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.kn.jpg new file mode 100644 index 000000000..f2d6f1844 Binary files /dev/null and b/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.kn.jpg differ diff --git a/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.ml.jpg b/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.ml.jpg new file mode 100644 index 000000000..8262af044 Binary files /dev/null and b/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.ml.jpg differ diff --git a/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.te.jpg b/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.te.jpg new file mode 100644 index 000000000..36441dd90 Binary files /dev/null and b/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.te.jpg differ diff --git a/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.kn.png b/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.kn.png new file mode 100644 index 000000000..5b5dbaf18 Binary files /dev/null and b/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.kn.png differ diff --git a/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.ml.png b/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.ml.png new file mode 100644 index 000000000..41beb270f Binary files /dev/null and b/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.ml.png differ diff --git a/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.te.png b/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.te.png new file mode 100644 index 000000000..7b91a5793 Binary files /dev/null and b/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.te.png differ diff --git a/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.kn.png b/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.kn.png new file mode 100644 index 000000000..15f84e910 Binary files /dev/null and b/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.kn.png differ diff --git a/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.ml.png b/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.ml.png new file mode 100644 index 000000000..15f84e910 Binary files /dev/null and b/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.ml.png differ diff --git a/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.te.png b/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.te.png new file mode 100644 index 000000000..15f84e910 Binary files /dev/null and b/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.te.png differ diff --git a/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.kn.png b/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.kn.png new file mode 100644 index 000000000..f340cf46f Binary files /dev/null and b/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.kn.png differ diff --git a/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.ml.png b/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.ml.png new file mode 100644 index 000000000..f340cf46f Binary files /dev/null and b/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.ml.png differ diff --git a/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.te.png b/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.te.png new file mode 100644 index 000000000..f340cf46f Binary files /dev/null and b/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.te.png differ diff --git a/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.kn.png b/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.kn.png new file mode 100644 index 000000000..891e0750e Binary files /dev/null and b/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.kn.png differ diff --git a/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.ml.png b/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.ml.png new file mode 100644 index 000000000..891e0750e Binary files /dev/null and b/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.ml.png differ diff --git a/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.te.png b/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.te.png new file mode 100644 index 000000000..891e0750e Binary files /dev/null and b/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.te.png differ diff --git a/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.kn.png b/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.kn.png new file mode 100644 index 000000000..ab6c354b9 Binary files /dev/null and b/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.kn.png differ diff --git a/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.ml.png b/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.ml.png new file mode 100644 index 000000000..22ec77881 Binary files /dev/null and b/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.ml.png differ diff --git a/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.te.png b/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.te.png new file mode 100644 index 000000000..3edff51d2 Binary files /dev/null and b/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.te.png differ diff --git a/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.kn.png b/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.kn.png new file mode 100644 index 000000000..ecd477463 Binary files /dev/null and b/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.kn.png differ diff --git a/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.ml.png b/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.ml.png new file mode 100644 index 000000000..c8bb14078 Binary files /dev/null and b/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.ml.png differ diff --git a/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.te.png b/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.te.png new file mode 100644 index 000000000..583aff33f Binary files /dev/null and b/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.te.png differ diff --git a/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.kn.png b/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.kn.png new file mode 100644 index 000000000..ecd477463 Binary files /dev/null and b/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.kn.png differ diff --git a/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.ml.png b/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.ml.png new file mode 100644 index 000000000..c8bb14078 Binary files /dev/null and b/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.ml.png differ diff --git a/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.te.png b/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.te.png new file mode 100644 index 000000000..583aff33f Binary files /dev/null and b/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.te.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.kn.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.kn.png new file mode 100644 index 000000000..26e0ae439 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.kn.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ml.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ml.png new file mode 100644 index 000000000..26e0ae439 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ml.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.te.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.te.png new file mode 100644 index 000000000..26e0ae439 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.te.png differ diff --git a/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.kn.png b/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.kn.png new file mode 100644 index 000000000..dbf2d0f3b Binary files /dev/null and b/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.kn.png differ diff --git a/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.ml.png b/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.ml.png new file mode 100644 index 000000000..ee4350d2f Binary files /dev/null and b/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.ml.png differ diff --git a/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.te.png b/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.te.png new file mode 100644 index 000000000..b52e88272 Binary files /dev/null and b/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.te.png differ diff --git a/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.kn.png b/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.kn.png new file mode 100644 index 000000000..60bcaed41 Binary files /dev/null and b/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.kn.png differ diff --git a/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.ml.png b/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.ml.png new file mode 100644 index 000000000..f1fcd4875 Binary files /dev/null and b/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.ml.png differ diff --git a/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.te.png b/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.te.png new file mode 100644 index 000000000..51be6ba77 Binary files /dev/null and b/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.te.png differ diff --git a/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.kn.png b/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.kn.png new file mode 100644 index 000000000..b4cb687db Binary files /dev/null and b/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.kn.png differ diff --git a/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.ml.png b/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.ml.png new file mode 100644 index 000000000..b5f5f69d5 Binary files /dev/null and b/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.ml.png differ diff --git a/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.te.png b/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.te.png new file mode 100644 index 000000000..b7e7aef54 Binary files /dev/null and b/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.te.png differ diff --git a/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.kn.png b/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.kn.png new file mode 100644 index 000000000..179b484db Binary files /dev/null and b/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.kn.png differ diff --git a/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.ml.png b/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.ml.png new file mode 100644 index 000000000..bd535083f Binary files /dev/null and b/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.ml.png differ diff --git a/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.te.png b/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.te.png new file mode 100644 index 000000000..457da2a2b Binary files /dev/null and b/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.te.png differ diff --git a/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.kn.png b/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.kn.png new file mode 100644 index 000000000..179b484db Binary files /dev/null and b/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.kn.png differ diff --git a/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.ml.png b/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.ml.png new file mode 100644 index 000000000..80b278a6e Binary files /dev/null and b/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.ml.png differ diff --git a/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.te.png b/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.te.png new file mode 100644 index 000000000..457da2a2b Binary files /dev/null and b/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.te.png differ diff --git a/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.kn.png b/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.kn.png new file mode 100644 index 000000000..2ebc6dc23 Binary files /dev/null and b/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.kn.png differ diff --git a/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.ml.png b/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.ml.png new file mode 100644 index 000000000..be00ed0fd Binary files /dev/null and b/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.ml.png differ diff --git a/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.te.png b/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.te.png new file mode 100644 index 000000000..d8a8ab376 Binary files /dev/null and b/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.te.png differ diff --git a/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.kn.png b/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.kn.png new file mode 100644 index 000000000..2ebc6dc23 Binary files /dev/null and b/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.kn.png differ diff --git a/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.ml.png b/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.ml.png new file mode 100644 index 000000000..be00ed0fd Binary files /dev/null and b/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.ml.png differ diff --git a/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.te.png b/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.te.png new file mode 100644 index 000000000..d8a8ab376 Binary files /dev/null and b/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.te.png differ diff --git a/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.kn.jpg b/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.kn.jpg new file mode 100644 index 000000000..31ba4b334 Binary files /dev/null and b/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.kn.jpg differ diff --git a/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.ml.jpg b/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.ml.jpg new file mode 100644 index 000000000..31ba4b334 Binary files /dev/null and b/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.ml.jpg differ diff --git a/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.te.jpg b/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.te.jpg new file mode 100644 index 000000000..31ba4b334 Binary files /dev/null and b/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.te.jpg differ diff --git a/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.kn.png b/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.kn.png new file mode 100644 index 000000000..22ff24102 Binary files /dev/null and b/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.kn.png differ diff --git a/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.ml.png b/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.ml.png new file mode 100644 index 000000000..aab7bf22e Binary files /dev/null and b/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.ml.png differ diff --git a/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.te.png b/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.te.png new file mode 100644 index 000000000..bd5833962 Binary files /dev/null and b/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.te.png differ diff --git a/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.kn.png b/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.kn.png new file mode 100644 index 000000000..560c9f694 Binary files /dev/null and b/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.kn.png differ diff --git a/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.ml.png b/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.ml.png new file mode 100644 index 000000000..3729cde72 Binary files /dev/null and b/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.ml.png differ diff --git a/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.te.png b/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.te.png new file mode 100644 index 000000000..145a49338 Binary files /dev/null and b/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.te.png differ diff --git a/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.kn.png b/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.kn.png new file mode 100644 index 000000000..fb246ca40 Binary files /dev/null and b/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.kn.png differ diff --git a/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.ml.png b/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.ml.png new file mode 100644 index 000000000..cf87bf93a Binary files /dev/null and b/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.ml.png differ diff --git a/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.te.png b/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.te.png new file mode 100644 index 000000000..772a5cdd1 Binary files /dev/null and b/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.te.png differ diff --git a/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.kn.png b/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.kn.png new file mode 100644 index 000000000..3070781f6 Binary files /dev/null and b/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.kn.png differ diff --git a/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.ml.png b/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.ml.png new file mode 100644 index 000000000..3070781f6 Binary files /dev/null and b/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.ml.png differ diff --git a/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.te.png b/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.te.png new file mode 100644 index 000000000..3070781f6 Binary files /dev/null and b/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.te.png differ diff --git a/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.kn.png b/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.kn.png new file mode 100644 index 000000000..cc7951f23 Binary files /dev/null and b/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.kn.png differ diff --git a/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.ml.png b/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.ml.png new file mode 100644 index 000000000..c4cdaa516 Binary files /dev/null and b/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.ml.png differ diff --git a/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.te.png b/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.te.png new file mode 100644 index 000000000..d0e31337f Binary files /dev/null and b/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.te.png differ diff --git a/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.kn.png b/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.kn.png new file mode 100644 index 000000000..ce782f04a Binary files /dev/null and b/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.kn.png differ diff --git a/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.ml.png b/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.ml.png new file mode 100644 index 000000000..928fa6363 Binary files /dev/null and b/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.ml.png differ diff --git a/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.te.png b/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.te.png new file mode 100644 index 000000000..76cfcce3c Binary files /dev/null and b/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.te.png differ diff --git a/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.kn.png b/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.kn.png new file mode 100644 index 000000000..6a9af25ab Binary files /dev/null and b/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.kn.png differ diff --git a/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.ml.png b/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.ml.png new file mode 100644 index 000000000..3bda8e645 Binary files /dev/null and b/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.ml.png differ diff --git a/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.te.png b/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.te.png new file mode 100644 index 000000000..fd68cd857 Binary files /dev/null and b/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.te.png differ diff --git a/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.kn.jpg b/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.kn.jpg new file mode 100644 index 000000000..97b3aa950 Binary files /dev/null and b/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.kn.jpg differ diff --git a/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.ml.jpg b/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.ml.jpg new file mode 100644 index 000000000..97b3aa950 Binary files /dev/null and b/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.ml.jpg differ diff --git a/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.te.jpg b/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.te.jpg new file mode 100644 index 000000000..97b3aa950 Binary files /dev/null and b/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.te.jpg differ diff --git a/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.kn.jpg b/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.kn.jpg new file mode 100644 index 000000000..faf36072e Binary files /dev/null and b/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.kn.jpg differ diff --git a/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.ml.jpg b/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.ml.jpg new file mode 100644 index 000000000..41ee1d466 Binary files /dev/null and b/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.ml.jpg differ diff --git a/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.te.jpg b/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.te.jpg new file mode 100644 index 000000000..d08a23b80 Binary files /dev/null and b/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.te.jpg differ diff --git a/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.kn.png b/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.kn.png new file mode 100644 index 000000000..93df45a7d Binary files /dev/null and b/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.kn.png differ diff --git a/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.ml.png b/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.ml.png new file mode 100644 index 000000000..a8fa05b06 Binary files /dev/null and b/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.ml.png differ diff --git a/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.te.png b/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.te.png new file mode 100644 index 000000000..e7c55e67d Binary files /dev/null and b/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.te.png differ diff --git a/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.kn.png b/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.kn.png new file mode 100644 index 000000000..60b218827 Binary files /dev/null and b/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.kn.png differ diff --git a/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.ml.png b/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.ml.png new file mode 100644 index 000000000..1cfaab8b4 Binary files /dev/null and b/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.ml.png differ diff --git a/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.te.png b/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.te.png new file mode 100644 index 000000000..c06a1263f Binary files /dev/null and b/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.te.png differ diff --git a/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.kn.png b/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.kn.png new file mode 100644 index 000000000..c80f88e72 Binary files /dev/null and b/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.kn.png differ diff --git a/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.ml.png b/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.ml.png new file mode 100644 index 000000000..c5af74a6f Binary files /dev/null and b/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.ml.png differ diff --git a/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.te.png b/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.te.png new file mode 100644 index 000000000..84974d820 Binary files /dev/null and b/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.te.png differ diff --git a/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.kn.png b/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.kn.png new file mode 100644 index 000000000..70d9147a9 Binary files /dev/null and b/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.kn.png differ diff --git a/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.ml.png b/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.ml.png new file mode 100644 index 000000000..e912f767e Binary files /dev/null and b/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.ml.png differ diff --git a/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.te.png b/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.te.png new file mode 100644 index 000000000..56055e796 Binary files /dev/null and b/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.te.png differ diff --git a/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.kn.png b/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.kn.png new file mode 100644 index 000000000..85bfc44ae Binary files /dev/null and b/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.kn.png differ diff --git a/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.ml.png b/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.ml.png new file mode 100644 index 000000000..42496db13 Binary files /dev/null and b/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.ml.png differ diff --git a/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.te.png b/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.te.png new file mode 100644 index 000000000..a9477e77d Binary files /dev/null and b/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.te.png differ diff --git a/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.kn.png b/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.kn.png new file mode 100644 index 000000000..2b636a72e Binary files /dev/null and b/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.kn.png differ diff --git a/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.ml.png b/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.ml.png new file mode 100644 index 000000000..2b636a72e Binary files /dev/null and b/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.ml.png differ diff --git a/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.te.png b/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.te.png new file mode 100644 index 000000000..2b636a72e Binary files /dev/null and b/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.te.png differ diff --git a/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.kn.png b/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.kn.png new file mode 100644 index 000000000..46d0f0f4d Binary files /dev/null and b/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.kn.png differ diff --git a/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.ml.png b/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.ml.png new file mode 100644 index 000000000..2a9dfd45d Binary files /dev/null and b/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.ml.png differ diff --git a/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.te.png b/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.te.png new file mode 100644 index 000000000..9a50be5ee Binary files /dev/null and b/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.te.png differ diff --git a/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.kn.png b/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.kn.png new file mode 100644 index 000000000..d7836bd63 Binary files /dev/null and b/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.kn.png differ diff --git a/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.ml.png b/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.ml.png new file mode 100644 index 000000000..8ab740ac7 Binary files /dev/null and b/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.ml.png differ diff --git a/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.te.png b/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.te.png new file mode 100644 index 000000000..e4501e8e8 Binary files /dev/null and b/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.te.png differ diff --git a/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.kn.png b/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.kn.png new file mode 100644 index 000000000..ab6f73b2f Binary files /dev/null and b/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.kn.png differ diff --git a/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.ml.png b/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.ml.png new file mode 100644 index 000000000..728137896 Binary files /dev/null and b/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.ml.png differ diff --git a/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.te.png b/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.te.png new file mode 100644 index 000000000..f63b4b293 Binary files /dev/null and b/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.te.png differ diff --git a/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.kn.png b/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.kn.png new file mode 100644 index 000000000..feaac02c0 Binary files /dev/null and b/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.kn.png differ diff --git a/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.ml.png b/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.ml.png new file mode 100644 index 000000000..4d86ec29c Binary files /dev/null and b/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.ml.png differ diff --git a/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.te.png b/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.te.png new file mode 100644 index 000000000..ec5b1895b Binary files /dev/null and b/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.te.png differ diff --git a/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.kn.png b/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.kn.png new file mode 100644 index 000000000..1a71f9a30 Binary files /dev/null and b/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.kn.png differ diff --git a/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.ml.png b/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.ml.png new file mode 100644 index 000000000..1a71f9a30 Binary files /dev/null and b/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.ml.png differ diff --git a/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.te.png b/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.te.png new file mode 100644 index 000000000..1a71f9a30 Binary files /dev/null and b/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.te.png differ diff --git a/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.kn.png b/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.kn.png new file mode 100644 index 000000000..3d6401011 Binary files /dev/null and b/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.kn.png differ diff --git a/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.ml.png b/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.ml.png new file mode 100644 index 000000000..3d6401011 Binary files /dev/null and b/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.ml.png differ diff --git a/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.te.png b/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.te.png new file mode 100644 index 000000000..3d6401011 Binary files /dev/null and b/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.te.png differ diff --git a/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.kn.png b/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.kn.png new file mode 100644 index 000000000..ca5ced7c0 Binary files /dev/null and b/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.kn.png differ diff --git a/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.ml.png b/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.ml.png new file mode 100644 index 000000000..ca5ced7c0 Binary files /dev/null and b/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.ml.png differ diff --git a/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.te.png b/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.te.png new file mode 100644 index 000000000..ca5ced7c0 Binary files /dev/null and b/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.te.png differ diff --git a/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.kn.png b/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.kn.png new file mode 100644 index 000000000..ea2ecb7e2 Binary files /dev/null and b/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.kn.png differ diff --git a/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.ml.png b/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.ml.png new file mode 100644 index 000000000..6f8fa3e21 Binary files /dev/null and b/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.ml.png differ diff --git a/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.te.png b/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.te.png new file mode 100644 index 000000000..f24d0ed78 Binary files /dev/null and b/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.te.png differ diff --git a/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.kn.png b/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.kn.png new file mode 100644 index 000000000..4bd2b4014 Binary files /dev/null and b/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.kn.png differ diff --git a/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.ml.png b/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.ml.png new file mode 100644 index 000000000..4bd2b4014 Binary files /dev/null and b/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.ml.png differ diff --git a/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.te.png b/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.te.png new file mode 100644 index 000000000..4bd2b4014 Binary files /dev/null and b/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.te.png differ diff --git a/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.kn.png b/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.kn.png new file mode 100644 index 000000000..3033bdd25 Binary files /dev/null and b/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.kn.png differ diff --git a/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.ml.png b/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.ml.png new file mode 100644 index 000000000..8d25c4d20 Binary files /dev/null and b/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.ml.png differ diff --git a/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.te.png b/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.te.png new file mode 100644 index 000000000..fe75549de Binary files /dev/null and b/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.te.png differ diff --git a/translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.kn.png b/translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.kn.png new file mode 100644 index 000000000..1a3966bf2 Binary files /dev/null and b/translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.kn.png differ diff --git a/translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ml.png b/translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ml.png new file mode 100644 index 000000000..f71acfb62 Binary files /dev/null and b/translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ml.png differ diff --git a/translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.te.png b/translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.te.png new file mode 100644 index 000000000..a5936211d Binary files /dev/null and b/translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.te.png differ diff --git a/translated_images/ml-for-beginners.9eecb963dbfbfb322dbf4d68360828af4abaf00a40e117c78d08605412dd3f31.kn.png b/translated_images/ml-for-beginners.9eecb963dbfbfb322dbf4d68360828af4abaf00a40e117c78d08605412dd3f31.kn.png new file mode 100644 index 000000000..1ae20dff3 Binary files /dev/null and b/translated_images/ml-for-beginners.9eecb963dbfbfb322dbf4d68360828af4abaf00a40e117c78d08605412dd3f31.kn.png differ diff --git a/translated_images/ml-for-beginners.9eecb963dbfbfb322dbf4d68360828af4abaf00a40e117c78d08605412dd3f31.ml.png b/translated_images/ml-for-beginners.9eecb963dbfbfb322dbf4d68360828af4abaf00a40e117c78d08605412dd3f31.ml.png new file mode 100644 index 000000000..5c79774f6 Binary files /dev/null and b/translated_images/ml-for-beginners.9eecb963dbfbfb322dbf4d68360828af4abaf00a40e117c78d08605412dd3f31.ml.png differ diff --git a/translated_images/ml-for-beginners.9eecb963dbfbfb322dbf4d68360828af4abaf00a40e117c78d08605412dd3f31.te.png b/translated_images/ml-for-beginners.9eecb963dbfbfb322dbf4d68360828af4abaf00a40e117c78d08605412dd3f31.te.png new file mode 100644 index 000000000..983532629 Binary files /dev/null and b/translated_images/ml-for-beginners.9eecb963dbfbfb322dbf4d68360828af4abaf00a40e117c78d08605412dd3f31.te.png differ diff --git a/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.kn.png b/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.kn.png new file mode 100644 index 000000000..df1e8cf8f Binary files /dev/null and b/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.kn.png differ diff --git a/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.ml.png b/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.ml.png new file mode 100644 index 000000000..946b1578f Binary files /dev/null and b/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.ml.png differ diff --git a/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.te.png b/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.te.png new file mode 100644 index 000000000..4b4a6a210 Binary files /dev/null and b/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.te.png differ diff --git a/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.kn.png b/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.kn.png new file mode 100644 index 000000000..47ad43ca0 Binary files /dev/null and b/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.kn.png differ diff --git a/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.ml.png b/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.ml.png new file mode 100644 index 000000000..d5f41e5f6 Binary files /dev/null and b/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.ml.png differ diff --git a/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.te.png b/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.te.png new file mode 100644 index 000000000..26bfa42dc Binary files /dev/null and b/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.te.png differ diff --git a/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.kn.png b/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.kn.png new file mode 100644 index 000000000..bf94051c0 Binary files /dev/null and b/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.kn.png differ diff --git a/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.ml.png b/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.ml.png new file mode 100644 index 000000000..7b554d117 Binary files /dev/null and b/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.ml.png differ diff --git a/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.te.png b/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.te.png new file mode 100644 index 000000000..8614d889b Binary files /dev/null and b/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.te.png differ diff --git a/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.kn.png b/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.kn.png new file mode 100644 index 000000000..8c999a3da Binary files /dev/null and b/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.kn.png differ diff --git a/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.ml.png b/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.ml.png new file mode 100644 index 000000000..e18698eda Binary files /dev/null and b/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.ml.png differ diff --git a/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.te.png b/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.te.png new file mode 100644 index 000000000..2239c0ebe Binary files /dev/null and b/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.te.png differ diff --git a/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.kn.png b/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.kn.png new file mode 100644 index 000000000..218c8757a Binary files /dev/null and b/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.kn.png differ diff --git a/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.ml.png b/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.ml.png new file mode 100644 index 000000000..8a199d5f8 Binary files /dev/null and b/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.ml.png differ diff --git a/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.te.png b/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.te.png new file mode 100644 index 000000000..6b2677f34 Binary files /dev/null and b/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.te.png differ diff --git a/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.kn.png b/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.kn.png new file mode 100644 index 000000000..e0b6d393b Binary files /dev/null and b/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.kn.png differ diff --git a/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.ml.png b/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.ml.png new file mode 100644 index 000000000..c08a00fb1 Binary files /dev/null and b/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.ml.png differ diff --git a/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.te.png b/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.te.png new file mode 100644 index 000000000..12ae246e9 Binary files /dev/null and b/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.te.png differ diff --git a/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.kn.png b/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.kn.png new file mode 100644 index 000000000..7efb0d9d7 Binary files /dev/null and b/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.kn.png differ diff --git a/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.ml.png b/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.ml.png new file mode 100644 index 000000000..a740b6390 Binary files /dev/null and b/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.ml.png differ diff --git a/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.te.png b/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.te.png new file mode 100644 index 000000000..0f02ac4df Binary files /dev/null and b/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.te.png differ diff --git a/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.kn.png b/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.kn.png new file mode 100644 index 000000000..fca6f3c4b Binary files /dev/null and b/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.kn.png differ diff --git a/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.ml.png b/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.ml.png new file mode 100644 index 000000000..51b381a9d Binary files /dev/null and b/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.ml.png differ diff --git a/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.te.png b/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.te.png new file mode 100644 index 000000000..39f9c64c2 Binary files /dev/null and b/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.te.png differ diff --git a/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.kn.png b/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.kn.png new file mode 100644 index 000000000..a42368174 Binary files /dev/null and b/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.kn.png differ diff --git a/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.ml.png b/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.ml.png new file mode 100644 index 000000000..2264e2034 Binary files /dev/null and b/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.ml.png differ diff --git a/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.te.png b/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.te.png new file mode 100644 index 000000000..470614b46 Binary files /dev/null and b/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.te.png differ diff --git a/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.kn.png b/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.kn.png new file mode 100644 index 000000000..a126058fd Binary files /dev/null and b/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.kn.png differ diff --git a/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.ml.png b/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.ml.png new file mode 100644 index 000000000..40ebeaf31 Binary files /dev/null and b/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.ml.png differ diff --git a/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.te.png b/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.te.png new file mode 100644 index 000000000..6114ae9d3 Binary files /dev/null and b/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.te.png differ diff --git a/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.kn.png b/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.kn.png new file mode 100644 index 000000000..e4561d06f Binary files /dev/null and b/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.kn.png differ diff --git a/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.ml.png b/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.ml.png new file mode 100644 index 000000000..77cef7da2 Binary files /dev/null and b/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.ml.png differ diff --git a/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.te.png b/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.te.png new file mode 100644 index 000000000..202b83a56 Binary files /dev/null and b/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.te.png differ diff --git a/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.kn.png b/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.kn.png new file mode 100644 index 000000000..cb468604e Binary files /dev/null and b/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.kn.png differ diff --git a/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.ml.png b/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.ml.png new file mode 100644 index 000000000..7a31810d2 Binary files /dev/null and b/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.ml.png differ diff --git a/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.te.png b/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.te.png new file mode 100644 index 000000000..ac500deef Binary files /dev/null and b/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.te.png differ diff --git a/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.kn.jpg b/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.kn.jpg new file mode 100644 index 000000000..f5d4c1a6a Binary files /dev/null and b/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.kn.jpg differ diff --git a/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.ml.jpg b/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.ml.jpg new file mode 100644 index 000000000..a5c8c6615 Binary files /dev/null and b/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.ml.jpg differ diff --git a/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.te.jpg b/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.te.jpg new file mode 100644 index 000000000..bf92add42 Binary files /dev/null and b/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.te.jpg differ diff --git a/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.kn.png b/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.kn.png new file mode 100644 index 000000000..e2973bfdf Binary files /dev/null and b/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.kn.png differ diff --git a/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.ml.png b/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.ml.png new file mode 100644 index 000000000..259f233a0 Binary files /dev/null and b/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.ml.png differ diff --git a/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.te.png b/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.te.png new file mode 100644 index 000000000..eeb31b197 Binary files /dev/null and b/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.te.png differ diff --git a/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.kn.png b/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.kn.png new file mode 100644 index 000000000..29f11d5ba Binary files /dev/null and b/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.kn.png differ diff --git a/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.ml.png b/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.ml.png new file mode 100644 index 000000000..25f4ac173 Binary files /dev/null and b/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.ml.png differ diff --git a/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.te.png b/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.te.png new file mode 100644 index 000000000..91eacfb4d Binary files /dev/null and b/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.te.png differ diff --git a/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.kn.jpg b/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.kn.jpg new file mode 100644 index 000000000..0a15bc6de Binary files /dev/null and b/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.kn.jpg differ diff --git a/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.ml.jpg b/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.ml.jpg new file mode 100644 index 000000000..0b482c535 Binary files /dev/null and b/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.ml.jpg differ diff --git a/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.te.jpg b/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.te.jpg new file mode 100644 index 000000000..248e11add Binary files /dev/null and b/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.te.jpg differ diff --git a/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.kn.png b/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.kn.png new file mode 100644 index 000000000..108403085 Binary files /dev/null and b/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.kn.png differ diff --git a/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.ml.png b/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.ml.png new file mode 100644 index 000000000..3858e5f5c Binary files /dev/null and b/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.ml.png differ diff --git a/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.te.png b/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.te.png new file mode 100644 index 000000000..fe7c43b27 Binary files /dev/null and b/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.te.png differ diff --git a/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.kn.jpg b/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.kn.jpg new file mode 100644 index 000000000..f25b446ec Binary files /dev/null and b/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.kn.jpg differ diff --git a/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.ml.jpg b/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.ml.jpg new file mode 100644 index 000000000..f25b446ec Binary files /dev/null and b/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.ml.jpg differ diff --git a/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.te.jpg b/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.te.jpg new file mode 100644 index 000000000..f25b446ec Binary files /dev/null and b/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.te.jpg differ diff --git a/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.kn.png b/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.kn.png new file mode 100644 index 000000000..43581e5f3 Binary files /dev/null and b/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.kn.png differ diff --git a/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.ml.png b/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.ml.png new file mode 100644 index 000000000..43581e5f3 Binary files /dev/null and b/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.ml.png differ diff --git a/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.te.png b/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.te.png new file mode 100644 index 000000000..43581e5f3 Binary files /dev/null and b/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.te.png differ diff --git a/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.kn.png b/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.kn.png new file mode 100644 index 000000000..06ab9e06b Binary files /dev/null and b/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.kn.png differ diff --git a/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.ml.png b/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.ml.png new file mode 100644 index 000000000..06ab9e06b Binary files /dev/null and b/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.ml.png differ diff --git a/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.te.png b/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.te.png new file mode 100644 index 000000000..06ab9e06b Binary files /dev/null and b/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.te.png differ diff --git a/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.kn.png b/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.kn.png new file mode 100644 index 000000000..a0056ba09 Binary files /dev/null and b/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.kn.png differ diff --git a/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.ml.png b/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.ml.png new file mode 100644 index 000000000..37844ee8d Binary files /dev/null and b/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.ml.png differ diff --git a/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.te.png b/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.te.png new file mode 100644 index 000000000..d81c147cd Binary files /dev/null and b/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.te.png differ diff --git a/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.kn.png b/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.kn.png new file mode 100644 index 000000000..f6ee37ec1 Binary files /dev/null and b/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.kn.png differ diff --git a/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.ml.png b/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.ml.png new file mode 100644 index 000000000..f6ee37ec1 Binary files /dev/null and b/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.ml.png differ diff --git a/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.te.png b/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.te.png new file mode 100644 index 000000000..f6ee37ec1 Binary files /dev/null and b/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.te.png differ diff --git a/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.kn.png b/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.kn.png new file mode 100644 index 000000000..dd605b08c Binary files /dev/null and b/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.kn.png differ diff --git a/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.ml.png b/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.ml.png new file mode 100644 index 000000000..d80b4cf97 Binary files /dev/null and b/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.ml.png differ diff --git a/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.te.png b/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.te.png new file mode 100644 index 000000000..807e1d8fb Binary files /dev/null and b/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.te.png differ diff --git a/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.kn.png b/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.kn.png new file mode 100644 index 000000000..3567ee8a0 Binary files /dev/null and b/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.kn.png differ diff --git a/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.ml.png b/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.ml.png new file mode 100644 index 000000000..1c04cef74 Binary files /dev/null and b/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.ml.png differ diff --git a/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.te.png b/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.te.png new file mode 100644 index 000000000..0d5c2a85a Binary files /dev/null and b/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.te.png differ diff --git a/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.kn.png b/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.kn.png new file mode 100644 index 000000000..11efe5d61 Binary files /dev/null and b/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.kn.png differ diff --git a/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.ml.png b/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.ml.png new file mode 100644 index 000000000..11efe5d61 Binary files /dev/null and b/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.ml.png differ diff --git a/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.te.png b/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.te.png new file mode 100644 index 000000000..11efe5d61 Binary files /dev/null and b/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.te.png differ diff --git a/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.kn.png b/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.kn.png new file mode 100644 index 000000000..1ae203d0a Binary files /dev/null and b/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.kn.png differ diff --git a/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.ml.png b/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.ml.png new file mode 100644 index 000000000..b3aa1db27 Binary files /dev/null and b/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.ml.png differ diff --git a/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.te.png b/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.te.png new file mode 100644 index 000000000..65a820ba0 Binary files /dev/null and b/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.te.png differ diff --git a/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.kn.png b/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.kn.png new file mode 100644 index 000000000..44456d6ee Binary files /dev/null and b/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.kn.png differ diff --git a/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.ml.png b/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.ml.png new file mode 100644 index 000000000..9c67e172c Binary files /dev/null and b/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.ml.png differ diff --git a/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.te.png b/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.te.png new file mode 100644 index 000000000..45f747ceb Binary files /dev/null and b/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.te.png differ diff --git a/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.kn.png b/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.kn.png new file mode 100644 index 000000000..c59a6f661 Binary files /dev/null and b/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.kn.png differ diff --git a/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.ml.png b/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.ml.png new file mode 100644 index 000000000..7799328a2 Binary files /dev/null and b/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.ml.png differ diff --git a/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.te.png b/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.te.png new file mode 100644 index 000000000..9b533e25a Binary files /dev/null and b/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.te.png differ diff --git a/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.kn.png b/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.kn.png new file mode 100644 index 000000000..a023c8bfa Binary files /dev/null and b/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.kn.png differ diff --git a/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.ml.png b/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.ml.png new file mode 100644 index 000000000..79a02a72c Binary files /dev/null and b/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.ml.png differ diff --git a/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.te.png b/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.te.png new file mode 100644 index 000000000..08eebc3fa Binary files /dev/null and b/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.te.png differ diff --git a/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.kn.jpeg b/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.kn.jpeg new file mode 100644 index 000000000..d63dfc3e2 Binary files /dev/null and b/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.kn.jpeg differ diff --git a/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.ml.jpeg b/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.ml.jpeg new file mode 100644 index 000000000..4e20dc737 Binary files /dev/null and b/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.ml.jpeg differ diff --git a/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.te.jpeg b/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.te.jpeg new file mode 100644 index 000000000..47b9b9635 Binary files /dev/null and b/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.te.jpeg differ diff --git a/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.kn.jpeg b/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.kn.jpeg new file mode 100644 index 000000000..99d42f9fd Binary files /dev/null and b/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.kn.jpeg differ diff --git a/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.ml.jpeg b/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.ml.jpeg new file mode 100644 index 000000000..e8b615801 Binary files /dev/null and b/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.ml.jpeg differ diff --git a/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.te.jpeg b/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.te.jpeg new file mode 100644 index 000000000..bcca99b73 Binary files /dev/null and b/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.te.jpeg differ diff --git a/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.kn.jpeg b/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.kn.jpeg new file mode 100644 index 000000000..d63dfc3e2 Binary files /dev/null and b/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.kn.jpeg differ diff --git a/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.ml.jpeg b/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.ml.jpeg new file mode 100644 index 000000000..e8b615801 Binary files /dev/null and b/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.ml.jpeg differ diff --git a/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.te.jpeg b/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.te.jpeg new file mode 100644 index 000000000..5364f525a Binary files /dev/null and b/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.te.jpeg differ diff --git a/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.kn.jpeg b/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.kn.jpeg new file mode 100644 index 000000000..d63dfc3e2 Binary files /dev/null and b/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.kn.jpeg differ diff --git a/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.ml.jpeg b/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.ml.jpeg new file mode 100644 index 000000000..e8b615801 Binary files /dev/null and b/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.ml.jpeg differ diff --git a/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.te.jpeg b/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.te.jpeg new file mode 100644 index 000000000..bcca99b73 Binary files /dev/null and b/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.te.jpeg differ diff --git a/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.kn.png b/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.kn.png new file mode 100644 index 000000000..fddb4a9cf Binary files /dev/null and b/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.kn.png differ diff --git a/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.ml.png b/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.ml.png new file mode 100644 index 000000000..332f5f55e Binary files /dev/null and b/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.ml.png differ diff --git a/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.te.png b/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.te.png new file mode 100644 index 000000000..13acdee4d Binary files /dev/null and b/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.te.png differ diff --git a/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.kn.png b/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.kn.png new file mode 100644 index 000000000..fdd3b1f14 Binary files /dev/null and b/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.kn.png differ diff --git a/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.ml.png b/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.ml.png new file mode 100644 index 000000000..332f5f55e Binary files /dev/null and b/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.ml.png differ diff --git a/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.te.png b/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.te.png new file mode 100644 index 000000000..13acdee4d Binary files /dev/null and b/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.te.png differ diff --git a/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.kn.png b/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.kn.png new file mode 100644 index 000000000..ae43a212c Binary files /dev/null and b/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.kn.png differ diff --git a/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.ml.png b/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.ml.png new file mode 100644 index 000000000..d50a5b51c Binary files /dev/null and b/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.ml.png differ diff --git a/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.te.png b/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.te.png new file mode 100644 index 000000000..d99ab152d Binary files /dev/null and b/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.te.png differ diff --git a/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.kn.png b/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.kn.png new file mode 100644 index 000000000..ae43a212c Binary files /dev/null and b/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.kn.png differ diff --git a/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.ml.png b/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.ml.png new file mode 100644 index 000000000..d50a5b51c Binary files /dev/null and b/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.ml.png differ diff --git a/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.te.png b/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.te.png new file mode 100644 index 000000000..d99ab152d Binary files /dev/null and b/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.te.png differ diff --git a/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.kn.png b/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.kn.png new file mode 100644 index 000000000..81480d030 Binary files /dev/null and b/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.kn.png differ diff --git a/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.ml.png b/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.ml.png new file mode 100644 index 000000000..a4e51d171 Binary files /dev/null and b/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.ml.png differ diff --git a/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.te.png b/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.te.png new file mode 100644 index 000000000..8f05fb6cb Binary files /dev/null and b/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.te.png differ diff --git a/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.kn.png b/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.kn.png new file mode 100644 index 000000000..ba47b24af Binary files /dev/null and b/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.kn.png differ diff --git a/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.ml.png b/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.ml.png new file mode 100644 index 000000000..ba47b24af Binary files /dev/null and b/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.ml.png differ diff --git a/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.te.png b/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.te.png new file mode 100644 index 000000000..ba47b24af Binary files /dev/null and b/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.te.png differ diff --git a/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.kn.png b/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.kn.png new file mode 100644 index 000000000..67835bf85 Binary files /dev/null and b/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.kn.png differ diff --git a/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.ml.png b/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.ml.png new file mode 100644 index 000000000..1be45becc Binary files /dev/null and b/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.ml.png differ diff --git a/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.te.png b/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.te.png new file mode 100644 index 000000000..89a62824b Binary files /dev/null and b/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.te.png differ diff --git a/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.kn.png b/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.kn.png new file mode 100644 index 000000000..b6ff86790 Binary files /dev/null and b/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.kn.png differ diff --git a/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.ml.png b/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.ml.png new file mode 100644 index 000000000..b6ff86790 Binary files /dev/null and b/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.ml.png differ diff --git a/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.te.png b/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.te.png new file mode 100644 index 000000000..b6ff86790 Binary files /dev/null and b/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.te.png differ diff --git a/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.kn.jpg b/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.kn.jpg new file mode 100644 index 000000000..229edb07a Binary files /dev/null and b/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.kn.jpg differ diff --git a/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.ml.jpg b/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.ml.jpg new file mode 100644 index 000000000..1ca02a412 Binary files /dev/null and b/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.ml.jpg differ diff --git a/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.te.jpg b/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.te.jpg new file mode 100644 index 000000000..4a373fbd9 Binary files /dev/null and b/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.te.jpg differ diff --git a/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.kn.png b/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.kn.png new file mode 100644 index 000000000..d0c90c070 Binary files /dev/null and b/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.kn.png differ diff --git a/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.ml.png b/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.ml.png new file mode 100644 index 000000000..d0c90c070 Binary files /dev/null and b/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.ml.png differ diff --git a/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.te.png b/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.te.png new file mode 100644 index 000000000..75580ea17 Binary files /dev/null and b/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.te.png differ diff --git a/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.kn.png b/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.kn.png new file mode 100644 index 000000000..c66deda55 Binary files /dev/null and b/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.kn.png differ diff --git a/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.ml.png b/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.ml.png new file mode 100644 index 000000000..3eb5b118e Binary files /dev/null and b/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.ml.png differ diff --git a/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.te.png b/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.te.png new file mode 100644 index 000000000..dcfc55827 Binary files /dev/null and b/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.te.png differ diff --git a/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.kn.png b/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.kn.png new file mode 100644 index 000000000..23c22e163 Binary files /dev/null and b/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.kn.png differ diff --git a/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.ml.png b/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.ml.png new file mode 100644 index 000000000..f610a9a50 Binary files /dev/null and b/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.ml.png differ diff --git a/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.te.png b/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.te.png new file mode 100644 index 000000000..73517764f Binary files /dev/null and b/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.te.png differ diff --git a/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.kn.png b/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.kn.png new file mode 100644 index 000000000..17693ba8b Binary files /dev/null and b/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.kn.png differ diff --git a/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.ml.png b/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.ml.png new file mode 100644 index 000000000..17693ba8b Binary files /dev/null and b/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.ml.png differ diff --git a/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.te.png b/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.te.png new file mode 100644 index 000000000..17693ba8b Binary files /dev/null and b/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.te.png differ diff --git a/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.kn.png b/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.kn.png new file mode 100644 index 000000000..eb61d618c Binary files /dev/null and b/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.kn.png differ diff --git a/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.ml.png b/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.ml.png new file mode 100644 index 000000000..a83c15174 Binary files /dev/null and b/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.ml.png differ diff --git a/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.te.png b/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.te.png new file mode 100644 index 000000000..3f77aaa6c Binary files /dev/null and b/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.te.png differ diff --git a/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.kn.png b/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.kn.png new file mode 100644 index 000000000..5a82e787a Binary files /dev/null and b/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.kn.png differ diff --git a/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.ml.png b/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.ml.png new file mode 100644 index 000000000..5a82e787a Binary files /dev/null and b/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.ml.png differ diff --git a/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.te.png b/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.te.png new file mode 100644 index 000000000..5a82e787a Binary files /dev/null and b/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.te.png differ diff --git a/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.kn.png b/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.kn.png new file mode 100644 index 000000000..a623e9869 Binary files /dev/null and b/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.kn.png differ diff --git a/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.ml.png b/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.ml.png new file mode 100644 index 000000000..765e818a0 Binary files /dev/null and b/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.ml.png differ diff --git a/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.te.png b/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.te.png new file mode 100644 index 000000000..2e30054c8 Binary files /dev/null and b/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.te.png differ diff --git a/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.kn.jpg b/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.kn.jpg new file mode 100644 index 000000000..8698d67fb Binary files /dev/null and b/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.kn.jpg differ diff --git a/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.ml.jpg b/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.ml.jpg new file mode 100644 index 000000000..a7fdaa075 Binary files /dev/null and b/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.ml.jpg differ diff --git a/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.te.jpg b/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.te.jpg new file mode 100644 index 000000000..15f0adb5f Binary files /dev/null and b/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.te.jpg differ diff --git a/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.kn.png b/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.kn.png new file mode 100644 index 000000000..743fde0e4 Binary files /dev/null and b/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.kn.png differ diff --git a/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.ml.png b/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.ml.png new file mode 100644 index 000000000..26ce720e7 Binary files /dev/null and b/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.ml.png differ diff --git a/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.te.png b/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.te.png new file mode 100644 index 000000000..555ad09b1 Binary files /dev/null and b/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.te.png differ diff --git a/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.kn.png b/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.kn.png new file mode 100644 index 000000000..fd298e16e Binary files /dev/null and b/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.kn.png differ diff --git a/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.ml.png b/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.ml.png new file mode 100644 index 000000000..852195fda Binary files /dev/null and b/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.ml.png differ diff --git a/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.te.png b/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.te.png new file mode 100644 index 000000000..ecd8d7ff6 Binary files /dev/null and b/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.te.png differ diff --git a/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.kn.png b/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.kn.png new file mode 100644 index 000000000..a23210972 Binary files /dev/null and b/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.kn.png differ diff --git a/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.ml.png b/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.ml.png new file mode 100644 index 000000000..becaa8c6d Binary files /dev/null and b/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.ml.png differ diff --git a/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.te.png b/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.te.png new file mode 100644 index 000000000..a7dd32dc9 Binary files /dev/null and b/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.te.png differ diff --git a/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.kn.png b/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.kn.png new file mode 100644 index 000000000..99b7687b3 Binary files /dev/null and b/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.kn.png differ diff --git a/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.ml.png b/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.ml.png new file mode 100644 index 000000000..8545ce409 Binary files /dev/null and b/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.ml.png differ diff --git a/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.te.png b/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.te.png new file mode 100644 index 000000000..ccdc8bb2c Binary files /dev/null and b/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.te.png differ diff --git a/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.kn.png b/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.kn.png new file mode 100644 index 000000000..99b7687b3 Binary files /dev/null and b/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.kn.png differ diff --git a/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.ml.png b/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.ml.png new file mode 100644 index 000000000..8545ce409 Binary files /dev/null and b/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.ml.png differ diff --git a/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.te.png b/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.te.png new file mode 100644 index 000000000..ccdc8bb2c Binary files /dev/null and b/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.te.png differ diff --git a/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.kn.png b/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.kn.png new file mode 100644 index 000000000..b995b24b9 Binary files /dev/null and b/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.kn.png differ diff --git a/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.ml.png b/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.ml.png new file mode 100644 index 000000000..b995b24b9 Binary files /dev/null and b/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.ml.png differ diff --git a/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.te.png b/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.te.png new file mode 100644 index 000000000..b995b24b9 Binary files /dev/null and b/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.te.png differ diff --git a/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.kn.png b/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.kn.png new file mode 100644 index 000000000..f5527d750 Binary files /dev/null and b/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.kn.png differ diff --git a/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.ml.png b/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.ml.png new file mode 100644 index 000000000..f5527d750 Binary files /dev/null and b/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.ml.png differ diff --git a/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.te.png b/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.te.png new file mode 100644 index 000000000..f5527d750 Binary files /dev/null and b/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.te.png differ diff --git a/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.kn.jpg b/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.kn.jpg new file mode 100644 index 000000000..631db5fad Binary files /dev/null and b/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.kn.jpg differ diff --git a/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.ml.jpg b/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.ml.jpg new file mode 100644 index 000000000..631db5fad Binary files /dev/null and b/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.ml.jpg differ diff --git a/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.te.jpg b/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.te.jpg new file mode 100644 index 000000000..631db5fad Binary files /dev/null and b/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.te.jpg differ diff --git a/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.kn.jpg b/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.kn.jpg new file mode 100644 index 000000000..60023df50 Binary files /dev/null and b/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.kn.jpg differ diff --git a/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.ml.jpg b/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.ml.jpg new file mode 100644 index 000000000..c7f7887a6 Binary files /dev/null and b/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.ml.jpg differ diff --git a/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.te.jpg b/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.te.jpg new file mode 100644 index 000000000..cc2e436d8 Binary files /dev/null and b/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.te.jpg differ diff --git a/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.kn.jpg b/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.kn.jpg new file mode 100644 index 000000000..d09c41c8c Binary files /dev/null and b/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.kn.jpg differ diff --git a/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.ml.jpg b/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.ml.jpg new file mode 100644 index 000000000..d09c41c8c Binary files /dev/null and b/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.ml.jpg differ diff --git a/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.te.jpg b/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.te.jpg new file mode 100644 index 000000000..d09c41c8c Binary files /dev/null and b/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.te.jpg differ diff --git a/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.kn.png b/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.kn.png new file mode 100644 index 000000000..766bce103 Binary files /dev/null and b/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.kn.png differ diff --git a/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.ml.png b/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.ml.png new file mode 100644 index 000000000..0bd8c15e1 Binary files /dev/null and b/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.ml.png differ diff --git a/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.te.png b/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.te.png new file mode 100644 index 000000000..db014e6e7 Binary files /dev/null and b/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.te.png differ diff --git a/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.kn.png b/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.kn.png new file mode 100644 index 000000000..e4db5db46 Binary files /dev/null and b/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.kn.png differ diff --git a/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.ml.png b/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.ml.png new file mode 100644 index 000000000..e4db5db46 Binary files /dev/null and b/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.ml.png differ diff --git a/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.te.png b/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.te.png new file mode 100644 index 000000000..e4db5db46 Binary files /dev/null and b/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.te.png differ diff --git a/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.kn.png b/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.kn.png new file mode 100644 index 000000000..2d6f3eaf3 Binary files /dev/null and b/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.kn.png differ diff --git a/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.ml.png b/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.ml.png new file mode 100644 index 000000000..f6c861111 Binary files /dev/null and b/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.ml.png differ diff --git a/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.te.png b/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.te.png new file mode 100644 index 000000000..ac5a941df Binary files /dev/null and b/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.te.png differ diff --git a/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.kn.png b/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.kn.png new file mode 100644 index 000000000..a7f831a76 Binary files /dev/null and b/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.kn.png differ diff --git a/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.ml.png b/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.ml.png new file mode 100644 index 000000000..a7f831a76 Binary files /dev/null and b/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.ml.png differ diff --git a/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.te.png b/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.te.png new file mode 100644 index 000000000..a7f831a76 Binary files /dev/null and b/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.te.png differ diff --git a/translations/ar/README.md b/translations/ar/README.md index 59b225096..f0b5fe999 100644 --- a/translations/ar/README.md +++ b/translations/ar/README.md @@ -1,166 +1,176 @@ -[![ترخيص GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![مساهمو GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![مشاكل GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![طلبات السحب في GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![طلبات السحب مرحب بها](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![مشاهدو GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![تفرعات GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![نجوم GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 دعم متعدد اللغات +### 🌐 دعم متعدد اللغات -#### مدعوم عبر GitHub Action (تلقائي ودائم التحديث) +#### مدعوم عبر GitHub Action (آلي ودائم التحديث) -[العربية](./README.md) | [البنغالية](../bn/README.md) | [البلغارية](../bg/README.md) | [البورمية (ميانمار)](../my/README.md) | [الصينية (المبسطة)](../zh/README.md) | [الصينية (التقليدية، هونغ كونغ)](../hk/README.md) | [الصينية (التقليدية، ماكاو)](../mo/README.md) | [الصينية (التقليدية، تايوان)](../tw/README.md) | [الكرواتية](../hr/README.md) | [التشيكية](../cs/README.md) | [الدانماركية](../da/README.md) | [الهولندية](../nl/README.md) | [الإستونية](../et/README.md) | [الفنلندية](../fi/README.md) | [الفرنسية](../fr/README.md) | [الألمانية](../de/README.md) | [اليونانية](../el/README.md) | [العبرية](../he/README.md) | [الهندية](../hi/README.md) | [الهنغارية](../hu/README.md) | [الإندونيسية](../id/README.md) | [الإيطالية](../it/README.md) | [اليابانية](../ja/README.md) | [الكورية](../ko/README.md) | [الليتوانية](../lt/README.md) | [الماليزية](../ms/README.md) | [الماراثية](../mr/README.md) | [النيبالية](../ne/README.md) | [النيجيرية بيدجن](../pcm/README.md) | [النرويجية](../no/README.md) | [الفارسية (فارسي)](../fa/README.md) | [البولندية](../pl/README.md) | [البرتغالية (البرازيل)](../br/README.md) | [البرتغالية (البرتغال)](../pt/README.md) | [البنجابية (غورموخي)](../pa/README.md) | [الرومانية](../ro/README.md) | [الروسية](../ru/README.md) | [الصربية (السيريلية)](../sr/README.md) | [السلوفاكية](../sk/README.md) | [السلوفينية](../sl/README.md) | [الإسبانية](../es/README.md) | [السواحيلية](../sw/README.md) | [السويدية](../sv/README.md) | [التاغالوغية (الفلبينية)](../tl/README.md) | [التاميلية](../ta/README.md) | [التايلاندية](../th/README.md) | [التركية](../tr/README.md) | [الأوكرانية](../uk/README.md) | [الأردية](../ur/README.md) | [الفيتنامية](../vi/README.md) + +[العربية](./README.md) | [البنغالية](../bn/README.md) | [البلغارية](../bg/README.md) | [البورمية (ميانمار)](../my/README.md) | [الصينية (المبسطة)](../zh/README.md) | [الصينية (التقليدية، هونغ كونغ)](../hk/README.md) | [الصينية (التقليدية، ماكاو)](../mo/README.md) | [الصينية (التقليدية، تايوان)](../tw/README.md) | [الكرواتية](../hr/README.md) | [التشيكية](../cs/README.md) | [الدنماركية](../da/README.md) | [الهولندية](../nl/README.md) | [الإستونية](../et/README.md) | [الفنلندية](../fi/README.md) | [الفرنسية](../fr/README.md) | [الألمانية](../de/README.md) | [اليونانية](../el/README.md) | [العبرية](../he/README.md) | [الهندية](../hi/README.md) | [الهنغارية](../hu/README.md) | [الإندونيسية](../id/README.md) | [الإيطالية](../it/README.md) | [اليابانية](../ja/README.md) | [الكانادا](../kn/README.md) | [الكورية](../ko/README.md) | [الليتوانية](../lt/README.md) | [الماليزية](../ms/README.md) | [المالايالامية](../ml/README.md) | [الماراثية](../mr/README.md) | [النيبالية](../ne/README.md) | [النيجيرية بيدجين](../pcm/README.md) | [النرويجية](../no/README.md) | [الفارسية (اللغة الفارسية)](../fa/README.md) | [البولندية](../pl/README.md) | [البرتغالية (البرازيل)](../br/README.md) | [البرتغالية (البرتغال)](../pt/README.md) | [البنجابية (غورموخي)](../pa/README.md) | [الرومانية](../ro/README.md) | [الروسية](../ru/README.md) | [الصربية (السيريلية)](../sr/README.md) | [السلوفاكية](../sk/README.md) | [السلوفينية](../sl/README.md) | [الإسبانية](../es/README.md) | [السواحيلية](../sw/README.md) | [السويدية](../sv/README.md) | [التاغالوغ (الفلبينية)](../tl/README.md) | [التاميلية](../ta/README.md) | [التيلجو](../te/README.md) | [التايلاندية](../th/README.md) | [التركية](../tr/README.md) | [الأوكرانية](../uk/README.md) | [الأردية](../ur/README.md) | [الفيتنامية](../vi/README.md) + -#### انضم إلى مجتمعنا +#### انضم إلى مجتمعنا -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -لدينا سلسلة تعلم مع الذكاء الاصطناعي مستمرة على Discord، تعرف على المزيد وانضم إلينا في [سلسلة تعلم مع الذكاء الاصطناعي](https://aka.ms/learnwithai/discord) من 18 - 30 سبتمبر، 2025. ستحصل على نصائح وحيل لاستخدام GitHub Copilot في علم البيانات. +لدينا سلسلة تعلم عبر ديسكورد مع الذكاء الاصطناعي مستمرة، تعرّف أكثر وانضم إلينا في [سلسلة التعلم مع الذكاء الاصطناعي](https://aka.ms/learnwithai/discord) من 18 إلى 30 سبتمبر 2025. ستحصل على نصائح وحيل لاستخدام GitHub Copilot في علوم البيانات. -![سلسلة تعلم مع الذكاء الاصطناعي](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ar.png) +![سلسلة التعلم مع الذكاء الاصطناعي](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ar.png) -# تعلم الآلة للمبتدئين - منهج دراسي +# تعلم الآلة للمبتدئين - منهج دراسي -> 🌍 سافر حول العالم بينما نستكشف تعلم الآلة من خلال ثقافات العالم 🌍 +> 🌍 سافر حول العالم بينما نستكشف تعلم الآلة من خلال ثقافات العالم 🌍 -يسر دعاة السحابة في Microsoft أن يقدموا منهجًا دراسيًا لمدة 12 أسبوعًا و26 درسًا حول **تعلم الآلة**. في هذا المنهج، ستتعلم ما يُطلق عليه أحيانًا **تعلم الآلة الكلاسيكي**، باستخدام مكتبة Scikit-learn بشكل أساسي وتجنب التعلم العميق، الذي يتم تغطيته في [منهج الذكاء الاصطناعي للمبتدئين](https://aka.ms/ai4beginners). قم بدمج هذه الدروس مع منهجنا ['علم البيانات للمبتدئين'](https://aka.ms/ds4beginners)، أيضًا! +يسعد دعاة السحابة في مايكروسوفت أن يقدموا منهجًا دراسيًا مكونًا من 12 أسبوعًا و26 درسًا حول **تعلم الآلة**. في هذا المنهج، ستتعلم ما يُسمى أحيانًا **تعلم الآلة الكلاسيكي**، باستخدام مكتبة Scikit-learn بشكل أساسي وتجنب التعلم العميق، الذي يتم تغطيته في منهجنا [الذكاء الاصطناعي للمبتدئين](https://aka.ms/ai4beginners). يمكنك أيضًا دمج هذه الدروس مع منهجنا ['علوم البيانات للمبتدئين'](https://aka.ms/ds4beginners). -سافر معنا حول العالم بينما نطبق هذه التقنيات الكلاسيكية على بيانات من مناطق مختلفة من العالم. يتضمن كل درس اختبارات قبل وبعد الدرس، تعليمات مكتوبة لإكمال الدرس، حل، مهمة، والمزيد. تسمح لك طريقة التدريس القائمة على المشاريع بالتعلم أثناء البناء، وهي طريقة مثبتة لتثبيت المهارات الجديدة. +سافر معنا حول العالم بينما نطبق هذه التقنيات الكلاسيكية على بيانات من مناطق مختلفة من العالم. كل درس يتضمن اختبارات قبل وبعد الدرس، تعليمات مكتوبة لإكمال الدرس، حل، مهمة، وأكثر. تسمح لك منهجيتنا القائمة على المشاريع بالتعلم أثناء البناء، وهي طريقة مثبتة لترسيخ المهارات الجديدة. -**✍️ شكر جزيل لمؤلفينا** جين لوبر، ستيفن هويل، فرانشيسكا لازيري، تومومي إيمورا، كاسي بريفي، ديمتري سوشنيكوف، كريس نورينغ، أنيربان موكيرجي، أورنيلا ألتونيان، روث ياكوبو، وأيمي بويد +**✍️ شكر خاص لمؤلفينا** جين لوبر، ستيفن هاول، فرانسيسكا لازيري، تومومي إيمورا، كاسي بريفيو، ديمتري سوشنيكوف، كريس نورينغ، أنيربان موخرجي، أورنيلا ألتونيان، روث ياكوبو وآمي بويد -**🎨 شكر أيضًا لرسامينا** تومومي إيمورا، داساني ماديبالي، وجين لوبر +**🎨 شكر أيضًا لرسامينا** تومومي إيمورا، داساني ماديبالي، وجين لوبر -**🙏 شكر خاص 🙏 لمؤلفي ومراجعي ومساهمي المحتوى من سفراء الطلاب في Microsoft**، لا سيما ريشت داغلي، محمد ساكيب خان إنان، روهان راج، ألكساندرو بيتريسكو، أبيشيك جايسوال، نوارين تاباسم، إيوان سامويلا، وسنيغدا أغاروال +**🙏 شكر خاص 🙏 لسفراء طلاب مايكروسوفت المؤلفين والمراجعين والمساهمين في المحتوى**، لا سيما ريشيت داجلي، محمد سكيب خان إينان، روهان راج، ألكسندرو بيتريسكو، أبيشيك جايسوال، ناورين تاباسوم، إيوان سامويلا، وسنيغدا أغاروال -**🤩 شكر إضافي لسفراء الطلاب في Microsoft إريك وانجاو، جاسلين سوندي، وفيدوشي غوبتا لدروس R الخاصة بنا!** +**🤩 امتنان إضافي لسفراء طلاب مايكروسوفت إريك وانجاو، جاسلين سوندي، وفيدوشي جوبتا لدروس R الخاصة بنا!** -# البدء +# البدء -اتبع هذه الخطوات: -1. **قم بتفرع المستودع**: انقر على زر "Fork" في الزاوية العلوية اليمنى من هذه الصفحة. -2. **استنساخ المستودع**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +اتبع هذه الخطوات: +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) +> [اعثر على جميع الموارد الإضافية لهذا الدورة في مجموعة Microsoft Learn الخاصة بنا](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **تحتاج إلى مساعدة؟** تحقق من [دليل استكشاف الأخطاء وإصلاحها](TROUBLESHOOTING.md) للحصول على حلول للمشاكل الشائعة المتعلقة بالتثبيت والإعداد وتشغيل الدروس. +> 🔧 **هل تحتاج مساعدة؟** تحقق من [دليل استكشاف الأخطاء وإصلاحها](TROUBLESHOOTING.md) لحلول المشكلات الشائعة في التثبيت والإعداد وتشغيل الدروس. -**[الطلاب](https://aka.ms/student-page)**، لاستخدام هذا المنهج، قم بتفرع المستودع بالكامل إلى حساب GitHub الخاص بك وأكمل التمارين بنفسك أو مع مجموعة: +**[الطلاب](https://aka.ms/student-page)**، لاستخدام هذا المنهج، قم بعمل فورك للمستودع بالكامل إلى حساب GitHub الخاص بك وأكمل التمارين بنفسك أو مع مجموعة: -- ابدأ باختبار ما قبل المحاضرة. -- اقرأ المحاضرة وأكمل الأنشطة، توقف وتأمل عند كل نقطة تحقق من المعرفة. -- حاول إنشاء المشاريع من خلال فهم الدروس بدلاً من تشغيل كود الحل؛ ومع ذلك، يتوفر هذا الكود في مجلدات `/solution` في كل درس قائم على المشروع. -- قم بإجراء اختبار ما بعد المحاضرة. -- أكمل التحدي. -- أكمل المهمة. -- بعد إكمال مجموعة الدروس، قم بزيارة [لوحة المناقشة](https://github.com/microsoft/ML-For-Beginners/discussions) و"تعلم بصوت عالٍ" من خلال ملء نموذج PAT المناسب. PAT هو أداة تقييم تقدم وهي نموذج تقوم بملئه لتعزيز تعلمك. يمكنك أيضًا التفاعل مع نماذج PAT الأخرى حتى نتعلم معًا. +- ابدأ باختبار تمهيدي قبل المحاضرة. +- اقرأ المحاضرة وأكمل الأنشطة، توقف وتأمل عند كل اختبار معرفة. +- حاول إنشاء المشاريع بفهم الدروس بدلاً من تشغيل كود الحل؛ مع ذلك، الكود متاح في مجلدات `/solution` في كل درس موجه نحو المشروع. +- خذ اختبار ما بعد المحاضرة. +- أكمل التحدي. +- أكمل المهمة. +- بعد إكمال مجموعة دروس، قم بزيارة [لوحة النقاش](https://github.com/microsoft/ML-For-Beginners/discussions) و"تعلم بصوت عالٍ" بملء نموذج تقييم التقدم المناسب (PAT). الـ 'PAT' هو أداة تقييم تقدم تملأها لتعزيز تعلمك. يمكنك أيضًا التفاعل مع PATs الآخرين لنتعلم معًا. -> لمزيد من الدراسة، نوصي بمتابعة هذه [وحدات ومسارات التعلم من Microsoft](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +> للدراسة المتقدمة، نوصي بمتابعة هذه الوحدات ومسارات التعلم على [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). -**المعلمون**، لقد قمنا [بتضمين بعض الاقتراحات](for-teachers.md) حول كيفية استخدام هذا المنهج. +**المعلمون**، لقد أدرجنا [بعض الاقتراحات](for-teachers.md) حول كيفية استخدام هذا المنهج. --- -## فيديوهات توضيحية +## فيديوهات إرشادية -بعض الدروس متوفرة كفيديوهات قصيرة. يمكنك العثور على جميع هذه الفيديوهات داخل الدروس، أو على [قائمة تشغيل تعلم الآلة للمبتدئين على قناة Microsoft Developer على YouTube](https://aka.ms/ml-beginners-videos) بالنقر على الصورة أدناه. +بعض الدروس متاحة على شكل فيديوهات قصيرة. يمكنك العثور على جميع هذه الفيديوهات مدمجة داخل الدروس، أو على [قائمة تشغيل ML للمبتدئين على قناة Microsoft Developer على يوتيوب](https://aka.ms/ml-beginners-videos) بالنقر على الصورة أدناه. -[![بانر تعلم الآلة للمبتدئين](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ar.png)](https://aka.ms/ml-beginners-videos) +[![شعار ML للمبتدئين](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ar.png)](https://aka.ms/ml-beginners-videos) --- -## تعرف على الفريق +## تعرف على الفريق -[![فيديو ترويجي](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![فيديو ترويجي](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif بواسطة** [موهيت جايسال](https://linkedin.com/in/mohitjaisal) +**صورة متحركة بواسطة** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو عن المشروع والأشخاص الذين أنشأوه! +> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو عن المشروع والأشخاص الذين أنشأوه! --- -## طريقة التدريس - -لقد اخترنا مبدأين تربويين أثناء بناء هذا المنهج: التأكد من أنه عملي **قائم على المشاريع** وأنه يتضمن **اختبارات متكررة**. بالإضافة إلى ذلك، يحتوي هذا المنهج على **موضوع مشترك** يمنحه التماسك. - -من خلال التأكد من أن المحتوى يتماشى مع المشاريع، تصبح العملية أكثر جاذبية للطلاب وسيتم تعزيز الاحتفاظ بالمفاهيم. بالإضافة إلى ذلك، يحدد الاختبار منخفض المخاطر قبل الفصل نية الطالب نحو تعلم موضوع معين، بينما يضمن الاختبار الثاني بعد الفصل مزيدًا من الاحتفاظ. تم تصميم هذا المنهج ليكون مرنًا وممتعًا ويمكن تناوله بالكامل أو جزئيًا. تبدأ المشاريع صغيرة وتصبح أكثر تعقيدًا بحلول نهاية دورة الـ 12 أسبوعًا. يتضمن هذا المنهج أيضًا ملحقًا حول التطبيقات الواقعية لتعلم الآلة، والتي يمكن استخدامها كائتمان إضافي أو كأساس للنقاش. - -> ابحث عن [مدونة قواعد السلوك](CODE_OF_CONDUCT.md)، [المساهمة](CONTRIBUTING.md)، [الترجمة](TRANSLATIONS.md)، و[إرشادات استكشاف الأخطاء وإصلاحها](TROUBLESHOOTING.md). نحن نرحب بملاحظاتك البناءة! - -## كل درس يتضمن - -- رسم تخطيطي اختياري -- فيديو إضافي اختياري -- فيديو توضيحي (بعض الدروس فقط) -- [اختبار تمهيدي قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/) -- درس مكتوب -- لدروس المشاريع، أدلة خطوة بخطوة حول كيفية بناء المشروع -- نقاط تحقق من المعرفة -- تحدي -- قراءة إضافية -- مهمة -- [اختبار بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/) - -> **ملاحظة حول اللغات**: هذه الدروس مكتوبة بشكل أساسي بلغة Python، ولكن العديد منها متوفر أيضًا بلغة R. لإكمال درس R، انتقل إلى مجلد `/solution` وابحث عن دروس R. تتضمن امتداد .rmd الذي يمثل ملف **R Markdown** والذي يمكن تعريفه ببساطة على أنه تضمين لـ `كتل الكود` (من R أو لغات أخرى) و`رأس YAML` (الذي يوجه كيفية تنسيق المخرجات مثل PDF) في `وثيقة Markdown`. وبالتالي، فإنه يعمل كإطار عمل تأليفي مثالي لعلم البيانات لأنه يسمح لك بدمج الكود الخاص بك، ومخرجاته، وأفكارك من خلال السماح لك بكتابتها في Markdown. علاوة على ذلك، يمكن عرض مستندات R Markdown بتنسيقات مخرجات مثل PDF أو HTML أو Word. - -> **ملاحظة حول الاختبارات**: جميع الاختبارات موجودة في [مجلد تطبيق الاختبار](../../quiz-app)، بإجمالي 52 اختبارًا يحتوي كل منها على ثلاثة أسئلة. يتم ربطها من داخل الدروس ولكن يمكن تشغيل تطبيق الاختبار محليًا؛ اتبع التعليمات في مجلد `quiz-app` لاستضافة محلية أو نشر على Azure. - -| رقم الدرس | الموضوع | مجموعة الدروس | أهداف التعلم | الدرس المرتبط | المؤلف | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | مقدمة في تعلم الآلة | [المقدمة](1-Introduction/README.md) | تعرف على المفاهيم الأساسية وراء تعلم الآلة | [الدرس](1-Introduction/1-intro-to-ML/README.md) | محمد | -| 02 | تاريخ تعلم الآلة | [المقدمة](1-Introduction/README.md) | تعرف على التاريخ الذي يشكل أساس هذا المجال | [الدرس](1-Introduction/2-history-of-ML/README.md) | جين وأيمي | -| 03 | العدالة وتعلم الآلة | [المقدمة](1-Introduction/README.md) | ما هي القضايا الفلسفية المهمة حول العدالة التي يجب على الطلاب أخذها بعين الاعتبار عند بناء وتطبيق نماذج تعلم الآلة؟ | [الدرس](1-Introduction/3-fairness/README.md) | تومومي | -| 04 | تقنيات تعلم الآلة | [المقدمة](1-Introduction/README.md) | ما هي التقنيات التي يستخدمها الباحثون في تعلم الآلة لبناء النماذج؟ | [الدرس](1-Introduction/4-techniques-of-ML/README.md) | كريس وجين | -| 05 | مقدمة في الانحدار | [الانحدار](2-Regression/README.md) | ابدأ باستخدام Python وScikit-learn لنماذج الانحدار | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جين • إريك وانجاو | -| 06 | أسعار القرع في أمريكا الشمالية 🎃 | [الانحدار](2-Regression/README.md) | تصور ونظف البيانات استعدادًا لتعلم الآلة | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | جين • إريك وانجاو | -| 07 | أسعار القرع في أمريكا الشمالية 🎃 | [الانحدار](2-Regression/README.md) | بناء نماذج الانحدار الخطي والانحدار متعدد الحدود | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جين وديمتري • إريك وانجاو | -| 08 | أسعار القرع في أمريكا الشمالية 🎃 | [الانحدار](2-Regression/README.md) | بناء نموذج انحدار لوجستي | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | جين • إريك وانجاو | -| 09 | تطبيق ويب 🔌 | [تطبيق ويب](3-Web-App/README.md) | بناء تطبيق ويب لاستخدام النموذج المدرب | [Python](3-Web-App/1-Web-App/README.md) | جين | -| 10 | مقدمة في التصنيف | [التصنيف](4-Classification/README.md) | تنظيف البيانات وتحضيرها وتصورها؛ مقدمة في التصنيف | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جين وكاسي • إريك وانجاو | -| 11 | المأكولات الآسيوية والهندية اللذيذة 🍜 | [التصنيف](4-Classification/README.md) | مقدمة في المصنفات | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جين وكاسي • إريك وانجاو | -| 12 | المأكولات الآسيوية والهندية اللذيذة 🍜 | [التصنيف](4-Classification/README.md) | المزيد من المصنفات | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | جين وكاسي • إريك وانجاو | -| 13 | المأكولات الآسيوية والهندية اللذيذة 🍜 | [التصنيف](4-Classification/README.md) | بناء تطبيق ويب للتوصيات باستخدام النموذج الخاص بك | [Python](4-Classification/4-Applied/README.md) | جين | -| 14 | مقدمة في التجميع | [التجميع](5-Clustering/README.md) | تنظيف البيانات وتحضيرها وتصورها؛ مقدمة في التجميع | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جين • إريك وانجاو | -| 15 | استكشاف الأذواق الموسيقية النيجيرية 🎧 | [التجميع](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) | جين • إريك وانجاو | -| 16 | مقدمة في معالجة اللغة الطبيعية ☕️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | تعرف على الأساسيات حول معالجة اللغة الطبيعية من خلال بناء روبوت بسيط | [Python](6-NLP/1-Introduction-to-NLP/README.md) | ستيفن | -| 17 | مهام معالجة اللغة الطبيعية الشائعة ☕️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | تعمق في معرفة معالجة اللغة الطبيعية من خلال فهم المهام الشائعة المطلوبة عند التعامل مع هياكل اللغة | [Python](6-NLP/2-Tasks/README.md) | ستيفن | -| 18 | الترجمة وتحليل المشاعر ♥️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | الترجمة وتحليل المشاعر مع جين أوستن | [Python](6-NLP/3-Translation-Sentiment/README.md) | ستيفن | -| 19 | الفنادق الرومانسية في أوروبا ♥️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | تحليل المشاعر مع مراجعات الفنادق 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | ستيفن | -| 20 | الفنادق الرومانسية في أوروبا ♥️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | تحليل المشاعر مع مراجعات الفنادق 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | ستيفن | -| 21 | مقدمة في التنبؤ بالسلاسل الزمنية | [السلاسل الزمنية](7-TimeSeries/README.md) | مقدمة في التنبؤ بالسلاسل الزمنية | [Python](7-TimeSeries/1-Introduction/README.md) | فرانسيسكا | -| 22 | ⚡️ استخدام الطاقة في العالم ⚡️ - التنبؤ بالسلاسل الزمنية باستخدام ARIMA | [السلاسل الزمنية](7-TimeSeries/README.md) | التنبؤ بالسلاسل الزمنية باستخدام ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | فرانسيسكا | -| 23 | ⚡️ استخدام الطاقة في العالم ⚡️ - التنبؤ بالسلاسل الزمنية باستخدام SVR | [السلاسل الزمنية](7-TimeSeries/README.md) | التنبؤ بالسلاسل الزمنية باستخدام Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | أنيربان | -| 24 | مقدمة في التعلم المعزز | [التعلم المعزز](8-Reinforcement/README.md) | مقدمة في التعلم المعزز باستخدام Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | ديمتري | -| 25 | ساعد بيتر في تجنب الذئب! 🐺 | [التعلم المعزز](8-Reinforcement/README.md) | التعلم المعزز باستخدام Gym | [Python](8-Reinforcement/2-Gym/README.md) | ديمتري | -| الختام | سيناريوهات وتطبيقات تعلم الآلة في العالم الحقيقي | [تعلم الآلة في الواقع](9-Real-World/README.md) | تطبيقات مثيرة وكاشفة لتعلم الآلة الكلاسيكي | [الدرس](9-Real-World/1-Applications/README.md) | الفريق | -| الختام | تصحيح النماذج في تعلم الآلة باستخدام لوحة معلومات الذكاء الاصطناعي المسؤول | [تعلم الآلة في الواقع](9-Real-World/README.md) | تصحيح النماذج في تعلم الآلة باستخدام مكونات لوحة معلومات الذكاء الاصطناعي المسؤول | [الدرس](9-Real-World/2-Debugging-ML-Models/README.md) | روث ياكوب | - -> [اعثر على جميع الموارد الإضافية لهذه الدورة في مجموعة Microsoft Learn الخاصة بنا](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +## المنهجية التعليمية + +اخترنا مبدأين تربويين أثناء بناء هذا المنهج: التأكد من أنه **مبني على المشاريع العملية** وأنه يتضمن **اختبارات متكررة**. بالإضافة إلى ذلك، يحتوي هذا المنهج على **موضوع مشترك** ليمنحه تماسكًا. + +بضمان توافق المحتوى مع المشاريع، يصبح التعلم أكثر جاذبية للطلاب ويزداد ترسيخ المفاهيم. بالإضافة إلى ذلك، يحدد اختبار منخفض المخاطر قبل الدرس نية الطالب نحو تعلم موضوع ما، بينما يضمن اختبار ثانٍ بعد الدرس مزيدًا من التثبيت. تم تصميم هذا المنهج ليكون مرنًا وممتعًا ويمكن أخذه كاملاً أو جزئيًا. تبدأ المشاريع صغيرة وتزداد تعقيدًا بنهاية دورة الـ 12 أسبوعًا. يتضمن هذا المنهج أيضًا خاتمة حول تطبيقات تعلم الآلة في العالم الحقيقي، والتي يمكن استخدامها كرصيد إضافي أو كأساس للنقاش. + +> اطلع على [مدونة السلوك](CODE_OF_CONDUCT.md)، [المساهمة](CONTRIBUTING.md)، [الترجمة](TRANSLATIONS.md)، و[استكشاف الأخطاء وإصلاحها](TROUBLESHOOTING.md). نرحب بملاحظاتك البناءة! + +## كل درس يتضمن + +- ملاحظات تخطيطية اختيارية +- فيديو تكميلي اختياري +- فيديو إرشادي (بعض الدروس فقط) +- [اختبار تمهيدي قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/) +- درس مكتوب +- للدروس القائمة على المشاريع، إرشادات خطوة بخطوة لبناء المشروع +- اختبارات معرفة +- تحدي +- قراءة إضافية +- مهمة +- [اختبار بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/) + +> **ملاحظة حول اللغات**: هذه الدروس مكتوبة بشكل أساسي بلغة بايثون، لكن العديد منها متاح أيضًا بلغة R. لإكمال درس R، انتقل إلى مجلد `/solution` وابحث عن دروس R. تحتوي على امتداد .rmd الذي يمثل ملف **R Markdown** والذي يمكن تعريفه ببساطة على أنه تضمين لـ `كتل الكود` (بلغة R أو لغات أخرى) و`رأس YAML` (الذي يوجه كيفية تنسيق المخرجات مثل PDF) في `وثيقة Markdown`. وبالتالي، فهو إطار عمل مثالي للتأليف في علوم البيانات لأنه يسمح لك بدمج الكود الخاص بك، ومخرجاته، وأفكارك عن طريق كتابتها في Markdown. علاوة على ذلك، يمكن تحويل مستندات R Markdown إلى صيغ إخراج مثل PDF أو HTML أو Word. + +> **ملاحظة حول الاختبارات**: جميع الاختبارات موجودة في [مجلد تطبيق الاختبارات](../../quiz-app)، بإجمالي 52 اختبارًا يحتوي كل منها على ثلاثة أسئلة. يتم ربطها من داخل الدروس، لكن يمكن تشغيل تطبيق الاختبارات محليًا؛ اتبع التعليمات في مجلد `quiz-app` لاستضافة محلية أو النشر على Azure. + +| رقم الدرس | الموضوع | تجميع الدروس | أهداف التعلم | الدرس المرتبط | المؤلف | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | مقدمة في تعلم الآلة | [Introduction](1-Introduction/README.md) | تعلّم المفاهيم الأساسية وراء تعلم الآلة | [Lesson](1-Introduction/1-intro-to-ML/README.md) | محمد | +| 02 | تاريخ تعلم الآلة | [Introduction](1-Introduction/README.md) | تعلّم التاريخ الكامن وراء هذا المجال | [Lesson](1-Introduction/2-history-of-ML/README.md) | جين وآمي | +| 03 | العدالة وتعلم الآلة | [Introduction](1-Introduction/README.md) | ما هي القضايا الفلسفية المهمة حول العدالة التي يجب على الطلاب مراعاتها عند بناء وتطبيق نماذج تعلم الآلة؟ | [Lesson](1-Introduction/3-fairness/README.md) | تومومي | +| 04 | تقنيات تعلم الآلة | [Introduction](1-Introduction/README.md) | ما هي التقنيات التي يستخدمها باحثو تعلم الآلة لبناء نماذج تعلم الآلة؟ | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | كريس وجين | +| 05 | مقدمة في الانحدار | [Regression](2-Regression/README.md) | ابدأ مع بايثون وScikit-learn لنماذج الانحدار | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جين • إريك وانجاو | +| 06 | أسعار اليقطين في أمريكا الشمالية 🎃 | [Regression](2-Regression/README.md) | تصور ونظف البيانات تحضيرًا لتعلم الآلة | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | جين • إريك وانجاو | +| 07 | أسعار اليقطين في أمريكا الشمالية 🎃 | [Regression](2-Regression/README.md) | بناء نماذج الانحدار الخطي والمتعدد الحدود | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جين ودميتري • إريك وانجاو | +| 08 | أسعار اليقطين في أمريكا الشمالية 🎃 | [Regression](2-Regression/README.md) | بناء نموذج انحدار لوجستي | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | جين • إريك وانجاو | +| 09 | تطبيق ويب 🔌 | [Web App](3-Web-App/README.md) | بناء تطبيق ويب لاستخدام نموذجك المدرب | [Python](3-Web-App/1-Web-App/README.md) | جين | +| 10 | مقدمة في التصنيف | [Classification](4-Classification/README.md) | تنظيف، تحضير، وتصوير بياناتك؛ مقدمة في التصنيف | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جين وكاسي • إريك وانجاو | +| 11 | المأكولات الآسيوية والهندية اللذيذة 🍜 | [Classification](4-Classification/README.md) | مقدمة إلى المصنفات | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جين وكاسي • إريك وانجاو | +| 12 | المأكولات الآسيوية والهندية اللذيذة 🍜 | [Classification](4-Classification/README.md) | المزيد من المصنفات | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | جين وكاسي • إريك وانجاو | +| 13 | المأكولات الآسيوية والهندية اللذيذة 🍜 | [Classification](4-Classification/README.md) | بناء تطبيق ويب للتوصية باستخدام نموذجك | [Python](4-Classification/4-Applied/README.md) | جين | +| 14 | مقدمة في التجميع | [Clustering](5-Clustering/README.md) | تنظيف، تحضير، وتصوير بياناتك؛ مقدمة في التجميع | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جين • إريك وانجاو | +| 15 | استكشاف الأذواق الموسيقية النيجيرية 🎧 | [Clustering](5-Clustering/README.md) | استكشاف طريقة التجميع K-Means | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | جين • إريك وانجاو | +| 16 | مقدمة في معالجة اللغة الطبيعية ☕️ | [Natural language processing](6-NLP/README.md) | تعلّم الأساسيات حول معالجة اللغة الطبيعية ببناء بوت بسيط | [Python](6-NLP/1-Introduction-to-NLP/README.md) | ستيفن | +| 17 | مهام معالجة اللغة الطبيعية الشائعة ☕️ | [Natural language processing](6-NLP/README.md) | تعميق معرفتك في معالجة اللغة الطبيعية بفهم المهام الشائعة المطلوبة عند التعامل مع هياكل اللغة | [Python](6-NLP/2-Tasks/README.md) | ستيفن | +| 18 | الترجمة وتحليل المشاعر ♥️ | [Natural language processing](6-NLP/README.md) | الترجمة وتحليل المشاعر مع جين أوستن | [Python](6-NLP/3-Translation-Sentiment/README.md) | ستيفن | +| 19 | الفنادق الرومانسية في أوروبا ♥️ | [Natural language processing](6-NLP/README.md) | تحليل المشاعر مع مراجعات الفنادق 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | ستيفن | +| 20 | الفنادق الرومانسية في أوروبا ♥️ | [Natural language processing](6-NLP/README.md) | تحليل المشاعر مع مراجعات الفنادق 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | ستيفن | +| 21 | مقدمة في التنبؤ بالسلاسل الزمنية | [Time series](7-TimeSeries/README.md) | مقدمة في التنبؤ بالسلاسل الزمنية | [Python](7-TimeSeries/1-Introduction/README.md) | فرانسيسكا | +| 22 | ⚡️ استخدام الطاقة العالمي ⚡️ - التنبؤ بالسلاسل الزمنية باستخدام ARIMA | [Time series](7-TimeSeries/README.md) | التنبؤ بالسلاسل الزمنية باستخدام ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | فرانسيسكا | +| 23 | ⚡️ استخدام الطاقة العالمي ⚡️ - التنبؤ بالسلاسل الزمنية باستخدام SVR | [Time series](7-TimeSeries/README.md) | التنبؤ بالسلاسل الزمنية باستخدام الانحدار بدعم المتجهات | [Python](7-TimeSeries/3-SVR/README.md) | أنيربان | +| 24 | مقدمة في التعلم المعزز | [Reinforcement learning](8-Reinforcement/README.md) | مقدمة في التعلم المعزز باستخدام Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | دمитري | +| 25 | ساعد بيتر على تجنب الذئب! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | التعلم المعزز باستخدام Gym | [Python](8-Reinforcement/2-Gym/README.md) | دمитري | +| خاتمة | سيناريوهات وتطبيقات تعلم الآلة في العالم الحقيقي | [ML in the Wild](9-Real-World/README.md) | تطبيقات مثيرة ومكشوفة لتعلم الآلة الكلاسيكي في العالم الحقيقي | [Lesson](9-Real-World/1-Applications/README.md) | الفريق | +| خاتمة | تصحيح نماذج تعلم الآلة باستخدام لوحة تحكم RAI | [ML in the Wild](9-Real-World/README.md) | تصحيح نماذج تعلم الآلة باستخدام مكونات لوحة تحكم الذكاء المسؤول | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | روث ياكوبو | + +> [اعثر على جميع الموارد الإضافية لهذا المقرر في مجموعة Microsoft Learn الخاصة بنا](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## الوصول دون اتصال -يمكنك تشغيل هذا التوثيق دون اتصال باستخدام [Docsify](https://docsify.js.org/#/). قم باستنساخ هذا المستودع، [تثبيت Docsify](https://docsify.js.org/#/quickstart) على جهازك المحلي، ثم في المجلد الجذري لهذا المستودع، اكتب `docsify serve`. سيتم تشغيل الموقع على المنفذ 3000 على جهازك المحلي: `localhost:3000`. +يمكنك تشغيل هذا التوثيق دون اتصال باستخدام [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 +[![LangChain4j للمبتدئين](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js للمبتدئين](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + ### Azure / Edge / MCP / Agents [![AZD للمبتدئين](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) [![Edge AI للمبتدئين](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -168,44 +178,45 @@ CO_OP_TRANSLATOR_METADATA: [![وكلاء الذكاء الاصطناعي للمبتدئين](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### سلسلة الذكاء الاصطناعي التوليدي [![الذكاء الاصطناعي التوليدي للمبتدئين](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![الذكاء الاصطناعي التوليدي (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![الذكاء الاصطناعي التوليدي (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![الذكاء الاصطناعي التوليدي (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +[![الذكاء الاصطناعي التوليدي (جافا)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![الذكاء الاصطناعي التوليدي (جافا سكريبت)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### التعلم الأساسي -[![تعلم الآلة للمبتدئين](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![علم البيانات للمبتدئين](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![الذكاء الاصطناعي للمبتدئين](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![الأمن السيبراني للمبتدئين](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![تطوير الويب للمبتدئين](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![إنترنت الأشياء للمبتدئين](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![تطوير XR للمبتدئين](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![تعلم الآلة للمبتدئين](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![علوم البيانات للمبتدئين](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![الذكاء الاصطناعي للمبتدئين](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![الأمن السيبراني للمبتدئين](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![تطوير الويب للمبتدئين](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![إنترنت الأشياء للمبتدئين](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![تطوير الواقع الممتد للمبتدئين](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### سلسلة كوبايلوت +[![كوبايلوت للبرمجة الزوجية بالذكاء الاصطناعي](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![كوبايلوت لـ C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![مغامرة كوبايلوت](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### سلسلة Copilot -[![Copilot للبرمجة المزدوجة بالذكاء الاصطناعي](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot لـ C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![مغامرة Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## الحصول على المساعدة +## الحصول على المساعدة -إذا واجهت صعوبة أو كانت لديك أسئلة حول بناء تطبيقات الذكاء الاصطناعي، انضم إلى زملائك المتعلمين والمطورين ذوي الخبرة في مناقشات حول MCP. إنها مجتمع داعم حيث يتم الترحيب بالأسئلة ومشاركة المعرفة بحرية. +إذا واجهت صعوبة أو كان لديك أي أسئلة حول بناء تطبيقات الذكاء الاصطناعي. انضم إلى المتعلمين الآخرين والمطورين ذوي الخبرة في مناقشات حول MCP. إنها مجتمع داعم حيث تُرحب بالأسئلة ويُشارك المعرفة بحرية. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -إذا كان لديك ملاحظات حول المنتج أو واجهت أخطاء أثناء البناء، قم بزيارة: +إذا كان لديك ملاحظات على المنتج أو أخطاء أثناء البناء، قم بزيارة: -[![منتدى مطوري Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![منتدى مطوري Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **إخلاء المسؤولية**: -تمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالترجمة البشرية الاحترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق به. للمعلومات الهامة، يُنصح بالاستعانة بترجمة بشرية محترفة. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/bg/README.md b/translations/bg/README.md index de9ac9de2..dcac4abce 100644 --- a/translations/bg/README.md +++ b/translations/bg/README.md @@ -1,214 +1,223 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Поддръжка на много езици +### 🌐 Многоезична поддръжка -#### Поддържано чрез GitHub Action (Автоматизирано и винаги актуално) +#### Поддържа се чрез GitHub Action (Автоматизирано и винаги актуално) - -[Арабски](../ar/README.md) | [Бенгалски](../bn/README.md) | [Български](./README.md) | [Бирмански (Мианмар)](../my/README.md) | [Китайски (опростен)](../zh/README.md) | [Китайски (традиционен, Хонконг)](../hk/README.md) | [Китайски (традиционен, Макао)](../mo/README.md) | [Китайски (традиционен, Тайван)](../tw/README.md) | [Хърватски](../hr/README.md) | [Чешки](../cs/README.md) | [Датски](../da/README.md) | [Холандски](../nl/README.md) | [Естонски](../et/README.md) | [Фински](../fi/README.md) | [Френски](../fr/README.md) | [Немски](../de/README.md) | [Гръцки](../el/README.md) | [Иврит](../he/README.md) | [Хинди](../hi/README.md) | [Унгарски](../hu/README.md) | [Индонезийски](../id/README.md) | [Италиански](../it/README.md) | [Японски](../ja/README.md) | [Корейски](../ko/README.md) | [Литовски](../lt/README.md) | [Малайски](../ms/README.md) | [Маратхи](../mr/README.md) | [Непалски](../ne/README.md) | [Нигерийски пиджин](../pcm/README.md) | [Норвежки](../no/README.md) | [Персийски (фарси)](../fa/README.md) | [Полски](../pl/README.md) | [Португалски (Бразилия)](../br/README.md) | [Португалски (Португалия)](../pt/README.md) | [Пенджабски (Гурмуки)](../pa/README.md) | [Румънски](../ro/README.md) | [Руски](../ru/README.md) | [Сръбски (кирилица)](../sr/README.md) | [Словашки](../sk/README.md) | [Словенски](../sl/README.md) | [Испански](../es/README.md) | [Суахили](../sw/README.md) | [Шведски](../sv/README.md) | [Тагалог (Филипински)](../tl/README.md) | [Тамилски](../ta/README.md) | [Тайландски](../th/README.md) | [Турски](../tr/README.md) | [Украински](../uk/README.md) | [Урду](../ur/README.md) | [Виетнамски](../vi/README.md) - + +[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + -#### Присъединете се към нашата общност +#### Присъединете се към нашата общност -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Имаме текуща серия за обучение с AI в Discord, научете повече и се присъединете към нас на [Learn with AI Series](https://aka.ms/learnwithai/discord) от 18 - 30 септември, 2025. Ще получите съвети и трикове за използване на GitHub Copilot за Data Science. +Имаме текуща серия в Discord за учене с AI, научете повече и се присъединете към нас на [Learn with AI Series](https://aka.ms/learnwithai/discord) от 18 до 30 септември 2025 г. Ще получите съвети и трикове за използване на GitHub Copilot за Data Science. -![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.bg.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.bg.png) -# Машинно обучение за начинаещи - учебна програма +# Машинно обучение за начинаещи - Учебна програма -> 🌍 Пътувайте по света, докато изследваме машинното обучение чрез културите на света 🌍 +> 🌍 Пътувайте по света, докато изследваме Машинното обучение чрез световните култури 🌍 -Cloud Advocates в Microsoft с удоволствие предлагат 12-седмична, 26-урочна учебна програма, посветена на **машинното обучение**. В тази програма ще научите за това, което понякога се нарича **класическо машинно обучение**, като основно използвате библиотеката Scikit-learn и избягвате дълбокото обучение, което е обхванато в нашата [учебна програма за AI за начинаещи](https://aka.ms/ai4beginners). Съчетайте тези уроци с нашата ['учебна програма за Data Science за начинаещи'](https://aka.ms/ds4beginners), също така! +Облачните застъпници в Microsoft с удоволствие предлагат 12-седмична учебна програма с 26 урока, посветена на **Машинното обучение**. В тази учебна програма ще научите за това, което понякога се нарича **класическо машинно обучение**, използвайки основно библиотеката Scikit-learn и избягвайки дълбокото обучение, което е разгледано в нашата [учебна програма AI за начинаещи](https://aka.ms/ai4beginners). Съчетайте тези уроци с нашата ['Data Science за начинаещи' учебна програма](https://aka.ms/ds4beginners)! -Пътувайте с нас по света, докато прилагаме тези класически техники към данни от различни региони на света. Всеки урок включва тестове преди и след урока, писмени инструкции за завършване на урока, решение, задача и други. Нашата проектно-базирана педагогика ви позволява да учите, докато изграждате, доказан начин за нови умения да се запазят. +Пътувайте с нас по света, докато прилагаме тези класически техники върху данни от много области на света. Всеки урок включва предварителни и последващи тестове, писмени инструкции за изпълнение на урока, решение, задача и още. Нашата проектно-базирана педагогика ви позволява да учите, докато изграждате, което е доказан начин новите умения да се "захванат". -**✍️ Сърдечни благодарности на нашите автори** Джен Лупър, Стивън Хауъл, Франческа Лазери, Томоми Имура, Каси Бревиу, Дмитрий Сошников, Крис Норинг, Анирбан Мукерджи, Орнела Алтунян, Рут Якобу и Ейми Бойд +**✍️ Сърдечни благодарности на нашите автори** Джен Лупър, Стивън Хауъл, Франческа Лазери, Томоми Имура, Каси Бревиу, Дмитрий Сошников, Крис Норинг, Анирбан Мукерджи, Орнела Алтунян, Рут Якобу и Ейми Бойд -**🎨 Благодарности и на нашите илюстратори** Томоми Имура, Дасани Мадипали и Джен Лупър +**🎨 Благодарности и на нашите илюстратори** Томоми Имура, Дасани Мадипали и Джен Лупър -**🙏 Специални благодарности 🙏 на нашите автори, рецензенти и сътрудници от Microsoft Student Ambassador**, особено Ришит Дагли, Мухамад Сакиб Хан Инан, Рохан Радж, Александру Петреску, Абишек Джайсвал, Наврин Табасум, Йоан Самуила и Снигдха Агарвал +**🙏 Специални благодарности 🙏 на нашите автори, рецензенти и сътрудници от Microsoft Student Ambassador**, особено Ришит Дагли, Мухаммад Сакиб Хан Инан, Рохан Радж, Александру Петреску, Абхишек Джайсуал, Наурин Табасум, Йоан Самуила и Снигдха Агарвал -**🤩 Допълнителна благодарност на Microsoft Student Ambassadors Ерик Ванджау, Джаслийн Сонди и Видуши Гупта за нашите уроци по R!** +**🤩 Допълнителна благодарност на Microsoft Student Ambassadors Ерик Уанджау, Джаслийн Сонди и Видуши Гупта за нашите уроци по R!** -# Започнете +# Започване -Следвайте тези стъпки: -1. **Fork на хранилището**: Кликнете върху бутона "Fork" в горния десен ъгъл на тази страница. -2. **Клонирайте хранилището**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Следвайте тези стъпки: +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) +> [намерете всички допълнителни ресурси за този курс в нашата колекция Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Нуждаете се от помощ?** Проверете нашето [Ръководство за отстраняване на проблеми](TROUBLESHOOTING.md) за решения на често срещани проблеми с инсталацията, настройката и изпълнението на уроците. +> 🔧 **Нуждаете се от помощ?** Проверете нашето [Ръководство за отстраняване на проблеми](TROUBLESHOOTING.md) за решения на често срещани проблеми с инсталацията, настройката и изпълнението на уроците. -**[Студенти](https://aka.ms/student-page)**, за да използвате тази учебна програма, направете fork на цялото хранилище към вашия собствен GitHub акаунт и завършете упражненията сами или с група: -- Започнете с тест преди лекцията. -- Прочетете лекцията и завършете дейностите, като спирате и размишлявате при всяка проверка на знанията. -- Опитайте се да създадете проектите, като разбирате уроците, вместо да изпълнявате кода на решението; въпреки това този код е наличен в папките `/solution` във всеки проектно-ориентиран урок. -- Направете тест след лекцията. -- Завършете предизвикателството. -- Завършете задачата. -- След завършване на група уроци, посетете [Дискусионния форум](https://github.com/microsoft/ML-For-Beginners/discussions) и "учете на глас", като попълните съответния PAT рубрик. PAT е инструмент за оценка на напредъка, който е рубрик, който попълвате, за да задълбочите обучението си. Можете също така да реагирате на други PAT, за да учим заедно. +**[Студенти](https://aka.ms/student-page)**, за да използвате тази учебна програма, форкнете цялото хранилище в своя GitHub акаунт и изпълнявайте упражненията сами или в група: -> За допълнително обучение препоръчваме да следвате тези [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) модули и учебни пътеки. +- Започнете с предварителен тест преди лекцията. +- Прочетете лекцията и изпълнете дейностите, спирайки се и размишлявайки при всяка проверка на знанията. +- Опитайте се да създадете проектите, като разбирате уроците, а не просто като изпълнявате кода за решение; въпреки това този код е наличен в папките `/solution` във всеки урок, ориентиран към проект. +- Направете теста след лекцията. +- Изпълнете предизвикателството. +- Изпълнете задачата. +- След като завършите група уроци, посетете [Дискусионния борд](https://github.com/microsoft/ML-For-Beginners/discussions) и "учете на глас", като попълните съответната рубрика PAT. 'PAT' е Инструмент за оценка на напредъка, който е рубрика, която попълвате, за да задълбочите ученето си. Можете също да реагирате на други PAT, за да учим заедно. -**Учители**, ние сме [включили някои предложения](for-teachers.md) за това как да използвате тази учебна програма. +> За по-нататъшно обучение препоръчваме да следвате тези [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) модули и учебни пътеки. ---- +**Учители**, ние сме [включили някои предложения](for-teachers.md) за това как да използвате тази учебна програма. -## Видео ръководства - -Някои от уроците са налични като кратки видеа. Можете да намерите всички тях в уроците или в [плейлиста ML за начинаещи в YouTube канала на Microsoft Developer](https://aka.ms/ml-beginners-videos), като кликнете върху изображението по-долу. - -[![ML за начинаещи банер](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.bg.png)](https://aka.ms/ml-beginners-videos) - ---- - -## Запознайте се с екипа - -[![Промо видео](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) - -**Gif от** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +--- -> 🎥 Кликнете върху изображението по-горе за видео за проекта и хората, които го създадоха! +## Видео уроци ---- +Някои от уроците са налични като кратки видеа. Можете да ги намерите в самите уроци или в [плейлиста ML for Beginners в YouTube канала на Microsoft Developer](https://aka.ms/ml-beginners-videos), като кликнете върху изображението по-долу. -## Педагогика +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.bg.png)](https://aka.ms/ml-beginners-videos) -Избрахме два педагогически принципа при създаването на тази учебна програма: да гарантираме, че тя е практически **проектно-базирана** и че включва **чести тестове**. Освен това, тази учебна програма има обща **тема**, която й придава сплотеност. +--- -Като гарантираме, че съдържанието е свързано с проекти, процесът става по-ангажиращ за студентите и запазването на концепциите ще бъде увеличено. Освен това, тест с нисък риск преди урока насочва вниманието на студента към изучаването на дадена тема, докато втори тест след урока осигурява допълнително запазване. Тази учебна програма е проектирана да бъде гъвкава и забавна и може да бъде взета изцяло или частично. Проектите започват малки и стават все по-сложни до края на 12-седмичния цикъл. Тази учебна програма включва и постскрипт за реални приложения на ML, който може да се използва като допълнителен кредит или като основа за дискусия. +## Запознайте се с екипа -> Намерете нашите [Правила за поведение](CODE_OF_CONDUCT.md), [Принос](CONTRIBUTING.md), [Превод](TRANSLATIONS.md) и [Ръководство за отстраняване на проблеми](TROUBLESHOOTING.md). Очакваме вашата конструктивна обратна връзка! +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -## Всеки урок включва +**Гиф от** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -- опционална скица -- опционално допълнително видео -- видео ръководство (само за някои уроци) -- [тест за загряване преди лекцията](https://ff-quizzes.netlify.app/en/ml/) -- писмен урок -- за проектно-базирани уроци, ръководства стъпка по стъпка за изграждане на проекта -- проверки на знанията -- предизвикателство -- допълнително четене -- задача -- [тест след лекцията](https://ff-quizzes.netlify.app/en/ml/) +> 🎥 Кликнете върху изображението по-горе за видео за проекта и хората, които го създадоха! -> **Бележка за езиците**: Тези уроци са основно написани на Python, но много от тях са налични и на R. За да завършите урок на R, отидете в папката `/solution` и потърсете уроци на R. Те включват разширение .rmd, което представлява **R Markdown** файл, който може да бъде просто дефиниран като вграждане на `кодови блокове` (на R или други езици) и `YAML заглавие` (което насочва как да се форматират изходи като PDF) в `Markdown документ`. Като такъв, той служи като примерна рамка за авторство за Data Science, тъй като ви позволява да комбинирате вашия код, неговия изход и вашите мисли, като ви позволява да ги записвате в Markdown. Освен това, R Markdown документи могат да бъдат рендирани в изходни формати като PDF, HTML или Word. +--- -> **Бележка за тестовете**: Всички тестове са съдържани в [папката Quiz App](../../quiz-app), за общо 52 теста с по три въпроса всеки. Те са свързани от уроците, но приложението за тестове може да бъде изпълнено локално; следвайте инструкциите в папката `quiz-app`, за да го хоствате локално или да го разположите в Azure. +## Педагогика + +Избрахме два педагогически принципа при създаването на тази учебна програма: да бъде практическа и **базирана на проекти** и да включва **чести тестове**. Освен това тази учебна програма има обща **тема**, която й придава свързаност. + +Като гарантираме, че съдържанието е свързано с проекти, процесът става по-ангажиращ за студентите и задържането на концепциите се увеличава. Освен това, ниско рисков тест преди урока насочва вниманието на студента към изучаваната тема, а втори тест след урока осигурява допълнително задържане. Тази учебна програма е проектирана да бъде гъвкава и забавна и може да се изучава изцяло или частично. Проектите започват малки и стават все по-сложни към края на 12-седмичния цикъл. Тази учебна програма включва и постскриптум за реални приложения на ML, който може да се използва като допълнителен кредит или като основа за дискусия. + +> Намерете нашите насоки [Кодекс на поведение](CODE_OF_CONDUCT.md), [Принос](CONTRIBUTING.md), [Превод](TRANSLATIONS.md) и [Отстраняване на проблеми](TROUBLESHOOTING.md). Очакваме вашата конструктивна обратна връзка! + +## Всеки урок включва + +- по желание скицник +- по желание допълнително видео +- видео урок (само при някои уроци) +- [предварителен тест за загряване преди лекцията](https://ff-quizzes.netlify.app/en/ml/) +- писмен урок +- за уроци, базирани на проекти, стъпка по стъпка ръководства за изграждане на проекта +- проверки на знанията +- предизвикателство +- допълнително четиво +- задача +- [тест след лекцията](https://ff-quizzes.netlify.app/en/ml/) + +> **Бележка за езиците**: Тези уроци са основно написани на Python, но много от тях са налични и на R. За да завършите урок на R, отидете в папката `/solution` и потърсете уроци на R. Те включват разширение .rmd, което представлява **R Markdown** файл, който може да се определи като вграждане на `кодови блокове` (на R или други езици) и `YAML заглавка` (която указва как да се форматират изходите като PDF) в `Markdown документ`. По този начин той служи като отлична рамка за авторство за науката за данни, тъй като ви позволява да комбинирате кода си, неговия изход и вашите мисли, като ги записвате в Markdown. Освен това, R Markdown документите могат да се рендерират в изходни формати като PDF, HTML или Word. + +> **Бележка за тестовете**: Всички тестове са в [папката Quiz App](../../quiz-app), общо 52 теста с по три въпроса всеки. Те са свързани от уроците, но приложението за тестове може да се стартира локално; следвайте инструкциите в папката `quiz-app` за локално хостване или разгръщане в Azure. + +| Номер на урок | Тема | Групиране на уроци | Учебни цели | Свързан урок | Автор | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | Въведение в машинното обучение | [Introduction](1-Introduction/README.md) | Научете основните концепции зад машинното обучение | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Мухаммад | +| 02 | История на машинното обучение | [Introduction](1-Introduction/README.md) | Научете историята, която стои зад тази област | [Lesson](1-Introduction/2-history-of-ML/README.md) | Джен и Ейми | +| 03 | Справедливост и машинно обучение | [Introduction](1-Introduction/README.md) | Какви са важните философски въпроси около справедливостта, които студентите трябва да обмислят при изграждането и прилагането на ML модели? | [Lesson](1-Introduction/3-fairness/README.md) | Томоми | +| 04 | Техники за машинно обучение | [Introduction](1-Introduction/README.md) | Какви техники използват изследователите на ML за изграждане на ML модели? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Крис и Джен | +| 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) | Джен • Ерик Уанджау | +| 06 | Цени на тиквите в Северна Америка 🎃 | [Regression](2-Regression/README.md) | Визуализирайте и почистете данни в подготовка за ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Джен • Ерик Уанджау | +| 07 | Цени на тиквите в Северна Америка 🎃 | [Regression](2-Regression/README.md) | Изградете линейни и полиномиални регресионни модели | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Джен и Дмитрий • Ерик Уанджау | +| 08 | Цени на тиквите в Северна Америка 🎃 | [Regression](2-Regression/README.md) | Изградете логистичен регресионен модел | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Джен • Ерик Уанджау | +| 09 | Уеб приложение 🔌 | [Web App](3-Web-App/README.md) | Изградете уеб приложение за използване на вашия обучен модел | [Python](3-Web-App/1-Web-App/README.md) | Джен | +| 10 | Въведение в класификация | [Classification](4-Classification/README.md) | Почистете, подгответе и визуализирайте данните си; въведение в класификация | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Джен и Каси • Ерик Уанджау | +| 11 | Вкусни азиатски и индийски кухни 🍜 | [Classification](4-Classification/README.md) | Въведение в класификаторите | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Джен и Каси • Ерик Уанджау | +| 12 | Вкусни азиатски и индийски кухни 🍜 | [Classification](4-Classification/README.md) | Още класификатори | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Джен и Каси • Ерик Уанджау | +| 13 | Вкусни азиатски и индийски кухни 🍜 | [Classification](4-Classification/README.md) | Изградете препоръчително уеб приложение, използвайки вашия модел | [Python](4-Classification/4-Applied/README.md) | Джен | +| 14 | Въведение в клъстериране | [Clustering](5-Clustering/README.md) | Почистете, подгответе и визуализирайте данните си; въведение в клъстериране | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Джен • Ерик Уанджау | +| 15 | Изследване на музикалните вкусове в Нигерия 🎧 | [Clustering](5-Clustering/README.md) | Изследвайте метода K-средни за клъстериране | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Джен • Ерик Уанджау | +| 16 | Въведение в обработката на естествен език ☕️ | [Natural language processing](6-NLP/README.md) | Научете основите на NLP чрез изграждане на прост бот | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Стивън | +| 17 | Чести задачи в NLP ☕️ | [Natural language processing](6-NLP/README.md) | Задълбочете знанията си за NLP, като разберете често срещаните задачи при работа с езикови структури | [Python](6-NLP/2-Tasks/README.md) | Стивън | +| 18 | Превод и анализ на настроения ♥️ | [Natural language processing](6-NLP/README.md) | Превод и анализ на настроения с Джейн Остин | [Python](6-NLP/3-Translation-Sentiment/README.md) | Стивън | +| 19 | Романтични хотели в Европа ♥️ | [Natural language processing](6-NLP/README.md) | Анализ на настроения с ревюта на хотели 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Стивън | +| 20 | Романтични хотели в Европа ♥️ | [Natural language processing](6-NLP/README.md) | Анализ на настроения с ревюта на хотели 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Стивън | +| 21 | Въведение в прогнозиране на времеви редове | [Time series](7-TimeSeries/README.md) | Въведение в прогнозиране на времеви редове | [Python](7-TimeSeries/1-Introduction/README.md) | Франческа | +| 22 | ⚡️ Световна консумация на електроенергия ⚡️ - прогнозиране на времеви редове с ARIMA | [Time series](7-TimeSeries/README.md) | Прогнозиране на времеви редове с ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Франческа | +| 23 | ⚡️ Световна консумация на електроенергия ⚡️ - прогнозиране на времеви редове с SVR | [Time series](7-TimeSeries/README.md) | Прогнозиране на времеви редове с регресор с опорни вектори | [Python](7-TimeSeries/3-SVR/README.md) | Анирбан | +| 24 | Въведение в обучение с подсилване | [Reinforcement learning](8-Reinforcement/README.md) | Въведение в обучение с подсилване с Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Дмитрий | +| 25 | Помогнете на Питър да избегне вълка! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Обучение с подсилване в Gym | [Python](8-Reinforcement/2-Gym/README.md) | Дмитрий | +| Postscript | Реални сценарии и приложения на ML | [ML in the Wild](9-Real-World/README.md) | Интересни и разкриващи реални приложения на класическо ML | [Lesson](9-Real-World/1-Applications/README.md) | Екип | +| Postscript | Отстраняване на грешки в ML с помощта на RAI табло | [ML in the Wild](9-Real-World/README.md) | Отстраняване на грешки в машинното обучение с компоненти на таблото Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Рут Якобу | + +> [намерете всички допълнителни ресурси за този курс в нашата колекция Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -| Номер на урок | Тема | Групиране на уроци | Цели на обучението | Свързан урок | Автор | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Въведение в машинното обучение | [Въведение](1-Introduction/README.md) | Научете основните концепции зад машинното обучение | [Урок](1-Introduction/1-intro-to-ML/README.md) | Мухамад | -| 02 | История на машинното обучение | [Въведение](1-Introduction/README.md) | Научете историята, която стои зад тази област | [Урок](1-Introduction/2-history-of-ML/README.md) | Джен и Ейми | -| 03 | Справедливост и машинно обучение | [Въведение](1-Introduction/README.md) | Какви са важните философски въпроси относно справедливостта, които студентите трябва да обмислят при създаване и прилагане на ML модели? | [Урок](1-Introduction/3-fairness/README.md) | Томоми | -| 04 | Техники за машинно обучение | [Въведение](1-Introduction/README.md) | Какви техники използват изследователите на ML за създаване на ML модели? | [Урок](1-Introduction/4-techniques-of-ML/README.md) | Крис и Джен | -| 05 | Въведение в регресия | [Регресия](2-Regression/README.md) | Започнете с Python и Scikit-learn за модели на регресия | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Джен • Ерик Ванджа | -| 06 | Цени на тикви в Северна Америка 🎃 | [Регресия](2-Regression/README.md) | Визуализирайте и почистете данни в подготовка за ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Джен • Ерик Ванджа | -| 07 | Цени на тикви в Северна Америка 🎃 | [Регресия](2-Regression/README.md) | Създайте линейни и полиномиални модели на регресия | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Джен и Дмитрий • Ерик Ванджа | -| 08 | Цени на тикви в Северна Америка 🎃 | [Регресия](2-Regression/README.md) | Създайте модел на логистична регресия | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Джен • Ерик Ванджа | -| 09 | Уеб приложение 🔌 | [Уеб приложение](3-Web-App/README.md) | Създайте уеб приложение за използване на вашия обучен модел | [Python](3-Web-App/1-Web-App/README.md) | Джен | -| 10 | Въведение в класификация | [Класификация](4-Classification/README.md) | Почистете, подгответе и визуализирайте вашите данни; въведение в класификация | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Джен и Каси • Ерик Ванджа | -| 11 | Вкусни азиатски и индийски ястия 🍜 | [Класификация](4-Classification/README.md) | Въведение в класификатори | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Джен и Каси • Ерик Ванджа | -| 12 | Вкусни азиатски и индийски ястия 🍜 | [Класификация](4-Classification/README.md) | Още класификатори | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Джен и Каси • Ерик Ванджа | -| 13 | Вкусни азиатски и индийски ястия 🍜 | [Класификация](4-Classification/README.md) | Създайте уеб приложение за препоръки, използвайки вашия модел | [Python](4-Classification/4-Applied/README.md) | Джен | -| 14 | Въведение в клъстеризация | [Клъстеризация](5-Clustering/README.md) | Почистете, подгответе и визуализирайте вашите данни; въведение в клъстеризация | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Джен • Ерик Ванджа | -| 15 | Изследване на музикалните вкусове в Нигерия 🎧 | [Клъстеризация](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) | Джен • Ерик Ванджа | -| 16 | Въведение в обработката на естествен език ☕️ | [Обработка на естествен език](6-NLP/README.md) | Научете основите на NLP, като създадете прост бот | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Стивън | -| 17 | Общи задачи в NLP ☕️ | [Обработка на естествен език](6-NLP/README.md) | Задълбочете знанията си за NLP, като разберете общите задачи, необходими при работа със структури на езика | [Python](6-NLP/2-Tasks/README.md) | Стивън | -| 18 | Превод и анализ на настроения ♥️ | [Обработка на естествен език](6-NLP/README.md) | Превод и анализ на настроения с Джейн Остин | [Python](6-NLP/3-Translation-Sentiment/README.md) | Стивън | -| 19 | Романтични хотели в Европа ♥️ | [Обработка на естествен език](6-NLP/README.md) | Анализ на настроения с хотелски ревюта 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Стивън | -| 20 | Романтични хотели в Европа ♥️ | [Обработка на естествен език](6-NLP/README.md) | Анализ на настроения с хотелски ревюта 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Стивън | -| 21 | Въведение в прогнозиране на времеви серии | [Времеви серии](7-TimeSeries/README.md) | Въведение в прогнозиране на времеви серии | [Python](7-TimeSeries/1-Introduction/README.md) | Франческа | -| 22 | ⚡️ Световно потребление на енергия ⚡️ - прогнозиране на времеви серии с ARIMA | [Времеви серии](7-TimeSeries/README.md) | Прогнозиране на времеви серии с ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Франческа | -| 23 | ⚡️ Световно потребление на енергия ⚡️ - прогнозиране на времеви серии със SVR | [Времеви серии](7-TimeSeries/README.md) | Прогнозиране на времеви серии със Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Анирбан | -| 24 | Въведение в обучението чрез подсилване | [Обучение чрез подсилване](8-Reinforcement/README.md) | Въведение в обучението чрез подсилване с Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Дмитрий | -| 25 | Помогнете на Питър да избегне вълка! 🐺 | [Обучение чрез подсилване](8-Reinforcement/README.md) | Обучение чрез подсилване в Gym | [Python](8-Reinforcement/2-Gym/README.md) | Дмитрий | -| Постскриптум | Реални сценарии и приложения на ML | [ML в реалния свят](9-Real-World/README.md) | Интересни и разкриващи приложения на класическо ML | [Урок](9-Real-World/1-Applications/README.md) | Екип | -| Постскриптум | Дебъгване на модели в ML с помощта на RAI табло | [ML в реалния свят](9-Real-World/README.md) | Дебъгване на модели в машинното обучение с компоненти на таблото за отговорен AI | [Урок](9-Real-World/2-Debugging-ML-Models/README.md) | Рут Якубу | +## Офлайн достъп -> [намерете всички допълнителни ресурси за този курс в нашата Microsoft Learn колекция](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +Можете да използвате тази документация офлайн, като използвате [Docsify](https://docsify.js.org/#/). Форкнете това хранилище, [инсталирайте Docsify](https://docsify.js.org/#/quickstart) на вашия локален компютър и след това в основната папка на това хранилище напишете `docsify serve`. Уебсайтът ще бъде достъпен на порт 3000 на вашия localhost: `localhost:3000`. -## Офлайн достъп +## PDF файлове -Можете да стартирате тази документация офлайн, като използвате [Docsify](https://docsify.js.org/#/). Форкнете това хранилище, [инсталирайте Docsify](https://docsify.js.org/#/quickstart) на вашата локална машина и след това в основната папка на това хранилище въведете `docsify serve`. Уебсайтът ще бъде достъпен на порт 3000 на вашия localhost: `localhost:3000`. +Намерете pdf на учебната програма с връзки [тук](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## PDFs -Намерете PDF на учебната програма с връзки [тук](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +## 🎒 Други курсове +Нашият екип произвежда и други курсове! Вижте: -## 🎒 Други курсове + +### LangChain +[![LangChain4j за начинаещи](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js за начинаещи](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) -Нашият екип създава и други курсове! Вижте: +--- ### Azure / Edge / MCP / Агенти -[![AZD за начинаещи](https://img.shields.io/badge/AZD%20за%20начинаещи-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI за начинаещи](https://img.shields.io/badge/Edge%20AI%20за%20начинаещи-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP за начинаещи](https://img.shields.io/badge/MCP%20за%20начинаещи-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI агенти за начинаещи](https://img.shields.io/badge/AI%20агенти%20за%20начинаещи-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AZD за начинаещи](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI за начинаещи](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP за начинаещи](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI агенти за начинаещи](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- -### Серия за Генеративен AI -[![Генеративен AI за начинаещи](https://img.shields.io/badge/Генеративен%20AI%20за%20начинаещи-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Генеративен AI (.NET)](https://img.shields.io/badge/Генеративен%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Генеративен AI (Java)](https://img.shields.io/badge/Генеративен%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Генеративен AI (JavaScript)](https://img.shields.io/badge/Генеративен%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Серия за генеративен AI +[![Генеративен AI за начинаещи](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Генеративен AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Генеративен AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Генеративен AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- ### Основно обучение -[![ML за начинаещи](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Наука за данни за начинаещи](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI за начинаещи](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Киберсигурност за начинаещи](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Уеб разработка за начинаещи](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT за начинаещи](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR разработка за начинаещи](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Машинно обучение за начинаещи](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Данни науки за начинаещи](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI за начинаещи](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Киберсигурност за начинаещи](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Уеб разработка за начинаещи](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT за начинаещи](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR разработка за начинаещи](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Серия Copilot +[![Copilot за AI съвместно програмиране](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot за C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot приключение](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Серия Copilot -[![Copilot за AI програмиране в екип](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot за C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot приключение](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Получаване на помощ +## Получаване на помощ -Ако се затруднявате или имате въпроси относно създаването на AI приложения, присъединете се към други учащи и опитни разработчици в дискусии за MCP. Това е подкрепяща общност, където въпросите са добре дошли и знанията се споделят свободно. +Ако се затруднявате или имате въпроси относно създаването на AI приложения. Присъединете се към други учащи и опитни разработчици в дискусии за MCP. Това е подкрепяща общност, където въпросите са добре дошли и знанието се споделя свободно. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Ако имате обратна връзка за продукт или срещнете грешки по време на разработката, посетете: +Ако имате обратна връзка за продукта или грешки по време на разработка, посетете: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Отказ от отговорност**: -Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да било недоразумения или погрешни интерпретации, произтичащи от използването на този превод. +Този документ е преведен с помощта на AI преводаческа услуга [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или неправилни тълкувания, произтичащи от използването на този превод. \ No newline at end of file diff --git a/translations/bn/README.md b/translations/bn/README.md index 075c9cf7d..d3d3e1f9f 100644 --- a/translations/bn/README.md +++ b/translations/bn/README.md @@ -1,8 +1,8 @@ -[আরবি](../ar/README.md) | [বাংলা](./README.md) | [বুলগেরিয়ান](../bg/README.md) | [বর্মি (মায়ানমার)](../my/README.md) | [চীনা (সরলীকৃত)](../zh/README.md) | [চীনা (প্রথাগত, হংকং)](../hk/README.md) | [চীনা (প্রথাগত, ম্যাকাও)](../mo/README.md) | [চীনা (প্রথাগত, তাইওয়ান)](../tw/README.md) | [ক্রোয়েশিয়ান](../hr/README.md) | [চেক](../cs/README.md) | [ড্যানিশ](../da/README.md) | [ডাচ](../nl/README.md) | [এস্তোনিয়ান](../et/README.md) | [ফিনিশ](../fi/README.md) | [ফরাসি](../fr/README.md) | [জার্মান](../de/README.md) | [গ্রিক](../el/README.md) | [হিব্রু](../he/README.md) | [হিন্দি](../hi/README.md) | [হাঙ্গেরিয়ান](../hu/README.md) | [ইন্দোনেশিয়ান](../id/README.md) | [ইতালিয়ান](../it/README.md) | [জাপানি](../ja/README.md) | [কোরিয়ান](../ko/README.md) | [লিথুয়ানিয়ান](../lt/README.md) | [মালয়](../ms/README.md) | [মারাঠি](../mr/README.md) | [নেপালি](../ne/README.md) | [নাইজেরিয়ান পিজিন](../pcm/README.md) | [নরওয়েজিয়ান](../no/README.md) | [পার্সিয়ান (ফার্সি)](../fa/README.md) | [পোলিশ](../pl/README.md) | [পর্তুগিজ (ব্রাজিল)](../br/README.md) | [পর্তুগিজ (পর্তুগাল)](../pt/README.md) | [পাঞ্জাবি (গুরুমুখী)](../pa/README.md) | [রোমানিয়ান](../ro/README.md) | [রাশিয়ান](../ru/README.md) | [সার্বিয়ান (সিরিলিক)](../sr/README.md) | [স্লোভাক](../sk/README.md) | [স্লোভেনিয়ান](../sl/README.md) | [স্প্যানিশ](../es/README.md) | [সোয়াহিলি](../sw/README.md) | [সুইডিশ](../sv/README.md) | [টাগালগ (ফিলিপিনো)](../tl/README.md) | [তামিল](../ta/README.md) | [থাই](../th/README.md) | [তুর্কি](../tr/README.md) | [ইউক্রেনিয়ান](../uk/README.md) | [উর্দু](../ur/README.md) | [ভিয়েতনামিজ](../vi/README.md) +[Arabic](../ar/README.md) | [Bengali](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) #### আমাদের কমিউনিটিতে যোগ দিন [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -আমাদের Discord-এ AI শিখুন সিরিজ চলছে, আরও জানুন এবং আমাদের সাথে যোগ দিন [Learn with AI Series](https://aka.ms/learnwithai/discord) ১৮ - ৩০ সেপ্টেম্বর, ২০২৫। আপনি GitHub Copilot ব্যবহার করে ডেটা সায়েন্সের টিপস এবং কৌশল শিখতে পারবেন। +আমাদের একটি Discord এআই সহ শেখার সিরিজ চলছে, আরও জানুন এবং আমাদের সাথে যোগ দিন [Learn with AI Series](https://aka.ms/learnwithai/discord) ১৮ - ৩০ সেপ্টেম্বর, ২০২৫ তারিখে। আপনি GitHub Copilot ব্যবহার করে ডেটা সায়েন্সের টিপস এবং ট্রিকস পাবেন। ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.bn.png) -# শিক্ষার্থীদের জন্য মেশিন লার্নিং - একটি পাঠ্যক্রম +# নবীনদের জন্য মেশিন লার্নিং - একটি পাঠ্যক্রম -> 🌍 বিশ্ব সংস্কৃতির মাধ্যমে মেশিন লার্নিং অন্বেষণ করতে আমাদের সাথে বিশ্ব ভ্রমণ করুন 🌍 +> 🌍 বিশ্ব সংস্কৃতির মাধ্যমে মেশিন লার্নিং অন্বেষণ করতে বিশ্ব ভ্রমণ করুন 🌍 -Microsoft-এর Cloud Advocates আপনাদের জন্য ১২ সপ্তাহের, ২৬টি পাঠের একটি পাঠ্যক্রম নিয়ে এসেছে যা সম্পূর্ণ **মেশিন লার্নিং** নিয়ে। এই পাঠ্যক্রমে, আপনি যা কখনও কখনও **ক্লাসিক মেশিন লার্নিং** নামে পরিচিত তা শিখবেন, প্রধানত Scikit-learn লাইব্রেরি ব্যবহার করে এবং ডিপ লার্নিং এড়িয়ে যাবেন, যা আমাদের [AI for Beginners' পাঠ্যক্রমে](https://aka.ms/ai4beginners) অন্তর্ভুক্ত। এই পাঠ্যক্রমের সাথে আমাদের ['Data Science for Beginners' পাঠ্যক্রম](https://aka.ms/ds4beginners) জুড়ুন! +মাইক্রোসফটের ক্লাউড অ্যাডভোকেটরা একটি ১২ সপ্তাহের, ২৬-টিউটোরিয়াল পাঠ্যক্রম উপস্থাপন করতে পেরে আনন্দিত যা সম্পূর্ণরূপে **মেশিন লার্নিং** সম্পর্কে। এই পাঠ্যক্রমে, আপনি যা কখনও কখনও বলা হয় **ক্লাসিক মেশিন লার্নিং** সম্পর্কে শিখবেন, প্রধানত Scikit-learn লাইব্রেরি ব্যবহার করে এবং ডিপ লার্নিং এড়িয়ে চলবেন, যা আমাদের [AI for Beginners' curriculum](https://aka.ms/ai4beginners) এ অন্তর্ভুক্ত। এই পাঠ্যক্রমটি আমাদের ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) এর সাথে মিলিয়ে নিতে পারেন। -আমাদের সাথে বিশ্ব ভ্রমণ করুন কারণ আমরা এই ক্লাসিক কৌশলগুলি বিশ্বের বিভিন্ন অঞ্চলের ডেটাতে প্রয়োগ করি। প্রতিটি পাঠে প্রাক-পাঠ এবং পোস্ট-পাঠ কুইজ, পাঠ সম্পূর্ণ করার জন্য লিখিত নির্দেশাবলী, একটি সমাধান, একটি অ্যাসাইনমেন্ট এবং আরও অনেক কিছু অন্তর্ভুক্ত রয়েছে। আমাদের প্রকল্প-ভিত্তিক শিক্ষাদান আপনাকে শেখার সময় তৈরি করতে দেয়, নতুন দক্ষতা অর্জনের একটি প্রমাণিত উপায়। +বিশ্বের বিভিন্ন অঞ্চলের ডেটার উপর এই ক্লাসিক কৌশলগুলি প্রয়োগ করতে আমাদের সাথে বিশ্ব ভ্রমণ করুন। প্রতিটি পাঠে পূর্ব এবং পরবর্তী কুইজ, পাঠ সম্পন্ন করার জন্য লিখিত নির্দেশাবলী, একটি সমাধান, একটি অ্যাসাইনমেন্ট এবং আরও অনেক কিছু অন্তর্ভুক্ত রয়েছে। আমাদের প্রকল্প-ভিত্তিক শিক্ষাদান পদ্ধতি আপনাকে শেখার সময় নির্মাণ করতে দেয়, যা নতুন দক্ষতা 'টিকিয়ে রাখার' একটি প্রমাণিত উপায়। -**✍️ আমাদের লেখকদের প্রতি আন্তরিক ধন্যবাদ** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu এবং Amy Boyd +**✍️ আমাদের লেখকদের আন্তরিক ধন্যবাদ** জেন লুপার, স্টিফেন হাওয়েল, ফ্রান্সেসকা লাজেরি, টোমোমি ইমুরা, ক্যাসি ব্রেভিউ, দিমিত্রি সশনিকভ, ক্রিস নরিং, অনির্বাণ মুখার্জী, অর্নেলা আলটুনিয়ান, রুথ ইয়াকুবু এবং অ্যামি বয়ড -**🎨 আমাদের চিত্রশিল্পীদের প্রতি ধন্যবাদ** Tomomi Imura, Dasani Madipalli, এবং Jen Looper +**🎨 আমাদের চিত্রশিল্পীদের প্রতি ধন্যবাদ** টোমোমি ইমুরা, দাসানি মাদিপল্লি, এবং জেন লুপার -**🙏 Microsoft Student Ambassador লেখক, পর্যালোচক এবং বিষয়বস্তু অবদানকারীদের প্রতি বিশেষ ধন্যবাদ 🙏**, বিশেষত Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, এবং Snigdha Agarwal +**🙏 বিশেষ ধন্যবাদ 🙏 আমাদের মাইক্রোসফট স্টুডেন্ট অ্যাম্বাসেডর লেখক, পর্যালোচক এবং বিষয়বস্তু অবদানকারীদের**, বিশেষ করে ঋষিত দাগলি, মুহাম্মদ সাকিব খান ইনান, রোহান রাজ, আলেকজান্দ্রু পেট্রেস্কু, অভিষেক জৈসওয়াল, নওরিন তাবাসসুম, ইওয়ান সামুইলা, এবং স্নিগ্ধা আগরওয়াল -**🤩 Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, এবং Vidushi Gupta-কে আমাদের R পাঠের জন্য অতিরিক্ত কৃতজ্ঞতা!** +**🤩 অতিরিক্ত কৃতজ্ঞতা মাইক্রোসফট স্টুডেন্ট অ্যাম্বাসেডরদের প্রতি, এরিক ওয়ানজাউ, জসলিন সোন্ধি, এবং বিদুশী গুপ্তার জন্য আমাদের R পাঠের!** -# শুরু করার জন্য +# শুরু করা এই ধাপগুলি অনুসরণ করুন: 1. **রিপোজিটরি ফর্ক করুন**: এই পৃষ্ঠার উপরের ডানদিকে "Fork" বোতামে ক্লিক করুন। @@ -57,27 +57,28 @@ Microsoft-এর Cloud Advocates আপনাদের জন্য ১২ স > [এই কোর্সের জন্য সমস্ত অতিরিক্ত সম্পদ আমাদের Microsoft Learn সংগ্রহে খুঁজুন](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **সাহায্য দরকার?** আমাদের [Troubleshooting Guide](TROUBLESHOOTING.md) দেখুন ইনস্টলেশন, সেটআপ এবং পাঠ চালানোর সাধারণ সমস্যার সমাধানের জন্য। +> 🔧 **সাহায্য দরকার?** ইনস্টলেশন, সেটআপ এবং পাঠ চালানোর সাধারণ সমস্যার সমাধানের জন্য আমাদের [Troubleshooting Guide](TROUBLESHOOTING.md) দেখুন। -**[শিক্ষার্থীরা](https://aka.ms/student-page)**, এই পাঠ্যক্রমটি ব্যবহার করতে, সম্পূর্ণ রিপোটি আপনার নিজস্ব GitHub অ্যাকাউন্টে ফর্ক করুন এবং নিজে বা একটি গ্রুপের সাথে ব্যায়ামগুলি সম্পূর্ণ করুন: -- প্রাক-লেকচার কুইজ দিয়ে শুরু করুন। -- লেকচারটি পড়ুন এবং কার্যক্রমগুলি সম্পূর্ণ করুন, প্রতিটি জ্ঞান যাচাইয়ে থামুন এবং প্রতিফলিত করুন। -- পাঠগুলি বুঝে প্রকল্পগুলি তৈরি করার চেষ্টা করুন, সমাধান কোড চালানোর পরিবর্তে; তবে সেই কোডটি প্রতিটি প্রকল্প-ভিত্তিক পাঠের `/solution` ফোল্ডারে উপলব্ধ। +**[শিক্ষার্থীরা](https://aka.ms/student-page)**, এই পাঠ্যক্রম ব্যবহার করতে, পুরো রিপোটি আপনার নিজস্ব GitHub অ্যাকাউন্টে ফর্ক করুন এবং এককভাবে বা একটি গ্রুপের সাথে অনুশীলনগুলি সম্পন্ন করুন: + +- একটি প্রাক-লেকচার কুইজ দিয়ে শুরু করুন। +- লেকচার পড়ুন এবং কার্যক্রমগুলি সম্পন্ন করুন, প্রতিটি জ্ঞান যাচাইয়ে থামুন এবং চিন্তা করুন। +- সমাধান কোড চালানোর পরিবর্তে পাঠগুলি বুঝে প্রকল্পগুলি তৈরি করার চেষ্টা করুন; তবে সেই কোড প্রতিটি প্রকল্প-ভিত্তিক পাঠের `/solution` ফোল্ডারে উপলব্ধ। - পোস্ট-লেকচার কুইজ নিন। -- চ্যালেঞ্জ সম্পূর্ণ করুন। -- অ্যাসাইনমেন্ট সম্পূর্ণ করুন। -- একটি পাঠ গোষ্ঠী সম্পূর্ণ করার পরে, [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) পরিদর্শন করুন এবং "শিখুন" উপযুক্ত PAT রুব্রিক পূরণ করে। একটি 'PAT' হল একটি Progress Assessment Tool যা একটি রুব্রিক আপনি পূরণ করেন আপনার শেখার আরও উন্নতির জন্য। আপনি অন্যান্য PAT-এ প্রতিক্রিয়া জানাতে পারেন যাতে আমরা একসাথে শিখতে পারি। +- চ্যালেঞ্জ সম্পন্ন করুন। +- অ্যাসাইনমেন্ট সম্পন্ন করুন। +- একটি পাঠ গ্রুপ সম্পন্ন করার পরে, [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) এ যান এবং উপযুক্ত PAT রুব্রিক পূরণ করে "জোরে শিখুন"। 'PAT' হল একটি প্রগ্রেস অ্যাসেসমেন্ট টুল যা আপনার শেখার উন্নতির জন্য পূরণ করা হয়। আপনি অন্যান্য PAT-এ প্রতিক্রিয়া জানাতে পারেন যাতে আমরা একসাথে শিখতে পারি। -> আরও অধ্যয়নের জন্য, আমরা এই [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) মডিউল এবং শেখার পথগুলি অনুসরণ করার পরামর্শ দিই। +> আরও অধ্যয়নের জন্য, আমরা এই [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) মডিউল এবং শেখার পথ অনুসরণ করার পরামর্শ দিই। -**শিক্ষকগণ**, আমরা এই পাঠ্যক্রমটি কীভাবে ব্যবহার করবেন তার উপর [কিছু পরামর্শ](for-teachers.md) অন্তর্ভুক্ত করেছি। +**শিক্ষকগণ**, আমরা এই পাঠ্যক্রম ব্যবহারের জন্য কিছু [পরামর্শ](for-teachers.md) অন্তর্ভুক্ত করেছি। --- ## ভিডিও ওয়াকথ্রু -কিছু পাঠ সংক্ষিপ্ত ভিডিও আকারে উপলব্ধ। আপনি এই ভিডিওগুলি পাঠের মধ্যে বা [Microsoft Developer YouTube চ্যানেলে ML for Beginners প্লেলিস্টে](https://aka.ms/ml-beginners-videos) খুঁজে পেতে পারেন, নিচের ছবিতে ক্লিক করে। +কিছু পাঠ সংক্ষিপ্ত ভিডিও আকারে উপলব্ধ। আপনি এগুলি পাঠের মধ্যে ইন-লাইন দেখতে পারেন, অথবা [Microsoft Developer YouTube চ্যানেলের ML for Beginners প্লেলিস্টে](https://aka.ms/ml-beginners-videos) নিচের ছবিতে ক্লিক করে দেখতে পারেন। [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.bn.png)](https://aka.ms/ml-beginners-videos) @@ -87,81 +88,89 @@ Microsoft-এর Cloud Advocates আপনাদের জন্য ১২ স [![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif তৈরি করেছেন** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**গিফ তৈরি করেছেন** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 উপরের ছবিতে ক্লিক করুন প্রকল্প এবং এটি তৈরি করা ব্যক্তিদের সম্পর্কে একটি ভিডিও দেখতে! +> 🎥 প্রকল্প এবং এটি তৈরি করা লোকদের সম্পর্কে একটি ভিডিও দেখতে উপরের ছবিতে ক্লিক করুন! --- ## শিক্ষাদান পদ্ধতি -আমরা এই পাঠ্যক্রমটি তৈরি করার সময় দুটি শিক্ষাদান নীতি বেছে নিয়েছি: এটি হাতে-কলমে **প্রকল্প-ভিত্তিক** এবং এটি **প্রায়শই কুইজ** অন্তর্ভুক্ত করে। এছাড়াও, এই পাঠ্যক্রমে একটি সাধারণ **থিম** রয়েছে যা এটিকে সংহতি দেয়। +আমরা এই পাঠ্যক্রম তৈরি করার সময় দুটি শিক্ষাদান নীতি বেছে নিয়েছি: এটি হ্যান্ডস-অন **প্রকল্প-ভিত্তিক** এবং এতে **ঘন ঘন কুইজ** অন্তর্ভুক্ত করা। এছাড়াও, এই পাঠ্যক্রমে একটি সাধারণ **থিম** রয়েছে যা এটিকে সংহত করে। -প্রকল্পের সাথে সামঞ্জস্য রেখে বিষয়বস্তু নিশ্চিত করার মাধ্যমে, প্রক্রিয়াটি শিক্ষার্থীদের জন্য আরও আকর্ষণীয় হয়ে ওঠে এবং ধারণাগুলির ধারণ আরও বাড়ানো হয়। এছাড়াও, একটি ক্লাসের আগে একটি কম-ঝুঁকির কুইজ শিক্ষার্থীর একটি বিষয় শেখার উদ্দেশ্য সেট করে, যখন ক্লাসের পরে একটি দ্বিতীয় কুইজ আরও ধারণ নিশ্চিত করে। এই পাঠ্যক্রমটি নমনীয় এবং মজাদার হতে ডিজাইন করা হয়েছে এবং এটি সম্পূর্ণ বা আংশিকভাবে নেওয়া যেতে পারে। প্রকল্পগুলি ছোট থেকে শুরু হয় এবং ১২ সপ্তাহের চক্রের শেষে ক্রমশ জটিল হয়ে ওঠে। এই পাঠ্যক্রমে ML-এর বাস্তব জীবনের প্রয়োগের উপর একটি পোস্টস্ক্রিপ্টও অন্তর্ভুক্ত রয়েছে, যা অতিরিক্ত ক্রেডিট হিসাবে বা আলোচনার ভিত্তি হিসাবে ব্যবহার করা যেতে পারে। +বিষয়বস্তু প্রকল্পের সাথে সামঞ্জস্যপূর্ণ করে শিক্ষার্থীদের জন্য প্রক্রিয়াটি আরও আকর্ষণীয় করা হয় এবং ধারণাগুলির ধারণ ক্ষমতা বৃদ্ধি পায়। এছাড়াও, ক্লাসের আগে একটি কম-ঝুঁকিপূর্ণ কুইজ শিক্ষার্থীর শেখার উদ্দেশ্য নির্ধারণ করে, এবং ক্লাসের পরে দ্বিতীয় কুইজ আরও ধারণ ক্ষমতা নিশ্চিত করে। এই পাঠ্যক্রমটি নমনীয় এবং মজাদার করার জন্য ডিজাইন করা হয়েছে এবং সম্পূর্ণ বা আংশিকভাবে নেওয়া যেতে পারে। প্রকল্পগুলি ছোট থেকে শুরু করে ১২ সপ্তাহের শেষে ক্রমবর্ধমান জটিল হয়ে ওঠে। এই পাঠ্যক্রমে একটি পোস্টস্ক্রিপ্টও রয়েছে যা বাস্তব বিশ্বের ML প্রয়োগ সম্পর্কে, যা অতিরিক্ত ক্রেডিট বা আলোচনা ভিত্তি হিসেবে ব্যবহার করা যেতে পারে। -> আমাদের [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), এবং [Troubleshooting](TROUBLESHOOTING.md) নির্দেশিকা খুঁজুন। আমরা আপনার গঠনমূলক প্রতিক্রিয়া স্বাগত জানাই! +> আমাদের [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** ফাইলকে উপস্থাপন করে যা `Markdown document`-এ `code chunks` (R বা অন্যান্য ভাষার) এবং একটি `YAML header` (যা আউটপুটগুলি যেমন PDF ফরম্যাট করার নির্দেশ দেয়) এম্বেডিং হিসাবে সংজ্ঞায়িত করা যেতে পারে। এইভাবে, এটি ডেটা সায়েন্সের জন্য একটি উদাহরণমূলক লেখার কাঠামো হিসাবে কাজ করে কারণ এটি আপনাকে আপনার কোড, এর আউটপুট এবং আপনার চিন্তাগুলি Markdown-এ লিখে একত্রিত করতে দেয়। তদ্ব্যতীত, R Markdown ডকুমেন্টগুলি PDF, HTML, বা Word-এর মতো আউটপুট ফরম্যাটে রেন্ডার করা যেতে পারে। +> **ভাষা সম্পর্কে একটি নোট**: এই পাঠগুলি প্রধানত পাইথনে লেখা, তবে অনেকগুলি R-এও উপলব্ধ। একটি R পাঠ সম্পন্ন করতে, `/solution` ফোল্ডারে যান এবং R পাঠগুলি খুঁজুন। এগুলিতে .rmd এক্সটেনশন থাকে যা একটি **R Markdown** ফাইল নির্দেশ করে, যা সহজেই সংজ্ঞায়িত করা যায় `কোড চাঙ্ক` (R বা অন্যান্য ভাষার) এবং একটি `YAML হেডার` (যা আউটপুট যেমন PDF ফরম্যাট করার নির্দেশ দেয়) সহ একটি `Markdown ডকুমেন্ট` হিসেবে। তাই এটি ডেটা সায়েন্সের জন্য একটি আদর্শ লেখার কাঠামো হিসেবে কাজ করে কারণ এটি আপনাকে আপনার কোড, তার আউটপুট এবং আপনার চিন্তাভাবনাগুলো Markdown এ লিখে সংযুক্ত করার সুযোগ দেয়। এছাড়াও, R Markdown ডকুমেন্টগুলি PDF, HTML, বা Word এর মতো আউটপুট ফরম্যাটে রেন্ডার করা যায়। -> **কুইজ সম্পর্কে একটি নোট**: সমস্ত কুইজ [Quiz App ফোল্ডারে](../../quiz-app) অন্তর্ভুক্ত, মোট ৫২টি কুইজ, প্রতিটিতে তিনটি প্রশ্ন। এগুলি পাঠের মধ্যে থেকে লিঙ্ক করা হয়েছে তবে কুইজ অ্যাপটি স্থানীয়ভাবে চালানো যেতে পারে; `quiz-app` ফোল্ডারে নির্দেশাবলী অনুসরণ করে এটি স্থানীয়ভাবে হোস্ট করুন বা Azure-এ ডিপ্লয় করুন। +> **কুইজ সম্পর্কে একটি নোট**: সমস্ত কুইজ [Quiz App ফোল্ডারে](../../quiz-app) রয়েছে, মোট ৫২টি কুইজ, প্রতিটিতে তিনটি প্রশ্ন। এগুলি পাঠের মধ্যে লিঙ্ক করা হয়েছে তবে কুইজ অ্যাপটি স্থানীয়ভাবে চালানো যায়; স্থানীয় হোস্টিং বা Azure এ ডিপ্লয় করার জন্য `quiz-app` ফোল্ডারের নির্দেশাবলী অনুসরণ করুন। -| পাঠ সংখ্যা | বিষয় | পাঠের গোষ্ঠী | শেখার উদ্দেশ্য | লিঙ্ককৃত পাঠ | লেখক | +| পাঠ নম্বর | বিষয় | পাঠ গ্রুপিং | শেখার উদ্দেশ্য | লিঙ্ক করা পাঠ | লেখক | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | মেশিন লার্নিং-এর পরিচিতি | [Introduction](1-Introduction/README.md) | মেশিন লার্নিং-এর মৌলিক ধারণাগুলি শিখুন | [Lesson](1-Introduction/1-intro-to-ML/README.md) | মুহাম্মদ | -| 02 | মেশিন লার্নিং-এর ইতিহাস | [Introduction](1-Introduction/README.md) | এই ক্ষেত্রের পেছনের ইতিহাস শিখুন | [Lesson](1-Introduction/2-history-of-ML/README.md) | জেন এবং অ্যামি | -| 03 | ন্যায্যতা এবং মেশিন লার্নিং | [Introduction](1-Introduction/README.md) | ন্যায্যতার গুরুত্বপূর্ণ দার্শনিক বিষয়গুলি কী যা শিক্ষার্থীদের মডেল তৈরি এবং প্রয়োগ করার সময় বিবেচনা করা উচিত? | [Lesson](1-Introduction/3-fairness/README.md) | তোমোমি | -| 04 | মেশিন লার্নিং-এর কৌশল | [Introduction](1-Introduction/README.md) | মেশিন লার্নিং গবেষকরা মডেল তৈরি করতে কী কৌশল ব্যবহার করেন? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | ক্রিস এবং জেন | -| 05 | রিগ্রেশন-এর পরিচিতি | [Regression](2-Regression/README.md) | রিগ্রেশন মডেলের জন্য পাইথন এবং সাইকিট-লার্ন দিয়ে শুরু করুন | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | জেন • এরিক ওয়ানজাউ | -| 06 | উত্তর আমেরিকার কুমড়ার দাম 🎃 | [Regression](2-Regression/README.md) | মেশিন লার্নিং-এর প্রস্তুতির জন্য ডেটা ভিজুয়ালাইজ এবং পরিষ্কার করুন | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | জেন • এরিক ওয়ানজাউ | -| 07 | উত্তর আমেরিকার কুমড়ার দাম 🎃 | [Regression](2-Regression/README.md) | লিনিয়ার এবং পলিনোমিয়াল রিগ্রেশন মডেল তৈরি করুন | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | জেন এবং দিমিত্রি • এরিক ওয়ানজাউ | -| 08 | উত্তর আমেরিকার কুমড়ার দাম 🎃 | [Regression](2-Regression/README.md) | একটি লজিস্টিক রিগ্রেশন মডেল তৈরি করুন | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | জেন • এরিক ওয়ানজাউ | -| 09 | একটি ওয়েব অ্যাপ 🔌 | [Web App](3-Web-App/README.md) | আপনার প্রশিক্ষিত মডেল ব্যবহার করার জন্য একটি ওয়েব অ্যাপ তৈরি করুন | [Python](3-Web-App/1-Web-App/README.md) | জেন | -| 10 | শ্রেণীবিভাগের পরিচিতি | [Classification](4-Classification/README.md) | আপনার ডেটা পরিষ্কার, প্রস্তুত এবং ভিজুয়ালাইজ করুন; শ্রেণীবিভাগের পরিচিতি | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | জেন এবং ক্যাসি • এরিক ওয়ানজাউ | -| 11 | সুস্বাদু এশিয়ান এবং ভারতীয় খাবার 🍜 | [Classification](4-Classification/README.md) | শ্রেণীবিভাজকের পরিচিতি | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | জেন এবং ক্যাসি • এরিক ওয়ানজাউ | -| 12 | সুস্বাদু এশিয়ান এবং ভারতীয় খাবার 🍜 | [Classification](4-Classification/README.md) | আরও শ্রেণীবিভাজক | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | জেন এবং ক্যাসি • এরিক ওয়ানজাউ | -| 13 | সুস্বাদু এশিয়ান এবং ভারতীয় খাবার 🍜 | [Classification](4-Classification/README.md) | আপনার মডেল ব্যবহার করে একটি রিকমেন্ডার ওয়েব অ্যাপ তৈরি করুন | [Python](4-Classification/4-Applied/README.md) | জেন | -| 14 | ক্লাস্টারিং-এর পরিচিতি | [Clustering](5-Clustering/README.md) | আপনার ডেটা পরিষ্কার, প্রস্তুত এবং ভিজুয়ালাইজ করুন; ক্লাস্টারিং-এর পরিচিতি | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | জেন • এরিক ওয়ানজাউ | -| 15 | নাইজেরিয়ান সঙ্গীতের রুচি অন্বেষণ 🎧 | [Clustering](5-Clustering/README.md) | কে-মিন্স ক্লাস্টারিং পদ্ধতি অন্বেষণ করুন | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | জেন • এরিক ওয়ানজাউ | -| 16 | প্রাকৃতিক ভাষা প্রক্রিয়াকরণের পরিচিতি ☕️ | [Natural language processing](6-NLP/README.md) | একটি সহজ বট তৈরি করে NLP-এর মৌলিক বিষয়গুলি শিখুন | [Python](6-NLP/1-Introduction-to-NLP/README.md) | স্টিফেন | -| 17 | সাধারণ NLP কাজ ☕️ | [Natural language processing](6-NLP/README.md) | ভাষার গঠন নিয়ে কাজ করার সময় প্রয়োজনীয় সাধারণ কাজগুলি বুঝে NLP জ্ঞান আরও গভীর করুন | [Python](6-NLP/2-Tasks/README.md) | স্টিফেন | +| 01 | মেশিন লার্নিংয়ের পরিচিতি | [Introduction](1-Introduction/README.md) | মেশিন লার্নিংয়ের পেছনের মৌলিক ধারণাগুলি শিখুন | [Lesson](1-Introduction/1-intro-to-ML/README.md) | মুহাম্মদ | +| 02 | মেশিন লার্নিংয়ের ইতিহাস | [Introduction](1-Introduction/README.md) | এই ক্ষেত্রের পেছনের ইতিহাস শিখুন | [Lesson](1-Introduction/2-history-of-ML/README.md) | জেন এবং অ্যামি | +| 03 | ন্যায়বিচার এবং মেশিন লার্নিং | [Introduction](1-Introduction/README.md) | ন্যায়বিচার সংক্রান্ত গুরুত্বপূর্ণ দার্শনিক বিষয়গুলি কী যা শিক্ষার্থীদের ML মডেল তৈরি ও প্রয়োগের সময় বিবেচনা করা উচিত? | [Lesson](1-Introduction/3-fairness/README.md) | টোমোমি | +| 04 | মেশিন লার্নিংয়ের কৌশলসমূহ | [Introduction](1-Introduction/README.md) | ML গবেষকরা ML মডেল তৈরি করতে কী কী কৌশল ব্যবহার করেন? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | ক্রিস এবং জেন | +| 05 | রিগ্রেশন পরিচিতি | [Regression](2-Regression/README.md) | রিগ্রেশন মডেলের জন্য পাইথন এবং স্কিকিট-লার্ন দিয়ে শুরু করুন | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | জেন • এরিক ওয়ানজাউ | +| 06 | উত্তর আমেরিকার কুমড়োর দাম 🎃 | [Regression](2-Regression/README.md) | ML এর প্রস্তুতির জন্য ডেটা ভিজ্যুয়ালাইজ এবং পরিষ্কার করুন | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | জেন • এরিক ওয়ানজাউ | +| 07 | উত্তর আমেরিকার কুমড়োর দাম 🎃 | [Regression](2-Regression/README.md) | লিনিয়ার এবং পলিনোমিয়াল রিগ্রেশন মডেল তৈরি করুন | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | জেন এবং দিমিত্রি • এরিক ওয়ানজাউ | +| 08 | উত্তর আমেরিকার কুমড়োর দাম 🎃 | [Regression](2-Regression/README.md) | একটি লজিস্টিক রিগ্রেশন মডেল তৈরি করুন | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | জেন • এরিক ওয়ানজাউ | +| 09 | একটি ওয়েব অ্যাপ 🔌 | [Web App](3-Web-App/README.md) | আপনার প্রশিক্ষিত মডেল ব্যবহার করার জন্য একটি ওয়েব অ্যাপ তৈরি করুন | [Python](3-Web-App/1-Web-App/README.md) | জেন | +| 10 | শ্রেণীবিভাগের পরিচিতি | [Classification](4-Classification/README.md) | আপনার ডেটা পরিষ্কার, প্রস্তুত এবং ভিজ্যুয়ালাইজ করুন; শ্রেণীবিভাগের পরিচিতি | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | জেন এবং ক্যাসি • এরিক ওয়ানজাউ | +| 11 | সুস্বাদু এশিয়ান এবং ভারতীয় রান্না 🍜 | [Classification](4-Classification/README.md) | শ্রেণীবিভাগকারীদের পরিচিতি | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | জেন এবং ক্যাসি • এরিক ওয়ানজাউ | +| 12 | সুস্বাদু এশিয়ান এবং ভারতীয় রান্না 🍜 | [Classification](4-Classification/README.md) | আরও শ্রেণীবিভাগকারী | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | জেন এবং ক্যাসি • এরিক ওয়ানজাউ | +| 13 | সুস্বাদু এশিয়ান এবং ভারতীয় রান্না 🍜 | [Classification](4-Classification/README.md) | আপনার মডেল ব্যবহার করে একটি রিকমেন্ডার ওয়েব অ্যাপ তৈরি করুন | [Python](4-Classification/4-Applied/README.md) | জেন | +| 14 | ক্লাস্টারিংয়ের পরিচিতি | [Clustering](5-Clustering/README.md) | আপনার ডেটা পরিষ্কার, প্রস্তুত এবং ভিজ্যুয়ালাইজ করুন; ক্লাস্টারিংয়ের পরিচিতি | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | জেন • এরিক ওয়ানজাউ | +| 15 | নাইজেরিয়ান সঙ্গীত রুচি অন্বেষণ 🎧 | [Clustering](5-Clustering/README.md) | K-Means ক্লাস্টারিং পদ্ধতি অন্বেষণ করুন | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | জেন • এরিক ওয়ানজাউ | +| 16 | প্রাকৃতিক ভাষা প্রক্রিয়াকরণের পরিচিতি ☕️ | [Natural language processing](6-NLP/README.md) | একটি সহজ বট তৈরি করে NLP এর মৌলিক বিষয়গুলি শিখুন | [Python](6-NLP/1-Introduction-to-NLP/README.md) | স্টিফেন | +| 17 | সাধারণ NLP কাজসমূহ ☕️ | [Natural language processing](6-NLP/README.md) | ভাষার কাঠামোর সাথে কাজ করার সময় প্রয়োজনীয় সাধারণ কাজগুলি বুঝে আপনার NLP জ্ঞান গভীর করুন | [Python](6-NLP/2-Tasks/README.md) | স্টিফেন | | 18 | অনুবাদ এবং অনুভূতি বিশ্লেষণ ♥️ | [Natural language processing](6-NLP/README.md) | জেন অস্টেনের সাথে অনুবাদ এবং অনুভূতি বিশ্লেষণ | [Python](6-NLP/3-Translation-Sentiment/README.md) | স্টিফেন | -| 19 | ইউরোপের রোমান্টিক হোটেল ♥️ | [Natural language processing](6-NLP/README.md) | হোটেল রিভিউ দিয়ে অনুভূতি বিশ্লেষণ ১ | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | স্টিফেন | -| 20 | ইউরোপের রোমান্টিক হোটেল ♥️ | [Natural language processing](6-NLP/README.md) | হোটেল রিভিউ দিয়ে অনুভূতি বিশ্লেষণ ২ | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | স্টিফেন | +| 19 | ইউরোপের রোমান্টিক হোটেল ♥️ | [Natural language processing](6-NLP/README.md) | হোটেল রিভিউ সহ অনুভূতি বিশ্লেষণ 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | স্টিফেন | +| 20 | ইউরোপের রোমান্টিক হোটেল ♥️ | [Natural language processing](6-NLP/README.md) | হোটেল রিভিউ সহ অনুভূতি বিশ্লেষণ 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | স্টিফেন | | 21 | টাইম সিরিজ পূর্বাভাসের পরিচিতি | [Time series](7-TimeSeries/README.md) | টাইম সিরিজ পূর্বাভাসের পরিচিতি | [Python](7-TimeSeries/1-Introduction/README.md) | ফ্রান্সেসকা | -| 22 | ⚡️ বিশ্ব বিদ্যুৎ ব্যবহার ⚡️ - ARIMA দিয়ে টাইম সিরিজ পূর্বাভাস | [Time series](7-TimeSeries/README.md) | ARIMA দিয়ে টাইম সিরিজ পূর্বাভাস | [Python](7-TimeSeries/2-ARIMA/README.md) | ফ্রান্সেসকা | -| 23 | ⚡️ বিশ্ব বিদ্যুৎ ব্যবহার ⚡️ - SVR দিয়ে টাইম সিরিজ পূর্বাভাস | [Time series](7-TimeSeries/README.md) | সাপোর্ট ভেক্টর রিগ্রেসর দিয়ে টাইম সিরিজ পূর্বাভাস | [Python](7-TimeSeries/3-SVR/README.md) | অনির্বাণ | -| 24 | রিইনফোর্সমেন্ট লার্নিং-এর পরিচিতি | [Reinforcement learning](8-Reinforcement/README.md) | কিউ-লার্নিং দিয়ে রিইনফোর্সমেন্ট লার্নিং-এর পরিচিতি | [Python](8-Reinforcement/1-QLearning/README.md) | দিমিত্রি | -| 25 | পিটারকে নেকড়ের হাত থেকে বাঁচান! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | রিইনফোর্সমেন্ট লার্নিং জিম | [Python](8-Reinforcement/2-Gym/README.md) | দিমিত্রি | -| Postscript | বাস্তব জীবনের মেশিন লার্নিং পরিস্থিতি এবং প্রয়োগ | [ML in the Wild](9-Real-World/README.md) | ক্লাসিক্যাল মেশিন লার্নিং-এর আকর্ষণীয় এবং প্রকাশক বাস্তব জীবনের প্রয়োগ | [Lesson](9-Real-World/1-Applications/README.md) | টিম | -| Postscript | RAI ড্যাশবোর্ড ব্যবহার করে মডেল ডিবাগিং | [ML in the Wild](9-Real-World/README.md) | রেসপন্সিবল এআই ড্যাশবোর্ড উপাদান ব্যবহার করে মেশিন লার্নিং মডেল ডিবাগিং | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | রুথ ইয়াকুব | +| 22 | ⚡️ বিশ্ব শক্তি ব্যবহার ⚡️ - ARIMA সহ টাইম সিরিজ পূর্বাভাস | [Time series](7-TimeSeries/README.md) | ARIMA সহ টাইম সিরিজ পূর্বাভাস | [Python](7-TimeSeries/2-ARIMA/README.md) | ফ্রান্সেসকা | +| 23 | ⚡️ বিশ্ব শক্তি ব্যবহার ⚡️ - SVR সহ টাইম সিরিজ পূর্বাভাস | [Time series](7-TimeSeries/README.md) | সাপোর্ট ভেক্টর রিগ্রেসর সহ টাইম সিরিজ পূর্বাভাস | [Python](7-TimeSeries/3-SVR/README.md) | অনির্বাণ | +| 24 | রিইনফোর্সমেন্ট লার্নিংয়ের পরিচিতি | [Reinforcement learning](8-Reinforcement/README.md) | Q-লার্নিং সহ রিইনফোর্সমেন্ট লার্নিংয়ের পরিচিতি | [Python](8-Reinforcement/1-QLearning/README.md) | দিমিত্রি | +| 25 | পিটারকে নেকড়ে থেকে বাঁচান! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | রিইনফোর্সমেন্ট লার্নিং জিম | [Python](8-Reinforcement/2-Gym/README.md) | দিমিত্রি | +| Postscript | বাস্তব বিশ্বের ML পরিস্থিতি এবং প্রয়োগ | [ML in the Wild](9-Real-World/README.md) | ক্লাসিক্যাল ML এর আকর্ষণীয় এবং প্রকাশক বাস্তব বিশ্বের প্রয়োগ | [Lesson](9-Real-World/1-Applications/README.md) | দল | +| Postscript | RAI ড্যাশবোর্ড ব্যবহার করে ML মডেল ডিবাগিং | [ML in the Wild](9-Real-World/README.md) | রেসপনসিবল AI ড্যাশবোর্ড উপাদান ব্যবহার করে মেশিন লার্নিংয়ে মডেল ডিবাগিং | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | রুথ ইয়াকুবু | -> [এই কোর্সের জন্য অতিরিক্ত সমস্ত রিসোর্স আমাদের Microsoft Learn সংগ্রহে খুঁজুন](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [এই কোর্সের জন্য সমস্ত অতিরিক্ত সম্পদ আমাদের 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` টাইপ করুন। ওয়েবসাইটটি আপনার লোকালহোস্টে পোর্ট ৩০০০-এ পরিবেশন করা হবে: `localhost:3000`। +আপনি [Docsify](https://docsify.js.org/#/) ব্যবহার করে এই ডকুমেন্টেশন অফলাইনে চালাতে পারেন। এই রিপোটি ফর্ক করুন, আপনার লোকাল মেশিনে [Docsify ইনস্টল করুন](https://docsify.js.org/#/quickstart), এবং তারপর এই রিপোর রুট ফোল্ডারে `docsify serve` টাইপ করুন। ওয়েবসাইটটি আপনার লোকালহোস্টে পোর্ট 3000 এ সার্ভ হবে: `localhost:3000`। ## পিডিএফ লিঙ্ক সহ কারিকুলামের একটি পিডিএফ [এখানে](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) খুঁজুন। -## 🎒 অন্যান্য কোর্সসমূহ -আমাদের টিম অন্যান্য কোর্সও তৈরি করে! দেখুন: +## 🎒 অন্যান্য কোর্স + +আমাদের দল অন্যান্য কোর্স তৈরি করে! দেখুন: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -170,16 +179,16 @@ Microsoft-এর Cloud Advocates আপনাদের জন্য ১২ স [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### জেনারেটিভ এআই সিরিজ + +### Generative AI Series [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - -### মূল শিক্ষা + +### মূল শেখা [![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) [![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) [![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) @@ -189,20 +198,20 @@ Microsoft-এর Cloud Advocates আপনাদের জন্য ১২ স [![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Copilot সিরিজ + +### কপাইলট সিরিজ [![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) [![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) [![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) -## সাহায্য পাওয়া +## সাহায্য নেওয়া -যদি আপনি আটকে যান বা AI অ্যাপ তৈরি করার বিষয়ে কোনো প্রশ্ন থাকে, তাহলে MCP নিয়ে আলোচনা করতে অন্যান্য শিক্ষার্থী এবং অভিজ্ঞ ডেভেলপারদের সাথে যোগ দিন। এটি একটি সহায়ক কমিউনিটি যেখানে প্রশ্ন করা স্বাগত এবং জ্ঞান বিনামূল্যে ভাগ করা হয়। +যদি আপনি আটকে যান বা AI অ্যাপ তৈরি সম্পর্কে কোনো প্রশ্ন থাকে। MCP নিয়ে আলোচনা করতে সহপাঠী শিক্ষার্থী এবং অভিজ্ঞ ডেভেলপারদের সাথে যোগ দিন। এটি একটি সহায়ক সম্প্রদায় যেখানে প্রশ্ন স্বাগত এবং জ্ঞান মুক্তভাবে ভাগ করা হয়। [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -যদি আপনার পণ্য সম্পর্কিত মতামত বা কোনো ত্রুটি থাকে, তাহলে ভিজিট করুন: +যদি আপনার পণ্য প্রতিক্রিয়া বা ত্রুটি থাকে, তাহলে এখানে যান: [![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) @@ -210,5 +219,5 @@ Microsoft-এর Cloud Advocates আপনাদের জন্য ১২ স **অস্বীকৃতি**: -এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিক অনুবাদের চেষ্টা করি, তবে দয়া করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। +এই নথিটি AI অনুবাদ সেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। আমরা যথাসাধ্য সঠিকতার চেষ্টা করি, তবে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার নিজস্ব ভাষায়ই কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ গ্রহণ করার পরামর্শ দেওয়া হয়। এই অনুবাদের ব্যবহারে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/br/README.md b/translations/br/README.md index 23fc75543..fcedb4bc0 100644 --- a/translations/br/README.md +++ b/translations/br/README.md @@ -1,51 +1,51 @@ -[![Licença do GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Contribuidores do GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Problemas do GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Pull Requests do GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Bem-vindos](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Observadores do GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Forks do GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Estrelas do GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Suporte Multilíngue -#### Suporte via GitHub Action (Automatizado e Sempre Atualizado) +#### Suportado via GitHub Action (Automatizado e Sempre Atualizado) - -[Árabe](../ar/README.md) | [Bengali](../bn/README.md) | [Búlgaro](../bg/README.md) | [Birmanês (Myanmar)](../my/README.md) | [Chinês (Simplificado)](../zh/README.md) | [Chinês (Tradicional, Hong Kong)](../hk/README.md) | [Chinês (Tradicional, Macau)](../mo/README.md) | [Chinês (Tradicional, Taiwan)](../tw/README.md) | [Croata](../hr/README.md) | [Tcheco](../cs/README.md) | [Dinamarquês](../da/README.md) | [Holandês](../nl/README.md) | [Estoniano](../et/README.md) | [Finlandês](../fi/README.md) | [Francês](../fr/README.md) | [Alemão](../de/README.md) | [Grego](../el/README.md) | [Hebraico](../he/README.md) | [Hindi](../hi/README.md) | [Húngaro](../hu/README.md) | [Indonésio](../id/README.md) | [Italiano](../it/README.md) | [Japonês](../ja/README.md) | [Coreano](../ko/README.md) | [Lituano](../lt/README.md) | [Malaio](../ms/README.md) | [Marathi](../mr/README.md) | [Nepalês](../ne/README.md) | [Pidgin Nigeriano](../pcm/README.md) | [Norueguês](../no/README.md) | [Persa (Farsi)](../fa/README.md) | [Polonês](../pl/README.md) | [Português (Brasil)](./README.md) | [Português (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romeno](../ro/README.md) | [Russo](../ru/README.md) | [Sérvio (Cirílico)](../sr/README.md) | [Eslovaco](../sk/README.md) | [Esloveno](../sl/README.md) | [Espanhol](../es/README.md) | [Suaíli](../sw/README.md) | [Sueco](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tâmil](../ta/README.md) | [Tailandês](../th/README.md) | [Turco](../tr/README.md) | [Ucraniano](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamita](../vi/README.md) - + +[Árabe](../ar/README.md) | [Bengali](../bn/README.md) | [Búlgaro](../bg/README.md) | [Birmanês (Myanmar)](../my/README.md) | [Chinês (Simplificado)](../zh/README.md) | [Chinês (Tradicional, Hong Kong)](../hk/README.md) | [Chinês (Tradicional, Macau)](../mo/README.md) | [Chinês (Tradicional, Taiwan)](../tw/README.md) | [Croata](../hr/README.md) | [Tcheco](../cs/README.md) | [Dinamarquês](../da/README.md) | [Holandês](../nl/README.md) | [Estoniano](../et/README.md) | [Finlandês](../fi/README.md) | [Francês](../fr/README.md) | [Alemão](../de/README.md) | [Grego](../el/README.md) | [Hebraico](../he/README.md) | [Hindi](../hi/README.md) | [Húngaro](../hu/README.md) | [Indonésio](../id/README.md) | [Italiano](../it/README.md) | [Japonês](../ja/README.md) | [Kannada](../kn/README.md) | [Coreano](../ko/README.md) | [Lituano](../lt/README.md) | [Malaio](../ms/README.md) | [Malaiala](../ml/README.md) | [Marata](../mr/README.md) | [Nepali](../ne/README.md) | [Pidgin Nigeriano](../pcm/README.md) | [Norueguês](../no/README.md) | [Persa (Farsi)](../fa/README.md) | [Polonês](../pl/README.md) | [Português (Brasil)](./README.md) | [Português (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romeno](../ro/README.md) | [Russo](../ru/README.md) | [Sérvio (Cirílico)](../sr/README.md) | [Eslovaco](../sk/README.md) | [Esloveno](../sl/README.md) | [Espanhol](../es/README.md) | [Suaíli](../sw/README.md) | [Sueco](../sv/README.md) | [Tagalo (Filipino)](../tl/README.md) | [Tâmil](../ta/README.md) | [Telugu](../te/README.md) | [Tailandês](../th/README.md) | [Turco](../tr/README.md) | [Ucraniano](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamita](../vi/README.md) + #### Junte-se à Nossa Comunidade [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Estamos realizando uma série de aprendizado com IA no Discord. Saiba mais e junte-se a nós na [Série Aprenda com IA](https://aka.ms/learnwithai/discord) de 18 a 30 de setembro de 2025. Você receberá dicas e truques sobre como usar o GitHub Copilot para Ciência de Dados. +Estamos com uma série contínua no Discord chamada Aprenda com IA, saiba mais e junte-se a nós em [Learn with AI Series](https://aka.ms/learnwithai/discord) de 18 a 30 de setembro de 2025. Você receberá dicas e truques para usar o GitHub Copilot para Ciência de Dados. ![Série Aprenda com IA](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.br.png) # Aprendizado de Máquina para Iniciantes - Um Currículo -> 🌍 Viaje pelo mundo enquanto exploramos Aprendizado de Máquina por meio de culturas globais 🌍 +> 🌍 Viaje pelo mundo enquanto exploramos Aprendizado de Máquina por meio das culturas do mundo 🌍 -Os Cloud Advocates da Microsoft têm o prazer de oferecer um currículo de 12 semanas e 26 lições sobre **Aprendizado de Máquina**. Neste currículo, você aprenderá sobre o que às vezes é chamado de **aprendizado de máquina clássico**, usando principalmente a biblioteca Scikit-learn e evitando aprendizado profundo, que é abordado em nosso [currículo de IA para Iniciantes](https://aka.ms/ai4beginners). Combine essas lições com nosso [currículo de Ciência de Dados para Iniciantes](https://aka.ms/ds4beginners), também! +Os Cloud Advocates da Microsoft têm o prazer de oferecer um currículo de 12 semanas, com 26 lições, totalmente dedicado ao **Aprendizado de Máquina**. Neste currículo, você aprenderá sobre o que às vezes é chamado de **aprendizado de máquina clássico**, usando principalmente a biblioteca Scikit-learn e evitando aprendizado profundo, que é abordado em nosso [currículo AI para Iniciantes](https://aka.ms/ai4beginners). Combine essas lições com nosso ['Currículo de Ciência de Dados para Iniciantes'](https://aka.ms/ds4beginners), também! -Viaje conosco pelo mundo enquanto aplicamos essas técnicas clássicas a dados de várias partes do mundo. Cada lição inclui questionários antes e depois da aula, instruções escritas para completar a lição, uma solução, uma tarefa e muito mais. Nossa pedagogia baseada em projetos permite que você aprenda enquanto constrói, uma maneira comprovada de fixar novas habilidades. +Viaje conosco pelo mundo enquanto aplicamos essas técnicas clássicas a dados de várias regiões do mundo. Cada lição inclui questionários pré e pós-aula, instruções escritas para completar a lição, uma solução, uma tarefa e mais. Nossa pedagogia baseada em projetos permite que você aprenda enquanto constrói, uma forma comprovada para que novas habilidades 'fixem'. -**✍️ Agradecimentos especiais aos nossos autores** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu e Amy Boyd +**✍️ Agradecimentos calorosos aos nossos autores** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu e Amy Boyd **🎨 Agradecimentos também aos nossos ilustradores** Tomomi Imura, Dasani Madipalli e Jen Looper -**🙏 Agradecimentos especiais 🙏 aos nossos autores, revisores e colaboradores de conteúdo Microsoft Student Ambassador**, especialmente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila e Snigdha Agarwal +**🙏 Agradecimentos especiais 🙏 aos nossos autores, revisores e colaboradores de conteúdo Microsoft Student Ambassador**, notadamente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila e Snigdha Agarwal **🤩 Gratidão extra aos Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi e Vidushi Gupta pelas nossas lições em R!** @@ -57,19 +57,20 @@ Siga estes passos: > [encontre todos os recursos adicionais para este curso em nossa coleção Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Precisa de ajuda?** Confira nosso [Guia de Solução de Problemas](TROUBLESHOOTING.md) para soluções de problemas comuns com instalação, configuração e execução das lições. +> 🔧 **Precisa de ajuda?** Consulte nosso [Guia de Solução de Problemas](TROUBLESHOOTING.md) para soluções comuns de instalação, configuração e execução das lições. -**[Estudantes](https://aka.ms/student-page)**, para usar este currículo, faça um fork do repositório inteiro para sua própria conta do GitHub e complete os exercícios sozinho ou em grupo: -- Comece com um questionário antes da aula. +**[Estudantes](https://aka.ms/student-page)**, para usar este currículo, faça um fork do repositório inteiro para sua própria conta GitHub e complete os exercícios sozinho ou em grupo: + +- Comece com um questionário pré-aula. - Leia a aula e complete as atividades, pausando e refletindo em cada verificação de conhecimento. -- Tente criar os projetos compreendendo as lições em vez de executar o código da solução; no entanto, esse código está disponível nas pastas `/solution` em cada lição orientada a projetos. -- Faça o questionário após a aula. +- Tente criar os projetos compreendendo as lições em vez de apenas executar o código da solução; no entanto, esse código está disponível nas pastas `/solution` em cada lição orientada a projetos. +- Faça o questionário pós-aula. - Complete o desafio. - Complete a tarefa. -- Após concluir um grupo de lições, visite o [Fórum de Discussão](https://github.com/microsoft/ML-For-Beginners/discussions) e "aprenda em voz alta" preenchendo o PAT apropriado. Um 'PAT' é uma Ferramenta de Avaliação de Progresso que é um rubrica que você preenche para aprofundar seu aprendizado. Você também pode reagir a outros PATs para que possamos aprender juntos. +- Após completar um grupo de lições, visite o [Fórum de Discussão](https://github.com/microsoft/ML-For-Beginners/discussions) e "aprenda em voz alta" preenchendo a rubrica PAT apropriada. Um 'PAT' é uma Ferramenta de Avaliação de Progresso que é uma rubrica que você preenche para aprofundar seu aprendizado. Você também pode reagir a outros PATs para aprendermos juntos. -> Para estudo adicional, recomendamos seguir estes módulos e caminhos de aprendizado do [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +> Para estudo adicional, recomendamos seguir estes módulos e trilhas de aprendizado do [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). **Professores**, incluímos [algumas sugestões](for-teachers.md) sobre como usar este currículo. @@ -77,7 +78,7 @@ Siga estes passos: ## Vídeos explicativos -Algumas das lições estão disponíveis em formato de vídeo curto. Você pode encontrar todos esses vídeos nas lições ou na [playlist ML para Iniciantes no canal Microsoft Developer no YouTube](https://aka.ms/ml-beginners-videos) clicando na imagem abaixo. +Algumas das lições estão disponíveis em formato de vídeo curto. Você pode encontrá-los embutidos nas lições ou na [playlist ML for Beginners no canal Microsoft Developer no YouTube](https://aka.ms/ml-beginners-videos) clicando na imagem abaixo. [![Banner ML para iniciantes](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.br.png)](https://aka.ms/ml-beginners-videos) @@ -89,15 +90,15 @@ Algumas das lições estão disponíveis em formato de vídeo curto. Você pode **Gif por** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Clique na imagem acima para assistir a um vídeo sobre o projeto e as pessoas que o criaram! +> 🎥 Clique na imagem acima para um vídeo sobre o projeto e as pessoas que o criaram! --- ## Pedagogia -Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que ele seja **baseado em projetos práticos** e que inclua **questionários frequentes**. Além disso, este currículo tem um **tema comum** para dar coesão. +Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que seja prático e **baseado em projetos** e que inclua **questionários frequentes**. Além disso, este currículo tem um **tema** comum para dar coesão. -Ao garantir que o conteúdo esteja alinhado com projetos, o processo se torna mais envolvente para os alunos e a retenção de conceitos será aumentada. Além disso, um questionário de baixo risco antes da aula define a intenção do aluno em aprender um tópico, enquanto um segundo questionário após a aula garante maior retenção. Este currículo foi projetado para ser flexível e divertido e pode ser realizado em sua totalidade ou em partes. Os projetos começam pequenos e se tornam cada vez mais complexos até o final do ciclo de 12 semanas. Este currículo também inclui um pós-escrito sobre aplicações reais de ML, que pode ser usado como crédito extra ou como base para discussão. +Ao garantir que o conteúdo esteja alinhado com projetos, o processo se torna mais envolvente para os alunos e a retenção dos conceitos será aumentada. Além disso, um questionário de baixo risco antes da aula define a intenção do aluno para aprender um tópico, enquanto um segundo questionário após a aula assegura maior retenção. Este currículo foi projetado para ser flexível e divertido e pode ser feito integralmente ou em partes. Os projetos começam pequenos e se tornam progressivamente mais complexos até o final do ciclo de 12 semanas. Este currículo também inclui um posfácio sobre aplicações reais de ML, que pode ser usado como crédito extra ou como base para discussão. > Encontre nosso [Código de Conduta](CODE_OF_CONDUCT.md), [Contribuindo](CONTRIBUTING.md), [Tradução](TRANSLATIONS.md) e [Solução de Problemas](TROUBLESHOOTING.md). Agradecemos seu feedback construtivo! @@ -106,108 +107,117 @@ Ao garantir que o conteúdo esteja alinhado com projetos, o processo se torna ma - sketchnote opcional - vídeo suplementar opcional - vídeo explicativo (algumas lições apenas) -- [questionário de aquecimento antes da aula](https://ff-quizzes.netlify.app/en/ml/) +- [questionário pré-aula](https://ff-quizzes.netlify.app/en/ml/) - lição escrita -- para lições baseadas em projetos, guias passo a passo sobre como construir o projeto +- para lições baseadas em projetos, guias passo a passo para construir o projeto - verificações de conhecimento - um desafio - leitura suplementar - tarefa -- [questionário após a aula](https://ff-quizzes.netlify.app/en/ml/) +- [questionário pós-aula](https://ff-quizzes.netlify.app/en/ml/) -> **Uma nota sobre linguagens**: Estas lições são escritas principalmente em Python, mas muitas também estão disponíveis em R. Para completar uma lição em R, vá para a pasta `/solution` e procure por lições em R. Elas incluem uma extensão .rmd que representa um arquivo **R Markdown**, que pode ser definido como uma incorporação de `blocos de código` (de R ou outras linguagens) e um `cabeçalho YAML` (que orienta como formatar saídas como PDF) em um `documento Markdown`. Assim, ele serve como um excelente framework de autoria para ciência de dados, pois permite combinar seu código, sua saída e seus pensamentos, permitindo que você os escreva em Markdown. Além disso, documentos R Markdown podem ser renderizados em formatos de saída como PDF, HTML ou Word. +> **Uma nota sobre idiomas**: Essas lições são principalmente escritas em Python, mas muitas também estão disponíveis em R. Para completar uma lição em R, vá para a pasta `/solution` e procure as lições em R. Elas incluem uma extensão .rmd que representa um arquivo **R Markdown**, que pode ser simplesmente definido como uma incorporação de `blocos de código` (de R ou outras linguagens) e um `cabeçalho YAML` (que orienta como formatar saídas como PDF) em um `documento Markdown`. Como tal, serve como uma estrutura exemplar para autoria em ciência de dados, pois permite combinar seu código, sua saída e seus pensamentos escrevendo-os em Markdown. Além disso, documentos R Markdown podem ser renderizados para formatos de saída como PDF, HTML ou Word. -> **Uma nota sobre questionários**: Todos os questionários estão contidos na [pasta Quiz App](../../quiz-app), totalizando 52 questionários de três perguntas cada. Eles estão vinculados dentro das lições, mas o aplicativo de questionários pode ser executado localmente; siga as instruções na pasta `quiz-app` para hospedar localmente ou implantar no Azure. +> **Uma nota sobre questionários**: Todos os questionários estão contidos na [pasta Quiz App](../../quiz-app), totalizando 52 questionários com três perguntas cada. Eles são vinculados dentro das lições, mas o aplicativo de questionário pode ser executado localmente; siga as instruções na pasta `quiz-app` para hospedar localmente ou implantar no Azure. -| Número da Lição | Tópico | Agrupamento de Lições | Objetivos de Aprendizado | Lição Vinculada | Autor | +| Número da Lição | Tópico | Agrupamento da Lição | Objetivos de Aprendizagem | Lição Vinculada | Autor | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Introdução ao aprendizado de máquina | [Introdução](1-Introduction/README.md) | Aprenda os conceitos básicos por trás do aprendizado de máquina | [Aula](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | A História do aprendizado de máquina | [Introdução](1-Introduction/README.md) | Conheça a história por trás deste campo | [Aula](1-Introduction/2-history-of-ML/README.md) | Jen e Amy | -| 03 | Justiça e aprendizado de máquina | [Introdução](1-Introduction/README.md) | Quais são as questões filosóficas importantes sobre justiça que os alunos devem considerar ao construir e aplicar modelos de aprendizado de máquina? | [Aula](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Técnicas para aprendizado de máquina | [Introdução](1-Introduction/README.md) | Quais técnicas os pesquisadores de aprendizado de máquina utilizam para construir modelos? | [Aula](1-Introduction/4-techniques-of-ML/README.md) | Chris e Jen | -| 05 | Introdução à regressão | [Regressão](2-Regression/README.md) | Comece com Python e Scikit-learn para modelos de regressão | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Preços de abóboras na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Visualize e limpe os dados em preparação para aprendizado de máquina | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Preços de abóboras na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Construa modelos de regressão linear e polinomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen e Dmitry • Eric Wanjau | -| 08 | Preços de abóboras na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Construa um modelo de regressão logística | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Um Aplicativo Web 🔌 | [Aplicativo Web](3-Web-App/README.md) | Construa um aplicativo web para usar seu modelo treinado | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Introdução à classificação | [Classificação](4-Classification/README.md) | Limpe, prepare e visualize seus dados; introdução à classificação | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen e Cassie • Eric Wanjau | -| 11 | Deliciosas culinárias asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Introdução aos classificadores | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen e Cassie • Eric Wanjau | -| 12 | Deliciosas culinárias asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Mais classificadores | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen e Cassie • Eric Wanjau | -| 13 | Deliciosas culinárias asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Construa um aplicativo web de recomendação usando seu modelo | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Introdução à clusterização | [Clusterização](5-Clustering/README.md) | Limpe, prepare e visualize seus dados; Introdução à clusterização | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Explorando gostos musicais nigerianos 🎧 | [Clusterização](5-Clustering/README.md) | Explore o método de clusterização 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 | Introdução ao processamento de linguagem natural ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprenda o básico sobre PLN construindo um bot simples | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Tarefas comuns de PLN ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprofunde seu conhecimento em PLN entendendo tarefas comuns ao lidar com estruturas de linguagem | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Tradução e análise de sentimentos ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Tradução e análise de sentimentos com Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Hotéis românticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimentos com avaliações de hotéis 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Hotéis românticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimentos com avaliações de hotéis 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Introdução à previsão de séries temporais | [Séries temporais](7-TimeSeries/README.md) | Introdução à previsão de séries temporais | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Consumo de energia mundial ⚡️ - previsão de séries temporais com ARIMA | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Consumo de energia mundial ⚡️ - previsão de séries temporais com SVR | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com Regressor de Vetores de Suporte | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Introdução ao aprendizado por reforço | [Aprendizado por reforço](8-Reinforcement/README.md) | Introdução ao aprendizado por reforço com Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Ajude Peter a evitar o lobo! 🐺 | [Aprendizado por reforço](8-Reinforcement/README.md) | Gym de aprendizado por reforço | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Pós-escrito | Cenários e aplicações reais de aprendizado de máquina | [ML no Mundo Real](9-Real-World/README.md) | Aplicações reais interessantes e reveladoras de aprendizado de máquina clássico | [Aula](9-Real-World/1-Applications/README.md) | Equipe | -| Pós-escrito | Depuração de modelos em aprendizado de máquina usando o painel RAI | [ML no Mundo Real](9-Real-World/README.md) | Depuração de modelos em aprendizado de máquina usando componentes do painel de IA Responsável | [Aula](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [encontre todos os recursos adicionais para este curso em nossa coleção no Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 01 | Introdução ao aprendizado de máquina | [Introduction](1-Introduction/README.md) | Aprenda os conceitos básicos por trás do aprendizado de máquina | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | A História do aprendizado de máquina | [Introduction](1-Introduction/README.md) | Aprenda a história por trás deste campo | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Justiça e aprendizado de máquina | [Introduction](1-Introduction/README.md) | Quais são as questões filosóficas importantes sobre justiça que os alunos devem considerar ao construir e aplicar modelos de ML? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Técnicas para aprendizado de máquina | [Introduction](1-Introduction/README.md) | Quais técnicas os pesquisadores de ML usam para construir modelos de ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Introdução à regressão | [Regression](2-Regression/README.md) | Comece com Python e Scikit-learn para modelos de regressão | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Preços de abóboras na América do Norte 🎃 | [Regression](2-Regression/README.md) | Visualize e limpe dados em preparação para ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Preços de abóboras na América do Norte 🎃 | [Regression](2-Regression/README.md) | Construa modelos de regressão linear e polinomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Preços de abóboras na América do Norte 🎃 | [Regression](2-Regression/README.md) | Construa um modelo de regressão logística | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Um App Web 🔌 | [Web App](3-Web-App/README.md) | Construa um app web para usar seu modelo treinado | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Introdução à classificação | [Classification](4-Classification/README.md) | Limpe, prepare e visualize seus dados; introdução à classificação | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Culinárias deliciosas asiáticas e indianas 🍜 | [Classification](4-Classification/README.md) | Introdução aos classificadores | [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 | Culinárias deliciosas asiáticas e indianas 🍜 | [Classification](4-Classification/README.md) | Mais classificadores | [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 | Culinárias deliciosas asiáticas e indianas 🍜 | [Classification](4-Classification/README.md) | Construa um app web recomendador usando seu modelo | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Introdução ao agrupamento | [Clustering](5-Clustering/README.md) | Limpe, prepare e visualize seus dados; Introdução ao agrupamento | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Explorando gostos musicais nigerianos 🎧 | [Clustering](5-Clustering/README.md) | Explore o método de agrupamento 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 | Introdução ao processamento de linguagem natural ☕️ | [Natural language processing](6-NLP/README.md) | Aprenda o básico sobre PLN construindo um bot simples | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Tarefas comuns de PLN ☕️ | [Natural language processing](6-NLP/README.md) | Aprofunde seu conhecimento em PLN entendendo tarefas comuns necessárias ao lidar com estruturas linguísticas | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Tradução e análise de sentimento ♥️ | [Natural language processing](6-NLP/README.md) | Tradução e análise de sentimento com Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Hotéis românticos da Europa ♥️ | [Natural language processing](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Hotéis românticos da Europa ♥️ | [Natural language processing](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Introdução à previsão de séries temporais | [Time series](7-TimeSeries/README.md) | Introdução à previsão de séries temporais | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Uso mundial de energia ⚡️ - previsão de séries temporais com ARIMA | [Time series](7-TimeSeries/README.md) | Previsão de séries temporais com ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Uso mundial de energia ⚡️ - previsão de séries temporais com SVR | [Time series](7-TimeSeries/README.md) | Previsão de séries temporais com Regressor de Vetores de Suporte | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Introdução ao aprendizado por reforço | [Reinforcement learning](8-Reinforcement/README.md) | Introdução ao aprendizado por reforço com Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Ajude Peter a evitar o lobo! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Aprendizado por reforço com Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Cenários e aplicações reais de ML | [ML in the Wild](9-Real-World/README.md) | Aplicações reais interessantes e reveladoras de ML clássico | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Depuração de modelos em ML usando painel RAI | [ML in the Wild](9-Real-World/README.md) | Depuração de modelos em aprendizado de máquina usando componentes do painel Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [encontre todos os recursos adicionais para este curso em nossa coleção Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Acesso offline -Você pode executar esta documentação offline usando [Docsify](https://docsify.js.org/#/). Faça um fork deste repositório, [instale o Docsify](https://docsify.js.org/#/quickstart) em sua máquina local e, em seguida, na pasta raiz deste repositório, digite `docsify serve`. O site será servido na porta 3000 no seu localhost: `localhost:3000`. +Você pode executar esta documentação offline usando [Docsify](https://docsify.js.org/#/). Faça um fork deste repositório, [instale o Docsify](https://docsify.js.org/#/quickstart) em sua máquina local e então, na pasta raiz deste repositório, digite `docsify serve`. O site será servido na porta 3000 no seu localhost: `localhost:3000`. ## PDFs -Encontre um PDF do currículo com links [aqui](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Encontre um pdf do currículo com links [aqui](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Outros Cursos + +## 🎒 Outros Cursos Nossa equipe produz outros cursos! Confira: -### Azure / Edge / MCP / Agentes -[![AZD para Iniciantes](https://img.shields.io/badge/AZD%20para%20Iniciantes-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![IA de Borda para Iniciantes](https://img.shields.io/badge/IA%20de%20Borda%20para%20Iniciantes-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP para Iniciantes](https://img.shields.io/badge/MCP%20para%20Iniciantes-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Agentes de IA para Iniciantes](https://img.shields.io/badge/Agentes%20de%20IA%20para%20Iniciantes-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j para Iniciantes](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js para Iniciantes](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Série de IA Generativa -[![IA Generativa para Iniciantes](https://img.shields.io/badge/IA%20Generativa%20para%20Iniciantes-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![IA Generativa (.NET)](https://img.shields.io/badge/IA%20Generativa%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![IA Generativa (Java)](https://img.shields.io/badge/IA%20Generativa%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![IA Generativa (JavaScript)](https://img.shields.io/badge/IA%20Generativa%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agentes +[![AZD para Iniciantes](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI para Iniciantes](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP para Iniciantes](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Agentes de IA para Iniciantes](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Aprendizado Fundamental -[![ML para Iniciantes](https://img.shields.io/badge/ML%20para%20Iniciantes-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Ciência de Dados para Iniciantes](https://img.shields.io/badge/Ciência%20de%20Dados%20para%20Iniciantes-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![IA para Iniciantes](https://img.shields.io/badge/IA%20para%20Iniciantes-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cibersegurança para Iniciantes](https://img.shields.io/badge/Cibersegurança%20para%20Iniciantes-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Desenvolvimento Web para Iniciantes](https://img.shields.io/badge/Desenvolvimento%20Web%20para%20Iniciantes-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT para Iniciantes](https://img.shields.io/badge/IoT%20para%20Iniciantes-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Desenvolvimento XR para Iniciantes](https://img.shields.io/badge/Desenvolvimento%20XR%20para%20Iniciantes-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +### Série de IA Generativa +[![IA Generativa para Iniciantes](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![IA Generativa (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- + +### Aprendizado Principal +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) -### Série Copilot -[![Copilot para Programação em Parceria com IA](https://img.shields.io/badge/Copilot%20para%20Programação%20em%20Parceria%20com%20IA-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot para C#/.NET](https://img.shields.io/badge/Copilot%20para%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Aventura Copilot](https://img.shields.io/badge/Aventura%20Copilot-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +--- + +### Série Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -## Obtendo Ajuda +## Obtendo Ajuda -Se você ficar preso ou tiver dúvidas sobre como construir aplicativos de IA, junte-se a outros aprendizes e desenvolvedores experientes em discussões sobre MCP. É uma comunidade de apoio onde perguntas são bem-vindas e o conhecimento é compartilhado livremente. +Se você ficar preso ou tiver alguma dúvida sobre como construir aplicativos de IA. Junte-se a outros aprendizes e desenvolvedores experientes em discussões sobre MCP. É uma comunidade de apoio onde perguntas são bem-vindas e o conhecimento é compartilhado livremente. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Se você tiver feedback sobre produtos ou encontrar erros durante o desenvolvimento, visite: +Se você tiver feedback sobre o produto ou erros durante a construção, visite: -[![Fórum de Desenvolvedores Microsoft Foundry](https://img.shields.io/badge/GitHub-Fórum_de_Desenvolvedores_Microsoft_Foundry-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/cs/README.md b/translations/cs/README.md index b591d6f9a..9ce26f238 100644 --- a/translations/cs/README.md +++ b/translations/cs/README.md @@ -1,215 +1,223 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Podpora více jazyků +### 🌐 Podpora více jazyků -#### Podporováno prostřednictvím GitHub Action (automatizováno a vždy aktuální) +#### Podporováno pomocí GitHub Action (automatizováno a vždy aktuální) -[Arabština](../ar/README.md) | [Bengálština](../bn/README.md) | [Bulharština](../bg/README.md) | [Barmština (Myanmar)](../my/README.md) | [Čínština (zjednodušená)](../zh/README.md) | [Čínština (tradiční, Hongkong)](../hk/README.md) | [Čínština (tradiční, Macao)](../mo/README.md) | [Čínština (tradiční, Tchaj-wan)](../tw/README.md) | [Chorvatština](../hr/README.md) | [Čeština](./README.md) | [Dánština](../da/README.md) | [Nizozemština](../nl/README.md) | [Estonština](../et/README.md) | [Finština](../fi/README.md) | [Francouzština](../fr/README.md) | [Němčina](../de/README.md) | [Řečtina](../el/README.md) | [Hebrejština](../he/README.md) | [Hindština](../hi/README.md) | [Maďarština](../hu/README.md) | [Indonéština](../id/README.md) | [Italština](../it/README.md) | [Japonština](../ja/README.md) | [Korejština](../ko/README.md) | [Litevština](../lt/README.md) | [Malajština](../ms/README.md) | [Maráthština](../mr/README.md) | [Nepálština](../ne/README.md) | [Nigerijský pidgin](../pcm/README.md) | [Norština](../no/README.md) | [Perština (Fársí)](../fa/README.md) | [Polština](../pl/README.md) | [Portugalština (Brazílie)](../br/README.md) | [Portugalština (Portugalsko)](../pt/README.md) | [Paňdžábština (Gurmukhi)](../pa/README.md) | [Rumunština](../ro/README.md) | [Ruština](../ru/README.md) | [Srbština (cyrilice)](../sr/README.md) | [Slovenština](../sk/README.md) | [Slovinština](../sl/README.md) | [Španělština](../es/README.md) | [Svahilština](../sw/README.md) | [Švédština](../sv/README.md) | [Tagalog (Filipínština)](../tl/README.md) | [Tamilština](../ta/README.md) | [Thajština](../th/README.md) | [Turečtina](../tr/README.md) | [Ukrajinština](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamština](../vi/README.md) +[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](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) -#### Připojte se k naší komunitě +#### Přidejte se k naší komunitě -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Máme probíhající sérii "Learn with AI" na Discordu, dozvíte se více a připojte se k nám na [Learn with AI Series](https://aka.ms/learnwithai/discord) od 18. do 30. září 2025. Získáte tipy a triky pro používání GitHub Copilot pro datovou vědu. +Máme probíhající sérii Learn with AI na Discordu, dozvíte se více a připojte se k nám na [Learn with AI Series](https://aka.ms/learnwithai/discord) od 18. do 30. září 2025. Získáte tipy a triky pro používání GitHub Copilot pro Data Science. -![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.cs.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.cs.png) -# Strojové učení pro začátečníky - Osnova +# Strojové učení pro začátečníky – učební plán -> 🌍 Cestujte po světě, zatímco objevujeme strojové učení prostřednictvím světových kultur 🌍 +> 🌍 Cestujte po světě, zatímco zkoumáme strojové učení prostřednictvím světových kultur 🌍 -Cloud Advocates v Microsoftu s potěšením nabízejí 12týdenní osnovu s 26 lekcemi o **strojovém učení**. V této osnově se naučíte o tom, co se někdy nazývá **klasické strojové učení**, především s využitím knihovny Scikit-learn a bez hlubokého učení, které je pokryto v naší osnově [AI for Beginners](https://aka.ms/ai4beginners). Tyto lekce můžete také kombinovat s naší osnovou ['Data Science for Beginners'](https://aka.ms/ds4beginners). +Cloud Advocates v Microsoftu s potěšením nabízejí 12týdenní, 26-lekční učební plán zaměřený na **strojové učení**. V tomto učebním plánu se naučíte to, co se někdy nazývá **klasické strojové učení**, přičemž primárně používáme knihovnu Scikit-learn a vyhýbáme se hlubokému učení, které je pokryto v našem [učebním plánu AI pro začátečníky](https://aka.ms/ai4beginners). Tyto lekce můžete také kombinovat s naším [učebním plánem Data Science pro začátečníky](https://aka.ms/ds4beginners). -Cestujte s námi po světě, zatímco aplikujeme tyto klasické techniky na data z různých částí světa. Každá lekce obsahuje kvízy před a po lekci, písemné pokyny k dokončení lekce, řešení, úkol a další. Náš přístup založený na projektech vám umožní učit se při budování, což je osvědčený způsob, jak si osvojit nové dovednosti. +Cestujte s námi po světě, zatímco aplikujeme tyto klasické techniky na data z různých oblastí světa. Každá lekce obsahuje před a po lekci kvízy, psané instrukce k dokončení lekce, řešení, úkol a další. Naše projektově orientovaná pedagogika vám umožní učit se při tvorbě, což je osvědčený způsob, jak si nové dovednosti lépe osvojit. -**✍️ Velké díky našim autorům** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu a Amy Boyd +**✍️ Srdečné díky našim autorům** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu a Amy Boyd -**🎨 Díky také našim ilustrátorům** Tomomi Imura, Dasani Madipalli a Jen Looper +**🎨 Díky také našim ilustrátorům** Tomomi Imura, Dasani Madipalli a Jen Looper -**🙏 Speciální poděkování 🙏 našim autorům, recenzentům a přispěvatelům obsahu z řad Microsoft Student Ambassador**, zejména Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila a Snigdha Agarwal +**🙏 Zvláštní poděkování 🙏 našim autorům, recenzentům a přispěvatelům obsahu z řad Microsoft Student Ambassadorů**, zejména Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila a Snigdha Agarwal -**🤩 Extra poděkování Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi a Vidushi Gupta za naše lekce v R!** +**🤩 Extra poděkování Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi a Vidushi Gupta za naše lekce v R!** -# Začínáme +# Začínáme -Postupujte podle těchto kroků: -1. **Forkněte repozitář**: Klikněte na tlačítko "Fork" v pravém horním rohu této stránky. -2. **Naklonujte repozitář**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Postupujte podle těchto kroků: +1. **Vytvořte fork repozitáře**: Klikněte na tlačítko „Fork“ v pravém horním rohu této stránky. +2. **Naklonujte repozitář**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [najděte všechny další zdroje pro tento kurz v naší kolekci Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [najděte všechny další zdroje pro tento kurz v naší kolekci Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +> 🔧 **Potřebujete pomoc?** Podívejte se na náš [Průvodce řešením problémů](TROUBLESHOOTING.md) pro řešení běžných problémů s instalací, nastavením a spouštěním lekcí. -> 🔧 **Potřebujete pomoc?** Podívejte se na náš [Průvodce řešením problémů](TROUBLESHOOTING.md) pro řešení běžných problémů s instalací, nastavením a spuštěním lekcí. -**[Studenti](https://aka.ms/student-page)**, abyste mohli používat tuto osnovu, forkněte celý repozitář do svého GitHub účtu a dokončete cvičení sami nebo ve skupině: +**[Studenti](https://aka.ms/student-page)**, pro použití tohoto učebního plánu si vytvořte fork celého repozitáře na svůj vlastní GitHub účet a cvičení dokončujte sami nebo ve skupině: -- Začněte kvízem před lekcí. -- Přečtěte si lekci a dokončete aktivity, přičemž se zastavte a zamyslete při každé kontrolní otázce. -- Pokuste se vytvořit projekty pochopením lekcí místo pouhého spuštění řešení; kód řešení je však k dispozici ve složkách `/solution` v každé projektově orientované lekci. -- Udělejte si kvíz po lekci. -- Dokončete výzvu. -- Dokončete úkol. -- Po dokončení skupiny lekcí navštivte [Diskusní fórum](https://github.com/microsoft/ML-For-Beginners/discussions) a "učte se nahlas" vyplněním příslušného PAT rubriky. 'PAT' je nástroj pro hodnocení pokroku, který vyplníte, abyste si prohloubili své učení. Můžete také reagovat na jiné PAT, abychom se mohli učit společně. +- Začněte přednáškovým kvízem. +- Přečtěte si přednášku a dokončete aktivity, zastavujte se a přemýšlejte u každé kontroly znalostí. +- Snažte se vytvářet projekty pochopením lekcí, nikoli jen spuštěním řešení; kód řešení je však k dispozici ve složkách `/solution` v každé lekci zaměřené na projekt. +- Udělejte po přednášce kvíz. +- Dokončete výzvu. +- Dokončete úkol. +- Po dokončení skupiny lekcí navštivte [Diskusní fórum](https://github.com/microsoft/ML-For-Beginners/discussions) a „učte se nahlas“ vyplněním příslušného hodnotícího formuláře PAT. PAT je nástroj pro hodnocení pokroku, který vyplníte, abyste podpořili své učení. Můžete také reagovat na jiné PAT, abychom se mohli učit společně. -> Pro další studium doporučujeme sledovat tyto moduly a vzdělávací cesty [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +> Pro další studium doporučujeme sledovat tyto [moduly a učební cesty Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). -**Učitelé**, zahrnuli jsme [některé návrhy](for-teachers.md), jak používat tuto osnovu. +**Učitelé**, máme [několik návrhů](for-teachers.md), jak tento učební plán využít. --- -## Video průvodci +## Video průvodci -Některé lekce jsou k dispozici jako krátká videa. Všechna tato videa najdete přímo v lekcích nebo na [playlistu ML for Beginners na YouTube kanálu Microsoft Developer](https://aka.ms/ml-beginners-videos) kliknutím na obrázek níže. +Některé lekce jsou dostupné jako krátká videa. Všechny je najdete přímo v lekcích nebo na [playlistu ML for Beginners na YouTube kanálu Microsoft Developer](https://aka.ms/ml-beginners-videos) kliknutím na obrázek níže. -[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.cs.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.cs.png)](https://aka.ms/ml-beginners-videos) --- -## Seznamte se s týmem +## Seznamte se s týmem -[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif vytvořil** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif od** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Klikněte na obrázek výše pro video o projektu a lidech, kteří ho vytvořili! +> 🎥 Klikněte na obrázek výše pro video o projektu a lidech, kteří ho vytvořili! --- -## Pedagogika - -Při vytváření této osnovy jsme zvolili dva pedagogické principy: zajistit, aby byla praktická **projektově orientovaná** a aby obsahovala **časté kvízy**. Kromě toho má tato osnova společné **téma**, které jí dodává soudržnost. - -Tím, že obsah odpovídá projektům, je proces pro studenty poutavější a zlepšuje se zapamatování konceptů. Nízkostresový kvíz před hodinou nastaví záměr studenta na učení tématu, zatímco druhý kvíz po hodině zajistí další zapamatování. Tato osnova byla navržena tak, aby byla flexibilní a zábavná a mohla být absolvována celá nebo po částech. Projekty začínají jednoduše a postupně se stávají složitějšími na konci 12týdenního cyklu. Tato osnova také obsahuje dodatek o reálných aplikacích ML, který může být použit jako extra kredit nebo jako základ pro diskusi. - -> Najděte náš [Kodex chování](CODE_OF_CONDUCT.md), [Přispívání](CONTRIBUTING.md), [Překlady](TRANSLATIONS.md) a [Řešení problémů](TROUBLESHOOTING.md). Uvítáme vaši konstruktivní zpětnou vazbu! - -## Každá lekce obsahuje - -- volitelný sketchnote -- volitelné doplňkové video -- video průvodce (pouze některé lekce) -- [kvíz na zahřátí před lekcí](https://ff-quizzes.netlify.app/en/ml/) -- písemnou lekci -- u projektově orientovaných lekcí, podrobné návody, jak vytvořit projekt -- kontrolní otázky -- výzvu -- doplňkové čtení -- úkol -- [kvíz po lekci](https://ff-quizzes.netlify.app/en/ml/) - -> **Poznámka k jazykům**: Tyto lekce jsou primárně psány v Pythonu, ale mnohé jsou také dostupné v R. Pro dokončení lekce v R přejděte do složky `/solution` a vyhledejte lekce v R. Obsahují příponu .rmd, což představuje **R Markdown** soubor, který lze jednoduše definovat jako vložení `code chunks` (R nebo jiných jazyků) a `YAML header` (který určuje, jak formátovat výstupy, jako je PDF) do `Markdown dokumentu`. Slouží tak jako příkladný autorizační rámec pro datovou vědu, protože vám umožňuje kombinovat váš kód, jeho výstup a vaše myšlenky tím, že je zapíšete do Markdownu. Navíc lze dokumenty R Markdown vykreslit do výstupních formátů, jako je PDF, HTML nebo Word. - -> **Poznámka ke kvízům**: Všechny kvízy jsou obsaženy ve složce [Quiz App](../../quiz-app), celkem 52 kvízů po třech otázkách. Jsou propojeny v rámci lekcí, ale aplikaci kvízů lze spustit lokálně; postupujte podle pokynů ve složce `quiz-app` pro lokální hostování nebo nasazení na Azure. - -| Číslo lekce | Téma | Skupina lekcí | Cíle učení | Propojená lekce | Autor | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Úvod do strojového učení | [Úvod](1-Introduction/README.md) | Naučte se základní koncepty strojového učení | [Lekce](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Historie strojového učení | [Úvod](1-Introduction/README.md) | Naučte se historii tohoto oboru | [Lekce](1-Introduction/2-history-of-ML/README.md) | Jen a Amy | -| 03 | Spravedlnost a strojové učení | [Úvod](1-Introduction/README.md) | Jaké jsou důležité filozofické otázky ohledně spravedlnosti, které by studenti měli zvážit při vytváření a aplikaci modelů ML? | [Lekce](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Techniky strojového učení | [Úvod](1-Introduction/README.md) | Jaké techniky používají výzkumníci ML při vytváření modelů ML? | [Lekce](1-Introduction/4-techniques-of-ML/README.md) | Chris a Jen | -| 05 | Úvod do regrese | [Regrese](2-Regression/README.md) | Začněte s Pythonem a Scikit-learn pro regresní modely | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Ceny dýní v Severní Americe 🎃 | [Regrese](2-Regression/README.md) | Vizualizujte a vyčistěte data pro přípravu na ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Ceny dýní v Severní Americe 🎃 | [Regrese](2-Regression/README.md) | Vytvořte lineární a polynomiální regresní modely | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen a Dmitry • Eric Wanjau | -| 08 | Ceny dýní v Severní Americe 🎃 | [Regrese](2-Regression/README.md) | Vytvořte logistický regresní model | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Webová aplikace 🔌 | [Webová aplikace](3-Web-App/README.md) | Vytvořte webovou aplikaci pro použití vašeho trénovaného modelu | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Úvod do klasifikace | [Klasifikace](4-Classification/README.md) | Vyčistěte, připravte a vizualizujte svá data; úvod do klasifikace | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen a Cassie • Eric Wanjau | -| 11 | Lahodná asijská a indická kuchyně 🍜 | [Klasifikace](4-Classification/README.md) | Úvod do klasifikátorů | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen a Cassie • Eric Wanjau | -| 12 | Lahodná asijská a indická kuchyně 🍜 | [Klasifikace](4-Classification/README.md) | Další klasifikátory | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen a Cassie • Eric Wanjau | -| 13 | Lahodná asijská a indická kuchyně 🍜 | [Klasifikace](4-Classification/README.md) | Vytvořte webovou aplikaci doporučující na základě vašeho modelu | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Úvod do shlukování | [Shlukování](5-Clustering/README.md) | Vyčistěte, připravte a vizualizujte svá data; úvod do shlukování | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Zkoumání nigerijských hudebních chutí 🎧 | [Shlukování](5-Clustering/README.md) | Prozkoumejte metodu shlukování 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 | Úvod do zpracování přirozeného jazyka ☕️ | [Zpracování přirozeného jazyka](6-NLP/README.md) | Naučte se základy NLP vytvořením jednoduchého bota | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Běžné úkoly NLP ☕️ | [Zpracování přirozeného jazyka](6-NLP/README.md) | Prohlubte své znalosti NLP pochopením běžných úkolů při práci s jazykovými strukturami | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Překlad a analýza sentimentu ♥️ | [Zpracování přirozeného jazyka](6-NLP/README.md) | Překlad a analýza sentimentu s Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantické hotely v Evropě ♥️ | [Zpracování přirozeného jazyka](6-NLP/README.md) | Analýza sentimentu s recenzemi hotelů 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantické hotely v Evropě ♥️ | [Zpracování přirozeného jazyka](6-NLP/README.md) | Analýza sentimentu s recenzemi hotelů 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Úvod do předpovědi časových řad | [Časové řady](7-TimeSeries/README.md) | Úvod do předpovědi časových řad | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Světová spotřeba energie ⚡️ - předpověď časových řad s ARIMA | [Časové řady](7-TimeSeries/README.md) | Předpověď časových řad s ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Světová spotřeba energie ⚡️ - předpověď časových řad s SVR | [Časové řady](7-TimeSeries/README.md) | Předpověď časových řad s Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Úvod do posilovaného učení | [Posilované učení](8-Reinforcement/README.md) | Úvod do posilovaného učení s Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Pomozte Petrovi vyhnout se vlkovi! 🐺 | [Posilované učení](8-Reinforcement/README.md) | Posilované učení Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Scénáře a aplikace ML v reálném světě | [ML v praxi](9-Real-World/README.md) | Zajímavé a odhalující aplikace klasického ML v reálném světě | [Lekce](9-Real-World/1-Applications/README.md) | Tým | -| Postscript | Ladění modelů ML pomocí RAI dashboardu | [ML v praxi](9-Real-World/README.md) | Ladění modelů strojového učení pomocí komponent Responsible AI dashboardu | [Lekce](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +## Pedagogika + +Při tvorbě tohoto učebního plánu jsme zvolili dva pedagogické principy: zajistit, aby byl praktický a **projektově orientovaný**, a aby obsahoval **časté kvízy**. Navíc má tento učební plán společné **téma**, které mu dává soudržnost. + +Zajištěním souladu obsahu s projekty je proces pro studenty zajímavější a zvyšuje se zapamatování konceptů. Nízkorizikový kvíz před hodinou nastavuje záměr studenta učit se dané téma, zatímco druhý kvíz po hodině zajišťuje další zapamatování. Tento učební plán byl navržen tak, aby byl flexibilní a zábavný a lze ho absolvovat celý nebo částečně. Projekty začínají malé a postupně se během 12týdenního cyklu stávají složitějšími. Tento učební plán také obsahuje dodatek o reálných aplikacích ML, který lze použít jako bonusové body nebo jako základ pro diskusi. + +> Najděte naše [Kodex chování](CODE_OF_CONDUCT.md), [Příspěvky](CONTRIBUTING.md), [Překlady](TRANSLATIONS.md) a [Řešení problémů](TROUBLESHOOTING.md). Vítáme vaše konstruktivní připomínky! + +## Každá lekce obsahuje + +- volitelnou skicu +- volitelné doplňkové video +- video průvodce (pouze některé lekce) +- [přednáškový zahřívací kvíz](https://ff-quizzes.netlify.app/en/ml/) +- psanou lekci +- u projektově orientovaných lekcí krok za krokem průvodce tvorbou projektu +- kontroly znalostí +- výzvu +- doplňující čtení +- úkol +- [poválecý kvíz](https://ff-quizzes.netlify.app/en/ml/) + +> **Poznámka k jazykům**: Tyto lekce jsou primárně psány v Pythonu, ale mnoho z nich je také dostupných v R. Pro dokončení lekce v R přejděte do složky `/solution` a hledejte lekce v R. Ty obsahují příponu .rmd, což je soubor **R Markdown**, který lze jednoduše definovat jako vložení `kódových bloků` (v R nebo jiných jazycích) a `YAML hlavičky` (která určuje, jak formátovat výstupy jako PDF) v `Markdown dokumentu`. Slouží tedy jako vzorový rámec pro psaní v datové vědě, protože umožňuje kombinovat kód, jeho výstup a vaše poznámky psané v Markdownu. Navíc lze R Markdown dokumenty převádět do výstupních formátů jako PDF, HTML nebo Word. + +> **Poznámka ke kvízům**: Všechny kvízy jsou obsaženy ve [složce Quiz App](../../quiz-app), celkem 52 kvízů po třech otázkách. Jsou propojeny z lekcí, ale aplikaci kvízů lze spustit i lokálně; postupujte podle instrukcí ve složce `quiz-app` pro lokální hostování nebo nasazení do Azure. + +| Číslo lekce | Téma | Skupina lekcí | Výukové cíle | Propojená lekce | Autor | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | Úvod do strojového učení | [Introduction](1-Introduction/README.md) | Naučte se základní pojmy strojového učení | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Historie strojového učení | [Introduction](1-Introduction/README.md) | Poznejte historii tohoto oboru | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Spravedlnost a strojové učení | [Introduction](1-Introduction/README.md) | Jaké jsou důležité filozofické otázky kolem spravedlnosti, které by studenti měli zvážit při vytváření a aplikaci modelů ML? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Techniky strojového učení | [Introduction](1-Introduction/README.md) | Jaké techniky používají výzkumníci ML k vytváření modelů ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Úvod do regrese | [Regression](2-Regression/README.md) | Začněte s Pythonem a Scikit-learn pro regresní modely | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Ceny dýní v Severní Americe 🎃 | [Regression](2-Regression/README.md) | Vizualizujte a vyčistěte data pro přípravu na ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Ceny dýní v Severní Americe 🎃 | [Regression](2-Regression/README.md) | Vytvořte lineární a polynomiální regresní modely | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Ceny dýní v Severní Americe 🎃 | [Regression](2-Regression/README.md) | Vytvořte logistický regresní model | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Webová aplikace 🔌 | [Web App](3-Web-App/README.md) | Vytvořte webovou aplikaci pro použití vašeho natrénovaného modelu | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Úvod do klasifikace | [Classification](4-Classification/README.md) | Vyčistěte, připravte a vizualizujte svá data; úvod do klasifikace | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Lahodné asijské a indické kuchyně 🍜 | [Classification](4-Classification/README.md) | Úvod do klasifikátorů | [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 | Lahodné asijské a indické kuchyně 🍜 | [Classification](4-Classification/README.md) | Další klasifikátory | [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 | Lahodné asijské a indické kuchyně 🍜 | [Classification](4-Classification/README.md) | Vytvořte doporučující webovou aplikaci pomocí vašeho modelu | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Úvod do shlukování | [Clustering](5-Clustering/README.md) | Vyčistěte, připravte a vizualizujte svá data; úvod do shlukování | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Objevování nigerijských hudebních chutí 🎧 | [Clustering](5-Clustering/README.md) | Prozkoumejte metodu shlukování 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 | Úvod do zpracování přirozeného jazyka ☕️ | [Natural language processing](6-NLP/README.md) | Naučte se základy NLP vytvořením jednoduchého bota | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Běžné úkoly NLP ☕️ | [Natural language processing](6-NLP/README.md) | Prohlubte své znalosti NLP pochopením běžných úkolů při práci s jazykovými strukturami | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Překlad a analýza sentimentu ♥️ | [Natural language processing](6-NLP/README.md) | Překlad a analýza sentimentu s Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantické hotely v Evropě ♥️ | [Natural language processing](6-NLP/README.md) | Analýza sentimentu s recenzemi hotelů 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantické hotely v Evropě ♥️ | [Natural language processing](6-NLP/README.md) | Analýza sentimentu s recenzemi hotelů 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Úvod do predikce časových řad | [Time series](7-TimeSeries/README.md) | Úvod do predikce časových řad | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Světová spotřeba energie ⚡️ - predikce časových řad s ARIMA | [Time series](7-TimeSeries/README.md) | Predikce časových řad pomocí ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Světová spotřeba energie ⚡️ - predikce časových řad s SVR | [Time series](7-TimeSeries/README.md) | Predikce časových řad pomocí Support Vector Regressoru | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Úvod do posilovaného učení | [Reinforcement learning](8-Reinforcement/README.md) | Úvod do posilovaného učení s Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Pomozte Petrovi vyhnout se vlkovi! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Posilované učení Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Scénáře a aplikace ML v reálném světě | [ML in the Wild](9-Real-World/README.md) | Zajímavé a poučné aplikace klasického ML v reálném světě | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Ladění modelů v ML pomocí RAI dashboardu | [ML in the Wild](9-Real-World/README.md) | Ladění modelů v strojovém učení pomocí komponentů dashboardu Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [najděte všechny další zdroje pro tento kurz v naší kolekci Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Offline přístup -Tuto dokumentaci můžete spustit offline pomocí [Docsify](https://docsify.js.org/#/). Forkněte tento repozitář, [nainstalujte Docsify](https://docsify.js.org/#/quickstart) na svůj lokální počítač a poté v kořenové složce tohoto repozitáře zadejte `docsify serve`. Webová stránka bude spuštěna na portu 3000 na vašem localhostu: `localhost:3000`. +Tuto dokumentaci můžete spustit offline pomocí [Docsify](https://docsify.js.org/#/). Vytvořte fork tohoto repozitáře, [nainstalujte Docsify](https://docsify.js.org/#/quickstart) na svůj lokální počítač a poté v kořenové složce tohoto repozitáře zadejte `docsify serve`. Webová stránka bude dostupná na portu 3000 na vašem localhostu: `localhost:3000`. ## PDF -Najděte PDF s osnovou a odkazy [zde](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Najděte pdf osnovy s odkazy [zde](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Další kurzy +## 🎒 Další kurzy -Náš tým vytváří další kurzy! Podívejte se: +Náš tým vytváří i další kurzy! Podívejte se na: +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + ### Azure / Edge / MCP / Agents -[![AZD pro začátečníky](https://img.shields.io/badge/AZD%20pro%20začátečníky-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI pro začátečníky](https://img.shields.io/badge/Edge%20AI%20pro%20začátečníky-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP pro začátečníky](https://img.shields.io/badge/MCP%20pro%20začátečníky-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI Agents pro začátečníky](https://img.shields.io/badge/AI%20Agents%20pro%20začátečníky-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- -### Generativní AI série -[![Generativní AI pro začátečníky](https://img.shields.io/badge/Generativní%20AI%20pro%20začátečníky-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generativní AI (.NET)](https://img.shields.io/badge/Generativní%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generativní AI (Java)](https://img.shields.io/badge/Generativní%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generativní AI (JavaScript)](https://img.shields.io/badge/Generativní%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Série Generativní AI +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- -### Základní vzdělávání -[![ML pro začátečníky](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science pro začátečníky](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI pro začátečníky](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Kybernetická bezpečnost pro začátečníky](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Webový vývoj pro začátečníky](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT pro začátečníky](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR vývoj pro začátečníky](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +### Základní učení +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Série Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Série Copilot -[![Copilot pro AI párové programování](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot pro C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Dobrodružství s Copilotem](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Získání pomoci +## Získání pomoci -Pokud se zaseknete nebo máte otázky ohledně vytváření AI aplikací, připojte se k ostatním studentům a zkušeným vývojářům v diskusích o MCP. Je to podpůrná komunita, kde jsou otázky vítány a znalosti se volně sdílejí. +Pokud se zaseknete nebo máte jakékoli dotazy ohledně vytváření AI aplikací, připojte se k ostatním studentům a zkušeným vývojářům v diskuzích o MCP. Je to podpůrná komunita, kde jsou otázky vítány a znalosti se sdílejí volně. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Pokud máte zpětnou vazbu k produktu nebo narazíte na chyby při vývoji, navštivte: +Pokud máte zpětnou vazbu k produktu nebo narazíte na chyby při vývoji, navštivte: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Prohlášení**: -Tento dokument byl přeložen pomocí služby AI pro překlad [Co-op Translator](https://github.com/Azure/co-op-translator). I když se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nejsme zodpovědní za jakékoli nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. +**Prohlášení o vyloučení odpovědnosti**: +Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné výklady vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/da/README.md b/translations/da/README.md index dae1be24b..5cc7aca63 100644 --- a/translations/da/README.md +++ b/translations/da/README.md @@ -1,35 +1,35 @@ -[![GitHub licens](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub bidragydere](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub problemer](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) [![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Velkommen](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub følgere](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) [![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub stjerner](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Multisproget support +### 🌐 Multisproget Support #### Understøttet via GitHub Action (Automatiseret & Altid Opdateret) -[Arabisk](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarsk](../bg/README.md) | [Burmesisk (Myanmar)](../my/README.md) | [Kinesisk (Forenklet)](../zh/README.md) | [Kinesisk (Traditionelt, Hong Kong)](../hk/README.md) | [Kinesisk (Traditionelt, Macau)](../mo/README.md) | [Kinesisk (Traditionelt, Taiwan)](../tw/README.md) | [Kroatisk](../hr/README.md) | [Tjekkisk](../cs/README.md) | [Dansk](./README.md) | [Hollandsk](../nl/README.md) | [Estisk](../et/README.md) | [Finsk](../fi/README.md) | [Fransk](../fr/README.md) | [Tysk](../de/README.md) | [Græsk](../el/README.md) | [Hebraisk](../he/README.md) | [Hindi](../hi/README.md) | [Ungarsk](../hu/README.md) | [Indonesisk](../id/README.md) | [Italiensk](../it/README.md) | [Japansk](../ja/README.md) | [Koreansk](../ko/README.md) | [Litauisk](../lt/README.md) | [Malaysisk](../ms/README.md) | [Marathi](../mr/README.md) | [Nepalesisk](../ne/README.md) | [Nigeriansk Pidgin](../pcm/README.md) | [Norsk](../no/README.md) | [Persisk (Farsi)](../fa/README.md) | [Polsk](../pl/README.md) | [Portugisisk (Brasilien)](../br/README.md) | [Portugisisk (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Rumænsk](../ro/README.md) | [Russisk](../ru/README.md) | [Serbisk (Kyrillisk)](../sr/README.md) | [Slovakisk](../sk/README.md) | [Slovensk](../sl/README.md) | [Spansk](../es/README.md) | [Swahili](../sw/README.md) | [Svensk](../sv/README.md) | [Tagalog (Filippinsk)](../tl/README.md) | [Tamil](../ta/README.md) | [Thai](../th/README.md) | [Tyrkisk](../tr/README.md) | [Ukrainsk](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamesisk](../vi/README.md) +[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](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) -#### Bliv en del af vores fællesskab +#### Deltag i vores fællesskab [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Vi har en Discord-serie om at lære med AI i gang, lær mere og deltag i [Learn with AI Series](https://aka.ms/learnwithai/discord) fra 18. - 30. september, 2025. Du vil få tips og tricks til at bruge GitHub Copilot til Data Science. +Vi har en Discord-serie om at lære med AI i gang, lær mere og deltag hos [Learn with AI Series](https://aka.ms/learnwithai/discord) fra 18. - 30. september 2025. Du vil få tips og tricks til at bruge GitHub Copilot til Data Science. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.da.png) @@ -37,48 +37,48 @@ Vi har en Discord-serie om at lære med AI i gang, lær mere og deltag i [Learn > 🌍 Rejs rundt i verden, mens vi udforsker maskinlæring gennem verdens kulturer 🌍 -Cloud Advocates hos Microsoft er glade for at tilbyde et 12-ugers, 26-lektioners pensum om **maskinlæring**. I dette pensum vil du lære om det, der nogle gange kaldes **klassisk maskinlæring**, primært ved brug af Scikit-learn som bibliotek og undgå dyb læring, som er dækket i vores [AI for Beginners' pensum](https://aka.ms/ai4beginners). Kombiner disse lektioner med vores ['Data Science for Beginners' pensum](https://aka.ms/ds4beginners), også! +Cloud Advocates hos Microsoft er glade for at tilbyde et 12-ugers, 26-lektioners pensum, der handler om **Maskinlæring**. I dette pensum vil du lære om det, der nogle gange kaldes **klassisk maskinlæring**, primært ved brug af Scikit-learn som bibliotek og uden dyb læring, som dækkes i vores [AI for Beginners' pensum](https://aka.ms/ai4beginners). Kombiner disse lektioner med vores ['Data Science for Beginners' pensum](https://aka.ms/ds4beginners) også! -Rejs med os rundt i verden, mens vi anvender disse klassiske teknikker på data fra mange områder af verden. Hver lektion inkluderer quizzer før og efter lektionen, skriftlige instruktioner til at gennemføre lektionen, en løsning, en opgave og mere. Vores projektbaserede pædagogik giver dig mulighed for at lære, mens du bygger, en bevist måde for nye færdigheder at 'sidde fast'. +Rejs med os rundt i verden, mens vi anvender disse klassiske teknikker på data fra mange områder af verden. Hver lektion inkluderer quizzer før og efter lektionen, skriftlige instruktioner til at gennemføre lektionen, en løsning, en opgave og mere. Vores projektbaserede pædagogik giver dig mulighed for at lære ved at bygge, en bevist metode til at få nye færdigheder til at 'sætte sig fast'. **✍️ Hjertelig tak til vores forfattere** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu og Amy Boyd **🎨 Tak også til vores illustratorer** Tomomi Imura, Dasani Madipalli og Jen Looper -**🙏 Speciel tak 🙏 til vores Microsoft Student Ambassador-forfattere, anmeldere og indholdsbidragydere**, især Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila og Snigdha Agarwal +**🙏 Særlige tak 🙏 til vores Microsoft Student Ambassador-forfattere, anmeldere og indholdsleverandører**, især Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila og Snigdha Agarwal **🤩 Ekstra tak til Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi og Vidushi Gupta for vores R-lektioner!** # Kom godt i gang Følg disse trin: -1. **Fork repositoryet**: Klik på "Fork"-knappen øverst til højre på denne side. -2. **Clone repositoryet**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +1. **Fork Repository**: Klik på "Fork" knappen øverst til højre på denne side. +2. **Klon Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` > [find alle yderligere ressourcer til dette kursus i vores Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Brug for hjælp?** Tjek vores [Fejlfindingsguide](TROUBLESHOOTING.md) for løsninger på almindelige problemer med installation, opsætning og gennemførelse af lektioner. +> 🔧 **Brug for hjælp?** Tjek vores [Fejlfinding Guide](TROUBLESHOOTING.md) for løsninger på almindelige problemer med installation, opsætning og kørsel af lektioner. -**[Studerende](https://aka.ms/student-page)**, for at bruge dette pensum, fork hele repoen til din egen GitHub-konto og gennemfør øvelserne selv eller med en gruppe: +**[Studerende](https://aka.ms/student-page)**, for at bruge dette pensum, fork hele repoet til din egen GitHub-konto og gennemfør øvelserne på egen hånd eller i gruppe: -- Start med en quiz før lektionen. -- Læs lektionen og gennemfør aktiviteterne, og stop op og reflekter ved hver videnstest. -- Prøv at skabe projekterne ved at forstå lektionerne i stedet for at køre løsningskoden; dog er den kode tilgængelig i `/solution`-mapperne i hver projektorienteret lektion. -- Tag quizzen efter lektionen. +- Start med en quiz før forelæsningen. +- Læs forelæsningen og gennemfør aktiviteterne, stop op og reflekter ved hver videnscheck. +- Prøv at skabe projekterne ved at forstå lektionerne i stedet for blot at køre løsningskoden; dog er koden tilgængelig i `/solution` mapperne i hver projektorienteret lektion. +- Tag quizzen efter forelæsningen. - Gennemfør udfordringen. - Gennemfør opgaven. -- Efter at have afsluttet en lektiongruppe, besøg [Diskussionsforumet](https://github.com/microsoft/ML-For-Beginners/discussions) og "lær højt" ved at udfylde den relevante PAT-rubrik. En 'PAT' er et Progress Assessment Tool, som er en rubrik, du udfylder for at fremme din læring. Du kan også reagere på andre PATs, så vi kan lære sammen. +- Efter at have gennemført en lektiongruppe, besøg [Diskussionsforum](https://github.com/microsoft/ML-For-Beginners/discussions) og "lær højt" ved at udfylde den relevante PAT-rubrik. En 'PAT' er et Progress Assessment Tool, som er en rubrik, du udfylder for at fremme din læring. Du kan også reagere på andres PAT'er, så vi kan lære sammen. -> For yderligere studier anbefaler vi at følge disse [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) moduler og læringsstier. +> Til yderligere studier anbefaler vi at følge disse [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) moduler og læringsstier. -**Lærere**, vi har [inkluderet nogle forslag](for-teachers.md) til, hvordan man kan bruge dette pensum. +**Lærere**, vi har [inkluderet nogle forslag](for-teachers.md) til, hvordan man bruger dette pensum. --- ## Video-gennemgange -Nogle af lektionerne er tilgængelige som korte videoer. Du kan finde alle disse i lektionerne eller på [ML for Beginners playlisten på Microsoft Developer YouTube-kanalen](https://aka.ms/ml-beginners-videos) ved at klikke på billedet nedenfor. +Nogle af lektionerne findes som korte videoer. Du kan finde dem alle integreret i lektionerne eller på [ML for Beginners playlisten på Microsoft Developer YouTube-kanalen](https://aka.ms/ml-beginners-videos) ved at klikke på billedet nedenfor. [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.da.png)](https://aka.ms/ml-beginners-videos) @@ -90,7 +90,7 @@ Nogle af lektionerne er tilgængelige som korte videoer. Du kan finde alle disse **Gif af** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Klik på billedet ovenfor for en video om projektet og folkene, der skabte det! +> 🎥 Klik på billedet ovenfor for en video om projektet og de personer, der skabte det! --- @@ -98,71 +98,79 @@ Nogle af lektionerne er tilgængelige som korte videoer. Du kan finde alle disse Vi har valgt to pædagogiske principper, mens vi byggede dette pensum: at sikre, at det er praktisk **projektbaseret** og at det inkluderer **hyppige quizzer**. Derudover har dette pensum et fælles **tema** for at give det sammenhæng. -Ved at sikre, at indholdet er tilpasset projekter, bliver processen mere engagerende for studerende, og fastholdelsen af begreber vil blive forbedret. Derudover sætter en lav-stress quiz før en klasse intentionen hos den studerende mod at lære et emne, mens en anden quiz efter klassen sikrer yderligere fastholdelse. Dette pensum er designet til at være fleksibelt og sjovt og kan tages i sin helhed eller delvist. Projekterne starter små og bliver gradvist mere komplekse ved slutningen af den 12-ugers cyklus. Dette pensum inkluderer også et efterskrift om virkelige anvendelser af ML, som kan bruges som ekstra kredit eller som grundlag for diskussion. +Ved at sikre, at indholdet stemmer overens med projekter, bliver processen mere engagerende for studerende, og fastholdelsen af koncepter vil blive øget. Derudover sætter en lavrisiko quiz før en klasse elevens intention mod at lære et emne, mens en anden quiz efter klassen sikrer yderligere fastholdelse. Dette pensum er designet til at være fleksibelt og sjovt og kan tages i sin helhed eller delvist. Projekterne starter småt og bliver gradvist mere komplekse ved slutningen af den 12-ugers cyklus. Dette pensum inkluderer også et efterskrift om virkelige anvendelser af ML, som kan bruges som ekstra kredit eller som grundlag for diskussion. -> Find vores [Adfærdskodeks](CODE_OF_CONDUCT.md), [Bidrag](CONTRIBUTING.md), [Oversættelse](TRANSLATIONS.md) og [Fejlfindings](TROUBLESHOOTING.md) retningslinjer. Vi værdsætter din konstruktive feedback! +> Find vores [Adfærdskodeks](CODE_OF_CONDUCT.md), [Bidrag](CONTRIBUTING.md), [Oversættelse](TRANSLATIONS.md) og [Fejlfinding](TROUBLESHOOTING.md) retningslinjer. Vi byder din konstruktive feedback velkommen! ## Hver lektion inkluderer - valgfri sketchnote - valgfri supplerende video -- video-gennemgang (nogle lektioner kun) -- [quiz før lektionen](https://ff-quizzes.netlify.app/en/ml/) +- video-gennemgang (kun nogle lektioner) +- [quiz før forelæsning](https://ff-quizzes.netlify.app/en/ml/) - skriftlig lektion -- for projektbaserede lektioner, trin-for-trin vejledninger om, hvordan man bygger projektet -- videnstests +- for projektbaserede lektioner, trin-for-trin vejledninger til at bygge projektet +- videnschecks - en udfordring - supplerende læsning - opgave -- [quiz efter lektionen](https://ff-quizzes.netlify.app/en/ml/) +- [quiz efter forelæsning](https://ff-quizzes.netlify.app/en/ml/) -> **En note om sprog**: Disse lektioner er primært skrevet i Python, men mange er også tilgængelige i R. For at gennemføre en R-lektion, gå til `/solution`-mappen og kig efter R-lektioner. De inkluderer en .rmd-udvidelse, der repræsenterer en **R Markdown**-fil, som kan defineres som en indlejring af `kodeblokke` (af R eller andre sprog) og en `YAML-header` (der guider, hvordan man formaterer output som PDF) i et `Markdown-dokument`. Som sådan tjener det som et eksemplarisk forfatterrammeværk for datavidenskab, da det giver dig mulighed for at kombinere din kode, dens output og dine tanker ved at skrive dem ned i Markdown. Desuden kan R Markdown-dokumenter gengives til outputformater som PDF, HTML eller Word. +> **En note om sprog**: Disse lektioner er primært skrevet i Python, men mange findes også i R. For at gennemføre en R-lektion, gå til `/solution` mappen og find R-lektionerne. De inkluderer en .rmd-udvidelse, som repræsenterer en **R Markdown** fil, der kan defineres som en indlejring af `kodeblokke` (af R eller andre sprog) og en `YAML-header` (der styrer, hvordan output som PDF formateres) i et `Markdown-dokument`. Som sådan tjener det som en eksemplarisk forfatterramme for data science, da det tillader dig at kombinere din kode, dens output og dine tanker ved at lade dig skrive dem ned i Markdown. Desuden kan R Markdown-dokumenter gengives til outputformater som PDF, HTML eller Word. -> **En note om quizzer**: Alle quizzer er indeholdt i [Quiz App-mappen](../../quiz-app), for i alt 52 quizzer med tre spørgsmål hver. De er linket fra lektionerne, men quiz-appen kan køres lokalt; følg instruktionen i `quiz-app`-mappen for at hoste lokalt eller udrulle til Azure. +> **En note om quizzer**: Alle quizzer findes i [Quiz App mappen](../../quiz-app), i alt 52 quizzer med tre spørgsmål hver. De er linket fra lektionerne, men quiz-appen kan også køres lokalt; følg instruktionerne i `quiz-app` mappen for lokal hosting eller udrulning til Azure. -| Lektion Nummer | Emne | Lektion Gruppe | Læringsmål | Linket Lektion | Forfatter | +| Lektion Nummer | Emne | Lektion Gruppe | Læringsmål | Linket Lektion | Forfatter | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Introduktion til maskinlæring | [Introduktion](1-Introduction/README.md) | Lær de grundlæggende begreber bag maskinlæring | [Lektion](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Historien om maskinlæring | [Introduktion](1-Introduction/README.md) | Lær historien bag dette felt | [Lektion](1-Introduction/2-history-of-ML/README.md) | Jen og Amy | -| 03 | Retfærdighed og maskinlæring | [Introduktion](1-Introduction/README.md) | Hvilke vigtige filosofiske spørgsmål om retfærdighed bør elever overveje, når de bygger og anvender ML-modeller? | [Lektion](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Teknikker til maskinlæring | [Introduktion](1-Introduction/README.md) | Hvilke teknikker bruger ML-forskere til at bygge ML-modeller? | [Lektion](1-Introduction/4-techniques-of-ML/README.md) | Chris og Jen | -| 05 | Introduktion til regression | [Regression](2-Regression/README.md) | Kom i gang med Python og Scikit-learn til regressionsmodeller | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Nordamerikanske græskarpriser 🎃 | [Regression](2-Regression/README.md) | Visualiser og rens data som forberedelse til ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Nordamerikanske græskarpriser 🎃 | [Regression](2-Regression/README.md) | Byg lineære og polynomiske regressionsmodeller | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen og Dmitry • Eric Wanjau | -| 08 | Nordamerikanske græskarpriser 🎃 | [Regression](2-Regression/README.md) | Byg en logistisk regressionsmodel | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | En webapp 🔌 | [Webapp](3-Web-App/README.md) | Byg en webapp til at bruge din trænede model | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Introduktion til klassifikation | [Klassifikation](4-Classification/README.md) | Rens, forbered og visualiser dine data; introduktion til klassifikation | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen og Cassie • Eric Wanjau | -| 11 | Lækre asiatiske og indiske retter 🍜 | [Klassifikation](4-Classification/README.md) | Introduktion til klassifikatorer | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen og Cassie • Eric Wanjau | -| 12 | Lækre asiatiske og indiske retter 🍜 | [Klassifikation](4-Classification/README.md) | Flere klassifikatorer | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen og Cassie • Eric Wanjau | -| 13 | Lækre asiatiske og indiske retter 🍜 | [Klassifikation](4-Classification/README.md) | Byg en anbefalingswebapp ved hjælp af din model | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Introduktion til clustering | [Clustering](5-Clustering/README.md) | Rens, forbered og visualiser dine data; introduktion til clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Udforskning af nigeriansk musiksmag 🎧 | [Clustering](5-Clustering/README.md) | Udforsk K-Means clustering-metoden | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Introduktion til naturlig sprogbehandling ☕️ | [Naturlig sprogbehandling](6-NLP/README.md) | Lær det grundlæggende om NLP ved at bygge en simpel bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Almindelige NLP-opgaver ☕️ | [Naturlig sprogbehandling](6-NLP/README.md) | Uddyb din NLP-viden ved at forstå almindelige opgaver, der kræves, når man arbejder med sproglige strukturer | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Oversættelse og sentimentanalyse ♥️ | [Naturlig sprogbehandling](6-NLP/README.md) | Oversættelse og sentimentanalyse med Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantiske hoteller i Europa ♥️ | [Naturlig sprogbehandling](6-NLP/README.md) | Sentimentanalyse med hotelanmeldelser 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantiske hoteller i Europa ♥️ | [Naturlig sprogbehandling](6-NLP/README.md) | Sentimentanalyse med hotelanmeldelser 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Introduktion til tidsserieprognoser | [Tidsserier](7-TimeSeries/README.md) | Introduktion til tidsserieprognoser | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Verdens strømforbrug ⚡️ - tidsserieprognoser med ARIMA | [Tidsserier](7-TimeSeries/README.md) | Tidsserieprognoser med ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Verdens strømforbrug ⚡️ - tidsserieprognoser med SVR | [Tidsserier](7-TimeSeries/README.md) | Tidsserieprognoser med Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Introduktion til forstærkningslæring | [Forstærkningslæring](8-Reinforcement/README.md) | Introduktion til forstærkningslæring med Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Hjælp Peter med at undgå ulven! 🐺 | [Forstærkningslæring](8-Reinforcement/README.md) | Forstærkningslæring Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Virkelige ML-scenarier og applikationer | [ML i det virkelige liv](9-Real-World/README.md) | Interessante og afslørende virkelige applikationer af klassisk ML | [Lektion](9-Real-World/1-Applications/README.md) | Team | -| Postscript | Fejlfinding af modeller i ML med RAI-dashboard | [ML i det virkelige liv](9-Real-World/README.md) | Fejlfinding af modeller i maskinlæring ved hjælp af Responsible AI-dashboardkomponenter | [Lektion](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +| 01 | Introduktion til maskinlæring | [Introduction](1-Introduction/README.md) | Lær de grundlæggende begreber bag maskinlæring | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Maskinlæringens historie | [Introduction](1-Introduction/README.md) | Lær historien bag dette felt | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Retfærdighed og maskinlæring | [Introduction](1-Introduction/README.md) | Hvad er de vigtige filosofiske spørgsmål om retfærdighed, som studerende bør overveje, når de bygger og anvender ML-modeller? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Teknikker til maskinlæring | [Introduction](1-Introduction/README.md) | Hvilke teknikker bruger ML-forskere til at bygge ML-modeller? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Introduktion til regression | [Regression](2-Regression/README.md) | Kom i gang med Python og Scikit-learn til regressionsmodeller | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Nordamerikanske græskarpriser 🎃 | [Regression](2-Regression/README.md) | Visualiser og rens data som forberedelse til ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Nordamerikanske græskarpriser 🎃 | [Regression](2-Regression/README.md) | Byg lineære og polynomielle regressionsmodeller | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Nordamerikanske græskarpriser 🎃 | [Regression](2-Regression/README.md) | Byg en logistisk regressionsmodel | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | En webapp 🔌 | [Web App](3-Web-App/README.md) | Byg en webapp til at bruge din trænede model | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Introduktion til klassifikation | [Classification](4-Classification/README.md) | Rens, forbered og visualiser dine data; introduktion til klassifikation | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Lækre asiatiske og indiske køkkener 🍜 | [Classification](4-Classification/README.md) | Introduktion til klassifikatorer | [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 | Lækre asiatiske og indiske køkkener 🍜 | [Classification](4-Classification/README.md) | Flere klassifikatorer | [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 | Lækre asiatiske og indiske køkkener 🍜 | [Classification](4-Classification/README.md) | Byg en anbefalings-webapp ved hjælp af din model | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Introduktion til clustering | [Clustering](5-Clustering/README.md) | Rens, forbered og visualiser dine data; introduktion til clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Udforskning af nigerianske musiksmag 🎧 | [Clustering](5-Clustering/README.md) | Udforsk K-Means clustering-metoden | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Introduktion til naturlig sprogbehandling ☕️ | [Natural language processing](6-NLP/README.md) | Lær det grundlæggende om NLP ved at bygge en simpel bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Almindelige NLP-opgaver ☕️ | [Natural language processing](6-NLP/README.md) | Uddyb din NLP-viden ved at forstå almindelige opgaver, der kræves ved håndtering af sproglige strukturer | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Oversættelse og sentimentanalyse ♥️ | [Natural language processing](6-NLP/README.md) | Oversættelse og sentimentanalyse med Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantiske hoteller i Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentanalyse med hotelanmeldelser 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantiske hoteller i Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentanalyse med hotelanmeldelser 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Introduktion til tidsserieprognoser | [Time series](7-TimeSeries/README.md) | Introduktion til tidsserieprognoser | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Verdens strømforbrug ⚡️ - tidsserieprognoser med ARIMA | [Time series](7-TimeSeries/README.md) | Tidsserieprognoser med ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Verdens strømforbrug ⚡️ - tidsserieprognoser med SVR | [Time series](7-TimeSeries/README.md) | Tidsserieprognoser med Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Introduktion til forstærkningslæring | [Reinforcement learning](8-Reinforcement/README.md) | Introduktion til forstærkningslæring med Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Hjælp Peter med at undgå ulven! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Forstærkningslæring Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Virkelige ML-scenarier og anvendelser | [ML in the Wild](9-Real-World/README.md) | Interessante og afslørende virkelige anvendelser af klassisk ML | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Modeldebugging i ML ved hjælp af RAI-dashboard | [ML in the Wild](9-Real-World/README.md) | Modeldebugging i maskinlæring ved hjælp af Responsible AI-dashboardkomponenter | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [find alle yderligere ressourcer til dette kursus i vores Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Offline adgang -Du kan køre denne dokumentation offline ved at bruge [Docsify](https://docsify.js.org/#/). Fork denne repo, [installer Docsify](https://docsify.js.org/#/quickstart) på din lokale maskine, og skriv derefter `docsify serve` i rodmappen af denne repo. Websitet vil blive serveret på port 3000 på din localhost: `localhost:3000`. +Du kan køre denne dokumentation offline ved at bruge [Docsify](https://docsify.js.org/#/). Fork dette repo, [installer Docsify](https://docsify.js.org/#/quickstart) på din lokale maskine, og skriv derefter i rodmappen af dette repo `docsify serve`. Websitet vil blive serveret på port 3000 på din localhost: `localhost:3000`. ## PDF'er Find en pdf af pensum med links [her](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). + ## 🎒 Andre kurser -Vores team producerer andre kurser! Tjek dem ud: +Vores team producerer andre kurser! Tjek: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agenter [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -171,7 +179,7 @@ Vores team producerer andre kurser! Tjek dem ud: [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### Generativ AI-serie [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) @@ -179,8 +187,8 @@ Vores team producerer andre kurser! Tjek dem ud: [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - -### Grundlæggende læring + +### Kerne Læring [![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) [![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) [![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) @@ -190,16 +198,16 @@ Vores team producerer andre kurser! Tjek dem ud: [![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Copilot-serien + +### Copilot Serie [![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) [![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) [![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) -## Få hjælp +## Få Hjælp -Hvis du sidder fast eller har spørgsmål om at bygge AI-apps. Deltag i diskussioner med andre lærende og erfarne udviklere om MCP. Det er et støttende fællesskab, hvor spørgsmål er velkomne, og viden deles frit. +Hvis du sidder fast eller har spørgsmål om at bygge AI-apps. Deltag med andre lærende og erfarne udviklere i diskussioner om MCP. Det er et støttende fællesskab, hvor spørgsmål er velkomne, og viden deles frit. [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) @@ -210,6 +218,6 @@ Hvis du har produktfeedback eller oplever fejl under udvikling, besøg: --- -**Ansvarsfraskrivelse**: -Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal det bemærkes, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse. +**Ansvarsfraskrivelse**: +Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, bedes du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på dets modersmål bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse. \ No newline at end of file diff --git a/translations/de/README.md b/translations/de/README.md index 996924435..7229b063c 100644 --- a/translations/de/README.md +++ b/translations/de/README.md @@ -1,49 +1,49 @@ -[![GitHub-Lizenz](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub-Mitwirkende](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub-Issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub-Pull-Requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Willkommen](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub-Beobachter](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub-Forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub-Sterne](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Mehrsprachige Unterstützung -#### Unterstützt durch GitHub Action (Automatisiert & Immer aktuell) +#### Unterstützt durch GitHub Action (Automatisiert & Immer Aktuell) -[Arabisch](../ar/README.md) | [Bengalisch](../bn/README.md) | [Bulgarisch](../bg/README.md) | [Burmesisch (Myanmar)](../my/README.md) | [Chinesisch (Vereinfacht)](../zh/README.md) | [Chinesisch (Traditionell, Hongkong)](../hk/README.md) | [Chinesisch (Traditionell, Macau)](../mo/README.md) | [Chinesisch (Traditionell, Taiwan)](../tw/README.md) | [Kroatisch](../hr/README.md) | [Tschechisch](../cs/README.md) | [Dänisch](../da/README.md) | [Niederländisch](../nl/README.md) | [Estnisch](../et/README.md) | [Finnisch](../fi/README.md) | [Französisch](../fr/README.md) | [Deutsch](./README.md) | [Griechisch](../el/README.md) | [Hebräisch](../he/README.md) | [Hindi](../hi/README.md) | [Ungarisch](../hu/README.md) | [Indonesisch](../id/README.md) | [Italienisch](../it/README.md) | [Japanisch](../ja/README.md) | [Koreanisch](../ko/README.md) | [Litauisch](../lt/README.md) | [Malaiisch](../ms/README.md) | [Marathi](../mr/README.md) | [Nepalesisch](../ne/README.md) | [Nigerianisches Pidgin](../pcm/README.md) | [Norwegisch](../no/README.md) | [Persisch (Farsi)](../fa/README.md) | [Polnisch](../pl/README.md) | [Portugiesisch (Brasilien)](../br/README.md) | [Portugiesisch (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Rumänisch](../ro/README.md) | [Russisch](../ru/README.md) | [Serbisch (Kyrillisch)](../sr/README.md) | [Slowakisch](../sk/README.md) | [Slowenisch](../sl/README.md) | [Spanisch](../es/README.md) | [Swahili](../sw/README.md) | [Schwedisch](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Thai](../th/README.md) | [Türkisch](../tr/README.md) | [Ukrainisch](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamesisch](../vi/README.md) +[Arabisch](../ar/README.md) | [Bengalisch](../bn/README.md) | [Bulgarisch](../bg/README.md) | [Birmanisch (Myanmar)](../my/README.md) | [Chinesisch (Vereinfacht)](../zh/README.md) | [Chinesisch (Traditionell, Hongkong)](../hk/README.md) | [Chinesisch (Traditionell, Macau)](../mo/README.md) | [Chinesisch (Traditionell, Taiwan)](../tw/README.md) | [Kroatisch](../hr/README.md) | [Tschechisch](../cs/README.md) | [Dänisch](../da/README.md) | [Niederländisch](../nl/README.md) | [Estnisch](../et/README.md) | [Finnisch](../fi/README.md) | [Französisch](../fr/README.md) | [Deutsch](./README.md) | [Griechisch](../el/README.md) | [Hebräisch](../he/README.md) | [Hindi](../hi/README.md) | [Ungarisch](../hu/README.md) | [Indonesisch](../id/README.md) | [Italienisch](../it/README.md) | [Japanisch](../ja/README.md) | [Kannada](../kn/README.md) | [Koreanisch](../ko/README.md) | [Litauisch](../lt/README.md) | [Malaiisch](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepalesisch](../ne/README.md) | [Nigerianisches Pidgin](../pcm/README.md) | [Norwegisch](../no/README.md) | [Persisch (Farsi)](../fa/README.md) | [Polnisch](../pl/README.md) | [Portugiesisch (Brasilien)](../br/README.md) | [Portugiesisch (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Rumänisch](../ro/README.md) | [Russisch](../ru/README.md) | [Serbisch (Kyrillisch)](../sr/README.md) | [Slowakisch](../sk/README.md) | [Slowenisch](../sl/README.md) | [Spanisch](../es/README.md) | [Swahili](../sw/README.md) | [Schwedisch](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thailändisch](../th/README.md) | [Türkisch](../tr/README.md) | [Ukrainisch](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamesisch](../vi/README.md) -#### Treten Sie unserer Community bei +#### Trete unserer Community bei [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Wir haben eine Discord-Serie zum Lernen mit KI, erfahren Sie mehr und treten Sie uns bei [Learn with AI Series](https://aka.ms/learnwithai/discord) vom 18. bis 30. September 2025 bei. Sie erhalten Tipps und Tricks zur Nutzung von GitHub Copilot für Data Science. +Wir haben eine laufende Discord-Lernreihe mit KI, erfahre mehr und mach mit bei [Learn with AI Series](https://aka.ms/learnwithai/discord) vom 18. bis 30. September 2025. Du erhältst Tipps und Tricks zur Nutzung von GitHub Copilot für Data Science. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.de.png) -# Maschinelles Lernen für Anfänger - Ein Curriculum +# Maschinelles Lernen für Anfänger – Ein Lehrplan -> 🌍 Reisen Sie um die Welt, während wir Maschinelles Lernen durch die Kulturen der Welt erkunden 🌍 +> 🌍 Reise um die Welt, während wir Maschinelles Lernen anhand von Weltkulturen erkunden 🌍 -Cloud Advocates bei Microsoft freuen sich, ein 12-wöchiges, 26-Lektionen umfassendes Curriculum rund um **Maschinelles Lernen** anzubieten. In diesem Curriculum lernen Sie das, was manchmal als **klassisches maschinelles Lernen** bezeichnet wird, hauptsächlich mit der Bibliothek Scikit-learn und ohne tiefes Lernen, das in unserem [AI for Beginners Curriculum](https://aka.ms/ai4beginners) behandelt wird. Kombinieren Sie diese Lektionen auch mit unserem ['Data Science for Beginners Curriculum'](https://aka.ms/ds4beginners). +Cloud Advocates bei Microsoft freuen sich, einen 12-wöchigen Lehrplan mit 26 Lektionen rund um **Maschinelles Lernen** anzubieten. In diesem Lehrplan lernst du, was manchmal als **klassisches maschinelles Lernen** bezeichnet wird, wobei hauptsächlich Scikit-learn als Bibliothek verwendet wird und Deep Learning vermieden wird, das in unserem [AI for Beginners'-Lehrplan](https://aka.ms/ai4beginners) behandelt wird. Kombiniere diese Lektionen auch mit unserem ['Data Science for Beginners'-Lehrplan](https://aka.ms/ds4beginners)! -Reisen Sie mit uns um die Welt, während wir diese klassischen Techniken auf Daten aus verschiedenen Regionen der Welt anwenden. Jede Lektion enthält Vor- und Nachtests, schriftliche Anweisungen zur Durchführung der Lektion, eine Lösung, eine Aufgabe und mehr. Unsere projektbasierte Pädagogik ermöglicht es Ihnen, durch das Bauen zu lernen – eine bewährte Methode, um neue Fähigkeiten zu festigen. +Reise mit uns um die Welt, während wir diese klassischen Techniken auf Daten aus vielen Regionen der Welt anwenden. Jede Lektion enthält Vor- und Nachtests, schriftliche Anweisungen zur Durchführung der Lektion, eine Lösung, eine Aufgabe und mehr. Unsere projektbasierte Pädagogik ermöglicht es dir, beim Bauen zu lernen – eine bewährte Methode, damit neue Fähigkeiten „haften bleiben“. **✍️ Herzlichen Dank an unsere Autoren** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu und Amy Boyd -**🎨 Vielen Dank auch an unsere Illustratoren** Tomomi Imura, Dasani Madipalli und Jen Looper +**🎨 Danke auch an unsere Illustratoren** Tomomi Imura, Dasani Madipalli und Jen Looper **🙏 Besonderer Dank 🙏 an unsere Microsoft Student Ambassador Autoren, Reviewer und Inhaltsbeiträger**, insbesondere Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila und Snigdha Agarwal @@ -51,164 +51,173 @@ Reisen Sie mit uns um die Welt, während wir diese klassischen Techniken auf Dat # Erste Schritte -Folgen Sie diesen Schritten: -1. **Forken Sie das Repository**: Klicken Sie auf die Schaltfläche "Fork" oben rechts auf dieser Seite. -2. **Klonen Sie das Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Folge diesen Schritten: +1. **Forke das Repository**: Klicke auf die Schaltfläche „Fork“ oben rechts auf dieser Seite. +2. **Klonen des Repositorys**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [Finden Sie alle zusätzlichen Ressourcen für diesen Kurs in unserer Microsoft Learn Sammlung](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [Finde alle zusätzlichen Ressourcen für diesen Kurs in unserer Microsoft Learn Sammlung](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +> 🔧 **Brauchst du Hilfe?** Sieh dir unseren [Troubleshooting Guide](TROUBLESHOOTING.md) für Lösungen zu häufigen Problemen bei Installation, Einrichtung und Ausführung der Lektionen an. -> 🔧 **Brauchen Sie Hilfe?** Sehen Sie sich unseren [Troubleshooting Guide](TROUBLESHOOTING.md) für Lösungen zu häufigen Problemen bei Installation, Einrichtung und Durchführung der Lektionen an. -**[Studenten](https://aka.ms/student-page)**, um dieses Curriculum zu nutzen, forken Sie das gesamte Repository in Ihr eigenes GitHub-Konto und führen Sie die Übungen alleine oder in einer Gruppe durch: +**[Schüler](https://aka.ms/student-page)**, um diesen Lehrplan zu nutzen, forke das gesamte Repo in dein eigenes GitHub-Konto und bearbeite die Übungen alleine oder in einer Gruppe: -- Beginnen Sie mit einem Quiz vor der Vorlesung. -- Lesen Sie die Vorlesung und führen Sie die Aktivitäten durch, pausieren und reflektieren Sie bei jedem Wissenscheck. -- Versuchen Sie, die Projekte zu erstellen, indem Sie die Lektionen verstehen, anstatt den Lösungscode auszuführen; dieser Code ist jedoch in den `/solution`-Ordnern jeder projektorientierten Lektion verfügbar. -- Machen Sie das Quiz nach der Vorlesung. -- Schließen Sie die Herausforderung ab. -- Schließen Sie die Aufgabe ab. -- Nach Abschluss einer Lektionengruppe besuchen Sie das [Diskussionsforum](https://github.com/microsoft/ML-For-Beginners/discussions) und "lernen laut", indem Sie das entsprechende PAT-Raster ausfüllen. Ein 'PAT' ist ein Fortschrittsbewertungstool, das ein Raster ist, das Sie ausfüllen, um Ihr Lernen zu vertiefen. Sie können auch auf andere PATs reagieren, damit wir gemeinsam lernen können. +- Beginne mit einem Vorlesungsquiz. +- Lies die Vorlesung und bearbeite die Aktivitäten, halte an und reflektiere bei jedem Wissenscheck. +- Versuche, die Projekte zu erstellen, indem du die Lektionen verstehst, anstatt nur den Lösungscode auszuführen; dieser Code ist jedoch in den `/solution`-Ordnern jeder projektorientierten Lektion verfügbar. +- Mache das Nach-der-Vorlesung-Quiz. +- Bearbeite die Herausforderung. +- Erledige die Aufgabe. +- Nach Abschluss einer Lektionengruppe besuche das [Diskussionsforum](https://github.com/microsoft/ML-For-Beginners/discussions) und „lerne laut“, indem du das passende PAT-Rubrikformular ausfüllst. Ein 'PAT' ist ein Fortschrittsbewertungstool, das du ausfüllst, um dein Lernen zu vertiefen. Du kannst auch auf andere PATs reagieren, damit wir gemeinsam lernen können. -> Für weiterführende Studien empfehlen wir, diese [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) Module und Lernpfade zu folgen. +> Für weiterführendes Studium empfehlen wir diese [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) Module und Lernpfade. -**Lehrer**, wir haben [einige Vorschläge](for-teachers.md) aufgenommen, wie Sie dieses Curriculum nutzen können. +**Lehrer**, wir haben [einige Vorschläge](for-teachers.md) zur Nutzung dieses Lehrplans aufgenommen. --- -## Videoanleitungen +## Video-Durchgänge -Einige der Lektionen sind als kurze Videos verfügbar. Sie finden alle diese Videos in den Lektionen oder auf der [ML for Beginners Playlist auf dem Microsoft Developer YouTube-Kanal](https://aka.ms/ml-beginners-videos), indem Sie auf das Bild unten klicken. +Einige der Lektionen sind als Kurzvideos verfügbar. Du findest sie alle eingebettet in den Lektionen oder auf der [ML for Beginners Playlist auf dem Microsoft Developer YouTube-Kanal](https://aka.ms/ml-beginners-videos) durch Klicken auf das Bild unten. [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.de.png)](https://aka.ms/ml-beginners-videos) --- -## Lernen Sie das Team kennen +## Das Team kennenlernen -[![Promo-Video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **Gif von** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Klicken Sie auf das Bild oben für ein Video über das Projekt und die Personen, die es erstellt haben! +> 🎥 Klicke auf das Bild oben für ein Video über das Projekt und die Personen, die es erstellt haben! --- ## Pädagogik -Wir haben zwei pädagogische Grundsätze gewählt, während wir dieses Curriculum erstellt haben: sicherzustellen, dass es **projektbasiert** ist und dass es **häufige Quizfragen** enthält. Darüber hinaus hat dieses Curriculum ein gemeinsames **Thema**, um ihm Kohärenz zu verleihen. +Wir haben beim Aufbau dieses Lehrplans zwei pädagogische Grundsätze gewählt: sicherzustellen, dass er praxisnah **projektbasiert** ist und **häufige Quizze** enthält. Außerdem hat dieser Lehrplan ein gemeinsames **Thema**, um ihm Kohärenz zu verleihen. -Indem sichergestellt wird, dass die Inhalte mit Projekten übereinstimmen, wird der Prozess für die Schüler ansprechender und die Beibehaltung der Konzepte wird verbessert. Darüber hinaus setzt ein Quiz vor der Klasse die Absicht des Schülers, ein Thema zu lernen, während ein zweites Quiz nach der Klasse die Beibehaltung weiter fördert. Dieses Curriculum wurde so gestaltet, dass es flexibel und unterhaltsam ist und ganz oder teilweise genommen werden kann. Die Projekte beginnen klein und werden bis zum Ende des 12-wöchigen Zyklus zunehmend komplexer. Dieses Curriculum enthält auch ein Nachwort zu realen Anwendungen des maschinellen Lernens, das als Zusatzpunkt oder als Grundlage für Diskussionen verwendet werden kann. +Indem sichergestellt wird, dass die Inhalte mit Projekten übereinstimmen, wird der Prozess für die Lernenden ansprechender und das Behalten der Konzepte wird verbessert. Ein Quiz vor der Klasse setzt die Lernabsicht, während ein zweites Quiz nach der Klasse die weitere Beibehaltung sichert. Dieser Lehrplan wurde flexibel und unterhaltsam gestaltet und kann ganz oder teilweise absolviert werden. Die Projekte beginnen klein und werden bis zum Ende des 12-Wochen-Zyklus zunehmend komplexer. Dieser Lehrplan enthält auch ein Nachwort zu realen Anwendungen von ML, das als Zusatzaufgabe oder Diskussionsgrundlage genutzt werden kann. -> Finden Sie unsere [Verhaltenskodex](CODE_OF_CONDUCT.md), [Beitragsrichtlinien](CONTRIBUTING.md), [Übersetzungsrichtlinien](TRANSLATIONS.md) und [Fehlerbehebung](TROUBLESHOOTING.md). Wir freuen uns über Ihr konstruktives Feedback! +> Finde unsere [Verhaltensregeln](CODE_OF_CONDUCT.md), [Beitragsrichtlinien](CONTRIBUTING.md), [Übersetzungsrichtlinien](TRANSLATIONS.md) und [Fehlerbehebung](TROUBLESHOOTING.md). Wir freuen uns auf dein konstruktives Feedback! ## Jede Lektion enthält -- optionales Sketchnote +- optionale Sketchnote - optionales ergänzendes Video -- Videoanleitung (nur einige Lektionen) -- [Quiz vor der Vorlesung](https://ff-quizzes.netlify.app/en/ml/) +- Video-Durchgang (nur einige Lektionen) +- [Vor-der-Vorlesung-Aufwärmquiz](https://ff-quizzes.netlify.app/en/ml/) - schriftliche Lektion -- für projektbasierte Lektionen, Schritt-für-Schritt-Anleitungen zum Erstellen des Projekts +- bei projektbasierten Lektionen Schritt-für-Schritt-Anleitungen zum Bau des Projekts - Wissenschecks - eine Herausforderung - ergänzende Lektüre - Aufgabe -- [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/) +- [Nach-der-Vorlesung-Quiz](https://ff-quizzes.netlify.app/en/ml/) -> **Hinweis zu den Sprachen**: Diese Lektionen sind hauptsächlich in Python geschrieben, viele sind jedoch auch in R verfügbar. Um eine R-Lektion abzuschließen, gehen Sie zum `/solution`-Ordner und suchen Sie nach R-Lektionen. Sie enthalten eine .rmd-Erweiterung, die eine **R Markdown**-Datei darstellt, die einfach als Einbettung von `Code-Schnipseln` (von R oder anderen Sprachen) und einem `YAML-Header` (der angibt, wie Ausgaben wie PDF formatiert werden sollen) in einem `Markdown-Dokument` definiert werden kann. Als solches dient es als beispielhaftes Autorierungsframework für Data Science, da es Ihnen ermöglicht, Ihren Code, dessen Ausgabe und Ihre Gedanken zu kombinieren, indem Sie sie in Markdown niederschreiben. Darüber hinaus können R Markdown-Dokumente in Ausgabeformate wie PDF, HTML oder Word gerendert werden. +> **Ein Hinweis zu den Sprachen**: Diese Lektionen sind hauptsächlich in Python geschrieben, aber viele sind auch in R verfügbar. Um eine R-Lektion abzuschließen, gehe in den `/solution`-Ordner und suche nach R-Lektionen. Diese haben eine .rmd-Erweiterung, die eine **R Markdown**-Datei darstellt, welche als Einbettung von `Code-Chunks` (von R oder anderen Sprachen) und einem `YAML-Header` (der steuert, wie Ausgaben wie PDF formatiert werden) in einem `Markdown-Dokument` definiert werden kann. Somit dient es als beispielhaftes Autorensystem für Data Science, da es dir erlaubt, deinen Code, dessen Ausgabe und deine Gedanken zu kombinieren, indem du sie in Markdown niederschreibst. Außerdem können R Markdown-Dokumente in Ausgabeformate wie PDF, HTML oder Word gerendert werden. -> **Hinweis zu den Quizfragen**: Alle Quizfragen befinden sich im [Quiz App Ordner](../../quiz-app), insgesamt 52 Quizfragen mit jeweils drei Fragen. Sie sind innerhalb der Lektionen verlinkt, aber die Quiz-App kann lokal ausgeführt werden; folgen Sie den Anweisungen im `quiz-app`-Ordner, um sie lokal zu hosten oder auf Azure bereitzustellen. +> **Ein Hinweis zu den Quizzen**: Alle Quizze befinden sich im [Quiz App Ordner](../../quiz-app), insgesamt 52 Quizze mit jeweils drei Fragen. Sie sind in den Lektionen verlinkt, aber die Quiz-App kann auch lokal ausgeführt werden; folge den Anweisungen im `quiz-app`-Ordner, um sie lokal zu hosten oder auf Azure bereitzustellen. -| Lektion Nummer | Thema | Lektionengruppe | Lernziele | Verlinkte Lektion | Autor | +| Lektion Nummer | Thema | Lektion Gruppierung | Lernziele | Verlinkte Lektion | Autor | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Einführung in maschinelles Lernen | [Einführung](1-Introduction/README.md) | Lerne die grundlegenden Konzepte des maschinellen Lernens kennen | [Lektion](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Die Geschichte des maschinellen Lernens | [Einführung](1-Introduction/README.md) | Erfahre mehr über die Geschichte dieses Fachgebiets | [Lektion](1-Introduction/2-history-of-ML/README.md) | Jen und Amy | -| 03 | Fairness und maschinelles Lernen | [Einführung](1-Introduction/README.md) | Welche wichtigen philosophischen Fragen zur Fairness sollten Studierende beim Erstellen und Anwenden von ML-Modellen berücksichtigen? | [Lektion](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Techniken des maschinellen Lernens | [Einführung](1-Introduction/README.md) | Welche Techniken verwenden ML-Forscher, um ML-Modelle zu erstellen? | [Lektion](1-Introduction/4-techniques-of-ML/README.md) | Chris und Jen | -| 05 | Einführung in die Regression | [Regression](2-Regression/README.md) | Starte mit Python und Scikit-learn für Regressionsmodelle | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Nordamerikanische Kürbispreise 🎃 | [Regression](2-Regression/README.md) | Daten visualisieren und bereinigen, um sie für ML vorzubereiten | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Nordamerikanische Kürbispreise 🎃 | [Regression](2-Regression/README.md) | Lineare und polynomiale Regressionsmodelle erstellen | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen und Dmitry • Eric Wanjau | -| 08 | Nordamerikanische Kürbispreise 🎃 | [Regression](2-Regression/README.md) | Ein logistisches Regressionsmodell erstellen | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Eine Web-App 🔌 | [Web-App](3-Web-App/README.md) | Eine Web-App erstellen, um dein trainiertes Modell zu nutzen | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Einführung in die Klassifikation | [Klassifikation](4-Classification/README.md) | Daten bereinigen, vorbereiten und visualisieren; Einführung in die Klassifikation | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen und Cassie • Eric Wanjau | -| 11 | Köstliche asiatische und indische Küche 🍜 | [Klassifikation](4-Classification/README.md) | Einführung in Klassifikatoren | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen und Cassie • Eric Wanjau | -| 12 | Köstliche asiatische und indische Küche 🍜 | [Klassifikation](4-Classification/README.md) | Weitere Klassifikatoren | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen und Cassie • Eric Wanjau | -| 13 | Köstliche asiatische und indische Küche 🍜 | [Klassifikation](4-Classification/README.md) | Eine Empfehlungs-Web-App mit deinem Modell erstellen | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Einführung in das Clustering | [Clustering](5-Clustering/README.md) | Daten bereinigen, vorbereiten und visualisieren; Einführung in das Clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Erforschung nigerianischer Musikgeschmäcker 🎧 | [Clustering](5-Clustering/README.md) | Die K-Means-Clustering-Methode erkunden | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Einführung in die Verarbeitung natürlicher Sprache ☕️ | [Verarbeitung natürlicher Sprache](6-NLP/README.md) | Lerne die Grundlagen der NLP, indem du einen einfachen Bot erstellst | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Häufige NLP-Aufgaben ☕️ | [Verarbeitung natürlicher Sprache](6-NLP/README.md) | Vertiefe dein Wissen über NLP, indem du häufige Aufgaben im Umgang mit Sprachstrukturen verstehst | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Übersetzung und Sentiment-Analyse ♥️ | [Verarbeitung natürlicher Sprache](6-NLP/README.md) | Übersetzung und Sentiment-Analyse mit Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantische Hotels in Europa ♥️ | [Verarbeitung natürlicher Sprache](6-NLP/README.md) | Sentiment-Analyse mit Hotelbewertungen 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantische Hotels in Europa ♥️ | [Verarbeitung natürlicher Sprache](6-NLP/README.md) | Sentiment-Analyse mit Hotelbewertungen 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Einführung in die Zeitreihenprognose | [Zeitreihen](7-TimeSeries/README.md) | Einführung in die Zeitreihenprognose | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Weltweiter Stromverbrauch ⚡️ - Zeitreihenprognose mit ARIMA | [Zeitreihen](7-TimeSeries/README.md) | Zeitreihenprognose mit ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Weltweiter Stromverbrauch ⚡️ - Zeitreihenprognose mit SVR | [Zeitreihen](7-TimeSeries/README.md) | Zeitreihenprognose mit Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Einführung in das Reinforcement Learning | [Reinforcement Learning](8-Reinforcement/README.md) | Einführung in das Reinforcement Learning mit Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Hilf Peter, dem Wolf zu entkommen! 🐺 | [Reinforcement Learning](8-Reinforcement/README.md) | Reinforcement Learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Szenarien und Anwendungen von ML in der Praxis | [ML in der Praxis](9-Real-World/README.md) | Interessante und aufschlussreiche reale Anwendungen des klassischen ML | [Lektion](9-Real-World/1-Applications/README.md) | Team | -| Postscript | Modell-Debugging in ML mit dem RAI-Dashboard | [ML in der Praxis](9-Real-World/README.md) | Modell-Debugging im maschinellen Lernen mit Komponenten des Responsible AI Dashboards | [Lektion](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [Finde alle zusätzlichen Ressourcen für diesen Kurs in unserer Microsoft Learn Sammlung](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 01 | Einführung in maschinelles Lernen | [Introduction](1-Introduction/README.md) | Lernen Sie die grundlegenden Konzepte des maschinellen Lernens | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Die Geschichte des maschinellen Lernens | [Introduction](1-Introduction/README.md) | Lernen Sie die Geschichte dieses Fachgebiets | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Fairness und maschinelles Lernen | [Introduction](1-Introduction/README.md) | Was sind die wichtigen philosophischen Fragen zur Fairness, die Studierende beim Erstellen und Anwenden von ML-Modellen beachten sollten? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Techniken für maschinelles Lernen | [Introduction](1-Introduction/README.md) | Welche Techniken verwenden ML-Forscher, um ML-Modelle zu erstellen? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Einführung in Regression | [Regression](2-Regression/README.md) | Einstieg in Python und Scikit-learn für Regressionsmodelle | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Nordamerikanische Kürbisspreise 🎃 | [Regression](2-Regression/README.md) | Daten visualisieren und bereinigen zur Vorbereitung für ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Nordamerikanische Kürbisspreise 🎃 | [Regression](2-Regression/README.md) | Lineare und polynomiale Regressionsmodelle erstellen | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Nordamerikanische Kürbisspreise 🎃 | [Regression](2-Regression/README.md) | Ein logistisches Regressionsmodell erstellen | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Eine Web-App 🔌 | [Web App](3-Web-App/README.md) | Erstellen Sie eine Web-App, um Ihr trainiertes Modell zu verwenden | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Einführung in die Klassifikation | [Classification](4-Classification/README.md) | Daten bereinigen, vorbereiten und visualisieren; Einführung in die Klassifikation | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Köstliche asiatische und indische Küchen 🍜 | [Classification](4-Classification/README.md) | Einführung in Klassifikatoren | [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 | Köstliche asiatische und indische Küchen 🍜 | [Classification](4-Classification/README.md) | Weitere Klassifikatoren | [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 | Köstliche asiatische und indische Küchen 🍜 | [Classification](4-Classification/README.md) | Erstellen Sie eine Empfehlungs-Web-App mit Ihrem Modell | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Einführung in Clustering | [Clustering](5-Clustering/README.md) | Daten bereinigen, vorbereiten und visualisieren; Einführung in Clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Erkundung nigerianischer Musikgeschmäcker 🎧 | [Clustering](5-Clustering/README.md) | Erforschen Sie die K-Means-Clustering-Methode | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Einführung in die Verarbeitung natürlicher Sprache ☕️ | [Natural language processing](6-NLP/README.md) | Lernen Sie die Grundlagen der NLP durch den Bau eines einfachen Bots | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Häufige NLP-Aufgaben ☕️ | [Natural language processing](6-NLP/README.md) | Vertiefen Sie Ihr NLP-Wissen durch das Verständnis häufiger Aufgaben im Umgang mit Sprachstrukturen | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Übersetzung und Sentiment-Analyse ♥️ | [Natural language processing](6-NLP/README.md) | Übersetzung und Sentiment-Analyse mit Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantische Hotels in Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentiment-Analyse mit Hotelbewertungen 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantische Hotels in Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentiment-Analyse mit Hotelbewertungen 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Einführung in Zeitreihenprognosen | [Time series](7-TimeSeries/README.md) | Einführung in Zeitreihenprognosen | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Weltstromverbrauch ⚡️ - Zeitreihenprognosen mit ARIMA | [Time series](7-TimeSeries/README.md) | Zeitreihenprognosen mit ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Weltstromverbrauch ⚡️ - Zeitreihenprognosen mit SVR | [Time series](7-TimeSeries/README.md) | Zeitreihenprognosen mit Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Einführung in Reinforcement Learning | [Reinforcement learning](8-Reinforcement/README.md) | Einführung in Reinforcement Learning mit Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Hilf Peter, dem Wolf zu entkommen! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement Learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Nachwort | ML-Szenarien und Anwendungen in der Praxis | [ML in the Wild](9-Real-World/README.md) | Interessante und aufschlussreiche reale Anwendungen klassischer ML | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Nachwort | Modell-Debugging in ML mit RAI-Dashboard | [ML in the Wild](9-Real-World/README.md) | Modell-Debugging im maschinellen Lernen mit Komponenten des Responsible AI Dashboards | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [finden Sie alle zusätzlichen Ressourcen für diesen Kurs in unserer Microsoft Learn Sammlung](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Offline-Zugriff -Du kannst diese Dokumentation offline nutzen, indem du [Docsify](https://docsify.js.org/#/) verwendest. Forke dieses Repository, [installiere Docsify](https://docsify.js.org/#/quickstart) auf deinem lokalen Rechner und gib dann im Stammverzeichnis dieses Repos `docsify serve` ein. Die Website wird auf Port 3000 auf deinem localhost bereitgestellt: `localhost:3000`. +Sie können diese Dokumentation offline mit [Docsify](https://docsify.js.org/#/) ausführen. Forken Sie dieses Repository, [installieren Sie Docsify](https://docsify.js.org/#/quickstart) auf Ihrem lokalen Rechner und geben Sie dann im Stammverzeichnis dieses Repos `docsify serve` ein. Die Website wird auf Port 3000 auf Ihrem lokalen Host bereitgestellt: `localhost:3000`. ## PDFs -Finde ein PDF des Curriculums mit Links [hier](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Finden Sie ein PDF des Lehrplans mit Links [hier](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Weitere Kurse +## 🎒 Andere Kurse -Unser Team erstellt weitere Kurse! Schau dir an: +Unser Team produziert weitere Kurse! Schauen Sie sich an: -### Azure / Edge / MCP / Agents -[![AZD für Anfänger](https://img.shields.io/badge/AZD%20für%20Anfänger-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI für Anfänger](https://img.shields.io/badge/Edge%20AI%20für%20Anfänger-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP für Anfänger](https://img.shields.io/badge/MCP%20für%20Anfänger-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![KI-Agenten für Anfänger](https://img.shields.io/badge/KI-Agenten%20für%20Anfänger-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j für Anfänger](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js für Anfänger](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Generative KI-Serie -[![Generative KI für Anfänger](https://img.shields.io/badge/Generative%20KI%20für%20Anfänger-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generative KI (.NET)](https://img.shields.io/badge/Generative%20KI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generative KI (Java)](https://img.shields.io/badge/Generative%20KI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generative KI (JavaScript)](https://img.shields.io/badge/Generative%20KI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agents +[![AZD für Anfänger](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI für Anfänger](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP für Anfänger](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![KI-Agenten für Anfänger](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Generative KI-Serie +[![Generative KI für Anfänger](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative KI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +--- + ### Kernlernen -[![ML für Anfänger](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Datenwissenschaft für Anfänger](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![KI für Anfänger](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cybersicherheit für Anfänger](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Webentwicklung für Anfänger](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT für Anfänger](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR-Entwicklung für Anfänger](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Copilot-Serie +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot-Serie -[![Copilot für KI-gestütztes Pair-Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot für C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot-Abenteuer](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +## Hilfe erhalten -## Hilfe erhalten +Wenn Sie feststecken oder Fragen zum Erstellen von KI-Anwendungen haben. Treten Sie anderen Lernenden und erfahrenen Entwicklern in Diskussionen über MCP bei. Es ist eine unterstützende Gemeinschaft, in der Fragen willkommen sind und Wissen frei geteilt wird. -Wenn du nicht weiterkommst oder Fragen zum Erstellen von KI-Anwendungen hast, tritt der Diskussion mit anderen Lernenden und erfahrenen Entwicklern über MCP bei. Es ist eine unterstützende Community, in der Fragen willkommen sind und Wissen frei geteilt wird. - -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Wenn du Produktfeedback geben oder Fehler beim Erstellen melden möchtest, besuche: +Wenn Sie Produktfeedback oder Fehler beim Erstellen haben, besuchen Sie: -[![Microsoft Foundry Entwicklerforum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Haftungsausschluss**: -Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache ist als maßgebliche Quelle zu betrachten. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/el/README.md b/translations/el/README.md index 5e6134e39..bc6611ab4 100644 --- a/translations/el/README.md +++ b/translations/el/README.md @@ -1,35 +1,35 @@ -[![Άδεια GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Συνεργάτες GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Θέματα GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Αιτήματα GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Παρακολουθήσεις GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Forks GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Αστέρια GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Υποστήριξη Πολλαπλών Γλωσσών +### 🌐 Υποστήριξη Πολλών Γλωσσών #### Υποστηρίζεται μέσω GitHub Action (Αυτοματοποιημένο & Πάντα Ενημερωμένο) - -[Αραβικά](../ar/README.md) | [Βεγγαλικά](../bn/README.md) | [Βουλγαρικά](../bg/README.md) | [Βιρμανικά (Μιανμάρ)](../my/README.md) | [Κινέζικα (Απλοποιημένα)](../zh/README.md) | [Κινέζικα (Παραδοσιακά, Χονγκ Κονγκ)](../hk/README.md) | [Κινέζικα (Παραδοσιακά, Μακάου)](../mo/README.md) | [Κινέζικα (Παραδοσιακά, Ταϊβάν)](../tw/README.md) | [Κροατικά](../hr/README.md) | [Τσέχικα](../cs/README.md) | [Δανικά](../da/README.md) | [Ολλανδικά](../nl/README.md) | [Εσθονικά](../et/README.md) | [Φινλανδικά](../fi/README.md) | [Γαλλικά](../fr/README.md) | [Γερμανικά](../de/README.md) | [Ελληνικά](./README.md) | [Εβραϊκά](../he/README.md) | [Χίντι](../hi/README.md) | [Ουγγρικά](../hu/README.md) | [Ινδονησιακά](../id/README.md) | [Ιταλικά](../it/README.md) | [Ιαπωνικά](../ja/README.md) | [Κορεατικά](../ko/README.md) | [Λιθουανικά](../lt/README.md) | [Μαλαισιανά](../ms/README.md) | [Μαραθικά](../mr/README.md) | [Νεπαλικά](../ne/README.md) | [Νιγηριανά Pidgin](../pcm/README.md) | [Νορβηγικά](../no/README.md) | [Περσικά (Φαρσί)](../fa/README.md) | [Πολωνικά](../pl/README.md) | [Πορτογαλικά (Βραζιλία)](../br/README.md) | [Πορτογαλικά (Πορτογαλία)](../pt/README.md) | [Παντζάμπι (Γκουρμούκι)](../pa/README.md) | [Ρουμανικά](../ro/README.md) | [Ρωσικά](../ru/README.md) | [Σερβικά (Κυριλλικά)](../sr/README.md) | [Σλοβακικά](../sk/README.md) | [Σλοβενικά](../sl/README.md) | [Ισπανικά](../es/README.md) | [Σουαχίλι](../sw/README.md) | [Σουηδικά](../sv/README.md) | [Ταγκάλογκ (Φιλιππινέζικα)](../tl/README.md) | [Ταμίλ](../ta/README.md) | [Ταϊλανδικά](../th/README.md) | [Τουρκικά](../tr/README.md) | [Ουκρανικά](../uk/README.md) | [Ουρντού](../ur/README.md) | [Βιετναμέζικα](../vi/README.md) - + +[Αραβικά](../ar/README.md) | [Μπενγκάλι](../bn/README.md) | [Βουλγαρικά](../bg/README.md) | [Βιρμανικά (Μιανμάρ)](../my/README.md) | [Κινέζικα (Απλοποιημένα)](../zh/README.md) | [Κινέζικα (Παραδοσιακά, Χονγκ Κονγκ)](../hk/README.md) | [Κινέζικα (Παραδοσιακά, Μακάο)](../mo/README.md) | [Κινέζικα (Παραδοσιακά, Ταϊβάν)](../tw/README.md) | [Κροατικά](../hr/README.md) | [Τσέχικα](../cs/README.md) | [Δανέζικα](../da/README.md) | [Ολλανδικά](../nl/README.md) | [Εσθονικά](../et/README.md) | [Φινλανδικά](../fi/README.md) | [Γαλλικά](../fr/README.md) | [Γερμανικά](../de/README.md) | [Ελληνικά](./README.md) | [Εβραϊκά](../he/README.md) | [Χίντι](../hi/README.md) | [Ουγγρικά](../hu/README.md) | [Ινδονησιακά](../id/README.md) | [Ιταλικά](../it/README.md) | [Ιαπωνικά](../ja/README.md) | [Κανάντα](../kn/README.md) | [Κορεατικά](../ko/README.md) | [Λιθουανικά](../lt/README.md) | [Μαλαϊκά](../ms/README.md) | [Μαλαγιαλάμ](../ml/README.md) | [Μαράθι](../mr/README.md) | [Νεπάλι](../ne/README.md) | [Νιγηριανή Πίτζιν](../pcm/README.md) | [Νορβηγικά](../no/README.md) | [Περσικά (Φαρσί)](../fa/README.md) | [Πολωνικά](../pl/README.md) | [Πορτογαλικά (Βραζιλία)](../br/README.md) | [Πορτογαλικά (Πορτογαλία)](../pt/README.md) | [Πουντζάμπι (Γκουρμούκι)](../pa/README.md) | [Ρουμανικά](../ro/README.md) | [Ρωσικά](../ru/README.md) | [Σερβικά (Κυριλλικά)](../sr/README.md) | [Σλοβακικά](../sk/README.md) | [Σλοβενικά](../sl/README.md) | [Ισπανικά](../es/README.md) | [Σουαχίλι](../sw/README.md) | [Σουηδικά](../sv/README.md) | [Ταγκάλογκ (Φιλιππινέζικα)](../tl/README.md) | [Ταμίλ](../ta/README.md) | [Τελούγκου](../te/README.md) | [Ταϊλανδικά](../th/README.md) | [Τουρκικά](../tr/README.md) | [Ουκρανικά](../uk/README.md) | [Ουρντού](../ur/README.md) | [Βιετναμέζικα](../vi/README.md) + -#### Γίνετε Μέλος της Κοινότητάς μας +#### Ελάτε στην Κοινότητά μας [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Έχουμε μια σειρά εκμάθησης με AI στο Discord, μάθετε περισσότερα και γίνετε μέλος μας στο [Learn with AI Series](https://aka.ms/learnwithai/discord) από τις 18 - 30 Σεπτεμβρίου, 2025. Θα λάβετε συμβουλές και τεχνικές για τη χρήση του GitHub Copilot για Data Science. +Έχουμε μια σειρά Discord "Μάθε με AI" σε εξέλιξη, μάθετε περισσότερα και συμμετάσχετε μαζί μας στο [Learn with AI Series](https://aka.ms/learnwithai/discord) από 18 έως 30 Σεπτεμβρίου 2025. Θα λάβετε συμβουλές και κόλπα για τη χρήση του GitHub Copilot για Data Science. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.el.png) @@ -37,178 +37,187 @@ CO_OP_TRANSLATOR_METADATA: > 🌍 Ταξιδέψτε σε όλο τον κόσμο καθώς εξερευνούμε τη Μηχανική Μάθηση μέσω των πολιτισμών του κόσμου 🌍 -Οι Cloud Advocates της Microsoft είναι στην ευχάριστη θέση να προσφέρουν ένα πρόγραμμα σπουδών 12 εβδομάδων, 26 μαθημάτων, που αφορά τη **Μηχανική Μάθηση**. Σε αυτό το πρόγραμμα σπουδών, θα μάθετε για αυτό που μερικές φορές αποκαλείται **κλασική μηχανική μάθηση**, χρησιμοποιώντας κυρίως τη βιβλιοθήκη Scikit-learn και αποφεύγοντας τη βαθιά μάθηση, η οποία καλύπτεται στο [πρόγραμμα σπουδών AI για Αρχάριους](https://aka.ms/ai4beginners). Συνδυάστε αυτά τα μαθήματα με το πρόγραμμα σπουδών ['Data Science για Αρχάριους'](https://aka.ms/ds4beginners), επίσης! +Οι Cloud Advocates της Microsoft είναι στην ευχάριστη θέση να προσφέρουν ένα πρόγραμμα σπουδών 12 εβδομάδων, 26 μαθημάτων, που αφορά τη **Μηχανική Μάθηση**. Σε αυτό το πρόγραμμα, θα μάθετε για ό,τι μερικές φορές ονομάζεται **κλασική μηχανική μάθηση**, χρησιμοποιώντας κυρίως τη βιβλιοθήκη Scikit-learn και αποφεύγοντας τη βαθιά μάθηση, η οποία καλύπτεται στο [πρόγραμμα AI για Αρχάριους](https://aka.ms/ai4beginners). Συνδυάστε αυτά τα μαθήματα με το ['Data Science για Αρχάριους' πρόγραμμα](https://aka.ms/ds4beginners), επίσης! -Ταξιδέψτε μαζί μας σε όλο τον κόσμο καθώς εφαρμόζουμε αυτές τις κλασικές τεχνικές σε δεδομένα από πολλές περιοχές του κόσμου. Κάθε μάθημα περιλαμβάνει κουίζ πριν και μετά το μάθημα, γραπτές οδηγίες για την ολοκλήρωση του μαθήματος, μια λύση, μια εργασία και πολλά άλλα. Η παιδαγωγική μας προσέγγιση που βασίζεται σε έργα σας επιτρέπει να μάθετε ενώ δημιουργείτε, ένας αποδεδειγμένος τρόπος για να αποκτήσετε νέες δεξιότητες. +Ταξιδέψτε μαζί μας σε όλο τον κόσμο καθώς εφαρμόζουμε αυτές τις κλασικές τεχνικές σε δεδομένα από πολλές περιοχές του κόσμου. Κάθε μάθημα περιλαμβάνει κουίζ πριν και μετά το μάθημα, γραπτές οδηγίες για την ολοκλήρωση του μαθήματος, λύση, ανάθεση και άλλα. Η παιδαγωγική μας που βασίζεται σε έργα σας επιτρέπει να μαθαίνετε ενώ δημιουργείτε, ένας αποδεδειγμένος τρόπος για να "εγκατασταθούν" νέες δεξιότητες. **✍️ Θερμές ευχαριστίες στους συγγραφείς μας** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu και Amy Boyd -**🎨 Ευχαριστίες επίσης στους εικονογράφους μας** Tomomi Imura, Dasani Madipalli και Jen Looper +**🎨 Ευχαριστίες επίσης στους εικονογράφους μας** Tomomi Imura, Dasani Madipalli, και Jen Looper -**🙏 Ειδικές ευχαριστίες 🙏 στους Microsoft Student Ambassador συγγραφείς, κριτές και συνεισφέροντες περιεχομένου**, ιδιαίτερα στους Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila και Snigdha Agarwal +**🙏 Ειδικές ευχαριστίες 🙏 στους Microsoft Student Ambassador συγγραφείς, κριτές και συνεισφέροντες περιεχομένου**, ιδιαίτερα στους Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, και Snigdha Agarwal -**🤩 Επιπλέον ευγνωμοσύνη στους Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi και Vidushi Gupta για τα μαθήματα R μας!** +**🤩 Επιπλέον ευγνωμοσύνη στους Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, και Vidushi Gupta για τα μαθήματα R!** # Ξεκινώντας Ακολουθήστε αυτά τα βήματα: -1. **Κάντε Fork το Αποθετήριο**: Κάντε κλικ στο κουμπί "Fork" στην επάνω δεξιά γωνία αυτής της σελίδας. +1. **Κάντε Fork το Αποθετήριο**: Κάντε κλικ στο κουμπί "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) +> [βρείτε όλους τους επιπλέον πόρους για αυτό το μάθημα στη συλλογή μας Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Χρειάζεστε βοήθεια;** Ελέγξτε τον [Οδηγό Αντιμετώπισης Προβλημάτων](TROUBLESHOOTING.md) για λύσεις σε κοινά προβλήματα με την εγκατάσταση, τη ρύθμιση και την εκτέλεση μαθημάτων. +> 🔧 **Χρειάζεστε βοήθεια;** Ελέγξτε τον [Οδηγό Επίλυσης Προβλημάτων](TROUBLESHOOTING.md) για λύσεις σε κοινά ζητήματα με την εγκατάσταση, τη ρύθμιση και την εκτέλεση μαθημάτων. -**[Φοιτητές](https://aka.ms/student-page)**, για να χρησιμοποιήσετε αυτό το πρόγραμμα σπουδών, κάντε fork ολόκληρο το αποθετήριο στον δικό σας λογαριασμό GitHub και ολοκληρώστε τις ασκήσεις μόνοι σας ή με μια ομάδα: -- Ξεκινήστε με ένα κουίζ πριν το μάθημα. -- Διαβάστε το μάθημα και ολοκληρώστε τις δραστηριότητες, σταματώντας και αναλογιζόμενοι σε κάθε έλεγχο γνώσεων. -- Προσπαθήστε να δημιουργήσετε τα έργα κατανοώντας τα μαθήματα αντί να εκτελείτε τον κώδικα λύσης. Ωστόσο, αυτός ο κώδικας είναι διαθέσιμος στους φακέλους `/solution` σε κάθε μάθημα που βασίζεται σε έργο. -- Κάντε το κουίζ μετά το μάθημα. +**[Φοιτητές](https://aka.ms/student-page)**, για να χρησιμοποιήσετε αυτό το πρόγραμμα, κάντε fork ολόκληρο το αποθετήριο στον δικό σας λογαριασμό GitHub και ολοκληρώστε τις ασκήσεις μόνοι σας ή με ομάδα: + +- Ξεκινήστε με ένα κουίζ προ-διάλεξης. +- Διαβάστε τη διάλεξη και ολοκληρώστε τις δραστηριότητες, σταματώντας και σκεπτόμενοι σε κάθε έλεγχο γνώσης. +- Προσπαθήστε να δημιουργήσετε τα έργα κατανοώντας τα μαθήματα αντί να τρέχετε τον κώδικα λύσης· ωστόσο, αυτός ο κώδικας είναι διαθέσιμος στους φακέλους `/solution` σε κάθε μάθημα προσανατολισμένο σε έργο. +- Κάντε το κουίζ μετά τη διάλεξη. - Ολοκληρώστε την πρόκληση. -- Ολοκληρώστε την εργασία. -- Αφού ολοκληρώσετε μια ομάδα μαθημάτων, επισκεφθείτε τον [Πίνακα Συζητήσεων](https://github.com/microsoft/ML-For-Beginners/discussions) και "μάθετε δυνατά" συμπληρώνοντας το κατάλληλο PAT rubric. Ένα 'PAT' είναι ένα Εργαλείο Αξιολόγησης Προόδου που είναι ένα rubric που συμπληρώνετε για να προωθήσετε τη μάθησή σας. Μπορείτε επίσης να αντιδράσετε σε άλλα PATs ώστε να μάθουμε μαζί. +- Ολοκληρώστε την ανάθεση. +- Μετά την ολοκλήρωση μιας ομάδας μαθημάτων, επισκεφθείτε το [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) και "μάθετε δυνατά" συμπληρώνοντας το κατάλληλο PAT rubric. Ένα 'PAT' είναι ένα Εργαλείο Αξιολόγησης Προόδου που είναι ένα rubric που συμπληρώνετε για να προωθήσετε τη μάθησή σας. Μπορείτε επίσης να αντιδράσετε σε άλλα PATs ώστε να μάθουμε μαζί. -> Για περαιτέρω μελέτη, προτείνουμε να ακολουθήσετε αυτά τα [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modules και μονοπάτια μάθησης. +> Για περαιτέρω μελέτη, προτείνουμε να ακολουθήσετε αυτά τα [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) μαθήματα και διαδρομές μάθησης. -**Δάσκαλοι**, έχουμε [συμπεριλάβει κάποιες προτάσεις](for-teachers.md) για το πώς να χρησιμοποιήσετε αυτό το πρόγραμμα σπουδών. +**Καθηγητές**, έχουμε [συμπεριλάβει μερικές προτάσεις](for-teachers.md) για το πώς να χρησιμοποιήσετε αυτό το πρόγραμμα. --- -## Βίντεο οδηγίες +## Βίντεο περιηγήσεις -Μερικά από τα μαθήματα είναι διαθέσιμα ως σύντομα βίντεο. Μπορείτε να βρείτε όλα αυτά ενσωματωμένα στα μαθήματα ή στη [λίστα αναπαραγωγής ML για Αρχάριους στο κανάλι Microsoft Developer στο YouTube](https://aka.ms/ml-beginners-videos) κάνοντας κλικ στην εικόνα παρακάτω. +Μερικά από τα μαθήματα είναι διαθέσιμα ως σύντομα βίντεο. Μπορείτε να βρείτε όλα αυτά ενσωματωμένα στα μαθήματα ή στη [λίστα αναπαραγωγής ML for Beginners στο κανάλι Microsoft Developer στο YouTube](https://aka.ms/ml-beginners-videos) κάνοντας κλικ στην εικόνα παρακάτω. -[![ML για αρχάριους banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.el.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.el.png)](https://aka.ms/ml-beginners-videos) --- ## Γνωρίστε την Ομάδα -[![Προωθητικό βίντεο](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **Gif από** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα βίντεο σχετικά με το έργο και τους ανθρώπους που το δημιούργησαν! +> 🎥 Κάντε κλικ στην παραπάνω εικόνα για ένα βίντεο σχετικά με το έργο και τους ανθρώπους που το δημιούργησαν! --- ## Παιδαγωγική -Επιλέξαμε δύο παιδαγωγικές αρχές κατά τη δημιουργία αυτού του προγράμματος σπουδών: να διασφαλίσουμε ότι είναι πρακτικό **βασισμένο σε έργα** και ότι περιλαμβάνει **συχνά κουίζ**. Επιπλέον, αυτό το πρόγραμμα σπουδών έχει ένα κοινό **θέμα** για να του δώσει συνοχή. +Έχουμε επιλέξει δύο παιδαγωγικές αρχές κατά την κατασκευή αυτού του προγράμματος: να είναι πρακτικό και **βασισμένο σε έργα** και να περιλαμβάνει **συχνά κουίζ**. Επιπλέον, αυτό το πρόγραμμα έχει ένα κοινό **θέμα** για να του δώσει συνοχή. -Με τη διασφάλιση ότι το περιεχόμενο ευθυγραμμίζεται με έργα, η διαδικασία γίνεται πιο ενδιαφέρουσα για τους μαθητές και η διατήρηση των εννοιών θα ενισχυθεί. Επιπλέον, ένα κουίζ χαμηλού κινδύνου πριν από την τάξη θέτει την πρόθεση του μαθητή προς την εκμάθηση ενός θέματος, ενώ ένα δεύτερο κουίζ μετά την τάξη διασφαλίζει περαιτέρω διατήρηση. Αυτό το πρόγραμμα σπουδών σχεδιάστηκε για να είναι ευέλικτο και διασκεδαστικό και μπορεί να ληφθεί ολόκληρο ή εν μέρει. Τα έργα ξεκινούν μικρά και γίνονται όλο και πιο περίπλοκα μέχρι το τέλος του κύκλου των 12 εβδομάδων. Αυτό το πρόγραμμα σπουδών περιλαμβάνει επίσης ένα επίλογο για τις εφαρμογές της Μηχανικής Μάθησης στον πραγματικό κόσμο, που μπορεί να χρησιμοποιηθεί ως επιπλέον πίστωση ή ως βάση για συζήτηση. +Εξασφαλίζοντας ότι το περιεχόμενο ευθυγραμμίζεται με τα έργα, η διαδικασία γίνεται πιο ελκυστική για τους μαθητές και η διατήρηση των εννοιών θα αυξηθεί. Επιπλέον, ένα κουίζ χαμηλού ρίσκου πριν από το μάθημα θέτει την πρόθεση του μαθητή προς τη μάθηση ενός θέματος, ενώ ένα δεύτερο κουίζ μετά το μάθημα εξασφαλίζει περαιτέρω διατήρηση. Αυτό το πρόγραμμα σχεδιάστηκε να είναι ευέλικτο και διασκεδαστικό και μπορεί να ληφθεί ολόκληρο ή μεμονωμένα. Τα έργα ξεκινούν μικρά και γίνονται ολοένα και πιο σύνθετα μέχρι το τέλος του 12-εβδομαδιαίου κύκλου. Αυτό το πρόγραμμα περιλαμβάνει επίσης ένα επίμετρο για τις πραγματικές εφαρμογές της ΜΜ, το οποίο μπορεί να χρησιμοποιηθεί ως επιπλέον βαθμός ή ως βάση για συζήτηση. -> Βρείτε τον [Κώδικα Συμπεριφοράς](CODE_OF_CONDUCT.md), [Συμβολή](CONTRIBUTING.md), [Μετάφραση](TRANSLATIONS.md) και [Οδηγίες Αντιμετώπισης Προβλημάτων](TROUBLESHOOTING.md). Καλωσορίζουμε τα εποικοδομητικά σας σχόλια! +> Βρείτε τους [Κανόνες Συμπεριφοράς](CODE_OF_CONDUCT.md), [Συμβολή](CONTRIBUTING.md), [Μετάφραση](TRANSLATIONS.md) και [Οδηγό Επίλυσης Προβλημάτων](TROUBLESHOOTING.md). Καλωσορίζουμε τα εποικοδομητικά σας σχόλια! ## Κάθε μάθημα περιλαμβάνει - προαιρετικό σκίτσο - προαιρετικό συμπληρωματικό βίντεο -- βίντεο οδηγίες (μόνο σε ορισμένα μαθήματα) -- [κουίζ προθέρμανσης πριν το μάθημα](https://ff-quizzes.netlify.app/en/ml/) +- βίντεο περιήγησης (μόνο σε μερικά μαθήματα) +- [κουίζ προθέρμανσης πριν τη διάλεξη](https://ff-quizzes.netlify.app/en/ml/) - γραπτό μάθημα -- για μαθήματα που βασίζονται σε έργα, οδηγίες βήμα προς βήμα για το πώς να δημιουργήσετε το έργο -- έλεγχοι γνώσεων +- για μαθήματα βασισμένα σε έργα, βήμα-βήμα οδηγίες για το πώς να κατασκευάσετε το έργο +- ελέγχους γνώσης - μια πρόκληση - συμπληρωματική ανάγνωση -- εργασία -- [κουίζ μετά το μάθημα](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 document`. Ως εκ τούτου, χρησιμεύει ως ένα εξαιρετικό πλαίσιο συγγραφής για την επιστήμη δεδομένων, καθώς σας επιτρέπει να συνδυάσετε τον κώδικά σας, την έξοδό του και τις σκέψεις σας γράφοντάς τες σε Markdown. Επιπλέον, τα έγγραφα R Markdown μπορούν να αποδοθούν σε μορφές εξαγωγής όπως PDF, HTML ή Word. +> **Σημείωση για τις γλώσσες**: Αυτά τα μαθήματα είναι κυρίως γραμμένα σε Python, αλλά πολλά είναι επίσης διαθέσιμα σε R. Για να ολοκληρώσετε ένα μάθημα R, πηγαίνετε στο φάκελο `/solution` και αναζητήστε μαθήματα R. Περιλαμβάνουν επέκταση .rmd που αντιπροσωπεύει ένα αρχείο **R Markdown**, το οποίο μπορεί να οριστεί απλά ως ενσωμάτωση `κομματιών κώδικα` (σε R ή άλλες γλώσσες) και `YAML header` (που καθοδηγεί πώς να μορφοποιηθούν οι έξοδοι όπως PDF) σε ένα `Markdown έγγραφο`. Ως εκ τούτου, λειτουργεί ως ένα εξαιρετικό πλαίσιο συγγραφής για την επιστήμη δεδομένων, καθώς σας επιτρέπει να συνδυάσετε τον κώδικά σας, την έξοδό του και τις σκέψεις σας γράφοντάς τες σε Markdown. Επιπλέον, τα έγγραφα R Markdown μπορούν να αποδοθούν σε μορφές εξόδου όπως PDF, HTML ή Word. -> **Σημείωση για τα κουίζ**: Όλα τα κουίζ περιέχονται στον [φάκελο Quiz App](../../quiz-app), για συνολικά 52 κουίζ των τριών ερωτήσεων το καθένα. Συνδέονται από μέσα στα μαθήματα, αλλά η εφαρμογή κουίζ μπορεί να εκτελεστεί τοπικά. Ακολουθήστε τις οδηγίες στον φάκελο `quiz-app` για τοπική φιλοξενία ή ανάπτυξη στο Azure. +> **Σημείωση για τα κουίζ**: Όλα τα κουίζ περιέχονται στον [φάκελο Quiz App](../../quiz-app), για συνολικά 52 κουίζ με τρεις ερωτήσεις το καθένα. Συνδέονται μέσα στα μαθήματα, αλλά η εφαρμογή κουίζ μπορεί να τρέξει τοπικά· ακολουθήστε τις οδηγίες στον φάκελο `quiz-app` για τοπική φιλοξενία ή ανάπτυξη στο Azure. -| Αριθμός Μαθήματος | Θέμα | Ομαδοποίηση Μαθημάτων | Στόχοι Μάθησης | Συνδεδεμένο Μάθημα | Συγγραφέας | +| Αριθμός Μαθήματος | Θέμα | Ομαδοποίηση Μαθήματος | Στόχοι Μάθησης | Συνδεδεμένο Μάθημα | Συγγραφέας | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Εισαγωγή στη μηχανική μάθηση | [Εισαγωγή](1-Introduction/README.md) | Μάθετε τις βασικές έννοιες πίσω από τη μηχανική μάθηση | [Μάθημα](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Η Ιστορία της μηχανικής μάθησης | [Εισαγωγή](1-Introduction/README.md) | Μάθετε την ιστορία που υποστηρίζει αυτόν τον τομέα | [Μάθημα](1-Introduction/2-history-of-ML/README.md) | Jen και Amy | -| 03 | Δικαιοσύνη και μηχανική μάθηση | [Εισαγωγή](1-Introduction/README.md) | Ποια είναι τα σημαντικά φιλοσοφικά ζητήματα γύρω από τη δικαιοσύνη που πρέπει να λάβουν υπόψη οι μαθητές κατά την κατασκευή και εφαρμογή μοντέλων ML; | [Μάθημα](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Τεχνικές για μηχανική μάθηση | [Εισαγωγή](1-Introduction/README.md) | Ποιες τεχνικές χρησιμοποιούν οι ερευνητές ML για να κατασκευάσουν μοντέλα ML; | [Μάθημα](1-Introduction/4-techniques-of-ML/README.md) | Chris και Jen | -| 05 | Εισαγωγή στην παλινδρόμηση | [Παλινδρόμηση](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 | Τιμές κολοκύθας στη Βόρεια Αμερική 🎃 | [Παλινδρόμηση](2-Regression/README.md) | Οπτικοποιήστε και καθαρίστε δεδομένα για προετοιμασία ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Τιμές κολοκύθας στη Βόρεια Αμερική 🎃 | [Παλινδρόμηση](2-Regression/README.md) | Δημιουργήστε γραμμικά και πολυωνυμικά μοντέλα παλινδρόμησης | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen και Dmitry • Eric Wanjau | -| 08 | Τιμές κολοκύθας στη Βόρεια Αμερική 🎃 | [Παλινδρόμηση](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 | Μια Εφαρμογή Ιστού 🔌 | [Εφαρμογή Ιστού](3-Web-App/README.md) | Δημιουργήστε μια εφαρμογή ιστού για να χρησιμοποιήσετε το εκπαιδευμένο μοντέλο σας | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Εισαγωγή στην ταξινόμηση | [Ταξινόμηση](4-Classification/README.md) | Καθαρίστε, προετοιμάστε και οπτικοποιήστε τα δεδομένα σας· εισαγωγή στην ταξινόμηση | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen και Cassie • Eric Wanjau | -| 11 | Νόστιμες ασιατικές και ινδικές κουζίνες 🍜 | [Ταξινόμηση](4-Classification/README.md) | Εισαγωγή στους ταξινομητές | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen και Cassie • Eric Wanjau | -| 12 | Νόστιμες ασιατικές και ινδικές κουζίνες 🍜 | [Ταξινόμηση](4-Classification/README.md) | Περισσότεροι ταξινομητές | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen και Cassie • Eric Wanjau | -| 13 | Νόστιμες ασιατικές και ινδικές κουζίνες 🍜 | [Ταξινόμηση](4-Classification/README.md) | Δημιουργήστε μια εφαρμογή ιστού συστάσεων χρησιμοποιώντας το μοντέλο σας | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Εισαγωγή στην ομαδοποίηση | [Ομαδοποίηση](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 | Εξερεύνηση μουσικών προτιμήσεων της Νιγηρίας 🎧 | [Ομαδοποίηση](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 | Εισαγωγή στην επεξεργασία φυσικής γλώσσας ☕️ | [Επεξεργασία φυσικής γλώσσας](6-NLP/README.md) | Μάθετε τα βασικά για την επεξεργασία φυσικής γλώσσας δημιουργώντας ένα απλό bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Κοινές εργασίες NLP ☕️ | [Επεξεργασία φυσικής γλώσσας](6-NLP/README.md) | Εμβαθύνετε τις γνώσεις σας στην επεξεργασία φυσικής γλώσσας κατανοώντας κοινές εργασίες που απαιτούνται κατά την αντιμετώπιση δομών γλώσσας | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Μετάφραση και ανάλυση συναισθημάτων ♥️ | [Επεξεργασία φυσικής γλώσσας](6-NLP/README.md) | Μετάφραση και ανάλυση συναισθημάτων με τη Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Ρομαντικά ξενοδοχεία της Ευρώπης ♥️ | [Επεξεργασία φυσικής γλώσσας](6-NLP/README.md) | Ανάλυση συναισθημάτων με κριτικές ξενοδοχείων 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Ρομαντικά ξενοδοχεία της Ευρώπης ♥️ | [Επεξεργασία φυσικής γλώσσας](6-NLP/README.md) | Ανάλυση συναισθημάτων με κριτικές ξενοδοχείων 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Εισαγωγή στην πρόβλεψη χρονοσειρών | [Χρονοσειρές](7-TimeSeries/README.md) | Εισαγωγή στην πρόβλεψη χρονοσειρών | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Χρήση ενέργειας παγκοσμίως ⚡️ - πρόβλεψη χρονοσειρών με ARIMA | [Χρονοσειρές](7-TimeSeries/README.md) | Πρόβλεψη χρονοσειρών με ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Χρήση ενέργειας παγκοσμίως ⚡️ - πρόβλεψη χρονοσειρών με SVR | [Χρονοσειρές](7-TimeSeries/README.md) | Πρόβλεψη χρονοσειρών με Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Εισαγωγή στην ενισχυτική μάθηση | [Ενισχυτική μάθηση](8-Reinforcement/README.md) | Εισαγωγή στην ενισχυτική μάθηση με Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Βοηθήστε τον Peter να αποφύγει τον λύκο! 🐺 | [Ενισχυτική μάθηση](8-Reinforcement/README.md) | Ενισχυτική μάθηση Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Επίλογος | Σενάρια και εφαρμογές ML στον πραγματικό κόσμο | [ML στον πραγματικό κόσμο](9-Real-World/README.md) | Ενδιαφέρουσες και αποκαλυπτικές εφαρμογές κλασικής μηχανικής μάθησης | [Μάθημα](9-Real-World/1-Applications/README.md) | Ομάδα | -| Επίλογος | Εντοπισμός σφαλμάτων μοντέλων ML χρησιμοποιώντας τον πίνακα RAI | [ML στον πραγματικό κόσμο](9-Real-World/README.md) | Εντοπισμός σφαλμάτων μοντέλων μηχανικής μάθησης χρησιμοποιώντας στοιχεία του πίνακα Υπεύθυνης Τεχνητής Νοημοσύνης | [Μάθημα](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) +| 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) | Ποια είναι τα σημαντικά φιλοσοφικά ζητήματα γύρω από τη δικαιοσύνη που πρέπει να λάβουν υπόψη οι μαθητές κατά την κατασκευή και εφαρμογή μοντέλων ML; | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Τεχνικές για μηχανική μάθηση | [Introduction](1-Introduction/README.md) | Ποιες τεχνικές χρησιμοποιούν οι ερευνητές ML για να κατασκευάσουν μοντέλα ML; | [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) | Οπτικοποιήστε και καθαρίστε δεδομένα σε προετοιμασία για ML | [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 Εφαρμογή 🔌 | [Web App](3-Web-App/README.md) | Κατασκευάστε μια web εφαρμογή για να χρησιμοποιήσετε το εκπαιδευμένο σας μοντέλο | [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) | Κατασκευάστε μια web εφαρμογή συστάσεων χρησιμοποιώντας το μοντέλο σας | [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 κατασκευάζοντας ένα απλό bot | [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) | Μετάφραση και ανάλυση συναισθήματος με την Jane Austen | [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) | Πρόβλεψη χρονοσειρών με Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Εισαγωγή στην ενισχυτική μάθηση | [Reinforcement learning](8-Reinforcement/README.md) | Εισαγωγή στην ενισχυτική μάθηση με Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Βοήθησε τον Πέτρο να αποφύγει τον λύκο! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Ενισχυτική μάθηση Gym | [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 | Εντοπισμός σφαλμάτων μοντέλων ML με το RAI dashboard | [ML in the Wild](9-Real-World/README.md) | Εντοπισμός σφαλμάτων μοντέλων στη Μηχανική Μάθηση χρησιμοποιώντας τα στοιχεία του Responsible AI dashboard | [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`. +Μπορείτε να εκτελέσετε αυτήν την τεκμηρίωση εκτός σύνδεσης χρησιμοποιώντας το [Docsify](https://docsify.js.org/#/). Κάντε fork αυτό το αποθετήριο, [εγκαταστήστε το Docsify](https://docsify.js.org/#/quickstart) στον τοπικό σας υπολογιστή και στη συνέχεια στον ριζικό φάκελο αυτού του αποθετηρίου, πληκτρολογήστε `docsify serve`. Η ιστοσελίδα θα σερβιριστεί στην πόρτα 3000 στο localhost σας: `localhost:3000`. -## PDFs +## PDF Βρείτε ένα pdf του προγράμματος σπουδών με συνδέσμους [εδώ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Άλλα Μαθήματα +## 🎒 Άλλα Μαθήματα + +Η ομάδα μας παράγει και άλλα μαθήματα! Δείτε: -Η ομάδα μας δημιουργεί και άλλα μαθήματα! Δείτε: + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agents -[![AZD για Αρχάριους](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI για Αρχάριους](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP για Αρχάριους](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI Agents για Αρχάριους](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- -### Σειρά Γενετικής Τεχνητής Νοημοσύνης -[![Γενετική Τεχνητή Νοημοσύνη για Αρχάριους](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Γενετική Τεχνητή Νοημοσύνη (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Γενετική Τεχνητή Νοημοσύνη (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Γενετική Τεχνητή Νοημοσύνη (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Σειρά Generative AI +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- ### Βασική Μάθηση -[![ML για Αρχάριους](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Επιστήμη Δεδομένων για Αρχάριους](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI για Αρχάριους](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Κυβερνοασφάλεια για Αρχάριους](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web Development για Αρχάριους](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT για Αρχάριους](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Ανάπτυξη XR για Αρχάριους](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Σειρά Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Σειρά Copilot -[![Copilot για Συνεργατικό Προγραμματισμό AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot για C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Περιπέτεια](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Λήψη Βοήθειας +## Λήψη Βοήθειας -Αν κολλήσετε ή έχετε ερωτήσεις σχετικά με την ανάπτυξη εφαρμογών AI, συμμετάσχετε σε συζητήσεις με άλλους μαθητές και έμπειρους προγραμματιστές για το MCP. Είναι μια υποστηρικτική κοινότητα όπου οι ερωτήσεις είναι ευπρόσδεκτες και η γνώση μοιράζεται ελεύθερα. +Εάν κολλήσετε ή έχετε οποιεσδήποτε ερωτήσεις σχετικά με την κατασκευή εφαρμογών AI. Ενταχθείτε σε άλλους μαθητές και έμπειρους προγραμματιστές σε συζητήσεις για το MCP. Είναι μια υποστηρικτική κοινότητα όπου οι ερωτήσεις είναι ευπρόσδεκτες και η γνώση μοιράζεται ελεύθερα. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Αν έχετε σχόλια για προϊόντα ή αντιμετωπίζετε σφάλματα κατά την ανάπτυξη, επισκεφθείτε: +Εάν έχετε σχόλια για το προϊόν ή σφάλματα κατά την κατασκευή, επισκεφθείτε: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να λάβετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/en/README.md b/translations/en/README.md index 4cc5b4bfb..a49f36c47 100644 --- a/translations/en/README.md +++ b/translations/en/README.md @@ -1,126 +1,127 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Multi-Language Support +### 🌐 Multi-Language Support -#### Supported via GitHub Action (Automated & Always Up-to-Date) +#### Supported via GitHub Action (Automated & Always Up-to-Date) - -[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) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/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) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) - + +[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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + -#### Join Our Community +#### Join Our Community -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -We have a Discord learn with AI series ongoing, learn more and join us at [Learn with AI Series](https://aka.ms/learnwithai/discord) from 18 - 30 September, 2025. You will get tips and tricks of using GitHub Copilot for Data Science. +We have a Discord learn with AI series ongoing, learn more and join us at [Learn with AI Series](https://aka.ms/learnwithai/discord) from 18 - 30 September, 2025. You will get tips and tricks of using GitHub Copilot for Data Science. -![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.en.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.en.png) -# Machine Learning for Beginners - A Curriculum +# Machine Learning for Beginners - A Curriculum -> 🌍 Travel around the world as we explore Machine Learning by means of world cultures 🌍 +> 🌍 Travel around the world as we explore Machine Learning by means of world cultures 🌍 -Cloud Advocates at Microsoft are pleased to offer a 12-week, 26-lesson curriculum all about **Machine Learning**. In this curriculum, you will learn about what is sometimes called **classic machine learning**, using primarily Scikit-learn as a library and avoiding deep learning, which is covered in our [AI for Beginners' curriculum](https://aka.ms/ai4beginners). Pair these lessons with our ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners), as well! +Cloud Advocates at Microsoft are pleased to offer a 12-week, 26-lesson curriculum all about **Machine Learning**. In this curriculum, you will learn about what is sometimes called **classic machine learning**, using primarily Scikit-learn as a library and avoiding deep learning, which is covered in our [AI for Beginners' curriculum](https://aka.ms/ai4beginners). Pair these lessons with our ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners), as well! -Travel with us around the world as we apply these classic techniques to data from many areas of the world. Each lesson includes pre- and post-lesson quizzes, written instructions to complete the lesson, a solution, an assignment, and more. Our project-based pedagogy allows you to learn while building, a proven way for new skills to 'stick'. +Travel with us around the world as we apply these classic techniques to data from many areas of the world. Each lesson includes pre- and post-lesson quizzes, written instructions to complete the lesson, a solution, an assignment, and more. Our project-based pedagogy allows you to learn while building, a proven way for new skills to 'stick'. -**✍️ Hearty thanks to our authors** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu and Amy Boyd +**✍️ Hearty thanks to our authors** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu and Amy Boyd -**🎨 Thanks as well to our illustrators** Tomomi Imura, Dasani Madipalli, and Jen Looper +**🎨 Thanks as well to our illustrators** Tomomi Imura, Dasani Madipalli, and Jen Looper -**🙏 Special thanks 🙏 to our Microsoft Student Ambassador authors, reviewers, and content contributors**, notably Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, and Snigdha Agarwal +**🙏 Special thanks 🙏 to our Microsoft Student Ambassador authors, reviewers, and content contributors**, notably Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, and Snigdha Agarwal -**🤩 Extra gratitude to Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, and Vidushi Gupta for our R lessons!** +**🤩 Extra gratitude to Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, and Vidushi Gupta for our R lessons!** -# Getting Started +# Getting Started -Follow these steps: -1. **Fork the Repository**: Click on the "Fork" button at the top-right corner of this page. -2. **Clone the Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Follow these steps: +1. **Fork the Repository**: Click on the "Fork" button at the top-right corner of this page. +2. **Clone the Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [find all additional resources for this course in our Microsoft Learn collection](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [find all additional resources for this course in our Microsoft Learn collection](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Need help?** Check our [Troubleshooting Guide](TROUBLESHOOTING.md) for solutions to common issues with installation, setup, and running lessons. +> 🔧 **Need help?** Check our [Troubleshooting Guide](TROUBLESHOOTING.md) for solutions to common issues with installation, setup, and running lessons. -**[Students](https://aka.ms/student-page)**, to use this curriculum, fork the entire repo to your own GitHub account and complete the exercises on your own or with a group: -- Start with a pre-lecture quiz. -- Read the lecture and complete the activities, pausing and reflecting at each knowledge check. -- Try to create the projects by comprehending the lessons rather than running the solution code; however that code is available in the `/solution` folders in each project-oriented lesson. -- Take the post-lecture quiz. -- Complete the challenge. -- Complete the assignment. -- After completing a lesson group, visit the [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) and "learn out loud" by filling out the appropriate PAT rubric. A 'PAT' is a Progress Assessment Tool that is a rubric you fill out to further your learning. You can also react to other PATs so we can learn together. +**[Students](https://aka.ms/student-page)**, to use this curriculum, fork the entire repo to your own GitHub account and complete the exercises on your own or with a group: -> For further study, we recommend following these [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modules and learning paths. +- Start with a pre-lecture quiz. +- Read the lecture and complete the activities, pausing and reflecting at each knowledge check. +- Try to create the projects by comprehending the lessons rather than running the solution code; however that code is available in the `/solution` folders in each project-oriented lesson. +- Take the post-lecture quiz. +- Complete the challenge. +- Complete the assignment. +- After completing a lesson group, visit the [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) and "learn out loud" by filling out the appropriate PAT rubric. A 'PAT' is a Progress Assessment Tool that is a rubric you fill out to further your learning. You can also react to other PATs so we can learn together. -**Teachers**, we have [included some suggestions](for-teachers.md) on how to use this curriculum. +> For further study, we recommend following these [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modules and learning paths. ---- +**Teachers**, we have [included some suggestions](for-teachers.md) on how to use this curriculum. -## Video walkthroughs +--- -Some of the lessons are available as short form video. You can find all these in-line in the lessons, or on the [ML for Beginners playlist on the Microsoft Developer YouTube channel](https://aka.ms/ml-beginners-videos) by clicking the image below. +## Video walkthroughs -[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.en.png)](https://aka.ms/ml-beginners-videos) +Some of the lessons are available as short form video. You can find all these in-line in the lessons, or on the [ML for Beginners playlist on the Microsoft Developer YouTube channel](https://aka.ms/ml-beginners-videos) by clicking the image below. ---- +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.en.png)](https://aka.ms/ml-beginners-videos) -## Meet the Team +--- -[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +## Meet the Team -**Gif by** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -> 🎥 Click the image above for a video about the project and the folks who created it! +**Gif by** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) ---- +> 🎥 Click the image above for a video about the project and the folks who created it! + +--- -## Pedagogy +## Pedagogy -We have chosen two pedagogical tenets while building this curriculum: ensuring that it is hands-on **project-based** and that it includes **frequent quizzes**. In addition, this curriculum has a common **theme** to give it cohesion. +We have chosen two pedagogical tenets while building this curriculum: ensuring that it is hands-on **project-based** and that it includes **frequent quizzes**. In addition, this curriculum has a common **theme** to give it cohesion. -By ensuring that the content aligns with projects, the process is made more engaging for students and retention of concepts will be augmented. In addition, a low-stakes quiz before a class sets the intention of the student towards learning a topic, while a second quiz after class ensures further retention. This curriculum was designed to be flexible and fun and can be taken in whole or in part. The projects start small and become increasingly complex by the end of the 12-week cycle. This curriculum also includes a postscript on real-world applications of ML, which can be used as extra credit or as a basis for discussion. +By ensuring that the content aligns with projects, the process is made more engaging for students and retention of concepts will be augmented. In addition, a low-stakes quiz before a class sets the intention of the student towards learning a topic, while a second quiz after class ensures further retention. This curriculum was designed to be flexible and fun and can be taken in whole or in part. The projects start small and become increasingly complex by the end of the 12-week cycle. This curriculum also includes a postscript on real-world applications of ML, which can be used as extra credit or as a basis for discussion. -> Find our [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), and [Troubleshooting](TROUBLESHOOTING.md) guidelines. We welcome your constructive feedback! +> Find our [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), and [Troubleshooting](TROUBLESHOOTING.md) guidelines. We welcome your constructive feedback! -## Each lesson includes +## Each lesson includes -- optional sketchnote -- optional supplemental video -- video walkthrough (some lessons only) -- [pre-lecture warmup quiz](https://ff-quizzes.netlify.app/en/ml/) -- written lesson -- for project-based lessons, step-by-step guides on how to build the project -- knowledge checks -- a challenge -- supplemental reading -- assignment -- [post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) +- optional sketchnote +- optional supplemental video +- video walkthrough (some lessons only) +- [pre-lecture warmup quiz](https://ff-quizzes.netlify.app/en/ml/) +- written lesson +- for project-based lessons, step-by-step guides on how to build the project +- knowledge checks +- a challenge +- supplemental reading +- assignment +- [post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -> **A note about languages**: These lessons are primarily written in Python, but many are also available in R. To complete an R lesson, go to the `/solution` folder and look for R lessons. They include an .rmd extension that represents an **R Markdown** file which can be simply defined as an embedding of `code chunks` (of R or other languages) and a `YAML header` (that guides how to format outputs such as PDF) in a `Markdown document`. As such, it serves as an exemplary authoring framework for data science since it allows you to combine your code, its output, and your thoughts by allowing you to write them down in Markdown. Moreover, R Markdown documents can be rendered to output formats such as PDF, HTML, or Word. +> **A note about languages**: These lessons are primarily written in Python, but many are also available in R. To complete an R lesson, go to the `/solution` folder and look for R lessons. They include an .rmd extension that represents an **R Markdown** file which can be simply defined as an embedding of `code chunks` (of R or other languages) and a `YAML header` (that guides how to format outputs such as PDF) in a `Markdown document`. As such, it serves as an exemplary authoring framework for data science since it allows you to combine your code, its output, and your thoughts by allowing you to write them down in Markdown. Moreover, R Markdown documents can be rendered to output formats such as PDF, HTML, or Word. -> **A note about quizzes**: All quizzes are contained in [Quiz App folder](../../quiz-app), for 52 total quizzes of three questions each. They are linked from within the lessons but the quiz app can be run locally; follow the instruction in the `quiz-app` folder to locally host or deploy to Azure. +> **A note about quizzes**: All quizzes are contained in [Quiz App folder](../../quiz-app), for 52 total quizzes of three questions each. They are linked from within the lessons but the quiz app can be run locally; follow the instruction in the `quiz-app` folder to locally host or deploy to Azure. -| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | | 01 | Introduction to machine learning | [Introduction](1-Introduction/README.md) | Learn the basic concepts behind machine learning | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | | 02 | The History of machine learning | [Introduction](1-Introduction/README.md) | Learn the history underlying this field | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | | 03 | Fairness and machine learning | [Introduction](1-Introduction/README.md) | What are the important philosophical issues around fairness that students should consider when building and applying ML models? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | @@ -165,6 +166,12 @@ Find a pdf of the curriculum with links [here](https://microsoft.github.io/ML-Fo Our team produces other courses! Check out: +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) [![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -182,34 +189,35 @@ Our team produces other courses! Check out: --- ### Core Learning -[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Copilot Series +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot Series -[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Getting Help +## Getting Help -If you get stuck or have any questions about building AI apps, join fellow learners and experienced developers in discussions about MCP. It's a supportive community where questions are welcome and knowledge is shared freely. +If you get stuck or have any questions about building AI apps. Join fellow learners and experienced developers in discussions about MCP. It's a supportive community where questions are welcome and knowledge is shared freely. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -If you have product feedback or encounter errors while building, visit: +If you have product feedback or errors while building visit: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Disclaimer**: -This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation. +**Disclaimer**: +This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/es/README.md b/translations/es/README.md index 4df01b5c5..0fc8ba009 100644 --- a/translations/es/README.md +++ b/translations/es/README.md @@ -1,213 +1,223 @@ -[![Licencia de GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Contribuidores de GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Problemas de GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Solicitudes de extracción de GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Bienvenidos](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Observadores de GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Bifurcaciones de GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Estrellas de GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Soporte Multilingüe +### 🌐 Soporte Multilingüe -#### Soportado a través de GitHub Action (Automatizado y Siempre Actualizado) +#### Soportado mediante GitHub Action (Automatizado y Siempre Actualizado) -[Árabe](../ar/README.md) | [Bengalí](../bn/README.md) | [Búlgaro](../bg/README.md) | [Birmano (Myanmar)](../my/README.md) | [Chino (Simplificado)](../zh/README.md) | [Chino (Tradicional, Hong Kong)](../hk/README.md) | [Chino (Tradicional, Macao)](../mo/README.md) | [Chino (Tradicional, Taiwán)](../tw/README.md) | [Croata](../hr/README.md) | [Checo](../cs/README.md) | [Danés](../da/README.md) | [Holandés](../nl/README.md) | [Estonio](../et/README.md) | [Finlandés](../fi/README.md) | [Francés](../fr/README.md) | [Alemán](../de/README.md) | [Griego](../el/README.md) | [Hebreo](../he/README.md) | [Hindi](../hi/README.md) | [Húngaro](../hu/README.md) | [Indonesio](../id/README.md) | [Italiano](../it/README.md) | [Japonés](../ja/README.md) | [Coreano](../ko/README.md) | [Lituano](../lt/README.md) | [Malayo](../ms/README.md) | [Maratí](../mr/README.md) | [Nepalí](../ne/README.md) | [Pidgin Nigeriano](../pcm/README.md) | [Noruego](../no/README.md) | [Persa (Farsi)](../fa/README.md) | [Polaco](../pl/README.md) | [Portugués (Brasil)](../br/README.md) | [Portugués (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Rumano](../ro/README.md) | [Ruso](../ru/README.md) | [Serbio (Cirílico)](../sr/README.md) | [Eslovaco](../sk/README.md) | [Esloveno](../sl/README.md) | [Español](./README.md) | [Swahili](../sw/README.md) | [Sueco](../sv/README.md) | [Tagalo (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Tailandés](../th/README.md) | [Turco](../tr/README.md) | [Ucraniano](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamita](../vi/README.md) +[Árabe](../ar/README.md) | [Bengalí](../bn/README.md) | [Búlgaro](../bg/README.md) | [Birmano (Myanmar)](../my/README.md) | [Chino (Simplificado)](../zh/README.md) | [Chino (Tradicional, Hong Kong)](../hk/README.md) | [Chino (Tradicional, Macao)](../mo/README.md) | [Chino (Tradicional, Taiwán)](../tw/README.md) | [Croata](../hr/README.md) | [Checo](../cs/README.md) | [Danés](../da/README.md) | [Holandés](../nl/README.md) | [Estonio](../et/README.md) | [Finlandés](../fi/README.md) | [Francés](../fr/README.md) | [Alemán](../de/README.md) | [Griego](../el/README.md) | [Hebreo](../he/README.md) | [Hindi](../hi/README.md) | [Húngaro](../hu/README.md) | [Indonesio](../id/README.md) | [Italiano](../it/README.md) | [Japonés](../ja/README.md) | [Kannada](../kn/README.md) | [Coreano](../ko/README.md) | [Lituano](../lt/README.md) | [Malayo](../ms/README.md) | [Malayalam](../ml/README.md) | [Maratí](../mr/README.md) | [Nepalí](../ne/README.md) | [Pidgin Nigeriano](../pcm/README.md) | [Noruego](../no/README.md) | [Persa (Farsi)](../fa/README.md) | [Polaco](../pl/README.md) | [Portugués (Brasil)](../br/README.md) | [Portugués (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Rumano](../ro/README.md) | [Ruso](../ru/README.md) | [Serbio (Cirílico)](../sr/README.md) | [Eslovaco](../sk/README.md) | [Esloveno](../sl/README.md) | [Español](./README.md) | [Swahili](../sw/README.md) | [Sueco](../sv/README.md) | [Tagalo (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Tailandés](../th/README.md) | [Turco](../tr/README.md) | [Ucraniano](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamita](../vi/README.md) -#### Únete a Nuestra Comunidad +#### Únete a Nuestra Comunidad -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Tenemos una serie de aprendizaje con IA en Discord en curso, aprende más y únete a nosotros en [Serie de Aprendizaje con IA](https://aka.ms/learnwithai/discord) del 18 al 30 de septiembre de 2025. Obtendrás consejos y trucos para usar GitHub Copilot en Ciencia de Datos. +Tenemos una serie en Discord para aprender con IA en curso, aprende más y únete a nosotros en [Learn with AI Series](https://aka.ms/learnwithai/discord) del 18 al 30 de septiembre de 2025. Obtendrás consejos y trucos para usar GitHub Copilot para Ciencia de Datos. -![Serie de Aprendizaje con IA](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.es.png) +![Serie Aprende con IA](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.es.png) -# Aprendizaje Automático para Principiantes - Un Currículo +# Aprendizaje Automático para Principiantes - Un Currículo -> 🌍 Viaja por el mundo mientras exploramos el Aprendizaje Automático a través de las culturas del mundo 🌍 +> 🌍 Viaja alrededor del mundo mientras exploramos el Aprendizaje Automático a través de las culturas del mundo 🌍 -Los Cloud Advocates de Microsoft se complacen en ofrecer un currículo de 12 semanas y 26 lecciones sobre **Aprendizaje Automático**. En este currículo, aprenderás sobre lo que a veces se llama **aprendizaje automático clásico**, utilizando principalmente Scikit-learn como biblioteca y evitando el aprendizaje profundo, que se cubre en nuestro [currículo de IA para Principiantes](https://aka.ms/ai4beginners). Combina estas lecciones con nuestro [currículo de Ciencia de Datos para Principiantes](https://aka.ms/ds4beginners), ¡también! +Los Cloud Advocates de Microsoft se complacen en ofrecer un currículo de 12 semanas y 26 lecciones sobre **Aprendizaje Automático**. En este currículo, aprenderás sobre lo que a veces se llama **aprendizaje automático clásico**, usando principalmente Scikit-learn como biblioteca y evitando el aprendizaje profundo, que se cubre en nuestro [currículo de IA para principiantes](https://aka.ms/ai4beginners). ¡Combina estas lecciones con nuestro ['Currículo de Ciencia de Datos para Principiantes'](https://aka.ms/ds4beginners)! -Viaja con nosotros por el mundo mientras aplicamos estas técnicas clásicas a datos de muchas áreas del mundo. Cada lección incluye cuestionarios previos y posteriores a la lección, instrucciones escritas para completar la lección, una solución, una tarea y más. Nuestra pedagogía basada en proyectos te permite aprender mientras construyes, una forma comprobada de que las nuevas habilidades "se queden". +Viaja con nosotros alrededor del mundo mientras aplicamos estas técnicas clásicas a datos de muchas áreas del mundo. Cada lección incluye cuestionarios antes y después de la lección, instrucciones escritas para completar la lección, una solución, una tarea y más. Nuestra pedagogía basada en proyectos te permite aprender mientras construyes, una forma comprobada para que las nuevas habilidades se afiancen. -**✍️ Un agradecimiento especial a nuestros autores** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu y Amy Boyd +**✍️ Muchas gracias a nuestros autores** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu y Amy Boyd -**🎨 Gracias también a nuestros ilustradores** Tomomi Imura, Dasani Madipalli y Jen Looper +**🎨 Gracias también a nuestros ilustradores** Tomomi Imura, Dasani Madipalli y Jen Looper -**🙏 Agradecimiento especial 🙏 a nuestros autores, revisores y colaboradores de contenido Microsoft Student Ambassador**, en particular Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila y Snigdha Agarwal +**🙏 Agradecimientos especiales 🙏 a nuestros autores, revisores y colaboradores de contenido Microsoft Student Ambassador**, especialmente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila y Snigdha Agarwal -**🤩 Gratitud extra a los Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi y Vidushi Gupta por nuestras lecciones en R!** +**🤩 Gratitud extra a los Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi y Vidushi Gupta por nuestras lecciones en R!** -# Comenzando +# Comenzando -Sigue estos pasos: -1. **Haz un Fork del Repositorio**: Haz clic en el botón "Fork" en la esquina superior derecha de esta página. -2. **Clona el Repositorio**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Sigue estos pasos: +1. **Haz un Fork del Repositorio**: Haz clic en el botón "Fork" en la esquina superior derecha de esta página. +2. **Clona el Repositorio**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [encuentra todos los recursos adicionales para este curso en nuestra colección de Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [encuentra todos los recursos adicionales para este curso en nuestra colección de Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +> 🔧 **¿Necesitas ayuda?** Consulta nuestra [Guía de Solución de Problemas](TROUBLESHOOTING.md) para soluciones a problemas comunes con la instalación, configuración y ejecución de lecciones. -> 🔧 **¿Necesitas ayuda?** Consulta nuestra [Guía de Solución de Problemas](TROUBLESHOOTING.md) para soluciones a problemas comunes con la instalación, configuración y ejecución de lecciones. -**[Estudiantes](https://aka.ms/student-page)**, para usar este currículo, haz un fork de todo el repositorio en tu propia cuenta de GitHub y completa los ejercicios por tu cuenta o con un grupo: +**[Estudiantes](https://aka.ms/student-page)**, para usar este currículo, haz un fork de todo el repositorio a tu propia cuenta de GitHub y completa los ejercicios por tu cuenta o en grupo: -- Comienza con un cuestionario previo a la lección. -- Lee la lección y completa las actividades, haciendo pausas y reflexionando en cada verificación de conocimiento. -- Intenta crear los proyectos comprendiendo las lecciones en lugar de ejecutar el código de solución; sin embargo, ese código está disponible en las carpetas `/solution` en cada lección orientada a proyectos. -- Realiza el cuestionario posterior a la lección. -- Completa el desafío. -- Completa la tarea. -- Después de completar un grupo de lecciones, visita el [Tablero de Discusión](https://github.com/microsoft/ML-For-Beginners/discussions) y "aprende en voz alta" completando la rúbrica PAT correspondiente. Un 'PAT' es una Herramienta de Evaluación de Progreso que es una rúbrica que completas para profundizar tu aprendizaje. También puedes reaccionar a otros PATs para que podamos aprender juntos. +- Comienza con un cuestionario previo a la lección. +- Lee la lección y completa las actividades, haciendo pausas y reflexionando en cada verificación de conocimiento. +- Intenta crear los proyectos comprendiendo las lecciones en lugar de ejecutar el código solución; sin embargo, ese código está disponible en las carpetas `/solution` en cada lección orientada a proyectos. +- Realiza el cuestionario posterior a la lección. +- Completa el desafío. +- Completa la tarea. +- Después de completar un grupo de lecciones, visita el [Foro de Discusión](https://github.com/microsoft/ML-For-Beginners/discussions) y "aprende en voz alta" llenando la rúbrica PAT correspondiente. Un 'PAT' es una Herramienta de Evaluación de Progreso que es una rúbrica que llenas para avanzar en tu aprendizaje. También puedes reaccionar a otros PATs para que aprendamos juntos. -> Para un estudio más profundo, recomendamos seguir estos módulos y rutas de aprendizaje de [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +> Para estudios adicionales, recomendamos seguir estos módulos y rutas de aprendizaje de [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). -**Profesores**, hemos [incluido algunas sugerencias](for-teachers.md) sobre cómo usar este currículo. +**Profesores**, hemos [incluido algunas sugerencias](for-teachers.md) sobre cómo usar este currículo. --- -## Videos explicativos +## Videos explicativos -Algunas de las lecciones están disponibles en formato de video corto. Puedes encontrar todos estos en las lecciones, o en la [lista de reproducción de ML para Principiantes en el canal de YouTube de Microsoft Developer](https://aka.ms/ml-beginners-videos) haciendo clic en la imagen a continuación. +Algunas de las lecciones están disponibles en formato de video corto. Puedes encontrarlos en línea dentro de las lecciones, o en la [lista de reproducción ML for Beginners en el canal de Microsoft Developer en YouTube](https://aka.ms/ml-beginners-videos) haciendo clic en la imagen a continuación. -[![Banner de ML para principiantes](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.es.png)](https://aka.ms/ml-beginners-videos) +[![Banner ML para principiantes](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.es.png)](https://aka.ms/ml-beginners-videos) --- -## Conoce al Equipo +## Conoce al Equipo -[![Video promocional](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Video promocional](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif por** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif por** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 ¡Haz clic en la imagen de arriba para ver un video sobre el proyecto y las personas que lo crearon! +> 🎥 ¡Haz clic en la imagen de arriba para ver un video sobre el proyecto y las personas que lo crearon! --- -## Pedagogía - -Hemos elegido dos principios pedagógicos al construir este currículo: asegurarnos de que sea **basado en proyectos prácticos** y que incluya **cuestionarios frecuentes**. Además, este currículo tiene un **tema común** para darle cohesión. - -Al asegurarnos de que el contenido se alinee con proyectos, el proceso se hace más atractivo para los estudiantes y se mejora la retención de conceptos. Además, un cuestionario de bajo riesgo antes de una clase establece la intención del estudiante hacia el aprendizaje de un tema, mientras que un segundo cuestionario después de la clase asegura una mayor retención. Este currículo fue diseñado para ser flexible y divertido y puede tomarse en su totalidad o en parte. Los proyectos comienzan pequeños y se vuelven cada vez más complejos al final del ciclo de 12 semanas. Este currículo también incluye un epílogo sobre aplicaciones del mundo real del aprendizaje automático, que puede usarse como crédito adicional o como base para discusión. - -> Encuentra nuestro [Código de Conducta](CODE_OF_CONDUCT.md), [Contribuciones](CONTRIBUTING.md), [Traducciones](TRANSLATIONS.md) y [Solución de Problemas](TROUBLESHOOTING.md). ¡Agradecemos tus comentarios constructivos! - -## Cada lección incluye - -- sketchnote opcional -- video complementario opcional -- video explicativo (solo algunas lecciones) -- [cuestionario de calentamiento previo a la lección](https://ff-quizzes.netlify.app/en/ml/) -- lección escrita -- para lecciones basadas en proyectos, guías paso a paso sobre cómo construir el proyecto -- verificaciones de conocimiento -- un desafío -- lectura complementaria -- tarea -- [cuestionario posterior a la lección](https://ff-quizzes.netlify.app/en/ml/) - -> **Una nota sobre los idiomas**: Estas lecciones están escritas principalmente en Python, pero muchas también están disponibles en R. Para completar una lección en R, ve a la carpeta `/solution` y busca lecciones en R. Incluyen una extensión .rmd que representa un archivo **R Markdown**, que puede definirse simplemente como una integración de `fragmentos de código` (de R u otros lenguajes) y un `encabezado YAML` (que guía cómo formatear salidas como PDF) en un `documento Markdown`. Como tal, sirve como un marco de autoría ejemplar para la ciencia de datos, ya que te permite combinar tu código, su salida y tus pensamientos al permitirte escribirlos en Markdown. Además, los documentos R Markdown pueden renderizarse en formatos de salida como PDF, HTML o Word. - -> **Una nota sobre los cuestionarios**: Todos los cuestionarios están contenidos en la [carpeta de la aplicación de cuestionarios](../../quiz-app), para un total de 52 cuestionarios de tres preguntas cada uno. Están vinculados dentro de las lecciones, pero la aplicación de cuestionarios puede ejecutarse localmente; sigue las instrucciones en la carpeta `quiz-app` para alojarla localmente o implementarla en Azure. - -| Número de Lección | Tema | Agrupación de Lecciones | Objetivos de Aprendizaje | Lección Vinculada | Autor | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Introducción al aprendizaje automático | [Introducción](1-Introduction/README.md) | Aprende los conceptos básicos detrás del aprendizaje automático | [Lección](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | La historia del aprendizaje automático | [Introducción](1-Introduction/README.md) | Aprende la historia que subyace en este campo | [Lección](1-Introduction/2-history-of-ML/README.md) | Jen y Amy | -| 03 | Equidad y aprendizaje automático | [Introducción](1-Introduction/README.md) | ¿Cuáles son los importantes temas filosóficos sobre la equidad que los estudiantes deben considerar al construir y aplicar modelos de ML? | [Lección](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Técnicas para el aprendizaje automático | [Introducción](1-Introduction/README.md) | ¿Qué técnicas utilizan los investigadores de ML para construir modelos de ML? | [Lección](1-Introduction/4-techniques-of-ML/README.md) | Chris y Jen | -| 05 | Introducción a la regresión | [Regresión](2-Regression/README.md) | Comienza con Python y Scikit-learn para modelos de regresión | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Precios de calabazas en América del Norte 🎃 | [Regresión](2-Regression/README.md) | Visualiza y limpia datos en preparación para ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Precios de calabazas en América del Norte 🎃 | [Regresión](2-Regression/README.md) | Construye modelos de regresión lineal y polinómica | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen y Dmitry • Eric Wanjau | -| 08 | Precios de calabazas en América del Norte 🎃 | [Regresión](2-Regression/README.md) | Construye un modelo de regresión logística | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Una aplicación web 🔌 | [Aplicación Web](3-Web-App/README.md) | Construye una aplicación web para usar tu modelo entrenado | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Introducción a la clasificación | [Clasificación](4-Classification/README.md) | Limpia, prepara y visualiza tus datos; introducción a la clasificación | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen y Cassie • Eric Wanjau | -| 11 | Deliciosas cocinas asiáticas e indias 🍜 | [Clasificación](4-Classification/README.md) | Introducción a los clasificadores | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen y Cassie • Eric Wanjau | -| 12 | Deliciosas cocinas asiáticas e indias 🍜 | [Clasificación](4-Classification/README.md) | Más clasificadores | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen y Cassie • Eric Wanjau | -| 13 | Deliciosas cocinas asiáticas e indias 🍜 | [Clasificación](4-Classification/README.md) | Construye una aplicación web de recomendación usando tu modelo | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Introducción al clustering | [Clustering](5-Clustering/README.md) | Limpia, prepara y visualiza tus datos; Introducción al clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Explorando los gustos musicales nigerianos 🎧 | [Clustering](5-Clustering/README.md) | Explora el método de clustering 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 | Introducción al procesamiento de lenguaje natural ☕️ | [Procesamiento de lenguaje natural](6-NLP/README.md) | Aprende los conceptos básicos sobre NLP construyendo un bot simple | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Tareas comunes de NLP ☕️ | [Procesamiento de lenguaje natural](6-NLP/README.md) | Profundiza tu conocimiento de NLP entendiendo las tareas comunes al tratar con estructuras de lenguaje | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Traducción y análisis de sentimientos ♥️ | [Procesamiento de lenguaje natural](6-NLP/README.md) | Traducción y análisis de sentimientos con Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Hoteles románticos de Europa ♥️ | [Procesamiento de lenguaje natural](6-NLP/README.md) | Análisis de sentimientos con reseñas de hoteles 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Hoteles románticos de Europa ♥️ | [Procesamiento de lenguaje natural](6-NLP/README.md) | Análisis de sentimientos con reseñas de hoteles 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Introducción a la predicción de series temporales | [Series temporales](7-TimeSeries/README.md) | Introducción a la predicción de series temporales | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Uso mundial de energía ⚡️ - predicción con ARIMA | [Series temporales](7-TimeSeries/README.md) | Predicción de series temporales con ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Uso mundial de energía ⚡️ - predicción con SVR | [Series temporales](7-TimeSeries/README.md) | Predicción de series temporales con Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Introducción al aprendizaje por refuerzo | [Aprendizaje por refuerzo](8-Reinforcement/README.md) | Introducción al aprendizaje por refuerzo con Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | ¡Ayuda a Peter a evitar al lobo! 🐺 | [Aprendizaje por refuerzo](8-Reinforcement/README.md) | Gimnasio de aprendizaje por refuerzo | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Escenarios y aplicaciones de ML en el mundo real | [ML en el mundo real](9-Real-World/README.md) | Aplicaciones interesantes y reveladoras del aprendizaje automático clásico | [Lección](9-Real-World/1-Applications/README.md) | Equipo | -| Postscript | Depuración de modelos de ML con el panel RAI | [ML en el mundo real](9-Real-World/README.md) | Depuración de modelos en aprendizaje automático usando componentes del panel de IA Responsable | [Lección](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +## Pedagogía + +Hemos elegido dos principios pedagógicos al construir este currículo: asegurar que sea práctico y **basado en proyectos** y que incluya **cuestionarios frecuentes**. Además, este currículo tiene un **tema común** para darle cohesión. + +Al asegurar que el contenido se alinee con proyectos, el proceso se vuelve más atractivo para los estudiantes y se aumentará la retención de conceptos. Además, un cuestionario de bajo riesgo antes de una clase establece la intención del estudiante hacia el aprendizaje de un tema, mientras que un segundo cuestionario después de la clase asegura una mayor retención. Este currículo fue diseñado para ser flexible y divertido y puede tomarse en su totalidad o en parte. Los proyectos comienzan pequeños y se vuelven cada vez más complejos al final del ciclo de 12 semanas. Este currículo también incluye un posfacio sobre aplicaciones reales del ML, que puede usarse como crédito extra o como base para discusión. + +> Encuentra nuestro [Código de Conducta](CODE_OF_CONDUCT.md), [Contribuciones](CONTRIBUTING.md), [Traducción](TRANSLATIONS.md) y [Solución de Problemas](TROUBLESHOOTING.md). ¡Agradecemos tus comentarios constructivos! + +## Cada lección incluye + +- sketchnote opcional +- video suplementario opcional +- video explicativo (solo algunas lecciones) +- [cuestionario previo a la lección](https://ff-quizzes.netlify.app/en/ml/) +- lección escrita +- para lecciones basadas en proyectos, guías paso a paso para construir el proyecto +- verificaciones de conocimiento +- un desafío +- lectura suplementaria +- tarea +- [cuestionario posterior a la lección](https://ff-quizzes.netlify.app/en/ml/) + +> **Una nota sobre los idiomas**: Estas lecciones están principalmente escritas en Python, pero muchas también están disponibles en R. Para completar una lección en R, ve a la carpeta `/solution` y busca las lecciones en R. Incluyen una extensión .rmd que representa un archivo **R Markdown**, que puede definirse simplemente como una combinación de `fragmentos de código` (de R u otros lenguajes) y un `encabezado YAML` (que guía cómo formatear salidas como PDF) en un `documento Markdown`. Como tal, sirve como un marco ejemplar para la autoría en ciencia de datos ya que permite combinar tu código, su salida y tus pensamientos escribiéndolos en Markdown. Además, los documentos R Markdown pueden renderizarse a formatos de salida como PDF, HTML o Word. + +> **Una nota sobre los cuestionarios**: Todos los cuestionarios están contenidos en la [carpeta Quiz App](../../quiz-app), para un total de 52 cuestionarios con tres preguntas cada uno. Están enlazados desde dentro de las lecciones pero la aplicación de cuestionarios puede ejecutarse localmente; sigue las instrucciones en la carpeta `quiz-app` para alojar localmente o desplegar en Azure. + +| Número de Lección | Tema | Agrupación de Lección | Objetivos de Aprendizaje | Lección Enlazada | Autor | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | Introducción al aprendizaje automático | [Introduction](1-Introduction/README.md) | Aprende los conceptos básicos detrás del aprendizaje automático | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | La historia del aprendizaje automático | [Introduction](1-Introduction/README.md) | Aprende la historia que subyace en este campo | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Equidad y aprendizaje automático | [Introduction](1-Introduction/README.md) | ¿Cuáles son los problemas filosóficos importantes sobre la equidad que los estudiantes deben considerar al construir y aplicar modelos de ML? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Técnicas para el aprendizaje automático | [Introduction](1-Introduction/README.md) | ¿Qué técnicas usan los investigadores de ML para construir modelos de ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Introducción a la regresión | [Regression](2-Regression/README.md) | Comienza con Python y Scikit-learn para modelos de regresión | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Precios de calabazas en Norteamérica 🎃 | [Regression](2-Regression/README.md) | Visualiza y limpia datos en preparación para ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Precios de calabazas en Norteamérica 🎃 | [Regression](2-Regression/README.md) | Construye modelos de regresión lineal y polinómica | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Precios de calabazas en Norteamérica 🎃 | [Regression](2-Regression/README.md) | Construye un modelo de regresión logística | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Una aplicación web 🔌 | [Web App](3-Web-App/README.md) | Construye una aplicación web para usar tu modelo entrenado | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Introducción a la clasificación | [Classification](4-Classification/README.md) | Limpia, prepara y visualiza tus datos; introducción a la clasificación | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Deliciosas cocinas asiáticas e indias 🍜 | [Classification](4-Classification/README.md) | Introducción a los clasificadores | [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 | Deliciosas cocinas asiáticas e indias 🍜 | [Classification](4-Classification/README.md) | Más clasificadores | [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 | Deliciosas cocinas asiáticas e indias 🍜 | [Classification](4-Classification/README.md) | Construye una aplicación web recomendadora usando tu modelo | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Introducción al clustering | [Clustering](5-Clustering/README.md) | Limpia, prepara y visualiza tus datos; Introducción al clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Explorando gustos musicales nigerianos 🎧 | [Clustering](5-Clustering/README.md) | Explora el método de clustering 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 | Introducción al procesamiento de lenguaje natural ☕️ | [Natural language processing](6-NLP/README.md) | Aprende lo básico sobre PLN construyendo un bot simple | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Tareas comunes de PLN ☕️ | [Natural language processing](6-NLP/README.md) | Profundiza tu conocimiento de PLN entendiendo tareas comunes requeridas al tratar con estructuras del lenguaje | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Traducción y análisis de sentimiento ♥️ | [Natural language processing](6-NLP/README.md) | Traducción y análisis de sentimiento con Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Hoteles románticos de Europa ♥️ | [Natural language processing](6-NLP/README.md) | Análisis de sentimiento con reseñas de hoteles 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Hoteles románticos de Europa ♥️ | [Natural language processing](6-NLP/README.md) | Análisis de sentimiento con reseñas de hoteles 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Introducción a la predicción de series temporales | [Time series](7-TimeSeries/README.md) | Introducción a la predicción de series temporales | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Uso mundial de energía ⚡️ - predicción de series temporales con ARIMA | [Time series](7-TimeSeries/README.md) | Predicción de series temporales con ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Uso mundial de energía ⚡️ - predicción de series temporales con SVR | [Time series](7-TimeSeries/README.md) | Predicción de series temporales con regresor de vectores de soporte | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Introducción al aprendizaje por refuerzo | [Reinforcement learning](8-Reinforcement/README.md) | Introducción al aprendizaje por refuerzo con Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | ¡Ayuda a Peter a evitar al lobo! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Aprendizaje por refuerzo Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Escenarios y aplicaciones reales de ML | [ML in the Wild](9-Real-World/README.md) | Aplicaciones interesantes y reveladoras del aprendizaje automático clásico | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Depuración de modelos en ML usando el panel RAI | [ML in the Wild](9-Real-World/README.md) | Depuración de modelos en aprendizaje automático usando componentes del panel Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [encuentra todos los recursos adicionales para este curso en nuestra colección de Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Acceso sin conexión -Puedes ejecutar esta documentación sin conexión usando [Docsify](https://docsify.js.org/#/). Haz un fork de este repositorio, [instala Docsify](https://docsify.js.org/#/quickstart) en tu máquina local, y luego en la carpeta raíz de este repositorio, escribe `docsify serve`. El sitio web se servirá en el puerto 3000 de tu localhost: `localhost:3000`. +Puedes ejecutar esta documentación sin conexión usando [Docsify](https://docsify.js.org/#/). Haz un fork de este repositorio, [instala Docsify](https://docsify.js.org/#/quickstart) en tu máquina local, y luego en la carpeta raíz de este repositorio, escribe `docsify serve`. El sitio web se servirá en el puerto 3000 en tu localhost: `localhost:3000`. ## PDFs -Encuentra un PDF del plan de estudios con enlaces [aquí](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Encuentra un pdf del plan de estudios con enlaces [aquí](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Otros Cursos -¡Nuestro equipo produce otros cursos! Echa un vistazo: +## 🎒 Otros cursos -### Azure / Edge / MCP / Agentes -[![AZD para Principiantes](https://img.shields.io/badge/AZD%20para%20Principiantes-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI para Principiantes](https://img.shields.io/badge/Edge%20AI%20para%20Principiantes-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP para Principiantes](https://img.shields.io/badge/MCP%20para%20Principiantes-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Agentes de IA para Principiantes](https://img.shields.io/badge/Agentes%20de%20IA%20para%20Principiantes-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +¡Nuestro equipo produce otros cursos! Mira: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Serie de IA Generativa -[![IA Generativa para Principiantes](https://img.shields.io/badge/IA%20Generativa%20para%20Principiantes-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![IA Generativa (.NET)](https://img.shields.io/badge/IA%20Generativa%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![IA Generativa (Java)](https://img.shields.io/badge/IA%20Generativa%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![IA Generativa (JavaScript)](https://img.shields.io/badge/IA%20Generativa%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agentes +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Aprendizaje Central -[![ML para Principiantes](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Ciencia de Datos para Principiantes](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![IA para Principiantes](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Ciberseguridad para Principiantes](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Desarrollo Web para Principiantes](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT para Principiantes](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Desarrollo XR para Principiantes](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +### Serie de IA Generativa +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- + +### Aprendizaje Básico +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) -### Serie Copilot -[![Copilot para Programación en Pareja con IA](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot para C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Aventura Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +--- + +### Serie Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -## Obtener Ayuda +## Obtener ayuda -Si te quedas atascado o tienes preguntas sobre cómo construir aplicaciones de IA, únete a otros estudiantes y desarrolladores experimentados en discusiones sobre MCP. Es una comunidad de apoyo donde las preguntas son bienvenidas y el conocimiento se comparte libremente. +Si te quedas atascado o tienes alguna pregunta sobre cómo crear aplicaciones de IA. Únete a otros aprendices y desarrolladores experimentados en discusiones sobre MCP. Es una comunidad de apoyo donde las preguntas son bienvenidas y el conocimiento se comparte libremente. -[![Discord de Microsoft Foundry](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Si tienes comentarios sobre productos o errores al construir, visita: +Si tienes comentarios sobre el producto o errores mientras construyes, visita: -[![Foro de Desarrolladores de Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Descargo de responsabilidad**: -Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. +**Aviso Legal**: +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas derivadas del uso de esta traducción. \ No newline at end of file diff --git a/translations/et/README.md b/translations/et/README.md index 9925c3295..ba5fb209d 100644 --- a/translations/et/README.md +++ b/translations/et/README.md @@ -1,83 +1,84 @@ -[![GitHub litsents](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub kaastöötajad](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub probleemid](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub tõmbetaotlused](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PR-d on teretulnud](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub jälgijad](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub harud](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub tähed](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Mitmekeelne tugi -#### Toetatud GitHub Actioni kaudu (automaatselt ja alati ajakohane) +#### Toetatud GitHub Actioni kaudu (automatiseeritud ja alati ajakohane) - -[Araabia](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgaaria](../bg/README.md) | [Birma (Myanmar)](../my/README.md) | [Hiina (lihtsustatud)](../zh/README.md) | [Hiina (traditsiooniline, Hongkong)](../hk/README.md) | [Hiina (traditsiooniline, Macau)](../mo/README.md) | [Hiina (traditsiooniline, Taiwan)](../tw/README.md) | [Horvaatia](../hr/README.md) | [Tšehhi](../cs/README.md) | [Taani](../da/README.md) | [Hollandi](../nl/README.md) | [Eesti](./README.md) | [Soome](../fi/README.md) | [Prantsuse](../fr/README.md) | [Saksa](../de/README.md) | [Kreeka](../el/README.md) | [Heebrea](../he/README.md) | [Hindi](../hi/README.md) | [Ungari](../hu/README.md) | [Indoneesia](../id/README.md) | [Itaalia](../it/README.md) | [Jaapani](../ja/README.md) | [Korea](../ko/README.md) | [Leedu](../lt/README.md) | [Malai](../ms/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigeeria pidgin](../pcm/README.md) | [Norra](../no/README.md) | [Pärsia (Farsi)](../fa/README.md) | [Poola](../pl/README.md) | [Portugali (Brasiilia)](../br/README.md) | [Portugali (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Rumeenia](../ro/README.md) | [Vene](../ru/README.md) | [Serbia (kirillitsa)](../sr/README.md) | [Slovaki](../sk/README.md) | [Sloveeni](../sl/README.md) | [Hispaania](../es/README.md) | [Suahiili](../sw/README.md) | [Rootsi](../sv/README.md) | [Tagalogi (Filipiinid)](../tl/README.md) | [Tamili](../ta/README.md) | [Tai](../th/README.md) | [Türgi](../tr/README.md) | [Ukraina](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnami](../vi/README.md) - + +[Araabia](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgaaria](../bg/README.md) | [Birma (Myanmar)](../my/README.md) | [Hiina (lihtsustatud)](../zh/README.md) | [Hiina (traditsiooniline, Hongkong)](../hk/README.md) | [Hiina (traditsiooniline, Macau)](../mo/README.md) | [Hiina (traditsiooniline, Taiwan)](../tw/README.md) | [Horvaadi](../hr/README.md) | [Tšehhi](../cs/README.md) | [Taani](../da/README.md) | [Hollandi](../nl/README.md) | [Eesti](./README.md) | [Soome](../fi/README.md) | [Prantsuse](../fr/README.md) | [Saksa](../de/README.md) | [Kreeka](../el/README.md) | [Heebrea](../he/README.md) | [Hindi](../hi/README.md) | [Ungari](../hu/README.md) | [Indoneesia](../id/README.md) | [Itaalia](../it/README.md) | [Jaapani](../ja/README.md) | [Kannada](../kn/README.md) | [Korea](../ko/README.md) | [Leedu](../lt/README.md) | [Malai](../ms/README.md) | [Malajalami](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigeeria pidžin](../pcm/README.md) | [Norra](../no/README.md) | [Pärsia (Farsi)](../fa/README.md) | [Poola](../pl/README.md) | [Portugali (Brasiilia)](../br/README.md) | [Portugali (Portugal)](../pt/README.md) | [Pandžabi (Gurmukhi)](../pa/README.md) | [Rumeenia](../ro/README.md) | [Vene](../ru/README.md) | [Serbia (kirillitsa)](../sr/README.md) | [Slovaki](../sk/README.md) | [Sloveeni](../sl/README.md) | [Hispaania](../es/README.md) | [Suaheli](../sw/README.md) | [Rootsi](../sv/README.md) | [Tagalogi (Filipino)](../tl/README.md) | [Tamili](../ta/README.md) | [Telugu](../te/README.md) | [Tai](../th/README.md) | [Türgi](../tr/README.md) | [Ukraina](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnami](../vi/README.md) + #### Liitu meie kogukonnaga [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Meil on käimas Discordi õppesari tehisintellektiga, lisateavet ja liitumist leiate [Õpi tehisintellektiga sari](https://aka.ms/learnwithai/discord) 18.–30. september 2025. Saate näpunäiteid ja nippe GitHub Copiloti kasutamiseks andmeteaduses. +Meil on käimas Discordi õppesari tehisintellektiga, õpi rohkem ja liitu meiega aadressil [Learn with AI Series](https://aka.ms/learnwithai/discord) ajavahemikus 18. - 30. september 2025. Saad näpunäiteid ja nippe GitHub Copiloti kasutamiseks andmeteaduses. ![Õpi tehisintellektiga sari](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.et.png) -# Masinõpe algajatele - õppekava +# Masinõpe algajatele – õppekava -> 🌍 Rändame mööda maailma, uurides masinõpet läbi maailma kultuuride 🌍 +> 🌍 Rändame ümber maailma, uurides masinõpet maailma kultuuride kaudu 🌍 -Microsofti pilveadvokaadid on rõõmsad pakkuma 12-nädalast, 26-tunnist õppekava, mis käsitleb **masinõpet**. Selles õppekavas õpite tundma seda, mida mõnikord nimetatakse **klassikaliseks masinõppeks**, kasutades peamiselt Scikit-learn'i teeki ja vältides süvaõpet, mida käsitletakse meie [Tehisintellekt algajatele õppekavas](https://aka.ms/ai4beginners). Siduge need tunnid meie ['Andmeteadus algajatele' õppekavaga](https://aka.ms/ds4beginners), samuti! +Microsofti pilveesindajad pakuvad 12-nädalast, 26-õppetunnist koosnevat õppekava, mis käsitleb **masinõpet**. Selles õppekavas õpid nn **klassikalist masinõpet**, kasutades peamiselt Scikit-learn raamatukogu ja vältides süvaõpet, mida käsitletakse meie [AI algajate õppekavas](https://aka.ms/ai4beginners). Ühenda need õppetunnid meie ['Andmeteadus algajatele' õppekavaga](https://aka.ms/ds4beginners)! -Reisige koos meiega mööda maailma, rakendades neid klassikalisi tehnikaid andmetele erinevatest maailma piirkondadest. Iga tund sisaldab eel- ja järelteste, kirjalikke juhiseid tunni läbiviimiseks, lahendust, ülesannet ja palju muud. Meie projektipõhine pedagoogika võimaldab teil õppida, samal ajal ehitades, mis on tõestatud viis uute oskuste omandamiseks. +Rändame koos ümber maailma, rakendades neid klassikalisi meetodeid andmetele paljudest maailma piirkondadest. Iga õppetund sisaldab eelkatsest ja järelkatsest teste, kirjalikke juhiseid õppetunni läbimiseks, lahendust, ülesannet ja muud. Meie projektipõhine pedagoogika võimaldab sul õppida ehitades, mis on tõestatud viis uute oskuste kinnistamiseks. -**✍️ Südamlik tänu meie autoritele** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu ja Amy Boyd +**✍️ Suur tänu meie autoritele** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu ja Amy Boyd -**🎨 Tänu ka meie illustraatoritele** Tomomi Imura, Dasani Madipalli ja Jen Looper +**🎨 Tänud ka meie illustraatoritele** Tomomi Imura, Dasani Madipalli ja Jen Looper -**🙏 Eriline tänu 🙏 meie Microsofti tudengisaadikutele, autoritele, retsensentidele ja sisupakkujatele**, eriti Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila ja Snigdha Agarwal +**🙏 Eriline tänu 🙏 meie Microsofti tudengisaadikute autoritele, ülevaatajaile ja sisuloojatele**, eriti Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila ja Snigdha Agarwal -**🤩 Eriline tänu Microsofti tudengisaadikutele Eric Wanjau, Jasleen Sondhi ja Vidushi Gupta meie R-tundide eest!** +**🤩 Täiendav tänu Microsofti tudengisaadikutele Eric Wanjau, Jasleen Sondhi ja Vidushi Gupta meie R-õppetundide eest!** # Alustamine -Järgige neid samme: -1. **Forkige repositoorium**: Klõpsake selle lehe paremas ülanurgas asuvat "Fork" nuppu. -2. **Kloonige repositoorium**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Järgi neid samme: +1. **Tee hoidlast fork**: Klõpsa selle lehe paremas ülanurgas nuppu "Fork". +2. **Klooni hoidla**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [leidke kõik selle kursuse lisamaterjalid meie Microsoft Learn kogumikust](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [Leia kõik selle kursuse lisamaterjalid meie Microsoft Learn kollektsioonist](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Vajate abi?** Vaadake meie [Tõrkeotsingu juhendit](TROUBLESHOOTING.md), et leida lahendusi levinud probleemidele, mis on seotud paigaldamise, seadistamise ja tundide läbiviimisega. +> 🔧 **Vajad abi?** Vaata meie [Tõrkeotsingu juhendit](TROUBLESHOOTING.md) levinumate probleemide lahendamiseks paigaldamisel, seadistamisel ja õppetundide käivitamisel. -**[Õpilased](https://aka.ms/student-page)**, selle õppekava kasutamiseks forkige kogu repositoorium oma GitHubi kontole ja täitke harjutused iseseisvalt või grupis: -- Alustage eeltestiga. -- Lugege loengut ja täitke tegevused, peatudes ja mõtiskledes iga teadmiste kontrolli juures. -- Proovige projekte luua, mõistes tunde, mitte lihtsalt lahenduskoodi käivitades; siiski on see kood saadaval iga projektipõhise tunni `/solution` kaustades. -- Tehke järeltest. -- Täitke väljakutse. -- Täitke ülesanne. -- Pärast tundide grupi lõpetamist külastage [Arutelufoorumit](https://github.com/microsoft/ML-For-Beginners/discussions) ja "õppige valjult", täites vastava PAT rubriigi. 'PAT' on edusammude hindamise tööriist, mis on rubriik, mille täidate oma õppimise edendamiseks. Samuti saate reageerida teiste PAT-dele, et saaksime koos õppida. +**[Õpilased](https://aka.ms/student-page)**, selle õppekava kasutamiseks tee kogu hoidlast fork oma GitHubi kontole ja tee harjutused ise või grupiga: + +- Alusta eelkatsest testiga. +- Loe loengut ja tee tegevused, peatu ja mõtiskle iga teadmiste kontrolli juures. +- Proovi projekte luua õppetundide mõistmise põhjal, mitte lahenduskoodi jooksutades; lahenduskood on siiski saadaval iga projektipõhise õppetunni `/solution` kaustas. +- Tee järelkatsest test. +- Täida väljakutse. +- Täida ülesanne. +- Pärast õppetundide grupi lõpetamist külasta [Arutelufoorumit](https://github.com/microsoft/ML-For-Beginners/discussions) ja "õpi valjusti" täites sobiva PAT hindamislehe. PAT on edenemise hindamise tööriist, mille abil saad oma õppimist süvendada. Võid ka teiste PAT-e kommenteerida, et koos õppida. > Edasiseks õppimiseks soovitame järgida neid [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) mooduleid ja õpiteid. -**Õpetajad**, oleme [lisanud mõned soovitused](for-teachers.md), kuidas seda õppekava kasutada. +**Õpetajad**, oleme lisanud [mõningaid soovitusi](for-teachers.md) selle õppekava kasutamiseks. --- -## Videoõpetused +## Video juhendid -Mõned tunnid on saadaval lühivideotena. Leiate need kõik tundide seest või [ML algajatele esitusloendist Microsoft Developer YouTube'i kanalil](https://aka.ms/ml-beginners-videos), klõpsates alloleval pildil. +Mõned õppetunnid on saadaval lühivideotena. Kõik need leiad õppetundide seest või [ML algajate esitusloendist Microsoft Developer YouTube kanalil](https://aka.ms/ml-beginners-videos), klõpsates alloleval pildil. [![ML algajatele bänner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.et.png)](https://aka.ms/ml-beginners-videos) @@ -85,131 +86,138 @@ Mõned tunnid on saadaval lühivideotena. Leiate need kõik tundide seest või [ ## Tutvu meeskonnaga -[![Reklaamvideo](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **Gif autor** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Klõpsake ülaloleval pildil, et vaadata videot projektist ja selle loojatest! +> 🎥 Klõpsa ülaloleval pildil, et vaadata videot projektist ja selle loojatest! --- ## Pedagoogika -Selle õppekava loomisel oleme valinud kaks pedagoogilist põhimõtet: tagada, et see on praktiline **projektipõhine** ja et see sisaldab **sagedasi teste**. Lisaks on sellel õppekaval ühine **teema**, mis annab sellele ühtsuse. +Selle õppekava loomisel valisime kaks pedagoogilist põhimõtet: tagada, et see oleks praktiline **projektipõhine** ja sisaldaks **sagedasi teste**. Lisaks on õppekaval ühine **teema**, mis annab sellele sidususe. -Tagades, et sisu on seotud projektidega, muutub protsess õpilastele kaasahaaravamaks ja kontseptsioonide omandamine suureneb. Lisaks seab madala panusega test enne tundi õpilase eesmärgi õppida teemat, samas kui teine test pärast tundi tagab edasise omandamise. See õppekava on loodud paindlikuks ja lõbusaks ning seda saab võtta tervikuna või osaliselt. Projektid algavad väikestest ja muutuvad 12-nädalase tsükli lõpuks järjest keerukamaks. See õppekava sisaldab ka järelmärkust ML-i reaalmaailma rakenduste kohta, mida saab kasutada lisapunktide saamiseks või arutelu aluseks. +Sisule projektidega vastavuse tagamine muudab protsessi õpilaste jaoks kaasahaaravamaks ja suurendab kontseptsioonide meeldejäämist. Madala panusega test enne tundi seab õpilasele eesmärgi teemat õppida, samas kui teine test pärast tundi tagab teadmiste kinnistamise. See õppekava on loodud olema paindlik ja lõbus ning seda saab läbida tervikuna või osaliselt. Projektid algavad väikestena ja muutuvad 12-nädalase tsükli lõpuks järjest keerukamaks. Õppekava sisaldab ka järelsõna masinõppe reaalse maailma rakendustest, mida saab kasutada lisapunktide või arutelu aluseks. -> Vaadake meie [Käitumisjuhendit](CODE_OF_CONDUCT.md), [Kaastöö tegemise juhendit](CONTRIBUTING.md), [Tõlkimise juhendit](TRANSLATIONS.md) ja [Tõrkeotsingu juhendit](TROUBLESHOOTING.md). Ootame teie konstruktiivset tagasisidet! +> Leia meie [käitumisjuhend](CODE_OF_CONDUCT.md), [panustamise juhised](CONTRIBUTING.md), [tõlkimise juhised](TRANSLATIONS.md) ja [tõrkeotsingu juhend](TROUBLESHOOTING.md). Ootame sinu konstruktiivset tagasisidet! -## Iga tund sisaldab +## Iga õppetund sisaldab -- valikuline visandmärkmed -- valikuline lisavideo -- videoõpetus (ainult mõned tunnid) -- [eeltest](https://ff-quizzes.netlify.app/en/ml/) -- kirjalik tund -- projektipõhiste tundide jaoks samm-sammult juhised projekti loomiseks +- vabatahtlik sketšimärkmed +- vabatahtlik täiendav video +- video juhend (ainult mõnedes õppetundides) +- [eel-loengu soojendus test](https://ff-quizzes.netlify.app/en/ml/) +- kirjalik õppetund +- projektipõhiste õppetundide puhul samm-sammult juhised projekti ehitamiseks - teadmiste kontrollid - väljakutse -- lisalugemine +- täiendav lugemine - ülesanne -- [järgtest](https://ff-quizzes.netlify.app/en/ml/) +- [järg-loengu test](https://ff-quizzes.netlify.app/en/ml/) -> **Märkus keelte kohta**: Need tunnid on peamiselt kirjutatud Pythonis, kuid paljud on saadaval ka R-is. R-tunni läbiviimiseks minge `/solution` kausta ja otsige R-tunde. Need sisaldavad .rmd laiendit, mis tähistab **R Markdown** faili, mida saab lihtsalt määratleda kui `koodilõikude` (R-i või muude keelte) ja `YAML päise` (mis juhendab, kuidas vormindada väljundeid, nagu PDF) `Markdown dokumendis` ühendamist. Seega toimib see eeskujuliku autorlusraamistikuna andmeteaduse jaoks, kuna see võimaldab teil kombineerida oma koodi, selle väljundit ja oma mõtteid, kirjutades need Markdownis. Lisaks saab R Markdown dokumente renderdada väljundvormingutesse, nagu PDF, HTML või Word. +> **Märkus keeltest**: Need õppetunnid on peamiselt kirjutatud Pythonis, kuid paljud on saadaval ka R-is. R-õppetunni läbimiseks mine `/solution` kausta ja otsi R-õppetunde. Need sisaldavad .rmd laiendit, mis tähistab **R Markdown** faili, mida saab lihtsalt defineerida kui `koodiplokkide` (R või teiste keelte) ja `YAML päise` (mis juhib väljundite vormindamist nagu PDF) manustamist `Markdown dokumendis`. See on eeskujulik raamistik andmeteaduse jaoks, kuna võimaldab kombineerida koodi, selle väljundi ja mõtted, kirjutades need Markdowni. Lisaks saab R Markdown dokumente renderdada väljundvormingutesse nagu PDF, HTML või Word. -> **Märkus testide kohta**: Kõik testid on [Testirakenduse kaustas](../../quiz-app), kokku 52 testi, millest igaüks sisaldab kolme küsimust. Need on lingitud tundide seest, kuid testirakendust saab käivitada kohapeal; järgige juhiseid `quiz-app` kaustas, et seda kohapeal majutada või Azure'i juurutada. +> **Märkus testide kohta**: Kõik testid on koondatud [Quiz App kausta](../../quiz-app), kokku 52 testi, igaühes kolm küsimust. Need on lingitud õppetundide sees, kuid testi rakendust saab käivitada ka lokaalselt; järgi juhiseid `quiz-app` kaustas, et seda lokaalselt hostida või Azure'i juurutada. -| Tunni number | Teema | Tunni rühmitus | Õpieesmärgid | Lingitud tund | Autor | +| Õppetunni number | Teema | Õppetunni grupp | Õpieesmärgid | Lingitud õppetund | Autor | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Masinõppe sissejuhatus | [Sissejuhatus](1-Introduction/README.md) | Õpi masinõppe põhimõisteid | [Õppetund](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Masinõppe ajalugu | [Sissejuhatus](1-Introduction/README.md) | Õpi tundma selle valdkonna ajalugu | [Õppetund](1-Introduction/2-history-of-ML/README.md) | Jen ja Amy | -| 03 | Õiglus ja masinõpe | [Sissejuhatus](1-Introduction/README.md) | Millised olulised filosoofilised küsimused õiglusest peaksid õpilased arvesse võtma ML mudelite loomisel ja rakendamisel? | [Õppetund](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Masinõppe tehnikad | [Sissejuhatus](1-Introduction/README.md) | Milliseid tehnikaid kasutavad ML teadlased mudelite loomiseks? | [Õppetund](1-Introduction/4-techniques-of-ML/README.md) | Chris ja Jen | -| 05 | Regressiooni sissejuhatus | [Regressioon](2-Regression/README.md) | Alusta Pythoniga ja Scikit-learniga regressioonimudelite jaoks | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Põhja-Ameerika kõrvitsahinnad 🎃 | [Regressioon](2-Regression/README.md) | Visualiseeri ja puhasta andmeid ML-i ettevalmistamiseks | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Põhja-Ameerika kõrvitsahinnad 🎃 | [Regressioon](2-Regression/README.md) | Loo lineaar- ja polünoomregressioonimudelid | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen ja Dmitry • Eric Wanjau | -| 08 | Põhja-Ameerika kõrvitsahinnad 🎃 | [Regressioon](2-Regression/README.md) | Loo logistiline regressioonimudel | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Veebirakendus 🔌 | [Veebirakendus](3-Web-App/README.md) | Loo veebirakendus oma treenitud mudeli kasutamiseks | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Klassifikatsiooni sissejuhatus | [Klassifikatsioon](4-Classification/README.md) | Puhasta, valmista ette ja visualiseeri oma andmeid; sissejuhatus klassifikatsiooni | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen ja Cassie • Eric Wanjau | -| 11 | Maitsvad Aasia ja India köögid 🍜 | [Klassifikatsioon](4-Classification/README.md) | Sissejuhatus klassifikaatoritesse | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen ja Cassie • Eric Wanjau | -| 12 | Maitsvad Aasia ja India köögid 🍜 | [Klassifikatsioon](4-Classification/README.md) | Rohkem klassifikaatoreid | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen ja Cassie • Eric Wanjau | -| 13 | Maitsvad Aasia ja India köögid 🍜 | [Klassifikatsioon](4-Classification/README.md) | Loo soovitusrakendus, kasutades oma mudelit | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Klasterdamise sissejuhatus | [Klasterdamine](5-Clustering/README.md) | Puhasta, valmista ette ja visualiseeri oma andmeid; sissejuhatus klasterdamisse | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Nigeeria muusikamaitsete uurimine 🎧 | [Klasterdamine](5-Clustering/README.md) | Uuri K-Meansi klasterdamismeetodit | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Loomuliku keele töötlemise sissejuhatus ☕️ | [Loomulik keel](6-NLP/README.md) | Õpi NLP põhitõdesid, luues lihtsa boti | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Levinud NLP ülesanded ☕️ | [Loomulik keel](6-NLP/README.md) | Süvenda oma NLP teadmisi, mõistes levinud ülesandeid, mis on seotud keelestruktuuridega | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Tõlkimine ja sentimentanalüüs ♥️ | [Loomulik keel](6-NLP/README.md) | Tõlkimine ja sentimentanalüüs Jane Austeni teostega | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantilised hotellid Euroopas ♥️ | [Loomulik keel](6-NLP/README.md) | Sentimentanalüüs hotelliarvustustega 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantilised hotellid Euroopas ♥️ | [Loomulik keel](6-NLP/README.md) | Sentimentanalüüs hotelliarvustustega 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Ajasarjade prognoosimise sissejuhatus | [Ajasarjad](7-TimeSeries/README.md) | Sissejuhatus ajasarjade prognoosimisse | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Maailma energiatarbimine ⚡️ - ajasarjade prognoosimine ARIMA-ga | [Ajasarjad](7-TimeSeries/README.md) | Ajasarjade prognoosimine ARIMA meetodiga | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Maailma energiatarbimine ⚡️ - ajasarjade prognoosimine SVR-iga | [Ajasarjad](7-TimeSeries/README.md) | Ajasarjade prognoosimine toetusvektori regressori abil | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Tugevdamisõppe sissejuhatus | [Tugevdamisõpe](8-Reinforcement/README.md) | Sissejuhatus tugevdamisõppesse Q-õppega | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Aita Peteril hunti vältida! 🐺 | [Tugevdamisõpe](8-Reinforcement/README.md) | Tugevdamisõppe Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Reaalse maailma ML-situatsioonid ja rakendused | [ML looduses](9-Real-World/README.md) | Huvitavad ja paljastavad klassikalise ML-i reaalse maailma rakendused | [Õppetund](9-Real-World/1-Applications/README.md) | Meeskond | -| Postscript | Mudelite silumine ML-is RAI armatuurlauaga | [ML looduses](9-Real-World/README.md) | Masinõppe mudelite silumine, kasutades vastutustundliku tehisintellekti armatuurlaua komponente | [Õppetund](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [Leia kõik täiendavad ressursid selle kursuse jaoks meie Microsoft Learn kogumikust](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 01 | Sissejuhatus masinõppesse | [Introduction](1-Introduction/README.md) | Õpi masinõppe põhikontseptsioone | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Masinõppe ajalugu | [Introduction](1-Introduction/README.md) | Õpi selle valdkonna ajaloo kohta | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Õiglus ja masinõpe | [Introduction](1-Introduction/README.md) | Millised on olulised filosoofilised küsimused õiglusest, mida õpilased peaksid arvestama masinõppemudelite loomisel ja rakendamisel? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Masinõppe tehnikad | [Introduction](1-Introduction/README.md) | Milliseid tehnikaid kasutavad masinõppe uurijad masinõppemudelite loomiseks? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Sissejuhatus regressiooni | [Regression](2-Regression/README.md) | Alusta Pythoniga ja Scikit-learniga regressioonimudelite jaoks | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Põhja-Ameerika kõrvitsa hinnad 🎃 | [Regression](2-Regression/README.md) | Visualiseeri ja puhasta andmeid masinõppeks ettevalmistamiseks | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Põhja-Ameerika kõrvitsa hinnad 🎃 | [Regression](2-Regression/README.md) | Ehita lineaarseid ja polünoomseid regressioonimudeleid | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Põhja-Ameerika kõrvitsa hinnad 🎃 | [Regression](2-Regression/README.md) | Ehita logistilise regressiooni mudel | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Veebirakendus 🔌 | [Web App](3-Web-App/README.md) | Ehita veebirakendus, et kasutada oma treenitud mudelit | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Sissejuhatus klassifitseerimisse | [Classification](4-Classification/README.md) | Puhasta, valmista ette ja visualiseeri oma andmeid; sissejuhatus klassifitseerimisse | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Maitsvad Aasia ja India köögid 🍜 | [Classification](4-Classification/README.md) | Sissejuhatus klassifikaatoritesse | [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 | Maitsvad Aasia ja India köögid 🍜 | [Classification](4-Classification/README.md) | Rohkem klassifikaatoreid | [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 | Maitsvad Aasia ja India köögid 🍜 | [Classification](4-Classification/README.md) | Ehita soovituste veebirakendus, kasutades oma mudelit | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Sissejuhatus klasterdamisse | [Clustering](5-Clustering/README.md) | Puhasta, valmista ette ja visualiseeri oma andmeid; sissejuhatus klasterdamisse | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Nigeeria muusikamaitsete uurimine 🎧 | [Clustering](5-Clustering/README.md) | Uuri K-Meansi klasterdamismeetodit | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Sissejuhatus loomuliku keele töötlemisse ☕️ | [Natural language processing](6-NLP/README.md) | Õpi NLP põhialuseid, luues lihtsa boti | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Levinumad NLP ülesanded ☕️ | [Natural language processing](6-NLP/README.md) | Süvenda oma NLP teadmisi, mõistes keelestruktuuridega seotud tavapäraseid ülesandeid | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Tõlkimine ja meeleolu analüüs ♥️ | [Natural language processing](6-NLP/README.md) | Tõlkimine ja meeleolu analüüs Jane Austeni tekstidega | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Euroopa romantilised hotellid ♥️ | [Natural language processing](6-NLP/README.md) | Meeleolu analüüs hotellide arvustustega 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Euroopa romantilised hotellid ♥️ | [Natural language processing](6-NLP/README.md) | Meeleolu analüüs hotellide arvustustega 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Sissejuhatus ajaseeria prognoosimisse | [Time series](7-TimeSeries/README.md) | Sissejuhatus ajaseeria prognoosimisse | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Maailma elektritarbimine ⚡️ - ajaseeria prognoosimine ARIMA-ga | [Time series](7-TimeSeries/README.md) | Ajaseeria prognoosimine ARIMA meetodiga | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Maailma elektritarbimine ⚡️ - ajaseeria prognoosimine SVR-ga | [Time series](7-TimeSeries/README.md) | Ajaseeria prognoosimine tugivektorregressori abil | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Sissejuhatus tugevdusõppesse | [Reinforcement learning](8-Reinforcement/README.md) | Sissejuhatus tugevdusõppesse Q-õppimise abil | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Aita Peteril hundi eest põgeneda! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Tugevdusõppe Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Järelsõna | Masinõppe reaalsed stsenaariumid ja rakendused | [ML in the Wild](9-Real-World/README.md) | Huvitavad ja valgustavad masinõppe klassikalised reaalsed rakendused | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Järelsõna | Masinõppe mudelite silumine RAI juhtpaneeli abil | [ML in the Wild](9-Real-World/README.md) | Masinõppe mudelite silumine kasutades Responsible AI juhtpaneeli komponente | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [Leia kõik selle kursuse lisamaterjalid meie Microsoft Learn kollektsioonist](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Võimalus kasutada võrguühenduseta -Saad seda dokumentatsiooni kasutada võrguühenduseta, kasutades [Docsify](https://docsify.js.org/#/). Forki see repo, [paigalda Docsify](https://docsify.js.org/#/quickstart) oma kohalikku masinasse ja seejärel kirjuta selle repo juurkaustas `docsify serve`. Veebisait avaneb pordil 3000 sinu localhostis: `localhost:3000`. +Seda dokumentatsiooni saab kasutada võrguühenduseta, kasutades [Docsify](https://docsify.js.org/#/). Tee selle hoidla fork, [paigalda Docsify](https://docsify.js.org/#/quickstart) oma kohalikku masinasse ja seejärel selle hoidla juurkataloogis kirjuta `docsify serve`. Veebisait on kättesaadav pordil 3000 sinu kohalikus arvutis: `localhost:3000`. ## PDF-id -Leia õppekava PDF koos linkidega [siit](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Leia õppekava pdf koos linkidega [siit](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). + -## 🎒 Teised kursused +## 🎒 Teised kursused -Meie meeskond loob ka teisi kursuseid! Vaata: +Meie meeskond toodab ka teisi kursuseid! Vaata: +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + ### Azure / Edge / MCP / Agendid -[![AZD algajatele](https://img.shields.io/badge/AZD%20algajatele-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI algajatele](https://img.shields.io/badge/Edge%20AI%20algajatele-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP algajatele](https://img.shields.io/badge/MCP%20algajatele-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI agendid algajatele](https://img.shields.io/badge/AI%20agendid%20algajatele-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- ### Generatiivse tehisintellekti sari -[![Generatiivne AI algajatele](https://img.shields.io/badge/Generatiivne%20AI%20algajatele-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generatiivne AI (.NET)](https://img.shields.io/badge/Generatiivne%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generatiivne AI (Java)](https://img.shields.io/badge/Generatiivne%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generatiivne AI (JavaScript)](https://img.shields.io/badge/Generatiivne%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generatiivne tehisintellekt (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generatiivne tehisintellekt (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- -### Põhiõpe -[![ML algajatele](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Andmeteadus algajatele](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![Tehisintellekt algajatele](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Küberjulgeolek algajatele](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Veebiarendus algajatele](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT algajatele](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR arendus algajatele](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +### Põhialane õppimine +[![ML algajatele](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Andmeteadus algajatele](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![Tehisintellekt algajatele](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Küberjulgeolek algajatele](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Veebiarendus algajatele](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT algajatele](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR arendus algajatele](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Copilot sari -[![Copilot tehisintellekti paarisprogrammeerimiseks](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot C#/.NET jaoks](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot seiklus](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + +### Copiloti sari +[![Copilot tehisintellekti paarisprogrammeerimiseks](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot C#/.NET jaoks](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copiloti seiklus](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) -## Abi saamine +## Abi saamine -Kui jääd hätta või sul on küsimusi AI rakenduste loomise kohta, liitu teiste õppijate ja kogenud arendajatega MCP aruteludes. See on toetav kogukond, kus küsimused on teretulnud ja teadmisi jagatakse vabalt. +Kui jääd hätta või sul on küsimusi tehisintellekti rakenduste loomise kohta, liitu teiste õppijate ja kogenud arendajatega MCP aruteludes. See on toetav kogukond, kus küsimused on teretulnud ja teadmisi jagatakse vabalt. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Kui sul on tagasisidet toodete kohta või esineb vigu arendamisel, külasta: +Kui sul on toote tagasisidet või ehitamise ajal vigu, külasta: -[![Microsoft Foundry arendajate foorum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry arendajate foorum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Lahtiütlus**: -See dokument on tõlgitud AI tõlketeenuse [Co-op Translator](https://github.com/Azure/co-op-translator) abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta arusaamatuste või valesti tõlgenduste eest, mis võivad tekkida selle tõlke kasutamise tõttu. +**Vastutusest loobumine**: +See dokument on tõlgitud kasutades tehisintellektil põhinevat tõlketeenust [Co-op Translator](https://github.com/Azure/co-op-translator). Kuigi püüame tagada täpsust, palun arvestage, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Originaaldokument selle emakeeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitatakse kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valesti mõistmiste eest. \ No newline at end of file diff --git a/translations/fa/README.md b/translations/fa/README.md index 8d746ff8b..b667102e5 100644 --- a/translations/fa/README.md +++ b/translations/fa/README.md @@ -1,168 +1,175 @@ -[![مجوز GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![مشارکت‌کنندگان GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![مشکلات GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![درخواست‌های کشیدن GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs خوش‌آمدید](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![تماشاچیان GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![انشعابات GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![ستاره‌های GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 پشتیبانی چندزبانه #### پشتیبانی شده از طریق GitHub Action (خودکار و همیشه به‌روز) - -[عربی](../ar/README.md) | [بنگالی](../bn/README.md) | [بلغاری](../bg/README.md) | [برمه‌ای (میانمار)](../my/README.md) | [چینی (ساده‌شده)](../zh/README.md) | [چینی (سنتی، هنگ‌کنگ)](../hk/README.md) | [چینی (سنتی، ماکائو)](../mo/README.md) | [چینی (سنتی، تایوان)](../tw/README.md) | [کرواتی](../hr/README.md) | [چکی](../cs/README.md) | [دانمارکی](../da/README.md) | [هلندی](../nl/README.md) | [استونیایی](../et/README.md) | [فنلاندی](../fi/README.md) | [فرانسوی](../fr/README.md) | [آلمانی](../de/README.md) | [یونانی](../el/README.md) | [عبری](../he/README.md) | [هندی](../hi/README.md) | [مجاری](../hu/README.md) | [اندونزیایی](../id/README.md) | [ایتالیایی](../it/README.md) | [ژاپنی](../ja/README.md) | [کره‌ای](../ko/README.md) | [لیتوانیایی](../lt/README.md) | [مالایی](../ms/README.md) | [مراتی](../mr/README.md) | [نپالی](../ne/README.md) | [پیجین نیجریه‌ای](../pcm/README.md) | [نروژی](../no/README.md) | [فارسی](./README.md) | [لهستانی](../pl/README.md) | [پرتغالی (برزیل)](../br/README.md) | [پرتغالی (پرتغال)](../pt/README.md) | [پنجابی (گرمکی)](../pa/README.md) | [رومانیایی](../ro/README.md) | [روسی](../ru/README.md) | [صربی (سیریلیک)](../sr/README.md) | [اسلواکی](../sk/README.md) | [اسلوونیایی](../sl/README.md) | [اسپانیایی](../es/README.md) | [سواحیلی](../sw/README.md) | [سوئدی](../sv/README.md) | [تاگالوگ (فیلیپینی)](../tl/README.md) | [تامیلی](../ta/README.md) | [تایلندی](../th/README.md) | [ترکی](../tr/README.md) | [اوکراینی](../uk/README.md) | [اردو](../ur/README.md) | [ویتنامی](../vi/README.md) - + +[عربی](../ar/README.md) | [بنگالی](../bn/README.md) | [بلغاری](../bg/README.md) | [برمه‌ای (میانمار)](../my/README.md) | [چینی (ساده‌شده)](../zh/README.md) | [چینی (سنتی، هنگ‌کنگ)](../hk/README.md) | [چینی (سنتی، ماکائو)](../mo/README.md) | [چینی (سنتی، تایوان)](../tw/README.md) | [کرواتی](../hr/README.md) | [چکی](../cs/README.md) | [دانمارکی](../da/README.md) | [هلندی](../nl/README.md) | [استونیایی](../et/README.md) | [فنلاندی](../fi/README.md) | [فرانسوی](../fr/README.md) | [آلمانی](../de/README.md) | [یونانی](../el/README.md) | [عبری](../he/README.md) | [هندی](../hi/README.md) | [مجارستانی](../hu/README.md) | [اندونزیایی](../id/README.md) | [ایتالیایی](../it/README.md) | [ژاپنی](../ja/README.md) | [کانادا](../kn/README.md) | [کره‌ای](../ko/README.md) | [لیتوانیایی](../lt/README.md) | [مالایی](../ms/README.md) | [مالایالام](../ml/README.md) | [مراتی](../mr/README.md) | [نپالی](../ne/README.md) | [پیدجین نیجریه‌ای](../pcm/README.md) | [نروژی](../no/README.md) | [فارسی](./README.md) | [لهستانی](../pl/README.md) | [پرتغالی (برزیل)](../br/README.md) | [پرتغالی (پرتغال)](../pt/README.md) | [پنجابی (گورمخی)](../pa/README.md) | [رومانیایی](../ro/README.md) | [روسی](../ru/README.md) | [صربی (سیریلیک)](../sr/README.md) | [اسلواکی](../sk/README.md) | [اسلوونیایی](../sl/README.md) | [اسپانیایی](../es/README.md) | [سواحیلی](../sw/README.md) | [سوئدی](../sv/README.md) | [تاگالوگ (فیلیپینی)](../tl/README.md) | [تامیل](../ta/README.md) | [تلوگو](../te/README.md) | [تایلندی](../th/README.md) | [ترکی](../tr/README.md) | [اوکراینی](../uk/README.md) | [اردو](../ur/README.md) | [ویتنامی](../vi/README.md) + #### به جامعه ما بپیوندید [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -ما یک سری یادگیری با هوش مصنوعی در Discord داریم، بیشتر بدانید و از تاریخ ۱۸ تا ۳۰ سپتامبر ۲۰۲۵ به ما بپیوندید. شما نکات و ترفندهای استفاده از GitHub Copilot برای علم داده را یاد خواهید گرفت. +ما یک سری آموزش Discord با موضوع یادگیری با هوش مصنوعی داریم، برای اطلاعات بیشتر و پیوستن به ما به [سری یادگیری با هوش مصنوعی](https://aka.ms/learnwithai/discord) از ۱۸ تا ۳۰ سپتامبر ۲۰۲۵ مراجعه کنید. شما نکات و ترفندهای استفاده از GitHub Copilot برای علم داده را دریافت خواهید کرد. ![سری یادگیری با هوش مصنوعی](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.fa.png) # یادگیری ماشین برای مبتدیان - یک برنامه درسی -> 🌍 به دور دنیا سفر کنید و یادگیری ماشین را از طریق فرهنگ‌های جهانی کشف کنید 🌍 +> 🌍 سفر در سراسر جهان در حالی که یادگیری ماشین را از طریق فرهنگ‌های جهانی کاوش می‌کنیم 🌍 -مدافعان ابری در مایکروسافت خوشحال هستند که یک برنامه درسی ۱۲ هفته‌ای و ۲۶ درس درباره **یادگیری ماشین** ارائه دهند. در این برنامه درسی، شما درباره چیزی که گاهی به عنوان **یادگیری ماشین کلاسیک** شناخته می‌شود، یاد خواهید گرفت، که عمدتاً از کتابخانه Scikit-learn استفاده می‌کند و از یادگیری عمیق که در برنامه درسی [هوش مصنوعی برای مبتدیان](https://aka.ms/ai4beginners) پوشش داده شده است، اجتناب می‌کند. این درس‌ها را با برنامه درسی ['علم داده برای مبتدیان'](https://aka.ms/ds4beginners) ترکیب کنید! +مدافعان ابر در مایکروسافت خوشحالند که یک برنامه درسی ۱۲ هفته‌ای با ۲۶ درس درباره **یادگیری ماشین** ارائه دهند. در این برنامه درسی، شما با چیزی که گاهی اوقات به آن **یادگیری ماشین کلاسیک** گفته می‌شود آشنا خواهید شد، که عمدتاً از کتابخانه Scikit-learn استفاده می‌کند و از یادگیری عمیق که در برنامه درسی [هوش مصنوعی برای مبتدیان](https://aka.ms/ai4beginners) پوشش داده شده است، اجتناب می‌کند. این دروس را با برنامه درسی ['علم داده برای مبتدیان'](https://aka.ms/ds4beginners) نیز ترکیب کنید! -با ما به دور دنیا سفر کنید و این تکنیک‌های کلاسیک را به داده‌های مناطق مختلف جهان اعمال کنید. هر درس شامل آزمون‌های قبل و بعد از درس، دستورالعمل‌های نوشته شده برای تکمیل درس، یک راه‌حل، یک تکلیف و موارد دیگر است. روش آموزشی مبتنی بر پروژه ما به شما امکان می‌دهد در حین ساختن یاد بگیرید، که یک روش اثبات شده برای تثبیت مهارت‌های جدید است. +با ما در سراسر جهان سفر کنید در حالی که این تکنیک‌های کلاسیک را روی داده‌های مناطق مختلف جهان اعمال می‌کنیم. هر درس شامل آزمون‌های قبل و بعد از درس، دستورالعمل‌های مکتوب برای تکمیل درس، راه‌حل، تمرین و موارد دیگر است. روش آموزش مبتنی بر پروژه ما به شما اجازه می‌دهد در حین ساختن یاد بگیرید، روشی اثبات شده برای تثبیت مهارت‌های جدید. -**✍️ تشکر فراوان از نویسندگان ما** Jen Looper، Stephen Howell، Francesca Lazzeri، Tomomi Imura، Cassie Breviu، Dmitry Soshnikov، Chris Noring، Anirban Mukherjee، Ornella Altunyan، Ruth Yakubu و Amy Boyd +**✍️ از نویسندگان ما صمیمانه سپاسگزاریم** جن لوپر، استیفن هاول، فرانچسکا لازری، تومومی ایمورا، کاسی برویو، دیمیتری سوشنیکوف، کریس نورینگ، آنیربان موخرجی، اورنلا آلتونیان، روث یاکوبو و امی بوید -**🎨 همچنین تشکر از تصویرگران ما** Tomomi Imura، Dasani Madipalli و Jen Looper +**🎨 همچنین از تصویرگران ما تشکر می‌کنیم** تومومی ایمورا، داسانی مادپالی و جن لوپر -**🙏 تشکر ویژه 🙏 از نویسندگان، بازبینان و مشارکت‌کنندگان محتوای Microsoft Student Ambassador**، به ویژه Rishit Dagli، Muhammad Sakib Khan Inan، Rohan Raj، Alexandru Petrescu، Abhishek Jaiswal، Nawrin Tabassum، Ioan Samuila و Snigdha Agarwal +**🙏 تشکر ویژه 🙏 از نویسندگان، بازبینان و مشارکت‌کنندگان محتوای سفیران دانشجویی مایکروسافت**، به ویژه ریشیت داگلی، محمد ساکیب خان اینان، روهان راج، الکساندرو پتروسکو، آبیشک جایسوال، نوورین طبسم، ایوان سامویلا و اسنیگدها آگاروال -**🤩 سپاسگزاری ویژه از Microsoft Student Ambassadors Eric Wanjau، Jasleen Sondhi و Vidushi Gupta برای درس‌های R ما!** +**🤩 قدردانی ویژه از سفیران دانشجویی مایکروسافت اریک وانجاو، جاسلین سوندی و ویدوشی گوپتا برای دروس R ما!** # شروع کار این مراحل را دنبال کنید: -1. **انشعاب مخزن**: روی دکمه "Fork" در گوشه بالا سمت راست این صفحه کلیک کنید. +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) +> [تمام منابع اضافی این دوره را در مجموعه Microsoft Learn ما بیابید](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **نیاز به کمک دارید؟** راهنمای [رفع مشکلات](TROUBLESHOOTING.md) ما را برای حل مشکلات رایج در نصب، راه‌اندازی و اجرای درس‌ها بررسی کنید. +> 🔧 **نیاز به کمک دارید؟** راهنمای [عیب‌یابی](TROUBLESHOOTING.md) ما را برای حل مشکلات رایج نصب، راه‌اندازی و اجرای دروس بررسی کنید. -**[دانش‌آموزان](https://aka.ms/student-page)**، برای استفاده از این برنامه درسی، کل مخزن را به حساب GitHub خود انشعاب دهید و تمرین‌ها را به صورت فردی یا گروهی انجام دهید: +**[دانش‌آموزان](https://aka.ms/student-page)**، برای استفاده از این برنامه درسی، کل مخزن را به حساب GitHub خود فورک کنید و تمرین‌ها را به تنهایی یا با گروه انجام دهید: -- با آزمون قبل از درس شروع کنید. -- درس را بخوانید و فعالیت‌ها را انجام دهید، در هر بررسی دانش توقف کنید و تأمل کنید. -- سعی کنید پروژه‌ها را با درک درس‌ها ایجاد کنید، نه با اجرای کد راه‌حل؛ با این حال، آن کد در پوشه‌های `/solution` در هر درس مبتنی بر پروژه موجود است. -- آزمون بعد از درس را انجام دهید. +- با یک آزمون پیش‌درس شروع کنید. +- درس را بخوانید و فعالیت‌ها را انجام دهید، در هر بررسی دانش توقف کرده و تأمل کنید. +- سعی کنید پروژه‌ها را با درک دروس ایجاد کنید نه فقط اجرای کد راه‌حل؛ البته آن کد در پوشه‌های `/solution` در هر درس پروژه‌محور موجود است. +- آزمون پس از درس را انجام دهید. - چالش را کامل کنید. -- تکلیف را کامل کنید. -- پس از تکمیل یک گروه درس، به [تابلوی بحث](https://github.com/microsoft/ML-For-Beginners/discussions) مراجعه کنید و با پر کردن ابزار ارزیابی پیشرفت مناسب PAT، "بلند یاد بگیرید". یک 'PAT' ابزار ارزیابی پیشرفت است که یک معیار است که شما برای پیشرفت یادگیری خود پر می‌کنید. شما همچنین می‌توانید به PAT‌های دیگر واکنش نشان دهید تا با هم یاد بگیریم. +- تمرین را انجام دهید. +- پس از اتمام یک گروه درسی، به [تابلوی بحث](https://github.com/microsoft/ML-For-Beginners/discussions) مراجعه کنید و با پر کردن فرم PAT مربوطه «بلند یاد بگیرید». PAT یک ابزار ارزیابی پیشرفت است که با پر کردن آن یادگیری خود را عمیق‌تر می‌کنید. همچنین می‌توانید به PATهای دیگر واکنش نشان دهید تا با هم یاد بگیریم. -> برای مطالعه بیشتر، توصیه می‌کنیم این [ماژول‌ها و مسیرهای یادگیری Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) را دنبال کنید. +> برای مطالعه بیشتر، توصیه می‌کنیم این ماژول‌ها و مسیرهای یادگیری [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) را دنبال کنید. -**معلمان**، ما [برخی پیشنهادات](for-teachers.md) در مورد نحوه استفاده از این برنامه درسی را گنجانده‌ایم. +**معلمان**، ما [برخی پیشنهادات](for-teachers.md) درباره نحوه استفاده از این برنامه درسی ارائه داده‌ایم. --- -## راهنمای ویدئویی +## ویدیوهای راهنما -برخی از درس‌ها به صورت ویدئوی کوتاه در دسترس هستند. شما می‌توانید همه این‌ها را در درس‌ها یا در [لیست پخش ML برای مبتدیان در کانال YouTube توسعه‌دهنده مایکروسافت](https://aka.ms/ml-beginners-videos) پیدا کنید، با کلیک بر روی تصویر زیر. +برخی از دروس به صورت ویدیوهای کوتاه موجود هستند. می‌توانید همه آن‌ها را درون دروس یا در [فهرست پخش ML for Beginners در کانال YouTube توسعه‌دهندگان مایکروسافت](https://aka.ms/ml-beginners-videos) با کلیک روی تصویر زیر بیابید. -[![بنر ML برای مبتدیان](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.fa.png)](https://aka.ms/ml-beginners-videos) +[![بنر ML for beginners](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.fa.png)](https://aka.ms/ml-beginners-videos) --- -## تیم را ملاقات کنید +## آشنایی با تیم -[![ویدئوی تبلیغاتی](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![ویدیوی تبلیغاتی](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **گیف توسط** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 برای مشاهده ویدئویی درباره پروژه و افرادی که آن را ایجاد کرده‌اند، روی تصویر بالا کلیک کنید! +> 🎥 برای دیدن ویدیو درباره پروژه و افرادی که آن را ساخته‌اند روی تصویر بالا کلیک کنید! --- -## روش آموزشی +## روش آموزش -ما دو اصل آموزشی را هنگام ساخت این برنامه درسی انتخاب کرده‌ایم: اطمینان از اینکه این برنامه مبتنی بر پروژه **عملی** است و اینکه شامل **آزمون‌های مکرر** می‌شود. علاوه بر این، این برنامه درسی دارای یک **موضوع مشترک** است که به آن انسجام می‌بخشد. +ما دو اصل آموزشی را هنگام ساخت این برنامه درسی انتخاب کرده‌ایم: اطمینان از اینکه برنامه به صورت عملی و **مبتنی بر پروژه** است و شامل **آزمون‌های مکرر** می‌باشد. علاوه بر این، این برنامه دارای یک **تم مشترک** است تا انسجام آن حفظ شود. -با اطمینان از اینکه محتوا با پروژه‌ها هماهنگ است، فرآیند برای دانش‌آموزان جذاب‌تر می‌شود و حفظ مفاهیم افزایش می‌یابد. علاوه بر این، یک آزمون کم‌استرس قبل از کلاس، قصد دانش‌آموز را به سمت یادگیری یک موضوع هدایت می‌کند، در حالی که یک آزمون دوم بعد از کلاس، حفظ بیشتر را تضمین می‌کند. این برنامه درسی به گونه‌ای طراحی شده است که انعطاف‌پذیر و سرگرم‌کننده باشد و می‌توان آن را به طور کامل یا جزئی انجام داد. پروژه‌ها کوچک شروع می‌شوند و تا پایان چرخه ۱۲ هفته‌ای به طور فزاینده‌ای پیچیده می‌شوند. این برنامه درسی همچنین شامل یک پس‌نوشت درباره کاربردهای واقعی یادگیری ماشین است که می‌تواند به عنوان اعتبار اضافی یا به عنوان پایه‌ای برای بحث استفاده شود. +با اطمینان از اینکه محتوا با پروژه‌ها همسو است، فرآیند برای دانش‌آموزان جذاب‌تر شده و حفظ مفاهیم افزایش می‌یابد. همچنین، یک آزمون کم‌فشار قبل از کلاس نیت دانش‌آموز را برای یادگیری موضوع تنظیم می‌کند، در حالی که آزمون دوم پس از کلاس حفظ بیشتر را تضمین می‌کند. این برنامه درسی به گونه‌ای طراحی شده است که انعطاف‌پذیر و سرگرم‌کننده باشد و می‌توان آن را به طور کامل یا بخشی از آن را گذراند. پروژه‌ها از کوچک شروع شده و تا پایان چرخه ۱۲ هفته‌ای به تدریج پیچیده‌تر می‌شوند. این برنامه همچنین شامل یک پس‌نوشت درباره کاربردهای واقعی یادگیری ماشین است که می‌تواند به عنوان اعتبار اضافی یا پایه‌ای برای بحث استفاده شود. -> راهنمای [رفتار](CODE_OF_CONDUCT.md)، [مشارکت](CONTRIBUTING.md)، [ترجمه](TRANSLATIONS.md)، و [رفع مشکلات](TROUBLESHOOTING.md) ما را پیدا کنید. ما از بازخورد سازنده شما استقبال می‌کنیم! +> دستورالعمل‌های [رفتار حرفه‌ای](CODE_OF_CONDUCT.md)، [مشارکت](CONTRIBUTING.md)، [ترجمه](TRANSLATIONS.md) و [عیب‌یابی](TROUBLESHOOTING.md) ما را بیابید. ما از بازخورد سازنده شما استقبال می‌کنیم! ## هر درس شامل -- اسکچ‌نوت اختیاری -- ویدئوی تکمیلی اختیاری -- راهنمای ویدئویی (فقط برخی درس‌ها) -- [آزمون گرم‌آپ قبل از درس](https://ff-quizzes.netlify.app/en/ml/) -- درس نوشته شده -- برای درس‌های مبتنی بر پروژه، راهنمای گام به گام برای ساخت پروژه +- یادداشت اختیاری +- ویدیوی مکمل اختیاری +- ویدیوی راهنما (فقط برخی دروس) +- [آزمون گرم‌کننده پیش‌درس](https://ff-quizzes.netlify.app/en/ml/) +- درس مکتوب +- برای دروس مبتنی بر پروژه، راهنمای گام به گام ساخت پروژه - بررسی دانش -- یک چالش +- چالش - مطالعه تکمیلی -- تکلیف -- [آزمون بعد از درس](https://ff-quizzes.netlify.app/en/ml/) +- تمرین +- [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/) -> **یادداشتی درباره زبان‌ها**: این درس‌ها عمدتاً به زبان Python نوشته شده‌اند، اما بسیاری از آن‌ها نیز به زبان R در دسترس هستند. برای تکمیل یک درس R، به پوشه `/solution` بروید و به دنبال درس‌های R بگردید. آن‌ها شامل یک پسوند .rmd هستند که نشان‌دهنده یک فایل **R Markdown** است که می‌توان آن را به سادگی به عنوان ترکیبی از `تکه‌های کد` (از R یا زبان‌های دیگر) و یک `هدر YAML` (که راهنمایی می‌کند چگونه خروجی‌ها مانند PDF قالب‌بندی شوند) در یک `سند Markdown` تعریف کرد. به این ترتیب، به عنوان یک چارچوب نویسندگی نمونه برای علم داده عمل می‌کند زیرا به شما امکان می‌دهد کد خود، خروجی آن و افکار خود را با اجازه نوشتن آن‌ها در Markdown ترکیب کنید. علاوه بر این، اسناد R Markdown می‌توانند به فرمت‌های خروجی مانند PDF، HTML یا Word تبدیل شوند. +> **نکته‌ای درباره زبان‌ها**: این دروس عمدتاً به زبان پایتون نوشته شده‌اند، اما بسیاری از آن‌ها به زبان R نیز موجود است. برای تکمیل یک درس R، به پوشه `/solution` بروید و به دنبال دروس R بگردید. آن‌ها دارای پسوند .rmd هستند که نمایانگر یک فایل **R Markdown** است که به سادگی می‌توان آن را به عنوان ترکیبی از `بخش‌های کد` (از R یا زبان‌های دیگر) و یک `هدر YAML` (که نحوه قالب‌بندی خروجی‌ها مانند PDF را هدایت می‌کند) در یک `سند Markdown` تعریف کرد. بنابراین، این چارچوبی نمونه برای نویسندگی در علم داده است زیرا به شما اجازه می‌دهد کد، خروجی آن و افکارتان را با نوشتن در Markdown ترکیب کنید. علاوه بر این، اسناد R Markdown می‌توانند به فرمت‌های خروجی مانند PDF، HTML یا Word تبدیل شوند. -> **یادداشتی درباره آزمون‌ها**: همه آزمون‌ها در [پوشه برنامه آزمون](../../quiz-app) قرار دارند، برای مجموع ۵۲ آزمون هر کدام شامل سه سوال. آن‌ها از داخل درس‌ها لینک شده‌اند اما برنامه آزمون می‌تواند به صورت محلی اجرا شود؛ دستورالعمل‌های موجود در پوشه `quiz-app` را دنبال کنید تا به صورت محلی میزبان یا در Azure مستقر کنید. +> **نکته‌ای درباره آزمون‌ها**: همه آزمون‌ها در [پوشه Quiz App](../../quiz-app) قرار دارند، در مجموع ۵۲ آزمون با سه سوال هر کدام. آن‌ها از داخل دروس لینک شده‌اند اما اپلیکیشن آزمون می‌تواند به صورت محلی اجرا شود؛ دستورالعمل‌های میزبانی محلی یا استقرار در Azure را در پوشه `quiz-app` دنبال کنید. -| شماره درس | موضوع | گروه‌بندی درس | اهداف یادگیری | درس مرتبط | نویسنده | +| شماره درس | موضوع | گروه درس | اهداف یادگیری | درس مرتبط | نویسنده | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | مقدمه‌ای بر یادگیری ماشین | [Introduction](1-Introduction/README.md) | مفاهیم پایه‌ای یادگیری ماشین را بیاموزید | [Lesson](1-Introduction/1-intro-to-ML/README.md) | محمد | -| 02 | تاریخچه یادگیری ماشین | [Introduction](1-Introduction/README.md) | تاریخچه این حوزه را بیاموزید | [Lesson](1-Introduction/2-history-of-ML/README.md) | جن و ایمی | -| 03 | عدالت و یادگیری ماشین | [Introduction](1-Introduction/README.md) | مسائل فلسفی مهم پیرامون عدالت که دانشجویان باید هنگام ساخت و استفاده از مدل‌های یادگیری ماشین در نظر بگیرند چیست؟ | [Lesson](1-Introduction/3-fairness/README.md) | تومومی | -| 04 | تکنیک‌های یادگیری ماشین | [Introduction](1-Introduction/README.md) | محققان یادگیری ماشین از چه تکنیک‌هایی برای ساخت مدل‌های یادگیری ماشین استفاده می‌کنند؟ | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | کریس و جن | -| 05 | مقدمه‌ای بر رگرسیون | [Regression](2-Regression/README.md) | با پایتون و Scikit-learn برای مدل‌های رگرسیون شروع کنید | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جن • اریک وانجا | -| 06 | قیمت کدو تنبل در آمریکای شمالی 🎃 | [Regression](2-Regression/README.md) | داده‌ها را برای آماده‌سازی برای یادگیری ماشین تجسم و پاکسازی کنید | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | جن • اریک وانجا | -| 07 | قیمت کدو تنبل در آمریکای شمالی 🎃 | [Regression](2-Regression/README.md) | مدل‌های رگرسیون خطی و چندجمله‌ای بسازید | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جن و دیمیتری • اریک وانجا | -| 08 | قیمت کدو تنبل در آمریکای شمالی 🎃 | [Regression](2-Regression/README.md) | یک مدل رگرسیون لجستیک بسازید | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | جن • اریک وانجا | -| 09 | یک اپلیکیشن وب 🔌 | [Web App](3-Web-App/README.md) | یک اپلیکیشن وب برای استفاده از مدل آموزش‌دیده خود بسازید | [Python](3-Web-App/1-Web-App/README.md) | جن | -| 10 | مقدمه‌ای بر دسته‌بندی | [Classification](4-Classification/README.md) | داده‌های خود را پاکسازی، آماده‌سازی و تجسم کنید؛ مقدمه‌ای بر دسته‌بندی | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جن و کاسی • اریک وانجا | -| 11 | غذاهای خوشمزه آسیایی و هندی 🍜 | [Classification](4-Classification/README.md) | مقدمه‌ای بر دسته‌بندها | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جن و کاسی • اریک وانجا | -| 12 | غذاهای خوشمزه آسیایی و هندی 🍜 | [Classification](4-Classification/README.md) | دسته‌بندهای بیشتر | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | جن و کاسی • اریک وانجا | -| 13 | غذاهای خوشمزه آسیایی و هندی 🍜 | [Classification](4-Classification/README.md) | یک اپلیکیشن وب توصیه‌گر با استفاده از مدل خود بسازید | [Python](4-Classification/4-Applied/README.md) | جن | -| 14 | مقدمه‌ای بر خوشه‌بندی | [Clustering](5-Clustering/README.md) | داده‌های خود را پاکسازی، آماده‌سازی و تجسم کنید؛ مقدمه‌ای بر خوشه‌بندی | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جن • اریک وانجا | -| 15 | بررسی سلیقه‌های موسیقی نیجریه‌ای 🎧 | [Clustering](5-Clustering/README.md) | روش خوشه‌بندی K-Means را بررسی کنید | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | جن • اریک وانجا | -| 16 | مقدمه‌ای بر پردازش زبان طبیعی ☕️ | [Natural language processing](6-NLP/README.md) | اصول پایه‌ای پردازش زبان طبیعی را با ساخت یک ربات ساده بیاموزید | [Python](6-NLP/1-Introduction-to-NLP/README.md) | استیون | -| 17 | وظایف رایج پردازش زبان طبیعی ☕️ | [Natural language processing](6-NLP/README.md) | دانش خود را در زمینه پردازش زبان طبیعی با درک وظایف رایج مورد نیاز هنگام کار با ساختارهای زبانی عمیق‌تر کنید | [Python](6-NLP/2-Tasks/README.md) | استیون | -| 18 | ترجمه و تحلیل احساسات ♥️ | [Natural language processing](6-NLP/README.md) | ترجمه و تحلیل احساسات با آثار جین آستن | [Python](6-NLP/3-Translation-Sentiment/README.md) | استیون | -| 19 | هتل‌های عاشقانه اروپا ♥️ | [Natural language processing](6-NLP/README.md) | تحلیل احساسات با بررسی‌های هتل 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | استیون | -| 20 | هتل‌های عاشقانه اروپا ♥️ | [Natural language processing](6-NLP/README.md) | تحلیل احساسات با بررسی‌های هتل 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | استیون | -| 21 | مقدمه‌ای بر پیش‌بینی سری‌های زمانی | [Time series](7-TimeSeries/README.md) | مقدمه‌ای بر پیش‌بینی سری‌های زمانی | [Python](7-TimeSeries/1-Introduction/README.md) | فرانچسکا | -| 22 | ⚡️ مصرف برق جهانی ⚡️ - پیش‌بینی سری‌های زمانی با ARIMA | [Time series](7-TimeSeries/README.md) | پیش‌بینی سری‌های زمانی با ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | فرانچسکا | -| 23 | ⚡️ مصرف برق جهانی ⚡️ - پیش‌بینی سری‌های زمانی با SVR | [Time series](7-TimeSeries/README.md) | پیش‌بینی سری‌های زمانی با رگرسیون بردار پشتیبان | [Python](7-TimeSeries/3-SVR/README.md) | انیربان | -| 24 | مقدمه‌ای بر یادگیری تقویتی | [Reinforcement learning](8-Reinforcement/README.md) | مقدمه‌ای بر یادگیری تقویتی با Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | دیمیتری | -| 25 | به پیتر کمک کنید تا از گرگ فرار کند! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | یادگیری تقویتی Gym | [Python](8-Reinforcement/2-Gym/README.md) | دیمیتری | -| Postscript | سناریوها و کاربردهای واقعی یادگیری ماشین | [ML in the Wild](9-Real-World/README.md) | کاربردهای جالب و آشکار یادگیری ماشین کلاسیک | [Lesson](9-Real-World/1-Applications/README.md) | تیم | -| Postscript | اشکال‌زدایی مدل در یادگیری ماشین با داشبورد RAI | [ML in the Wild](9-Real-World/README.md) | اشکال‌زدایی مدل در یادگیری ماشین با استفاده از اجزای داشبورد هوش مصنوعی مسئول | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | روث یاکوبو | - -> [تمام منابع اضافی این دوره را در مجموعه Microsoft Learn ما پیدا کنید](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| ۰۱ | مقدمه‌ای بر یادگیری ماشین | [Introduction](1-Introduction/README.md) | مفاهیم پایه‌ای پشت یادگیری ماشین را بیاموزید | [Lesson](1-Introduction/1-intro-to-ML/README.md) | محمد | +| ۰۲ | تاریخچه یادگیری ماشین | [Introduction](1-Introduction/README.md) | تاریخچه زمینه یادگیری ماشین را بیاموزید | [Lesson](1-Introduction/2-history-of-ML/README.md) | جن و ایمی | +| ۰۳ | عدالت و یادگیری ماشین | [Introduction](1-Introduction/README.md) | مسائل فلسفی مهم پیرامون عدالت که دانش‌آموزان باید هنگام ساخت و به‌کارگیری مدل‌های یادگیری ماشین در نظر بگیرند چیست؟ | [Lesson](1-Introduction/3-fairness/README.md) | تومومی | +| ۰۴ | تکنیک‌های یادگیری ماشین | [Introduction](1-Introduction/README.md) | پژوهشگران یادگیری ماشین از چه تکنیک‌هایی برای ساخت مدل‌های یادگیری ماشین استفاده می‌کنند؟ | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | کریس و جن | +| ۰۵ | مقدمه‌ای بر رگرسیون | [Regression](2-Regression/README.md) | شروع کار با پایتون و Scikit-learn برای مدل‌های رگرسیون | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جن • اریک وانجاو | +| ۰۶ | قیمت‌های کدو تنبل آمریکای شمالی 🎃 | [Regression](2-Regression/README.md) | داده‌ها را برای یادگیری ماشین پاک‌سازی و مصورسازی کنید | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | جن • اریک وانجاو | +| ۰۷ | قیمت‌های کدو تنبل آمریکای شمالی 🎃 | [Regression](2-Regression/README.md) | مدل‌های رگرسیون خطی و چندجمله‌ای بسازید | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جن و دیمیتری • اریک وانجاو | +| ۰۸ | قیمت‌های کدو تنبل آمریکای شمالی 🎃 | [Regression](2-Regression/README.md) | مدل رگرسیون لجستیک بسازید | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | جن • اریک وانجاو | +| ۰۹ | یک برنامه وب 🔌 | [Web App](3-Web-App/README.md) | یک برنامه وب بسازید تا از مدل آموزش‌دیده خود استفاده کنید | [Python](3-Web-App/1-Web-App/README.md) | جن | +| ۱۰ | مقدمه‌ای بر طبقه‌بندی | [Classification](4-Classification/README.md) | داده‌های خود را پاک‌سازی، آماده و مصورسازی کنید؛ مقدمه‌ای بر طبقه‌بندی | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جن و کاسی • اریک وانجاو | +| ۱۱ | غذاهای خوشمزه آسیایی و هندی 🍜 | [Classification](4-Classification/README.md) | مقدمه‌ای بر طبقه‌بندها | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جن و کاسی • اریک وانجاو | +| ۱۲ | غذاهای خوشمزه آسیایی و هندی 🍜 | [Classification](4-Classification/README.md) | طبقه‌بندهای بیشتر | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | جن و کاسی • اریک وانجاو | +| ۱۳ | غذاهای خوشمزه آسیایی و هندی 🍜 | [Classification](4-Classification/README.md) | ساخت یک برنامه وب توصیه‌گر با استفاده از مدل خود | [Python](4-Classification/4-Applied/README.md) | جن | +| ۱۴ | مقدمه‌ای بر خوشه‌بندی | [Clustering](5-Clustering/README.md) | داده‌های خود را پاک‌سازی، آماده و مصورسازی کنید؛ مقدمه‌ای بر خوشه‌بندی | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جن • اریک وانجاو | +| ۱۵ | کاوش در سلیقه‌های موسیقی نیجریه‌ای 🎧 | [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) | جن • اریک وانجاو | +| ۱۶ | مقدمه‌ای بر پردازش زبان طبیعی ☕️ | [Natural language processing](6-NLP/README.md) | اصول اولیه پردازش زبان طبیعی را با ساخت یک ربات ساده بیاموزید | [Python](6-NLP/1-Introduction-to-NLP/README.md) | استفن | +| ۱۷ | وظایف رایج پردازش زبان طبیعی ☕️ | [Natural language processing](6-NLP/README.md) | دانش خود را در پردازش زبان طبیعی با درک وظایف رایج مورد نیاز هنگام کار با ساختارهای زبانی عمیق‌تر کنید | [Python](6-NLP/2-Tasks/README.md) | استفن | +| ۱۸ | ترجمه و تحلیل احساسات ♥️ | [Natural language processing](6-NLP/README.md) | ترجمه و تحلیل احساسات با جین آستن | [Python](6-NLP/3-Translation-Sentiment/README.md) | استفن | +| ۱۹ | هتل‌های رمانتیک اروپا ♥️ | [Natural language processing](6-NLP/README.md) | تحلیل احساسات با بررسی‌های هتل ۱ | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | استفن | +| ۲۰ | هتل‌های رمانتیک اروپا ♥️ | [Natural language processing](6-NLP/README.md) | تحلیل احساسات با بررسی‌های هتل ۲ | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | استفن | +| ۲۱ | مقدمه‌ای بر پیش‌بینی سری‌های زمانی | [Time series](7-TimeSeries/README.md) | مقدمه‌ای بر پیش‌بینی سری‌های زمانی | [Python](7-TimeSeries/1-Introduction/README.md) | فرانچسکا | +| ۲۲ | ⚡️ مصرف برق جهان ⚡️ - پیش‌بینی سری‌های زمانی با ARIMA | [Time series](7-TimeSeries/README.md) | پیش‌بینی سری‌های زمانی با ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | فرانچسکا | +| ۲۳ | ⚡️ مصرف برق جهان ⚡️ - پیش‌بینی سری‌های زمانی با SVR | [Time series](7-TimeSeries/README.md) | پیش‌بینی سری‌های زمانی با رگرسیون بردار پشتیبان | [Python](7-TimeSeries/3-SVR/README.md) | آنیران | +| ۲۴ | مقدمه‌ای بر یادگیری تقویتی | [Reinforcement learning](8-Reinforcement/README.md) | مقدمه‌ای بر یادگیری تقویتی با Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | دیمیتری | +| ۲۵ | کمک به پیتر برای فرار از گرگ! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | یادگیری تقویتی با Gym | [Python](8-Reinforcement/2-Gym/README.md) | دیمیتری | +| پس‌نوشت | سناریوها و کاربردهای دنیای واقعی یادگیری ماشین | [ML in the Wild](9-Real-World/README.md) | کاربردهای جالب و روشنگر دنیای واقعی یادگیری ماشین کلاسیک | [Lesson](9-Real-World/1-Applications/README.md) | تیم | +| پس‌نوشت | اشکال‌زدایی مدل در یادگیری ماشین با داشبورد RAI | [ML in the Wild](9-Real-World/README.md) | اشکال‌زدایی مدل در یادگیری ماشین با استفاده از اجزای داشبورد Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | راث یاکوبو | + +> [تمام منابع اضافی این دوره را در مجموعه Microsoft Learn ما بیابید](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## دسترسی آفلاین -شما می‌توانید این مستندات را به صورت آفلاین با استفاده از [Docsify](https://docsify.js.org/#/) اجرا کنید. این مخزن را فورک کنید، [Docsify را نصب کنید](https://docsify.js.org/#/quickstart) روی دستگاه محلی خود، و سپس در پوشه اصلی این مخزن، دستور `docsify serve` را تایپ کنید. وب‌سایت روی پورت 3000 در localhost شما اجرا خواهد شد: `localhost:3000`. +شما می‌توانید این مستندات را به صورت آفلاین با استفاده از [Docsify](https://docsify.js.org/#/) اجرا کنید. این مخزن را فورک کنید، [Docsify را نصب کنید](https://docsify.js.org/#/quickstart) روی دستگاه محلی خود، و سپس در پوشه ریشه این مخزن، دستور `docsify serve` را تایپ کنید. وب‌سایت روی پورت ۳۰۰۰ در لوکال‌هاست شما سرو خواهد شد: `localhost:3000`. ## فایل‌های PDF -یک فایل PDF از برنامه درسی با لینک‌ها را [اینجا](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) پیدا کنید. +یک فایل PDF از برنامه درسی با لینک‌ها را [اینجا](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) بیابید. -## 🎒 دوره‌های دیگر +## 🎒 دوره‌های دیگر -تیم ما دوره‌های دیگری تولید می‌کند! بررسی کنید: +تیم ما دوره‌های دیگری نیز تولید می‌کند! بررسی کنید: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -172,44 +179,44 @@ CO_OP_TRANSLATOR_METADATA: --- -### سری هوش مصنوعی مولد +### Generative AI Series [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +[![هوش مصنوعی مولد (جاوا)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![هوش مصنوعی مولد (جاوااسکریپت)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- ### یادگیری اصلی -[![یادگیری ماشین برای مبتدیان](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![علم داده برای مبتدیان](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![هوش مصنوعی برای مبتدیان](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![امنیت سایبری برای مبتدیان](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![توسعه وب برای مبتدیان](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![اینترنت اشیا برای مبتدیان](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![توسعه XR برای مبتدیان](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![یادگیری ماشین برای مبتدیان](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![علم داده برای مبتدیان](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![هوش مصنوعی برای مبتدیان](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![امنیت سایبری برای مبتدیان](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![توسعه وب برای مبتدیان](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![اینترنت اشیاء برای مبتدیان](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![توسعه XR برای مبتدیان](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### سری کوپایلوت +[![کوپایلوت برای برنامه‌نویسی جفتی هوش مصنوعی](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![کوپایلوت برای C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![ماجراجویی کوپایلوت](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### سری Copilot -[![Copilot برای برنامه‌نویسی جفتی با هوش مصنوعی](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot برای C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![ماجراجویی Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - - -## دریافت کمک +## دریافت کمک -اگر در ساخت برنامه‌های هوش مصنوعی گیر کردید یا سوالی دارید، به بحث‌های MCP بپیوندید. این جامعه‌ای حمایتی است که در آن سوالات پذیرفته می‌شوند و دانش به صورت آزادانه به اشتراک گذاشته می‌شود. +اگر گیر کردید یا سوالی درباره ساخت برنامه‌های هوش مصنوعی دارید، به همراه دیگر یادگیرندگان و توسعه‌دهندگان باتجربه در بحث‌های MCP بپیوندید. این یک جامعه حمایتی است که در آن سوالات پذیرفته می‌شوند و دانش به‌صورت آزاد به اشتراک گذاشته می‌شود. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![دیسکورد Microsoft Foundry](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -اگر بازخورد محصول دارید یا در هنگام ساخت خطاهایی مشاهده کردید، به اینجا مراجعه کنید: +اگر بازخورد محصول یا خطاهایی هنگام ساخت دارید، به اینجا مراجعه کنید: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![انجمن توسعه‌دهندگان Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **سلب مسئولیت**: -این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نواقصی باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما مسئول هیچ گونه سوءتفاهم یا تفسیر نادرستی که از استفاده این ترجمه ناشی شود، نیستیم. \ No newline at end of file diff --git a/translations/fi/README.md b/translations/fi/README.md index ef4fa90a0..f6b793012 100644 --- a/translations/fi/README.md +++ b/translations/fi/README.md @@ -1,8 +1,8 @@ -[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](./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) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/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) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) +[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](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) #### Liity yhteisöömme [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Meillä on käynnissä Discordissa AI-oppimissarja, opi lisää ja liity mukaan [Learn with AI Series](https://aka.ms/learnwithai/discord) 18.–30. syyskuuta 2025. Saat vinkkejä ja neuvoja GitHub Copilotin käytöstä data-analytiikassa. +Meillä on käynnissä Discordin Learn with AI -sarja, opi lisää ja liity mukaan osoitteessa [Learn with AI Series](https://aka.ms/learnwithai/discord) 18.–30. syyskuuta 2025. Saat vinkkejä ja niksejä GitHub Copilotin käyttämiseen Data Scienticessä. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.fi.png) -# Koneoppiminen aloittelijoille - Opetussuunnitelma +# Koneoppiminen aloittelijoille – Opetussuunnitelma -> 🌍 Matkusta ympäri maailmaa tutustuessasi koneoppimiseen maailman kulttuurien kautta 🌍 +> 🌍 Matkusta ympäri maailmaa tutkiessamme koneoppimista maailman kulttuurien kautta 🌍 -Microsoftin Cloud Advocates -tiimi tarjoaa mielellään 12 viikon ja 26 oppitunnin opetussuunnitelman, joka käsittelee **koneoppimista**. Tässä opetussuunnitelmassa opit niin sanottua **klassista koneoppimista**, pääasiassa Scikit-learn-kirjastoa käyttäen ja välttäen syväoppimista, joka käsitellään [AI for Beginners -opetussuunnitelmassa](https://aka.ms/ai4beginners). Yhdistä nämä oppitunnit myös ['Data Science for Beginners' -opetussuunnitelmaan](https://aka.ms/ds4beginners)! +Microsoftin Cloud Advocates tarjoaa 12 viikon, 26 oppitunnin opetussuunnitelman, joka käsittelee **koneoppimista**. Tässä opetussuunnitelmassa opit niin kutsutusta **klassisen koneoppimisen** menetelmistä, käyttäen pääasiassa Scikit-learn-kirjastoa ja välttäen syväoppimista, joka käsitellään [AI for Beginners -opetussuunnitelmassamme](https://aka.ms/ai4beginners). Yhdistä nämä oppitunnit myös ['Data Science for Beginners' -opetussuunnitelman](https://aka.ms/ds4beginners) kanssa! -Matkusta kanssamme ympäri maailmaa soveltaessamme näitä klassisia tekniikoita eri puolilta maailmaa peräisin olevaan dataan. Jokainen oppitunti sisältää ennen ja jälkeen oppitunnin tehtävät, kirjalliset ohjeet oppitunnin suorittamiseen, ratkaisun, tehtävän ja paljon muuta. Projektipohjainen oppimismetodimme antaa sinulle mahdollisuuden oppia rakentamalla, mikä on todistetusti tehokas tapa omaksua uusia taitoja. +Matkusta kanssamme ympäri maailmaa soveltaen näitä klassisia menetelmiä monien eri alueiden dataan. Jokainen oppitunti sisältää ennen ja jälkeen oppitunnin tehtävät, kirjalliset ohjeet oppitunnin suorittamiseen, ratkaisun, tehtävän ja muuta. Projektipohjainen opetustapamme mahdollistaa oppimisen rakentamisen kautta, mikä on todistettu tapa saada uudet taidot pysymään. **✍️ Suuret kiitokset kirjoittajillemme** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu ja Amy Boyd @@ -47,37 +47,37 @@ Matkusta kanssamme ympäri maailmaa soveltaessamme näitä klassisia tekniikoita **🙏 Erityiskiitokset 🙏 Microsoft Student Ambassador -kirjoittajillemme, arvioijillemme ja sisällöntuottajillemme**, erityisesti Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila ja Snigdha Agarwal -**🤩 Erityiskiitokset Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi ja Vidushi Gupta R-oppitunneistamme!** +**🤩 Lisäkiitos Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi ja Vidushi Gupta R-oppitunneistamme!** # Aloittaminen -Noudata näitä ohjeita: -1. **Forkkaa repositorio**: Klikkaa "Fork"-painiketta tämän sivun oikeassa yläkulmassa. -2. **Kloonaa repositorio**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Seuraa näitä ohjeita: +1. **Forkkaa repositorio**: Klikkaa "Fork" -painiketta tämän sivun oikeassa yläkulmassa. +2. **Kloonaa repositorio**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [löydä kaikki lisäresurssit tähän kurssiin Microsoft Learn -kokoelmastamme](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [löydät kaikki lisäresurssit tälle kurssille Microsoft Learn -kokoelmastamme](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Tarvitsetko apua?** Katso [Vianmääritysoppaamme](TROUBLESHOOTING.md) saadaksesi ratkaisuja yleisiin asennus-, asetus- ja oppituntien suorittamisongelmiin. +> 🔧 **Tarvitsetko apua?** Katso [Vianmääritysohjeistuksemme](TROUBLESHOOTING.md) yleisimpiin asennus-, käyttöönotto- ja oppituntien suorittamisongelmiin. -**[Opiskelijat](https://aka.ms/student-page)**, käyttäkää tätä opetussuunnitelmaa forkkaamalla koko repositorio omaan GitHub-tiliinne ja suorittamalla harjoitukset itsenäisesti tai ryhmässä: +**[Opiskelijat](https://aka.ms/student-page)**, käyttääksenne tätä opetussuunnitelmaa, forkkaa koko repo omaan GitHub-tiliisi ja suorita harjoitukset itse tai ryhmässä: -- Aloita oppitunnin aloituskyselyllä. -- Lue oppitunti ja suorita aktiviteetit, pysähtyen ja pohtien jokaisen tietotarkistuksen kohdalla. -- Yritä luoda projektit ymmärtämällä oppitunnit sen sijaan, että suorittaisit ratkaisukoodin; kuitenkin kyseinen koodi on saatavilla `/solution`-kansioissa jokaisessa projektipohjaisessa oppitunnissa. -- Suorita oppitunnin jälkeinen kysely. +- Aloita ennakkotestillä. +- Lue oppitunti ja suorita tehtävät, pysähdy ja pohdi jokaisen tietotarkistuksen kohdalla. +- Yritä luoda projektit ymmärtämällä oppitunnit sen sijaan, että suoritat ratkaisukoodin; koodi on kuitenkin saatavilla kunkin projektilähtöisen oppitunnin `/solution`-kansiossa. +- Tee jälkitesti. - Suorita haaste. -- Suorita tehtävä. -- Kun olet suorittanut oppituntiryhmän, käy [Keskustelupalstalla](https://github.com/microsoft/ML-For-Beginners/discussions) ja "opettele ääneen" täyttämällä sopiva PAT-arviointityökalu. 'PAT' on edistymisen arviointityökalu, joka on kaavake, jonka täytät oppimisesi edistämiseksi. Voit myös reagoida muiden PAT-arviointeihin, jotta voimme oppia yhdessä. +- Tee tehtävä. +- Oppituntiryhmän suorittamisen jälkeen käy [Keskustelualueella](https://github.com/microsoft/ML-For-Beginners/discussions) ja "opiskele ääneen" täyttämällä sopiva PAT-arviointilomake. PAT on edistymisen arviointityökalu, jonka täyttämällä voit edistää oppimistasi. Voit myös reagoida muiden PAT-arviointeihin, jotta voimme oppia yhdessä. > Jatko-opiskelua varten suosittelemme seuraamaan näitä [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) moduuleja ja oppimispolkuja. -**Opettajat**, olemme [sisällyttäneet joitakin ehdotuksia](for-teachers.md) siitä, miten käyttää tätä opetussuunnitelmaa. +**Opettajat**, olemme [sisällyttäneet joitakin ehdotuksia](for-teachers.md) tämän opetussuunnitelman käyttämiseen. --- -## Video-opastukset +## Videoesittelyt -Osa oppitunneista on saatavilla lyhyinä videoina. Löydät ne kaikki oppituntien sisällä tai [ML for Beginners -soittolistalta Microsoft Developer YouTube -kanavalla](https://aka.ms/ml-beginners-videos) klikkaamalla alla olevaa kuvaa. +Jotkut oppitunnit ovat saatavilla lyhyinä videoina. Löydät ne kaikki oppituntien yhteydestä tai [ML for Beginners -soittolistalta Microsoft Developerin YouTube-kanavalla](https://aka.ms/ml-beginners-videos) klikkaamalla alla olevaa kuvaa. [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.fi.png)](https://aka.ms/ml-beginners-videos) @@ -87,7 +87,7 @@ Osa oppitunneista on saatavilla lyhyinä videoina. Löydät ne kaikki oppituntie [![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif by** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif tekijä** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) > 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi videon projektista ja sen tekijöistä! @@ -95,121 +95,128 @@ Osa oppitunneista on saatavilla lyhyinä videoina. Löydät ne kaikki oppituntie ## Pedagogiikka -Olemme valinneet kaksi pedagogista periaatetta tämän opetussuunnitelman rakentamisessa: varmistaa, että se on käytännönläheinen **projektipohjainen** ja että se sisältää **usein kyselyitä**. Lisäksi tämä opetussuunnitelma sisältää yhteisen **teeman**, joka antaa sille yhtenäisyyttä. +Olemme valinneet kaksi pedagogista periaatetta tämän opetussuunnitelman rakentamiseen: varmistaa, että se on käytännönläheinen **projektipohjainen** ja että se sisältää **usein toistuvia testejä**. Lisäksi opetussuunnitelmalla on yhteinen **teema**, joka antaa sille yhtenäisyyttä. -Varmistamalla, että sisältö liittyy projekteihin, prosessi on opiskelijoille kiinnostavampi ja käsitteiden omaksuminen paranee. Lisäksi matalan kynnyksen kysely ennen oppituntia ohjaa opiskelijan huomion oppimaan aihetta, kun taas toinen kysely oppitunnin jälkeen varmistaa lisämuistamisen. Tämä opetussuunnitelma on suunniteltu joustavaksi ja hauskaksi, ja sitä voi suorittaa kokonaan tai osittain. Projektit alkavat pienistä ja muuttuvat yhä monimutkaisemmiksi 12 viikon jakson loppuun mennessä. Tämä opetussuunnitelma sisältää myös jälkikirjoituksen koneoppimisen todellisista sovelluksista, joita voidaan käyttää lisäpisteinä tai keskustelun pohjana. +Sisällön linkittäminen projekteihin tekee prosessista opiskelijoille kiinnostavamman ja parantaa käsitteiden omaksumista. Lisäksi matalan panoksen testi ennen luentoa suuntaa opiskelijan aikomuksen oppia aihe, ja toinen testi luennon jälkeen varmistaa paremman muistamisen. Tämä opetussuunnitelma on suunniteltu joustavaksi ja hauskaksi, ja sen voi suorittaa kokonaan tai osittain. Projektit alkavat pieninä ja monimutkaistuvat vähitellen 12 viikon aikana. Opetussuunnitelma sisältää myös jälkikirjoituksen koneoppimisen todellisista sovelluksista, jota voi käyttää lisäpisteinä tai keskustelun pohjana. -> Löydä [Toimintaohjeemme](CODE_OF_CONDUCT.md), [Osallistumisohjeet](CONTRIBUTING.md), [Käännösohjeet](TRANSLATIONS.md) ja [Vianmääritys](TROUBLESHOOTING.md) -ohjeet. Otamme mielellämme vastaan rakentavaa palautettasi! +> Löydät [käyttäytymissääntömme](CODE_OF_CONDUCT.md), [osallistumisohjeet](CONTRIBUTING.md), [käännösohjeet](TRANSLATIONS.md) ja [vianmääritysohjeet](TROUBLESHOOTING.md). Otamme mielellämme vastaan rakentavaa palautetta! ## Jokainen oppitunti sisältää -- valinnainen luonnoskuva -- valinnainen lisävideo -- video-opastus (vain joissakin oppitunneissa) -- [lämmittelykysely ennen oppituntia](https://ff-quizzes.netlify.app/en/ml/) -- kirjallinen oppitunti +- valinnaisen luonnosmuistiinpanon +- valinnaisen lisävideon +- videoesittelyn (vain joissakin oppitunneissa) +- [ennakkoluentoharjoituksen](https://ff-quizzes.netlify.app/en/ml/) +- kirjallisen oppitunnin - projektipohjaisissa oppitunneissa vaiheittaiset ohjeet projektin rakentamiseen -- tietotarkistukset -- haaste +- tietotarkistuksia +- haasteen - lisälukemista -- tehtävä -- [kysely oppitunnin jälkeen](https://ff-quizzes.netlify.app/en/ml/) +- tehtävän +- [jälkiluentoharjoituksen](https://ff-quizzes.netlify.app/en/ml/) -> **Huomio kielistä**: Nämä oppitunnit on pääasiassa kirjoitettu Pythonilla, mutta monet ovat saatavilla myös R-kielellä. R-oppitunnin suorittamiseksi siirry `/solution`-kansioon ja etsi R-oppitunnit. Ne sisältävät .rmd-päätteen, joka edustaa **R Markdown** -tiedostoa, joka voidaan yksinkertaisesti määritellä sisältävän `koodilohkoja` (R- tai muilla kielillä) ja `YAML-otsikon` (joka ohjaa, miten tulosteet kuten PDF muotoillaan) `Markdown-dokumentissa`. Näin ollen se toimii esimerkillisenä kirjoituskehyksenä data-analytiikalle, koska sen avulla voit yhdistää koodisi, sen tulokset ja ajatuksesi kirjoittamalla ne Markdowniin. Lisäksi R Markdown -dokumentit voidaan renderöidä tulostusmuotoihin, kuten PDF, HTML tai Word. +> **Huomautus kielistä**: Nämä oppitunnit on pääasiassa kirjoitettu Pythonilla, mutta monet ovat myös saatavilla R-kielellä. R-oppitunnin suorittamiseksi mene `/solution`-kansioon ja etsi R-oppitunteja. Niissä on .rmd-pääte, joka tarkoittaa **R Markdown** -tiedostoa, joka on yksinkertaisesti määritelty `koodilohkojen` (R:n tai muiden kielten) ja `YAML-otsikon` (joka ohjaa tulosteiden, kuten PDF:n, muotoilua) upotuksena `Markdown-dokumenttiin`. Näin se toimii erinomaisena kirjoituskehyksenä data-analyysille, koska voit yhdistää koodisi, sen tulokset ja ajatuksesi kirjoittamalla ne Markdowniin. Lisäksi R Markdown -dokumentit voidaan renderöidä tulostemuodoiksi kuten PDF, HTML tai Word. -> **Huomio kyselyistä**: Kaikki kyselyt löytyvät [Quiz App -kansiosta](../../quiz-app), yhteensä 52 kyselyä, joissa on kolme kysymystä kussakin. Ne on linkitetty oppituntien sisällä, mutta kyselysovellus voidaan ajaa paikallisesti; seuraa ohjeita `quiz-app`-kansiossa isännöidäksesi tai julkaistaksesi Azureen. +> **Huomautus testeistä**: Kaikki testit löytyvät [Quiz App -kansiosta](../../quiz-app), yhteensä 52 testiä, joissa jokaisessa on kolme kysymystä. Ne on linkitetty oppitunneista, mutta testiappia voi ajaa myös paikallisesti; seuraa `quiz-app`-kansion ohjeita paikalliseen isännöintiin tai Azureen julkaisuun. | Oppitunnin numero | Aihe | Oppituntiryhmä | Oppimistavoitteet | Linkitetty oppitunti | Kirjoittaja | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Johdatus koneoppimiseen | [Johdanto](1-Introduction/README.md) | Opi koneoppimisen peruskäsitteet | [Oppitunti](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Koneoppimisen historia | [Johdanto](1-Introduction/README.md) | Opi tämän alan taustalla oleva historia | [Oppitunti](1-Introduction/2-history-of-ML/README.md) | Jen ja Amy | -| 03 | Reiluus ja koneoppiminen | [Johdanto](1-Introduction/README.md) | Mitkä ovat tärkeät filosofiset kysymykset reiluudesta, joita opiskelijoiden tulisi pohtia rakentaessaan ja soveltaessaan ML-malleja? | [Oppitunti](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Koneoppimisen tekniikat | [Johdanto](1-Introduction/README.md) | Mitä tekniikoita ML-tutkijat käyttävät rakentaakseen ML-malleja? | [Oppitunti](1-Introduction/4-techniques-of-ML/README.md) | Chris ja Jen | -| 05 | Johdatus regressioon | [Regressio](2-Regression/README.md) | Aloita Pythonilla ja Scikit-learnilla regressiomallien parissa | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Pohjois-Amerikan kurpitsahinnat 🎃 | [Regressio](2-Regression/README.md) | Visualisoi ja siivoa dataa ML-valmistelua varten | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Pohjois-Amerikan kurpitsahinnat 🎃 | [Regressio](2-Regression/README.md) | Rakenna lineaarisia ja polynomisia regressiomalleja | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen ja Dmitry • Eric Wanjau | -| 08 | Pohjois-Amerikan kurpitsahinnat 🎃 | [Regressio](2-Regression/README.md) | Rakenna logistinen regressiomalli | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Verkkosovellus 🔌 | [Verkkosovellus](3-Web-App/README.md) | Rakenna verkkosovellus käyttämään koulutettua malliasi | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Johdatus luokitteluun | [Luokittelu](4-Classification/README.md) | Siivoa, valmistele ja visualisoi dataasi; johdatus luokitteluun | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen ja Cassie • Eric Wanjau | -| 11 | Herkulliset aasialaiset ja intialaiset ruoat 🍜 | [Luokittelu](4-Classification/README.md) | Johdatus luokittelijoihin | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen ja Cassie • Eric Wanjau | -| 12 | Herkulliset aasialaiset ja intialaiset ruoat 🍜 | [Luokittelu](4-Classification/README.md) | Lisää luokittelijoita | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen ja Cassie • Eric Wanjau | -| 13 | Herkulliset aasialaiset ja intialaiset ruoat 🍜 | [Luokittelu](4-Classification/README.md) | Rakenna suosittelusovellus mallisi avulla | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Johdatus klusterointiin | [Klusterointi](5-Clustering/README.md) | Siivoa, valmistele ja visualisoi dataasi; johdatus klusterointiin | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Nigerian musiikkimakujen tutkiminen 🎧 | [Klusterointi](5-Clustering/README.md) | Tutki K-Means-klusterointimenetelmää | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Johdatus luonnollisen kielen käsittelyyn ☕️ | [Luonnollisen kielen käsittely](6-NLP/README.md) | Opi NLP:n perusteet rakentamalla yksinkertainen botti | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Yleiset NLP-tehtävät ☕️ | [Luonnollisen kielen käsittely](6-NLP/README.md) | Syvennä NLP-tietämystäsi ymmärtämällä yleisiä tehtäviä, jotka liittyvät kielen rakenteisiin | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Käännös ja sentimenttianalyysi ♥️ | [Luonnollisen kielen käsittely](6-NLP/README.md) | Käännös ja sentimenttianalyysi Jane Austenin teosten avulla | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romanttiset hotellit Euroopassa ♥️ | [Luonnollisen kielen käsittely](6-NLP/README.md) | Sentimenttianalyysi hotelliarvosteluista, osa 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romanttiset hotellit Euroopassa ♥️ | [Luonnollisen kielen käsittely](6-NLP/README.md) | Sentimenttianalyysi hotelliarvosteluista, osa 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Johdatus aikasarjojen ennustamiseen | [Aikasarjat](7-TimeSeries/README.md) | Johdatus aikasarjojen ennustamiseen | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Maailman energiankulutus ⚡️ - aikasarjojen ennustaminen ARIMA-menetelmällä | [Aikasarjat](7-TimeSeries/README.md) | Aikasarjojen ennustaminen ARIMA-menetelmällä | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Maailman energiankulutus ⚡️ - aikasarjojen ennustaminen SVR-menetelmällä | [Aikasarjat](7-TimeSeries/README.md) | Aikasarjojen ennustaminen tukivektoriregressorilla | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Johdatus vahvistusoppimiseen | [Vahvistusoppiminen](8-Reinforcement/README.md) | Johdatus vahvistusoppimiseen Q-Learning-menetelmällä | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Auta Peteriä välttämään susi! 🐺 | [Vahvistusoppiminen](8-Reinforcement/README.md) | Vahvistusoppiminen Gym-menetelmällä | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Jälkikirjoitus | Todelliset ML-skenaariot ja sovellukset | [ML luonnossa](9-Real-World/README.md) | Mielenkiintoisia ja paljastavia klassisen ML:n todellisia sovelluksia | [Oppitunti](9-Real-World/1-Applications/README.md) | Tiimi | -| Jälkikirjoitus | Mallin virheenkorjaus ML:ssä RAI-ohjauspaneelin avulla | [ML luonnossa](9-Real-World/README.md) | Mallin virheenkorjaus koneoppimisessa vastuullisen AI-ohjauspaneelin komponenttien avulla | [Oppitunti](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [löydä kaikki lisäresurssit tähän kurssiin Microsoft Learn -kokoelmastamme](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 01 | Johdatus koneoppimiseen | [Introduction](1-Introduction/README.md) | Opi koneoppimisen peruskäsitteet | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Koneoppimisen historia | [Introduction](1-Introduction/README.md) | Opi tämän alan historia | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Oikeudenmukaisuus ja koneoppiminen | [Introduction](1-Introduction/README.md) | Mitkä ovat tärkeät filosofiset kysymykset oikeudenmukaisuudesta, jotka opiskelijoiden tulisi ottaa huomioon rakentaessaan ja soveltaessaan ML-malleja? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Koneoppimisen tekniikat | [Introduction](1-Introduction/README.md) | Mitä tekniikoita ML-tutkijat käyttävät rakentaakseen ML-malleja? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Johdatus regressioon | [Regression](2-Regression/README.md) | Aloita Pythonilla ja Scikit-learnillä regressiomallien kanssa | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Pohjoisamerikkalaiset kurpitsahinnat 🎃 | [Regression](2-Regression/README.md) | Visualisoi ja puhdista dataa ML-valmistelua varten | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Pohjoisamerikkalaiset kurpitsahinnat 🎃 | [Regression](2-Regression/README.md) | Rakenna lineaarisia ja polynomisia regressiomalleja | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Pohjoisamerikkalaiset kurpitsahinnat 🎃 | [Regression](2-Regression/README.md) | Rakenna logistinen regressiomalli | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Verkkosovellus 🔌 | [Web App](3-Web-App/README.md) | Rakenna verkkosovellus käyttämään koulutettua malliasi | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Johdatus luokitteluun | [Classification](4-Classification/README.md) | Puhdista, valmistele ja visualisoi data; johdatus luokitteluun | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Herkulliset aasialaiset ja intialaiset keittiöt 🍜 | [Classification](4-Classification/README.md) | Johdatus luokittelijoihin | [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 | Herkulliset aasialaiset ja intialaiset keittiöt 🍜 | [Classification](4-Classification/README.md) | Lisää luokittelijoita | [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 | Herkulliset aasialaiset ja intialaiset keittiöt 🍜 | [Classification](4-Classification/README.md) | Rakenna suositusverkkosovellus malliasi käyttäen | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Johdatus klusterointiin | [Clustering](5-Clustering/README.md) | Puhdista, valmistele ja visualisoi data; johdatus klusterointiin | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Tutustu nigerialaiseen musiikkimakuun 🎧 | [Clustering](5-Clustering/README.md) | Tutustu K-Means klusterointimenetelmään | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Johdatus luonnollisen kielen käsittelyyn ☕️ | [Natural language processing](6-NLP/README.md) | Opi NLP:n perusteet rakentamalla yksinkertainen botti | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Yleiset NLP-tehtävät ☕️ | [Natural language processing](6-NLP/README.md) | Syvennä NLP-tietämystäsi ymmärtämällä yleisiä tehtäviä, joita tarvitaan kielen rakenteiden käsittelyssä | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Käännös ja tunneanalyysi ♥️ | [Natural language processing](6-NLP/README.md) | Käännös ja tunneanalyysi Jane Austenin kanssa | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Euroopan romanttiset hotellit ♥️ | [Natural language processing](6-NLP/README.md) | Tunneanalyysi hotelliarvosteluilla 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Euroopan romanttiset hotellit ♥️ | [Natural language processing](6-NLP/README.md) | Tunneanalyysi hotelliarvosteluilla 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Johdatus aikasarjaennusteisiin | [Time series](7-TimeSeries/README.md) | Johdatus aikasarjaennusteisiin | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Maailman sähkönkulutus ⚡️ - aikasarjaennuste ARIMA:lla | [Time series](7-TimeSeries/README.md) | Aikasarjaennuste ARIMA-mallilla | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Maailman sähkönkulutus ⚡️ - aikasarjaennuste SVR:llä | [Time series](7-TimeSeries/README.md) | Aikasarjaennuste tukivektoriregressiolla | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Johdatus vahvistusoppimiseen | [Reinforcement learning](8-Reinforcement/README.md) | Johdatus vahvistusoppimiseen Q-Learningin avulla | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Auta Peteriä välttämään susi! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Vahvistusoppimisen Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Jälkikirjoitus | Todelliset ML-skenaariot ja sovellukset | [ML in the Wild](9-Real-World/README.md) | Mielenkiintoisia ja paljastavia todellisen maailman sovelluksia klassisesta ML:stä | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Jälkikirjoitus | Mallin virheenkorjaus ML:ssä RAI-hallintapaneelin avulla | [ML in the Wild](9-Real-World/README.md) | Mallin virheenkorjaus koneoppimisessa Responsible AI -hallintapaneelin komponenteilla | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [löydä kaikki tämän kurssin lisäresurssit Microsoft Learn -kokoelmastamme](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Offline-käyttö -Voit käyttää tätä dokumentaatiota offline-tilassa käyttämällä [Docsifyä](https://docsify.js.org/#/). Haaroita tämä repo, [asenna Docsify](https://docsify.js.org/#/quickstart) paikalliselle koneellesi ja kirjoita tämän repon juurikansiossa `docsify serve`. Verkkosivusto palvelee portissa 3000 paikallisessa isännässäsi: `localhost:3000`. +Voit käyttää tätä dokumentaatiota offline-tilassa käyttämällä [Docsify](https://docsify.js.org/#/). Haarauta tämä repositorio, [asenna Docsify](https://docsify.js.org/#/quickstart) paikalliselle koneellesi, ja sitten tämän repositorion juurikansiossa kirjoita `docsify serve`. Verkkosivusto palvellaan portissa 3000 paikallisessa koneessasi: `localhost:3000`. -## PDF:t +## PDF-tiedostot -Löydä opetussuunnitelman PDF-linkkeineen [täältä](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Löydä opetussuunnitelman pdf-linkit [täältä](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Muut kurssit +## 🎒 Muut kurssit Tiimimme tuottaa myös muita kursseja! Tutustu: -### Azure / Edge / MCP / Agentit -[![AZD aloittelijoille](https://img.shields.io/badge/AZD%20aloittelijoille-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI aloittelijoille](https://img.shields.io/badge/Edge%20AI%20aloittelijoille-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP aloittelijoille](https://img.shields.io/badge/MCP%20aloittelijoille-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI-agentit aloittelijoille](https://img.shields.io/badge/AI-agentit%20aloittelijoille-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- - -### Generatiivisen AI:n sarja -[![Generatiivinen AI aloittelijoille](https://img.shields.io/badge/Generatiivinen%20AI%20aloittelijoille-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generatiivinen AI (.NET)](https://img.shields.io/badge/Generatiivinen%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generatiivinen AI (Java)](https://img.shields.io/badge/Generatiivinen%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generatiivinen AI (JavaScript)](https://img.shields.io/badge/Generatiivinen%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) + +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- -### Ydinoppiminen -[![ML aloittelijoille](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science aloittelijoille](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI aloittelijoille](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Kyberturvallisuus aloittelijoille](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web-kehitys aloittelijoille](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT aloittelijoille](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR-kehitys aloittelijoille](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +### Generatiivisen tekoälyn sarja +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generatiivinen tekoäly (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generatiivinen tekoäly (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- + +### Perusopiskelu +[![ML aloittelijoille](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science aloittelijoille](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![Tekoäly aloittelijoille](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Kyberturvallisuus aloittelijoille](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web-kehitys aloittelijoille](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT aloittelijoille](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR-kehitys aloittelijoille](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) -### Copilot-sarja -[![Copilot AI-pariohjelmointiin](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot C#/.NET:lle](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot-seikkailu](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +--- + +### Copilot-sarja +[![Copilot tekoälyn pariohjelmointiin](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot C#/.NET:lle](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot-seikkailu](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -## Apua saaminen +## Apua saamaan -Jos jäät jumiin tai sinulla on kysymyksiä AI-sovellusten rakentamisesta, liity muiden oppijoiden ja kokeneiden kehittäjien keskusteluihin MCP:stä. Se on tukevainen yhteisö, jossa kysymykset ovat tervetulleita ja tietoa jaetaan vapaasti. +Jos jäät jumiin tai sinulla on kysyttävää tekoälysovellusten rakentamisesta. Liity muiden oppijoiden ja kokeneiden kehittäjien keskusteluihin MCP:stä. Se on kannustava yhteisö, jossa kysymyksiä saa esittää ja tietoa jaetaan vapaasti. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Jos sinulla on palautetta tuotteesta tai kohtaat virheitä rakentamisen aikana, vieraile: +Jos sinulla on palautetta tuotteesta tai kohtaat virheitä rakentamisen aikana, käy: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Vastuuvapauslauseke**: -Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä johtuvista väärinkäsityksistä tai virhetulkinnoista. +Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäiskielellä tulee pitää virallisena lähteenä. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista. \ No newline at end of file diff --git a/translations/fr/README.md b/translations/fr/README.md index 84a6aaf26..eeaa182e4 100644 --- a/translations/fr/README.md +++ b/translations/fr/README.md @@ -1,73 +1,74 @@ -[![Licence GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Contributeurs GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Problèmes GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Pull-requests GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Bienvenus](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Observateurs GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Forks GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Étoiles GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Support multilingue #### Pris en charge via GitHub Action (Automatisé & Toujours à jour) - -[Arabe](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgare](../bg/README.md) | [Birman (Myanmar)](../my/README.md) | [Chinois (Simplifié)](../zh/README.md) | [Chinois (Traditionnel, Hong Kong)](../hk/README.md) | [Chinois (Traditionnel, Macao)](../mo/README.md) | [Chinois (Traditionnel, Taïwan)](../tw/README.md) | [Croate](../hr/README.md) | [Tchèque](../cs/README.md) | [Danois](../da/README.md) | [Néerlandais](../nl/README.md) | [Estonien](../et/README.md) | [Finnois](../fi/README.md) | [Français](./README.md) | [Allemand](../de/README.md) | [Grec](../el/README.md) | [Hébreu](../he/README.md) | [Hindi](../hi/README.md) | [Hongrois](../hu/README.md) | [Indonésien](../id/README.md) | [Italien](../it/README.md) | [Japonais](../ja/README.md) | [Coréen](../ko/README.md) | [Lituanien](../lt/README.md) | [Malais](../ms/README.md) | [Marathi](../mr/README.md) | [Népalais](../ne/README.md) | [Pidgin Nigérian](../pcm/README.md) | [Norvégien](../no/README.md) | [Persan (Farsi)](../fa/README.md) | [Polonais](../pl/README.md) | [Portugais (Brésil)](../br/README.md) | [Portugais (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Roumain](../ro/README.md) | [Russe](../ru/README.md) | [Serbe (Cyrillique)](../sr/README.md) | [Slovaque](../sk/README.md) | [Slovène](../sl/README.md) | [Espagnol](../es/README.md) | [Swahili](../sw/README.md) | [Suédois](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamoul](../ta/README.md) | [Thaï](../th/README.md) | [Turc](../tr/README.md) | [Ukrainien](../uk/README.md) | [Ourdou](../ur/README.md) | [Vietnamien](../vi/README.md) - + +[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](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + #### Rejoignez notre communauté -[![Discord Microsoft Foundry](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Nous organisons une série d'apprentissage avec l'IA sur Discord, apprenez-en plus et rejoignez-nous à [Learn with AI Series](https://aka.ms/learnwithai/discord) du 18 au 30 septembre 2025. Vous y découvrirez des astuces pour utiliser GitHub Copilot en science des données. +Nous avons une série Discord "apprendre avec l'IA" en cours, apprenez-en plus et rejoignez-nous sur [Learn with AI Series](https://aka.ms/learnwithai/discord) du 18 au 30 septembre 2025. Vous recevrez des astuces et conseils pour utiliser GitHub Copilot pour la science des données. -![Série Apprendre avec l'IA](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.fr.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.fr.png) -# Apprentissage Automatique pour Débutants - Un Programme +# Apprentissage automatique pour débutants - Un programme > 🌍 Voyagez autour du monde en explorant l'apprentissage automatique à travers les cultures du monde 🌍 -Les Cloud Advocates de Microsoft sont ravis de proposer un programme de 12 semaines et 26 leçons dédié à l'**apprentissage automatique**. Dans ce programme, vous découvrirez ce que l'on appelle parfois l'**apprentissage automatique classique**, en utilisant principalement Scikit-learn comme bibliothèque et en évitant l'apprentissage profond, qui est couvert dans notre [programme "IA pour Débutants"](https://aka.ms/ai4beginners). Associez ces leçons à notre programme ['Science des Données pour Débutants'](https://aka.ms/ds4beginners) également ! +Les Cloud Advocates de Microsoft sont heureux de proposer un programme de 12 semaines, 26 leçons, entièrement dédié à **l'apprentissage automatique**. Dans ce programme, vous apprendrez ce que l'on appelle parfois **l'apprentissage automatique classique**, utilisant principalement Scikit-learn comme bibliothèque et évitant l'apprentissage profond, qui est couvert dans notre [programme AI for Beginners](https://aka.ms/ai4beginners). Associez ces leçons à notre [programme Data Science for Beginners](https://aka.ms/ds4beginners) également ! -Voyagez avec nous à travers le monde en appliquant ces techniques classiques à des données provenant de nombreuses régions du globe. Chaque leçon comprend des quiz avant et après la leçon, des instructions écrites pour compléter la leçon, une solution, un devoir, et plus encore. Notre pédagogie basée sur les projets vous permet d'apprendre tout en construisant, une méthode éprouvée pour que les nouvelles compétences s'ancrent. +Voyagez avec nous autour du monde en appliquant ces techniques classiques à des données provenant de nombreuses régions du globe. Chaque leçon comprend des quiz avant et après la leçon, des instructions écrites pour compléter la leçon, une solution, un devoir, et plus encore. Notre pédagogie basée sur des projets vous permet d'apprendre en construisant, une méthode éprouvée pour que les nouvelles compétences « collent ». **✍️ Un grand merci à nos auteurs** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu et Amy Boyd **🎨 Merci également à nos illustrateurs** Tomomi Imura, Dasani Madipalli, et Jen Looper -**🙏 Remerciements spéciaux 🙏 à nos Microsoft Student Ambassadors auteurs, relecteurs et contributeurs de contenu**, notamment Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, et Snigdha Agarwal +**🙏 Remerciements particuliers 🙏 à nos auteurs, réviseurs et contributeurs étudiants Microsoft**, notamment Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, et Snigdha Agarwal -**🤩 Une gratitude supplémentaire envers les Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, et Vidushi Gupta pour nos leçons en R !** +**🤩 Une gratitude supplémentaire aux ambassadeurs étudiants Microsoft Eric Wanjau, Jasleen Sondhi, et Vidushi Gupta pour nos leçons en R !** -# Pour Commencer +# Commencer -Suivez ces étapes : -1. **Forkez le Répertoire** : Cliquez sur le bouton "Fork" en haut à droite de cette page. -2. **Clonez le Répertoire** : `git clone https://github.com/microsoft/ML-For-Beginners.git` +Suivez ces étapes : +1. **Forkez le dépôt** : Cliquez sur le bouton "Fork" en haut à droite de cette page. +2. **Clonez le dépôt** : `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [retrouvez toutes les ressources supplémentaires pour ce cours dans notre collection Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [trouvez toutes les ressources supplémentaires pour ce cours dans notre collection Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Besoin d'aide ?** Consultez notre [Guide de Dépannage](TROUBLESHOOTING.md) pour des solutions aux problèmes courants d'installation, de configuration et d'exécution des leçons. +> 🔧 **Besoin d'aide ?** Consultez notre [Guide de dépannage](TROUBLESHOOTING.md) pour des solutions aux problèmes courants d'installation, de configuration et d'exécution des leçons. -**[Étudiants](https://aka.ms/student-page)**, pour utiliser ce programme, forkez l'intégralité du dépôt sur votre propre compte GitHub et complétez les exercices seuls ou en groupe : -- Commencez par un quiz avant la leçon. -- Lisez la leçon et complétez les activités, en prenant le temps de réfléchir à chaque vérification des connaissances. -- Essayez de créer les projets en comprenant les leçons plutôt qu'en exécutant le code de solution ; cependant, ce code est disponible dans les dossiers `/solution` de chaque leçon orientée projet. -- Passez le quiz après la leçon. -- Complétez le défi. -- Réalisez le devoir. -- Après avoir terminé un groupe de leçons, visitez le [Forum de Discussion](https://github.com/microsoft/ML-For-Beginners/discussions) et "apprenez à voix haute" en remplissant la rubrique PAT appropriée. Un 'PAT' est un outil d'évaluation des progrès, un tableau que vous remplissez pour approfondir votre apprentissage. Vous pouvez également réagir aux autres PATs pour que nous puissions apprendre ensemble. +**[Étudiants](https://aka.ms/student-page)**, pour utiliser ce programme, forkez le dépôt complet sur votre propre compte GitHub et complétez les exercices seul ou en groupe : + +- Commencez par un quiz avant la leçon. +- Lisez la leçon et complétez les activités, en faisant des pauses pour réfléchir à chaque vérification des connaissances. +- Essayez de créer les projets en comprenant les leçons plutôt qu'en exécutant le code solution ; cependant ce code est disponible dans les dossiers `/solution` de chaque leçon orientée projet. +- Faites le quiz après la leçon. +- Réalisez le défi. +- Complétez le devoir. +- Après avoir terminé un groupe de leçons, visitez le [Forum de discussion](https://github.com/microsoft/ML-For-Beginners/discussions) et « apprenez à voix haute » en remplissant la grille PAT appropriée. Un 'PAT' est un outil d'évaluation des progrès que vous remplissez pour approfondir votre apprentissage. Vous pouvez aussi réagir aux autres PAT pour apprendre ensemble. > Pour aller plus loin, nous recommandons de suivre ces modules et parcours d'apprentissage [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). @@ -77,15 +78,15 @@ Suivez ces étapes : ## Vidéos explicatives -Certaines leçons sont disponibles sous forme de vidéos courtes. Vous pouvez les retrouver intégrées dans les leçons ou sur la [playlist ML for Beginners sur la chaîne YouTube Microsoft Developer](https://aka.ms/ml-beginners-videos) en cliquant sur l'image ci-dessous. +Certaines leçons sont disponibles en vidéo courte. Vous pouvez toutes les trouver intégrées dans les leçons, ou sur la [playlist ML for Beginners sur la chaîne YouTube Microsoft Developer](https://aka.ms/ml-beginners-videos) en cliquant sur l'image ci-dessous. -[![Bannière ML pour débutants](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.fr.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.fr.png)](https://aka.ms/ml-beginners-videos) --- -## Rencontrez l'Équipe +## Rencontrez l'équipe -[![Vidéo promo](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **Gif par** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) @@ -95,69 +96,69 @@ Certaines leçons sont disponibles sous forme de vidéos courtes. Vous pouvez le ## Pédagogie -Nous avons choisi deux principes pédagogiques lors de la création de ce programme : garantir qu'il soit **basé sur des projets pratiques** et qu'il inclue des **quiz fréquents**. De plus, ce programme a un **thème commun** pour lui donner de la cohérence. - -En alignant le contenu sur des projets, le processus devient plus engageant pour les étudiants et la rétention des concepts est augmentée. De plus, un quiz à faible enjeu avant un cours oriente l'intention de l'étudiant vers l'apprentissage d'un sujet, tandis qu'un second quiz après le cours renforce davantage la rétention. Ce programme a été conçu pour être flexible et amusant et peut être suivi en totalité ou en partie. Les projets commencent petits et deviennent de plus en plus complexes à la fin du cycle de 12 semaines. Ce programme comprend également un post-scriptum sur les applications réelles de l'apprentissage automatique, qui peut être utilisé comme crédit supplémentaire ou comme base de discussion. - -> Retrouvez notre [Code de Conduite](CODE_OF_CONDUCT.md), nos [Directives de Contribution](CONTRIBUTING.md), nos [Directives de Traduction](TRANSLATIONS.md), et notre [Guide de Dépannage](TROUBLESHOOTING.md). Nous accueillons vos retours constructifs ! - -## Chaque leçon comprend - -- un sketchnote optionnel -- une vidéo complémentaire optionnelle -- une vidéo explicative (certaines leçons uniquement) -- [un quiz d'échauffement avant la leçon](https://ff-quizzes.netlify.app/en/ml/) -- une leçon écrite -- pour les leçons basées sur des projets, des guides étape par étape pour construire le projet -- des vérifications des connaissances -- un défi -- des lectures complémentaires -- un devoir -- [un quiz après la leçon](https://ff-quizzes.netlify.app/en/ml/) - -> **Une note sur les langues** : Ces leçons sont principalement écrites en Python, mais beaucoup sont également disponibles en R. Pour compléter une leçon en R, rendez-vous dans le dossier `/solution` et cherchez les leçons en R. Elles incluent une extension .rmd qui représente un fichier **R Markdown**, défini comme une intégration de `blocs de code` (en R ou d'autres langages) et d'un `en-tête YAML` (qui guide la mise en forme des sorties comme PDF) dans un `document Markdown`. Ainsi, il sert de cadre exemplaire pour la science des données puisqu'il vous permet de combiner votre code, ses résultats et vos réflexions en les écrivant en Markdown. De plus, les documents R Markdown peuvent être rendus dans des formats de sortie tels que PDF, HTML ou Word. - -> **Une note sur les quiz** : Tous les quiz sont contenus dans le [dossier Quiz App](../../quiz-app), pour un total de 52 quiz de trois questions chacun. Ils sont liés dans les leçons, mais l'application de quiz peut être exécutée localement ; suivez les instructions dans le dossier `quiz-app` pour l'héberger localement ou le déployer sur Azure. - -| Numéro de leçon | Sujet | Regroupement de leçons | Objectifs d'apprentissage | Leçon liée | Auteur | -| :-------------: | :------------------------------------------------------------: | :-------------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Introduction au machine learning | [Introduction](1-Introduction/README.md) | Apprenez les concepts de base du machine learning | [Leçon](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | L'histoire du machine learning | [Introduction](1-Introduction/README.md) | Découvrez l'histoire derrière ce domaine | [Leçon](1-Introduction/2-history-of-ML/README.md) | Jen et Amy | -| 03 | Équité et machine learning | [Introduction](1-Introduction/README.md) | Quels sont les enjeux philosophiques importants autour de l'équité que les étudiants doivent considérer en construisant et appliquant des modèles ML ? | [Leçon](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Techniques pour le machine learning | [Introduction](1-Introduction/README.md) | Quelles techniques les chercheurs en ML utilisent-ils pour construire des modèles ML ? | [Leçon](1-Introduction/4-techniques-of-ML/README.md) | Chris et Jen | -| 05 | Introduction à la régression | [Régression](2-Regression/README.md) | Commencez avec Python et Scikit-learn pour les modèles de régression | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Prix des citrouilles en Amérique du Nord 🎃 | [Régression](2-Regression/README.md) | Visualisez et nettoyez les données en préparation pour le ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Prix des citrouilles en Amérique du Nord 🎃 | [Régression](2-Regression/README.md) | Construisez des modèles de régression linéaire et polynomiale | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen et Dmitry • Eric Wanjau | -| 08 | Prix des citrouilles en Amérique du Nord 🎃 | [Régression](2-Regression/README.md) | Construisez un modèle de régression logistique | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Une application web 🔌 | [Application web](3-Web-App/README.md) | Construisez une application web pour utiliser votre modèle entraîné | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Introduction à la classification | [Classification](4-Classification/README.md) | Nettoyez, préparez et visualisez vos données ; introduction à la classification | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen et Cassie • Eric Wanjau | -| 11 | Délicieuses cuisines asiatiques et indiennes 🍜 | [Classification](4-Classification/README.md) | Introduction aux classificateurs | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen et Cassie • Eric Wanjau | -| 12 | Délicieuses cuisines asiatiques et indiennes 🍜 | [Classification](4-Classification/README.md) | Plus de classificateurs | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen et Cassie • Eric Wanjau | -| 13 | Délicieuses cuisines asiatiques et indiennes 🍜 | [Classification](4-Classification/README.md) | Construisez une application web de recommandation en utilisant votre modèle | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Introduction au clustering | [Clustering](5-Clustering/README.md) | Nettoyez, préparez et visualisez vos données ; introduction au clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Exploration des goûts musicaux nigérians 🎧 | [Clustering](5-Clustering/README.md) | Explorez la méthode de clustering 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 | Introduction au traitement du langage naturel ☕️ | [Traitement du langage naturel](6-NLP/README.md) | Apprenez les bases du NLP en construisant un bot simple | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Tâches courantes en NLP ☕️ | [Traitement du langage naturel](6-NLP/README.md) | Approfondissez vos connaissances en NLP en comprenant les tâches courantes liées aux structures linguistiques | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Traduction et analyse de sentiment ♥️ | [Traitement du langage naturel](6-NLP/README.md) | Traduction et analyse de sentiment avec Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Hôtels romantiques d'Europe ♥️ | [Traitement du langage naturel](6-NLP/README.md) | Analyse de sentiment avec des avis d'hôtels 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Hôtels romantiques d'Europe ♥️ | [Traitement du langage naturel](6-NLP/README.md) | Analyse de sentiment avec des avis d'hôtels 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Introduction à la prévision des séries temporelles | [Séries temporelles](7-TimeSeries/README.md) | Introduction à la prévision des séries temporelles | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Utilisation mondiale de l'énergie ⚡️ - prévision avec ARIMA | [Séries temporelles](7-TimeSeries/README.md) | Prévision des séries temporelles avec ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Utilisation mondiale de l'énergie ⚡️ - prévision avec SVR | [Séries temporelles](7-TimeSeries/README.md) | Prévision des séries temporelles avec Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Introduction à l'apprentissage par renforcement | [Apprentissage par renforcement](8-Reinforcement/README.md) | Introduction à l'apprentissage par renforcement avec Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Aidez Peter à éviter le loup ! 🐺 | [Apprentissage par renforcement](8-Reinforcement/README.md) | Gym pour l'apprentissage par renforcement | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Scénarios et applications ML dans le monde réel | [ML dans le monde réel](9-Real-World/README.md) | Applications intéressantes et révélatrices du ML classique | [Leçon](9-Real-World/1-Applications/README.md) | Équipe | -| Postscript | Débogage de modèles ML avec le tableau de bord RAI | [ML dans le monde réel](9-Real-World/README.md) | Débogage de modèles en Machine Learning en utilisant les composants du tableau de bord Responsible AI | [Leçon](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [retrouvez toutes les ressources supplémentaires pour ce cours dans notre collection Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +Nous avons choisi deux principes pédagogiques lors de la création de ce programme : garantir qu'il soit pratique et **basé sur des projets** et qu'il inclue des **quiz fréquents**. De plus, ce programme a un **thème** commun pour lui donner de la cohésion. + +En assurant que le contenu s'aligne avec des projets, le processus devient plus engageant pour les étudiants et la rétention des concepts est augmentée. De plus, un quiz à faible enjeu avant un cours fixe l'intention de l'étudiant d'apprendre un sujet, tandis qu'un second quiz après le cours assure une meilleure rétention. Ce programme a été conçu pour être flexible et amusant et peut être suivi en totalité ou en partie. Les projets commencent petits et deviennent de plus en plus complexes à la fin du cycle de 12 semaines. Ce programme inclut également un post-scriptum sur les applications réelles de l'apprentissage automatique, qui peut être utilisé comme crédit supplémentaire ou comme base de discussion. + +> Retrouvez notre [Code de conduite](CODE_OF_CONDUCT.md), [Contribuer](CONTRIBUTING.md), [Traduction](TRANSLATIONS.md), et [Dépannage](TROUBLESHOOTING.md). Vos retours constructifs sont les bienvenus ! + +## Chaque leçon inclut + +- sketchnote optionnel +- vidéo complémentaire optionnelle +- vidéo explicative (certaines leçons seulement) +- [quiz d'échauffement avant la leçon](https://ff-quizzes.netlify.app/en/ml/) +- leçon écrite +- pour les leçons basées sur des projets, guides étape par étape pour construire le projet +- vérifications des connaissances +- un défi +- lecture complémentaire +- devoir +- [quiz après la leçon](https://ff-quizzes.netlify.app/en/ml/) + +> **Une note sur les langues** : Ces leçons sont principalement écrites en Python, mais beaucoup sont aussi disponibles en R. Pour compléter une leçon en R, allez dans le dossier `/solution` et cherchez les leçons en R. Elles incluent une extension .rmd qui représente un fichier **R Markdown** qui peut être simplement défini comme une intégration de `blocs de code` (en R ou autres langages) et un `en-tête YAML` (qui guide la mise en forme des sorties comme PDF) dans un `document Markdown`. En tant que tel, il sert de cadre d'écriture exemplaire pour la science des données puisqu'il vous permet de combiner votre code, sa sortie, et vos réflexions en les écrivant en Markdown. De plus, les documents R Markdown peuvent être rendus dans des formats de sortie tels que PDF, HTML ou Word. + +> **Une note sur les quiz** : Tous les quiz sont contenus dans le [dossier Quiz App](../../quiz-app), pour un total de 52 quiz de trois questions chacun. Ils sont liés depuis les leçons mais l'application quiz peut être exécutée localement ; suivez les instructions dans le dossier `quiz-app` pour héberger localement ou déployer sur Azure. + +| Numéro de leçon | Sujet | Regroupement des leçons | Objectifs d'apprentissage | Leçon liée | Auteur | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | Introduction à l'apprentissage automatique | [Introduction](1-Introduction/README.md) | Apprenez les concepts de base derrière l'apprentissage automatique | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | L'histoire de l'apprentissage automatique | [Introduction](1-Introduction/README.md) | Découvrez l'histoire sous-jacente à ce domaine | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Équité et apprentissage automatique | [Introduction](1-Introduction/README.md) | Quels sont les enjeux philosophiques importants autour de l'équité que les étudiants doivent considérer lors de la construction et de l'application de modèles ML ? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Techniques pour l'apprentissage automatique | [Introduction](1-Introduction/README.md) | Quelles techniques les chercheurs en ML utilisent-ils pour construire des modèles ML ? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Introduction à la régression | [Regression](2-Regression/README.md) | Commencez avec Python et Scikit-learn pour les modèles de régression | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Prix des citrouilles en Amérique du Nord 🎃 | [Regression](2-Regression/README.md) | Visualisez et nettoyez les données en préparation pour le ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Prix des citrouilles en Amérique du Nord 🎃 | [Regression](2-Regression/README.md) | Construisez des modèles de régression linéaire et polynomiale | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Prix des citrouilles en Amérique du Nord 🎃 | [Regression](2-Regression/README.md) | Construisez un modèle de régression logistique | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Une application web 🔌 | [Web App](3-Web-App/README.md) | Construisez une application web pour utiliser votre modèle entraîné | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Introduction à la classification | [Classification](4-Classification/README.md) | Nettoyez, préparez et visualisez vos données ; introduction à la classification | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Délicieuses cuisines asiatiques et indiennes 🍜 | [Classification](4-Classification/README.md) | Introduction aux classificateurs | [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 | Délicieuses cuisines asiatiques et indiennes 🍜 | [Classification](4-Classification/README.md) | Plus de classificateurs | [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 | Délicieuses cuisines asiatiques et indiennes 🍜 | [Classification](4-Classification/README.md) | Construisez une application web de recommandation en utilisant votre modèle | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Introduction au clustering | [Clustering](5-Clustering/README.md) | Nettoyez, préparez et visualisez vos données ; introduction au clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Exploration des goûts musicaux nigérians 🎧 | [Clustering](5-Clustering/README.md) | Explorez la méthode de clustering 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 | Introduction au traitement du langage naturel ☕️ | [Natural language processing](6-NLP/README.md) | Apprenez les bases du NLP en construisant un bot simple | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Tâches courantes en NLP ☕️ | [Natural language processing](6-NLP/README.md) | Approfondissez vos connaissances en NLP en comprenant les tâches courantes requises lors du traitement des structures linguistiques | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Traduction et analyse de sentiment ♥️ | [Natural language processing](6-NLP/README.md) | Traduction et analyse de sentiment avec Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Hôtels romantiques d'Europe ♥️ | [Natural language processing](6-NLP/README.md) | Analyse de sentiment avec des avis d'hôtels 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Hôtels romantiques d'Europe ♥️ | [Natural language processing](6-NLP/README.md) | Analyse de sentiment avec des avis d'hôtels 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Introduction à la prévision des séries temporelles | [Time series](7-TimeSeries/README.md) | Introduction à la prévision des séries temporelles | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Consommation électrique mondiale ⚡️ - prévision des séries temporelles avec ARIMA | [Time series](7-TimeSeries/README.md) | Prévision des séries temporelles avec ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Consommation électrique mondiale ⚡️ - prévision des séries temporelles avec SVR | [Time series](7-TimeSeries/README.md) | Prévision des séries temporelles avec Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Introduction à l'apprentissage par renforcement | [Reinforcement learning](8-Reinforcement/README.md) | Introduction à l'apprentissage par renforcement avec Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Aidez Peter à éviter le loup ! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Gym d'apprentissage par renforcement | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Scénarios et applications ML dans le monde réel | [ML in the Wild](9-Real-World/README.md) | Applications intéressantes et révélatrices du ML classique | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Débogage de modèles ML avec le tableau de bord RAI | [ML in the Wild](9-Real-World/README.md) | Débogage de modèles en apprentissage automatique avec les composants du tableau de bord Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [trouvez toutes les ressources supplémentaires pour ce cours dans notre collection Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Accès hors ligne -Vous pouvez exécuter cette documentation hors ligne en utilisant [Docsify](https://docsify.js.org/#/). Forkez ce dépôt, [installez Docsify](https://docsify.js.org/#/quickstart) sur votre machine locale, puis dans le dossier racine de ce dépôt, tapez `docsify serve`. Le site web sera servi sur le port 3000 de votre localhost : `localhost:3000`. +Vous pouvez consulter cette documentation hors ligne en utilisant [Docsify](https://docsify.js.org/#/). Forkez ce dépôt, [installez Docsify](https://docsify.js.org/#/quickstart) sur votre machine locale, puis dans le dossier racine de ce dépôt, tapez `docsify serve`. Le site sera servi sur le port 3000 de votre localhost : `localhost:3000`. ## PDFs -Trouvez un PDF du programme avec des liens [ici](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Trouvez un pdf du programme avec des liens [ici](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). ## 🎒 Autres cours @@ -165,51 +166,58 @@ Trouvez un PDF du programme avec des liens [ici](https://microsoft.github.io/ML- Notre équipe produit d'autres cours ! Découvrez : +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + ### Azure / Edge / MCP / Agents -[![AZD pour les débutants](https://img.shields.io/badge/AZD%20pour%20les%20débutants-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI pour les débutants](https://img.shields.io/badge/Edge%20AI%20pour%20les%20débutants-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP pour les débutants](https://img.shields.io/badge/MCP%20pour%20les%20débutants-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Agents IA pour les débutants](https://img.shields.io/badge/Agents%20IA%20pour%20les%20débutants-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- -### Série IA Générative -[![IA Générative pour les débutants](https://img.shields.io/badge/IA%20Générative%20pour%20les%20débutants-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![IA Générative (.NET)](https://img.shields.io/badge/IA%20Générative%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![IA Générative (Java)](https://img.shields.io/badge/IA%20Générative%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![IA Générative (JavaScript)](https://img.shields.io/badge/IA%20Générative%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Série IA générative +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![IA générative (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![IA générative (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- ### Apprentissage Fondamental -[![ML pour Débutants](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Science des Données pour Débutants](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![IA pour Débutants](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cybersécurité pour Débutants](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Développement Web pour Débutants](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT pour Débutants](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Développement XR pour Débutants](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML pour Débutants](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Science des Données pour Débutants](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![IA pour Débutants](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersécurité pour Débutants](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Développement Web pour Débutants](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT pour Débutants](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![Développement XR pour Débutants](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Série Copilot +[![Copilot pour Programmation Assistée par IA](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot pour C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Aventure Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Série Copilot -[![Copilot pour la Programmation Assistée par IA](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot pour C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Aventure Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Obtenir de l'aide +## Obtenir de l'aide -Si vous êtes bloqué ou avez des questions sur la création d'applications IA, rejoignez d'autres apprenants et développeurs expérimentés pour discuter de MCP. C'est une communauté bienveillante où les questions sont les bienvenues et le partage de connaissances est encouragé. +Si vous êtes bloqué ou avez des questions sur la création d'applications IA. Rejoignez d'autres apprenants et développeurs expérimentés dans les discussions sur MCP. C'est une communauté bienveillante où les questions sont les bienvenues et le savoir est partagé librement. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Si vous avez des retours sur les produits ou rencontrez des erreurs lors de la création, visitez : +Si vous avez des retours sur le produit ou des erreurs lors du développement, visitez : -[![Forum des Développeurs Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Avertissement** : -Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. +Ce document a été traduit à l’aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d’assurer l’exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d’origine doit être considéré comme la source faisant foi. Pour les informations critiques, une traduction professionnelle réalisée par un humain est recommandée. Nous déclinons toute responsabilité en cas de malentendus ou de mauvaises interprétations résultant de l’utilisation de cette traduction. \ No newline at end of file diff --git a/translations/he/README.md b/translations/he/README.md index 0011bd940..fe66d97a5 100644 --- a/translations/he/README.md +++ b/translations/he/README.md @@ -1,211 +1,223 @@ -[![רישיון GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![תורמים ב-GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![בעיות ב-GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![בקשות משיכה ב-GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![עוקבים ב-GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Forks ב-GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![כוכבים ב-GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 תמיכה בריבוי שפות +### 🌐 תמיכה בריבוי שפות -#### נתמך באמצעות GitHub Action (אוטומטי ותמיד מעודכן) +#### נתמך באמצעות GitHub Action (אוטומטי ותמיד מעודכן) -[ערבית](../ar/README.md) | [בנגלית](../bn/README.md) | [בולגרית](../bg/README.md) | [בורמזית (מיאנמר)](../my/README.md) | [סינית (פשוטה)](../zh/README.md) | [סינית (מסורתית, הונג קונג)](../hk/README.md) | [סינית (מסורתית, מקאו)](../mo/README.md) | [סינית (מסורתית, טייוואן)](../tw/README.md) | [קרואטית](../hr/README.md) | [צ'כית](../cs/README.md) | [דנית](../da/README.md) | [הולנדית](../nl/README.md) | [אסטונית](../et/README.md) | [פינית](../fi/README.md) | [צרפתית](../fr/README.md) | [גרמנית](../de/README.md) | [יוונית](../el/README.md) | [עברית](./README.md) | [הינדית](../hi/README.md) | [הונגרית](../hu/README.md) | [אינדונזית](../id/README.md) | [איטלקית](../it/README.md) | [יפנית](../ja/README.md) | [קוריאנית](../ko/README.md) | [ליטאית](../lt/README.md) | [מלאית](../ms/README.md) | [מראטהי](../mr/README.md) | [נפאלית](../ne/README.md) | [ניגרית פידג'ין](../pcm/README.md) | [נורווגית](../no/README.md) | [פרסית (פרסית)](../fa/README.md) | [פולנית](../pl/README.md) | [פורטוגזית (ברזיל)](../br/README.md) | [פורטוגזית (פורטוגל)](../pt/README.md) | [פונג'בית (גורמוכי)](../pa/README.md) | [רומנית](../ro/README.md) | [רוסית](../ru/README.md) | [סרבית (קירילית)](../sr/README.md) | [סלובקית](../sk/README.md) | [סלובנית](../sl/README.md) | [ספרדית](../es/README.md) | [סווהילית](../sw/README.md) | [שוודית](../sv/README.md) | [טאגאלוג (פיליפינית)](../tl/README.md) | [טמילית](../ta/README.md) | [תאית](../th/README.md) | [טורקית](../tr/README.md) | [אוקראינית](../uk/README.md) | [אורדו](../ur/README.md) | [וייטנאמית](../vi/README.md) + +[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](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + -#### הצטרפו לקהילה שלנו +#### הצטרפו לקהילה שלנו -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -יש לנו סדרת למידה עם AI ב-Discord, למדו עוד והצטרפו אלינו ב-[Learn with AI Series](https://aka.ms/learnwithai/discord) בין ה-18 ל-30 בספטמבר, 2025. תקבלו טיפים וטריקים לשימוש ב-GitHub Copilot למדעי הנתונים. +יש לנו סדרת לימוד ב-Discord בנושא למידה עם AI, למדו עוד והצטרפו אלינו ב-[Learn with AI Series](https://aka.ms/learnwithai/discord) מ-18 עד 30 בספטמבר 2025. תקבלו טיפים וטריקים לשימוש ב-GitHub Copilot למדעי הנתונים. -![סדרת למידה עם AI](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.he.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.he.png) -# למידת מכונה למתחילים - תוכנית לימודים +# למידת מכונה למתחילים - תוכנית לימודים -> 🌍 טיילו ברחבי העולם כשאנו חוקרים למידת מכונה דרך תרבויות עולמיות 🌍 +> 🌍 טוסו מסביב לעולם כשאנו חוקרים למידת מכונה באמצעות תרבויות העולם 🌍 -צוות Cloud Advocates במיקרוסופט שמח להציע תוכנית לימודים בת 12 שבועות ו-26 שיעורים על **למידת מכונה**. בתוכנית זו תלמדו על מה שמכונה לעיתים **למידת מכונה קלאסית**, תוך שימוש בעיקר בספריית Scikit-learn והימנעות מלמידה עמוקה, שמכוסה בתוכנית הלימודים שלנו [AI for Beginners](https://aka.ms/ai4beginners). שלבו שיעורים אלו עם תוכנית הלימודים שלנו ['Data Science for Beginners'](https://aka.ms/ds4beginners), גם כן! +הסנגורים לענן במיקרוסופט שמחים להציע תוכנית לימודים בת 12 שבועות, 26 שיעורים, הכוללת את כל מה שקשור ל**למידת מכונה**. בתוכנית זו תלמדו על מה שלפעמים נקרא **למידת מכונה קלאסית**, תוך שימוש בעיקר בספריית Scikit-learn והימנעות מלמידה עמוקה, הנלמדת בתוכנית שלנו [AI for Beginners](https://aka.ms/ai4beginners). שלבו את השיעורים האלה עם תוכנית ['Data Science for Beginners'](https://aka.ms/ds4beginners) שלנו! -טיילו איתנו ברחבי העולם כשאנו מיישמים טכניקות קלאסיות אלו על נתונים מאזורים שונים בעולם. כל שיעור כולל חידונים לפני ואחרי השיעור, הוראות כתובות להשלמת השיעור, פתרון, משימה ועוד. הפדגוגיה מבוססת הפרויקטים שלנו מאפשרת לכם ללמוד תוך כדי בנייה, דרך מוכחת להטמעת מיומנויות חדשות. +טוסו איתנו מסביב לעולם כשאנו מיישמים את הטכניקות הקלאסיות הללו על נתונים מאזורים רבים בעולם. כל שיעור כולל מבחני קדם-שיעור ואחריו, הוראות כתובות להשלמת השיעור, פתרון, משימה ועוד. הפדגוגיה מבוססת הפרויקטים שלנו מאפשרת לכם ללמוד תוך כדי בנייה, דרך מוכחת להטמעת מיומנויות חדשות. -**✍️ תודה רבה למחברים שלנו** ג'ן לופר, סטיבן האוול, פרנצ'סקה לזארי, טומומי אימורה, קסי ברביו, דמיטרי סושניקוב, כריס נורינג, אנירבן מוקרג'י, אורנלה אלטוניאן, רות יעקובו ואיימי בויד +**✍️ תודה רבה למחברים שלנו** ג'ן לופר, סטיבן האוול, פרנצ'סקה לזרי, טומומי אימורה, קאסי ברוויו, דמיטרי סושניקוב, כריס נורינג, אנירבן מוקרג'י, אורנלה אלטוניאן, רות יקובו ואיימי בויד -**🎨 תודה גם למאיירים שלנו** טומומי אימורה, דאסאני מדיפאלי וג'ן לופר +**🎨 תודה גם למאיירים שלנו** טומומי אימורה, דסאני מדיפאלי, וג'ן לופר -**🙏 תודה מיוחדת 🙏 לשגרירי הסטודנטים של מיקרוסופט, מחברים, סוקרים ותורמי תוכן**, במיוחד רישיט דגלי, מוחמד סאקיב חאן אינאן, רוהאן ראג', אלכסנדרו פטרסקו, אבישק ג'ייסוואל, נאורין טבאסם, יואן סמואילה וסניגדה אגרוול +**🙏 תודה מיוחדת 🙏 למחברי, מבקרי התוכן ותורמי התוכן של שגרירי הסטודנטים של מיקרוסופט**, במיוחד רישיט דגלי, מוחמד סאקיב חאן אינאן, רוהאן ראג', אלכסנדרו פטרסקו, אבישק ג'ייסוואל, נאורין טבאסום, יואן סמיולה, וסניגדה אגרוואל -**🤩 תודה נוספת לשגרירי הסטודנטים של מיקרוסופט אריק וונג'או, ג'סלין סונדהי ווידושי גופטה על שיעורי ה-R שלנו!** +**🤩 תודה נוספת לשגרירי הסטודנטים של מיקרוסופט אריק ואנג'או, ג'סלין סונדי ווידושי גופטה על שיעורי R שלנו!** -# התחלה +# התחלה -בצעו את השלבים הבאים: -1. **צרו Fork למאגר**: לחצו על כפתור "Fork" בפינה הימנית העליונה של עמוד זה. -2. **שכפלו את המאגר**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +עקבו אחר השלבים הבאים: +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) +> [מצאו את כל המשאבים הנוספים לקורס זה באוסף Microsoft Learn שלנו](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +> 🔧 **צריכים עזרה?** בדקו את [מדריך פתרון הבעיות](TROUBLESHOOTING.md) שלנו לפתרונות לבעיות נפוצות בהתקנה, בהגדרה ובהפעלת השיעורים. -> 🔧 **זקוקים לעזרה?** עיינו ב-[מדריך פתרון הבעיות](TROUBLESHOOTING.md) שלנו לפתרונות לבעיות נפוצות בהתקנה, הגדרה והרצת שיעורים. -**[סטודנטים](https://aka.ms/student-page)**, כדי להשתמש בתוכנית לימודים זו, צרו Fork למאגר כולו לחשבון GitHub שלכם והשלימו את התרגילים בעצמכם או בקבוצה: +**[סטודנטים](https://aka.ms/student-page)**, כדי להשתמש בתוכנית זו, פיצלו את כל המאגר לחשבון ה-GitHub שלכם והשלימו את התרגילים בעצמכם או בקבוצה: -- התחילו עם חידון לפני השיעור. -- קראו את השיעור והשלימו את הפעילויות, עצרו והרהרו בכל בדיקת ידע. -- נסו ליצור את הפרויקטים על ידי הבנת השיעורים במקום להריץ את קוד הפתרון; עם זאת, קוד זה זמין בתיקיות `/solution` בכל שיעור מבוסס פרויקט. -- בצעו את החידון לאחר השיעור. -- השלימו את האתגר. -- השלימו את המשימה. -- לאחר השלמת קבוצת שיעורים, בקרו ב-[לוח הדיונים](https://github.com/microsoft/ML-For-Beginners/discussions) ו"למדו בקול רם" על ידי מילוי טופס PAT המתאים. 'PAT' הוא כלי הערכת התקדמות שהוא טופס שאתם ממלאים כדי להעמיק את הלמידה שלכם. תוכלו גם להגיב ל-PATs של אחרים כדי שנוכל ללמוד יחד. +- התחילו במבחן קדם-הרצאה. +- קראו את ההרצאה והשלימו את הפעילויות, עצרו והרהרו בכל בדיקת ידע. +- נסו ליצור את הפרויקטים על ידי הבנת השיעורים במקום להריץ את קוד הפתרון; עם זאת, הקוד זמין בתיקיות `/solution` בכל שיעור מבוסס פרויקט. +- עברו את מבחן לאחר ההרצאה. +- השלימו את האתגר. +- השלימו את המשימה. +- לאחר השלמת קבוצת שיעורים, בקרו ב-[לוח הדיונים](https://github.com/microsoft/ML-For-Beginners/discussions) ו"למדו בקול" על ידי מילוי טופס PAT המתאים. 'PAT' הוא כלי הערכת התקדמות שהוא טופס שאתם ממלאים להעמקת הלמידה. ניתן גם להגיב ל-PATים אחרים כדי שנלמד יחד. -> ללימוד נוסף, אנו ממליצים לעקוב אחר [מודולים ומסלולי למידה של Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +> ללימוד נוסף, אנו ממליצים לעקוב אחרי מודולים ונתיבי למידה אלה של [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). -**מורים**, כללנו [כמה הצעות](for-teachers.md) כיצד להשתמש בתוכנית לימודים זו. +**מורים**, כללנו [כמה הצעות](for-teachers.md) כיצד להשתמש בתוכנית זו. --- -## סרטוני הדרכה +## סרטוני הדרכה -חלק מהשיעורים זמינים כסרטונים קצרים. תוכלו למצוא את כולם משולבים בשיעורים, או ב-[רשימת ההשמעה של ML for Beginners בערוץ YouTube של Microsoft Developer](https://aka.ms/ml-beginners-videos) על ידי לחיצה על התמונה למטה. +חלק מהשיעורים זמינים כסרטוני וידאו קצרים. ניתן למצוא את כולם בתוך השיעורים, או ברשימת ההשמעה [ML for Beginners בערוץ Microsoft Developer ב-YouTube](https://aka.ms/ml-beginners-videos) על ידי לחיצה על התמונה למטה. -[![באנר ML למתחילים](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.he.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.he.png)](https://aka.ms/ml-beginners-videos) --- -## הכירו את הצוות +## הכירו את הצוות -[![סרטון קידום](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif מאת** [מוהיט ג'ייסאל](https://linkedin.com/in/mohitjaisal) +**גיף מאת** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 לחצו על התמונה למעלה לסרטון על הפרויקט והאנשים שיצרו אותו! +> 🎥 לחצו על התמונה למעלה לסרטון על הפרויקט והאנשים שיצרו אותו! --- -## פדגוגיה - -בחרנו בשני עקרונות פדגוגיים בעת בניית תוכנית לימודים זו: להבטיח שהיא תהיה מבוססת **פרויקטים מעשיים** ושתכלול **חידונים תכופים**. בנוסף, לתוכנית לימודים זו יש **נושא משותף** שמעניק לה אחידות. - -על ידי הבטחת התאמת התוכן לפרויקטים, התהליך הופך למרתק יותר עבור הסטודנטים ושימור המושגים יוגבר. בנוסף, חידון בעל סיכון נמוך לפני שיעור מכוון את כוונת הסטודנט ללמידת נושא, בעוד שחידון שני לאחר השיעור מבטיח שימור נוסף. תוכנית לימודים זו תוכננה להיות גמישה ומהנה וניתן לקחת אותה בשלמותה או בחלקה. הפרויקטים מתחילים קטנים והופכים למורכבים יותר עד סוף מחזור 12 השבועות. תוכנית לימודים זו כוללת גם נספח על יישומים בעולם האמיתי של ML, שניתן להשתמש בו כקרדיט נוסף או כבסיס לדיון. - -> מצאו את [קוד ההתנהגות](CODE_OF_CONDUCT.md), [תרומה](CONTRIBUTING.md), [תרגום](TRANSLATIONS.md), ו-[פתרון בעיות](TROUBLESHOOTING.md) שלנו. נשמח לקבל את המשוב הבונה שלכם! - -## כל שיעור כולל - -- סקיצה אופציונלית -- סרטון משלים אופציונלי -- סרטון הדרכה (רק בחלק מהשיעורים) -- [חידון חימום לפני השיעור](https://ff-quizzes.netlify.app/en/ml/) -- שיעור כתוב -- עבור שיעורים מבוססי פרויקטים, מדריכים שלב-אחר-שלב כיצד לבנות את הפרויקט -- בדיקות ידע -- אתגר -- קריאה משלימה -- משימה -- [חידון לאחר השיעור](https://ff-quizzes.netlify.app/en/ml/) - -> **הערה על שפות**: שיעורים אלו נכתבו בעיקר ב-Python, אך רבים מהם זמינים גם ב-R. כדי להשלים שיעור ב-R, גשו לתיקיית `/solution` וחפשו שיעורי R. הם כוללים סיומת .rmd שמייצגת קובץ **R Markdown** שניתן להגדירו כקובץ Markdown הכולל 'קטעי קוד' (של R או שפות אחרות) וכותרת `YAML` (שמנחה כיצד לעצב פלטים כמו PDF). כך, הוא משמש כמסגרת כתיבה מצוינת למדעי הנתונים מכיוון שהוא מאפשר לשלב את הקוד שלכם, הפלט שלו והמחשבות שלכם על ידי כתיבתם ב-Markdown. יתרה מכך, ניתן להמיר מסמכי R Markdown לפורמטים כמו PDF, HTML או Word. - -> **הערה על חידונים**: כל החידונים נמצאים ב-[תיקיית Quiz App](../../quiz-app), עבור 52 חידונים בסך הכל, כל אחד עם שלוש שאלות. הם מקושרים מתוך השיעורים אך ניתן להריץ את אפליקציית החידונים באופן מקומי; עקבו אחר ההוראות בתיקיית `quiz-app` כדי לארח אותה מקומית או לפרוס ל-Azure. - -| מספר שיעור | נושא | קבוצת שיעורים | מטרות למידה | שיעור מקושר | מחבר | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | מבוא ללמידת מכונה | [מבוא](1-Introduction/README.md) | למדו את המושגים הבסיסיים מאחורי למידת מכונה | [שיעור](1-Introduction/1-intro-to-ML/README.md) | מוחמד | -| 02 | ההיסטוריה של למידת מכונה | [מבוא](1-Introduction/README.md) | למדו את ההיסטוריה שמאחורי התחום הזה | [שיעור](1-Introduction/2-history-of-ML/README.md) | ג'ן ואיימי | -| 03 | הוגנות ולמידת מכונה | [מבוא](1-Introduction/README.md) | מהם הנושאים הפילוסופיים החשובים סביב הוגנות שעל הסטודנטים לשקול בעת בניית והפעלת מודלים של למידת מכונה? | [שיעור](1-Introduction/3-fairness/README.md) | טומומי | -| 04 | טכניקות ללמידת מכונה | [מבוא](1-Introduction/README.md) | אילו טכניקות חוקרי למידת מכונה משתמשים כדי לבנות מודלים? | [שיעור](1-Introduction/4-techniques-of-ML/README.md) | כריס וג'ן | -| 05 | מבוא לרגרסיה | [רגרסיה](2-Regression/README.md) | התחילו עם Python ו-Scikit-learn למודלים של רגרסיה | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | ג'ן • אריק ונג'או | -| 06 | מחירי דלעת בצפון אמריקה 🎃 | [רגרסיה](2-Regression/README.md) | ויזואליזציה וניקוי נתונים כהכנה ללמידת מכונה | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | ג'ן • אריק ונג'או | -| 07 | מחירי דלעת בצפון אמריקה 🎃 | [רגרסיה](2-Regression/README.md) | בניית מודלים של רגרסיה לינארית ופולינומית | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | ג'ן ודמיטרי • אריק ונג'או | -| 08 | מחירי דלעת בצפון אמריקה 🎃 | [רגרסיה](2-Regression/README.md) | בניית מודל רגרסיה לוגיסטית | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | ג'ן • אריק ונג'או | -| 09 | אפליקציית רשת 🔌 | [אפליקציית רשת](3-Web-App/README.md) | בניית אפליקציית רשת לשימוש במודל שאומן | [Python](3-Web-App/1-Web-App/README.md) | ג'ן | -| 10 | מבוא לסיווג | [סיווג](4-Classification/README.md) | ניקוי, הכנה וויזואליזציה של הנתונים שלכם; מבוא לסיווג | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | ג'ן וקאסי • אריק ונג'או | -| 11 | מטבחים אסייתיים והודיים טעימים 🍜 | [סיווג](4-Classification/README.md) | מבוא למסווגים | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | ג'ן וקאסי • אריק ונג'או | -| 12 | מטבחים אסייתיים והודיים טעימים 🍜 | [סיווג](4-Classification/README.md) | מסווגים נוספים | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | ג'ן וקאסי • אריק ונג'או | -| 13 | מטבחים אסייתיים והודיים טעימים 🍜 | [סיווג](4-Classification/README.md) | בניית אפליקציית רשת ממליצה באמצעות המודל שלכם | [Python](4-Classification/4-Applied/README.md) | ג'ן | -| 14 | מבוא לאשכולות | [אשכולות](5-Clustering/README.md) | ניקוי, הכנה וויזואליזציה של הנתונים שלכם; מבוא לאשכולות | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | ג'ן • אריק ונג'או | -| 15 | חקר טעמי מוזיקה ניגרית 🎧 | [אשכולות](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) | ג'ן • אריק ונג'או | -| 16 | מבוא לעיבוד שפה טבעית ☕️ | [עיבוד שפה טבעית](6-NLP/README.md) | למדו את היסודות של עיבוד שפה טבעית על ידי בניית בוט פשוט | [Python](6-NLP/1-Introduction-to-NLP/README.md) | סטיבן | -| 17 | משימות נפוצות בעיבוד שפה טבעית ☕️ | [עיבוד שפה טבעית](6-NLP/README.md) | העמיקו את הידע שלכם בעיבוד שפה טבעית על ידי הבנת משימות נפוצות הנדרשות בעת עבודה עם מבני שפה | [Python](6-NLP/2-Tasks/README.md) | סטיבן | -| 18 | תרגום וניתוח רגשות ♥️ | [עיבוד שפה טבעית](6-NLP/README.md) | תרגום וניתוח רגשות עם ג'יין אוסטן | [Python](6-NLP/3-Translation-Sentiment/README.md) | סטיבן | -| 19 | מלונות רומנטיים באירופה ♥️ | [עיבוד שפה טבעית](6-NLP/README.md) | ניתוח רגשות עם ביקורות על מלונות 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | סטיבן | -| 20 | מלונות רומנטיים באירופה ♥️ | [עיבוד שפה טבעית](6-NLP/README.md) | ניתוח רגשות עם ביקורות על מלונות 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | סטיבן | -| 21 | מבוא לחיזוי סדרות זמן | [סדרות זמן](7-TimeSeries/README.md) | מבוא לחיזוי סדרות זמן | [Python](7-TimeSeries/1-Introduction/README.md) | פרנצ'סקה | -| 22 | ⚡️ שימוש עולמי בחשמל ⚡️ - חיזוי סדרות זמן עם ARIMA | [סדרות זמן](7-TimeSeries/README.md) | חיזוי סדרות זמן עם ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | פרנצ'סקה | -| 23 | ⚡️ שימוש עולמי בחשמל ⚡️ - חיזוי סדרות זמן עם SVR | [סדרות זמן](7-TimeSeries/README.md) | חיזוי סדרות זמן עם Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | אנירבן | -| 24 | מבוא ללמידת חיזוק | [למידת חיזוק](8-Reinforcement/README.md) | מבוא ללמידת חיזוק עם Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | דמיטרי | -| 25 | עזרו לפיטר להימנע מהזאב! 🐺 | [למידת חיזוק](8-Reinforcement/README.md) | למידת חיזוק עם Gym | [Python](8-Reinforcement/2-Gym/README.md) | דמיטרי | -| פוסטסקריפט | תרחישים ויישומים של למידת מכונה בעולם האמיתי | [למידת מכונה בעולם האמיתי](9-Real-World/README.md) | יישומים מעניינים ומרתקים של למידת מכונה קלאסית | [שיעור](9-Real-World/1-Applications/README.md) | הצוות | -| פוסטסקריפט | ניפוי באגים במודלים של למידת מכונה באמצעות לוח מחוונים RAI | [למידת מכונה בעולם האמיתי](9-Real-World/README.md) | ניפוי באגים במודלים של למידת מכונה באמצעות רכיבי לוח מחוונים של AI אחראי | [שיעור](9-Real-World/2-Debugging-ML-Models/README.md) | רות יעקובו | - -> [מצאו את כל המשאבים הנוספים לקורס זה באוסף Microsoft Learn שלנו](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +## פדגוגיה + +בחרנו שני עקרונות פדגוגיים בבניית תוכנית זו: להבטיח שהיא **מבוססת פרויקטים** וכוללת **מבחנים תכופים**. בנוסף, לתוכנית יש **נושא** משותף שמעניק לה אחידות. + +על ידי התאמת התוכן לפרויקטים, התהליך נעשה מעניין יותר לסטודנטים והטמעת המושגים תוגבר. בנוסף, מבחן קל לפני השיעור מגדיר את כוונת הסטודנט ללמוד נושא, בעוד שמבחן שני לאחר השיעור מבטיח הטמעה נוספת. תוכנית זו עוצבה להיות גמישה ומהנה וניתן ללמוד אותה בשלמותה או בחלקים. הפרויקטים מתחילים קטנים והופכים למורכבים יותר לקראת סוף מחזור 12 השבועות. לתוכנית זו מצורף גם פרק סיום על יישומים בעולם האמיתי של למידת מכונה, שניתן להשתמש בו כקרדיט נוסף או כבסיס לדיון. + +> מצאו את [קוד ההתנהגות](CODE_OF_CONDUCT.md), [הנחיות לתרומה](CONTRIBUTING.md), [הנחיות לתרגום](TRANSLATIONS.md) ו[מדריך פתרון בעיות](TROUBLESHOOTING.md). נשמח למשוב בונה! + +## כל שיעור כולל + +- שרטוט אופציונלי +- וידאו משלים אופציונלי +- סרטון הדרכה (בחלק מהשיעורים בלבד) +- [מבחן חימום לפני ההרצאה](https://ff-quizzes.netlify.app/en/ml/) +- שיעור כתוב +- בשיעורים מבוססי פרויקט, מדריכים שלב-אחר-שלב לבניית הפרויקט +- בדיקות ידע +- אתגר +- קריאה משלימה +- משימה +- [מבחן לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/) + +> **הערה לגבי שפות**: השיעורים כתובים בעיקר בפייתון, אך רבים זמינים גם ב-R. כדי להשלים שיעור ב-R, גשו לתיקיית `/solution` וחפשו שיעורי R. הם כוללים סיומת .rmd המייצגת קובץ **R Markdown** שניתן להגדירו כהטמעת `חתיכות קוד` (של R או שפות אחרות) ו`כותרת YAML` (המנחה כיצד לעצב פלטים כמו PDF) במסמך `Markdown`. כך, הוא משמש כמסגרת כתיבה מצוינת למדעי הנתונים, שכן הוא מאפשר לשלב את הקוד, הפלט והמחשבות שלכם על ידי כתיבתם ב-Markdown. בנוסף, ניתן להמיר מסמכי R Markdown לפורמטים כמו PDF, HTML או Word. + +> **הערה לגבי מבחנים**: כל המבחנים נמצאים בתיקיית [Quiz App](../../quiz-app), הכוללת 52 מבחנים עם שלוש שאלות כל אחד. הם מקושרים מתוך השיעורים אך ניתן להריץ את אפליקציית המבחנים מקומית; עקבו אחר ההוראות בתיקיית `quiz-app` לאירוח מקומי או פריסה ב-Azure. + +| מספר השיעור | נושא | קבוצת שיעורים | מטרות הלמידה | שיעור מקושר | מחבר | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | מבוא ללמידת מכונה | [Introduction](1-Introduction/README.md) | למדו את המושגים הבסיסיים שמאחורי למידת מכונה | [Lesson](1-Introduction/1-intro-to-ML/README.md) | מוחמד | +| 02 | ההיסטוריה של למידת מכונה | [Introduction](1-Introduction/README.md) | למדו את ההיסטוריה שמאחורי התחום | [Lesson](1-Introduction/2-history-of-ML/README.md) | ג'ן ואיימי | +| 03 | הוגנות ולמידת מכונה | [Introduction](1-Introduction/README.md) | מהם הנושאים הפילוסופיים החשובים סביב הוגנות שעל הסטודנטים לקחת בחשבון בעת בנייה ויישום של מודלים בלמידת מכונה? | [Lesson](1-Introduction/3-fairness/README.md) | טומומי | +| 04 | טכניקות ללמידת מכונה | [Introduction](1-Introduction/README.md) | אילו טכניקות חוקרי למידת מכונה משתמשים כדי לבנות מודלים? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | כריס וג'ן | +| 05 | מבוא לרגרסיה | [Regression](2-Regression/README.md) | התחילו עם פייתון ו-Scikit-learn למודלי רגרסיה | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | ג'ן • אריק ואנג'או | +| 06 | מחירי דלעות בצפון אמריקה 🎃 | [Regression](2-Regression/README.md) | ויזואליזציה וניקוי נתונים כהכנה ללמידת מכונה | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | ג'ן • אריק ואנג'או | +| 07 | מחירי דלעות בצפון אמריקה 🎃 | [Regression](2-Regression/README.md) | בניית מודלי רגרסיה ליניארית ופולינומיאלית | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | ג'ן ודמיטרי • אריק ואנג'או | +| 08 | מחירי דלעות בצפון אמריקה 🎃 | [Regression](2-Regression/README.md) | בניית מודל רגרסיה לוגיסטית | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | ג'ן • אריק ואנג'או | +| 09 | אפליקציית ווב 🔌 | [Web App](3-Web-App/README.md) | בניית אפליקציית ווב לשימוש במודל שאומן | [Python](3-Web-App/1-Web-App/README.md) | ג'ן | +| 10 | מבוא לסיווג | [Classification](4-Classification/README.md) | ניקוי, הכנה, ויזואליזציה של הנתונים; מבוא לסיווג | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | ג'ן וקסי • אריק ואנג'או | +| 11 | מטבחים אסייתיים והודיים טעימים 🍜 | [Classification](4-Classification/README.md) | מבוא לממיינים | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | ג'ן וקסי • אריק ואנג'או | +| 12 | מטבחים אסייתיים והודיים טעימים 🍜 | [Classification](4-Classification/README.md) | עוד ממיינים | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | ג'ן וקסי • אריק ואנג'או | +| 13 | מטבחים אסייתיים והודיים טעימים 🍜 | [Classification](4-Classification/README.md) | בניית אפליקציית ווב להמלצות באמצעות המודל שלך | [Python](4-Classification/4-Applied/README.md) | ג'ן | +| 14 | מבוא לאשכולות | [Clustering](5-Clustering/README.md) | ניקוי, הכנה, ויזואליזציה של הנתונים; מבוא לאשכולות | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | ג'ן • אריק ואנג'או | +| 15 | חקר טעמים מוזיקליים בניגריה 🎧 | [Clustering](5-Clustering/README.md) | חקר שיטת אשכולות K-Means | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | ג'ן • אריק ואנג'או | +| 16 | מבוא לעיבוד שפה טבעית ☕️ | [Natural language processing](6-NLP/README.md) | למדו את היסודות של עיבוד שפה טבעית על ידי בניית בוט פשוט | [Python](6-NLP/1-Introduction-to-NLP/README.md) | סטיבן | +| 17 | משימות נפוצות בעיבוד שפה טבעית ☕️ | [Natural language processing](6-NLP/README.md) | העמיקו את הידע שלכם בעיבוד שפה טבעית על ידי הבנת משימות נפוצות הנדרשות בעת עבודה עם מבני שפה | [Python](6-NLP/2-Tasks/README.md) | סטיבן | +| 18 | תרגום וניתוח סנטימנט ♥️ | [Natural language processing](6-NLP/README.md) | תרגום וניתוח סנטימנט עם ג'יין אוסטן | [Python](6-NLP/3-Translation-Sentiment/README.md) | סטיבן | +| 19 | בתי מלון רומנטיים באירופה ♥️ | [Natural language processing](6-NLP/README.md) | ניתוח סנטימנט עם ביקורות על בתי מלון 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | סטיבן | +| 20 | בתי מלון רומנטיים באירופה ♥️ | [Natural language processing](6-NLP/README.md) | ניתוח סנטימנט עם ביקורות על בתי מלון 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | סטיבן | +| 21 | מבוא לחיזוי סדרות זמן | [Time series](7-TimeSeries/README.md) | מבוא לחיזוי סדרות זמן | [Python](7-TimeSeries/1-Introduction/README.md) | פרנצ'סקה | +| 22 | ⚡️ שימוש עולמי באנרגיה ⚡️ - חיזוי סדרות זמן עם ARIMA | [Time series](7-TimeSeries/README.md) | חיזוי סדרות זמן עם ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | פרנצ'סקה | +| 23 | ⚡️ שימוש עולמי באנרגיה ⚡️ - חיזוי סדרות זמן עם SVR | [Time series](7-TimeSeries/README.md) | חיזוי סדרות זמן עם רגרסור וקטור תמיכה | [Python](7-TimeSeries/3-SVR/README.md) | אנירבן | +| 24 | מבוא ללמידה מחזקת | [Reinforcement learning](8-Reinforcement/README.md) | מבוא ללמידה מחזקת עם Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | דמיטרי | +| 25 | עזרו לפיטר להימנע מהזאב! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | למידת מחזקת Gym | [Python](8-Reinforcement/2-Gym/README.md) | דמיטרי | +| Postscript | תרחישים ויישומים של למידת מכונה בעולם האמיתי | [ML in the Wild](9-Real-World/README.md) | יישומים מעניינים וחושפניים של למידת מכונה קלאסית | [Lesson](9-Real-World/1-Applications/README.md) | צוות | +| Postscript | איתור באגים במודלים של למידת מכונה באמצעות לוח בקרה RAI | [ML in the Wild](9-Real-World/README.md) | איתור באגים במודלים של למידת מכונה באמצעות רכיבי לוח בקרה של Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | רות יקובו | + +> [מצא את כל המשאבים הנוספים לקורס זה באוסף Microsoft Learn שלנו](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## גישה לא מקוונת -ניתן להפעיל את התיעוד הזה במצב לא מקוון באמצעות [Docsify](https://docsify.js.org/#/). שיבטו את המאגר הזה, [התקינו את Docsify](https://docsify.js.org/#/quickstart) במחשב המקומי שלכם, ואז בתיקיית השורש של המאגר הזה, הקלידו `docsify serve`. האתר יפעל על פורט 3000 ב-localhost שלכם: `localhost:3000`. +אתה יכול להפעיל תיעוד זה במצב לא מקוון באמצעות [Docsify](https://docsify.js.org/#/). פצל את המאגר הזה, [התקן את Docsify](https://docsify.js.org/#/quickstart) במחשב המקומי שלך, ואז בתיקיית השורש של המאגר הזה, הקלד `docsify serve`. האתר יוגש על פורט 3000 ב-localhost שלך: `localhost:3000`. ## קבצי PDF -מצאו קובץ PDF של תכנית הלימודים עם קישורים [כאן](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +מצא קובץ PDF של תוכנית הלימודים עם קישורים [כאן](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). + -## 🎒 קורסים נוספים +## 🎒 קורסים נוספים -הצוות שלנו מייצר קורסים נוספים! בדקו: +הצוות שלנו מייצר קורסים נוספים! בדוק: -### Azure / Edge / MCP / סוכנים -[![AZD למתחילים](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI למתחילים](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP למתחילים](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![סוכני AI למתחילים](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### סדרת AI גנרטיבי -[![AI גנרטיבי למתחילים](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI גנרטיבי (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![AI גנרטיבי (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![AI גנרטיבי (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### סדרת AI גנרטיבי +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![בינה מלאכותית יוצרת (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![בינה מלאכותית יוצרת (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +--- + ### למידה בסיסית -[![ML למתחילים](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![מדע נתונים למתחילים](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI למתחילים](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![סייבר למתחילים](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![פיתוח אתרים למתחילים](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT למתחילים](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![פיתוח XR למתחילים](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![למידת מכונה למתחילים](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![מדעי הנתונים למתחילים](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![בינה מלאכותית למתחילים](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![אבטחת סייבר למתחילים](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![פיתוח ווב למתחילים](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![אינטרנט של הדברים למתחילים](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![פיתוח XR למתחילים](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### סדרת קופיילוט +[![קופיילוט לתכנות משותף עם בינה מלאכותית](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![קופיילוט ל-C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![הרפתקאות קופיילוט](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### סדרת Copilot -[![Copilot לתכנות זוגי מבוסס AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot ל-C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![הרפתקת Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## קבלת עזרה +## קבלת עזרה -אם אתם נתקעים או יש לכם שאלות על בניית אפליקציות AI, הצטרפו ללומדים אחרים ולמפתחים מנוסים בדיונים על MCP. זו קהילה תומכת שבה שאלות מתקבלות בברכה וידע משותף בחופשיות. +אם אתה נתקע או יש לך שאלות לגבי בניית אפליקציות בינה מלאכותית. הצטרף ללומדים אחרים ומפתחים מנוסים בדיונים על MCP. זו קהילה תומכת שבה שאלות מתקבלות בברכה והידע משותף בחופשיות. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -אם יש לכם משוב על מוצרים או נתקלתם בשגיאות במהלך הבנייה, בקרו ב: +אם יש לך משוב על המוצר או שגיאות בזמן הבנייה בקר ב: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![פורום מפתחים Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **כתב ויתור**: -מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור הסמכותי. למידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי בני אדם. איננו אחראים לאי-הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה. +מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון כי תרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפת המקור שלו נחשב למקור הסמכותי. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי אדם. אנו לא נושאים באחריות לכל אי-הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה. \ No newline at end of file diff --git a/translations/hi/README.md b/translations/hi/README.md index a468bb587..359bc755c 100644 --- a/translations/hi/README.md +++ b/translations/hi/README.md @@ -1,8 +1,8 @@ -[अरबी](../ar/README.md) | [बंगाली](../bn/README.md) | [बुल्गारियन](../bg/README.md) | [बर्मी (म्यांमार)](../my/README.md) | [चीनी (सरलीकृत)](../zh/README.md) | [चीनी (पारंपरिक, हांगकांग)](../hk/README.md) | [चीनी (पारंपरिक, मकाऊ)](../mo/README.md) | [चीनी (पारंपरिक, ताइवान)](../tw/README.md) | [क्रोएशियन](../hr/README.md) | [चेक](../cs/README.md) | [डेनिश](../da/README.md) | [डच](../nl/README.md) | [एस्टोनियन](../et/README.md) | [फिनिश](../fi/README.md) | [फ्रेंच](../fr/README.md) | [जर्मन](../de/README.md) | [ग्रीक](../el/README.md) | [हिब्रू](../he/README.md) | [हिंदी](./README.md) | [हंगेरियन](../hu/README.md) | [इंडोनेशियन](../id/README.md) | [इतालवी](../it/README.md) | [जापानी](../ja/README.md) | [कोरियाई](../ko/README.md) | [लिथुआनियन](../lt/README.md) | [मलय](../ms/README.md) | [मराठी](../mr/README.md) | [नेपाली](../ne/README.md) | [नाइजीरियाई पिजिन](../pcm/README.md) | [नॉर्वेजियन](../no/README.md) | [फारसी (फारसी)](../fa/README.md) | [पोलिश](../pl/README.md) | [पुर्तगाली (ब्राजील)](../br/README.md) | [पुर्तगाली (पुर्तगाल)](../pt/README.md) | [पंजाबी (गुरमुखी)](../pa/README.md) | [रोमानियाई](../ro/README.md) | [रूसी](../ru/README.md) | [सर्बियाई (सिरिलिक)](../sr/README.md) | [स्लोवाक](../sk/README.md) | [स्लोवेनियन](../sl/README.md) | [स्पेनिश](../es/README.md) | [स्वाहिली](../sw/README.md) | [स्वीडिश](../sv/README.md) | [टैगालोग (फिलिपिनो)](../tl/README.md) | [तमिल](../ta/README.md) | [थाई](../th/README.md) | [तुर्की](../tr/README.md) | [यूक्रेनी](../uk/README.md) | [उर्दू](../ur/README.md) | [वियतनामी](../vi/README.md) +[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](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) -#### हमारे समुदाय से जुड़ें +#### हमारे समुदाय में शामिल हों [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -हमारे पास एक डिस्कॉर्ड "AI के साथ सीखें" सीरीज चल रही है। अधिक जानें और [AI के साथ सीखें सीरीज](https://aka.ms/learnwithai/discord) में 18 - 30 सितंबर, 2025 के बीच शामिल हों। आपको डेटा साइंस के लिए GitHub Copilot का उपयोग करने के टिप्स और ट्रिक्स मिलेंगे। +हमारे पास एक Discord सीखने के लिए AI श्रृंखला चल रही है, अधिक जानने और हमारे साथ जुड़ने के लिए [Learn with AI Series](https://aka.ms/learnwithai/discord) पर जाएं, जो 18 - 30 सितंबर, 2025 तक चलेगी। आपको GitHub Copilot का उपयोग करने के टिप्स और ट्रिक्स मिलेंगे जो डेटा साइंस के लिए हैं। -![AI के साथ सीखें सीरीज](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.hi.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.hi.png) # शुरुआती लोगों के लिए मशीन लर्निंग - एक पाठ्यक्रम -> 🌍 दुनिया की संस्कृतियों के माध्यम से मशीन लर्निंग का अन्वेषण करें 🌍 +> 🌍 दुनिया भर की संस्कृतियों के माध्यम से मशीन लर्निंग का अन्वेषण करते हुए दुनिया की यात्रा करें 🌍 -Microsoft के क्लाउड एडवोकेट्स आपको **मशीन लर्निंग** पर आधारित 12-सप्ताह, 26-पाठ का पाठ्यक्रम प्रदान करने में प्रसन्न हैं। इस पाठ्यक्रम में, आप **क्लासिक मशीन लर्निंग** के बारे में जानेंगे, मुख्य रूप से Scikit-learn का उपयोग करते हुए और डीप लर्निंग से बचते हुए, जो हमारे [शुरुआती लोगों के लिए AI पाठ्यक्रम](https://aka.ms/ai4beginners) में शामिल है। इन पाठों को हमारे ['शुरुआती लोगों के लिए डेटा साइंस' पाठ्यक्रम](https://aka.ms/ds4beginners) के साथ जोड़ें! +Microsoft के क्लाउड एडवोकेट्स खुशी के साथ 12 सप्ताह, 26-लेसन का एक पाठ्यक्रम प्रस्तुत करते हैं जो पूरी तरह से **मशीन लर्निंग** के बारे में है। इस पाठ्यक्रम में, आप कभी-कभी जिसे **क्लासिक मशीन लर्निंग** कहा जाता है, उसके बारे में सीखेंगे, जो मुख्य रूप से Scikit-learn लाइब्रेरी का उपयोग करता है और डीप लर्निंग से बचता है, जिसे हमारे [AI for Beginners' curriculum](https://aka.ms/ai4beginners) में कवर किया गया है। इन पाठों को हमारे ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) के साथ भी जोड़ा जा सकता है। -हमारे साथ दुनिया भर की यात्रा करें क्योंकि हम इन क्लासिक तकनीकों को दुनिया के विभिन्न क्षेत्रों के डेटा पर लागू करते हैं। प्रत्येक पाठ में प्री- और पोस्ट-लेसन क्विज़, पाठ पूरा करने के लिए लिखित निर्देश, एक समाधान, एक असाइनमेंट और बहुत कुछ शामिल है। हमारा प्रोजेक्ट-आधारित शिक्षण दृष्टिकोण आपको निर्माण करते हुए सीखने की अनुमति देता है, जो नई कौशलों को बनाए रखने का एक सिद्ध तरीका है। +हमारे साथ दुनिया भर की यात्रा करें क्योंकि हम इन क्लासिक तकनीकों को दुनिया के विभिन्न क्षेत्रों के डेटा पर लागू करते हैं। प्रत्येक पाठ में पूर्व और पश्चात क्विज़, लिखित निर्देश, समाधान, असाइनमेंट और बहुत कुछ शामिल है। हमारा परियोजना-आधारित शिक्षण तरीका आपको निर्माण करते हुए सीखने की अनुमति देता है, जो नई कौशलों को 'टिकाने' का एक सिद्ध तरीका है। -**✍️ हमारे लेखकों को हार्दिक धन्यवाद** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu और Amy Boyd +**✍️ हमारे लेखकों को हार्दिक धन्यवाद** जेन लूपर, स्टीफन हाउएल, फ्रांसेस्का लाज़्ज़ेरी, टोमॉमी इमुरा, कैसी ब्रेवियू, दिमित्री सोश्निकोव, क्रिस नोरिंग, अनिर्बान मुखर्जी, ऑर्नेला अल्टुनयान, रूथ याकुबु और एमी बॉयड -**🎨 हमारे चित्रकारों को भी धन्यवाद** Tomomi Imura, Dasani Madipalli, और Jen Looper +**🎨 हमारे चित्रकारों को भी धन्यवाद** टोमॉमी इमुरा, दासानी मडिपल्ली, और जेन लूपर -**🙏 विशेष धन्यवाद 🙏 हमारे Microsoft Student Ambassador लेखकों, समीक्षकों और सामग्री योगदानकर्ताओं को**, विशेष रूप से Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, और Snigdha Agarwal +**🙏 विशेष धन्यवाद 🙏 हमारे Microsoft Student Ambassador लेखकों, समीक्षकों, और सामग्री योगदानकर्ताओं को**, विशेष रूप से ऋषित डागली, मुहम्मद साकिब खान इनान, रोहन राज, अलेक्जेंड्रु पेट्रेस्कु, अभिषेक जायसवाल, नवरिन तबस्सुम, इओन सामुइला, और स्निग्धा अग्रवाल -**🤩 अतिरिक्त आभार Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, और Vidushi Gupta को हमारे R पाठों के लिए!** +**🤩 अतिरिक्त आभार Microsoft Student Ambassadors एरिक वांजाउ, जसलीन संधि, और विदुषी गुप्ता को हमारे R पाठों के लिए!** -# शुरुआत कैसे करें +# शुरूआत इन चरणों का पालन करें: -1. **भंडार को फोर्क करें**: इस पृष्ठ के शीर्ष-दाएं कोने पर "Fork" बटन पर क्लिक करें। -2. **भंडार को क्लोन करें**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +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) +> [इस कोर्स के लिए सभी अतिरिक्त संसाधन हमारे Microsoft Learn संग्रह में पाएँ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **मदद चाहिए?** हमारे [समस्या निवारण गाइड](TROUBLESHOOTING.md) को देखें, जिसमें स्थापना, सेटअप और पाठ चलाने से संबंधित सामान्य समस्याओं के समाधान दिए गए हैं। +> 🔧 **मदद चाहिए?** सामान्य इंस्टॉलेशन, सेटअप, और पाठ चलाने की समस्याओं के समाधान के लिए हमारे [Troubleshooting Guide](TROUBLESHOOTING.md) को देखें। -**[छात्रों](https://aka.ms/student-page)**, इस पाठ्यक्रम का उपयोग करने के लिए, पूरे रिपॉजिटरी को अपने GitHub खाते में फोर्क करें और अभ्यासों को स्वयं या समूह के साथ पूरा करें: +**[छात्रों](https://aka.ms/student-page)**, इस पाठ्यक्रम का उपयोग करने के लिए, पूरे रिपॉजिटरी को अपने GitHub खाते में फोर्क करें और अभ्यास स्वयं या समूह के साथ पूरा करें: -- एक प्री-लेक्चर क्विज़ से शुरू करें। -- लेक्चर पढ़ें और गतिविधियों को पूरा करें, प्रत्येक ज्ञान जांच पर रुकें और चिंतन करें। -- पाठों को समझकर प्रोजेक्ट बनाने का प्रयास करें, समाधान कोड चलाने के बजाय; हालांकि वह कोड प्रत्येक प्रोजेक्ट-आधारित पाठ के `/solution` फ़ोल्डरों में उपलब्ध है। +- प्री-लेक्चर क्विज़ से शुरू करें। +- व्याख्यान पढ़ें और गतिविधियाँ पूरी करें, प्रत्येक ज्ञान जांच पर रुककर और सोचकर। +- समाधान कोड चलाने के बजाय पाठों को समझकर परियोजनाएँ बनाने का प्रयास करें; हालांकि वह कोड प्रत्येक परियोजना-उन्मुख पाठ में `/solution` फ़ोल्डर में उपलब्ध है। - पोस्ट-लेक्चर क्विज़ लें। -- चुनौती को पूरा करें। -- असाइनमेंट को पूरा करें। -- एक पाठ समूह पूरा करने के बाद, [डिस्कशन बोर्ड](https://github.com/microsoft/ML-For-Beginners/discussions) पर जाएं और "जोर से सीखें" द्वारा उपयुक्त PAT रूब्रिक भरें। 'PAT' एक प्रगति मूल्यांकन उपकरण है जो एक रूब्रिक है जिसे आप अपनी सीखने को आगे बढ़ाने के लिए भरते हैं। आप अन्य PATs पर प्रतिक्रिया भी दे सकते हैं ताकि हम एक साथ सीख सकें। +- चुनौती पूरी करें। +- असाइनमेंट पूरा करें। +- एक पाठ समूह पूरा करने के बाद, [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) पर जाएं और उपयुक्त PAT रूब्रिक भरकर "जोर से सीखें"। 'PAT' एक प्रगति मूल्यांकन उपकरण है जिसे आप अपनी सीख को आगे बढ़ाने के लिए भरते हैं। आप अन्य PATs पर प्रतिक्रिया भी दे सकते हैं ताकि हम साथ में सीख सकें। -> आगे की पढ़ाई के लिए, हम इन [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) मॉड्यूल और लर्निंग पाथ्स का अनुसरण करने की सिफारिश करते हैं। +> आगे अध्ययन के लिए, हम इन [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) मॉड्यूल और लर्निंग पाथ का पालन करने की सलाह देते हैं। -**शिक्षकों**, हमने इस पाठ्यक्रम का उपयोग करने के तरीके पर [कुछ सुझाव शामिल किए हैं](for-teachers.md)। +**शिक्षकों**, हमने इस पाठ्यक्रम का उपयोग करने के लिए [कुछ सुझाव](for-teachers.md) शामिल किए हैं। --- ## वीडियो वॉकथ्रू -कुछ पाठ छोटे वीडियो के रूप में उपलब्ध हैं। आप इन सभी को पाठों में इनलाइन पा सकते हैं, या [Microsoft Developer YouTube चैनल पर ML for Beginners प्लेलिस्ट](https://aka.ms/ml-beginners-videos) पर जाकर नीचे दी गई छवि पर क्लिक कर सकते हैं। +कुछ पाठ छोटे वीडियो के रूप में उपलब्ध हैं। आप इन्हें पाठों के भीतर पा सकते हैं, या [Microsoft Developer YouTube चैनल पर ML for Beginners प्लेलिस्ट](https://aka.ms/ml-beginners-videos) में नीचे दी गई छवि पर क्लिक करके देख सकते हैं। -[![शुरुआती लोगों के लिए ML बैनर](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.hi.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.hi.png)](https://aka.ms/ml-beginners-videos) --- ## टीम से मिलें -[![प्रोमो वीडियो](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **Gif द्वारा** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 ऊपर दी गई छवि पर क्लिक करें इस प्रोजेक्ट और इसे बनाने वाले लोगों के बारे में वीडियो देखने के लिए! +> 🎥 परियोजना और इसे बनाने वाले लोगों के बारे में वीडियो के लिए ऊपर की छवि पर क्लिक करें! --- -## शिक्षण दृष्टिकोण +## शिक्षण पद्धति -हमने इस पाठ्यक्रम को बनाते समय दो शिक्षण सिद्धांतों को चुना है: यह सुनिश्चित करना कि यह **प्रोजेक्ट-आधारित** है और इसमें **बार-बार क्विज़** शामिल हैं। इसके अलावा, इस पाठ्यक्रम में इसे एकजुटता देने के लिए एक सामान्य **थीम** है। +इस पाठ्यक्रम का निर्माण करते समय हमने दो शिक्षण सिद्धांत चुने हैं: यह सुनिश्चित करना कि यह हाथों-हाथ **परियोजना-आधारित** हो और इसमें **बार-बार क्विज़** शामिल हों। इसके अलावा, इस पाठ्यक्रम में एक सामान्य **थीम** है जो इसे एकजुटता प्रदान करती है। -सुनिश्चित करके कि सामग्री प्रोजेक्ट्स के साथ संरेखित है, प्रक्रिया छात्रों के लिए अधिक आकर्षक बन जाती है और अवधारणाओं की अवधारण को बढ़ाया जाएगा। इसके अलावा, कक्षा से पहले एक कम-दांव वाला क्विज़ छात्र के इरादे को एक विषय सीखने की ओर सेट करता है, जबकि कक्षा के बाद दूसरा क्विज़ आगे की अवधारण सुनिश्चित करता है। यह पाठ्यक्रम लचीला और मजेदार होने के लिए डिज़ाइन किया गया था और इसे पूरे या आंशिक रूप से लिया जा सकता है। प्रोजेक्ट छोटे से शुरू होते हैं और 12-सप्ताह के चक्र के अंत तक धीरे-धीरे जटिल हो जाते हैं। इस पाठ्यक्रम में ML के वास्तविक दुनिया के अनुप्रयोगों पर एक परिशिष्ट भी शामिल है, जिसका उपयोग अतिरिक्त क्रेडिट के रूप में या चर्चा के आधार के रूप में किया जा सकता है। +सामग्री को परियोजनाओं के साथ संरेखित करके, प्रक्रिया छात्रों के लिए अधिक आकर्षक बनती है और अवधारणाओं का प्रतिधारण बढ़ता है। इसके अलावा, कक्षा से पहले एक कम-दांव वाला क्विज़ छात्र के सीखने के इरादे को सेट करता है, जबकि कक्षा के बाद दूसरा क्विज़ और अधिक प्रतिधारण सुनिश्चित करता है। यह पाठ्यक्रम लचीला और मजेदार होने के लिए डिज़ाइन किया गया है और इसे पूरी तरह या आंशिक रूप से लिया जा सकता है। परियोजनाएँ छोटी शुरू होती हैं और 12-सप्ताह के चक्र के अंत तक धीरे-धीरे जटिल हो जाती हैं। इस पाठ्यक्रम में ML के वास्तविक दुनिया के अनुप्रयोगों पर एक पोस्टस्क्रिप्ट भी शामिल है, जिसे अतिरिक्त क्रेडिट के रूप में या चर्चा के आधार के रूप में उपयोग किया जा सकता है। -> हमारा [आचार संहिता](CODE_OF_CONDUCT.md), [योगदान](CONTRIBUTING.md), [अनुवाद](TRANSLATIONS.md), और [समस्या निवारण](TROUBLESHOOTING.md) दिशानिर्देश खोजें। हम आपकी रचनात्मक प्रतिक्रिया का स्वागत करते हैं! +> हमारे [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** फ़ाइल का प्रतिनिधित्व करता है जिसे `Markdown दस्तावेज़` में `कोड चंक्स` (R या अन्य भाषाओं के) और एक `YAML हेडर` (जो आउटपुट को प्रारूपित करने के तरीके को गाइड करता है जैसे PDF) के एम्बेडिंग के रूप में परिभाषित किया जा सकता है। इस प्रकार, यह डेटा साइंस के लिए एक उत्कृष्ट लेखन ढांचा के रूप में कार्य करता है क्योंकि यह आपको अपने कोड, उसके आउटपुट और अपने विचारों को एक साथ लिखने की अनुमति देता है। इसके अलावा, R Markdown दस्तावेज़ों को PDF, HTML, या Word जैसे आउटपुट प्रारूपों में प्रस्तुत किया जा सकता है। +> **भाषाओं के बारे में एक नोट**: ये पाठ मुख्य रूप से Python में लिखे गए हैं, लेकिन कई R में भी उपलब्ध हैं। R पाठ पूरा करने के लिए, `/solution` फ़ोल्डर में जाएं और R पाठ खोजें। इनमें .rmd एक्सटेंशन होता है जो एक **R Markdown** फ़ाइल को दर्शाता है जिसे सरलता से `कोड चंक्स` (R या अन्य भाषाओं के) और एक `YAML हेडर` (जो आउटपुट जैसे PDF को फॉर्मेट करने का मार्गदर्शन करता है) को `Markdown दस्तावेज़` में एम्बेड करने के रूप में परिभाषित किया जा सकता है। इस प्रकार, यह डेटा साइंस के लिए एक आदर्श लेखन ढांचा है क्योंकि यह आपको अपना कोड, उसका आउटपुट, और अपने विचार Markdown में लिखने की अनुमति देता है। इसके अलावा, R Markdown दस्तावेज़ों को PDF, HTML, या Word जैसे आउटपुट प्रारूपों में रेंडर किया जा सकता है। -> **क्विज़ के बारे में एक नोट**: सभी क्विज़ [क्विज़ ऐप फ़ोल्डर](../../quiz-app) में शामिल हैं, कुल 52 क्विज़, प्रत्येक में तीन प्रश्न। वे पाठों के भीतर से लिंक किए गए हैं लेकिन क्विज़ ऐप को स्थानीय रूप से चलाया जा सकता है; `quiz-app` फ़ोल्डर में निर्देशों का पालन करें इसे स्थानीय रूप से होस्ट करने या Azure पर तैनात करने के लिए। +> **क्विज़ के बारे में एक नोट**: सभी क्विज़ [Quiz App फ़ोल्डर](../../quiz-app) में हैं, कुल 52 क्विज़ जिनमें से प्रत्येक में तीन प्रश्न हैं। ये पाठों से लिंक किए गए हैं लेकिन क्विज़ ऐप को स्थानीय रूप से चलाया जा सकता है; स्थानीय होस्टिंग या Azure पर तैनाती के लिए `quiz-app` फ़ोल्डर में निर्देशों का पालन करें। | पाठ संख्या | विषय | पाठ समूह | सीखने के उद्देश्य | लिंक्ड पाठ | लेखक | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | मशीन लर्निंग का परिचय | [Introduction](1-Introduction/README.md) | मशीन लर्निंग के पीछे के बुनियादी सिद्धांतों को जानें | [Lesson](1-Introduction/1-intro-to-ML/README.md) | मुहम्मद | -| 02 | मशीन लर्निंग का इतिहास | [Introduction](1-Introduction/README.md) | इस क्षेत्र के पीछे के इतिहास को जानें | [Lesson](1-Introduction/2-history-of-ML/README.md) | जेन और एमी | -| 03 | निष्पक्षता और मशीन लर्निंग | [Introduction](1-Introduction/README.md) | मशीन लर्निंग मॉडल बनाते और लागू करते समय छात्रों को निष्पक्षता के महत्वपूर्ण दार्शनिक मुद्दों पर विचार क्यों करना चाहिए? | [Lesson](1-Introduction/3-fairness/README.md) | तोमोमी | -| 04 | मशीन लर्निंग के लिए तकनीकें | [Introduction](1-Introduction/README.md) | मशीन लर्निंग शोधकर्ता मॉडल बनाने के लिए कौन-कौन सी तकनीकें उपयोग करते हैं? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | क्रिस और जेन | -| 05 | रिग्रेशन का परिचय | [Regression](2-Regression/README.md) | रिग्रेशन मॉडल के लिए Python और Scikit-learn के साथ शुरुआत करें | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | जेन • एरिक वानजाउ | -| 06 | उत्तरी अमेरिकी कद्दू की कीमतें 🎃 | [Regression](2-Regression/README.md) | मशीन लर्निंग के लिए डेटा को विज़ुअलाइज़ और साफ करें | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | जेन • एरिक वानजाउ | -| 07 | उत्तरी अमेरिकी कद्दू की कीमतें 🎃 | [Regression](2-Regression/README.md) | रेखीय और बहुपद रिग्रेशन मॉडल बनाएं | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | जेन और दिमित्री • एरिक वानजाउ | -| 08 | उत्तरी अमेरिकी कद्दू की कीमतें 🎃 | [Regression](2-Regression/README.md) | लॉजिस्टिक रिग्रेशन मॉडल बनाएं | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | जेन • एरिक वानजाउ | +| 01 | मशीन लर्निंग का परिचय | [Introduction](1-Introduction/README.md) | मशीन लर्निंग के मूलभूत सिद्धांत सीखें | [Lesson](1-Introduction/1-intro-to-ML/README.md) | मुहम्मद | +| 02 | मशीन लर्निंग का इतिहास | [Introduction](1-Introduction/README.md) | इस क्षेत्र के पीछे का इतिहास जानें | [Lesson](1-Introduction/2-history-of-ML/README.md) | जेन और एमी | +| 03 | निष्पक्षता और मशीन लर्निंग | [Introduction](1-Introduction/README.md) | मशीन लर्निंग मॉडल बनाने और लागू करने के दौरान छात्रों को निष्पक्षता से जुड़े महत्वपूर्ण दार्शनिक मुद्दों पर क्या विचार करना चाहिए? | [Lesson](1-Introduction/3-fairness/README.md) | टोमोमी | +| 04 | मशीन लर्निंग के तकनीक | [Introduction](1-Introduction/README.md) | मशीन लर्निंग शोधकर्ता मॉडल बनाने के लिए कौन-कौन सी तकनीकें उपयोग करते हैं? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | क्रिस और जेन | +| 05 | रिग्रेशन का परिचय | [Regression](2-Regression/README.md) | रिग्रेशन मॉडल के लिए पाइथन और स्किकिट-लर्न के साथ शुरुआत करें | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | जेन • एरिक वांजाउ | +| 06 | उत्तरी अमेरिकी कद्दू की कीमतें 🎃 | [Regression](2-Regression/README.md) | मशीन लर्निंग के लिए डेटा को विज़ुअलाइज़ और साफ़ करें | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | जेन • एरिक वांजाउ | +| 07 | उत्तरी अमेरिकी कद्दू की कीमतें 🎃 | [Regression](2-Regression/README.md) | रैखिक और बहुपद रिग्रेशन मॉडल बनाएं | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | जेन और दिमित्री • एरिक वांजाउ | +| 08 | उत्तरी अमेरिकी कद्दू की कीमतें 🎃 | [Regression](2-Regression/README.md) | लॉजिस्टिक रिग्रेशन मॉडल बनाएं | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | जेन • एरिक वांजाउ | | 09 | एक वेब ऐप 🔌 | [Web App](3-Web-App/README.md) | अपने प्रशिक्षित मॉडल का उपयोग करने के लिए एक वेब ऐप बनाएं | [Python](3-Web-App/1-Web-App/README.md) | जेन | -| 10 | वर्गीकरण का परिचय | [Classification](4-Classification/README.md) | अपने डेटा को साफ करें, तैयार करें और विज़ुअलाइज़ करें; वर्गीकरण का परिचय | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | जेन और कैसी • एरिक वानजाउ | -| 11 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | वर्गीकरणकर्ताओं का परिचय | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | जेन और कैसी • एरिक वानजाउ | -| 12 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | अधिक वर्गीकरणकर्ता | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | जेन और कैसी • एरिक वानजाउ | -| 13 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | अपने मॉडल का उपयोग करके एक अनुशंसा वेब ऐप बनाएं | [Python](4-Classification/4-Applied/README.md) | जेन | -| 14 | क्लस्टरिंग का परिचय | [Clustering](5-Clustering/README.md) | अपने डेटा को साफ करें, तैयार करें और विज़ुअलाइज़ करें; क्लस्टरिंग का परिचय | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | जेन • एरिक वानजाउ | -| 15 | नाइजीरियाई संगीत स्वादों की खोज 🎧 | [Clustering](5-Clustering/README.md) | K-Means क्लस्टरिंग विधि का अन्वेषण करें | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | जेन • एरिक वानजाउ | -| 16 | प्राकृतिक भाषा प्रसंस्करण का परिचय ☕️ | [Natural language processing](6-NLP/README.md) | एक साधारण बॉट बनाकर NLP के बारे में मूल बातें जानें | [Python](6-NLP/1-Introduction-to-NLP/README.md) | स्टीफन | -| 17 | सामान्य NLP कार्य ☕️ | [Natural language processing](6-NLP/README.md) | भाषा संरचनाओं से निपटने के दौरान आवश्यक सामान्य कार्यों को समझकर अपने NLP ज्ञान को गहरा करें | [Python](6-NLP/2-Tasks/README.md) | स्टीफन | +| 10 | वर्गीकरण का परिचय | [Classification](4-Classification/README.md) | अपने डेटा को साफ़ करें, तैयार करें, और विज़ुअलाइज़ करें; वर्गीकरण का परिचय | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | जेन और कैसी • एरिक वांजाउ | +| 11 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | वर्गीकरणकर्ताओं का परिचय | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | जेन और कैसी • एरिक वांजाउ | +| 12 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | और वर्गीकरणकर्ता | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | जेन और कैसी • एरिक वांजाउ | +| 13 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | अपने मॉडल का उपयोग करके एक सिफारिश वेब ऐप बनाएं | [Python](4-Classification/4-Applied/README.md) | जेन | +| 14 | क्लस्टरिंग का परिचय | [Clustering](5-Clustering/README.md) | अपने डेटा को साफ़ करें, तैयार करें, और विज़ुअलाइज़ करें; क्लस्टरिंग का परिचय | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | जेन • एरिक वांजाउ | +| 15 | नाइजीरियाई संगीत स्वादों का अन्वेषण 🎧 | [Clustering](5-Clustering/README.md) | K-Means क्लस्टरिंग विधि का अन्वेषण करें | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | जेन • एरिक वांजाउ | +| 16 | प्राकृतिक भाषा प्रसंस्करण का परिचय ☕️ | [Natural language processing](6-NLP/README.md) | एक सरल बॉट बनाकर NLP के मूल बातें सीखें | [Python](6-NLP/1-Introduction-to-NLP/README.md) | स्टीफन | +| 17 | सामान्य NLP कार्य ☕️ | [Natural language processing](6-NLP/README.md) | भाषा संरचनाओं से निपटने के लिए आवश्यक सामान्य कार्यों को समझकर अपने NLP ज्ञान को गहरा करें | [Python](6-NLP/2-Tasks/README.md) | स्टीफन | | 18 | अनुवाद और भावना विश्लेषण ♥️ | [Natural language processing](6-NLP/README.md) | जेन ऑस्टेन के साथ अनुवाद और भावना विश्लेषण | [Python](6-NLP/3-Translation-Sentiment/README.md) | स्टीफन | | 19 | यूरोप के रोमांटिक होटल ♥️ | [Natural language processing](6-NLP/README.md) | होटल समीक्षाओं के साथ भावना विश्लेषण 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | स्टीफन | | 20 | यूरोप के रोमांटिक होटल ♥️ | [Natural language processing](6-NLP/README.md) | होटल समीक्षाओं के साथ भावना विश्लेषण 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | स्टीफन | -| 21 | समय श्रृंखला पूर्वानुमान का परिचय | [Time series](7-TimeSeries/README.md) | समय श्रृंखला पूर्वानुमान का परिचय | [Python](7-TimeSeries/1-Introduction/README.md) | फ्रांसेस्का | -| 22 | ⚡️ विश्व ऊर्जा उपयोग ⚡️ - ARIMA के साथ समय श्रृंखला पूर्वानुमान | [Time series](7-TimeSeries/README.md) | ARIMA के साथ समय श्रृंखला पूर्वानुमान | [Python](7-TimeSeries/2-ARIMA/README.md) | फ्रांसेस्का | -| 23 | ⚡️ विश्व ऊर्जा उपयोग ⚡️ - SVR के साथ समय श्रृंखला पूर्वानुमान | [Time series](7-TimeSeries/README.md) | सपोर्ट वेक्टर रिग्रेसर के साथ समय श्रृंखला पूर्वानुमान | [Python](7-TimeSeries/3-SVR/README.md) | अनिर्बान | -| 24 | सुदृढीकरण सीखने का परिचय | [Reinforcement learning](8-Reinforcement/README.md) | Q-Learning के साथ सुदृढीकरण सीखने का परिचय | [Python](8-Reinforcement/1-QLearning/README.md) | दिमित्री | -| 25 | पीटर को भेड़िये से बचाने में मदद करें! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | सुदृढीकरण सीखने का जिम | [Python](8-Reinforcement/2-Gym/README.md) | दिमित्री | -| Postscript | वास्तविक दुनिया के मशीन लर्निंग परिदृश्य और अनुप्रयोग | [ML in the Wild](9-Real-World/README.md) | क्लासिकल मशीन लर्निंग के दिलचस्प और खुलासा करने वाले वास्तविक दुनिया के अनुप्रयोग | [Lesson](9-Real-World/1-Applications/README.md) | टीम | -| Postscript | RAI डैशबोर्ड का उपयोग करके मशीन लर्निंग में मॉडल डिबगिंग | [ML in the Wild](9-Real-World/README.md) | जिम्मेदार AI डैशबोर्ड घटकों का उपयोग करके मशीन लर्निंग में मॉडल डिबगिंग | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | रूथ याकुब | +| 21 | टाइम सीरीज पूर्वानुमान का परिचय | [Time series](7-TimeSeries/README.md) | टाइम सीरीज पूर्वानुमान का परिचय | [Python](7-TimeSeries/1-Introduction/README.md) | फ्रांसेस्का | +| 22 | ⚡️ विश्व विद्युत उपयोग ⚡️ - ARIMA के साथ टाइम सीरीज पूर्वानुमान | [Time series](7-TimeSeries/README.md) | ARIMA के साथ टाइम सीरीज पूर्वानुमान | [Python](7-TimeSeries/2-ARIMA/README.md) | फ्रांसेस्का | +| 23 | ⚡️ विश्व विद्युत उपयोग ⚡️ - SVR के साथ टाइम सीरीज पूर्वानुमान | [Time series](7-TimeSeries/README.md) | सपोर्ट वेक्टर रिग्रेशन के साथ टाइम सीरीज पूर्वानुमान | [Python](7-TimeSeries/3-SVR/README.md) | अनिर्बान | +| 24 | सुदृढ़ीकरण सीखने का परिचय | [Reinforcement learning](8-Reinforcement/README.md) | Q-लर्निंग के साथ सुदृढ़ीकरण सीखने का परिचय | [Python](8-Reinforcement/1-QLearning/README.md) | दिमित्री | +| 25 | पीटर को भेड़िये से बचाने में मदद करें! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | सुदृढ़ीकरण सीखने का जिम | [Python](8-Reinforcement/2-Gym/README.md) | दिमित्री | +| पोस्टस्क्रिप्ट | वास्तविक दुनिया के ML परिदृश्य और अनुप्रयोग | [ML in the Wild](9-Real-World/README.md) | क्लासिकल मशीन लर्निंग के दिलचस्प और प्रकट करने वाले वास्तविक दुनिया के अनुप्रयोग | [Lesson](9-Real-World/1-Applications/README.md) | टीम | +| पोस्टस्क्रिप्ट | RAI डैशबोर्ड का उपयोग करके ML में मॉडल डिबगिंग | [ML in the Wild](9-Real-World/README.md) | जिम्मेदार AI डैशबोर्ड घटकों का उपयोग करके मशीन लर्निंग में मॉडल डिबगिंग | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | रुथ याकुबु | -> [इस कोर्स के लिए सभी अतिरिक्त संसाधन हमारे Microsoft Learn संग्रह में खोजें](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [इस कोर्स के लिए हमारे 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`। +आप [Docsify](https://docsify.js.org/#/) का उपयोग करके इस दस्तावेज़ को ऑफलाइन चला सकते हैं। इस रिपॉजिटरी को फोर्क करें, अपने स्थानीय मशीन पर [Docsify इंस्टॉल करें](https://docsify.js.org/#/quickstart), और फिर इस रिपॉजिटरी के रूट फोल्डर में `docsify serve` टाइप करें। वेबसाइट आपके लोकलहोस्ट पर पोर्ट 3000 पर सर्व की जाएगी: `localhost:3000`। -## PDFs +## पीडीएफ -लिंक्स के साथ पाठ्यक्रम का पीडीएफ [यहां](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) खोजें। +लिंक के साथ पाठ्यक्रम का पीडीएफ [यहाँ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) देखें। -## 🎒 अन्य कोर्स + +## 🎒 अन्य कोर्स हमारी टीम अन्य कोर्स भी बनाती है! देखें: + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) [![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -170,38 +178,39 @@ Microsoft के क्लाउड एडवोकेट्स आपको ** [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### जनरेटिव AI सीरीज + +### Generative AI Series [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - -### मुख्य शिक्षण -[![शुरुआती के लिए मशीन लर्निंग](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![शुरुआती के लिए डेटा साइंस](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![शुरुआती के लिए आर्टिफिशियल इंटेलिजेंस](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![शुरुआती के लिए साइबर सुरक्षा](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![शुरुआती के लिए वेब डेवलपमेंट](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![शुरुआती के लिए IoT](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![शुरुआती के लिए XR डेवलपमेंट](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +### कोर लर्निंग +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### कोपिलट सीरीज +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### कोपायलट सीरीज -[![AI पेयर्ड प्रोग्रामिंग के लिए कोपायलट](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![C#/.NET के लिए कोपायलट](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![कोपायलट एडवेंचर](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## मदद प्राप्त करना +## सहायता प्राप्त करना -यदि आप कहीं अटक जाते हैं या AI ऐप्स बनाने के बारे में कोई सवाल है, तो अन्य शिक्षार्थियों और अनुभवी डेवलपर्स के साथ चर्चा में शामिल हों। यह एक सहायक समुदाय है जहाँ सवालों का स्वागत है और ज्ञान स्वतंत्र रूप से साझा किया जाता है। +यदि आप अटक जाते हैं या AI ऐप्स बनाने के बारे में कोई प्रश्न है। MCP के बारे में चर्चा में साथी शिक्षार्थियों और अनुभवी डेवलपर्स के साथ जुड़ें। यह एक सहायक समुदाय है जहाँ प्रश्न स्वागत योग्य हैं और ज्ञान स्वतंत्र रूप से साझा किया जाता है। [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -यदि आपको उत्पाद से संबंधित फीडबैक देना है या निर्माण के दौरान कोई त्रुटि आती है, तो यहाँ जाएँ: +यदि आपके पास उत्पाद प्रतिक्रिया है या निर्माण के दौरान त्रुटियाँ हैं तो जाएँ: [![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) @@ -209,5 +218,5 @@ Microsoft के क्लाउड एडवोकेट्स आपको ** **अस्वीकरण**: -यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। +इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में ही प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सलाह दी जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hk/README.md b/translations/hk/README.md index 2703bf165..c77761834 100644 --- a/translations/hk/README.md +++ b/translations/hk/README.md @@ -1,167 +1,175 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 多語言支援 +### 🌐 多語言支援 -#### 透過 GitHub Action 支援(自動化及保持最新) +#### 透過 GitHub Action 支援(自動化且持續更新) - -[阿拉伯文](../ar/README.md) | [孟加拉文](../bn/README.md) | [保加利亞文](../bg/README.md) | [緬甸文](../my/README.md) | [中文(簡體)](../zh/README.md) | [中文(繁體,香港)](./README.md) | [中文(繁體,澳門)](../mo/README.md) | [中文(繁體,台灣)](../tw/README.md) | [克羅地亞文](../hr/README.md) | [捷克文](../cs/README.md) | [丹麥文](../da/README.md) | [荷蘭文](../nl/README.md) | [愛沙尼亞文](../et/README.md) | [芬蘭文](../fi/README.md) | [法文](../fr/README.md) | [德文](../de/README.md) | [希臘文](../el/README.md) | [希伯來文](../he/README.md) | [印地文](../hi/README.md) | [匈牙利文](../hu/README.md) | [印尼文](../id/README.md) | [意大利文](../it/README.md) | [日文](../ja/README.md) | [韓文](../ko/README.md) | [立陶宛文](../lt/README.md) | [馬來文](../ms/README.md) | [馬拉地文](../mr/README.md) | [尼泊爾文](../ne/README.md) | [尼日利亞皮欽語](../pcm/README.md) | [挪威文](../no/README.md) | [波斯文(法爾西)](../fa/README.md) | [波蘭文](../pl/README.md) | [葡萄牙文(巴西)](../br/README.md) | [葡萄牙文(葡萄牙)](../pt/README.md) | [旁遮普文(古木基文)](../pa/README.md) | [羅馬尼亞文](../ro/README.md) | [俄文](../ru/README.md) | [塞爾維亞文(西里爾文)](../sr/README.md) | [斯洛伐克文](../sk/README.md) | [斯洛文尼亞文](../sl/README.md) | [西班牙文](../es/README.md) | [斯瓦希里文](../sw/README.md) | [瑞典文](../sv/README.md) | [他加祿文(菲律賓文)](../tl/README.md) | [泰米爾文](../ta/README.md) | [泰文](../th/README.md) | [土耳其文](../tr/README.md) | [烏克蘭文](../uk/README.md) | [烏爾都文](../ur/README.md) | [越南文](../vi/README.md) - + +[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)](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + -#### 加入我們的社群 +#### 加入我們的社群 -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -我們正在進行一個 AI 學習系列,了解更多並加入我們的 [Learn with AI Series](https://aka.ms/learnwithai/discord),活動日期為 2025 年 9 月 18 日至 30 日。你將學到使用 GitHub Copilot 進行數據科學的技巧和秘訣。 +我們正在進行 Discord 的 AI 學習系列,了解更多並於 2025 年 9 月 18 日至 30 日加入我們,請訪問 [Learn with AI Series](https://aka.ms/learnwithai/discord)。你將獲得使用 GitHub Copilot 進行資料科學的技巧與秘訣。 -![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.hk.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.hk.png) -# 初學者的機器學習課程 +# 初學者機器學習課程 -> 🌍 跟隨我們的腳步,透過世界文化探索機器學習 🌍 +> 🌍 透過世界文化環遊世界,一起探索機器學習 🌍 -Microsoft 的雲端倡導者很高興提供一個為期 12 週、共 26 節課的課程,內容全是關於 **機器學習**。在這個課程中,你將學習一些被稱為 **經典機器學習** 的技術,主要使用 Scikit-learn 作為庫,並避免深度學習(深度學習內容在我們的 [AI for Beginners 課程](https://aka.ms/ai4beginners) 中涵蓋)。你也可以將這些課程與我們的 ['Data Science for Beginners' 課程](https://aka.ms/ds4beginners) 搭配使用! +微軟的 Cloud Advocates 很高興提供一個為期 12 週、共 26 課的 **機器學習** 課程。在這個課程中,你將學習有時被稱為 **經典機器學習** 的內容,主要使用 Scikit-learn 函式庫,並避開深度學習,深度學習則在我們的 [AI for Beginners 課程](https://aka.ms/ai4beginners) 中涵蓋。你也可以搭配我們的 ['Data Science for Beginners' 課程](https://aka.ms/ds4beginners) 一起學習! -跟隨我們的腳步,探索世界各地的數據,應用這些經典技術。每節課都包括課前和課後測驗、完成課程的書面指導、解決方案、作業等。我們的專案式教學法讓你在建構中學習,這是一種能讓新技能更容易記住的有效方法。 +跟我們一起環遊世界,將這些經典技術應用於來自世界各地的資料。每堂課包含課前與課後測驗、書面教學、解答、作業等。我們的專案導向教學法讓你在實作中學習,是新技能扎根的有效方式。 -**✍️ 特別感謝我們的作者** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu 和 Amy Boyd +**✍️ 衷心感謝我們的作者** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu 和 Amy Boyd -**🎨 也感謝我們的插畫家** Tomomi Imura、Dasani Madipalli 和 Jen Looper +**🎨 也感謝我們的插畫師** Tomomi Imura、Dasani Madipalli 和 Jen Looper -**🙏 特別感謝 🙏 我們的 Microsoft 學生大使作者、審稿人和內容貢獻者**,尤其是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila 和 Snigdha Agarwal +**🙏 特別感謝 🙏 微軟學生大使作者、審稿人及內容貢獻者**,特別是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila 和 Snigdha Agarwal -**🤩 額外感謝 Microsoft 學生大使 Eric Wanjau、Jasleen Sondhi 和 Vidushi Gupta 為我們的 R 課程所做的貢獻!** +**🤩 額外感謝微軟學生大使 Eric Wanjau、Jasleen Sondhi 和 Vidushi Gupta 為我們的 R 課程貢獻!** -# 開始使用 +# 開始使用 -請按照以下步驟: -1. **Fork 此儲存庫**:點擊此頁面右上角的 "Fork" 按鈕。 -2. **Clone 此儲存庫**:`git clone https://github.com/microsoft/ML-For-Beginners.git` +請依照以下步驟: +1. **Fork 此儲存庫**:點擊本頁右上角的「Fork」按鈕。 +2. **Clone 此儲存庫**: `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) +> [在我們的 Microsoft Learn 集合中找到本課程的所有額外資源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **需要幫助嗎?** 查看我們的 [故障排除指南](TROUBLESHOOTING.md),以解決安裝、設置和運行課程的常見問題。 +> 🔧 **需要幫助?** 請查看我們的 [疑難排解指南](TROUBLESHOOTING.md),解決安裝、設定及執行課程時的常見問題。 -**[學生](https://aka.ms/student-page)**,要使用此課程,請將整個儲存庫 fork 到你的 GitHub 帳戶,並自行或與小組一起完成練習: +**[學生](https://aka.ms/student-page)**,使用此課程時,請將整個儲存庫 fork 到你自己的 GitHub 帳號,並自行或與團隊完成練習: -- 從課前測驗開始。 -- 閱讀課程並完成活動,在每次知識檢查時停下來反思。 -- 嘗試理解課程內容來完成專案,而不是直接運行解決方案代碼;不過,解決方案代碼可在每個專案式課程的 `/solution` 資料夾中找到。 -- 完成課後測驗。 -- 完成挑戰。 -- 完成作業。 -- 完成一組課程後,訪問 [討論板](https://github.com/microsoft/ML-For-Beginners/discussions),並透過填寫適當的 PAT 評估表來 "大聲學習"。PAT 是一種進度評估工具,透過填寫評估表來進一步學習。你也可以對其他 PAT 進行回應,讓我們一起學習。 +- 從課前測驗開始。 +- 閱讀課程並完成活動,每個知識檢查時暫停並反思。 +- 嘗試理解課程內容並自行建立專案,而非直接執行解答程式碼;不過解答程式碼可在每個專案導向課程的 `/solution` 資料夾中找到。 +- 進行課後測驗。 +- 完成挑戰。 +- 完成作業。 +- 完成一組課程後,請造訪 [討論區](https://github.com/microsoft/ML-For-Beginners/discussions) 並透過填寫相應的 PAT 評分表「大聲學習」。PAT 是一種進度評估工具,透過填寫評分表促進學習。你也可以對其他人的 PAT 作出回應,大家一起學習。 -> 為了進一步學習,我們建議跟隨這些 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 模組和學習路徑。 +> 若要進一步學習,我們建議跟隨這些 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 模組與學習路徑。 -**教師們**,我們提供了一些 [建議](for-teachers.md) 來幫助你使用此課程。 +**教師**,我們提供了 [一些使用此課程的建議](for-teachers.md)。 ---- +--- -## 影片教學 +## 影片導覽 -部分課程提供短片形式的教學影片。你可以在課程中找到這些影片,或者點擊下方圖片前往 [Microsoft Developer YouTube 頻道的 ML for Beginners 播放列表](https://aka.ms/ml-beginners-videos)。 +部分課程有短片形式的影片。你可以在課程中內嵌觀看,或在 [Microsoft Developer YouTube 頻道的 ML for Beginners 播放清單](https://aka.ms/ml-beginners-videos) 中觀看,點擊下方圖片即可。 -[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.hk.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.hk.png)](https://aka.ms/ml-beginners-videos) ---- +--- -## 認識團隊 +## 團隊介紹 -[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif 作者** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif 製作者** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 點擊上方圖片觀看關於此專案及創作者的影片! +> 🎥 點擊上方圖片觀看關於此專案及創作者的影片! ---- +--- -## 教學法 +## 教學法 -我們在設計此課程時選擇了兩個教學原則:確保它是 **專案式** 並且包含 **頻繁測驗**。此外,此課程還有一個共同的 **主題**,使其更具連貫性。 +我們在設計此課程時選擇了兩個教學原則:確保它是動手做的 **專案導向**,並包含 **頻繁的測驗**。此外,課程有一個共同的 **主題** 以增強連貫性。 -透過確保內容與專案相符,學習過程對學生來說更具吸引力,並能增強概念的記憶。此外,課前的低壓測驗能讓學生專注於學習主題,而課後的測驗則能進一步加強記憶。此課程設計靈活有趣,可以完整學習或部分學習。專案從簡單開始,並在 12 週的課程結束時逐漸變得複雜。此課程還包括一個關於機器學習的真實應用的附錄,可作為額外學分或討論的基礎。 +透過確保內容與專案對齊,讓學生更投入學習,並加強概念的記憶。此外,課前的低壓力測驗設定學生的學習目標,課後的測驗則促進進一步記憶。此課程設計靈活且有趣,可整體或部分學習。專案從簡單開始,至 12 週結束時逐漸複雜。課程還包含機器學習在現實世界應用的後記,可作為額外學分或討論基礎。 -> 查看我們的 [行為準則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)、[翻譯指南](TRANSLATIONS.md) 和 [故障排除指南](TROUBLESHOOTING.md)。我們歡迎你的建設性反饋! +> 請參閱我們的 [行為準則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)、[翻譯指南](TRANSLATIONS.md) 及 [疑難排解](TROUBLESHOOTING.md) 指南。我們歡迎你的建設性回饋! -## 每節課包括 +## 每堂課包含 -- 可選的手繪筆記 -- 可選的補充影片 -- 教學影片(部分課程提供) -- [課前暖身測驗](https://ff-quizzes.netlify.app/en/ml/) -- 書面課程 -- 專案式課程的逐步指導 -- 知識檢查 -- 挑戰 -- 補充閱讀 -- 作業 -- [課後測驗](https://ff-quizzes.netlify.app/en/ml/) +- 選擇性手繪筆記 +- 選擇性補充影片 +- 影片導覽(部分課程) +- [課前暖身測驗](https://ff-quizzes.netlify.app/en/ml/) +- 書面課程 +- 專案導向課程的逐步專案建置指南 +- 知識檢查 +- 挑戰 +- 補充閱讀 +- 作業 +- [課後測驗](https://ff-quizzes.netlify.app/en/ml/) -> **關於語言的說明**:這些課程主要使用 Python,但部分課程也提供 R。要完成 R 課程,請前往 `/solution` 資料夾並尋找 R 課程。這些課程包含 `.rmd` 擴展名,代表 **R Markdown** 文件,簡單來說就是在 `Markdown 文件` 中嵌入 `代碼塊`(R 或其他語言)和 `YAML 標頭`(指導如何格式化輸出,例如 PDF)。因此,它是一個出色的數據科學創作框架,因為它允許你將代碼、輸出和想法結合在一起,並以 Markdown 的形式記錄下來。此外,R Markdown 文件可以渲染為 PDF、HTML 或 Word 等輸出格式。 +> **關於語言的說明**:這些課程主要以 Python 撰寫,但許多也有 R 版本。要完成 R 課程,請前往 `/solution` 資料夾尋找 R 課程。它們包含 .rmd 副檔名,代表 **R Markdown** 檔案,簡單來說是將 `程式碼區塊`(R 或其他語言)與 `YAML 標頭`(指示如何格式化輸出,如 PDF)嵌入 `Markdown 文件`。因此,它是資料科學的優秀撰寫框架,允許你結合程式碼、輸出與想法,並以 Markdown 撰寫。此外,R Markdown 文件可輸出為 PDF、HTML 或 Word 等格式。 -> **關於測驗的說明**:所有測驗都包含在 [Quiz App 資料夾](../../quiz-app) 中,共有 52 個測驗,每個測驗包含三個問題。測驗在課程中有連結,但測驗應用程式可以在本地運行;請按照 `quiz-app` 資料夾中的指示在本地或部署到 Azure。 +> **關於測驗的說明**:所有測驗皆包含在 [Quiz App 資料夾](../../quiz-app),共 52 個測驗,每個有三題。它們在課程中有連結,但測驗應用程式可在本地執行;請依照 `quiz-app` 資料夾中的說明在本地架設或部署至 Azure。 -| 課程編號 | 主題 | 課程分組 | 學習目標 | 連結課程 | 作者 | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 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 和 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 和 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 和 Dmitry • Eric Wanjau | +| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 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 和 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 和 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 和 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) | 使用 Jane Austen 的作品進行翻譯和情感分析 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 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-均值聚類方法 | [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) | 使用 Jane Austen 進行翻譯與情感分析 | [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-Learning 進行強化學習簡介 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 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-Learning 進行強化學習入門 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | | 25 | 幫助 Peter 避開狼!🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 強化學習 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | 真實世界的機器學習場景和應用 | [ML in the Wild](9-Real-World/README.md) | 有趣且啟發性的經典機器學習真實世界應用 | [Lesson](9-Real-World/1-Applications/README.md) | Team | -| Postscript | 使用 RAI 儀表板進行機器學習模型調試 | [ML in the Wild](9-Real-World/README.md) | 使用負責任的 AI 儀表板組件進行機器學習模型調試 | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +| 後記 | 真實世界的機器學習場景與應用 | [ML in the Wild](9-Real-World/README.md) | 傳統機器學習有趣且具啟發性的真實世界應用 | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| 後記 | 使用 RAI 儀表板進行機器學習模型除錯 | [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) +> [在我們的 Microsoft Learn 集合中找到此課程的所有額外資源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -## 離線訪問 +## 離線存取 -你可以使用 [Docsify](https://docsify.js.org/#/) 離線運行此文檔。Fork 此 repo,然後在你的本地機器上 [安裝 Docsify](https://docsify.js.org/#/quickstart),接著在此 repo 的根目錄中輸入 `docsify serve`。網站將在你的本地端口 3000 上提供服務:`localhost:3000`。 +你可以使用 [Docsify](https://docsify.js.org/#/) 離線運行此文件。Fork 此倉庫,在你的本地機器上[安裝 Docsify](https://docsify.js.org/#/quickstart),然後在此倉庫的根目錄輸入 `docsify serve`。網站將在本地主機的 3000 端口提供服務:`localhost:3000`。 -## PDFs +## PDF + +在[這裡](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)找到帶有連結的課程 PDF。 -在 [這裡](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) 找到帶有鏈接的課程 PDF。 ## 🎒 其他課程 -我們的團隊還製作了其他課程!查看以下內容: +我們團隊還製作其他課程!請查看: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -170,7 +178,7 @@ Microsoft 的雲端倡導者很高興提供一個為期 12 週、共 26 節課 [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### 生成式 AI 系列 [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) @@ -178,36 +186,37 @@ Microsoft 的雲端倡導者很高興提供一個為期 12 週、共 26 節課 [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### 核心學習 -[![ML 初學者](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![數據科學初學者](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI 初學者](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![網絡安全初學者](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![網頁開發初學者](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT 初學者](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR 開發初學者](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Copilot 系列 +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot 系列 -[![Copilot AI 配對編程](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot 冒險](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## 尋求幫助 +## 尋求協助 -如果你遇到困難或有關於建立 AI 應用程式的問題,可以加入其他學習者和有經驗的開發者的討論。這是一個支持性的社群,歡迎提問並自由分享知識。 +如果你遇到困難或對建立 AI 應用程式有任何疑問,歡迎加入其他學習者和經驗豐富的開發者,一同參與 MCP 的討論。這是一個支持性的社群,歡迎提問並自由分享知識。 -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -如果你有產品反饋或在開發過程中遇到錯誤,請訪問: +如果你在開發過程中有產品反饋或遇到錯誤,請造訪: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **免責聲明**: -此文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件為權威來源。如涉及關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 +本文件由 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於確保準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或誤釋承擔責任。 \ No newline at end of file diff --git a/translations/hr/README.md b/translations/hr/README.md index 9bee1f955..c02e1278e 100644 --- a/translations/hr/README.md +++ b/translations/hr/README.md @@ -1,214 +1,222 @@ -[![GitHub licenca](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub suradnici](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub problemi](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub zahtjevi za povlačenje](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PR-ovi dobrodošli](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub promatrači](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub vilice](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub zvjezdice](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Podrška za više jezika +### 🌐 Podrška za više jezika -#### Podržano putem GitHub Action (Automatizirano i uvijek ažurirano) +#### Podržano putem GitHub Action (Automatizirano i uvijek ažurno) -[Arapski](../ar/README.md) | [Bengalski](../bn/README.md) | [Bugarski](../bg/README.md) | [Burmanski (Mjanmar)](../my/README.md) | [Kineski (pojednostavljeni)](../zh/README.md) | [Kineski (tradicionalni, Hong Kong)](../hk/README.md) | [Kineski (tradicionalni, Makao)](../mo/README.md) | [Kineski (tradicionalni, Tajvan)](../tw/README.md) | [Hrvatski](./README.md) | [Češki](../cs/README.md) | [Danski](../da/README.md) | [Nizozemski](../nl/README.md) | [Estonski](../et/README.md) | [Finski](../fi/README.md) | [Francuski](../fr/README.md) | [Njemački](../de/README.md) | [Grčki](../el/README.md) | [Hebrejski](../he/README.md) | [Hindski](../hi/README.md) | [Mađarski](../hu/README.md) | [Indonezijski](../id/README.md) | [Talijanski](../it/README.md) | [Japanski](../ja/README.md) | [Korejski](../ko/README.md) | [Litvanski](../lt/README.md) | [Malajski](../ms/README.md) | [Marathi](../mr/README.md) | [Nepalski](../ne/README.md) | [Nigerijski pidžin](../pcm/README.md) | [Norveški](../no/README.md) | [Perzijski (Farsi)](../fa/README.md) | [Poljski](../pl/README.md) | [Portugalski (Brazil)](../br/README.md) | [Portugalski (Portugal)](../pt/README.md) | [Pandžapski (Gurmukhi)](../pa/README.md) | [Rumunjski](../ro/README.md) | [Ruski](../ru/README.md) | [Srpski (ćirilica)](../sr/README.md) | [Slovački](../sk/README.md) | [Slovenski](../sl/README.md) | [Španjolski](../es/README.md) | [Svahili](../sw/README.md) | [Švedski](../sv/README.md) | [Tagalog (Filipinski)](../tl/README.md) | [Tamilski](../ta/README.md) | [Tajlandski](../th/README.md) | [Turski](../tr/README.md) | [Ukrajinski](../uk/README.md) | [Urdu](../ur/README.md) | [Vijetnamski](../vi/README.md) +[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](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) -#### Pridružite se našoj zajednici +#### Pridružite se našoj zajednici -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Imamo seriju učenja s AI-jem na Discordu, saznajte više i pridružite nam se na [Learn with AI Series](https://aka.ms/learnwithai/discord) od 18. do 30. rujna 2025. Dobit ćete savjete i trikove za korištenje GitHub Copilota za Data Science. +Imamo tekuću Discord seriju "Uči s AI", saznajte više i pridružite nam se na [Learn with AI Series](https://aka.ms/learnwithai/discord) od 18. do 30. rujna 2025. Dobit ćete savjete i trikove za korištenje GitHub Copilota za Data Science. -![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.hr.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.hr.png) -# Strojno učenje za početnike - Kurikulum +# Strojno učenje za početnike - Nastavni plan -> 🌍 Putujte svijetom dok istražujemo strojno učenje kroz svjetske kulture 🌍 +> 🌍 Putujte svijetom dok istražujemo Strojno učenje kroz svjetske kulture 🌍 -Cloud Advocates u Microsoftu s ponosom nude 12-tjedni, 26-lekcijski kurikulum o **strojnom učenju**. U ovom kurikulumu naučit ćete o onome što se ponekad naziva **klasično strojno učenje**, koristeći prvenstveno Scikit-learn kao biblioteku i izbjegavajući duboko učenje, koje je pokriveno u našem [AI za početnike kurikulumu](https://aka.ms/ai4beginners). Uparite ove lekcije s našim kurikulumom ['Data Science za početnike'](https://aka.ms/ds4beginners), također! +Cloud Advocates u Microsoftu s veseljem nude 12-tjedni, 26-lekcijski nastavni plan posvećen **Strojnom učenju**. U ovom nastavnom planu naučit ćete o onome što se ponekad naziva **klasično strojnim učenjem**, koristeći prvenstveno Scikit-learn kao biblioteku i izbjegavajući duboko učenje, koje je obrađeno u našem [nastavnom planu AI za početnike](https://aka.ms/ai4beginners). Uparite ove lekcije s našim ['Data Science za početnike' nastavnim planom](https://aka.ms/ds4beginners)! -Putujte s nama svijetom dok primjenjujemo ove klasične tehnike na podatke iz mnogih dijelova svijeta. Svaka lekcija uključuje kvizove prije i nakon lekcije, pisane upute za dovršavanje lekcije, rješenje, zadatak i još mnogo toga. Naša metodologija temeljena na projektima omogućuje vam učenje dok gradite, što je dokazano učinkovit način za usvajanje novih vještina. +Putujte s nama svijetom dok primjenjujemo ove klasične tehnike na podatke iz mnogih dijelova svijeta. Svaka lekcija uključuje kviz prije i poslije lekcije, pisane upute za dovršetak lekcije, rješenje, zadatak i još mnogo toga. Naša pedagoška metoda temeljena na projektima omogućuje vam učenje kroz izgradnju, što je dokazani način da nove vještine "ostanu". -**✍️ Veliko hvala našim autorima** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu i Amy Boyd +**✍️ Srdačna zahvala našim autorima** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu i Amy Boyd -**🎨 Također hvala našim ilustratorima** Tomomi Imura, Dasani Madipalli i Jen Looper +**🎨 Zahvala i našim ilustratorima** Tomomi Imura, Dasani Madipalli i Jen Looper -**🙏 Posebna zahvala 🙏 našim Microsoft Student Ambassador autorima, recenzentima i suradnicima na sadržaju**, posebno Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila i Snigdha Agarwal +**🙏 Posebna zahvala 🙏 našim Microsoft Student Ambassador autorima, recenzentima i suradnicima sadržaja**, posebno Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila i Snigdha Agarwal -**🤩 Posebna zahvalnost Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi i Vidushi Gupta za naše R lekcije!** +**🤩 Posebna zahvalnost Microsoft Student Ambassadorima Ericu Wanjauu, Jasleen Sondhiju i Vidushi Gupti za naše R lekcije!** -# Početak +# Početak rada -Slijedite ove korake: -1. **Forkajte repozitorij**: Kliknite na gumb "Fork" u gornjem desnom kutu ove stranice. -2. **Klonirajte repozitorij**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Slijedite ove korake: +1. **Forkajte repozitorij**: Kliknite na gumb "Fork" u gornjem desnom kutu ove stranice. +2. **Klonirajte repozitorij**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [pronađite sve dodatne resurse za ovaj tečaj u našoj Microsoft Learn kolekciji](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [pronađite sve dodatne resurse za ovaj tečaj u našoj Microsoft Learn kolekciji](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +> 🔧 **Trebate pomoć?** Pogledajte naš [Vodič za rješavanje problema](TROUBLESHOOTING.md) za rješenja uobičajenih problema s instalacijom, postavljanjem i izvođenjem lekcija. -> 🔧 **Trebate pomoć?** Pogledajte naš [Vodič za rješavanje problema](TROUBLESHOOTING.md) za rješenja uobičajenih problema s instalacijom, postavljanjem i izvođenjem lekcija. -**[Studenti](https://aka.ms/student-page)**, za korištenje ovog kurikuluma, forkajte cijeli repo na svoj GitHub račun i dovršite vježbe sami ili u grupi: +**[Studenti](https://aka.ms/student-page)**, za korištenje ovog nastavnog plana, forkajte cijeli repozitorij na svoj GitHub račun i dovršite vježbe sami ili u grupi: -- Započnite s kvizom prije predavanja. -- Pročitajte predavanje i dovršite aktivnosti, zaustavljajući se i razmišljajući na svakom provjeravanju znanja. -- Pokušajte stvoriti projekte razumijevajući lekcije umjesto pokretanja koda rješenja; međutim, taj kod je dostupan u `/solution` mapama u svakoj lekciji temeljenoj na projektima. -- Riješite kviz nakon predavanja. -- Dovršite izazov. -- Dovršite zadatak. -- Nakon završetka grupe lekcija, posjetite [Diskusijsku ploču](https://github.com/microsoft/ML-For-Beginners/discussions) i "učite naglas" ispunjavanjem odgovarajuće PAT rubrike. 'PAT' je alat za procjenu napretka koji je rubrika koju ispunjavate kako biste dodatno unaprijedili svoje učenje. Također možete reagirati na druge PAT-ove kako bismo učili zajedno. +- Započnite s kvizom prije predavanja. +- Pročitajte predavanje i dovršite aktivnosti, zaustavljajući se i razmišljajući na svakom provjeravanju znanja. +- Pokušajte sami kreirati projekte razumijevanjem lekcija, a ne samo pokretanjem rješenja; međutim, taj kod je dostupan u mapama `/solution` u svakoj lekciji usmjerenoj na projekt. +- Polažite kviz nakon predavanja. +- Dovršite izazov. +- Dovršite zadatak. +- Nakon dovršetka grupe lekcija, posjetite [Diskusijsku ploču](https://github.com/microsoft/ML-For-Beginners/discussions) i "učite naglas" ispunjavanjem odgovarajuće PAT ljestvice. 'PAT' je alat za procjenu napretka koji ispunjavate kako biste unaprijedili svoje učenje. Također možete reagirati na druge PAT-ove kako bismo učili zajedno. -> Za daljnje učenje, preporučujemo praćenje ovih [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modula i putanja učenja. +> Za daljnje učenje preporučujemo praćenje ovih [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modula i putanja učenja. -**Nastavnici**, uključili smo [neke prijedloge](for-teachers.md) o tome kako koristiti ovaj kurikulum. +**Nastavnici**, uključili smo [neke prijedloge](for-teachers.md) o tome kako koristiti ovaj nastavni plan. --- -## Video vodiči +## Video vodiči -Neke od lekcija dostupne su kao kratki videozapisi. Sve ih možete pronaći unutar lekcija ili na [ML za početnike playlisti na Microsoft Developer YouTube kanalu](https://aka.ms/ml-beginners-videos) klikom na sliku ispod. +Neke lekcije dostupne su kao kratki videozapisi. Sve ih možete pronaći u lekcijama ili na [ML for Beginners playlisti na Microsoft Developer YouTube kanalu](https://aka.ms/ml-beginners-videos) klikom na sliku ispod. -[![ML za početnike banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.hr.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.hr.png)](https://aka.ms/ml-beginners-videos) --- -## Upoznajte tim +## Upoznajte tim -[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif by** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif autor** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Kliknite na sliku iznad za video o projektu i ljudima koji su ga stvorili! +> 🎥 Kliknite na gornju sliku za video o projektu i ljudima koji su ga stvorili! --- -## Pedagogija - -Odabrali smo dva pedagoška načela pri izradi ovog kurikuluma: osigurati da je praktičan **temeljen na projektima** i da uključuje **česte kvizove**. Osim toga, ovaj kurikulum ima zajedničku **temu** kako bi mu dao koheziju. - -Osiguravanjem da sadržaj odgovara projektima, proces postaje zanimljiviji za studente, a zadržavanje koncepata se povećava. Osim toga, kviz s niskim ulogom prije predavanja usmjerava namjeru studenta prema učenju teme, dok drugi kviz nakon predavanja osigurava daljnje zadržavanje. Ovaj kurikulum je dizajniran da bude fleksibilan i zabavan te se može uzeti u cijelosti ili djelomično. Projekti započinju malim koracima i postaju sve složeniji do kraja 12-tjednog ciklusa. Ovaj kurikulum također uključuje dodatak o stvarnim primjenama strojnog učenja, koji se može koristiti kao dodatni zadatak ili kao osnova za raspravu. - -> Pronađite naš [Kodeks ponašanja](CODE_OF_CONDUCT.md), [Doprinos](CONTRIBUTING.md), [Prijevod](TRANSLATIONS.md) i [Rješavanje problema](TROUBLESHOOTING.md) smjernice. Pozdravljamo vaše konstruktivne povratne informacije! - -## Svaka lekcija uključuje - -- opcionalni sketchnote -- opcionalni dodatni video -- video vodič (samo neke lekcije) -- [kviz za zagrijavanje prije predavanja](https://ff-quizzes.netlify.app/en/ml/) -- pisanu lekciju -- za lekcije temeljene na projektima, vodiče korak po korak kako izraditi projekt -- provjere znanja -- izazov -- dodatno čitanje -- zadatak -- [kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/) - -> **Napomena o jezicima**: Ove lekcije su prvenstveno napisane u Pythonu, ali mnoge su također dostupne u R-u. Za dovršavanje R lekcije, idite u `/solution` mapu i potražite R lekcije. One uključuju .rmd ekstenziju koja predstavlja **R Markdown** datoteku koja se može jednostavno definirati kao ugradnja `code chunks` (R ili drugih jezika) i `YAML header` (koji vodi kako formatirati izlaze poput PDF-a) u `Markdown dokument`. Kao takva, služi kao primjeran okvir za autorstvo u znanosti o podacima jer vam omogućuje kombiniranje vašeg koda, njegovog izlaza i vaših misli omogućujući vam da ih zapišete u Markdownu. Štoviše, R Markdown dokumenti mogu se prikazati u izlaznim formatima poput PDF-a, HTML-a ili Worda. - -> **Napomena o kvizovima**: Svi kvizovi nalaze se u [Quiz App folder](../../quiz-app), ukupno 52 kviza s po tri pitanja. Povezani su unutar lekcija, ali aplikacija za kviz može se pokrenuti lokalno; slijedite upute u `quiz-app` mapi za lokalno hostanje ili implementaciju na Azure. - -| Broj lekcije | Tema | Grupiranje lekcija | Ciljevi učenja | Povezana lekcija | Autor | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Uvod u strojno učenje | [Uvod](1-Introduction/README.md) | Naučite osnovne pojmove strojnog učenja | [Lekcija](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Povijest strojnog učenja | [Uvod](1-Introduction/README.md) | Naučite povijest ovog područja | [Lekcija](1-Introduction/2-history-of-ML/README.md) | Jen i Amy | -| 03 | Pravednost i strojno učenje | [Uvod](1-Introduction/README.md) | Koja su važna filozofska pitanja o pravednosti koja studenti trebaju razmotriti pri izradi i primjeni ML modela? | [Lekcija](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Tehnike strojnog učenja | [Uvod](1-Introduction/README.md) | Koje tehnike istraživači koriste za izradu ML modela? | [Lekcija](1-Introduction/4-techniques-of-ML/README.md) | Chris i Jen | -| 05 | Uvod u regresiju | [Regresija](2-Regression/README.md) | Počnite s Pythonom i Scikit-learnom za regresijske modele | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Cijene bundeva u Sjevernoj Americi 🎃 | [Regresija](2-Regression/README.md) | Vizualizirajte i očistite podatke za pripremu za ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Cijene bundeva u Sjevernoj Americi 🎃 | [Regresija](2-Regression/README.md) | Izradite linearne i polinomske regresijske modele | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen i Dmitry • Eric Wanjau | -| 08 | Cijene bundeva u Sjevernoj Americi 🎃 | [Regresija](2-Regression/README.md) | Izradite logistički regresijski model | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Web aplikacija 🔌 | [Web aplikacija](3-Web-App/README.md) | Izradite web aplikaciju za korištenje vašeg treniranog modela | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Uvod u klasifikaciju | [Klasifikacija](4-Classification/README.md) | Očistite, pripremite i vizualizirajte svoje podatke; uvod u klasifikaciju | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen i Cassie • Eric Wanjau | -| 11 | Ukusna azijska i indijska kuhinja 🍜 | [Klasifikacija](4-Classification/README.md) | Uvod u klasifikatore | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen i Cassie • Eric Wanjau | -| 12 | Ukusna azijska i indijska kuhinja 🍜 | [Klasifikacija](4-Classification/README.md) | Više klasifikatora | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen i Cassie • Eric Wanjau | -| 13 | Ukusna azijska i indijska kuhinja 🍜 | [Klasifikacija](4-Classification/README.md) | Izradite web aplikaciju preporuka koristeći svoj model | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Uvod u klasteriranje | [Klasteriranje](5-Clustering/README.md) | Očistite, pripremite i vizualizirajte svoje podatke; uvod u klasteriranje | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Istraživanje glazbenih ukusa Nigerije 🎧 | [Klasteriranje](5-Clustering/README.md) | Istražite metodu K-Means klasteriranja | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Uvod u obradu prirodnog jezika ☕️ | [Obrada prirodnog jezika](6-NLP/README.md) | Naučite osnove NLP-a izradom jednostavnog bota | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Uobičajeni NLP zadaci ☕️ | [Obrada prirodnog jezika](6-NLP/README.md) | Produbite svoje znanje o NLP-u razumijevanjem uobičajenih zadataka vezanih uz jezične strukture | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Prijevod i analiza sentimenta ♥️ | [Obrada prirodnog jezika](6-NLP/README.md) | Prijevod i analiza sentimenta s Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantični hoteli Europe ♥️ | [Obrada prirodnog jezika](6-NLP/README.md) | Analiza sentimenta s recenzijama hotela 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantični hoteli Europe ♥️ | [Obrada prirodnog jezika](6-NLP/README.md) | Analiza sentimenta s recenzijama hotela 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Uvod u predviđanje vremenskih serija | [Vremenske serije](7-TimeSeries/README.md) | Uvod u predviđanje vremenskih serija | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Svjetska potrošnja energije ⚡️ - predviđanje s ARIMA | [Vremenske serije](7-TimeSeries/README.md) | Predviđanje vremenskih serija s ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Svjetska potrošnja energije ⚡️ - predviđanje s SVR | [Vremenske serije](7-TimeSeries/README.md) | Predviđanje vremenskih serija s Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Uvod u učenje pojačanjem | [Učenje pojačanjem](8-Reinforcement/README.md) | Uvod u učenje pojačanjem s Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Pomozite Peteru izbjeći vuka! 🐺 | [Učenje pojačanjem](8-Reinforcement/README.md) | Učenje pojačanjem s Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Stvarni scenariji i primjene ML-a | [ML u stvarnom svijetu](9-Real-World/README.md)| Zanimljive i otkrivajuće stvarne primjene klasičnog ML-a | [Lekcija](9-Real-World/1-Applications/README.md) | Tim | -| Postscript | Debugging modela u ML-u pomoću RAI nadzorne ploče | [ML u stvarnom svijetu](9-Real-World/README.md)| Debugging modela u strojnome učenju pomoću komponenti odgovorne AI nadzorne ploče | [Lekcija](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +## Pedagogija + +Odabrali smo dva pedagoška načela prilikom izrade ovog nastavnog plana: osigurati da je praktičan i **temeljen na projektima** te da uključuje **učestale kvizove**. Osim toga, ovaj nastavni plan ima zajedničku **temu** koja mu daje koheziju. + +Osiguravanjem da sadržaj odgovara projektima, proces je zanimljiviji za učenike i povećava zadržavanje koncepata. Također, kviz s niskim ulozima prije nastave postavlja namjeru učenika prema učenju teme, dok drugi kviz nakon nastave osigurava dodatno zadržavanje. Ovaj nastavni plan dizajniran je da bude fleksibilan i zabavan te se može pohađati u cijelosti ili djelomično. Projekti počinju jednostavno i postaju sve složeniji do kraja 12-tjednog ciklusa. Ovaj nastavni plan također uključuje dodatak o stvarnim primjenama strojnog učenja, koji se može koristiti kao dodatni bodovi ili kao osnova za raspravu. + +> Pronađite naše [Pravila ponašanja](CODE_OF_CONDUCT.md), [Doprinos](CONTRIBUTING.md), [Prijevod](TRANSLATIONS.md) i [Vodič za rješavanje problema](TROUBLESHOOTING.md). Dobrodošli su vaši konstruktivni komentari! + +## Svaka lekcija uključuje + +- opcionalnu skicu bilješki +- opcionalni dodatni video +- video vodič (samo neke lekcije) +- [kviz za zagrijavanje prije predavanja](https://ff-quizzes.netlify.app/en/ml/) +- pisanu lekciju +- za lekcije temeljene na projektima, korak-po-korak vodiče za izgradnju projekta +- provjere znanja +- izazov +- dodatno čitanje +- zadatak +- [kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/) + +> **Napomena o jezicima**: Ove lekcije su prvenstveno napisane u Pythonu, ali mnoge su dostupne i u R-u. Za dovršetak R lekcije, idite u mapu `/solution` i potražite R lekcije. One uključuju .rmd ekstenziju koja predstavlja **R Markdown** datoteku, što se može jednostavno definirati kao ugradnja `kodnih blokova` (R ili drugih jezika) i `YAML zaglavlja` (koje vodi kako formatirati izlaze poput PDF-a) u `Markdown dokument`. Kao takav, služi kao izvrstan okvir za pisanje za data science jer vam omogućuje kombiniranje koda, njegovog izlaza i vaših misli pisanjem u Markdownu. Nadalje, R Markdown dokumenti mogu se izvesti u formate poput PDF, HTML ili Word. + +> **Napomena o kvizovima**: Svi kvizovi nalaze se u [Quiz App mapi](../../quiz-app), ukupno 52 kviza s po tri pitanja. Povezani su iz lekcija, ali aplikaciju za kvizove možete pokrenuti lokalno; slijedite upute u mapi `quiz-app` za lokalno hostanje ili implementaciju na Azure. + +| Broj lekcije | Tema | Grupiranje lekcija | Ciljevi učenja | Povezana lekcija | Autor | +| :-----------: | Uvod u strojno učenje | [Introduction](1-Introduction/README.md) | Naučite osnovne pojmove iza strojnog učenja | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Povijest strojnog učenja | [Introduction](1-Introduction/README.md) | Naučite povijest koja stoji iza ovog područja | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Pravednost i strojno učenje | [Introduction](1-Introduction/README.md) | Koja su važna filozofska pitanja o pravednosti koja bi studenti trebali razmotriti pri izgradnji i primjeni ML modela? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Tehnike za strojno učenje | [Introduction](1-Introduction/README.md) | Koje tehnike istraživači strojnog učenja koriste za izgradnju ML modela? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Uvod u regresiju | [Regression](2-Regression/README.md) | Počnite s Pythonom i Scikit-learnom za regresijske modele | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Cijene bundeva u Sjevernoj Americi 🎃 | [Regression](2-Regression/README.md) | Vizualizirajte i očistite podatke u pripremi za ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Cijene bundeva u Sjevernoj Americi 🎃 | [Regression](2-Regression/README.md) | Izgradite linearne i polinomne regresijske modele | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Cijene bundeva u Sjevernoj Americi 🎃 | [Regression](2-Regression/README.md) | Izgradite logistički regresijski model | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Web aplikacija 🔌 | [Web App](3-Web-App/README.md) | Izgradite web aplikaciju za korištenje vašeg istreniranog modela | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Uvod u klasifikaciju | [Classification](4-Classification/README.md) | Očistite, pripremite i vizualizirajte svoje podatke; uvod u klasifikaciju | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Ukusne azijske i indijske kuhinje 🍜 | [Classification](4-Classification/README.md) | Uvod u klasifikatore | [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 | Ukusne azijske i indijske kuhinje 🍜 | [Classification](4-Classification/README.md) | Više klasifikatora | [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 | Ukusne azijske i indijske kuhinje 🍜 | [Classification](4-Classification/README.md) | Izgradite preporučiteljsku web aplikaciju koristeći svoj model | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Uvod u klasteriranje | [Clustering](5-Clustering/README.md) | Očistite, pripremite i vizualizirajte svoje podatke; uvod u klasteriranje | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Istraživanje nigerijskih glazbenih ukusa 🎧 | [Clustering](5-Clustering/README.md) | Istražite K-Means metodu klasteriranja | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Uvod u obradu prirodnog jezika ☕️ | [Natural language processing](6-NLP/README.md) | Naučite osnove NLP-a izgradnjom jednostavnog bota | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Uobičajeni NLP zadaci ☕️ | [Natural language processing](6-NLP/README.md) | Produbite svoje znanje NLP-a razumijevanjem uobičajenih zadataka potrebnih pri radu s jezičnim strukturama | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Prevođenje i analiza sentimenta ♥️ | [Natural language processing](6-NLP/README.md) | Prevođenje i analiza sentimenta s Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantični hoteli Europe ♥️ | [Natural language processing](6-NLP/README.md) | Analiza sentimenta s recenzijama hotela 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantični hoteli Europe ♥️ | [Natural language processing](6-NLP/README.md) | Analiza sentimenta s recenzijama hotela 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Uvod u predviđanje vremenskih serija | [Time series](7-TimeSeries/README.md) | Uvod u predviđanje vremenskih serija | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Potrošnja električne energije u svijetu ⚡️ - predviđanje vremenskih serija s ARIMA | [Time series](7-TimeSeries/README.md) | Predviđanje vremenskih serija s ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Potrošnja električne energije u svijetu ⚡️ - predviđanje vremenskih serija s SVR | [Time series](7-TimeSeries/README.md) | Predviđanje vremenskih serija s regresorom potpornih vektora | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Uvod u učenje pojačanjem | [Reinforcement learning](8-Reinforcement/README.md) | Uvod u učenje pojačanjem s Q-Learningom | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Pomozi Petru izbjeći vuka! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Učenje pojačanjem u Gymu | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Scenariji i primjene strojnog učenja u stvarnom svijetu | [ML in the Wild](9-Real-World/README.md) | Zanimljive i otkrivajuće primjene klasičnog strojnog učenja u stvarnom svijetu | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Otklanjanje pogrešaka modela u strojnog učenju korištenjem RAI nadzorne ploče | [ML in the Wild](9-Real-World/README.md) | Otklanjanje pogrešaka modela u strojnog učenju korištenjem komponenti Responsible AI nadzorne ploče | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [pronađite sve dodatne resurse za ovaj tečaj u našoj Microsoft Learn kolekciji](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -## Offline pristup +## Pristup izvan mreže -Možete koristiti ovu dokumentaciju offline pomoću [Docsify](https://docsify.js.org/#/). Forkajte ovaj repo, [instalirajte Docsify](https://docsify.js.org/#/quickstart) na svom lokalnom računalu, a zatim u glavnoj mapi ovog repozitorija upišite `docsify serve`. Web stranica će biti dostupna na portu 3000 na vašem localhostu: `localhost:3000`. +Ovu dokumentaciju možete pokrenuti izvan mreže koristeći [Docsify](https://docsify.js.org/#/). Forkajte ovaj repozitorij, [instalirajte Docsify](https://docsify.js.org/#/quickstart) na svoj lokalni stroj, a zatim u korijenskoj mapi ovog repozitorija upišite `docsify serve`. Web stranica će biti dostupna na portu 3000 na vašem localhostu: `localhost:3000`. ## PDF-ovi -Pronađite PDF kurikuluma s poveznicama [ovdje](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Pronađite pdf nastavnog plana s poveznicama [ovdje](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Ostali tečajevi +## 🎒 Ostali tečajevi Naš tim proizvodi i druge tečajeve! Pogledajte: -### Azure / Edge / MCP / Agenti -[![AZD za početnike](https://img.shields.io/badge/AZD%20za%20početnike-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI za početnike](https://img.shields.io/badge/Edge%20AI%20za%20početnike-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP za početnike](https://img.shields.io/badge/MCP%20za%20početnike-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI agenti za početnike](https://img.shields.io/badge/AI%20agenti%20za%20početnike-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j za početnike](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js za početnike](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Generativni AI serijal -[![Generativni AI za početnike](https://img.shields.io/badge/Generativni%20AI%20za%20početnike-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generativni AI (.NET)](https://img.shields.io/badge/Generativni%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generativni AI (Java)](https://img.shields.io/badge/Generativni%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generativni AI (JavaScript)](https://img.shields.io/badge/Generativni%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agenti +[![AZD za početnike](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI za početnike](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP za početnike](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI agenti za početnike](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Serija generativne umjetne inteligencije +[![Generativna AI za početnike](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generativna AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generativni AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generativni AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +--- + ### Osnovno učenje -[![ML za početnike](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science za početnike](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI za početnike](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Kibernetička sigurnost za početnike](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web razvoj za početnike](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT za početnike](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR razvoj za početnike](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML za početnike](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science za početnike](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI za početnike](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Kibernetička sigurnost za početnike](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web razvoj za početnike](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT za početnike](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR razvoj za početnike](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Copilot serija +[![Copilot za AI u parnom programiranju](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot za C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot avantura](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot Serija -[![Copilot za AI programiranje u paru](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot za C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Avantura](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Dobivanje pomoći +## Dobivanje pomoći -Ako zapnete ili imate pitanja o izradi AI aplikacija, pridružite se zajednici učenika i iskusnih programera u raspravama o MCP-u. To je podržavajuća zajednica gdje su pitanja dobrodošla, a znanje se slobodno dijeli. +Ako zapnete ili imate pitanja o izradi AI aplikacija. Pridružite se drugim učenicima i iskusnim programerima u raspravama o MCP-u. To je podržavajuća zajednica gdje su pitanja dobrodošla i znanje se slobodno dijeli. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Ako imate povratne informacije o proizvodu ili naiđete na greške tijekom izrade, posjetite: +Ako imate povratne informacije o proizvodu ili greške tijekom izrade posjetite: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Odricanje od odgovornosti**: -Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati mjerodavnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za bilo kakve nesporazume ili pogrešne interpretacije proizašle iz korištenja ovog prijevoda. +**Odricanje od odgovornosti**: +Ovaj dokument preveden je pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo postići točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni ljudski prijevod. Ne snosimo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hu/README.md b/translations/hu/README.md index 6e2337364..2be051adf 100644 --- a/translations/hu/README.md +++ b/translations/hu/README.md @@ -1,214 +1,223 @@ -[![GitHub licenc](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub közreműködők](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub problémák](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-kérések](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PR-k Üdvözölve](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub figyelők](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forkok](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub csillagok](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Többnyelvű támogatás -#### GitHub Action által támogatott (Automatikus és mindig naprakész) +#### GitHub Action segítségével támogatott (Automatizált és Mindig Naprakész) -[Arab](../ar/README.md) | [Bengáli](../bn/README.md) | [Bolgár](../bg/README.md) | [Burmai (Mianmar)](../my/README.md) | [Kínai (Egyszerűsített)](../zh/README.md) | [Kínai (Hagyományos, Hongkong)](../hk/README.md) | [Kínai (Hagyományos, Makaó)](../mo/README.md) | [Kínai (Hagyományos, Tajvan)](../tw/README.md) | [Horvát](../hr/README.md) | [Cseh](../cs/README.md) | [Dán](../da/README.md) | [Holland](../nl/README.md) | [Észt](../et/README.md) | [Finn](../fi/README.md) | [Francia](../fr/README.md) | [Német](../de/README.md) | [Görög](../el/README.md) | [Héber](../he/README.md) | [Hindi](../hi/README.md) | [Magyar](./README.md) | [Indonéz](../id/README.md) | [Olasz](../it/README.md) | [Japán](../ja/README.md) | [Koreai](../ko/README.md) | [Litván](../lt/README.md) | [Maláj](../ms/README.md) | [Marathi](../mr/README.md) | [Nepáli](../ne/README.md) | [Nigériai Pidgin](../pcm/README.md) | [Norvég](../no/README.md) | [Perzsa (Fárszi)](../fa/README.md) | [Lengyel](../pl/README.md) | [Portugál (Brazília)](../br/README.md) | [Portugál (Portugália)](../pt/README.md) | [Pandzsábi (Gurmukhi)](../pa/README.md) | [Román](../ro/README.md) | [Orosz](../ru/README.md) | [Szerb (Cirill)](../sr/README.md) | [Szlovák](../sk/README.md) | [Szlovén](../sl/README.md) | [Spanyol](../es/README.md) | [Szuahéli](../sw/README.md) | [Svéd](../sv/README.md) | [Tagalog (Filippínó)](../tl/README.md) | [Tamil](../ta/README.md) | [Thai](../th/README.md) | [Török](../tr/README.md) | [Ukrán](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnámi](../vi/README.md) +[Arab](../ar/README.md) | [Bengáli](../bn/README.md) | [Bolgár](../bg/README.md) | [Burmai (Mianmar)](../my/README.md) | [Kínai (Egyszerűsített)](../zh/README.md) | [Kínai (Hagyományos, Hongkong)](../hk/README.md) | [Kínai (Hagyományos, Makaó)](../mo/README.md) | [Kínai (Hagyományos, Tajvan)](../tw/README.md) | [Horvát](../hr/README.md) | [Cseh](../cs/README.md) | [Dán](../da/README.md) | [Holland](../nl/README.md) | [Észt](../et/README.md) | [Finn](../fi/README.md) | [Francia](../fr/README.md) | [Német](../de/README.md) | [Görög](../el/README.md) | [Héber](../he/README.md) | [Hindi](../hi/README.md) | [Magyar](./README.md) | [Indonéz](../id/README.md) | [Olasz](../it/README.md) | [Japán](../ja/README.md) | [Kannada](../kn/README.md) | [Koreai](../ko/README.md) | [Litván](../lt/README.md) | [Maláj](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepáli](../ne/README.md) | [Nigériai pidgin](../pcm/README.md) | [Norvég](../no/README.md) | [Perzsa (Fárszi)](../fa/README.md) | [Lengyel](../pl/README.md) | [Portugál (Brazília)](../br/README.md) | [Portugál (Portugália)](../pt/README.md) | [Pandzsábi (Gurmukhi)](../pa/README.md) | [Román](../ro/README.md) | [Orosz](../ru/README.md) | [Szerb (Cirill)](../sr/README.md) | [Szlovák](../sk/README.md) | [Szlovén](../sl/README.md) | [Spanyol](../es/README.md) | [Szuahéli](../sw/README.md) | [Svéd](../sv/README.md) | [Tagalog (Filippínó)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Török](../tr/README.md) | [Ukrán](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnami](../vi/README.md) #### Csatlakozz közösségünkhöz [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Van egy Discord tanulási sorozatunk AI-val, tudj meg többet és csatlakozz hozzánk a [Learn with AI Series](https://aka.ms/learnwithai/discord) eseményen 2025. szeptember 18-30. között. Tippeket és trükköket kapsz a GitHub Copilot használatához az adattudomány területén. +Folyamatban van egy Discord „Tanulj az AI-val” sorozatunk, további információkért és csatlakozáshoz látogass el a [Learn with AI Series](https://aka.ms/learnwithai/discord) oldalra 2025. szeptember 18. és 30. között. Tippeket és trükköket kapsz a GitHub Copilot adat tudományi használatához. -![Learn with AI sorozat](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.hu.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.hu.png) -# Gépi tanulás kezdőknek - Tanterv +# Gépi tanulás kezdőknek – Tananyag -> 🌍 Utazz körbe a világon, miközben a gépi tanulást a világ kultúráin keresztül fedezzük fel 🌍 +> 🌍 Utazzunk a világ körül, miközben a gépi tanulást a világ kultúráin keresztül fedezzük fel 🌍 -A Microsoft Cloud Advocates csapata örömmel kínál egy 12 hetes, 26 leckéből álló tantervet, amely teljes egészében a **gépi tanulásról** szól. Ebben a tantervben megismerheted az úgynevezett **klasszikus gépi tanulást**, elsősorban a Scikit-learn könyvtárat használva, elkerülve a mélytanulást, amelyet a [Mesterséges intelligencia kezdőknek tanterv](https://aka.ms/ai4beginners) tárgyal. Párosítsd ezeket a leckéket a ['Adattudomány kezdőknek tanterv'](https://aka.ms/ds4beginners) leckéivel is! +A Microsoft Cloud Advocates örömmel kínál egy 12 hetes, 26 leckéből álló tananyagot, amely a **gépi tanulásról** szól. Ebben a tananyagban megismerkedsz azzal, amit néha **klasszikus gépi tanulásnak** neveznek, elsősorban a Scikit-learn könyvtár használatával, elkerülve a mélytanulást, amelyet a [AI for Beginners tananyagunk](https://aka.ms/ai4beginners) fed le. Párosítsd ezeket a leckéket a ['Data Science for Beginners' tananyagunkkal](https://aka.ms/ds4beginners) is! -Utazz velünk a világ körül, miközben ezeket a klasszikus technikákat alkalmazzuk a világ különböző területeiről származó adatokra. Minden lecke tartalmaz előzetes és utólagos kvízeket, írásos útmutatót a lecke elvégzéséhez, megoldást, feladatot és még sok mást. Projektalapú pedagógiánk lehetővé teszi, hogy tanulás közben építs, ami bizonyítottan segíti az új készségek elsajátítását. +Utazz velünk a világ körül, miközben ezeket a klasszikus technikákat a világ sok területéről származó adatokra alkalmazzuk. Minden lecke tartalmaz elő- és utóteszteket, írásos utasításokat a lecke elvégzéséhez, megoldást, feladatot és még sok mást. Projektalapú oktatásunk lehetővé teszi, hogy tanulj miközben építesz, ami bizonyítottan segíti az új készségek rögzülését. -**✍️ Hálás köszönet szerzőinknek** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu és Amy Boyd +**✍️ Szívből köszönjük szerzőinknek** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu és Amy Boyd **🎨 Köszönet illusztrátorainknak is** Tomomi Imura, Dasani Madipalli és Jen Looper -**🙏 Külön köszönet 🙏 a Microsoft Student Ambassador szerzőknek, lektoroknak és tartalomhozzájárulóknak**, különösen Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila és Snigdha Agarwal +**🙏 Külön köszönet 🙏 Microsoft Hallgatói Nagykövet szerzőinknek, lektorainknak és tartalomközreműködőinknek**, különösen Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila és Snigdha Agarwal -**🤩 Külön köszönet a Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi és Vidushi Gupta számára az R leckékért!** +**🤩 Külön hála Microsoft Hallgatói Nagyköveteknek Eric Wanjau, Jasleen Sondhi és Vidushi Gupta-nak az R leckékért!** # Kezdés Kövesd ezeket a lépéseket: -1. **Forkold a repót**: Kattints az oldal jobb felső sarkában található "Fork" gombra. -2. **Klónozd a repót**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +1. **Forkold a tárat**: Kattints a "Fork" gombra a jobb felső sarokban. +2. **Klónozd a tárat**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [találd meg a kurzushoz tartozó további forrásokat a Microsoft Learn gyűjteményünkben](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [minden további erőforrást megtalálsz ehhez a kurzushoz a Microsoft Learn gyűjteményünkben](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) > 🔧 **Segítségre van szükséged?** Nézd meg a [Hibaelhárítási útmutatónkat](TROUBLESHOOTING.md) a telepítéssel, beállítással és a leckék futtatásával kapcsolatos gyakori problémák megoldásához. -**[Diákok](https://aka.ms/student-page)**, hogy használjátok ezt a tantervet, forkold az egész repót a saját GitHub fiókodba, és végezd el a gyakorlatokat egyedül vagy csoportban: +**[Hallgatók](https://aka.ms/student-page)**, a tananyag használatához forkold a teljes repót a saját GitHub fiókodba, és végezd el a gyakorlatokat egyedül vagy csoportban: -- Kezdd egy előzetes kvízzel. -- Olvasd el az előadást, és végezd el a tevékenységeket, megállva és elgondolkodva minden tudásellenőrzésnél. -- Próbáld meg létrehozni a projekteket a leckék megértésével, ahelyett, hogy a megoldáskódot futtatnád; azonban ez a kód elérhető a `/solution` mappákban minden projektalapú leckénél. -- Töltsd ki az utólagos kvízt. +- Kezdd egy előadás előtti kvízzel. +- Olvasd el az előadást és végezd el a tevékenységeket, minden tudásellenőrzésnél állj meg és gondolkodj el. +- Próbáld meg a projekteket a leckék megértésével elkészíteni, ne csak a megoldó kód futtatásával; a kód azonban elérhető a `/solution` mappákban minden projektorientált leckénél. +- Tedd meg az előadás utáni kvízt. - Teljesítsd a kihívást. - Teljesítsd a feladatot. -- Miután befejeztél egy lecke csoportot, látogasd meg a [Vita fórumot](https://github.com/microsoft/ML-For-Beginners/discussions), és "tanulj hangosan", kitöltve a megfelelő PAT rubrikát. A 'PAT' egy Haladás Értékelő Eszköz, amely egy rubrika, amit kitöltesz a tanulásod elősegítése érdekében. Más PAT-okra is reagálhatsz, hogy együtt tanulhassunk. +- Egy leckecsoport befejezése után látogass el a [Vita fórumra](https://github.com/microsoft/ML-For-Beginners/discussions), és „tanulj hangosan” azzal, hogy kitöltöd a megfelelő PAT értékelőt. A 'PAT' egy Előrehaladási Értékelő Eszköz, amely egy értékelőlap, amit kitöltesz a tanulásod előmozdításához. Más PAT-ekre is reagálhatsz, hogy együtt tanulhassunk. -> További tanulmányokhoz javasoljuk, hogy kövesd ezeket a [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modulokat és tanulási útvonalakat. +> További tanuláshoz ajánljuk ezeket a [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modulokat és tanulási útvonalakat. -**Tanárok**, [néhány javaslatot is mellékeltünk](for-teachers.md) arra vonatkozóan, hogyan használhatjátok ezt a tantervet. +**Tanárok**, [néhány javaslatot is mellékeltünk](for-teachers.md) a tananyag használatához. --- ## Videós bemutatók -Néhány lecke rövid videó formájában is elérhető. Ezeket megtalálod a leckékben, vagy a [ML for Beginners lejátszási listán a Microsoft Developer YouTube csatornán](https://aka.ms/ml-beginners-videos), ha az alábbi képre kattintasz. +Néhány lecke rövid videó formájában is elérhető. Ezeket megtalálod a leckékben beágyazva, vagy a [ML for Beginners lejátszási listán a Microsoft Developer YouTube csatornán](https://aka.ms/ml-beginners-videos) az alábbi képre kattintva. -[![ML kezdőknek banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.hu.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.hu.png)](https://aka.ms/ml-beginners-videos) --- ## Ismerd meg a csapatot -[![Promo videó](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif készítette** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif készítője** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Kattints a fenti képre, hogy megnézd a projektet és az alkotókat bemutató videót! +> 🎥 Kattints a fenti képre a projektről és az alkotókról szóló videóért! --- ## Pedagógia -Két pedagógiai alapelvet választottunk a tanterv kidolgozása során: biztosítani, hogy az **projektalapú** legyen, és hogy **gyakori kvízeket** tartalmazzon. Ezenkívül a tantervnek van egy közös **témája**, amely összefogja. +Két pedagógiai alapelvet választottunk a tananyag építése során: hogy kézzelfogható, **projektalapú** legyen, és hogy tartalmazzon **gyakori kvízeket**. Ezen felül a tananyagnak van egy közös **tematikája**, amely összefogja azt. -Azáltal, hogy a tartalom projektekhez igazodik, a folyamat érdekesebbé válik a diákok számára, és a fogalmak jobban rögzülnek. Ezenkívül egy alacsony tétű kvíz az óra előtt a diák figyelmét a téma tanulására irányítja, míg egy második kvíz az óra után tovább erősíti a tanultakat. Ez a tanterv rugalmas és szórakoztató, és egészében vagy részben is elvégezhető. A projektek kicsiben kezdődnek, és a 12 hetes ciklus végére egyre összetettebbé válnak. Ez a tanterv egy utószót is tartalmaz a gépi tanulás valós alkalmazásairól, amely extra kreditként vagy vitaalapként használható. +Azáltal, hogy a tartalom projektekhez igazodik, a tanulási folyamat élvezetesebb lesz a diákok számára, és a fogalmak megtartása is javul. Emellett egy alacsony tétű kvíz az óra előtt beállítja a tanuló szándékát a téma elsajátítására, míg egy második kvíz az óra után további megtartást biztosít. Ez a tananyag rugalmas és szórakoztató, egészben vagy részben is elvégezhető. A projektek kicsiben kezdődnek, és a 12 hetes ciklus végére egyre összetettebbé válnak. A tananyag tartalmaz egy utószót a gépi tanulás valós alkalmazásairól, amely extra pontként vagy vitaalapként használható. -> Találd meg a [Magatartási kódexünket](CODE_OF_CONDUCT.md), [Hozzájárulási](CONTRIBUTING.md), [Fordítási](TRANSLATIONS.md) és [Hibaelhárítási](TROUBLESHOOTING.md) irányelveinket. Szívesen fogadjuk az építő jellegű visszajelzéseidet! +> Találd meg a [Magatartási Kódexünket](CODE_OF_CONDUCT.md), [Hozzájárulási útmutatónkat](CONTRIBUTING.md), [Fordítási útmutatónkat](TRANSLATIONS.md) és [Hibaelhárítási útmutatónkat](TROUBLESHOOTING.md). Várjuk építő jellegű visszajelzéseidet! -## Minden lecke tartalmazza +## Minden lecke tartalmaz -- opcionális vázlatrajz -- opcionális kiegészítő videó -- videós bemutató (csak néhány lecke esetében) -- [előzetes bemelegítő kvíz](https://ff-quizzes.netlify.app/en/ml/) -- írásos lecke -- projektalapú leckék esetén lépésről lépésre útmutató a projekt elkészítéséhez -- tudásellenőrzések -- egy kihívás -- kiegészítő olvasmány -- feladat -- [utólagos kvíz](https://ff-quizzes.netlify.app/en/ml/) +- opcionális vázlatjegyzetet +- opcionális kiegészítő videót +- videós bemutatót (csak néhány leckénél) +- [előadás előtti bemelegítő kvízt](https://ff-quizzes.netlify.app/en/ml/) +- írásos leckét +- projektalapú leckéknél lépésről lépésre útmutatót a projekt elkészítéséhez +- tudásellenőrzéseket +- kihívást +- kiegészítő olvasmányt +- feladatot +- [előadás utáni kvízt](https://ff-quizzes.netlify.app/en/ml/) -> **Megjegyzés a nyelvekről**: Ezek a leckék elsősorban Python nyelven íródtak, de sok közülük R nyelven is elérhető. Egy R lecke elvégzéséhez menj a `/solution` mappába, és keresd az R leckéket. Ezek tartalmaznak egy .rmd kiterjesztést, amely egy **R Markdown** fájlt jelöl, amely egyszerűen definiálható `kódrészletek` (R vagy más nyelvek) és egy `YAML fejléc` (amely útmutatást ad a kimenetek, például PDF formázásához) beágyazásaként egy `Markdown dokumentumba`. Mint ilyen, példamutató szerzői keretrendszerként szolgál az adattudomány számára, mivel lehetővé teszi, hogy kombináld a kódodat, annak kimenetét és gondolataidat, lehetővé téve, hogy Markdown-ban írd le őket. Továbbá, az R Markdown dokumentumok kimeneti formátumokra, például PDF-re, HTML-re vagy Word-re is renderelhetők. +> **Megjegyzés a nyelvekről**: Ezek a leckék elsősorban Python nyelven íródtak, de sok elérhető R-ben is. Egy R lecke elvégzéséhez keresd meg a `/solution` mappában az R leckéket. Ezek .rmd kiterjesztésű fájlok, amelyek egy **R Markdown** fájlt jelentenek, amely egyszerűen definiálható úgy, hogy `kódblokkokat` (R vagy más nyelvek) és egy `YAML fejlécet` (amely irányítja a kimenetek, például PDF formátumát) ágyaz be egy `Markdown dokumentumba`. Így példamutató szerzői keretrendszerként szolgál az adat tudomány számára, mivel lehetővé teszi, hogy a kódodat, annak kimenetét és gondolataidat Markdown formátumban írd le. R Markdown dokumentumok PDF, HTML vagy Word formátumba is konvertálhatók. -> **Megjegyzés a kvízekről**: Minden kvíz a [Quiz App mappában](../../quiz-app) található, összesen 52 darab három kérdéses kvízzel. Ezek a leckékből érhetők el, de a kvíz alkalmazás helyileg is futtatható; kövesd az `quiz-app` mappában található utasításokat a helyi hosztoláshoz vagy az Azure-ra történő telepítéshez. +> **Megjegyzés a kvízekről**: Minden kvíz megtalálható a [Quiz App mappában](../../quiz-app), összesen 52 kvíz három kérdéssel. Ezek a leckékből linkelve vannak, de a kvíz alkalmazás helyileg is futtatható; kövesd a `quiz-app` mappában található utasításokat a helyi hosztoláshoz vagy Azure-ra való telepítéshez. -| Lecke száma | Téma | Leckecsoportosítás | Tanulási célok | Kapcsolódó lecke | Szerző | +| Lecke száma | Téma | Lecke csoportosítás | Tanulási célok | Kapcsolódó lecke | Szerző | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Bevezetés a gépi tanulásba | [Bevezetés](1-Introduction/README.md) | Ismerd meg a gépi tanulás alapfogalmait | [Lecke](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | A gépi tanulás története | [Bevezetés](1-Introduction/README.md) | Ismerd meg a terület történeti hátterét | [Lecke](1-Introduction/2-history-of-ML/README.md) | Jen és Amy | -| 03 | Méltányosság és gépi tanulás | [Bevezetés](1-Introduction/README.md) | Milyen fontos filozófiai kérdéseket kell figyelembe venni a méltányosság kapcsán, amikor gépi tanulási modelleket építünk és alkalmazunk? | [Lecke](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Gépi tanulási technikák | [Bevezetés](1-Introduction/README.md) | Milyen technikákat használnak a gépi tanulás kutatói modellek építéséhez? | [Lecke](1-Introduction/4-techniques-of-ML/README.md) | Chris és Jen | -| 05 | Bevezetés a regresszióba | [Regresszió](2-Regression/README.md) | Kezdj el dolgozni Python és Scikit-learn segítségével regressziós modellekhez | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Észak-amerikai tökárak 🎃 | [Regresszió](2-Regression/README.md) | Vizualizáld és tisztítsd meg az adatokat a gépi tanulás előkészítéséhez | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Észak-amerikai tökárak 🎃 | [Regresszió](2-Regression/README.md) | Lineáris és polinomiális regressziós modellek építése | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen és Dmitry • Eric Wanjau | -| 08 | Észak-amerikai tökárak 🎃 | [Regresszió](2-Regression/README.md) | Logisztikus regressziós modell építése | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Egy webalkalmazás 🔌 | [Webalkalmazás](3-Web-App/README.md) | Építs egy webalkalmazást a betanított modelled használatához | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Bevezetés az osztályozásba | [Osztályozás](4-Classification/README.md) | Tisztítsd meg, készítsd elő és vizualizáld az adataidat; bevezetés az osztályozásba | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen és Cassie • Eric Wanjau | -| 11 | Finom ázsiai és indiai konyhák 🍜 | [Osztályozás](4-Classification/README.md) | Bevezetés az osztályozókba | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen és Cassie • Eric Wanjau | -| 12 | Finom ázsiai és indiai konyhák 🍜 | [Osztályozás](4-Classification/README.md) | További osztályozók | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen és Cassie • Eric Wanjau | -| 13 | Finom ázsiai és indiai konyhák 🍜 | [Osztályozás](4-Classification/README.md) | Ajánló webalkalmazás építése a modelled segítségével | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Bevezetés a klaszterezésbe | [Klaszterezés](5-Clustering/README.md) | Tisztítsd meg, készítsd elő és vizualizáld az adataidat; bevezetés a klaszterezésbe | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Nigériai zenei ízlések felfedezése 🎧 | [Klaszterezés](5-Clustering/README.md) | Fedezd fel a K-Means klaszterezési módszert | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Bevezetés a természetes nyelvfeldolgozásba ☕️ | [Természetes nyelvfeldolgozás](6-NLP/README.md) | Ismerd meg az NLP alapjait egy egyszerű bot építésével | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Gyakori NLP feladatok ☕️ | [Természetes nyelvfeldolgozás](6-NLP/README.md) | Mélyítsd el az NLP ismereteidet a nyelvi struktúrákkal kapcsolatos gyakori feladatok megértésével | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Fordítás és érzelemelemzés ♥️ | [Természetes nyelvfeldolgozás](6-NLP/README.md) | Fordítás és érzelemelemzés Jane Austen műveivel | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantikus európai hotelek ♥️ | [Természetes nyelvfeldolgozás](6-NLP/README.md) | Érzelemelemzés szállodai véleményekkel 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantikus európai hotelek ♥️ | [Természetes nyelvfeldolgozás](6-NLP/README.md) | Érzelemelemzés szállodai véleményekkel 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Bevezetés az idősorok előrejelzésébe | [Idősorok](7-TimeSeries/README.md) | Bevezetés az idősorok előrejelzésébe | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ A világ energiafogyasztása ⚡️ - idősor előrejelzés ARIMA-val | [Idősorok](7-TimeSeries/README.md) | Idősor előrejelzés ARIMA-val | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ A világ energiafogyasztása ⚡️ - idősor előrejelzés SVR-rel | [Idősorok](7-TimeSeries/README.md) | Idősor előrejelzés Support Vector Regressorral | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Bevezetés a megerősítéses tanulásba | [Megerősítéses tanulás](8-Reinforcement/README.md) | Bevezetés a megerősítéses tanulásba Q-Learning segítségével | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Segíts Péternek elkerülni a farkast! 🐺 | [Megerősítéses tanulás](8-Reinforcement/README.md) | Megerősítéses tanulás Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Utószó | Valós gépi tanulási forgatókönyvek és alkalmazások | [ML a gyakorlatban](9-Real-World/README.md) | Érdekes és tanulságos valós alkalmazások a klasszikus gépi tanulásban | [Lecke](9-Real-World/1-Applications/README.md) | Csapat | -| Utószó | Modellhibakeresés gépi tanulásban RAI dashboarddal | [ML a gyakorlatban](9-Real-World/README.md) | Modellhibakeresés a gépi tanulásban a Responsible AI dashboard komponensek használatával | [Lecke](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [találd meg a kurzushoz tartozó további forrásokat a Microsoft Learn gyűjteményünkben](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 01 | Bevezetés a gépi tanulásba | [Introduction](1-Introduction/README.md) | Ismerd meg a gépi tanulás alapfogalmait | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | A gépi tanulás története | [Introduction](1-Introduction/README.md) | Ismerd meg a terület mögötti történelmet | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Méltányosság és gépi tanulás | [Introduction](1-Introduction/README.md) | Melyek a méltányossággal kapcsolatos fontos filozófiai kérdések, amelyeket a tanulóknak figyelembe kell venniük ML modellek építésekor és alkalmazásakor? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Gépi tanulási technikák | [Introduction](1-Introduction/README.md) | Milyen technikákat használnak a gépi tanulás kutatói ML modellek építéséhez? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Bevezetés a regresszióba | [Regression](2-Regression/README.md) | Kezdj el dolgozni Python és Scikit-learn segítségével regressziós modellekkel | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Észak-amerikai tökárak 🎃 | [Regression](2-Regression/README.md) | Vizualizáld és tisztítsd az adatokat a gépi tanulás előkészítéséhez | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Észak-amerikai tökárak 🎃 | [Regression](2-Regression/README.md) | Építs lineáris és polinomiális regressziós modelleket | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Észak-amerikai tökárak 🎃 | [Regression](2-Regression/README.md) | Építs logisztikus regressziós modellt | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Egy webalkalmazás 🔌 | [Web App](3-Web-App/README.md) | Építs webalkalmazást a betanított modelled használatához | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Bevezetés az osztályozásba | [Classification](4-Classification/README.md) | Tisztítsd, készítsd elő és vizualizáld az adataidat; bevezetés az osztályozásba | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Finom ázsiai és indiai konyhák 🍜 | [Classification](4-Classification/README.md) | Bevezetés az osztályozókba | [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 | Finom ázsiai és indiai konyhák 🍜 | [Classification](4-Classification/README.md) | Több osztályozó | [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 | Finom ázsiai és indiai konyhák 🍜 | [Classification](4-Classification/README.md) | Építs ajánló webalkalmazást a modelled használatával | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Bevezetés a klaszterezésbe | [Clustering](5-Clustering/README.md) | Tisztítsd, készítsd elő és vizualizáld az adataidat; bevezetés a klaszterezésbe | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Felfedezés a nigériai zenei ízlésekben 🎧 | [Clustering](5-Clustering/README.md) | Fedezd fel a K-Means klaszterezési módszert | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Bevezetés a természetes nyelvfeldolgozásba ☕️ | [Natural language processing](6-NLP/README.md) | Tanuld meg az NLP alapjait egy egyszerű bot építésével | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Gyakori NLP feladatok ☕️ | [Natural language processing](6-NLP/README.md) | Mélyítsd el NLP tudásod a nyelvi struktúrákkal kapcsolatos gyakori feladatok megértésével | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Fordítás és érzelemelemzés ♥️ | [Natural language processing](6-NLP/README.md) | Fordítás és érzelemelemzés Jane Austen-nel | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantikus európai szállodák ♥️ | [Natural language processing](6-NLP/README.md) | Érzelemelemzés szállodai értékelésekkel 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantikus európai szállodák ♥️ | [Natural language processing](6-NLP/README.md) | Érzelemelemzés szállodai értékelésekkel 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Bevezetés az idősoros előrejelzésbe | [Time series](7-TimeSeries/README.md) | Bevezetés az idősoros előrejelzésbe | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Világ energiafelhasználás ⚡️ - idősoros előrejelzés ARIMA-val | [Time series](7-TimeSeries/README.md) | Idősoros előrejelzés ARIMA-val | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Világ energiafelhasználás ⚡️ - idősoros előrejelzés SVR-rel | [Time series](7-TimeSeries/README.md) | Idősoros előrejelzés Support Vector Regresszorral | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Bevezetés a megerősítéses tanulásba | [Reinforcement learning](8-Reinforcement/README.md) | Bevezetés a megerősítéses tanulásba Q-Learning segítségével | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Segíts Péternek elkerülni a farkast! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Megerősítéses tanulás Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Utószó | Valós világ ML forgatókönyvek és alkalmazások | [ML in the Wild](9-Real-World/README.md) | Érdekes és feltáró valós világban alkalmazott klasszikus gépi tanulási példák | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Utószó | Modellhibakeresés ML-ben RAI dashboarddal | [ML in the Wild](9-Real-World/README.md) | Modellhibakeresés gépi tanulásban a Responsible AI dashboard komponenseivel | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [keresd meg az összes további erőforrást ehhez a tanfolyamhoz a Microsoft Learn gyűjteményünkben](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Offline hozzáférés -Ezt a dokumentációt offline is futtathatod a [Docsify](https://docsify.js.org/#/) segítségével. Forkold ezt a repót, [telepítsd a Docsify-t](https://docsify.js.org/#/quickstart) a helyi gépedre, majd a repó gyökérmappájában írd be: `docsify serve`. A weboldal a localhost 3000-es portján lesz elérhető: `localhost:3000`. +Ezt a dokumentációt offline is futtathatod a [Docsify](https://docsify.js.org/#/) használatával. Forkold ezt a repót, [telepítsd a Docsify-t](https://docsify.js.org/#/quickstart) a helyi gépedre, majd a repó gyökérmappájában írd be, hogy `docsify serve`. A weboldal a 3000-es porton lesz elérhető a localhostodon: `localhost:3000`. ## PDF-ek A tananyag PDF változatát linkekkel [itt találod](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Egyéb kurzusok -Csapatunk más kurzusokat is készít! Nézd meg: +## 🎒 Egyéb tanfolyamok -### Azure / Edge / MCP / Ügynökök -[![AZD kezdőknek](https://img.shields.io/badge/AZD%20kezdőknek-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI kezdőknek](https://img.shields.io/badge/Edge%20AI%20kezdőknek-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP kezdőknek](https://img.shields.io/badge/MCP%20kezdőknek-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI ügynökök kezdőknek](https://img.shields.io/badge/AI%20ügynökök%20kezdőknek-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +Csapatunk más tanfolyamokat is készít! Nézd meg: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Generatív AI sorozat -[![Generatív AI kezdőknek](https://img.shields.io/badge/Generatív%20AI%20kezdőknek-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generatív AI (.NET)](https://img.shields.io/badge/Generatív%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generatív AI (Java)](https://img.shields.io/badge/Generatív%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generatív AI (JavaScript)](https://img.shields.io/badge/Generatív%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Ügynökök +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Generatív AI sorozat +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generatív AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generatív AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +--- + ### Alapvető tanulás -[![ML kezdőknek](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Adattudomány kezdőknek](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![MI kezdőknek](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Kiberbiztonság kezdőknek](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Webfejlesztés kezdőknek](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT kezdőknek](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR fejlesztés kezdőknek](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML kezdőknek](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Adattudomány kezdőknek](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI kezdőknek](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Kiberbiztonság kezdőknek](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Webfejlesztés kezdőknek](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT kezdőknek](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR fejlesztés kezdőknek](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Copilot sorozat +[![Copilot AI páros programozáshoz](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot C#/.NET-hez](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot kaland](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot sorozat -[![Copilot mesterséges intelligencia páros programozáshoz](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot C#/.NET-hez](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot kaland](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +## Segítségkérés -## Segítség kérése +Ha elakadnál vagy kérdésed van az AI alkalmazások fejlesztésével kapcsolatban, csatlakozz a többi tanulóhoz és tapasztalt fejlesztőhöz az MCP közösségi beszélgetéseiben. Ez egy támogató közösség, ahol a kérdések szívesen látottak, és a tudás szabadon megosztott. -Ha elakadnál, vagy kérdéseid vannak az MI alkalmazások építésével kapcsolatban, csatlakozz más tanulókhoz és tapasztalt fejlesztőkhöz az MCP-ről szóló beszélgetésekben. Ez egy támogató közösség, ahol szívesen fogadják a kérdéseket, és szabadon osztják meg a tudást. - -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Ha termékvisszajelzést szeretnél adni, vagy hibákat tapasztalsz az építés során, látogasd meg: +Ha termék visszajelzésed vagy hibákba ütközöl fejlesztés közben, látogass el ide: -[![Microsoft Foundry Fejlesztői Fórum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Fejlesztői Fórum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Felelősség kizárása**: -Ezt a dokumentumot az [Co-op Translator](https://github.com/Azure/co-op-translator) AI fordítási szolgáltatás segítségével fordították le. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy téves értelmezésekért. +**Jogi nyilatkozat**: +Ezt a dokumentumot az AI fordító szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével fordítottuk le. Bár a pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javaslunk. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy félreértelmezésekért. \ No newline at end of file diff --git a/translations/id/README.md b/translations/id/README.md index b4adf842a..a50463831 100644 --- a/translations/id/README.md +++ b/translations/id/README.md @@ -1,51 +1,51 @@ -[![Lisensi GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Kontributor GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Masalah GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Permintaan Tarik GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Pengamat GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Fork GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Bintang GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Dukungan Multi-Bahasa #### Didukung melalui GitHub Action (Otomatis & Selalu Terbaru) -[Arab](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgaria](../bg/README.md) | [Burma (Myanmar)](../my/README.md) | [Cina (Sederhana)](../zh/README.md) | [Cina (Tradisional, Hong Kong)](../hk/README.md) | [Cina (Tradisional, Makau)](../mo/README.md) | [Cina (Tradisional, Taiwan)](../tw/README.md) | [Kroasia](../hr/README.md) | [Ceko](../cs/README.md) | [Denmark](../da/README.md) | [Belanda](../nl/README.md) | [Estonia](../et/README.md) | [Finlandia](../fi/README.md) | [Prancis](../fr/README.md) | [Jerman](../de/README.md) | [Yunani](../el/README.md) | [Ibrani](../he/README.md) | [Hindi](../hi/README.md) | [Hungaria](../hu/README.md) | [Indonesia](./README.md) | [Italia](../it/README.md) | [Jepang](../ja/README.md) | [Korea](../ko/README.md) | [Lituania](../lt/README.md) | [Melayu](../ms/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Pidgin Nigeria](../pcm/README.md) | [Norwegia](../no/README.md) | [Persia (Farsi)](../fa/README.md) | [Polandia](../pl/README.md) | [Portugis (Brasil)](../br/README.md) | [Portugis (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Rumania](../ro/README.md) | [Rusia](../ru/README.md) | [Serbia (Kiril)](../sr/README.md) | [Slovakia](../sk/README.md) | [Slovenia](../sl/README.md) | [Spanyol](../es/README.md) | [Swahili](../sw/README.md) | [Swedia](../sv/README.md) | [Tagalog (Filipina)](../tl/README.md) | [Tamil](../ta/README.md) | [Thai](../th/README.md) | [Turki](../tr/README.md) | [Ukraina](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnam](../vi/README.md) +[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](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) -#### Bergabunglah dengan Komunitas Kami +#### Bergabung dengan Komunitas Kami [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Kami memiliki seri belajar dengan AI di Discord yang sedang berlangsung, pelajari lebih lanjut dan bergabunglah dengan kami di [Seri Belajar dengan AI](https://aka.ms/learnwithai/discord) dari 18 - 30 September, 2025. Anda akan mendapatkan tips dan trik menggunakan GitHub Copilot untuk Data Science. +Kami memiliki seri belajar Discord dengan AI yang sedang berlangsung, pelajari lebih lanjut dan bergabunglah dengan kami di [Learn with AI Series](https://aka.ms/learnwithai/discord) dari 18 - 30 September, 2025. Anda akan mendapatkan tips dan trik menggunakan GitHub Copilot untuk Data Science. -![Seri Belajar dengan AI](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.id.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.id.png) # Pembelajaran Mesin untuk Pemula - Kurikulum -> 🌍 Jelajahi dunia saat kita mempelajari Pembelajaran Mesin melalui budaya dunia 🌍 +> 🌍 Jelajahi dunia sambil mempelajari Pembelajaran Mesin melalui budaya dunia 🌍 -Cloud Advocates di Microsoft dengan senang hati menawarkan kurikulum 12 minggu, 26 pelajaran tentang **Pembelajaran Mesin**. Dalam kurikulum ini, Anda akan mempelajari apa yang kadang disebut **pembelajaran mesin klasik**, menggunakan Scikit-learn sebagai pustaka utama dan menghindari pembelajaran mendalam, yang dibahas dalam [kurikulum AI untuk Pemula kami](https://aka.ms/ai4beginners). Pasangkan pelajaran ini dengan kurikulum ['Data Science untuk Pemula'](https://aka.ms/ds4beginners) kami juga! +Cloud Advocates di Microsoft dengan senang hati menawarkan kurikulum 12 minggu, 26 pelajaran yang membahas **Pembelajaran Mesin**. Dalam kurikulum ini, Anda akan belajar tentang apa yang kadang disebut **pembelajaran mesin klasik**, menggunakan terutama Scikit-learn sebagai perpustakaan dan menghindari pembelajaran mendalam, yang dibahas dalam [kurikulum AI untuk Pemula](https://aka.ms/ai4beginners) kami. Padukan pelajaran ini dengan ['Data Science untuk Pemula' kurikulum](https://aka.ms/ds4beginners) kami juga! -Jelajahi dunia bersama kami saat kami menerapkan teknik klasik ini pada data dari berbagai wilayah dunia. Setiap pelajaran mencakup kuis sebelum dan sesudah pelajaran, instruksi tertulis untuk menyelesaikan pelajaran, solusi, tugas, dan lainnya. Pendekatan berbasis proyek kami memungkinkan Anda belajar sambil membangun, cara yang terbukti efektif untuk membuat keterampilan baru 'melekat'. +Jelajahi bersama kami ke seluruh dunia saat kami menerapkan teknik klasik ini pada data dari berbagai wilayah dunia. Setiap pelajaran mencakup kuis sebelum dan sesudah pelajaran, instruksi tertulis untuk menyelesaikan pelajaran, solusi, tugas, dan lainnya. Metode pembelajaran berbasis proyek kami memungkinkan Anda belajar sambil membangun, cara yang terbukti efektif agar keterampilan baru 'melekat'. -**✍️ Terima kasih yang tulus kepada penulis kami** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu, dan Amy Boyd +**✍️ Terima kasih hangat kepada para penulis kami** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu dan Amy Boyd -**🎨 Terima kasih juga kepada ilustrator kami** Tomomi Imura, Dasani Madipalli, dan Jen Looper +**🎨 Terima kasih juga kepada para ilustrator kami** Tomomi Imura, Dasani Madipalli, dan Jen Looper -**🙏 Terima kasih khusus 🙏 kepada Microsoft Student Ambassador penulis, pengulas, dan kontributor konten kami**, terutama Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, dan Snigdha Agarwal +**🙏 Terima kasih khusus 🙏 kepada para Microsoft Student Ambassador penulis, pengulas, dan kontributor konten kami**, terutama Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, dan Snigdha Agarwal **🤩 Terima kasih ekstra kepada Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, dan Vidushi Gupta untuk pelajaran R kami!** @@ -55,20 +55,20 @@ Ikuti langkah-langkah ini: 1. **Fork Repository**: Klik tombol "Fork" di pojok kanan atas halaman ini. 2. **Clone Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [temukan semua sumber daya tambahan untuk kursus ini dalam koleksi Microsoft Learn kami](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [temukan semua sumber daya tambahan untuk kursus ini di koleksi Microsoft Learn kami](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) > 🔧 **Butuh bantuan?** Periksa [Panduan Pemecahan Masalah](TROUBLESHOOTING.md) kami untuk solusi masalah umum terkait instalasi, pengaturan, dan menjalankan pelajaran. **[Siswa](https://aka.ms/student-page)**, untuk menggunakan kurikulum ini, fork seluruh repo ke akun GitHub Anda sendiri dan selesaikan latihan secara mandiri atau bersama kelompok: -- Mulailah dengan kuis pra-pelajaran. -- Baca materi pelajaran dan selesaikan aktivitas, berhenti dan refleksi pada setiap pemeriksaan pengetahuan. -- Cobalah membuat proyek dengan memahami pelajaran daripada menjalankan kode solusi; namun kode tersebut tersedia di folder `/solution` dalam setiap pelajaran berbasis proyek. -- Ikuti kuis pasca-pelajaran. +- Mulai dengan kuis pemanasan sebelum kuliah. +- Baca kuliah dan selesaikan aktivitas, berhenti dan refleksi pada setiap pemeriksaan pengetahuan. +- Cobalah membuat proyek dengan memahami pelajaran daripada langsung menjalankan kode solusi; namun kode tersebut tersedia di folder `/solution` di setiap pelajaran berbasis proyek. +- Ikuti kuis setelah kuliah. - Selesaikan tantangan. - Selesaikan tugas. -- Setelah menyelesaikan grup pelajaran, kunjungi [Papan Diskusi](https://github.com/microsoft/ML-For-Beginners/discussions) dan "belajar dengan lantang" dengan mengisi rubrik PAT yang sesuai. 'PAT' adalah Alat Penilaian Kemajuan yang merupakan rubrik yang Anda isi untuk memperdalam pembelajaran Anda. Anda juga dapat memberikan reaksi terhadap PAT lainnya sehingga kita dapat belajar bersama. +- Setelah menyelesaikan satu kelompok pelajaran, kunjungi [Papan Diskusi](https://github.com/microsoft/ML-For-Beginners/discussions) dan "belajar dengan suara" dengan mengisi rubrik PAT yang sesuai. 'PAT' adalah Alat Penilaian Kemajuan yang merupakan rubrik yang Anda isi untuk memperdalam pembelajaran. Anda juga dapat merespons PAT lain agar kita bisa belajar bersama. > Untuk studi lebih lanjut, kami merekomendasikan mengikuti modul dan jalur pembelajaran [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). @@ -76,17 +76,17 @@ Ikuti langkah-langkah ini: --- -## Video walkthroughs +## Video panduan -Beberapa pelajaran tersedia dalam bentuk video pendek. Anda dapat menemukan semuanya di dalam pelajaran, atau di [playlist ML untuk Pemula di saluran YouTube Microsoft Developer](https://aka.ms/ml-beginners-videos) dengan mengklik gambar di bawah. +Beberapa pelajaran tersedia dalam bentuk video pendek. Anda dapat menemukan semuanya di dalam pelajaran, atau di [playlist ML for Beginners di saluran YouTube Microsoft Developer](https://aka.ms/ml-beginners-videos) dengan mengklik gambar di bawah ini. -[![Banner ML untuk pemula](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.id.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.id.png)](https://aka.ms/ml-beginners-videos) --- -## Temui Tim +## Kenali Tim -[![Video promo](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **Gif oleh** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) @@ -96,74 +96,81 @@ Beberapa pelajaran tersedia dalam bentuk video pendek. Anda dapat menemukan semu ## Pedagogi -Kami memilih dua prinsip pedagogi saat membangun kurikulum ini: memastikan bahwa kurikulum ini berbasis **proyek langsung** dan mencakup **kuis yang sering**. Selain itu, kurikulum ini memiliki **tema umum** untuk memberikan kohesi. +Kami memilih dua prinsip pedagogis saat membangun kurikulum ini: memastikan bahwa kurikulum ini berbasis **proyek langsung** dan mencakup **kuis yang sering**. Selain itu, kurikulum ini memiliki **tema** yang sama untuk memberikan kohesi. -Dengan memastikan bahwa konten selaras dengan proyek, proses pembelajaran menjadi lebih menarik bagi siswa dan retensi konsep akan meningkat. Selain itu, kuis dengan risiko rendah sebelum kelas menetapkan niat siswa untuk mempelajari topik, sementara kuis kedua setelah kelas memastikan retensi lebih lanjut. Kurikulum ini dirancang agar fleksibel dan menyenangkan serta dapat diambil secara keseluruhan atau sebagian. Proyek dimulai dari yang kecil dan menjadi semakin kompleks pada akhir siklus 12 minggu. Kurikulum ini juga mencakup postscript tentang aplikasi dunia nyata dari ML, yang dapat digunakan sebagai kredit tambahan atau sebagai dasar untuk diskusi. +Dengan memastikan konten selaras dengan proyek, proses pembelajaran menjadi lebih menarik bagi siswa dan retensi konsep akan meningkat. Selain itu, kuis dengan risiko rendah sebelum kelas menetapkan niat siswa untuk mempelajari topik, sementara kuis kedua setelah kelas memastikan retensi lebih lanjut. Kurikulum ini dirancang agar fleksibel dan menyenangkan dan dapat diambil secara keseluruhan atau sebagian. Proyek dimulai dari yang kecil dan menjadi semakin kompleks pada akhir siklus 12 minggu. Kurikulum ini juga mencakup catatan akhir tentang aplikasi nyata ML, yang dapat digunakan sebagai kredit tambahan atau sebagai dasar diskusi. -> Temukan [Kode Etik](CODE_OF_CONDUCT.md), [Kontribusi](CONTRIBUTING.md), [Terjemahan](TRANSLATIONS.md), dan [Panduan Pemecahan Masalah](TROUBLESHOOTING.md) kami. Kami menyambut umpan balik konstruktif Anda! +> Temukan [Kode Etik](CODE_OF_CONDUCT.md), [Kontribusi](CONTRIBUTING.md), [Terjemahan](TRANSLATIONS.md), dan panduan [Pemecahan Masalah](TROUBLESHOOTING.md) kami. Kami menyambut umpan balik konstruktif Anda! ## Setiap pelajaran mencakup - sketchnote opsional - video tambahan opsional -- video walkthrough (beberapa pelajaran saja) -- [kuis pemanasan pra-pelajaran](https://ff-quizzes.netlify.app/en/ml/) +- video panduan (beberapa pelajaran saja) +- [kuis pemanasan sebelum kuliah](https://ff-quizzes.netlify.app/en/ml/) - pelajaran tertulis -- untuk pelajaran berbasis proyek, panduan langkah demi langkah tentang cara membangun proyek +- untuk pelajaran berbasis proyek, panduan langkah demi langkah cara membangun proyek - pemeriksaan pengetahuan - tantangan - bacaan tambahan - tugas -- [kuis pasca-pelajaran](https://ff-quizzes.netlify.app/en/ml/) +- [kuis setelah kuliah](https://ff-quizzes.netlify.app/en/ml/) -> **Catatan tentang bahasa**: Pelajaran ini sebagian besar ditulis dalam Python, tetapi banyak juga yang tersedia dalam R. Untuk menyelesaikan pelajaran R, buka folder `/solution` dan cari pelajaran R. Pelajaran tersebut mencakup ekstensi .rmd yang mewakili file **R Markdown** yang dapat didefinisikan sebagai penggabungan `code chunks` (dari R atau bahasa lain) dan `YAML header` (yang memandu cara memformat output seperti PDF) dalam dokumen `Markdown`. Dengan demikian, ini berfungsi sebagai kerangka kerja penulisan yang luar biasa untuk data science karena memungkinkan Anda menggabungkan kode Anda, outputnya, dan pemikiran Anda dengan memungkinkan Anda menuliskannya dalam Markdown. Selain itu, dokumen R Markdown dapat dirender ke format output seperti PDF, HTML, atau Word. +> **Catatan tentang bahasa**: Pelajaran ini terutama ditulis dalam Python, tetapi banyak juga tersedia dalam R. Untuk menyelesaikan pelajaran R, buka folder `/solution` dan cari pelajaran R. Mereka memiliki ekstensi .rmd yang merupakan file **R Markdown** yang dapat didefinisikan sebagai penggabungan `potongan kode` (dari R atau bahasa lain) dan `header YAML` (yang mengatur format output seperti PDF) dalam `dokumen Markdown`. Dengan demikian, ini berfungsi sebagai kerangka kerja penulisan yang ideal untuk data science karena memungkinkan Anda menggabungkan kode, outputnya, dan pemikiran Anda dengan menuliskannya dalam Markdown. Selain itu, dokumen R Markdown dapat dirender ke format output seperti PDF, HTML, atau Word. -> **Catatan tentang kuis**: Semua kuis terdapat dalam [folder Aplikasi Kuis](../../quiz-app), dengan total 52 kuis masing-masing berisi tiga pertanyaan. Kuis tersebut terhubung dari dalam pelajaran tetapi aplikasi kuis dapat dijalankan secara lokal; ikuti instruksi di folder `quiz-app` untuk hosting lokal atau penerapan ke Azure. +> **Catatan tentang kuis**: Semua kuis terdapat di [folder Quiz App](../../quiz-app), dengan total 52 kuis masing-masing berisi tiga pertanyaan. Kuis ini terhubung dari dalam pelajaran tetapi aplikasi kuis dapat dijalankan secara lokal; ikuti instruksi di folder `quiz-app` untuk hosting lokal atau deploy ke Azure. | Nomor Pelajaran | Topik | Pengelompokan Pelajaran | Tujuan Pembelajaran | Pelajaran Terkait | Penulis | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Pengantar pembelajaran mesin | [Introduction](1-Introduction/README.md) | Pelajari konsep dasar di balik pembelajaran mesin | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Sejarah pembelajaran mesin | [Introduction](1-Introduction/README.md) | Pelajari sejarah yang mendasari bidang ini | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen dan Amy | -| 03 | Keadilan dan pembelajaran mesin | [Introduction](1-Introduction/README.md) | Apa saja isu filosofis penting tentang keadilan yang harus dipertimbangkan siswa saat membangun dan menerapkan model ML? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Teknik untuk pembelajaran mesin | [Introduction](1-Introduction/README.md) | Teknik apa yang digunakan peneliti ML untuk membangun model ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris dan Jen | -| 05 | Pengantar regresi | [Regression](2-Regression/README.md) | Mulai dengan Python dan Scikit-learn untuk model regresi | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Harga labu di Amerika Utara 🎃 | [Regression](2-Regression/README.md) | Visualisasikan dan bersihkan data sebagai persiapan untuk ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Harga labu di Amerika Utara 🎃 | [Regression](2-Regression/README.md) | Bangun model regresi linier dan polinomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen dan Dmitry • Eric Wanjau | -| 08 | Harga labu di Amerika Utara 🎃 | [Regression](2-Regression/README.md) | Bangun model regresi logistik | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Aplikasi Web 🔌 | [Web App](3-Web-App/README.md) | Bangun aplikasi web untuk menggunakan model yang telah dilatih | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Pengantar klasifikasi | [Classification](4-Classification/README.md) | Bersihkan, siapkan, dan visualisasikan data Anda; pengantar klasifikasi | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen dan Cassie • Eric Wanjau | -| 11 | Masakan Asia dan India yang lezat 🍜 | [Classification](4-Classification/README.md) | Pengantar pengklasifikasi | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen dan Cassie • Eric Wanjau | -| 12 | Masakan Asia dan India yang lezat 🍜 | [Classification](4-Classification/README.md) | Lebih banyak pengklasifikasi | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen dan Cassie • Eric Wanjau | -| 13 | Masakan Asia dan India yang lezat 🍜 | [Classification](4-Classification/README.md) | Bangun aplikasi web rekomendasi menggunakan model Anda | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Pengantar pengelompokan | [Clustering](5-Clustering/README.md) | Bersihkan, siapkan, dan visualisasikan data Anda; pengantar pengelompokan | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Menjelajahi selera musik Nigeria 🎧 | [Clustering](5-Clustering/README.md) | Jelajahi metode pengelompokan 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 | Pengantar pemrosesan bahasa alami ☕️ | [Natural language processing](6-NLP/README.md) | Pelajari dasar-dasar NLP dengan membangun bot sederhana | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Tugas umum NLP ☕️ | [Natural language processing](6-NLP/README.md) | Perdalam pengetahuan NLP Anda dengan memahami tugas-tugas umum yang diperlukan saat menangani struktur bahasa | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Terjemahan dan analisis sentimen ♥️ | [Natural language processing](6-NLP/README.md) | Terjemahan dan analisis sentimen dengan Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Hotel romantis di Eropa ♥️ | [Natural language processing](6-NLP/README.md) | Analisis sentimen dengan ulasan hotel 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Hotel romantis di Eropa ♥️ | [Natural language processing](6-NLP/README.md) | Analisis sentimen dengan ulasan hotel 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Pengantar peramalan deret waktu | [Time series](7-TimeSeries/README.md) | Pengantar peramalan deret waktu | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Penggunaan Daya Dunia ⚡️ - peramalan deret waktu dengan ARIMA | [Time series](7-TimeSeries/README.md) | Peramalan deret waktu dengan ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Penggunaan Daya Dunia ⚡️ - peramalan deret waktu dengan SVR | [Time series](7-TimeSeries/README.md) | Peramalan deret waktu dengan Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Pengantar pembelajaran penguatan | [Reinforcement learning](8-Reinforcement/README.md) | Pengantar pembelajaran penguatan dengan Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Bantu Peter menghindari serigala! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Gym pembelajaran penguatan | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Skenario dan aplikasi ML di dunia nyata | [ML in the Wild](9-Real-World/README.md) | Aplikasi dunia nyata yang menarik dan mengungkapkan tentang ML klasik | [Lesson](9-Real-World/1-Applications/README.md) | Team | -| Postscript | Debugging Model ML menggunakan dashboard RAI | [ML in the Wild](9-Real-World/README.md) | Debugging Model dalam Pembelajaran Mesin menggunakan komponen dashboard AI yang Bertanggung Jawab | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [temukan semua sumber tambahan untuk kursus ini di koleksi Microsoft Learn kami](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) - -## Akses Offline - -Anda dapat menjalankan dokumentasi ini secara offline dengan menggunakan [Docsify](https://docsify.js.org/#/). Fork repositori ini, [instal Docsify](https://docsify.js.org/#/quickstart) di mesin lokal Anda, lalu di folder root repositori ini, ketik `docsify serve`. Situs web akan disajikan di port 3000 di localhost Anda: `localhost:3000`. +| 01 | Pengantar pembelajaran mesin | [Introduction](1-Introduction/README.md) | Pelajari konsep dasar di balik pembelajaran mesin | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Sejarah pembelajaran mesin | [Introduction](1-Introduction/README.md) | Pelajari sejarah yang mendasari bidang ini | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Keadilan dan pembelajaran mesin | [Introduction](1-Introduction/README.md) | Apa saja isu filosofis penting tentang keadilan yang harus dipertimbangkan siswa saat membangun dan menerapkan model ML? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Teknik untuk pembelajaran mesin | [Introduction](1-Introduction/README.md) | Teknik apa yang digunakan peneliti ML untuk membangun model ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Pengantar regresi | [Regression](2-Regression/README.md) | Mulai dengan Python dan Scikit-learn untuk model regresi | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Harga labu Amerika Utara 🎃 | [Regression](2-Regression/README.md) | Visualisasikan dan bersihkan data sebagai persiapan untuk ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Harga labu Amerika Utara 🎃 | [Regression](2-Regression/README.md) | Bangun model regresi linier dan polinomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Harga labu Amerika Utara 🎃 | [Regression](2-Regression/README.md) | Bangun model regresi logistik | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Aplikasi Web 🔌 | [Web App](3-Web-App/README.md) | Bangun aplikasi web untuk menggunakan model yang sudah dilatih | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Pengantar klasifikasi | [Classification](4-Classification/README.md) | Bersihkan, persiapkan, dan visualisasikan data Anda; pengantar klasifikasi | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Masakan Asia dan India yang lezat 🍜 | [Classification](4-Classification/README.md) | Pengantar klasifikator | [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 | Masakan Asia dan India yang lezat 🍜 | [Classification](4-Classification/README.md) | Lebih banyak klasifikator | [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 | Masakan Asia dan India yang lezat 🍜 | [Classification](4-Classification/README.md) | Bangun aplikasi web rekomendasi menggunakan model Anda | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Pengantar pengelompokan | [Clustering](5-Clustering/README.md) | Bersihkan, persiapkan, dan visualisasikan data Anda; pengantar pengelompokan | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Menjelajahi Selera Musik Nigeria 🎧 | [Clustering](5-Clustering/README.md) | Jelajahi metode pengelompokan 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 | Pengantar pemrosesan bahasa alami ☕️ | [Natural language processing](6-NLP/README.md) | Pelajari dasar-dasar NLP dengan membangun bot sederhana | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Tugas NLP Umum ☕️ | [Natural language processing](6-NLP/README.md) | Perdalam pengetahuan NLP Anda dengan memahami tugas umum yang diperlukan saat berurusan dengan struktur bahasa | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Terjemahan dan analisis sentimen ♥️ | [Natural language processing](6-NLP/README.md) | Terjemahan dan analisis sentimen dengan Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Hotel romantis di Eropa ♥️ | [Natural language processing](6-NLP/README.md) | Analisis sentimen dengan ulasan hotel 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Hotel romantis di Eropa ♥️ | [Natural language processing](6-NLP/README.md) | Analisis sentimen dengan ulasan hotel 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Pengantar peramalan deret waktu | [Time series](7-TimeSeries/README.md) | Pengantar peramalan deret waktu | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Penggunaan Listrik Dunia ⚡️ - peramalan deret waktu dengan ARIMA | [Time series](7-TimeSeries/README.md) | Peramalan deret waktu dengan ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Penggunaan Listrik Dunia ⚡️ - peramalan deret waktu dengan SVR | [Time series](7-TimeSeries/README.md) | Peramalan deret waktu dengan Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Pengantar pembelajaran penguatan | [Reinforcement learning](8-Reinforcement/README.md) | Pengantar pembelajaran penguatan dengan Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Bantu Peter menghindari serigala! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Pembelajaran penguatan Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Skenario dan aplikasi ML dunia nyata | [ML in the Wild](9-Real-World/README.md) | Aplikasi dunia nyata yang menarik dan mengungkap dari ML klasik | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Debugging Model dalam ML menggunakan dashboard RAI | [ML in the Wild](9-Real-World/README.md) | Debugging Model dalam Pembelajaran Mesin menggunakan komponen dashboard Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [temukan semua sumber daya tambahan untuk kursus ini di koleksi Microsoft Learn kami](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +## Akses offline + +Anda dapat menjalankan dokumentasi ini secara offline dengan menggunakan [Docsify](https://docsify.js.org/#/). Fork repo ini, [pasang Docsify](https://docsify.js.org/#/quickstart) di mesin lokal Anda, lalu di folder root repo ini, ketik `docsify serve`. Situs web akan disajikan di port 3000 pada localhost Anda: `localhost:3000`. ## PDF -Temukan PDF kurikulum dengan tautan [di sini](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Temukan pdf kurikulum dengan tautan [di sini](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Kursus Lainnya +## 🎒 Kursus Lainnya -Tim kami juga membuat kursus lainnya! Lihat: +Tim kami memproduksi kursus lain! Lihat: + + +### LangChain +[![LangChain4j untuk Pemula](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js untuk Pemula](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agen [![AZD untuk Pemula](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -172,44 +179,45 @@ Tim kami juga membuat kursus lainnya! Lihat: [![Agen AI untuk Pemula](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### Seri AI Generatif [![AI Generatif untuk Pemula](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![AI Generatif (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![AI Generatif (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![AI Generatif (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### Pembelajaran Inti -[![ML untuk Pemula](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science untuk Pemula](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI untuk Pemula](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Keamanan Siber untuk Pemula](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Pengembangan Web untuk Pemula](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT untuk Pemula](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Pengembangan XR untuk Pemula](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Seri Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Seri Copilot -[![Copilot untuk Pemrograman Berpasangan AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot untuk C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Petualangan Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Mendapatkan Bantuan +## Mendapatkan Bantuan -Jika Anda mengalami kesulitan atau memiliki pertanyaan tentang membangun aplikasi AI, bergabunglah dengan sesama pelajar dan pengembang berpengalaman dalam diskusi tentang MCP. Ini adalah komunitas yang mendukung di mana pertanyaan diterima dan pengetahuan dibagikan secara bebas. +Jika Anda mengalami kesulitan atau memiliki pertanyaan tentang membangun aplikasi AI. Bergabunglah dengan sesama pelajar dan pengembang berpengalaman dalam diskusi tentang MCP. Ini adalah komunitas yang mendukung di mana pertanyaan disambut dan pengetahuan dibagikan secara bebas. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Jika Anda memiliki masukan produk atau menemukan kesalahan saat membangun, kunjungi: +Jika Anda memiliki umpan balik produk atau menemukan kesalahan saat membangun, kunjungi: -[![Forum Pengembang Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Penafian**: -Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diketahui bahwa terjemahan otomatis dapat mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang penting, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang timbul dari penggunaan terjemahan ini. +Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk akurasi, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang salah yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/it/README.md b/translations/it/README.md index 2de2660ce..ffbaf0bd5 100644 --- a/translations/it/README.md +++ b/translations/it/README.md @@ -1,33 +1,35 @@ -[![Licenza GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Contributori GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Problemi GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Richieste di pull GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Osservatori GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Fork GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Stelle GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Supporto Multilingue #### Supportato tramite GitHub Action (Automatizzato e Sempre Aggiornato) -[Arabo](../ar/README.md) | [Bengalese](../bn/README.md) | [Bulgaro](../bg/README.md) | [Birmano (Myanmar)](../my/README.md) | [Cinese (Semplificato)](../zh/README.md) | [Cinese (Tradizionale, Hong Kong)](../hk/README.md) | [Cinese (Tradizionale, Macao)](../mo/README.md) | [Cinese (Tradizionale, Taiwan)](../tw/README.md) | [Croato](../hr/README.md) | [Ceco](../cs/README.md) | [Danese](../da/README.md) | [Olandese](../nl/README.md) | [Estone](../et/README.md) | [Finlandese](../fi/README.md) | [Francese](../fr/README.md) | [Tedesco](../de/README.md) | [Greco](../el/README.md) | [Ebraico](../he/README.md) | [Hindi](../hi/README.md) | [Ungherese](../hu/README.md) | [Indonesiano](../id/README.md) | [Italiano](./README.md) | [Giapponese](../ja/README.md) | [Coreano](../ko/README.md) | [Lituano](../lt/README.md) | [Malese](../ms/README.md) | [Marathi](../mr/README.md) | [Nepalese](../ne/README.md) | [Pidgin Nigeriano](../pcm/README.md) | [Norvegese](../no/README.md) | [Persiano (Farsi)](../fa/README.md) | [Polacco](../pl/README.md) | [Portoghese (Brasile)](../br/README.md) | [Portoghese (Portogallo)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Rumeno](../ro/README.md) | [Russo](../ru/README.md) | [Serbo (Cirillico)](../sr/README.md) | [Slovacco](../sk/README.md) | [Sloveno](../sl/README.md) | [Spagnolo](../es/README.md) | [Swahili](../sw/README.md) | [Svedese](../sv/README.md) | [Tagalog (Filippino)](../tl/README.md) | [Tamil](../ta/README.md) | [Thailandese](../th/README.md) | [Turco](../tr/README.md) | [Ucraino](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamita](../vi/README.md) + +[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](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + -#### Unisciti alla nostra comunità +#### Unisciti alla Nostra Comunità [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Abbiamo una serie di apprendimento con AI in corso su Discord. Scopri di più e unisciti a noi alla [Learn with AI Series](https://aka.ms/learnwithai/discord) dal 18 al 30 settembre 2025. Riceverai consigli e trucchi sull'uso di GitHub Copilot per la Data Science. +Abbiamo una serie Discord "impara con l'AI" in corso, scopri di più e unisciti a noi su [Learn with AI Series](https://aka.ms/learnwithai/discord) dal 18 al 30 settembre 2025. Riceverai consigli e trucchi per usare GitHub Copilot per la Data Science. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.it.png) @@ -35,55 +37,56 @@ Abbiamo una serie di apprendimento con AI in corso su Discord. Scopri di più e > 🌍 Viaggia intorno al mondo mentre esploriamo il Machine Learning attraverso le culture del mondo 🌍 -Gli Advocates di Microsoft sono lieti di offrire un curriculum di 12 settimane e 26 lezioni tutto dedicato al **Machine Learning**. In questo curriculum, imparerai ciò che a volte viene chiamato **machine learning classico**, utilizzando principalmente la libreria Scikit-learn ed evitando il deep learning, che è trattato nel nostro [curriculum AI per Principianti](https://aka.ms/ai4beginners). Abbina queste lezioni al nostro curriculum ['Data Science per Principianti'](https://aka.ms/ds4beginners), anche! +I Cloud Advocates di Microsoft sono lieti di offrire un curriculum di 12 settimane, 26 lezioni, tutto sul **Machine Learning**. In questo curriculum, imparerai ciò che a volte viene chiamato **machine learning classico**, utilizzando principalmente Scikit-learn come libreria ed evitando il deep learning, che è trattato nel nostro [curriculum AI per principianti](https://aka.ms/ai4beginners). Abbina queste lezioni anche al nostro ['Data Science per principianti' curriculum](https://aka.ms/ds4beginners)! -Viaggia con noi intorno al mondo mentre applichiamo queste tecniche classiche ai dati provenienti da molte aree del mondo. Ogni lezione include quiz pre- e post-lezione, istruzioni scritte per completare la lezione, una soluzione, un compito e altro ancora. La nostra pedagogia basata sui progetti ti permette di imparare costruendo, un metodo comprovato per far sì che le nuove competenze rimangano impresse. +Viaggia con noi intorno al mondo mentre applichiamo queste tecniche classiche a dati provenienti da molte aree del mondo. Ogni lezione include quiz pre e post lezione, istruzioni scritte per completare la lezione, una soluzione, un compito e altro. La nostra pedagogia basata su progetti ti permette di imparare costruendo, un modo comprovato per far "fissare" nuove competenze. -**✍️ Un sentito ringraziamento ai nostri autori** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu e Amy Boyd +**✍️ Un sentito grazie ai nostri autori** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu e Amy Boyd **🎨 Grazie anche ai nostri illustratori** Tomomi Imura, Dasani Madipalli e Jen Looper -**🙏 Un ringraziamento speciale 🙏 ai nostri Microsoft Student Ambassador autori, revisori e collaboratori di contenuti**, in particolare Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila e Snigdha Agarwal +**🙏 Un ringraziamento speciale 🙏 ai nostri Microsoft Student Ambassador autori, revisori e contributori di contenuti**, in particolare Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila e Snigdha Agarwal -**🤩 Gratitudine extra ai Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi e Vidushi Gupta per le nostre lezioni in R!** +**🤩 Ulteriore gratitudine ai Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi e Vidushi Gupta per le nostre lezioni in R!** -# Per iniziare +# Iniziare -Segui questi passaggi: -1. **Fork del Repository**: Clicca sul pulsante "Fork" in alto a destra di questa pagina. +Segui questi passaggi: +1. **Forka il Repository**: Clicca sul pulsante "Fork" in alto a destra di questa pagina. 2. **Clona il Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [trova tutte le risorse aggiuntive per questo corso nella nostra raccolta Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [trova tutte le risorse aggiuntive per questo corso nella nostra collezione Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) > 🔧 **Hai bisogno di aiuto?** Consulta la nostra [Guida alla Risoluzione dei Problemi](TROUBLESHOOTING.md) per soluzioni ai problemi comuni di installazione, configurazione e esecuzione delle lezioni. -**[Studenti](https://aka.ms/student-page)**, per utilizzare questo curriculum, fai il fork dell'intero repository sul tuo account GitHub e completa gli esercizi da solo o con un gruppo: -- Inizia con un quiz pre-lezione. -- Leggi la lezione e completa le attività, fermandoti e riflettendo a ogni verifica delle conoscenze. -- Cerca di creare i progetti comprendendo le lezioni piuttosto che eseguire il codice della soluzione; tuttavia, quel codice è disponibile nelle cartelle `/solution` in ogni lezione orientata al progetto. -- Fai il quiz post-lezione. -- Completa la sfida. -- Completa il compito. -- Dopo aver completato un gruppo di lezioni, visita il [Forum di Discussione](https://github.com/microsoft/ML-For-Beginners/discussions) e "impara ad alta voce" compilando il rubric PAT appropriato. Un 'PAT' è uno strumento di valutazione del progresso che è un rubric che compili per approfondire il tuo apprendimento. Puoi anche reagire ad altri PAT per imparare insieme. +**[Studenti](https://aka.ms/student-page)**, per usare questo curriculum, forkate l'intero repo sul vostro account GitHub e completate gli esercizi da soli o in gruppo: -> Per ulteriori studi, ti consigliamo di seguire questi moduli e percorsi di apprendimento [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +- Iniziate con un quiz pre-lezione. +- Leggete la lezione e completate le attività, fermandovi e riflettendo a ogni verifica di conoscenza. +- Cercate di creare i progetti comprendendo le lezioni piuttosto che eseguendo il codice soluzione; tuttavia quel codice è disponibile nelle cartelle `/solution` in ogni lezione orientata al progetto. +- Fate il quiz post-lezione. +- Completate la sfida. +- Completate il compito. +- Dopo aver completato un gruppo di lezioni, visitate il [Forum di Discussione](https://github.com/microsoft/ML-For-Beginners/discussions) e "imparate ad alta voce" compilando la rubrica PAT appropriata. Un 'PAT' è uno Strumento di Valutazione del Progresso che è una rubrica che compilate per approfondire il vostro apprendimento. Potete anche reagire ad altri PAT così possiamo imparare insieme. -**Insegnanti**, abbiamo [incluso alcune indicazioni](for-teachers.md) su come utilizzare questo curriculum. +> Per ulteriori studi, consigliamo di seguire questi moduli e percorsi di apprendimento [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). + +**Insegnanti**, abbiamo [incluso alcuni suggerimenti](for-teachers.md) su come usare questo curriculum. --- -## Video tutorial +## Video esplicativi -Alcune delle lezioni sono disponibili come video brevi. Puoi trovare tutti questi video integrati nelle lezioni o nella [playlist ML per Principianti sul canale YouTube Microsoft Developer](https://aka.ms/ml-beginners-videos) cliccando sull'immagine qui sotto. +Alcune lezioni sono disponibili come video brevi. Potete trovarli tutti in linea nelle lezioni, o nella [playlist ML for Beginners sul canale YouTube Microsoft Developer](https://aka.ms/ml-beginners-videos) cliccando sull'immagine qui sotto. -[![Banner ML per principianti](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.it.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.it.png)](https://aka.ms/ml-beginners-videos) --- ## Incontra il Team -[![Video promozionale](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **Gif di** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) @@ -93,119 +96,128 @@ Alcune delle lezioni sono disponibili come video brevi. Puoi trovare tutti quest ## Pedagogia -Abbiamo scelto due principi pedagogici durante la creazione di questo curriculum: garantire che sia basato su **progetti pratici** e che includa **quiz frequenti**. Inoltre, questo curriculum ha un **tema comune** per dargli coesione. +Abbiamo scelto due principi pedagogici durante la costruzione di questo curriculum: garantire che sia pratico e **basato su progetti** e che includa **quiz frequenti**. Inoltre, questo curriculum ha un **tema** comune per dargli coesione. -Garantendo che i contenuti siano allineati ai progetti, il processo diventa più coinvolgente per gli studenti e la ritenzione dei concetti sarà aumentata. Inoltre, un quiz a basso rischio prima di una lezione orienta lo studente verso l'apprendimento di un argomento, mentre un secondo quiz dopo la lezione garantisce una maggiore ritenzione. Questo curriculum è stato progettato per essere flessibile e divertente e può essere seguito interamente o in parte. I progetti iniziano piccoli e diventano sempre più complessi entro la fine del ciclo di 12 settimane. Questo curriculum include anche un postscript sulle applicazioni reali del ML, che può essere utilizzato come credito extra o come base per discussioni. +Garantendo che il contenuto sia allineato ai progetti, il processo diventa più coinvolgente per gli studenti e la ritenzione dei concetti sarà aumentata. Inoltre, un quiz a bassa pressione prima della lezione imposta l'intenzione dello studente verso l'apprendimento di un argomento, mentre un secondo quiz dopo la lezione assicura una maggiore ritenzione. Questo curriculum è stato progettato per essere flessibile e divertente e può essere seguito interamente o in parte. I progetti iniziano piccoli e diventano sempre più complessi entro la fine del ciclo di 12 settimane. Questo curriculum include anche un post scriptum sulle applicazioni reali del ML, che può essere usato come credito extra o come base per la discussione. -> Trova il nostro [Codice di Condotta](CODE_OF_CONDUCT.md), [Contributi](CONTRIBUTING.md), [Traduzioni](TRANSLATIONS.md) e [Guida alla Risoluzione dei Problemi](TROUBLESHOOTING.md). Accogliamo con favore i tuoi feedback costruttivi! +> Trova le nostre linee guida [Codice di Condotta](CODE_OF_CONDUCT.md), [Contributi](CONTRIBUTING.md), [Traduzioni](TRANSLATIONS.md) e [Risoluzione Problemi](TROUBLESHOOTING.md). Accogliamo con piacere i tuoi feedback costruttivi! ## Ogni lezione include -- sketchnote opzionale -- video supplementare opzionale -- video tutorial (solo alcune lezioni) -- [quiz di riscaldamento pre-lezione](https://ff-quizzes.netlify.app/en/ml/) -- lezione scritta -- per lezioni basate su progetti, guide passo-passo su come costruire il progetto -- verifiche delle conoscenze -- una sfida -- letture supplementari -- compito +- sketchnote opzionale +- video supplementare opzionale +- video esplicativo (solo alcune lezioni) +- [quiz di riscaldamento pre-lezione](https://ff-quizzes.netlify.app/en/ml/) +- lezione scritta +- per lezioni basate su progetti, guide passo-passo su come costruire il progetto +- verifiche di conoscenza +- una sfida +- letture supplementari +- compito - [quiz post-lezione](https://ff-quizzes.netlify.app/en/ml/) -> **Nota sulle lingue**: Queste lezioni sono principalmente scritte in Python, ma molte sono disponibili anche in R. Per completare una lezione in R, vai alla cartella `/solution` e cerca le lezioni in R. Includono un'estensione .rmd che rappresenta un file **R Markdown**, che può essere semplicemente definito come un'integrazione di `blocchi di codice` (di R o altre lingue) e un `intestazione YAML` (che guida come formattare gli output come PDF) in un `documento Markdown`. In quanto tale, serve come un eccellente framework di authoring per la data science poiché ti consente di combinare il tuo codice, il suo output e i tuoi pensieri scrivendoli in Markdown. Inoltre, i documenti R Markdown possono essere resi in formati di output come PDF, HTML o Word. +> **Una nota sulle lingue**: Queste lezioni sono principalmente scritte in Python, ma molte sono disponibili anche in R. Per completare una lezione in R, vai alla cartella `/solution` e cerca le lezioni in R. Includono un'estensione .rmd che rappresenta un file **R Markdown** che può essere semplicemente definito come un embedding di `blocchi di codice` (di R o altre lingue) e un `intestazione YAML` (che guida come formattare output come PDF) in un `documento Markdown`. Come tale, serve come un eccellente framework di authoring per la data science poiché ti permette di combinare il tuo codice, il suo output e i tuoi pensieri scrivendoli in Markdown. Inoltre, i documenti R Markdown possono essere resi in formati di output come PDF, HTML o Word. -> **Nota sui quiz**: Tutti i quiz sono contenuti nella [cartella Quiz App](../../quiz-app), per un totale di 52 quiz di tre domande ciascuno. Sono collegati all'interno delle lezioni, ma l'app quiz può essere eseguita localmente; segui le istruzioni nella cartella `quiz-app` per ospitare localmente o distribuire su Azure. +> **Una nota sui quiz**: Tutti i quiz sono contenuti nella [cartella Quiz App](../../quiz-app), per un totale di 52 quiz con tre domande ciascuno. Sono collegati all'interno delle lezioni ma l'app quiz può essere eseguita localmente; segui le istruzioni nella cartella `quiz-app` per ospitare localmente o distribuire su Azure. | Numero Lezione | Argomento | Raggruppamento Lezione | Obiettivi di Apprendimento | Lezione Collegata | Autore | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Introduzione al machine learning | [Introduzione](1-Introduction/README.md) | Scopri i concetti di base del machine learning | [Lezione](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | La storia del machine learning | [Introduzione](1-Introduction/README.md) | Scopri la storia che sta alla base di questo campo | [Lezione](1-Introduction/2-history-of-ML/README.md) | Jen e Amy | -| 03 | Equità e machine learning | [Introduzione](1-Introduction/README.md) | Quali sono le questioni filosofiche importanti sull'equità che gli studenti dovrebbero considerare quando costruiscono e applicano modelli ML? | [Lezione](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Tecniche per il machine learning | [Introduzione](1-Introduction/README.md) | Quali tecniche utilizzano i ricercatori ML per costruire modelli ML? | [Lezione](1-Introduction/4-techniques-of-ML/README.md) | Chris e Jen | -| 05 | Introduzione alla regressione | [Regressione](2-Regression/README.md) | Inizia con Python e Scikit-learn per i modelli di regressione | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Prezzi delle zucche in Nord America 🎃 | [Regressione](2-Regression/README.md) | Visualizza e pulisci i dati in preparazione per il ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Prezzi delle zucche in Nord America 🎃 | [Regressione](2-Regression/README.md) | Costruisci modelli di regressione lineare e polinomiale | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen e Dmitry • Eric Wanjau | -| 08 | Prezzi delle zucche in Nord America 🎃 | [Regressione](2-Regression/README.md) | Costruisci un modello di regressione logistica | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Un'app web 🔌 | [App Web](3-Web-App/README.md) | Costruisci un'app web per utilizzare il tuo modello addestrato | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Introduzione alla classificazione | [Classificazione](4-Classification/README.md) | Pulisci, prepara e visualizza i tuoi dati; introduzione alla classificazione | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen e Cassie • Eric Wanjau | -| 11 | Deliziose cucine asiatiche e indiane 🍜 | [Classificazione](4-Classification/README.md) | Introduzione ai classificatori | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen e Cassie • Eric Wanjau | -| 12 | Deliziose cucine asiatiche e indiane 🍜 | [Classificazione](4-Classification/README.md) | Altri classificatori | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen e Cassie • Eric Wanjau | -| 13 | Deliziose cucine asiatiche e indiane 🍜 | [Classificazione](4-Classification/README.md) | Costruisci un'app web di raccomandazione utilizzando il tuo modello | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Introduzione al clustering | [Clustering](5-Clustering/README.md) | Pulisci, prepara e visualizza i tuoi dati; introduzione al clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Esplorazione dei gusti musicali nigeriani 🎧 | [Clustering](5-Clustering/README.md) | Esplora il metodo di clustering 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 | Introduzione all'elaborazione del linguaggio naturale ☕️ | [Elaborazione del linguaggio naturale](6-NLP/README.md) | Scopri le basi dell'NLP costruendo un semplice bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Compiti comuni di NLP ☕️ | [Elaborazione del linguaggio naturale](6-NLP/README.md) | Approfondisci la tua conoscenza dell'NLP comprendendo i compiti comuni richiesti quando si trattano strutture linguistiche | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Traduzione e analisi del sentiment ♥️ | [Elaborazione del linguaggio naturale](6-NLP/README.md) | Traduzione e analisi del sentiment con Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Hotel romantici in Europa ♥️ | [Elaborazione del linguaggio naturale](6-NLP/README.md) | Analisi del sentiment con recensioni di hotel 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Hotel romantici in Europa ♥️ | [Elaborazione del linguaggio naturale](6-NLP/README.md) | Analisi del sentiment con recensioni di hotel 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Introduzione alla previsione delle serie temporali | [Serie temporali](7-TimeSeries/README.md) | Introduzione alla previsione delle serie temporali | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Consumo energetico mondiale ⚡️ - previsione con ARIMA | [Serie temporali](7-TimeSeries/README.md) | Previsione delle serie temporali con ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Consumo energetico mondiale ⚡️ - previsione con SVR | [Serie temporali](7-TimeSeries/README.md) | Previsione delle serie temporali con Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Introduzione al reinforcement learning | [Reinforcement learning](8-Reinforcement/README.md) | Introduzione al reinforcement learning con Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Aiuta Peter a evitare il lupo! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Scenari e applicazioni ML nel mondo reale | [ML nel mondo reale](9-Real-World/README.md) | Applicazioni interessanti e rivelatrici del ML classico nel mondo reale | [Lezione](9-Real-World/1-Applications/README.md) | Team | -| Postscript | Debugging dei modelli ML con dashboard RAI | [ML nel mondo reale](9-Real-World/README.md) | Debugging dei modelli di Machine Learning utilizzando i componenti del dashboard Responsible AI | [Lezione](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [trova tutte le risorse aggiuntive per questo corso nella nostra raccolta Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 01 | Introduzione al machine learning | [Introduction](1-Introduction/README.md) | Impara i concetti base dietro il machine learning | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | La storia del machine learning | [Introduction](1-Introduction/README.md) | Scopri la storia alla base di questo campo | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Equità e machine learning | [Introduction](1-Introduction/README.md) | Quali sono le importanti questioni filosofiche sull’equità che gli studenti dovrebbero considerare quando costruiscono e applicano modelli ML? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Tecniche per il machine learning | [Introduction](1-Introduction/README.md) | Quali tecniche usano i ricercatori ML per costruire modelli ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Introduzione alla regressione | [Regression](2-Regression/README.md) | Inizia con Python e Scikit-learn per modelli di regressione | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Prezzi delle zucche in Nord America 🎃 | [Regression](2-Regression/README.md) | Visualizza e pulisci i dati in preparazione per ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Prezzi delle zucche in Nord America 🎃 | [Regression](2-Regression/README.md) | Costruisci modelli di regressione lineare e polinomiale | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Prezzi delle zucche in Nord America 🎃 | [Regression](2-Regression/README.md) | Costruisci un modello di regressione logistica | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Un'app Web 🔌 | [Web App](3-Web-App/README.md) | Costruisci un'app web per usare il tuo modello addestrato | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Introduzione alla classificazione | [Classification](4-Classification/README.md) | Pulisci, prepara e visualizza i tuoi dati; introduzione alla classificazione | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Deliziose cucine asiatiche e indiane 🍜 | [Classification](4-Classification/README.md) | Introduzione ai classificatori | [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 | Deliziose cucine asiatiche e indiane 🍜 | [Classification](4-Classification/README.md) | Altri classificatori | [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 | Deliziose cucine asiatiche e indiane 🍜 | [Classification](4-Classification/README.md) | Costruisci un'app web di raccomandazione usando il tuo modello | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Introduzione al clustering | [Clustering](5-Clustering/README.md) | Pulisci, prepara e visualizza i tuoi dati; introduzione al clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Esplorando i gusti musicali nigeriani 🎧 | [Clustering](5-Clustering/README.md) | Esplora il metodo di clustering 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 | Introduzione al natural language processing ☕️ | [Natural language processing](6-NLP/README.md) | Impara le basi del NLP costruendo un semplice bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Compiti comuni di NLP ☕️ | [Natural language processing](6-NLP/README.md) | Approfondisci la tua conoscenza del NLP comprendendo i compiti comuni richiesti quando si lavora con strutture linguistiche | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Traduzione e analisi del sentiment ♥️ | [Natural language processing](6-NLP/README.md) | Traduzione e analisi del sentiment con Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Hotel romantici d'Europa ♥️ | [Natural language processing](6-NLP/README.md) | Analisi del sentiment con recensioni di hotel 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Hotel romantici d'Europa ♥️ | [Natural language processing](6-NLP/README.md) | Analisi del sentiment con recensioni di hotel 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Introduzione alla previsione di serie temporali | [Time series](7-TimeSeries/README.md) | Introduzione alla previsione di serie temporali | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Consumo energetico mondiale ⚡️ - previsione con ARIMA | [Time series](7-TimeSeries/README.md) | Previsione di serie temporali con ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Consumo energetico mondiale ⚡️ - previsione con SVR | [Time series](7-TimeSeries/README.md) | Previsione di serie temporali con Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Introduzione al reinforcement learning | [Reinforcement learning](8-Reinforcement/README.md) | Introduzione al reinforcement learning con Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Aiuta Peter a evitare il lupo! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Scenari e applicazioni reali di ML | [ML in the Wild](9-Real-World/README.md) | Applicazioni interessanti e rivelatrici del ML classico nel mondo reale | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Debugging di modelli ML usando la dashboard RAI | [ML in the Wild](9-Real-World/README.md) | Debugging di modelli di Machine Learning usando componenti della dashboard Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [trova tutte le risorse aggiuntive per questo corso nella nostra collezione Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Accesso offline -Puoi eseguire questa documentazione offline utilizzando [Docsify](https://docsify.js.org/#/). Fai un fork di questo repository, [installa Docsify](https://docsify.js.org/#/quickstart) sulla tua macchina locale e poi nella cartella principale di questo repository digita `docsify serve`. Il sito web sarà servito sulla porta 3000 del tuo localhost: `localhost:3000`. +Puoi eseguire questa documentazione offline usando [Docsify](https://docsify.js.org/#/). Fai il fork di questo repo, [installa Docsify](https://docsify.js.org/#/quickstart) sulla tua macchina locale, e poi nella cartella radice di questo repo, digita `docsify serve`. Il sito web sarà servito sulla porta 3000 sul tuo localhost: `localhost:3000`. ## PDF -Trova un PDF del curriculum con i link [qui](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Trova un pdf del curriculum con link [qui](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). + -## 🎒 Altri Corsi +## 🎒 Altri corsi -Il nostro team produce altri corsi! Dai un'occhiata: +Il nostro team produce altri corsi! Dai un’occhiata: -### Azure / Edge / MCP / Agenti -[![AZD per Principianti](https://img.shields.io/badge/AZD%20per%20Principianti-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI per Principianti](https://img.shields.io/badge/Edge%20AI%20per%20Principianti-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP per Principianti](https://img.shields.io/badge/MCP%20per%20Principianti-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Agenti AI per Principianti](https://img.shields.io/badge/Agenti%20AI%20per%20Principianti-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Serie Generative AI -[![Generative AI per Principianti](https://img.shields.io/badge/Generative%20AI%20per%20Principianti-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + +### Serie AI Generativa +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### Apprendimento Core -[![ML per Principianti](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science per Principianti](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI per Principianti](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cybersecurity per Principianti](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Sviluppo Web per Principianti](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT per Principianti](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Sviluppo XR per Principianti](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Serie Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Serie Copilot -[![Copilot per Programmazione Assistita da AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot per C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Avventura Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Ottenere Aiuto +## Ottenere Aiuto -Se ti trovi bloccato o hai domande sulla creazione di app AI, unisciti ad altri studenti e sviluppatori esperti nelle discussioni su MCP. È una comunità di supporto dove le domande sono benvenute e la conoscenza viene condivisa liberamente. +Se rimani bloccato o hai domande sulla creazione di app AI. Unisciti ad altri studenti e sviluppatori esperti nelle discussioni su MCP. È una comunità di supporto dove le domande sono benvenute e la conoscenza viene condivisa liberamente. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Se hai feedback sui prodotti o riscontri errori durante la creazione, visita: +Se hai feedback sul prodotto o errori durante la creazione visita: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Clausola di esclusione della responsabilità**: -Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si consiglia una traduzione professionale umana. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Pur impegnandoci per garantire l’accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un umano. Non ci assumiamo alcuna responsabilità per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione. \ No newline at end of file diff --git a/translations/ja/README.md b/translations/ja/README.md index c16135366..78361f829 100644 --- a/translations/ja/README.md +++ b/translations/ja/README.md @@ -1,83 +1,83 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 多言語対応 -#### GitHub Actionによるサポート(自動化&常に最新) +#### GitHub Actionsによるサポート(自動化&常に最新) -[アラビア語](../ar/README.md) | [ベンガル語](../bn/README.md) | [ブルガリア語](../bg/README.md) | [ビルマ語(ミャンマー)](../my/README.md) | [中国語(簡体字)](../zh/README.md) | [中国語(繁体字、香港)](../hk/README.md) | [中国語(繁体字、マカオ)](../mo/README.md) | [中国語(繁体字、台湾)](../tw/README.md) | [クロアチア語](../hr/README.md) | [チェコ語](../cs/README.md) | [デンマーク語](../da/README.md) | [オランダ語](../nl/README.md) | [エストニア語](../et/README.md) | [フィンランド語](../fi/README.md) | [フランス語](../fr/README.md) | [ドイツ語](../de/README.md) | [ギリシャ語](../el/README.md) | [ヘブライ語](../he/README.md) | [ヒンディー語](../hi/README.md) | [ハンガリー語](../hu/README.md) | [インドネシア語](../id/README.md) | [イタリア語](../it/README.md) | [日本語](./README.md) | [韓国語](../ko/README.md) | [リトアニア語](../lt/README.md) | [マレー語](../ms/README.md) | [マラーティー語](../mr/README.md) | [ネパール語](../ne/README.md) | [ナイジェリア・ピジン語](../pcm/README.md) | [ノルウェー語](../no/README.md) | [ペルシャ語(ファルシー)](../fa/README.md) | [ポーランド語](../pl/README.md) | [ポルトガル語(ブラジル)](../br/README.md) | [ポルトガル語(ポルトガル)](../pt/README.md) | [パンジャブ語(グルムキー)](../pa/README.md) | [ルーマニア語](../ro/README.md) | [ロシア語](../ru/README.md) | [セルビア語(キリル文字)](../sr/README.md) | [スロバキア語](../sk/README.md) | [スロベニア語](../sl/README.md) | [スペイン語](../es/README.md) | [スワヒリ語](../sw/README.md) | [スウェーデン語](../sv/README.md) | [タガログ語(フィリピン)](../tl/README.md) | [タミル語](../ta/README.md) | [タイ語](../th/README.md) | [トルコ語](../tr/README.md) | [ウクライナ語](../uk/README.md) | [ウルドゥー語](../ur/README.md) | [ベトナム語](../vi/README.md) +[アラビア語](../ar/README.md) | [ベンガル語](../bn/README.md) | [ブルガリア語](../bg/README.md) | [ビルマ語(ミャンマー)](../my/README.md) | [中国語(簡体字)](../zh/README.md) | [中国語(繁体字、香港)](../hk/README.md) | [中国語(繁体字、マカオ)](../mo/README.md) | [中国語(繁体字、台湾)](../tw/README.md) | [クロアチア語](../hr/README.md) | [チェコ語](../cs/README.md) | [デンマーク語](../da/README.md) | [オランダ語](../nl/README.md) | [エストニア語](../et/README.md) | [フィンランド語](../fi/README.md) | [フランス語](../fr/README.md) | [ドイツ語](../de/README.md) | [ギリシャ語](../el/README.md) | [ヘブライ語](../he/README.md) | [ヒンディー語](../hi/README.md) | [ハンガリー語](../hu/README.md) | [インドネシア語](../id/README.md) | [イタリア語](../it/README.md) | [日本語](./README.md) | [カンナダ語](../kn/README.md) | [韓国語](../ko/README.md) | [リトアニア語](../lt/README.md) | [マレー語](../ms/README.md) | [マラヤーラム語](../ml/README.md) | [マラーティー語](../mr/README.md) | [ネパール語](../ne/README.md) | [ナイジェリア・ピジン語](../pcm/README.md) | [ノルウェー語](../no/README.md) | [ペルシャ語(ファルシ)](../fa/README.md) | [ポーランド語](../pl/README.md) | [ポルトガル語(ブラジル)](../br/README.md) | [ポルトガル語(ポルトガル)](../pt/README.md) | [パンジャブ語(グルムキー)](../pa/README.md) | [ルーマニア語](../ro/README.md) | [ロシア語](../ru/README.md) | [セルビア語(キリル)](../sr/README.md) | [スロバキア語](../sk/README.md) | [スロベニア語](../sl/README.md) | [スペイン語](../es/README.md) | [スワヒリ語](../sw/README.md) | [スウェーデン語](../sv/README.md) | [タガログ語(フィリピン)](../tl/README.md) | [タミル語](../ta/README.md) | [テルグ語](../te/README.md) | [タイ語](../th/README.md) | [トルコ語](../tr/README.md) | [ウクライナ語](../uk/README.md) | [ウルドゥー語](../ur/README.md) | [ベトナム語](../vi/README.md) #### コミュニティに参加しよう [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -現在、DiscordでAI学習シリーズを開催中です。詳細を確認し、2025年9月18日から30日までの[Learn with AI Series](https://aka.ms/learnwithai/discord)に参加してください。GitHub Copilotを使ったデータサイエンスのコツやテクニックを学べます。 +Discordで「Learn with AI」シリーズを開催中です。2025年9月18日~30日に[Learn with AI Series](https://aka.ms/learnwithai/discord)で詳細を確認し、参加してください。GitHub Copilotを使ったデータサイエンスのヒントやコツが得られます。 ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ja.png) -# 初心者向け機械学習 - カリキュラム +# 初心者のための機械学習 - カリキュラム -> 🌍 世界中を旅しながら、世界の文化を通じて機械学習を学びましょう 🌍 +> 🌍 世界の文化を通じて機械学習を探求しながら世界を旅しよう 🌍 -Microsoftのクラウドアドボケイトが提供する12週間、26レッスンのカリキュラムで、**機械学習**について学びましょう。このカリキュラムでは、主にScikit-learnライブラリを使用し、**クラシック機械学習**と呼ばれることもある技術を学びます。深層学習については、[AI for Beginnersのカリキュラム](https://aka.ms/ai4beginners)で扱っています。また、このレッスンを['Data Science for Beginners'カリキュラム](https://aka.ms/ds4beginners)と組み合わせて学ぶこともできます。 +MicrosoftのCloud Advocatesは、**機械学習**に関する12週間、26レッスンのカリキュラムを提供します。このカリキュラムでは、主にScikit-learnを使ったいわゆる**古典的機械学習**を学びます。深層学習は[AI for Beginnersのカリキュラム](https://aka.ms/ai4beginners)で扱っています。これらのレッスンは[Data Science for Beginnersのカリキュラム](https://aka.ms/ds4beginners)と組み合わせて学習することもできます。 -世界中のデータを使ってクラシックな技術を応用しながら、私たちと一緒に旅をしましょう。各レッスンには、事前・事後のクイズ、レッスンを完了するための書面による指示、解答、課題などが含まれています。プロジェクトベースの教育法により、学びながら構築することで、新しいスキルを身につけることができます。 +世界中のデータにこれらの古典的手法を適用しながら旅をしましょう。各レッスンには、事前・事後のクイズ、レッスンの手順、解答例、課題などが含まれています。プロジェクトベースの教育法により、作りながら学ぶことで新しいスキルが定着しやすくなります。 -**✍️ 著者の皆さんに感謝** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu, Amy Boyd +**✍️ 著者の皆様に心から感謝します** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu、Amy Boyd -**🎨 イラストレーターの皆さんにも感謝** Tomomi Imura, Dasani Madipalli, Jen Looper +**🎨 イラストレーターの皆様にも感謝します** Tomomi Imura、Dasani Madipalli、Jen Looper -**🙏 Microsoft Student Ambassadorの著者、レビューアー、コンテンツ提供者の皆さんに特別な感謝を** Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, Snigdha Agarwal +**🙏 特別な感謝 🙏 Microsoft Student Ambassadorの著者、レビュアー、コンテンツ寄稿者の皆様へ** 特にRishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila、Snigdha Agarwal -**🤩 Rレッスンに貢献してくれたMicrosoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, Vidushi Guptaに特別な感謝を!** +**🤩 Microsoft Student Ambassadors Eric Wanjau、Jasleen Sondhi、Vidushi GuptaにはRレッスンで特に感謝!** -# 始め方 +# はじめに 以下の手順に従ってください: -1. **リポジトリをフォークする**: このページ右上の「Fork」ボタンをクリックしてください。 -2. **リポジトリをクローンする**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +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) +> [このコースの追加リソースはMicrosoft Learnコレクションで確認できます](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **ヘルプが必要ですか?** [トラブルシューティングガイド](TROUBLESHOOTING.md)を確認して、インストール、セットアップ、レッスン実行に関する一般的な問題の解決策を見つけてください。 +> 🔧 **困ったときは?** インストール、セットアップ、レッスン実行のよくある問題は[トラブルシューティングガイド](TROUBLESHOOTING.md)を参照してください。 -**[学生の皆さん](https://aka.ms/student-page)**、このカリキュラムを使用するには、リポジトリ全体を自分のGitHubアカウントにフォークし、個人またはグループで演習を完了してください: +**[学生の皆さん](https://aka.ms/student-page)**、このカリキュラムを使うには、リポジトリ全体を自分のGitHubアカウントにフォークし、個人またはグループで演習を進めてください: -- レクチャー前のクイズから始めましょう。 -- レクチャーを読み、各知識チェックで一時停止して反省しながら活動を完了してください。 -- レッスンを理解しながらプロジェクトを作成することを試みてください。ただし、解答コードは各プロジェクト指向レッスンの`/solution`フォルダーにあります。 -- レクチャー後のクイズを受けてください。 -- チャレンジを完了してください。 -- 課題を完了してください。 -- レッスングループを完了した後、[ディスカッションボード](https://github.com/microsoft/ML-For-Beginners/discussions)にアクセスし、適切なPATルーブリックを記入して「声に出して学びましょう」。PATは進捗評価ツールであり、学習をさらに進めるために記入するルーブリックです。他のPATに反応することで、一緒に学ぶことができます。 +- 事前クイズから始める。 +- レクチャーを読み、各知識チェックで立ち止まり振り返りながら活動を完了する。 +- 解答コードを実行するのではなく、レッスンの内容を理解してプロジェクトを作成することを目指す。ただし、解答コードは各プロジェクト指向レッスンの`/solution`フォルダーにあります。 +- 事後クイズを受ける。 +- チャレンジを完了する。 +- 課題を完了する。 +- レッスングループを終えたら、[ディスカッションボード](https://github.com/microsoft/ML-For-Beginners/discussions)を訪れて、適切なPATルーブリックを記入し「学びを声に出して」共有してください。PATは進捗評価ツールで、学習を深めるためのルーブリックです。他のPATにリアクションすることもでき、共に学べます。 -> さらに学習するには、これらの[Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott)モジュールと学習パスをフォローすることをお勧めします。 +> さらなる学習には、これらの[Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott)モジュールと学習パスをお勧めします。 -**教師の皆さん**、このカリキュラムの使用方法について[いくつかの提案](for-teachers.md)を含めています。 +**教師の皆様へ**、このカリキュラムの使い方に関する[提案](for-teachers.md)を用意しています。 --- ## ビデオウォークスルー -一部のレッスンは短い形式のビデオとして利用可能です。これらはレッスン内でインラインで見つけることができます。または、以下の画像をクリックしてMicrosoft Developer YouTubeチャンネルの[ML for Beginnersプレイリスト](https://aka.ms/ml-beginners-videos)で確認してください。 +一部のレッスンは短い動画で提供されています。レッスン内で直接視聴できるほか、[Microsoft Developer YouTubeチャンネルのML for Beginnersプレイリスト](https://aka.ms/ml-beginners-videos)でもご覧いただけます。下の画像をクリックしてください。 [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ja.png)](https://aka.ms/ml-beginners-videos) @@ -89,81 +89,88 @@ Microsoftのクラウドアドボケイトが提供する12週間、26レッス **Gif作成者** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 上の画像をクリックして、プロジェクトと作成者についてのビデオをご覧ください! +> 🎥 上の画像をクリックすると、プロジェクトと作成者についての動画が見られます! --- -## 教育法 +## 教育方針 -このカリキュラムを構築する際に選んだ教育的な原則は、**プロジェクトベース**であることと、**頻繁なクイズ**を含むことです。また、このカリキュラムには共通の**テーマ**があり、統一感を持たせています。 +このカリキュラム作成にあたり、2つの教育方針を選びました:実践的な**プロジェクトベース**であること、そして**頻繁なクイズ**を含むことです。さらに、カリキュラム全体に共通の**テーマ**を持たせています。 -プロジェクトに合わせてコンテンツを整えることで、学生にとってより魅力的なプロセスとなり、概念の保持が向上します。また、授業前の低リスクのクイズは、学生がトピックを学ぶ意図を設定し、授業後のクイズはさらに保持を確実にします。このカリキュラムは柔軟で楽しいものとして設計されており、全体または部分的に受講することができます。プロジェクトは小さなものから始まり、12週間のサイクルの終わりにはますます複雑になります。このカリキュラムには、MLの実世界での応用に関する後書きも含まれており、追加のクレジットや議論の基礎として使用できます。 +内容をプロジェクトに合わせることで、学生の興味を引きつけ、概念の定着を促進します。授業前の低リスクなクイズは学習意欲を高め、授業後のクイズは理解の定着を助けます。このカリキュラムは柔軟で楽しく、全体または一部だけでも学習可能です。プロジェクトは小さく始まり、12週間の終わりにはより複雑になります。また、実世界での機械学習の応用に関する追記もあり、追加課題や議論の材料として利用できます。 -> [行動規範](CODE_OF_CONDUCT.md)、[貢献](CONTRIBUTING.md)、[翻訳](TRANSLATIONS.md)、[トラブルシューティング](TROUBLESHOOTING.md)ガイドラインをご覧ください。建設的なフィードバックを歓迎します! +> [行動規範](CODE_OF_CONDUCT.md)、[貢献ガイド](CONTRIBUTING.md)、[翻訳ガイド](TRANSLATIONS.md)、[トラブルシューティング](TROUBLESHOOTING.md)を参照してください。建設的なフィードバックを歓迎します! -## 各レッスンには以下が含まれます +## 各レッスンに含まれるもの -- オプションのスケッチノート -- オプションの補足ビデオ +- 任意のスケッチノート +- 任意の補足ビデオ - ビデオウォークスルー(一部のレッスンのみ) -- [レクチャー前のウォームアップクイズ](https://ff-quizzes.netlify.app/en/ml/) +- [事前ウォームアップクイズ](https://ff-quizzes.netlify.app/en/ml/) - 書面によるレッスン -- プロジェクトベースのレッスンの場合、プロジェクトを構築するためのステップバイステップガイド +- プロジェクトベースのレッスンでは、プロジェクト作成のステップバイステップガイド - 知識チェック - チャレンジ - 補足読書 - 課題 -- [レクチャー後のクイズ](https://ff-quizzes.netlify.app/en/ml/) +- [事後クイズ](https://ff-quizzes.netlify.app/en/ml/) -> **言語についての注意**: これらのレッスンは主にPythonで書かれていますが、多くはRでも利用可能です。Rレッスンを完了するには、`/solution`フォルダーに移動し、Rレッスンを探してください。それらは`.rmd`拡張子を含み、**R Markdown**ファイルを表します。これは、`コードチャンク`(Rや他の言語のもの)と`YAMLヘッダー`(PDFなどの出力形式をガイドするもの)を`Markdownドキュメント`に埋め込むことを簡単に定義できます。このようにして、コード、出力、考えをMarkdownに書き込むことで、データサイエンスのための優れた著作フレームワークとして機能します。さらに、R MarkdownドキュメントはPDF、HTML、Wordなどの出力形式にレンダリングできます。 +> **言語についての注意**:これらのレッスンは主にPythonで書かれていますが、多くはRでも利用可能です。Rレッスンを完了するには、`/solution`フォルダー内のRレッスンを探してください。これらは`.rmd`拡張子の**R Markdown**ファイルで、`コードチャンク`(Rや他の言語)と`YAMLヘッダー`(PDFなどの出力形式を指定)をMarkdown文書に埋め込んだものです。コード、出力、考えをMarkdownで記述できるため、データサイエンスの優れた著述フレームワークとなっています。R Markdown文書はPDF、HTML、Wordなどの形式にレンダリング可能です。 -> **クイズについての注意**: すべてのクイズは[Quiz Appフォルダー](../../quiz-app)に含まれており、合計52のクイズが各3問ずつあります。これらはレッスン内からリンクされていますが、クイズアプリはローカルで実行できます。`quiz-app`フォルダーの指示に従ってローカルホストまたはAzureにデプロイしてください。 +> **クイズについての注意**:全てのクイズは[Quiz Appフォルダー](../../quiz-app)にあり、合計52回分、各3問です。レッスン内からリンクされていますが、クイズアプリはローカルでも実行可能です。`quiz-app`フォルダー内の指示に従い、ローカルホストまたはAzureへのデプロイが可能です。 -| レッスン番号 | トピック | レッスングループ | 学習目標 | リンクされたレッスン | 著者 | +| レッスン番号 | トピック | レッスングループ | 学習目標 | 関連レッスン | 著者 | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 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) | 学生がMLモデルを構築・適用する際に考慮すべき公平性に関する重要な哲学的問題とは? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | 機械学習の手法 | [Introduction](1-Introduction/README.md) | ML研究者がMLモデルを構築する際に使用する手法とは? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 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) | データを可視化し、MLの準備のためにクリーンアップ | [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 | +| 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 | +| 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-Learningを使った強化学習の紹介 | [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) +| 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) | 強化学習Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | 実世界の機械学習シナリオと応用 | [ML in the Wild](9-Real-World/README.md) | 古典的な機械学習の興味深く示唆に富んだ実世界の応用例 | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | RAIダッシュボードを使った機械学習モデルのデバッグ | [ML in the Wild](9-Real-World/README.md) | Responsible 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`。 +[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)で見つけることができます。 +リンク付きのカリキュラムPDFは[こちら](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)でご覧いただけます。 + ## 🎒 その他のコース -私たちのチームは他のコースも制作しています!ぜひチェックしてください: +私たちのチームは他のコースも制作しています!ぜひご覧ください: +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) [![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -180,35 +187,36 @@ Microsoftのクラウドアドボケイトが提供する12週間、26レッス --- -### 基本学習 -[![初心者向け機械学習](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![初心者向けデータサイエンス](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![初心者向けAI](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![初心者向けサイバーセキュリティ](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![初心者向けWeb開発](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![初心者向けIoT](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![初心者向けXR開発](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +### コアラーニング +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Copilotシリーズ -[![AIペアプログラミング向けCopilot](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![C#/.NET向けCopilot](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilotアドベンチャー](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + +### コパイロットシリーズ +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + ## ヘルプを得る -AIアプリの構築で行き詰まったり質問がある場合は、MCPに関するディスカッションに参加してください。同じ学習者や経験豊富な開発者と交流できる、質問が歓迎され知識が自由に共有されるサポートコミュニティです。 +AIアプリの構築で行き詰まったり質問がある場合は、MCPの学習者や経験豊富な開発者と一緒にディスカッションに参加してください。質問が歓迎され、知識が自由に共有されるサポートコミュニティです。 [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -製品に関するフィードバックや構築中のエラーについては以下を訪問してください: +製品のフィードバックや構築中のエラーがある場合は、以下をご覧ください: [![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**免責事項**: -この文書は、AI翻訳サービス[Co-op Translator](https://github.com/Azure/co-op-translator)を使用して翻訳されています。正確性を期すよう努めておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。原文(元の言語で記載された文書)が公式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用に起因する誤解や誤認について、当方は一切の責任を負いません。 +**免責事項**: +本書類はAI翻訳サービス「Co-op Translator」(https://github.com/Azure/co-op-translator)を使用して翻訳されました。正確性の向上に努めておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。原文の言語による文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や誤訳についても、当方は責任を負いかねます。 \ No newline at end of file diff --git a/translations/kn/1-Introduction/1-intro-to-ML/README.md b/translations/kn/1-Introduction/1-intro-to-ML/README.md new file mode 100644 index 000000000..73e7e30d8 --- /dev/null +++ b/translations/kn/1-Introduction/1-intro-to-ML/README.md @@ -0,0 +1,161 @@ + +# ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ + +## [ಪೂರ್ವ-ಲೇಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +--- + +[![ಆರಂಭಿಕರಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನ - ಆರಂಭಿಕರಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ](https://img.youtube.com/vi/6mSx_KJxcHI/0.jpg)](https://youtu.be/6mSx_KJxcHI "ಆರಂಭಿಕರಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನ - ಆರಂಭಿಕರಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ") + +> 🎥 ಈ ಪಾಠವನ್ನು ಕೆಲಸಮಾಡುವ ಸಣ್ಣ ವೀಡಿಯೊಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. + +ಆರಂಭಿಕರಿಗಾಗಿ ಶ್ರೇಷ್ಟ ಯಂತ್ರ ಅಧ್ಯಯನದ ಈ ಕೋರ್ಸ್‌ಗೆ ಸ್ವಾಗತ! ನೀವು ಈ ವಿಷಯದಲ್ಲಿ ಸಂಪೂರ್ಣ ಹೊಸವರಾಗಿದ್ದೀರಾ ಅಥವಾ ಯಂತ್ರ ಅಧ್ಯಯನದ ಅನುಭವ ಹೊಂದಿರುವವರಾಗಿದ್ದೀರಾ, ನಾವು ನಿಮ್ಮನ್ನು ಸೇರಿಕೊಳ್ಳಲು ಸಂತೋಷಪಡುತ್ತೇವೆ! ನಿಮ್ಮ ಯಂತ್ರ ಅಧ್ಯಯನ ಅಧ್ಯಯನಕ್ಕೆ ಸ್ನೇಹಪೂರ್ಣ ಪ್ರಾರಂಭಿಕ ಸ್ಥಳವನ್ನು ಸೃಷ್ಟಿಸಲು ನಾವು ಬಯಸುತ್ತೇವೆ ಮತ್ತು ನಿಮ್ಮ [ಪ್ರತಿಕ್ರಿಯೆ](https://github.com/microsoft/ML-For-Beginners/discussions) ಅನ್ನು ಮೌಲ್ಯಮಾಪನ, ಪ್ರತಿಕ್ರಿಯೆ ನೀಡಲು ಮತ್ತು ಸೇರಿಸಲು ನಾವು ಇಚ್ಛಿಸುತ್ತೇವೆ. + +[![ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೊ: MIT ನ ಜಾನ್ ಗುಟ್ಟಾಗ್ ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಪರಿಚಯಿಸುತ್ತಾರೆ + +--- +## ಯಂತ್ರ ಅಧ್ಯಯನದೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸುವುದು + +ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಸ್ಥಳೀಯವಾಗಿ ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಚಾಲನೆ ಮಾಡಲು ಸಿದ್ಧಪಡಿಸಬೇಕು. + +- **ಈ ವೀಡಿಯೊಗಳೊಂದಿಗೆ ನಿಮ್ಮ ಯಂತ್ರವನ್ನು ಸಂರಚಿಸಿ**. ನಿಮ್ಮ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ [Python ಅನ್ನು ಹೇಗೆ ಸ್ಥಾಪಿಸುವುದು](https://youtu.be/CXZYvNRIAKM) ಮತ್ತು ಅಭಿವೃದ್ಧಿಗಾಗಿ [ಟೆಕ್ಸ್ಟ್ ಎಡಿಟರ್ ಅನ್ನು ಹೇಗೆ ಸೆಟ್‌ಅಪ್ ಮಾಡುವುದು](https://youtu.be/EU8eayHWoZg) ಎಂಬುದನ್ನು ತಿಳಿಯಲು ಕೆಳಗಿನ ಲಿಂಕ್‌ಗಳನ್ನು ಬಳಸಿ. +- **Python ಕಲಿಯಿರಿ**. ಈ ಕೋರ್ಸ್‌ನಲ್ಲಿ ನಾವು ಬಳಸುವ, ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳಿಗೆ ಉಪಯುಕ್ತವಾದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) ಬಗ್ಗೆ ಮೂಲಭೂತ ತಿಳಿವಳಿಕೆ ಹೊಂದಿರುವುದು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ. +- **Node.js ಮತ್ತು JavaScript ಕಲಿಯಿರಿ**. ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ ನಾವು ಈ ಕೋರ್ಸ್‌ನಲ್ಲಿ ಕೆಲವು ಬಾರಿ JavaScript ಅನ್ನು ಬಳಸುತ್ತೇವೆ, ಆದ್ದರಿಂದ ನೀವು [node](https://nodejs.org) ಮತ್ತು [npm](https://www.npmjs.com/) ಅನ್ನು ಸ್ಥಾಪಿಸಿರಬೇಕು, ಜೊತೆಗೆ Python ಮತ್ತು JavaScript ಅಭಿವೃದ್ಧಿಗಾಗಿ [Visual Studio Code](https://code.visualstudio.com/) ಲಭ್ಯವಿರಬೇಕು. +- **GitHub ಖಾತೆಯನ್ನು ರಚಿಸಿ**. ನೀವು ಇಲ್ಲಿ [GitHub](https://github.com) ನಲ್ಲಿ ನಮ್ಮನ್ನು ಕಂಡಿದ್ದೀರಿ, ಆದ್ದರಿಂದ ನೀವು ಈಗಾಗಲೇ ಖಾತೆ ಹೊಂದಿರಬಹುದು, ಇಲ್ಲದಿದ್ದರೆ ಒಂದು ಖಾತೆ ರಚಿಸಿ ಮತ್ತು ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ನಿಮ್ಮದೇ ಉಪಯೋಗಕ್ಕಾಗಿ ಫೋರ್ಕ್ ಮಾಡಿ. (ನಮಗೆ ಸ್ಟಾರ್ ನೀಡಲು ಮುಕ್ತವಾಗಿರಿ 😊) +- **Scikit-learn ಅನ್ನು ಅನ್ವೇಷಿಸಿ**. ಈ ಪಾಠಗಳಲ್ಲಿ ನಾವು ಉಲ್ಲೇಖಿಸುವ ML ಗ್ರಂಥಾಲಯಗಳ ಸಮೂಹವಾದ [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) ಅನ್ನು ಪರಿಚಯಿಸಿ. + +--- +## ಯಂತ್ರ ಅಧ್ಯಯನ ಎಂದರೆ ಏನು? + +'ಯಂತ್ರ ಅಧ್ಯಯನ' ಎಂಬ ಪದವು ಇಂದಿನ ದಿನದ ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಮತ್ತು ಹೆಚ್ಚಾಗಿ ಬಳಸುವ ಪದಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. ನೀವು ತಂತ್ರಜ್ಞಾನದಲ್ಲಿ ಸ್ವಲ್ಪ ಪರಿಚಯವಿದ್ದರೆ, ನೀವು ಕನಿಷ್ಠ ಒಂದು ಬಾರಿ ಈ ಪದವನ್ನು ಕೇಳಿರಬಹುದು, ನೀವು ಯಾವ ಕ್ಷೇತ್ರದಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತೀರೋ ಅದಕ್ಕೆ ಸಂಬಂಧವಿಲ್ಲದೆ. ಆದರೆ ಯಂತ್ರ ಅಧ್ಯಯನದ ಕಾರ್ಯವಿಧಾನ ಬಹುತೇಕ ಜನರಿಗೆ ರಹಸ್ಯವಾಗಿದೆ. ಯಂತ್ರ ಅಧ್ಯಯನ ಆರಂಭಿಕರಿಗೆ, ವಿಷಯವು ಕೆಲವೊಮ್ಮೆ ಭಾರೀ ಅನಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ, ಯಂತ್ರ ಅಧ್ಯಯನವೇನು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳ ಮೂಲಕ ಹಂತ ಹಂತವಾಗಿ ಕಲಿಯುವುದು ಮುಖ್ಯ. + +--- +## ಹೈಪ್ ವಕ್ರ + +![ml hype curve](../../../../translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.kn.png) + +> ಗೂಗಲ್ ಟ್ರೆಂಡ್ಸ್ 'ಯಂತ್ರ ಅಧ್ಯಯನ' ಪದದ ಇತ್ತೀಚಿನ 'ಹೈಪ್ ವಕ್ರ' ಅನ್ನು ತೋರಿಸುತ್ತದೆ + +--- +## ಒಂದು ರಹಸ್ಯಮಯ ಬ್ರಹ್ಮಾಂಡ + +ನಾವು ರಹಸ್ಯಗಳಿಂದ ತುಂಬಿದ ಒಂದು ಬ್ರಹ್ಮಾಂಡದಲ್ಲಿ ವಾಸಿಸುತ್ತೇವೆ. ಸ್ಟೀಫನ್ ಹಾಕಿಂಗ್, ಆಲ್ಬರ್ಟ್ ಐನ್ಸ್ಟೈನ್ ಮತ್ತು ಇನ್ನಷ್ಟು ಮಹಾನ್ ವಿಜ್ಞಾನಿಗಳು ನಮ್ಮ ಸುತ್ತಲೂ ಇರುವ ಜಗತ್ತಿನ ರಹಸ್ಯಗಳನ್ನು ಅನಾವರಣಗೊಳಿಸುವ ಅರ್ಥಪೂರ್ಣ ಮಾಹಿತಿಯನ್ನು ಹುಡುಕಲು ತಮ್ಮ ಜೀವನವನ್ನು ಅರ್ಪಿಸಿದ್ದಾರೆ. ಇದು ಮಾನವ ಕಲಿಕೆಯ ಸ್ಥಿತಿ: ಮಾನವ ಮಗು ಹೊಸ ವಿಷಯಗಳನ್ನು ಕಲಿಯುತ್ತದೆ ಮತ್ತು ವರ್ಷದಿಂದ ವರ್ಷಕ್ಕೆ ತನ್ನ ಜಗತ್ತಿನ ರಚನೆಯನ್ನು ಅನಾವರಣಗೊಳಿಸುತ್ತದೆ, ಅವರು ವಯಸ್ಕರಾಗುವಂತೆ. + +--- +## ಮಗುವಿನ ಮೆದುಳು + +ಮಗುವಿನ ಮೆದುಳು ಮತ್ತು ಇಂದ್ರಿಯಗಳು ತನ್ನ ಸುತ್ತಲೂ ಇರುವ ವಾಸ್ತವಗಳನ್ನು ಗ್ರಹಿಸಿ, ಜೀವನದ ಗುಪ್ತ ಮಾದರಿಗಳನ್ನು ಕ್ರಮೇಣ ಕಲಿಯುತ್ತವೆ, ಇದು ಮಗುವಿಗೆ ಕಲಿತ ಮಾದರಿಗಳನ್ನು ಗುರುತಿಸಲು ತಾರ್ಕಿಕ ನಿಯಮಗಳನ್ನು ರೂಪಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಮಾನವ ಮೆದುಳಿನ ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆ ಮಾನವರನ್ನು ಈ ಜಗತ್ತಿನ ಅತ್ಯಂತ ಸುಕ್ಷ್ಮ ಜೀವಿಯಾಗಿ ಮಾಡುತ್ತದೆ. ಗುಪ್ತ ಮಾದರಿಗಳನ್ನು ಅನ್ವೇಷಿಸಿ ನಿರಂತರವಾಗಿ ಕಲಿಯುವುದು ಮತ್ತು ಆ ಮಾದರಿಗಳ ಮೇಲೆ ನವೀನತೆ ಮಾಡುವುದು ನಮ್ಮ ಜೀವನಕಾಲದಲ್ಲಿ ನಮ್ಮನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಈ ಕಲಿಕೆಯ ಸಾಮರ್ಥ್ಯ ಮತ್ತು ಅಭಿವೃದ್ಧಿ ಸಾಮರ್ಥ್ಯವನ್ನು [ಮೆದುಳು ಪ್ಲಾಸ್ಟಿಸಿಟಿ](https://www.simplypsychology.org/brain-plasticity.html) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಮೇಲ್ಮೈಯಲ್ಲಿ, ನಾವು ಮಾನವ ಮೆದುಳಿನ ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನದ ತತ್ವಗಳ ನಡುವೆ ಕೆಲವು ಪ್ರೇರಣಾತ್ಮಕ ಸಾದೃಶ್ಯಗಳನ್ನು ಬಿಡಬಹುದು. + +--- +## ಮಾನವ ಮೆದುಳು + +[ಮಾನವ ಮೆದುಳು](https://www.livescience.com/29365-human-brain.html) ವಾಸ್ತವ ಜಗತ್ತಿನಿಂದ ವಸ್ತುಗಳನ್ನು ಗ್ರಹಿಸಿ, ಗ್ರಹಿಸಿದ ಮಾಹಿತಿಯನ್ನು ಪ್ರಕ್ರಿಯೆ ಮಾಡಿ, ತಾರ್ಕಿಕ ನಿರ್ಧಾರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಪರಿಸ್ಥಿತಿಗಳ ಆಧಾರದ ಮೇಲೆ ಕೆಲವು ಕ್ರಿಯೆಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಇದನ್ನು ನಾವು ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ ವರ್ತಿಸುವುದಾಗಿ ಕರೆಯುತ್ತೇವೆ. ನಾವು ಯಂತ್ರಕ್ಕೆ ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ ವರ್ತಿಸುವ ಪ್ರಕ್ರಿಯೆಯ ನಕಲು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಿದಾಗ, ಅದನ್ನು ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ (AI) ಎಂದು ಕರೆಯುತ್ತಾರೆ. + +--- +## ಕೆಲವು ಪದಗಳು + +ಪದಗಳು ಗೊಂದಲ ಉಂಟುಮಾಡಬಹುದು, ಆದರೆ ಯಂತ್ರ ಅಧ್ಯಯನ (ML) ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆಯ ಪ್ರಮುಖ ಉಪವರ್ಗವಾಗಿದೆ. **ML ವಿಶೇಷ ಆಲ್ಗಾರಿದಮ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಗ್ರಹಿಸಿದ ಡೇಟಾದಿಂದ ಅರ್ಥಪೂರ್ಣ ಮಾಹಿತಿಯನ್ನು ಅನಾವರಣಗೊಳಿಸುವುದು ಮತ್ತು ತಾರ್ಕಿಕ ನಿರ್ಧಾರ ಪ್ರಕ್ರಿಯೆಯನ್ನು ದೃಢೀಕರಿಸಲು ಗುಪ್ತ ಮಾದರಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದರಲ್ಲಿ ತೊಡಗಿಸಿಕೊಂಡಿದೆ**. + +--- +## AI, ML, ಡೀಪ್ ಲರ್ನಿಂಗ್ + +![AI, ML, deep learning, data science](../../../../translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.kn.png) + +> AI, ML, ಡೀಪ್ ಲರ್ನಿಂಗ್ ಮತ್ತು ಡೇಟಾ ಸೈನ್ಸ್ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ತೋರಿಸುವ ಚಿತ್ರ. [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರ ಇನ್ಫೋಗ್ರಾಫಿಕ್, [ಈ ಚಿತ್ರ](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) ಪ್ರೇರಿತ + +--- +## ಆವೃತ್ತಿ ಮಾಡಬೇಕಾದ ತತ್ವಗಳು + +ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ, ನಾವು ಆರಂಭಿಕರು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಯಂತ್ರ ಅಧ್ಯಯನದ ಮೂಲ ತತ್ವಗಳನ್ನು ಮಾತ್ರ ಆವರಿಸುವೆವು. ನಾವು 'ಶ್ರೇಷ್ಟ ಯಂತ್ರ ಅಧ್ಯಯನ' ಎಂದು ಕರೆಯುವ Scikit-learn ಅನ್ನು ಮುಖ್ಯವಾಗಿ ಬಳಸಿಕೊಂಡು ಮೂಲಭೂತಗಳನ್ನು ಕಲಿಸುವ ಉತ್ತಮ ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸುತ್ತೇವೆ. ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ ಅಥವಾ ಡೀಪ್ ಲರ್ನಿಂಗ್‌ನ ವ್ಯಾಪಕ ತತ್ವಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ಯಂತ್ರ ಅಧ್ಯಯನದ ಬಲವಾದ ಮೂಲಭೂತ ಜ್ಞಾನ ಅಗತ್ಯವಿದೆ, ಅದನ್ನು ನಾವು ಇಲ್ಲಿ ನೀಡಲು ಇಚ್ಛಿಸುತ್ತೇವೆ. + +--- +## ಈ ಕೋರ್ಸ್‌ನಲ್ಲಿ ನೀವು ಕಲಿಯುವಿರಿ: + +- ಯಂತ್ರ ಅಧ್ಯಯನದ ಮೂಲ ತತ್ವಗಳು +- ML ಇತಿಹಾಸ +- ML ಮತ್ತು ನ್ಯಾಯತಂತ್ರ +- ರಿಗ್ರೆಶನ್ ML ತಂತ್ರಗಳು +- ವರ್ಗೀಕರಣ ML ತಂತ್ರಗಳು +- ಕ್ಲಸ್ಟರಿಂಗ್ ML ತಂತ್ರಗಳು +- ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ML ತಂತ್ರಗಳು +- ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ ML ತಂತ್ರಗಳು +- ಬಲವರ್ಧಿತ ಕಲಿಕೆ +- ML ನ ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳು + +--- +## ನಾವು ಆವರಿಸುವುದಿಲ್ಲ + +- ಡೀಪ್ ಲರ್ನಿಂಗ್ +- ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು +- AI + +ಉತ್ತಮ ಕಲಿಕೆಯ ಅನುಭವಕ್ಕಾಗಿ, ನಾವು ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳ ಸಂಕೀರ್ಣತೆಗಳನ್ನು, 'ಡೀಪ್ ಲರ್ನಿಂಗ್' - ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಬಳಸಿ ಬಹುಮಟ್ಟದ ಮಾದರಿ ನಿರ್ಮಾಣ - ಮತ್ತು AI ಅನ್ನು ಬೇರೆ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಚರ್ಚಿಸುವುದರಿಂದ ತಪ್ಪಿಸುವೆವು. ಈ ದೊಡ್ಡ ಕ್ಷೇತ್ರದ ಆಂಗ್ಲಭಾಗವನ್ನು ಗಮನಿಸುವ ಡೇಟಾ ಸೈನ್ಸ್ ಪಠ್ಯಕ್ರಮವನ್ನು ಮುಂದಿನ ದಿನಗಳಲ್ಲಿ ನೀಡಲಿದ್ದೇವೆ. + +--- +## ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಯಾಕೆ ಅಧ್ಯಯನ ಮಾಡಬೇಕು? + +ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ವ್ಯವಸ್ಥೆಗಳ ದೃಷ್ಟಿಕೋನದಿಂದ, ಡೇಟಾದಿಂದ ಗುಪ್ತ ಮಾದರಿಗಳನ್ನು ಕಲಿಯುವ ಸ್ವಯಂಚಾಲಿತ ವ್ಯವಸ್ಥೆಗಳ ಸೃಷ್ಟಿಯಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ, ಇದು ಬುದ್ಧಿವಂತ ನಿರ್ಧಾರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +ಈ ಪ್ರೇರಣೆ ಮಾನವ ಮೆದುಳು ಹೊರಗಿನ ಜಗತ್ತಿನಿಂದ ಗ್ರಹಿಸುವ ಡೇಟಾದ ಆಧಾರದ ಮೇಲೆ ಕೆಲವು ವಿಷಯಗಳನ್ನು ಕಲಿಯುವ ರೀತಿಯಿಂದ ಸಡಿಲವಾಗಿ ಪ್ರೇರಿತವಾಗಿದೆ. + +✅ ಒಂದು ನಿಮಿಷ ಯೋಚಿಸಿ, ಒಂದು ವ್ಯವಹಾರವು ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರಗಳನ್ನು ಬಳಸಲು ಯಾಕೆ ಪ್ರಯತ್ನಿಸಬಹುದು, ಹಾರ್ಡ್-ಕೋಡ್ ಮಾಡಿದ ನಿಯಮಾಧಾರಿತ ಎಂಜಿನ್ ಸೃಷ್ಟಿಸುವ ಬದಲು. + +--- +## ಯಂತ್ರ ಅಧ್ಯಯನದ ಅನ್ವಯಿಕೆಗಳು + +ಯಂತ್ರ ಅಧ್ಯಯನದ ಅನ್ವಯಿಕೆಗಳು ಈಗ ಎಲ್ಲೆಡೆ ಇದ್ದು, ನಮ್ಮ ಸಮಾಜಗಳಲ್ಲಿ ಹರಡುತ್ತಿರುವ ಡೇಟಾ ಹಾಗೆಯೇ ಎಲ್ಲೆಡೆ ಇದ್ದು, ನಮ್ಮ ಸ್ಮಾರ್ಟ್ ಫೋನ್‌ಗಳು, ಸಂಪರ್ಕಿತ ಸಾಧನಗಳು ಮತ್ತು ಇತರ ವ್ಯವಸ್ಥೆಗಳ ಮೂಲಕ ಉತ್ಪಾದಿತವಾಗಿವೆ. ಅತ್ಯಾಧುನಿಕ ಯಂತ್ರ ಅಧ್ಯಯನ ಆಲ್ಗಾರಿದಮ್‌ಗಳ ಅಪಾರ ಸಾಮರ್ಥ್ಯವನ್ನು ಪರಿಗಣಿಸಿ, ಸಂಶೋಧಕರು ಬಹುಮಟ್ಟದ ಮತ್ತು ಬಹುಶಾಖಾ ನೈಜ ಜೀವನದ ಸಮಸ್ಯೆಗಳನ್ನು ಉತ್ತಮ ಫಲಿತಾಂಶಗಳೊಂದಿಗೆ ಪರಿಹರಿಸಲು ಅವರ ಸಾಮರ್ಥ್ಯವನ್ನು ಅನ್ವೇಷಿಸುತ್ತಿದ್ದಾರೆ. + +--- +## ಅನ್ವಯಿಸಿದ ML ಉದಾಹರಣೆಗಳು + +**ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಹಲವಾರು ರೀತಿಯಲ್ಲಿ ಬಳಸಬಹುದು**: + +- ರೋಗಿಯ ವೈದ್ಯಕೀಯ ಇತಿಹಾಸ ಅಥವಾ ವರದಿಗಳಿಂದ ರೋಗ ಸಂಭವನೀಯತೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು. +- ಹವಾಮಾನ ಡೇಟಾವನ್ನು ಉಪಯೋಗಿಸಿ ಹವಾಮಾನ ಘಟನೆಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು. +- ಪಠ್ಯದ ಭಾವನೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು. +- ಪ್ರಚಾರವನ್ನು ತಡೆಯಲು ನಕಲಿ ಸುದ್ದಿಯನ್ನು ಪತ್ತೆಹಚ್ಚಲು. + +ಹಣಕಾಸು, ಆರ್ಥಿಕಶಾಸ್ತ್ರ, ಭೂವಿಜ್ಞಾನ, ಬಾಹ್ಯಾಕಾಶ ಅನ್ವೇಷಣೆ, ಜೈವ ವೈದ್ಯಕೀಯ ಎಂಜಿನಿಯರಿಂಗ್, ಜ್ಞಾನಶಾಸ್ತ್ರ ಮತ್ತು ಮಾನವಶಾಸ್ತ್ರ ಕ್ಷೇತ್ರಗಳಲ್ಲಿಯೂ ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ತಮ್ಮ ಕ್ಷೇತ್ರದ ಕಠಿಣ, ಡೇಟಾ ಪ್ರಕ್ರಿಯೆ ಭಾರೀ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಅಳವಡಿಸಿಕೊಂಡಿವೆ. + +--- +## ಸಮಾರೋಪ + +ಯಂತ್ರ ಅಧ್ಯಯನವು ನೈಜ ಜಗತ್ತಿನ ಅಥವಾ ಉತ್ಪಾದಿತ ಡೇಟಾದಿಂದ ಅರ್ಥಪೂರ್ಣ ಒಳನೋಟಗಳನ್ನು ಕಂಡುಹಿಡಿದು ಮಾದರಿಗಳನ್ನು ಅನ್ವೇಷಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುತ್ತದೆ. ಇದು ವ್ಯವಹಾರ, ಆರೋಗ್ಯ ಮತ್ತು ಹಣಕಾಸು ಅನ್ವಯಿಕೆಗಳಲ್ಲಿ ಅತ್ಯಂತ ಮೌಲ್ಯಯುತವಾಗಿದೆ ಎಂದು ತೋರಿಸಿದೆ. + +ಭವಿಷ್ಯದಲ್ಲಿ, ಯಂತ್ರ ಅಧ್ಯಯನದ ಮೂಲಭೂತಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಯಾವುದೇ ಕ್ಷೇತ್ರದ ಜನರಿಗೆ ಅಗತ್ಯವಾಗಲಿದೆ, ಅದರ ವ್ಯಾಪಕ ಸ್ವೀಕಾರದಿಂದ. + +--- +# 🚀 ಸವಾಲು + +ಕಾಗದದ ಮೇಲೆ ಅಥವಾ [Excalidraw](https://excalidraw.com/) ಎಂಬ ಆನ್ಲೈನ್ ಅಪ್ಲಿಕೇಶನ್ ಬಳಸಿ, AI, ML, ಡೀಪ್ ಲರ್ನಿಂಗ್ ಮತ್ತು ಡೇಟಾ ಸೈನ್ಸ್ ನಡುವಿನ ವ್ಯತ್ಯಾಸಗಳ ನಿಮ್ಮ ಅರ್ಥವನ್ನು ಚಿತ್ರಿಸಿ. ಈ ತಂತ್ರಜ್ಞಾನಗಳು ಪರಿಹರಿಸಲು ಉತ್ತಮವಾದ ಸಮಸ್ಯೆಗಳ ಕೆಲವು ಕಲ್ಪನೆಗಳನ್ನು ಸೇರಿಸಿ. + +# [ಪೋಸ್ಟ್-ಲೇಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +--- +# ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಮೇಘದಲ್ಲಿ ML ಆಲ್ಗಾರಿದಮ್‌ಗಳೊಂದಿಗೆ ನೀವು ಹೇಗೆ ಕೆಲಸ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ತಿಳಿಯಲು, ಈ [ಅಧ್ಯಯನ ಮಾರ್ಗವನ್ನು](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott) ಅನುಸರಿಸಿ. + +ML ಮೂಲಭೂತಗಳ ಬಗ್ಗೆ [ಅಧ್ಯಯನ ಮಾರ್ಗವನ್ನು](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-77952-leestott) ತೆಗೆದುಕೊಳ್ಳಿ. + +--- +# ನಿಯೋಜನೆ + +[ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಚಾಲನೆ ಮಾಡಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/1-Introduction/1-intro-to-ML/assignment.md b/translations/kn/1-Introduction/1-intro-to-ML/assignment.md new file mode 100644 index 000000000..280414794 --- /dev/null +++ b/translations/kn/1-Introduction/1-intro-to-ML/assignment.md @@ -0,0 +1,25 @@ + +# ಎದ್ದು ಚಾಲನೆ ಮಾಡಿಕೊಳ್ಳಿ + +## ಸೂಚನೆಗಳು + +ಈ ಅಗ್ರೇಡ್ ಮಾಡದ ಕಾರ್ಯದಲ್ಲಿ, ನೀವು ಪೈಥಾನ್‌ನಲ್ಲಿ ನಿಪುಣರಾಗಬೇಕು ಮತ್ತು ನಿಮ್ಮ ಪರಿಸರವನ್ನು ಚಾಲನೆಗೆ ತಂದು ನೋಟ್‌ಬುಕ್‌ಗಳನ್ನು ಚಾಲನೆ ಮಾಡಬಹುದಾಗಿರಬೇಕು. + +ಈ [Python Learning Path](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ, ನಂತರ ಈ ಪರಿಚಯಾತ್ಮಕ ವೀಡಿಯೊಗಳನ್ನು ನೋಡಿ ನಿಮ್ಮ ವ್ಯವಸ್ಥೆಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ: + +https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/1-Introduction/2-history-of-ML/README.md b/translations/kn/1-Introduction/2-history-of-ML/README.md new file mode 100644 index 000000000..cc1a0df81 --- /dev/null +++ b/translations/kn/1-Introduction/2-history-of-ML/README.md @@ -0,0 +1,167 @@ + +# ಯಂತ್ರ ಅಧ್ಯಯನದ ಇತಿಹಾಸ + +![ಯಂತ್ರ ಅಧ್ಯಯನದ ಇತಿಹಾಸದ ಸಾರಾಂಶವನ್ನು ಸ್ಕೆಚ್‌ನೋಟ್‌ನಲ್ಲಿ](../../../../translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.kn.png) +> ಸ್ಕೆಚ್‌ನೋಟ್: [ಟೊಮೊಮಿ ಇಮುರಾ](https://www.twitter.com/girlie_mac) + +## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +--- + +[![ಆರಂಭಿಕರಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನ - ಯಂತ್ರ ಅಧ್ಯಯನದ ಇತಿಹಾಸ](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "ಆರಂಭಿಕರಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನ - ಯಂತ್ರ ಅಧ್ಯಯನದ ಇತಿಹಾಸ") + +> 🎥 ಈ ಪಾಠವನ್ನು ವಿವರಿಸುವ ಚಿಕ್ಕ ವೀಡಿಯೊಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. + +ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಯಂತ್ರ ಅಧ್ಯಯನ ಮತ್ತು ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆಯ ಇತಿಹಾಸದ ಪ್ರಮುಖ ಮೈಲಿಗಲ್ಲುಗಳನ್ನು ಪರಿಶೀಲಿಸುವೆವು. + +ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ (AI) ಕ್ಷೇತ್ರದ ಇತಿಹಾಸವು ಯಂತ್ರ ಅಧ್ಯಯನದ ಇತಿಹಾಸದೊಂದಿಗೆ絡ಗೊಂಡಿದೆ, ಏಕೆಂದರೆ ML ಅನ್ನು ಆಧರಿಸುವ ಅಲ್ಗಾರಿದಮ್ಗಳು ಮತ್ತು ಗಣನಾತ್ಮಕ ಪ್ರಗತಿಗಳು AI ಅಭಿವೃದ್ಧಿಗೆ ಸಹಾಯ ಮಾಡಿವೆ. ಈ ಕ್ಷೇತ್ರಗಳು 1950ರ ದಶಕದಲ್ಲಿ ಪ್ರತ್ಯೇಕ ವಿಚಾರಣಾ ಕ್ಷೇತ್ರಗಳಾಗಿ ರೂಪುಗೊಂಡರೂ, ಪ್ರಮುಖ [ಅಲ್ಗಾರಿದಮಿಕ್, ಸಾಂಖ್ಯಿಕ, ಗಣಿತೀಯ, ಗಣನಾತ್ಮಕ ಮತ್ತು ತಾಂತ್ರಿಕ ಆವಿಷ್ಕಾರಗಳು](https://wikipedia.org/wiki/Timeline_of_machine_learning) ಈ ಕಾಲಘಟ್ಟಕ್ಕಿಂತ ಮುಂಚಿತವಾಗಿಯೂ ಮತ್ತು ಅಡ್ಡವಾಗಿ ನಡೆದಿವೆ. ವಾಸ್ತವವಾಗಿ, ಜನರು ಈ ಪ್ರಶ್ನೆಗಳ ಬಗ್ಗೆ [ನೂರು ವರ್ಷಗಳಿಂದ](https://wikipedia.org/wiki/History_of_artificial_intelligence) ಯೋಚಿಸುತ್ತಿದ್ದಾರೆ: ಈ ಲೇಖನವು 'ಚಿಂತಿಸುವ ಯಂತ್ರ' ಎಂಬ ಕಲ್ಪನೆಯ ಇತಿಹಾಸಾತ್ಮಕ ಬೌದ್ಧಿಕ ಆಧಾರಗಳನ್ನು ಚರ್ಚಿಸುತ್ತದೆ. + +--- +## ಪ್ರಮುಖ ಆವಿಷ್ಕಾರಗಳು + +- 1763, 1812 [ಬೇಯ್ಸ್ ಸಿದ್ಧಾಂತ](https://wikipedia.org/wiki/Bayes%27_theorem) ಮತ್ತು ಅದರ ಪೂರ್ವಜರು. ಈ ಸಿದ್ಧಾಂತ ಮತ್ತು ಅದರ ಅನ್ವಯಗಳು ನಿರ್ಣಯಕ್ಕೆ ಆಧಾರವಾಗಿದ್ದು, ಹಿಂದಿನ ಜ್ಞಾನ ಆಧಾರದ ಮೇಲೆ ಘಟನೆ ಸಂಭವಿಸುವ ಸಾಧ್ಯತೆಯನ್ನು ವಿವರಿಸುತ್ತದೆ. +- 1805 [ಕನಿಷ್ಠ ಚದರ ಸಿದ್ಧಾಂತ](https://wikipedia.org/wiki/Least_squares) ಫ್ರೆಂಚ್ ಗಣಿತಜ್ಞ ಅಡ್ರಿಯನ್-ಮೇರಿ ಲೆಜೆಂಡ್ರ್ ರವರಿಂದ. ಈ ಸಿದ್ಧಾಂತವನ್ನು ನೀವು ನಮ್ಮ ರಿಗ್ರೆಷನ್ ಘಟಕದಲ್ಲಿ ಕಲಿಯುತ್ತೀರಿ, ಇದು ಡೇಟಾ ಹೊಂದಾಣಿಕೆಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. +- 1913 [ಮಾರ್ಕೋವ್ ಸರಪಳಿ](https://wikipedia.org/wiki/Markov_chain), ರಷ್ಯನ್ ಗಣಿತಜ್ಞ ಆಂಡ್ರೇ ಮಾರ್ಕೋವ್ ಅವರ ಹೆಸರಿನಲ್ಲಿ, ಹಿಂದಿನ ಸ್ಥಿತಿಯ ಆಧಾರದ ಮೇಲೆ ಸಂಭವನೀಯ ಘಟನೆಗಳ ಸರಣಿಯನ್ನು ವಿವರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. +- 1957 [ಪರ್ಸೆಪ್ಟ್ರಾನ್](https://wikipedia.org/wiki/Perceptron) ಅಮೆರಿಕನ್ ಮನೋವೈಜ್ಞಾನಿಕ ಫ್ರಾಂಕ್ ರೋಸೆನ್‌ಬ್ಲಾಟ್ ರವರಿಂದ ಆವಿಷ್ಕೃತ ಲೀನಿಯರ್ ವರ್ಗೀಕರಣದ ಒಂದು ಪ್ರಕಾರ, ಇದು ಡೀಪ್ ಲರ್ನಿಂಗ್‌ನಲ್ಲಿ ಪ್ರಗತಿಗೆ ಆಧಾರವಾಗಿದೆ. + +--- + +- 1967 [ನಿಕಟಮ ಸನ್ನಿಹಿತ](https://wikipedia.org/wiki/Nearest_neighbor) ಮೂಲತಃ ಮಾರ್ಗಗಳನ್ನು ನಕ್ಷೆ ಮಾಡಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಅಲ್ಗಾರಿದಮ್. ML ಸನ್ನಿವೇಶದಲ್ಲಿ ಇದು ಮಾದರಿಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಬಳಸಲಾಗುತ್ತದೆ. +- 1970 [ಬ್ಯಾಕ್‌ಪ್ರೊಪಾಗೇಶನ್](https://wikipedia.org/wiki/Backpropagation) [ಫೀಡ್‌ಫಾರ್ವರ್ಡ್ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು](https://wikipedia.org/wiki/Feedforward_neural_network) ತರಬೇತಿಗೆ ಬಳಸಲಾಗುತ್ತದೆ. +- 1982 [ರಿಕರೆಂಟ್ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು](https://wikipedia.org/wiki/Recurrent_neural_network) ಫೀಡ್‌ಫಾರ್ವರ್ಡ್ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಂದ ಉತ್ಪನ್ನವಾದ ಕೃತಕ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು, ಅವು ಕಾಲಾತೀತ ಗ್ರಾಫ್‌ಗಳನ್ನು ರಚಿಸುತ್ತವೆ. + +✅ ಸ್ವಲ್ಪ ಸಂಶೋಧನೆ ಮಾಡಿ. ML ಮತ್ತು AI ಇತಿಹಾಸದಲ್ಲಿ ಇನ್ನೇನು ಪ್ರಮುಖ ದಿನಾಂಕಗಳು ಗಮನಾರ್ಹವಾಗಿವೆ? + +--- +## 1950: ಚಿಂತಿಸುವ ಯಂತ್ರಗಳು + +ಅಲನ್ ಟ್ಯೂರಿಂಗ್, 2019 ರಲ್ಲಿ [ಸಾರ್ವಜನಿಕರಿಂದ](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 20ನೇ ಶತಮಾನದ ಅತ್ಯುತ್ತಮ ವಿಜ್ಞಾನಿಯಾಗಿ ಮತದಾನಗೊಂಡ ಅತ್ಯಂತ ಅದ್ಭುತ ವ್ಯಕ್ತಿ, 'ಚಿಂತಿಸುವ ಯಂತ್ರ' ಎಂಬ ಕಲ್ಪನೆಗೆ ಆಧಾರವನ್ನು ನೀಡಿದವರಾಗಿ ಗುರುತಿಸಲ್ಪಟ್ಟಿದ್ದಾರೆ. ಅವರು ಈ ಕಲ್ಪನೆಯ ಪ್ರಾಯೋಗಿಕ ಸಾಕ್ಷ್ಯಕ್ಕಾಗಿ ತೀವ್ರವಾಗಿ ಯೋಚಿಸಿ, [ಟ್ಯೂರಿಂಗ್ ಪರೀಕ್ಷೆ](https://www.bbc.com/news/technology-18475646) ರಚಿಸಿದರು, ಇದನ್ನು ನೀವು ನಮ್ಮ NLP ಪಾಠಗಳಲ್ಲಿ ಅನ್ವೇಷಿಸುವಿರಿ. + +--- +## 1956: ಡಾರ್ಟ್‌ಮೌತ್ ಬೇಸಿಗೆ ಸಂಶೋಧನಾ ಯೋಜನೆ + +"ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ ಕ್ಷೇತ್ರದ ಪ್ರಮುಖ ಘಟನೆ ಆಗಿದ್ದ ಡಾರ್ಟ್‌ಮೌತ್ ಬೇಸಿಗೆ ಸಂಶೋಧನಾ ಯೋಜನೆ," ಇಲ್ಲಿ 'ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ' ಪದವನ್ನು ರೂಪಿಸಲಾಯಿತು ([ಮೂಲ](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). + +> ಕಲಿಕೆಯ ಪ್ರತಿಯೊಂದು ಅಂಶ ಅಥವಾ ಬುದ್ಧಿಮತ್ತೆಯ ಯಾವುದೇ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಯಂತ್ರವು ನಕಲಿಸಲು ಸಾಧ್ಯವಾಗುವಂತೆ ನಿಖರವಾಗಿ ವರ್ಣಿಸಬಹುದು. + +--- + +ಮುಖ್ಯ ಸಂಶೋಧಕ, ಗಣಿತ ಪ್ರಾಧ್ಯಾಪಕ ಜಾನ್ ಮ್ಯಾಕಾರ್ಥಿ, "ಕಲಿಕೆಯ ಪ್ರತಿಯೊಂದು ಅಂಶ ಅಥವಾ ಬುದ್ಧಿಮತ್ತೆಯ ಯಾವುದೇ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಯಂತ್ರವು ನಕಲಿಸಲು ಸಾಧ್ಯವಾಗುವಂತೆ ನಿಖರವಾಗಿ ವರ್ಣಿಸಬಹುದು" ಎಂಬ ಊಹಾಪೋಹದ ಆಧಾರದ ಮೇಲೆ ಮುಂದುವರೆಯಲು ಆಶಿಸಿದರು. ಭಾಗವಹಿಸಿದವರಲ್ಲಿ ಮತ್ತೊಬ್ಬ ಪ್ರಸಿದ್ಧ ವ್ಯಕ್ತಿ ಮಾರ್ವಿನ್ ಮಿನ್ಸ್ಕಿ ಇದ್ದರು. + +ಈ ಕಾರ್ಯಾಗಾರವು "ಪ್ರತೀಕಾತ್ಮಕ ವಿಧಾನಗಳ ಏರಿಕೆ, ನಿರ್ದಿಷ್ಟ ಕ್ಷೇತ್ರಗಳ ಮೇಲೆ ಕೇಂದ್ರೀಕೃತ ವ್ಯವಸ್ಥೆಗಳು (ಆರಂಭಿಕ ತಜ್ಞ ವ್ಯವಸ್ಥೆಗಳು), ಮತ್ತು ನಿರೂಪಣಾತ್ಮಕ ವ್ಯವಸ್ಥೆಗಳು ವಿರುದ್ಧ ಅನುಪಾತಾತ್ಮಕ ವ್ಯವಸ್ಥೆಗಳು" ಸೇರಿದಂತೆ ಹಲವು ಚರ್ಚೆಗಳನ್ನು ಪ್ರಾರಂಭಿಸಿ ಉತ್ತೇಜನ ನೀಡಿದಂತೆ ಗುರುತಿಸಲಾಗಿದೆ ([ಮೂಲ](https://wikipedia.org/wiki/Dartmouth_workshop)). + +--- +## 1956 - 1974: "ಸುವರ್ಣ ಯುಗ" + +1950ರ ದಶಕದಿಂದ 1970ರ ಮಧ್ಯದವರೆಗೆ, AI ಅನೇಕ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಬಹುದು ಎಂಬ ಭರವಸೆ ಉತ್ಕೃಷ್ಟವಾಗಿತ್ತು. 1967 ರಲ್ಲಿ ಮಾರ್ವಿನ್ ಮಿನ್ಸ್ಕಿ ನಂಬಿಕೆಯಿಂದ ಹೇಳಿದಂತೆ, "ಒಂದು ತಲೆಮಾರಿಗೆ ಒಳಗಾಗಿ ... 'ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ' ಸೃಷ್ಟಿಸುವ ಸಮಸ್ಯೆ ಬಹುಮಟ್ಟಿಗೆ ಪರಿಹಾರವಾಗುತ್ತದೆ." (ಮಿನ್ಸ್ಕಿ, ಮಾರ್ವಿನ್ (1967), ಗಣನೆ: ಸೀಮಿತ ಮತ್ತು ಅನಂತ ಯಂತ್ರಗಳು, ಎಂಗಲ್‌ವುಡ್ ಕ್ಲಿಫ್ಸ್, N.J.: ಪ್ರೆಂಟಿಸ್-ಹಾಲ್) + +ಸ್ವಾಭಾವಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ಸಂಶೋಧನೆ ಬೆಳವಣಿಗೆ ಕಂಡಿತು, ಹುಡುಕಾಟವನ್ನು ಸುಧಾರಿಸಿ ಶಕ್ತಿಶಾಲಿ ಮಾಡಲಾಯಿತು, ಮತ್ತು 'ಮೈಕ್ರೋ-ವಿಶ್ವಗಳು' ಎಂಬ ಕಲ್ಪನೆ ಹುಟ್ಟಿತು, ಇಲ್ಲಿ ಸರಳ ಕಾರ್ಯಗಳನ್ನು ಸರಳ ಭಾಷಾ ಸೂಚನೆಗಳ ಮೂಲಕ ಪೂರ್ಣಗೊಳಿಸಲಾಗುತ್ತಿತ್ತು. + +--- + +ಸರ್ಕಾರಿ ಸಂಸ್ಥೆಗಳ ಮೂಲಕ ಸಂಶೋಧನೆಗೆ ಉತ್ತಮ ಹಣಕಾಸು ದೊರಕಿತು, ಗಣನೆ ಮತ್ತು ಅಲ್ಗಾರಿದಮ್ಗಳಲ್ಲಿ ಪ್ರಗತಿ ಕಂಡುಬಂದಿತು, ಮತ್ತು ಬುದ್ಧಿವಂತ ಯಂತ್ರಗಳ ಪ್ರೋಟೋಟೈಪ್ಗಳು ನಿರ್ಮಿಸಲ್ಪಟ್ಟವು. ಕೆಲವು ಯಂತ್ರಗಳು: + +* [ಶೇಕಿ ರೋಬೋಟ್](https://wikipedia.org/wiki/Shakey_the_robot), ಯಾರು 'ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ' ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಮತ್ತು ನಿರ್ಧರಿಸಲು ಸಾಧ್ಯವಿತ್ತು. + + ![ಶೇಕಿ, ಬುದ್ಧಿವಂತ ರೋಬೋಟ್](../../../../translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.kn.jpg) + > 1972 ರಲ್ಲಿ ಶೇಕಿ + +--- + +* ಎಲಿಜಾ, ಆರಂಭಿಕ 'ಚಾಟ್‌ಬಾಟ್', ಜನರೊಂದಿಗೆ ಸಂಭಾಷಣೆ ನಡೆಸಲು ಮತ್ತು ಪ್ರಾಥಮಿಕ 'ಥೆರಪಿಸ್ಟ್' ಆಗ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಸಾಧ್ಯವಿತ್ತು. NLP ಪಾಠಗಳಲ್ಲಿ ನೀವು ಎಲಿಜಾ ಬಗ್ಗೆ ಹೆಚ್ಚು ತಿಳಿಯುತ್ತೀರಿ. + + ![ಎಲಿಜಾ, ಒಂದು ಬಾಟ್](../../../../translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.kn.png) + > ಎಲಿಜಾ, ಒಂದು ಚಾಟ್‌ಬಾಟ್‌ನ ಆವೃತ್ತಿ + +--- + +* "ಬ್ಲಾಕ್ಸ್ ವರ್ಲ್ಡ್" ಎಂಬ ಮೈಕ್ರೋ-ವಿಶ್ವದಲ್ಲಿ ಬ್ಲಾಕ್ಗಳನ್ನು ಸರಿದೂಗಿಸಿ ವಿಂಗಡಿಸಲಾಗುತ್ತಿತ್ತು, ಮತ್ತು ಯಂತ್ರಗಳಿಗೆ ನಿರ್ಧಾರಗಳನ್ನು ಕಲಿಸುವ ಪ್ರಯೋಗಗಳನ್ನು ಪರೀಕ್ಷಿಸಲಾಗುತ್ತಿತ್ತು. [SHRDLU](https://wikipedia.org/wiki/SHRDLU) ಮುಂತಾದ ಗ್ರಂಥಾಲಯಗಳೊಂದಿಗೆ ನಿರ್ಮಿತ ಪ್ರಗತಿಗಳು ಭಾಷಾ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮುಂದುವರಿಸಲು ಸಹಾಯ ಮಾಡಿತು. + + [![SHRDLU ಜೊತೆಗೆ ಬ್ಲಾಕ್ಸ್ ವರ್ಲ್ಡ್](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLU ಜೊತೆಗೆ ಬ್ಲಾಕ್ಸ್ ವರ್ಲ್ಡ್") + + > 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೊ: SHRDLU ಜೊತೆಗೆ ಬ್ಲಾಕ್ಸ್ ವರ್ಲ್ಡ್ + +--- +## 1974 - 1980: "AI ಚಳಿಗಾಲ" + +1970ರ ಮಧ್ಯದಲ್ಲಿ, 'ಬುದ್ಧಿವಂತ ಯಂತ್ರಗಳನ್ನು' ನಿರ್ಮಿಸುವ ಸಂಕೀರ್ಣತೆ ಕಡಿಮೆ ಅಂದಾಜಿತವಾಗಿದ್ದು, ಲಭ್ಯವಿರುವ ಗಣನ ಶಕ್ತಿಯೊಂದಿಗೆ ಅದರ ಭರವಸೆ ಹೆಚ್ಚಾಗಿ ಹೇಳಲ್ಪಟ್ಟಿತು ಎಂಬುದು ಸ್ಪಷ್ಟವಾಯಿತು. ಹಣಕಾಸು ಕಡಿಮೆಯಾಯಿತು ಮತ್ತು ಕ್ಷೇತ್ರದ ಮೇಲೆ ನಂಬಿಕೆ ಕುಗ್ಗಿತು. ನಂಬಿಕೆಗೆ ಪರಿಣಾಮ ಬೀರುವ ಕೆಲವು ಸಮಸ್ಯೆಗಳು: + +--- +- **ಮಿತಿಗಳು**. ಗಣನ ಶಕ್ತಿ ತುಂಬಾ ಸೀಮಿತವಾಗಿತ್ತು. +- **ಸಂಯೋಜನಾತ್ಮಕ ಸ್ಫೋಟ**. ಗಣಕಗಳಿಗೆ ಹೆಚ್ಚು ಕೇಳಿದಂತೆ ತರಬೇತಿಗೆ ಬೇಕಾದ ಪರಿಮಾಣಗಳು ಗಣನೀಯವಾಗಿ ಹೆಚ್ಚಾಗುತ್ತಿದ್ದು, ಗಣನ ಶಕ್ತಿ ಮತ್ತು ಸಾಮರ್ಥ್ಯದ ಸಮಕಾಲೀನ ಬೆಳವಣಿಗೆ ಇಲ್ಲದೆ ಇತ್ತು. +- **ಡೇಟಾ ಕೊರತೆ**. ಪರೀಕ್ಷೆ, ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಅಲ್ಗಾರಿದಮ್ಗಳ ಸುಧಾರಣೆಗೆ ಡೇಟಾ ಕೊರತೆ ಅಡ್ಡಿಪಡಿಸಿತು. +- **ನಾವು ಸರಿಯಾದ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳುತ್ತಿದ್ದೇವೇ?**. ಕೇಳಲಾಗುತ್ತಿದ್ದ ಪ್ರಶ್ನೆಗಳೇ ಪ್ರಶ್ನೆಗೆ ಒಳಗಾದವು. ಸಂಶೋಧಕರು ತಮ್ಮ ವಿಧಾನಗಳ ಬಗ್ಗೆ ಟೀಕೆಗಳನ್ನು ಎದುರಿಸಿದರು: + - ಟ್ಯೂರಿಂಗ್ ಪರೀಕ್ಷೆಗಳನ್ನು 'ಚೈನೀಸ್ ರೂಮ್ ಸಿದ್ಧಾಂತ' ಮುಂತಾದ ಕಲ್ಪನೆಗಳ ಮೂಲಕ ಪ್ರಶ್ನಿಸಲಾಯಿತು, ಇದು "ಡಿಜಿಟಲ್ ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಂತೆ ತೋರುತ್ತದೆ ಆದರೆ ನಿಜವಾದ ಅರ್ಥಮಾಡಿಕೊಳಲು ಸಾಧ್ಯವಿಲ್ಲ" ಎಂದು ಹೇಳುತ್ತದೆ ([ಮೂಲ](https://plato.stanford.edu/entries/chinese-room/)). + - "ಥೆರಪಿಸ್ಟ್" ಎಲಿಜಾ ಮುಂತಾದ ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆಗಳನ್ನು ಸಮಾಜಕ್ಕೆ ಪರಿಚಯಿಸುವ ನೈತಿಕತೆ ಪ್ರಶ್ನಿಸಲಾಯಿತು. + +--- + +ಅದೇ ಸಮಯದಲ್ಲಿ, ವಿವಿಧ AI ಚಿಂತನೆ ಶಾಲೆಗಳು ರೂಪುಗೊಂಡವು. ["ಸ್ಕ್ರಫಿ" ಮತ್ತು "ನೀಟ್ AI"](https://wikipedia.org/wiki/Neats_and_scruffies) ಅಭ್ಯಾಸಗಳ ನಡುವೆ ವಿಭಜನೆ ಸ್ಥಾಪಿತವಾಯಿತು. _ಸ್ಕ್ರಫಿ_ ಪ್ರಯೋಗಾಲಯಗಳು ಗಂಟೆಗಳ ಕಾಲ ಪ್ರೋಗ್ರಾಮ್‌ಗಳನ್ನು ತಿದ್ದುಪಡಿ ಮಾಡಿ ಬೇಕಾದ ಫಲಿತಾಂಶಗಳನ್ನು ಪಡೆದವು. _ನೀಟ್_ ಪ್ರಯೋಗಾಲಯಗಳು "ತರ್ಕ ಮತ್ತು ಅಧಿಕೃತ ಸಮಸ್ಯೆ ಪರಿಹಾರ" ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಿದವು. ಎಲಿಜಾ ಮತ್ತು SHRDLU ಪ್ರಸಿದ್ಧ _ಸ್ಕ್ರಫಿ_ ವ್ಯವಸ್ಥೆಗಳಾಗಿದ್ದವು. 1980ರ ದಶಕದಲ್ಲಿ, ML ವ್ಯವಸ್ಥೆಗಳನ್ನು ಪುನರಾವರ್ತಿಸಬಹುದಾದಂತೆ ಮಾಡಲು ಬೇಡಿಕೆ ಬಂದಾಗ, _ನೀಟ್_ ವಿಧಾನವು ಮುಂಚೂಣಿಗೆ ಬಂತು ಏಕೆಂದರೆ ಅದರ ಫಲಿತಾಂಶಗಳು ಹೆಚ್ಚು ವಿವರಿಸಬಹುದಾಗಿವೆ. + +--- +## 1980ರ ದಶಕ ತಜ್ಞ ವ್ಯವಸ್ಥೆಗಳು + +ಕ್ಷೇತ್ರ ಬೆಳೆಯುತ್ತಾ, ಅದರ ವ್ಯವಹಾರಕ್ಕೆ ಲಾಭ ಸ್ಪಷ್ಟವಾಗುತ್ತಾ, 1980ರ ದಶಕದಲ್ಲಿ 'ತಜ್ಞ ವ್ಯವಸ್ಥೆಗಳ' ವ್ಯಾಪಾರವೂ ಹೆಚ್ಚಿತು. "ತಜ್ಞ ವ್ಯವಸ್ಥೆಗಳು ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ (AI) ಸಾಫ್ಟ್‌ವೇರ್‌ನ ಮೊದಲ ಯಶಸ್ವಿ ರೂಪಗಳಲ್ಲಿ ಒಂದಾಗಿವೆ." ([ಮೂಲ](https://wikipedia.org/wiki/Expert_system)). + +ಈ ರೀತಿಯ ವ್ಯವಸ್ಥೆ ಭಾಗಶಃ ನಿಯಮ ಇಂಜಿನ್ ಮತ್ತು ನಿಯಮ ವ್ಯವಸ್ಥೆಯನ್ನು ಉಪಯೋಗಿಸಿ ಹೊಸ ತತ್ವಗಳನ್ನು ನಿರ್ಣಯಿಸುವ ನಿರ್ಣಯ ಇಂಜಿನ್‌ನಿಂದ ಕೂಡಿದೆ. + +ಈ ಕಾಲದಲ್ಲಿ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗೆ ಹೆಚ್ಚುವರಿ ಗಮನ ನೀಡಲಾಯಿತು. + +--- +## 1987 - 1993: AI 'ಚಿಲ್' + +ವಿಶೇಷ ತಜ್ಞ ವ್ಯವಸ್ಥೆಗಳ ಹಾರ್ಡ್‌ವೇರ್ ವ್ಯಾಪಾರವು ತುಂಬಾ ವಿಶೇಷೀಕೃತವಾಗುವ ಪರಿಣಾಮ ಉಂಟುಮಾಡಿತು. ವೈಯಕ್ತಿಕ ಕಂಪ್ಯೂಟರ್‌ಗಳ ಏರಿಕೆ ಈ ದೊಡ್ಡ, ವಿಶೇಷೀಕೃತ, ಕೇಂದ್ರಿತ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಸ್ಪರ್ಧೆ ನೀಡಿತು. ಗಣನದ ಪ್ರಜಾಪ್ರಭುತ್ವ ಆರಂಭವಾಯಿತು ಮತ್ತು ಇದು ದೊಡ್ಡ ಡೇಟಾ ಸ್ಫೋಟಕ್ಕೆ ದಾರಿ ಮಾಡಿಕೊಟ್ಟಿತು. + +--- +## 1993 - 2011 + +ಈ ಕಾಲಘಟ್ಟದಲ್ಲಿ ML ಮತ್ತು AI ಹೊಸ ಯುಗವನ್ನು ಕಂಡವು, ಮೊದಲಿನ ಡೇಟಾ ಮತ್ತು ಗಣನ ಶಕ್ತಿಯ ಕೊರತೆಗಳಿಂದ ಉಂಟಾದ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಸಾಧ್ಯವಾಯಿತು. ಡೇಟಾ ಪ್ರಮಾಣವು ವೇಗವಾಗಿ ಹೆಚ್ಚಿತು ಮತ್ತು ಹೆಚ್ಚು ಲಭ್ಯವಾಯಿತು, ವಿಶೇಷವಾಗಿ 2007 ರ ಸ್ಮಾರ್ಟ್‌ಫೋನ್ ಆಗಮನದೊಂದಿಗೆ. ಗಣನ ಶಕ್ತಿ ಗಣನೀಯವಾಗಿ ವೃದ್ಧಿಸಿತು ಮತ್ತು ಅಲ್ಗಾರಿದಮ್ಗಳು ಸಹ ಬೆಳವಣಿಗೆ ಕಂಡವು. ಕ್ಷೇತ್ರವು ವಯಸ್ಕತೆಯನ್ನು ಪಡೆದುಕೊಂಡಿತು ಮತ್ತು ಮುಂಚಿನ ಮುಕ್ತ ಚಟುವಟಿಕೆಗಳು ನಿಜವಾದ ಶಿಸ್ತಿನ ರೂಪದಲ್ಲಿ ರೂಪುಗೊಂಡವು. + +--- +## ಈಗ + +ಇಂದು ಯಂತ್ರ ಅಧ್ಯಯನ ಮತ್ತು AI ನಮ್ಮ ಜೀವನದ ಬಹುತೇಕ ಭಾಗಗಳನ್ನು ಸ್ಪರ್ಶಿಸುತ್ತವೆ. ಈ ಯುಗವು ಈ ಅಲ್ಗಾರಿದಮ್ಗಳ ಮಾನವ ಜೀವನದ ಮೇಲೆ ಇರುವ ಅಪಾಯಗಳು ಮತ್ತು ಸಾಧ್ಯತೆಗಳನ್ನು ಜಾಗರೂಕತೆಯಿಂದ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾಗಿದೆ. ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ ಬ್ರಾಡ್ ಸ್ಮಿತ್ ಹೇಳಿರುವಂತೆ, "ಮಾಹಿತಿ ತಂತ್ರಜ್ಞಾನವು ಗೌಪ್ಯತೆ ಮತ್ತು ಅಭಿವ್ಯಕ್ತಿಯ ಸ್ವಾತಂತ್ರ್ಯಗಳಂತಹ ಮೂಲಭೂತ ಮಾನವ ಹಕ್ಕುಗಳ ರಕ್ಷಣೆಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ವಿಷಯಗಳನ್ನು ಎತ್ತಿಹಿಡಿಯುತ್ತದೆ. ಈ ಉತ್ಪನ್ನಗಳನ್ನು ಸೃಷ್ಟಿಸುವ ತಂತ್ರಜ್ಞಾನ ಕಂಪನಿಗಳ ಹೊಣೆಗಾರಿಕೆ ಹೆಚ್ಚಿಸುತ್ತದೆ. ನಮ್ಮ ದೃಷ್ಟಿಯಲ್ಲಿ, ಇದು ಯೋಚನಾಶೀಲ ಸರ್ಕಾರ ನಿಯಂತ್ರಣ ಮತ್ತು ಸ್ವೀಕಾರ್ಯ ಬಳಕೆಗಳ ಸುತ್ತಲೂ ನಿಯಮಗಳ ಅಭಿವೃದ್ಧಿಯನ್ನು ಕರೆದೊಯ್ಯುತ್ತದೆ" ([ಮೂಲ](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). + +--- + +ಭವಿಷ್ಯದಲ್ಲಿ ಏನು ಸಂಭವಿಸುವುದು ನೋಡಬೇಕಾಗುತ್ತದೆ, ಆದರೆ ಈ ಕಂಪ್ಯೂಟರ್ ವ್ಯವಸ್ಥೆಗಳು ಮತ್ತು ಅವು ಚಾಲನೆ ಮಾಡುವ ಸಾಫ್ಟ್‌ವೇರ್ ಮತ್ತು ಅಲ್ಗಾರಿದಮ್ಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮುಖ್ಯ. ಈ ಪಠ್ಯಕ್ರಮವು ನಿಮಗೆ ಉತ್ತಮ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ ಎಂದು ನಾವು ಆಶಿಸುತ್ತೇವೆ, ನೀವು ಸ್ವತಃ ನಿರ್ಧರಿಸಬಹುದು. + +[![ಡೀಪ್ ಲರ್ನಿಂಗ್ ಇತಿಹಾಸ](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "ಡೀಪ್ ಲರ್ನಿಂಗ್ ಇತಿಹಾಸ") +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೊ: ಯಾನ್ ಲೆಕನ್ ಈ ಉಪನ್ಯಾಸದಲ್ಲಿ ಡೀಪ್ ಲರ್ನಿಂಗ್ ಇತಿಹಾಸವನ್ನು ಚರ್ಚಿಸುತ್ತಾರೆ + +--- +## 🚀ಸವಾಲು + +ಈ ಇತಿಹಾಸಾತ್ಮಕ ಕ್ಷಣಗಳಲ್ಲಿ ಒಂದನ್ನು ಆಳವಾಗಿ ಅಧ್ಯಯನ ಮಾಡಿ ಮತ್ತು ಅದರ ಹಿಂದೆ ಇರುವ ಜನರನ್ನು ತಿಳಿದುಕೊಳ್ಳಿ. ಅದ್ಭುತ ವ್ಯಕ್ತಿತ್ವಗಳಿವೆ, ಮತ್ತು ಯಾವುದೇ ವೈಜ್ಞಾನಿಕ ಆವಿಷ್ಕಾರವು ಸಾಂಸ್ಕೃತಿಕ ಖಾಲಿಯಲ್ಲಿ ಸೃಷ್ಟಿಸಲ್ಪಟ್ಟಿಲ್ಲ. ನೀವು ಏನು ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ? + +## [ಪೋಸ್ಟ್-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +--- +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಇಲ್ಲಿ ವೀಕ್ಷಿಸಲು ಮತ್ತು ಕೇಳಲು ಐಟಂಗಳು ಇವೆ: + +[ಈ ಪಾಡ್‌ಕಾಸ್ಟ್‌ನಲ್ಲಿ ಎಮಿ ಬಾಯ್ಡ್ AI ಅಭಿವೃದ್ಧಿಯನ್ನು ಚರ್ಚಿಸುತ್ತಾರೆ](http://runasradio.com/Shows/Show/739) + +[![ಎಮಿ ಬಾಯ್ಡ್ ಅವರ AI ಇತಿಹಾಸ](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "ಎಮಿ ಬಾಯ್ಡ್ ಅವರ AI ಇತಿಹಾಸ") + +--- + +## ನಿಯೋಜನೆ + +[ಟೈಮ್‌ಲೈನ್ ರಚಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/1-Introduction/2-history-of-ML/assignment.md b/translations/kn/1-Introduction/2-history-of-ML/assignment.md new file mode 100644 index 000000000..21988d996 --- /dev/null +++ b/translations/kn/1-Introduction/2-history-of-ML/assignment.md @@ -0,0 +1,27 @@ + +# ಟೈಮ್‌ಲೈನ್ ರಚಿಸಿ + +## ಸೂಚನೆಗಳು + +[ಈ ರೆಪೊ](https://github.com/Digital-Humanities-Toolkit/timeline-builder) ಬಳಸಿ, ಅಲ್ಗೋರಿದಮ್‌ಗಳು, ಗಣಿತ, ಸಂಖ್ಯಾಶಾಸ್ತ್ರ, AI, ಅಥವಾ ML ಇತಿಹಾಸದ ಕೆಲವು ಅಂಶಗಳ ಟೈಮ್‌ಲೈನ್ ರಚಿಸಿ, ಅಥವಾ ಇವುಗಳ ಸಂಯೋಜನೆ. ನೀವು ಒಬ್ಬ ವ್ಯಕ್ತಿ, ಒಂದು ಕಲ್ಪನೆ, ಅಥವಾ ದೀರ್ಘಕಾಲದ ಚಿಂತನೆಯ ಮೇಲೆ ಗಮನಹರಿಸಬಹುದು. ಬಹುಮಾಧ್ಯಮ ಅಂಶಗಳನ್ನು ಸೇರಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. + +## ರೂಬ್ರಿಕ್ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- | +| | GitHub ಪುಟವಾಗಿ ನಿಯೋಜಿಸಲಾದ ಟೈಮ್‌ಲೈನ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | ಕೋಡ್ ಅಪೂರ್ಣವಾಗಿದೆ ಮತ್ತು ನಿಯೋಜಿಸಲ್ಪಟ್ಟಿಲ್ಲ | ಟೈಮ್‌ಲೈನ್ ಅಪೂರ್ಣವಾಗಿದೆ, ಚೆನ್ನಾಗಿ ಸಂಶೋಧಿಸಲ್ಪಟ್ಟಿಲ್ಲ ಮತ್ತು ನಿಯೋಜಿಸಲ್ಪಟ್ಟಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/1-Introduction/3-fairness/README.md b/translations/kn/1-Introduction/3-fairness/README.md new file mode 100644 index 000000000..64a410834 --- /dev/null +++ b/translations/kn/1-Introduction/3-fairness/README.md @@ -0,0 +1,172 @@ + +# ಜವಾಬ್ದಾರಿಯುತ AI ಜೊತೆಗೆ ಯಂತ್ರ ಅಧ್ಯಯನ ಪರಿಹಾರಗಳನ್ನು ನಿರ್ಮಿಸುವುದು + +![ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಜವಾಬ್ದಾರಿಯುತ AI ಸಂಕ್ಷಿಪ್ತ ಟಿಪ್ಪಣಿ](../../../../translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.kn.png) +> ಟೊಮೊಮಿ ಇಮುರಾ ಅವರಿಂದ ಸ್ಕೆಚ್‌ನೋಟ್ [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ಪರಿಚಯ + +ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ, ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನವು ನಮ್ಮ ದೈನಂದಿನ ಜೀವನವನ್ನು ಹೇಗೆ ಪ್ರಭಾವಿಸುತ್ತಿದೆ ಮತ್ತು ಮಾಡುತ್ತಿದೆ ಎಂಬುದನ್ನು ಅನ್ವೇಷಿಸಲು ಪ್ರಾರಂಭಿಸುವಿರಿ. ಈಗಾಗಲೇ, ವ್ಯವಸ್ಥೆಗಳು ಮತ್ತು ಮಾದರಿಗಳು ದೈನಂದಿನ ನಿರ್ಧಾರ-ಮಾಡುವ ಕಾರ್ಯಗಳಲ್ಲಿ ಭಾಗವಹಿಸುತ್ತಿವೆ, ಉದಾಹರಣೆಗೆ ಆರೋಗ್ಯ ನಿರ್ಣಯಗಳು, ಸಾಲ ಅನುಮೋದನೆಗಳು ಅಥವಾ ಮೋಸ ಪತ್ತೆ. ಆದ್ದರಿಂದ, ಈ ಮಾದರಿಗಳು ವಿಶ್ವಾಸಾರ್ಹ ಫಲಿತಾಂಶಗಳನ್ನು ಒದಗಿಸಲು ಚೆನ್ನಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದು ಮುಖ್ಯ. ಯಾವುದೇ ಸಾಫ್ಟ್‌ವೇರ್ ಅಪ್ಲಿಕೇಶನ್‌ನಂತೆ, AI ವ್ಯವಸ್ಥೆಗಳು ನಿರೀಕ್ಷೆಗಳನ್ನು ತಪ್ಪಿಸಬಹುದು ಅಥವಾ ಇಚ್ಛಿತವಲ್ಲದ ಫಲಿತಾಂಶವನ್ನು ನೀಡಬಹುದು. ಅದಕ್ಕಾಗಿ AI ಮಾದರಿಯ ವರ್ತನೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ವಿವರಿಸುವುದು ಅತ್ಯಾವಶ್ಯಕ. + +ನೀವು ಈ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಬಳಸುತ್ತಿರುವ ಡೇಟಾ ಕೆಲವು ಜನಾಂಗ, ಲಿಂಗ, ರಾಜಕೀಯ ದೃಷ್ಟಿಕೋನ, ಧರ್ಮ ಅಥವಾ ಅಸಮಾನ ಪ್ರಮಾಣದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸುವಂತಹ ಜನಸಂಖ್ಯಾ ಗುಂಪುಗಳನ್ನು ಹೊಂದಿಲ್ಲದಿದ್ದರೆ ಏನಾಗಬಹುದು ಎಂದು ಕಲ್ಪಿಸಿ ನೋಡಿ. ಮಾದರಿಯ ಫಲಿತಾಂಶವು ಕೆಲವು ಜನಾಂಗವನ್ನು ಪ್ರೋತ್ಸಾಹಿಸುವಂತೆ ವ್ಯಾಖ್ಯಾನಿಸಿದರೆ ಏನಾಗುತ್ತದೆ? ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಪರಿಣಾಮವೇನು? ಜೊತೆಗೆ, ಮಾದರಿಯು ಹಾನಿಕರ ಫಲಿತಾಂಶ ನೀಡಿದರೆ ಮತ್ತು ಜನರಿಗೆ ಹಾನಿ ಉಂಟುಮಾಡಿದರೆ ಏನಾಗುತ್ತದೆ? AI ವ್ಯವಸ್ಥೆಯ ವರ್ತನೆಗೆ ಯಾರು ಹೊಣೆಗಾರರು? ಈ ಪ್ರಶ್ನೆಗಳನ್ನು ನಾವು ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಅನ್ವೇಷಿಸುವೆವು. + +ಈ ಪಾಠದಲ್ಲಿ ನೀವು: + +- ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ನ್ಯಾಯತೆಯ ಮಹತ್ವ ಮತ್ತು ನ್ಯಾಯತೆಯ ಸಂಬಂಧಿತ ಹಾನಿಗಳ ಬಗ್ಗೆ ಜಾಗೃತಿ ಹೆಚ್ಚಿಸುವಿರಿ. +- ವಿಶ್ವಾಸಾರ್ಹತೆ ಮತ್ತು ಸುರಕ್ಷತೆ ಖಚಿತಪಡಿಸಲು ಅಸಾಮಾನ್ಯ ಮತ್ತು ವಿಚಿತ್ರ ಸಂದರ್ಭಗಳನ್ನು ಅನ್ವೇಷಿಸುವ ಅಭ್ಯಾಸಕ್ಕೆ ಪರಿಚಿತರಾಗುವಿರಿ. +- ಎಲ್ಲರಿಗೂ ಸಬಲಗೊಳಿಸುವ ಸಮಾವೇಶಿ ವ್ಯವಸ್ಥೆಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವ ಅಗತ್ಯವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿರಿ. +- ಡೇಟಾ ಮತ್ತು ಜನರ ಗೌಪ್ಯತೆ ಮತ್ತು ಭದ್ರತೆಯನ್ನು ರಕ್ಷಿಸುವ ಮಹತ್ವವನ್ನು ಅನ್ವೇಷಿಸುವಿರಿ. +- AI ಮಾದರಿಗಳ ವರ್ತನೆಯನ್ನು ವಿವರಿಸಲು ಗ್ಲಾಸ್ ಬಾಕ್ಸ್ ವಿಧಾನದ ಮಹತ್ವವನ್ನು ನೋಡಿಕೊಳ್ಳುವಿರಿ. +- AI ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ವಿಶ್ವಾಸ ನಿರ್ಮಿಸಲು ಹೊಣೆಗಾರಿಕೆ ಅಗತ್ಯವಿರುವುದನ್ನು ಮನಗಂಡುಕೊಳ್ಳುವಿರಿ. + +## ಪೂರ್ವಾಪೇಕ್ಷಿತ + +ಪೂರ್ವಾಪೇಕ್ಷಿತವಾಗಿ, ದಯವಿಟ್ಟು "ಜವಾಬ್ದಾರಿಯುತ AI ತತ್ವಗಳು" ಕಲಿಕೆ ಮಾರ್ಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ ಮತ್ತು ಕೆಳಗಿನ ವಿಷಯದ ವಿಡಿಯೋವನ್ನು ವೀಕ್ಷಿಸಿ: + +ಜವಾಬ್ದಾರಿಯುತ AI ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿಯಲು ಈ [ಕಲಿಕೆ ಮಾರ್ಗ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) ಅನುಸರಿಸಿ + +[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವಿಡಿಯೋ: Microsoft's Approach to Responsible AI + +## ನ್ಯಾಯತೆ + +AI ವ್ಯವಸ್ಥೆಗಳು ಎಲ್ಲರಿಗೂ ನ್ಯಾಯವಾಗಿ ವರ್ತಿಸಬೇಕು ಮತ್ತು ಸಮಾನ ಗುಂಪಿನ ಜನರನ್ನು ವಿಭಿನ್ನ ರೀತಿಯಲ್ಲಿ ಪ್ರಭಾವಿತಗೊಳಿಸಬಾರದು. ಉದಾಹರಣೆಗೆ, AI ವ್ಯವಸ್ಥೆಗಳು ವೈದ್ಯಕೀಯ ಚಿಕಿತ್ಸೆ, ಸಾಲ ಅರ್ಜಿಗಳು ಅಥವಾ ಉದ್ಯೋಗದ ಮಾರ್ಗದರ್ಶನ ನೀಡುವಾಗ, ಸಮಾನ ಲಕ್ಷಣಗಳು, ಆರ್ಥಿಕ ಪರಿಸ್ಥಿತಿಗಳು ಅಥವಾ ವೃತ್ತಿಪರ ಅರ್ಹತೆಗಳಿರುವ ಎಲ್ಲರಿಗೂ ಸಮಾನ ಶಿಫಾರಸುಗಳನ್ನು ನೀಡಬೇಕು. ನಾವು ಪ್ರತಿಯೊಬ್ಬರೂ ನಮ್ಮ ನಿರ್ಧಾರಗಳು ಮತ್ತು ಕ್ರಿಯೆಗಳನ್ನು ಪ್ರಭಾವಿಸುವ ವಂಶಪಾರಂಪರಿಕ ಪೂರ್ವಗ್ರಹಗಳನ್ನು ಹೊಂದುತ್ತೇವೆ. ಈ ಪೂರ್ವಗ್ರಹಗಳು AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ತರಬೇತುಗೊಳಿಸಲು ಬಳಸುವ ಡೇಟಾದಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗಿರಬಹುದು. ಕೆಲವೊಮ್ಮೆ ಈ ಪ್ರಭಾವವು ಅನೈಚ್ಛಿಕವಾಗಿ ಸಂಭವಿಸಬಹುದು. ಡೇಟಾದಲ್ಲಿ ಪೂರ್ವಗ್ರಹವನ್ನು ಪರಿಚಯಿಸುವಾಗ ಜಾಗೃತಿಯಿಂದ ತಿಳಿದುಕೊಳ್ಳುವುದು ಕಷ್ಟ. + +**“ನ್ಯಾಯತೆಯ ಕೊರತೆ”** ಎಂದರೆ ಜನಾಂಗ, ಲಿಂಗ, ವಯಸ್ಸು ಅಥವಾ ಅಂಗವಿಕಲತೆ ಸ್ಥಿತಿಯಂತೆ ವ್ಯಾಖ್ಯಾನಿಸಲ್ಪಟ್ಟ ಗುಂಪಿನ ಮೇಲೆ ನಕಾರಾತ್ಮಕ ಪರಿಣಾಮಗಳು ಅಥವಾ “ಹಾನಿಗಳು”. ಮುಖ್ಯ ನ್ಯಾಯತೆಯ ಸಂಬಂಧಿತ ಹಾನಿಗಳನ್ನು ಹೀಗೆ ವರ್ಗೀಕರಿಸಬಹುದು: + +- **ಹಂಚಿಕೆ**, ಉದಾಹರಣೆಗೆ ಲಿಂಗ ಅಥವಾ ಜಾತಿ ಒಂದನ್ನು ಮತ್ತೊಂದಕ್ಕಿಂತ ಪ್ರೋತ್ಸಾಹಿಸುವುದು. +- **ಸೇವೆಯ ಗುಣಮಟ್ಟ**. ನೀವು ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಂದರ್ಭಕ್ಕಾಗಿ ಡೇಟಾವನ್ನು ತರಬೇತುಗೊಳಿಸಿದರೆ ಆದರೆ ವಾಸ್ತವಿಕತೆ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದ್ದರೆ, ಅದು ದೌರ್ಬಲ್ಯಪೂರ್ಣ ಸೇವೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಕಪ್ಪು ಚರ್ಮದ ಜನರನ್ನು ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗದ ಕೈ ಸಾಬೂನು ಡಿಸ್ಪೆನ್ಸರ್. [ಉಲ್ಲೇಖ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **ಅವಮಾನ**. ಅನ್ಯಾಯವಾಗಿ ಯಾರನ್ನಾದರೂ ಅಥವಾ ಯಾವುದನ್ನಾದರೂ ಟೀಕಿಸುವುದು ಮತ್ತು ಲೇಬಲ್ ಮಾಡುವುದು. ಉದಾಹರಣೆಗೆ, ಚಿತ್ರ ಲೇಬಲಿಂಗ್ ತಂತ್ರಜ್ಞಾನ ಕಪ್ಪು ಚರ್ಮದ ಜನರನ್ನು ಗೋರಿಲ್ಲಾಗಳಾಗಿ ತಪ್ಪಾಗಿ ಗುರುತಿಸಿತು. +- **ಅತಿವ್ಯಕ್ತ ಅಥವಾ ಅಲ್ಪಪ್ರತಿನಿಧಿತ್ವ**. ಒಂದು ನಿರ್ದಿಷ್ಟ ಗುಂಪು ನಿರ್ದಿಷ್ಟ ವೃತ್ತಿಯಲ್ಲಿ ಕಾಣಿಸದಿರುವುದು ಮತ್ತು ಯಾವುದೇ ಸೇವೆ ಅಥವಾ ಕಾರ್ಯವು ಅದನ್ನು ಮುಂದುವರಿಸುವುದು ಹಾನಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ. +- **ಸ್ಟೀರಿಯೋಟೈಪಿಂಗ್**. ಒಂದು ಗುಂಪನ್ನು ಪೂರ್ವನಿರ್ಧರಿತ ಗುಣಲಕ್ಷಣಗಳೊಂದಿಗೆ ಸಂಪರ್ಕಿಸುವುದು. ಉದಾಹರಣೆಗೆ, ಇಂಗ್ಲಿಷ್ ಮತ್ತು ಟರ್ಕಿಷ್ ಭಾಷಾಂತರ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಲಿಂಗಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಸ್ಟೀರಿಯೋಟೈಪಿಕಲ್ ಪದಗಳ ಕಾರಣದಿಂದ ತಪ್ಪುಗಳು ಸಂಭವಿಸಬಹುದು. + +![ಟರ್ಕಿಷ್‌ಗೆ ಭಾಷಾಂತರ](../../../../translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.kn.png) +> ಟರ್ಕಿಷ್‌ಗೆ ಭಾಷಾಂತರ + +![ಇಂಗ್ಲಿಷ್‌ಗೆ ಹಿಂದಿರುಗಿ ಭಾಷಾಂತರ](../../../../translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.kn.png) +> ಇಂಗ್ಲಿಷ್‌ಗೆ ಹಿಂದಿರುಗಿ ಭಾಷಾಂತರ + +AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವಾಗ ಮತ್ತು ಪರೀಕ್ಷಿಸುವಾಗ, AI ನ್ಯಾಯತೆಯುತವಾಗಿರಬೇಕು ಮತ್ತು ಪೂರ್ವಗ್ರಹಿತ ಅಥವಾ ಭೇದಭಾವಿ ನಿರ್ಧಾರಗಳನ್ನು ಮಾಡಲು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಬಾರದು, ಏಕೆಂದರೆ ಮಾನವರು ಕೂಡ ಇಂತಹ ನಿರ್ಧಾರಗಳನ್ನು ಮಾಡಬಾರದು. AI ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ನ್ಯಾಯತೆಯನ್ನು ಖಚಿತಪಡಿಸುವುದು ಸಂಕೀರ್ಣ ಸಾಮಾಜಿಕ-ತಾಂತ್ರಿಕ ಸವಾಲಾಗಿದೆ. + +### ವಿಶ್ವಾಸಾರ್ಹತೆ ಮತ್ತು ಸುರಕ್ಷತೆ + +ವಿಶ್ವಾಸ ನಿರ್ಮಿಸಲು, AI ವ್ಯವಸ್ಥೆಗಳು ಸಾಮಾನ್ಯ ಮತ್ತು ಅಪ್ರತೀಕ್ಷಿತ ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ ವಿಶ್ವಾಸಾರ್ಹ, ಸುರಕ್ಷಿತ ಮತ್ತು ಸತತವಾಗಿರಬೇಕು. AI ವ್ಯವಸ್ಥೆಗಳು ವಿಭಿನ್ನ ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ ಹೇಗೆ ವರ್ತಿಸುವುದೆಂದು ತಿಳಿದುಕೊಳ್ಳುವುದು ಮುಖ್ಯ, ವಿಶೇಷವಾಗಿ ಅವು ಅಸಾಮಾನ್ಯವಾಗಿದ್ದಾಗ. AI ಪರಿಹಾರಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ, AI ಪರಿಹಾರಗಳು ಎದುರಿಸುವ ವಿವಿಧ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದರ ಮೇಲೆ ಸಾಕಷ್ಟು ಗಮನ ನೀಡಬೇಕು. ಉದಾಹರಣೆಗೆ, ಸ್ವಯಂಚಾಲಿತ ಕಾರು ಜನರ ಸುರಕ್ಷತೆಯನ್ನು ಮೊದಲ ಆದ್ಯತೆಯಾಗಿ ಇರಿಸಿಕೊಳ್ಳಬೇಕು. ಆದ್ದರಿಂದ, ಕಾರು ಚಾಲನೆಗೆ ಶಕ್ತಿಯನ್ನು ನೀಡುವ AI ಎಲ್ಲಾ ಸಾಧ್ಯ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಪರಿಗಣಿಸಬೇಕು, ಉದಾಹರಣೆಗೆ ರಾತ್ರಿ, ಮಳೆ, ಹಿಮಪಾತ, ಮಕ್ಕಳ ರಸ್ತೆ ದಾಟುವುದು, ಪಶುಗಳು, ರಸ್ತೆ ನಿರ್ಮಾಣಗಳು ಇತ್ಯಾದಿ. AI ವ್ಯವಸ್ಥೆ ವಿವಿಧ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ವಿಶ್ವಾಸಾರ್ಹವಾಗಿ ಮತ್ತು ಸುರಕ್ಷಿತವಾಗಿ ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದು ಡೇಟಾ ವಿಜ್ಞಾನಿ ಅಥವಾ AI ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ವಿನ್ಯಾಸ ಅಥವಾ ಪರೀಕ್ಷೆಯ ಸಮಯದಲ್ಲಿ ಎಷ್ಟು ಮುಂಚಿತವಾಗಿ ಪರಿಗಣಿಸಿದ್ದಾರೆ ಎಂಬುದನ್ನು ಪ್ರತಿಬಿಂಬಿಸುತ್ತದೆ. + +> [🎥 ವಿಡಿಯೋಗಾಗಿ ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) + +### ಸಮಾವೇಶ + +AI ವ್ಯವಸ್ಥೆಗಳು ಎಲ್ಲರನ್ನೂ ತೊಡಗಿಸಿಕೊಳ್ಳಲು ಮತ್ತು ಸಬಲಗೊಳಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಬೇಕು. AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವಾಗ ಮತ್ತು ಜಾರಿಗೆ ತರುವಾಗ, ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು AI ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ಅನೈಚ್ಛಿಕವಾಗಿ ಜನರನ್ನು ಹೊರಗೊಳ್ಳುವಂತೆ ಮಾಡುವ ಸಾಧ್ಯತೆಯಿರುವ ಅಡ್ಡಿ-ಬಾಧೆಗಳನ್ನು ಗುರುತಿಸಿ ಪರಿಹರಿಸುತ್ತಾರೆ. ಉದಾಹರಣೆಗೆ, ಜಗತ್ತಿನಲ್ಲಿ 1 ಬಿಲಿಯನ್ ಅಂಗವಿಕಲರು ಇದ್ದಾರೆ. AI ಪ್ರಗತಿಯೊಂದಿಗೆ, ಅವರು ತಮ್ಮ ದೈನಂದಿನ ಜೀವನದಲ್ಲಿ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗೆ ಮತ್ತು ಅವಕಾಶಗಳಿಗೆ ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಬಹುದು. ಅಡ್ಡಿ-ಬಾಧೆಗಳನ್ನು ಪರಿಹರಿಸುವ ಮೂಲಕ, ಎಲ್ಲರಿಗೂ ಲಾಭದಾಯಕ ಉತ್ತಮ ಅನುಭವಗಳೊಂದಿಗೆ AI ಉತ್ಪನ್ನಗಳನ್ನು ಆವಿಷ್ಕರಿಸಲು ಮತ್ತು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಅವಕಾಶ ಸೃಷ್ಟಿಯಾಗುತ್ತದೆ. + +> [🎥 AI ನಲ್ಲಿ ಸಮಾವೇಶಕ್ಕಾಗಿ ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ](https://www.microsoft.com/videoplayer/embed/RE4vl9v) + +### ಭದ್ರತೆ ಮತ್ತು ಗೌಪ್ಯತೆ + +AI ವ್ಯವಸ್ಥೆಗಳು ಸುರಕ್ಷಿತವಾಗಿರಬೇಕು ಮತ್ತು ಜನರ ಗೌಪ್ಯತೆಯನ್ನು ಗೌರವಿಸಬೇಕು. ಜನರು ತಮ್ಮ ಗೌಪ್ಯತೆ, ಮಾಹಿತಿ ಅಥವಾ ಜೀವನವನ್ನು ಅಪಾಯಕ್ಕೆ ಹಾಕುವ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಕಡಿಮೆ ವಿಶ್ವಾಸ ಹೊಂದಿರುತ್ತಾರೆ. ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ತರಬೇತುಗೊಳಿಸುವಾಗ, ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡಲು ನಾವು ಡೇಟಾವನ್ನು ಅವಲಂಬಿಸುತ್ತೇವೆ. ಇದರಲ್ಲಿ, ಡೇಟಾದ ಮೂಲ ಮತ್ತು ಅಖಂಡತೆಯನ್ನು ಪರಿಗಣಿಸಬೇಕು. ಉದಾಹರಣೆಗೆ, ಡೇಟಾ ಬಳಕೆದಾರರಿಂದ ಸಲ್ಲಿಸಲ್ಪಟ್ಟದೋ ಅಥವಾ ಸಾರ್ವಜನಿಕವಾಗಿ ಲಭ್ಯವಿದೆಯೋ? ನಂತರ, ಡೇಟಾ ಜೊತೆಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ರಹಸ್ಯ ಮಾಹಿತಿಯನ್ನು ರಕ್ಷಿಸುವ ಮತ್ತು ದಾಳಿಗಳನ್ನು ತಡೆಯುವ AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವುದು ಅತ್ಯಂತ ಮುಖ್ಯ. AI ಹೆಚ್ಚು ವ್ಯಾಪಕವಾಗುತ್ತಿರುವಂತೆ, ಗೌಪ್ಯತೆ ಮತ್ತು ಪ್ರಮುಖ ವೈಯಕ್ತಿಕ ಮತ್ತು ವ್ಯವಹಾರ ಮಾಹಿತಿಯನ್ನು ರಕ್ಷಿಸುವುದು ಹೆಚ್ಚು ಪ್ರಮುಖ ಮತ್ತು ಸಂಕೀರ್ಣವಾಗುತ್ತಿದೆ. AI ಗೆ ಸಂಬಂಧಿಸಿದಂತೆ ಗೌಪ್ಯತೆ ಮತ್ತು ಡೇಟಾ ಭದ್ರತೆ ಸಮಸ್ಯೆಗಳಿಗೆ ವಿಶೇಷ ಗಮನ ನೀಡಬೇಕು ಏಕೆಂದರೆ AI ವ್ಯವಸ್ಥೆಗಳು ಜನರ ಬಗ್ಗೆ ನಿಖರ ಮತ್ತು ತಿಳಿದ ನಿರ್ಧಾರಗಳನ್ನು ಮಾಡಲು ಡೇಟಾ ಪ್ರವೇಶ ಅಗತ್ಯವಿದೆ. + +> [🎥 AI ನಲ್ಲಿ ಭದ್ರತೆಗಾಗಿ ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ](https://www.microsoft.com/videoplayer/embed/RE4voJF) + +- ಉದ್ಯಮವಾಗಿ ನಾವು GDPR (ಸಾಮಾನ್ಯ ಡೇಟಾ ರಕ್ಷಣಾ ನಿಯಮಾವಳಿ) ಮುಂತಾದ ನಿಯಮಾವಳಿಗಳಿಂದ ಪ್ರೇರಿತವಾಗಿ ಗೌಪ್ಯತೆ ಮತ್ತು ಭದ್ರತೆಯಲ್ಲಿ ಮಹತ್ವದ ಪ್ರಗತಿಯನ್ನು ಸಾಧಿಸಿದ್ದೇವೆ. +- ಆದರೆ AI ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ, ವ್ಯವಸ್ಥೆಗಳನ್ನು ಹೆಚ್ಚು ವೈಯಕ್ತಿಕ ಮತ್ತು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಮಾಡಲು ಹೆಚ್ಚಿನ ವೈಯಕ್ತಿಕ ಡೇಟಾ ಅಗತ್ಯವಿರುವುದು ಮತ್ತು ಗೌಪ್ಯತೆ ನಡುವಿನ ಒತ್ತಡವನ್ನು ನಾವು ಒಪ್ಪಿಕೊಳ್ಳಬೇಕು. +- ಇಂಟರ್ನೆಟ್ ಮೂಲಕ ಸಂಪರ್ಕಿತ ಕಂಪ್ಯೂಟರ್‌ಗಳ ಹುಟ್ಟುವಿಕೆಯಿಂದಾಗಿ, AI ಗೆ ಸಂಬಂಧಿಸಿದ ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳ ಸಂಖ್ಯೆ ಹೆಚ್ಚಾಗುತ್ತಿದೆ. +- ಅದೇ ಸಮಯದಲ್ಲಿ, ಭದ್ರತೆಯನ್ನು ಸುಧಾರಿಸಲು AI ಬಳಸಲಾಗುತ್ತಿದೆ. ಉದಾಹರಣೆಗೆ, ಇಂದಿನ ಬಹುತೇಕ ಆಧುನಿಕ ಆಂಟಿ-ವೈರಸ್ ಸ್ಕ್ಯಾನರ್‌ಗಳು AI ಹ್ಯೂರಿಸ್ಟಿಕ್ಸ್ ಮೂಲಕ ಚಾಲಿತವಾಗಿವೆ. +- ನಮ್ಮ ಡೇಟಾ ವಿಜ್ಞಾನ ಪ್ರಕ್ರಿಯೆಗಳು ಇತ್ತೀಚಿನ ಗೌಪ್ಯತೆ ಮತ್ತು ಭದ್ರತಾ ಅಭ್ಯಾಸಗಳೊಂದಿಗೆ ಸಮ್ಮಿಲನವಾಗಿರಬೇಕು. + +### ಪಾರದರ್ಶಕತೆ + +AI ವ್ಯವಸ್ಥೆಗಳು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದಾಗಿರಬೇಕು. ಪಾರದರ್ಶಕತೆಯ ಪ್ರಮುಖ ಭಾಗವೆಂದರೆ AI ವ್ಯವಸ್ಥೆಗಳ ಮತ್ತು ಅವುಗಳ ಘಟಕಗಳ ವರ್ತನೆಯನ್ನು ವಿವರಿಸುವುದು. AI ವ್ಯವಸ್ಥೆಗಳ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಸುಧಾರಿಸಲು, ಹಿತಧಾರಕರು ಅವು ಹೇಗೆ ಮತ್ತು ಏಕೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು, ಇದರಿಂದ ಅವರು ಕಾರ್ಯಕ್ಷಮತೆ ಸಮಸ್ಯೆಗಳು, ಸುರಕ್ಷತೆ ಮತ್ತು ಗೌಪ್ಯತೆ ಚಿಂತೆಗಳು, ಪೂರ್ವಗ್ರಹಗಳು, ಹೊರಗೊಳ್ಳುವ ಅಭ್ಯಾಸಗಳು ಅಥವಾ ಅನೈಚ್ಛಿತ ಫಲಿತಾಂಶಗಳನ್ನು ಗುರುತಿಸಬಹುದು. AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ಬಳಸುವವರು ಅವುಗಳನ್ನು ಯಾವಾಗ, ಏಕೆ ಮತ್ತು ಹೇಗೆ ಜಾರಿಗೆ ತರುತ್ತಾರೆ ಎಂಬುದರ ಬಗ್ಗೆ ಸತ್ಯನಿಷ್ಠರಾಗಿರಬೇಕು ಮತ್ತು ಬಳಸುವ ವ್ಯವಸ್ಥೆಗಳ ಮಿತಿಗಳನ್ನು ತಿಳಿಸಬೇಕು. ಉದಾಹರಣೆಗೆ, ಬ್ಯಾಂಕ್ ತನ್ನ ಗ್ರಾಹಕ ಸಾಲ ನಿರ್ಧಾರಗಳಿಗೆ AI ವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸಿದರೆ, ಫಲಿತಾಂಶಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ಯಾವ ಡೇಟಾ ವ್ಯವಸ್ಥೆಯ ಶಿಫಾರಸುಗಳನ್ನು ಪ್ರಭಾವಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮುಖ್ಯ. ಸರ್ಕಾರಗಳು ಕೈಗಾರಿಕೆಗಳಲ್ಲಿ AI ನಿಯಂತ್ರಣ ಆರಂಭಿಸುತ್ತಿವೆ, ಆದ್ದರಿಂದ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು ಸಂಸ್ಥೆಗಳು AI ವ್ಯವಸ್ಥೆ ನಿಯಮಾವಳಿ ಅಗತ್ಯಗಳನ್ನು ಪೂರೈಸುತ್ತದೆಯೇ ಎಂದು ವಿವರಿಸಬೇಕು, ವಿಶೇಷವಾಗಿ ಇಚ್ಛಿತವಲ್ಲದ ಫಲಿತಾಂಶ ಇದ್ದಾಗ. + +> [🎥 AI ನಲ್ಲಿ ಪಾರದರ್ಶಕತೆಗಾಗಿ ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ](https://www.microsoft.com/videoplayer/embed/RE4voJF) + +- AI ವ್ಯವಸ್ಥೆಗಳು ತುಂಬಾ ಸಂಕೀರ್ಣವಾಗಿರುವುದರಿಂದ ಅವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಮತ್ತು ಫಲಿತಾಂಶಗಳನ್ನು ಹೇಗೆ ವ್ಯಾಖ್ಯಾನಿಸಬೇಕು ಎಂಬುದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಕಷ್ಟ. +- ಈ ಅರ್ಥಮಾಡಿಕೊಳ್ಳದಿಕೆ ಈ ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿರ್ವಹಿಸುವ, ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮತ್ತು ದಾಖಲೆ ಮಾಡಿಕೊಳ್ಳುವ ರೀತಿಯನ್ನು ಪ್ರಭಾವಿಸುತ್ತದೆ. +- ಇದಕ್ಕಿಂತ ಮುಖ್ಯವಾಗಿ, ಈ ವ್ಯವಸ್ಥೆಗಳು ಉತ್ಪಾದಿಸುವ ಫಲಿತಾಂಶಗಳನ್ನು ಆಧರಿಸಿ ತೆಗೆದುಕೊಳ್ಳುವ ನಿರ್ಧಾರಗಳನ್ನು ಪ್ರಭಾವಿಸುತ್ತದೆ. + +### ಹೊಣೆಗಾರಿಕೆ + +AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವ ಮತ್ತು ಜಾರಿಗೆ ತರುವವರು ತಮ್ಮ ವ್ಯವಸ್ಥೆಗಳು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದಕ್ಕೆ ಹೊಣೆಗಾರರಾಗಿರಬೇಕು. ಮುಖ ಗುರುತಿಸುವಂತಹ ಸಂವೇದನಾಶೀಲ ತಂತ್ರಜ್ಞಾನಗಳೊಂದಿಗೆ ಹೊಣೆಗಾರಿಕೆ ಅಗತ್ಯ ವಿಶೇಷವಾಗಿ ಮುಖ್ಯ. ಇತ್ತೀಚೆಗೆ, ಮುಖ ಗುರುತಿಸುವ ತಂತ್ರಜ್ಞಾನಕ್ಕೆ ಹೆಚ್ಚುತ್ತಿರುವ ಬೇಡಿಕೆ ಇದೆ, ವಿಶೇಷವಾಗಿ ಕಾನೂನು ಅನುಷ್ಠಾನ ಸಂಸ್ಥೆಗಳಿಂದ, ಅವರು ಈ ತಂತ್ರಜ್ಞಾನವನ್ನು ಕಳೆದುಹೋಗಿದ ಮಕ್ಕಳನ್ನು ಹುಡುಕಲು ಉಪಯೋಗಿಸುತ್ತಾರೆ. ಆದರೆ, ಈ ತಂತ್ರಜ್ಞಾನಗಳನ್ನು ಸರ್ಕಾರವು ತಮ್ಮ ನಾಗರಿಕರ ಮೂಲಭೂತ ಸ್ವಾತಂತ್ರ್ಯಗಳನ್ನು ಅಪಾಯಕ್ಕೆ ಹಾಕಲು ಬಳಸಬಹುದು, ಉದಾಹರಣೆಗೆ ನಿರ್ದಿಷ್ಟ ವ್ಯಕ್ತಿಗಳ ನಿರಂತರ ನಿಗಾವಳಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಮೂಲಕ. ಆದ್ದರಿಂದ, ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು ಸಂಸ್ಥೆಗಳು ತಮ್ಮ AI ವ್ಯವಸ್ಥೆಯು ವ್ಯಕ್ತಿಗಳು ಅಥವಾ ಸಮಾಜದ ಮೇಲೆ ಹೇಗೆ ಪ್ರಭಾವ ಬೀರುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ಜವಾಬ್ದಾರರಾಗಿರಬೇಕು. + +[![ಮುಖ್ಯ AI ಸಂಶೋಧಕ ಮುಖ ಗುರುತಿಸುವ ಮೂಲಕ ಸಾಮೂಹಿಕ ನಿಗಾವಳಿಯ ಬಗ್ಗೆ ಎಚ್ಚರಿಕೆ ನೀಡುತ್ತಾರೆ](../../../../translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.kn.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವಿಡಿಯೋ: ಮುಖ ಗುರುತಿಸುವ ಮೂಲಕ ಸಾಮೂಹಿಕ ನಿಗಾವಳಿಯ ಎಚ್ಚರಿಕೆಗಳು + +ಕೊನೆಗೆ, ನಮ್ಮ ತಲೆಮಾರಿಗೆ, AI ಅನ್ನು ಸಮಾಜಕ್ಕೆ ತರುವ ಮೊದಲ ತಲೆಮಾರಿಗೆ, ದೊಡ್ಡ ಪ್ರಶ್ನೆ ಏನೆಂದರೆ, ಕಂಪ್ಯೂಟರ್‌ಗಳು ಜನರಿಗೆ ಹೊಣೆಗಾರರಾಗಿರಲು ಹೇಗೆ ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಮತ್ತು ಕಂಪ್ಯೂಟರ್‌ಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವವರು ಎಲ್ಲರಿಗೂ ಹೊಣೆಗಾರರಾಗಿರಲು ಹೇಗೆ ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು. + +## ಪರಿಣಾಮ ಮೌಲ್ಯಮಾಪನ + +ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವ ಮೊದಲು, AI ವ್ಯವಸ್ಥೆಯ ಉದ್ದೇಶವನ್ನು, ನಿರೀಕ್ಷಿತ ಬಳಕೆಯನ್ನು, ಎಲ್ಲಿ ಜಾರಿಗೆ ತರುವುದನ್ನು ಮತ್ತು ಯಾರು ವ್ಯವಸ್ಥೆಯೊಂದಿಗೆ ಸಂವಹನ ಮಾಡಲಿದ್ದಾರೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಪರಿಣಾಮ ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು ಮುಖ್ಯ. ಇದು ವ್ಯವಸ್ಥೆಯನ್ನು ವಿಮರ್ಶಿಸುವವರು ಅಥವಾ ಪರೀಕ್ಷಕರು ಸಾಧ್ಯವಿರುವ ಅಪಾಯಗಳು ಮತ್ತು ನಿರೀಕ್ಷಿತ ಪರಿಣಾಮಗಳನ್ನು ಗುರುತಿಸುವಾಗ ಪರಿಗಣಿಸಬೇಕಾದ ಅಂಶಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +ಪರಿಣಾಮ ಮೌಲ್ಯಮಾಪನ ನಡೆಸುವಾಗ ಗಮನಿಸುವ ಕ್ಷೇತ್ರಗಳು: + +* **ವ್ಯಕ್ತಿಗಳ ಮೇಲೆ ಹಾನಿಕರ ಪರಿಣಾಮ**. ಯಾವುದೇ ನಿರ್ಬಂಧಗಳು ಅಥವಾ ಅಗತ್ಯಗಳು, ಬೆಂಬಲಿಸದ ಬಳಕೆ ಅಥವಾ ವ್ಯವಸ್ಥೆಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ತಡೆಯುವ ಯಾವುದೇ ತಿಳಿದ ಮಿತಿಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು, ವ್ಯವಸ್ಥೆಯನ್ನು ವ್ಯಕ್ತಿಗಳಿಗೆ ಹಾನಿ ಉಂಟುಮಾಡುವ ರೀತಿಯಲ್ಲಿ ಬಳಸದಂತೆ ಖಚಿತಪಡಿಸಲು ಅಗತ್ಯ. +* **ಡೇಟಾ ಅಗತ್ಯಗಳು**. ವ್ಯವಸ್ಥೆ ಡೇಟಾವನ್ನು ಹೇಗೆ ಮತ್ತು ಎಲ್ಲಿ ಬಳಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ವಿಮರ್ಶಕರಿಗೆ GDPR ಅಥವಾ HIPPA ಡೇಟಾ ನಿಯಮಾವಳಿಗಳಂತಹ ಯಾವುದೇ ಡೇಟಾ ಅಗತ್ಯಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಜೊತೆಗೆ, ತರಬೇತಿಗೆ ಡೇಟಾದ ಮೂಲ ಅಥವಾ ಪ್ರಮಾಣ ಸಾಕಷ್ಟು ಇದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. +* **ಪರಿಣಾಮದ ಸಾರಾಂಶ**. ವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸುವುದರಿಂದ ಸಂಭವಿಸಬಹುದಾದ ಹಾನಿಗಳ ಪಟ್ಟಿಯನ್ನು ಸಂಗ್ರಹಿಸಿ. ML ಜೀವನಚರ್ಯೆಯಲ್ಲಿ, ಗುರುತಿಸಲ್ಪಟ್ಟ ಸಮಸ್ಯೆಗಳು ಪರಿಹಾರಗೊಂಡಿವೆ ಅಥವಾ ಪರಿಹರಿಸಲ್ಪಟ್ಟಿವೆ ಎಂದು ಪರಿಶೀಲಿಸಿ. +* **ಪ್ರತೀ ಆರು ಮೂಲ ತತ್ವಗಳಿಗೆ ಅನ್ವಯಿಸುವ ಗುರಿಗಳು**. ಪ್ರತೀ ತತ್ವದಿಂದ ಗುರಿಗಳು ಪೂರೈಸಲ್ಪಟ್ಟಿವೆ ಅಥವಾ ಯಾವುದೇ ಗ್ಯಾಪ್‌ಗಳಿವೆ ಎಂದು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ. + +## ಜವಾಬ್ದಾರಿಯುತ AI ಜೊತೆಗೆ ಡಿಬಗ್ ಮಾಡುವುದು + +ಸಾಫ್ಟ್‌ವೇರ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಡಿಬಗ್ ಮಾಡುವಂತೆ, AI ವ್ಯವಸ್ಥೆಯನ್ನು ಡಿಬಗ್ ಮಾಡುವುದು ವ್ಯವಸ್ಥೆಯ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸುವ ಮತ್ತು ಪರಿಹರಿಸುವ ಅಗತ್ಯ ಪ್ರಕ್ರಿಯೆ. ಮಾದರಿ ನಿರೀಕ್ಷೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದ ಅಥವಾ ಜವಾಬ್ದಾರಿಯುತವಾಗದಿರುವುದಕ್ಕೆ ಹಲವಾರು ಕಾರಣಗಳಿರಬಹುದು. ಬಹುತೇಕ ಸಾಂಪ್ರದಾಯಿಕ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆ ಮೌಲ್ಯಮಾಪನಗಳು ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯ ಪ್ರಮಾಣಾತ್ಮಕ ಸಮಗ್ರಗಳು, ಅವು ಜವಾಬ್ದಾರಿಯುತ AI ತತ್ವಗಳನ್ನು ಉಲ್ಲಂಘಿಸುವುದನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಸಾಕಾಗುವುದಿಲ್ಲ. ಜೊತೆಗೆ, ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿ ಒಂದು ಕಪ್ಪು ಬಾಕ್ಸ್ ಆಗಿದ್ದು, ಅದರ ಫಲಿತಾಂಶವನ್ನು ಏನು ಚಾಲನೆ ಮಾಡುತ್ತದೆ ಅಥವಾ ತಪ್ಪು ಮಾಡಿದಾಗ ವಿವರಿಸುವುದು ಕಷ್ಟ. ಈ ಕೋರ್ಸ್‌ನ ನಂತರದ ಭಾಗದಲ್ಲಿ, ನಾವು ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ಡಿಬಗ್ ಮಾಡುವುದನ್ನು ಕಲಿಯುತ್ತೇವೆ. ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು AI ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರಿಗೆ ಸಮಗ್ರ ಸಾಧನವನ್ನು ಒದಗಿಸುತ್ತದೆ: + +* **ದೋಷ ವಿಶ್ಲೇಷಣೆ**. ವ್ಯವಸ್ಥೆಯ ನ್ಯಾಯತೆ ಅಥವಾ ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಪ್ರಭಾವಿಸುವ ಮಾದರಿಯ ದೋಷ ವಿತರಣೆ ಗುರುತಿಸಲು. +* **ಮಾದರಿ ಅವಲೋಕನ**. ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವೆ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯಲ್ಲಿ ಅಸಮಾನತೆಗಳಿರುವ ಸ್ಥಳಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು. +* **ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ**. ಡೇಟಾ ವಿತರಣೆ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ನ್ಯಾಯತೆ, ಸಮಾವೇಶ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹತೆ ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದಾದ ಯಾವುದೇ ಪೂರ್ವಗ್ರಹವನ್ನು ಗುರುತಿಸಲು. +* **ಮಾದರಿ ವ್ಯಾಖ್ಯಾನಾತ್ಮಕತೆ**. ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಏನು ಪ್ರಭಾವಿಸುತ್ತದೆ ಅಥವಾ ಪ್ರೇರೇಪಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು. ಇದು ಪಾರದರ್ಶಕತೆ ಮತ್ತು ಹೊಣೆಗಾರಿಕೆಗೆ ಮಹತ್ವಪೂರ್ಣವಾಗಿದೆ. + +## 🚀 ಸವಾಲು + +ಹಾನಿಗಳನ್ನು ಮೊದಲಿನಿಂದಲೇ ಪರಿಚಯಿಸುವುದನ್ನು ತಡೆಯಲು, ನಾವು: + +- ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡುವ ಜನರ ನಡುವೆ ವೈವಿಧ್ಯಮಯ ಹಿನ್ನೆಲೆ ಮತ್ತು ದೃಷ್ಟಿಕೋನಗಳನ್ನು ಹೊಂದಿರಬೇಕು +- ನಮ್ಮ ಸಮಾಜದ ವೈವಿಧ್ಯತೆಯನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ ಡೇಟಾಸೆಟ್‌ಗಳಲ್ಲಿ ಹೂಡಿಕೆ ಮಾಡಬೇಕು +- ಯಂತ್ರ ಅಧ್ಯಯನ ಜೀವನಚರ್ಯೆಯಲ್ಲಿ ಜವಾಬ್ದಾರಿಯುತ AI ಕಂಡುಹಿಡಿಯಲು ಮತ್ತು ಸರಿಪಡಿಸಲು ಉತ್ತಮ ವಿಧಾನಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಬೇಕು + +ಮಾದರಿಯ ಅಸ್ಥಿರತೆ ಮಾದರಿ ನಿರ್ಮಾಣ ಮತ್ತು ಬಳಕೆಯಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗಿರುವ ನೈಜ ಜೀವನದ ಸಂದರ್ಭಗಳನ್ನು ಯೋಚಿಸಿ. ಇನ್ನೇನು ಪರಿಗಣಿಸಬೇಕು? + +## [ಪೋಸ್ಟ್-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ನ್ಯಾಯ ಮತ್ತು ಅನ್ಯಾಯದ ತತ್ವಗಳ ಕೆಲವು ಮೂಲಭೂತಗಳನ್ನು ಕಲಿತಿದ್ದೀರಿ. + +ಈ ವಿಷಯಗಳಲ್ಲಿ ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ತಿಳಿಯಲು ಈ ಕಾರ್ಯಾಗಾರವನ್ನು ವೀಕ್ಷಿಸಿ: + +- ಜವಾಬ್ದಾರಿಯುತ AI ಗಾಗಿ ಪ್ರಯತ್ನ: Besmira Nushi, Mehrnoosh Sameki ಮತ್ತು Amit Sharma ಅವರಿಂದ ತತ್ವಗಳನ್ನು ಅಭ್ಯಾಸಕ್ಕೆ ತರುವಿಕೆ + +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋ ವೀಕ್ಷಿಸಲು: Besmira Nushi, Mehrnoosh Sameki, ಮತ್ತು Amit Sharma ಅವರಿಂದ ಜವಾಬ್ದಾರಿಯುತ AI ನಿರ್ಮಿಸಲು RAI Toolbox: ಒಂದು ಓಪನ್-ಸೋರ್ಸ್ ಫ್ರೇಮ್ವರ್ಕ್ + +ಇನ್ನೂ ಓದಿ: + +- ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ RAI ಸಂಪನ್ಮೂಲ ಕೇಂದ್ರ: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) + +- ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ FATE ಸಂಶೋಧನಾ ಗುಂಪು: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) + +RAI Toolbox: + +- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox) + +ನ್ಯಾಯತೆಯ ಖಚಿತತೆಗಾಗಿ Azure ಯಂತ್ರ ಅಧ್ಯಯನದ ಸಾಧನಗಳ ಬಗ್ಗೆ ಓದಿ: + +- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) + +## ನಿಯೋಜನೆ + +[RAI Toolbox ಅನ್ವೇಷಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/1-Introduction/3-fairness/assignment.md b/translations/kn/1-Introduction/3-fairness/assignment.md new file mode 100644 index 000000000..50b483809 --- /dev/null +++ b/translations/kn/1-Introduction/3-fairness/assignment.md @@ -0,0 +1,27 @@ + +# ಜವಾಬ್ದಾರಿಯುತ AI ಟೂಲ್‌ಬಾಕ್ಸ್ ಅನ್ನು ಅನ್ವೇಷಿಸಿ + +## ಸೂಚನೆಗಳು + +ಈ ಪಾಠದಲ್ಲಿ ನೀವು ಜವಾಬ್ದಾರಿಯುತ AI ಟೂಲ್‌ಬಾಕ್ಸ್ ಬಗ್ಗೆ ತಿಳಿದುಕೊಂಡಿದ್ದೀರಿ, ಇದು "ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳಿಗೆ AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಮತ್ತು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡುವ ಓಪನ್-ಸೋರ್ಸ್, ಸಮುದಾಯ ಚಾಲಿತ ಯೋಜನೆ." ಈ ಕಾರ್ಯಕ್ಕಾಗಿ, RAI ಟೂಲ್‌ಬಾಕ್ಸ್‌ನ [ನೋಟ್ಬುಕ್‌ಗಳ](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) ಒಂದನ್ನು ಅನ್ವೇಷಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಕಂಡುಹಿಡಿತಗಳನ್ನು ಒಂದು ಪೇಪರ್ ಅಥವಾ ಪ್ರಸ್ತುತಿಯಲ್ಲಿ ವರದಿ ಮಾಡಿ. + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡ | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆ ಅಗತ್ಯವಿದೆ | +| -------- | --------- | -------- | ----------------- | +| | ಫೇರ್‌ಲರ್ನ್‌ನ ವ್ಯವಸ್ಥೆಗಳ ಬಗ್ಗೆ ಚರ್ಚಿಸುವ ಪೇಪರ್ ಅಥವಾ ಪವರ್‌ಪಾಯಿಂಟ್ ಪ್ರಸ್ತುತಿ, ಚಾಲನೆ ಮಾಡಿದ ನೋಟ್ಬುಕ್ ಮತ್ತು ಅದನ್ನು ಚಾಲನೆ ಮಾಡುವ ಮೂಲಕ ಪಡೆದ ನಿರ್ಣಯಗಳನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | ನಿರ್ಣಯಗಳಿಲ್ಲದೆ ಪೇಪರ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | ಯಾವುದೇ ಪೇಪರ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/1-Introduction/4-techniques-of-ML/README.md b/translations/kn/1-Introduction/4-techniques-of-ML/README.md new file mode 100644 index 000000000..1005c0389 --- /dev/null +++ b/translations/kn/1-Introduction/4-techniques-of-ML/README.md @@ -0,0 +1,134 @@ + +# ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರಗಳು + +ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವುದು, ಬಳಸುವುದು ಮತ್ತು ನಿರ್ವಹಿಸುವ ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ಅವು ಬಳಸುವ ಡೇಟಾ ಅನೇಕ ಇತರ ಅಭಿವೃದ್ಧಿ ಕಾರ್ಯಪ್ರವಾಹಗಳಿಂದ ಬಹಳ ವಿಭಿನ್ನ ಪ್ರಕ್ರಿಯೆಯಾಗಿದೆ. ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸ್ಪಷ್ಟಪಡಿಸಿ, ನೀವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಪ್ರಮುಖ ತಂತ್ರಗಳನ್ನು ವಿವರಿಸುವೆವು. ನೀವು: + +- ಯಂತ್ರ ಅಧ್ಯಯನದ ಅಡಿಯಲ್ಲಿ ಇರುವ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಉನ್ನತ ಮಟ್ಟದಲ್ಲಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತೀರಿ. +- 'ಮಾದರಿಗಳು', 'ಭವಿಷ್ಯವಾಣಿ', ಮತ್ತು 'ತರಬೇತಿ ಡೇಟಾ' ಎಂಬ ಮೂಲಭೂತ ಸಂಪ್ರದಾಯಗಳನ್ನು ಅನ್ವೇಷಿಸುತ್ತೀರಿ. + +## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") + +> 🎥 ಈ ಪಾಠವನ್ನು ಕೆಲಸಮಾಡುವ ಸಣ್ಣ ವೀಡಿಯೊಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. + +## ಪರಿಚಯ + +ಉನ್ನತ ಮಟ್ಟದಲ್ಲಿ, ಯಂತ್ರ ಅಧ್ಯಯನ (ML) ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ರಚಿಸುವ ಕಲೆ ಹಲವಾರು ಹಂತಗಳಿಂದ ಕೂಡಿದೆ: + +1. **ಪ್ರಶ್ನೆಯನ್ನು ನಿರ್ಧರಿಸಿ**. ಬಹುತೇಕ ML ಪ್ರಕ್ರಿಯೆಗಳು ಸರಳ ಶರತಿನ ಪ್ರೋಗ್ರಾಮ್ ಅಥವಾ ನಿಯಮಾಧಾರಿತ ಎಂಜಿನ್ ಮೂಲಕ ಉತ್ತರಿಸದ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುವುದರಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತವೆ. ಈ ಪ್ರಶ್ನೆಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಡೇಟಾ ಸಂಗ್ರಹದ ಆಧಾರದ ಮೇಲೆ ಭವಿಷ್ಯವಾಣಿಗಳ ಸುತ್ತಲೂ ಇರುತ್ತವೆ. +2. **ಡೇಟಾ ಸಂಗ್ರಹಿಸಿ ಮತ್ತು ಸಿದ್ಧಪಡಿಸಿ**. ನಿಮ್ಮ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸಲು, ನಿಮಗೆ ಡೇಟಾ ಬೇಕಾಗುತ್ತದೆ. ನಿಮ್ಮ ಡೇಟಾದ ಗುಣಮಟ್ಟ ಮತ್ತು ಕೆಲವೊಮ್ಮೆ ಪ್ರಮಾಣವು ನಿಮ್ಮ ಪ್ರಾಥಮಿಕ ಪ್ರಶ್ನೆಗೆ ನೀವು ಎಷ್ಟು ಚೆನ್ನಾಗಿ ಉತ್ತರಿಸಬಹುದು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವುದು ಈ ಹಂತದ ಪ್ರಮುಖ ಅಂಶವಾಗಿದೆ. ಈ ಹಂತದಲ್ಲಿ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಗುಂಪುಗಳಾಗಿ ಡೇಟಾವನ್ನು ವಿಭಜಿಸುವುದೂ ಸೇರಿದೆ. +3. **ತರಬೇತಿ ವಿಧಾನವನ್ನು ಆಯ್ಕೆಮಾಡಿ**. ನಿಮ್ಮ ಪ್ರಶ್ನೆ ಮತ್ತು ಡೇಟಾದ ಸ್ವಭಾವದ ಆಧಾರದ ಮೇಲೆ, ನೀವು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಉತ್ತಮವಾಗಿ ಪ್ರತಿಬಿಂಬಿಸುವ ಮತ್ತು ಅದಕ್ಕೆ ಸರಿಯಾದ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡಲು ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಹೇಗೆ ತರಬೇತಿಮಾಡಬೇಕೆಂದು ಆಯ್ಕೆಮಾಡಬೇಕು. ಇದು ನಿಮ್ಮ ML ಪ್ರಕ್ರಿಯೆಯ ಭಾಗವಾಗಿದ್ದು, ವಿಶೇಷ ಪರಿಣತಿ ಮತ್ತು ಬಹುಶಃ ಸಾಕಷ್ಟು ಪ್ರಯೋಗಗಳನ್ನು ಅಗತ್ಯವಿರುತ್ತದೆ. +4. **ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ**. ನಿಮ್ಮ ತರಬೇತಿ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು, ನೀವು ವಿವಿಧ ಅಲ್ಗಾರಿದಮ್‌ಗಳನ್ನು ಬಳಸಿ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ ಡೇಟಾದಲ್ಲಿನ ಮಾದರಿಗಳನ್ನು ಗುರುತಿಸುವಂತೆ ಮಾಡುತ್ತೀರಿ. ಮಾದರಿ ಒಳಗಿನ ತೂಕಗಳನ್ನು ಬಳಸಬಹುದು, ಅವುಗಳನ್ನು ಹೊಂದಿಸಿ ಡೇಟಾದ ಕೆಲವು ಭಾಗಗಳನ್ನು ಪ್ರಾಧಾನ್ಯತೆ ನೀಡಲು ಉತ್ತಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು. +5. **ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ**. ನೀವು ಸಂಗ್ರಹಿಸಿದ ಡೇಟಾದಿಂದ ಮೊದಲೇ ನೋಡದ ಡೇಟಾ (ನಿಮ್ಮ ಪರೀಕ್ಷಾ ಡೇಟಾ) ಬಳಸಿ ಮಾದರಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂದು ನೋಡುತ್ತೀರಿ. +6. **ಪ್ಯಾರಾಮೀಟರ್ ಟ್ಯೂನಿಂಗ್**. ನಿಮ್ಮ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯ ಆಧಾರದ ಮೇಲೆ, ನೀವು ವಿವಿಧ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಅಥವಾ ಅಲ್ಗಾರಿದಮ್‌ಗಳ ವರ್ತನೆಯನ್ನು ನಿಯಂತ್ರಿಸುವ ಚರಗಳನ್ನು ಬಳಸಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮರುಕಳಿಸಬಹುದು. +7. **ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ**. ಹೊಸ ಇನ್‌ಪುಟ್‌ಗಳನ್ನು ಬಳಸಿ ನಿಮ್ಮ ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಿಸಿ. + +## ಯಾವ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳಬೇಕು + +ಕಂಪ್ಯೂಟರ್‌ಗಳು ಡೇಟಾದಲ್ಲಿನ ಗುಪ್ತ ಮಾದರಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವಲ್ಲಿ ವಿಶೇಷವಾಗಿ ನಿಪುಣರಾಗಿವೆ. ಈ ಉಪಯೋಗವು ನಿರ್ದಿಷ್ಟ ಕ್ಷೇತ್ರದ ಬಗ್ಗೆ ಪ್ರಶ್ನೆಗಳಿರುವ ಸಂಶೋಧಕರಿಗೆ ಬಹಳ ಸಹಾಯಕವಾಗಿದೆ, ಅವುಗಳನ್ನು ಸರಳ ನಿಯಮಾಧಾರಿತ ಎಂಜಿನ್ ರಚಿಸುವ ಮೂಲಕ ಸುಲಭವಾಗಿ ಉತ್ತರಿಸಲಾಗುವುದಿಲ್ಲ. ಉದಾಹರಣೆಗೆ, ಒಂದು ಅಕ್ಟ್ಯೂರಿಯಲ್ ಕಾರ್ಯದಲ್ಲಿ, ಡೇಟಾ ವಿಜ್ಞಾನಿ ಧೂಮಪಾನ ಮಾಡುವವರ ಮತ್ತು ಧೂಮಪಾನ ಮಾಡದವರ ಮರಣಾಂಶದ ಬಗ್ಗೆ ಕೈಯಿಂದ ರಚಿಸಿದ ನಿಯಮಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು. + +ಆದರೆ, ಅನೇಕ ಇತರ ಚರಗಳನ್ನು ಸಮೀಕರಣಕ್ಕೆ ಸೇರಿಸಿದಾಗ, ಭೂತಕಾಲದ ಆರೋಗ್ಯ ಇತಿಹಾಸದ ಆಧಾರದ ಮೇಲೆ ಭವಿಷ್ಯದ ಮರಣಾಂಶ ದರಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ML ಮಾದರಿ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಬಹುದು. ಇನ್ನೊಂದು ಸಂತೋಷದ ಉದಾಹರಣೆ ಎಂದರೆ, ಲ್ಯಾಟಿಟ್ಯೂಡ್, ಲಾಂಗಿಟ್ಯೂಡ್, ಹವಾಮಾನ ಬದಲಾವಣೆ, ಸಮುದ್ರದ ಸಮೀಪತೆ, ಜೆಟ್ ಸ್ಟ್ರೀಮ್ ಮಾದರಿಗಳು ಮತ್ತು ಇನ್ನಷ್ಟು ಡೇಟಾ ಆಧಾರದ ಮೇಲೆ ನಿರ್ದಿಷ್ಟ ಸ್ಥಳದಲ್ಲಿ ಏಪ್ರಿಲ್ ತಿಂಗಳ ಹವಾಮಾನ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡುವುದು. + +✅ ಈ [ಸ್ಲೈಡ್ ಡೆಕ್](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) ಹವಾಮಾನ ಮಾದರಿಗಳ ಮೇಲೆ ML ಬಳಕೆಯ ಐತಿಹಾಸಿಕ ದೃಷ್ಟಿಕೋನವನ್ನು ನೀಡುತ್ತದೆ. + +## ನಿರ್ಮಾಣಕ್ಕೂ ಮುಂಚಿನ ಕಾರ್ಯಗಳು + +ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ನೀವು ಪೂರ್ಣಗೊಳಿಸಬೇಕಾದ ಹಲವಾರು ಕಾರ್ಯಗಳಿವೆ. ನಿಮ್ಮ ಪ್ರಶ್ನೆಯನ್ನು ಪರೀಕ್ಷಿಸಲು ಮತ್ತು ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಗಳ ಆಧಾರದ ಮೇಲೆ ಊಹೆಯನ್ನು ರೂಪಿಸಲು, ನೀವು ಹಲವಾರು ಅಂಶಗಳನ್ನು ಗುರುತಿಸಿ ಸಂರಚಿಸಬೇಕಾಗುತ್ತದೆ. + +### ಡೇಟಾ + +ನಿಮ್ಮ ಪ್ರಶ್ನೆಗೆ ಯಾವುದೇ ರೀತಿಯ ಖಚಿತತೆಯಿಂದ ಉತ್ತರಿಸಲು, ನಿಮಗೆ ಸರಿಯಾದ ಪ್ರಕಾರದ ಸಾಕಷ್ಟು ಡೇಟಾ ಬೇಕಾಗುತ್ತದೆ. ಈ ಸಮಯದಲ್ಲಿ ನೀವು ಮಾಡಬೇಕಾದ ಎರಡು ಕಾರ್ಯಗಳಿವೆ: + +- **ಡೇಟಾ ಸಂಗ್ರಹಿಸಿ**. ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಯಲ್ಲಿ ನ್ಯಾಯತೆಯ ಬಗ್ಗೆ ಹಿಂದಿನ ಪಾಠವನ್ನು ಗಮನದಲ್ಲಿಟ್ಟುಕೊಂಡು, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಜಾಗರೂಕತೆಯಿಂದ ಸಂಗ್ರಹಿಸಿ. ಈ ಡೇಟಾದ ಮೂಲಗಳು, ಅದರಲ್ಲಿರುವ ಯಾವುದೇ ಅಂತರಂಗಪೂರ್ವಾಗ್ರಹಗಳು ಮತ್ತು ಅದರ ಮೂಲವನ್ನು ದಾಖಲಿಸಿ. +- **ಡೇಟಾ ಸಿದ್ಧಪಡಿಸಿ**. ಡೇಟಾ ಸಿದ್ಧಪಡಿಸುವ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಹಲವಾರು ಹಂತಗಳಿವೆ. ನೀವು ವಿಭಿನ್ನ ಮೂಲಗಳಿಂದ ಬಂದಿದ್ದರೆ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಿ ಸಾಮಾನ್ಯೀಕರಿಸಬೇಕಾಗಬಹುದು. ನೀವು ಡೇಟಾದ ಗುಣಮಟ್ಟ ಮತ್ತು ಪ್ರಮಾಣವನ್ನು ಸುಧಾರಿಸಲು ವಿವಿಧ ವಿಧಾನಗಳನ್ನು ಬಳಸಬಹುದು, ಉದಾಹರಣೆಗೆ ಸ್ಟ್ರಿಂಗ್‌ಗಳನ್ನು ಸಂಖ್ಯೆಗಳಾಗಿ ಪರಿವರ್ತಿಸುವುದು ([Clustering](../../5-Clustering/1-Visualize/README.md) ನಲ್ಲಿ ಮಾಡುತ್ತೇವೆ). ನೀವು ಮೂಲದ ಆಧಾರದ ಮೇಲೆ ಹೊಸ ಡೇಟಾವನ್ನು ರಚಿಸಬಹುದು ([Classification](../../4-Classification/1-Introduction/README.md) ನಲ್ಲಿ ಮಾಡುತ್ತೇವೆ). ನೀವು ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಸಂಪಾದಿಸಬಹುದು ([Web App](../../3-Web-App/README.md) ಪಾಠದ ಮುಂಚೆ ಮಾಡುತ್ತೇವೆ). ಕೊನೆಗೆ, ನೀವು ತರಬೇತಿ ತಂತ್ರಗಳನ್ನು ಅವಲಂಬಿಸಿ ಅದನ್ನು ಯಾದೃಚ್ಛಿಕಗೊಳಿಸಿ ಮಿಶ್ರಣ ಮಾಡಬೇಕಾಗಬಹುದು. + +✅ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದ ನಂತರ, ಅದರ ಆಕಾರವು ನಿಮ್ಮ ಉದ್ದೇಶಿತ ಪ್ರಶ್ನೆಯನ್ನು ಪರಿಹರಿಸಲು ಅನುಕೂಲಕರವಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. ನೀವು ನೀಡಿದ ಕಾರ್ಯದಲ್ಲಿ ಡೇಟಾ ಚೆನ್ನಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು, ನಾವು [Clustering](../../5-Clustering/1-Visualize/README.md) ಪಾಠಗಳಲ್ಲಿ ಕಂಡುಕೊಳ್ಳುವಂತೆ! + +### ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಗುರಿ + +[ವೈಶಿಷ್ಟ್ಯ](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ಎಂದರೆ ನಿಮ್ಮ ಡೇಟಾದ ಮಾಪನೀಯ ಗುಣಲಕ್ಷಣ. ಅನೇಕ ಡೇಟಾಸೆಟ್‌ಗಳಲ್ಲಿ ಇದು 'ದಿನಾಂಕ', 'ಗಾತ್ರ' ಅಥವಾ 'ಬಣ್ಣ' ಎಂಬ ಕಾಲಮ್ ಶೀರ್ಷಿಕೆಯಾಗಿ ವ್ಯಕ್ತವಾಗುತ್ತದೆ. ನಿಮ್ಮ ವೈಶಿಷ್ಟ್ಯ ಚರ, ಸಾಮಾನ್ಯವಾಗಿ ಕೋಡ್‌ನಲ್ಲಿ `X` ಎಂದು ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತದೆ, ಇದು ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಬಳಸುವ ಇನ್‌ಪುಟ್ ಚರವನ್ನು ಸೂಚಿಸುತ್ತದೆ. + +ಗುರಿ ಎಂದರೆ ನೀವು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಯತ್ನಿಸುತ್ತಿರುವ ವಸ್ತು. ಗುರಿ ಸಾಮಾನ್ಯವಾಗಿ ಕೋಡ್‌ನಲ್ಲಿ `y` ಎಂದು ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತದೆ, ಇದು ನಿಮ್ಮ ಡೇಟಾದಿಂದ ಕೇಳುತ್ತಿರುವ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರವನ್ನು ಸೂಚಿಸುತ್ತದೆ: ಡಿಸೆಂಬರ್‌ನಲ್ಲಿ, ಯಾವ **ಬಣ್ಣದ** ಕಂಬಳಿಗಳು ಅತಿ ಕಡಿಮೆ ಬೆಲೆಯಿರುತ್ತವೆ? ಸಾನ್ ಫ್ರಾನ್ಸಿಸ್ಕೋದಲ್ಲಿ, ಯಾವ ನೆರೆಹೊರೆಯು ಉತ್ತಮ ರಿಯಲ್ ಎಸ್ಟೇಟ್ **ಬೆಲೆ** ಹೊಂದಿರುತ್ತದೆ? ಕೆಲವೊಮ್ಮೆ ಗುರಿಯನ್ನು ಲೇಬಲ್ ಗುಣಲಕ್ಷಣ ಎಂದು ಕೂಡ ಕರೆಯುತ್ತಾರೆ. + +### ನಿಮ್ಮ ವೈಶಿಷ್ಟ್ಯ ಚರವನ್ನು ಆಯ್ಕೆಮಾಡುವುದು + +🎓 **ವೈಶಿಷ್ಟ್ಯ ಆಯ್ಕೆ ಮತ್ತು ವೈಶಿಷ್ಟ್ಯ ಹೊರತೆಗೆಯುವಿಕೆ** ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸುವಾಗ ಯಾವ ಚರವನ್ನು ಆಯ್ಕೆಮಾಡಬೇಕು ಎಂದು ನೀವು ಹೇಗೆ ತಿಳಿದುಕೊಳ್ಳುತ್ತೀರಿ? ನೀವು ಬಹುಶಃ ಅತ್ಯುತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮಾದರಿಗಾಗಿ ಸರಿಯಾದ ಚರಗಳನ್ನು ಆಯ್ಕೆಮಾಡಲು ವೈಶಿಷ್ಟ್ಯ ಆಯ್ಕೆ ಅಥವಾ ವೈಶಿಷ್ಟ್ಯ ಹೊರತೆಗೆಯುವಿಕೆ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅನುಸರಿಸುತ್ತೀರಿ. ಅವು ಒಂದೇ ಅಲ್ಲ: "ವೈಶಿಷ್ಟ್ಯ ಹೊರತೆಗೆಯುವಿಕೆ ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳ ಕಾರ್ಯಗಳಿಂದ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ರಚಿಸುತ್ತದೆ, ಆದರೆ ವೈಶಿಷ್ಟ್ಯ ಆಯ್ಕೆ ವೈಶಿಷ್ಟ್ಯಗಳ ಉಪಸಮೂಹವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ." ([ಮೂಲ](https://wikipedia.org/wiki/Feature_selection)) + +### ನಿಮ್ಮ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಿ + +ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಉಪಕರಣಗಳ ಪ್ರಮುಖ ಅಂಶವೆಂದರೆ Seaborn ಅಥವಾ MatPlotLib ಮುಂತಾದ ಕೆಲವು ಅತ್ಯುತ್ತಮ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಬಳಸಿ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವ ಶಕ್ತಿ. ನಿಮ್ಮ ಡೇಟಾವನ್ನು ದೃಶ್ಯರೂಪದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸುವುದು ನೀವು ಬಳಸಬಹುದಾದ ಗುಪ್ತ ಸಂಬಂಧಗಳನ್ನು ಅನಾವರಣಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು. ನಿಮ್ಮ ದೃಶ್ಯೀಕರಣಗಳು ಅಸಮತೋಲನ ಅಥವಾ ಅಸಮತೋಲನ ಡೇಟಾವನ್ನು ಅನಾವರಣಗೊಳಿಸಲು ಸಹ ಸಹಾಯ ಮಾಡಬಹುದು ([Classification](../../4-Classification/2-Classifiers-1/README.md) ನಲ್ಲಿ ನಾವು ಕಂಡುಕೊಳ್ಳುವಂತೆ). + +### ನಿಮ್ಮ ಡೇಟಾಸೆಟ್ ಅನ್ನು ವಿಭಜಿಸಿ + +ತರಬೇತಿಗೆ ಮುಂಚೆ, ನೀವು ನಿಮ್ಮ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಅಸಮಾನ ಗಾತ್ರದ ಎರಡು ಅಥವಾ ಹೆಚ್ಚು ಭಾಗಗಳಾಗಿ ವಿಭಜಿಸಬೇಕು, ಆದರೆ ಅವು ಡೇಟಾವನ್ನು ಚೆನ್ನಾಗಿ ಪ್ರತಿನಿಧಿಸಬೇಕು. + +- **ತರಬೇತಿ**. ಡೇಟಾಸೆಟ್‌ನ ಈ ಭಾಗವನ್ನು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಹೊಂದಿಸಲಾಗುತ್ತದೆ. ಈ ಸೆಟ್ ಮೂಲ ಡೇಟಾಸೆಟ್‌ನ ಬಹುಮತವನ್ನು ಹೊಂದಿದೆ. +- **ಪರೀಕ್ಷೆ**. ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್ ಸ್ವತಂತ್ರ ಡೇಟಾ ಗುಂಪಾಗಿದೆ, ಸಾಮಾನ್ಯವಾಗಿ ಮೂಲ ಡೇಟಾದಿಂದ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ, ನೀವು ನಿರ್ಮಿಸಿದ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ದೃಢೀಕರಿಸಲು ಬಳಸುತ್ತೀರಿ. +- **ಮಾನ್ಯತೆ**. ಮಾನ್ಯತೆ ಸೆಟ್ ಒಂದು ಸಣ್ಣ ಸ್ವತಂತ್ರ ಉದಾಹರಣೆಗಳ ಗುಂಪು, ನೀವು ಮಾದರಿಯ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಅಥವಾ ವಾಸ್ತುಶಿಲ್ಪವನ್ನು ಸುಧಾರಿಸಲು ಬಳಸುತ್ತೀರಿ. ನಿಮ್ಮ ಡೇಟಾದ ಗಾತ್ರ ಮತ್ತು ನೀವು ಕೇಳುತ್ತಿರುವ ಪ್ರಶ್ನೆಯ ಆಧಾರದ ಮೇಲೆ, ನೀವು ಈ ಮೂರನೇ ಸೆಟ್ ಅನ್ನು ನಿರ್ಮಿಸುವ ಅಗತ್ಯವಿಲ್ಲದಿರಬಹುದು ([Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md) ನಲ್ಲಿ ನಾವು ಗಮನಿಸುತ್ತೇವೆ). + +## ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸುವುದು + +ನಿಮ್ಮ ತರಬೇತಿ ಡೇಟಾವನ್ನು ಬಳಸಿ, ನಿಮ್ಮ ಗುರಿ ವಿವಿಧ ಅಲ್ಗಾರಿದಮ್‌ಗಳನ್ನು ಬಳಸಿ ಮಾದರಿಯನ್ನು **ತರಬೇತಿಮಾಡುವುದು** ಅಥವಾ ನಿಮ್ಮ ಡೇಟಾದ ಸಾಂಖ್ಯಿಕ ಪ್ರತಿನಿಧಾನವನ್ನು ನಿರ್ಮಿಸುವುದು. ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡುವುದು ಅದನ್ನು ಡೇಟಾಗೆ ಪರಿಚಯಿಸುವುದು ಮತ್ತು ಅದು ಕಂಡುಹಿಡಿದ ಮಾದರಿಗಳನ್ನು ಊಹಿಸಲು, ಪರಿಶೀಲಿಸಲು ಮತ್ತು ಅಂಗೀಕರಿಸಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ. + +### ತರಬೇತಿ ವಿಧಾನವನ್ನು ನಿರ್ಧರಿಸಿ + +ನಿಮ್ಮ ಪ್ರಶ್ನೆ ಮತ್ತು ಡೇಟಾದ ಸ್ವಭಾವದ ಆಧಾರದ ಮೇಲೆ, ನೀವು ಅದನ್ನು ತರಬೇತಿಮಾಡಲು ವಿಧಾನವನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತೀರಿ. [Scikit-learn ನ ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://scikit-learn.org/stable/user_guide.html) ಅನ್ನು ಅನುಸರಿಸಿ - ನಾವು ಈ ಕೋರ್ಸ್‌ನಲ್ಲಿ ಬಳಸುತ್ತೇವೆ - ನೀವು ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಹಲವಾರು ವಿಧಾನಗಳನ್ನು ಅನ್ವೇಷಿಸಬಹುದು. ನಿಮ್ಮ ಅನುಭವದ ಆಧಾರದ ಮೇಲೆ, ನೀವು ಅತ್ಯುತ್ತಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಹಲವು ವಿಭಿನ್ನ ವಿಧಾನಗಳನ್ನು ಪ್ರಯತ್ನಿಸಬೇಕಾಗಬಹುದು. ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಅಪ್ರತ്യക്ഷ ಡೇಟಾವನ್ನು ನೀಡುವ ಮೂಲಕ, ನಿಖರತೆ, ಪೂರ್ವಾಗ್ರಹ ಮತ್ತು ಇತರ ಗುಣಮಟ್ಟ ಕುಗ್ಗಿಸುವ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಶೀಲಿಸುವ ಮೂಲಕ, ಮತ್ತು ಕಾರ್ಯಕ್ಕೆ ಸೂಕ್ತವಾದ ತರಬೇತಿ ವಿಧಾನವನ್ನು ಆಯ್ಕೆಮಾಡುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನೀವು ಅನುಭವಿಸುವಿರಿ. + +### ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ + +ನಿಮ್ಮ ತರಬೇತಿ ಡೇಟಾ ಸಿದ್ಧವಾಗಿರುವಾಗ, ನೀವು ಅದನ್ನು 'ಫಿಟ್' ಮಾಡಿ ಮಾದರಿಯನ್ನು ರಚಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ. ಬಹುಶಃ ನೀವು ಹಲವಾರು ML ಗ್ರಂಥಾಲಯಗಳಲ್ಲಿ 'model.fit' ಎಂಬ ಕೋಡ್ ಅನ್ನು ಕಾಣುತ್ತೀರಿ - ಈ ಸಮಯದಲ್ಲಿ ನೀವು ನಿಮ್ಮ ವೈಶಿಷ್ಟ್ಯ ಚರವನ್ನು ಮೌಲ್ಯಗಳ ಸರಣಿಯಾಗಿ (ಸಾಮಾನ್ಯವಾಗಿ 'X') ಮತ್ತು ಗುರಿ ಚರವನ್ನು (ಸಾಮಾನ್ಯವಾಗಿ 'y') ಕಳುಹಿಸುತ್ತೀರಿ. + +### ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ + +ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆ ಪೂರ್ಣಗೊಂಡ ನಂತರ (ದೊಡ್ಡ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಹಲವಾರು ಪುನರಾವೃತ್ತಿಗಳು ಅಥವಾ 'ಎಪೋಕ್ಸ್' ಬೇಕಾಗಬಹುದು), ನೀವು ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ಬಳಸಿ ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು. ಈ ಡೇಟಾ ಮೂಲ ಡೇಟಾದ ಉಪಸಮೂಹವಾಗಿದ್ದು, ಮಾದರಿ ಮೊದಲು ವಿಶ್ಲೇಷಿಸದ ಡೇಟಾಗೆ ಸೇರಿದೆ. ನೀವು ನಿಮ್ಮ ಮಾದರಿಯ ಗುಣಮಟ್ಟದ ಬಗ್ಗೆ ಮೆಟ್ರಿಕ್‌ಗಳ ಟೇಬಲ್ ಅನ್ನು ಮುದ್ರಿಸಬಹುದು. + +🎓 **ಮಾದರಿ ಫಿಟಿಂಗ್** + +ಯಂತ್ರ ಅಧ್ಯಯನದ ಸಂದರ್ಭದಲ್ಲಿ, ಮಾದರಿ ಫಿಟಿಂಗ್ ಎಂದರೆ ಮಾದರಿಯ ಅಡಿಪಾಯ ಕಾರ್ಯವು ಪರಿಚಿತವಲ್ಲದ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಯತ್ನಿಸುವಾಗ ಅದರ ನಿಖರತೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. + +🎓 **ಅಡಿಗೊಳಿಸುವಿಕೆ** ಮತ್ತು **ಅತಿಗೊಳಿಸುವಿಕೆ** ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳು, ಅವು ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಕುಗ್ಗಿಸುತ್ತವೆ, ಏಕೆಂದರೆ ಮಾದರಿ ಸರಿಯಾಗಿ ಹೊಂದದಿರುವುದು ಅಥವಾ ತುಂಬಾ ಚೆನ್ನಾಗಿ ಹೊಂದಿರುವುದು. ಇದರಿಂದ ಮಾದರಿ ತರಬೇತಿ ಡೇಟಾದೊಂದಿಗೆ ತುಂಬಾ ಸಮೀಪವಾಗಿ ಅಥವಾ ತುಂಬಾ ದೂರವಾಗಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ. ಅತಿಗೊಳಿಸಿದ ಮಾದರಿ ತರಬೇತಿ ಡೇಟಾದ ವಿವರಗಳು ಮತ್ತು ಶಬ್ದವನ್ನು ತುಂಬಾ ಚೆನ್ನಾಗಿ ಕಲಿತಿರುವುದರಿಂದ ಅದನ್ನು ತುಂಬಾ ಚೆನ್ನಾಗಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ. ಅಡಿಗೊಳಿಸಿದ ಮಾದರಿ ನಿಖರವಿಲ್ಲ, ಏಕೆಂದರೆ ಅದು ತನ್ನ ತರಬೇತಿ ಡೇಟಾವನ್ನು ಅಥವಾ ಇನ್ನೂ 'ನೋಡದ' ಡೇಟಾವನ್ನು ಸರಿಯಾಗಿ ವಿಶ್ಲೇಷಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. + +![overfitting model](../../../../translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.kn.png) +> ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ + +## ಪ್ಯಾರಾಮೀಟರ್ ಟ್ಯೂನಿಂಗ್ + +ನಿಮ್ಮ ಪ್ರಾಥಮಿಕ ತರಬೇತಿ ಪೂರ್ಣಗೊಂಡ ನಂತರ, ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಗಮನಿಸಿ ಮತ್ತು ಅದರ 'ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು' ಸುಧಾರಿಸಲು ಪರಿಗಣಿಸಿ. ಪ್ರಕ್ರಿಯೆಯ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) ಓದಿ. + +## ಭವಿಷ್ಯವಾಣಿ + +ಈ ಸಮಯದಲ್ಲಿ ನೀವು ಸಂಪೂರ್ಣ ಹೊಸ ಡೇಟಾವನ್ನು ಬಳಸಿ ನಿಮ್ಮ ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಿಸಬಹುದು. 'ಅಪ್ಲೈಡ್' ML ಪರಿಸರದಲ್ಲಿ, ನೀವು ಮಾದರಿಯನ್ನು ಉತ್ಪಾದನೆಯಲ್ಲಿ ಬಳಸಲು ವೆಬ್ ಆಸ್ತಿ ನಿರ್ಮಿಸುತ್ತಿದ್ದರೆ, ಈ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ (ಉದಾಹರಣೆಗೆ ಬಟನ್ ಒತ್ತುವುದು) ಸಂಗ್ರಹಿಸಿ, ಚರವನ್ನು ಸೆಟ್ ಮಾಡಿ ಮತ್ತು ಮಾದರಿಗೆ ಇನ್ಫರೆನ್ಸ್ ಅಥವಾ ಮೌಲ್ಯಮಾಪನಕ್ಕಾಗಿ ಕಳುಹಿಸುವುದು ಸೇರಬಹುದು. + +ಈ ಪಾಠಗಳಲ್ಲಿ, ನೀವು ಈ ಹಂತಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸಿದ್ಧಪಡಿಸುವುದು, ನಿರ್ಮಿಸುವುದು, ಪರೀಕ್ಷಿಸುವುದು, ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದನ್ನು ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತೀರಿ - ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಎಲ್ಲಾ ಚಲನೆಗಳು ಮತ್ತು ಇನ್ನಷ್ಟು, ನೀವು 'ಫುಲ್ ಸ್ಟಾಕ್' ML ಎಂಜಿನಿಯರ್ ಆಗಲು ನಿಮ್ಮ ಪ್ರಯಾಣದಲ್ಲಿ ಮುಂದುವರಿಯುವಂತೆ. + +--- + +## 🚀ಸವಾಲು + +ML ಅಭ್ಯಾಸಗಾರರ ಹಂತಗಳನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ ಫ್ಲೋ ಚಾರ್ಟ್ ರಚಿಸಿ. ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ನೀವು ಈಗ ಎಲ್ಲಿದ್ದೀರಿ ಎಂದು ನೀವು ಎಲ್ಲಿ ನೋಡುತ್ತೀರಿ? ನೀವು ಯಾವಲ್ಲಿ ಕಷ್ಟವನ್ನು ಎದುರಿಸುವಿರಿ ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತೀರಿ? ನಿಮಗೆ ಯಾವುದು ಸುಲಭವಾಗುತ್ತದೆ? + +## [ಪೋಸ್ಟ್-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ತಮ್ಮ ದೈನಂದಿನ ಕೆಲಸವನ್ನು ಚರ್ಚಿಸುವ ಸಂದರ್ಶನಗಳನ್ನು ಆನ್ಲೈನ್‌ನಲ್ಲಿ ಹುಡುಕಿ. ಇಲ್ಲಿ ಒಂದು [ಇದು](https://www.youtube.com/watch?v=Z3IjgbbCEfs) ಇದೆ. + +## ನಿಯೋಜನೆ + +[ಡೇಟಾ ವಿಜ್ಞಾನಿಯನ್ನು ಸಂದರ್ಶನ ಮಾಡಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/1-Introduction/4-techniques-of-ML/assignment.md b/translations/kn/1-Introduction/4-techniques-of-ML/assignment.md new file mode 100644 index 000000000..0d9b7c2c5 --- /dev/null +++ b/translations/kn/1-Introduction/4-techniques-of-ML/assignment.md @@ -0,0 +1,27 @@ + +# ಡೇಟಾ ಸೈನ್ಟಿಸ್ಟ್ ಅನ್ನು ಸಂದರ್ಶನ ಮಾಡಿ + +## ಸೂಚನೆಗಳು + +ನಿಮ್ಮ ಕಂಪನಿಯಲ್ಲಿ, ಬಳಕೆದಾರ ಗುಂಪಿನಲ್ಲಿ, ಅಥವಾ ನಿಮ್ಮ ಸ್ನೇಹಿತರು ಅಥವಾ ಸಹ ವಿದ್ಯಾರ್ಥಿಗಳ ನಡುವೆ, ವೃತ್ತಿಪರವಾಗಿ ಡೇಟಾ ಸೈನ್ಟಿಸ್ಟ್ ಆಗಿ ಕೆಲಸ ಮಾಡುವ ಯಾರನ್ನಾದರೂ ಮಾತನಾಡಿ. ಅವರ ದೈನಂದಿನ ಕಾರ್ಯಗಳ ಬಗ್ಗೆ ಒಂದು ಚಿಕ್ಕ ಪ್ರಬಂಧ (500 ಪದಗಳು) ಬರೆಯಿರಿ. ಅವರು ವಿಶೇಷಜ್ಞರೇ, ಅಥವಾ 'ಫುಲ್ ಸ್ಟಾಕ್' ಆಗಿ ಕೆಲಸ ಮಾಡುತ್ತಾರೆಯೇ? + +## ರೂಬ್ರಿಕ್ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | --------------------- | +| | ಸರಿಯಾದ ಉದ್ದದ ಪ್ರಬಂಧ, ಮೂಲಗಳನ್ನು ಸೂಚಿಸಿ, .doc ಫೈಲ್ ಆಗಿ ಸಲ್ಲಿಸಲಾಗಿದೆ | ಪ್ರಬಂಧವು ಸರಿಯಾಗಿ ಮೂಲಗಳನ್ನು ಸೂಚಿಸದಿದ್ದರೆ ಅಥವಾ ಅಗತ್ಯ ಉದ್ದಕ್ಕಿಂತ ಕಡಿಮೆ ಇದ್ದರೆ | ಯಾವುದೇ ಪ್ರಬಂಧ ಸಲ್ಲಿಸಲಾಗಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/1-Introduction/README.md b/translations/kn/1-Introduction/README.md new file mode 100644 index 000000000..b2ac7375f --- /dev/null +++ b/translations/kn/1-Introduction/README.md @@ -0,0 +1,38 @@ + +# ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ + +ಪಠ್ಯಕ್ರಮದ ಈ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನ ಕ್ಷೇತ್ರದ ಮೂಲ ತತ್ವಗಳನ್ನು ಪರಿಚಯಿಸಿಕೊಳ್ಳುತ್ತೀರಿ, ಅದು ಏನು ಮತ್ತು ಅದರ ಇತಿಹಾಸ ಮತ್ತು ಸಂಶೋಧಕರು ಅದನ್ನು ಬಳಸುವ ತಂತ್ರಗಳನ್ನು ತಿಳಿಯುತ್ತೀರಿ. ಬನ್ನಿ, ಈ ಹೊಸ ಯಂತ್ರ ಅಧ್ಯಯನ ಲೋಕವನ್ನು ಒಟ್ಟಿಗೆ ಅನ್ವೇಷಿಸೋಣ! + +![globe](../../../translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.kn.jpg) +> ಫೋಟೋ ಬಿಲ್ ಆಕ್ಸ್ಫರ್ಡ್ ಅವರಿಂದ ಅನ್ಸ್ಪ್ಲ್ಯಾಶ್ ನಲ್ಲಿ + +### ಪಾಠಗಳು + +1. [ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ](1-intro-to-ML/README.md) +1. [ಯಂತ್ರ ಅಧ್ಯಯನ ಮತ್ತು ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆಯ ಇತಿಹಾಸ](2-history-of-ML/README.md) +1. [ನ್ಯಾಯ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ](3-fairness/README.md) +1. [ಯಂತ್ರ ಅಧ್ಯಯನದ ತಂತ್ರಗಳು](4-techniques-of-ML/README.md) +### ಕ್ರೆಡಿಟ್ಸ್ + +"ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ" ಅನ್ನು ♥️ ಸಹಿತ [ಮುಹಮ್ಮದ್ ಸಕಿಬ್ ಖಾನ್ ಇನಾನ್](https://twitter.com/Sakibinan), [ಓರ್ನೆಲ್ಲಾ ಅಲ್ಟುನ್ಯಾನ್](https://twitter.com/ornelladotcom) ಮತ್ತು [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಸೇರಿದಂತೆ ತಂಡದವರು ಬರೆದಿದ್ದಾರೆ + +"ಯಂತ್ರ ಅಧ್ಯಯನದ ಇತಿಹಾಸ" ಅನ್ನು ♥️ ಸಹಿತ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಮತ್ತು [ಏಮಿ ಬಾಯ್ಡ್](https://twitter.com/AmyKateNicho) ಬರೆದಿದ್ದಾರೆ + +"ನ್ಯಾಯ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ" ಅನ್ನು ♥️ ಸಹಿತ [ಟೊಮೊಮಿ ಇಮುರಾ](https://twitter.com/girliemac) ಬರೆದಿದ್ದಾರೆ + +"ಯಂತ್ರ ಅಧ್ಯಯನದ ತಂತ್ರಗಳು" ಅನ್ನು ♥️ ಸಹಿತ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಮತ್ತು [ಕ್ರಿಸ್ ನೋರಿಂಗ್](https://twitter.com/softchris) ಬರೆದಿದ್ದಾರೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/1-Tools/README.md b/translations/kn/2-Regression/1-Tools/README.md new file mode 100644 index 000000000..a62737531 --- /dev/null +++ b/translations/kn/2-Regression/1-Tools/README.md @@ -0,0 +1,240 @@ + +# ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳಿಗಾಗಿ ಪೈಥಾನ್ ಮತ್ತು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್‌ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ + +![ಸ್ಕೆಚ್‌ನೋಟ್ನಲ್ಲಿ ರಿಗ್ರೆಶನ್‌ಗಳ ಸಾರಾಂಶ](../../../../translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.kn.png) + +> ಸ್ಕೆಚ್‌ನೋಟ್ನು [ಟೊಮೊಮಿ ಇಮುರು](https://www.twitter.com/girlie_mac) ರಚಿಸಿದ್ದಾರೆ + +## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ಈ ಪಾಠ R ನಲ್ಲಿ ಲಭ್ಯವಿದೆ!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) + +## ಪರಿಚಯ + +ಈ ನಾಲ್ಕು ಪಾಠಗಳಲ್ಲಿ, ನೀವು ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವ ವಿಧಾನವನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ. ನಾವು ಇವುಗಳ ಉದ್ದೇಶವನ್ನು ಶೀಘ್ರದಲ್ಲೇ ಚರ್ಚಿಸುವೆವು. ಆದರೆ ನೀವು ಏನನ್ನಾದರೂ ಮಾಡುವ ಮೊದಲು, ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸರಿಯಾದ ಸಾಧನಗಳನ್ನು ಹೊಂದಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ! + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಕಲಿಯುವಿರಿ: + +- ಸ್ಥಳೀಯ ಯಂತ್ರ ಅಧ್ಯಯನ ಕಾರ್ಯಗಳಿಗೆ ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಸಂರಚಿಸುವುದು. +- ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು. +- ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಬಳಕೆ, ಸ್ಥಾಪನೆ ಸೇರಿದಂತೆ. +- ಕೈಯಿಂದ ಅನುಭವಿಸುವ ವ್ಯಾಯಾಮದೊಂದಿಗೆ ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಅನ್ವೇಷಣೆ. + +## ಸ್ಥಾಪನೆಗಳು ಮತ್ತು ಸಂರಚನೆಗಳು + +[![ಆರಂಭಿಕರಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಿಮ್ಮ ಸಾಧನಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ಆರಂಭಿಕರಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಿಮ್ಮ ಸಾಧನಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ, ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಸಂರಚಿಸುವುದರ ಕುರಿತು ಚಿಕ್ಕ ವೀಡಿಯೋವನ್ನು ನೋಡಿ. + +1. **ಪೈಥಾನ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ**. ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ [ಪೈಥಾನ್](https://www.python.org/downloads/) ಸ್ಥಾಪಿತವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ನೀವು ಅನೇಕ ಡೇಟಾ ವಿಜ್ಞಾನ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ ಕಾರ್ಯಗಳಿಗೆ ಪೈಥಾನ್ ಅನ್ನು ಬಳಸುತ್ತೀರಿ. ಬಹುತೇಕ ಕಂಪ್ಯೂಟರ್ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಈಗಾಗಲೇ ಪೈಥಾನ್ ಸ್ಥಾಪನೆ ಇದೆ. ಕೆಲವು ಬಳಕೆದಾರರಿಗೆ ಸ್ಥಾಪನೆಯನ್ನು ಸುಲಭಗೊಳಿಸಲು ಉಪಯುಕ್ತವಾದ [ಪೈಥಾನ್ ಕೋಡಿಂಗ್ ಪ್ಯಾಕ್ಗಳು](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) ಕೂಡ ಲಭ್ಯವಿವೆ. + + ಕೆಲವು ಪೈಥಾನ್ ಬಳಕೆಗಳಿಗೆ, ಒಂದು ಸಾಫ್ಟ್‌ವೇರ್ ಆವೃತ್ತಿಯ ಅಗತ್ಯವಿರಬಹುದು, ಇತರರಿಗೆ ಬೇರೆ ಆವೃತ್ತಿಯ ಅಗತ್ಯವಿರಬಹುದು. ಈ ಕಾರಣಕ್ಕಾಗಿ, [ವರ್ಚುವಲ್ ಪರಿಸರ](https://docs.python.org/3/library/venv.html) ಒಳಗೆ ಕೆಲಸ ಮಾಡುವುದು ಉಪಯುಕ್ತ. + +2. **ವಿಜುವಲ್ ಸ್ಟುಡಿಯೋ ಕೋಡ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ**. ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ Visual Studio Code ಸ್ಥಾಪಿತವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಮೂಲ ಸ್ಥಾಪನೆಗಾಗಿ [Visual Studio Code ಅನ್ನು ಸ್ಥಾಪಿಸುವ](https://code.visualstudio.com/) ಸೂಚನೆಗಳನ್ನು ಅನುಸರಿಸಿ. ಈ ಕೋರ್ಸ್‌ನಲ್ಲಿ ನೀವು Visual Studio Code ನಲ್ಲಿ ಪೈಥಾನ್ ಬಳಸಲಿದ್ದೀರಿ, ಆದ್ದರಿಂದ ಪೈಥಾನ್ ಅಭಿವೃದ್ಧಿಗಾಗಿ [Visual Studio Code ಅನ್ನು ಸಂರಚಿಸುವ](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) ವಿಧಾನವನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು ಉತ್ತಮ. + + > ಈ [ಕಲಿಕೆ ಘಟಕಗಳ](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) ಸಂಗ್ರಹದ ಮೂಲಕ ಪೈಥಾನ್‌ನಲ್ಲಿ ಆರಾಮವಾಗಿ ಕೆಲಸ ಮಾಡಿ + > + > [![Visual Studio Code ನಲ್ಲಿ ಪೈಥಾನ್ ಸ್ಥಾಪನೆ](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code ನಲ್ಲಿ ಪೈಥಾನ್ ಸ್ಥಾಪನೆ") + > + > 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋ ನೋಡಿ: VS Code ಒಳಗೆ ಪೈಥಾನ್ ಬಳಕೆ. + +3. **ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ**, [ಈ ಸೂಚನೆಗಳನ್ನು](https://scikit-learn.org/stable/install.html) ಅನುಸರಿಸಿ. ನೀವು ಪೈಥಾನ್ 3 ಬಳಸುತ್ತಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕಾಗಿರುವುದರಿಂದ, ವರ್ಚುವಲ್ ಪರಿಸರವನ್ನು ಬಳಸುವುದು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ. ಗಮನಿಸಿ, ನೀವು M1 ಮ್ಯಾಕ್‌ನಲ್ಲಿ ಈ ಗ್ರಂಥಾಲಯವನ್ನು ಸ್ಥಾಪಿಸುತ್ತಿದ್ದರೆ, ಮೇಲಿನ ಲಿಂಕ್‌ನಲ್ಲಿ ವಿಶೇಷ ಸೂಚನೆಗಳಿವೆ. + +1. **ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ**. ನೀವು [ಜುಪೈಟರ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಸ್ಥಾಪಿಸಬೇಕಾಗುತ್ತದೆ](https://pypi.org/project/jupyter/)। + +## ನಿಮ್ಮ ಯಂತ್ರ ಅಧ್ಯಯನ ಬರಹ ಪರಿಸರ + +ನೀವು ನಿಮ್ಮ ಪೈಥಾನ್ ಕೋಡ್ ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ರಚಿಸಲು **ನೋಟ್ಬುಕ್‌ಗಳನ್ನು** ಬಳಸಲಿದ್ದೀರಿ. ಈ ರೀತಿಯ ಫೈಲ್ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳ ಸಾಮಾನ್ಯ ಉಪಕರಣವಾಗಿದೆ ಮತ್ತು ಅವುಗಳ ಸಫಿಕ್ಸ್ ಅಥವಾ ವಿಸ್ತರಣೆ `.ipynb` ಮೂಲಕ ಗುರುತಿಸಲಾಗುತ್ತದೆ. + +ನೋಟ್ಬುಕ್‌ಗಳು ಸಂವಹನಾತ್ಮಕ ಪರಿಸರವಾಗಿದ್ದು, ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ಕೋಡ್ ಬರೆಯುವುದರ ಜೊತೆಗೆ ಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸಲು ಮತ್ತು ಕೋಡ್ ಸುತ್ತಲೂ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಬರೆಯಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ, ಇದು ಪ್ರಯೋಗಾತ್ಮಕ ಅಥವಾ ಸಂಶೋಧನಾ-ಕೇಂದ್ರೀಕೃತ ಯೋಜನೆಗಳಿಗೆ ಬಹಳ ಉಪಯುಕ್ತ. + +[![ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಈ ವ್ಯಾಯಾಮವನ್ನು ನಡೆಸುವ ಚಿಕ್ಕ ವೀಡಿಯೋ ನೋಡಿ. + +### ವ್ಯಾಯಾಮ - ನೋಟ್ಬುಕ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿ + +ಈ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ, ನೀವು _notebook.ipynb_ ಫೈಲ್ ಅನ್ನು ಕಾಣುತ್ತೀರಿ. + +1. Visual Studio Code ನಲ್ಲಿ _notebook.ipynb_ ಅನ್ನು ತೆರೆಯಿರಿ. + + ಪೈಥಾನ್ 3+ ಜೊತೆಗೆ ಜುಪೈಟರ್ ಸರ್ವರ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ನೀವು ನೋಟ್ಬುಕ್‌ನ ಭಾಗಗಳನ್ನು `run` ಮಾಡಬಹುದು, ಅಂದರೆ ಕೋಡ್ ತುಂಡುಗಳನ್ನು. ಪ್ಲೇ ಬಟನ್ ಹೋಲುವ ಐಕಾನ್ ಆಯ್ಕೆಮಾಡಿ ಕೋಡ್ ಬ್ಲಾಕ್ ಅನ್ನು ರನ್ ಮಾಡಬಹುದು. + +1. `md` ಐಕಾನ್ ಆಯ್ಕೆಮಾಡಿ ಸ್ವಲ್ಪ ಮಾರ್ಕ್‌ಡೌನ್ ಸೇರಿಸಿ, ಮತ್ತು ಕೆಳಗಿನ ಪಠ್ಯವನ್ನು **# ನಿಮ್ಮ ನೋಟ್ಬುಕ್‌ಗೆ ಸ್ವಾಗತ** ಎಂದು ಸೇರಿಸಿ. + + ನಂತರ, ಕೆಲವು ಪೈಥಾನ್ ಕೋಡ್ ಸೇರಿಸಿ. + +1. ಕೋಡ್ ಬ್ಲಾಕ್‌ನಲ್ಲಿ **print('hello notebook')** ಟೈಪ್ ಮಾಡಿ. +1. ಕೋಡ್ ರನ್ ಮಾಡಲು ಅರೋಹಣ ಬಾಣವನ್ನು ಆಯ್ಕೆಮಾಡಿ. + + ನೀವು ಮುದ್ರಿತ ಹೇಳಿಕೆಯನ್ನು ನೋಡಬೇಕು: + + ```output + hello notebook + ``` + +![ನೋಟ್ಬುಕ್ ತೆರೆಯಲಾದ VS ಕೋಡ್](../../../../translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.kn.jpg) + +ನೀವು ನಿಮ್ಮ ಕೋಡ್ ಜೊತೆಗೆ ಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸಿ ನೋಟ್ಬುಕ್ ಅನ್ನು ಸ್ವಯಂ-ಡಾಕ್ಯುಮೆಂಟ್ ಮಾಡಬಹುದು. + +✅ ವೆಬ್ ಡೆವಲಪರ್‌ನ ಕೆಲಸದ ಪರಿಸರ ಮತ್ತು ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಕೆಲಸದ ಪರಿಸರವು ಹೇಗೆ ವಿಭಿನ್ನವಾಗಿವೆ ಎಂದು ಒಂದು ನಿಮಿಷ ಯೋಚಿಸಿ. + +## ಸ್ಕಿಕಿಟ್-ಲರ್ನ್‌ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ + +ಈಗ ಪೈಥಾನ್ ನಿಮ್ಮ ಸ್ಥಳೀಯ ಪರಿಸರದಲ್ಲಿ ಸಿದ್ಧವಾಗಿದೆ ಮತ್ತು ನೀವು ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್‌ಗಳೊಂದಿಗೆ ಆರಾಮವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೀರಿ, ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ (ಅದನ್ನು `sci` ಎಂದು ಉಚ್ಛರಿಸಿ, ಅಂದರೆ `ಸೈನ್ಸ್`) ಜೊತೆಗೆ ಸಮಾನವಾಗಿ ಆರಾಮವಾಗೋಣ. ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ನಿಮಗೆ ಯಂತ್ರ ಅಧ್ಯಯನ ಕಾರ್ಯಗಳನ್ನು ನೆರವೇರಿಸಲು ಸಹಾಯ ಮಾಡುವ [ವಿಸ್ತೃತ API](https://scikit-learn.org/stable/modules/classes.html#api-ref) ಒದಗಿಸುತ್ತದೆ. + +ಅವರ [ವೆಬ್‌ಸೈಟ್](https://scikit-learn.org/stable/getting_started.html) ಪ್ರಕಾರ, "ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಒಂದು ಮುಕ್ತ ಮೂಲ ಯಂತ್ರ ಅಧ್ಯಯನ ಗ್ರಂಥಾಲಯವಾಗಿದೆ, ಇದು ಮೇಲ್ವಿಚಾರಿತ ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆಯಿಲ್ಲದ ಅಧ್ಯಯನವನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. ಇದು ಮಾದರಿ ಹೊಂದಿಸುವಿಕೆ, ಡೇಟಾ ಪೂರ್ವಸಿದ್ಧತೆ, ಮಾದರಿ ಆಯ್ಕೆ ಮತ್ತು ಮೌಲ್ಯಮಾಪನ, ಮತ್ತು ಅನೇಕ ಇತರೆ ಉಪಕರಣಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ." + +ಈ ಕೋರ್ಸ್‌ನಲ್ಲಿ, ನೀವು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಮತ್ತು ಇತರೆ ಉಪಕರಣಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವಿರಿ, ಇದನ್ನು ನಾವು 'ಪಾರಂಪರಿಕ ಯಂತ್ರ ಅಧ್ಯಯನ' ಕಾರ್ಯಗಳು ಎಂದು ಕರೆಯುತ್ತೇವೆ. ನಾವು ಜಾಲಕ ಜಾಲಗಳು ಮತ್ತು ಆಳವಾದ ಅಧ್ಯಯನವನ್ನು ಉಲ್ಲೇಖಿಸಿಲ್ಲ, ಏಕೆಂದರೆ ಅವು ನಮ್ಮ ಮುಂದಿನ 'ಆರಂಭಿಕರಿಗಾಗಿ AI' ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಉತ್ತಮವಾಗಿ ಒಳಗೊಂಡಿವೆ. + +ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಮತ್ತು ಅವುಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಸರಳ ವಿಧಾನ ಒದಗಿಸುತ್ತದೆ. ಇದು ಮುಖ್ಯವಾಗಿ ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾ ಬಳಕೆಮೇಲೆ ಕೇಂದ್ರೀಕೃತವಾಗಿದೆ ಮತ್ತು ಕಲಿಕೆಯ ಉಪಕರಣಗಳಾಗಿ ಬಳಸಲು ಹಲವು ಸಿದ್ಧ ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಇದು ವಿದ್ಯಾರ್ಥಿಗಳು ಪ್ರಯತ್ನಿಸಲು ಪೂರ್ವನಿರ್ಮಿತ ಮಾದರಿಗಳನ್ನು ಸಹ ಒಳಗೊಂಡಿದೆ. ಮೊದಲ ML ಮಾದರಿಗಾಗಿ ಸ್ಕಿಕಿಟ್-ಲರ್ನ್‌ನೊಂದಿಗೆ ಪೂರ್ವಪ್ಯಾಕೇಜ್ ಡೇಟಾ ಲೋಡ್ ಮಾಡುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮತ್ತು ನಿರ್ಮಿತ ಅಂದಾಜಕವನ್ನು ಅನ್ವೇಷಿಸೋಣ. + +## ವ್ಯಾಯಾಮ - ನಿಮ್ಮ ಮೊದಲ ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ನೋಟ್ಬುಕ್ + +> ಈ ಪಾಠವು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ವೆಬ್‌ಸೈಟ್‌ನ [ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಉದಾಹರಣೆ](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) ಪ್ರೇರಿತವಾಗಿದೆ. + +[![ಪೈಥಾನ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಮೊದಲ ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಪ್ರಾಜೆಕ್ಟ್](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ಪೈಥಾನ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಮೊದಲ ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಪ್ರಾಜೆಕ್ಟ್") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಈ ವ್ಯಾಯಾಮವನ್ನು ನಡೆಸುವ ಚಿಕ್ಕ ವೀಡಿಯೋ ನೋಡಿ. + +ಈ ಪಾಠಕ್ಕೆ ಸಂಬಂಧಿಸಿದ _notebook.ipynb_ ಫೈಲ್‌ನಲ್ಲಿ, 'ಟ್ರ್ಯಾಶ್ ಕ್ಯಾನ್' ಐಕಾನ್ ಒತ್ತಿ ಎಲ್ಲಾ ಸೆಲ್‌ಗಳನ್ನು ತೆರವುಗೊಳಿಸಿ. + +ಈ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್‌ನಲ್ಲಿ ಕಲಿಕೆಯ ಉದ್ದೇಶಕ್ಕಾಗಿ ನಿರ್ಮಿಸಲಾದ ಸಣ್ಣ ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತೀರಿ. ನೀವು ಡಯಾಬಿಟಿಕ್ ರೋಗಿಗಳಿಗೆ ಚಿಕಿತ್ಸೆ ಪರೀಕ್ಷಿಸಲು ಬಯಸಿದರೆ ಎಂದು ಕಲ್ಪಿಸಿ. ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳು ಯಾವ ರೋಗಿಗಳು ಚಿಕಿತ್ಸೆಗಾಗಿ ಉತ್ತಮ ಪ್ರತಿಕ್ರಿಯಿಸುವರು ಎಂದು ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು, ಬದಲಾವಣೆಗಳ ಸಂಯೋಜನೆಗಳ ಆಧಾರದ ಮೇಲೆ. ಬಹುಮೂಲ್ಯ ರಿಗ್ರೆಶನ್ ಮಾದರಿ, ದೃಶ್ಯೀಕರಿಸಿದಾಗ, ಬದಲಾವಣೆಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸಬಹುದು, ಇದು ನಿಮ್ಮ ಸೈದ್ಧಾಂತಿಕ ಕ್ಲಿನಿಕಲ್ ಪ್ರಯೋಗಗಳನ್ನು ಸಂಘಟಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +✅ ರಿಗ್ರೆಶನ್ ವಿಧಾನಗಳ ಹಲವು ವಿಧಗಳಿವೆ, ಮತ್ತು ನೀವು ಯಾವದನ್ನು ಆರಿಸುವಿರಿ ಎಂಬುದು ನೀವು ಹುಡುಕುತ್ತಿರುವ ಉತ್ತರದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ನೀವು ನಿರ್ದಿಷ್ಟ ವಯಸ್ಸಿನ ವ್ಯಕ್ತಿಯ ಸಾಧ್ಯತೆಯ ಎತ್ತರವನ್ನು ಊಹಿಸಲು ಬಯಸಿದರೆ, ನೀವು ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಬಳಸುತ್ತೀರಿ, ಏಕೆಂದರೆ ನೀವು **ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯ** ಹುಡುಕುತ್ತಿದ್ದೀರಿ. ನೀವು ಯಾವ ಆಹಾರ ಪ್ರಕಾರವನ್ನು ವೆಗನ್ ಎಂದು ಪರಿಗಣಿಸಬೇಕೆಂದು ತಿಳಿಯಲು ಬಯಸಿದರೆ, ನೀವು **ವರ್ಗ ವಿಂಗಡಣೆ** ಹುಡುಕುತ್ತಿದ್ದೀರಿ, ಆದ್ದರಿಂದ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಳಸುತ್ತೀರಿ. ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಗ್ಗೆ ನೀವು ನಂತರ ಹೆಚ್ಚು ಕಲಿಯುತ್ತೀರಿ. ಡೇಟಾದಿಂದ ಕೇಳಬಹುದಾದ ಕೆಲವು ಪ್ರಶ್ನೆಗಳ ಬಗ್ಗೆ ಮತ್ತು ಯಾವ ವಿಧಾನಗಳು ಸೂಕ್ತವಾಗಿರುತ್ತವೆ ಎಂದು ಸ್ವಲ್ಪ ಯೋಚಿಸಿ. + +ಈ ಕಾರ್ಯವನ್ನು ಪ್ರಾರಂಭಿಸೋಣ. + +### ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದುಮಾಡಿ + +ಈ ಕಾರ್ಯಕ್ಕಾಗಿ ನಾವು ಕೆಲವು ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದುಮಾಡುತ್ತೇವೆ: + +- **ಮ್ಯಾಟ್‌ಪ್ಲಾಟ್‌ಲಿಬ್**. ಇದು ಉಪಯುಕ್ತ [ಗ್ರಾಫ್ ಸಾಧನ](https://matplotlib.org/) ಮತ್ತು ನಾವು ಲೈನ್ ಪ್ಲಾಟ್ ರಚಿಸಲು ಇದನ್ನು ಬಳಸುತ್ತೇವೆ. +- **ನಂಪೈ**. [ನಂಪೈ](https://numpy.org/doc/stable/user/whatisnumpy.html) ಪೈಥಾನ್‌ನಲ್ಲಿ ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾ ನಿರ್ವಹಣೆಗೆ ಉಪಯುಕ್ತ ಗ್ರಂಥಾಲಯ. +- **ಸ್ಕ್ಲರ್ನ್**. ಇದು [ಸ್ಕಿಕಿಟ್-ಲರ್ನ್](https://scikit-learn.org/stable/user_guide.html) ಗ್ರಂಥಾಲಯ. + +ನಿಮ್ಮ ಕಾರ್ಯಗಳಿಗೆ ಸಹಾಯ ಮಾಡಲು ಕೆಲವು ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದುಮಾಡಿ. + +1. ಕೆಳಗಿನ ಕೋಡ್ ಟೈಪ್ ಮಾಡಿ ಆಮದುಮಾಡಿ: + + ```python + import matplotlib.pyplot as plt + import numpy as np + from sklearn import datasets, linear_model, model_selection + ``` + + ಮೇಲಿನ ಕೋಡ್‌ನಲ್ಲಿ ನೀವು `matplotlib`, `numpy` ಮತ್ತು `sklearn` ನಿಂದ `datasets`, `linear_model`, ಮತ್ತು `model_selection` ಅನ್ನು ಆಮದುಮಾಡುತ್ತಿದ್ದೀರಿ. `model_selection` ಅನ್ನು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗಳಿಗೆ ಡೇಟಾ ವಿಭಜಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. + +### ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್ + +ನಿರ್ಮಿತ [ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 ಡೇಟಾ ಮಾದರಿಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, 10 ವೈಶಿಷ್ಟ್ಯ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ, ಕೆಲವು: + +- ವಯಸ್ಸು: ವರ್ಷಗಳಲ್ಲಿ ವಯಸ್ಸು +- ಬಿಎಂಐ: ದೇಹದ ಮಾಸ್ ಸೂಚ್ಯಂಕ +- ಬಿಪಿ: ಸರಾಸರಿ ರಕ್ತದ ಒತ್ತಡ +- s1 tc: ಟಿ-ಸೆಲ್ಸ್ (ಒಂದು ಬಗೆಯ ಬಿಳಿ ರಕ್ತಕಣಗಳು) + +✅ ಈ ಡೇಟಾಸೆಟ್ 'ಲಿಂಗ' ಎಂಬ ವೈಶಿಷ್ಟ್ಯ ಬದಲಾವಣೆಯ ಕಲ್ಪನೆಯನ್ನು ಒಳಗೊಂಡಿದೆ, ಇದು ಡಯಾಬಿಟಿಸ್ ಸಂಶೋಧನೆಗೆ ಮಹತ್ವದಾಗಿದೆ. ಅನೇಕ ವೈದ್ಯಕೀಯ ಡೇಟಾಸೆಟ್‌ಗಳು ಈ ರೀತಿಯ ದ್ವಿಪದ ವರ್ಗೀಕರಣವನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ. ಈ ರೀತಿಯ ವರ್ಗೀಕರಣಗಳು ಜನಸಂಖ್ಯೆಯ ಕೆಲವು ಭಾಗಗಳನ್ನು ಚಿಕಿತ್ಸೆಯಿಂದ ಹೊರಗೊಳ್ಳುವಂತೆ ಮಾಡಬಹುದು ಎಂದು ಸ್ವಲ್ಪ ಯೋಚಿಸಿ. + +ಈಗ, X ಮತ್ತು y ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡಿ. + +> 🎓 ನೆನಪಿಡಿ, ಇದು ಮೇಲ್ವಿಚಾರಿತ ಅಧ್ಯಯನ, ಮತ್ತು ನಮಗೆ 'y' ಗುರಿ ಬೇಕು. + +ಹೊಸ ಕೋಡ್ ಸೆಲ್‌ನಲ್ಲಿ, `load_diabetes()` ಅನ್ನು ಕರೆಸಿ ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ. `return_X_y=True` ಎಂಬ ಇನ್ಪುಟ್ ಸೂಚಿಸುತ್ತದೆ `X` ಡೇಟಾ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಆಗಿದ್ದು, `y` ರಿಗ್ರೆಶನ್ ಗುರಿಯಾಗಿರುತ್ತದೆ. + +1. ಡೇಟಾ ಮ್ಯಾಟ್ರಿಕ್ಸ್‌ನ ಆಕಾರ ಮತ್ತು ಅದರ ಮೊದಲ ಅಂಶವನ್ನು ತೋರಿಸಲು ಕೆಲವು ಪ್ರಿಂಟ್ ಕಮಾಂಡ್‌ಗಳನ್ನು ಸೇರಿಸಿ: + + ```python + X, y = datasets.load_diabetes(return_X_y=True) + print(X.shape) + print(X[0]) + ``` + + ನೀವು ಪಡೆದಿರುವ ಪ್ರತಿಕ್ರಿಯೆ ಒಂದು ಟ್ಯೂಪಲ್ ಆಗಿದೆ. ನೀವು ಟ್ಯೂಪಲ್‌ನ ಮೊದಲ ಎರಡು ಮೌಲ್ಯಗಳನ್ನು ಕ್ರಮವಾಗಿ `X` ಮತ್ತು `y` ಗೆ ನಿಯೋಜಿಸುತ್ತಿದ್ದೀರಿ. [ಟ್ಯೂಪಲ್‌ಗಳ ಬಗ್ಗೆ](https://wikipedia.org/wiki/Tuple) ಹೆಚ್ಚು ತಿಳಿಯಿರಿ. + + ಈ ಡೇಟಾ 442 ಐಟಂಗಳನ್ನು 10 ಅಂಶಗಳ ಅರೆಗಳಾಗಿ ಹೊಂದಿದೆ: + + ```text + (442, 10) + [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 + -0.04340085 -0.00259226 0.01990842 -0.01764613] + ``` + + ✅ ಡೇಟಾ ಮತ್ತು ರಿಗ್ರೆಶನ್ ಗುರಿಯ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಸ್ವಲ್ಪ ಯೋಚಿಸಿ. ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ವೈಶಿಷ್ಟ್ಯ X ಮತ್ತು ಗುರಿ y ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ಊಹಿಸುತ್ತದೆ. ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್ ಗುರಿಯನ್ನು [ಡಾಕ್ಯುಮೆಂಟೇಶನ್‌ನಲ್ಲಿ](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ನೀವು ಕಂಡುಹಿಡಿಯಬಹುದೇ? ಈ ಡೇಟಾಸೆಟ್ ಏನು ಪ್ರದರ್ಶಿಸುತ್ತಿದೆ, ಆ ಗುರಿಯನ್ನು ನೀಡಿದಾಗ? + +2. ನಂತರ, ಈ ಡೇಟಾಸೆಟ್‌ನ ಒಂದು ಭಾಗವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಲು, ಡೇಟಾಸೆಟ್‌ನ 3ನೇ ಕಾಲಮ್ ಆಯ್ಕೆಮಾಡಿ. ಎಲ್ಲಾ ಸಾಲುಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲು `:` ಆಪರೇಟರ್ ಬಳಸಿ, ನಂತರ ಸೂಚ್ಯಂಕ (2) ಬಳಸಿ 3ನೇ ಕಾಲಮ್ ಆಯ್ಕೆಮಾಡಿ. ಪ್ಲಾಟ್ ಮಾಡಲು ಅಗತ್ಯವಿರುವಂತೆ ಡೇಟಾವನ್ನು 2D ಅರೆ ಆಗಿ ಮರುರೂಪಿಸಬಹುದು - `reshape(n_rows, n_columns)` ಬಳಸಿ. ಒಂದು ಪ್ಯಾರಾಮೀಟರ್ -1 ಆಗಿದ್ದರೆ, ಆ ಆಯಾಮವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ. + + ```python + X = X[:, 2] + X = X.reshape((-1,1)) + ``` + + ✅ ಯಾವಾಗಲಾದರೂ ಡೇಟಾ ಮುದ್ರಿಸಿ ಅದರ ಆಕಾರವನ್ನು ಪರಿಶೀಲಿಸಿ. + +3. ಈಗ ನೀವು ಪ್ಲಾಟ್ ಮಾಡಲು ಡೇಟಾ ಸಿದ್ಧವಾಗಿದೆ, ಈ ಡೇಟಾಸೆಟ್‌ನ ಸಂಖ್ಯೆಗಳ ನಡುವೆ ಯಂತ್ರವು ತಾರ್ಕಿಕ ವಿಭಜನೆ ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದೇ ಎಂದು ನೋಡಬಹುದು. ಇದಕ್ಕಾಗಿ, ನೀವು ಡೇಟಾ (X) ಮತ್ತು ಗುರಿ (y) ಎರಡನ್ನೂ ಪರೀಕ್ಷಾ ಮತ್ತು ತರಬೇತಿ ಸೆಟ್‌ಗಳಾಗಿ ವಿಭಜಿಸಬೇಕು. ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಇದನ್ನು ಸರಳವಾಗಿ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ; ನೀವು ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ನಿರ್ದಿಷ್ಟ ಬಿಂದುವಿನಲ್ಲಿ ವಿಭಜಿಸಬಹುದು. + + ```python + X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) + ``` + +4. ಈಗ ನೀವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ ಸಿದ್ಧರಾಗಿದ್ದೀರಿ! ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ಲೋಡ್ ಮಾಡಿ ಮತ್ತು `model.fit()` ಬಳಸಿ ನಿಮ್ಮ X ಮತ್ತು y ತರಬೇತಿ ಸೆಟ್‌ಗಳೊಂದಿಗೆ ತರಬೇತಿ ಮಾಡಿ: + + ```python + model = linear_model.LinearRegression() + model.fit(X_train, y_train) + ``` + + ✅ `model.fit()` ಅನ್ನು ನೀವು TensorFlow ಮುಂತಾದ ಅನೇಕ ML ಗ್ರಂಥಾಲಯಗಳಲ್ಲಿ ಕಾಣುತ್ತೀರಿ + +5. ನಂತರ, ಪರೀಕ್ಷಾ ಡೇಟಾ ಬಳಸಿ `predict()` ಫಂಕ್ಷನ್ ಮೂಲಕ ಅಂದಾಜು ರಚಿಸಿ. ಇದು ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವೆ ರೇಖೆಯನ್ನು ಬಿಡಲು ಬಳಸಲಾಗುತ್ತದೆ + + ```python + y_pred = model.predict(X_test) + ``` + +6. ಈಗ ಡೇಟಾವನ್ನು ಪ್ಲಾಟ್‌ನಲ್ಲಿ ತೋರಿಸುವ ಸಮಯ. ಮ್ಯಾಟ್‌ಪ್ಲಾಟ್‌ಲಿಬ್ ಈ ಕಾರ್ಯಕ್ಕೆ ಬಹಳ ಉಪಯುಕ್ತ ಸಾಧನ. ಎಲ್ಲಾ X ಮತ್ತು y ಪರೀಕ್ಷಾ ಡೇಟಾದ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ರಚಿಸಿ, ಮತ್ತು ಅಂದಾಜನ್ನು ಬಳಸಿ ಮಾದರಿಯ ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವೆ ಸೂಕ್ತ ಸ್ಥಳದಲ್ಲಿ ರೇಖೆಯನ್ನು ಬಿಡಿ. + + ```python + plt.scatter(X_test, y_test, color='black') + plt.plot(X_test, y_pred, color='blue', linewidth=3) + plt.xlabel('Scaled BMIs') + plt.ylabel('Disease Progression') + plt.title('A Graph Plot Showing Diabetes Progression Against BMI') + plt.show() + ``` + + ![ಡಯಾಬಿಟಿಸ್ ಸುತ್ತಲೂ ಡೇಟಾಪಾಯಿಂಟ್‌ಗಳನ್ನು ತೋರಿಸುವ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್](../../../../translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.kn.png) + ✅ ಇಲ್ಲಿ ಏನಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ಸ್ವಲ್ಪ ಯೋಚಿಸಿ. ಒಂದು ಸರಳ ರೇಖೆ ಅನೇಕ ಸಣ್ಣ ಡೇಟಾ ಬಿಂದುಗಳ ಮೂಲಕ ಓಡುತ್ತಿದೆ, ಆದರೆ ಅದು ನಿಖರವಾಗಿ ಏನು ಮಾಡುತ್ತಿದೆ? ಈ ರೇಖೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಹೊಸ, ಕಾಣದ ಡೇಟಾ ಬಿಂದು ಪ್ಲಾಟ್‌ನ y ಅಕ್ಷದ ಸಂಬಂಧದಲ್ಲಿ ಎಲ್ಲಿ ಹೊಂದಿಕೊಳ್ಳಬೇಕು ಎಂದು ನೀವು ಹೇಗೆ ಊಹಿಸಬಹುದು ಎಂದು ನೋಡಬಹುದೇ? ಈ ಮಾದರಿಯ ಪ್ರಾಯೋಗಿಕ ಬಳಕೆಯನ್ನು ಪದಗಳಲ್ಲಿ ವಿವರಿಸಲು ಪ್ರಯತ್ನಿಸಿ. + +ಅಭಿನಂದನೆಗಳು, ನೀವು ನಿಮ್ಮ ಮೊದಲ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಅದರಿಂದ ಊಹೆ ಮಾಡಿದ್ದೀರಿ ಮತ್ತು ಅದನ್ನು ಪ್ಲಾಟ್‌ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಿದ್ದೀರಿ! + +--- +## 🚀ಸವಾಲು + +ಈ ಡೇಟಾಸೆಟ್‌ನಿಂದ ಬೇರೆ ಚರವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ. ಸೂಚನೆ: ಈ ಸಾಲನ್ನು ಸಂಪಾದಿಸಿ: `X = X[:,2]`. ಈ ಡೇಟಾಸೆಟ್‌ನ ಗುರಿಯನ್ನು ಗಮನಿಸಿದರೆ, ಡಯಾಬಿಟಿಸ್ ರೋಗದ ಪ್ರಗತಿಯನ್ನು ನೀವು ಏನು ಕಂಡುಹಿಡಿಯಬಹುದು? +## [ಪೋಸ್ಟ್-ಲೆಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಈ ಟ್ಯುಟೋರಿಯಲ್‌ನಲ್ಲಿ, ನೀವು ಸರಳ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿದ್ದೀರಿ, ಏಕಚರ ಅಥವಾ ಬಹುಚರ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಅಲ್ಲ. ಈ ವಿಧಾನಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸಗಳ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಓದಿ, ಅಥವಾ [ಈ ವೀಡಿಯೋ](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) ನೋಡಿ. + +ರಿಗ್ರೆಶನ್ ಎಂಬ ಸಂಪ್ರದಾಯದ ಬಗ್ಗೆ ಹೆಚ್ಚು ಓದಿ ಮತ್ತು ಈ ತಂತ್ರಜ್ಞಾನದಿಂದ ಯಾವ ರೀತಿಯ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರ ನೀಡಬಹುದು ಎಂದು ಯೋಚಿಸಿ. ನಿಮ್ಮ ಅರ್ಥವನ್ನು ಗಾಢಗೊಳಿಸಲು ಈ [ಟ್ಯುಟೋರಿಯಲ್](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. + +## ನಿಯೋಜನೆ + +[ಬೇರೆ ಡೇಟಾಸೆಟ್](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/1-Tools/assignment.md b/translations/kn/2-Regression/1-Tools/assignment.md new file mode 100644 index 000000000..ae8c2d077 --- /dev/null +++ b/translations/kn/2-Regression/1-Tools/assignment.md @@ -0,0 +1,29 @@ + +# ಸ್ಕಿಕಿಟ್-ಲರ್ನ್‌ನೊಂದಿಗೆ ರಿಗ್ರೆಶನ್ + +## ಸೂಚನೆಗಳು + +ಸ್ಕಿಕಿಟ್-ಲರ್ನ್‌ನಲ್ಲಿ [ಲಿನ್ನೆರಡ್ ಡೇಟಾಸೆಟ್](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) ಅನ್ನು ನೋಡಿ. ಈ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಹಲವಾರು [ಲಕ್ಷ್ಯಗಳು](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset) ಇವೆ: 'ಇದು ಮೂವರು ವ್ಯಾಯಾಮ (ಡೇಟಾ) ಮತ್ತು ಮೂವರು ಶಾರೀರಿಕ (ಲಕ್ಷ್ಯ) ಚರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಇವುಗಳನ್ನು ಇಪ್ಪತ್ತು ಮಧ್ಯಮ ವಯಸ್ಸಿನ ಪುರುಷರಿಂದ ಫಿಟ್ನೆಸ್ ಕ್ಲಬ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ'. + +ನಿಮ್ಮ ಸ್ವಂತ ಪದಗಳಲ್ಲಿ, ಎಷ್ಟು ಸಿಟ್-ಅಪ್ಸ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು কোমರದ ಗಾತ್ರದ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಚಿತ್ರಿಸುವ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ಹೇಗೆ ರಚಿಸುವುದು ಎಂದು ವಿವರಿಸಿ. ಈ ಡೇಟಾಸೆಟ್‌ನ ಇತರ ಡೇಟಾಪಾಯಿಂಟ್‌ಗಳಿಗೂ ಅದೇ ರೀತಿಯಲ್ಲಿ ಮಾಡಿ. + +## ರೂಬ್ರಿಕ್ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ಸಮರ್ಪಕ | ಸುಧಾರಣೆಯ ಅಗತ್ಯ | +| ------------------------------ | ----------------------------------- | ----------------------------- | -------------------------- | +| ವಿವರಣಾತ್ಮಕ ಪ್ಯಾರಾಗ್ರಾಫ್ ಸಲ್ಲಿಸಿ | ಚೆನ್ನಾಗಿ ಬರೆಯಲಾದ ಪ್ಯಾರಾಗ್ರಾಫ್ ಸಲ್ಲಿಸಲಾಗಿದೆ | ಕೆಲವು ವಾಕ್ಯಗಳು ಸಲ್ಲಿಸಲಾಗಿದೆ | ಯಾವುದೇ ವಿವರಣೆ ನೀಡಲಾಗಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/1-Tools/notebook.ipynb b/translations/kn/2-Regression/1-Tools/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/kn/2-Regression/1-Tools/solution/Julia/README.md b/translations/kn/2-Regression/1-Tools/solution/Julia/README.md new file mode 100644 index 000000000..b67b8db71 --- /dev/null +++ b/translations/kn/2-Regression/1-Tools/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb b/translations/kn/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb new file mode 100644 index 000000000..287a176b4 --- /dev/null +++ b/translations/kn/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb @@ -0,0 +1,452 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_1-R.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "c18d3bd0bd8ae3878597e89dcd1fa5c1", + "translation_date": "2025-12-19T16:31:36+00:00", + "source_file": "2-Regression/1-Tools/solution/R/lesson_1-R.ipynb", + "language_code": "kn" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ: R ಮತ್ತು Tidymodels ಬಳಸಿ ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ\n" + ], + "metadata": { + "id": "YJUHCXqK57yz" + } + }, + { + "cell_type": "markdown", + "source": [ + "## ರಿಗ್ರೆಶನ್ ಪರಿಚಯ - ಪಾಠ 1\n", + "\n", + "#### ದೃಷ್ಟಿಕೋನಕ್ಕೆ ಇಡುವುದು\n", + "\n", + "✅ ರಿಗ್ರೆಶನ್ ವಿಧಾನಗಳ ಹಲವು ಪ್ರಕಾರಗಳಿವೆ, ಮತ್ತು ನೀವು ಯಾವದನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತೀರಿ ಎಂಬುದು ನೀವು ಹುಡುಕುತ್ತಿರುವ ಉತ್ತರದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ನೀವು ನೀಡಲಾದ ವಯಸ್ಸಿನ ವ್ಯಕ್ತಿಯ ಸಾಧ್ಯತೆಯ ಎತ್ತರವನ್ನು ಊಹಿಸಲು ಬಯಸಿದರೆ, ನೀವು `ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್` ಅನ್ನು ಬಳಸುತ್ತೀರಿ, ಏಕೆಂದರೆ ನೀವು **ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯ**ವನ್ನು ಹುಡುಕುತ್ತಿದ್ದೀರಿ. ನೀವು ಯಾವ ರೀತಿಯ ಆಹಾರವನ್ನು ವೆಗನ್ ಎಂದು ಪರಿಗಣಿಸಬೇಕೇ ಎಂದು ತಿಳಿದುಕೊಳ್ಳಲು ಆಸಕ್ತರಾಗಿದ್ದರೆ, ನೀವು **ವರ್ಗ ವಿಂಗಡಣೆ**ಗಾಗಿ ಹುಡುಕುತ್ತಿದ್ದೀರಿ ಆದ್ದರಿಂದ ನೀವು `ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್` ಅನ್ನು ಬಳಸುತ್ತೀರಿ. ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಗ್ಗೆ ನೀವು ನಂತರ ಹೆಚ್ಚು ತಿಳಿಯುತ್ತೀರಿ. ಡೇಟಾದಿಂದ ನೀವು ಕೇಳಬಹುದಾದ ಕೆಲವು ಪ್ರಶ್ನೆಗಳ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಯೋಚಿಸಿ, ಮತ್ತು ಈ ವಿಧಾನಗಳಲ್ಲಿ ಯಾವುದು ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿರುತ್ತದೆ ಎಂದು ಪರಿಗಣಿಸಿ.\n", + "\n", + "ಈ ವಿಭಾಗದಲ್ಲಿ, ನೀವು [ಮಧುಮೇಹದ ಬಗ್ಗೆ ಸಣ್ಣ ಡೇಟಾಸೆಟ್](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html) ಜೊತೆಗೆ ಕೆಲಸ ಮಾಡುತ್ತೀರಿ. ನೀವು ಮಧುಮೇಹ ರೋಗಿಗಳಿಗೆ ಚಿಕಿತ್ಸೆ ಪರೀಕ್ಷಿಸಲು ಬಯಸಿದರೆ ಎಂದು ಕಲ್ಪಿಸಿ. ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳು, ಬದಲಾವಣೆಗಳ ಸಂಯೋಜನೆಗಳ ಆಧಾರದ ಮೇಲೆ, ಯಾವ ರೋಗಿಗಳು ಚಿಕಿತ್ಸೆಗಾಗಿ ಉತ್ತಮ ಪ್ರತಿಕ್ರಿಯಿಸುವರು ಎಂದು ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು. ಅತ್ಯಂತ ಮೂಲಭೂತ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯೂ ಸಹ, ದೃಶ್ಯೀಕರಿಸಿದಾಗ, ನಿಮ್ಮ ಸೈದ್ಧಾಂತಿಕ ಕ್ಲಿನಿಕಲ್ ಪ್ರಯೋಗಗಳನ್ನು ಸಂಘಟಿಸಲು ಸಹಾಯ ಮಾಡುವ ಬದಲಾವಣೆಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿ ತೋರಿಸಬಹುದು.\n", + "\n", + "ಹೀಗಾಗಿ, ಈ ಕಾರ್ಯವನ್ನು ಪ್ರಾರಂಭಿಸೋಣ!\n", + "\n", + "

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

@allison_horst ಅವರ ಕಲಾಕೃತಿ
\n", + "\n", + "\n" + ], + "metadata": { + "id": "LWNNzfqd6feZ" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 1. ನಮ್ಮ ಉಪಕರಣಗಳ ಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುವುದು\n", + "\n", + "ಈ ಕಾರ್ಯಕ್ಕಾಗಿ, ನಾವು ಕೆಳಗಿನ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಅಗತ್ಯವಿದೆ:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) ಒಂದು [R ಪ್ಯಾಕೇಜುಗಳ ಸಂಗ್ರಹ](https://www.tidyverse.org/packages) ಆಗಿದ್ದು, ಡೇಟಾ ವಿಜ್ಞಾನವನ್ನು ವೇಗವಾಗಿ, ಸುಲಭವಾಗಿ ಮತ್ತು ಹೆಚ್ಚು ಮನರಂಜನೀಯವಾಗಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ!\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ಫ್ರೇಮ್ವರ್ಕ್ ಒಂದು [ಪ್ಯಾಕೇಜುಗಳ ಸಂಗ್ರಹ](https://www.tidymodels.org/packages/) ಆಗಿದ್ದು, ಮಾದರೀಕರಣ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕಾಗಿ.\n", + "\n", + "ನೀವು ಅವುಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬಹುದು:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\"))`\n", + "\n", + "ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ನೀವು ಈ ಘಟಕವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜುಗಳಿದ್ದಾರೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಕೆಲವು ಇಲ್ಲದಿದ್ದರೆ ಅವುಗಳನ್ನು ನಿಮ್ಮಿಗಾಗಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ.\n" + ], + "metadata": { + "id": "FIo2YhO26wI9" + } + }, + { + "cell_type": "code", + "execution_count": 2, + "source": [ + "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n", + "pacman::p_load(tidyverse, tidymodels)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Loading required package: pacman\n", + "\n" + ] + } + ], + "metadata": { + "id": "cIA9fz9v7Dss", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "2df7073b-86b2-4b32-cb86-0da605a0dc11" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಈಗ, ಈ ಅದ್ಭುತ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ ನಮ್ಮ ಪ್ರಸ್ತುತ R ಸೆಷನ್‌ನಲ್ಲಿ ಲಭ್ಯವಿರಿಸೋಣ.(ಇದು ಕೇವಲ ಉದಾಹರಣೆಗೆ, `pacman::p_load()` ಈಗಾಗಲೇ ಅದನ್ನು ನಿಮ್ಮಿಗಾಗಿ ಮಾಡಿದೆ)\n" + ], + "metadata": { + "id": "gpO_P_6f9WUG" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# load the core Tidyverse packages\r\n", + "library(tidyverse)\r\n", + "\r\n", + "# load the core Tidymodels packages\r\n", + "library(tidymodels)\r\n" + ], + "outputs": [], + "metadata": { + "id": "NLMycgG-9ezO" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 2. ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್\n", + "\n", + "ಈ ವ್ಯಾಯಾಮದಲ್ಲಿ, ನಾವು ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್ ಮೇಲೆ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವ ಮೂಲಕ ನಮ್ಮ ರಿಗ್ರೆಶನ್ ಕೌಶಲ್ಯಗಳನ್ನು ಪ್ರದರ್ಶಿಸುವೆವು. [ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.rwrite1.txt) ನಲ್ಲಿ ಡಯಾಬಿಟಿಸ್ ಸುತ್ತಲೂ `442 ಮಾದರಿಗಳು` ಒಳಗೊಂಡಿವೆ, 10 ಭವಿಷ್ಯವಾಣಿ ವೈಶಿಷ್ಟ್ಯ ಚರಗಳು, `ವಯಸ್ಸು`, `ಲಿಂಗ`, `ದೇಹದ ಭಾರ ಸೂಚ್ಯಂಕ`, `ಸರಾಸರಿ ರಕ್ತದ ಒತ್ತಡ`, ಮತ್ತು `ಆರು ರಕ್ತ ಸೀರಮ್ ಮಾಪನಗಳು` ಜೊತೆಗೆ ಫಲಿತಾಂಶ ಚರ `y`: ಮೂಲಸ್ಥಿತಿಯಿಂದ ಒಂದು ವರ್ಷ ನಂತರ ರೋಗ ಪ್ರಗತಿಯ ಪ್ರಮಾಣಾತ್ಮಕ ಅಳೆಯುವಿಕೆ.\n", + "\n", + "|ನೋಟಗಳ ಸಂಖ್ಯೆ|442|\n", + "|----------------------|:---|\n", + "|ಭವಿಷ್ಯವಾಣಿ ಚರಗಳ ಸಂಖ್ಯೆ|ಮೊದಲ 10 ಕಾಲಮ್‌ಗಳು ಸಂಖ್ಯಾತ್ಮಕ ಭವಿಷ್ಯವಾಣಿ|\n", + "|ಫಲಿತಾಂಶ/ಲಕ್ಷ್ಯ|11ನೇ ಕಾಲಮ್ ಮೂಲಸ್ಥಿತಿಯಿಂದ ಒಂದು ವರ್ಷ ನಂತರ ರೋಗ ಪ್ರಗತಿಯ ಪ್ರಮಾಣಾತ್ಮಕ ಅಳೆಯುವಿಕೆ|\n", + "|ಭವಿಷ್ಯವಾಣಿ ಮಾಹಿತಿ|- ವಯಸ್ಸು ವರ್ಷಗಳಲ್ಲಿ\n", + "||- ಲಿಂಗ\n", + "||- bmi ದೇಹದ ಭಾರ ಸೂಚ್ಯಂಕ\n", + "||- bp ಸರಾಸರಿ ರಕ್ತದ ಒತ್ತಡ\n", + "||- s1 tc, ಒಟ್ಟು ಸೀರಮ್ ಕೊಲೆಸ್ಟ್ರಾಲ್\n", + "||- s2 ldl, ಕಡಿಮೆ ಸಾಂದ್ರತೆ ಲಿಪೋಪ್ರೋಟೀನ್‌ಗಳು\n", + "||- s3 hdl, ಹೆಚ್ಚಿನ ಸಾಂದ್ರತೆ ಲಿಪೋಪ್ರೋಟೀನ್‌ಗಳು\n", + "||- s4 tch, ಒಟ್ಟು ಕೊಲೆಸ್ಟ್ರಾಲ್ / HDL\n", + "||- s5 ltg, ಸಾಧ್ಯತೆಯಾಗಿ ಸೀರಮ್ ಟ್ರೈಗ್ಲಿಸರೈಡ್ ಮಟ್ಟದ ಲಾಗ್\n", + "||- s6 glu, ರಕ್ತ ಸಕ್ಕರೆ ಮಟ್ಟ|\n", + "\n", + "\n", + "\n", + "\n", + "> 🎓 ನೆನಪಿಡಿ, ಇದು ಮೇಲ್ವಿಚಾರಿತ ಕಲಿಕೆ, ಮತ್ತು ನಮಗೆ 'y' ಎಂಬ ಹೆಸರಿನ ಲಕ್ಷ್ಯ ಬೇಕು.\n", + "\n", + "ನೀವು R ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಸಂಚಾಲಿಸಲು ಮೊದಲು, ನೀವು ಡೇಟಾವನ್ನು R ನ ಮೆಮೊರಿಯಲ್ಲಿ ಆಮದು ಮಾಡಿಕೊಳ್ಳಬೇಕು, ಅಥವಾ R ಡೇಟಾವನ್ನು ದೂರಸ್ಥವಾಗಿ ಪ್ರವೇಶಿಸಲು ಬಳಸಬಹುದಾದ ಸಂಪರ್ಕವನ್ನು ನಿರ್ಮಿಸಬೇಕು.\n", + "\n", + "> [readr](https://readr.tidyverse.org/) ಪ್ಯಾಕೇಜ್, ಇದು ಟಿಡಿವರ್ಸ್‌ನ ಭಾಗವಾಗಿದೆ, R ಗೆ ಚೌಕಾಕಾರದ ಡೇಟಾವನ್ನು ವೇಗವಾಗಿ ಮತ್ತು ಸ್ನೇಹಪೂರ್ವಕವಾಗಿ ಓದಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n", + "\n", + "ಈಗ, ಈ ಮೂಲ URL ನಲ್ಲಿ ನೀಡಲಾದ ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡೋಣ: \n", + "\n", + "ಮತ್ತೆ, ನಾವು `glimpse()` ಬಳಸಿ ನಮ್ಮ ಡೇಟಾದ ಮೇಲೆ ಸಮರ್ಥನೆ ಪರಿಶೀಲನೆ ಮಾಡೋಣ ಮತ್ತು `slice()` ಬಳಸಿ ಮೊದಲ 5 ಸಾಲುಗಳನ್ನು ಪ್ರದರ್ಶಿಸೋಣ.\n", + "\n", + "ಮುಂದೆ ಹೋಗುವ ಮೊದಲು, R ಕೋಡ್‌ನಲ್ಲಿ ನೀವು ಬಹುಶಃ συχνά ಎದುರಿಸುವುದಾದ ಒಂದು ವಿಷಯವನ್ನು ಪರಿಚಯಿಸೋಣ 🥁🥁: ಪೈಪ್ ಆಪರೇಟರ್ `%>%`\n", + "\n", + "ಪೈಪ್ ಆಪರೇಟರ್ (`%>%`) ಒಂದು ವಸ್ತುವನ್ನು ಮುಂದಕ್ಕೆ ಫಂಕ್ಷನ್ ಅಥವಾ ಕರೆ ಅಭಿವ್ಯಕ್ತಿಗೆ ಹಂಚಿಕೊಡುವ ಮೂಲಕ ತಾರ್ಕಿಕ ಕ್ರಮದಲ್ಲಿ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ನೀವು ಪೈಪ್ ಆಪರೇಟರ್ ಅನ್ನು ನಿಮ್ಮ ಕೋಡ್‌ನಲ್ಲಿ \"ಮತ್ತು ನಂತರ\" ಎಂದು ಹೇಳುತ್ತಿರುವಂತೆ ಭಾವಿಸಬಹುದು.\n" + ], + "metadata": { + "id": "KM6iXLH996Cl" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Import the data set\r\n", + "diabetes <- read_table2(file = \"https://www4.stat.ncsu.edu/~boos/var.select/diabetes.rwrite1.txt\")\r\n", + "\r\n", + "\r\n", + "# Get a glimpse and dimensions of the data\r\n", + "glimpse(diabetes)\r\n", + "\r\n", + "\r\n", + "# Select the first 5 rows of the data\r\n", + "diabetes %>% \r\n", + " slice(1:5)" + ], + "outputs": [], + "metadata": { + "id": "Z1geAMhM-bSP" + } + }, + { + "cell_type": "markdown", + "source": [ + "`glimpse()` ನಮಗೆ ಈ ಡೇಟಾದಲ್ಲಿ 442 ಸಾಲುಗಳು ಮತ್ತು 11 ಕಾಲಮ್‌ಗಳಿವೆ ಎಂದು ತೋರಿಸುತ್ತದೆ, ಎಲ್ಲ ಕಾಲಮ್‌ಗಳೂ `double` ಡೇಟಾ ಪ್ರಕಾರದವು.\n", + "\n", + "
\n", + "\n", + "> glimpse() ಮತ್ತು slice() ಎಂಬವು [`dplyr`](https://dplyr.tidyverse.org/) ನಲ್ಲಿ ಇರುವ ಫಂಕ್ಷನ್‌ಗಳು. Dplyr, Tidyverse ಭಾಗವಾಗಿದ್ದು, ಡೇಟಾ ಮ್ಯಾನಿಪ್ಯುಲೇಶನ್‌ನ ವ್ಯಾಕರಣವಾಗಿದೆ, ಇದು ಸಾಮಾನ್ಯ ಡೇಟಾ ಮ್ಯಾನಿಪ್ಯುಲೇಶನ್ ಸವಾಲುಗಳನ್ನು ಪರಿಹರಿಸಲು ಸಹಾಯ ಮಾಡುವ ಸತತ ಕ್ರಿಯಾಪದಗಳ ಸಮೂಹವನ್ನು ಒದಗಿಸುತ್ತದೆ.\n", + "\n", + "
\n", + "\n", + "ಈಗ ನಮಗೆ ಡೇಟಾ ಇದ್ದು, ಈ ವ್ಯಾಯಾಮಕ್ಕಾಗಿ ಒಂದು ವೈಶಿಷ್ಟ್ಯ (`bmi`) ಯನ್ನು ಗುರಿಯಾಗಿಸೋಣ. ಇದಕ್ಕಾಗಿ ನಾವು ಬೇಕಾದ ಕಾಲಮ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಹಾಗಾದರೆ, ನಾವು ಇದನ್ನು ಹೇಗೆ ಮಾಡಬಹುದು?\n", + "\n", + "[`dplyr::select()`](https://dplyr.tidyverse.org/reference/select.html) ನಮಗೆ ಡೇಟಾ ಫ್ರೇಮ್‌ನಲ್ಲಿ ಕಾಲಮ್‌ಗಳನ್ನು *ಆಯ್ಕೆ* (ಮತ್ತು ಐಚ್ಛಿಕವಾಗಿ ಮರುನಾಮಕರಣ) ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.\n" + ], + "metadata": { + "id": "UwjVT1Hz-c3Z" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Select predictor feature `bmi` and outcome `y`\r\n", + "diabetes_select <- diabetes %>% \r\n", + " select(c(bmi, y))\r\n", + "\r\n", + "# Print the first 5 rows\r\n", + "diabetes_select %>% \r\n", + " slice(1:10)" + ], + "outputs": [], + "metadata": { + "id": "RDY1oAKI-m80" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 3. ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾ\n", + "\n", + "ನಿರೀಕ್ಷಿತ ಕಲಿಕೆಯಲ್ಲಿ ಡೇಟಾವನ್ನು ಎರಡು ಉಪಸಮೂಹಗಳಾಗಿ *ಬೇರ್ಪಡಿಸುವುದು* ಸಾಮಾನ್ಯ ಅಭ್ಯಾಸ; ಒಂದು (ಸಾಮಾನ್ಯವಾಗಿ ದೊಡ್ಡದಾದ) ಸೆಟ್ ಅನ್ನು ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ ಬಳಸಲಾಗುತ್ತದೆ, ಮತ್ತು ಒಂದು ಸಣ್ಣ \"ಹೋಲ್ಡ್-ಬ್ಯಾಕ್\" ಸೆಟ್ ಅನ್ನು ಮಾದರಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸಿತು ಎಂದು ನೋಡಲು ಬಳಸಲಾಗುತ್ತದೆ.\n", + "\n", + "ಈಗ ನಮಗೆ ಡೇಟಾ ಸಿದ್ಧವಾಗಿದೆ, ನಾವು ಈ ಡೇಟಾಸೆಟ್‌ನ ಸಂಖ್ಯೆಗಳ ನಡುವೆ ತಾರ್ಕಿಕ ಬೇರ್ಪಡಿಸುವಿಕೆಯನ್ನು ಯಂತ್ರ ಸಹಾಯದಿಂದ ನಿರ್ಧರಿಸಬಹುದೇ ಎಂದು ನೋಡಬಹುದು. ನಾವು [rsample](https://tidymodels.github.io/rsample/) ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಬಳಸಬಹುದು, ಇದು Tidymodels ಫ್ರೇಮ್ವರ್ಕ್‌ನ ಭಾಗವಾಗಿದ್ದು, ಡೇಟಾವನ್ನು *ಹೇಗೆ* ಬೇರ್ಪಡಿಸುವುದರ ಮಾಹಿತಿ ಹೊಂದಿರುವ ವಸ್ತುವನ್ನು ರಚಿಸಲು, ಮತ್ತು ನಂತರ ರಚಿಸಲಾದ ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗಳನ್ನು ಹೊರತೆಗೆಯಲು ಇನ್ನೂ ಎರಡು rsample ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಬಳಸಬಹುದು:\n" + ], + "metadata": { + "id": "SDk668xK-tc3" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "set.seed(2056)\r\n", + "# Split 67% of the data for training and the rest for tesing\r\n", + "diabetes_split <- diabetes_select %>% \r\n", + " initial_split(prop = 0.67)\r\n", + "\r\n", + "# Extract the resulting train and test sets\r\n", + "diabetes_train <- training(diabetes_split)\r\n", + "diabetes_test <- testing(diabetes_split)\r\n", + "\r\n", + "# Print the first 3 rows of the training set\r\n", + "diabetes_train %>% \r\n", + " slice(1:10)" + ], + "outputs": [], + "metadata": { + "id": "EqtHx129-1h-" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 4. Tidymodels ಬಳಸಿ ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಿ\n", + "\n", + "ಈಗ ನಾವು ನಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೇವೆ!\n", + "\n", + "Tidymodels ನಲ್ಲಿ, ನೀವು `parsnip()` ಬಳಸಿ ಮೂರು ಕಲ್ಪನೆಗಳನ್ನು ಸೂಚಿಸುವ ಮೂಲಕ ಮಾದರಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತೀರಿ:\n", + "\n", + "- ಮಾದರಿ **ಪ್ರಕಾರ** ರೇಖೀಯ ರಿಗ್ರೆಶನ್, ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್, ನಿರ್ಧಾರ ಮರ ಮಾದರಿಗಳು ಮತ್ತು ಇತರವುಗಳಂತಹ ಮಾದರಿಗಳನ್ನು ವಿಭಿನ್ನಗೊಳಿಸುತ್ತದೆ.\n", + "\n", + "- ಮಾದರಿ **ಮೋಡ್** ಸಾಮಾನ್ಯ ಆಯ್ಕೆಗಳು regression ಮತ್ತು classification ಅನ್ನು ಒಳಗೊಂಡಿದೆ; ಕೆಲವು ಮಾದರಿ ಪ್ರಕಾರಗಳು ಇವುಗಳಲ್ಲಿ ಯಾವುದಾದರೂ ಒಂದು ಅಥವಾ ಎರಡನ್ನೂ ಬೆಂಬಲಿಸುತ್ತವೆ.\n", + "\n", + "- ಮಾದರಿ **ಎಂಜಿನ್** ಮಾದರಿಯನ್ನು ಹೊಂದಿಸಲು ಬಳಸಲಾಗುವ ಗಣನಾತ್ಮಕ ಸಾಧನವಾಗಿದೆ. ಸಾಮಾನ್ಯವಾಗಿ ಇವು R ಪ್ಯಾಕೇಜ್‌ಗಳು, ಉದಾಹರಣೆಗೆ **`\"lm\"`** ಅಥವಾ **`\"ranger\"`**\n", + "\n", + "ಈ ಮಾದರಿ ಮಾಹಿತಿಯನ್ನು ಮಾದರಿ ನಿರ್ದಿಷ್ಟಪಡಿಸುವಿಕೆಯಲ್ಲಿ ಸೆರೆಹಿಡಿಯಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಒಂದನ್ನು ನಿರ್ಮಿಸೋಣ!\n" + ], + "metadata": { + "id": "sBOS-XhB-6v7" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Build a linear model specification\r\n", + "lm_spec <- \r\n", + " # Type\r\n", + " linear_reg() %>% \r\n", + " # Engine\r\n", + " set_engine(\"lm\") %>% \r\n", + " # Mode\r\n", + " set_mode(\"regression\")\r\n", + "\r\n", + "\r\n", + "# Print the model specification\r\n", + "lm_spec" + ], + "outputs": [], + "metadata": { + "id": "20OwEw20--t3" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಮಾದರಿಯನ್ನು *ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ* ನಂತರ, ಮಾದರಿಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಸೂತ್ರ ಮತ್ತು ಕೆಲವು ಡೇಟಾವನ್ನು ಬಳಸಿ [`fit()`](https://parsnip.tidymodels.org/reference/fit.html) ಫಂಕ್ಷನ್ ಬಳಸಿ `ಅಂದಾಜು` ಅಥವಾ `ತರಬೇತಿ` ಮಾಡಬಹುದು.\n", + "\n", + "`y ~ .` ಅಂದರೆ ನಾವು `y` ಅನ್ನು ಭವಿಷ್ಯವಾಣಿ ಪ್ರಮಾಣ/ಲಕ್ಷ್ಯವಾಗಿ ಹೊಂದಿಸುವೆವು, ಎಲ್ಲಾ ಭವಿಷ್ಯವಾಣಿಕಾರರು/ವೈಶಿಷ್ಟ್ಯಗಳಿಂದ ವಿವರಿಸಲಾಗುತ್ತದೆ ಅಂದರೆ, `.` (ಈ ಪ್ರಕರಣದಲ್ಲಿ, ನಮಗೆ ಒಂದೇ ಭವಿಷ್ಯವಾಣಿಕಾರನು ಇದೆ: `bmi`)\n" + ], + "metadata": { + "id": "_oDHs89k_CJj" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Build a linear model specification\r\n", + "lm_spec <- linear_reg() %>% \r\n", + " set_engine(\"lm\") %>%\r\n", + " set_mode(\"regression\")\r\n", + "\r\n", + "\r\n", + "# Train a linear regression model\r\n", + "lm_mod <- lm_spec %>% \r\n", + " fit(y ~ ., data = diabetes_train)\r\n", + "\r\n", + "# Print the model\r\n", + "lm_mod" + ], + "outputs": [], + "metadata": { + "id": "YlsHqd-q_GJQ" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಮಾದರಿ ಔಟ್‌ಪುಟ್‌ನಿಂದ, ನಾವು ತರಬೇತಿ ಸಮಯದಲ್ಲಿ ಕಲಿತ ಸಹಗುಣಾಂಕಗಳನ್ನು ನೋಡಬಹುದು. ಅವುಗಳು ನಿಜವಾದ ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲಾದ ಚರಗಳ ನಡುವೆ ಕನಿಷ್ಠ ಒಟ್ಟು ದೋಷವನ್ನು ನೀಡುವ ಉತ್ತಮ ಹೊಂದಾಣಿಕೆಯ ರೇಖೆಯ ಸಹಗುಣಾಂಕಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ.\n", + "
\n", + "\n", + "## 5. ಪರೀಕ್ಷಾ ಸೆಟ್‌ನಲ್ಲಿ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡಿ\n", + "\n", + "ನಾವು ಈಗಾಗಲೇ ಒಂದು ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿರುವುದರಿಂದ, ಅದನ್ನು [parsnip::predict()](https://parsnip.tidymodels.org/reference/predict.model_fit.html) ಬಳಸಿ ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್‌ಗೆ ರೋಗ ಪ್ರಗತಿಯನ್ನು y ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಳಸಬಹುದು. ಇದನ್ನು ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವೆ ರೇಖೆಯನ್ನು ಬಿಡಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.\n" + ], + "metadata": { + "id": "kGZ22RQj_Olu" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make predictions for the test set\r\n", + "predictions <- lm_mod %>% \r\n", + " predict(new_data = diabetes_test)\r\n", + "\r\n", + "# Print out some of the predictions\r\n", + "predictions %>% \r\n", + " slice(1:5)" + ], + "outputs": [], + "metadata": { + "id": "nXHbY7M2_aao" + } + }, + { + "cell_type": "markdown", + "source": [ + "ವಾಹ್! 💃🕺 ನಾವು ಇತ್ತೀಚೆಗೆ ಒಂದು ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಂಡು ಅದನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಳಸಿದ್ದೇವೆ!\n", + "\n", + "ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವಾಗ, tidymodels ಸಂಪ್ರದಾಯವು ಯಾವಾಗಲೂ ಫಲಿತಾಂಶಗಳ ತಬಲ್/ಡೇಟಾ ಫ್ರೇಮ್ ಅನ್ನು ಮಾನಕೃತ ಕಾಲಮ್ ಹೆಸರುಗಳೊಂದಿಗೆ ಉತ್ಪಾದಿಸುವುದಾಗಿದೆ. ಇದರಿಂದ ಮೂಲ ಡೇಟಾ ಮತ್ತು ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು subsequent ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ, ಉದಾಹರಣೆಗೆ ಪ್ಲಾಟಿಂಗ್‌ಗೆ, ಬಳಸಬಹುದಾದ ಸ್ವರೂಪದಲ್ಲಿ ಸಂಯೋಜಿಸುವುದು ಸುಲಭವಾಗುತ್ತದೆ.\n", + "\n", + "`dplyr::bind_cols()` ಬಹು ಡೇಟಾ ಫ್ರೇಮ್‌ಗಳ ಕಾಲಮ್‌ಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಂಧಿಸುತ್ತದೆ.\n" + ], + "metadata": { + "id": "R_JstwUY_bIs" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Combine the predictions and the original test set\r\n", + "results <- diabetes_test %>% \r\n", + " bind_cols(predictions)\r\n", + "\r\n", + "\r\n", + "results %>% \r\n", + " slice(1:5)" + ], + "outputs": [], + "metadata": { + "id": "RybsMJR7_iI8" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 6. ಮಾದರಿ ಫಲಿತಾಂಶಗಳನ್ನು ಚಿತ್ರಿಸಿ\n", + "\n", + "ಈಗ, ಇದನ್ನು ದೃಶ್ಯವಾಗಿ ನೋಡಲು ಸಮಯವಾಗಿದೆ 📈. ನಾವು ಪರೀಕ್ಷಾ ಸೆಟ್‌ನ ಎಲ್ಲಾ `y` ಮತ್ತು `bmi` ಮೌಲ್ಯಗಳ scatter plot ಅನ್ನು ರಚಿಸುವೆವು, ನಂತರ ಮಾದರಿಯ ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವೆ ಅತ್ಯಂತ ಸೂಕ್ತ ಸ್ಥಳದಲ್ಲಿ prediction ಗಳನ್ನು ಬಳಸಿ ಒಂದು ರೇಖೆಯನ್ನು ಬಿಡುತ್ತೇವೆ.\n", + "\n", + "R ನಲ್ಲಿ ಗ್ರಾಫ್‌ಗಳನ್ನು ರಚಿಸಲು ಹಲವಾರು ವ್ಯವಸ್ಥೆಗಳಿವೆ, ಆದರೆ `ggplot2` ಅತ್ಯಂತ ಸುಂದರ ಮತ್ತು ಬಹುಮುಖವಾಗಿದೆ. ಇದು ನಿಮಗೆ **ಸ್ವತಂತ್ರ ಘಟಕಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಮೂಲಕ** ಗ್ರಾಫ್‌ಗಳನ್ನು ರಚಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.\n" + ], + "metadata": { + "id": "XJbYbMZW_n_s" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Set a theme for the plot\r\n", + "theme_set(theme_light())\r\n", + "# Create a scatter plot\r\n", + "results %>% \r\n", + " ggplot(aes(x = bmi)) +\r\n", + " # Add a scatter plot\r\n", + " geom_point(aes(y = y), size = 1.6) +\r\n", + " # Add a line plot\r\n", + " geom_line(aes(y = .pred), color = \"blue\", size = 1.5)" + ], + "outputs": [], + "metadata": { + "id": "R9tYp3VW_sTn" + } + }, + { + "cell_type": "markdown", + "source": [ + "> ✅ ಇಲ್ಲಿ ಏನಾಗುತ್ತಿದೆ ಎಂಬುದರ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಯೋಚಿಸಿ. ಒಂದು ಸರಳ ರೇಖೆ ಅನೇಕ ಸಣ್ಣ ಡೇಟಾ ಬಿಂದುಗಳ ಮೂಲಕ ಓಡುತ್ತಿದೆ, ಆದರೆ ಅದು ನಿಖರವಾಗಿ ಏನು ಮಾಡುತ್ತಿದೆ? ಈ ರೇಖೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಹೊಸ, ಕಾಣದ ಡೇಟಾ ಬಿಂದು ಪ್ಲಾಟ್‌ನ y ಅಕ್ಷದ ಸಂಬಂಧದಲ್ಲಿ ಎಲ್ಲಿ ಹೊಂದಿಕೊಳ್ಳಬೇಕು ಎಂದು ನೀವು ಹೇಗೆ ಊಹಿಸಬಹುದು ಎಂದು ನೀವು ನೋಡಬಹುದೇ? ಈ ಮಾದರಿಯ ಪ್ರಾಯೋಗಿಕ ಬಳಕೆಯನ್ನು ಪದಗಳಲ್ಲಿ ವಿವರಿಸಲು ಪ್ರಯತ್ನಿಸಿ.\n", + "\n", + "ಅಭಿನಂದನೆಗಳು, ನೀವು ನಿಮ್ಮ ಮೊದಲ ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಅದನ್ನು ಬಳಸಿಕೊಂಡು ಊಹೆ ಮಾಡಿದ್ದೀರಿ, ಮತ್ತು ಅದನ್ನು ಪ್ಲಾಟ್‌ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಿದ್ದೀರಿ!\n" + ], + "metadata": { + "id": "zrPtHIxx_tNI" + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/2-Regression/1-Tools/solution/notebook.ipynb b/translations/kn/2-Regression/1-Tools/solution/notebook.ipynb new file mode 100644 index 000000000..1ab4698ae --- /dev/null +++ b/translations/kn/2-Regression/1-Tools/solution/notebook.ipynb @@ -0,0 +1,677 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್‌ಗಾಗಿ ರೇಖೀಯ ರಿಗ್ರೆಷನ್ - ಪಾಠ 1\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಅಗತ್ಯವಾದ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದುಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from sklearn import datasets, linear_model, model_selection\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ, `X` ಡೇಟಾ ಮತ್ತು `y` ವೈಶಿಷ್ಟ್ಯಗಳಾಗಿ ವಿಭಜಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(442, 10)\n", + "[ 0.03807591 0.05068012 0.06169621 0.02187239 -0.0442235 -0.03482076\n", + " -0.04340085 -0.00259226 0.01990749 -0.01764613]\n" + ] + } + ], + "source": [ + "X, y = datasets.load_diabetes(return_X_y=True)\n", + "print(X.shape)\n", + "print(X[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಈ ವ್ಯಾಯಾಮಕ್ಕಾಗಿ ಗುರಿಯಾಗಿಸಲು ಕೇವಲ ಒಂದು ವೈಶಿಷ್ಟ್ಯವನ್ನು ಆಯ್ಕೆಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(442,)\n" + ] + } + ], + "source": [ + "# Selecting the 3rd feature\n", + "X = X[:, 2]\n", + "print(X.shape)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(442, 1)\n", + "[[ 0.06169621]\n", + " [-0.05147406]\n", + " [ 0.04445121]\n", + " [-0.01159501]\n", + " [-0.03638469]\n", + " [-0.04069594]\n", + " [-0.04716281]\n", + " [-0.00189471]\n", + " [ 0.06169621]\n", + " [ 0.03906215]\n", + " [-0.08380842]\n", + " [ 0.01750591]\n", + " [-0.02884001]\n", + " [-0.00189471]\n", + " [-0.02560657]\n", + " [-0.01806189]\n", + " [ 0.04229559]\n", + " [ 0.01211685]\n", + " [-0.0105172 ]\n", + " [-0.01806189]\n", + " [-0.05686312]\n", + " [-0.02237314]\n", + " [-0.00405033]\n", + " [ 0.06061839]\n", + " [ 0.03582872]\n", + " [-0.01267283]\n", + " [-0.07734155]\n", + " [ 0.05954058]\n", + " [-0.02129532]\n", + " [-0.00620595]\n", + " [ 0.04445121]\n", + " [-0.06548562]\n", + " [ 0.12528712]\n", + " [-0.05039625]\n", + " [-0.06332999]\n", + " [-0.03099563]\n", + " [ 0.02289497]\n", + " [ 0.01103904]\n", + " [ 0.07139652]\n", + " [ 0.01427248]\n", + " [-0.00836158]\n", + " [-0.06764124]\n", + " [-0.0105172 ]\n", + " [-0.02345095]\n", + " [ 0.06816308]\n", + " [-0.03530688]\n", + " [-0.01159501]\n", + " [-0.0730303 ]\n", + " [-0.04177375]\n", + " [ 0.01427248]\n", + " [-0.00728377]\n", + " [ 0.0164281 ]\n", + " [-0.00943939]\n", + " [-0.01590626]\n", + " [ 0.0250506 ]\n", + " [-0.04931844]\n", + " [ 0.04121778]\n", + " [-0.06332999]\n", + " [-0.06440781]\n", + " [-0.02560657]\n", + " [-0.00405033]\n", + " [ 0.00457217]\n", + " [-0.00728377]\n", + " [-0.0374625 ]\n", + " [-0.02560657]\n", + " [-0.02452876]\n", + " [-0.01806189]\n", + " [-0.01482845]\n", + " [-0.02991782]\n", + " [-0.046085 ]\n", + " [-0.06979687]\n", + " [ 0.03367309]\n", + " [-0.00405033]\n", + " [-0.02021751]\n", + " [ 0.00241654]\n", + " [-0.03099563]\n", + " [ 0.02828403]\n", + " [-0.03638469]\n", + " [-0.05794093]\n", + " [-0.0374625 ]\n", + " [ 0.01211685]\n", + " [-0.02237314]\n", + " [-0.03530688]\n", + " [ 0.00996123]\n", + " [-0.03961813]\n", + " [ 0.07139652]\n", + " [-0.07518593]\n", + " [-0.00620595]\n", + " [-0.04069594]\n", + " [-0.04824063]\n", + " [-0.02560657]\n", + " [ 0.0519959 ]\n", + " [ 0.00457217]\n", + " [-0.06440781]\n", + " [-0.01698407]\n", + " [-0.05794093]\n", + " [ 0.00996123]\n", + " [ 0.08864151]\n", + " [-0.00512814]\n", + " [-0.06440781]\n", + " [ 0.01750591]\n", + " [-0.04500719]\n", + " [ 0.02828403]\n", + " [ 0.04121778]\n", + " [ 0.06492964]\n", + " [-0.03207344]\n", + " [-0.07626374]\n", + " [ 0.04984027]\n", + " [ 0.04552903]\n", + " [-0.00943939]\n", + " [-0.03207344]\n", + " [ 0.00457217]\n", + " [ 0.02073935]\n", + " [ 0.01427248]\n", + " [ 0.11019775]\n", + " [ 0.00133873]\n", + " [ 0.05846277]\n", + " [-0.02129532]\n", + " [-0.0105172 ]\n", + " [-0.04716281]\n", + " [ 0.00457217]\n", + " [ 0.01750591]\n", + " [ 0.08109682]\n", + " [ 0.0347509 ]\n", + " [ 0.02397278]\n", + " [-0.00836158]\n", + " [-0.06117437]\n", + " [-0.00189471]\n", + " [-0.06225218]\n", + " [ 0.0164281 ]\n", + " [ 0.09618619]\n", + " [-0.06979687]\n", + " [-0.02129532]\n", + " [-0.05362969]\n", + " [ 0.0433734 ]\n", + " [ 0.05630715]\n", + " [-0.0816528 ]\n", + " [ 0.04984027]\n", + " [ 0.11127556]\n", + " [ 0.06169621]\n", + " [ 0.01427248]\n", + " [ 0.04768465]\n", + " [ 0.01211685]\n", + " [ 0.00564998]\n", + " [ 0.04660684]\n", + " [ 0.12852056]\n", + " [ 0.05954058]\n", + " [ 0.09295276]\n", + " [ 0.01535029]\n", + " [-0.00512814]\n", + " [ 0.0703187 ]\n", + " [-0.00405033]\n", + " [-0.00081689]\n", + " [-0.04392938]\n", + " [ 0.02073935]\n", + " [ 0.06061839]\n", + " [-0.0105172 ]\n", + " [-0.03315126]\n", + " [-0.06548562]\n", + " [ 0.0433734 ]\n", + " [-0.06225218]\n", + " [ 0.06385183]\n", + " [ 0.03043966]\n", + " [ 0.07247433]\n", + " [-0.0191397 ]\n", + " [-0.06656343]\n", + " [-0.06009656]\n", + " [ 0.06924089]\n", + " [ 0.05954058]\n", + " [-0.02668438]\n", + " [-0.02021751]\n", + " [-0.046085 ]\n", + " [ 0.07139652]\n", + " [-0.07949718]\n", + " [ 0.00996123]\n", + " [-0.03854032]\n", + " [ 0.01966154]\n", + " [ 0.02720622]\n", + " [-0.00836158]\n", + " [-0.01590626]\n", + " [ 0.00457217]\n", + " [-0.04285156]\n", + " [ 0.00564998]\n", + " [-0.03530688]\n", + " [ 0.02397278]\n", + " [-0.01806189]\n", + " [ 0.04229559]\n", + " [-0.0547075 ]\n", + " [-0.00297252]\n", + " [-0.06656343]\n", + " [-0.01267283]\n", + " [-0.04177375]\n", + " [-0.03099563]\n", + " [-0.00512814]\n", + " [-0.05901875]\n", + " [ 0.0250506 ]\n", + " [-0.046085 ]\n", + " [ 0.00349435]\n", + " [ 0.05415152]\n", + " [-0.04500719]\n", + " [-0.05794093]\n", + " [-0.05578531]\n", + " [ 0.00133873]\n", + " [ 0.03043966]\n", + " [ 0.00672779]\n", + " [ 0.04660684]\n", + " [ 0.02612841]\n", + " [ 0.04552903]\n", + " [ 0.04013997]\n", + " [-0.01806189]\n", + " [ 0.01427248]\n", + " [ 0.03690653]\n", + " [ 0.00349435]\n", + " [-0.07087468]\n", + " [-0.03315126]\n", + " [ 0.09403057]\n", + " [ 0.03582872]\n", + " [ 0.03151747]\n", + " [-0.06548562]\n", + " [-0.04177375]\n", + " [-0.03961813]\n", + " [-0.03854032]\n", + " [-0.02560657]\n", + " [-0.02345095]\n", + " [-0.06656343]\n", + " [ 0.03259528]\n", + " [-0.046085 ]\n", + " [-0.02991782]\n", + " [-0.01267283]\n", + " [-0.01590626]\n", + " [ 0.07139652]\n", + " [-0.03099563]\n", + " [ 0.00026092]\n", + " [ 0.03690653]\n", + " [ 0.03906215]\n", + " [-0.01482845]\n", + " [ 0.00672779]\n", + " [-0.06871905]\n", + " [-0.00943939]\n", + " [ 0.01966154]\n", + " [ 0.07462995]\n", + " [-0.00836158]\n", + " [-0.02345095]\n", + " [-0.046085 ]\n", + " [ 0.05415152]\n", + " [-0.03530688]\n", + " [-0.03207344]\n", + " [-0.0816528 ]\n", + " [ 0.04768465]\n", + " [ 0.06061839]\n", + " [ 0.05630715]\n", + " [ 0.09834182]\n", + " [ 0.05954058]\n", + " [ 0.03367309]\n", + " [ 0.05630715]\n", + " [-0.06548562]\n", + " [ 0.16085492]\n", + " [-0.05578531]\n", + " [-0.02452876]\n", + " [-0.03638469]\n", + " [-0.00836158]\n", + " [-0.04177375]\n", + " [ 0.12744274]\n", + " [-0.07734155]\n", + " [ 0.02828403]\n", + " [-0.02560657]\n", + " [-0.06225218]\n", + " [-0.00081689]\n", + " [ 0.08864151]\n", + " [-0.03207344]\n", + " [ 0.03043966]\n", + " [ 0.00888341]\n", + " [ 0.00672779]\n", + " [-0.02021751]\n", + " [-0.02452876]\n", + " [-0.01159501]\n", + " [ 0.02612841]\n", + " [-0.05901875]\n", + " [-0.03638469]\n", + " [-0.02452876]\n", + " [ 0.01858372]\n", + " [-0.0902753 ]\n", + " [-0.00512814]\n", + " [-0.05255187]\n", + " [-0.02237314]\n", + " [-0.02021751]\n", + " [-0.0547075 ]\n", + " [-0.00620595]\n", + " [-0.01698407]\n", + " [ 0.05522933]\n", + " [ 0.07678558]\n", + " [ 0.01858372]\n", + " [-0.02237314]\n", + " [ 0.09295276]\n", + " [-0.03099563]\n", + " [ 0.03906215]\n", + " [-0.06117437]\n", + " [-0.00836158]\n", + " [-0.0374625 ]\n", + " [-0.01375064]\n", + " [ 0.07355214]\n", + " [-0.02452876]\n", + " [ 0.03367309]\n", + " [ 0.0347509 ]\n", + " [-0.03854032]\n", + " [-0.03961813]\n", + " [-0.00189471]\n", + " [-0.03099563]\n", + " [-0.046085 ]\n", + " [ 0.00133873]\n", + " [ 0.06492964]\n", + " [ 0.04013997]\n", + " [-0.02345095]\n", + " [ 0.05307371]\n", + " [ 0.04013997]\n", + " [-0.02021751]\n", + " [ 0.01427248]\n", + " [-0.03422907]\n", + " [ 0.00672779]\n", + " [ 0.00457217]\n", + " [ 0.03043966]\n", + " [ 0.0519959 ]\n", + " [ 0.06169621]\n", + " [-0.00728377]\n", + " [ 0.00564998]\n", + " [ 0.05415152]\n", + " [-0.00836158]\n", + " [ 0.114509 ]\n", + " [ 0.06708527]\n", + " [-0.05578531]\n", + " [ 0.03043966]\n", + " [-0.02560657]\n", + " [ 0.10480869]\n", + " [-0.00620595]\n", + " [-0.04716281]\n", + " [-0.04824063]\n", + " [ 0.08540807]\n", + " [-0.01267283]\n", + " [-0.03315126]\n", + " [-0.00728377]\n", + " [-0.01375064]\n", + " [ 0.05954058]\n", + " [ 0.02181716]\n", + " [ 0.01858372]\n", + " [-0.01159501]\n", + " [-0.00297252]\n", + " [ 0.01750591]\n", + " [-0.02991782]\n", + " [-0.02021751]\n", + " [-0.05794093]\n", + " [ 0.06061839]\n", + " [-0.04069594]\n", + " [-0.07195249]\n", + " [-0.05578531]\n", + " [ 0.04552903]\n", + " [-0.00943939]\n", + " [-0.03315126]\n", + " [ 0.04984027]\n", + " [-0.08488624]\n", + " [ 0.00564998]\n", + " [ 0.02073935]\n", + " [-0.00728377]\n", + " [ 0.10480869]\n", + " [-0.02452876]\n", + " [-0.00620595]\n", + " [-0.03854032]\n", + " [ 0.13714305]\n", + " [ 0.17055523]\n", + " [ 0.00241654]\n", + " [ 0.03798434]\n", + " [-0.05794093]\n", + " [-0.00943939]\n", + " [-0.02345095]\n", + " [-0.0105172 ]\n", + " [-0.03422907]\n", + " [-0.00297252]\n", + " [ 0.06816308]\n", + " [ 0.00996123]\n", + " [ 0.00241654]\n", + " [-0.03854032]\n", + " [ 0.02612841]\n", + " [-0.08919748]\n", + " [ 0.06061839]\n", + " [-0.02884001]\n", + " [-0.02991782]\n", + " [-0.0191397 ]\n", + " [-0.04069594]\n", + " [ 0.01535029]\n", + " [-0.02452876]\n", + " [ 0.00133873]\n", + " [ 0.06924089]\n", + " [-0.06979687]\n", + " [-0.02991782]\n", + " [-0.046085 ]\n", + " [ 0.01858372]\n", + " [ 0.00133873]\n", + " [-0.03099563]\n", + " [-0.00405033]\n", + " [ 0.01535029]\n", + " [ 0.02289497]\n", + " [ 0.04552903]\n", + " [-0.04500719]\n", + " [-0.03315126]\n", + " [ 0.097264 ]\n", + " [ 0.05415152]\n", + " [ 0.12313149]\n", + " [-0.08057499]\n", + " [ 0.09295276]\n", + " [-0.05039625]\n", + " [-0.01159501]\n", + " [-0.0277622 ]\n", + " [ 0.05846277]\n", + " [ 0.08540807]\n", + " [-0.00081689]\n", + " [ 0.00672779]\n", + " [ 0.00888341]\n", + " [ 0.08001901]\n", + " [ 0.07139652]\n", + " [-0.02452876]\n", + " [-0.0547075 ]\n", + " [-0.03638469]\n", + " [ 0.0164281 ]\n", + " [ 0.07786339]\n", + " [-0.03961813]\n", + " [ 0.01103904]\n", + " [-0.04069594]\n", + " [-0.03422907]\n", + " [ 0.00564998]\n", + " [ 0.08864151]\n", + " [-0.03315126]\n", + " [-0.05686312]\n", + " [-0.03099563]\n", + " [ 0.05522933]\n", + " [-0.06009656]\n", + " [ 0.00133873]\n", + " [-0.02345095]\n", + " [-0.07410811]\n", + " [ 0.01966154]\n", + " [-0.01590626]\n", + " [-0.01590626]\n", + " [ 0.03906215]\n", + " [-0.0730303 ]]\n" + ] + } + ], + "source": [ + "#Reshaping to get a 2D array\n", + "X = X.reshape(-1, 1)\n", + "print(X.shape)\n", + "print(X)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`X` ಮತ್ತು `y` ಎರಡರಿಗೂ ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ವಿಭಜಿಸಿ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಮಾದರಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ತರಬೇತಿ ಡೇಟಾದೊಂದಿಗೆ ಅದನ್ನು ಹೊಂದಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "LinearRegression()" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model = linear_model.LinearRegression()\n", + "model.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ಬಳಸಿ ಒಂದು ಸಾಲನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "y_pred = model.predict(X_test)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಫಲಿತಾಂಶಗಳನ್ನು ಒಂದು ರೇಖಾಚಿತ್ರದಲ್ಲಿ ಪ್ರದರ್ಶಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABbmUlEQVR4nO3de3wU1f0//tcQIHIxiQmBALsQUdSigNYLxn6iSaECaj/5NKTawAfRWi2IbUBRS71gtIrKp5rUj5dqK7ZfXfwAWcVS8ALuYtCIQEERvAC/cAtJoCBJQAhkc35/rLtmk92dmd2Z2ZnZ1/Px2Edl92Tm7CTd894z7/M+khBCgIiIiMhEuiW6A0RERESdMUAhIiIi02GAQkRERKbDAIWIiIhMhwEKERERmQ4DFCIiIjIdBihERERkOgxQiIiIyHS6J7oDsWhvb8f+/ftx+umnQ5KkRHeHiIiIFBBCoKWlBYMGDUK3btHnSCwZoOzfvx9OpzPR3SAiIqIY7N27Fw6HI2obSwYop59+OgD/G0xLS0twb4iIiEiJ5uZmOJ3O4DgejSUDlMBtnbS0NAYoREREFqMkPYNJskRERGQ6DFCIiIjIdBigEBERkekwQCEiIiLTYYBCREREpqMqQHn++ecxatSo4OqZvLw8rFy5Mvh6QUEBJEkKeUyfPj3kGHv27MG1116L3r17o3///rj77rvR1tamzbshIiIiW1C1zNjhcODxxx/H8OHDIYTA3/72NxQVFWHTpk04//zzAQC33norHn744eDP9O7dO/jfPp8P1157LXJycvDRRx+hvr4eN954I3r06IHHHntMo7dEREREVicJIUQ8B8jMzMSCBQtwyy23oKCgABdeeCEqKirCtl25ciWuu+467N+/HwMGDAAAvPDCC7j33ntx8OBB9OzZU9E5m5ubkZ6ejqamJtZBISIisgg143fMOSg+nw+vv/46jh07hry8vODzr732Gvr164cLLrgAc+fOxbfffht8raamBiNHjgwGJwAwfvx4NDc3Y+vWrRHP1draiubm5pAHERERac/n88Hr9WLRokXwer3w+XwJ6YfqSrJbtmxBXl4eTpw4gb59++KNN97AiBEjAACTJ0/G0KFDMWjQIHz22We499578dVXX8HtdgMAGhoaQoITAMF/NzQ0RDzn/PnzUV5errarREREpILb7UZZWRn2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X_test, y_test, color='black')\n", + "plt.plot(X_test, y_pred, color='blue', linewidth=3)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "16ff1a974f6e4348e869e4a7d366b86a", + "translation_date": "2025-12-19T16:28:35+00:00", + "source_file": "2-Regression/1-Tools/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/2-Regression/2-Data/README.md b/translations/kn/2-Regression/2-Data/README.md new file mode 100644 index 000000000..c068b83df --- /dev/null +++ b/translations/kn/2-Regression/2-Data/README.md @@ -0,0 +1,228 @@ + +# Scikit-learn ಬಳಸಿ ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ: ಡೇಟಾವನ್ನು ಸಿದ್ಧಪಡಿಸಿ ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಿ + +![ಡೇಟಾ ದೃಶ್ಯೀಕರಣ ಇನ್ಫೋಗ್ರಾಫಿಕ್](../../../../translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.kn.png) + +ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ದಾಸನಿ ಮಡಿಪಳ್ಳಿ](https://twitter.com/dasani_decoded) ಅವರಿಂದ + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ಈ ಪಾಠ R ನಲ್ಲಿ ಲಭ್ಯವಿದೆ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) + +## ಪರಿಚಯ + +Scikit-learn ಬಳಸಿ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿ ನಿರ್ಮಾಣವನ್ನು ಪ್ರಾರಂಭಿಸಲು ನೀವು ಅಗತ್ಯವಿರುವ ಸಾಧನಗಳೊಂದಿಗೆ ಸಿದ್ಧರಾಗಿರುವಾಗ, ನಿಮ್ಮ ಡೇಟಾದ ಬಗ್ಗೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಲು ನೀವು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ. ಡೇಟಾ ಜೊತೆಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಮತ್ತು ML ಪರಿಹಾರಗಳನ್ನು ಅನ್ವಯಿಸುವಾಗ, ನಿಮ್ಮ ಡೇಟಾಸೆಟ್‌ನ ಸಾಧ್ಯತೆಗಳನ್ನು ಸರಿಯಾಗಿ ಅನ್ಲಾಕ್ ಮಾಡಲು ಸರಿಯಾದ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುವುದು ಬಹಳ ಮುಖ್ಯ. + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಕಲಿಯುವಿರಿ: + +- ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಮಾದರಿ ನಿರ್ಮಾಣಕ್ಕೆ ಹೇಗೆ ಸಿದ್ಧಪಡಿಸುವುದು. +- ಡೇಟಾ ದೃಶ್ಯೀಕರಣಕ್ಕಾಗಿ Matplotlib ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು. + +## ನಿಮ್ಮ ಡೇಟಾದ ಸರಿಯಾದ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುವುದು + +ನೀವು ಉತ್ತರಿಸಬೇಕಾದ ಪ್ರಶ್ನೆ ಯಾವ ರೀತಿಯ ML ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ನೀವು ಬಳಸಬೇಕೆಂದು ನಿರ್ಧರಿಸುತ್ತದೆ. ಮತ್ತು ನೀವು ಪಡೆದ ಉತ್ತರದ ಗುಣಮಟ್ಟವು ನಿಮ್ಮ ಡೇಟಾದ ಸ್ವಭಾವದ ಮೇಲೆ ಬಹಳ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ. + +ಈ ಪಾಠಕ್ಕಾಗಿ ನೀಡಲಾದ [ಡೇಟಾ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ಅನ್ನು ನೋಡಿ. ನೀವು ಈ .csv ಫೈಲ್ ಅನ್ನು VS Code ನಲ್ಲಿ ತೆರೆಯಬಹುದು. ಒಂದು ತ್ವರಿತ ಪರಿಶೀಲನೆ ತಕ್ಷಣವೇ ಖಾಲಿ ಸ್ಥಳಗಳು ಮತ್ತು ಸ್ಟ್ರಿಂಗ್‌ಗಳು ಮತ್ತು ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾದ ಮಿಶ್ರಣವಿದೆ ಎಂದು ತೋರಿಸುತ್ತದೆ. 'Package' ಎಂಬ ವಿಚಿತ್ರ ಕಾಲಮ್ ಕೂಡ ಇದೆ, ಅಲ್ಲಿ ಡೇಟಾ 'sacks', 'bins' ಮತ್ತು ಇತರ ಮೌಲ್ಯಗಳ ಮಿಶ್ರಣವಾಗಿದೆ. ಡೇಟಾ, ವಾಸ್ತವದಲ್ಲಿ, ಸ್ವಲ್ಪ ಗೊಂದಲವಾಗಿದೆ. + +[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") + +> 🎥 ಈ ಪಾಠಕ್ಕಾಗಿ ಡೇಟಾ ಸಿದ್ಧಪಡಿಸುವುದನ್ನು ತೋರಿಸುವ ಚಿಕ್ಕ ವೀಡಿಯೋಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. + +ವಾಸ್ತವದಲ್ಲಿ, ಬಾಕ್ಸ್‌ನಿಂದಲೇ ML ಮಾದರಿಯನ್ನು ರಚಿಸಲು ಸಂಪೂರ್ಣ ಸಿದ್ಧವಾಗಿರುವ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಪಡೆಯುವುದು ಸಾಮಾನ್ಯವಲ್ಲ. ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಪೈಥಾನ್ ಲೈಬ್ರರಿಗಳನ್ನು ಬಳಸಿ ಕಚ್ಚಾ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಹೇಗೆ ಸಿದ್ಧಪಡಿಸುವುದು ಎಂದು ಕಲಿಯುತ್ತೀರಿ. ನೀವು ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವ ವಿವಿಧ ತಂತ್ರಗಳನ್ನು ಸಹ ಕಲಿಯುತ್ತೀರಿ. + +## ಪ್ರಕರಣ ಅಧ್ಯಯನ: 'ಪಂಪ್ಕಿನ್ ಮಾರುಕಟ್ಟೆ' + +ಈ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ನೀವು ಮೂಲ `data` ಫೋಲ್ಡರ್‌ನಲ್ಲಿ [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ಎಂಬ .csv ಫೈಲ್ ಅನ್ನು ಕಾಣಬಹುದು, ಇದರಲ್ಲಿ ನಗರಗಳ ಪ್ರಕಾರ ಗುಂಪುಮಾಡಲಾದ ಪಂಪ್ಕಿನ್ ಮಾರುಕಟ್ಟೆಯ ಬಗ್ಗೆ 1757 ಸಾಲುಗಳ ಡೇಟಾ ಇದೆ. ಇದು ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ ಡಿಪಾರ್ಟ್‌ಮೆಂಟ್ ಆಫ್ ಅಗ್ರಿಕಲ್ಚರ್ ವಿತರಿಸುವ [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) ನಿಂದ ತೆಗೆದ ಕಚ್ಚಾ ಡೇಟಾ. + +### ಡೇಟಾ ಸಿದ್ಧಪಡಿಸುವುದು + +ಈ ಡೇಟಾ ಸಾರ್ವಜನಿಕ ಡೊಮೇನ್‌ನಲ್ಲಿ ಇದೆ. ಇದನ್ನು USDA ವೆಬ್‌ಸೈಟ್‌ನಿಂದ ಪ್ರತಿ ನಗರಕ್ಕೆ ಪ್ರತ್ಯೇಕ ಫೈಲ್‌ಗಳಾಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು. ಬಹಳಷ್ಟು ಪ್ರತ್ಯೇಕ ಫೈಲ್‌ಗಳನ್ನು ತಪ್ಪಿಸಲು, ನಾವು ಎಲ್ಲಾ ನಗರಗಳ ಡೇಟಾವನ್ನು ಒಂದೇ ಸ್ಪ್ರೆಡ್ಶೀಟ್‌ಗೆ ಸಂಯೋಜಿಸಿದ್ದೇವೆ, ಆದ್ದರಿಂದ ನಾವು ಡೇಟಾವನ್ನು ಸ್ವಲ್ಪ _ಸಿದ್ಧಪಡಿಸಿದ್ದೇವೆ_. ಮುಂದಿನದಾಗಿ, ಡೇಟಾವನ್ನು ನಿಕಟವಾಗಿ ನೋಡೋಣ. + +### ಪಂಪ್ಕಿನ್ ಡೇಟಾ - ಪ್ರಾಥಮಿಕ ನಿರ್ಣಯಗಳು + +ನೀವು ಈ ಡೇಟಾದ ಬಗ್ಗೆ ಏನು ಗಮನಿಸುತ್ತೀರಿ? ನೀವು ಈಗಾಗಲೇ ಸ್ಟ್ರಿಂಗ್‌ಗಳು, ಸಂಖ್ಯೆಗಳು, ಖಾಲಿ ಸ್ಥಳಗಳು ಮತ್ತು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾದ ವಿಚಿತ್ರ ಮೌಲ್ಯಗಳ ಮಿಶ್ರಣವಿದೆ ಎಂದು ನೋಡಿದ್ದೀರಿ. + +ನೀವು Regression ತಂತ್ರವನ್ನು ಬಳಸಿ ಈ ಡೇಟಾದಿಂದ ಯಾವ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳಬಹುದು? "ನಿಗದಿತ ತಿಂಗಳಲ್ಲಿ ಮಾರಾಟಕ್ಕೆ ಇರುವ ಪಂಪ್ಕಿನ್‌ನ ಬೆಲೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡು" ಎಂದು ಯೋಚಿಸಿ. ಡೇಟಾವನ್ನು ಮತ್ತೆ ನೋಡಿದಾಗ, ಈ ಕಾರ್ಯಕ್ಕೆ ಅಗತ್ಯವಿರುವ ಡೇಟಾ ರಚನೆಯನ್ನು ರಚಿಸಲು ನೀವು ಕೆಲವು ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಬೇಕಾಗುತ್ತದೆ. + +## ಅಭ್ಯಾಸ - ಪಂಪ್ಕಿನ್ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸಿ + +ನಾವು [Pandas](https://pandas.pydata.org/) (ಹೆಸರು `Python Data Analysis` ನ ಸಂಕ್ಷಿಪ್ತ) ಎಂಬ ಡೇಟಾ ರೂಪಿಸುವುದಕ್ಕೆ ಬಹಳ ಉಪಯುಕ್ತವಾದ ಸಾಧನವನ್ನು ಬಳಸಿ ಈ ಪಂಪ್ಕಿನ್ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಮತ್ತು ಸಿದ್ಧಪಡಿಸೋಣ. + +### ಮೊದಲು, ಕಳೆದುಹೋಗಿರುವ ದಿನಾಂಕಗಳನ್ನು ಪರಿಶೀಲಿಸಿ + +ನೀವು ಮೊದಲು ಕಳೆದುಹೋಗಿರುವ ದಿನಾಂಕಗಳಿಗಾಗಿ ಕ್ರಮಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ: + +1. ದಿನಾಂಕಗಳನ್ನು ತಿಂಗಳ ಫಾರ್ಮ್ಯಾಟ್‌ಗೆ ಪರಿವರ್ತಿಸಿ (ಇವು US ದಿನಾಂಕಗಳು, ಆದ್ದರಿಂದ ಫಾರ್ಮ್ಯಾಟ್ `MM/DD/YYYY` ಆಗಿದೆ). +2. ತಿಂಗಳನ್ನೂ ಹೊಸ ಕಾಲಮ್‌ಗೆ ಹೊರತೆಗೆಯಿರಿ. + +Visual Studio Code ನಲ್ಲಿ _notebook.ipynb_ ಫೈಲ್ ತೆರೆಯಿರಿ ಮತ್ತು ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಅನ್ನು ಹೊಸ Pandas ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಆಮದುಮಾಡಿ. + +1. ಮೊದಲ ಐದು ಸಾಲುಗಳನ್ನು ನೋಡಲು `head()` ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸಿ. + + ```python + import pandas as pd + pumpkins = pd.read_csv('../data/US-pumpkins.csv') + pumpkins.head() + ``` + + ✅ ಕೊನೆಯ ಐದು ಸಾಲುಗಳನ್ನು ನೋಡಲು ನೀವು ಯಾವ ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸುತ್ತೀರಿ? + +1. ಪ್ರಸ್ತುತ ಡೇಟಾಫ್ರೇಮ್‌ನಲ್ಲಿ ಕಳೆದುಹೋಗಿರುವ ಡೇಟಾ ಇದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ: + + ```python + pumpkins.isnull().sum() + ``` + + ಕಳೆದುಹೋಗಿರುವ ಡೇಟಾ ಇದೆ, ಆದರೆ ಅದು ಈ ಕಾರ್ಯಕ್ಕೆ ಪ್ರಭಾವ ಬೀರುವುದಿಲ್ಲದಿರಬಹುದು. + +1. ನಿಮ್ಮ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಸುಲಭವಾಗಿ ಕೆಲಸ ಮಾಡಲು, ನೀವು ಬೇಕಾದ ಕಾಲಮ್‌ಗಳನ್ನು ಮಾತ್ರ ಆಯ್ಕೆಮಾಡಿ, `loc` ಫಂಕ್ಷನ್ ಬಳಸಿ, ಇದು ಮೂಲ ಡೇಟಾಫ್ರೇಮ್‌ನಿಂದ ಸಾಲುಗಳ ಗುಂಪು (ಮೊದಲ ಪ್ಯಾರಾಮೀಟರ್ ಆಗಿ) ಮತ್ತು ಕಾಲಮ್‌ಗಳನ್ನು (ಎರಡನೇ ಪ್ಯಾರಾಮೀಟರ್ ಆಗಿ) ಹೊರತೆಗೆಯುತ್ತದೆ. ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ `:` ಅಂದರೆ "ಎಲ್ಲಾ ಸಾಲುಗಳು". + + ```python + columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] + pumpkins = pumpkins.loc[:, columns_to_select] + ``` + +### ಎರಡನೇದು, ಪಂಪ್ಕಿನ್‌ನ ಸರಾಸರಿ ಬೆಲೆಯನ್ನು ನಿರ್ಧರಿಸಿ + +ನಿಗದಿತ ತಿಂಗಳಲ್ಲಿ ಪಂಪ್ಕಿನ್‌ನ ಸರಾಸರಿ ಬೆಲೆಯನ್ನು ಹೇಗೆ ನಿರ್ಧರಿಸುವುದು ಎಂದು ಯೋಚಿಸಿ. ಈ ಕಾರ್ಯಕ್ಕೆ ನೀವು ಯಾವ ಕಾಲಮ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತೀರಿ? ಸೂಚನೆ: ನಿಮಗೆ 3 ಕಾಲಮ್‌ಗಳು ಬೇಕಾಗುತ್ತವೆ. + +ಉತ್ತರ: `Low Price` ಮತ್ತು `High Price` ಕಾಲಮ್‌ಗಳ ಸರಾಸರಿ ತೆಗೆದು ಹೊಸ `Price` ಕಾಲಮ್ ಅನ್ನು ತುಂಬಿಸಿ, ಮತ್ತು `Date` ಕಾಲಮ್ ಅನ್ನು ತಿಂಗಳಷ್ಟೇ ತೋರಿಸುವಂತೆ ಪರಿವರ್ತಿಸಿ. ಮೇಲಿನ ಪರಿಶೀಲನೆಯ ಪ್ರಕಾರ, ದಿನಾಂಕಗಳು ಅಥವಾ ಬೆಲೆಗಳಿಗೆ ಯಾವುದೇ ಕಳೆದುಹೋಗಿರುವ ಡೇಟಾ ಇಲ್ಲ. + +1. ಸರಾಸರಿ ಲೆಕ್ಕಿಸಲು ಕೆಳಗಿನ ಕೋಡ್ ಸೇರಿಸಿ: + + ```python + price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 + + month = pd.DatetimeIndex(pumpkins['Date']).month + + ``` + + ✅ ನೀವು `print(month)` ಬಳಸಿ ಯಾವುದೇ ಡೇಟಾವನ್ನು ಪರಿಶೀಲಿಸಲು ಮುಕ್ತವಾಗಿರಿ. + +2. ಈಗ, ನಿಮ್ಮ ಪರಿವರ್ತಿತ ಡೇಟಾವನ್ನು ಹೊಸ Pandas ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ನಕಲಿಸಿ: + + ```python + new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) + ``` + + ನಿಮ್ಮ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಮುದ್ರಿಸಿದರೆ, ನೀವು ಹೊಸ ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಶುದ್ಧ, ವ್ಯವಸ್ಥಿತ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಕಾಣುತ್ತೀರಿ. + +### ಆದರೆ ಕಾಯಿರಿ! ಇಲ್ಲಿ ಒಂದು ವಿಚಿತ್ರ ವಿಷಯವಿದೆ + +ನೀವು `Package` ಕಾಲಮ್ ನೋಡಿದರೆ, ಪಂಪ್ಕಿನ್‌ಗಳು ವಿವಿಧ ರೂಪಗಳಲ್ಲಿ ಮಾರಾಟವಾಗುತ್ತಿವೆ. ಕೆಲವು '1 1/9 bushel' ಅಳತೆಯಲ್ಲಿ, ಕೆಲವು '1/2 bushel' ಅಳತೆಯಲ್ಲಿ, ಕೆಲವು ಪ್ರತಿ ಪಂಪ್ಕಿನ್, ಕೆಲವು ಪ್ರತಿ ಪೌಂಡ್, ಮತ್ತು ಕೆಲವು ಬೃಹತ್ ಬಾಕ್ಸ್‌ಗಳಲ್ಲಿ ವಿವಿಧ ಅಗಲಗಳೊಂದಿಗೆ ಮಾರಾಟವಾಗುತ್ತವೆ. + +> ಪಂಪ್ಕಿನ್‌ಗಳನ್ನು ಸತತವಾಗಿ ತೂಕಮಾಪನ ಮಾಡುವುದು ಬಹಳ ಕಷ್ಟ. + +ಮೂಲ ಡೇಟಾವನ್ನು ಪರಿಶೀಲಿಸಿದಾಗ, `Unit of Sale` 'EACH' ಅಥವಾ 'PER BIN' ಆಗಿರುವ ಯಾವುದೇ ಐಟಂಗಳು `Package` ಪ್ರಕಾರ ಇಂಚು, ಬಿನ್ ಅಥವಾ 'each' ಆಗಿವೆ. ಪಂಪ್ಕಿನ್‌ಗಳನ್ನು ಸತತವಾಗಿ ತೂಕಮಾಪನ ಮಾಡುವುದು ಕಷ್ಟವಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ನಾವು `Package` ಕಾಲಮ್‌ನಲ್ಲಿ 'bushel' ಸ್ಟ್ರಿಂಗ್ ಇರುವ ಪಂಪ್ಕಿನ್‌ಗಳನ್ನು ಮಾತ್ರ ಆಯ್ಕೆಮಾಡಿ ಫಿಲ್ಟರ್ ಮಾಡೋಣ. + +1. ಫೈಲ್‌ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ, ಪ್ರಾಥಮಿಕ .csv ಆಮದುಮಾಡಿದ ನಂತರ ಫಿಲ್ಟರ್ ಸೇರಿಸಿ: + + ```python + pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] + ``` + + ನೀವು ಈಗ ಡೇಟಾವನ್ನು ಮುದ್ರಿಸಿದರೆ, ನೀವು ಬಸ್ಸೆಲ್ ಮೂಲಕ ಮಾರಾಟವಾಗುವ ಸುಮಾರು 415 ಸಾಲುಗಳ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಪಡೆಯುತ್ತಿರುವಿರಿ ಎಂದು ಕಾಣಬಹುದು. + +### ಆದರೆ ಕಾಯಿರಿ! ಇನ್ನೂ ಒಂದು ಕೆಲಸ ಮಾಡಬೇಕಿದೆ + +ನೀವು ಗಮನಿಸಿದ್ದೀರಾ, ಬಸ್ಸೆಲ್ ಪ್ರಮಾಣವು ಪ್ರತಿ ಸಾಲಿಗೆ ಬದಲಾಗುತ್ತದೆ? ನೀವು ಬೆಲೆಯನ್ನು ಪ್ರತಿ ಬಸ್ಸೆಲ್ ಪ್ರಕಾರ ಸಾಮಾನ್ಯೀಕರಿಸಬೇಕಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದನ್ನು ಮಾನಕೀಕರಿಸಲು ಕೆಲವು ಗಣಿತ ಮಾಡಿ. + +1. ಹೊಸ `new_pumpkins` ಡೇಟಾಫ್ರೇಮ್ ರಚನೆಯ ನಂತರ ಈ ಸಾಲುಗಳನ್ನು ಸೇರಿಸಿ: + + ```python + new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) + + new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) + ``` + +✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) ಪ್ರಕಾರ, ಬಸ್ಸೆಲ್ ತೂಕವು ಉತ್ಪನ್ನದ ಪ್ರಕಾರ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ, ಏಕೆಂದರೆ ಇದು ಪ್ರಮಾಣದ ಅಳತೆ. "ಉದಾಹರಣೆಗೆ, ಟೊಮೇಟೋಗಳ ಒಂದು ಬಸ್ಸೆಲ್ 56 ಪೌಂಡ್ ತೂಕವಾಗಿರಬೇಕು... ಎಲೆಗಳು ಮತ್ತು ಹಸಿರುಗಳು ಕಡಿಮೆ ತೂಕದೊಂದಿಗೆ ಹೆಚ್ಚು ಜಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತವೆ, ಆದ್ದರಿಂದ ಸ್ಪಿನಾಚ್‌ನ ಒಂದು ಬಸ್ಸೆಲ್ ಕೇವಲ 20 ಪೌಂಡ್." ಇದು ಬಹಳ ಸಂಕೀರ್ಣವಾಗಿದೆ! ಬಸ್ಸೆಲ್-ನಿಂದ-ಪೌಂಡ್ ಪರಿವರ್ತನೆ ಮಾಡಲು ಪ್ರಯತ್ನಿಸದೆ, ಬಸ್ಸೆಲ್ ಪ್ರಕಾರ ಬೆಲೆಯನ್ನು ನಿರ್ಧರಿಸೋಣ. ಈ ಪಂಪ್ಕಿನ್ ಬಸ್ಸೆಲ್ ಅಧ್ಯಯನವು ನಿಮ್ಮ ಡೇಟಾದ ಸ್ವಭಾವವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಎಷ್ಟು ಮುಖ್ಯವೋ ತೋರಿಸುತ್ತದೆ! + +ಈಗ, ನೀವು ಬಸ್ಸೆಲ್ ಅಳತೆಯ ಆಧಾರದ ಮೇಲೆ ಪ್ರತಿ ಘಟಕದ ಬೆಲೆಯನ್ನು ವಿಶ್ಲೇಷಿಸಬಹುದು. ನೀವು ಡೇಟಾವನ್ನು ಮತ್ತೊಮ್ಮೆ ಮುದ್ರಿಸಿದರೆ, ಅದು ಹೇಗೆ ಮಾನಕೀಕೃತವಾಗಿದೆ ಎಂದು ಕಾಣಬಹುದು. + +✅ ನೀವು ಗಮನಿಸಿದ್ದೀರಾ, ಅರ್ಧ ಬಸ್ಸೆಲ್ ಮೂಲಕ ಮಾರಾಟವಾಗುವ ಪಂಪ್ಕಿನ್‌ಗಳು ಬಹಳ ದುಬಾರಿ? ನೀವು ಏಕೆ ಎಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದೇ? ಸೂಚನೆ: ಸಣ್ಣ ಪಂಪ್ಕಿನ್‌ಗಳು ದೊಡ್ಡದಿಗಿಂತ ಬಹಳ ಹೆಚ್ಚು ಬೆಲೆಯಿವೆ, ಬಹುಶಃ ಒಂದು ದೊಡ್ಡ ಹೊಳೆಯುವ ಪೈ ಪಂಪ್ಕಿನ್ ತೆಗೆದುಕೊಳ್ಳುವ ಅನವಶ್ಯಕ ಜಾಗದಿಂದಾಗಿ ಪ್ರತಿ ಬಸ್ಸೆಲ್‌ನಲ್ಲಿ ಅವುಗಳ ಸಂಖ್ಯೆ ಹೆಚ್ಚು ಇರುವ ಕಾರಣ. + +## ದೃಶ್ಯೀಕರಣ ತಂತ್ರಗಳು + +ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಪಾತ್ರದ ಒಂದು ಭಾಗವೆಂದರೆ ಅವರು ಕೆಲಸ ಮಾಡುತ್ತಿರುವ ಡೇಟಾದ ಗುಣಮಟ್ಟ ಮತ್ತು ಸ್ವಭಾವವನ್ನು ಪ್ರದರ್ಶಿಸುವುದು. ಇದಕ್ಕಾಗಿ, ಅವರು ವಿವಿಧ ಅಂಶಗಳನ್ನು ತೋರಿಸುವ ಆಸಕ್ತಿದಾಯಕ ದೃಶ್ಯೀಕರಣಗಳು, ಪ್ಲಾಟ್‌ಗಳು, ಗ್ರಾಫ್‌ಗಳು ಮತ್ತು ಚಾರ್ಟ್‌ಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತಾರೆ. ಈ ರೀತಿಯಲ್ಲಿ, ಅವರು ದೃಶ್ಯವಾಗಿ ಸಂಬಂಧಗಳು ಮತ್ತು ಗ್ಯಾಪ್‌ಗಳನ್ನು ತೋರಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಅವುಗಳನ್ನು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಕಂಡುಹಿಡಿಯುವುದು ಕಷ್ಟ. + +[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") + +> 🎥 ಈ ಪಾಠಕ್ಕಾಗಿ ಡೇಟಾ ದೃಶ್ಯೀಕರಣವನ್ನು ತೋರಿಸುವ ಚಿಕ್ಕ ವೀಡಿಯೋಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. + +ದೃಶ್ಯೀಕರಣಗಳು ಡೇಟಾದಿಗೆ ಅತ್ಯಂತ ಸೂಕ್ತ ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರವನ್ನು ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು. ಉದಾಹರಣೆಗೆ, ಒಂದು ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ಒಂದು ರೇಖೆಯನ್ನು ಅನುಸರಿಸುವಂತೆ ತೋರುತ್ತದೆ ಎಂದರೆ, ಡೇಟಾ ಲೀನಿಯರ್ ರೆಗ್ರೆಶನ್ ಅಭ್ಯಾಸಕ್ಕೆ ಉತ್ತಮ ಅಭ್ಯರ್ಥಿ ಎಂದು ಸೂಚಿಸುತ್ತದೆ. + +Jupyter ನೋಟ್ಬುಕ್‌ಗಳಲ್ಲಿ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡುವ ಒಂದು ಡೇಟಾ ದೃಶ್ಯೀಕರಣ ಲೈಬ್ರರಿ [Matplotlib](https://matplotlib.org/) ಆಗಿದೆ (ನೀವು ಹಿಂದಿನ ಪಾಠದಲ್ಲಿಯೂ ಇದನ್ನು ನೋಡಿದ್ದೀರಿ). + +> [ಈ ಟ್ಯುಟೋರಿಯಲ್‌ಗಳಲ್ಲಿ](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) ಡೇಟಾ ದೃಶ್ಯೀಕರಣದ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಅನುಭವ ಪಡೆಯಿರಿ. + +## ಅಭ್ಯಾಸ - Matplotlib ಜೊತೆ ಪ್ರಯೋಗ ಮಾಡಿ + +ನೀವು ಈಗ ರಚಿಸಿದ ಹೊಸ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಪ್ರದರ್ಶಿಸಲು ಕೆಲವು ಮೂಲ ಪ್ಲಾಟ್‌ಗಳನ್ನು ರಚಿಸಲು ಪ್ರಯತ್ನಿಸಿ. ಮೂಲ ರೇಖಾ ಪ್ಲಾಟ್ ಏನು ತೋರಿಸುತ್ತದೆ? + +1. ಫೈಲ್‌ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ, Pandas ಆಮದುಮಾಡಿದ ನಂತರ Matplotlib ಅನ್ನು ಆಮದುಮಾಡಿ: + + ```python + import matplotlib.pyplot as plt + ``` + +1. ಸಂಪೂರ್ಣ ನೋಟ್ಬುಕ್ ಅನ್ನು ಮರುನಡೆಸಿ. +1. ನೋಟ್ಬುಕ್‌ನ ಕೆಳಭಾಗದಲ್ಲಿ, ಡೇಟಾವನ್ನು ಬಾಕ್ಸ್ ಆಗಿ ಪ್ಲಾಟ್ ಮಾಡಲು ಒಂದು ಸೆಲ್ ಸೇರಿಸಿ: + + ```python + price = new_pumpkins.Price + month = new_pumpkins.Month + plt.scatter(price, month) + plt.show() + ``` + + ![ಬೆಲೆ ಮತ್ತು ತಿಂಗಳ ಸಂಬಂಧವನ್ನು ತೋರಿಸುವ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್](../../../../translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.kn.png) + + ಇದು ಉಪಯುಕ್ತವಾದ ಪ್ಲಾಟ್ ಆಗಿದೆಯೇ? ಇದರಲ್ಲಿ ಏನಾದರೂ ನಿಮಗೆ ಆಶ್ಚರ್ಯಕರವೇ? + + ಇದು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಲ್ಲ, ಏಕೆಂದರೆ ಇದು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ನಿಗದಿತ ತಿಂಗಳಲ್ಲಿ ಬಿಂದುಗಳ ವಿಸ್ತಾರವಾಗಿ ಮಾತ್ರ ಪ್ರದರ್ಶಿಸುತ್ತದೆ. + +### ಅದನ್ನು ಉಪಯುಕ್ತವಾಗಿಸೋಣ + +ಉಪಯುಕ್ತ ಡೇಟಾ ಪ್ರದರ್ಶನಕ್ಕಾಗಿ, ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ಡೇಟಾವನ್ನು ಗುಂಪುಮಾಡಬೇಕಾಗುತ್ತದೆ. ತಿಂಗಳುಗಳನ್ನು y ಅಕ್ಷದಲ್ಲಿ ತೋರಿಸುವ ಮತ್ತು ಡೇಟಾ ವಿತರಣೆ ತೋರಿಸುವ ಪ್ಲಾಟ್ ರಚಿಸಲು ಪ್ರಯತ್ನಿಸೋಣ. + +1. ಗುಂಪುಮಾಡಲಾದ ಬಾರ್ ಚಾರ್ಟ್ ರಚಿಸಲು ಒಂದು ಸೆಲ್ ಸೇರಿಸಿ: + + ```python + new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') + plt.ylabel("Pumpkin Price") + ``` + + ![ಬೆಲೆ ಮತ್ತು ತಿಂಗಳ ಸಂಬಂಧವನ್ನು ತೋರಿಸುವ ಬಾರ್ ಚಾರ್ಟ್](../../../../translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.kn.png) + + ಇದು ಹೆಚ್ಚು ಉಪಯುಕ್ತ ಡೇಟಾ ದೃಶ್ಯೀಕರಣ! ಇದು ಪಂಪ್ಕಿನ್‌ಗಳ ಅತ್ಯಧಿಕ ಬೆಲೆ ಸೆಪ್ಟೆಂಬರ್ ಮತ್ತು ಅಕ್ಟೋಬರ್ ತಿಂಗಳಲ್ಲಿ ಸಂಭವಿಸುತ್ತದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ. ಇದು ನಿಮ್ಮ ನಿರೀಕ್ಷೆಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆಯೇ? ಏಕೆ ಅಥವಾ ಏಕೆ ಅಲ್ಲ? + +--- + +## 🚀ಸವಾಲು + +Matplotlib ನೀಡುವ ವಿವಿಧ ದೃಶ್ಯೀಕರಣ ಪ್ರಕಾರಗಳನ್ನು ಅನ್ವೇಷಿಸಿ. ರೆಗ್ರೆಶನ್ ಸಮಸ್ಯೆಗಳಿಗೆ ಯಾವ ಪ್ರಕಾರಗಳು ಅತ್ಯಂತ ಸೂಕ್ತ? + +## [ಪೋಸ್ಟ್-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವ ಅನೇಕ ವಿಧಾನಗಳನ್ನು ನೋಡಿ. ಲಭ್ಯವಿರುವ ವಿವಿಧ ಲೈಬ್ರರಿಗಳ ಪಟ್ಟಿ ಮಾಡಿ ಮತ್ತು ಯಾವವು ಯಾವ ಕಾರ್ಯಗಳಿಗೆ ಉತ್ತಮ ಎಂದು ಗಮನಿಸಿ, ಉದಾಹರಣೆಗೆ 2D ದೃಶ್ಯೀಕರಣಗಳು ಮತ್ತು 3D ದೃಶ್ಯೀಕರಣಗಳು. ನೀವು ಏನು ಕಂಡುಹಿಡಿದಿರಿ? + +## ನಿಯೋಜನೆ + +[ದೃಶ್ಯೀಕರಣ ಅನ್ವೇಷಣೆ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/2-Data/assignment.md b/translations/kn/2-Regression/2-Data/assignment.md new file mode 100644 index 000000000..25ea630b1 --- /dev/null +++ b/translations/kn/2-Regression/2-Data/assignment.md @@ -0,0 +1,25 @@ + +# ದೃಶ್ಯೀಕರಣಗಳನ್ನು ಅನ್ವೇಷಿಸುವುದು + +ಡೇಟಾ ದೃಶ್ಯೀಕರಣಕ್ಕಾಗಿ ಲಭ್ಯವಿರುವ ಹಲವು ವಿಭಿನ್ನ ಗ್ರಂಥಾಲಯಗಳಿವೆ. ಈ ಪಾಠದಲ್ಲಿ ಪಂಪ್ಕಿನ್ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು matplotlib ಮತ್ತು seaborn ಬಳಸಿ ಕೆಲವು ದೃಶ್ಯೀಕರಣಗಳನ್ನು ಸೃಷ್ಟಿಸಿ ಒಂದು ಮಾದರಿ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ. ಯಾವ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಬಳಸುವುದು ಸುಲಭವಾಗಿದೆ? + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡ | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | --------- | -------- | ----------------- | +| | ಎರಡು ಅನ್ವೇಷಣೆಗಳು/ದೃಶ್ಯೀಕರಣಗಳೊಂದಿಗೆ ನೋಟ್ಬುಕ್ ಸಲ್ಲಿಸಲಾಗಿದೆ | ಒಂದು ಅನ್ವೇಷಣೆ/ದೃಶ್ಯೀಕರಣದೊಂದಿಗೆ ನೋಟ್ಬುಕ್ ಸಲ್ಲಿಸಲಾಗಿದೆ | ನೋಟ್ಬುಕ್ ಸಲ್ಲಿಸಲಾಗಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/2-Data/notebook.ipynb b/translations/kn/2-Regression/2-Data/notebook.ipynb new file mode 100644 index 000000000..84fdd36a0 --- /dev/null +++ b/translations/kn/2-Regression/2-Data/notebook.ipynb @@ -0,0 +1,46 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3-final" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python3", + "display_name": "Python 3", + "language": "python" + }, + "coopTranslator": { + "original_hash": "1b2ab303ac6c604a34c6ca7a49077fc7", + "translation_date": "2025-12-19T16:18:17+00:00", + "source_file": "2-Regression/2-Data/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕಾರ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/2-Regression/2-Data/solution/Julia/README.md b/translations/kn/2-Regression/2-Data/solution/Julia/README.md new file mode 100644 index 000000000..dde7f3625 --- /dev/null +++ b/translations/kn/2-Regression/2-Data/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/2-Data/solution/R/lesson_2-R.ipynb b/translations/kn/2-Regression/2-Data/solution/R/lesson_2-R.ipynb new file mode 100644 index 000000000..a1449382f --- /dev/null +++ b/translations/kn/2-Regression/2-Data/solution/R/lesson_2-R.ipynb @@ -0,0 +1,673 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_2-R.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "f3c335f9940cfd76528b3ef918b9b342", + "translation_date": "2025-12-19T16:36:33+00:00", + "source_file": "2-Regression/2-Data/solution/R/lesson_2-R.ipynb", + "language_code": "kn" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ: ಡೇಟಾವನ್ನು ಸಿದ್ಧಪಡಿಸಿ ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಿ\n", + "\n", + "## **ಕುಂಬಳಕಾಯಿ ಗಾಗಿ ರೇಖೀಯ ರಿಗ್ರೆಶನ್ - ಪಾಠ 2**\n", + "#### ಪರಿಚಯ\n", + "\n", + "ನೀವು ಈಗ Tidymodels ಮತ್ತು Tidyverse ಬಳಸಿ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿ ನಿರ್ಮಾಣವನ್ನು ಪ್ರಾರಂಭಿಸಲು ಅಗತ್ಯವಿರುವ ಸಾಧನಗಳೊಂದಿಗೆ ಸಜ್ಜಾಗಿದ್ದೀರಿ, ನೀವು ನಿಮ್ಮ ಡೇಟಾದ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಲು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ. ನೀವು ಡೇಟಾ ಜೊತೆ ಕೆಲಸಮಾಡಿ ML ಪರಿಹಾರಗಳನ್ನು ಅನ್ವಯಿಸುವಾಗ, ನಿಮ್ಮ ಡೇಟಾಸೆಟ್‌ನ ಸಾಧ್ಯತೆಗಳನ್ನು ಸರಿಯಾಗಿ ಅನ್ಲಾಕ್ ಮಾಡಲು ಸರಿಯಾದ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುವುದು ಬಹಳ ಮುಖ್ಯ.\n", + "\n", + "ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಕಲಿಯುವಿರಿ:\n", + "\n", + "- ನಿಮ್ಮ ಮಾದರಿ ನಿರ್ಮಾಣಕ್ಕಾಗಿ ಡೇಟಾವನ್ನು ಹೇಗೆ ಸಿದ್ಧಪಡಿಸುವುದು.\n", + "\n", + "- ಡೇಟಾ ದೃಶ್ಯೀಕರಣಕ್ಕಾಗಿ `ggplot2` ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು.\n", + "\n", + "ನೀವು ಉತ್ತರಿಸಬೇಕಾದ ಪ್ರಶ್ನೆ ಯಾವ ರೀತಿಯ ML ಆಲ್ಗಾರಿದಮ್ಗಳನ್ನು ನೀವು ಬಳಸಬೇಕೆಂದು ನಿರ್ಧರಿಸುತ್ತದೆ. ಮತ್ತು ನೀವು ಪಡೆಯುವ ಉತ್ತರದ ಗುಣಮಟ್ಟವು ನಿಮ್ಮ ಡೇಟಾದ ಸ್ವಭಾವದ ಮೇಲೆ ಬಹಳ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ.\n", + "\n", + "ಪ್ರಾಯೋಗಿಕ ವ್ಯಾಯಾಮದ ಮೂಲಕ ಇದನ್ನು ನೋಡೋಣ.\n", + "\n", + "\n", + "

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

ಕಲಾಕೃತಿ @allison_horst ಅವರಿಂದ
\n" + ], + "metadata": { + "id": "Pg5aexcOPqAZ" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 1. ಕಂಬಳಿಯ ಡೇಟಾವನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಟಿಡಿವರ್ಸ್ ಅನ್ನು ಕರೆಸಿಕೊಳ್ಳುವುದು\n", + "\n", + "ನಾವು ಈ ಪಾಠವನ್ನು ಕತ್ತರಿಸಲು ಮತ್ತು ವಿಶ್ಲೇಷಿಸಲು ಕೆಳಗಿನ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಅಗತ್ಯವಿದೆ:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) ಒಂದು [R ಪ್ಯಾಕೇಜುಗಳ ಸಂಗ್ರಹ](https://www.tidyverse.org/packages) ಆಗಿದ್ದು, ಡೇಟಾ ವಿಜ್ಞಾನವನ್ನು ವೇಗವಾಗಿ, ಸುಲಭವಾಗಿ ಮತ್ತು ಹೆಚ್ಚು ಮನರಂಜನೀಯವಾಗಿ ಮಾಡುತ್ತದೆ!\n", + "\n", + "ನೀವು ಅವುಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬಹುದು:\n", + "\n", + "`install.packages(c(\"tidyverse\"))`\n", + "\n", + "ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ಈ ಘಟಕವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜುಗಳಿದ್ದಾರೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಕೆಲವು ಇಲ್ಲದಿದ್ದರೆ ಅವುಗಳನ್ನು ನಿಮ್ಮಿಗಾಗಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ.\n" + ], + "metadata": { + "id": "dc5WhyVdXAjR" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n", + "pacman::p_load(tidyverse)" + ], + "outputs": [], + "metadata": { + "id": "GqPYUZgfXOBt" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಈಗ, ಕೆಲವು ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಈ ಪಾಠಕ್ಕಾಗಿ ನೀಡಲಾದ [ಡೇಟಾ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ಅನ್ನು ಲೋಡ್ ಮಾಡೋಣ!\n" + ], + "metadata": { + "id": "kvjDTPDSXRr2" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load the core Tidyverse packages\n", + "library(tidyverse)\n", + "\n", + "# Import the pumpkins data\n", + "pumpkins <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/2-Regression/data/US-pumpkins.csv\")\n", + "\n", + "\n", + "# Get a glimpse and dimensions of the data\n", + "glimpse(pumpkins)\n", + "\n", + "\n", + "# Print the first 50 rows of the data set\n", + "pumpkins %>% \n", + " slice_head(n =50)" + ], + "outputs": [], + "metadata": { + "id": "VMri-t2zXqgD" + } + }, + { + "cell_type": "markdown", + "source": [ + "ತಕ್ಷಣದ `glimpse()` ತೋರಿಸುತ್ತದೆ ಎಂದು ಖಾಲಿ ಸ್ಥಳಗಳಿವೆ ಮತ್ತು ಸ್ಟ್ರಿಂಗ್‌ಗಳು (`chr`) ಮತ್ತು ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾ (`dbl`) ಮಿಶ್ರಣವಿದೆ. `Date` ಪ್ರಕಾರವು ಕ್ಯಾರಕ್ಟರ್ ಆಗಿದ್ದು, `Package` ಎಂಬ ವಿಚಿತ್ರ ಕಾಲಮ್ ಕೂಡ ಇದೆ, ಅಲ್ಲಿ ಡೇಟಾ `sacks`, `bins` ಮತ್ತು ಇತರ ಮೌಲ್ಯಗಳ ಮಿಶ್ರಣವಾಗಿದೆ. ವಾಸ್ತವದಲ್ಲಿ, ಡೇಟಾ ಸ್ವಲ್ಪ ಗೊಂದಲವಾಗಿದೆ 😤.\n", + "\n", + "ವಾಸ್ತವದಲ್ಲಿ, ಬಾಕ್ಸ್‌ನಿಂದಲೇ ML ಮಾದರಿಯನ್ನು ರಚಿಸಲು ಸಂಪೂರ್ಣವಾಗಿ ಸಿದ್ಧವಾಗಿರುವ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಪಡೆಯುವುದು ಸಾಮಾನ್ಯವಲ್ಲ. ಆದರೆ ಚಿಂತೆ ಮಾಡಬೇಡಿ, ಈ ಪಾಠದಲ್ಲಿ ನೀವು ಸ್ಟ್ಯಾಂಡರ್ಡ್ R ಲೈಬ್ರರಿಗಳನ್ನು ಬಳಸಿ ಕಚ್ಚಾ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಹೇಗೆ ಸಿದ್ಧಪಡಿಸಬೇಕೆಂದು ಕಲಿಯುತ್ತೀರಿ 🧑‍🔧. ನೀವು ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ವಿವಿಧ ತಂತ್ರಗಳನ್ನು ಸಹ ಕಲಿಯುತ್ತೀರಿ.📈📊\n", + "
\n", + "\n", + "> ಪುನಃಸ್ಮರಣೆ: ಪೈಪ್ ಆಪರೇಟರ್ (`%>%`) ಲಾಜಿಕಲ್ ಕ್ರಮದಲ್ಲಿ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ, ಒಂದು ವಸ್ತುವನ್ನು ಮುಂದಕ್ಕೆ ಫಂಕ್ಷನ್ ಅಥವಾ ಕರೆ ಅಭಿವ್ಯಕ್ತಿಗೆ ಹಂಚಿಕೊಡುತ್ತದೆ. ನಿಮ್ಮ ಕೋಡ್‌ನಲ್ಲಿ ಪೈಪ್ ಆಪರೇಟರ್ ಅನ್ನು \"ಮತ್ತು ನಂತರ\" ಎಂದು ಹೇಳುವುದಾಗಿ ಭಾವಿಸಬಹುದು.\n" + ], + "metadata": { + "id": "REWcIv9yX29v" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 2. ಕಾಣೆಯಾದ ಡೇಟಾವನ್ನು ಪರಿಶೀಲಿಸಿ\n", + "\n", + "ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಎದುರಿಸಬೇಕಾದ ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ ಅಪೂರ್ಣ ಅಥವಾ ಕಾಣೆಯಾದ ಡೇಟಾ. R ಕಾಣೆಯಾದ ಅಥವಾ ಅಜ್ಞಾತ ಮೌಲ್ಯಗಳನ್ನು ವಿಶೇಷ ಸೆಂಟಿನೆಲ್ ಮೌಲ್ಯದಿಂದ ಪ್ರತಿನಿಧಿಸುತ್ತದೆ: `NA` (ಲಭ್ಯವಿಲ್ಲ).\n", + "\n", + "ಆದ್ದರಿಂದ ಡೇಟಾ ಫ್ರೇಮ್‌ನಲ್ಲಿ ಕಾಣೆಯಾದ ಮೌಲ್ಯಗಳಿವೆ ಎಂದು ನಾವು ಹೇಗೆ ತಿಳಿಯಬಹುದು?\n", + "
\n", + "- ಒಂದು ಸರಳ ವಿಧಾನವೆಂದರೆ ಮೂಲ R ಫಂಕ್ಷನ್ `anyNA` ಅನ್ನು ಬಳಸುವುದು, ಇದು ತಾರ್ಕಿಕ ವಸ್ತುಗಳು `TRUE` ಅಥವಾ `FALSE` ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.\n" + ], + "metadata": { + "id": "Zxfb3AM5YbUe" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "pumpkins %>% \n", + " anyNA()" + ], + "outputs": [], + "metadata": { + "id": "G--DQutAYltj" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಚೆನ್ನಾಗಿದೆ, ಕೆಲವು ಡೇಟಾ ಕಾಣೆಯಾಗಿರುವಂತೆ ತೋರುತ್ತದೆ! ಅದು ಪ್ರಾರಂಭಿಸಲು ಒಳ್ಳೆಯ ಸ್ಥಳವಾಗಿದೆ.\n", + "\n", + "- ಮತ್ತೊಂದು ವಿಧಾನವೆಂದರೆ `is.na()` ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸುವುದು, ಇದು ಯಾವ ವೈಯಕ್ತಿಕ ಕಾಲಮ್ ಅಂಶಗಳು ಕಾಣೆಯಾಗಿವೆ ಎಂದು ಲಾಜಿಕಲ್ `TRUE` ಮೂಲಕ ಸೂಚಿಸುತ್ತದೆ.\n" + ], + "metadata": { + "id": "mU-7-SB6YokF" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "pumpkins %>% \n", + " is.na() %>% \n", + " head(n = 7)" + ], + "outputs": [], + "metadata": { + "id": "W-DxDOR4YxSW" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಸರಿ, ಕೆಲಸ ಮುಗಿಸಿದೆ ಆದರೆ ಇಂತಹ ದೊಡ್ಡ ಡೇಟಾ ಫ್ರೇಮ್‌ನೊಂದಿಗೆ, ಎಲ್ಲಾ ಸಾಲುಗಳು ಮತ್ತು ಕಾಲಮ್‌ಗಳನ್ನು ವೈಯಕ್ತಿಕವಾಗಿ ಪರಿಶೀಲಿಸುವುದು ಅಸಾಧ್ಯ ಮತ್ತು ಅಪ್ರಾಯೋಗಿಕವಾಗಿರುತ್ತದೆ😴.\n", + "\n", + "- ಇನ್ನೊಂದು ಹೆಚ್ಚು ಅರ್ಥಪೂರ್ಣ ವಿಧಾನವೆಂದರೆ ಪ್ರತಿ ಕಾಲಮ್‌ಗೆ ಕಾಣೆಯಾದ ಮೌಲ್ಯಗಳ ಮೊತ್ತವನ್ನು ಲೆಕ್ಕಹಾಕುವುದು:\n" + ], + "metadata": { + "id": "xUWxipKYY0o7" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "pumpkins %>% \n", + " is.na() %>% \n", + " colSums()" + ], + "outputs": [], + "metadata": { + "id": "ZRBWV6P9ZArL" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಇನ್ನಷ್ಟು ಉತ್ತಮವಾಗಿದೆ! ಕೆಲವು ಡೇಟಾ ಕಾಣೆಯಾಗಿವೆ, ಆದರೆ ಬಹುಶಃ ಅದು ಈ ಕಾರ್ಯಕ್ಕೆ ಪ್ರಭಾವ ಬೀರುವುದಿಲ್ಲ. ಮುಂದಿನ ವಿಶ್ಲೇಷಣೆ ಏನು ತರುತ್ತದೆ ನೋಡೋಣ.\n", + "\n", + "> ಅದ್ಭುತ ಪ್ಯಾಕೇಜುಗಳು ಮತ್ತು ಫಂಕ್ಷನ್‌ಗಳ ಜೊತೆಗೆ, R ಗೆ ಅತ್ಯುತ್ತಮ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಇದೆ. ಉದಾಹರಣೆಗೆ, ಫಂಕ್ಷನ್ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ `help(colSums)` ಅಥವಾ `?colSums` ಅನ್ನು ಬಳಸಿ.\n" + ], + "metadata": { + "id": "9gv-crB6ZD1Y" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 3. Dplyr: ಡೇಟಾ ಮ್ಯಾನಿಪ್ಯುಲೇಶನ್‌ನ ವ್ಯಾಕರಣ\n", + "\n", + "\n", + "

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

@allison_horst ಅವರ ಕಲಾಕೃತಿ
\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "o4jLY5-VZO2C" + } + }, + { + "cell_type": "markdown", + "source": [ + "[`dplyr`](https://dplyr.tidyverse.org/), ಟಿಡಿವರ್ಸ್‌ನ ಒಂದು ಪ್ಯಾಕೇಜ್, ಡೇಟಾ ಮ್ಯಾನಿಪ್ಯುಲೇಶನ್‌ನ ವ್ಯಾಕರಣವಾಗಿದೆ ಇದು ನಿಮಗೆ ಸಾಮಾನ್ಯ ಡೇಟಾ ಮ್ಯಾನಿಪ್ಯುಲೇಶನ್ ಸವಾಲುಗಳನ್ನು ಪರಿಹರಿಸಲು ಸಹಾಯ ಮಾಡುವ ಸತತ ಕ್ರಿಯಾಪದಗಳ ಸಮೂಹವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈ ವಿಭಾಗದಲ್ಲಿ, ನಾವು dplyr ನ ಕೆಲವು ಕ್ರಿಯಾಪದಗಳನ್ನು ಅನ್ವೇಷಿಸುವೆವು! \n", + "
\n" + ], + "metadata": { + "id": "i5o33MQBZWWw" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::select()\n", + "\n", + "`select()` ಎಂಬುದು `dplyr` ಪ್ಯಾಕೇಜ್‌ನ ಒಂದು ಫಂಕ್ಷನ್ ಆಗಿದ್ದು, ಇದು ನೀವು ಉಳಿಸಿಕೊಳ್ಳಬೇಕಾದ ಅಥವಾ ಹೊರತುಪಡಿಸಬೇಕಾದ ಕಾಲಮ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n", + "\n", + "ನಿಮ್ಮ ಡೇಟಾ ಫ್ರೇಮ್ ಅನ್ನು ಸುಲಭವಾಗಿ ಕೆಲಸ ಮಾಡಲು, ಅದರ ಕೆಲವು ಕಾಲಮ್‌ಗಳನ್ನು `select()` ಬಳಸಿ ಬಿಟ್ಟಿಹಾಕಿ, ನೀವು ಬೇಕಾದ ಕಾಲಮ್‌ಗಳನ್ನು ಮಾತ್ರ ಉಳಿಸಿ.\n", + "\n", + "ಉದಾಹರಣೆಗೆ, ಈ ವ್ಯಾಯಾಮದಲ್ಲಿ, ನಮ್ಮ ವಿಶ್ಲೇಷಣೆ `Package`, `Low Price`, `High Price` ಮತ್ತು `Date` ಕಾಲಮ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಈ ಕಾಲಮ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡೋಣ.\n" + ], + "metadata": { + "id": "x3VGMAGBZiUr" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Select desired columns\n", + "pumpkins <- pumpkins %>% \n", + " select(Package, `Low Price`, `High Price`, Date)\n", + "\n", + "\n", + "# Print data set\n", + "pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "F_FgxQnVZnM0" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::mutate()\n", + "\n", + "`mutate()` ಎಂಬುದು `dplyr` ಪ್ಯಾಕೇಜಿನ ಒಂದು ಫಂಕ್ಷನ್ ಆಗಿದ್ದು, ಇದರಿಂದ ನೀವು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕಾಲಮ್‌ಗಳನ್ನು ಉಳಿಸಿಕೊಂಡು ಹೊಸ ಕಾಲಮ್‌ಗಳನ್ನು ರಚಿಸಬಹುದು ಅಥವಾ ಬದಲಾಯಿಸಬಹುದು.\n", + "\n", + "mutate ನ ಸಾಮಾನ್ಯ ರಚನೆ ಹೀಗಿದೆ:\n", + "\n", + "`data %>% mutate(new_column_name = what_it_contains)`\n", + "\n", + "`Date` ಕಾಲಮ್ ಬಳಸಿ ಕೆಳಗಿನ ಕಾರ್ಯಗಳನ್ನು ಮಾಡಿ `mutate` ಅನ್ನು ಪ್ರಯೋಗಿಸೋಣ:\n", + "\n", + "1. ದಿನಾಂಕಗಳನ್ನು (ಈಗಾಗಲೇ character ಪ್ರಕಾರದಲ್ಲಿರುವ) ತಿಂಗಳ ಫಾರ್ಮ್ಯಾಟ್‌ಗೆ ಪರಿವರ್ತಿಸಿ (ಇವು US ದಿನಾಂಕಗಳು, ಆದ್ದರಿಂದ ಫಾರ್ಮ್ಯಾಟ್ `MM/DD/YYYY` ಆಗಿದೆ).\n", + "\n", + "2. ದಿನಾಂಕಗಳಿಂದ ತಿಂಗಳನ್ನೊಂದು ಹೊಸ ಕಾಲಮ್‌ಗೆ ತೆಗೆದುಹಾಕಿ.\n", + "\n", + "R ನಲ್ಲಿ, [lubridate](https://lubridate.tidyverse.org/) ಪ್ಯಾಕೇಜ್ Date-time ಡೇಟಾ ಜೊತೆ ಕೆಲಸ ಮಾಡಲು ಸುಲಭವಾಗಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ, `dplyr::mutate()`, `lubridate::mdy()`, `lubridate::month()` ಗಳನ್ನು ಬಳಸಿ ಮೇಲಿನ ಗುರಿಗಳನ್ನು ಹೇಗೆ ಸಾಧಿಸಬಹುದು ನೋಡೋಣ. ಮುಂದಿನ ಕಾರ್ಯಗಳಲ್ಲಿ Date ಕಾಲಮ್ ಬೇಕಾಗುವುದಿಲ್ಲದರಿಂದ ಅದನ್ನು ತೆಗೆದುಹಾಕಬಹುದು.\n" + ], + "metadata": { + "id": "2KKo0Ed9Z1VB" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load lubridate\n", + "library(lubridate)\n", + "\n", + "pumpkins <- pumpkins %>% \n", + " # Convert the Date column to a date object\n", + " mutate(Date = mdy(Date)) %>% \n", + " # Extract month from Date\n", + " mutate(Month = month(Date)) %>% \n", + " # Drop Date column\n", + " select(-Date)\n", + "\n", + "# View the first few rows\n", + "pumpkins %>% \n", + " slice_head(n = 7)" + ], + "outputs": [], + "metadata": { + "id": "5joszIVSZ6xe" + } + }, + { + "cell_type": "markdown", + "source": [ + "ವಾಹ್! 🤩\n", + "\n", + "ಮುಂದೆ, ನಾವು ಹೊಸ ಕಾಲಮ್ `Price` ಅನ್ನು ರಚಿಸೋಣ, ಇದು ಒಂದು ಕಂಬಳದ ಸರಾಸರಿ ಬೆಲೆಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಈಗ, ಹೊಸ Price ಕಾಲಮ್ ಅನ್ನು ತುಂಬಲು `Low Price` ಮತ್ತು `High Price` ಕಾಲಮ್‌ಗಳ ಸರಾಸರಿ ತೆಗೆದುಕೊಳ್ಳೋಣ.\n", + "
\n" + ], + "metadata": { + "id": "nIgLjNMCZ-6Y" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Create a new column Price\n", + "pumpkins <- pumpkins %>% \n", + " mutate(Price = (`Low Price` + `High Price`)/2)\n", + "\n", + "# View the first few rows of the data\n", + "pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "Zo0BsqqtaJw2" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಹೌದು!💪\n", + "\n", + "\"ಆದರೆ ಕಾಯಿರಿ!\", ನೀವು `View(pumpkins)` ಮೂಲಕ ಸಂಪೂರ್ಣ ಡೇಟಾ ಸೆಟ್ ಅನ್ನು ತ್ವರಿತವಾಗಿ ನೋಡಿದ ನಂತರ ಹೇಳುತ್ತೀರಿ, \"ಇಲ್ಲಿ ಏನೋ ವಿಚಿತ್ರವಿದೆ!\"🤔\n", + "\n", + "ನೀವು `Package` ಕಾಲಮ್ ಅನ್ನು ನೋಡಿದರೆ, ಕಂಬಳಿಗಳು ವಿವಿಧ ವಿನ್ಯಾಸಗಳಲ್ಲಿ ಮಾರಾಟವಾಗುತ್ತಿವೆ. ಕೆಲವು `1 1/9 ಬಷೆಲ್` ಅಳತೆಯಲ್ಲಿ ಮಾರಾಟವಾಗುತ್ತವೆ, ಕೆಲವು `1/2 ಬಷೆಲ್` ಅಳತೆಯಲ್ಲಿ, ಕೆಲವು ಪ್ರತಿ ಕಂಬಳಿಗೆ, ಕೆಲವು ಪ್ರತಿ ಪೌಂಡ್‌ಗೆ, ಮತ್ತು ಕೆಲವು ಬೃಹತ್ ಬಾಕ್ಸ್‌ಗಳಲ್ಲಿ ವಿವಿಧ ಅಗಲಗಳೊಂದಿಗೆ.\n", + "\n", + "ನಾವು ಇದನ್ನು ಪರಿಶೀಲಿಸೋಣ:\n" + ], + "metadata": { + "id": "p77WZr-9aQAR" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Verify the distinct observations in Package column\n", + "pumpkins %>% \n", + " distinct(Package)" + ], + "outputs": [], + "metadata": { + "id": "XISGfh0IaUy6" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಅದ್ಭುತ!👏\n", + "\n", + "ಕುಂಬಳಕಾಯಿ ತೂಕವನ್ನು ಸತತವಾಗಿ ಅಳೆಯುವುದು ಬಹಳ ಕಷ್ಟವಾಗುತ್ತದೆ ಎಂದು ತೋರುತ್ತದೆ, ಆದ್ದರಿಂದ `Package` ಕಾಲಮ್‌ನಲ್ಲಿ *bushel* ಎಂಬ ಸ್ಟ್ರಿಂಗ್ ಇರುವ ಕುಂಬಳಕಾಯಿಗಳನ್ನು ಮಾತ್ರ ಆಯ್ಕೆಮಾಡಿ ಫಿಲ್ಟರ್ ಮಾಡೋಣ ಮತ್ತು ಇದನ್ನು ಹೊಸ ಡೇಟಾ ಫ್ರೇಮ್ `new_pumpkins` ನಲ್ಲಿ ಇಡೋಣ.\n", + "
\n" + ], + "metadata": { + "id": "7sMjiVujaZxY" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::filter() ಮತ್ತು stringr::str_detect()\n", + "\n", + "[`dplyr::filter()`](https://dplyr.tidyverse.org/reference/filter.html): ನಿಮ್ಮ ಶರತ್ತುಗಳನ್ನು ಪೂರೈಸುವ **ಸಾಲುಗಳು** ಮಾತ್ರ ಒಳಗೊಂಡಿರುವ ಡೇಟಾದ ಉಪಸಮೂಹವನ್ನು ರಚಿಸುತ್ತದೆ, ಈ ಸಂದರ್ಭದಲ್ಲಿ, `Package` ಕಾಲಮ್‌ನಲ್ಲಿ *bushel* ಎಂಬ ಸ್ಟ್ರಿಂಗ್ ಇರುವ ಕಂಬಳಿಗಳು.\n", + "\n", + "[stringr::str_detect()](https://stringr.tidyverse.org/reference/str_detect.html): ಸ್ಟ್ರಿಂಗ್‌ನಲ್ಲಿ ಮಾದರಿಯಿರುವಿಕೆ ಅಥವಾ ಇಲ್ಲದಿರುವಿಕೆಯನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ.\n", + "\n", + "[`stringr`](https://github.com/tidyverse/stringr) ಪ್ಯಾಕೇಜ್ ಸಾಮಾನ್ಯ ಸ್ಟ್ರಿಂಗ್ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ಸರಳ ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.\n" + ], + "metadata": { + "id": "L8Qfcs92ageF" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Retain only pumpkins with \"bushel\"\n", + "new_pumpkins <- pumpkins %>% \n", + " filter(str_detect(Package, \"bushel\"))\n", + "\n", + "# Get the dimensions of the new data\n", + "dim(new_pumpkins)\n", + "\n", + "# View a few rows of the new data\n", + "new_pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "hy_SGYREampd" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನೀವು ನೋಡಬಹುದು ನಾವು ಬಸ್ಸೆಲ್ ಮೂಲಕ ಕಂಬಳಿಗಳನ್ನು ಹೊಂದಿರುವ ಸುಮಾರು 415 ಸಾಲುಗಳ ಡೇಟಾವನ್ನು ಸೀಮಿತಗೊಳಿಸಿದ್ದೇವೆ.🤩\n", + "
\n" + ], + "metadata": { + "id": "VrDwF031avlR" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::case_when()\n", + "\n", + "**ಆದರೆ ಕಾಯಿರಿ! ಇನ್ನೊಂದು ಕೆಲಸ ಮಾಡಬೇಕಿದೆ**\n", + "\n", + "ನೀವು ಗಮನಿಸಿದ್ದೀರಾ, ಬಷೆಲ್ ಪ್ರಮಾಣವು ಪ್ರತಿ ಸಾಲಿಗೆ ಬದಲಾಗುತ್ತದೆ? ನೀವು ಬೆಲೆಯನ್ನು ಸಾಮಾನ್ಯೀಕರಿಸಬೇಕಾಗಿದೆ, ಹೀಗಾಗಿ ನೀವು ಬೆಲೆಯನ್ನು ಪ್ರತಿ ಬಷೆಲ್‌ಗೆ ತೋರಿಸಬೇಕು, 1 1/9 ಅಥವಾ 1/2 ಬಷೆಲ್‌ಗೆ ಅಲ್ಲ. ಅದನ್ನು ಸಾಮಾನ್ಯೀಕರಿಸಲು ಕೆಲವು ಗಣಿತ ಮಾಡಬೇಕಾಗಿದೆ.\n", + "\n", + "ನಾವು ಕೆಲವು ಶರತ್ತುಗಳ ಆಧಾರದ ಮೇಲೆ ಬೆಲೆ ಕಾಲಮ್ ಅನ್ನು *ಮ್ಯೂಟೇಟ್* ಮಾಡಲು [`case_when()`](https://dplyr.tidyverse.org/reference/case_when.html) ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ. `case_when` ನಿಮಗೆ ಹಲವಾರು `if_else()` ಹೇಳಿಕೆಗಳನ್ನು ವೆಕ್ಟರೈಸ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.\n" + ], + "metadata": { + "id": "mLpw2jH4a0tx" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Convert the price if the Package contains fractional bushel values\n", + "new_pumpkins <- new_pumpkins %>% \n", + " mutate(Price = case_when(\n", + " str_detect(Package, \"1 1/9\") ~ Price/(1 + 1/9),\n", + " str_detect(Package, \"1/2\") ~ Price/(1/2),\n", + " TRUE ~ Price))\n", + "\n", + "# View the first few rows of the data\n", + "new_pumpkins %>% \n", + " slice_head(n = 30)" + ], + "outputs": [], + "metadata": { + "id": "P68kLVQmbM6I" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಈಗ, ನಾವು ಅವರ ಬಷೆಲ್ ಅಳತೆಯ ಆಧಾರದ ಮೇಲೆ ಪ್ರತಿ ಘಟಕದ ಬೆಲೆಯನ್ನು ವಿಶ್ಲೇಷಿಸಬಹುದು. ಈ ಎಲ್ಲಾ ಕಂಬಳಕಾಯಿ ಬಷೆಲ್ ಅಧ್ಯಯನವು, ಆದಾಗ್ಯೂ, ನಿಮ್ಮ ಡೇಟಾದ ಸ್ವಭಾವವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಎಷ್ಟು `ಮುಖ್ಯ` ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ!\n", + "\n", + "> ✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) ಪ್ರಕಾರ, ಬಷೆಲ್‌ನ ತೂಕವು ಉತ್ಪನ್ನದ ಪ್ರಕಾರ ಅವಲಂಬಿತವಾಗಿದ್ದು, ಇದು ಪ್ರಮಾಣದ ಅಳತೆ. \"ಉದಾಹರಣೆಗೆ, ಟೊಮೇಟೋಗಳ ಒಂದು ಬಷೆಲ್ 56 ಪೌಂಡು ತೂಕವಾಗಿರಬೇಕು... ಎಲೆಗಳು ಮತ್ತು ಹಸಿರುಗಳು ಕಡಿಮೆ ತೂಕದೊಂದಿಗೆ ಹೆಚ್ಚು ಜಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತವೆ, ಆದ್ದರಿಂದ ಸ್ಪಿನಾಚ್‌ನ ಒಂದು ಬಷೆಲ್ ಕೇವಲ 20 ಪೌಂಡು ತೂಕದಿರುತ್ತದೆ.\" ಇದು ಎಲ್ಲವೂ ತುಂಬಾ ಸಂಕೀರ್ಣವಾಗಿದೆ! ಬಷೆಲ್-ನಿಂದ ಪೌಂಡಿಗೆ ಪರಿವರ್ತನೆ ಮಾಡುವುದನ್ನು ಬಿಟ್ಟು, ಬಷೆಲ್ ಪ್ರಕಾರ ಬೆಲೆಯನ್ನು ನಿಗದಿಪಡಿಸೋಣ. ಈ ಎಲ್ಲಾ ಕಂಬಳಕಾಯಿ ಬಷೆಲ್ ಅಧ್ಯಯನವು, ಆದಾಗ್ಯೂ, ನಿಮ್ಮ ಡೇಟಾದ ಸ್ವಭಾವವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಎಷ್ಟು ಮುಖ್ಯ ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ!\n", + ">\n", + "> ✅ ನೀವು ಗಮನಿಸಿದ್ದೀರಾ, ಅರ್ಧ ಬಷೆಲ್ ಪ್ರಕಾರ ಮಾರಾಟವಾಗುವ ಕಂಬಳಕಾಯಿಗಳು ತುಂಬಾ ದುಬಾರಿ? ನೀವು ಏಕೆ ಎಂದು ಕಂಡುಹಿಡಿಯಬಹುದೇ? ಸೂಚನೆ: ಸಣ್ಣ ಕಂಬಳಕಾಯಿಗಳು ದೊಡ್ಡದಿಗಿಂತ ಬಹಳ ಹೆಚ್ಚು ಬೆಲೆಯಿರುತ್ತವೆ, ಬಹುಶಃ ಏಕೆಂದರೆ ಒಂದು ದೊಡ್ಡ ಹೊಳೆಯುವ ಪೈ ಕಂಬಳಕಾಯಿಯಿಂದ ತೆಗೆದುಕೊಳ್ಳಲಾದ ಉಪಯೋಗಿಸದ ಜಾಗದ ಕಾರಣದಿಂದ, ಬಷೆಲ್ ಪ್ರತಿ ಹೆಚ್ಚು ಸಂಖ್ಯೆಯ ಸಣ್ಣ ಕಂಬಳಕಾಯಿಗಳು ಇರುತ್ತವೆ.\n", + "
\n" + ], + "metadata": { + "id": "pS2GNPagbSdb" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಇದೀಗ ಕೊನೆಗೆ, ಸಾಹಸಕ್ಕಾಗಿ 💁‍♀️, ನಾವು ತಿಂಗಳು ಕಾಲಮ್ ಅನ್ನು ಮೊದಲ ಸ್ಥಾನಕ್ಕೆ `Package` ಕಾಲಮ್ `ಮುಂಬರುವ` ಮಾಡೋಣ.\n", + "\n", + "ಕಾಲಮ್ ಸ್ಥಾನಗಳನ್ನು ಬದಲಾಯಿಸಲು `dplyr::relocate()` ಬಳಸಲಾಗುತ್ತದೆ.\n" + ], + "metadata": { + "id": "qql1SowfbdnP" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Create a new data frame new_pumpkins\n", + "new_pumpkins <- new_pumpkins %>% \n", + " relocate(Month, .before = Package)\n", + "\n", + "new_pumpkins %>% \n", + " slice_head(n = 7)" + ], + "outputs": [], + "metadata": { + "id": "JJ1x6kw8bixF" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಚೆನ್ನಾಗಿದೆ!👌 ಈಗ ನಿಮಗೆ ಹೊಸ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಸಾಧ್ಯವಾಗುವ ಸ್ವಚ್ಛ, ಸುವ್ಯವಸ್ಥಿತ ಡೇಟಾಸೆಟ್ ಇದೆ! \n", + "
\n" + ], + "metadata": { + "id": "y8TJ0Za_bn5Y" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 4. ggplot2 ಬಳಸಿ ಡೇಟಾ ದೃಶ್ಯೀಕರಣ\n", + "\n", + "

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

ಡಾಸನಿ ಮಡಿಪಳ್ಳಿ ಅವರ ಇನ್ಫೋಗ್ರಾಫಿಕ್
\n", + "\n", + "\n", + "\n", + "\n", + "ಇದೀಗ ಒಂದು *ಜ್ಞಾನವಂತ* ಮಾತು ಇದೆ:\n", + "\n", + "> \"ಸರಳ ಗ್ರಾಫ್ ಡೇಟಾ ವಿಶ್ಲೇಷಕನ ಮನಸ್ಸಿಗೆ ಯಾವುದೇ ಇತರೆ ಸಾಧನಕ್ಕಿಂತ ಹೆಚ್ಚು ಮಾಹಿತಿ ತಂದಿದೆ.\" --- ಜಾನ್ ಟುಕಿ\n", + "\n", + "ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಪಾತ್ರದ ಒಂದು ಭಾಗವೆಂದರೆ ಅವರು ಕೆಲಸ ಮಾಡುತ್ತಿರುವ ಡೇಟಾದ ಗುಣಮಟ್ಟ ಮತ್ತು ಸ್ವಭಾವವನ್ನು ಪ್ರದರ್ಶಿಸುವುದು. ಇದಕ್ಕಾಗಿ, ಅವರು ಸಾಮಾನ್ಯವಾಗಿ ಆಸಕ್ತಿದಾಯಕ ದೃಶ್ಯೀಕರಣಗಳನ್ನು, ಅಥವಾ ಪ್ಲಾಟ್‌ಗಳು, ಗ್ರಾಫ್‌ಗಳು ಮತ್ತು ಚಾರ್ಟ್‌ಗಳನ್ನು ರಚಿಸುತ್ತಾರೆ, ಡೇಟಾದ ವಿಭಿನ್ನ ಅಂಶಗಳನ್ನು ತೋರಿಸುತ್ತಾರೆ. ಈ ರೀತಿಯಲ್ಲಿ, ಅವರು ದೃಶ್ಯವಾಗಿ ಸಂಬಂಧಗಳು ಮತ್ತು ಗ್ಯಾಪ್‌ಗಳನ್ನು ತೋರಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಅವುಗಳನ್ನು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಕಂಡುಹಿಡಿಯುವುದು ಕಷ್ಟ.\n", + "\n", + "ದೃಶ್ಯೀಕರಣಗಳು ಡೇಟಾಗೆ ಅತ್ಯಂತ ಸೂಕ್ತವಾದ ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರವನ್ನು ನಿರ್ಧರಿಸಲು ಸಹ ಸಹಾಯ ಮಾಡಬಹುದು. ಉದಾಹರಣೆಗೆ, ಒಂದು ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ಒಂದು ರೇಖೆಯನ್ನು ಅನುಸರಿಸುತ್ತಿರುವಂತೆ ಕಾಣಿಸಿದರೆ, ಅದು ಡೇಟಾ ಲೀನಿಯರ್ ರಿಗ್ರೆಷನ್ ಅಭ್ಯಾಸಕ್ಕೆ ಉತ್ತಮ ಅಭ್ಯರ್ಥಿ ಎಂದು ಸೂಚಿಸುತ್ತದೆ.\n", + "\n", + "R ಗ್ರಾಫ್‌ಗಳನ್ನು ರಚಿಸಲು ಹಲವಾರು ವ್ಯವಸ್ಥೆಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ, ಆದರೆ [`ggplot2`](https://ggplot2.tidyverse.org/index.html) ಅತ್ಯಂತ ಸುಂದರ ಮತ್ತು ಬಹುಮುಖವಾಗಿದೆ. `ggplot2` ನಿಮಗೆ **ಸ್ವತಂತ್ರ ಘಟಕಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಮೂಲಕ** ಗ್ರಾಫ್‌ಗಳನ್ನು ರಚಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.\n", + "\n", + "ನಾವು Price ಮತ್ತು Month ಕಾಲಮ್‌ಗಳಿಗಾಗಿ ಸರಳ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್‌ನಿಂದ ಪ್ರಾರಂಭಿಸೋಣ.\n", + "\n", + "ಹೀಗಾಗಿ ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು [`ggplot()`](https://ggplot2.tidyverse.org/reference/ggplot.html) ನಿಂದ ಪ್ರಾರಂಭಿಸಿ, ಡೇಟಾಸೆಟ್ ಮತ್ತು ಅಲಂಕಾರಿಕ ನಕ್ಷೆ (aesthetic mapping) ( [`aes()`](https://ggplot2.tidyverse.org/reference/aes.html) ಬಳಸಿ) ಒದಗಿಸಿ ನಂತರ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್‌ಗಳಿಗೆ [`geom_point()`](https://ggplot2.tidyverse.org/reference/geom_point.html) ಹೋಲುವ ಲೇಯರ್‌ಗಳನ್ನು ಸೇರಿಸುತ್ತೇವೆ.\n" + ], + "metadata": { + "id": "mYSH6-EtbvNa" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Set a theme for the plots\n", + "theme_set(theme_light())\n", + "\n", + "# Create a scatter plot\n", + "p <- ggplot(data = new_pumpkins, aes(x = Price, y = Month))\n", + "p + geom_point()" + ], + "outputs": [], + "metadata": { + "id": "g2YjnGeOcLo4" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಇದು ಉಪಯುಕ್ತವಾದ ಪ್ಲಾಟ್ ಆಗಿದೆಯೇ 🤷? ಇದರಲ್ಲಿ ನಿಮಗೆ ಏನಾದರೂ ಆಶ್ಚರ್ಯಕರವಾಗಿದೆಯೇ?\n", + "\n", + "ಇದು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಲ್ಲ ಏಕೆಂದರೆ ಇದು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ನೀಡಲಾದ ತಿಂಗಳಲ್ಲಿ ಬಿಂದುಗಳ ವಿಸ್ತಾರವಾಗಿ ಪ್ರದರ್ಶಿಸುವುದೇ ಆಗಿದೆ.\n", + "
\n" + ], + "metadata": { + "id": "Ml7SDCLQcPvE" + } + }, + { + "cell_type": "markdown", + "source": [ + "### **ನಾವು ಇದನ್ನು ಉಪಯುಕ್ತವಾಗಿಸಲು ಹೇಗೆ ಮಾಡಬಹುದು?**\n", + "\n", + "ಚಾರ್ಟ್‌ಗಳು ಉಪಯುಕ್ತ ಡೇಟಾವನ್ನು ಪ್ರದರ್ಶಿಸಲು, ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ಡೇಟಾವನ್ನು ಯಾವುದೋ ರೀತಿಯಲ್ಲಿ ಗುಂಪು ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ಪ್ರತಿ ತಿಂಗಳಿಗಾಗಿ ಕಂಬಳಿಗಳ ಸರಾಸರಿ ಬೆಲೆಯನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ನಮ್ಮ ಡೇಟಾದ ಅಡಿಯಲ್ಲಿ ಇರುವ ಮಾದರಿಗಳ ಬಗ್ಗೆ ಹೆಚ್ಚು ಒಳನೋಟಗಳನ್ನು ನೀಡುತ್ತದೆ. ಇದು ನಮಗೆ ಇನ್ನೊಂದು **dplyr** ಫ್ಲೈಬೈಗೆ ದಾರಿ ಮಾಡಿಕೊಡುತ್ತದೆ:\n", + "\n", + "#### `dplyr::group_by() %>% summarize()`\n", + "\n", + "R ನಲ್ಲಿ ಗುಂಪು ಮಾಡಿದ ಸಂಗ್ರಹಣೆಯನ್ನು ಸುಲಭವಾಗಿ ಲೆಕ್ಕಹಾಕಬಹುದು\n", + "\n", + "`dplyr::group_by() %>% summarize()`\n", + "\n", + "- `dplyr::group_by()` ವಿಶ್ಲೇಷಣೆಯ ಘಟಕವನ್ನು ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್‌ನಿಂದ ಪ್ರತಿ ತಿಂಗಳುಗಳಂತಹ ವೈಯಕ್ತಿಕ ಗುಂಪುಗಳಿಗೆ ಬದಲಾಯಿಸುತ್ತದೆ.\n", + "\n", + "- `dplyr::summarize()` ನೀವು ಸೂಚಿಸಿದ ಪ್ರತಿಯೊಂದು ಗುಂಪು ಚರ ಮತ್ತು ಪ್ರತಿಯೊಂದು ಸಾರಾಂಶ ಅಂಕಿಅಂಶಗಳಿಗಾಗಿ ಒಂದು ಕಾಲಮ್ ಹೊಂದಿರುವ ಹೊಸ ಡೇಟಾ ಫ್ರೇಮ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ.\n", + "\n", + "ಉದಾಹರಣೆಗೆ, ನಾವು `dplyr::group_by() %>% summarize()` ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕಂಬಳಿಗಳನ್ನು **ತಿಂಗಳು** ಕಾಲಮ್ ಆಧಾರಿತ ಗುಂಪುಗಳಾಗಿ ಗುಂಪು ಮಾಡಿ, ನಂತರ ಪ್ರತಿ ತಿಂಗಳಿಗೂ **ಸರಾಸರಿ ಬೆಲೆ** ಕಂಡುಹಿಡಿಯಬಹುದು.\n" + ], + "metadata": { + "id": "jMakvJZIcVkh" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Find the average price of pumpkins per month\r\n", + "new_pumpkins %>%\r\n", + " group_by(Month) %>% \r\n", + " summarise(mean_price = mean(Price))" + ], + "outputs": [], + "metadata": { + "id": "6kVSUa2Bcilf" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಸಂಕ್ಷಿಪ್ತ!✨\n", + "\n", + "ತಿಂಗಳುಗಳಂತಹ ವರ್ಗೀಕೃತ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಬಾರ್ ಪ್ಲಾಟ್ 📊 ಬಳಸಿ ಉತ್ತಮವಾಗಿ ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತದೆ. ಬಾರ್ ಚಾರ್ಟ್‌ಗಳಿಗೆ ಹೊಣೆಗಾರಿರುವ ಲೇಯರ್‌ಗಳು `geom_bar()` ಮತ್ತು `geom_col()` ಆಗಿವೆ. ಇನ್ನಷ್ಟು ತಿಳಿಯಲು `?geom_bar` ಅನ್ನು ನೋಡಿ.\n", + "\n", + "ಒಂದು ತಯಾರಿಸೋಣ!\n" + ], + "metadata": { + "id": "Kds48GUBcj3W" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Find the average price of pumpkins per month then plot a bar chart\r\n", + "new_pumpkins %>%\r\n", + " group_by(Month) %>% \r\n", + " summarise(mean_price = mean(Price)) %>% \r\n", + " ggplot(aes(x = Month, y = mean_price)) +\r\n", + " geom_col(fill = \"midnightblue\", alpha = 0.7) +\r\n", + " ylab(\"Pumpkin Price\")" + ], + "outputs": [], + "metadata": { + "id": "VNbU1S3BcrxO" + } + }, + { + "cell_type": "markdown", + "source": [ + "🤩🤩ಇದು ಇನ್ನಷ್ಟು ಉಪಯುಕ್ತ ಡೇಟಾ ದೃಶ್ಯೀಕರಣವಾಗಿದೆ! ಇದು ಸಪ್ಟೆಂಬರ್ ಮತ್ತು ಅಕ್ಟೋಬರ್ ತಿಂಗಳಲ್ಲಿ ಕಂಬಳಿಗಳ ಗರಿಷ್ಠ ಬೆಲೆ ಸಂಭವಿಸುತ್ತದೆ ಎಂದು ಸೂಚಿಸುತ್ತಿದೆ ಎಂದು ತೋರುತ್ತದೆ. ಇದು ನಿಮ್ಮ ನಿರೀಕ್ಷೆಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆಯೇ? ಏಕೆ ಅಥವಾ ಏಕೆ ಅಲ್ಲ?\n", + "\n", + "ಎರಡನೇ ಪಾಠವನ್ನು ಮುಗಿಸಿದ ನಿಮಗೆ ಅಭಿನಂದನೆಗಳು 👏! ನೀವು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಮಾದರಿ ನಿರ್ಮಾಣಕ್ಕೆ ಸಿದ್ಧಪಡಿಸಿದಿರಿ, ನಂತರ ದೃಶ್ಯೀಕರಣಗಳನ್ನು ಬಳಸಿ ಇನ್ನಷ್ಟು ಒಳನೋಟಗಳನ್ನು ಅನಾವರಣಗೊಳಿಸಿದಿರಿ!\n" + ], + "metadata": { + "id": "zDm0VOzzcuzR" + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/2-Regression/2-Data/solution/notebook.ipynb b/translations/kn/2-Regression/2-Data/solution/notebook.ipynb new file mode 100644 index 000000000..ce88393dc --- /dev/null +++ b/translations/kn/2-Regression/2-Data/solution/notebook.ipynb @@ -0,0 +1,439 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ಕಂಬಳಕಾಯಿ ಗಾತ್ರದ ರೇಖೀಯ ರಿಗ್ರೆಷನ್ - ಪಾಠ 2\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
70BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN9/24/1615.015.015.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
71BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN9/24/1618.018.018.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
72BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/1/1618.018.018.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
73BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/1/1617.017.017.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
74BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/8/1615.015.015.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade \\\n", + "70 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "71 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "72 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "73 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "74 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "\n", + " Date Low Price High Price Mostly Low ... Unit of Sale Quality \\\n", + "70 9/24/16 15.0 15.0 15.0 ... NaN NaN \n", + "71 9/24/16 18.0 18.0 18.0 ... NaN NaN \n", + "72 10/1/16 18.0 18.0 18.0 ... NaN NaN \n", + "73 10/1/16 17.0 17.0 17.0 ... NaN NaN \n", + "74 10/8/16 15.0 15.0 15.0 ... NaN NaN \n", + "\n", + " Condition Appearance Storage Crop Repack Trans Mode Unnamed: 24 \\\n", + "70 NaN NaN NaN NaN N NaN NaN \n", + "71 NaN NaN NaN NaN N NaN NaN \n", + "72 NaN NaN NaN NaN N NaN NaN \n", + "73 NaN NaN NaN NaN N NaN NaN \n", + "74 NaN NaN NaN NaN N NaN NaN \n", + "\n", + " Unnamed: 25 \n", + "70 NaN \n", + "71 NaN \n", + "72 NaN \n", + "73 NaN \n", + "74 NaN \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", + "\n", + "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n", + "\n", + "pumpkins.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "City Name 0\n", + "Type 406\n", + "Package 0\n", + "Variety 0\n", + "Sub Variety 167\n", + "Grade 415\n", + "Date 0\n", + "Low Price 0\n", + "High Price 0\n", + "Mostly Low 24\n", + "Mostly High 24\n", + "Origin 0\n", + "Origin District 396\n", + "Item Size 114\n", + "Color 145\n", + "Environment 415\n", + "Unit of Sale 404\n", + "Quality 415\n", + "Condition 415\n", + "Appearance 415\n", + "Storage 415\n", + "Crop 415\n", + "Repack 0\n", + "Trans Mode 415\n", + "Unnamed: 24 415\n", + "Unnamed: 25 391\n", + "dtype: int64" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pumpkins.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Month Package Low Price High Price Price\n", + "70 9 1 1/9 bushel cartons 15.00 15.0 13.50\n", + "71 9 1 1/9 bushel cartons 18.00 18.0 16.20\n", + "72 10 1 1/9 bushel cartons 18.00 18.0 16.20\n", + "73 10 1 1/9 bushel cartons 17.00 17.0 15.30\n", + "74 10 1 1/9 bushel cartons 15.00 15.0 13.50\n", + "... ... ... ... ... ...\n", + "1738 9 1/2 bushel cartons 15.00 15.0 30.00\n", + "1739 9 1/2 bushel cartons 13.75 15.0 28.75\n", + "1740 9 1/2 bushel cartons 10.75 15.0 25.75\n", + "1741 9 1/2 bushel cartons 12.00 12.0 24.00\n", + "1742 9 1/2 bushel cartons 12.00 12.0 24.00\n", + "\n", + "[415 rows x 5 columns]\n" + ] + } + ], + "source": [ + "\n", + "# A set of new columns for a new dataframe. Filter out nonmatching columns\n", + "columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']\n", + "pumpkins = pumpkins.loc[:, columns_to_select]\n", + "\n", + "# Get an average between low and high price for the base pumpkin price\n", + "price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2\n", + "\n", + "# Convert the date to its month only\n", + "month = pd.DatetimeIndex(pumpkins['Date']).month\n", + "\n", + "# Create a new dataframe with this basic data\n", + "new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})\n", + "\n", + "# Convert the price if the Package contains fractional bushel values\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)\n", + "\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)\n", + "\n", + "print(new_pumpkins)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "price = new_pumpkins.Price\n", + "month = new_pumpkins.Month\n", + "plt.scatter(price, month)\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Pumpkin Price')" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')\n", + "plt.ylabel(\"Pumpkin Price\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + }, + "kernelspec": { + "display_name": "Python 3.7.0 64-bit ('3.7')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", + "translation_date": "2025-12-19T16:31:54+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/2-Regression/3-Linear/README.md b/translations/kn/2-Regression/3-Linear/README.md new file mode 100644 index 000000000..3a3e77963 --- /dev/null +++ b/translations/kn/2-Regression/3-Linear/README.md @@ -0,0 +1,383 @@ + +# Scikit-learn ಬಳಸಿ ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ: ರೆಗ್ರೆಶನ್ ನಾಲ್ಕು ರೀತಿಗಳು + +![ರೇಖೀಯ ಮತ್ತು ಬಹುಪದ ರೆಗ್ರೆಶನ್ ಇನ್ಫೋಗ್ರಾಫಿಕ್](../../../../translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.kn.png) +> ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ದಾಸನಿ ಮಡಿಪಳ್ಳಿ](https://twitter.com/dasani_decoded) ಅವರಿಂದ +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ಈ ಪಾಠ R ನಲ್ಲಿ ಲಭ್ಯವಿದೆ!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### ಪರಿಚಯ + +ಈವರೆಗೆ ನೀವು ರೆಗ್ರೆಶನ್ ಎಂದರೇನು ಎಂಬುದನ್ನು ಪಂಪ್ಕಿನ್ ಬೆಲೆ ಡೇಟಾಸೆಟ್‌ನಿಂದ ಸಂಗ್ರಹಿಸಿದ ಮಾದರಿ ಡೇಟಾ ಮೂಲಕ ಅನ್ವೇಷಿಸಿದ್ದೀರಿ. ನೀವು ಅದನ್ನು Matplotlib ಬಳಸಿ ದೃಶ್ಯೀಕರಿಸಿದ್ದೀರಿ. + +ಈಗ ನೀವು ML ಗಾಗಿ ರೆಗ್ರೆಶನ್‌ನಲ್ಲಿ ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ಹೋಗಲು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ. ದೃಶ್ಯೀಕರಣವು ಡೇಟಾವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಆದರೆ ಯಂತ್ರ ಅಧ್ಯಯನದ ನಿಜವಾದ ಶಕ್ತಿ _ಮಾದರಿಗಳನ್ನು ತರಬೇತುಗೊಳಿಸುವುದರಿಂದ_ ಬರುತ್ತದೆ. ಮಾದರಿಗಳನ್ನು ಇತಿಹಾಸದ ಡೇಟಾದ ಮೇಲೆ ತರಬೇತುಗೊಳಿಸಲಾಗುತ್ತದೆ, ಇದು ಡೇಟಾ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ ಮತ್ತು ಹೊಸ ಡೇಟಾದ ಫಲಿತಾಂಶಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ, ಇದು ಮಾದರಿ ಮೊದಲು ನೋಡಿರಲಿಲ್ಲ. + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಎರಡು ರೀತಿಯ ರೆಗ್ರೆಶನ್ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿಯುತ್ತೀರಿ: _ಮೂಲಭೂತ ರೇಖೀಯ ರೆಗ್ರೆಶನ್_ ಮತ್ತು _ಬಹುಪದ ರೆಗ್ರೆಶನ್_, ಜೊತೆಗೆ ಈ ತಂತ್ರಜ್ಞಾನಗಳ ಹಿಂದೆ ಇರುವ ಕೆಲವು ಗಣಿತ. ಆ ಮಾದರಿಗಳು ನಮಗೆ ವಿವಿಧ ಇನ್ಪುಟ್ ಡೇಟಾದ ಆಧಾರದ ಮೇಲೆ ಪಂಪ್ಕಿನ್ ಬೆಲೆಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ. + +[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") + +> 🎥 ರೇಖೀಯ ರೆಗ್ರೆಶನ್ ಕುರಿತು ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೋ ಅವಲೋಕನಕ್ಕಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. + +> ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ, ನಾವು ಗಣಿತದ ಕನಿಷ್ಠ ಜ್ಞಾನವನ್ನು ಊಹಿಸುತ್ತೇವೆ ಮತ್ತು ಇತರ ಕ್ಷೇತ್ರಗಳಿಂದ ಬರುವ ವಿದ್ಯಾರ್ಥಿಗಳಿಗೆ ಇದನ್ನು ಸುಲಭಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ, ಆದ್ದರಿಂದ ಟಿಪ್ಪಣಿಗಳು, 🧮 ಕರೆಗಳು, ಚಿತ್ರಗಳು ಮತ್ತು ಇತರ ಕಲಿಕಾ ಸಾಧನಗಳನ್ನು ಗಮನಿಸಿ. + +### ಪೂರ್ವಾಪೇಕ್ಷಿತ + +ನೀವು ಈಗಾಗಲೇ ನಾವು ಪರಿಶೀಲಿಸುತ್ತಿರುವ ಪಂಪ್ಕಿನ್ ಡೇಟಾದ ರಚನೆಗೆ ಪರಿಚಿತರಾಗಿರಬೇಕು. ನೀವು ಈ ಪಾಠದ _notebook.ipynb_ ಫೈಲ್‌ನಲ್ಲಿ ಪೂರ್ವಲೋಡ್ ಮತ್ತು ಪೂರ್ವಶುದ್ಧೀಕರಿಸಿದ ಡೇಟಾವನ್ನು ಕಾಣಬಹುದು. ಫೈಲ್‌ನಲ್ಲಿ, ಪಂಪ್ಕಿನ್ ಬೆಲೆ ಪ್ರತಿ ಬಷೆಲ್‌ಗೆ ಹೊಸ ಡೇಟಾ ಫ್ರೇಮ್‌ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲಾಗಿದೆ. ನೀವು Visual Studio Code ನಲ್ಲಿ ಈ ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಕರ್ಣೆಲ್‌ಗಳಲ್ಲಿ ಚಾಲನೆ ಮಾಡಬಹುದಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. + +### ತಯಾರಿ + +ಒಂದು ಸ್ಮರಣಿಕೆಗಾಗಿ, ನೀವು ಈ ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡುತ್ತಿದ್ದೀರಿ ಇದರಿಂದ ಅದಕ್ಕೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಲು. + +- ಪಂಪ್ಕಿನ್‌ಗಳನ್ನು ಖರೀದಿಸಲು ಅತ್ಯುತ್ತಮ ಸಮಯ ಯಾವುದು? +- ಸಣ್ಣ ಪಂಪ್ಕಿನ್‌ಗಳ ಒಂದು ಕೇಸ್‌ನ ಬೆಲೆ ಎಷ್ಟು ನಿರೀಕ್ಷಿಸಬಹುದು? +- ಅವುಗಳನ್ನು ಅರ್ಧ-ಬಷೆಲ್ ಬಾಸ್ಕೆಟ್‌ಗಳಲ್ಲಿ ಖರೀದಿಸಬೇಕೇ ಅಥವಾ 1 1/9 ಬಷೆಲ್ ಬಾಕ್ಸ್ ಮೂಲಕವೇ? +ನಾವು ಈ ಡೇಟಾದಲ್ಲಿ ಇನ್ನಷ್ಟು ತವಕದಿಂದ ತೊಡಗಿಸೋಣ. + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು ಪಾಂಡಾಸ್ ಡೇಟಾ ಫ್ರೇಮ್ ರಚಿಸಿ ಮೂಲ ಡೇಟಾಸೆಟ್‌ನ ಭಾಗವನ್ನು ತುಂಬಿದ್ದೀರಿ, ಬೆಲೆಯನ್ನು ಬಷೆಲ್ ಮೂಲಕ ಮಾನಕೀಕರಿಸಿದ್ದೀರಿ. ಆದಾಗ್ಯೂ, ನೀವು ಸುಮಾರು 400 ಡೇಟಾಪಾಯಿಂಟ್‌ಗಳನ್ನು ಮಾತ್ರ ಸಂಗ್ರಹಿಸಿದ್ದೀರಿ ಮತ್ತು ಅವು ಕೇವಲ ಶರತ್ಕಾಲದ ತಿಂಗಳುಗಳಿಗೆ ಮಾತ್ರ. + +ಈ ಪಾಠದ ಜೊತೆಗೆ ಲಭ್ಯವಿರುವ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಪೂರ್ವಲೋಡ್ ಮಾಡಲಾದ ಡೇಟಾವನ್ನು ನೋಡಿ. ಡೇಟಾ ಪೂರ್ವಲೋಡ್ ಆಗಿದ್ದು, ಪ್ರಾಥಮಿಕ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ತಿಂಗಳ ಡೇಟಾವನ್ನು ತೋರಿಸಲು ಚಾರ್ಟ್ ಮಾಡಲಾಗಿದೆ. ಡೇಟಾದ ಸ್ವಭಾವವನ್ನು ಇನ್ನಷ್ಟು ವಿವರವಾಗಿ ತಿಳಿದುಕೊಳ್ಳಲು ಅದನ್ನು ಹೆಚ್ಚು ಶುದ್ಧೀಕರಿಸಬಹುದು. + +## ರೇಖೀಯ ರೆಗ್ರೆಶನ್ ರೇಖೆ + +ಪಾಠ 1 ರಲ್ಲಿ ನೀವು ಕಲಿತಂತೆ, ರೇಖೀಯ ರೆಗ್ರೆಶನ್ ವ್ಯಾಯಾಮದ ಗುರಿ ಒಂದು ರೇಖೆಯನ್ನು ರೇಖಾಚಿತ್ರ ಮಾಡಲು ಆಗಿದೆ: + +- **ಚರಗಳ ಸಂಬಂಧಗಳನ್ನು ತೋರಿಸುವುದು**. ಚರಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ತೋರಿಸುವುದು +- **ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದು**. ಹೊಸ ಡೇಟಾಪಾಯಿಂಟ್ ಆ ರೇಖೆಯ ಸಂಬಂಧದಲ್ಲಿ ಎಲ್ಲಿ ಬಿದ್ದೀತು ಎಂಬುದನ್ನು ನಿಖರವಾಗಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದು. + +**ಕನಿಷ್ಠ ಚದರ ರೆಗ್ರೆಶನ್** ಸಾಮಾನ್ಯವಾಗಿ ಈ ರೀತಿಯ ರೇಖೆಯನ್ನು ಬಿಡುತ್ತದೆ. 'ಕನಿಷ್ಠ ಚದರ' ಎಂಬ ಪದವು ಅಂದರೆ ರೆಗ್ರೆಶನ್ ರೇಖೆಯ ಸುತ್ತಲೂ ಇರುವ ಎಲ್ಲಾ ಡೇಟಾಪಾಯಿಂಟ್‌ಗಳ ಚದರಗಳನ್ನು ತೆಗೆದು ಸೇರಿಸಲಾಗುತ್ತದೆ. ಆದರ್ಶವಾಗಿ, ಅಂತಿಮ ಮೊತ್ತ ಸಾಧ್ಯವಾದಷ್ಟು ಕಡಿಮೆ ಇರಬೇಕು, ಏಕೆಂದರೆ ನಾವು ತಪ್ಪುಗಳ ಸಂಖ್ಯೆ ಕಡಿಮೆ ಇರಬೇಕೆಂದು ಬಯಸುತ್ತೇವೆ, ಅಂದರೆ `ಕನಿಷ್ಠ ಚದರ`. + +ನಾವು ಈ ರೇಖೆಯನ್ನು ಮಾದರಿಮಾಡಲು ಬಯಸುತ್ತೇವೆ ಏಕೆಂದರೆ ಅದು ನಮ್ಮ ಎಲ್ಲಾ ಡೇಟಾಪಾಯಿಂಟ್‌ಗಳಿಂದ ಕನಿಷ್ಠ ಒಟ್ಟು ದೂರವನ್ನು ಹೊಂದಿರುತ್ತದೆ. ನಾವು ಮೊದಲು ಚದರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ ಏಕೆಂದರೆ ನಾವು ಅದರ ದಿಕ್ಕಿನ ಬದಲು ಅದರ ಪ್ರಮಾಣದ ಬಗ್ಗೆ ಚಿಂತಿಸುತ್ತೇವೆ. + +> **🧮 ಗಣಿತವನ್ನು ತೋರಿಸಿ** +> +> ಈ ರೇಖೆಯನ್ನು, _ಉತ್ತಮ ಹೊಂದಾಣಿಕೆಯ ರೇಖೆ_ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಅದನ್ನು [ಸಮೀಕರಣ](https://en.wikipedia.org/wiki/Simple_linear_regression) ಮೂಲಕ ವ್ಯಕ್ತಪಡಿಸಬಹುದು: +> +> ``` +> Y = a + bX +> ``` +> +> `X` ಅನ್ನು 'ವಿವರಣೆ ಚರ' ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. `Y` ಅನ್ನು 'ಆಧಾರಿತ ಚರ' ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ರೇಖೆಯ ಸ್ಲೋಪ್ `b` ಆಗಿದ್ದು, `a` ಯು y-ಅಂತರವನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಇದು `X = 0` ಆಗಿರುವಾಗ `Y` ಯ ಮೌಲ್ಯ. +> +>![ಸ್ಲೋಪ್ ಲೆಕ್ಕಹಾಕಿ](../../../../translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.kn.png) +> +> ಮೊದಲು, ಸ್ಲೋಪ್ `b` ಅನ್ನು ಲೆಕ್ಕಹಾಕಿ. ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ +> +> ಬೇರೆ ಪದಗಳಲ್ಲಿ, ಮತ್ತು ನಮ್ಮ ಪಂಪ್ಕಿನ್ ಡೇಟಾದ ಮೂಲ ಪ್ರಶ್ನೆಗೆ ಸಂಬಂಧಿಸಿದಂತೆ: "ತಿಂಗಳ ಪ್ರಕಾರ ಪ್ರತಿ ಬಷೆಲ್ ಪಂಪ್ಕಿನ್ ಬೆಲೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ", `X` ಬೆಲೆಗೆ ಸೂಚಿಸುತ್ತದೆ ಮತ್ತು `Y` ಮಾರಾಟದ ತಿಂಗಳಿಗೆ ಸೂಚಿಸುತ್ತದೆ. +> +>![ಸಮೀಕರಣ ಪೂರ್ಣಗೊಳಿಸಿ](../../../../translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.kn.png) +> +> Y ಮೌಲ್ಯವನ್ನು ಲೆಕ್ಕಹಾಕಿ. ನೀವು ಸುಮಾರು $4 ಪಾವತಿಸುತ್ತಿದ್ದರೆ, ಅದು ಏಪ್ರಿಲ್ ಆಗಿರಬೇಕು! ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ +> +> ರೇಖೆಯ ಗಣಿತವು ಸ್ಲೋಪ್ ಅನ್ನು ತೋರಿಸಬೇಕು, ಇದು ಅಂತರದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದ್ದು, ಅಂದರೆ `X = 0` ಆಗಿರುವಾಗ `Y` ಎಲ್ಲಿ ಇರುತ್ತದೆ. +> +> ನೀವು ಈ ಮೌಲ್ಯಗಳ ಲೆಕ್ಕಾಚಾರದ ವಿಧಾನವನ್ನು [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ವೆಬ್‌ಸೈಟ್‌ನಲ್ಲಿ ನೋಡಬಹುದು. ಜೊತೆಗೆ [ಈ ಕನಿಷ್ಠ ಚದರ ಕ್ಯಾಲ್ಕ್ಯುಲೇಟರ್](https://www.mathsisfun.com/data/least-squares-calculator.html) ಗೆ ಭೇಟಿ ನೀಡಿ ಸಂಖ್ಯೆಗಳ ಮೌಲ್ಯಗಳು ರೇಖೆಯನ್ನು ಹೇಗೆ ಪ್ರಭಾವಿಸುತ್ತವೆ ಎಂದು ನೋಡಿ. + +## ಸಹಸಂಬಂಧ + +ಮತ್ತೊಂದು ಪದವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಿದೆ ಅದು **ಸಹಸಂಬಂಧ ಗುಣಾಂಕ** ಆಗಿದ್ದು, ನೀಡಲಾದ X ಮತ್ತು Y ಚರಗಳ ನಡುವೆ. ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ಬಳಸಿ ನೀವು ಈ ಗುಣಾಂಕವನ್ನು ತ್ವರಿತವಾಗಿ ದೃಶ್ಯೀಕರಿಸಬಹುದು. ಡೇಟಾಪಾಯಿಂಟ್‌ಗಳು ಸರಳ ರೇಖೆಯಲ್ಲಿ ಸುತ್ತಲೂ ಹಂಚಿಕೊಂಡಿದ್ದರೆ ಸಹಸಂಬಂಧ ಹೆಚ್ಚು ಇರುತ್ತದೆ, ಆದರೆ ಡೇಟಾಪಾಯಿಂಟ್‌ಗಳು X ಮತ್ತು Y ನಡುವೆ ಎಲ್ಲೆಡೆ ಹಂಚಿಕೊಂಡಿದ್ದರೆ ಸಹಸಂಬಂಧ ಕಡಿಮೆ ಇರುತ್ತದೆ. + +ಒಳ್ಳೆಯ ರೇಖೀಯ ರೆಗ್ರೆಶನ್ ಮಾದರಿ ಕನಿಷ್ಠ ಚದರ ರೆಗ್ರೆಶನ್ ವಿಧಾನವನ್ನು ಬಳಸಿ ರೇಖೆಯೊಂದಿಗೆ ಸಹಸಂಬಂಧ ಗುಣಾಂಕವು ಹೆಚ್ಚು (0 ಕ್ಕಿಂತ 1 ಗೆ ಹತ್ತಿರ) ಇರುವುದಾಗಿರುತ್ತದೆ. + +✅ ಈ ಪಾಠದ ಜೊತೆಗೆ ಲಭ್ಯವಿರುವ ನೋಟ್ಬುಕ್ ಅನ್ನು ಚಾಲನೆ ಮಾಡಿ ಮತ್ತು ತಿಂಗಳು ಮತ್ತು ಬೆಲೆ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ನೋಡಿ. ಪಂಪ್ಕಿನ್ ಮಾರಾಟದ ತಿಂಗಳು ಮತ್ತು ಬೆಲೆ ನಡುವಿನ ಡೇಟಾ ನಿಮ್ಮ ದೃಶ್ಯಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆಯ ಪ್ರಕಾರ ಹೆಚ್ಚು ಅಥವಾ ಕಡಿಮೆ ಸಹಸಂಬಂಧ ಹೊಂದಿದೆಯೇ? ನೀವು `ತಿಂಗಳು` ಬದಲು ಹೆಚ್ಚು ಸೂಕ್ಷ್ಮ ಮಾಪನವನ್ನು ಬಳಸಿದರೆ, ಉದಾ. *ವರ್ಷದ ದಿನ* (ಅಂದರೆ ವರ್ಷದ ಆರಂಭದಿಂದ ದಿನಗಳ ಸಂಖ್ಯೆ) ಇದರಿಂದ ಬದಲಾವಣೆ ಆಗುತ್ತದೆಯೇ? + +ಕೆಳಗಿನ ಕೋಡ್‌ನಲ್ಲಿ, ನಾವು ಡೇಟಾವನ್ನು ಶುದ್ಧೀಕರಿಸಿದ್ದೇವೆ ಎಂದು ಊಹಿಸೋಣ ಮತ್ತು `new_pumpkins` ಎಂಬ ಡೇಟಾ ಫ್ರೇಮ್ ಅನ್ನು ಪಡೆದಿದ್ದೇವೆ, ಹೀಗಿದೆ: + +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 + +> ಡೇಟಾ ಶುದ್ಧೀಕರಣದ ಕೋಡ್ [`notebook.ipynb`](notebook.ipynb) ನಲ್ಲಿ ಲಭ್ಯವಿದೆ. ನಾವು ಹಿಂದಿನ ಪಾಠದಂತೆ ಅದೇ ಶುದ್ಧೀಕರಣ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿದ್ದೇವೆ ಮತ್ತು ಕೆಳಗಿನ ಅಭಿವ್ಯಕ್ತಿಯನ್ನು ಬಳಸಿ `DayOfYear` ಕಾಲಮ್ ಲೆಕ್ಕಹಾಕಿದ್ದೇವೆ: + +```python +day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) +``` + +ಈಗ ನೀವು ರೇಖೀಯ ರೆಗ್ರೆಶನ್ ಹಿಂದಿನ ಗಣಿತವನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದೀರಿ, ಬನ್ನಿ ಒಂದು ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ರಚಿಸಿ ಯಾವ ಪಂಪ್ಕಿನ್ ಪ್ಯಾಕೇಜ್ ಉತ್ತಮ ಬೆಲೆ ಹೊಂದಿರಬಹುದು ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡೋಣ. ಹಬ್ಬದ ಪಂಪ್ಕಿನ್ ಪ್ಯಾಚ್‌ಗಾಗಿ ಪಂಪ್ಕಿನ್ ಖರೀದಿಸುವವರು ಈ ಮಾಹಿತಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ಯಾಚ್‌ಗಾಗಿ ಪಂಪ್ಕಿನ್ ಪ್ಯಾಕೇಜ್‌ಗಳ ಖರೀದಿಯನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಬಹುದು. + +## ಸಹಸಂಬಂಧ ಹುಡುಕುವುದು + +[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") + +> 🎥 ಸಹಸಂಬಂಧದ ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೋ ಅವಲೋಕನಕ್ಕಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. + +ಹಿಂದಿನ ಪಾಠದಿಂದ ನೀವು ನೋಡಿರಬಹುದು ವಿಭಿನ್ನ ತಿಂಗಳುಗಳಿಗೆ ಸರಾಸರಿ ಬೆಲೆ ಹೀಗಿದೆ: + +ತಿಂಗಳ ಪ್ರಕಾರ ಸರಾಸರಿ ಬೆಲೆ + +ಇದು ಕೆಲವು ಸಹಸಂಬಂಧ ಇರಬೇಕೆಂದು ಸೂಚಿಸುತ್ತದೆ, ಮತ್ತು ನಾವು `ತಿಂಗಳು` ಮತ್ತು `ಬೆಲೆ` ಅಥವಾ `DayOfYear` ಮತ್ತು `ಬೆಲೆ` ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ರೇಖೀಯ ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸಬಹುದು. ಕೆಳಗಿನ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ ನಂತರದ ಸಂಬಂಧವನ್ನು ತೋರಿಸುತ್ತದೆ: + +ಬೆಲೆ ಮತ್ತು ವರ್ಷದ ದಿನದ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ + +`corr` ಫಂಕ್ಷನ್ ಬಳಸಿ ಸಹಸಂಬಂಧವನ್ನು ನೋಡೋಣ: + +```python +print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) +print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) +``` + +ಸಹಸಂಬಂಧವು ಬಹಳ ಕಡಿಮೆ ಇದೆ ಎಂದು ತೋರುತ್ತದೆ, `ತಿಂಗಳು` ಮೂಲಕ -0.15 ಮತ್ತು `DayOfMonth` ಮೂಲಕ -0.17, ಆದರೆ ಇನ್ನೊಂದು ಪ್ರಮುಖ ಸಂಬಂಧ ಇರಬಹುದು. ವಿಭಿನ್ನ ಪಂಪ್ಕಿನ್ ಪ್ರಭೇದಗಳಿಗೆ ಹೊಂದಿಕೊಂಡ ಬೆಲೆಗಳ ವಿಭಿನ್ನ ಗುಂಪುಗಳಿವೆ ಎಂದು ತೋರುತ್ತದೆ. ಈ ಊಹೆಯನ್ನು ದೃಢೀಕರಿಸಲು, ಪ್ರತಿ ಪಂಪ್ಕಿನ್ ವರ್ಗವನ್ನು ವಿಭಿನ್ನ ಬಣ್ಣದಲ್ಲಿ ಚಿತ್ರಿಸೋಣ. `scatter` ಪ್ಲಾಟ್ ಫಂಕ್ಷನ್‌ಗೆ `ax` ಪರಾಮಿತಿ ನೀಡುವ ಮೂಲಕ ನಾವು ಎಲ್ಲಾ ಬಿಂದುಗಳನ್ನು ಒಂದೇ ಗ್ರಾಫ್‌ನಲ್ಲಿ ಚಿತ್ರಿಸಬಹುದು: + +```python +ax=None +colors = ['red','blue','green','yellow'] +for i,var in enumerate(new_pumpkins['Variety'].unique()): + df = new_pumpkins[new_pumpkins['Variety']==var] + ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) +``` + +ಬೆಲೆ ಮತ್ತು ವರ್ಷದ ದಿನದ ಬಣ್ಣದ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ + +ನಮ್ಮ ತನಿಖೆ ಸೂಚಿಸುತ್ತದೆ, ಪ್ರಭೇದವು ಮಾರಾಟದ ದಿನಾಂಕಕ್ಕಿಂತ ಒಟ್ಟು ಬೆಲೆಯ ಮೇಲೆ ಹೆಚ್ಚು ಪ್ರಭಾವ ಬೀರುತ್ತದೆ. ನಾವು ಇದನ್ನು ಬಾರ್ ಗ್ರಾಫ್ ಮೂಲಕ ನೋಡಬಹುದು: + +```python +new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') +``` + +ಬೆಲೆ ಮತ್ತು ಪ್ರಭೇದದ ಬಾರ್ ಗ್ರಾಫ್ + +ಈಗ ನಾವು ಒಂದು ಪಂಪ್ಕಿನ್ ಪ್ರಭೇದ, 'ಪೈ ಟೈಪ್' ಮೇಲೆ ಮಾತ್ರ ಗಮನಹರಿಸೋಣ ಮತ್ತು ದಿನಾಂಕವು ಬೆಲೆಗೆ ಏನು ಪ್ರಭಾವ ಬೀರುತ್ತದೆ ನೋಡೋಣ: + +```python +pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] +pie_pumpkins.plot.scatter('DayOfYear','Price') +``` +ಬೆಲೆ ಮತ್ತು ವರ್ಷದ ದಿನದ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ + +ಈಗ ನಾವು `corr` ಫಂಕ್ಷನ್ ಬಳಸಿ `ಬೆಲೆ` ಮತ್ತು `DayOfYear` ನಡುವಿನ ಸಹಸಂಬಂಧವನ್ನು ಲೆಕ್ಕಹಾಕಿದರೆ, ಅದು `-0.27` ಆಗಿರುತ್ತದೆ - ಇದು ಭವಿಷ್ಯವಾಣಿ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವುದು ಅರ್ಥಪೂರ್ಣ ಎಂದು ಸೂಚಿಸುತ್ತದೆ. + +> ರೇಖೀಯ ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವ ಮೊದಲು, ನಮ್ಮ ಡೇಟಾ ಶುದ್ಧವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಮುಖ್ಯ. ರೇಖೀಯ ರೆಗ್ರೆಶನ್ ಕಳೆದುಹೋಗಿರುವ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡದು, ಆದ್ದರಿಂದ ಎಲ್ಲಾ ಖಾಲಿ ಸೆಲ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು ಸೂಕ್ತ. + +```python +pie_pumpkins.dropna(inplace=True) +pie_pumpkins.info() +``` + +ಮತ್ತೊಂದು ವಿಧಾನವೆಂದರೆ ಆ ಖಾಲಿ ಮೌಲ್ಯಗಳನ್ನು ಸಂಬಂಧಿಸಿದ ಕಾಲಮ್‌ನ ಸರಾಸರಿ ಮೌಲ್ಯಗಳಿಂದ ತುಂಬಿಸುವುದು. + +## ಸರಳ ರೇಖೀಯ ರೆಗ್ರೆಶನ್ + +[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") + +> 🎥 ರೇಖೀಯ ಮತ್ತು ಬಹುಪದ ರೆಗ್ರೆಶನ್ ಕುರಿತು ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೋ ಅವಲೋಕನಕ್ಕಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. + +ನಮ್ಮ ರೇಖೀಯ ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಲು, ನಾವು **Scikit-learn** ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸುತ್ತೇವೆ. + +```python +from sklearn.linear_model import LinearRegression +from sklearn.metrics import mean_squared_error +from sklearn.model_selection import train_test_split +``` + +ನಾವು ಮೊದಲಿಗೆ ಇನ್ಪುಟ್ ಮೌಲ್ಯಗಳು (ಲಕ್ಷಣಗಳು) ಮತ್ತು ನಿರೀಕ್ಷಿತ ಔಟ್‌ಪುಟ್ (ಲೇಬಲ್) ಅನ್ನು ಪ್ರತ್ಯೇಕ numpy ಅರೆಗಳಾಗಿ ವಿಭಜಿಸುತ್ತೇವೆ: + +```python +X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) +y = pie_pumpkins['Price'] +``` + +> ಗಮನಿಸಿ, Linear Regression ಪ್ಯಾಕೇಜ್ ಸರಿಯಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ನಾವು ಇನ್ಪುಟ್ ಡೇಟಾದ ಮೇಲೆ `reshape` ಮಾಡಬೇಕಾಯಿತು. Linear Regression 2D ಅರೆ ಇನ್ಪುಟ್ ಆಗಿರಬೇಕೆಂದು ನಿರೀಕ್ಷಿಸುತ್ತದೆ, ಅಲ್ಲಿ ಪ್ರತಿಯೊಂದು ಸಾಲು ಒಂದು ಲಕ್ಷಣಗಳ ವೆಕ್ಟರ್ ಆಗಿರುತ್ತದೆ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ನಮಗೆ ಒಂದೇ ಇನ್ಪುಟ್ ಇದ್ದು, ಆದ್ದರಿಂದ N×1 ಆಕಾರದ ಅರೆ ಬೇಕಾಗುತ್ತದೆ, ಇಲ್ಲಿ N ಡೇಟಾಸೆಟ್ ಗಾತ್ರ. + +ನಂತರ, ನಾವು ಡೇಟಾವನ್ನು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್‌ಗಳಾಗಿ ವಿಭಜಿಸಬೇಕು, ಇದರಿಂದ ನಾವು ತರಬೇತಿಯ ನಂತರ ನಮ್ಮ ಮಾದರಿಯನ್ನು ಮಾನ್ಯತೆ ಮಾಡಬಹುದು: + +```python +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) +``` + +ಕೊನೆಗೆ, ನಿಜವಾದ ರೇಖೀಯ ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವುದು ಕೇವಲ ಎರಡು ಸಾಲು ಕೋಡ್ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ನಾವು `LinearRegression` ವಸ್ತುವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ, `fit` ವಿಧಾನ ಬಳಸಿ ಅದನ್ನು ನಮ್ಮ ಡೇಟಾಗೆ ಹೊಂದಿಸುತ್ತೇವೆ: + +```python +lin_reg = LinearRegression() +lin_reg.fit(X_train,y_train) +``` + +`fit` ಮಾಡಿದ ನಂತರ `LinearRegression` ವಸ್ತುವಿನಲ್ಲಿ ಎಲ್ಲಾ ರೆಗ್ರೆಶನ್ ಗುಣಾಂಕಗಳು ಇರುತ್ತವೆ, ಅವುಗಳನ್ನು `.coef_` ಗುಣಲಕ್ಷಣದಿಂದ ಪ್ರವೇಶಿಸಬಹುದು. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ಒಂದೇ ಗುಣಾಂಕ ಇದೆ, ಅದು ಸುಮಾರು `-0.017` ಆಗಿರಬೇಕು. ಇದರ ಅರ್ಥ ಬೆಲೆಗಳು ಸಮಯದೊಂದಿಗೆ ಸ್ವಲ್ಪ ಇಳಿಯುತ್ತಿವೆ, ಆದರೆ ಹೆಚ್ಚು ಅಲ್ಲ, ದಿನಕ್ಕೆ ಸುಮಾರು 2 ಸೆಂಟುಗಳಷ್ಟು. ನಾವು ರೇಖೆಯ Y-ಅಕ್ಷದ ಅಂತರ ಬಿಂದುವನ್ನು `lin_reg.intercept_` ಬಳಸಿ ಪ್ರವೇಶಿಸಬಹುದು - ಇದು ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ ಸುಮಾರು `21` ಆಗಿರುತ್ತದೆ, ವರ್ಷ ಆರಂಭದ ಬೆಲೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. +ನಮ್ಮ ಮಾದರಿ ಎಷ್ಟು ನಿಖರವಾಗಿದೆ ಎಂದು ನೋಡಲು, ನಾವು ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಬೆಲೆಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು, ಮತ್ತು ನಂತರ ನಮ್ಮ ಭವಿಷ್ಯವಾಣಿಗಳು ನಿರೀಕ್ಷಿತ ಮೌಲ್ಯಗಳಿಗೆ ಎಷ್ಟು ಹತ್ತಿರವಿದೆ ಎಂದು ಅಳೆಯಬಹುದು. ಇದು ಸರಾಸರಿ ಚದರ ದೋಷ (MSE) ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಮಾಡಬಹುದು, ಇದು ನಿರೀಕ್ಷಿತ ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮೌಲ್ಯಗಳ ನಡುವಿನ ಎಲ್ಲಾ ಚದರ ವ್ಯತ್ಯಾಸಗಳ ಸರಾಸರಿ. + +```python +pred = lin_reg.predict(X_test) + +mse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +``` + +ನಮ್ಮ ದೋಷವು ಸುಮಾರು 2 ಅಂಕಿಗಳ ಸುತ್ತಲೂ ಇದೆ, ಇದು ~17% ಆಗಿದೆ. ತುಂಬಾ ಚೆನ್ನಾಗಿಲ್ಲ. ಮಾದರಿ ಗುಣಮಟ್ಟದ ಮತ್ತೊಂದು ಸೂಚಕವು **ನಿರ್ಧಾರ ಸಹಗುಣಕ** ಆಗಿದ್ದು, ಇದನ್ನು ಹೀಗೆ ಪಡೆಯಬಹುದು: + +```python +score = lin_reg.score(X_train,y_train) +print('Model determination: ', score) +``` + +ಮೌಲ್ಯವು 0 ಆಗಿದ್ದರೆ, ಅದು ಮಾದರಿ ಇನ್‌ಪುಟ್ ಡೇಟಾವನ್ನು ಪರಿಗಣಿಸುವುದಿಲ್ಲ ಮತ್ತು *ಅತ್ಯಂತ ಕೆಟ್ಟ ರೇಖೀಯ ಭವಿಷ್ಯವಾಣಿ* ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಇದು ಫಲಿತಾಂಶದ ಸರಾಸರಿ ಮೌಲ್ಯವೇ ಆಗಿದೆ. 1 ಮೌಲ್ಯವು ನಾವು ಎಲ್ಲಾ ನಿರೀಕ್ಷಿತ ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು ಎಂದು ಅರ್ಥ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ಸಹಗುಣಕವು ಸುಮಾರು 0.06 ಆಗಿದ್ದು, ಇದು ತುಂಬಾ ಕಡಿಮೆ. + +ನಾವು ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ಮತ್ತು ರಿಗ್ರೆಷನ್ ರೇಖೆಯನ್ನು ಒಟ್ಟಿಗೆ ಚಿತ್ರಿಸಿ, ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ ರಿಗ್ರೆಷನ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಉತ್ತಮವಾಗಿ ನೋಡಬಹುದು: + +```python +plt.scatter(X_test,y_test) +plt.plot(X_test,pred) +``` + +Linear regression + +## ಬಹುಪದ ರಿಗ್ರೆಷನ್ + +ಮತ್ತೊಂದು ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಪ್ರಕಾರ ಬಹುಪದ ರಿಗ್ರೆಷನ್ ಆಗಿದೆ. ಕೆಲವೊಮ್ಮೆ ಚರಗಳ ನಡುವೆ ರೇಖೀಯ ಸಂಬಂಧವಿರಬಹುದು - ಗಾತ್ರದಲ್ಲಿ ದೊಡ್ಡ ಕಂಬಳಿಯು ಬೆಲೆಯೂ ಹೆಚ್ಚು - ಆದರೆ ಕೆಲವೊಮ್ಮೆ ಈ ಸಂಬಂಧಗಳನ್ನು ಸಮತಲ ಅಥವಾ ಸರಳ ರೇಖೆಯಾಗಿ ಚಿತ್ರಿಸಲಾಗುವುದಿಲ್ಲ. + +✅ ಇಲ್ಲಿ [ಇನ್ನಷ್ಟು ಉದಾಹರಣೆಗಳು](https://online.stat.psu.edu/stat501/lesson/9/9.8) ಇವೆ, ಅವು ಬಹುಪದ ರಿಗ್ರೆಷನ್ ಬಳಸಬಹುದು + +ದಿನಾಂಕ ಮತ್ತು ಬೆಲೆಯ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಮತ್ತೊಮ್ಮೆ ನೋಡಿ. ಈ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ಅನ್ನು ಅವಶ್ಯಕವಾಗಿ ಸರಳ ರೇಖೆಯಿಂದ ವಿಶ್ಲೇಷಿಸಬೇಕೆಂದು ತೋರುತ್ತದೆಯೇ? ಬೆಲೆಗಳು ಬದಲಾಯಿಸಬಹುದೇ? ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನೀವು ಬಹುಪದ ರಿಗ್ರೆಷನ್ ಪ್ರಯತ್ನಿಸಬಹುದು. + +✅ ಬಹುಪದಗಳು ಗಣಿತೀಯ ಅಭಿವ್ಯಕ್ತಿಗಳು, ಅವು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಚರಗಳು ಮತ್ತು ಸಹಗುಣಕಗಳನ್ನು ಹೊಂದಿರಬಹುದು + +ಬಹುಪದ ರಿಗ್ರೆಷನ್ ಅರೇಖೀಯವಲ್ಲದ ಡೇಟಾವನ್ನು ಉತ್ತಮವಾಗಿ ಹೊಂದಿಸಲು ವಕ್ರ ರೇಖೆಯನ್ನು ರಚಿಸುತ್ತದೆ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು ಇನ್‌ಪುಟ್ ಡೇಟಾದಲ್ಲಿ ಚದರ `DayOfYear` ಚರವನ್ನು ಸೇರಿಸಿದರೆ, ನಾವು ಡೇಟಾವನ್ನು ಪ್ಯಾರಾಬೋಲಿಕ್ ವಕ್ರದಿಂದ ಹೊಂದಿಸಬಹುದು, ಅದು ವರ್ಷದಲ್ಲಿ ಒಂದು ನಿರ್ದಿಷ್ಟ ಬಿಂದುವಿನಲ್ಲಿ ಕನಿಷ್ಠ ಮೌಲ್ಯ ಹೊಂದಿರುತ್ತದೆ. + +ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಸಹಾಯಕ [ಪೈಪ್‌ಲೈನ್ API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ಅನ್ನು ಒಳಗೊಂಡಿದೆ, ಇದು ಡೇಟಾ ಪ್ರಕ್ರಿಯೆಯ ವಿವಿಧ ಹಂತಗಳನ್ನು ಒಟ್ಟಿಗೆ ಸಂಯೋಜಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. **ಪೈಪ್‌ಲೈನ್** ಎಂದರೆ **ಅಂದಾಜುಕಾರರ** ಸರಪಳಿ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು ಮೊದಲು ಬಹುಪದ ಲಕ್ಷಣಗಳನ್ನು ನಮ್ಮ ಮಾದರಿಯಲ್ಲಿ ಸೇರಿಸುವ, ನಂತರ ರಿಗ್ರೆಷನ್ ತರಬೇತಿ ನೀಡುವ ಪೈಪ್‌ಲೈನ್ ರಚಿಸುವೆವು: + +```python +from sklearn.preprocessing import PolynomialFeatures +from sklearn.pipeline import make_pipeline + +pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) + +pipeline.fit(X_train,y_train) +``` + +`PolynomialFeatures(2)` ಬಳಸುವುದು ಎಂದರೆ ನಾವು ಇನ್‌ಪುಟ್ ಡೇಟಾದಿಂದ ಎಲ್ಲಾ ದ್ವಿತೀಯ ದರ್ಜೆಯ ಬಹುಪದಗಳನ್ನು ಸೇರಿಸುವೆವು. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ ಇದು ಕೇವಲ `DayOfYear`2 ಅರ್ಥವಾಗುತ್ತದೆ, ಆದರೆ ಎರಡು ಇನ್‌ಪುಟ್ ಚರಗಳು X ಮತ್ತು Y ಇದ್ದರೆ, ಇದು X2, XY ಮತ್ತು Y2 ಸೇರಿಸುತ್ತದೆ. ನಾವು ಹೆಚ್ಚಿನ ದರ್ಜೆಯ ಬಹುಪದಗಳನ್ನು ಕೂಡ ಬಳಸಬಹುದು. + +ಪೈಪ್‌ಲೈನ್‌ಗಳನ್ನು ಮೂಲ `LinearRegression` ವಸ್ತುವಿನಂತೆ ಬಳಸಬಹುದು, ಅಂದರೆ ನಾವು ಪೈಪ್‌ಲೈನ್ ಅನ್ನು `fit` ಮಾಡಬಹುದು, ನಂತರ `predict` ಬಳಸಿ ಭವಿಷ್ಯವಾಣಿ ಫಲಿತಾಂಶಗಳನ್ನು ಪಡೆಯಬಹುದು. ಇಲ್ಲಿ ಪರೀಕ್ಷಾ ಡೇಟಾ ಮತ್ತು ಅಂದಾಜು ವಕ್ರವನ್ನು ತೋರಿಸುವ ಗ್ರಾಫ್ ಇದೆ: + +Polynomial regression + +ಬಹುಪದ ರಿಗ್ರೆಷನ್ ಬಳಸಿ, ನಾವು ಸ್ವಲ್ಪ ಕಡಿಮೆ MSE ಮತ್ತು ಹೆಚ್ಚು ನಿರ್ಧಾರ ಸಹಗುಣಕವನ್ನು ಪಡೆಯಬಹುದು, ಆದರೆ ಬಹಳಷ್ಟು ಅಲ್ಲ. ನಾವು ಇತರ ಲಕ್ಷಣಗಳನ್ನು ಪರಿಗಣಿಸಬೇಕಾಗಿದೆ! + +> ನೀವು ನೋಡಬಹುದು, ಕನಿಷ್ಠ ಕಂಬಳಿ ಬೆಲೆಗಳು ಹ್ಯಾಲೋವೀನ್ ಸುತ್ತಲೂ ಕಂಡುಬರುತ್ತವೆ. ಇದನ್ನು ನೀವು ಹೇಗೆ ವಿವರಿಸಬಹುದು? + +🎃 ಅಭಿನಂದನೆಗಳು, ನೀವು ಈಗ ಪೈ ಕಂಬಳಿಗಳ ಬೆಲೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಸಹಾಯ ಮಾಡುವ ಮಾದರಿಯನ್ನು ರಚಿಸಿದ್ದೀರಿ. ನೀವು ಬಹುಶಃ ಎಲ್ಲಾ ಕಂಬಳಿ ಪ್ರಕಾರಗಳಿಗೆ ಇದೇ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸಬಹುದು, ಆದರೆ ಅದು ಕಷ್ಟಕರವಾಗಬಹುದು. ಈಗ ನಾವು ನಮ್ಮ ಮಾದರಿಯಲ್ಲಿ ಕಂಬಳಿ ಪ್ರಭೇದವನ್ನು ಹೇಗೆ ಪರಿಗಣಿಸಬೇಕೆಂದು ಕಲಿಯೋಣ! + +## ವರ್ಗೀಕೃತ ಲಕ್ಷಣಗಳು + +ಆದರ್ಶ ಜಗತ್ತಿನಲ್ಲಿ, ನಾವು ಒಂದೇ ಮಾದರಿಯನ್ನು ಬಳಸಿಕೊಂಡು ವಿಭಿನ್ನ ಕಂಬಳಿ ಪ್ರಭೇದಗಳ ಬೆಲೆಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಯಸುತ್ತೇವೆ. ಆದರೆ, `Variety` ಕಾಲಮ್ `Month` ಮುಂತಾದ ಕಾಲಮ್‌ಗಳಿಗಿಂತ ಸ್ವಲ್ಪ ವಿಭಿನ್ನವಾಗಿದೆ, ಏಕೆಂದರೆ ಅದು ಅಂಕಿ-ಅಂಶಗಳಲ್ಲದ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿದೆ. ಇಂತಹ ಕಾಲಮ್‌ಗಳನ್ನು **ವರ್ಗೀಕೃತ** ಎಂದು ಕರೆಯುತ್ತಾರೆ. + +[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") + +> 🎥 ವರ್ಗೀಕೃತ ಲಕ್ಷಣಗಳನ್ನು ಬಳಸುವ ಬಗ್ಗೆ ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೋ ಅವಲೋಕನಕ್ಕಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. + +ಇಲ್ಲಿ ನೀವು ಪ್ರಭೇದದ ಮೇಲೆ ಸರಾಸರಿ ಬೆಲೆ ಹೇಗೆ ಅವಲಂಬಿತವಾಗಿದೆ ಎಂದು ನೋಡಬಹುದು: + +Average price by variety + +ಪ್ರಭೇದವನ್ನು ಪರಿಗಣಿಸಲು, ಮೊದಲು ಅದನ್ನು ಅಂಕಿ ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸಬೇಕಾಗುತ್ತದೆ, ಅಥವಾ **ಎನ್‌ಕೋಡ್** ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಇದನ್ನು ಮಾಡಲು ಹಲವಾರು ವಿಧಾನಗಳಿವೆ: + +* ಸರಳ **ಅಂಕಿ ಎನ್‌ಕೋಡಿಂಗ್** ವಿಭಿನ್ನ ಪ್ರಭೇದಗಳ ಟೇಬಲ್ ರಚಿಸಿ, ನಂತರ ಆ ಟೇಬಲ್‌ನಲ್ಲಿನ ಸೂಚ್ಯಂಕದಿಂದ ಪ್ರಭೇದದ ಹೆಸರನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ಇದು ರೇಖೀಯ ರಿಗ್ರೆಷನ್‌ಗೆ ಉತ್ತಮ ಐಡಿಯಾ ಅಲ್ಲ, ಏಕೆಂದರೆ ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಸೂಚ್ಯಂಕದ ನಿಜವಾದ ಅಂಕಿ ಮೌಲ್ಯವನ್ನು ತೆಗೆದುಕೊಂಡು, ಅದನ್ನು ಫಲಿತಾಂಶಕ್ಕೆ ಸೇರಿಸಿ, ಕೆಲವು ಸಹಗುಣಕದಿಂದ ಗುಣಿಸುತ್ತದೆ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ಸೂಚ್ಯಂಕ ಸಂಖ್ಯೆ ಮತ್ತು ಬೆಲೆಯ ನಡುವಿನ ಸಂಬಂಧ ಸ್ಪಷ್ಟವಾಗಿ ಅರೇಖೀಯವಲ್ಲ, ಸೂಚ್ಯಂಕಗಳು ನಿರ್ದಿಷ್ಟ ಕ್ರಮದಲ್ಲಿ ಇರಿಸಿದರೂ ಸಹ. +* **ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡಿಂಗ್** `Variety` ಕಾಲಮ್ ಅನ್ನು 4 ವಿಭಿನ್ನ ಕಾಲಮ್‌ಗಳಾಗಿ ಬದಲಾಯಿಸುತ್ತದೆ, ಪ್ರತಿ ಪ್ರಭೇದಕ್ಕೆ ಒಂದು ಕಾಲಮ್. ಪ್ರತಿ ಕಾಲಮ್‌ನಲ್ಲಿ, ಸಂಬಂಧಿಸಿದ ಸಾಲು ಆ ಪ್ರಭೇದಕ್ಕೆ ಸೇರಿದರೆ `1` ಇರುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ `0`. ಇದರರ್ಥ, ರೇಖೀಯ ರಿಗ್ರೆಷನ್‌ನಲ್ಲಿ ನಾಲ್ಕು ಸಹಗುಣಕಗಳು ಇರುತ್ತವೆ, ಪ್ರತಿ ಕಂಬಳಿ ಪ್ರಭೇದಕ್ಕೆ ಒಂದು, ಅದು ಆ ಪ್ರಭೇದಕ್ಕೆ "ಆರಂಭಿಕ ಬೆಲೆ" (ಅಥವಾ "ಹೆಚ್ಚುವರಿ ಬೆಲೆ") ಗೆ ಹೊಣೆಗಾರ. + +ಕೆಳಗಿನ ಕೋಡ್ ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡಿಂಗ್ ಹೇಗೆ ಮಾಡಬಹುದು ಎಂದು ತೋರಿಸುತ್ತದೆ: + +```python +pd.get_dummies(new_pumpkins['Variety']) +``` + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 + +ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡ್ ಮಾಡಿದ ಪ್ರಭೇದವನ್ನು ಇನ್‌ಪುಟ್ ಆಗಿ ಬಳಸಿಕೊಂಡು ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ತರಬೇತಿ ನೀಡಲು, ನಾವು ಸರಿಯಾಗಿ `X` ಮತ್ತು `y` ಡೇಟಾವನ್ನು ಪ್ರಾರಂಭಿಸಬೇಕಾಗುತ್ತದೆ: + +```python +X = pd.get_dummies(new_pumpkins['Variety']) +y = new_pumpkins['Price'] +``` + +ಮತ್ತೆ ಉಳಿದ ಕೋಡ್ ಮೇಲಿನ ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ತರಬೇತಿಗೆ ಬಳಸಿದಂತೆಯೇ ಇದೆ. ನೀವು ಪ್ರಯತ್ನಿಸಿದರೆ, ಸರಾಸರಿ ಚದರ ದೋಷವು ಸುಮಾರು ಅದೇ ಆಗಿದ್ದು, ಆದರೆ ನಿರ್ಧಾರ ಸಹಗುಣಕವು ಬಹಳ ಹೆಚ್ಚು (~77%) ಆಗಿದೆ ಎಂದು ಕಾಣುತ್ತೀರಿ. ಇನ್ನೂ ನಿಖರವಾದ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಪಡೆಯಲು, ನಾವು ಇನ್ನಷ್ಟು ವರ್ಗೀಕೃತ ಲಕ್ಷಣಗಳನ್ನು ಮತ್ತು ಅಂಕಿ ಲಕ್ಷಣಗಳನ್ನು, ಉದಾಹರಣೆಗೆ `Month` ಅಥವಾ `DayOfYear` ಅನ್ನು ಪರಿಗಣಿಸಬಹುದು. ಒಂದು ದೊಡ್ಡ ಲಕ್ಷಣಗಳ ಸರಣಿಯನ್ನು ಪಡೆಯಲು, ನಾವು `join` ಬಳಸಬಹುದು: + +```python +X = pd.get_dummies(new_pumpkins['Variety']) \ + .join(new_pumpkins['Month']) \ + .join(pd.get_dummies(new_pumpkins['City'])) \ + .join(pd.get_dummies(new_pumpkins['Package'])) +y = new_pumpkins['Price'] +``` + +ಇಲ್ಲಿ ನಾವು `City` ಮತ್ತು `Package` ಪ್ರಕಾರವನ್ನು ಕೂಡ ಪರಿಗಣಿಸುತ್ತೇವೆ, ಇದು ನಮಗೆ MSE 2.84 (10%) ಮತ್ತು ನಿರ್ಧಾರ 0.94 ನೀಡುತ್ತದೆ! + +## ಎಲ್ಲವನ್ನೂ ಒಟ್ಟಿಗೆ ಸೇರಿಸುವುದು + +ಉತ್ತಮ ಮಾದರಿಯನ್ನು ಮಾಡಲು, ನಾವು ಮೇಲಿನ ಉದಾಹರಣೆಯಿಂದ ಸಂಯೋಜಿತ (ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡ್ ಮಾಡಿದ ವರ್ಗೀಕೃತ + ಅಂಕಿ) ಡೇಟಾವನ್ನು ಬಹುಪದ ರಿಗ್ರೆಷನ್ ಜೊತೆಗೆ ಬಳಸಬಹುದು. ನಿಮ್ಮ ಅನುಕೂಲಕ್ಕಾಗಿ ಸಂಪೂರ್ಣ ಕೋಡ್ ಇಲ್ಲಿದೆ: + +```python +# ತರಬೇತಿ ಡೇಟಾವನ್ನು ಸಜ್ಜುಗೊಳಿಸಿ +X = pd.get_dummies(new_pumpkins['Variety']) \ + .join(new_pumpkins['Month']) \ + .join(pd.get_dummies(new_pumpkins['City'])) \ + .join(pd.get_dummies(new_pumpkins['Package'])) +y = new_pumpkins['Price'] + +# ತರಬೇತಿ-ಪರೀಕ್ಷೆ ವಿಭಜನೆ ಮಾಡಿ +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + +# ಪೈಪ್‌ಲೈನ್ ಅನ್ನು ಸಜ್ಜುಗೊಳಿಸಿ ಮತ್ತು ತರಬೇತಿ ನೀಡಿ +pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) +pipeline.fit(X_train,y_train) + +# ಪರೀಕ್ಷಾ ಡೇಟಾದ ಫಲಿತಾಂಶಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ +pred = pipeline.predict(X_test) + +# MSE ಮತ್ತು ನಿರ್ಧಾರವನ್ನು ಲೆಕ್ಕಹಾಕಿ +mse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +ಇದು ನಮಗೆ ಸುಮಾರು 97% ನಿರ್ಧಾರ ಸಹಗುಣಕ ಮತ್ತು MSE=2.23 (~8% ಭವಿಷ್ಯವಾಣಿ ದೋಷ) ನೀಡಬೇಕು. + +| ಮಾದರಿ | MSE | ನಿರ್ಧಾರ | +|-------|-----|---------| +| `DayOfYear` ರೇಖೀಯ | 2.77 (17.2%) | 0.07 | +| `DayOfYear` ಬಹುಪದ | 2.73 (17.0%) | 0.08 | +| `Variety` ರೇಖೀಯ | 5.24 (19.7%) | 0.77 | +| ಎಲ್ಲಾ ಲಕ್ಷಣಗಳು ರೇಖೀಯ | 2.84 (10.5%) | 0.94 | +| ಎಲ್ಲಾ ಲಕ್ಷಣಗಳು ಬಹುಪದ | 2.23 (8.25%) | 0.97 | + +🏆 ಚೆನ್ನಾಗಿದೆ! ನೀವು ಒಂದೇ ಪಾಠದಲ್ಲಿ ನಾಲ್ಕು ರಿಗ್ರೆಷನ್ ಮಾದರಿಗಳನ್ನು ರಚಿಸಿ, ಮಾದರಿ ಗುಣಮಟ್ಟವನ್ನು 97% ಗೆ ಸುಧಾರಿಸಿದ್ದೀರಿ. ರಿಗ್ರೆಷನ್‌ನ ಅಂತಿಮ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ವರ್ಗಗಳನ್ನು ನಿರ್ಧರಿಸಲು ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಷನ್ ಬಗ್ಗೆ ಕಲಿಯುತ್ತೀರಿ. + +--- +## 🚀ಸವಾಲು + +ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ವಿವಿಧ ಚರಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ, ಸಹಸಂಬಂಧವು ಮಾದರಿ ನಿಖರತೆಗೆ ಹೇಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ ಎಂದು ನೋಡಿ. + +## [ಪಾಠೋತ್ತರ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಈ ಪಾಠದಲ್ಲಿ ನಾವು ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಬಗ್ಗೆ ಕಲಿತೆವು. ಇನ್ನೂ ಕೆಲವು ಪ್ರಮುಖ ರಿಗ್ರೆಷನ್ ಪ್ರಕಾರಗಳಿವೆ. ಸ್ಟೆಪ್ವೈಸ್, ರಿಡ್ಜ್, ಲಾಸ್ಸೋ ಮತ್ತು ಎಲಾಸ್ಟಿಕ್‌ನೆಟ್ ತಂತ್ರಗಳನ್ನು ಓದಿ ತಿಳಿಯಿರಿ. ಇನ್ನಷ್ಟು ಕಲಿಯಲು ಉತ್ತಮ ಕೋರ್ಸ್ [ಸ್ಟ್ಯಾನ್‌ಫೋರ್ಡ್ ಸ್ಟಾಟಿಸ್ಟಿಕಲ್ ಲರ್ನಿಂಗ್ ಕೋರ್ಸ್](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ಆಗಿದೆ. + +## ಹುದ್ದೆ + +[ಮಾದರಿ ರಚಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/3-Linear/assignment.md b/translations/kn/2-Regression/3-Linear/assignment.md new file mode 100644 index 000000000..83238cc96 --- /dev/null +++ b/translations/kn/2-Regression/3-Linear/assignment.md @@ -0,0 +1,27 @@ + +# ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ರಚಿಸಿ + +## ಸೂಚನೆಗಳು + +ಈ ಪಾಠದಲ್ಲಿ ನೀವು ಲೀನಿಯರ್ ಮತ್ತು ಪಾಲಿನೋಮಿಯಲ್ ರೆಗ್ರೆಶನ್ ಎರಡನ್ನೂ ಬಳಸಿಕೊಂಡು ಮಾದರಿಯನ್ನು ಹೇಗೆ ನಿರ್ಮಿಸುವುದು ಎಂದು ತೋರಿಸಲಾಗಿದೆ. ಈ ಜ್ಞಾನವನ್ನು ಬಳಸಿಕೊಂಡು, ಒಂದು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಹುಡುಕಿ ಅಥವಾ Scikit-learn ನ ಒಳಗೊಂಡಿರುವ ಸೆಟ್‌ಗಳಲ್ಲಿ ಒಂದನ್ನು ಬಳಸಿಕೊಂಡು ಹೊಸ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ. ನೀವು ಆಯ್ಕೆಮಾಡಿದ ತಂತ್ರವನ್ನು ನಿಮ್ಮ ನೋಟ್‌ಬುಕ್‌ನಲ್ಲಿ ವಿವರಿಸಿ, ಮತ್ತು ನಿಮ್ಮ ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಪ್ರದರ್ಶಿಸಿ. ಅದು ನಿಖರವಾಗದಿದ್ದರೆ, ಕಾರಣವನ್ನು ವಿವರಿಸಿ. + +## ರೂಬ್ರಿಕ್ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | ------------------------------------------------------------ | -------------------------- | ------------------------------- | +| | ಚೆನ್ನಾಗಿ ದಾಖಲೆ ಮಾಡಲಾದ ಪೂರ್ಣ ನೋಟ್‌ಬುಕ್ ಅನ್ನು ಪ್ರಸ್ತುತಪಡಿಸುತ್ತದೆ | ಪರಿಹಾರ ಅಪೂರ್ಣವಾಗಿದೆ | ಪರಿಹಾರ ದೋಷಪೂರ್ಣ ಅಥವಾ ದೋಷಪೂರಿತವಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/3-Linear/notebook.ipynb b/translations/kn/2-Regression/3-Linear/notebook.ipynb new file mode 100644 index 000000000..bcf122488 --- /dev/null +++ b/translations/kn/2-Regression/3-Linear/notebook.ipynb @@ -0,0 +1,128 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ಕಂಬಳಿಪಾಯ ಬೆಲೆ\n", + "\n", + "ಅಗತ್ಯವಾದ ಗ್ರಂಥಾಲಯಗಳು ಮತ್ತು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ. ಡೇಟಾವಿನ ಉಪಸಮೂಹವನ್ನು ಹೊಂದಿರುವ ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಡೇಟಾವನ್ನು ಪರಿವರ್ತಿಸಿ:\n", + "\n", + "- ಬಸ್ಸೆಲ್ ಪ್ರಕಾರ ಬೆಲೆ ನಿಗದಿಗೊಳಿಸಿದ ಕಂಬಳಿಪಾಯಗಳನ್ನು ಮಾತ್ರ ಪಡೆಯಿರಿ\n", + "- ದಿನಾಂಕವನ್ನು ತಿಂಗಳಿಗೆ ಪರಿವರ್ತಿಸಿ\n", + "- ಬೆಲೆಯನ್ನು ಉನ್ನತ ಮತ್ತು ಕಡಿಮೆ ಬೆಲೆಯ ಸರಾಸರಿ ಎಂದು ಲೆಕ್ಕಹಾಕಿ\n", + "- ಬೆಲೆಯನ್ನು ಬಸ್ಸೆಲ್ ಪ್ರಮಾಣದ ಪ್ರಕಾರ ಪ್ರತಿಬಿಂಬಿಸುವಂತೆ ಪರಿವರ್ತಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from datetime import datetime\n", + "\n", + "pumpkins = pd.read_csv('../data/US-pumpkins.csv')\n", + "\n", + "pumpkins.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n", + "\n", + "columns_to_select = ['Package', 'Variety', 'City Name', 'Low Price', 'High Price', 'Date']\n", + "pumpkins = pumpkins.loc[:, columns_to_select]\n", + "\n", + "price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2\n", + "\n", + "month = pd.DatetimeIndex(pumpkins['Date']).month\n", + "day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)\n", + "\n", + "new_pumpkins = pd.DataFrame(\n", + " {'Month': month, \n", + " 'DayOfYear' : day_of_year, \n", + " 'Variety': pumpkins['Variety'], \n", + " 'City': pumpkins['City Name'], \n", + " 'Package': pumpkins['Package'], \n", + " 'Low Price': pumpkins['Low Price'],\n", + " 'High Price': pumpkins['High Price'], \n", + " 'Price': price})\n", + "\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/1.1\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price*2\n", + "\n", + "new_pumpkins.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಮೂಲಭೂತ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ನಮಗೆ ಆಗಸ್ಟ್‌ನಿಂದ ಡಿಸೆಂಬರ್‌ವರೆಗೆ ಮಾತ್ರ ತಿಂಗಳ ಡೇಟಾ ಇದೆ ಎಂದು ನೆನಪಿಸುತ್ತದೆ. ರೇಖೀಯ ರೀತಿಯಲ್ಲಿ ನಿರ್ಣಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ನಾವು ಬಹುಶಃ ಹೆಚ್ಚು ಡೇಟಾ ಬೇಕಾಗಬಹುದು.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.scatter('Month','Price',data=new_pumpkins)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "plt.scatter('DayOfYear','Price',data=new_pumpkins)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3-final" + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "b032d371c75279373507f003439a577e", + "translation_date": "2025-12-19T16:17:43+00:00", + "source_file": "2-Regression/3-Linear/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/2-Regression/3-Linear/solution/Julia/README.md b/translations/kn/2-Regression/3-Linear/solution/Julia/README.md new file mode 100644 index 000000000..44931346e --- /dev/null +++ b/translations/kn/2-Regression/3-Linear/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb b/translations/kn/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb new file mode 100644 index 000000000..cecb5629e --- /dev/null +++ b/translations/kn/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb @@ -0,0 +1,1086 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_3-R.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "5015d65d61ba75a223bfc56c273aa174", + "translation_date": "2025-12-19T16:27:41+00:00", + "source_file": "2-Regression/3-Linear/solution/R/lesson_3-R.ipynb", + "language_code": "kn" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ: ರೇಖೀಯ ಮತ್ತು ಬಹುಪದ ರೆಗ್ರೆಶನ್ ಮಾದರಿಗಳು\n" + ], + "metadata": { + "id": "EgQw8osnsUV-" + } + }, + { + "cell_type": "markdown", + "source": [ + "## ಲೀನಿಯರ್ ಮತ್ತು ಪೋಲಿನೋಮಿಯಲ್ ರಿಗ್ರೆಶನ್ ಫಾರ್ ಪಂಪ್ಕಿನ್ ಪ್ರೈಸಿಂಗ್ - ಪಾಠ 3\n", + "

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

ಡಾಸಾನಿ ಮಡಿಪಳ್ಳಿ ಅವರ ಇನ್ಫೋಗ್ರಾಫಿಕ್
\n", + "\n", + "\n", + "\n", + "\n", + "#### ಪರಿಚಯ\n", + "\n", + "ಈವರೆಗೆ ನೀವು ರಿಗ್ರೆಶನ್ ಎಂದರೇನು ಎಂಬುದನ್ನು ಪಂಪ್ಕಿನ್ ಪ್ರೈಸಿಂಗ್ ಡೇಟಾಸೆಟ್‌ನಿಂದ ಸಂಗ್ರಹಿಸಿದ ಮಾದರಿ ಡೇಟಾ ಮೂಲಕ ಅನ್ವೇಷಣೆ ಮಾಡಿದ್ದೀರಿ, ಇದನ್ನು ನಾವು ಈ ಪಾಠದಲ್ಲಿ ಬಳಸಲಿದ್ದೇವೆ. ನೀವು ಇದನ್ನು `ggplot2` ಬಳಸಿ ದೃಶ್ಯೀಕರಿಸಿದ್ದೀರಿ.💪\n", + "\n", + "ಈಗ ನೀವು ಎಂಎಲ್ ರಿಗ್ರೆಶನ್‌ನಲ್ಲಿ ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ಹೋಗಲು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ. ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಎರಡು ವಿಧದ ರಿಗ್ರೆಶನ್‌ಗಳ ಬಗ್ಗೆ ಹೆಚ್ಚು ತಿಳಿಯಲಿದ್ದೀರಿ: *ಮೂಲಭೂತ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್* ಮತ್ತು *ಪೋಲಿನೋಮಿಯಲ್ ರಿಗ್ರೆಶನ್*, ಜೊತೆಗೆ ಈ ತಂತ್ರಜ್ಞಾನಗಳ ಹಿಂದೆ ಇರುವ ಕೆಲವು ಗಣಿತ.\n", + "\n", + "> ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ, ನಾವು ಗಣಿತದ ಕನಿಷ್ಠ ಜ್ಞಾನವನ್ನು ಊಹಿಸುತ್ತೇವೆ ಮತ್ತು ಇತರ ಕ್ಷೇತ್ರಗಳಿಂದ ಬರುವ ವಿದ್ಯಾರ್ಥಿಗಳಿಗೆ ಇದನ್ನು ಸುಲಭಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ, ಆದ್ದರಿಂದ ಟಿಪ್ಪಣಿಗಳು, 🧮 ಕರೆಗಳು, ಚಿತ್ರಗಳು ಮತ್ತು ಇತರ ಕಲಿಕಾ ಸಾಧನಗಳನ್ನು ಗಮನಿಸಿ.\n", + "\n", + "#### ತಯಾರಿ\n", + "\n", + "ಒಂದು ಸ್ಮರಣಿಕೆಗಾಗಿ, ನೀವು ಈ ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡುತ್ತಿದ್ದೀರಿ ಇದರಿಂದ ಅದಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಲು.\n", + "\n", + "- ಪಂಪ್ಕಿನ್‌ಗಳನ್ನು ಖರೀದಿಸಲು ಅತ್ಯುತ್ತಮ ಸಮಯ ಯಾವುದು?\n", + "\n", + "- ಒಂದು ಕೇಸ್ ಮಿನಿಯೇಚರ್ ಪಂಪ್ಕಿನ್‌ಗಳ ಬೆಲೆ ಎಷ್ಟು ನಿರೀಕ್ಷಿಸಬಹುದು?\n", + "\n", + "- ಅವುಗಳನ್ನು ಅರ್ಧ-ಬುಷೆಲ್ ಬಾಸ್ಕೆಟ್‌ಗಳಲ್ಲಿ ಖರೀದಿಸಬೇಕೇ ಅಥವಾ 1 1/9 ಬುಷೆಲ್ ಬಾಕ್ಸ್ ಮೂಲಕವೇ? ನಾವು ಈ ಡೇಟಾದ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಳಹದಿಯನ್ನು ಪರಿಶೀಲಿಸೋಣ.\n", + "\n", + "ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು ಒಂದು `ಟಿಬಲ್` (ಡೇಟಾ ಫ್ರೇಮ್‌ನ ಆಧುನಿಕ ಮರುಕಲ್ಪನೆ) ರಚಿಸಿ ಮೂಲ ಡೇಟಾಸೆಟ್‌ನ ಭಾಗವನ್ನು ತುಂಬಿದ್ದೀರಿ, ಬೆಲೆಯನ್ನು ಬುಷೆಲ್ ಪ್ರಕಾರ ಮಾನಕೀಕರಿಸಿದ್ದೀರಿ. ಆದರೂ, ನೀವು ಸುಮಾರು 400 ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಮಾತ್ರ ಸಂಗ್ರಹಿಸಬಹುದಾಗಿತ್ತು ಮತ್ತು ಅದು ಕೇವಲ ಶರದೃತು ತಿಂಗಳುಗಳಿಗೆ ಮಾತ್ರ. ಡೇಟಾದ ಸ್ವಭಾವದ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ವಿವರಗಳನ್ನು ಪಡೆಯಲು ಅದನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುವ ಮೂಲಕ ನೋಡೋಣವೇ? ನೋಡೋಣ... 🕵️‍♀️\n", + "\n", + "ಈ ಕಾರ್ಯಕ್ಕಾಗಿ, ನಾವು ಕೆಳಗಿನ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಅಗತ್ಯವಿದೆ:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) ಒಂದು [R ಪ್ಯಾಕೇಜ್‌ಗಳ ಸಂಗ್ರಹ](https://www.tidyverse.org/packages) ಆಗಿದ್ದು, ಡೇಟಾ ವಿಜ್ಞಾನವನ್ನು ವೇಗವಾಗಿ, ಸುಲಭವಾಗಿ ಮತ್ತು ಮನರಂಜನೆಯಾಗಿ ಮಾಡುತ್ತದೆ!\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ಫ್ರೇಮ್ವರ್ಕ್ ಒಂದು [ಪ್ಯಾಕೇಜ್‌ಗಳ ಸಂಗ್ರಹ](https://www.tidymodels.org/packages/) ಆಗಿದ್ದು, ಮಾದರೀಕರಣ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕಾಗಿ.\n", + "\n", + "- `janitor`: [janitor ಪ್ಯಾಕೇಜ್](https://github.com/sfirke/janitor) ಕಳಪೆ ಡೇಟಾವನ್ನು ಪರಿಶೀಲಿಸಲು ಮತ್ತು ಸ್ವಚ್ಛಗೊಳಿಸಲು ಸರಳ ಸಾಧನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.\n", + "\n", + "- `corrplot`: [corrplot ಪ್ಯಾಕೇಜ್](https://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html) ಸಹಾಯದಿಂದ ಸಹಸಂಬಂಧ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಮೇಲೆ ದೃಶ್ಯಾತ್ಮಕ ಅನ್ವೇಷಣಾ ಸಾಧನವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಚರಗಳ ಪುನರ್‌ಕ್ರಮಣೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ ಮತ್ತು ಚರಗಳ ನಡುವೆ ಮರೆಮಾಚಿದ ಮಾದರಿಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n", + "\n", + "ನೀವು ಅವುಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬಹುದು:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"janitor\", \"corrplot\"))`\n", + "\n", + "ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ಈ ಘಟಕವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜ್‌ಗಳಿದ್ದರೆ ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಅವು ಇಲ್ಲದಿದ್ದರೆ ನಿಮ್ಮಿಗಾಗಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ.\n" + ], + "metadata": { + "id": "WqQPS1OAsg3H" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "suppressWarnings(if (!require(\"pacman\")) install.packages(\"pacman\"))\n", + "\n", + "pacman::p_load(tidyverse, tidymodels, janitor, corrplot)" + ], + "outputs": [], + "metadata": { + "id": "tA4C2WN3skCf", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "c06cd805-5534-4edc-f72b-d0d1dab96ac0" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನಾವು ನಂತರ ಈ ಅದ್ಭುತ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ ನಮ್ಮ ಪ್ರಸ್ತುತ R ಸೆಷನ್‌ನಲ್ಲಿ ಲಭ್ಯವಿರಿಸುವೆವು. (ಇದು ಕೇವಲ ಉದಾಹರಣೆಗೆ, `pacman::p_load()` ಈಗಾಗಲೇ ಅದನ್ನು ನಿಮ್ಮಿಗಾಗಿ ಮಾಡಿದೆ)\n", + "\n", + "## 1. ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ರೇಖೆ\n", + "\n", + "ನೀವು ಪಾಠ 1 ರಲ್ಲಿ ಕಲಿತಂತೆ, ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ವ್ಯಾಯಾಮದ ಗುರಿ ಎಂದರೆ *ಉತ್ತಮ ಹೊಂದಾಣಿಕೆಯ* *ರೇಖೆಯನ್ನು* ಚಿತ್ರಿಸಲು ಸಾಧ್ಯವಾಗುವುದು:\n", + "\n", + "- **ಚರಗಳ ಸಂಬಂಧಗಳನ್ನು ತೋರಿಸುವುದು**. ಚರಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ತೋರಿಸುವುದು\n", + "\n", + "- **ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದು**. ಹೊಸ ಡೇಟಾ ಪಾಯಿಂಟ್ ಆ ರೇಖೆಯ ಸಂಬಂಧದಲ್ಲಿ ಎಲ್ಲಿ ಬಿದ್ದೀತು ಎಂಬುದರ ಬಗ್ಗೆ ನಿಖರ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದು.\n", + "\n", + "ಈ ರೀತಿಯ ರೇಖೆಯನ್ನು ಚಿತ್ರಿಸಲು, ನಾವು **ಲೀಸ್ಟ್-ಸ್ಕ್ವೇರ್ಸ್ ರಿಗ್ರೆಷನ್** ಎಂಬ ಸಂಖ್ಯಾಶಾಸ್ತ್ರೀಯ ತಂತ್ರವನ್ನು ಬಳಸುತ್ತೇವೆ. `least-squares` ಎಂಬ ಪದವು ಅರ್ಥ ಮಾಡಿಕೊಳ್ಳುವುದು, ರಿಗ್ರೆಷನ್ ರೇಖೆಯ ಸುತ್ತಲೂ ಇರುವ ಎಲ್ಲಾ ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ವರ್ಗಮೂಲ ಮಾಡಿ ನಂತರ ಸೇರಿಸುವುದು. ಆದರ್ಶವಾಗಿ, ಅಂತಿಮ ಮೊತ್ತ ಸಾಧ್ಯವಾದಷ್ಟು ಕಡಿಮೆ ಇರಬೇಕು, ಏಕೆಂದರೆ ನಾವು ತಪ್ಪುಗಳ ಸಂಖ್ಯೆ ಕಡಿಮೆ ಇರಬೇಕೆಂದು ಬಯಸುತ್ತೇವೆ, ಅಂದರೆ `least-squares`. ಆದ್ದರಿಂದ, ಉತ್ತಮ ಹೊಂದಾಣಿಕೆಯ ರೇಖೆ ಎಂದರೆ ವರ್ಗಮೂಲ ತಪ್ಪುಗಳ ಮೊತ್ತಕ್ಕೆ ಅತ್ಯಂತ ಕಡಿಮೆ ಮೌಲ್ಯ ನೀಡುವ ರೇಖೆ - ಆದ್ದರಿಂದ ಇದರ ಹೆಸರು *ಲೀಸ್ಟ್ ಸ್ಕ್ವೇರ್ಸ್ ರಿಗ್ರೆಷನ್*.\n", + "\n", + "ನಾವು ಈ ರೇಖೆಯನ್ನು ಮಾಡುವುದು ಏಕೆಂದರೆ ನಾವು ನಮ್ಮ ಎಲ್ಲಾ ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳಿಂದ ಕನಿಷ್ಠ ಒಟ್ಟು ದೂರವಿರುವ ರೇಖೆಯನ್ನು ಮಾದರಿಯಾಗಿಸಬೇಕೆಂದು ಬಯಸುತ್ತೇವೆ. ನಾವು ಮೊದಲು ವರ್ಗಮೂಲಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ ಏಕೆಂದರೆ ನಾವು ಅದರ ದಿಕ್ಕಿನ ಬದಲು ಅದರ ಪ್ರಮಾಣದ ಬಗ್ಗೆ ಚಿಂತಿಸುತ್ತೇವೆ.\n", + "\n", + "> **🧮 ಗಣಿತವನ್ನು ತೋರಿಸಿ**\n", + ">\n", + "> ಈ ರೇಖೆಯನ್ನು, *ಉತ್ತಮ ಹೊಂದಾಣಿಕೆಯ ರೇಖೆ* ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, [ಒಂದು ಸಮೀಕರಣದಿಂದ](https://en.wikipedia.org/wiki/Simple_linear_regression) ವ್ಯಕ್ತಪಡಿಸಬಹುದು:\n", + ">\n", + "> Y = a + bX\n", + ">\n", + "> `X` ಎಂದರೆ '`ವಿವರಣೆ ಚರ` ಅಥವಾ `ಭವಿಷ್ಯವಾಣಿ ಚರ`'. `Y` ಎಂದರೆ '`ಆಧಾರಿತ ಚರ` ಅಥವಾ `ಫಲಿತಾಂಶ`'. ರೇಖೆಯ ತಿರುವು `b` ಆಗಿದ್ದು, `a` ಯು y-ಅಂತರವನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಇದು `X = 0` ಆಗಿರುವಾಗ `Y` ಯ ಮೌಲ್ಯವನ್ನು ಸೂಚಿಸುತ್ತದೆ.\n", + ">\n", + "\n", + "> ![](../../../../../../2-Regression/3-Linear/solution/images/slope.png \"slope = $y/x$\")\n", + " ಜೆನ್ ಲೂಪರ್ ರಚಿಸಿದ ಇನ್ಫೋಗ್ರಾಫಿಕ್\n", + ">\n", + "> ಮೊದಲು, ತಿರುವು `b` ಅನ್ನು ಲೆಕ್ಕಹಾಕಿ.\n", + ">\n", + "> ಬೇರೆ ಪದಗಳಲ್ಲಿ, ನಮ್ಮ ಕಂಬಳಿಯ ಮೂಲ ಪ್ರಶ್ನೆಗೆ ಸಂಬಂಧಿಸಿದಂತೆ: \"ತಿಂಗಳ ಪ್ರಕಾರ ಕಂಬಳಿಯ ಬೆಲೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡು\", `X` ಬೆಲೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ ಮತ್ತು `Y` ಮಾರಾಟದ ತಿಂಗಳನ್ನು ಸೂಚಿಸುತ್ತದೆ.\n", + ">\n", + "> ![](../../../../../../translated_images/calculation.989aa7822020d9d0ba9fc781f1ab5192f3421be86ebb88026528aef33c37b0d8.kn.png)\n", + " ಜೆನ್ ಲೂಪರ್ ರಚಿಸಿದ ಇನ್ಫೋಗ್ರಾಫಿಕ್\n", + "> \n", + "> Y ಮೌಲ್ಯವನ್ನು ಲೆಕ್ಕಹಾಕಿ. ನೀವು ಸುಮಾರು \\$4 ಪಾವತಿಸುತ್ತಿದ್ದರೆ, ಅದು ಏಪ್ರಿಲ್ ಆಗಿರಬೇಕು!\n", + ">\n", + "> ರೇಖೆಯನ್ನು ಲೆಕ್ಕಹಾಕುವ ಗಣಿತವು ರೇಖೆಯ ತಿರುವನ್ನು ತೋರಿಸಬೇಕು, ಇದು ಅಂತರದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದ್ದು, ಅಂದರೆ `X = 0` ಆಗಿರುವಾಗ `Y` ಎಲ್ಲಿ ಇರುತ್ತದೆ ಎಂಬುದನ್ನು ಸೂಚಿಸುತ್ತದೆ.\n", + ">\n", + "> ಈ ಮೌಲ್ಯಗಳನ್ನು ಲೆಕ್ಕಹಾಕುವ ವಿಧಾನವನ್ನು ನೀವು [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ವೆಬ್‌ಸೈಟ್‌ನಲ್ಲಿ ನೋಡಬಹುದು. ಜೊತೆಗೆ [ಈ ಲೀಸ್ಟ್-ಸ್ಕ್ವೇರ್ಸ್ ಕ್ಯಾಲ್ಕ್ಯುಲೇಟರ್](https://www.mathsisfun.com/data/least-squares-calculator.html) ಗೆ ಭೇಟಿ ನೀಡಿ ಸಂಖ್ಯೆಗಳ ಮೌಲ್ಯಗಳು ರೇಖೆಯನ್ನು ಹೇಗೆ ಪ್ರಭಾವಿಸುತ್ತವೆ ಎಂದು ನೋಡಿ.\n", + "\n", + "ಅಷ್ಟು ಭಯಂಕರವಲ್ಲ, ಅಲ್ಲವೇ? 🤓\n", + "\n", + "#### ಸಹಸಂಬಂಧ\n", + "\n", + "ಮತ್ತೊಂದು ಪದವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಿದೆ ಅದು ನೀಡಲಾದ X ಮತ್ತು Y ಚರಗಳ ನಡುವಿನ **ಸಹಸಂಬಂಧ ಗುಣಾಂಕ**. ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ಬಳಸಿ, ನೀವು ಈ ಗುಣಾಂಕವನ್ನು ತ್ವರಿತವಾಗಿ ದೃಶ್ಯೀಕರಿಸಬಹುದು. ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳು ಸರಿಯಾದ ರೇಖೆಯಲ್ಲಿ ಸೆರೆಯಾದ ಪ್ಲಾಟ್‌ಗೆ ಹೆಚ್ಚಿನ ಸಹಸಂಬಂಧವಿರುತ್ತದೆ, ಆದರೆ X ಮತ್ತು Y ನಡುವೆ ಎಲ್ಲೆಡೆ ಸೆರೆಯಾದ ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳ ಪ್ಲಾಟ್‌ಗೆ ಕಡಿಮೆ ಸಹಸಂಬಂಧವಿರುತ್ತದೆ.\n", + "\n", + "ಒಂದು ಉತ್ತಮ ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಮಾದರಿ ಎಂದರೆ ಲೀಸ್ಟ್-ಸ್ಕ್ವೇರ್ಸ್ ರಿಗ್ರೆಷನ್ ವಿಧಾನವನ್ನು ಬಳಸಿ ರಿಗ್ರೆಷನ್ ರೇಖೆಯೊಂದಿಗೆ 1 ಗೆ ಹತ್ತಿರ (0 ಕಿಂತ ಹೆಚ್ಚು) ಇರುವ ಹೆಚ್ಚಿನ ಸಹಸಂಬಂಧ ಗುಣಾಂಕ ಹೊಂದಿರುವ ಮಾದರಿ.\n" + ], + "metadata": { + "id": "cdX5FRpvsoP5" + } + }, + { + "cell_type": "markdown", + "source": [ + "## **2. ಡೇಟಾ ಜೊತೆಗೆ ನೃತ್ಯ: ಮಾದರಿಗಾಗಿ ಬಳಸಲಾಗುವ ಡೇಟಾ ಫ್ರೇಮ್ ರಚನೆ**\n", + "\n", + "

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

@allison_horst ಅವರ ಕಲಾಕೃತಿ
\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "WdUKXk7Bs8-V" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಅಗತ್ಯ ಲೈಬ್ರರಿಗಳನ್ನು ಮತ್ತು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ. ಡೇಟಾವನ್ನು ಡೇಟಾ ಫ್ರೇಮ್‌ಗೆ ಪರಿವರ್ತಿಸಿ, ಇದರಲ್ಲಿ ಡೇಟಾದ ಉಪಸಮೂಹವಿದೆ:\n", + "\n", + "- ಬಸ್ಸೆಲ್ ಪ್ರಕಾರ ಬೆಲೆ ನಿಗದಿಪಡಿಸಿದ ಕಂಬಳಿಗಳನ್ನು ಮಾತ್ರ ಪಡೆಯಿರಿ\n", + "\n", + "- ದಿನಾಂಕವನ್ನು ತಿಂಗಳಾಗಿ ಪರಿವರ್ತಿಸಿ\n", + "\n", + "- ಬೆಲೆಯನ್ನು ಹೈ ಮತ್ತು ಲೋ ಬೆಲೆಗಳ ಸರಾಸರಿ ಆಗಿ ಲೆಕ್ಕಿಸಿ\n", + "\n", + "- ಬೆಲೆಯನ್ನು ಬಸ್ಸೆಲ್ ಪ್ರಮಾಣದ ಪ್ರಕಾರ ಪ್ರತಿಬಿಂಬಿಸುವಂತೆ ಪರಿವರ್ತಿಸಿ\n", + "\n", + "> ನಾವು ಈ ಹಂತಗಳನ್ನು [ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/2-Data/solution/lesson_2-R.ipynb) ಆವರಿಸಿಕೊಂಡಿದ್ದೇವೆ.\n" + ], + "metadata": { + "id": "fMCtu2G2s-p8" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load the core Tidyverse packages\n", + "library(tidyverse)\n", + "library(lubridate)\n", + "\n", + "# Import the pumpkins data\n", + "pumpkins <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/2-Regression/data/US-pumpkins.csv\")\n", + "\n", + "\n", + "# Get a glimpse and dimensions of the data\n", + "glimpse(pumpkins)\n", + "\n", + "\n", + "# Print the first 50 rows of the data set\n", + "pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "ryMVZEEPtERn" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಶುದ್ಧ ಸಾಹಸದ ಮನೋಭಾವದಲ್ಲಿ, ಕಳಪೆ ಡೇಟಾವನ್ನು ಪರಿಶೀಲಿಸಲು ಮತ್ತು ಸ್ವಚ್ಛಗೊಳಿಸಲು ಸರಳ ಕಾರ್ಯಗಳನ್ನು ಒದಗಿಸುವ [`janitor package`](../../../../../../2-Regression/3-Linear/solution/R/github.com/sfirke/janitor) ಅನ್ನು ಅನ್ವೇಷಿಸೋಣ. ಉದಾಹರಣೆಗೆ, ನಮ್ಮ ಡೇಟಾದ ಕಾಲಮ್ ಹೆಸರುಗಳನ್ನು ನೋಡೋಣ:\n" + ], + "metadata": { + "id": "xcNxM70EtJjb" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Return column names\n", + "pumpkins %>% \n", + " names()" + ], + "outputs": [], + "metadata": { + "id": "5XtpaIigtPfW" + } + }, + { + "cell_type": "markdown", + "source": [ + "🤔 ನಾವು ಇನ್ನೂ ಉತ್ತಮ ಮಾಡಬಹುದು. ಈ ಕಾಲಮ್ ಹೆಸರುಗಳನ್ನು `janitor::clean_names` ಬಳಸಿ [snake_case](https://en.wikipedia.org/wiki/Snake_case) ಸಂಪ್ರದಾಯಕ್ಕೆ ಪರಿವರ್ತಿಸಿ `friendR` ಆಗಿಸೋಣ. ಈ ಫಂಕ್ಷನ್ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿಯಲು: `?clean_names`\n" + ], + "metadata": { + "id": "IbIqrMINtSHe" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Clean names to the snake_case convention\n", + "pumpkins <- pumpkins %>% \n", + " clean_names(case = \"snake\")\n", + "\n", + "# Return column names\n", + "pumpkins %>% \n", + " names()" + ], + "outputs": [], + "metadata": { + "id": "a2uYvclYtWvX" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಬಹಳ tidyR 🧹! ಈಗ, ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ಇದ್ದಂತೆ `dplyr` ಬಳಸಿ ಡೇಟಾದೊಂದಿಗೆ ನೃತ್ಯ ಮಾಡೋಣ! 💃\n" + ], + "metadata": { + "id": "HfhnuzDDtaDd" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Select desired columns\n", + "pumpkins <- pumpkins %>% \n", + " select(variety, city_name, package, low_price, high_price, date)\n", + "\n", + "\n", + "\n", + "# Extract the month from the dates to a new column\n", + "pumpkins <- pumpkins %>%\n", + " mutate(date = mdy(date),\n", + " month = month(date)) %>% \n", + " select(-date)\n", + "\n", + "\n", + "\n", + "# Create a new column for average Price\n", + "pumpkins <- pumpkins %>% \n", + " mutate(price = (low_price + high_price)/2)\n", + "\n", + "\n", + "# Retain only pumpkins with the string \"bushel\"\n", + "new_pumpkins <- pumpkins %>% \n", + " filter(str_detect(string = package, pattern = \"bushel\"))\n", + "\n", + "\n", + "# Normalize the pricing so that you show the pricing per bushel, not per 1 1/9 or 1/2 bushel\n", + "new_pumpkins <- new_pumpkins %>% \n", + " mutate(price = case_when(\n", + " str_detect(package, \"1 1/9\") ~ price/(1.1),\n", + " str_detect(package, \"1/2\") ~ price*2,\n", + " TRUE ~ price))\n", + "\n", + "# Relocate column positions\n", + "new_pumpkins <- new_pumpkins %>% \n", + " relocate(month, .before = variety)\n", + "\n", + "\n", + "# Display the first 5 rows\n", + "new_pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "X0wU3gQvtd9f" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಚೆನ್ನಾಗಿದೆ!👌 ಈಗ ನಿಮಗೆ ಹೊಸ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಸಾಧ್ಯವಾಗುವ ಸ್ವಚ್ಛ, ಸುವ್ಯವಸ್ಥಿತ ಡೇಟಾ ಸೆಟ್ ಇದೆ!\n", + "\n", + "ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ ಬೇಕೆ?\n" + ], + "metadata": { + "id": "UpaIwaxqth82" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Set theme\n", + "theme_set(theme_light())\n", + "\n", + "# Make a scatter plot of month and price\n", + "new_pumpkins %>% \n", + " ggplot(mapping = aes(x = month, y = price)) +\n", + " geom_point(size = 1.6)\n" + ], + "outputs": [], + "metadata": { + "id": "DXgU-j37tl5K" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಒಂದು ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ ನಮಗೆ ಆಗಸ್ಟ್‌ನಿಂದ ಡಿಸೆಂಬರ್ ವರೆಗೆ ಮಾತ್ರ ತಿಂಗಳ ಡೇಟಾ ಇದೆ ಎಂದು ನೆನಪಿಸುತ್ತದೆ. ರೇಖೀಯ ರೀತಿಯಲ್ಲಿ ನಿರ್ಣಯಗಳನ್ನು ಬಿಡಿಸಲು ನಾವು ಬಹುಶಃ ಹೆಚ್ಚು ಡೇಟಾವನ್ನು ಬೇಕಾಗಬಹುದು.\n", + "\n", + "ನಮ್ಮ ಮಾದರೀಕರಣ ಡೇಟಾವನ್ನು ಮತ್ತೆ ನೋಡೋಣ:\n" + ], + "metadata": { + "id": "Ve64wVbwtobI" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Display first 5 rows\n", + "new_pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "HFQX2ng1tuSJ" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನಾವು `city` ಅಥವಾ `package` ಕಾಲಮ್‌ಗಳ ಆಧಾರದ ಮೇಲೆ ಕಂಬಳಿಯ `price` ಅನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಯಸಿದರೆ ಏನು ಆಗುತ್ತದೆ, ಅವುಗಳ ಪ್ರಕಾರವು character ಆಗಿದೆ? ಅಥವಾ ಇನ್ನಷ್ಟು ಸರಳವಾಗಿ, ಉದಾಹರಣೆಗೆ `package` ಮತ್ತು `price` ನಡುವಿನ ಸಹಸಂಬಂಧವನ್ನು (ಇದು ಎರಡೂ ಇನ್ಪುಟ್‌ಗಳು ಸಂಖ್ಯಾತ್ಮಕವಾಗಿರಬೇಕು) ಹೇಗೆ ಕಂಡುಹಿಡಿಯಬಹುದು? 🤷🤷\n", + "\n", + "ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳು ಪಠ್ಯ ಮೌಲ್ಯಗಳಿಗಿಂತ ಸಂಖ್ಯಾತ್ಮಕ ಲಕ್ಷಣಗಳೊಂದಿಗೆ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ, ಆದ್ದರಿಂದ ಸಾಮಾನ್ಯವಾಗಿ ವರ್ಗೀಕೃತ ಲಕ್ಷಣಗಳನ್ನು ಸಂಖ್ಯಾತ್ಮಕ ಪ್ರತಿನಿಧಿಗಳಾಗಿ ಪರಿವರ್ತಿಸಬೇಕಾಗುತ್ತದೆ.\n", + "\n", + "ಇದರಿಂದ, ನಾವು ನಮ್ಮ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾದರಿಯು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಳಸಲು ಸುಲಭವಾಗುವಂತೆ ಮರುರೂಪಗೊಳಿಸುವ ಮಾರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯಬೇಕಾಗುತ್ತದೆ, ಇದನ್ನು `feature engineering` ಎಂದು ಕರೆಯುತ್ತಾರೆ.\n" + ], + "metadata": { + "id": "7hsHoxsStyjJ" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 3. ಮಾದರಿಗಾಗಿ ಡೇಟಾವನ್ನು ಪೂರ್ವಸಿದ್ಧಗೊಳಿಸುವುದು recipes 👩‍🍳👨‍🍳 ಬಳಸಿ\n", + "\n", + "ಮಾದರಿಯು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಳಸಲು ಸುಲಭವಾಗುವಂತೆ ಭವಿಷ್ಯವಾಣಿ ಮೌಲ್ಯಗಳನ್ನು ಮರುರೂಪಗೊಳಿಸುವ ಚಟುವಟಿಕೆಗಳನ್ನು `ವೈಶಿಷ್ಟ್ಯ ಎಂಜಿನಿಯರಿಂಗ್` ಎಂದು ಕರೆಯಲಾಗಿದೆ.\n", + "\n", + "ವಿವಿಧ ಮಾದರಿಗಳಿಗೆ ವಿಭಿನ್ನ ಪೂರ್ವಸಿದ್ಧತೆ ಅಗತ್ಯವಿರುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಲೀಸ್ಟ್ ಸ್ಕ್ವೇರ್‌ಗಳು `ಮಾಸ, ವೈವಿಧ್ಯ ಮತ್ತು ನಗರ_ಹೆಸರು` ಮುಂತಾದ `ವರ್ಗೀಕೃತ ಚರಗಳನ್ನು ಎನ್‌ಕೋಡ್ ಮಾಡುವುದು` ಅಗತ್ಯವಿದೆ. ಇದು ಸರಳವಾಗಿ `ವರ್ಗೀಕೃತ ಮೌಲ್ಯಗಳ` ಕಾಲಮ್ ಅನ್ನು ಮೂಲದ ಬದಲಿಗೆ ಒಂದು ಅಥವಾ ಹೆಚ್ಚು `ಸಂಖ್ಯಾತ್ಮಕ ಕಾಲಮ್‌ಗಳಾಗಿ` `ಅನುವಾದಿಸುವುದನ್ನು` ಒಳಗೊಂಡಿದೆ.\n", + "\n", + "ಉದಾಹರಣೆಗೆ, ನಿಮ್ಮ ಡೇಟಾದಲ್ಲಿ ಕೆಳಗಿನ ವರ್ಗೀಕೃತ ವೈಶಿಷ್ಟ್ಯವಿದೆ ಎಂದು فرضಿಸಿ:\n", + "\n", + "| ನಗರ |\n", + "|:-------:|\n", + "| ಡೆನ್ವರ್ |\n", + "| ನೈರೋಬಿ |\n", + "| ಟೋಕಿಯೋ |\n", + "\n", + "ನೀವು ಪ್ರತಿ ವರ್ಗಕ್ಕೆ ವಿಶಿಷ್ಟ ಪೂರ್ಣಾಂಕ ಮೌಲ್ಯವನ್ನು ಬದಲಾಯಿಸಲು *ಕ್ರಮಾಂಕ ಎನ್‌ಕೋಡಿಂಗ್* ಅನ್ನು ಅನ್ವಯಿಸಬಹುದು, ಹೀಗೆ:\n", + "\n", + "| ನಗರ |\n", + "|:----:|\n", + "| 0 |\n", + "| 1 |\n", + "| 2 |\n", + "\n", + "ಮತ್ತು ಅದೇನೂ ನಾವು ನಮ್ಮ ಡೇಟಾದ ಮೇಲೆ ಮಾಡಲಿದ್ದೇವೆ!\n", + "\n", + "ಈ ವಿಭಾಗದಲ್ಲಿ, ನಾವು ಇನ್ನೊಂದು ಅದ್ಭುತ Tidymodels ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಅನ್ವೇಷಿಸುವೆವು: [recipes](https://tidymodels.github.io/recipes/) - ಇದು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ ಒಳಪಡಿಸುವ **ಮುಂಬರುವ** ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಪೂರ್ವಸಿದ್ಧಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಮೂಲತಃ, ಒಂದು ರೆಸಿಪಿ ಎಂದರೆ ಮಾದರಿಗಾಗಿ ಸಿದ್ಧಪಡಿಸಲು ಡೇಟಾ ಸೆಟ್‌ಗೆ ಯಾವ ಹಂತಗಳನ್ನು ಅನ್ವಯಿಸಬೇಕು ಎಂದು ನಿರ್ಧರಿಸುವ ವಸ್ತು.\n", + "\n", + "ಈಗ, ಭವಿಷ್ಯವಾಣಿ ಕಾಲಮ್‌ಗಳಲ್ಲಿನ ಎಲ್ಲಾ ವೀಕ್ಷಣೆಗಳಿಗೆ ವಿಶಿಷ್ಟ ಪೂರ್ಣಾಂಕವನ್ನು ಬದಲಾಯಿಸುವ ಮೂಲಕ ನಮ್ಮ ಡೇಟಾವನ್ನು ಮಾದರಿಗಾಗಿ ಸಿದ್ಧಪಡಿಸುವ ರೆಸಿಪಿಯನ್ನು ರಚಿಸೋಣ:\n" + ], + "metadata": { + "id": "AD5kQbcvt3Xl" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Specify a recipe\n", + "pumpkins_recipe <- recipe(price ~ ., data = new_pumpkins) %>% \n", + " step_integer(all_predictors(), zero_based = TRUE)\n", + "\n", + "\n", + "# Print out the recipe\n", + "pumpkins_recipe" + ], + "outputs": [], + "metadata": { + "id": "BNaFKXfRt9TU" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಅದ್ಭುತ! 👏 ನಾವು ಮೊದಲ ರೆಸಿಪಿಯನ್ನು ರಚಿಸಿದ್ದೇವೆ, ಅದು ಒಂದು ಫಲಿತಾಂಶವನ್ನು (ಬೆಲೆ) ಮತ್ತು ಅದರ ಸಂಬಂಧಿತ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ ಮತ್ತು ಎಲ್ಲಾ ಭವಿಷ್ಯವಾಣಿ ಕಾಲಮ್‌ಗಳನ್ನು ಪೂರ್ಣಾಂಕಗಳ ಸೆಟ್ ಆಗಿ ಎನ್‌ಕೋಡ್ ಮಾಡಬೇಕು 🙌! ಬನ್ನಿ ಅದನ್ನು ತ್ವರಿತವಾಗಿ ವಿಭಜಿಸೋಣ:\n", + "\n", + "- `recipe()` ಗೆ ಫಾರ್ಮುಲಾ ಸಹಿತ ಕರೆ ಮಾಡುವುದರಿಂದ, `new_pumpkins` ಡೇಟಾವನ್ನು ಉಲ್ಲೇಖವಾಗಿ ಬಳಸಿಕೊಂಡು, ಚರಗಳ *ಪಾತ್ರಗಳನ್ನು* ರೆಸಿಪಿಗೆ ತಿಳಿಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, `price` ಕಾಲಮ್‌ಗೆ `outcome` ಪಾತ್ರವನ್ನು ನೀಡಲಾಗಿದೆ, ಉಳಿದ ಕಾಲಮ್‌ಗಳಿಗೆ `predictor` ಪಾತ್ರವನ್ನು ನೀಡಲಾಗಿದೆ.\n", + "\n", + "- `step_integer(all_predictors(), zero_based = TRUE)` ಎಲ್ಲಾ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು 0 ರಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಸಂಖ್ಯೆಗಳ ಸೆಟ್ ಆಗಿ ಪರಿವರ್ತಿಸಲು ಸೂಚಿಸುತ್ತದೆ.\n", + "\n", + "ನೀವು ಈ ರೀತಿಯ ವಿಚಾರಗಳನ್ನು ಹೊಂದಿರಬಹುದು: \"ಇದು ತುಂಬಾ ಕುಲ್!! ಆದರೆ ನಾನು ರೆಸಿಪಿಗಳು ನಿಜವಾಗಿಯೂ ನಾನು ನಿರೀಕ್ಷಿಸುವಂತೆ ಕೆಲಸ ಮಾಡುತ್ತವೆಯೇ ಎಂದು ದೃಢೀಕರಿಸಬೇಕಾದರೆ? 🤔\"\n", + "\n", + "ಅದು ಅದ್ಭುತವಾದ ವಿಚಾರ! ನೀವು ನೋಡುತ್ತೀರಿ, ನಿಮ್ಮ ರೆಸಿಪಿ ವ್ಯಾಖ್ಯಾನವಾದ ನಂತರ, ನೀವು ಡೇಟಾವನ್ನು ಪೂರ್ವಸಿದ್ಧಗೊಳಿಸಲು ಅಗತ್ಯವಿರುವ ಪರಿಮಾಣಗಳನ್ನು ಅಂದಾಜಿಸಬಹುದು ಮತ್ತು ನಂತರ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದ ಡೇಟಾವನ್ನು ಹೊರತೆಗೆಯಬಹುದು. ನೀವು ಸಾಮಾನ್ಯವಾಗಿ Tidymodels ಬಳಸುವಾಗ ಇದನ್ನು ಮಾಡಬೇಕಾಗಿಲ್ಲ (ನಾವು ಸ್ವಲ್ಪ ಸಮಯದಲ್ಲಿ ಸಾಮಾನ್ಯ ಸಂಪ್ರದಾಯವನ್ನು ನೋಡುತ್ತೇವೆ -> `workflows`), ಆದರೆ ನೀವು ರೆಸಿಪಿಗಳು ನೀವು ನಿರೀಕ್ಷಿಸುವಂತೆ ಕೆಲಸ ಮಾಡುತ್ತವೆಯೇ ಎಂದು ದೃಢೀಕರಿಸಲು ಕೆಲವು ರೀತಿಯ ಮಾನಸಿಕ ಪರಿಶೀಲನೆ ಮಾಡಲು ಬಯಸಿದಾಗ ಇದು ಸಹಾಯಕವಾಗಬಹುದು.\n", + "\n", + "ಅದರಿಗಾಗಿ, ನಿಮಗೆ ಇನ್ನೂ ಎರಡು ಕ್ರಿಯಾಪದಗಳು ಬೇಕಾಗಿವೆ: `prep()` ಮತ್ತು `bake()` ಮತ್ತು ಯಾವಾಗಲೂ ಹಾಗೆಯೇ, ನಮ್ಮ ಸಣ್ಣ R ಸ್ನೇಹಿತರು [`Allison Horst`](https://github.com/allisonhorst/stats-illustrations) ಅವರಿಂದ ನಿಮಗೆ ಇದನ್ನು ಉತ್ತಮವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತಾರೆ!\n", + "\n", + "

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

@allison_horst ಅವರ ಕಲಾಕೃತಿ
\n" + ], + "metadata": { + "id": "KEiO0v7kuC9O" + } + }, + { + "cell_type": "markdown", + "source": [ + "[`prep()`](https://recipes.tidymodels.org/reference/prep.html): ತರಬೇತಿ ಸೆಟ್‌ನಿಂದ ಅಗತ್ಯವಾದ ಪರಿಮಾಣಗಳನ್ನು ಅಂದಾಜು ಮಾಡುತ್ತದೆ, ಅವುಗಳನ್ನು ನಂತರ ಇತರ ಡೇಟಾ ಸೆಟ್‌ಗಳಿಗೆ ಅನ್ವಯಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ನೀಡಲಾದ ಭವಿಷ್ಯವಾಣಿ ಕಾಲಮ್‌ಗೆ, ಯಾವ ವೀಕ್ಷಣೆಗೆ ಪೂರ್ಣಾಂಕ 0 ಅಥವಾ 1 ಅಥವಾ 2 ಇತ್ಯಾದಿ ನಿಯೋಜಿಸಲಾಗುತ್ತದೆ.\n", + "\n", + "[`bake()`](https://recipes.tidymodels.org/reference/bake.html): ಪೂರ್ವಸಿದ್ಧವಾದ ರೆಸಿಪಿಯನ್ನು ತೆಗೆದು ಯಾವುದೇ ಡೇಟಾ ಸೆಟ್‌ಗೆ ಆ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ.\n", + "\n", + "ಅಂದರೆ, ನಾವು ನಮ್ಮ ರೆಸಿಪಿಗಳನ್ನು ಪೂರ್ವಸಿದ್ಧಗೊಳಿಸಿ ಮತ್ತು ಬೇಕ್ ಮಾಡಿ ಖಚಿತಪಡಿಸಿಕೊಳ್ಳೋಣ, ಅಂದರೆ ಒಳಗೆ, ಭವಿಷ್ಯವಾಣಿ ಕಾಲಮ್‌ಗಳನ್ನು ಮೊದಲು ಎನ್‌ಕೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ ನಂತರ ಮಾದರಿಯನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತದೆ.\n" + ], + "metadata": { + "id": "Q1xtzebuuTCP" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Prep the recipe\n", + "pumpkins_prep <- prep(pumpkins_recipe)\n", + "\n", + "# Bake the recipe to extract a preprocessed new_pumpkins data\n", + "baked_pumpkins <- bake(pumpkins_prep, new_data = NULL)\n", + "\n", + "# Print out the baked data set\n", + "baked_pumpkins %>% \n", + " slice_head(n = 10)" + ], + "outputs": [], + "metadata": { + "id": "FGBbJbP_uUUn" + } + }, + { + "cell_type": "markdown", + "source": [ + "ವಾಹ್!🥳 ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದ ಡೇಟಾ `baked_pumpkins` ನಲ್ಲಿ ಅದರ ಎಲ್ಲಾ ಪೂರ್ವಕಾಲಿಕಗಳು ಎನ್‌ಕೋಡ್ ಆಗಿವೆ ಎಂದು ದೃಢೀಕರಿಸುತ್ತದೆ, ಇದು ನಿಜವಾಗಿಯೂ ನಮ್ಮ ರೆಸಿಪಿ ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಿದ ಪೂರ್ವಪ್ರಕ್ರಿಯೆ ಹಂತಗಳು ನಿರೀಕ್ಷಿತವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಇದರಿಂದ ಓದಲು ಸ್ವಲ್ಪ ಕಷ್ಟವಾಗಬಹುದು ಆದರೆ Tidymodels ಗೆ ಬಹಳ ಹೆಚ್ಚು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸುಲಭವಾಗುತ್ತದೆ! ಯಾವ ವೀಕ್ಷಣೆಯನ್ನು ಸಂಬಂಧಿತ ಪೂರ್ಣಾಂಕಕ್ಕೆ ನಕ್ಷೆ ಮಾಡಲಾಗಿದೆ ಎಂದು ಕಂಡುಹಿಡಿಯಲು ಸ್ವಲ್ಪ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಿ.\n", + "\n", + "ಇದು ಕೂಡ ಹೇಳಬೇಕಾದದ್ದು, `baked_pumpkins` ಒಂದು ಡೇಟಾ ಫ್ರೇಮ್ ಆಗಿದ್ದು, ಅದರಲ್ಲಿ ನಾವು ಗಣನೆಗಳನ್ನು ನಡೆಸಬಹುದು.\n", + "\n", + "ಉದಾಹರಣೆಗೆ, ನಿಮ್ಮ ಡೇಟಾದ ಎರಡು ಬಿಂದುಗಳ ನಡುವೆ ಉತ್ತಮ ಸಂಬಂಧವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಪ್ರಯತ್ನಿಸೋಣ, ಇದರಿಂದ ಉತ್ತಮ ಭವಿಷ್ಯವಾಣಿ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಸಾಧ್ಯವಾಗಬಹುದು. ಇದಕ್ಕಾಗಿ ನಾವು `cor()` ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ. ಫಂಕ್ಷನ್ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ `?cor()` ಟೈಪ್ ಮಾಡಿ.\n" + ], + "metadata": { + "id": "1dvP0LBUueAW" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Find the correlation between the city_name and the price\n", + "cor(baked_pumpkins$city_name, baked_pumpkins$price)\n", + "\n", + "# Find the correlation between the package and the price\n", + "cor(baked_pumpkins$package, baked_pumpkins$price)\n" + ], + "outputs": [], + "metadata": { + "id": "3bQzXCjFuiSV" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಹಾಗಿದ್ದರೆ, ನಗರ ಮತ್ತು ಬೆಲೆಯ ನಡುವೆ ಕೇವಲ ದುರ್ಬಲ ಸಂಬಂಧವಿದೆ. ಆದರೆ ಪ್ಯಾಕೇಜ್ ಮತ್ತು ಅದರ ಬೆಲೆಯ ನಡುವೆ ಸ್ವಲ್ಪ ಉತ್ತಮ ಸಂಬಂಧವಿದೆ. ಅದು ಅರ್ಥವಾಗುತ್ತದೆ, ಅಲ್ಲವೇ? ಸಾಮಾನ್ಯವಾಗಿ, ಉತ್ಪನ್ನದ ಬಾಕ್ಸ್ ದೊಡ್ಡದಾಗಿದ್ದರೆ, ಬೆಲೆ ಹೆಚ್ಚು ಇರುತ್ತದೆ.\n", + "\n", + "ನಾವು ಇದರಲ್ಲಿ ಇದ್ದಾಗ, `corrplot` ಪ್ಯಾಕೇಜ್ ಬಳಸಿ ಎಲ್ಲಾ ಕಾಲಮ್‌ಗಳ ಸಂಬಂಧ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಅನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಪ್ರಯತ್ನಿಸೋಣ.\n" + ], + "metadata": { + "id": "BToPWbgjuoZw" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load the corrplot package\n", + "library(corrplot)\n", + "\n", + "# Obtain correlation matrix\n", + "corr_mat <- cor(baked_pumpkins %>% \n", + " # Drop columns that are not really informative\n", + " select(-c(low_price, high_price)))\n", + "\n", + "# Make a correlation plot between the variables\n", + "corrplot(corr_mat, method = \"shade\", shade.col = NA, tl.col = \"black\", tl.srt = 45, addCoef.col = \"black\", cl.pos = \"n\", order = \"original\")" + ], + "outputs": [], + "metadata": { + "id": "ZwAL3ksmutVR" + } + }, + { + "cell_type": "markdown", + "source": [ + "🤩🤩 ಬಹಳ ಉತ್ತಮ.\n", + "\n", + "ಈ ಡೇಟಾದ ಬಗ್ಗೆ ಈಗ ಕೇಳಬೇಕಾದ ಒಳ್ಳೆಯ ಪ್ರಶ್ನೆ ಏನೆಂದರೆ: '`ನನಗೆ ನೀಡಲಾದ ಪಂಪ್ಕಿನ್ ಪ್ಯಾಕೇಜ್‌ನ ಬೆಲೆ ಎಷ್ಟು ನಿರೀಕ್ಷಿಸಬಹುದು?`' ಬನ್ನಿ, ಅದಕ್ಕೆ ನೇರವಾಗಿ ಹೋಗೋಣ!\n", + "\n", + "> ಟಿಪ್ಪಣಿ: ನೀವು **`bake()`** ಮೂಲಕ ಪೂರ್ವಸಿದ್ಧ ರೆಸಿಪಿ **`pumpkins_prep`** ಅನ್ನು **`new_data = NULL`** ಜೊತೆ ಬಳಸಿದಾಗ, ನೀವು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದ (ಅಂದರೆ ಎನ್‌ಕೋಡ್ ಮಾಡಿದ) ತರಬೇತಿ ಡೇಟಾವನ್ನು ಹೊರತೆಗೆಯುತ್ತೀರಿ. ಉದಾಹರಣೆಗೆ, ನಿಮಗೆ ಇನ್ನೊಂದು ಡೇಟಾ ಸೆಟ್ ಇದ್ದರೆ, ಪರೀಕ್ಷಾ ಸೆಟ್ ಎಂದುಕೊಳ್ಳಿ, ಮತ್ತು ನೀವು ರೆಸಿಪಿ ಅದನ್ನು ಹೇಗೆ ಪೂರ್ವಸಿದ್ಧಗೊಳಿಸುವುದನ್ನು ನೋಡಲು ಬಯಸಿದರೆ, ನೀವು ಸರಳವಾಗಿ **`pumpkins_prep`** ಅನ್ನು **`new_data = test_set`** ಜೊತೆ bake ಮಾಡುತ್ತೀರಿ.\n", + "\n", + "## 4. ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ\n", + "\n", + "

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

ಡಾಸಾನಿ ಮಡಿಪಳ್ಳಿ ಅವರ ಇನ್ಫೋಗ್ರಾಫಿಕ್
\n" + ], + "metadata": { + "id": "YqXjLuWavNxW" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಈಗ ನಾವು ಒಂದು ರೆಸಿಪಿ ರಚಿಸಿದ್ದೇವೆ, ಮತ್ತು ಡೇಟಾ ಸರಿಯಾಗಿ ಪೂರ್ವಪ್ರಕ್ರಿಯೆಗೊಳ್ಳುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಂಡಿದ್ದೇವೆ, ಈಗ ನಾವು ಒಂದು ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸೋಣ ಮತ್ತು ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸೋಣ: `ನನಗೆ ನೀಡಲಾದ ಕಂಬಳಿಯ ಪ್ಯಾಕೇಜಿನ ಬೆಲೆ ಎಷ್ಟು ಇರಬಹುದು?`\n", + "\n", + "#### ತರಬೇತಿ ಸೆಟ್ ಬಳಸಿ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೊಳಿಸಿ\n", + "\n", + "ನೀವು ಈಗಾಗಲೇ ಅರ್ಥಮಾಡಿಕೊಂಡಿರಬಹುದು, *ಬೆಲೆ* ಕಾಲಮ್ `ಫಲಿತಾಂಶ` ಚರವಾಗಿದ್ದು, *ಪ್ಯಾಕೇಜ್* ಕಾಲಮ್ `ಭವಿಷ್ಯವಾಣಿ` ಚರವಾಗಿದೆ.\n", + "\n", + "ಇದನ್ನು ಮಾಡಲು, ಮೊದಲು ಡೇಟಾವನ್ನು 80% ತರಬೇತಿಗೆ ಮತ್ತು 20% ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗೆ ವಿಭಜಿಸೋಣ, ನಂತರ ಭವಿಷ್ಯವಾಣಿ ಕಾಲಮ್ ಅನ್ನು ಪೂರ್ಣಾಂಕಗಳ ಸರಣಿಯಾಗಿ ಎನ್‌ಕೋಡ್ ಮಾಡುವ ರೆಸಿಪಿಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸೋಣ, ನಂತರ ಮಾದರಿ ನಿರ್ದಿಷ್ಟತೆಯನ್ನು ನಿರ್ಮಿಸೋಣ. ನಾವು ಈಗಾಗಲೇ ಡೇಟಾ ಪೂರ್ವಪ್ರಕ್ರಿಯೆಗೊಳ್ಳುತ್ತದೆ ಎಂದು ತಿಳಿದಿರುವುದರಿಂದ ನಮ್ಮ ರೆಸಿಪಿಯನ್ನು ಪ್ರೆಪ್ ಮತ್ತು ಬೇಕ್ ಮಾಡುವುದಿಲ್ಲ.\n" + ], + "metadata": { + "id": "Pq0bSzCevW-h" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "set.seed(2056)\n", + "# Split the data into training and test sets\n", + "pumpkins_split <- new_pumpkins %>% \n", + " initial_split(prop = 0.8)\n", + "\n", + "\n", + "# Extract training and test data\n", + "pumpkins_train <- training(pumpkins_split)\n", + "pumpkins_test <- testing(pumpkins_split)\n", + "\n", + "\n", + "\n", + "# Create a recipe for preprocessing the data\n", + "lm_pumpkins_recipe <- recipe(price ~ package, data = pumpkins_train) %>% \n", + " step_integer(all_predictors(), zero_based = TRUE)\n", + "\n", + "\n", + "\n", + "# Create a linear model specification\n", + "lm_spec <- linear_reg() %>% \n", + " set_engine(\"lm\") %>% \n", + " set_mode(\"regression\")" + ], + "outputs": [], + "metadata": { + "id": "CyoEh_wuvcLv" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಚೆನ್ನಾಗಿದೆ! ಈಗ ನಮಗೆ ಒಂದು ರೆಸಿಪಿ ಮತ್ತು ಒಂದು ಮಾದರಿ ವಿವರಣೆ ಇದ್ದು, ಅವುಗಳನ್ನು ಒಟ್ಟಿಗೆ ಒಂದು ವಸ್ತುವಾಗಿ ಬಂಡಲ್ ಮಾಡುವ ಮಾರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯಬೇಕಾಗಿದೆ, ಅದು ಮೊದಲು ಡೇಟಾವನ್ನು ಪೂರ್ವಸಿದ್ಧತೆ ಮಾಡುತ್ತದೆ (ಹಿಂದಿನ ದೃಶ್ಯದಲ್ಲಿ prep+bake), ಪೂರ್ವಸಿದ್ಧತೆ ಮಾಡಿದ ಡೇಟಾದ ಮೇಲೆ ಮಾದರಿಯನ್ನು ಹೊಂದಿಸುತ್ತದೆ ಮತ್ತು ಸಾಧ್ಯವಾದ ನಂತರದ ಪ್ರಕ್ರಿಯೆಗಳಿಗೂ ಅವಕಾಶ ನೀಡುತ್ತದೆ. ನಿಮ್ಮ ಮನಸ್ಸಿಗೆ ಇದು ಹೇಗಿದೆ!🤩\n", + "\n", + "Tidymodels ನಲ್ಲಿ, ಈ ಅನುಕೂಲಕರ ವಸ್ತುವನ್ನು [`workflow`](https://workflows.tidymodels.org/) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಇದು ನಿಮ್ಮ ಮಾದರಿ ಘಟಕಗಳನ್ನು ಅನುಕೂಲಕರವಾಗಿ ಹಿಡಿದಿಡುತ್ತದೆ! Python ನಲ್ಲಿ ಇದನ್ನು *pipelines* ಎಂದು ಕರೆಯುತ್ತೇವೆ.\n", + "\n", + "ಹೀಗಾಗಿ ಎಲ್ಲವನ್ನೂ workflow ಗೆ ಬಂಡಲ್ ಮಾಡೋಣ!📦\n" + ], + "metadata": { + "id": "G3zF_3DqviFJ" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Hold modelling components in a workflow\n", + "lm_wf <- workflow() %>% \n", + " add_recipe(lm_pumpkins_recipe) %>% \n", + " add_model(lm_spec)\n", + "\n", + "# Print out the workflow\n", + "lm_wf" + ], + "outputs": [], + "metadata": { + "id": "T3olroU3v-WX" + } + }, + { + "cell_type": "markdown", + "source": [ + "👌 ಜೊತೆಗೆ, ಒಂದು ವರ್ಕ್‌ಫ್ಲೋವನ್ನು ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವಂತೆ ಅಥವಾ ಹೊಂದಿಸುವಂತೆ ಮಾಡಬಹುದು.\n" + ], + "metadata": { + "id": "zd1A5tgOwEPX" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Train the model\n", + "lm_wf_fit <- lm_wf %>% \n", + " fit(data = pumpkins_train)\n", + "\n", + "# Print the model coefficients learned \n", + "lm_wf_fit" + ], + "outputs": [], + "metadata": { + "id": "NhJagFumwFHf" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಮಾದರಿ ಔಟ್‌ಪುಟ್‌ನಿಂದ, ನಾವು ತರಬೇತಿ ಸಮಯದಲ್ಲಿ ಕಲಿತ ಸಹಗುಣಾಂಕಗಳನ್ನು ನೋಡಬಹುದು. ಅವುಗಳು ನಿಜವಾದ ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲಾದ ಚರಗಳ ನಡುವೆ ಒಟ್ಟು ತಪ್ಪು ಕಡಿಮೆ ಆಗುವ ಅತ್ಯುತ್ತಮ ಸರಳರೇಖೆಯ ಸಹಗುಣಾಂಕಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ.\n", + "\n", + "\n", + "#### ಪರೀಕ್ಷಾ ಸೆಟ್ ಬಳಸಿ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ\n", + "\n", + "ಮಾದರಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸಿತು ಎಂದು ನೋಡಲು ಸಮಯವಾಗಿದೆ 📏! ನಾವು ಇದನ್ನು ಹೇಗೆ ಮಾಡುತ್ತೇವೆ?\n", + "\n", + "ಈಗ ನಾವು ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿದ್ದರಿಂದ, `parsnip::predict()` ಬಳಸಿ test_set ಗೆ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡಬಹುದು. ನಂತರ ನಾವು ಈ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ನಿಜವಾದ ಲೇಬಲ್ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಹೋಲಿಸಿ ಮಾದರಿ ಎಷ್ಟು ಚೆನ್ನಾಗಿ (ಅಥವಾ ಇಲ್ಲ!) ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂದು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು.\n", + "\n", + "ಮೊದಲು ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗೆ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡೋಣ ಮತ್ತು ನಂತರ ಆ ಕಾಲಮ್ಗಳನ್ನು ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗೆ ಜೋಡಿಸೋಣ.\n" + ], + "metadata": { + "id": "_4QkGtBTwItF" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make predictions for the test set\n", + "predictions <- lm_wf_fit %>% \n", + " predict(new_data = pumpkins_test)\n", + "\n", + "\n", + "# Bind predictions to the test set\n", + "lm_results <- pumpkins_test %>% \n", + " select(c(package, price)) %>% \n", + " bind_cols(predictions)\n", + "\n", + "\n", + "# Print the first ten rows of the tibble\n", + "lm_results %>% \n", + " slice_head(n = 10)" + ], + "outputs": [], + "metadata": { + "id": "UFZzTG0gwTs9" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಹೌದು, ನೀವು ಇತ್ತೀಚೆಗೆ ಒಂದು ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಂಡು ಅದನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಳಸಿದ್ದೀರಿ!🔮 ಇದು ಎಷ್ಟು ಉತ್ತಮವಾಗಿದೆ ಎಂದು ನೋಡೋಣ, ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡೋಣ!\n", + "\n", + "Tidymodels ನಲ್ಲಿ, ನಾವು ಇದನ್ನು `yardstick::metrics()` ಬಳಸಿ ಮಾಡುತ್ತೇವೆ! ರೇಖೀಯ ರಿಗ್ರೆಶನ್‌ಗಾಗಿ, ಕೆಳಗಿನ ಮೆಟ್ರಿಕ್ಸ್‌ಗಳ ಮೇಲೆ ಗಮನಹರಿಸೋಣ:\n", + "\n", + "- `Root Mean Square Error (RMSE)`: [MSE](https://en.wikipedia.org/wiki/Mean_squared_error) ಯ ಚದರ ಮೂಲ. ಇದು ಲೇಬಲ್‌ನ (ಈ ಪ್ರಕರಣದಲ್ಲಿ, ಕಂಬಳಿಯ ಬೆಲೆ) ಅದೇ ಘಟಕದಲ್ಲಿ ಪರಮಾಣು ಮೆಟ್ರಿಕ್ ಅನ್ನು ನೀಡುತ್ತದೆ. ಮೌಲ್ಯವು ಕಡಿಮೆ ಇದ್ದರೆ, ಮಾದರಿ ಉತ್ತಮವಾಗಿದೆ (ಸರಳವಾಗಿ ಹೇಳುವುದಾದರೆ, ಇದು ಭವಿಷ್ಯವಾಣಿಗಳು ತಪ್ಪಾಗಿರುವ ಸರಾಸರಿ ಬೆಲೆಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ!)\n", + "\n", + "- `Coefficient of Determination (ಸಾಮಾನ್ಯವಾಗಿ R-squared ಅಥವಾ R2 ಎಂದು ಕರೆಯಲ್ಪಡುವುದು)`: ಇದು ಸಾಪೇಕ್ಷ ಮೆಟ್ರಿಕ್ ಆಗಿದ್ದು, ಮೌಲ್ಯವು ಹೆಚ್ಚು ಇದ್ದರೆ, ಮಾದರಿಯ ಹೊಂದಾಣಿಕೆ ಉತ್ತಮವಾಗಿದೆ. ಮೂಲತಃ, ಈ ಮೆಟ್ರಿಕ್ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಮತ್ತು ನಿಜವಾದ ಲೇಬಲ್ ಮೌಲ್ಯಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ಮಾದರಿ ಎಷ್ಟು ವಿವರಿಸಬಹುದು ಎಂಬುದನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ.\n" + ], + "metadata": { + "id": "0A5MjzM7wW9M" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Evaluate performance of linear regression\n", + "metrics(data = lm_results,\n", + " truth = price,\n", + " estimate = .pred)" + ], + "outputs": [], + "metadata": { + "id": "reJ0UIhQwcEH" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಮಾಡೆಲ್ ಕಾರ್ಯಕ್ಷಮತೆ ಇಲ್ಲಿಗೆ ಹೋಗುತ್ತದೆ. ಪ್ಯಾಕೇಜ್ ಮತ್ತು ಬೆಲೆಯ scatter ಪ್ಲಾಟ್ ಅನ್ನು ದೃಶ್ಯೀಕರಿಸುವ ಮೂಲಕ ನಾವು ಉತ್ತಮ ಸೂಚನೆಯನ್ನು ಪಡೆಯಬಹುದೇ ಎಂದು ನೋಡೋಣ, ನಂತರ ಮಾಡಲಾದ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಉತ್ತಮ ಹೊಂದಾಣಿಕೆಯ ರೇಖೆಯನ್ನು ಓವರ್‌ಲೆ ಮಾಡೋಣ.\n", + "\n", + "ಇದಕ್ಕೆ ಅರ್ಥ, ನಾವು ಪ್ಯಾಕೇಜ್ ಕಾಲಮ್ ಅನ್ನು ಎನ್‌ಕೋಡ್ ಮಾಡಲು ಟೆಸ್ಟ್ ಸೆಟ್ ಅನ್ನು ತಯಾರಿಸಿ ಬೇಕ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ, ನಂತರ ಇದನ್ನು ನಮ್ಮ ಮಾಡೆಲ್ ಮಾಡಿದ ಭವಿಷ್ಯವಾಣಿಗಳೊಂದಿಗೆ ಬಾಂಧಿಸಬೇಕು.\n" + ], + "metadata": { + "id": "fdgjzjkBwfWt" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Encode package column\n", + "package_encode <- lm_pumpkins_recipe %>% \n", + " prep() %>% \n", + " bake(new_data = pumpkins_test) %>% \n", + " select(package)\n", + "\n", + "\n", + "# Bind encoded package column to the results\n", + "lm_results <- lm_results %>% \n", + " bind_cols(package_encode %>% \n", + " rename(package_integer = package)) %>% \n", + " relocate(package_integer, .after = package)\n", + "\n", + "\n", + "# Print new results data frame\n", + "lm_results %>% \n", + " slice_head(n = 5)\n", + "\n", + "\n", + "# Make a scatter plot\n", + "lm_results %>% \n", + " ggplot(mapping = aes(x = package_integer, y = price)) +\n", + " geom_point(size = 1.6) +\n", + " # Overlay a line of best fit\n", + " geom_line(aes(y = .pred), color = \"orange\", size = 1.2) +\n", + " xlab(\"package\")\n", + " \n" + ], + "outputs": [], + "metadata": { + "id": "R0nw719lwkHE" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಅದ್ಭುತ! ನೀವು ನೋಡಬಹುದು, ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿ ಪ್ಯಾಕೇಜ್ ಮತ್ತು ಅದರ ಸಂಬಂಧಿತ ಬೆಲೆಯ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಚೆನ್ನಾಗಿ ಸಾಮಾನ್ಯಗೊಳಿಸುವುದಿಲ್ಲ.\n", + "\n", + "🎃 ಅಭಿನಂದನೆಗಳು, ನೀವು ಕೆಲವು ಬಗೆಯ ಕಂಬಳಿಗಳ ಬೆಲೆಯನ್ನು ಊಹಿಸಲು ಸಹಾಯ ಮಾಡುವ ಮಾದರಿಯನ್ನು ಸೃಷ್ಟಿಸಿದ್ದೀರಿ. ನಿಮ್ಮ ಹಬ್ಬದ ಕಂಬಳಿ ತೋಟ ಸುಂದರವಾಗಿರುತ್ತದೆ. ಆದರೆ ನೀವು ಬಹುಶಃ ಉತ್ತಮ ಮಾದರಿಯನ್ನು ರಚಿಸಬಹುದು!\n", + "\n", + "## 5. ಬಹುಪದ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ\n", + "\n", + "

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

ದಾಸನಿ ಮಡಿಪಳ್ಳಿ ಅವರ ಇನ್ಫೋಗ್ರಾಫಿಕ್
\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "HOCqJXLTwtWI" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಕೆಲವೊಮ್ಮೆ ನಮ್ಮ ಡೇಟಾದಲ್ಲಿ ರೇಖೀಯ ಸಂಬಂಧವಿರದಿರಬಹುದು, ಆದರೆ ನಾವು ಇನ್ನೂ ಫಲಿತಾಂಶವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಬಹುಪದೀಯ ರಿಗ್ರೆಶನ್ ನಮಗೆ ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ರೇಖೀಯವಲ್ಲದ ಸಂಬಂಧಗಳಿಗೆ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಸಹಾಯ ಮಾಡಬಹುದು.\n", + "\n", + "ಉದಾಹರಣೆಗೆ, ನಮ್ಮ ಕಂಬಳಿಗಳ ಡೇಟಾ ಸೆಟ್‌ನ ಪ್ಯಾಕೇಜ್ ಮತ್ತು ಬೆಲೆಯ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಕೆಲವೊಮ್ಮೆ ಚರಗಳ ನಡುವೆ ರೇಖೀಯ ಸಂಬಂಧವಿರುತ್ತದೆ - ಕಂಬಳಿಯ ವಾಲ್ಯೂಮ್ ದೊಡ್ಡದಾದಂತೆ ಬೆಲೆ ಹೆಚ್ಚಾಗುತ್ತದೆ - ಆದರೆ ಕೆಲವೊಮ್ಮೆ ಈ ಸಂಬಂಧಗಳನ್ನು ಸಮತಲ ಅಥವಾ ಸರಳ ರೇಖೆಯಾಗಿ ಚಿತ್ರಿಸಲಾಗುವುದಿಲ್ಲ.\n", + "\n", + "> ✅ ಇಲ್ಲಿ [ಇನ್ನಷ್ಟು ಉದಾಹರಣೆಗಳು](https://online.stat.psu.edu/stat501/lesson/9/9.8) ಇವೆ, ಬಹುಪದೀಯ ರಿಗ್ರೆಶನ್ ಬಳಸಬಹುದಾದ ಡೇಟಾಗಳಿಗೆ\n", + ">\n", + "> ಹಿಂದಿನ ಪ್ಲಾಟ್‌ನಲ್ಲಿ ವೈವಿಧ್ಯದಿಂದ ಬೆಲೆಯ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಮತ್ತೊಮ್ಮೆ ನೋಡಿ. ಈ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ ಅನ್ನು ಅವಶ್ಯಕವಾಗಿ ಸರಳ ರೇಖೆಯಿಂದ ವಿಶ್ಲೇಷಿಸಬೇಕೆಂದು ತೋರುತ್ತದೆಯೇ? ಬಹುಶಃ ಅಲ್ಲ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನೀವು ಬಹುಪದೀಯ ರಿಗ್ರೆಶನ್ ಪ್ರಯತ್ನಿಸಬಹುದು.\n", + ">\n", + "> ✅ ಬಹುಪದೀಯಗಳು ಗಣಿತೀಯ ಅಭಿವ್ಯಕ್ತಿಗಳು, ಅವು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಚರಗಳು ಮತ್ತು ಗುಣಾಂಕಗಳನ್ನು ಹೊಂದಿರಬಹುದು\n", + "\n", + "#### ತರಬೇತಿ ಸೆಟ್ ಬಳಸಿ ಬಹುಪದೀಯ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಿ\n", + "\n", + "ಬಹುಪದೀಯ ರಿಗ್ರೆಶನ್ *ವಕ್ರ ರೇಖೆ* ರಚಿಸಿ ರೇಖೀಯವಲ್ಲದ ಡೇಟಾಗೆ ಉತ್ತಮ ಹೊಂದಾಣಿಕೆಯನ್ನು ನೀಡುತ್ತದೆ.\n", + "\n", + "ಬಹುಪದೀಯ ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿಯಲ್ಲಿ ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ತೋರಿಸುವುದೇ ಎಂದು ನೋಡೋಣ. ನಾವು ಹಿಂದಿನಂತೆ ಸ್ವಲ್ಪ ಸಮಾನ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅನುಸರಿಸುವೆವು:\n", + "\n", + "- ನಮ್ಮ ಡೇಟಾವನ್ನು ಮಾದರಿಗಾಗಿ ಸಿದ್ಧಪಡಿಸಲು ಮಾಡಬೇಕಾದ ಪೂರ್ವಪ್ರಕ್ರಿಯೆಗಳ ಹಂತಗಳನ್ನು ಸೂಚಿಸುವ ರೆಸಿಪಿ ರಚಿಸಿ, ಅಂದರೆ: ಭವಿಷ್ಯವಾಣಿಕಾರರನ್ನು ಎನ್‌ಕೋಡ್ ಮಾಡುವುದು ಮತ್ತು ಡಿಗ್ರಿ *n* ರ ಬಹುಪದೀಯಗಳನ್ನು ಲೆಕ್ಕಹಾಕುವುದು\n", + "\n", + "- ಮಾದರಿ ನಿರ್ದಿಷ್ಟೀಕರಣವನ್ನು ನಿರ್ಮಿಸಿ\n", + "\n", + "- ರೆಸಿಪಿ ಮತ್ತು ಮಾದರಿ ನಿರ್ದಿಷ್ಟೀಕರಣವನ್ನು ವರ್ಕ್‌ಫ್ಲೋದಲ್ಲಿ ಸಂಯೋಜಿಸಿ\n", + "\n", + "- ವರ್ಕ್‌ಫ್ಲೋವನ್ನು ಹೊಂದಿಸಿ ಮಾದರಿಯನ್ನು ರಚಿಸಿ\n", + "\n", + "- ಪರೀಕ್ಷಾ ಡೇಟಾದ ಮೇಲೆ ಮಾದರಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ\n", + "\n", + "ನೇರವಾಗಿ ಪ್ರಾರಂಭಿಸೋಣ!\n" + ], + "metadata": { + "id": "VcEIpRV9wzYr" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Specify a recipe\r\n", + "poly_pumpkins_recipe <-\r\n", + " recipe(price ~ package, data = pumpkins_train) %>%\r\n", + " step_integer(all_predictors(), zero_based = TRUE) %>% \r\n", + " step_poly(all_predictors(), degree = 4)\r\n", + "\r\n", + "\r\n", + "# Create a model specification\r\n", + "poly_spec <- linear_reg() %>% \r\n", + " set_engine(\"lm\") %>% \r\n", + " set_mode(\"regression\")\r\n", + "\r\n", + "\r\n", + "# Bundle recipe and model spec into a workflow\r\n", + "poly_wf <- workflow() %>% \r\n", + " add_recipe(poly_pumpkins_recipe) %>% \r\n", + " add_model(poly_spec)\r\n", + "\r\n", + "\r\n", + "# Create a model\r\n", + "poly_wf_fit <- poly_wf %>% \r\n", + " fit(data = pumpkins_train)\r\n", + "\r\n", + "\r\n", + "# Print learned model coefficients\r\n", + "poly_wf_fit\r\n", + "\r\n", + " " + ], + "outputs": [], + "metadata": { + "id": "63n_YyRXw3CC" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ\n", + "\n", + "👏👏ನೀವು ಒಂದು ಬಹುಪದ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಬನ್ನಿ ಪರೀಕ್ಷಾ ಸೆಟ್ ಮೇಲೆ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡೋಣ!\n" + ], + "metadata": { + "id": "-LHZtztSxDP0" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make price predictions on test data\r\n", + "poly_results <- poly_wf_fit %>% predict(new_data = pumpkins_test) %>% \r\n", + " bind_cols(pumpkins_test %>% select(c(package, price))) %>% \r\n", + " relocate(.pred, .after = last_col())\r\n", + "\r\n", + "\r\n", + "# Print the results\r\n", + "poly_results %>% \r\n", + " slice_head(n = 10)" + ], + "outputs": [], + "metadata": { + "id": "YUFpQ_dKxJGx" + } + }, + { + "cell_type": "markdown", + "source": [ + "ವು-ಹೂ, ನಾವು `yardstick::metrics()` ಬಳಸಿ ಮಾದರಿಯು test_set ಮೇಲೆ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸಿತು ಎಂದು ಮೌಲ್ಯಮಾಪನ ಮಾಡೋಣ.\n" + ], + "metadata": { + "id": "qxdyj86bxNGZ" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "metrics(data = poly_results, truth = price, estimate = .pred)" + ], + "outputs": [], + "metadata": { + "id": "8AW5ltkBxXDm" + } + }, + { + "cell_type": "markdown", + "source": [ + "🤩🤩 ಬಹಳ ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆ.\n", + "\n", + "`rmse` ಸುಮಾರು 7 ರಿಂದ ಸುಮಾರು 3 ಕ್ಕೆ ಇಳಿದಿದೆ, ಇದು ನಿಜವಾದ ಬೆಲೆ ಮತ್ತು ಊಹಿಸಲಾದ ಬೆಲೆಯ ನಡುವೆ ಕಡಿಮೆ ದೋಷವಿರುವ ಸೂಚನೆ. ನೀವು ಇದನ್ನು *ಸಡಿಲವಾಗಿ* ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದು ಎಂದರೆ ಸರಾಸರಿಯಾಗಿ, ತಪ್ಪು ಊಹೆಗಳು ಸುಮಾರು \\$3 ದಿಂದ ತಪ್ಪಾಗಿವೆ. `rsq` ಸುಮಾರು 0.4 ರಿಂದ 0.8 ಕ್ಕೆ ಏರಿದೆ.\n", + "\n", + "ಈ ಎಲ್ಲಾ ಅಳತೆಗಳು ಬಹುಪದ ಮಾದರಿ ರೇಖೀಯ ಮಾದರಿಗಿಂತ ಬಹಳ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಸೂಚಿಸುತ್ತವೆ. ಚೆನ್ನಾಗಿದೆ!\n", + "\n", + "ನಾವು ಇದನ್ನು ದೃಶ್ಯೀಕರಿಸಬಹುದೇ ನೋಡೋಣ!\n" + ], + "metadata": { + "id": "6gLHNZDwxYaS" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Bind encoded package column to the results\r\n", + "poly_results <- poly_results %>% \r\n", + " bind_cols(package_encode %>% \r\n", + " rename(package_integer = package)) %>% \r\n", + " relocate(package_integer, .after = package)\r\n", + "\r\n", + "\r\n", + "# Print new results data frame\r\n", + "poly_results %>% \r\n", + " slice_head(n = 5)\r\n", + "\r\n", + "\r\n", + "# Make a scatter plot\r\n", + "poly_results %>% \r\n", + " ggplot(mapping = aes(x = package_integer, y = price)) +\r\n", + " geom_point(size = 1.6) +\r\n", + " # Overlay a line of best fit\r\n", + " geom_line(aes(y = .pred), color = \"midnightblue\", size = 1.2) +\r\n", + " xlab(\"package\")\r\n" + ], + "outputs": [], + "metadata": { + "id": "A83U16frxdF1" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನೀವು ನಿಮ್ಮ ಡೇಟಾಗೆ ಉತ್ತಮವಾಗಿ ಹೊಂದಿಕೊಳ್ಳುವ ವಕ್ರ ರೇಖೆಯನ್ನು ನೋಡಬಹುದು! 🤩\n", + "\n", + "ನೀವು ಇದನ್ನು ಇನ್ನಷ್ಟು ಸ್ಮೂತ್ ಆಗಿಸಲು `geom_smooth` ಗೆ ಪೋಲಿನೋಮಿಯಲ್ ಸೂತ್ರವನ್ನು ಹೀಗೆ ಪಾಸ್ ಮಾಡಬಹುದು:\n" + ], + "metadata": { + "id": "4U-7aHOVxlGU" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make a scatter plot\r\n", + "poly_results %>% \r\n", + " ggplot(mapping = aes(x = package_integer, y = price)) +\r\n", + " geom_point(size = 1.6) +\r\n", + " # Overlay a line of best fit\r\n", + " geom_smooth(method = lm, formula = y ~ poly(x, degree = 4), color = \"midnightblue\", size = 1.2, se = FALSE) +\r\n", + " xlab(\"package\")" + ], + "outputs": [], + "metadata": { + "id": "5vzNT0Uexm-w" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಮೃದುವಾದ ವಕ್ರರೇಖೆಯಂತೆ!🤩\n", + "\n", + "ಹೊಸ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವ ವಿಧಾನ ಇಲ್ಲಿದೆ:\n" + ], + "metadata": { + "id": "v9u-wwyLxq4G" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make a hypothetical data frame\r\n", + "hypo_tibble <- tibble(package = \"bushel baskets\")\r\n", + "\r\n", + "# Make predictions using linear model\r\n", + "lm_pred <- lm_wf_fit %>% predict(new_data = hypo_tibble)\r\n", + "\r\n", + "# Make predictions using polynomial model\r\n", + "poly_pred <- poly_wf_fit %>% predict(new_data = hypo_tibble)\r\n", + "\r\n", + "# Return predictions in a list\r\n", + "list(\"linear model prediction\" = lm_pred, \r\n", + " \"polynomial model prediction\" = poly_pred)\r\n" + ], + "outputs": [], + "metadata": { + "id": "jRPSyfQGxuQv" + } + }, + { + "cell_type": "markdown", + "source": [ + "`ಪಾಲಿನೋಮಿಯಲ್ ಮಾದರಿ` ಭವಿಷ್ಯವಾಣಿ ಅರ್ಥಪೂರ್ಣವಾಗಿದೆ, `ಬೆಲೆ` ಮತ್ತು `ಪ್ಯಾಕೇಜ್`ಗಳ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್‌ಗಳನ್ನು ಗಮನಿಸಿದರೆ! ಮತ್ತು, ಇದು ಹಿಂದಿನ ಮಾದರಿಗಿಂತ ಉತ್ತಮ ಮಾದರಿ ಆಗಿದ್ದರೆ, ಅದೇ ಡೇಟಾವನ್ನು ನೋಡಿದಾಗ, ನೀವು ಈ ಹೆಚ್ಚು ದುಬಾರಿ ಕಂಬಳಿಗಳನ್ನು ಬಜೆಟ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ!\n", + "\n", + "🏆 ಚೆನ್ನಾಗಿದೆ! ನೀವು ಒಂದು ಪಾಠದಲ್ಲಿ ಎರಡು ರಿಗ್ರೆಷನ್ ಮಾದರಿಗಳನ್ನು ರಚಿಸಿದ್ದೀರಿ. ರಿಗ್ರೆಷನ್‌ನ ಅಂತಿಮ ವಿಭಾಗದಲ್ಲಿ, ವರ್ಗಗಳನ್ನು ನಿರ್ಧರಿಸಲು ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಷನ್ ಬಗ್ಗೆ ತಿಳಿಯುತ್ತೀರಿ.\n", + "\n", + "## **🚀ಸವಾಲು**\n", + "\n", + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ವಿವಿಧ ಚರಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ, ಸಹಸಂಬಂಧವು ಮಾದರಿ ನಿಖರತೆಗೆ ಹೇಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ ಎಂದು ನೋಡಿ.\n", + "\n", + "## [**ಪಾಠೋತ್ತರ ಕ್ವಿಜ್**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/)\n", + "\n", + "## **ಪುನರ್ ಪರಿಶೀಲನೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ**\n", + "\n", + "ಈ ಪಾಠದಲ್ಲಿ ನಾವು ಲೀನಿಯರ್ ರಿಗ್ರೆಷನ್ ಬಗ್ಗೆ ಕಲಿತೆವು. ಇನ್ನೂ ಕೆಲವು ಪ್ರಮುಖ ರಿಗ್ರೆಷನ್ ಪ್ರಕಾರಗಳಿವೆ. ಸ್ಟೆಪ್ವೈಸ್, ರಿಡ್ಜ್, ಲಾಸ್ಸೋ ಮತ್ತು ಎಲಾಸ್ಟಿಕ್‌ನೆಟ್ ತಂತ್ರಗಳನ್ನು ಓದಿ ತಿಳಿಯಿರಿ. ಹೆಚ್ಚಿನ ಅಧ್ಯಯನಕ್ಕೆ ಉತ್ತಮ ಕೋರ್ಸ್ [ಸ್ಟ್ಯಾನ್‌ಫರ್ಡ್ ಸ್ಟಾಟಿಸ್ಟಿಕಲ್ ಲರ್ನಿಂಗ್ ಕೋರ್ಸ್](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ಆಗಿದೆ.\n", + "\n", + "ಅದ್ಭುತ ಟಿಡಿಮೋಡಲ್ಸ್ ಫ್ರೇಮ್ವರ್ಕ್ ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದನ್ನು ಇನ್ನಷ್ಟು ತಿಳಿಯಲು, ದಯವಿಟ್ಟು ಕೆಳಗಿನ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಪರಿಶೀಲಿಸಿ:\n", + "\n", + "- ಟಿಡಿಮೋಡಲ್ಸ್ ವೆಬ್‌ಸೈಟ್: [ಟಿಡಿಮೋಡಲ್ಸ್‌ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ](https://www.tidymodels.org/start/)\n", + "\n", + "- ಮ್ಯಾಕ್ಸ್ ಕುಹ್ನ್ ಮತ್ತು ಜೂಲಿಯಾ ಸಿಲ್ಜ್, [*R ನೊಂದಿಗೆ ಟಿಡಿ ಮಾದರೀಕರಣ*](https://www.tmwr.org/)*.*\n", + "\n", + "###### **ಧನ್ಯವಾದಗಳು:**\n", + "\n", + "[ಅಲಿಸನ್ ಹೋರ್ಸ್ಟ್](https://twitter.com/allison_horst?lang=en) ಅವರಿಗೆ, R ಅನ್ನು ಹೆಚ್ಚು ಆತಿಥ್ಯಪೂರ್ಣ ಮತ್ತು ಆಕರ್ಷಕವಾಗಿಸುವ ಅದ್ಭುತ ಚಿತ್ರಣಗಳನ್ನು ಸೃಷ್ಟಿಸಿದಕ್ಕಾಗಿ. ಅವರ ಇನ್ನಷ್ಟು ಚಿತ್ರಣಗಳನ್ನು ಅವರ [ಗ್ಯಾಲರಿ](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM) ನಲ್ಲಿ ಕಂಡುಹಿಡಿಯಿರಿ.\n" + ], + "metadata": { + "id": "8zOLOWqMxzk5" + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/2-Regression/3-Linear/solution/notebook.ipynb b/translations/kn/2-Regression/3-Linear/solution/notebook.ipynb new file mode 100644 index 000000000..9f35d1479 --- /dev/null +++ b/translations/kn/2-Regression/3-Linear/solution/notebook.ipynb @@ -0,0 +1,1117 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ಕಂಬಳಿಯ ಬೆಲೆಗೆ ರೇಖೀಯ ಮತ್ತು ಬಹುಪದ ರಿಗ್ರೆಷನ್ - ಪಾಠ 3\n", + "\n", + "ಅಗತ್ಯ ಲೈಬ್ರರಿಗಳು ಮತ್ತು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ. ಡೇಟಾವನ್ನು ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಪರಿವರ್ತಿಸಿ, ಡೇಟಾದ ಉಪಸಮೂಹವನ್ನು ಒಳಗೊಂಡಂತೆ:\n", + "\n", + "- ಬಸ್ಸೆಲ್ ಪ್ರಕಾರ ಬೆಲೆಯಾದ ಕಂಬಳಿಗಳನ್ನು ಮಾತ್ರ ಪಡೆಯಿರಿ\n", + "- ದಿನಾಂಕವನ್ನು ತಿಂಗಳಿಗೆ ಪರಿವರ್ತಿಸಿ\n", + "- ಬೆಲೆಯನ್ನು ಉನ್ನತ ಮತ್ತು ಕಡಿಮೆ ಬೆಲೆಯ ಸರಾಸರಿ ಎಂದು ಲೆಕ್ಕಿಸಿ\n", + "- ಬೆಲೆಯನ್ನು ಬಸ್ಸೆಲ್ ಪ್ರಮಾಣದ ಪ್ರಕಾರ ಪ್ರತಿಬಿಂಬಿಸುವಂತೆ ಪರಿವರ್ತಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade Date \\\n", + "0 BALTIMORE NaN 24 inch bins NaN NaN NaN 4/29/17 \n", + "1 BALTIMORE NaN 24 inch bins NaN NaN NaN 5/6/17 \n", + "2 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "3 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "4 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 11/5/16 \n", + "\n", + " Low Price High Price Mostly Low ... Unit of Sale Quality Condition \\\n", + "0 270.0 280.0 270.0 ... NaN NaN NaN \n", + "1 270.0 280.0 270.0 ... NaN NaN NaN \n", + "2 160.0 160.0 160.0 ... NaN NaN NaN \n", + "3 160.0 160.0 160.0 ... NaN NaN NaN \n", + "4 90.0 100.0 90.0 ... NaN NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 Unnamed: 25 \n", + "0 NaN NaN NaN E NaN NaN NaN \n", + "1 NaN NaN NaN E NaN NaN NaN \n", + "2 NaN NaN NaN N NaN NaN NaN \n", + "3 NaN NaN NaN N NaN NaN NaN \n", + "4 NaN NaN NaN N NaN NaN NaN \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from datetime import datetime\n", + "\n", + "pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", + "pumpkins.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MonthDayOfYearVarietyCityPackageLow PriceHigh PricePrice
709267PIE TYPEBALTIMORE1 1/9 bushel cartons15.015.013.636364
719267PIE TYPEBALTIMORE1 1/9 bushel cartons18.018.016.363636
7210274PIE TYPEBALTIMORE1 1/9 bushel cartons18.018.016.363636
7310274PIE TYPEBALTIMORE1 1/9 bushel cartons17.017.015.454545
7410281PIE TYPEBALTIMORE1 1/9 bushel cartons15.015.013.636364
\n", + "
" + ], + "text/plain": [ + " Month DayOfYear Variety City Package Low Price \\\n", + "70 9 267 PIE TYPE BALTIMORE 1 1/9 bushel cartons 15.0 \n", + "71 9 267 PIE TYPE BALTIMORE 1 1/9 bushel cartons 18.0 \n", + "72 10 274 PIE TYPE BALTIMORE 1 1/9 bushel cartons 18.0 \n", + "73 10 274 PIE TYPE BALTIMORE 1 1/9 bushel cartons 17.0 \n", + "74 10 281 PIE TYPE BALTIMORE 1 1/9 bushel cartons 15.0 \n", + "\n", + " High Price Price \n", + "70 15.0 13.636364 \n", + "71 18.0 16.363636 \n", + "72 18.0 16.363636 \n", + "73 17.0 15.454545 \n", + "74 15.0 13.636364 " + ] + }, + "execution_count": 168, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n", + "\n", + "new_columns = ['Package', 'Variety', 'City Name', 'Month', 'Low Price', 'High Price', 'Date']\n", + "pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1)\n", + "\n", + "price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2\n", + "\n", + "month = pd.DatetimeIndex(pumpkins['Date']).month\n", + "day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)\n", + "\n", + "new_pumpkins = pd.DataFrame(\n", + " {'Month': month, \n", + " 'DayOfYear' : day_of_year, \n", + " 'Variety': pumpkins['Variety'], \n", + " 'City': pumpkins['City Name'], \n", + " 'Package': pumpkins['Package'], \n", + " 'Low Price': pumpkins['Low Price'],\n", + " 'High Price': pumpkins['High Price'], \n", + " 'Price': price})\n", + "\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/1.1\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price*2\n", + "\n", + "new_pumpkins.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಒಂದು ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ನಮಗೆ ಆಗಸ್ಟ್‌ನಿಂದ ಡಿಸೆಂಬರ್‌ವರೆಗೆ ಮಾತ್ರ ತಿಂಗಳ ಡೇಟಾ ಇದೆ ಎಂದು ನೆನಪಿಸುತ್ತದೆ. ರೇಖೀಯ ರೀತಿಯಲ್ಲಿ ನಿರ್ಣಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ನಾವು ಬಹುಶಃ ಹೆಚ್ಚು ಡೇಟಾ ಬೇಕಾಗಬಹುದು.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "new_pumpkins.plot.scatter('Month','Price')" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "new_pumpkins.plot.scatter('DayOfYear','Price')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ನೋಡೋಣ ಇದರಲ್ಲಿ ಸಂಬಂಧವಿದೆಯೇ:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-0.14878293554077535\n", + "-0.16673322492745407\n" + ] + } + ], + "source": [ + "print(new_pumpkins['Month'].corr(new_pumpkins['Price']))\n", + "print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಸಂಬಂಧವು ತುಂಬಾ ಸಣ್ಣದಾಗಿರುವಂತೆ ಕಾಣುತ್ತದೆ, ಆದರೆ ಇನ್ನೊಂದು ಹೆಚ್ಚು ಪ್ರಮುಖ ಸಂಬಂಧವಿದೆ - ಏಕೆಂದರೆ ಮೇಲಿನ ಚಿತ್ರದಲ್ಲಿ ಬೆಲೆ ಬಿಂದುಗಳು ಹಲವಾರು ವಿಭಿನ್ನ ಗುಂಪುಗಳನ್ನು ಹೊಂದಿವೆ ಎಂದು ತೋರುತ್ತದೆ. ಬೇರೆಯಾದ ಹಬ್ಬುಗಳ ವಿವಿಧ ಪ್ರಭೇದಗಳನ್ನು ತೋರಿಸುವ ಚಿತ್ರವನ್ನು ಮಾಡೋಣ:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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5sxSZs68nu9975ccemg3RBzH3RbOOOMMrr32Wh577DHASb8sEnpOPGmZVRv1hg8/kZqaLyPqff755yxbtozbbrutwTZt2jSWLl3KF198wbx58zj55JMZP348AB07duThhx9ueNIAOPXUU1m8eDH79u1jx44dfP755xQWFja7V5cuXTjttNNYsGBBg+2pp55q+Fs/99xznHfeeVxyySURZ0kfffTRdOzYkc2bN0f7Z4mJDRs20KdPn4bjEfE+ymKO30gCBQXN/+H37XPsXjF5cnT21ojUqnfs5UB/YJy7bz1u1bKeQ72z2b17NytWrOCEE06IqHfZZcVs27aZnTu3ce65TohI1Vl0/eabb24IF0yZMiWixvHHH88nn3wCOD/MwZP4y8vv55JLCjnpJEdn/fr1De8Fp5AuLCxk/vz5zbRFGvXee+9VvvnNyRHTPK9evbohDFJPfUhk1apVrFq1ilGjRoVcM3DgQHbs2MG2bdvc+wljx47ltdde48UXX2TixIkR611cXNzg1NevX8+aNWsa0krX/+AWFxdHXAPhgw8+4Oijj+awww4L+/6UKVMa/jY333xzxHKEI9xnd/3111NSUsIZZ5zBHXfcEfJZxIqFeoyEk5/vxN1LSpyW/r59zrGXyyxMmODE+INWG2T48NjCPOA45EAgNDwTCEC3bjVACVDnbrjHY4HIFYqs13g8YsQIKisrKS8vbzWOu3HjOrZu/TcHDgh79uwgEOhM//6O448U6mlKcLqW3Fyn76WqynHal156I7fddhM9ezrvFwT9Src11HPDDWfw739vpEePw7j++hkR0zyrKtL0cSPIHul9IMR+ySWX8OCDD7J161buvfdefv3rX4e9ZsKECVx33XVs27aNp59+mosuuoicnBw2btzI559/zimnnIKI0L59e1auXMmwYcMAJzfR448/zj/+8Q9effXViPUOF+ppK+E+u29961sN93zllVc47rjjWLlyJfGsU2ItfiMpFBc7TmXhQmcfIYoRFytWwIIFzg/MggXOcTwceywMGuQsjj5okHMMlUDTZmuua49FL5SJEydy0003RQzz1DN16lR++cvpFBdfzDPP/BfDh9PgpNvKhx9+GJLbpWdPGnR6945eryl//esiKiurGDnyWJ59dlpEvWOPPZYPP/yQg0FxqoMHD/LRRx8xZMgQjj32WJrm6vrH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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax=None\n", + "colors = ['red','blue','green','yellow']\n", + "for i,var in enumerate(new_pumpkins['Variety'].unique()):\n", + " ax = new_pumpkins[new_pumpkins['Variety']==var].plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಈ ಸಮಯದಲ್ಲಿ, ನಾವು ಕೇವಲ ಒಂದು ಪ್ರಕಾರ - **ಪೈ ಪ್ರಕಾರ** ಮೇಲೆ ಮಾತ್ರ ಗಮನಹರಿಸೋಣ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-0.2669192282197318\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 174, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']\n", + "print(pie_pumpkins['DayOfYear'].corr(pie_pumpkins['Price']))\n", + "pie_pumpkins.plot.scatter('DayOfYear','Price')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ರೇಖೀಯ ರಿಗ್ರೆಷನ್\n", + "\n", + "ನಾವು ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ Scikit Learn ಅನ್ನು ಬಳಸಲಿದ್ದೇವೆ:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.77 (17.2%)\n" + ] + } + ], + "source": [ + "X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)\n", + "y = pie_pumpkins['Price']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + "lin_reg = LinearRegression()\n", + "lin_reg.fit(X_train,y_train)\n", + "\n", + "pred = lin_reg.predict(X_test)\n", + "\n", + "mse = np.sqrt(mean_squared_error(y_test,pred))\n", + "print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 177, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X_test,y_test)\n", + "plt.plot(X_test,pred)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಗುಣಾಂಕಗಳಿಂದ ರೇಖೆಯ ತಿರುವು ನಿರ್ಧರಿಸಬಹುದು:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([-0.01751876]), 21.133734359909326)" + ] + }, + "execution_count": 178, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lin_reg.coef_, lin_reg.intercept_" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ನಾವು ತರಬೇತುಗೊಂಡ ಮಾದರಿಯನ್ನು ಬೆಲೆ ಊಹಿಸಲು ಬಳಸಬಹುದು:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([16.64893156])" + ] + }, + "execution_count": 179, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pumpkin price on programmer's day\n", + "\n", + "lin_reg.predict([[256]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ಬಹುಪದ ರಿಗ್ರೆಷನ್\n", + "\n", + "ಕೆಲವೊಮ್ಮೆ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಫಲಿತಾಂಶಗಳ ನಡುವಿನ ಸಂಬಂಧ ಸ್ವಭಾವತಃ ರೇಖೀಯವಲ್ಲ. ಉದಾಹರಣೆಗೆ, ಹಬ್ಬದ ಬೆಲೆಗಳು ಚಳಿಗಾಲದಲ್ಲಿ (ತಿಂಗಳು=1,2) ಹೆಚ್ಚು ಇರಬಹುದು, ನಂತರ ಬೇಸಿಗೆ (ತಿಂಗಳು=5-7) ಸಮಯದಲ್ಲಿ ಇಳಿಯಬಹುದು, ಮತ್ತು ನಂತರ ಮತ್ತೆ ಏರಬಹುದು. ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಈ ಸಂಬಂಧವನ್ನು ಸರಿಯಾಗಿ ಕಂಡುಹಿಡಿಯಲು ಸಾಧ್ಯವಿಲ್ಲ.\n", + "\n", + "ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು ಹೆಚ್ಚುವರಿ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸೇರಿಸುವುದನ್ನು ಪರಿಗಣಿಸಬಹುದು. ಸರಳ ವಿಧಾನವೆಂದರೆ ಇನ್‌ಪುಟ್ ವೈಶಿಷ್ಟ್ಯಗಳಿಂದ ಬಹುಪದಗಳನ್ನು ಬಳಸುವುದು, ಇದರಿಂದ **ಬಹುಪದ ರಿಗ್ರೆಷನ್** ಆಗುತ್ತದೆ. ಸ್ಕಿಕಿಟ್ ಲರ್ನ್‌ನಲ್ಲಿ, ನಾವು ಪೈಪ್ಲೈನ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಬಹುಪದ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪೂರ್ವಗಣನೆ ಮಾಡಬಹುದು: \n" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.73 (17.0%)\n", + "Model determination: 0.07639977655280217\n" + ] + }, + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())\n", + "\n", + "pipeline.fit(X_train,y_train)\n", + "\n", + "pred = pipeline.predict(X_test)\n", + "\n", + "mse = np.sqrt(mean_squared_error(y_test,pred))\n", + "print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n", + "\n", + "score = pipeline.score(X_train,y_train)\n", + "print('Model determination: ', score)\n", + "\n", + "plt.scatter(X_test,y_test)\n", + "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ಎನ್‌ಕೋಡಿಂಗ್ ವೈವಿಧ್ಯಗಳು\n", + "\n", + "ಆದರ್ಶ ಜಗತ್ತಿನಲ್ಲಿ, ನಾವು ಒಂದೇ ಮಾದರಿಯನ್ನು ಬಳಸಿಕೊಂಡು ವಿಭಿನ್ನ ಕಂಬಳಿಯ ವೈವಿಧ್ಯಗಳ ಬೆಲೆಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಯಸುತ್ತೇವೆ. ವೈವಿಧ್ಯವನ್ನು ಪರಿಗಣಿಸಲು, ಮೊದಲು ಅದನ್ನು ಸಂಖ್ಯಾತ್ಮಕ ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸಬೇಕಾಗುತ್ತದೆ, ಅಥವಾ **ಎನ್‌ಕೋಡ್** ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಇದನ್ನು ಮಾಡಲು ಹಲವಾರು ವಿಧಾನಗಳಿವೆ:\n", + "\n", + "* ಸರಳ ಸಂಖ್ಯಾತ್ಮಕ ಎನ್‌ಕೋಡಿಂಗ್, ಇದು ವಿಭಿನ್ನ ವೈವಿಧ್ಯಗಳ ಟೇಬಲ್ ಅನ್ನು ನಿರ್ಮಿಸಿ, ನಂತರ ಆ ಟೇಬಲ್‌ನಲ್ಲಿ ವೈವಿಧ್ಯ ಹೆಸರನ್ನು ಸೂಚ್ಯಂಕದಿಂದ ಬದಲಾಯಿಸುತ್ತದೆ. ಇದು ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್‌ಗೆ ಉತ್ತಮ ಐಡಿಯಾ ಅಲ್ಲ, ಏಕೆಂದರೆ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಸೂಚ್ಯಂಕದ ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯವನ್ನು ಪರಿಗಣಿಸುತ್ತದೆ, ಮತ್ತು ಆ ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯವು ಬೆಲೆಯೊಂದಿಗೆ ಸಂಖ್ಯಾತ್ಮಕವಾಗಿ ಹೊಂದಾಣಿಕೆ ಹೊಂದಿರುವುದಿಲ್ಲ.\n", + "* ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡಿಂಗ್, ಇದು `Variety` ಕಾಲಮ್ ಅನ್ನು 4 ವಿಭಿನ್ನ ಕಾಲಮ್‌ಗಳ ಮೂಲಕ ಬದಲಾಯಿಸುತ್ತದೆ, ಪ್ರತಿ ವೈವಿಧ್ಯಕ್ಕೆ ಒಂದು ಕಾಲಮ್, ಅದು ನೀಡಲಾದ ಸಾಲು ಆ ವೈವಿಧ್ಯಕ್ಕೆ ಸೇರಿದರೆ 1 ಇರುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ 0 ಇರುತ್ತದೆ.\n", + "\n", + "ಕೆಳಗಿನ ಕೋಡ್ ಒಂದು ವೈವಿಧ್ಯವನ್ನು ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡ್ ಮಾಡುವ ವಿಧಾನವನ್ನು ತೋರಿಸುತ್ತದೆ:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FAIRYTALEMINIATUREMIXED HEIRLOOM VARIETIESPIE TYPE
700001
710001
720001
730001
740001
...............
17380100
17390100
17400100
17410100
17420100
\n", + "

415 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " FAIRYTALE MINIATURE MIXED HEIRLOOM VARIETIES PIE TYPE\n", + "70 0 0 0 1\n", + "71 0 0 0 1\n", + "72 0 0 0 1\n", + "73 0 0 0 1\n", + "74 0 0 0 1\n", + "... ... ... ... ...\n", + "1738 0 1 0 0\n", + "1739 0 1 0 0\n", + "1740 0 1 0 0\n", + "1741 0 1 0 0\n", + "1742 0 1 0 0\n", + "\n", + "[415 rows x 4 columns]" + ] + }, + "execution_count": 181, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.get_dummies(new_pumpkins['Variety'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ವೈವಿಧ್ಯದಲ್ಲಿ ರೇಖೀಯ ರಿಗ್ರೆಷನ್\n", + "\n", + "ನಾವು ಈಗ ಮೇಲಿನ ಅದೇ ಕೋಡ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ, ಆದರೆ `DayOfYear` ಬದಲು ನಾವು ನಮ್ಮ ಒನ್-ಹಾಟ್-ಎನ್‌ಕೋಡ್ ಮಾಡಿದ ವೈವಿಧ್ಯವನ್ನು ಇನ್‌ಪುಟ್ ಆಗಿ ಬಳಸುತ್ತೇವೆ:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "metadata": {}, + "outputs": [], + "source": [ + "X = pd.get_dummies(new_pumpkins['Variety'])\n", + "y = new_pumpkins['Price']" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 5.24 (19.7%)\n", + "Model determination: 0.774085281105197\n" + ] + } + ], + "source": [ + "def run_linear_regression(X,y):\n", + " X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + " lin_reg = LinearRegression()\n", + " lin_reg.fit(X_train,y_train)\n", + "\n", + " pred = lin_reg.predict(X_test)\n", + "\n", + " mse = np.sqrt(mean_squared_error(y_test,pred))\n", + " print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n", + "\n", + " score = lin_reg.score(X_train,y_train)\n", + " print('Model determination: ', score)\n", + "\n", + "run_linear_regression(X,y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ನಾವು ಅದೇ ರೀತಿಯಲ್ಲಿ ಇತರ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪ್ರಯತ್ನಿಸಬಹುದು ಮತ್ತು ಅವುಗಳನ್ನು ಸಂಖ್ಯಾತ್ಮಕ ವೈಶಿಷ್ಟ್ಯಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ `Month` ಅಥವಾ `DayOfYear`:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.84 (10.5%)\n", + "Model determination: 0.9401096672643048\n" + ] + } + ], + "source": [ + "X = pd.get_dummies(new_pumpkins['Variety']) \\\n", + " .join(new_pumpkins['Month']) \\\n", + " .join(pd.get_dummies(new_pumpkins['City'])) \\\n", + " .join(pd.get_dummies(new_pumpkins['Package']))\n", + "y = new_pumpkins['Price']\n", + "\n", + "run_linear_regression(X,y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ಬಹುಪದ ರಿಗ್ರೆಷನ್\n", + "\n", + "ಬಹುಪದ ರಿಗ್ರೆಷನ್ ಅನ್ನು ಒನ್-ಹಾಟ್-ಎನ್‌ಕೋಡ್ ಮಾಡಲಾದ ವರ್ಗೀಕೃತ ಲಕ್ಷಣಗಳೊಂದಿಗೆ ಕೂಡ ಬಳಸಬಹುದು. ಬಹುಪದ ರಿಗ್ರೆಷನ್ ತರಬೇತಿಗೆ ಬೇಕಾದ ಕೋಡ್ ಮೂಲತಃ ನಾವು ಮೇಲ್ನೋಟದಲ್ಲಿ ನೋಡಿದಂತೆಯೇ ಇರುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.23 (8.25%)\n", + "Model determination: 0.9652870784724543\n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + "\n", + "pipeline.fit(X_train,y_train)\n", + "\n", + "pred = pipeline.predict(X_test)\n", + "\n", + "mse = np.sqrt(mean_squared_error(y_test,pred))\n", + "print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n", + "\n", + "score = pipeline.score(X_train,y_train)\n", + "print('Model determination: ', score)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5" + }, + "kernelspec": { + "display_name": "Python 3.7.0 64-bit ('3.7')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.5" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", + "translation_date": "2025-12-19T16:20:25+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/2-Regression/4-Logistic/README.md b/translations/kn/2-Regression/4-Logistic/README.md new file mode 100644 index 000000000..905e1f172 --- /dev/null +++ b/translations/kn/2-Regression/4-Logistic/README.md @@ -0,0 +1,409 @@ + +# ವರ್ಗಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ + +![ಲಾಜಿಸ್ಟಿಕ್ ವಿರುದ್ಧ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಇನ್ಫೋಗ್ರಾಫಿಕ್](../../../../translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.kn.png) + +## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ಈ ಪಾಠ R ನಲ್ಲಿ ಲಭ್ಯವಿದೆ!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html) + +## ಪರಿಚಯ + +ರಿಗ್ರೆಶನ್ ಕುರಿತು ಈ ಅಂತಿಮ ಪಾಠದಲ್ಲಿ, ಮೂಲ _ಕ್ಲಾಸಿಕ್_ ಎಂಎಲ್ ತಂತ್ರಗಳಲ್ಲಿ ಒಂದಾದ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಅನ್ನು ನೋಡೋಣ. ನೀವು ಈ ತಂತ್ರವನ್ನು ದ್ವಿಮೂಲ್ಯ ವರ್ಗಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಮಾದರಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಬಳಸುತ್ತೀರಿ. ಈ ಕ್ಯಾಂಡಿ ಚಾಕೊಲೇಟ್ ಆಗಿದೆಯೇ ಅಥವಾ ಇಲ್ಲವೇ? ಈ ರೋಗ ಸಂಕ್ರಾಮಕವೇ ಅಥವಾ ಇಲ್ಲವೇ? ಈ ಗ್ರಾಹಕ ಈ ಉತ್ಪನ್ನವನ್ನು ಆರಿಸುವನೋ ಅಥವಾ ಇಲ್ಲವೇ? + +ಈ ಪಾಠದಲ್ಲಿ ನೀವು ಕಲಿಯುವಿರಿ: + +- ಡೇಟಾ ದೃಶ್ಯೀಕರಣಕ್ಕಾಗಿ ಹೊಸ ಗ್ರಂಥಾಲಯ +- ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ತಂತ್ರಗಳು + +✅ ಈ ರೀತಿಯ ರಿಗ್ರೆಶನ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುವುದರ ಬಗ್ಗೆ ನಿಮ್ಮ ಅರ್ಥವನ್ನು ಗಾಢಗೊಳಿಸಿ ಈ [ಕಲಿಕೆ ಘಟಕದಲ್ಲಿ](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott) + +## ಪೂರ್ವಾಪೇಕ್ಷಿತ + +ಪಂಪ್ಕಿನ್ ಡೇಟಾ ಜೊತೆ ಕೆಲಸ ಮಾಡಿದ ನಂತರ, ನಾವು ಈಗ ಅದರಲ್ಲಿ ಒಂದು ದ್ವಿಮೂಲ್ಯ ವರ್ಗವಿದೆ ಎಂದು ತಿಳಿದುಕೊಂಡಿದ್ದೇವೆ: `Color`. + +ನಾವು ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸೋಣ, ಕೆಲವು ಚರಗಳನ್ನು ನೀಡಿದಾಗ, _ಒಂದು ಪಂಪ್ಕಿನ್ ಯಾವ ಬಣ್ಣದಾಗಿರಬಹುದು_ (ಕಿತ್ತಳೆ 🎃 ಅಥವಾ ಬಿಳಿ 👻). + +> ನಾವು ರಿಗ್ರೆಶನ್ ಕುರಿತು ಪಾಠ ಗುಂಪಿನಲ್ಲಿ ದ್ವಿಮೂಲ್ಯ ವರ್ಗೀಕರಣವನ್ನು ಏಕೆ ಚರ್ಚಿಸುತ್ತಿದ್ದೇವೆ? ಭಾಷಾಶೈಲಿಯ ಅನುಕೂಲಕ್ಕಾಗಿ ಮಾತ್ರ, ಏಕೆಂದರೆ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ [ನಿಜವಾಗಿಯೂ ವರ್ಗೀಕರಣ ವಿಧಾನವಾಗಿದೆ](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), ಆದರೂ ಲೀನಿಯರ್ ಆಧಾರಿತದಾಗಿದೆ. ಮುಂದಿನ ಪಾಠ ಗುಂಪಿನಲ್ಲಿ ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸುವ ಇತರ ವಿಧಾನಗಳನ್ನು ತಿಳಿಯಿರಿ. + +## ಪ್ರಶ್ನೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ + +ನಮ್ಮ ಉದ್ದೇಶಕ್ಕಾಗಿ, ನಾವು ಇದನ್ನು ದ್ವಿಮೂಲ್ಯವಾಗಿ ವ್ಯಕ್ತಪಡಿಸುತ್ತೇವೆ: 'ಬಿಳಿ' ಅಥವಾ 'ಬಿಳಿಯಲ್ಲ'. ನಮ್ಮ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ 'ಸ್ಟ್ರೈಪ್ಡ್' ಎಂಬ ವರ್ಗವೂ ಇದೆ ಆದರೆ ಅದರ ಉದಾಹರಣೆಗಳು ಕಡಿಮೆ, ಆದ್ದರಿಂದ ನಾವು ಅದನ್ನು ಬಳಸುವುದಿಲ್ಲ. ಡೇಟಾಸೆಟ್‌ನಿಂದ ನಲ್ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದ ಮೇಲೆ ಅದು ಅಳಿದುಹೋಗುತ್ತದೆ. + +> 🎃 ಮನರಂಜನೆಯ ವಿಷಯ, ನಾವು ಕೆಲವೊಮ್ಮೆ ಬಿಳಿ ಪಂಪ್ಕಿನ್‌ಗಳನ್ನು 'ಭೂತ' ಪಂಪ್ಕಿನ್‌ಗಳು ಎಂದು ಕರೆಯುತ್ತೇವೆ. ಅವುಗಳನ್ನು ಕತ್ತರಿಸುವುದು ಸುಲಭವಲ್ಲ, ಆದ್ದರಿಂದ ಅವು ಕಿತ್ತಳೆ ಪಂಪ್ಕಿನ್‌ಗಳಷ್ಟು ಜನಪ್ರಿಯವಲ್ಲ ಆದರೆ ಅವು ಚೆನ್ನಾಗಿ ಕಾಣುತ್ತವೆ! ಆದ್ದರಿಂದ ನಾವು ನಮ್ಮ ಪ್ರಶ್ನೆಯನ್ನು 'ಭೂತ' ಅಥವಾ 'ಭೂತವಲ್ಲ' ಎಂದು ಮರುರೂಪಿಸಬಹುದು. 👻 + +## ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಗ್ಗೆ + +ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್‌ನಿಂದ, ನೀವು ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ಕಲಿತಿದ್ದೀರಿ, ಕೆಲವು ಪ್ರಮುಖ ರೀತಿಗಳಲ್ಲಿ ಭಿನ್ನವಾಗಿದೆ. + +[![ಎಂಎಲ್ ಆರಂಭಿಕರಿಗೆ - ಯಂತ್ರ ಅಧ್ಯಯನ ವರ್ಗೀಕರಣಕ್ಕಾಗಿ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "ಎಂಎಲ್ ಆರಂಭಿಕರಿಗೆ - ಯಂತ್ರ ಅಧ್ಯಯನ ವರ್ಗೀಕರಣಕ್ಕಾಗಿ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು") + +> 🎥 ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಕುರಿತು ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೋ ಅವಲೋಕನಕ್ಕಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. + +### ದ್ವಿಮೂಲ್ಯ ವರ್ಗೀಕರಣ + +ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್‌ನಂತೆ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ನೀಡುವುದಿಲ್ಲ. ಮೊದಲದು ದ್ವಿಮೂಲ್ಯ ವರ್ಗದ ಬಗ್ಗೆ ಭವಿಷ್ಯವಾಣಿ ನೀಡುತ್ತದೆ ("ಬಿಳಿ ಅಥವಾ ಬಿಳಿಯಲ್ಲ") ಆದರೆ ಎರಡನೆಯದು ನಿರಂತರ ಮೌಲ್ಯಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು, ಉದಾಹರಣೆಗೆ ಪಂಪ್ಕಿನ್ ಮೂಲ ಮತ್ತು ಹಾರ್ವೆಸ್ಟ್ ಸಮಯ ನೀಡಿದಾಗ, _ಅದರ ಬೆಲೆ ಎಷ್ಟು ಏರಬಹುದು_. + +![ಪಂಪ್ಕಿನ್ ವರ್ಗೀಕರಣ ಮಾದರಿ](../../../../translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.kn.png) +> ಇನ್ಫೋಗ್ರಾಫಿಕ್: [ದಾಸನಿ ಮಡಿಪಳ್ಳಿ](https://twitter.com/dasani_decoded) + +### ಇತರ ವರ್ಗೀಕರಣಗಳು + +ಮಲ್ಟಿನೋಮಿಯಲ್ ಮತ್ತು ಆರ್ಡಿನಲ್ ಸೇರಿದಂತೆ ಇತರ ವಿಧದ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್‌ಗಳಿವೆ: + +- **ಮಲ್ಟಿನೋಮಿಯಲ್**, ಇದು ಒಂದುಕ್ಕಿಂತ ಹೆಚ್ಚು ವರ್ಗಗಳನ್ನು ಹೊಂದಿದೆ - "ಕಿತ್ತಳೆ, ಬಿಳಿ ಮತ್ತು ಸ್ಟ್ರೈಪ್ಡ್". +- **ಆರ್ಡಿನಲ್**, ಇದು ಕ್ರಮಬದ್ಧ ವರ್ಗಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಉದಾಹರಣೆಗೆ ನಮ್ಮ ಪಂಪ್ಕಿನ್‌ಗಳು ಸಣ್ಣ, ಮಧ್ಯಮ, ದೊಡ್ಡ ಇತ್ಯಾದಿ ಗಾತ್ರಗಳಲ್ಲಿ ಕ್ರಮಬದ್ಧವಾಗಿದ್ದರೆ. + +![ಮಲ್ಟಿನೋಮಿಯಲ್ ವಿರುದ್ಧ ಆರ್ಡಿನಲ್ ರಿಗ್ರೆಶನ್](../../../../translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.kn.png) + +### ಚರಗಳು ಹೊಂದಾಣಿಕೆ ಹೊಂದಬೇಕಾಗಿಲ್ಲ + +ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಹೆಚ್ಚು ಹೊಂದಾಣಿಕೆಯ ಚರಗಳೊಂದಿಗೆ ಉತ್ತಮವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತಿತ್ತು ಎಂದು ನೆನಪಿಸಿಕೊಳ್ಳಿ? ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಅದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿದೆ - ಚರಗಳು ಹೊಂದಾಣಿಕೆ ಹೊಂದಬೇಕಾಗಿಲ್ಲ. ಇದು ಸ್ವಲ್ಪ ದುರ್ಬಲ ಹೊಂದಾಣಿಕೆ ಇರುವ ಈ ಡೇಟಾಗೆ ಸೂಕ್ತವಾಗಿದೆ. + +### ನಿಮಗೆ ಬಹಳಷ್ಟು ಸ್ವಚ್ಛ ಡೇಟಾ ಬೇಕು + +ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಹೆಚ್ಚು ಡೇಟಾ ಬಳಸಿದರೆ ಹೆಚ್ಚು ನಿಖರ ಫಲಿತಾಂಶ ನೀಡುತ್ತದೆ; ನಮ್ಮ ಸಣ್ಣ ಡೇಟಾಸೆಟ್ ಈ ಕಾರ್ಯಕ್ಕೆ ಸೂಕ್ತವಲ್ಲ, ಅದನ್ನು ಗಮನದಲ್ಲಿಡಿ. + +[![ಎಂಎಲ್ ಆರಂಭಿಕರಿಗೆ - ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್‌ಗೆ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ತಯಾರಿ](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "ಎಂಎಲ್ ಆರಂಭಿಕರಿಗೆ - ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್‌ಗೆ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ತಯಾರಿ") + +> 🎥 ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್‌ಗೆ ಡೇಟಾ ತಯಾರಿಕೆ ಕುರಿತು ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೋ ಅವಲೋಕನಕ್ಕಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ + +✅ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್‌ಗೆ ಸೂಕ್ತವಾಗುವ ಡೇಟಾ ಪ್ರಕಾರಗಳ ಬಗ್ಗೆ ಯೋಚಿಸಿ + +## ಅಭ್ಯಾಸ - ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ + +ಮೊದಲು, ಡೇಟಾವನ್ನು ಸ್ವಲ್ಪ ಸ್ವಚ್ಛಗೊಳಿಸಿ, ನಲ್ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಿ ಮತ್ತು ಕೆಲವು ಕಾಲಮ್‌ಗಳನ್ನು ಮಾತ್ರ ಆಯ್ಕೆಮಾಡಿ: + +1. ಕೆಳಗಿನ ಕೋಡ್ ಸೇರಿಸಿ: + + ```python + + columns_to_select = ['City Name','Package','Variety', 'Origin','Item Size', 'Color'] + pumpkins = full_pumpkins.loc[:, columns_to_select] + + pumpkins.dropna(inplace=True) + ``` + + ನೀವು ಯಾವಾಗಲೂ ನಿಮ್ಮ ಹೊಸ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ನೋಡಬಹುದು: + + ```python + pumpkins.info + ``` + +### ದೃಶ್ಯೀಕರಣ - ವರ್ಗೀಕೃತ ಪ್ಲಾಟ್ + +ಈಗ ನೀವು ಮತ್ತೆ [ಸ್ಟಾರ್ಟರ್ ನೋಟ್ಬುಕ್](./notebook.ipynb) ಅನ್ನು ಪಂಪ್ಕಿನ್ ಡೇಟಾ ಜೊತೆಗೆ ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಸ್ವಚ್ಛಗೊಳಿಸಿದ್ದೀರಿ, ಇದರಲ್ಲಿ ಕೆಲವು ಚರಗಳೊಂದಿಗೆ `Color` ಕೂಡ ಇದೆ. ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಬೇರೆ ಗ್ರಂಥಾಲಯ ಬಳಸಿ ದೃಶ್ಯೀಕರಿಸೋಣ: [Seaborn](https://seaborn.pydata.org/index.html), ಇದು Matplotlib ಮೇಲೆ ನಿರ್ಮಿತವಾಗಿದೆ, ನಾವು ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ಬಳಸಿದ್ದೇವೆ. + +Seaborn ನಿಮ್ಮ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಕೆಲವು ಚೆನ್ನಾದ ವಿಧಾನಗಳನ್ನು ನೀಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನೀವು ಪ್ರತಿ `Variety` ಮತ್ತು `Color` ಗೆ ಡೇಟಾ ವಿತರಣೆಗಳನ್ನು ವರ್ಗೀಕೃತ ಪ್ಲಾಟ್‌ನಲ್ಲಿ ಹೋಲಿಸಬಹುದು. + +1. `catplot` ಫಂಕ್ಷನ್ ಬಳಸಿ, ನಮ್ಮ ಪಂಪ್ಕಿನ್ ಡೇಟಾ `pumpkins` ಮತ್ತು ಪ್ರತಿ ಪಂಪ್ಕಿನ್ ವರ್ಗಕ್ಕೆ ಬಣ್ಣ ನಕ್ಷೆ (ಕಿತ್ತಳೆ ಅಥವಾ ಬಿಳಿ) ಸೂಚಿಸಿ, ಇಂತಹ ಪ್ಲಾಟ್ ರಚಿಸಿ: + + ```python + import seaborn as sns + + palette = { + 'ORANGE': 'orange', + 'WHITE': 'wheat', + } + + sns.catplot( + data=pumpkins, y="Variety", hue="Color", kind="count", + palette=palette, + ) + ``` + + ![ದೃಶ್ಯೀಕರಿಸಿದ ಡೇಟಾದ ಗ್ರಿಡ್](../../../../translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.kn.png) + + ಡೇಟಾವನ್ನು ಗಮನಿಸಿದರೆ, ಬಣ್ಣ ಡೇಟಾ `Variety` ಗೆ ಹೇಗೆ ಸಂಬಂಧಿಸಿದೆ ಎಂದು ಕಾಣಬಹುದು. + + ✅ ಈ ವರ್ಗೀಕೃತ ಪ್ಲಾಟ್ ನೀಡಿದಾಗ, ನೀವು ಯಾವ ರೀತಿ ಆಸಕ್ತಿದಾಯಕ ಅನ್ವೇಷಣೆಗಳನ್ನು ಕಲ್ಪಿಸಬಹುದು? + +### ಡೇಟಾ ಪೂರ್ವ-ಪ್ರಕ್ರಿಯೆ: ವೈಶಿಷ್ಟ್ಯ ಮತ್ತು ಲೇಬಲ್ ಎನ್ಕೋಡಿಂಗ್ +ನಮ್ಮ ಪಂಪ್ಕಿನ್ ಡೇಟಾಸೆಟ್‌ನ ಎಲ್ಲಾ ಕಾಲಮ್‌ಗಳಲ್ಲಿ ಸ್ಟ್ರಿಂಗ್ ಮೌಲ್ಯಗಳಿವೆ. ವರ್ಗೀಕೃತ ಡೇಟಾ ಮಾನವರಿಗೆ ಸುಲಭ ಆದರೆ ಯಂತ್ರಗಳಿಗೆ ಅಲ್ಲ. ಯಂತ್ರ ಅಧ್ಯಯನ ಆಲ್ಗಾರಿದಮ್ಗಳು ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ ಉತ್ತಮವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತವೆ. ಆದ್ದರಿಂದ ಎನ್ಕೋಡಿಂಗ್ ಡೇಟಾ ಪೂರ್ವ-ಪ್ರಕ್ರಿಯೆಯ ಅತ್ಯಂತ ಮುಖ್ಯ ಹಂತವಾಗಿದೆ, ಇದು ವರ್ಗೀಕೃತ ಡೇಟಾವನ್ನು ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾಗೆ ಪರಿವರ್ತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಯಾವುದೇ ಮಾಹಿತಿ ಕಳೆದುಕೊಳ್ಳದೆ. ಉತ್ತಮ ಎನ್ಕೋಡಿಂಗ್ ಉತ್ತಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ. + +ವೈಶಿಷ್ಟ್ಯ ಎನ್ಕೋಡಿಂಗ್‌ಗೆ ಎರಡು ಪ್ರಮುಖ ಎನ್ಕೋಡರ್ ಪ್ರಕಾರಗಳಿವೆ: + +1. ಆರ್ಡಿನಲ್ ಎನ್ಕೋಡರ್: ಇದು ಆರ್ಡಿನಲ್ ಚರಗಳಿಗೆ ಸೂಕ್ತ, ಅಂದರೆ ಅವುಗಳ ಡೇಟಾ ತರ್ಕಬದ್ಧ ಕ್ರಮವನ್ನು ಅನುಸರಿಸುವ ವರ್ಗೀಕೃತ ಚರಗಳು, ನಮ್ಮ ಡೇಟಾಸೆಟ್‌ನ `Item Size` ಕಾಲಮ್‌ನಂತೆ. ಇದು ಪ್ರತಿ ವರ್ಗವನ್ನು ಸಂಖ್ಯೆಯಿಂದ ಪ್ರತಿನಿಧಿಸುವ ನಕ್ಷೆಯನ್ನು ರಚಿಸುತ್ತದೆ, ಅದು ಕಾಲಮ್‌ನಲ್ಲಿ ವರ್ಗದ ಕ್ರಮವಾಗಿದೆ. + + ```python + from sklearn.preprocessing import OrdinalEncoder + + item_size_categories = [['sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo']] + ordinal_features = ['Item Size'] + ordinal_encoder = OrdinalEncoder(categories=item_size_categories) + ``` + +2. ವರ್ಗೀಕೃತ ಎನ್ಕೋಡರ್: ಇದು ನಾಮಮಾತ್ರ ಚರಗಳಿಗೆ ಸೂಕ್ತ, ಅಂದರೆ ಅವುಗಳ ಡೇಟಾ ತರ್ಕಬದ್ಧ ಕ್ರಮವನ್ನು ಅನುಸರಿಸುವುದಿಲ್ಲ, ನಮ್ಮ ಡೇಟಾಸೆಟ್‌ನ `Item Size` ಹೊರತುಪಡಿಸಿ ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳಿಗೆ. ಇದು ಒನ್-ಹಾಟ್ ಎನ್ಕೋಡಿಂಗ್ ಆಗಿದ್ದು, ಪ್ರತಿ ವರ್ಗವನ್ನು ಬೈನರಿ ಕಾಲಮ್ ಮೂಲಕ ಪ್ರತಿನಿಧಿಸುತ್ತದೆ: ಪಂಪ್ಕಿನ್ ಆ ವರ್ಗಕ್ಕೆ ಸೇರಿದರೆ ಎನ್ಕೋಡಿಂಗ್ ಮೌಲ್ಯ 1, ಇಲ್ಲದಿದ್ದರೆ 0. + + ```python + from sklearn.preprocessing import OneHotEncoder + + categorical_features = ['City Name', 'Package', 'Variety', 'Origin'] + categorical_encoder = OneHotEncoder(sparse_output=False) + ``` +ನಂತರ, `ColumnTransformer` ಅನ್ನು ಬಳಸಿಕೊಂಡು ಹಲವಾರು ಎನ್ಕೋಡರ್‌ಗಳನ್ನು ಒಂದೇ ಹಂತದಲ್ಲಿ ಸಂಯೋಜಿಸಿ ಸೂಕ್ತ ಕಾಲಮ್‌ಗಳಿಗೆ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ. + +```python + from sklearn.compose import ColumnTransformer + + ct = ColumnTransformer(transformers=[ + ('ord', ordinal_encoder, ordinal_features), + ('cat', categorical_encoder, categorical_features) + ]) + + ct.set_output(transform='pandas') + encoded_features = ct.fit_transform(pumpkins) +``` +ಮತ್ತೊಂದೆಡೆ, ಲೇಬಲ್ ಎನ್ಕೋಡಿಂಗ್ ಮಾಡಲು, ನಾವು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್‌ನ `LabelEncoder` ವರ್ಗವನ್ನು ಬಳಸುತ್ತೇವೆ, ಇದು ಲೇಬಲ್‌ಗಳನ್ನು 0 ರಿಂದ n_classes-1 (ಇಲ್ಲಿ 0 ಮತ್ತು 1) ಮೌಲ್ಯಗಳ ನಡುವೆ ಸಾಮಾನ್ಯೀಕರಿಸಲು ಸಹಾಯ ಮಾಡುವ ಉಪಯುಕ್ತ ವರ್ಗ. + +```python + from sklearn.preprocessing import LabelEncoder + + label_encoder = LabelEncoder() + encoded_label = label_encoder.fit_transform(pumpkins['Color']) +``` +ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಲೇಬಲ್ ಅನ್ನು ಎನ್ಕೋಡ್ ಮಾಡಿದ ನಂತರ, ಅವುಗಳನ್ನು ಹೊಸ ಡೇಟಾಫ್ರೇಮ್ `encoded_pumpkins` ಗೆ ಮರ್ಜ್ ಮಾಡಬಹುದು. + +```python + encoded_pumpkins = encoded_features.assign(Color=encoded_label) +``` +✅ `Item Size` ಕಾಲಮ್‌ಗೆ ಆರ್ಡಿನಲ್ ಎನ್ಕೋಡರ್ ಬಳಸುವುದರಿಂದ ಏನು ಲಾಭಗಳಿವೆ? + +### ಚರಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ + +ಈಗ ನಾವು ಡೇಟಾವನ್ನು ಪೂರ್ವ-ಪ್ರಕ್ರಿಯೆ ಮಾಡಿದ್ದೇವೆ, ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಲೇಬಲ್ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ, ಮಾದರಿ ಲೇಬಲ್ ಅನ್ನು ವೈಶಿಷ್ಟ್ಯಗಳ ಆಧಾರದ ಮೇಲೆ ಎಷ್ಟು ಚೆನ್ನಾಗಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದು. +ಈ ರೀತಿಯ ವಿಶ್ಲೇಷಣೆಗೆ ಉತ್ತಮ ವಿಧಾನ ಡೇಟಾವನ್ನು ಪ್ಲಾಟ್ ಮಾಡುವುದು. ನಾವು ಮತ್ತೆ Seaborn `catplot` ಫಂಕ್ಷನ್ ಬಳಸಿ, `Item Size`, `Variety` ಮತ್ತು `Color` ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ವರ್ಗೀಕೃತ ಪ್ಲಾಟ್‌ನಲ್ಲಿ ದೃಶ್ಯೀಕರಿಸುವೆವು. ಉತ್ತಮವಾಗಿ ಪ್ಲಾಟ್ ಮಾಡಲು ನಾವು ಎನ್ಕೋಡ್ ಮಾಡಿದ `Item Size` ಕಾಲಮ್ ಮತ್ತು ಎನ್ಕೋಡ್ ಮಾಡದ `Variety` ಕಾಲಮ್ ಬಳಸುತ್ತೇವೆ. + +```python + palette = { + 'ORANGE': 'orange', + 'WHITE': 'wheat', + } + pumpkins['Item Size'] = encoded_pumpkins['ord__Item Size'] + + g = sns.catplot( + data=pumpkins, + x="Item Size", y="Color", row='Variety', + kind="box", orient="h", + sharex=False, margin_titles=True, + height=1.8, aspect=4, palette=palette, + ) + g.set(xlabel="Item Size", ylabel="").set(xlim=(0,6)) + g.set_titles(row_template="{row_name}") +``` +![ದೃಶ್ಯೀಕರಿಸಿದ ಡೇಟಾದ ಕ್ಯಾಟ್‌ಪ್ಲಾಟ್](../../../../translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.kn.png) + +### ಸ್ವಾರ್ಮ್ ಪ್ಲಾಟ್ ಬಳಸಿ + +ಬಣ್ಣವು ದ್ವಿಮೂಲ್ಯ ವರ್ಗ (ಬಿಳಿ ಅಥವಾ ಬಿಳಿಯಲ್ಲ) ಆಗಿರುವುದರಿಂದ, ಅದನ್ನು ದೃಶ್ಯೀಕರಿಸಲು 'ವಿಶೇಷ ವಿಧಾನ' ಬೇಕಾಗುತ್ತದೆ. ಈ ವರ್ಗದ ಸಂಬಂಧವನ್ನು ಇತರ ಚರಗಳೊಂದಿಗೆ ದೃಶ್ಯೀಕರಿಸುವ ಇನ್ನೂ ಕೆಲವು ವಿಧಾನಗಳಿವೆ. + +ನೀವು Seaborn ಪ್ಲಾಟ್‌ಗಳೊಂದಿಗೆ ಚರಗಳನ್ನು ಪಕ್ಕಪಕ್ಕವಾಗಿ ದೃಶ್ಯೀಕರಿಸಬಹುದು. + +1. ಮೌಲ್ಯಗಳ ವಿತರಣೆ ತೋರಿಸಲು 'ಸ್ವಾರ್ಮ್' ಪ್ಲಾಟ್ ಪ್ರಯತ್ನಿಸಿ: + + ```python + palette = { + 0: 'orange', + 1: 'wheat' + } + sns.swarmplot(x="Color", y="ord__Item Size", data=encoded_pumpkins, palette=palette) + ``` + + ![ದೃಶ್ಯೀಕರಿಸಿದ ಡೇಟಾದ ಸ್ವಾರ್ಮ್](../../../../translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.kn.png) + +**ಎಚ್ಚರಿಕೆ**: ಮೇಲಿನ ಕೋಡ್ ಎಚ್ಚರಿಕೆ ನೀಡಬಹುದು, ಏಕೆಂದರೆ Seaborn ಇಷ್ಟು ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಸ್ವಾರ್ಮ್ ಪ್ಲಾಟ್‌ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲು ವಿಫಲವಾಗಬಹುದು. ಒಂದು ಪರಿಹಾರವೆಂದರೆ 'size' ಪರಿಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು. ಆದರೆ ಇದು ಪ್ಲಾಟ್ ಓದಲು ಕಷ್ಟವಾಗಬಹುದು. + +> **🧮 ಗಣಿತವನ್ನು ತೋರಿಸಿ** +> +> ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ 'ಗರಿಷ್ಠ ಸಾಧ್ಯತೆ' ಎಂಬ ತತ್ವವನ್ನು [ಸಿಗ್ಮಾಯ್ಡ್ ಫಂಕ್ಷನ್‌ಗಳು](https://wikipedia.org/wiki/Sigmoid_function) ಬಳಸಿ ಅವಲಂಬಿಸುತ್ತದೆ. ಪ್ಲಾಟ್‌ನಲ್ಲಿ 'ಸಿಗ್ಮಾಯ್ಡ್ ಫಂಕ್ಷನ್' 'S' ಆಕಾರದಂತೆ ಕಾಣುತ್ತದೆ. ಇದು ಒಂದು ಮೌಲ್ಯವನ್ನು ತೆಗೆದು ಅದನ್ನು 0 ಮತ್ತು 1 ನಡುವೆ ನಕ್ಷೆ ಮಾಡುತ್ತದೆ. ಇದರ ವಕ್ರವನ್ನು 'ಲಾಜಿಸ್ಟಿಕ್ ವಕ್ರ' ಎಂದು ಕರೆಯುತ್ತಾರೆ. ಇದರ ಸೂತ್ರ ಹೀಗಿದೆ: +> +> ![ಲಾಜಿಸ್ಟಿಕ್ ಫಂಕ್ಷನ್](../../../../translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.kn.png) +> +> ಇಲ್ಲಿ ಸಿಗ್ಮಾಯ್ಡ್‌ನ ಮಧ್ಯಬಿಂದುವು x ರ 0 ಬಿಂದುವಿನಲ್ಲಿ ಇರುತ್ತದೆ, L ವಕ್ರದ ಗರಿಷ್ಠ ಮೌಲ್ಯ, ಮತ್ತು k ವಕ್ರದ ತೀವ್ರತೆ. ಫಂಕ್ಷನ್ ಫಲಿತಾಂಶ 0.5 ಕ್ಕಿಂತ ಹೆಚ್ಚು ಇದ್ದರೆ, ಆ ಲೇಬಲ್ '1' ವರ್ಗಕ್ಕೆ ನೀಡಲಾಗುತ್ತದೆ. ಇಲ್ಲದಿದ್ದರೆ, '0' ಎಂದು ವರ್ಗೀಕರಿಸಲಾಗುತ್ತದೆ. + +## ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ + +ಈ ದ್ವಿಮೂಲ್ಯ ವರ್ಗೀಕರಣವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸುವುದು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್‌ನಲ್ಲಿ ಆಶ್ಚರ್ಯಕರವಾಗಿ ಸರಳವಾಗಿದೆ. + +[![ಎಂಎಲ್ ಆರಂಭಿಕರಿಗೆ - ಡೇಟಾ ವರ್ಗೀಕರಣಕ್ಕಾಗಿ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "ಎಂಎಲ್ ಆರಂಭಿಕರಿಗೆ - ಡೇಟಾ ವರ್ಗೀಕರಣಕ್ಕಾಗಿ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್") + +> 🎥 ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿ ನಿರ್ಮಾಣದ ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೋ ಅವಲೋಕನಕ್ಕಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ + +1. ನಿಮ್ಮ ವರ್ಗೀಕರಣ ಮಾದರಿಯಲ್ಲಿ ಬಳಸಬೇಕಾದ ಚರಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗಳನ್ನು `train_test_split()` ಕರೆ ಮಾಡಿ ವಿಭಜಿಸಿ: + + ```python + from sklearn.model_selection import train_test_split + + X = encoded_pumpkins[encoded_pumpkins.columns.difference(['Color'])] + y = encoded_pumpkins['Color'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + + ``` + +2. ಈಗ ನೀವು `fit()` ಅನ್ನು ನಿಮ್ಮ ತರಬೇತಿ ಡೇಟಾ ಜೊತೆ ಕರೆಸಿ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಬಹುದು ಮತ್ತು ಅದರ ಫಲಿತಾಂಶವನ್ನು ಮುದ್ರಿಸಿ: + + ```python + from sklearn.metrics import f1_score, classification_report + from sklearn.linear_model import LogisticRegression + + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('F1-score: ', f1_score(y_test, predictions)) + ``` + + ನಿಮ್ಮ ಮಾದರಿಯ ಸ್ಕೋರ್ಬೋರ್ಡ್ ಅನ್ನು ನೋಡಿ. ಇದು ಕೆಟ್ಟದಾಗಿಲ್ಲ, ನೀವು ಸುಮಾರು 1000 ಸಾಲುಗಳ ಡೇಟಾ ಹೊಂದಿದ್ದೀರಿ ಎಂದು ಪರಿಗಣಿಸಿದರೆ: + + ```output + precision recall f1-score support + + 0 0.94 0.98 0.96 166 + 1 0.85 0.67 0.75 33 + + accuracy 0.92 199 + macro avg 0.89 0.82 0.85 199 + weighted avg 0.92 0.92 0.92 199 + + Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 + 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 0 0 0 1 0 0 0 0 0 0 0 0 1 1] + F1-score: 0.7457627118644068 + ``` + +## ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಮೂಲಕ ಉತ್ತಮ ಅರ್ಥಮಾಡಿಕೆ + +ನೀವು ಮೇಲಿನ ಐಟಂಗಳನ್ನು ಮುದ್ರಿಸುವ ಮೂಲಕ ಸ್ಕೋರ್ಬೋರ್ಡ್ ವರದಿಯನ್ನು ಪಡೆಯಬಹುದು, ಆದರೆ ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಹೆಚ್ಚು ಸುಲಭವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು [ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) ಅನ್ನು ಬಳಸಬಹುದು, ಇದು ಮಾದರಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂಬುದನ್ನು ತಿಳಿಸುತ್ತದೆ. + +> 🎓 '[ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್](https://wikipedia.org/wiki/Confusion_matrix)' (ಅಥವಾ 'ದೋಷ ಮ್ಯಾಟ್ರಿಕ್ಸ್') ಒಂದು ಟೇಬಲ್ ಆಗಿದ್ದು, ನಿಮ್ಮ ಮಾದರಿಯ ನಿಜವಾದ ಮತ್ತು ತಪ್ಪು ಧನಾತ್ಮಕ ಮತ್ತು ನಕಾರಾತ್ಮಕಗಳನ್ನು ತೋರಿಸುತ್ತದೆ, ಹೀಗಾಗಿ ಭವಿಷ್ಯವಾಣಿಗಳ ನಿಖರತೆಯನ್ನು ಅಳೆಯುತ್ತದೆ. + +1. ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಬಳಸಲು, `confusion_matrix()` ಅನ್ನು ಕರೆ ಮಾಡಿ: + + ```python + from sklearn.metrics import confusion_matrix + confusion_matrix(y_test, predictions) + ``` + + ನಿಮ್ಮ ಮಾದರಿಯ ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಅನ್ನು ನೋಡಿ: + + ```output + array([[162, 4], + [ 11, 22]]) + ``` + +ಸ್ಕಿಕಿಟ್-ಲರ್ನ್‌ನಲ್ಲಿ, ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಸಾಲುಗಳು (ಅಕ್ಷ 0) ನಿಜವಾದ ಲೇಬಲ್‌ಗಳು ಮತ್ತು ಕಾಲಮ್‌ಗಳು (ಅಕ್ಷ 1) ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಲೇಬಲ್‌ಗಳು. + +| | 0 | 1 | +| :---: | :---: | :---: | +| 0 | TN | FP | +| 1 | FN | TP | + +ಇಲ್ಲಿ ಏನಾಗುತ್ತಿದೆ? ನಮ್ಮ ಮಾದರಿಯನ್ನು ಎರಡು ದ್ವಿಮೂಲ್ಯ ವರ್ಗಗಳಾದ 'ಬಿಳಿ' ಮತ್ತು 'ಬಿಳಿಯಲ್ಲ' ಪಂಪ್ಕಿನ್‌ಗಳನ್ನು ವರ್ಗೀಕರಿಸಲು ಕೇಳಲಾಗಿದೆ ಎಂದು ಹೇಳೋಣ. + +- ನಿಮ್ಮ ಮಾದರಿ ಪಂಪ್ಕಿನ್ ಅನ್ನು ಬಿಳಿಯಲ್ಲ ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದರೆ ಮತ್ತು ಅದು ನಿಜವಾಗಿಯೂ 'ಬಿಳಿಯಲ್ಲ' ವರ್ಗಕ್ಕೆ ಸೇರಿದರೆ, ಅದನ್ನು ನಿಜ ನಕಾರಾತ್ಮಕ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಇದು ಮೇಲಿನ ಎಡ ಸಂಖ್ಯೆಯಿಂದ ತೋರಿಸಲಾಗಿದೆ. +- ನಿಮ್ಮ ಮಾದರಿ ಪಂಪ್ಕಿನ್ ಅನ್ನು ಬಿಳಿ ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದರೆ ಮತ್ತು ಅದು ನಿಜವಾಗಿಯೂ 'ಬಿಳಿಯಲ್ಲ' ವರ್ಗಕ್ಕೆ ಸೇರಿದರೆ, ಅದನ್ನು ತಪ್ಪು ಧನಾತ್ಮಕ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಇದು ಕೆಳಗಿನ ಎಡ ಸಂಖ್ಯೆಯಿಂದ ತೋರಿಸಲಾಗಿದೆ. +- ನಿಮ್ಮ ಮಾದರಿ ಪಂಪ್ಕಿನ್ ಅನ್ನು ಬಿಳಿಯಲ್ಲ ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದರೆ ಮತ್ತು ಅದು ನಿಜವಾಗಿಯೂ 'ಬಿಳಿ' ವರ್ಗಕ್ಕೆ ಸೇರಿದರೆ, ಅದನ್ನು ತಪ್ಪು ಧನಾತ್ಮಕ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಇದು ಮೇಲಿನ ಬಲ ಸಂಖ್ಯೆಯಿಂದ ತೋರಿಸಲಾಗಿದೆ. +- ನಿಮ್ಮ ಮಾದರಿ ಪಂಪ್ಕಿನ್ ಅನ್ನು ಬಿಳಿ ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದರೆ ಮತ್ತು ಅದು ನಿಜವಾಗಿಯೂ 'ಬಿಳಿ' ವರ್ಗಕ್ಕೆ ಸೇರಿದರೆ, ಅದನ್ನು ನಿಜ ಧನಾತ್ಮಕ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಇದು ಕೆಳಗಿನ ಬಲ ಸಂಖ್ಯೆಯಿಂದ ತೋರಿಸಲಾಗಿದೆ. +ನೀವು ಊಹಿಸಿದ್ದಂತೆ, ಹೆಚ್ಚು ಸಂಖ್ಯೆಯ ಸತ್ಯ ಧನಾತ್ಮಕಗಳು ಮತ್ತು ಸತ್ಯ ನಕಾರಾತ್ಮಕಗಳನ್ನು ಹೊಂದಿರುವುದು ಮತ್ತು ಕಡಿಮೆ ಸಂಖ್ಯೆಯ ತಪ್ಪು ಧನಾತ್ಮಕಗಳು ಮತ್ತು ತಪ್ಪು ನಕಾರಾತ್ಮಕಗಳನ್ನು ಹೊಂದಿರುವುದು ಇಷ್ಟಕರ, ಇದು ಮಾದರಿ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ. + +ಸಂಕುಚಿತ ಮ್ಯಾಟ್ರಿಕ್ಸ್ precision ಮತ್ತು recall ಗೆ ಹೇಗೆ ಸಂಬಂಧಿಸಿದೆ? ಮೇಲಿನ ವರ್ಗೀಕರಣ ವರದಿ precision (0.85) ಮತ್ತು recall (0.67) ಅನ್ನು ತೋರಿಸಿತು ಎಂದು ನೆನಪಿಡಿ. + +Precision = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461 + +Recall = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666 + +✅ ಪ್ರಶ್ನೆ: ಸಂಕುಚಿತ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಪ್ರಕಾರ, ಮಾದರಿ ಹೇಗೆ ಮಾಡಿತು? ಉತ್ತರ: ಕೆಟ್ಟದಿಲ್ಲ; ಸತ್ಯ ನಕಾರಾತ್ಮಕಗಳ ಸಂಖ್ಯೆ ಚೆನ್ನಾಗಿದೆ ಆದರೆ ಕೆಲವು ತಪ್ಪು ನಕಾರಾತ್ಮಕಗಳೂ ಇದ್ದವು. + +ನಾವು ಮೊದಲು ನೋಡಿದ ಪದಗಳನ್ನು ಸಂಕುಚಿತ ಮ್ಯಾಟ್ರಿಕ್ಸ್‌ನ TP/TN ಮತ್ತು FP/FN ನ ನಕ್ಷೆ ಸಹಾಯದಿಂದ ಮತ್ತೆ ಪರಿಶೀಲಿಸೋಣ: + +🎓 Precision: TP/(TP + FP) ಪಡೆದ ಉದಾಹರಣೆಗಳಲ್ಲಿ ಸಂಬಂಧಿತ ಉದಾಹರಣೆಗಳ ಭಾಗ (ಉದಾ: ಯಾವ ಲೇಬಲ್ಗಳು ಚೆನ್ನಾಗಿ ಲೇಬಲ್ ಮಾಡಲಾಯಿತು) + +🎓 Recall: TP/(TP + FN) ಪಡೆದ ಸಂಬಂಧಿತ ಉದಾಹರಣೆಗಳ ಭಾಗ, ಚೆನ್ನಾಗಿ ಲೇಬಲ್ ಮಾಡಲಾದವು ಅಥವಾ ಇಲ್ಲದವು + +🎓 f1-score: (2 * precision * recall)/(precision + recall) precision ಮತ್ತು recall ನ ತೂಕಿತ ಸರಾಸರಿ, ಉತ್ತಮ 1 ಮತ್ತು ಕೆಟ್ಟ 0 + +🎓 Support: ಪ್ರತಿಯೊಂದು ಲೇಬಲ್ಗೆ ಪಡೆದ ಸಂಭವಗಳ ಸಂಖ್ಯೆ + +🎓 Accuracy: (TP + TN)/(TP + TN + FP + FN) ಮಾದರಿ ನಿಖರವಾಗಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಲೇಬಲ್ಗಳ ಶೇಕಡಾವಾರು + +🎓 Macro Avg: ಲೇಬಲ್ ಅಸಮತೋಲನವನ್ನು ಪರಿಗಣಿಸದೆ ಪ್ರತಿಯೊಂದು ಲೇಬಲ್ಗೆ ಅತೂಕವಿಲ್ಲದ ಸರಾಸರಿ ಮೌಲ್ಯಗಳ ಲೆಕ್ಕಾಚಾರ + +🎓 Weighted Avg: ಲೇಬಲ್ ಅಸಮತೋಲನವನ್ನು ಪರಿಗಣಿಸಿ, ಪ್ರತಿಯೊಂದು ಲೇಬಲ್ಗೆ ಸತ್ಯ ಉದಾಹರಣೆಗಳ ಸಂಖ್ಯೆಯ ಮೂಲಕ ತೂಕ ನೀಡುವ ಮೂಲಕ ಸರಾಸರಿ ಮೌಲ್ಯಗಳ ಲೆಕ್ಕಾಚಾರ + +✅ ನೀವು ನಿಮ್ಮ ಮಾದರಿ ತಪ್ಪು ನಕಾರಾತ್ಮಕಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಬಯಸಿದರೆ ಯಾವ ಮೌಲ್ಯವನ್ನು ಗಮನಿಸಬೇಕು ಎಂದು ನೀವು ಯೋಚಿಸಬಹುದೇ? + +## ಈ ಮಾದರಿಯ ROC ವಕ್ರವನ್ನು ದೃಶ್ಯೀಕರಿಸಿ + +[![ML for beginners - Analyzing Logistic Regression Performance with ROC Curves](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ROC ವಕ್ರಗಳ ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೋ ಅವಲೋಕನಕ್ಕಾಗಿ + +ನಾವು 'ROC' ವಕ್ರವನ್ನು ನೋಡಲು ಇನ್ನೊಂದು ದೃಶ್ಯೀಕರಣ ಮಾಡೋಣ: + +```python +from sklearn.metrics import roc_curve, roc_auc_score +import matplotlib +import matplotlib.pyplot as plt +%matplotlib inline + +y_scores = model.predict_proba(X_test) +fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1]) + +fig = plt.figure(figsize=(6, 6)) +plt.plot([0, 1], [0, 1], 'k--') +plt.plot(fpr, tpr) +plt.xlabel('False Positive Rate') +plt.ylabel('True Positive Rate') +plt.title('ROC Curve') +plt.show() +``` + +Matplotlib ಬಳಸಿ, ಮಾದರಿಯ [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) ಅಥವಾ ROC ಅನ್ನು ರೇಖಾಚಿತ್ರಗೊಳಿಸಿ. ROC ವಕ್ರಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ವರ್ಗೀಕರಿಸುವವರ ಸತ್ಯ ಮತ್ತು ತಪ್ಪು ಧನಾತ್ಮಕಗಳ ದೃಷ್ಟಿಕೋನದಿಂದ ಫಲಿತಾಂಶವನ್ನು ನೋಡಲು ಬಳಸಲಾಗುತ್ತದೆ. "ROC ವಕ್ರಗಳು ಸಾಮಾನ್ಯವಾಗಿ Y ಅಕ್ಷದಲ್ಲಿ ಸತ್ಯ ಧನಾತ್ಮಕ ದರ ಮತ್ತು X ಅಕ್ಷದಲ್ಲಿ ತಪ್ಪು ಧನಾತ್ಮಕ ದರವನ್ನು ಹೊಂದಿರುತ್ತವೆ." ಆದ್ದರಿಂದ, ವಕ್ರದ ತೀವ್ರತೆ ಮತ್ತು ಮಧ್ಯರೇಖೆ ಮತ್ತು ವಕ್ರದ ನಡುವಿನ ಸ್ಥಳವು ಮಹತ್ವಪೂರ್ಣ: ನೀವು ವಕ್ರವು ಶೀಘ್ರವಾಗಿ ಮೇಲಕ್ಕೆ ಹೋಗಿ ರೇಖೆಯನ್ನು ಮೀರಿ ಹೋಗುವಂತೆ ಬಯಸುತ್ತೀರಿ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ಆರಂಭದಲ್ಲಿ ತಪ್ಪು ಧನಾತ್ಮಕಗಳಿವೆ, ನಂತರ ರೇಖೆ ಸರಿಯಾಗಿ ಮೇಲಕ್ಕೆ ಹೋಗುತ್ತದೆ: + +![ROC](../../../../translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.kn.png) + +ಕೊನೆಗೆ, Scikit-learn ನ [`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) ಬಳಸಿ ನಿಜವಾದ 'ವಕ್ರದ ಕೆಳಗಿನ ಪ್ರದೇಶ' (AUC) ಅನ್ನು ಲೆಕ್ಕಿಸಿ: + +```python +auc = roc_auc_score(y_test,y_scores[:,1]) +print(auc) +``` +ಫಲಿತಾಂಶ `0.9749908725812341`. AUC 0 ರಿಂದ 1 ರವರೆಗೆ ಇರುತ್ತದೆ, ನೀವು ದೊಡ್ಡ ಅಂಕೆಯನ್ನು ಬಯಸುತ್ತೀರಿ, ಏಕೆಂದರೆ 100% ನಿಖರ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಮಾಡುವ ಮಾದರಿಯ AUC 1 ಆಗಿರುತ್ತದೆ; ಈ ಪ್ರಕರಣದಲ್ಲಿ, ಮಾದರಿ _ಚೆನ್ನಾಗಿದೆ_. + +ಭವಿಷ್ಯದಲ್ಲಿ ವರ್ಗೀಕರಣ ಪಾಠಗಳಲ್ಲಿ, ನೀವು ನಿಮ್ಮ ಮಾದರಿಯ ಅಂಕೆಗಳನ್ನು ಸುಧಾರಿಸಲು ಹೇಗೆ ಪುನರಾವರ್ತನೆ ಮಾಡಬೇಕೆಂದು ಕಲಿಯುತ್ತೀರಿ. ಆದರೆ ಈಗ, ಅಭಿನಂದನೆಗಳು! ನೀವು ಈ ರಿಗ್ರೆಶನ್ ಪಾಠಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ್ದೀರಿ! + +--- +## 🚀ಸವಾಲು + +ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ಅನೇಕ ವಿಷಯಗಳಿವೆ! ಆದರೆ ಕಲಿಯಲು ಉತ್ತಮ ಮಾರ್ಗ ಪ್ರಯೋಗ ಮಾಡುವುದು. ಈ ರೀತಿಯ ವಿಶ್ಲೇಷಣೆಗೆ ಹೊಂದಿಕೊಳ್ಳುವ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಹುಡುಕಿ ಮತ್ತು ಅದರಿಂದ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ. ನೀವು ಏನು ಕಲಿತೀರಿ? ಸಲಹೆ: ಆಸಕ್ತಿದಾಯಕ ಡೇಟಾಸೆಟ್‌ಗಳಿಗಾಗಿ [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) ಪ್ರಯತ್ನಿಸಿ. + +## [ಪಾಠೋತ್ತರ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ನ ಕೆಲವು ಪ್ರಾಯೋಗಿಕ ಬಳಕೆಗಳ ಕುರಿತು [ಸ್ಟ್ಯಾನ್‌ಫರ್ಡ್‌ನ ಈ ಪೇಪರ್](https://web.stanford.edu/~jurafsky/slp3/5.pdf) ನ ಮೊದಲ ಕೆಲವು ಪುಟಗಳನ್ನು ಓದಿ. ನಾವು ಈವರೆಗೆ ಅಧ್ಯಯನ ಮಾಡಿದ ರಿಗ್ರೆಶನ್ ಕಾರ್ಯಗಳಿಗೆ ಯಾವುದು ಉತ್ತಮ ಎಂದು ಯೋಚಿಸಿ. ಯಾವುದು ಉತ್ತಮವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ? + +## ನಿಯೋಜನೆ + +[ಈ ರಿಗ್ರೆಶನ್ ಅನ್ನು ಮರುಪ್ರಯತ್ನಿಸುವುದು](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/4-Logistic/assignment.md b/translations/kn/2-Regression/4-Logistic/assignment.md new file mode 100644 index 000000000..e9902906d --- /dev/null +++ b/translations/kn/2-Regression/4-Logistic/assignment.md @@ -0,0 +1,27 @@ + +# ಕೆಲವು ರಿಗ್ರೆಶನ್ ಮರುಪ್ರಯತ್ನ + +## ಸೂಚನೆಗಳು + +ಪಾಠದಲ್ಲಿ, ನೀವು ಕಂಬಳಿಯ ಡೇಟಾದ ಉಪಸಮೂಹವನ್ನು ಬಳಸಿದ್ದೀರಿ. ಈಗ, ಮೂಲ ಡೇಟಾಕ್ಕೆ ಹಿಂತಿರುಗಿ, ಅದನ್ನು ಶುದ್ಧೀಕರಿಸಿ ಮತ್ತು ಮಾನಕೀಕೃತಗೊಳಿಸಿ, ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸಿ. + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾತ್ತ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯ | +| -------- | ----------------------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------- | +| | ಚೆನ್ನಾಗಿ ವಿವರಿಸಲ್ಪಟ್ಟ ಮತ್ತು ಉತ್ತಮ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಮಾದರಿಯೊಂದಿಗೆ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | ಕನಿಷ್ಠ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಮಾದರಿಯೊಂದಿಗೆ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | ಕಡಿಮೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಮಾದರಿಯೊಂದಿಗೆ ಅಥವಾ ಯಾವುದೇ ಮಾದರಿಯಿಲ್ಲದ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/4-Logistic/notebook.ipynb b/translations/kn/2-Regression/4-Logistic/notebook.ipynb new file mode 100644 index 000000000..5f9102ea7 --- /dev/null +++ b/translations/kn/2-Regression/4-Logistic/notebook.ipynb @@ -0,0 +1,269 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ಕಂಬಳಿಯ ಪ್ರಭೇದಗಳು ಮತ್ತು ಬಣ್ಣ\n", + "\n", + "ಅಗತ್ಯವಾದ ಗ್ರಂಥಾಲಯಗಳು ಮತ್ತು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ. ಡೇಟಾವನ್ನು ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಪರಿವರ್ತಿಸಿ, ಡೇಟಾದ ಉಪಸಮೂಹವನ್ನು ಒಳಗೊಂಡಂತೆ:\n", + "\n", + "ಬಣ್ಣ ಮತ್ತು ಪ್ರಭೇದದ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ನೋಡೋಣ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade Date \\\n", + "0 BALTIMORE NaN 24 inch bins NaN NaN NaN 4/29/17 \n", + "1 BALTIMORE NaN 24 inch bins NaN NaN NaN 5/6/17 \n", + "2 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "3 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "4 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 11/5/16 \n", + "\n", + " Low Price High Price Mostly Low ... Unit of Sale Quality Condition \\\n", + "0 270.0 280.0 270.0 ... NaN NaN NaN \n", + "1 270.0 280.0 270.0 ... NaN NaN NaN \n", + "2 160.0 160.0 160.0 ... NaN NaN NaN \n", + "3 160.0 160.0 160.0 ... NaN NaN NaN \n", + "4 90.0 100.0 90.0 ... NaN NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 Unnamed: 25 \n", + "0 NaN NaN NaN E NaN NaN NaN \n", + "1 NaN NaN NaN E NaN NaN NaN \n", + "2 NaN NaN NaN N NaN NaN NaN \n", + "3 NaN NaN NaN N NaN NaN NaN \n", + "4 NaN NaN NaN N NaN NaN NaN \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "full_pumpkins = pd.read_csv('../data/US-pumpkins.csv')\n", + "\n", + "full_pumpkins.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕಾರ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "dee08c2b49057b0de8b6752c4dbca368", + "translation_date": "2025-12-19T16:18:37+00:00", + "source_file": "2-Regression/4-Logistic/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/2-Regression/4-Logistic/solution/Julia/README.md b/translations/kn/2-Regression/4-Logistic/solution/Julia/README.md new file mode 100644 index 000000000..d0dec7c81 --- /dev/null +++ b/translations/kn/2-Regression/4-Logistic/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb b/translations/kn/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb new file mode 100644 index 000000000..fa5120cc6 --- /dev/null +++ b/translations/kn/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb @@ -0,0 +1,686 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ - ಪಾಠ 4\n", + "\n", + "![ಲಾಜಿಸ್ಟಿಕ್ ವಿರುದ್ಧ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಇನ್ಫೋಗ್ರಾಫಿಕ್](../../../../../../translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.kn.png)\n", + "\n", + "#### **[ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/15/)**\n", + "\n", + "#### ಪರಿಚಯ\n", + "\n", + "ರಿಗ್ರೆಶನ್ ಕುರಿತು ಈ ಅಂತಿಮ ಪಾಠದಲ್ಲಿ, ಮೂಲ *ಕ್ಲಾಸಿಕ್* ಎಂಎಲ್ ತಂತ್ರಜ್ಞಾನಗಳಲ್ಲಿ ಒಂದಾದ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಅನ್ನು ನೋಡೋಣ. ನೀವು ಈ ತಂತ್ರಜ್ಞಾನವನ್ನು ದ್ವಿಪದ ವರ್ಗಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಮಾದರಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಬಳಸುತ್ತೀರಿ. ಈ ಕ್ಯಾಂಡಿ ಚಾಕೊಲೇಟ್ ಆಗಿದೆಯೇ ಅಥವಾ ಇಲ್ಲವೇ? ಈ ರೋಗ ಸಂಕ್ರಾಮಕವೇ ಅಥವಾ ಇಲ್ಲವೇ? ಈ ಗ್ರಾಹಕ ಈ ಉತ್ಪನ್ನವನ್ನು ಆರಿಸುವನೋ ಅಥವಾ ಇಲ್ಲವೇ?\n", + "\n", + "ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಕಲಿಯುವಿರಿ:\n", + "\n", + "- ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ತಂತ್ರಗಳು\n", + "\n", + "✅ ಈ ರೀತಿಯ ರಿಗ್ರೆಶನ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುವುದರ ಬಗ್ಗೆ ನಿಮ್ಮ ಅರ್ಥವನ್ನು ಗಾಢಗೊಳಿಸಿ ಈ [ಕಲಿಕೆ ಘಟಕದಲ್ಲಿ](https://learn.microsoft.com/training/modules/introduction-classification-models/?WT.mc_id=academic-77952-leestott)\n", + "\n", + "## ಪೂರ್ವಾಪೇಕ್ಷಿತ\n", + "\n", + "ಪಂಪ್ಕಿನ್ ಡೇಟಾ ಜೊತೆ ಕೆಲಸ ಮಾಡಿದ ನಂತರ, ನಾವು ಈಗ ಅದರಲ್ಲಿ ಒಂದು ದ್ವಿಪದ ವರ್ಗವಿದೆ ಎಂದು ತಿಳಿದುಕೊಂಡಿದ್ದೇವೆ: `ಬಣ್ಣ`.\n", + "\n", + "ನಾವು ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸೋಣ, ಕೆಲವು ಚರಗಳನ್ನು ನೀಡಿದಾಗ, *ಒಂದು ಪಂಪ್ಕಿನ್ ಯಾವ ಬಣ್ಣದಾಗಿರಬಹುದು* ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು (ಕಿತ್ತಳೆ 🎃 ಅಥವಾ ಬಿಳಿ 👻).\n", + "\n", + "> ರಿಗ್ರೆಶನ್ ಕುರಿತು ಪಾಠ ಗುಂಪಿನಲ್ಲಿ ದ್ವಿಪದ ವರ್ಗೀಕರಣದ ಬಗ್ಗೆ ನಾವು ಏಕೆ ಮಾತನಾಡುತ್ತಿದ್ದೇವೆ? ಭಾಷಾಶೈಲಿಯ ಅನುಕೂಲಕ್ಕಾಗಿ ಮಾತ್ರ, ಏಕೆಂದರೆ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ [ನಿಜವಾಗಿಯೂ ವರ್ಗೀಕರಣ ವಿಧಾನವಾಗಿದೆ](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), ಆದರೂ ಲೀನಿಯರ್ ಆಧಾರಿತದಾಗಿದೆ. ಮುಂದಿನ ಪಾಠ ಗುಂಪಿನಲ್ಲಿ ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸುವ ಇತರ ವಿಧಾನಗಳನ್ನು ತಿಳಿಯಿರಿ.\n", + "\n", + "ಈ ಪಾಠಕ್ಕಾಗಿ, ನಾವು ಕೆಳಗಿನ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಬೇಕಾಗುತ್ತದೆ:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) ಒಂದು [R ಪ್ಯಾಕೇಜುಗಳ ಸಂಗ್ರಹ](https://www.tidyverse.org/packages) ಆಗಿದ್ದು, ಡೇಟಾ ವಿಜ್ಞಾನವನ್ನು ವೇಗವಾಗಿ, ಸುಲಭವಾಗಿ ಮತ್ತು ಮನರಂಜನೆಯಾಗಿ ಮಾಡುತ್ತದೆ!\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ಫ್ರೇಮ್ವರ್ಕ್ ಒಂದು [ಪ್ಯಾಕೇಜುಗಳ ಸಂಗ್ರಹ](https://www.tidymodels.org/packages/) ಆಗಿದ್ದು, ಮಾದರೀಕರಣ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕಾಗಿ.\n", + "\n", + "- `janitor`: [janitor ಪ್ಯಾಕೇಜ್](https://github.com/sfirke/janitor) ಕಳಪೆ ಡೇಟಾವನ್ನು ಪರಿಶೀಲಿಸಲು ಮತ್ತು ಸ್ವಚ್ಛಗೊಳಿಸಲು ಸರಳ ಸಾಧನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.\n", + "\n", + "- `ggbeeswarm`: [ggbeeswarm ಪ್ಯಾಕೇಜ್](https://github.com/eclarke/ggbeeswarm) ggplot2 ಬಳಸಿ ಬೀಸ್ವಾರ್ಮ್ ಶೈಲಿಯ ಪ್ಲಾಟ್‌ಗಳನ್ನು ರಚಿಸುವ ವಿಧಾನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.\n", + "\n", + "ನೀವು ಅವುಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬಹುದು:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"janitor\", \"ggbeeswarm\"))`\n", + "\n", + "ಬದಲಿ, ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ಈ ಘಟಕವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಬೇಕಾದ ಪ್ಯಾಕೇಜುಗಳಿದ್ದಾರೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ, ಅವು ಇಲ್ಲದಿದ್ದರೆ ನಿಮ್ಮಿಗಾಗಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\n", + "\n", + "pacman::p_load(tidyverse, tidymodels, janitor, ggbeeswarm)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **ಪ್ರಶ್ನೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ**\n", + "\n", + "ನಮ್ಮ ಉದ್ದೇಶಗಳಿಗೆ, ನಾವು ಇದನ್ನು ದ್ವಿಮೂಲ್ಯವಾಗಿ ವ್ಯಕ್ತಪಡಿಸುವೆವು: 'ಬಿಳಿ' ಅಥವಾ 'ಬಿಳಿಯಲ್ಲದ'. ನಮ್ಮ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ 'ಪಟ್ಟೆ' ಎಂಬ ವರ್ಗವೂ ಇದೆ ಆದರೆ ಅದರ ಕೆಲವು ಉದಾಹರಣೆಗಳಿವೆ, ಆದ್ದರಿಂದ ನಾವು ಅದನ್ನು ಬಳಸುವುದಿಲ್ಲ. ಡೇಟಾಸೆಟ್‌ನಿಂದ ನಲ್ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದ ನಂತರ ಅದು ಅಳಿದುಹೋಗುತ್ತದೆ.\n", + "\n", + "> 🎃 ಮನರಂಜನೆಯ ಸಂಗತಿ, ನಾವು ಕೆಲವೊಮ್ಮೆ ಬಿಳಿ ಕಂಬಳಿಗಳನ್ನು 'ಭೂತ' ಕಂಬಳಿಗಳು ಎಂದು ಕರೆಯುತ್ತೇವೆ. ಅವುಗಳನ್ನು ಕತ್ತರಿಸುವುದು ಸುಲಭವಲ್ಲ, ಆದ್ದರಿಂದ ಅವು ಕಿತ್ತಳೆ ಬಣ್ಣದ ಕಂಬಳಿಗಳಂತೆ ಜನಪ್ರಿಯವಾಗಿಲ್ಲ ಆದರೆ ಅವು ಚೆನ್ನಾಗಿ ಕಾಣುತ್ತವೆ! ಆದ್ದರಿಂದ ನಾವು ನಮ್ಮ ಪ್ರಶ್ನೆಯನ್ನು 'ಭೂತ' ಅಥವಾ 'ಭೂತವಲ್ಲ' ಎಂದು ಮರುರೂಪಿಸಬಹುದು. 👻\n", + "\n", + "## **ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಗ್ಗೆ**\n", + "\n", + "ನೀವು ಹಿಂದಿನ ಅಧ್ಯಯನದಲ್ಲಿ ಕಲಿತ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್‌ನಿಂದ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಕೆಲವು ಪ್ರಮುಖ ರೀತಿಗಳಲ್ಲಿ ಭಿನ್ನವಾಗಿದೆ.\n", + "\n", + "#### **ದ್ವಿಮೂಲ್ಯ ವರ್ಗೀಕರಣ**\n", + "\n", + "ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್‌ನಂತೆ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ನೀಡುವುದಿಲ್ಲ. ಮೊದಲದು `ದ್ವಿಮೂಲ್ಯ ವರ್ಗ` (\"ಕಿತ್ತಳೆ ಅಥವಾ ಕಿತ್ತಳೆಯಲ್ಲ\") ಬಗ್ಗೆ ಭವಿಷ್ಯವಾಣಿ ನೀಡುತ್ತದೆ, ಆದರೆ ನಂತರದದು `ನಿರಂತರ ಮೌಲ್ಯಗಳನ್ನು` ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಸಾಧ್ಯ, ಉದಾಹರಣೆಗೆ ಕಂಬಳಿಯ ಮೂಲ ಮತ್ತು ಹಾರ್ವೆಸ್ಟ್ ಸಮಯವನ್ನು ನೀಡಿದಾಗ, *ಅದರ ಬೆಲೆ ಎಷ್ಟು ಏರಲಿದೆ* ಎಂದು.\n", + "\n", + "![Infographic by Dasani Madipalli](../../../../../../translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.kn.png)\n", + "\n", + "### ಇತರೆ ವರ್ಗೀಕರಣಗಳು\n", + "\n", + "ಮಲ್ಟಿನೋಮಿಯಲ್ ಮತ್ತು ಆರ್ಡಿನಲ್ ಸೇರಿದಂತೆ ಇತರೆ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಪ್ರಕಾರಗಳಿವೆ:\n", + "\n", + "- **ಮಲ್ಟಿನೋಮಿಯಲ್**, ಇದು ಒಂದುಕ್ಕಿಂತ ಹೆಚ್ಚು ವರ್ಗಗಳನ್ನು ಹೊಂದಿರುವುದು - \"ಕಿತ್ತಳೆ, ಬಿಳಿ ಮತ್ತು ಪಟ್ಟೆ\".\n", + "\n", + "- **ಆರ್ಡಿನಲ್**, ಇದು ಕ್ರಮಬದ್ಧ ವರ್ಗಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ನಮ್ಮ ಫಲಿತಾಂಶಗಳನ್ನು ತಾರ್ಕಿಕವಾಗಿ ಕ್ರಮಬದ್ಧಗೊಳಿಸಲು ಉಪಯುಕ್ತ, ಉದಾಹರಣೆಗೆ ನಮ್ಮ ಕಂಬಳಿಗಳು ಸಣ್ಣ, ಸ್ಮಾಲ್, ಮಧ್ಯಮ, ದೊಡ್ಡ, ಎಕ್ಸ್ಎಲ್, ಎಕ್ಸ್ಎಕ್ಸ್ಎಲ್ ಎಂಬ ನಿರ್ದಿಷ್ಟ ಗಾತ್ರಗಳ ಮೂಲಕ ಕ್ರಮಬದ್ಧವಾಗಿವೆ.\n", + "\n", + "![Multinomial vs ordinal regression](../../../../../../translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.kn.png)\n", + "\n", + "#### **ಚರಗಳು ಹೊಂದಾಣಿಕೆ ಹೊಂದಿರಬೇಕಾಗಿಲ್ಲ**\n", + "\n", + "ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಹೆಚ್ಚು ಹೊಂದಾಣಿಕೆಯ ಚರಗಳೊಂದಿಗೆ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ನೆನಪಿಡಿ? ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಅದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿದೆ - ಚರಗಳು ಹೊಂದಾಣಿಕೆ ಹೊಂದಿರಬೇಕಾಗಿಲ್ಲ. ಇದು ಸ್ವಲ್ಪ ದುರ್ಬಲ ಹೊಂದಾಣಿಕೆಗಳಿರುವ ಈ ಡೇಟಾಗೆ ಸೂಕ್ತವಾಗಿದೆ.\n", + "\n", + "#### **ನೀವು ಹೆಚ್ಚಿನ ಸ್ವಚ್ಛ ಡೇಟಾವನ್ನು ಬೇಕಾಗುತ್ತದೆ**\n", + "\n", + "ನೀವು ಹೆಚ್ಚು ಡೇಟಾವನ್ನು ಬಳಸಿದರೆ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಹೆಚ್ಚು ನಿಖರ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡುತ್ತದೆ; ನಮ್ಮ ಸಣ್ಣ ಡೇಟಾಸೆಟ್ ಈ ಕಾರ್ಯಕ್ಕೆ ಸೂಕ್ತವಲ್ಲ, ಆದ್ದರಿಂದ ಅದನ್ನು ಗಮನದಲ್ಲಿಡಿ.\n", + "\n", + "✅ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್‌ಗೆ ಸೂಕ್ತವಾಗುವ ಡೇಟಾ ಪ್ರಕಾರಗಳ ಬಗ್ಗೆ ಯೋಚಿಸಿ\n", + "\n", + "## ಅಭ್ಯಾಸ - ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ\n", + "\n", + "ಮೊದಲು, ಡೇಟಾವನ್ನು ಸ್ವಲ್ಪ ಸ್ವಚ್ಛಗೊಳಿಸಿ, ನಲ್ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಿ ಮತ್ತು ಕೆಲವು ಕಾಲಮ್‌ಗಳನ್ನು ಮಾತ್ರ ಆಯ್ಕೆಮಾಡಿ:\n", + "\n", + "1. ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ಸೇರಿಸಿ:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Load the core tidyverse packages\n", + "library(tidyverse)\n", + "\n", + "# Import the data and clean column names\n", + "pumpkins <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/2-Regression/data/US-pumpkins.csv\") %>% \n", + " clean_names()\n", + "\n", + "# Select desired columns\n", + "pumpkins_select <- pumpkins %>% \n", + " select(c(city_name, package, variety, origin, item_size, color)) \n", + "\n", + "# Drop rows containing missing values and encode color as factor (category)\n", + "pumpkins_select <- pumpkins_select %>% \n", + " drop_na() %>% \n", + " mutate(color = factor(color))\n", + "\n", + "# View the first few rows\n", + "pumpkins_select %>% \n", + " slice_head(n = 5)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ನೀವು ಯಾವಾಗಲೂ ನಿಮ್ಮ ಹೊಸ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಕೆಳಗಿನಂತೆ [*glimpse()*](https://pillar.r-lib.org/reference/glimpse.html) ಫಂಕ್ಷನ್ ಬಳಸಿ ಒಂದು ನೋಟವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "pumpkins_select %>% \n", + " glimpse()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ನಾವು ನಿಜವಾಗಿಯೂ ಬೈನರಿ ವರ್ಗೀಕರಣ ಸಮಸ್ಯೆಯನ್ನು ಮಾಡುತ್ತಿರುವುದನ್ನು ದೃಢೀಕರಿಸೋಣ:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Subset distinct observations in outcome column\n", + "pumpkins_select %>% \n", + " distinct(color)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ದೃಶ್ಯೀಕರಣ - ವರ್ಗೀಕೃತ ಪ್ಲಾಟ್\n", + "ಈಗಾಗಲೇ ನೀವು ಪುನಃ ಪಂಪ್ಕಿನ್ ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡಿ ಸ್ವಚ್ಛಗೊಳಿಸಿದ್ದೀರಿ, ಇದರಿಂದ ಕೆಲವು ಚರಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಡೇಟಾಸೆಟ್ ಉಳಿಯುತ್ತದೆ, ಅದರಲ್ಲಿ ಬಣ್ಣವೂ ಸೇರಿದೆ. ggplot ಲೈಬ್ರರಿಯನ್ನು ಬಳಸಿ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ದೃಶ್ಯೀಕರಿಸೋಣ.\n", + "\n", + "ggplot ಲೈಬ್ರರಿ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಕೆಲವು ಚೆನ್ನಾದ ವಿಧಾನಗಳನ್ನು ನೀಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನೀವು ವರ್ಗೀಕೃತ ಪ್ಲಾಟ್‌ನಲ್ಲಿ ಪ್ರತಿ Variety ಮತ್ತು ಬಣ್ಣದ ಡೇಟಾ ವಿತರಣೆಗಳನ್ನು ಹೋಲಿಸಬಹುದು.\n", + "\n", + "1. geombar ಫಂಕ್ಷನ್ ಬಳಸಿ, ನಮ್ಮ ಪಂಪ್ಕಿನ್ ಡೇಟಾವನ್ನು ಉಪಯೋಗಿಸಿ, ಮತ್ತು ಪ್ರತಿ ಪಂಪ್ಕಿನ್ ವರ್ಗಕ್ಕೆ (ಕಿತ್ತಳೆ ಅಥವಾ ಬಿಳಿ) ಬಣ್ಣ ನಕ್ಷೆಗಳನ್ನು ಸೂಚಿಸಿ, ಇಂತಹ ಪ್ಲಾಟ್ ಅನ್ನು ರಚಿಸಿ:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "python" + } + }, + "outputs": [], + "source": [ + "# Specify colors for each value of the hue variable\n", + "palette <- c(ORANGE = \"orange\", WHITE = \"wheat\")\n", + "\n", + "# Create the bar plot\n", + "ggplot(pumpkins_select, aes(y = variety, fill = color)) +\n", + " geom_bar(position = \"dodge\") +\n", + " scale_fill_manual(values = palette) +\n", + " labs(y = \"Variety\", fill = \"Color\") +\n", + " theme_minimal()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಡೇಟಾವನ್ನು ಗಮನಿಸುವ ಮೂಲಕ, ನೀವು ಬಣ್ಣದ ಡೇಟಾ ವೈವಿಧ್ಯಕ್ಕೆ ಹೇಗೆ ಸಂಬಂಧಿಸಿದೆ ಎಂದು ನೋಡಬಹುದು.\n", + "\n", + "✅ ಈ ವರ್ಗೀಕೃತ ಪ್ಲಾಟ್ ನೀಡಿರುವಾಗ, ನೀವು ಯಾವಂತಹ ಆಸಕ್ತಿದಾಯಕ ಅನ್ವೇಷಣೆಗಳನ್ನು ಕಲ್ಪಿಸಬಹುದು?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ಡೇಟಾ ಪೂರ್ವ-ಪ್ರಕ್ರಿಯೆ: ವೈಶಿಷ್ಟ್ಯ ಎನ್‌ಕೋಡಿಂಗ್\n", + "\n", + "ನಮ್ಮ ಕಂಬಳಿಯ ಡೇಟಾಸೆಟ್‌ನ ಎಲ್ಲಾ ಕಾಲಮ್‌ಗಳಿಗೆ ಸ್ಟ್ರಿಂಗ್ ಮೌಲ್ಯಗಳಿವೆ. ವರ್ಗೀಕೃತ ಡೇಟಾ ಮಾನವರಿಗೆ ಸುಲಭವಾಗಿದ್ದರೂ ಯಂತ್ರಗಳಿಗೆ ಅಲ್ಲ. ಯಂತ್ರ ಕಲಿಕೆ ಆಲ್ಗಾರಿದಮ್‌ಗಳು ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತವೆ. ಅದಕ್ಕಾಗಿ ಎನ್‌ಕೋಡಿಂಗ್ ಡೇಟಾ ಪೂರ್ವ-ಪ್ರಕ್ರಿಯೆ ಹಂತದಲ್ಲಿ ಅತ್ಯಂತ ಪ್ರಮುಖ ಹಂತವಾಗಿದೆ, ಏಕೆಂದರೆ ಇದು ವರ್ಗೀಕೃತ ಡೇಟಾವನ್ನು ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾಗಾಗಿ ಪರಿವರ್ತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಯಾವುದೇ ಮಾಹಿತಿಯನ್ನು ಕಳೆದುಕೊಳ್ಳದೆ. ಉತ್ತಮ ಎನ್‌ಕೋಡಿಂಗ್ ಉತ್ತಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ.\n", + "\n", + "ವೈಶಿಷ್ಟ್ಯ ಎನ್‌ಕೋಡಿಂಗ್‌ಗೆ ಎರಡು ಪ್ರಮುಖ ಎನ್‌ಕೋಡರ್‌ಗಳಿವೆ:\n", + "\n", + "1. ಆರ್ಡಿನಲ್ ಎನ್‌ಕೋಡರ್: ಇದು ಆರ್ಡಿನಲ್ ಚರಗಳಿಗಾಗಿ ಸೂಕ್ತವಾಗಿದೆ, ಅವು ವರ್ಗೀಕೃತ ಚರಗಳು ಆಗಿದ್ದು, ಅವುಗಳ ಡೇಟಾ ತಾರ್ಕಿಕ ಕ್ರಮವನ್ನು ಅನುಸರಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ನಮ್ಮ ಡೇಟಾಸೆಟ್‌ನ `item_size` ಕಾಲಮ್. ಇದು ಪ್ರತಿ ವರ್ಗವನ್ನು ಒಂದು ಸಂಖ್ಯೆಯಿಂದ ಪ್ರತಿನಿಧಿಸುವ ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ, ಅದು ಕಾಲಮ್‌ನಲ್ಲಿನ ವರ್ಗದ ಕ್ರಮವಾಗಿದೆ.\n", + "\n", + "2. ವರ್ಗೀಕೃತ ಎನ್‌ಕೋಡರ್: ಇದು ನಾಮಮಾತ್ರ ಚರಗಳಿಗಾಗಿ ಸೂಕ್ತವಾಗಿದೆ, ಅವು ವರ್ಗೀಕೃತ ಚರಗಳು ಆಗಿದ್ದು, ಅವುಗಳ ಡೇಟಾ ತಾರ್ಕಿಕ ಕ್ರಮವನ್ನು ಅನುಸರಿಸುವುದಿಲ್ಲ, ಉದಾಹರಣೆಗೆ ನಮ್ಮ ಡೇಟಾಸೆಟ್‌ನ `item_size` ಹೊರತುಪಡಿಸಿದ ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳು. ಇದು ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡಿಂಗ್ ಆಗಿದ್ದು, ಪ್ರತಿ ವರ್ಗವನ್ನು ಒಂದು ಬೈನರಿ ಕಾಲಮ್ ಮೂಲಕ ಪ್ರತಿನಿಧಿಸುತ್ತದೆ: ಎನ್‌ಕೋಡಿಂಗ್ ಮಾಡಿದ ಚರವು 1 ಆಗಿರುತ್ತದೆ, ಅಂದರೆ ಕಂಬಳಿಯು ಆ ವೈವಿಧ್ಯಕ್ಕೆ ಸೇರಿದ್ದರೆ ಮತ್ತು ಇಲ್ಲದಿದ್ದರೆ 0.\n", + "\n", + "ಟೈಡಿಮೋಡಲ್ಸ್ ಇನ್ನೊಂದು ಚೆನ್ನಾದ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ: [recipes](https://recipes.tidymodels.org/) - ಡೇಟಾ ಪೂರ್ವ-ಪ್ರಕ್ರಿಯೆಗಾಗಿ ಪ್ಯಾಕೇಜ್. ನಾವು ಒಂದು `recipe` ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವೆವು, ಅದು ಎಲ್ಲಾ ಭವಿಷ್ಯವಾಣಿ ಕಾಲಮ್‌ಗಳನ್ನು ಪೂರ್ಣಾಂಕಗಳ ಸರಣಿಯಾಗಿ ಎನ್‌ಕೋಡ್ ಮಾಡಬೇಕು ಎಂದು ಸೂಚಿಸುತ್ತದೆ, ಅದನ್ನು `prep` ಮೂಲಕ ಅಗತ್ಯವಿರುವ ಪ್ರಮಾಣಗಳು ಮತ್ತು ಅಂಕಿಅಂಶಗಳನ್ನು ಅಂದಾಜಿಸುತ್ತದೆ ಮತ್ತು ಕೊನೆಗೆ `bake` ಮೂಲಕ ಹೊಸ ಡೇಟಾಗೆ ಗಣನೆಗಳನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ.\n", + "\n", + "> ಸಾಮಾನ್ಯವಾಗಿ, recipes ಅನ್ನು ಮಾದರೀಕರಣಕ್ಕಾಗಿ ಪೂರ್ವಪ್ರಕ್ರಿಯೆಕಾರಿಯಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ, ಅದು ಡೇಟಾ ಸೆಟ್‌ಗೆ ಯಾವ ಹಂತಗಳನ್ನು ಅನ್ವಯಿಸಬೇಕು ಎಂದು ನಿರ್ಧರಿಸುತ್ತದೆ, ಅದನ್ನು ಮಾದರೀಕರಣಕ್ಕೆ ಸಿದ್ಧಗೊಳಿಸಲು. ಆ ಸಂದರ್ಭದಲ್ಲಿ ನೀವು `workflow()` ಅನ್ನು ಕೈಯಿಂದ prep ಮತ್ತು bake ಬಳಸಿ recipe ಅಂದಾಜಿಸುವುದರ ಬದಲು **ತೀವ್ರವಾಗಿ ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ**. ನಾವು ಇದನ್ನು ಕ್ಷಣದಲ್ಲೇ ನೋಡುತ್ತೇವೆ.\n", + ">\n", + "> ಆದರೆ ಈಗ, ನಾವು recipes + prep + bake ಅನ್ನು ಬಳಸುತ್ತಿದ್ದೇವೆ, ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಗೆ ಸಿದ್ಧಗೊಳಿಸಲು ಯಾವ ಹಂತಗಳನ್ನು ಅನ್ವಯಿಸಬೇಕು ಎಂದು ಸೂಚಿಸಲು ಮತ್ತು ನಂತರ ಅನ್ವಯಿಸಿದ ಹಂತಗಳೊಂದಿಗೆ ಪೂರ್ವ-ಪ್ರಕ್ರಿಯೆ ಮಾಡಿದ ಡೇಟಾವನ್ನು ಹೊರತೆಗೆಯಲು.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Preprocess and extract data to allow some data analysis\n", + "baked_pumpkins <- recipe(color ~ ., data = pumpkins_select) %>%\n", + " # Define ordering for item_size column\n", + " step_mutate(item_size = ordered(item_size, levels = c('sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo'))) %>%\n", + " # Convert factors to numbers using the order defined above (Ordinal encoding)\n", + " step_integer(item_size, zero_based = F) %>%\n", + " # Encode all other predictors using one hot encoding\n", + " step_dummy(all_nominal(), -all_outcomes(), one_hot = TRUE) %>%\n", + " prep(data = pumpkin_select) %>%\n", + " bake(new_data = NULL)\n", + "\n", + "# Display the first few rows of preprocessed data\n", + "baked_pumpkins %>% \n", + " slice_head(n = 5)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "✅ ಐಟಂ ಗಾತ್ರ ಕಾಲಮ್‌ಗೆ ಆರ್ಡಿನಲ್ ಎನ್‌ಕೋಡರ್ ಬಳಸುವುದರಿಂದ ಏನು ಲಾಭಗಳಿವೆ?\n", + "\n", + "### ಚರಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ\n", + "\n", + "ನಾವು ಈಗಾಗಲೇ ನಮ್ಮ ಡೇಟಾವನ್ನು ಪೂರ್ವ-ಪ್ರಕ್ರಿಯೆ ಮಾಡಿರುವುದರಿಂದ, ನಾವು ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಲೇಬಲ್ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ, ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ನೀಡಿದಾಗ ಮಾದರಿ ಲೇಬಲ್ ಅನ್ನು ಎಷ್ಟು ಚೆನ್ನಾಗಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು ಎಂಬುದರ ಬಗ್ಗೆ ಒಂದು ಕಲ್ಪನೆ ಪಡೆಯಬಹುದು. ಈ ರೀತಿಯ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಮಾಡಲು ಅತ್ಯುತ್ತಮ ವಿಧಾನ ಡೇಟಾವನ್ನು ಪ್ಲಾಟ್ ಮಾಡುವುದು. \n", + "ನಾವು ಮತ್ತೆ ggplot ನ geom_boxplot_ ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ, ಐಟಂ ಗಾತ್ರ, ವೈವಿಧ್ಯ ಮತ್ತು ಬಣ್ಣಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ವರ್ಗೀಕೃತ ಪ್ಲಾಟ್‌ನಲ್ಲಿ ದೃಶ್ಯೀಕರಿಸಲು. ಡೇಟಾವನ್ನು ಉತ್ತಮವಾಗಿ ಪ್ಲಾಟ್ ಮಾಡಲು ನಾವು ಎನ್‌ಕೋಡ್ ಮಾಡಲಾದ ಐಟಂ ಗಾತ್ರ ಕಾಲಮ್ ಮತ್ತು ಎನ್‌ಕೋಡ್ ಮಾಡದ ವೈವಿಧ್ಯ ಕಾಲಮ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Define the color palette\n", + "palette <- c(ORANGE = \"orange\", WHITE = \"wheat\")\n", + "\n", + "# We need the encoded Item Size column to use it as the x-axis values in the plot\n", + "pumpkins_select_plot<-pumpkins_select\n", + "pumpkins_select_plot$item_size <- baked_pumpkins$item_size\n", + "\n", + "# Create the grouped box plot\n", + "ggplot(pumpkins_select_plot, aes(x = `item_size`, y = color, fill = color)) +\n", + " geom_boxplot() +\n", + " facet_grid(variety ~ ., scales = \"free_x\") +\n", + " scale_fill_manual(values = palette) +\n", + " labs(x = \"Item Size\", y = \"\") +\n", + " theme_minimal() +\n", + " theme(strip.text = element_text(size = 12)) +\n", + " theme(axis.text.x = element_text(size = 10)) +\n", + " theme(axis.title.x = element_text(size = 12)) +\n", + " theme(axis.title.y = element_blank()) +\n", + " theme(legend.position = \"bottom\") +\n", + " guides(fill = guide_legend(title = \"Color\")) +\n", + " theme(panel.spacing = unit(0.5, \"lines\"))+\n", + " theme(strip.text.y = element_text(size = 4, hjust = 0)) \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### ಸ್ವಾರ್ಮ್ ಪ್ಲಾಟ್ ಬಳಸಿ\n", + "\n", + "ಬಣ್ಣವು ದ್ವಿಮೂಲ ವರ್ಗ (ಬಿಳಿ ಅಥವಾ ಅಲ್ಲ) ಆಗಿರುವುದರಿಂದ, ಅದನ್ನು ದೃಶ್ಯೀಕರಣಕ್ಕೆ 'ವಿಶೇಷ ವಿಧಾನ' ಬೇಕಾಗುತ್ತದೆ.\n", + "\n", + "ಐಟಂ_ಗಾತ್ರದ ಸಂಬಂಧದಲ್ಲಿ ಬಣ್ಣದ ವಿತರಣೆ ತೋರಿಸಲು `ಸ್ವಾರ್ಮ್ ಪ್ಲಾಟ್` ಪ್ರಯತ್ನಿಸಿ.\n", + "\n", + "ನಾವು [ggbeeswarm ಪ್ಯಾಕೇಜ್](https://github.com/eclarke/ggbeeswarm) ಅನ್ನು ಬಳಸುತ್ತೇವೆ, ಇದು ggplot2 ಬಳಸಿ ಬೀಸ್ವಾರ್ಮ್ ಶೈಲಿಯ ಪ್ಲಾಟ್‌ಗಳನ್ನು ರಚಿಸುವ ವಿಧಾನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಬೀಸ್ವಾರ್ಮ್ ಪ್ಲಾಟ್‌ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಒಟ್ಟಿಗೆ ಮಿಲಿತವಾಗುವ ಬಿಂದುಗಳನ್ನು ಪರಸ್ಪರ ಪಕ್ಕದಲ್ಲಿ ಬಿದ್ದಂತೆ ಚಿತ್ರಿಸುವ ವಿಧಾನವಾಗಿದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Create beeswarm plots of color and item_size\n", + "baked_pumpkins %>% \n", + " mutate(color = factor(color)) %>% \n", + " ggplot(mapping = aes(x = color, y = item_size, color = color)) +\n", + " geom_quasirandom() +\n", + " scale_color_brewer(palette = \"Dark2\", direction = -1) +\n", + " theme(legend.position = \"none\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಈಗ ನಾವು ಬಣ್ಣದ ದ್ವಿಪದ ವರ್ಗಗಳ ಮತ್ತು ದೊಡ್ಡ ಗಾತ್ರಗಳ ಗುಂಪಿನ ನಡುವಿನ ಸಂಬಂಧದ ಬಗ್ಗೆ ಒಂದು ಕಲ್ಪನೆ ಹೊಂದಿದ್ದೇವೆ, ಬರುವುದಾಗಿ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಅನ್ನು ಅನ್ವೇಷಿಸಿ ನೀಡಲಾದ ಕಂಬಳಿಯ ಸಾಧ್ಯತೆಯ ಬಣ್ಣವನ್ನು ನಿರ್ಧರಿಸೋಣ.\n", + "\n", + "## ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ\n", + "\n", + "ನೀವು ನಿಮ್ಮ ವರ್ಗೀಕರಣ ಮಾದರಿಯಲ್ಲಿ ಬಳಸಲು ಬಯಸುವ ಚರಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಡೇಟಾವನ್ನು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗಳಾಗಿ ವಿಭಜಿಸಿ. [rsample](https://rsample.tidymodels.org/), Tidymodels ನಲ್ಲಿ ಒಂದು ಪ್ಯಾಕೇಜ್, ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಡೇಟಾ ವಿಭಜನೆ ಮತ್ತು ಮರುನಮೂನೆಗಾಗಿ ಮೂಲಸೌಕರ್ಯವನ್ನು ಒದಗಿಸುತ್ತದೆ:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Split data into 80% for training and 20% for testing\n", + "set.seed(2056)\n", + "pumpkins_split <- pumpkins_select %>% \n", + " initial_split(prop = 0.8)\n", + "\n", + "# Extract the data in each split\n", + "pumpkins_train <- training(pumpkins_split)\n", + "pumpkins_test <- testing(pumpkins_split)\n", + "\n", + "# Print out the first 5 rows of the training set\n", + "pumpkins_train %>% \n", + " slice_head(n = 5)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "🙌 ನಾವು ಈಗ ತರಬೇತಿ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತರಬೇತಿ ಲೇಬಲ್ (ಬಣ್ಣ) ಗೆ ಹೊಂದಿಸುವ ಮೂಲಕ ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ ಸಿದ್ಧರಾಗಿದ್ದೇವೆ.\n", + "\n", + "ನಮ್ಮ ಡೇಟಾವನ್ನು ಮಾದರಿಗಾಗಿ ಸಿದ್ಧಗೊಳಿಸಲು ಮಾಡಬೇಕಾದ ಪೂರ್ವಪ್ರಕ್ರಿಯೆ ಹಂತಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಒಂದು ರೆಸಿಪಿಯನ್ನು ರಚಿಸುವುದರಿಂದ ನಾವು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ ಅಂದರೆ: ವರ್ಗೀಕೃತ ಚರಗಳನ್ನು ಪೂರ್ಣಾಂಕಗಳ ಸರಣಿಯಾಗಿ ಎನ್‌ಕೋಡ್ ಮಾಡುವುದು. `baked_pumpkins` ನಂತೆ, ನಾವು `pumpkins_recipe` ಅನ್ನು ರಚಿಸುತ್ತೇವೆ ಆದರೆ ಅದನ್ನು `prep` ಮತ್ತು `bake` ಮಾಡುತ್ತಿಲ್ಲ ಏಕೆಂದರೆ ಅದು ವರ್ಕ್‌ಫ್ಲೋದಲ್ಲಿ ಸೇರಿಸಲಾಗುತ್ತದೆ, ನೀವು ಕೆಲವು ಹಂತಗಳಲ್ಲಿ ಅದನ್ನು ನೋಡುತ್ತೀರಿ.\n", + "\n", + "Tidymodels ನಲ್ಲಿ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಹಲವಾರು ವಿಧಾನಗಳಿವೆ. `?logistic_reg()` ಅನ್ನು ನೋಡಿ. ಈಗಾಗಲೇ, ನಾವು ಡೀಫಾಲ್ಟ್ `stats::glm()` ಎಂಜಿನ್ ಮೂಲಕ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತೇವೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Create a recipe that specifies preprocessing steps for modelling\n", + "pumpkins_recipe <- recipe(color ~ ., data = pumpkins_train) %>% \n", + " step_mutate(item_size = ordered(item_size, levels = c('sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo'))) %>%\n", + " step_integer(item_size, zero_based = F) %>% \n", + " step_dummy(all_nominal(), -all_outcomes(), one_hot = TRUE)\n", + "\n", + "# Create a logistic model specification\n", + "log_reg <- logistic_reg() %>% \n", + " set_engine(\"glm\") %>% \n", + " set_mode(\"classification\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಈಗ ನಮಗೆ ಒಂದು ರೆಸಿಪಿ ಮತ್ತು ಒಂದು ಮಾದರಿ ನಿರ್ದಿಷ್ಟತೆ ಇದ್ದು, ಅವುಗಳನ್ನು ಒಟ್ಟಿಗೆ ಒಂದು ವಸ್ತುವಾಗಿ ಪ್ಯಾಕೇಜ್ ಮಾಡುವ ಮಾರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯಬೇಕಾಗಿದೆ, ಅದು ಮೊದಲು ಡೇಟಾವನ್ನು ಪೂರ್ವಸಿದ್ಧತೆ ಮಾಡುತ್ತದೆ (ಹಿನ್ನೆಲೆದಲ್ಲಿ prep+bake), ಪೂರ್ವಸಿದ್ಧತೆ ಮಾಡಲಾದ ಡೇಟಾದ ಮೇಲೆ ಮಾದರಿಯನ್ನು ಹೊಂದಿಸುತ್ತದೆ ಮತ್ತು ಸಾಧ್ಯವಾದ ನಂತರದ ಪ್ರಕ್ರಿಯೆಗಳಿಗೂ ಅವಕಾಶ ನೀಡುತ್ತದೆ.\n", + "\n", + "Tidymodels ನಲ್ಲಿ, ಈ ಅನುಕೂಲಕರ ವಸ್ತುವನ್ನು [`workflow`](https://workflows.tidymodels.org/) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಇದು ನಿಮ್ಮ ಮಾದರಿ ಘಟಕಗಳನ್ನು ಅನುಕೂಲಕರವಾಗಿ ಹಿಡಿದಿಡುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Bundle modelling components in a workflow\n", + "log_reg_wf <- workflow() %>% \n", + " add_recipe(pumpkins_recipe) %>% \n", + " add_model(log_reg)\n", + "\n", + "# Print out the workflow\n", + "log_reg_wf\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಒಂದು ವರ್ಕ್‌ಫ್ಲೋವನ್ನು *ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ* ನಂತರ, ಮಾದರಿಯನ್ನು [`fit()`](https://tidymodels.github.io/parsnip/reference/fit.html) ಫಂಕ್ಷನ್ ಬಳಸಿ `ಪ್ರಶಿಕ್ಷಣ` ಮಾಡಬಹುದು. ವರ್ಕ್‌ಫ್ಲೋವು ತರಬೇತಿಗೆ ಮುನ್ನ ರೆಸಿಪಿ ಅಂದಾಜು ಮಾಡುತ್ತದೆ ಮತ್ತು ಡೇಟಾವನ್ನು ಪೂರ್ವಸಿದ್ಧಗೊಳಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ನಾವು ಅದನ್ನು ಕೈಯಿಂದ prep ಮತ್ತು bake ಬಳಸಿ ಮಾಡಲು ಅಗತ್ಯವಿಲ್ಲ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Train the model\n", + "wf_fit <- log_reg_wf %>% \n", + " fit(data = pumpkins_train)\n", + "\n", + "# Print the trained workflow\n", + "wf_fit\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಮಾದರಿ ಮುದ್ರಣವು ತರಬೇತಿ ಸಮಯದಲ್ಲಿ ಕಲಿತ ಸಹಗುಣಾಂಕಗಳನ್ನು ತೋರಿಸುತ್ತದೆ.\n", + "\n", + "ಈಗ ನಾವು ತರಬೇತಿ ಡೇಟಾವನ್ನು ಬಳಸಿ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿದ್ದೇವೆ, ನಾವು [parsnip::predict()](https://parsnip.tidymodels.org/reference/predict.model_fit.html) ಅನ್ನು ಬಳಸಿ ಪರೀಕ್ಷಾ ಡೇಟಾದ ಮೇಲೆ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು. ನಮ್ಮ ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗೆ ಲೇಬಲ್ಗಳನ್ನು ಮತ್ತು ಪ್ರತಿ ಲೇಬಲ್ಗಾಗಿ ಸಾಧ್ಯತೆಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಮಾದರಿಯನ್ನು ಬಳಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸೋಣ. ಸಾಧ್ಯತೆ 0.5 ಕ್ಕಿಂತ ಹೆಚ್ಚು ಇದ್ದಾಗ, predict ವರ್ಗ `WHITE` ಆಗಿರುತ್ತದೆ ಇಲ್ಲದಿದ್ದರೆ `ORANGE`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Make predictions for color and corresponding probabilities\n", + "results <- pumpkins_test %>% select(color) %>% \n", + " bind_cols(wf_fit %>% \n", + " predict(new_data = pumpkins_test)) %>%\n", + " bind_cols(wf_fit %>%\n", + " predict(new_data = pumpkins_test, type = \"prob\"))\n", + "\n", + "# Compare predictions\n", + "results %>% \n", + " slice_head(n = 10)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಬಹಳ ಚೆನ್ನಾಗಿದೆ! ಇದು ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬುದರ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ಒಳನೋಟಗಳನ್ನು ನೀಡುತ್ತದೆ.\n", + "\n", + "### ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಮೂಲಕ ಉತ್ತಮ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ\n", + "\n", + "ಪ್ರತಿ ಭವಿಷ್ಯವಾಣಿ ಮತ್ತು ಅದರ ಸಂಬಂಧಿಸಿದ \"ಭೂಮಿಯ ಸತ್ಯ\" ನಿಜವಾದ ಮೌಲ್ಯವನ್ನು ಹೋಲಿಸುವುದು ಮಾದರಿ ಎಷ್ಟು ಚೆನ್ನಾಗಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತಿದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ಬಹಳ ಪರಿಣಾಮಕಾರಿಯಾದ ವಿಧಾನವಲ್ಲ. ಭಾಗ್ಯವಶಾತ್, Tidymodels ನಲ್ಲಿ ಇನ್ನಷ್ಟು ತಂತ್ರಗಳು ಇವೆ: [`yardstick`](https://yardstick.tidymodels.org/) - ಕಾರ್ಯಕ್ಷಮತೆ ಮೌಲ್ಯಮಾಪನಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಮಾದರಿಗಳ ಪರಿಣಾಮಕಾರಿತ್ವವನ್ನು ಅಳೆಯಲು ಬಳಸುವ ಪ್ಯಾಕೇಜ್.\n", + "\n", + "ವರ್ಗೀಕರಣ ಸಮಸ್ಯೆಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಒಂದು ಕಾರ್ಯಕ್ಷಮತೆ ಮೌಲ್ಯಮಾಪನವು [`confusion matrix`](https://wikipedia.org/wiki/Confusion_matrix). ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಒಂದು ವರ್ಗೀಕರಣ ಮಾದರಿ ಎಷ್ಟು ಚೆನ್ನಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ವಿವರಿಸುತ್ತದೆ. ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಪ್ರತಿ ವರ್ಗದಲ್ಲಿ ಎಷ್ಟು ಉದಾಹರಣೆಗಳನ್ನು ಮಾದರಿ ಸರಿಯಾಗಿ ವರ್ಗೀಕರಿಸಿದೆ ಎಂಬುದನ್ನು ಟ್ಯಾಬುಲೇಟು ಮಾಡುತ್ತದೆ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ಇದು ನಿಮಗೆ ಎಷ್ಟು ಕಿತ್ತಳೆ ಕಂಬಳಿಗಳನ್ನು ಕಿತ್ತಳೆ ಎಂದು ವರ್ಗೀಕರಿಸಲಾಗಿದೆ ಮತ್ತು ಎಷ್ಟು ಬಿಳಿ ಕಂಬಳಿಗಳನ್ನು ಬಿಳಿ ಎಂದು ವರ್ಗೀಕರಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ; ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ನಿಮಗೆ ಎಷ್ಟು **ತಪ್ಪು** ವರ್ಗಗಳಲ್ಲಿ ವರ್ಗೀಕರಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನೂ ತೋರಿಸುತ್ತದೆ.\n", + "\n", + "yardstick ನಿಂದ [**`conf_mat()`**](https://tidymodels.github.io/yardstick/reference/conf_mat.html) ಫಂಕ್ಷನ್ ಈ ಗಮನಿಸಿದ ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ವರ್ಗಗಳ ಕ್ರಾಸ್-ಟ್ಯಾಬ್ಯುಲೇಶನ್ ಅನ್ನು ಲೆಕ್ಕಹಾಕುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Confusion matrix for prediction results\n", + "conf_mat(data = results, truth = color, estimate = .pred_class)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ನಾವು ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳೋಣ. ನಮ್ಮ ಮಾದರಿಯನ್ನು ಎರಡು ದ್ವಿಮೂಲ್ಯ ವರ್ಗಗಳಾದ `white` ಮತ್ತು `not-white` ವರ್ಗಗಳ ನಡುವೆ ಕಂಬಳಿಗಳನ್ನು ವರ್ಗೀಕರಿಸಲು ಕೇಳಲಾಗಿದೆ\n", + "\n", + "- ನಿಮ್ಮ ಮಾದರಿ ಒಂದು ಕಂಬಳಿಯನ್ನು white ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದರೆ ಮತ್ತು ಅದು ವಾಸ್ತವದಲ್ಲಿ 'white' ವರ್ಗಕ್ಕೆ ಸೇರಿದ್ದರೆ, ಅದನ್ನು ನಾವು `true positive` ಎಂದು ಕರೆಯುತ್ತೇವೆ, ಇದು ಮೇಲಿನ ಎಡಭಾಗದ ಸಂಖ್ಯೆಯಿಂದ ತೋರಿಸಲಾಗಿದೆ.\n", + "\n", + "- ನಿಮ್ಮ ಮಾದರಿ ಒಂದು ಕಂಬಳಿಯನ್ನು not white ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದರೆ ಮತ್ತು ಅದು ವಾಸ್ತವದಲ್ಲಿ 'white' ವರ್ಗಕ್ಕೆ ಸೇರಿದ್ದರೆ, ಅದನ್ನು ನಾವು `false negative` ಎಂದು ಕರೆಯುತ್ತೇವೆ, ಇದು ಕೆಳಗಿನ ಎಡಭಾಗದ ಸಂಖ್ಯೆಯಿಂದ ತೋರಿಸಲಾಗಿದೆ.\n", + "\n", + "- ನಿಮ್ಮ ಮಾದರಿ ಒಂದು ಕಂಬಳಿಯನ್ನು white ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದರೆ ಮತ್ತು ಅದು ವಾಸ್ತವದಲ್ಲಿ 'not-white' ವರ್ಗಕ್ಕೆ ಸೇರಿದ್ದರೆ, ಅದನ್ನು ನಾವು `false positive` ಎಂದು ಕರೆಯುತ್ತೇವೆ, ಇದು ಮೇಲಿನ ಬಲಭಾಗದ ಸಂಖ್ಯೆಯಿಂದ ತೋರಿಸಲಾಗಿದೆ.\n", + "\n", + "- ನಿಮ್ಮ ಮಾದರಿ ಒಂದು ಕಂಬಳಿಯನ್ನು not white ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದರೆ ಮತ್ತು ಅದು ವಾಸ್ತವದಲ್ಲಿ 'not-white' ವರ್ಗಕ್ಕೆ ಸೇರಿದ್ದರೆ, ಅದನ್ನು ನಾವು `true negative` ಎಂದು ಕರೆಯುತ್ತೇವೆ, ಇದು ಕೆಳಗಿನ ಬಲಭಾಗದ ಸಂಖ್ಯೆಯಿಂದ ತೋರಿಸಲಾಗಿದೆ.\n", + "\n", + "| Truth |\n", + "|:-----:|\n", + "\n", + "\n", + "| | | |\n", + "|---------------|--------|-------|\n", + "| **Predicted** | WHITE | ORANGE |\n", + "| WHITE | TP | FP |\n", + "| ORANGE | FN | TN |\n", + "\n", + "ನೀವು ಊಹಿಸಿದ್ದಂತೆ, ಹೆಚ್ಚು true positives ಮತ್ತು true negatives ಸಂಖ್ಯೆಯನ್ನು ಹೊಂದಿರುವುದು ಮತ್ತು ಕಡಿಮೆ false positives ಮತ್ತು false negatives ಸಂಖ್ಯೆಯನ್ನು ಹೊಂದಿರುವುದು ಇಷ್ಟಕರ, ಇದು ಮಾದರಿ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ.\n", + "\n", + "ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಉಪಯುಕ್ತವಾಗಿದೆ ಏಕೆಂದರೆ ಇದು ಇತರ ಮೆಟ್ರಿಕ್ಸ್ ಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ, ಅವುಗಳು ವರ್ಗೀಕರಣ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಉತ್ತಮವಾಗಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ. ಕೆಲವು ಮೆಟ್ರಿಕ್ಸ್ ಗಳನ್ನು ನೋಡೋಣ:\n", + "\n", + "🎓 Precision: `TP/(TP + FP)` ಇದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಧನಾತ್ಮಕಗಳಲ್ಲಿನ ನಿಜವಾದ ಧನಾತ್ಮಕಗಳ ಅನುಪಾತವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಇದನ್ನು [positive predictive value](https://en.wikipedia.org/wiki/Positive_predictive_value \"Positive predictive value\") ಎಂದೂ ಕರೆಯುತ್ತಾರೆ\n", + "\n", + "🎓 Recall: `TP/(TP + FN)` ಇದು ನಿಜವಾಗಿಯೂ ಧನಾತ್ಮಕವಾಗಿದ್ದ ಮಾದರಿಗಳ ಸಂಖ್ಯೆಯಲ್ಲಿನ ಧನಾತ್ಮಕ ಫಲಿತಾಂಶಗಳ ಅನುಪಾತವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಇದನ್ನು `sensitivity` ಎಂದೂ ಕರೆಯುತ್ತಾರೆ.\n", + "\n", + "🎓 Specificity: `TN/(TN + FP)` ಇದು ನಿಜವಾಗಿಯೂ ನಕಾರಾತ್ಮಕವಾಗಿದ್ದ ಮಾದರಿಗಳ ಸಂಖ್ಯೆಯಲ್ಲಿನ ನಕಾರಾತ್ಮಕ ಫಲಿತಾಂಶಗಳ ಅನುಪಾತವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ.\n", + "\n", + "🎓 Accuracy: `TP + TN/(TP + TN + FP + FN)` ಮಾದರಿಯು ನಿಖರವಾಗಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಲೇಬಲ್ ಗಳ ಶೇಕಡಾವಾರು.\n", + "\n", + "🎓 F Measure: precision ಮತ್ತು recall ನ ತೂಕಿತ ಸರಾಸರಿ, ಉತ್ತಮವಾದುದು 1 ಮತ್ತು ಕೆಟ್ಟದಾದುದು 0.\n", + "\n", + "ಈ ಮೆಟ್ರಿಕ್ಸ್ ಗಳನ್ನು ಲೆಕ್ಕಹಾಕೋಣ!\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Combine metric functions and calculate them all at once\n", + "eval_metrics <- metric_set(ppv, recall, spec, f_meas, accuracy)\n", + "eval_metrics(data = results, truth = color, estimate = .pred_class)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ಈ ಮಾದರಿಯ ROC ವಕ್ರವನ್ನು ದೃಶ್ಯೀಕರಿಸಿ\n", + "\n", + "ಹೆಸರಾಗಿರುವ [`ROC ವಕ್ರ`](https://en.wikipedia.org/wiki/Receiver_operating_characteristic) ಅನ್ನು ನೋಡಲು ಇನ್ನೊಂದು ದೃಶ್ಯೀಕರಣ ಮಾಡೋಣ:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Make a roc_curve\n", + "results %>% \n", + " roc_curve(color, .pred_ORANGE) %>% \n", + " autoplot()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ROC ವಕ್ರಗಳು ಸಾಮಾನ್ಯವಾಗಿ ವರ್ಗೀಕರಿಸುವ ಯಂತ್ರದ ನಿಜವಾದ ಮತ್ತು ತಪ್ಪು ಧನಾತ್ಮಕಗಳ ದೃಷ್ಟಿಕೋನದಲ್ಲಿ ಔಟ್‌ಪುಟ್ ಅನ್ನು ನೋಡಲು ಬಳಸಲಾಗುತ್ತವೆ. ROC ವಕ್ರಗಳು ಸಾಮಾನ್ಯವಾಗಿ Y ಅಕ್ಷದಲ್ಲಿ `ನಿಜವಾದ ಧನಾತ್ಮಕ ದರ`/ಸಂವೇದನಶೀಲತೆ ಮತ್ತು X ಅಕ್ಷದಲ್ಲಿ `ತಪ್ಪು ಧನಾತ್ಮಕ ದರ`/1-ವಿಶಿಷ್ಟತೆ ಹೊಂದಿರುತ್ತವೆ. ಆದ್ದರಿಂದ, ವಕ್ರದ ತೀವ್ರತೆ ಮತ್ತು ಮಧ್ಯರೇಖೆ ಮತ್ತು ವಕ್ರದ ನಡುವೆ ಇರುವ ಸ್ಥಳವು ಮಹತ್ವಪೂರ್ಣ: ನೀವು ವಕ್ರವು ತ್ವರಿತವಾಗಿ ಮೇಲಕ್ಕೆ ಹೋಗಿ ರೇಖೆಯನ್ನು ದಾಟುವಂತೆ ಬಯಸುತ್ತೀರಿ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ಪ್ರಾರಂಭದಲ್ಲಿ ತಪ್ಪು ಧನಾತ್ಮಕಗಳಿವೆ, ನಂತರ ರೇಖೆ ಸರಿಯಾಗಿ ಮೇಲಕ್ಕೆ ಹೋಗುತ್ತದೆ ಮತ್ತು ದಾಟುತ್ತದೆ.\n", + "\n", + "ಕೊನೆಗೆ, ನಿಜವಾದ ವಕ್ರದ ಕೆಳಗಿನ ಪ್ರದೇಶವನ್ನು ಲೆಕ್ಕಿಸಲು `yardstick::roc_auc()` ಅನ್ನು ಬಳಸೋಣ. AUC ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಒಂದು ವಿಧಾನವೆಂದರೆ, ಮಾದರಿ ಯಾದೃಚ್ಛಿಕ ಧನಾತ್ಮಕ ಉದಾಹರಣೆಯನ್ನು ಯಾದೃಚ್ಛಿಕ ನಕಾರಾತ್ಮಕ ಉದಾಹರಣೆಯಿಗಿಂತ ಹೆಚ್ಚು ಶ್ರೇಣೀಕರಿಸುವ ಸಾಧ್ಯತೆ ಎಂದು.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Calculate area under curve\n", + "results %>% \n", + " roc_auc(color, .pred_ORANGE)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಫಲಿತಾಂಶವು ಸುತ್ತಲೂ `0.975` ಇದೆ. AUC 0 ರಿಂದ 1 ರವರೆಗೆ ವ್ಯಾಪಿಸುತ್ತಿರುವುದರಿಂದ, ನೀವು ದೊಡ್ಡ ಸ್ಕೋರ್ ಅನ್ನು ಬಯಸುತ್ತೀರಿ, ಏಕೆಂದರೆ 100% ಸರಿಯಾದ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡುವ ಮಾದರಿಯು 1 ರ AUC ಹೊಂದಿರುತ್ತದೆ; ಈ ಪ್ರಕರಣದಲ್ಲಿ, ಮಾದರಿ *ಚೆನ್ನಾಗಿದೆ*.\n", + "\n", + "ಭವಿಷ್ಯದಲ್ಲಿ ವರ್ಗೀಕರಣಗಳ ಪಾಠಗಳಲ್ಲಿ, ನೀವು ನಿಮ್ಮ ಮಾದರಿಯ ಸ್ಕೋರ್‌ಗಳನ್ನು ಸುಧಾರಿಸುವುದನ್ನು ಕಲಿಯುತ್ತೀರಿ (ಈ ಪ್ರಕರಣದಲ್ಲಿ ಅಸಮತೋಲನ ಡೇಟಾವನ್ನು ನಿರ್ವಹಿಸುವಂತಹ).\n", + "\n", + "## 🚀ಸವಾಲು\n", + "\n", + "ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಗ್ಗೆ ಇನ್ನೂ ಬಹಳವಿದೆ ಅನ್ವೇಷಿಸಲು! ಆದರೆ ಕಲಿಯಲು ಉತ್ತಮ ಮಾರ್ಗವು ಪ್ರಯೋಗ ಮಾಡುವುದು. ಈ ರೀತಿಯ ವಿಶ್ಲೇಷಣೆಗೆ ಹೊಂದಿಕೊಳ್ಳುವ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಹುಡುಕಿ ಮತ್ತು ಅದರಿಂದ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ. ನೀವು ಏನು ಕಲಿತೀರಿ? ಸೂಚನೆ: ಆಸಕ್ತಿದಾಯಕ ಡೇಟಾಸೆಟ್‌ಗಳಿಗೆ [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ.\n", + "\n", + "## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ\n", + "\n", + "ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್‌ನ ಕೆಲವು ಪ್ರಾಯೋಗಿಕ ಬಳಕೆಗಳ ಕುರಿತು [ಸ್ಟ್ಯಾನ್‌ಫರ್ಡ್‌ನ ಈ ಪೇಪರ್](https://web.stanford.edu/~jurafsky/slp3/5.pdf) ನ ಮೊದಲ ಕೆಲವು ಪುಟಗಳನ್ನು ಓದಿ. ನಾವು ಈವರೆಗೆ ಅಧ್ಯಯನ ಮಾಡಿದ ರಿಗ್ರೆಶನ್ ಕಾರ್ಯಗಳ ಒಂದರ ಅಥವಾ ಇನ್ನೊಂದರಿಗಾಗಿ ಉತ್ತಮವಾಗಿ ಹೊಂದಿಕೊಳ್ಳುವ ಕಾರ್ಯಗಳ ಬಗ್ಗೆ ಯೋಚಿಸಿ. ಯಾವುದು ಉತ್ತಮವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "anaconda-cloud": "", + "kernelspec": { + "display_name": "R", + "langauge": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "3.4.1" + }, + "coopTranslator": { + "original_hash": "feaf125f481a89c468fa115bf2aed580", + "translation_date": "2025-12-19T16:47:45+00:00", + "source_file": "2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/kn/2-Regression/4-Logistic/solution/notebook.ipynb b/translations/kn/2-Regression/4-Logistic/solution/notebook.ipynb new file mode 100644 index 000000000..f5fd9cdfc --- /dev/null +++ b/translations/kn/2-Regression/4-Logistic/solution/notebook.ipynb @@ -0,0 +1,1261 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ - ಪಾಠ 4\n", + "\n", + "ಅಗತ್ಯವಾದ ಲೈಬ್ರರಿಗಳು ಮತ್ತು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ. ಡೇಟಾವನ್ನು ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಪರಿವರ್ತಿಸಿ, ಅದು ಡೇಟಾದ ಉಪಸಮೂಹವನ್ನು ಹೊಂದಿರುತ್ತದೆ:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade Date \n", + "0 BALTIMORE NaN 24 inch bins NaN NaN NaN 4/29/17 \\\n", + "1 BALTIMORE NaN 24 inch bins NaN NaN NaN 5/6/17 \n", + "2 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "3 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "4 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 11/5/16 \n", + "\n", + " Low Price High Price Mostly Low ... Unit of Sale Quality Condition \n", + "0 270.0 280.0 270.0 ... NaN NaN NaN \\\n", + "1 270.0 280.0 270.0 ... NaN NaN NaN \n", + "2 160.0 160.0 160.0 ... NaN NaN NaN \n", + "3 160.0 160.0 160.0 ... NaN NaN NaN \n", + "4 90.0 100.0 90.0 ... NaN NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 Unnamed: 25 \n", + "0 NaN NaN NaN E NaN NaN NaN \n", + "1 NaN NaN NaN E NaN NaN NaN \n", + "2 NaN NaN NaN N NaN NaN NaN \n", + "3 NaN NaN NaN N NaN NaN NaN \n", + "4 NaN NaN NaN N NaN NaN NaN \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "full_pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", + "\n", + "full_pumpkins.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NamePackageVarietyOriginItem SizeColor
2BALTIMORE24 inch binsHOWDEN TYPEDELAWAREmedORANGE
3BALTIMORE24 inch binsHOWDEN TYPEVIRGINIAmedORANGE
4BALTIMORE24 inch binsHOWDEN TYPEMARYLANDlgeORANGE
5BALTIMORE24 inch binsHOWDEN TYPEMARYLANDlgeORANGE
6BALTIMORE36 inch binsHOWDEN TYPEMARYLANDmedORANGE
\n", + "
" + ], + "text/plain": [ + " City Name Package Variety Origin Item Size Color\n", + "2 BALTIMORE 24 inch bins HOWDEN TYPE DELAWARE med ORANGE\n", + "3 BALTIMORE 24 inch bins HOWDEN TYPE VIRGINIA med ORANGE\n", + "4 BALTIMORE 24 inch bins HOWDEN TYPE MARYLAND lge ORANGE\n", + "5 BALTIMORE 24 inch bins HOWDEN TYPE MARYLAND lge ORANGE\n", + "6 BALTIMORE 36 inch bins HOWDEN TYPE MARYLAND med ORANGE" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Select the columns we want to use\n", + "columns_to_select = ['City Name','Package','Variety', 'Origin','Item Size', 'Color']\n", + "pumpkins = full_pumpkins.loc[:, columns_to_select]\n", + "\n", + "# Drop rows with missing values\n", + "pumpkins.dropna(inplace=True)\n", + "\n", + "pumpkins.head()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ನಮ್ಮ ಡೇಟಾವನ್ನು ನೋಡೋಣ!\n", + "\n", + "Seaborn ಬಳಸಿ ಅದನ್ನು ದೃಶ್ಯೀಕರಿಸುವ ಮೂಲಕ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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S0tLab1CCxcuxAcffIBXXnkFbm5uGDZsGF555RW89dZbBtd1cnLCjBkzMGjQIFy6dAleXl4AYHDuomRnZyM7O1t6nJ6eXqJxRERU/THQEMzMzHD79u2nuuaQIUOwefNmDB06FL1798bp06dx5syZYseYmZkBAHJycsq0Znh4OD755BO9dssOi2BlaQ7bBv5lmpeIiKoe76F5jomiiN27d+PXX39F586di+1br149affFwsICPj4+5V5/+fLlOH36NMaOHYvly5fDwcGhyL4pKSn44osvULduXWl3BgCmTJkiq8vCwgIHDhwwOEdoaCjS0tKk4/r16+W+BiIiqh64Q/Mc2rFjBywsLJCbm4uCggK8+eabmDVrVrFjDhw4ILs3pUaNGuWuw9HREe+99x62bNmCnj17GuxTr149iKKI//77D82aNcPGjRthYmIinZ80aRKCg4NlY+rWrWtwLrVaDbVaXe66iYio+mGgeQ5ptVpERkbCxMQEderUgUr15B8Dd3f3Et1DU1oqlarY9Q8cOAArKys4OjoavNnX3t4eHh4eFV4XEREpCwPNc8jc3FwxIaCyghQRET1bGGioRG7duoWsrCxZm52dXYW89FQeGRkZep+HU7NmTb23mBMR0bONNwVTiXh5ecHJyUl2/PHHH1VdFmbMmKFX1+TJk6u6LCIiesoEURTFqi6CqCqkp6fD2toaV05u4du2iYgUjjs0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4/LZteu7Z1tfy27mJiBSOOzRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4/KRgeu5dXdUElmYlz/Zuw65UYjVERFQW3KEhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCml4OBgCIIgHXZ2dggMDMSpU6dk/QRBwJYtW2RtcXFxeO211+Dg4ABTU1M0aNAAAwYMwP79+4td083NDYIgYO3atXrnfHx8IAgCVq5cqXcuPDwcxsbG+Pzzzw3Om5qaipCQENSvXx9qtRrOzs7o0aMH9uzZI1v7q6++kh6LooiJEyfCysoKOp2uyFqLOt58803UrFkTq1evlo0rKChA+/bt0bdvXwDy59nExAQeHh4ICwtDXl4eAECn0xW5RmpqarHPJxERPXsYaMogMDAQKSkpSElJwZ49e6BSqfDaa68VO2bp0qXo0qUL7OzssG7dOpw/fx6bN29G+/btMW7cuCeu6ezsjJiYGFnbkSNHkJqaCnNzc4NjoqOjMXnyZERHR+udS05ORsuWLbF37158/vnnSExMRGxsLLRaLUaPHm1wvvz8fAwbNgyrVq1CXFwc/Pz89PocO3ZMem42btwIADh//rzUFhkZiYiICISEhCAlJUUaN3/+fPz1119YtmyZ1Fb4PF+8eBETJkzArFmz9MLZo3MXHo6OjoafRCIiemapqroAJVKr1dBoNAAAjUaDqVOnomPHjvj333/h4OCg1//atWsYO3Ysxo4diy+//FJ2rmnTpvjwww+fuOagQYOwYMECXL9+Hc7OzgAeBpZBgwZh1apVev337duHBw8eICwsDKtWrcLvv/+O9u3bS+dHjRoFQRAQHx8vC0Q+Pj4YOnSo3nzZ2dkICgrC8ePHceDAAXh5eRms89Hrt7W1BQA4OjrCxsZGag8JCcGWLVswYsQI7NixA+fOncOMGTOwbt062NvbS/0efZ7ff/99bN68Gdu2bUNoaKjU5/G5iYjo+cQdmnLKzMzEDz/8AA8PD9jZ2Rnss3HjRuTm5mLy5MkGzwuC8MR1ateujYCAAHz33XcAgP/++w/r1q0zGD4AICoqCkFBQahRowaCgoIQFRUlnbtz5w5iY2MxevRog7s7jweEzMxMdO/eHWfPnsWhQ4eKDDMlJQgCYmJicODAAaxYsQLBwcEYOHAgXn/99WLHmZmZIScnp8zrZmdnIz09XXYQEdGzgTs0ZbBjxw5YWFgAAO7fvw8nJyfs2LEDRkaG8+GFCxdgZWUl7TYAD0POkCFDpMeHDx9GkyZNil136NChmDBhAj766CNs2LABDRo0QPPmzfX6paenY8OGDTh8+DAAYPDgwejYsSMWLlwICwsLXLp0CaIowtvbu0TXO3v2bFhaWiIpKcngDlRZuLq64quvvsLw4cNRr149/Pbbb0X2FUURe/bswa+//oqQkBDZuXr16unNe+bMGYPzhIeH45NPPtFrt+ywCFaW+sHOtoF/SS6FiIiqAe7QlIFWq0VCQgISEhIQHx+PgIAAdOvWDVevXi1yzOO7MAEBAUhISMDPP/+M+/fvIz8//4nrdu/eHZmZmdi/fz+io6OL3J1Zs2YNGjRogGbNmgEAmjdvDldXV6xbtw7Aw4BQGq+88gru37+PuXPnlmrck7zzzjtwcnJCSEgIrKys9M4XBkdTU1N069YNAwYMwKxZs2R9Dhw4IP1dJCQk4JdffilyvdDQUKSlpUnH9evXK/R6iIio6nCHpgzMzc3h4eEhPf72229hbW2NFStW4NNPP9Xr37BhQ6SlpSE1NVXapbGwsICHhwdUqpL/FahUKrz11luYOXMmjh49is2bNxvsFxUVhTNnzsjmLigoQHR0NIYNG4aGDRtCEAScO3euROt26dIFISEheOONN1BQUICFCxeWuOYnUalURT4HWq0WkZGRMDExQZ06dQz2c3d3L/E9NGq1Gmq1ujzlEhFRNcUdmgogCAKMjIzw4MEDg+f79u2LGjVqYN68eeVea+jQodi3bx/eeOMN1KpVS+98YmIijh8/Dp1OJ9u50Ol0OHz4MM6dOwdbW1sEBARgyZIluH//vt4c9+7d02t75ZVXsH37dqxYsaJENzFXhMLg6OLiUqrgR0REzx/+liiD7Oxs6bNO7t69i8WLFyMzMxM9evQw2N/FxQXz58/HmDFjcOfOHQQHB8Pd3R137tzBDz/8AAAwNjYu0dqNGjXC//73P9SsWdPg+aioKLRu3RqdOnXSO9eqVStERUXh888/x5IlS/Dyyy+jdevWCAsLQ9OmTZGXl4ddu3YhMjISSUlJeuP9/f2xY8cO9OjRAwUFBVi8eHGJaq5Mt27dQlZWlqzNzs4ONWrUqKKKiIioKnCHpgxiY2Ph5OQEJycntGnTBseOHcP69esNfi5LoZCQEPz222/4999/0bdvXzRs2BCvvvoqrly5gtjY2CfeEPwoOzs7mJmZ6bXn5OTghx9+QJ8+fQyO69OnD1atWoXc3FzUr18fJ06cgFarxYQJE9C4cWN07doVe/bsQWRkZJFrd+7cGT///DNWrlyJ0aNHl/p+nIrm5eUl/V0UHn/88UeV1kRERE+fIFb1bySiKpKeng5ra2tcObmF73IiIlI47tAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeLx27bpuWdbXwsrK6uqLoOIiMqBOzRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4/KRgeu5dXdUElmaVl+3dhl2ptLmJiOgh7tAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0ChMcHAwBEHAyJEj9c6NHj0agiAgODhY6tuzZ0+9sREREbJxW7ZsgSAI0mOdTgdBEHDv3j29Nby9vaFWq5GamirrW9yh0+kwa9YsNG/eXG++5ORkCIKAhIQEg/M5ODjg1VdfRWJiosHn4fEjMDCwBM8iERE9axhoFMjZ2Rlr167FgwcPpLasrCysXr0aLi4uxY41NTXFvHnzcPfu3VKve/DgQTx48AB9+/bFd999BwBo3749UlJSpKN///4IDAyUtbVv377Ua50/fx4pKSn49ddfkZ2dje7duyMnJ0fW5/F1UlJSsGbNmlKvRUREysdAo0AtWrSAs7MzNm3aJLVt2rQJLi4uePHFF4sd6+/vD41Gg/Dw8FKvGxUVhTfffBNvvfUWoqOjAQAmJibQaDTSYWZmBrVaLWszMTEp9VqOjo7QaDRo0aIFxo4di+vXr+PcuXOyPo+vo9FoUKtWrVKvRUREysdAo1BDhw5FTEyM9Dg6OhrvvPPOE8cZGxtj7ty5+Prrr/H333+XeL2MjAysX78egwcPRteuXZGWloYDBw6UqfbSSEtLw9q1awGgTMHoUdnZ2UhPT5cdRET0bFBVdQFUNoMHD0ZoaCiuXr0KADh06BDWrl0LnU73xLG9evVC8+bNMXPmTERFRZVovbVr16Jhw4bw8fEBAAwcOBBRUVHo2LFjma+hOPXq1QMA3L9/HwDw+uuvw9vbW9Znx44dsLCwkLVNmzYN06ZNMzhneHg4PvnkE712yw6LYGVpXhFlG3Tn8u4n9rFt4F9p6xMRPQ8YaBTKwcEB3bt3x8qVKyGKIrp37w57e/sSj583bx46d+6MiRMnlqh/dHQ0Bg8eLD0ePHgwfH198fXXX8PS0rLU9T/JgQMHULNmTRw5cgRz587FsmXL9PpotVpERkbK2mxtbYucMzQ0FOPHj5cep6enw9nZueKKJiKiKsNAo2BDhw7FBx98AABYsmRJqcZ26tQJAQEBCA0Nld4VVZSzZ8/iyJEjiI+Px5QpU6T2/Px8rF27FiNGjHjielZWVkhLS9NrL3wnlbW1tazd3d0dNjY28PLywq1btzBgwADs379f1sfc3BweHh5PXLuQWq2GWq0ucX8iIlIO3kOjYIGBgcjJyUFubi4CAgJKPT4iIgLbt2/H4cOHi+0XFRWFTp064c8//0RCQoJ0jB8/vsQvWXl5eeHvv//GzZs3Ze0nTpyAqalpse/OGj16NE6fPo3NmzeXaC0iInr+cIdGwYyNjZGUlCT9ubSaNGmCQYMGYdGiRUX2yc3Nxffff4+wsDA0btxYdm748OH48ssvcebMGenemqIEBATAy8sLQUFB+PTTT6HRaHDixAl8/PHHGDNmTLH116xZEyNGjMDMmTPRs2dP6TNzsrOzpc/DKaRSqUr10hsRET0buEOjcFZWVrCysirz+LCwMBQUFBR5ftu2bbh9+zZ69eqld65Ro0Zo1KhRiXZpVCoVfvvtN7i4uCAoKAiNGzfGzJkzMWbMGMyePfuJ4z/44AMkJSVh/fr1UltsbCycnJxkR4cOHZ44FxERPXsEURTFqi6CqCqkp6fD2toaV05uqdR3OZUE3+VERFQ+3KEhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFU1V1AURVzba+tlzfWE5ERFWPOzRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4pQ40cXFxlVEHERERUZmVOtAEBgaiQYMG+PTTT3H9+vXKqImIiIioVEodaG7cuIEPPvgAGzZsQP369REQEICffvoJOTk5lVEfUaW7uqoJkqPcq7oMIiIqh1IHGnt7e4wbNw4JCQk4evQoPD09MWrUKNSpUwcffvgh/vzzz8qok4iIiKhI5bopuEWLFggNDcUHH3yAzMxMREdHo2XLlujYsSPOnDlTUTUSERERFatMgSY3NxcbNmzAq6++CldXV/z6669YvHgxbt68iUuXLsHV1RX9+vWr6FqJiIiIDCr1l1OGhIRgzZo1EEURb731Fj777DM0btxYOm9ubo4vvvgCderUqdBCiYiIiIpS6kBz9uxZfP311+jduzfUarXBPvb29nx7NxERET01pX7JaebMmejXr59emMnLy8P+/fsBACqVCr6+vhVTIREREdETlDrQaLVa3LlzR689LS0NWq22QooiIiIiKo1SBxpRFCEIgl777du3YW5uXiFFEREREZVGie+h6d27NwBAEAQEBwfLXnLKz8/HqVOn0L59+4qvkIiIiOgJShxorK2tATzcobG0tISZmZl0zsTEBG3btsWIESMqvkIiIiKiJyhxoImJiQEAuLm5YeLEiXx5iYiIiKqNMr3LSa1WY/fu3fjmm2+QkZEBAPjnn3+QmZlZ4QUSERERPUmpP4fm6tWrCAwMxLVr15CdnY2uXbvC0tIS8+bNQ3Z2NpYtW1YZdRIREREVqdQ7NGPGjMFLL72Eu3fvyu6j6dWrF/bs2VOhxREREVHpzZo1C82bN6/qMp6qUgeaAwcO4OOPP4aJiYms3c3NDTdu3KiwwoiIiJ5XqampCAkJQf369aFWq+Hs7IwePXpw46AYpQ40BQUFyM/P12v/+++/YWlpWSFFPY+e9MPr5uaGr776Surv5uYGQRBw5MgR2Txjx46Fn5+f9HjWrFkQBAGCIEClUsHe3h6dOnXCV199hezsbNlYPz8/qe+jx8iRI6U+j7ZbWVmhVatW2Lp1q2yelStXGpzH1NRU6hMcHIyePXsW+Xw8fr1FWbNmDYyNjTF69Ogn9iUiUoLk5GS0bNkSe/fuxeeff47ExETExsZCq9U+1X/rcnNzn9paFaHUgeaVV16R/aIRBAGZmZmYOXMmXn311Yqs7blR1h9eU1NTTJky5Ynz+/j4ICUlBdeuXUNcXBz69euH8PBwtG/fXrqpu9CIESOQkpIiOz777DNZn5iYGKSkpOD48eN4+eWX0bdvXyQmJsr6WFlZ6c1z9erVUjwrJRMVFYXJkydjzZo1yMrKqvD5iYietlGjRkEQBMTHx6NPnz7w9PSEj48Pxo8fL/1P7LVr1/DGG2/AwsICVlZW6N+/P27evFnknAUFBQgLC0O9evWgVqvRvHlzxMbGSueTk5MhCALWrVsHX19fmJqa4scff6z0a61IpQ408+fPx6FDh/DCCy8gKysLb775pvRy07x58yqjxmdeSX54DXn33Xdx5MgR/PLLL8XOr1KpoNFoUKdOHTRp0gQhISHYt28fTp8+rfd3VrNmTWg0GtlhZWUl62NjYwONRgNPT0/Mnj0beXl5el9GKgiC3jy1a9cu5TNTvCtXruD333/H1KlT4enpiU2bNhXbPzs7G+np6bKDiKg6uXPnDmJjYzF69GiDH49iY2ODgoICvPHGG7hz5w727duHXbt24a+//sKAAQOKnHfhwoWYP38+vvjiC5w6dQoBAQF4/fXXcfHiRVm/qVOnYsyYMUhKSkJAQECFX19lKnWgqVevHv78809MmzYN48aNw4svvoiIiAicPHkSjo6OlVHjM60kP7xFcXd3x8iRIxEaGoqCgoJSrevt7Y1u3bo9MQQUJy8vD1FRUQCgd0/V0xATE4Pu3bvD2toagwcPlmopSnh4OKytraXD2dkZAGDZYRGs/FY8jZKJiIp16dIliKIIb2/vIvvs2bMHiYmJWL16NVq2bIk2bdpg1apV2LdvH44dO2ZwzBdffIEpU6Zg4MCB8PLywrx589C8eXO9l/bHjh2L3r17w93dHU5OThV5aZWu1IEGePh//IMHD8Znn32GpUuXYvjw4bJ3PFHJleSHtzgff/wxrly5UqatQW9vbyQnJ8vali5dCgsLC9nx+NxBQUGwsLCAWq3GuHHj4Obmhv79+8v6pKWl6c3TrVu3UtdYlIKCAqxcuRKDBw8GAAwcOBAHDx7ElStXihwTGhqKtLQ06bh+/XqF1UNEVBFEUXxin6SkJDg7O0v/UwYAL7zwAmxsbJCUlKTXPz09Hf/88w9efvllWfvLL7+s1/+ll14qY+VVr0SfQ7Nt2zZ069YNNWrUwLZt24rt+/rrr1dIYc+LkvzwFsfBwQETJ07EjBkzit1uLGrtx79odNCgQfjoo49kbY+/VLRgwQL4+/vjr7/+wrhx47Bo0SLY2trK+lhaWuLEiROytooMvbt27cL9+/el+7bs7e3RtWtXREdHY/bs2QbHqNVq2XeQERFVNw0bNoQgCDh37lyVrK/kbwEoUaDp2bMnUlNT4ejoWOw7UwRBMPgOKCpaRfzwjh8/HkuXLsXSpUtLNS4pKQnu7u6yNmtra3h4eBQ7TqPRwMPDAx4eHoiJicGrr76Ks2fPyl5yNDIyeuI85REVFYU7d+7IQlJBQQFOnTqFTz75BEZGZdp8JCKqUra2tggICMCSJUvw4Ycf6gWMe/fuoVGjRrh+/TquX78u7dKcPXsW9+7dwwsvvKA3p5WVFerUqYNDhw7B19dXaj906BBat25duRf0FJXoX/2CggLpl1VBQUGRB8NM6T36w3v//n298/fu3XviHBYWFpg+fTrmzJmj966lopw7dw6xsbHo06dPaUuWad26NVq2bIk5c+aUa57SuH37NrZu3Yq1a9ciISFBOk6ePIm7d+/it99+e2q1EBFVtCVLliA/Px+tW7fGxo0bcfHiRSQlJWHRokVo164d/P390aRJEwwaNAgnTpxAfHw83n77bfj6+hb5ktGkSZMwb948rFu3DufPn8fUqVORkJCAMWPGPOWrqzyl+uqD3NxcBAYGYtmyZWjYsGFl1fTcWbJkCV5++WW0bt0aYWFhaNq0KfLy8rBr1y5ERkYafE30ce+++y4WLFiA1atXo02bNrJzeXl5SE1NRUFBAW7fvg2dTodPP/0UzZs3x6RJk2R9//vvP6Smpsra1Go1atWqVeTaY8eORa9evTB58mTUrVsXwMOXsx6fBwAcHR2l3ZO0tDQkJCTIztvZ2Un/x3Hjxg29866urvj+++9hZ2eH/v37671k9uqrryIqKgqBgYFF1ktEVJ3Vr18fJ06cwJw5czBhwgSkpKTAwcEBLVu2RGRkJARBwNatWxESEoJOnTrByMgIgYGB+Prrr4uc88MPP0RaWhomTJiAW7du4YUXXsC2bduerd/lYinZ29uLFy5cKO0weoJ//vlHHD16tOjq6iqamJiIdevWFV9//XUxLi5OFEVRdHV1FRcsWCD1f/yxKIri6tWrRQCir6+v1DZz5kwRgAhANDY2Fm1tbcUOHTqICxYsELOysmTjfX19pb6PHgEBAVIfAOLmzZtl4woKCkRvb2/x/fffF0VRFGNiYgzOA0BMSUkRRVEUhwwZYvD8sGHDpOszdP77778XmzRpIo4aNcrg87hu3TrRxMRE/Pfff5/4nKelpYkAxCsnt4i3L+16Yn8iIqq+BFEs3V2p48aNg1qtRkRERPmSFFEVS09Ph7W1Na6c3AIrS3PYNvCv6pKIiKiMSv1t23l5eYiOjsbu3bvRsmVLvRuWvvzyyworjoiIiKgkSh1oTp8+jRYtWgAALly4IDv3+P0MRERERE9DqQPN4x9xT0RERFTV+GEdREREpHil3qEBgOPHj+Onn37CtWvXkJOTIztXnu8GIiIiIiqLUu/QrF27Fu3bt0dSUhI2b96M3NxcnDlzBnv37oW1tXVl1EhERERUrFIHmrlz52LBggXYvn07TExMsHDhQpw7dw79+/eHi4tLZdRIREREVKxSB5rLly+je/fuAAATExPcv38fgiBg3LhxWL58eYUXSERERPQkpb6HplatWtL3BdWtWxenT59GkyZNcO/ePfz3338VXiAREdHTlBzl/uROFcRt2JWnttazrsQ7NKdPnwYAdOrUCbt27QIA9OvXD2PGjMGIESMQFBSELl26VE6VREREJLl+/TqGDh2KOnXqwMTEBK6urhgzZgxu374t9fHz84MgCBAEAaampvD09ER4eDgMfUHA4cOHYWxsLL0C86jk5GQIggBHR0e9L0Bu3rw5Zs2aJWu7dOkShg4dChcXF6jVatStWxddunTBjz/+iLy8PKlfYW2PH2vXri3Tc1LiQNO0aVO0adMGTZo0Qb9+/QAAH330EcaPH4+bN2+iT58+iIqKKlMRREREVDJ//fUXXnrpJVy8eBFr1qzBpUuXsGzZMuzZswft2rXDnTt3pL4jRoxASkoKzp8/j9DQUMyYMQPLli3TmzMqKgohISHYv38//vnnH4PrZmRk4Isvvii2tvj4eLRo0QJJSUlYsmQJTp8+DZ1Oh+HDhyMyMhJnzpyR9Y+JiUFKSors6NmzZ+mfFAAl/i6nAwcOICYmBhs2bEBBQQH69OmD4cOHo2PHjmVamKiqFX6XU1paGqysrKq6HCKqJqr7S07dunXD6dOnceHCBZiZmUntqampaNCgAd5++21ERkbCz88PzZs3x1dffSX1admyJVxdXWUfsZKZmQknJyccP34cM2fORNOmTTFt2jTpfHJyMtzd3TFp0iRERkbi8uXLcHR0BPBwh6Znz56YNWsWRFGEj48Patasifj4eBgZ6e+ZiKIofauAIAjYvHlzmQPM40q8Q9OxY0dER0cjJSUFX3/9NZKTk+Hr6wtPT0/MmzcPqampFVIQERERGXbnzh38+uuvGDVqlCzMAIBGo8GgQYOwbt06vZeVRFHEgQMHcO7cOZiYmMjO/fTTT/D29oaXlxcGDx6M6Ohogy9LBQUFwcPDA2FhYQZrS0hIQFJSEiZOnGgwzACV+xVJpX6Xk7m5Od555x3s27cPFy5cQL9+/bBkyRK4uLjg9ddfr4waiYiICMDFixchiiIaNWpk8HyjRo1w9+5d/PvvvwCApUuXwsLCAmq1Gp06dUJBQQE+/PBD2ZioqCgMHjwYABAYGIi0tDTs27dPb25BEBAREYHly5fj8uXLeucLv9/Ry8tLart16xYsLCykY+nSpbIxQUFBsvMWFha4du1aKZ6R/1eurz7w8PDAtGnT8PHHH8PS0hI///xzeaYjIiKiEijh3SIYNGgQEhIScOjQIXTr1g0fffQR2rdvL50/f/484uPjERQUBABQqVQYMGBAkffEBgQEoEOHDpg+fXqJ1rezs0NCQgISEhJgY2Oj9+0CCxYskM4XHnXq1CnR3I8r01cfAMD+/fsRHR2NjRs3wsjICP3798ewYcPKOh0RERE9gYeHBwRBQFJSEnr16qV3PikpCbVq1YKDgwMAwNraGh4eHgAevrTk4eGBtm3bwt/fH8DD3Zm8vDxZiBBFEWq1GosXLzb4DQARERFo164dJk2aJGtv2LAhgIch6cUXXwQAGBsbS+urVPqRQ6PRSOfLq1Q7NP/88w/mzp0LT09P+Pn54dKlS1i0aBH++ecfrFixAm3btq2QooiIiEifnZ0dunbtiqVLl+LBgweyc6mpqfjxxx8xYMAAg/eqWFhYYMyYMZg4cSJEUUReXh5WrVqF+fPny3ZI/vzzT9SpUwdr1qwxWEPr1q3Ru3dvTJ06Vdb+4osvwtvbG1988QUKCgoq7qJLqMQ7NN26dcPu3bthb2+Pt99+G0OHDpW9TkZERESVb/HixWjfvj0CAgLw6aefwt3dHWfOnMGkSZNQt25dzJkzp8ix7733HmbPno2NGzdCpVLh7t27GDZsmN5OTOFHsYwcOdLgPHPmzIGPj49s10UQBMTExKBr1654+eWXERoaikaNGiE3Nxf79+/Hv//+C2NjY9k89+7d03tTkaWlJczNzUv7tABiCfXo0UPcsmWLmJeXV9IhRNVaWlqaCEBMS0ur6lKIiEolOTlZHDJkiFi7dm2xRo0aorOzsxgSEiL+73//k/r4+vqKY8aM0Rv73nvviT4+PuJrr70mvvrqqwbnP3r0qAhA/PPPP8UrV66IAMSTJ0/K+rz77rsiAHHmzJmy9vPnz4tDhgwR69WrJ6pUKtHa2lrs1KmT+M0334i5ublSPwAGj/Dw8DI9JyX+HBqiZw0/h4aI6NlRrnc5EREREVUHZX6XE9Gz4uqqJrA008/2/NI4IiLl4A4NERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4/h4aIiOgRdy7vfmpr2Tbwf2prPeu4Q0NERKQQy5Ytg6WlJfLy8qS2zMxM1KhRA35+frK+Op0OgiDg8uXLcHNzw1dffaU336xZs9C8eXODj93c3CAIQpFHcHAwABR5fu3atRV89cXjDg0REZFCaLVaZGZm4vjx42jbti0A4MCBA9BoNDh69CiysrJgamoKAIiLi4OLiwsaNGhQprWOHTuG/Px8AMDvv/+OPn364Pz589J335mZmUl9Y2JiEBgYKBtvY2NTpnXLioGGiIhIIby8vODk5ASdTicFGp1OhzfeeAN79+7FkSNHpJ0anU4HrVZb5rUcHBykP9va2gIAHB0dDQYVGxsbaDSaMq9VEfiSExERkYJotVrExcVJj+Pi4uDn5wdfX1+p/cGDBzh69Gi5Ao3SMNAQEREpiFarxaFDh5CXl4eMjAycPHkSvr6+6NSpE3Q6HQDg8OHDyM7OlgWaKVOmwMLCQnbMnTu3QmoKCgrSm/vatWsVMndJ8SUnIiIiBfHz88P9+/dx7Ngx3L17F56ennBwcICvry/eeecdZGVlQafToX79+nBxcZHGTZo0SbqRt9CiRYuwf//+cte0YMEC+PvL37FVp06dcs9bGtyheQYEBwcbvMP80qVLAIDw8HAYGxvj888/1xu7cuVK2euhK1eulMYbGRnByckJAwYMwLVr1yCKIvz9/REQEKA3z9KlS2FjYwN/f/9i74p3c3OTxpSmrpJe8+M3pRERPWs8PDxQr149xMXFIS4uDr6+vgAeBghnZ2f8/vvviIuLQ+fOnWXj7O3t4eHhITsK740pL41Goze3SvV090wYaJ4RgYGBSElJkR3u7u4AgOjoaEyePBnR0dElmsvKygopKSm4ceMGNm7ciPPnz6Nfv34QBAExMTE4evQovvnmG6n/lStXMHnyZHz99dfYuHGjrAbg4d3vhY+PHTsmjSttXSW55jVr1pRpLiIiJdFqtdDpdNDpdLK3a3fq1Ak7d+5EfHz8c3X/DMBA88xQq9XQaDSyw9jYGPv27cODBw8QFhaG9PR0/P7770+cSxAEaDQaODk5oX379hg2bBji4+ORnp4OZ2dnLFy4EBMnTsSVK1cgiiKGDRuGV155BW+99Rasra1lNQD/f/e7RqOR7povS10lueZatWqVeh4iIqXRarU4ePAgEhISpB0aAPD19cU333yDnJycpxpo7t27h9TUVNlx//79p7Y+wHtonnlRUVEICgpCjRo1EBQUhKioKLRv377E42/duoXNmzfD2NgYxsbGAIAhQ4Zg8+bNGDp0KHr37o3Tp0/jzJkzT7WussjOzkZ2drb0OD09vVLXIyJlUsKn92q1Wjx48ADe3t6oXbu21O7r64uMjAzp7d1PyzvvvKPXFh4ejqlTpz61GiCS4g0ZMkQ0NjYWzc3NpaNv375iWlqaaGZmJiYkJIiiKIonT54ULSwsxIyMDGlsTEyMaG1tLXsMQDQ3Nxdr1qwpAhABiB9++KFszZs3b4r29vaikZGRuHnz5iJrA6B3vix1leSazc3NxTlz5hQ5ZubMmdL1PHpcOblFvH1pV5HjiIio+uMOzTNCq9UiMjJSemxubo41a9agQYMGaNasGQCgefPmcHV1xbp16zBs2LAi57K0tMSJEyeQm5uLnTt34scff8ScOXNkfRwdHfHee+9hy5Yt6NmzZ6lqLWtdj3v8mgEUe4NbaGgoxo8fLz0ufAmNiIiUj4HmGWFubg4PDw9ZW1RUFM6cOSO707ygoADR0dHFBgcjIyNprkaNGuHy5ct4//338f3338v6qVSqMt3FXta6HmfomoujVquhVqtLVSsRESkDA80zKjExEcePH4dOp5PtWty5cwd+fn44d+4cvL29SzTX1KlT0aBBA4wbNw4tWrSoNnUREREVYqB5RkVFRaF169bo1KmT3rlWrVohKirK4Oe/GOLs7IxevXphxowZ2LFjx1OrKz8/HwkJCbI+arUajRo1AvDwJt/U1FTZeZVKBXt7+3LVSEREysO3bT+DcnJy8MMPP6BPnz4Gz/fp0werVq1Cbm5uieccN24cfv75Z8THxz+1ujIzM/Hiiy/Kjh49ekj9Y2Nj4eTkJDs6dOhQ5vqIiEi5BFEUxaougqgqpKenw9raGldOboGVpbki3qpJRESGcYeGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUT1XVBRBVNdv6WlhZWVV1GUREVA7coSEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgoefe1VVNkBzlXtVlEBFROTDQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQKFRwcDAEQZAOOzs7BAYG4tSpU7J+giBgy5YteuOTk5MhCAISEhL0zvn5+WHs2LHSYzc3N9lahUdERESR8xZ3zJ49G+bm5rh06ZJs7D///INatWph8eLFeuuam5ujRYsWWL9+vdR/1qxZBuf39vYuxTNJRETPAgYaBQsMDERKSgpSUlKwZ88eqFQqvPbaa5WyVlhYmLRW4RESEqLXz9nZWdZnwoQJ8PHxkbVNnDgRAQEBCA4ORkFBgTR2xIgRaNmyJUaPHq237smTJ9GqVSsMGDAAv//+u3T+8blTUlJw8ODBSnkOiIio+lJVdQFUdmq1GhqNBgCg0WgwdepUdOzYEf/++y8cHBwqdC1LS0tpreIYGxvL+llYWEClUumN/eabb+Dj44Mvv/wSEydOxMqVK3Ho0CEkJiZCEAS9dTUaDZYsWYIffvgB27dvR/v27QHA4NxFyc7ORnZ2tvQ4PT29ROOIiKj6Y6B5RmRmZuKHH36Ah4cH7OzsqrqcJ3JwcMDy5csRFBSEZs2aYdy4cVi4cCGcnZ2LHKNSqVCjRg3k5OSUac3w8HB88skneu2ubyfCysqqTHMSEVH1wJecFGzHjh2wsLCAhYUFLC0tsW3bNqxbtw5GRhX/1zplyhRprcLjwIED5ZqzZ8+e6N+/PwIDA+Hr64shQ4YU2TcnJwfh4eFIS0tD586dpfbExES9ukaOHGlwjtDQUKSlpUnH9evXy1U/ERFVH9yhUTCtVovIyEgAwN27d7F06VJ069YN8fHxcHV1rdC1Jk2ahODgYFlb3bp1yz3v9OnTsWrVKnz88ccGz0+ZMgUff/wxsrKyYGFhgYiICHTv3l067+XlhW3btsnGFLXbolaroVary10zERFVPww0CmZubg4PDw/p8bfffgtra2usWLECn376abFjC3/pp6Wl6Z27d+8erK2tZW329vaytSqKSqWS/fdxhUHKwsICtWvXlt1fAwAmJiaVUhcRESkLX3J6hgiCACMjIzx48OCJfW1tbWFvb48//vhD1p6eno5Lly7B09OzssoslcIgpdFo9MIMERFRIe7QKFh2djZSU1MBPHzJafHixcjMzESPHj1k/a5cuaL3eTMNGzbE+PHjMXfuXNSuXRtt27bF7du3MXv2bDg4OKB3796y/hkZGdJahWrWrFnlN9Pm5eXp1SUIAmrXrl1FFRERUVVgoFGw2NhYODk5AXj49mZvb2+sX78efn5+sn7jx4/XG3vgwAFMnjwZFhYWmDdvHi5fvgxbW1u8/PLLiIuLg5mZmaz/jBkzMGPGDFnbe++9h2XLllXsRZXSmTNnpOegkFqtRlZWVhVVREREVUEQRVGs6iKIqkJ6ejqsra2RlpZW5TtNRERUPryHhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+Bhp57V1c1QXKUe1WXQURE5cBAQ0RERIrHQENERESKx0BDREREisdAQ0RERIrHQENERESKx0BDREREisdAQ0RERIrHQENERESKx0BDREREisdAQ0RERIrHQENERESKx0BDREREisdAQ0RERIrHQENERESKx0BTCsHBwejZs6esbcOGDTA1NcX8+fOlPoIgICIiQtZvy5YtEARBerxy5UrY2NgYXEcQBGzZskXWtnHjRvj5+cHa2hoWFhZo2rQpwsLCcOfOnSLnS0pKgrOzM/r164ecnJxi13y09sePwMDAIsfMmjULzZs312tPTk6GIAhISEiQPTZ0HDlyRDb2wYMHsLW1hb29PbKzs/XmdnNzk8aamZnBzc0N/fv3x969e4usk4iInm0MNOXw7bffYtCgQYiMjMSECROkdlNTU8ybNw93796tkHU++ugjDBgwAK1atcLOnTtx+vRpzJ8/H3/++Se+//57g2OOHTuGjh07IjAwEOvWrYOJiUmJ1goMDERKSorsWLNmTYVcBwDs3r1bb/6WLVvK+mzcuBE+Pj7w9vbWC3aFwsLCkJKSgvPnz2PVqlWwsbGBv78/5syZU2G1EhGRcqiqugCl+uyzzzBz5kysXbsWvXr1kp3z9/fHpUuXEB4ejs8++6xc68THx2Pu3Ln46quvMGbMGKndzc0NXbt2xb179/TG7N27F2+88QZGjRqFefPmlWo9tVoNjUZTrpqLY2dn98T5o6KiMHjwYIiiiKioKAwYMECvj6WlpTSPi4sLOnXqBCcnJ8yYMQN9+/aFl5dXpdRPRETVE3doymDKlCmYPXs2duzYoRdmAMDY2Bhz587F119/jb///rtca/3444+wsLDAqFGjDJ5//CWkzZs3o3v37vj4449LHWaqg8uXL+Pw4cPo378/+vfvjwMHDuDq1aslGjtmzBiIooitW7caPJ+dnY309HTZQUREzwYGmlLauXMnPvvsM2zduhVdunQpsl+vXr3QvHlzzJw5s1zrXbx4EfXr10eNGjWe2DczMxP9+vXDpEmTMGXKlDKtt2PHDlhYWMiOuXPnFjsmMTFRb4yPj4/Bvu3bt9fr+6jo6Gh069YNtWrVgq2tLQICAhATE1Oi2m1tbeHo6Ijk5GSD58PDw2FtbS0dzs7OAADXtxPhNuxKidYgIqLqiS85lVLTpk3xv//9DzNnzkTr1q31fiE/at68eejcuTMmTpxY5vVEUSxxXzMzM3To0AErVqxAUFAQGjVqVOr1tFotIiMjZW22trbFjvHy8sK2bdtkbTdu3ICfn59e33Xr1hVZV35+Pr777jssXLhQahs8eDAmTpyIGTNmwMjoyflbFEXZzdePCg0Nxfjx46XH6enpUqghIiJlY6Appbp162LDhg3QarUIDAzEzp07YWlpabBvp06dEBAQgNDQUAQHB8vOWVlZ4f79+ygoKJD9oi68J8ba2hoA4OnpiYMHDyI3N/eJuzTGxsbYsmULevfuDa1Wi7i4uFKHGnNzc3h4eJRqjImJid4Ylcrwj5azs3OR8//666+4ceOG3j0z+fn52LNnD7p27VpsHbdv38a///4Ld3d3g+fVajXUanWxcxARkTLxJacycHV1xb59+5CamorAwEBkZGQU2TciIgLbt2/H4cOHZe1eXl7Iy8uT3tZc6MSJEwAeBhkAePPNN5GZmYmlS5canP/xm4LVajU2bdqEVq1aQavV4uzZs6W8uqoTFRWFgQMHIiEhQXYMHDgQUVFRTxy/cOFCGBkZ6b21noiInn3coSkjZ2dn6HQ6aLVaBAQEIDY2FlZWVnr9mjRpgkGDBmHRokWydh8fH7zyyisYOnQo5s+fj/r16+P8+fMYO3YsBgwYgLp16wIA2rRpg8mTJ2PChAm4ceMGevXqhTp16uDSpUtYtmwZOnToIHv3E/Aw1GzcuBH9+vWDVqvF3r17pXta8vPz9UKUWq2WdnKys7ORmpoqO69SqWBvb1+u56vQ7du39ea3sbFBRkYGtm/fjm3btqFx48ay82+//TZ69eqFO3fuSC9/ZWRkIDU1Fbm5ubhy5Qp++OEHfPvttwgPDy/1DhMRESkfA0051KtXTxZqfv31V4P9wsLCsG7dOr32devWYebMmXjvvffwzz//oF69eujVqxemT58u6zdv3jy0bNkSS5YswbJly1BQUIAGDRqgb9++GDJkiME1TUxMsGHDBvTv318KNcDDG4dffPFFWd8GDRrg0qVLAIDY2Fg4OTnJznt5eeHcuXMle1KewN/fX69tzZo1uHHjBszNzQ3eaN2lSxeYmZnhhx9+wIcffggAmDFjBmbMmAETExNoNBq0bdsWe/bsgVarrZA6iYhIWQSxNHedEj1D0tPTYW1tjbS0NIO7a0REpBy8h4aIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUr0oDTXBwMHr27KnXrtPpIAgC7t27J7Xl5+djwYIFaNKkCUxNTVGrVi1069YNhw4dkvqcO3cOgiDgyJEjsvnatm0LU1NTZGVlSW1ZWVkwNTVFVFSUVIsgCBAEATVq1EDt2rXRtWtXREdHo6CgQDafm5ub1PfRIyIiAgCQnJwMQRDg6OiIjIwM2djmzZtj1qxZBp+P8tZfkufy0cePXrOhw83NDQDg5+dn8PzIkSMNXkdxcwqCAK1Wixo1auDgwYOycffv30f9+vUxceJEvXVNTU3xwgsvYOnSpVL/lStXGpzf1NTUYF1ERPTsUsQOjSiKGDhwIMLCwjBmzBgkJSVBp9PB2dkZfn5+2LJlCwDA29sbGo0GOp1OGpuRkYETJ07AwcFBFhQOHz6M7OxsdO7cWWoLDAxESkoKkpOTsXPnTmi1WowZMwavvfYa8vLyZDWFhYUhJSVFdoSEhMj6ZGRk4IsvvijxdZa3/tJauHChrH4AiImJkR4fO3ZM6jtixAi96/3ss88Mzvton6+++gpWVlaytu3btyMkJATBwcG4f/++NG7y5MkwMzPDp59+qrfu2bNn0b9/f4wePRpr1qyRzj8+d0pKCq5evVrm54SIiJRJEYHmp59+woYNG7Bq1SoMHz4c7u7uaNasGZYvX47XX38dw4cPl34xarVaWSA4ePAgPD090aNHD1m7TqeDq6sr3N3dpTa1Wg2NRoO6deuiRYsWmDZtGrZu3YqdO3di5cqVsposLS2h0Whkh7m5uaxPSEgIvvzyS9y6davE11qe+kvL2tpaVj8A2NjYSI8dHBykvjVr1tS7XisrK4PzPtrH2toagiDI2iwsLDB37lyYmJhgypQpAIC4uDh8++23WLVqlWyHpXDd+vXrY9asWWjYsCG2bdsmnX98bo1Gg9q1axusKzs7G+np6bKDiIieDYoINKtXr5Z+qT9uwoQJuH37Nnbt2gXgYSA4ePCgtKMSFxcHPz8/+Pr6Ii4uThoXFxcHrVb7xLU7d+6MZs2aYdOmTaWuOygoCB4eHggLCyvxmIquv7oyNTXFqlWrsHz5cmzduhVDhw7FtGnT0LJly2LHmZmZIScnp0xrhoeHw9raWjqcnZ0BAHf+isOdy7sr9CAioqerygPNjh07YGFhITu6desm63PhwgU0atTI4PjC9gsXLgB4GAju378vvVyi0+ng6+uLTp064ejRo8jKysKDBw8QHx9f4kDg7e2N5ORkWduUKVP06j5w4ICsT+F9NcuXL8fly5dLtFZ56i/Jc1lWS5cu1Zv7xx9/LNecL730EkJDQ9G7d2/Y2dnho48+KrJvfn4+fvjhB5w6dUr2MltaWlqJrzk0NBRpaWnScf369XLVT0RE1YeqqgvQarWIjIyUtR09ehSDBw+WtYmiWKL5PDw8UK9ePeh0Ovj4+ODkyZPw9fWFo6MjXFxccPjwYYiiiOzs7BIHGlEUIQiCrG3SpEkIDg6WtdWtW1dvbEBAADp06IDp06dj9erVlVp/SZ/Lshg0aJBe4CjqpZ3SmD59OsLCwjB16lSoVPo/jkuXLsW3336LnJwcGBsbY9y4cXj//fel85aWljhx4oRsjJmZmcG11Go11Gp1uWsmIqLqp8oDjbm5OTw8PGRtf//9t+yxp6cnkpKSDI4vbPf09JTa/Pz8EBcXh6ZNm6Jhw4ZwdHQEAOllG1EU4eHhIb3k8CRJSUl696rY29vr1V2UiIgItGvXDpMmTSpR/7LWX5Lnsqysra1LfL2lURhiDIUZ4P+DlJmZGZycnGBkJN9UNDIyqpS6iIhIWar8JaeSGDhwIC5evIjt27frnZs/fz7s7OzQtWtXqU2r1eL333/Hrl274OfnJ7V36tQJOp0OOp2uxLsze/fuRWJiIvr06VPm+lu3bo3evXtj6tSpJepfkfUrXWGQqlu3rl6YISIiKlTlOzQlMXDgQKxfvx5DhgzB559/ji5duiA9PR1LlizBtm3bsH79etk7jArvQ4mOjsaKFSukdl9fXwwfPhwAMGrUKL11srOzkZqaivz8fNy8eROxsbEIDw/Ha6+9hrffflvWNyMjA6mpqbK2mjVrFvnOnzlz5sDHx6fInYhHlbX+yvTff//pXa9arUatWrWeah2PE0VRry4AcHR0ZAAiInqOKOJffEEQ8NNPP2HatGlYsGABvLy80LFjR1y9ehU6nU7vA+Xc3d3h6uqKjIwM+Pr6Su0uLi6oU6cOcnJyZDsfhWJjY+Hk5AQ3NzcEBgYiLi4OixYtwtatW2FsbCzrO2PGDDg5OcmOyZMnF3kNnp6eGDp0qOzD8YpS1vor04oVK/SuNygo6KnWYEh6erpeXU5OTqV6qzwRESmfIJb0bluiZ0x6ejqsra1x5eQWWFmaP3lAKdg28K/Q+YiIqHiK2KEhIiIiKg4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESmeIr5tm6gy2dbXFvkt6UREpAzcoSEiIiLFY6AhIiIixWOgISIiIsXjPTT03BJFEQCQnp5exZUQ0dNmaWkJQRCqugyqQAw09Ny6ffs2AMDZ2bmKKyGipy0tLY1vBnjGMNDQc8vW1hYAcO3aNVhbW1dxNSWXnp4OZ2dnXL9+XTH/ICuxZkCZdSuxZuDp121paVnpa9DTxUBDzy0jo4e3kFlbWyvqH/5CVlZWiqtbiTUDyqxbiTUDyq2bqh5vCiYiIiLFY6AhIiIixWOgoeeWWq3GzJkzoVarq7qUUlFi3UqsGVBm3UqsGVBu3VR9CGLhe1eJiIiIFIo7NERERKR4DDRERESkeAw0REREpHgMNERERKR4DDT03FqyZAnc3NxgamqKNm3aID4+vspq2b9/P3r06IE6depAEARs2bJFdl4URcyYMQNOTk4wMzODv78/Ll68KOtz584dDBo0CFZWVrCxscGwYcOQmZlZaTWHh4ejVatWsLS0hKOjI3r27Inz58/L+mRlZWH06NGws7ODhYUF+vTpg5s3b8r6XLt2Dd27d0fNmjXh6OiISZMmIS8vr9LqjoyMRNOmTaUPcGvXrh127txZrWt+XEREBARBwNixY6t13bNmzYIgCLLD29u7WtdMCiYSPYfWrl0rmpiYiNHR0eKZM2fEESNGiDY2NuLNmzerpJ5ffvlF/Oijj8RNmzaJAMTNmzfLzkdERIjW1tbili1bxD///FN8/fXXRXd3d/HBgwdSn8DAQLFZs2bikSNHxAMHDogeHh5iUFBQpdUcEBAgxsTEiKdPnxYTEhLEV199VXRxcREzMzOlPiNHjhSdnZ3FPXv2iMePHxfbtm0rtm/fXjqfl5cnNm7cWPT39xdPnjwp/vLLL6K9vb0YGhpaaXVv27ZN/Pnnn8ULFy6I58+fF6dNmybWqFFDPH36dLWt+VHx8fGim5ub2LRpU3HMmDFSe3Wse+bMmaKPj4+YkpIiHf/++2+1rpmUi4GGnkutW7cWR48eLT3Oz88X69SpI4aHh1dhVQ89HmgKCgpEjUYjfv7551LbvXv3RLVaLa5Zs0YURVE8e/asCEA8duyY1Gfnzp2iIAjijRs3nkrdt27dEgGI+/btk2qsUaOGuH79eqlPUlKSCEA8fPiwKIoPg5yRkZGYmpoq9YmMjBStrKzE7Ozsp1K3KIpirVq1xG+//bba15yRkSE2bNhQ3LVrl+jr6ysFmupa98yZM8VmzZoZPFddaybl4ktO9NzJycnBH3/8AX9/f6nNyMgI/v7+OHz4cBVWZtiVK1eQmpoqq9fa2hpt2rSR6j18+DBsbGzw0ksvSX38/f1hZGSEo0ePPpU609LSAPz/l37+8ccfyM3NldXt7e0NFxcXWd1NmjRB7dq1pT4BAQFIT0/HmTNnKr3m/Px8rF27Fvfv30e7du2qfc2jR49G9+7dZfUB1fu5vnjxIurUqYP69etj0KBBuHbtWrWvmZSJX05Jz53//e9/yM/Pl/0jCQC1a9fGuXPnqqiqoqWmpgKAwXoLz6WmpsLR0VF2XqVSwdbWVupTmQoKCjB27Fi8/PLLaNy4sVSTiYkJbGxsiq3b0HUVnqssiYmJaNeuHbKysmBhYYHNmzfjhRdeQEJCQrWtee3atThx4gSOHTumd666Ptdt2rTBypUr4eXlhZSUFHzyySfo2LEjTp8+XW1rJuVioCGichs9ejROnz6NgwcPVnUpJeLl5YWEhASkpaVhw4YNGDJkCPbt21fVZRXp+vXrGDNmDHbt2gVTU9OqLqfEunXrJv25adOmaNOmDVxdXfHTTz/BzMysCiujZxFfcqLnjr29PYyNjfXeTXHz5k1oNJoqqqpohTUVV69Go8GtW7dk5/Py8nDnzp1Kv6YPPvgAO3bsQFxcHOrVqyerOycnB/fu3Su2bkPXVXiuspiYmMDDwwMtW7ZEeHg4mjVrhoULF1bbmv/44w/cunULLVq0gEqlgkqlwr59+7Bo0SKoVCrUrl27Wtb9OBsbG3h6euLSpUvV9rkm5WKgoeeOiYkJWrZsiT179khtBQUF2LNnD9q1a1eFlRnm7u4OjUYjqzc9PR1Hjx6V6m3Xrh3u3buHP/74Q+qzd+9eFBQUoE2bNpVSlyiK+OCDD7B582bs3bsX7u7usvMtW7ZEjRo1ZHWfP38e165dk9WdmJgoC2O7du2ClZUVXnjhhUqp25CCggJkZ2dX25q7dOmCxMREJCQkSMdLL72EQYMGSX+ujnU/LjMzE5cvX4aTk1O1fa5Jwar6rmSiqrB27VpRrVaLK1euFM+ePSu+++67oo2NjezdFE9TRkaGePLkSfHkyZMiAPHLL78UT548KV69elUUxYdv27axsRG3bt0qnjp1SnzjjTcMvm37xRdfFI8ePSoePHhQbNiwYaW+bfv9998Xra2tRZ1OJ3tb7n///Sf1GTlypOji4iLu3btXPH78uNiuXTuxXbt20vnCt+W+8sorYkJCghgbGys6ODhU6ttyp06dKu7bt0+8cuWKeOrUKXHq1KmiIAjib7/9Vm1rNuTRdzlV17onTJgg6nQ68cqVK+KhQ4dEf39/0d7eXrx161a1rZmUi4GGnltff/216OLiIpqYmIitW7cWjxw5UmW1xMXFiQD0jiFDhoii+PCt29OnTxdr164tqtVqsUuXLuL58+dlc9y+fVsMCgoSLSwsRCsrK/Gdd94RMzIyKq1mQ/UCEGNiYqQ+Dx48EEeNGiXWqlVLrFmzptirVy8xJSVFNk9ycrLYrVs30czMTLS3txcnTJgg5ubmVlrdQ4cOFV1dXUUTExPRwcFB7NKlixRmqmvNhjweaKpj3QMGDBCdnJxEExMTsW7duuKAAQPES5cuVeuaSbkEURTFqtkbIiIiIqoYvIeGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiIiIFI+BhoiIiBSPgYaIiIgUj4GGiKgUkpOTIQgCEhISqroUInoEAw0REREpHgMNESlKQUEBPvvsM3h4eECtVsPFxQVz5swBACQmJqJz584wMzODnZ0d3n33XWRmZkpj/fz8MHbsWNl8PXv2RHBwsPTYzc0Nc+fOxdChQ2FpaQkXFxcsX75cOu/u7g4AePHFFyEIAvz8/CrtWomo5BhoiEhRQkNDERERgenTp+Ps2bNYvXo1ateujfv37yMgIAC1atXCsWPHsH79euzevRsffPBBqdeYP38+XnrpJZw8eRKjRo3C+++/j/PnzwMA4uPjAQC7d+9GSkoKNm3aVKHXR0Rlo6rqAoiISiojIwMLFy7E4sWLMWTIEABAgwYN0KFDB6xYsQJZWVlYtWoVzM3NAQCLFy9Gjx49MG/ePNSuXbvE67z66qsYNWoUAGDKlClYsGAB4uLi4OXlBQcHBwCAnZ0dNBpNBV8hEZUVd2iISDGSkpKQnZ2NLl26GDzXrFkzKcwAwMsvv4yCggJpd6WkmjZtKv1ZEARoNBrcunWr7IUTUaVjoCEixTAzMyvXeCMjI4iiKGvLzc3V61ejRg3ZY0EQUFBQUK61iahyMdAQkWI0bNgQZmZm2LNnj965Ro0a4c8//8T9+/eltkOHDsHIyAheXl4AAAcHB6SkpEjn8/Pzcfr06VLVYGJiIo0louqDgYaIFMPU1BRTpkzB5MmTsWrVKly+fBlHjhxBVFQUBg0aBFNTUwwZMgSnT59GXFwcQkJC8NZbb0n3z3Tu3Bk///wzfv75Z5w7dw7vv/8+7t27V6oaHB0dYWZmhtjYWNy8eRNpaWmVcKVEVFoMNESkKNOnT8eECRMwY8YMNGrUCAMGDMCtW7dQs2ZN/Prrr7hz5w5atWqFvn37okuXLli8eLE0dujQoRgyZAjefvtt+Pr6on79+tBqtaVaX6VSYdGiRfjmm29Qp04dvPHGGxV9iURUBoL4+AvKRERERArDHRoiIiJSPAYaIiIiUjwGGiIiIlI8BhoiIiJSPAYaIiIiUjwGGiIiIlI8BhoiIiJSPAYaIiIiUjwGGiIiIlI8BhoiIiJSPAYaIiIiUrz/A+sUfVTiRBWAAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "# Specify colors for each values of the hue variable\n", + "palette = {\n", + " 'ORANGE': 'orange',\n", + " 'WHITE': 'wheat',\n", + "}\n", + "# Plot a bar plot to visualize how many pumpkins of each variety are orange or white\n", + "sns.catplot(\n", + " data=pumpkins, y=\"Variety\", hue=\"Color\", kind=\"count\",\n", + " palette=palette, \n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ಡೇಟಾ ಪೂರ್ವ ಪ್ರಕ್ರಿಯೆ\n", + "\n", + "ಡೇಟಾವನ್ನು ಉತ್ತಮವಾಗಿ ಚಿತ್ರಿಸಲು ಮತ್ತು ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ ಫೀಚರ್‌ಗಳು ಮತ್ತು ಲೇಬಲ್‌ಗಳನ್ನು ಎನ್‌ಕೋಡ್ ಮಾಡೋಣ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['med', 'lge', 'sml', 'xlge', 'med-lge', 'jbo', 'exjbo'],\n", + " dtype=object)" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Let's look at the different values of the 'Item Size' column\n", + "pumpkins['Item Size'].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import OrdinalEncoder\n", + "# Encode the 'Item Size' column using ordinal encoding\n", + "item_size_categories = [['sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo']]\n", + "ordinal_features = ['Item Size']\n", + "ordinal_encoder = OrdinalEncoder(categories=item_size_categories)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import OneHotEncoder\n", + "# Encode all the other features using one-hot encoding\n", + "categorical_features = ['City Name', 'Package', 'Variety', 'Origin']\n", + "categorical_encoder = OneHotEncoder(sparse_output=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ord__Item Sizecat__City Name_ATLANTAcat__City Name_BALTIMOREcat__City Name_BOSTONcat__City Name_CHICAGOcat__City Name_COLUMBIAcat__City Name_DALLAScat__City Name_DETROITcat__City Name_LOS ANGELEScat__City Name_MIAMI...cat__Origin_MICHIGANcat__Origin_NEW JERSEYcat__Origin_NEW YORKcat__Origin_NORTH CAROLINAcat__Origin_OHIOcat__Origin_PENNSYLVANIAcat__Origin_TENNESSEEcat__Origin_TEXAScat__Origin_VERMONTcat__Origin_VIRGINIA
21.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
31.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.01.0
43.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
53.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
61.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
\n", + "

5 rows × 48 columns

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

5 rows × 49 columns

\n", + "
" + ], + "text/plain": [ + " ord__Item Size cat__City Name_ATLANTA cat__City Name_BALTIMORE \n", + "2 1.0 0.0 1.0 \\\n", + "3 1.0 0.0 1.0 \n", + "4 3.0 0.0 1.0 \n", + "5 3.0 0.0 1.0 \n", + "6 1.0 0.0 1.0 \n", + "\n", + " cat__City Name_BOSTON cat__City Name_CHICAGO cat__City Name_COLUMBIA \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__City Name_DALLAS cat__City Name_DETROIT cat__City Name_LOS ANGELES \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__City Name_MIAMI ... cat__Origin_NEW JERSEY cat__Origin_NEW YORK \n", + "2 0.0 ... 0.0 0.0 \\\n", + "3 0.0 ... 0.0 0.0 \n", + "4 0.0 ... 0.0 0.0 \n", + "5 0.0 ... 0.0 0.0 \n", + "6 0.0 ... 0.0 0.0 \n", + "\n", + " cat__Origin_NORTH CAROLINA cat__Origin_OHIO cat__Origin_PENNSYLVANIA \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__Origin_TENNESSEE cat__Origin_TEXAS cat__Origin_VERMONT \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__Origin_VIRGINIA Color \n", + "2 0.0 0 \n", + "3 1.0 0 \n", + "4 0.0 0 \n", + "5 0.0 0 \n", + "6 0.0 0 \n", + "\n", + "[5 rows x 49 columns]" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.preprocessing import LabelEncoder\n", + "# Encode the 'Color' column using label encoding\n", + "label_encoder = LabelEncoder()\n", + "encoded_label = label_encoder.fit_transform(pumpkins['Color'])\n", + "encoded_pumpkins = encoded_features.assign(Color=encoded_label)\n", + "encoded_pumpkins.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ORANGE', 'WHITE']" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Let's look at the mapping between the encoded values and the original values\n", + "list(label_encoder.inverse_transform([0, 1]))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ಲಕ್ಷಣಗಳು ಮತ್ತು ಲೇಬಲ್ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ವಿಶ್ಲೇಷಣೆ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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drtdw4cPN7s0t/DII4+oZ8+eeuaZZzR06FBt27ZNixcv1uLFi8vdp4eHh373u99p0KBBGj58uPLz87V06VI9+OCDrndioFxeeeUVo1mzZoanp6fRtWtXY+vWrWaX5BYSEhIMSSW2UaNGmV3ar15p112SsWTJErNLcwtjxowxQkJCDE9PT6NRo0bGbbfdZnzxxRdml+XWIiMjjUmTJpldhlsYNmyYERgYaHh6ehpNmjQxhg0bZhw6dMjsstzKZ599ZrRv397w8vIyIiIijMWLF1e4z8zMTGPYsGFGw4YNjaCgIOPhhx828vLyXD6fdWIBAABgOUwnAAAAQJX74YcfXDrO1bm2jMQCAACgytntdscTuUqLn5f3FxcXu9QfI7EAAACoFuvWrVPDhg0lScePH9fQoUP11VdfSZLOnDmjvn37utwXIRYAAADVol27do6nnvr4+Mhmszme2pWZmVmmvlgnFgAAAJZDiAUAAECVq+zbsAixAAAAqHI2m+26+0o75moIsQDgBo4cOSKbzaaUlBSzSwHgppYtW6a6des63rdo0UI5OTmO9w0aNNCWLVtc7o8QCwDlMHr0aN11112O91FRUZo8ebJp9aSlpelPf/qTgoKC5O3traZNm2rw4ME6cOCAJCk4OFjp6ek8IhWAaYYOHSovL6+rttvtdnXt2tXl/lidAAAs7uLFi+rfv79at26tFStWKDAwUMePH9eqVat09uxZSZd+OAQEBJhbKABUIkZiAaCCRo8eraSkJL300kuy2Wyy2Ww6cuSIJGnPnj0aNGiQfHx81LhxY40cOVKnT592nBsVFaUJEyZo8uTJqlevnho3bqzXX39d586dU0xMjHx9fRUWFqZVq1Zd9fP37t2rw4cPa+HCherevbtCQkLUq1cvzZ49W927d5dUcjrB6NGjHbVeuSUmJkqSCgoKNHXqVDVp0kS1a9dWt27dHG0A8EtAiAWACnrppZfUo0cPjR07Vunp6UpPT1dwcLDOnj2rvn37qnPnzkpOTtbq1at18uRJDR061On8t956Sw0bNtS2bds0YcIEjRs3TkOGDFHPnj21c+dO3X777Ro5cqT++9//lvr5jRo1Uo0aNfThhx+qqKjI5Zov15qenq5JkybJ399fERERkqTx48dry5YtWr58ub799lsNGTJEAwcO1MGDByt2sQCgkvDYWQAoh9GjR+vs2bP6+OOPJV0aUe3UqZPmzZvnOGb27NnatGmT1qxZ49h3/PhxBQcHKzU1VeHh4YqKilJRUZE2bdokSSoqKpKfn5/uvvtuvf3225KkjIwMBQYGasuWLY6R1Z9bsGCBHnvsMdntdnXp0kV9+vTRiBEj1KJFC0mXRmKbN2+uXbt2qVOnTk7nrlixQiNGjNC6devUq1cvHT16VC1atNDRo0cVFBTkOK5fv37q2rWrnnnmmYpePgCoMEZiAaCKfPPNN0pISJCPj49juzzSefjwYcdxl59WI12au9qgQQPdcMMNjn2Xn25zrafZxMbGKiMjQ0uXLlWPHj30wQcfqF27dlq7du01a9y1a5dGjhyp+fPnq1evXpKk3bt3q6ioSOHh4U61JyUlOdUNAGbixi4AqCJ5eXmKjo7Ws88+W6ItMDDQ8bpmzZpObTabzWnf5XUTi4uLr/l5vr6+io6OVnR0tGbPnq0BAwZo9uzZ6t+/f6nHZ2Rk6M4779QDDzyg+++/36luu92uHTt2yG63O53j4+NzzRoAoLoQYgGgEnh6epaYj3rjjTfqo48+UmhoqDw8qvfbrc1mU0REhL766qtS2/Pz8zV48GBFREToxRdfdGrr3LmzioqKlJmZqVtvvbU6ygWAMmM6AQBUgtDQUH399dc6cuSITp8+reLiYsXGxurMmTMaPny4tm/frsOHD2vNmjWKiYlx+QYsV6SkpGjw4MH68MMPtW/fPh06dEjx8fF64403NHjw4FLPeeihh3Ts2DG9/PLLOnXqlDIyMpSRkaELFy4oPDxcI0aM0H333acVK1YoLS1N27ZtU1xcnP79739XWt0AUBGMxAJAJZg6dapGjRqltm3b6vz580pLS1NoaKg2b96sxx9/XLfffrsKCgoUEhKigQMHqkaNyhtDaNq0qUJDQzVr1izHUlqX3z/yyCOlnpOUlKT09HS1bdvWaX9CQoKioqK0ZMkSzZ49W3/5y1/0448/qmHDhurevbt+97vfVVrdAFARrE4AAAAAy2E6AQAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBwPswsAAADAr19MTIxLxy1ZssSl42yGYRgVKQgAAAC4nrvvvtvx+ty5c9qwYYOio6Md+woKCrRq1SoVFxe71B8hFgAAANUqLS1NHTp0UG5urmPfqVOnFBAQoKKiIpf6YE4sAAAAqlXNmjV18eJFp335+fny8HB9pishtpwMw1BOTo4YyAYAACiboKAgGYahdevWOfb95z//UbNmzVzugxu7yik3N1d+fn46efKk6tSpY3Y5bsUwDBUUFEiSvLy8ZLPZTK7IfXH9AQDlUaNGDY0YMULR0dEaMGCAzp8/r3Xr1mnmzJku98Gc2HLKycmRn5+fBgwYoJo1a5pdDmCKDz74QN7e3maXAQCwoPPnz2vWrFlav369PD09deedd+rRRx9VjRquTRRgJBYAAADVrlatWpozZ065zyfEVtCM/t+pvo/ZVbiXgkKbnlzdVpL09MB98vLgjwnV6UJRDT2xqo3ZZQAALCYpKcml4yIjI106jhBbQTVrFMvLgzmBZvHyMAix1c619fuAXxvm4wMV07dvXxmGcc3/dgzDcHmdWEJsBV0o4psYALiDgoICDRkyRBLzwYHy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I0NLly7VfffdV+rcUx8fH02aNElTp07Vrl27VFRUpLffflsvvPCCbr/9dqdj77rrLi1btkwPP/xwiX66du2qu+++W9OmTXPa37lzZ0VEROj555/X0KFDrzovtry8vLyu+R/NxIkT+VN2FbPb7ZowYYLmzZtXoo3rD6DKXfGjzdvbW97e3ubV4uZ40IG11atXTzabTd9884327Nmjd955RyNHjpS3t7diYmI0ffp0l/opc9KbP3++CgoKNGDAAG3cuFHHjh3T6tWr1b9/fzVp0kRPP/30Vc996KGH9N133+mjjz7S559/rqysLN1///1q376903bPPfdcdUqBJD399NPasGGDUlNTHftsNpuWLFmi1NRU9erVS59++qkOHjyoffv2adGiRTp16lSJkHP27FllZGQ4befOnSvrJVHDhg3Vt2/fMp+HsrvtttvUsGFDp31cfwAArKl9+/Z69tlnlZaWpiFDhrg8ZVQqR4ht1aqVkpOT1aJFCw0dOlQtW7bUgw8+qD59+mjLli2qX7/+Vc+tX7++7rvvPs2cOVPx8fHq169fqVMG7rnnHiUnJ+vbb78ttZ/w8HCNGTOmxJ2h3bt3144dO9S6dWvFxsaqbdu26tmzp5YtW6a5c+c6Le0lXVr2KzAw0Gm72o1D18KC+9Xr59eb6w8AgDV98803evTRRxUSEqKPP/64TD/Ty7xOrCSFhITozTffvOYxiYmJpe4v7WEHP9e1a1enm8dKu5Hstdde02uvvVZif3h4+HVru1qf5dGjR49S161F1fH399ctt9yiL7/8UrfccgvXH27lymlNV87RBH7tvLy89MEHHzhew7p++uknGYahG264QUePHtWQIUP04Ycfqnv37mXqp1whFv/zyCOPmF2CW3r88cdLPPQAcAdXzgVkWiDcyeXH2MO6nnvuOX300UdKTk5Wjx49NGbMGA0bNky/+c1vytUfIRYALOpCUQ1JxWaX4TYuFlXuDcOAu3nxxRc1cuRIvf322woPD69wf4RYALCoJ1aV/uAZAPglOn78uOMm+6ysLB08eFA2m01hYWGqV69emfvj10oAAABUObvdrrS0NP32t79Vw4YN1b17d3Xr1k0NGzbUb3/7W/3www9l6s9m8ADicsnJyZGfn5+ys7NVp04ds8sB4CYMw3B6BDaqz5XXvk6dOpW+Hjnwa3fy5EndeOON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dWulpKQoOztbH374oUaNGqWkpCSCbDU4duyYJk2apLVr18rb29vsctzOoEGDHK87dOigbt26KSQkRO+//z7TaapBcXGxunTpomeeeUaS1LlzZ+3Zs0eLFi3SqFGjXO4nJibmuscYhqE333zTpf4YiS2jhg0bym636+TJk077T548qYCAAJOqAqrP+PHj9fnnnyshIaFMf/ZBxXl6eiosLEw33XST4uLi1LFjR7300ktml+UWduzYoczMTN14443y8PCQh4eHkpKS9PLLL8vDw0NFRUVml+hW6tatq/DwcB06dMjsUtxCYGBgiV+W27RpU+YpHdnZ2Y7txIkT+te//uW0LzMzU2+//bbL/TESW0aenp666aabtH79escNRcXFxVq/fr3Gjx9vbnFAFTIMQxMmTNDKlSuVmJio5s2bm12S2ysuLlZBQYHZZbiF2267Tbt373baFxMTo4iICD3++OOy2+0mVeae8vLydPjwYY0cOdLsUtxCr169Siyp+N133ykkJKRM/axYscLxOi0tTR06dHDad+rUqTINCBJiy2HKlCkaNWqUunTpoq5du2revHk6d+6cS8PkqJi8vDyn37zT0tKUkpKi+vXrq1mzZiZW9usXGxurd999V5988ol8fX0dc8D9/PxUq1Ytk6v79Zs+fboGDRqkZs2aKTc3V++++64SExO1Zs0as0tzC76+viXmf9euXVsNGjRgXng1mDp1qqKjoxUSEqITJ05oxowZstvtGj58uNmluYVHHnlEPXv21DPPPKOhQ4dq27ZtWrx4sRYvXlzuPmvWrKmLFy867cvPzy/b0mkGyuWVV14xmjVrZnh6ehpdu3Y1tm7danZJbiEhIcGQVGIbNWqU2aX96pV23SUZS5YsMbs0tzBmzBgjJCTE8PT0NBo1amTcdtttxhdffGF2WW4tMjLSmDRpktlluIVhw4YZgYGBhqenp9GkSRNj2LBhxqFDh8wuy6189tlnRvv27Q0vLy8jIiLCWLx4cYX6KyoqMjw9PY21a9c69i1atMgICwtzuQ/WiQUAAEC1GzNmjJYtW6YBAwbo/PnzWrdunWbOnKm//vWvLp1PiAUAAEC1O3/+vGbNmqX169fL09NTd955px599FHVqOHaugOEWAAAAFgON3YBAACgyiUlJbl0XGRkpEvHMRILAACAKme322UYhmw2m2Nfae+Li4td6o+HHQAAAKBapKamKisrS1lZWdq1a5d8fHx05swZZWVl6bvvvnMKtNfDdAIAAABUizp16qhOnTqSJB8fHxmGIT8/P0mX1oktywQBRmIBAABgOYRYAAAAVLnKvg2LEAsAbuDIkSOy2WxKSUkxuxQAburn811r1qyp0NDQax5zLYRYACiH0aNH66677nK8j4qK0uTJk02rJy0tTX/6058UFBQkb29vNW3aVIMHD9aBAwckScHBwUpPT1f79u1NqxGAe9uyZYsaNGjgeB8cHKzdu3c73vv7+ys9Pd3l/rixCwAs7uLFi+rfv79at26tFStWKDAwUMePH9eqVat09uxZSZeWtgkICDC3UABurWvXrtc9xt/f3+X+GIkFgAoaPXq0kpKS9NJLL8lms8lms+nIkSOSpD179mjQoEHy8fFR48aNNXLkSJ0+fdpxblRUlCZMmKDJkyerXr16aty4sV5//XWdO3dOMTEx8vX1VVhYmFatWnXVz9+7d68OHz6shQsXqnv37goJCVGvXr00e/Zsde/eXVLJ6QSjR4921HrllpiYKEkqKCjQ1KlT1aRJE9WuXVvdunVztAHALwEhFgAq6KWXXlKPHj00duxYpaenKz09XcHBwTp79qz69u2rzp07Kzk5WatXr9bJkyc1dOhQp/PfeustNWzYUNu2bdOECRM0btw4DRkyRD179tTOnTt1++23a+TIkfrvf/9b6uc3atRINWrU0IcffqiioiKXa75ca3p6uiZNmiR/f39FRERIksaPH68tW7Zo+fLl+vbbbzVkyBANHDhQBw8erNjFAoBKwhO7AKAcRo8erbNnz+rjjz+WdGlEtVOnTpo3b57jmNmzZ2vTpk1as2aNY9/x48cVHBys1NRUhYeHKyoqSkVFRdq0aZMkqaioSH5+frr77rv19ttvS5IyMjIUGBioLVu2OEZWf27BggV67LHHZLfb1aVLF/Xp00cjRoxQixYtJF0aiW3evLl27dqlTp06OZ27YsUKjRgxQuvWrVOvXr109OhRtWjRQkePHlVQUJDjuH79+qlr16565plnKnr5AKDCGIkFgCryzTffKCEhQT4+Po7t8kjn4cOHHcd16NDB8dput6tBgwa64YYbHPsaN24sScrMzLzqZ8XGxiojI0NLly5Vjx499MEHH6hdu3Zau3btNWvctWuXRo4cqfnz56tX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69y5c2aX5haaNm2qOXPmaMeOHUpOTlbfvn01ePBg7d271+zS3M727dv12muvqUOHDmaX4lbatWun9PR0x/bll1+aXZLbyMrKUq9evVSzZk2tWrVK+/bt0wsvvKB69epV2mf8/ClgLj0VzECZde3a1YiNjXW8LyoqMoKCgoy4uDgTq3I/koyVK1eaXYbbyszMNCQZSUlJZpfiturVq2f885//NLsMt5Kbm2u0atXKWLt2rREZGWlMmjTJ7JLcwowZM4yOHTuaXYbbevzxx41bbrml0vpr06aNcfr0acf7rKwspwx19uxZY9CgQdfth5HYMrpw4YJ27Nihfv36OfbVqFFD/fr105YtW0ysDKhe2dnZkqT69eubXIn7KSoq0vLly3Xu3Dn16NHD7HLcSmxsrO644w6nnwGoHgcPHlRQUJBatGihESNG6OjRo2aX5DY+/fRTdenSRUOGDJG/v786d+6s119/vdz97du3Tw0aNHC8r1u3rqZNm+Z47+fnp//85z/X7YcQW0anT59WUVGR4466yxo3bqyMjAyTqgKqV3FxsSZPnqxevXqpffv2ZpfjNnbv3i0fHx95eXnp4Ycf1sqVK9W2bVuzy3Iby5cv186dOxUXF2d2KW6nW7duevPNN7V69Wq9+uqrSktL06233uq4mx1V6/vvv9err76qVq1aac2aNRo3bpwmTpyot956y9S6eNgBgDKLjY3Vnj17mJNWzVq3bq2UlBRlZ2frww8/1KhRo5SUlESQrQbHjh3TpEmTtHbtWnl7e5tdjtsZNGiQ43WHDh3UrVs3hYSE6P3339f9999vYmXuobi4WF26dNEzzzwjSercubP27NmjRYsWadSoUabVxUhsGTVs2FB2u10nT5502n/y5EkFBASYVBVQfcaPH6/PP/9cCQkJatq0qdnluBVPT0+FhYXppptuUlxcnDp27KiXXnrJ7LLcwo4dO5SZmakbb7xRHh4e8vDwUFJSkl5++WV5eHhcdz1LVK66desqPDxchw4dMrsUtxAYGFjil+U2bdqYPqWDEFtGnp6euummm7R+/XrHvuLiYq1fv565afhVMwxD48eP18qVK7VhwwY1b97c7JLcXnFxsQoKCswuwy3cdttt2r17t1JSUhxbly5dNGLECKWkpMhut5tdolvJy8vT4cOHFRgYaHYpbqFXr14lllT87rvvFBIS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0blz5zRy5Eh5enpaXffwww8rMTFRTz31VJntTJ8+XW3btrXqNTWZTFq0aJF69+6t8PBwTZ48Wa1bt9aVK1e0fv16nTp1Smaz2aqd8+fPKzs72+qYh4eH6tSpU97HAgAAABts2bJFnTt3LnX82qQBx48fV1xcnNasWXPDdso9JrZVq1ZKT09XQECAHn30UbVs2VJPPvmkoqKitGnTJsscsWWpX7++HnvsMU2dOlWJiYnq1atXqQArXQ2x6enp+uGHH8psJygoSCNGjNClS5esjnfr1k3btm1TcHCw4uPj1aZNG3Xv3l1LlizRW2+9VWp+2ri4OPn4+Fhts2fPLu8jAQAAgI3KCrDXfPjhh2rfvn2pjseymAwWgK6QvLw8eXp6auubfmpwO0vPwnkUFpk08V9tJUmvP7Bbbi78FgLncOmKSc/+++qv/U8//bTUVJMAKu7UqVMaNWqUvvnmG73xxht64oknbnpPuYcTwNqVkhoqLLr5dcBvRWGRqczPwG/dlZL//8fLW5l3HHB2v159taioSO+++67atWunnTt3ys/Pz6Z2CLG36OU1QapZs6a9ywDs4sVVbexdAgDAwXz55ZdW+0VFRTp37pwGDRpkc4CVCLEAAACoRt9//32pY1999ZWeeOIJff7550pMTFSLFi1u2g5jYivo2pjYkydPMmcsnIphGCosLJR0df5k/lkVzohf+0DlO3v2rEaNGqVVq1bptdde0x//+McbXk+IraBrITY3N5cQCwAAUEk++eQTxcfH69y5cze8rkLLzgIA4GwMw9ClS5d06dIlm5dfB1B+/fv3v+E0XNcQYgEAsEFhYaEGDx6swYMHW4bUAKh8Fy9e1Nq1a296HSEWAAAb/HKBnV8vtgOg+hFiAQAA4HCYYgsAABuUlJSU+RlA+ZjN5koZV06IBQDABvn5+Vaf69evb8dqAMe1cuXKG57Pzc1VbGzsTdup8uEECxYskIeHh4qK/n9t1oKCAtWsWVORkZFW16akpMhkMunw4cPy9/fXrFmzSrU3depUdezYscx9f39/mUym627Dhw+XpOueX7p0aSX/9AAAAPilBx988IZbnz59bGqnyntio6KiVFBQoPT0dHXr1k2StGHDBnl7e2vLli26dOmSatWqJUlKTk5W8+bN1bJlywp919atW1VcXCxJ+u677/Twww9r//79lnlca9eubbl20aJF6tu3r9X9devWrdD3AgAAwDZXrlxRzZo1b7mdKu+JDQ4Olo+Pj1JSUizHUlJSNGDAALVo0UKbN2+2Oh4VFVXh72rYsKG8vb3l7e1t+WeeRo0aWY55enparq1bt67l+LXtWpgGAABA1WjSpInGjx+vnTt3lnnebDbL39//pu1Uy+wEUVFRSk5OtuwnJycrMjJSERERluMXL17Uli1bbinEAgAA4H/bpEmTlJaWptDQUHXt2lXvvvuu1ZhzLy8v/fjjjzdtp9pC7MaNG1VUVKT8/Hxt375dERER6tGjh6WHdtOmTSosLLQKsc8//7zc3d2tthkzZlRKTdHR0aXaPnr06HWvLywsVF5entUGAACA8nnmmWf03XffKTU1Vdu2bdO8efPk7e2t2NhYpaam2txOtYTYyMhIXbhwQVu3btWGDRsUFBSkhg0bKiIiwjIuNiUlRQEBAWrevLnlvmeffVYZGRlW21NPPVUpNb311lul2vb19b3u9QkJCfL09LRszZo1q5Q6AAAAnFG9evVkMpm0Y8cObdmyRd7e3ho2bJiCgoKUkJBw0/urJcQGBgaqadOmSk5OVnJysiIiIiRJvr6+atasmb777jslJyerZ8+eVvc1aNBAgYGBVltlTWni7e1dqm0Xl+u/5zZ58mTl5uZatmPHjlVKHQAAAM6uXbt2eu2115SZmanBgwfrL3/5y03vqbZ5YqOiopSSkqJz587p2WeftRzv0aOHkpKSlJaWptGjR1dXOeXm5uYmNzc3e5cBAADwm7Njxw599NFHWrJkiTw9PfXaa6/d9J5qDbHx8fG6cuWKpSdWkiIiIjRmzBhdvny5Wl/qOn/+vLKzs62OeXh4qE6dOtVWAwAAgLM6c+aMDMPQHXfcoaNHj2rw4MFavny5ZUrWm6nWEHvx4kWFhISocePGluMRERHKz8+3TMVVXeLi4kodS0hI0KRJk6qtBgAAAGfzt7/9TStWrFB6errCwsI0YsQIDRkyRLfddlu52jEZlbF4rRPKy8uTp6encnNzLYspAAB+u86ePWtZCnPx4sUsOwtUkI+Pjx577DGNHDlSQUFBFW6n2npiAQBwZDVq1CjzM4DyOX78uMxm8y23Q4gFAABAtfnoo49suu7av3xcDyEWAAAA1WbEiBGqU6fODac2NQyDEAsAQGWoVatWmZ8BlN+GDRvUoUOHW2qDEFtB196HY/lZAHAOhmEoMTFR0tWlyC9fvmznigD78PDwkMlksncZhNiKOnPmjCSx/CwAAHAqOTk5atiwob3LIMRW1LWpVY4ePSpPT087V+N88vLy1KxZMx07dowpzuyA529fPH/74dnbF8/fvq49f1dXV3uXIokQW2HXplfx9PTkfyQ7uv3223n+dsTzty+ev/3w7O2L529ftzqUoGXLlnJzc7vlOgixAAAAqDYHDhyolHYIsQAAAKg2cXFxNl23aNGiG55nyZEKcnNz05QpUyqlOxzlx/O3L56/ffH87Ydnb188f/uqrOf/4YcfKicnR7m5ucrNzdWJEyf00UcfWfZzcnK0ePHim7ZjMq7NFQUAAABUMbPZrBMnTqhx48aSpMzMTLVv3175+fmSpFOnTsnb21vFxcU3bIeeWAAAANjNr/tTDcModawshFgAAAA4HEIsAAAA7OrX03bZMo0XIRYAAADVJjg4WC4u/z9BVv369fXCCy9Y9t3c3NSnT5+btkOIraC5c+fK399ftWrVUteuXZWWlmbvkpzC+vXr1b9/f/n6+spkMumLL76wd0lOIyEhQXfddZc8PDzUqFEjDRw4UPv377d3WU5j/vz5at++vWWS97CwMCUlJdm7LKc1c+ZMmUwmjR8/3t6lOIWpU6fKZDJZbSEhIfYuy6n8/PPPGjp0qLy8vFS7dm3dcccdSk9Pr1Bbe/bskZeXl2W/bt26mjRpkmXf09NT//nPf27aDiG2ApYtW6ZnnnlGU6ZM0ffff68OHTqoT58+ysnJsXdpv3kXLlxQhw4dNHfuXHuX4nRSU1MVHx+vzZs3a82aNbpy5Yruu+8+Xbhwwd6lOYWmTZtq5syZ2rZtm9LT09WzZ08NGDBAu3fvtndpTmfr1q1699131b59e3uX4lTatm2rrKwsy/btt9/auySnce7cOYWHh6tmzZpKSkrSnj179MYbb6hevXp2rYsptiqga9euuuuuuzRnzhxJUklJiZo1a6axY8da/U0CVctkMmnlypUaOHCgvUtxSqdOnVKjRo2UmpqqHj162Lscp1S/fn397W9/08iRI+1ditMoKChQp06dNG/ePE2bNk0dO3bUrFmz7F3Wb97UqVP1xRdfKCMjw96lOKVJkyZp48aN2rBhg71LsUJPbDldvnxZ27ZtU69evSzHatSooV69emnTpk12rAyoXrm5uZKuBilUr+LiYi1dulQXLlxQWFiYvctxKvHx8br//vut/gxA9Th48KB8fX0VEBCgmJgYHT161N4lOY1//vOf6ty5swYPHqxGjRopNDRU7733nr3LIsSW1+nTp1VcXGyZoPeaxo0bKzs7205VAdWrpKRE48ePV3h4uNq1a2fvcpzGzp075e7uLjc3Nz311FNauXKl2rRpY++ynMbSpUv1/fffKyEhwd6lOJ2uXbvqgw8+0KpVqzR//nxlZmbqnnvusUyOj6r1448/av78+WrVqpVWr16t0aNH6+mnn7ZpVa2q5HLzSwDAWnx8vHbt2sWYtGoWHBysjIwM5ebmavny5YqNjVVqaipBthocO3ZM48aN05o1a1SrVi17l+N0+vXrZ/ncvn17de3aVX5+fvr0008ZTlMNSkpK1LlzZ82YMUOSFBoaql27dmnBggWKjY21W130xJZTgwYNZDabdfLkSavjJ0+elLe3t52qAqrPmDFj9K9//UvJyclq2rSpvctxKq6urgoMDNSdd96phIQEdejQQW+//ba9y3IK27ZtU05Ojjp16iQXFxe5uLgoNTVV77zzjlxcXG66PCYqV926dRUUFKRDhw7ZuxSn4OPjU+ovy61bt7b7kA5CbDm5urrqzjvv1Nq1ay3HSkpKtHbtWsam4TfNMAyNGTNGK1eu1Lp169SiRQt7l+T0SkpKVFhYaO8ynMK9996rnTt3KiMjw7J17txZMTExysjIkNlstneJTqWgoECHDx+Wj4+PvUtxCuHh4aWmVDxw4ID8/PzsVNFVDCeogGeeeUaxsbHq3LmzunTpolmzZunChQuKi4uzd2m/eQUFBVZ/887MzFRGRobq16+v5s2b27Gy3774+Hh98skn+vLLL+Xh4WEZA+7p6anatWvbubrfvsmTJ6tfv35q3ry58vPz9cknnyglJUWrV6+2d2lOwcPDo9T47zp16sjLy4tx4dVg4sSJ6t+/v/z8/HTixAlNmTJFZrNZ0dHR9i7NKUyYMEHdu3fXjBkz9OijjyotLU0LFy7UwoUL7VuYgQqZPXu20bx5c8PV1dXo0qWLsXnzZnuX5BSSk5MNSaW22NhYe5f2m1fWc5dkLFq0yN6lOYURI0YYfn5+hqurq9GwYUPj3nvvNb7++mt7l+XUIiIijHHjxtm7DKcwZMgQw8fHx3B1dTWaNGliDBkyxDh06JC9y3IqX331ldGuXTvDzc3NCAkJMRYuXGjvkgzmiQUAAIDDYUwsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAwyHEAgAAwOEQYgEAAOBwCLEAAABwOIRYAHACR44ckclkUkZGhr1LAYBKQYgFgAoYPny4Bg4caNmPjIzU+PHj7VZPZmam/vCHP8jX11e1atVS06ZNNWDAAO3bt0+S1KxZM2VlZbFEKoDfDBd7FwAAuDVXrlxR7969FRwcrM8//1w+Pj46fvy4kpKSdP78eUmS2WyWt7e3fQsFgEpETywA3KLhw4crNTVVb7/9tkwmk0wmk44cOSJJ2rVrl/r16yd3d3c1btxYw4YN0+nTpy33RkZGauzYsRo/frzq1aunxo0b67333tOFCxcUFxcnDw8PBQYGKikp6brfv3v3bh0+fFjz5s1Tt27d5Ofnp/DwcE2bNk3dunWTVHo4wfDhwy21/nJLSUmRJBUWFmrixIlq0qSJ6tSpo65du1rOAcD/AkIsANyit99+W2FhYXriiSeUlZWlrKwsNWvWTOfPn1fPnj0VGhqq9PR0rVq1SidPntSjjz5qdf/ixYvVoEEDpaWlaezYsRo9erQGDx6s7t276/vvv9d9992nYcOG6b///W+Z39+wYUPVqFFDy5cvV3Fxsc01X6s1KytL48aNU6NGjRQSEiJJGjNmjDZt2qSlS5fqhx9+0ODBg9W3b18dPHjw1h4WAFQSk2EYhr2LAABHM3z4cJ0/f15ffPGFpKs9qh07dtSsWbMs10ybNk0bNmzQ6tWrLceOHz+uZs2aaf/+/QoKClJkZKSKi4u1YcMGSVJxcbE8PT01aNAgffjhh5Kk7Oxs+fj4aNOmTZae1V+bO3eunnvuOZnNZnXu3FlRUVGKiYlRQECApKs9sS1atND27dvVsWNHq3s///xzxcTE6JtvvlF4eLiOHj2qgIAAHT16VL6+vpbrevXqpS5dumjGjBm3+vgA4JbREwsAVWTHjh1KTk6Wu7u7ZbvW03n48GHLde3bt7d8NpvN8vLy0h133GE51rhxY0lSTk7Odb8rPj5e2dnZ+vjjjxUWFqbPPvtMbdu21Zo1a25Y4/bt2zVs2DDNmTNH4eHhkqSdO3equLhYQUFBVrWnpqZa1Q0A9sSLXQBQRQoKCtS/f3+99tprpc75+PhYPtesWdPqnMlksjpmMpkkSSUlJTf8Pg8PD/Xv31/9+/fXtGnT1KdPH02bNk29e/cu8/rs7Gw9+OCDevzxxzVy5Eirus1ms7Zt2yaz2Wx1j7u7+w1rAIDqQogFgErg6upaajxqp06dtGLFCvn7+8vFpXp/uzWZTAoJCdF3331X5vlLly5pwIABCgkJ0Ztvvml1LjQ0VMXFxcrJydE999xTHeUCQLkxnAAAKoG/v7+2bNmiI0eO6PTp0yopKVF8fLzOnj2r6Ohobd26VYcPH9bq1asVFxdn8wtYtsjIyNCAAQO0fPly7dmzR4cOHVJiYqLef/99DRgwoMx7Ro0apWPHjumdd97RqVOnlJ2drezsbF2+fFlBQUGKiYnRY489ps8//1yZmZlKS0tTQkKC/v3vf1da3QBwK+iJBYBKMHHiRMXGxqpNmza6ePGiMjMz5e/vr40bN+r555/Xfffdp8LCQvn5+alv376qUaPy+hCaNm0qf39/vfzyy5aptK7tT5gwocx7UlNTlZWVpTZt2lgdT05OVmRkpBYtWqRp06bpT3/6k37++Wc1aNBA3bp10wMPPFBpdQPArWB2AgAAADgchhMAAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAwyHEAgAAwOEQYgEAAOBwCLEAAABwOIRYAAAAOBxCLAAAABwOIRYAAAAOhxALAAAAh0OIBQAAgMMhxAIAAMDhEGIBAADgcAixAAAAcDiEWAAAADgcQiwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAwyHEAgAAwOEQYgEAAOBwCLEAAABwOIRYAAAAOBxCLAAAABwOIRYAAAAOhxALAAAAh0OIBQAAgMMhxAIAAMDhEGIBAADgcAixAAAAcDiEWAAAADgcQiwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAwyHEAgAAwOEQYgEAAOBwCLEAAABwOIRYAAAAOBxCLAAAABwOIRYAAAAOhxALAAAAh0OIBQAAgMMhxAIAAMDhEGIBAADgcAixAAAAcDiEWAAAADgcQiwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAw3GxdwEAAAD47YuLi7PpukWLFtl0nckwDONWCgIAAABuxmw2q2/fvnJzc5MkXbhwQevWrVP//v0lSYWFhUpKSlJJSYlN7RFiAQAAUOXMZrNOnDihxo0bS5IyMzPVvn175efnS5JOnTqlxo0b2xxiGRMLAACAavfrftTy9qsSYgEAAFDlPDw8dO7cOcv+uXPndOHCBRUUFEiSsrOzVb9+fZvbI8QCAACgyoWEhGj27NkqKSlRSUmJ5s2bJ19fX02cOFEbN27Uiy++qLvuusvm9hgTCwAAgCr3xRdf6JFHHlGdOnVUUlKiOnXqaNWqVfr973+vgwcPqlmzZvrqq690xx132NQeIRYAAADVYv369frqq69Uu3ZtPfHEE2rWrJkk6cyZM/Ly8ipXW4RYAAAAOBzGxAIAAMDhsGIXAAAAqpzZbLZpGi1b54klxAIAAKBavPXWW2rRokWltMWY2AoyDEP5+fny8PCQyWSydzkAAAD/08xms77//nt16NChUtpjTGwF5efny9PT07JUGgDgt80wDF26dEmXLl0q98pCACofIRYAABsUFhZq8ODBGjx4sAoLC+1dDuD0CLEAANjg0qVLZX4GYB+82AUAAIAqt2HDBrVq1UqSdO7cOeXl5ZV5nZ+fn03tEWIBAABQ5cLCwvTaa6/pzTff1OnTp0udN5lMMgyDKbYAAKhMv/yD1dY/ZAH8v3nz5unNN9/UCy+8oDvvvFOenp631B4hFgAAG/xyNpr8/HzVr1/fjtUAjue9997TrFmz9Ic//KFS2qvQi13Hjh3TiBEj5OvrK1dXV/n5+WncuHE6c+aM5ZrIyEiZTCaZTCbVqlVLQUFBSkhIKHNakk2bNslsNuv+++8vde7IkSMymUxq1KhRqemsOnbsqKlTp1odO3TokEaMGKHmzZvLzc1NTZo00b333quPP/5YRUVFluuu1fbrbenSpRV5JAAAALiBw4cPq1u3bpXWXrlD7I8//qjOnTvr4MGDWrJkiQ4dOqQFCxZo7dq1CgsL09mzZy3XPvHEE8rKytL+/fs1efJkvfTSS1qwYEGpNhMTEzV27FitX79eJ06cKPN78/Pz9frrr9+wtrS0NHXq1El79+7V3LlztWvXLqWkpOjxxx/X/PnztXv3bqvrFy1apKysLKtt4MCB5X0kAAAAuIn69euXORa2osodYuPj4+Xq6qqvv/5aERERat68ufr166dvvvlGP//8s1588UXLtbfddpu8vb3l5+enuLg4tW/fXmvWrLFqr6CgQMuWLdPo0aN1//3364MPPijze8eOHas333xTOTk5ZZ43DEPDhw9XUFCQNm7cqP79+6tVq1Zq1aqVoqOj9e2336p9+/ZW99StW1fe3t5WW61atcr7SAAAAHAT4eHhevXVV687K0F5lSvEnj17VqtXr9Yf//hH1a5d2+qct7e3YmJitGzZslJDBgzD0IYNG7Rv3z65urpanfv0008VEhKi4OBgDR06VO+//36ZQw6io6MVGBioV155pczaMjIytHfvXk2cOFE1apT9Y93K8rCFhYXKy8uz2gAAAGCbmTNnau/evWrSpIlCQ0MVFRVV5marcoXYgwcPyjAMtW7duszzrVu31rlz53Tq1ClJV99Cc3d3l5ubm3r06KGSkhI9/fTTVvckJiZq6NChkqS+ffsqNzdXqamppdo2mUyaOXOmFi5cqMOHD5c6f+DAAUlScHCw5VhOTo7c3d0t27x586zuiY6Otjrv7u6uo0ePlvmzJSQkyNPT07I1a9bseo8JAAAAv9K8eXPt3r1bCxcu1MCBAxUaGlrmZqsKzU5g65rRMTExevHFF3Xu3DlNmTJF3bt3V/fu3S3n9+/fr7S0NK1cufJqMS4uGjJkiBITExUZGVmqvT59+ujuu+/WX/7yF33yySc3/X4vLy9lZGRIuvqi2eXLl63Ov/XWW+rVq5fVMV9f3zLbmjx5sp555hnLfl5eHkEWAACgHNzc3BQdHV0pbZUrxAYGBspkMmnv3r166KGHSp3fu3ev6tWrp4YNG0qSPD09FRgYKOnqsIHAwEB169bNEhwTExNVVFRkFRwNw5Cbm5vmzJlT5vxhM2fOVFhYmJ599lmr49dWgNi/f78lxZvNZsv3u7iU/lG9vb0t52/Gzc1Nbm5uNl0LAACAqlWu4QReXl7q3bu35s2bp4sXL1qdy87O1scff6whQ4aUOfbU3d1d48aN08SJE2UYhoqKivThhx/qjTfeUEZGhmXbsWOHfH19tWTJkjJr6NKliwYNGqRJkyZZHQ8NDVVISIhef/11JqEGAAD4H9OiRYubbv7+/ja3V+7hBHPmzFH37t3Vp08fTZs2TS1atNDu3bv17LPPqkmTJpo+ffp17x01apReffVVrVixQi4uLjp37pxGjhxZqsf14YcfVmJiop566qky25k+fbratm1r1btqMpm0aNEi9e7dW+Hh4Zo8ebJat26tK1euaP369Tp16pTMZrNVO+fPn1d2drbVMQ8PD9WpU6e8jwUAAAA3cPToUb3yyivy8PCQJJ0+fVp/+9vf9Nprr0m6OmPVn//8Z9sbNCrgyJEjRmxsrNG4cWOjZs2aRrNmzYyxY8cap0+ftlwTERFhjBs3rtS9o0aNMtq2bWs88MADxu9+97sy29+yZYshydixY4eRmZlpSDK2b99udc2TTz5pSDKmTJlidXz//v1GbGys0bRpU8PFxcXw9PQ0evToYbz77rvGlStXLNdJKnNLSEiw6Rnk5uYakozc3FybrgcAOLYjR44YDzzwgPHAAw8YR44csXc5gMOpUaOGkZ2dbdk/fPiw4e7ubtk/efKkYTKZbG7PZBg2vqUFK3l5efL09FRubq5uv/12e5cDAKhiZ8+eVWxsrCRp8eLFLDsLlJPZbNaJEyfUuHFjSVcX0OrQoYNlRdacnBx5e3vbPCy0QsvOAgDgbH45B/n15iMHUH34vxAAAAB28evJAMqzMBUhFgAAG/xyWXKWKAfKb9SoUbrtttss+02aNFFSUpJl38PDQwkJCTa3x5jYCmJMLAA4F8MwVFhYKOnq3OG3spQ5gFtXoRW7AABwNiaTiR5Y4H8IwwkAAADgcAixAAAAcDiEWAAAANidYRj66aefbL6eEAsAAAC7O3XqlFq0aGHz9YRYAAAA/E9gnlgAAAA4nPLM/FrlU2wtWLBAzz77rM6dOycXl6tfV1BQoHr16ik8PFwpKSmWa1NSUhQVFaVDhw7p3nvv1fjx4zV+/Hir9qZOnaovvvhCGRkZpfb9/f1vOJYiNjZWH3zwwXVT/pIlS/T73//+ln5eAAAAlPbyyy/f8HxBQUG52qvyEBsVFaWCggKlp6erW7dukqQNGzbI29tbW7Zs0aVLlyzz7iUnJ6t58+Zq2bJlhb5r69atKi4uliR99913evjhh7V//37LYgS1a9e2XLto0SL17dvX6v66detW6HsBAABwY19++eUNzxcVFZWrvSoPscHBwfLx8VFKSoolxKakpGjAgAFat26dNm/erMjISMvxqKioCn9Xw4YNLZ/r168vSWrUqFGZ4bRu3bry9vau8HcBAADAdt9///0Nz586dUqNGze2ub1qGRMbFRWl5ORky35ycrIiIyMVERFhOX7x4kVt2bLllkJsVSosLFReXp7VBgAAgMpRnvGwUjWG2I0bN6qoqEj5+fnavn27IiIi1KNHD8uY2E2bNqmwsNAqxD7//PNyd3e32mbMmFEpNUVHR5dq++jRo9e9PiEhQZ6enpatWbNmlVIHAAAArirP7ARVPpxAkiIjI3XhwgVt3bpV586dU1BQkBo2bKiIiAjFxcXp0qVLSklJUUBAgJo3b26579lnn9Xw4cOt2nrnnXe0fv36W67prbfeUq9evayO+fr6Xvf6yZMn65lnnrHs5+XlEWQBAAAqiaen501f/vqlagmxgYGBatq0qZKTk3Xu3DlFRERIuhoamzVrpu+++07Jycnq2bOn1X0NGjRQYGCg1bFrY11vlbe3d6m2b8TNzU1ubm6V8t0AAAD4f6dPn9ZTTz2lVatW6c9//rNN91TbPLFRUVFKSUlRSkqK5UUuSerRo4eSkpKUlpb2PzseFgAAAFXjyy+/VLt27XTy5En98MMPNt9XLT2x0tUQGx8frytXrlh6YiUpIiJCY8aM0eXLl6s1xJ4/f17Z2dlWxzw8PFSnTp1qqwEAAMBZ/Hou/6KiIr366qv67LPP9Oqrr1oN27RFtYbYixcvKiQkxGr6hIiICOXn51um4qoucXFxpY4lJCRo0qRJ1VYDAACAswgICJBhGDKZTJb/mkwmrVq1qtR7SrYwGeWdzwCSrr7Y5enpqdzcXMtiCgAAACjbr4cKFBUVafr06UpOTtabb75Z6mX+myHEVhAhFgAA4NZ99NFHevrppxUWFqb33nvvhrNF/VK1vdgFAAAA/NrQoUO1a9cuFRUVqV27djbfV21jYgEAAICy+Pr6avXq1Zo3b57N9zCcoIIYTgAAAGA/9MRW0LXsn5eXZ+dKAAAAqo+Hh0e5loe95trsBDdiGIaOHDliU3uE2Ao6c+aMJLH0LAAAcCo5OTlq2LBhue8bP3685fPp06f1t7/9Ta+99prlWEFBgc2rdUkMJ6iw8+fPq169ejp69Kg8PT3tXY7TycvLU7NmzXTs2DGGc9gBz9++eP72w7O3L56/fV17/ufPn7/l7PPjjz+qQ4cOys/PtxzLycmRt7e3SkpKbGqDntgKqlHj6sQOnp6e/I9kR7fffjvP3454/vbF87cfnr198fztqyJDCX7N3d1dly5d0uXLl+Xq6irpaki+7bbbbG6DKbYAAABQrRo1aiQPDw+98cYbkqTi4mK9/vrrCg4OtrkNemIBAABQ7V544QU9//zz+utf/6orV67o4sWLWrZsmc33E2IryM3NTVOmTJGbm5u9S3FKPH/74vnbF8/ffnj29sXzt6/Kfv4TJ05Uu3bttHbtWrm6uqp///7q1q2bzffzYhcAAAAcDj2xAAAAqHIvv/yyTddNmTLFpuvoiQUAAECVM5vNatu2rVxcrvahXr58Wfv27VP79u0lSUVFRdq1a5fNU2wRYgEAAFDlzGazTpw4ocaNG0uSMjMz1b59e8tcsadOnZK3t7eKi4ttao8ptgAAAFDtft2PahjGTZel/SVCbAXNnTtX/v7+qlWrlrp27aq0tDR7l+QU1q9fr/79+8vX11cmk0lffPGFvUtyGgkJCbrrrrvk4eGhRo0aaeDAgdq/f7+9y3Ia8+fPV/v27S2TvIeFhSkpKcneZTmtmTNnymQyWS2jiaozdepUmUwmqy0kJMTeZTmVn3/+WUOHDpWXl5dq166tO+64Q+np6XatiRBbAcuWLdMzzzyjKVOm6Pvvv1eHDh3Up08f5eTk2Lu037wLFy6oQ4cOmjt3rr1LcTqpqamKj4/X5s2btWbNGl25ckX33XefLly4YO/SnELTpk01c+ZMbdu2Tenp6erZs6cGDBig3bt327s0p7N161a9++67lnF8qB5t27ZVVlaWZfv222/tXZLTOHfunMLDw1WzZk0lJSVpz549euONN1SvXr1ytVNWL+strf5loNy6dOlixMfHW/aLi4sNX19fIyEhwY5VOR9JxsqVK+1dhtPKyckxJBmpqan2LsVp1atXz/j73/9u7zKcSn5+vtGqVStjzZo1RkREhDFu3Dh7l+QUpkyZYnTo0MHeZTit559/3rj77rtvuZ3atWsbJ0+etOyfOnXKGD16tGX/zJkzRuvWrW1uj57Ycrp8+bK2bdumXr16WY7VqFFDvXr10qZNm+xYGVC9cnNzJUn169e3cyXOp7i4WEuXLtWFCxcUFhZm73KcSnx8vO6//36rPwNQPQ4ePChfX18FBAQoJiZGR48etXdJTuOf//ynOnfurMGDB6tRo0YKDQ3Ve++9V+52/vvf/6pRo0aW/QYNGmjevHmW/fr162vPnj02t0eILafTp0+ruLjY8mbdNY0bN1Z2dradqgKqV0lJicaPH6/w8HC1a9fO3uU4jZ07d8rd3V1ubm566qmntHLlSrVp08beZTmNpUuX6vvvv1dCQoK9S3E6Xbt21QcffKBVq1Zp/vz5yszM1D333GN5qx1V68cff9T8+fPVqlUrrV69WqNHj9bTTz+txYsX27UuFjsAUG7x8fHatWsXY9KqWXBwsDIyMpSbm6vly5crNjZWqampBNlqcOzYMY0bN05r1qxRrVq17F2O0+nXr5/lc/v27dW1a1f5+fnp008/1ciRI+1YmXMoKSlR586dNWPGDElSaGiodu3apQULFig2NtZuddETW04NGjSQ2WzWyZMnrY6fPHlS3t7edqoKqD5jxozRv/71LyUnJ6tp06b2LsepuLq6KjAwUHfeeacSEhLUoUMHvf322/Yuyyls27ZNOTk56tSpk1xcXOTi4qLU1FS98847cnFxsXleS1SOunXrKigoSIcOHbJ3KU7Bx8en1F+WW7dubfchHYTYcnJ1ddWdd96ptWvXWo6VlJRo7dq1jE3Db5phGBozZoxWrlypdevWqUWLFvYuyemVlJSosLDQ3mU4hXvvvVc7d+5URkaGZevcubNiYmKUkZEhs9ls7xKdSkFBgQ4fPiwfHx97l+IUwsPDS02peODAAfn5+dmpoqsYTlABzzzzjGJjY9W5c2d16dJFs2bN0oULFxQXF2fv0n7zCgoKrP7mnZmZqYyMDNWvX1/Nmze3Y2W/ffHx8frkk0/05ZdfysPDwzIG3NPTU7Vr17Zzdb99kydPVr9+/dS8eXPl5+frk08+UUpKilavXm3v0pyCh4dHqfHfderUkZeXF+PCq8HEiRPVv39/+fn56cSJE5oyZYrMZrOio6PtXZpTmDBhgrp3764ZM2bo0UcfVVpamhYuXKiFCxfat7Bbni/BSc2ePdto3ry54erqanTp0sXYvHmzvUtyCsnJyYakUltsbKy9S/vNK+u5SzIWLVpk79KcwogRIww/Pz/D1dXVaNiwoXHvvfcaX3/9tb3LcmpMsVV9hgwZYvj4+Biurq5GkyZNjCFDhhiHDh2yd1lO5auvvjLatWtnuLm5GSEhIcbChQvtXZJhMoxyrO8FAAAA/A9gTCwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAcAJHjhyRyWRSRkaGvUsBgEpBiAWAChg+fLgGDhxo2Y+MjNT48ePtVk9mZqb+8Ic/yNfXV7Vq1VLTpk01YMAA7du3T5LUrFkzZWVlsUQqgN8MF3sXAAC4NVeuXFHv3r0VHByszz//XD4+Pjp+/LiSkpJ0/vx5SZLZbJa3t7d9CwWASkRPLADcouHDhys1NVVvv/22TCaTTCaTjhw5IknatWuX+vXrJ3d3dzVu3FjDhg3T6dOnLfdGRkZq7NixGj9+vOrVq6fGjRvrvffe04ULFxQXFycPDw8FBgYqKSnput+/e/duHT58WPPmzVO3bt3k5+en8PBwTZs2Td26dZNUejjB8OHDLbX+cktJSZEkFRYWauLEiWrSpInq1Kmjrl27Ws4BwP8CQiwA3KK3335bYWFheuKJJ5SVlaWsrCw1a9ZM58+fV8+ePRUaGqr09HStWrVKJ0+e1KOPPmp1/+LFi9WgQQOlpaVp7NixGj16tAYPHqzu3bvr+++/13333adhw4bpv//9b5nf37BhQ9WoUUPLly9XcXGxzTVfqzUrK0vjxo1To0aNFBISIkkaM2aMNm3apKVLl+qHH37Q4MGD1bdvXx08ePDWHhYAVBKTYRiGvYsAAEczfPhwnT9/Xl988YWkqz2qHTt21KxZsyzXTJs2TRs2bNDq1astx44fP65mzZpp//79CgoKUmRkpIqLi7VhwwZJUnFxsTw9PTVo0CB9+OGHkqTs7Gz5+Pho06ZNlp7VX5s7d66ee+45mc1mde7cWVFRUYqJiVFAQICkqz2xLVq00Pbt29WxY0erez///HPFxMTom2++UXh4uI4ePaqAgAAdPXpUvr6+lut69eqlLl26aMaMGbf6+ADgltETCwBVZMeOHUpOTpa7u7tlu9bTefjwYct17du3t3w2m83y8vLSHXfcYTnWuHFjSVJOTs51vys+Pl7Z2dn6+OOPFRYWps8++0xt27bVmjVrbljj9u3bNWzYMM2ZM0fh4eGSpJ07d6q4uFhBQUFWtaemplrVDQD2xItdAFBFCgoK1L9/f7322mulzvn4+Fg+16xZ0+qcyWSyOmYymSRJJSUlN/w+Dw8P9e/fX/3799e0adPUp08fTZs2Tb179y7z+uzsbD344IN6/PHHNXLkSKu6zWaztm3bJrPZbHWPu7v7DWsAgOpCiAWASuDq6lpqPGqnTp20YsUK+fv7y8Wlen+7NZlMCgkJ0XfffVfm+UuXLmnAgAEKCQnRm2++aXUuNDRUxcXFysnJ0T333FMd5QJAuTGcAAAqgb+/v7Zs2aIjR47o9OnTKikpUXx8vM6ePavo6Ght3bpVhw8f1urVqxUXF2fzC1i2yMjI0IABA7R8+XLt2bNHhw4dUmJiot5//30NGDCgzHtGjRqlY8eO6Z133tGpU6eUnZ2t7OxsXb58WUFBQYqJidFjjz2mzz//XJmZmUpLS1NCQoL+/e9/V1rdAHAr6IkFgEowceJExcbGqk2bNrp48aIyMzPl7++vjRs36vnnn9d9992nwsJC+fn5qW/fvqpRo/L6EJo2bSp/f3+9/PLLlqm0ru1PmDChzHtSU1OVlZWlNm3aWB1PTk5WZGSkFi1apGnTpulPf/qTfv75ZzVo0EDdunXTAw88UGl1A8CtYHYCAAAAOByGEwAAAMDhEGIBAADgcAixAAAAcDiEWAAAADgcQiwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAwyHEAgAAwOEQYgEAAOBwCLEAAABwOIRYAAAAOBxCLAAAABwOIRYAAAAOhxALAAAAh0OIBQAAgMMhxAIAAMDhEGIBAADgcAixAAAAcDiEWAAAADgcQiwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAwyHEAgAAwOEQYgEAAOBwCLEAAABwOIRYAAAAOBxCLAAAABwOIRYAAAAOhxALAAAAh0OIBQAAgMMhxAIAAMDhEGIBAADgcAixAAAAcDiEWAAAADgcQiwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACH42LvAgAAAPDbFxcXZ9N1ixYtsuk6QiwAAACqXG5urtX+zz//rB07duh3v/tdhdojxAIAAKDKff7555bPx44dU2RkpK5cuaKgoCDNnDmz3O0xJhYAAADV5vjx44qMjFSTJk20du1azZ8/X3/961/L3Q49sQAAAKgWJ06cUFRUlHx9fZWUlKQ6deroyy+/1P3336/69evr8ccft7ktQiwAAACqXFZWliIjI9W4cWOtWrVKderUkSRFRkZqyZIlGjJkiOrWratHHnnEpvZMhmEYVVkwAAAAEBISIi8vL61evVru7u6lzn/44YcaNWqULl68aFN79MQCAACgynl5eWnVqlVlBlhJeuyxx3TmzBmb26MnFgAAAFWuoKDgugG2IgixAAAAqHK2LHZgGIY++OADm9ojxAIAAKDKDRo06LrniouL9c033+jixYsqKSmxqT3GxAIAAKDK/XKxg1/68ssv9cILL6hWrVqaMmWKze2x2AEAAACq3YYNG9S9e3dFR0frgQce0I8//qjnnnvO5vsJsQAAAKg2u3btUv/+/XXvvfeqbdu2OnTokF577TV5enqWqx1CLAAAAKrcTz/9pNjYWHXs2FEuLi7auXOn3nvvPfn6+laoPV7sAgAAQJWrVauWatSooaefflphYWHXvW7AgAE2tUeIBQAAQJVzcXHRzWKnYRg2z05AiAUAAIDDYUwsAAAAHA7zxAIAAKDa7NmzR/v371deXl6Z52NjY21qh+EEAAAAqHJ5eXl69NFHtWbNGrm4uKhOnTqlrjEMQ+fOnbOpPXpiAQAAUOWmTJminJwcbdu2TR07drzl9uiJBQAAQJULCgrSggUL1LNnz0ppjxe7AAAAUOVOnDihgICASmuPEAsAAIAq17RpU+3bt6/S2mNMLAAAAKrcoEGDNGHCBLm6uurOO++Up6fnLbXHmFgAAABUuf/+97964okntHTp0huu3MWKXQAAAPifk5WVpQMHDig3N7fM8w8++KBN7RBiK8gwDOXn58vDw0Mmk8ne5QAAADgVxsRWUH5+vjw9PZWbm6vbb7/d3uUAAAA4hLS0NH3yySc6cOCATCaTAgMDFRMToy5dupSrHWYnAADABoZh6NKlS7p06dINx/MBuL5JkyYpLCxMixYtUlZWlk6cOKEPPvhA3bp104svvliutgixAADYoLCwUIMHD9bgwYNVWFho73IAh7N8+XK9+eabmjVrls6ePavt27dr+/btOnv2rN555x399a9/1YoVK2xujxAL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "palette = {\n", + " 'ORANGE': 'orange',\n", + " 'WHITE': 'wheat',\n", + "}\n", + "# We need the encoded Item Size column to use it as the x-axis values in the plot\n", + "pumpkins['Item Size'] = encoded_pumpkins['ord__Item Size']\n", + "\n", + "g = sns.catplot(\n", + " data=pumpkins,\n", + " x=\"Item Size\", y=\"Color\", row='Variety',\n", + " kind=\"box\", orient=\"h\",\n", + " sharex=False, margin_titles=True,\n", + " height=1.8, aspect=4, palette=palette,\n", + ")\n", + "# Defining axis labels \n", + "g.set(xlabel=\"Item Size\", ylabel=\"\").set(xlim=(0,6))\n", + "g.set_titles(row_template=\"{row_name}\")\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ನಾವು ಈಗ ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಂಬಂಧದ ಮೇಲೆ ಗಮನಹರಿಸೋಣ: ಐಟಂ ಗಾತ್ರ ಮತ್ತು ಬಣ್ಣ!\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings(action='ignore', category=UserWarning, module='seaborn')" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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CqaZPpI33vSZxDsgvoKetmSb8564Msty4KSbTd+ceqvpq4mOtO+mlXfot8hxzVc4Bds/wvWak12GJ38sntwKPMEaV8zy5OArPgXL8eMrnu7uY5aDr3h6T+wUrH53nj3BGjy5lXjyx+JkuxMk2z/C1MUXxFs4BdcwZvvwl8zEth18JTP73VW18BZMwgkcTn+WTKLJtAN5sBA4EP/3ZTHY+yo0vw/BE6Fotvv97Tuhfo1Z4lm+xD3Yh9th99PmmX/F2e5lubEYND5vJoYWznIvywWz1HXvBjOAlJ4RX2IMZqnr7lVmOXP5Oe5ludEw1D9rlimXLHQvywXY/0bP8uQTzMqbRB11ZvmtN2jKTVhmSKTTtCXcZu7uJC7LBWh8CVo3mzsMBVPdsZYtsOcls/y1bLF7sO9uNuUCVJzjHuxjUVOfjjoonu9elgtw4O348uSSfglGZyPU/dEkPxXnuO/eRLrMSqTuJlOfrH7fGvesjy9PLux3l6p1mzlvgRKz9DthySTdrWZuSDRsznfiYB+LmWXN7bVQNM+9pByg6f348uSShe7zHdpnzrcTMG1JfDQW7Ya6Z8zy5LIz3IkLHNu+mzjhXJNoP1UinfuJdbdh+/Oxfe7rbrS7jWjnfiwngJ1V5FpdE4t2E2k3q4Kc7GKshD5mljbvJRbpxA4UYvdLXKJdzURDTVje7KQlxrFIiEjHHrAcnKySnkdGveVGibQ3QjSMk1WE5RngEap8rI6bVT+tra1s3rwZgOnTp/ODH/yA008/ncLCQkaNGnXI7Yc8UREREZFj7rhZ9fPaa69x+unxX0p1/fXXA3DllVdy//33D1OtREREJFMMa6KyaNEiMuTJk4iIiGSg42oyrYiIiHy6KFERERGRjKVERURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjKVERURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjKVERURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVE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txPt3Ifl+HvakniMwj3HKNZzjNKd7wLXknLTlpae5cnpzndj2rZEO/YQi3RjZ410LSkHjmnfTVwVd6wn0fY6rlb9PPzww1x55ZX8/Oc/Z/bs2dx111088sgj/OUvf0mau9LfkCcqIiIicswdN6t+AC6++GL27NnDv/zLv1BfX8+0adNYtWrVIZMUERER+eQb9jsqR0N3VERERI4/gxm/j6tVPyIiIvLpokRFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjDXsv0L/aPT+Ut3m5uZhromIiIgcrt5x+3B+Of5xnai0tLQAUF1dfYh3ioiISKZpaWkhPz9/wPcc13/rJxqNsnv3bvLy8lx/Kls+mZqbm6murqa2tlZ/20nkE0af70+XWCxGS0sLFRUV2PbAs1CO6zsqtm1TVVU13NWQj1kwGNSFTOQTSp/vT49D3Unppcm0IiIikrGUqIiIiEjGUqIixw2/38/NN9+M3+8f7qqIyDGmz7ekc1xPphUREZFPNt1RERERkYylREVEREQylhIVERERyVhKVERERCRjKVGR48aKFSuoqakhEAgwZ84cXn311eGukogcpRdeeIFzzz2XiooKLMviiSeeGO4qSYZRoiLHhYcffpjrr7+em2++mTfeeINTTjmFJUuW0NjYONxVE5Gj0NbWximnnMKKFSuGuyqSobQ8WY4Lc+bMYdasWdx9992A+TtP1dXVLFu2jBtvvHGYaycix4JlWTz++ON84QtfGO6qSAbRHRXJeF1dXbz++ussXry47zXbtlm8eDHr168fxpqJiMhQU6IiGW/v3r1EIhFKS0tdr5eWllJfXz9MtRIRkY+DEhURERHJWEpUJOMVFRXhOA4NDQ2u1xsaGigrKxumWomIyMdBiYpkPJ/Px8yZM1m9enXfa9FolNWrVzNv3rxhrJmIiAw1z3BXQORwXH/99Vx55ZWceuqpzJ49m7vuuou2tjauvvrq4a6aiByF1tZWNm/e3PfvrVu38tZbb1FYWMioUaOGsWaSKbQ8WY4bd999N8uXL6e+vp5p06bx4x//mDlz5gx3tUTkKKxbt47TTz896fUrr7yS+++//+OvkGQcJSoiIiKSsTRHRURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEMtott9zCtGnThrsaIjJMlKiIyJCqr69n2bJljB07Fr/fT3V1Neeee67rj0yKiKSjP0ooIkNm27ZtnHbaaYwYMYLly5dz8skn093dzTPPPMN1113HX/7yl4+lHt3d3Xi93o9lXyJybOmOiogMmWuvvRbLsnj11Ve58MILmThxIlOmTOH6669nw4YNAOzYsYPzzz+f3NxcgsEgF110EQ0NDWnLjEaj3HrrrVRVVeH3+5k2bRqrVq3qi2/btg3Lsnj44YdZuHAhgUCABx54YMjbKiJDQ4mKiAyJ/fv3s2rVKq677jpycnKS4iNGjCAajXL++eezf/9+nn/+eZ599lk++ugjLr744rTl/uhHP+L73/8+d955J2+//TZLlizhvPPO48MPP3S978Ybb+Tb3/42mzZtYsmSJce8fSLy8dCjHxEZEps3byYWizFp0qS071m9ejXvvPMOW7dupbq6GoBf//rXTJkyhY0bNzJr1qykbe68806++93vcskllwBwxx13sHbtWu666y5WrFjR976///u/54ILLjjGrRKRj5vuqIjIkIjFYod8z6ZNm6iuru5LUgBOPPFERowYwaZNm5Le39zczO7duznttNNcr5922mlJ7z/11FOPsOYikkmUqIjIkJgwYQKWZX1sE2b7S/W4SUSOP0pURGRIFBYWsmTJElasWEFbW1tS/ODBg0yePJna2lpqa2v7Xn///fc5ePAgJ554YtI2wWCQiooKXn75ZdfrL7/8csr3i8jxT3NURGTIrFixgtNOO43Zs2dz6623MnXqVMLhMM8++yz33HMP77//PieffDKXX345d911F+FwmGuvvZaFCxemfXRzww03cPPNNzNu3DimTZvGfffdx1tvvaWVPSKfUEpURGTIjB07ljfeeIN///d/5zvf+Q51dXUUFxczc+ZM7rnnHizL4sknn2TZsmV89rOfxbZtzj77bH7yk5+kLfNb3/oWTU1NfOc736GxsZETTzyRlStXMmHChI+xZSLycbFihzPjTURERGQYaI6KiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMb6/wHCnL2DXQSZ/gAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Suppressing warning message claiming that a portion of points cannot be placed into the plot due to the high number of data points\n", + "import warnings\n", + "warnings.filterwarnings(action='ignore', category=UserWarning, module='seaborn')\n", + "\n", + "palette = {\n", + " 0: 'orange',\n", + " 1: 'wheat'\n", + "}\n", + "sns.swarmplot(x=\"Color\", y=\"ord__Item Size\", hue=\"Color\", data=encoded_pumpkins, palette=palette)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**ಎಚ್ಚರಿಕೆ**: ಎಚ್ಚರಿಕೆಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸುವುದು ಉತ್ತಮ ಅಭ್ಯಾಸವಲ್ಲ ಮತ್ತು ಸಾಧ್ಯವಾದರೆ ತಪ್ಪಿಸಬೇಕು. ಎಚ್ಚರಿಕೆಗಳು ಸಾಮಾನ್ಯವಾಗಿ ನಮ್ಮ ಕೋಡ್ ಅನ್ನು ಸುಧಾರಿಸಲು ಮತ್ತು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಸಹಾಯ ಮಾಡುವ ಉಪಯುಕ್ತ ಸಂದೇಶಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ. \n", + "ನಾವು ಈ ನಿರ್ದಿಷ್ಟ ಎಚ್ಚರಿಕೆಯನ್ನು ನಿರ್ಲಕ್ಷಿಸುವ ಕಾರಣವು ಪ್ಲಾಟ್‌ನ ಓದುಗತೆಯನ್ನು ಖಚಿತಪಡಿಸುವುದಾಗಿದೆ. ಪ್ಯಾಲೆಟ್ ಬಣ್ಣದ ಸಮ್ಮಿಲನವನ್ನು ಕಾಯ್ದುಕೊಂಡು, ಕಡಿಮೆ ಗುರುತು ಗಾತ್ರದೊಂದಿಗೆ ಎಲ್ಲಾ ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಪ್ಲಾಟ್ ಮಾಡುವುದು ಅಸ್ಪಷ್ಟ ದೃಶ್ಯೀಕರಣವನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ.\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "# X is the encoded features\n", + "X = encoded_pumpkins[encoded_pumpkins.columns.difference(['Color'])]\n", + "# y is the encoded label\n", + "y = encoded_pumpkins['Color']\n", + "\n", + "# Split the data into training and test sets\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.94 0.98 0.96 166\n", + " 1 0.85 0.67 0.75 33\n", + "\n", + " accuracy 0.92 199\n", + " macro avg 0.89 0.82 0.85 199\n", + "weighted avg 0.92 0.92 0.92 199\n", + "\n", + "Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0\n", + " 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0\n", + " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0\n", + " 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1\n", + " 0 0 0 1 0 0 0 0 0 0 0 0 1 1]\n", + "F1-score: 0.7457627118644068\n" + ] + } + ], + "source": [ + "from sklearn.metrics import f1_score, classification_report \n", + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "# Train a logistic regression model on the pumpkin dataset\n", + "model = LogisticRegression()\n", + "model.fit(X_train, y_train)\n", + "predictions = model.predict(X_test)\n", + "\n", + "# Evaluate the model and print the results\n", + "print(classification_report(y_test, predictions))\n", + "print('Predicted labels: ', predictions)\n", + "print('F1-score: ', f1_score(y_test, predictions))" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[162, 4],\n", + " [ 11, 22]])" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.metrics import confusion_matrix\n", + "confusion_matrix(y_test, predictions)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhgAAAIjCAYAAABBOWJ+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABgUElEQVR4nO3dd1gUV8MF8LOUZelqsItBjTV2jcYKKgoWFDWKJUKIvUc0tqjYoibWxKDGFqwRNGqMjQiC3WhE7CX2BiixgHR27/eHL/tJBGVxl9lyfs/DE3aY2T07ETjcuTMjE0IIEBEREWmRmdQBiIiIyPiwYBAREZHWsWAQERGR1rFgEBERkdaxYBAREZHWsWAQERGR1rFgEBERkdaxYBAREZHWsWAQERGR1rFgEBERkdaxYBCZgODgYMhkMvWHhYUFypYtiy+++AIPHz7MdRshBDZs2ICWLVuiSJEisLGxQa1atTBz5kwkJyfn+Vo7duxA+/bt4eTkBLlcjjJlyqBnz544ePBgvrKmpaVh8eLFaNy4MRwdHaFQKFClShWMGDEC169fL9D7J6LCJ+O9SIiMX3BwMPz9/TFz5kxUqFABaWlpOHnyJIKDg+Hi4oKLFy9CoVCo11cqlejTpw9CQ0PRokULdOvWDTY2Njhy5Ag2b96MGjVqIDw8HCVLllRvI4TAl19+ieDgYNSrVw+fffYZSpUqhdjYWOzYsQNnzpzBsWPH0LRp0zxzJiQkwNPTE2fOnEGnTp3g7u4OOzs7XLt2DVu2bEFcXBwyMjJ0uq+ISEsEERm9X375RQAQp0+fzrF8woQJAoAICQnJsXzOnDkCgBg3btwbz7Vr1y5hZmYmPD09cyyfP3++ACC++uoroVKp3thu/fr14q+//nprzo4dOwozMzOxbdu2N76WlpYmxo4d+9bt8yszM1Okp6dr5bmIKHcsGEQmIK+CsXv3bgFAzJkzR70sJSVFFC1aVFSpUkVkZmbm+nz+/v4CgDhx4oR6m2LFiolq1aqJrKysAmU8efKkACAGDhyYr/VdXV2Fq6vrG8v9/PzEhx9+qH58+/ZtAUDMnz9fLF68WFSsWFGYmZmJkydPCnNzczF9+vQ3nuPq1asCgFi6dKl62bNnz8To0aNFuXLlhFwuF5UqVRLz5s0TSqVS4/dKZAo4B4PIhN25cwcAULRoUfWyo0eP4tmzZ+jTpw8sLCxy3c7X1xcAsHv3bvU2T58+RZ8+fWBubl6gLLt27QIA9OvXr0Dbv8svv/yCpUuXYtCgQVi4cCFKly4NV1dXhIaGvrFuSEgIzM3N0aNHDwBASkoKXF1dsXHjRvj6+uLHH39Es2bNMGnSJAQEBOgkL5Ghy/2nBxEZpRcvXiAhIQFpaWn466+/MGPGDFhZWaFTp07qdS5fvgwAqFOnTp7Pk/21K1eu5PhvrVq1CpxNG8/xNg8ePMCNGzdQvHhx9TIfHx8MHjwYFy9eRM2aNdXLQ0JC4Orqqp5jsmjRIty8eRNnz55F5cqVAQCDBw9GmTJlMH/+fIwdOxbOzs46yU1kqDiCQWRC3N3dUbx4cTg7O+Ozzz6Dra0tdu3ahXLlyqnXSUpKAgDY29vn+TzZX0tMTMzx37dt8y7aeI636d69e45yAQDdunWDhYUFQkJC1MsuXryIy5cvw8fHR71s69ataNGiBYoWLYqEhAT1h7u7O5RKJQ4fPqyTzESGjCMYRCYkKCgIVapUwYsXL7B27VocPnwYVlZWOdbJ/gWfXTRy898S4uDg8M5t3uX15yhSpEiBnycvFSpUeGOZk5MT2rRpg9DQUMyaNQvAq9ELCwsLdOvWTb3eP//8g/Pnz79RULI9fvxY63mJDB0LBpEJadSoERo2bAgA8Pb2RvPmzdGnTx9cu3YNdnZ2AIDq1asDAM6fPw9vb+9cn+f8+fMAgBo1agAAqlWrBgC4cOFCntu8y+vP0aJFi3euL5PJIHI5y16pVOa6vrW1da7Le/XqBX9/f8TExKBu3boIDQ1FmzZt4OTkpF5HpVKhbdu2GD9+fK7PUaVKlXfmJTI1PERCZKLMzc0xd+5cPHr0CD/99JN6efPmzVGkSBFs3rw5z1/W69evBwD13I3mzZujaNGi+PXXX/Pc5l28vLwAABs3bszX+kWLFsXz58/fWH737l2NXtfb2xtyuRwhISGIiYnB9evX0atXrxzrVKpUCS9fvoS7u3uuH+XLl9foNYlMAQsGkQlzc3NDo0aNsGTJEqSlpQEAbGxsMG7cOFy7dg3ffPPNG9vs2bMHwcHB8PDwwKeffqreZsKECbhy5QomTJiQ68jCxo0bcerUqTyzNGnSBJ6enli9ejV27tz5xtczMjIwbtw49eNKlSrh6tWrePLkiXrZuXPncOzYsXy/fwAoUqQIPDw8EBoaii1btkAul78xCtOzZ0+cOHECYWFhb2z//PlzZGVlafSaRKaAV/IkMgHZV/I8ffq0+hBJtm3btqFHjx5Yvnw5hgwZAuDVYQYfHx/89ttvaNmyJbp37w5ra2scPXoUGzduRPXq1REREZHjSp4qlQpffPEFNmzYgPr166uv5BkXF4edO3fi1KlTOH78OJo0aZJnzidPnqBdu3Y4d+4cvLy80KZNG9ja2uKff/7Bli1bEBsbi/T0dACvzjqpWbMm6tSpg/79++Px48dYsWIFSpYsicTERPUpuHfu3EGFChUwf/78HAXldZs2bcLnn38Oe3t7uLm5qU+ZzZaSkoIWLVrg/Pnz+OKLL9CgQQMkJyfjwoUL2LZtG+7cuZPjkAoRgVfyJDIFeV1oSwghlEqlqFSpkqhUqVKOi2QplUrxyy+/iGbNmgkHBwehUCjExx9/LGbMmCFevnyZ52tt27ZNtGvXThQrVkxYWFiI0qVLCx8fHxEVFZWvrCkpKWLBggXik08+EXZ2dkIul4vKlSuLkSNHihs3buRYd+PGjaJixYpCLpeLunXrirCwsLdeaCsviYmJwtraWgAQGzduzHWdpKQkMWnSJPHRRx8JuVwunJycRNOmTcWCBQtERkZGvt4bkSnhCAYRERFpHedgEBERkdaxYBAREZHWsWAQERGR1rFgEBERkdaxYBAREZHWsWAQERGR1pncvUhUKhUePXoEe3t7yGQyqeMQEREZDCEEkpKSUKZMGZiZvX2MwuQKxqNHj+Ds7Cx1DCIiIoN1//59lCtX7q3rmFzByL699P3799W3hyYiIqJ3S0xMhLOzs/p36duYXMHIPizi4ODAgkFERFQA+ZliwEmeREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1khaMw4cPw8vLC2XKlIFMJsPOnTvfuU1UVBTq168PKysrfPTRRwgODtZ5TiIiItKMpAUjOTkZderUQVBQUL7Wv337Njp27IhWrVohJiYGX331FQYMGICwsDAdJyUiIiJNWEj54u3bt0f79u3zvf6KFStQoUIFLFy4EABQvXp1HD16FIsXL4aHh4euYhoVIQSi7z3Dk6R0qaMQEVEh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isTERGRlZSEtLQ0pKSmwsbF543kCAgIwYMAAbNiwQT3MX6lSJQCvDp+cP38emzZtUq8vhIBKpcLt27dRvXr1XLO9ePECdnZ2UKlUSEtLQ/PmzbF69WokJibi0aNHaNasWY71mzVrhnPnzgF4dXijbdu2qFq1Kjw9PdGpUye0a9fuvfZV3759MXDgQCxbtgxWVlbYtGkTevXqBTMzM/X7PHbsWI4RC6VS+db9BgBVq1bFrl27kJaWho0bNyImJgYjR47MsU5QUBDWrl2Le/fuITU1FRkZGahbt+5b8547dw43btyAvb19juVpaWm4efNmAfYAkf5hwSDSU7a2tvjoo49yLLtz5w46deqEoUOH4ttvv0WxYsVw9OhR9O/fHxkZGbn+opw+fTr69OmDPXv2YN++fQgMDMSWLVvQtWtXvHz5EoMHD8aoUaPe2K58+fJ5ZrO3t0d0dDTMzMxQunRpWFtbAwASExPf+b7q16+P27dvY9++fQgPD0fPnj3h7u6Obdu2vXPbvHh5eUEIgT179uCTTz7BkSNHsHjxYvXXX758iRkzZqBbt25vbKtQKPJ8Xrlcrv5/MG/ePHTs2BEzZszArFmzAABbtmzBuHHjsHDhQjRp0gT29vaYP38+/vrrr7fmffnyJRo0aJCj2GXTl4m8RO+LBYPIgJw5cwYqlQoLFy5U/3Wefbz/bapUqYIqVapgzJgx6N27N3755Rd07doV9evXx+XLl98oMu9iZmaW6zYODg4oU6YMjh07BldXV/XyY8eOoVGjRjnW8/HxgY+PDz777DN4enri6dOnKFasWI7ny57voFQq35pHoVCgW7du2LRpE27cuIGqVauifv366q/Xr18f165d0/h9/teUKVPQunVrDB06VP0+mzZtimHDhqnX+e8IhFwufyN//fr1ERISghIlSsDBweG9MhHpK07yJDIgH330ETIzM7F06VLcunULGzZswIoVK/JcPzU1FSNGjEBUVBTu3r2LY8eO4fTp0+pDHxMmTMDx48cxYsQIxMTE4J9//sHvv/+u8STP13399df47rvvEBISgmvXrmHixImIiYnB6NGjAQCLFi3Cr7/+iqtXr+L69evYunUrSpUqlevFwUqUKAFra2vs378f8fHxePHiRZ6v27dvX+zZswdr165VT+7MNm3aNKxfvx4zZszApUuXcOXKFWzZsgVTpkzR6L01adIEtWvXxpw5cwAAlStXxt9//42wsDBcv34dU6dOxenTp3Ns4+LigvPnz+PatWtISEhAZmYm+vbtCycnJ3Tp0gVHjhzB7du3ERUVhVGjRuHBgwcaZSLSW1JPAiGiN+U2MTDbokWLROnSpYW1tbXw8PAQ69evFwDEs2fPhBA5J2Gmp6eLXr16CWdnZyGXy0WZMmXEiBEjckzgPHXqlGjbtq2ws7MTtra2onbt2m9M0nzdfyd5/pdSqRTTp08XZcuWFZaWlqJOnTpi37596q+vXLlS1K1bV9ja2goHBwfRpk0bER0drf46XpvkKYQQq1atEs7OzsLMzEy4urrmuX+USqUoXbq0ACBu3rz5Rq79+/eLpk2bCmtra+Hg4CAaNWokVq5cmef7CAwMFHXq1Hlj+a+//iqsrKzEvXv3RFpamvjiiy+Eo6OjKFKkiBg6dKiYOHFiju0eP36s3r8ARGRkpBBCiNjYWOHr6yucnJyElZWVqFixohg4cKB48eJFnpmIDIlMCCGkrThERERkbHiIhIiIiLSOBYOIiIi0jgWDiIiItI4Fg4iIiLSOBYOIiIi0jgWDiIiItI4Fg4iIiLSOBYOIiIi0jgWDiIiItI4Fg4iIiLSOBYOIiIi07v8A1k+hWenkwRsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.metrics import roc_curve, roc_auc_score\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "y_scores = model.predict_proba(X_test)\n", + "# calculate ROC curve\n", + "fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1])\n", + "\n", + "# plot ROC curve\n", + "fig = plt.figure(figsize=(6, 6))\n", + "# Plot the diagonal 50% line\n", + "plt.plot([0, 1], [0, 1], 'k--')\n", + "# Plot the FPR and TPR achieved by our model\n", + "plt.plot(fpr, tpr)\n", + "plt.xlabel('False Positive Rate')\n", + "plt.ylabel('True Positive Rate')\n", + "plt.title('ROC Curve')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9749908725812341\n" + ] + } + ], + "source": [ + "# Calculate AUC score\n", + "auc = roc_auc_score(y_test,y_scores[:,1])\n", + "print(auc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.16" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "vscode": { + "interpreter": { + "hash": "949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1" + } + }, + "coopTranslator": { + "original_hash": "ef50cc584e0b79412610cc7da15e1f86", + "translation_date": "2025-12-19T16:37:28+00:00", + "source_file": "2-Regression/4-Logistic/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/2-Regression/README.md b/translations/kn/2-Regression/README.md new file mode 100644 index 000000000..7458f84da --- /dev/null +++ b/translations/kn/2-Regression/README.md @@ -0,0 +1,56 @@ + +# ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕಾಗಿ ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳು +## ಪ್ರಾದೇಶಿಕ ವಿಷಯ: ಉತ್ತರ ಅಮೆರಿಕದ ಕಂಬಳಿಯ ಬೆಲೆಗೆ ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳು 🎃 + +ಉತ್ತರ ಅಮೆರಿಕದಲ್ಲಿ, ಹ್ಯಾಲೋವೀನ್‌ಗಾಗಿ ಕಂಬಳಿಗಳನ್ನು ಭಯಾನಕ ಮುಖಗಳಾಗಿ ಕತ್ತರಿಸಲಾಗುತ್ತದೆ. ಈ ಆಕರ್ಷಕ ತರಕಾರಿಗಳ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿದುಕೊಳ್ಳೋಣ! + +![jack-o-lanterns](../../../translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.kn.jpg) +> ಫೋಟೋ ಬೆತ್ ಟ್ಯೂಟ್ಸ್‌ಮನ್ ಅವರಿಂದ ಅನ್ಸ್ಪ್ಲ್ಯಾಶ್ ನಲ್ಲಿ + +## ನೀವು ಏನು ಕಲಿಯುತ್ತೀರಿ + +[![Introduction to Regression](https://img.youtube.com/vi/5QnJtDad4iQ/0.jpg)](https://youtu.be/5QnJtDad4iQ "Regression Introduction video - Click to Watch!") +> 🎥 ಈ ಪಾಠಕ್ಕೆ ತ್ವರಿತ ಪರಿಚಯ ವೀಡಿಯೊಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ + +ಈ ವಿಭಾಗದ ಪಾಠಗಳು ಯಂತ್ರ ಅಧ್ಯಯನದ ಸಂದರ್ಭದಲ್ಲಿ ರಿಗ್ರೆಶನ್ ಪ್ರಕಾರಗಳನ್ನು ಒಳಗೊಂಡಿವೆ. ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳು ಚರಗಳ ನಡುವಿನ _ಸಂಬಂಧವನ್ನು_ ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು. ಈ ರೀತಿಯ ಮಾದರಿ ಉದ್ದ, ತಾಪಮಾನ ಅಥವಾ ವಯಸ್ಸಿನಂತಹ ಮೌಲ್ಯಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು, ಹೀಗಾಗಿ ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ವಿಶ್ಲೇಷಿಸುವಾಗ ಚರಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ಅನಾವರಣ ಮಾಡುತ್ತದೆ. + +ಈ ಪಾಠ ಸರಣಿಯಲ್ಲಿ, ನೀವು ಲೀನಿಯರ್ ಮತ್ತು ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ನಡುವಿನ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಮತ್ತು ಯಾವಾಗ ಒಂದನ್ನು ಇನ್ನೊಂದಕ್ಕಿಂತ ಪ್ರಾಧಾನ್ಯ ನೀಡಬೇಕು ಎಂಬುದನ್ನು ತಿಳಿದುಕೊಳ್ಳುತ್ತೀರಿ. + +[![ML for beginners - Introduction to Regression models for Machine Learning](https://img.youtube.com/vi/XA3OaoW86R8/0.jpg)](https://youtu.be/XA3OaoW86R8 "ML for beginners - Introduction to Regression models for Machine Learning") + +> 🎥 ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳನ್ನು ಪರಿಚಯಿಸುವ ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೊಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. + +ಈ ಪಾಠಗಳ ಗುಂಪಿನಲ್ಲಿ, ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನ ಕಾರ್ಯಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸಿದ್ಧರಾಗುತ್ತೀರಿ, ಇದರಲ್ಲಿ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳ ಸಾಮಾನ್ಯ ಪರಿಸರವಾದ ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಲು Visual Studio Code ಅನ್ನು ಸಂರಚಿಸುವುದು ಸೇರಿದೆ. ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕಾಗಿ ಲೈಬ್ರರಿ ಆಗಿರುವ Scikit-learn ಅನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ ಮತ್ತು ಈ ಅಧ್ಯಾಯದಲ್ಲಿ ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಿ ನಿಮ್ಮ ಮೊದಲ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುತ್ತೀರಿ. + +> ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಬಗ್ಗೆ ಕಲಿಯಲು ಸಹಾಯ ಮಾಡುವ ಉಪಯುಕ್ತ ಕಡಿಮೆ-ಕೋಡ್ ಸಾಧನಗಳಿವೆ. ಈ ಕಾರ್ಯಕ್ಕಾಗಿ [Azure ML ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ](https://docs.microsoft.com/learn/modules/create-regression-model-azure-machine-learning-designer/?WT.mc_id=academic-77952-leestott) + +### ಪಾಠಗಳು + +1. [ಉಪಕರಣಗಳು](1-Tools/README.md) +2. [ಡೇಟಾ ನಿರ್ವಹಣೆ](2-Data/README.md) +3. [ಲೀನಿಯರ್ ಮತ್ತು ಬಹುಪದ ರಿಗ್ರೆಶನ್](3-Linear/README.md) +4. [ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್](4-Logistic/README.md) + +--- +### ಕ್ರೆಡಿಟ್‌ಗಳು + +"ML with regression" ಅನ್ನು ♥️ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ರಚಿಸಿದ್ದಾರೆ + +♥️ ಪ್ರಶ್ನೋತ್ತರದ ಸಹಯೋಗಿಗಳು: [ಮುಹಮ್ಮದ್ ಸಕೀಬ್ ಖಾನ್ ಇನಾನ್](https://twitter.com/Sakibinan) ಮತ್ತು [ಓರ್ನೆಲ್ಲಾ ಅಲ್ಟುನ್ಯಾನ್](https://twitter.com/ornelladotcom) + +ಕಂಬಳಿ ಡೇಟಾಸೆಟ್ ಅನ್ನು [ಈ ಪ್ರಾಜೆಕ್ಟ್ ಕಾಗಲ್‌ನಲ್ಲಿ](https://www.kaggle.com/usda/a-year-of-pumpkin-prices) ಸೂಚಿಸಲಾಗಿದೆ ಮತ್ತು ಅದರ ಡೇಟಾ ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ ಡಿಪಾರ್ಟ್‌ಮೆಂಟ್ ಆಫ್ ಅಗ್ರಿಕಲ್ಚರ್ ವಿತರಿಸುವ [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) ನಿಂದ ಪಡೆದಿದೆ. ನಾವು ಬಣ್ಣವನ್ನು ಪ್ರಭೇದದ ಆಧಾರದ ಮೇಲೆ ಕೆಲವು ಅಂಕಿಗಳನ್ನು ಸೇರಿಸಿ ವಿತರಣೆ ಸಾಮಾನ್ಯಗೊಳಿಸಿದ್ದೇವೆ. ಈ ಡೇಟಾ ಸಾರ್ವಜನಿಕ ಕ್ಷೇತ್ರದಲ್ಲಿದೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/3-Web-App/1-Web-App/README.md b/translations/kn/3-Web-App/1-Web-App/README.md new file mode 100644 index 000000000..d813e5255 --- /dev/null +++ b/translations/kn/3-Web-App/1-Web-App/README.md @@ -0,0 +1,361 @@ + +# ಎಂಎಲ್ ಮಾದರಿಯನ್ನು ಬಳಸಲು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು NUFORC ಡೇಟಾಬೇಸ್‌ನಿಂದ ಪಡೆದಿರುವ _ಹಿಂದಿನ ಶತಮಾನದಲ್ಲಿ ನಡೆದ UFO ದೃಶ್ಯಾವಳಿಗಳು_ ಎಂಬ ಅತೀ ವಿಶಿಷ್ಟ ಡೇಟಾ ಸೆಟ್ ಮೇಲೆ ಎಂಎಲ್ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವಿರಿ. + +ನೀವು ಕಲಿಯುವಿರಿ: + +- ತರಬೇತುಗೊಂಡ ಮಾದರಿಯನ್ನು 'ಪಿಕಲ್' ಮಾಡುವ ವಿಧಾನ +- ಆ ಮಾದರಿಯನ್ನು ಫ್ಲಾಸ್ಕ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಬಳಸುವ ವಿಧಾನ + +ನಾವು ಡೇಟಾ ಶುದ್ಧೀಕರಣ ಮತ್ತು ಮಾದರಿ ತರಬೇತಿಗಾಗಿ ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಬಳಸುವುದನ್ನು ಮುಂದುವರಿಸುವೆವು, ಆದರೆ ನೀವು ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಇನ್ನೊಂದು ಹಂತಕ್ಕೆ ತೆಗೆದುಕೊಂಡು ಹೋಗಬಹುದು, ಅಂದರೆ ಮಾದರಿಯನ್ನು 'ವೈಲ್ಡ್' ನಲ್ಲಿ, ಅಂದರೆ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಬಳಸುವುದನ್ನು ಅನ್ವೇಷಿಸುವುದು. + +ಇದಕ್ಕಾಗಿ, ನೀವು ಫ್ಲಾಸ್ಕ್ ಬಳಸಿ ಒಂದು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಬೇಕಾಗುತ್ತದೆ. + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಾಣ + +ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ಉಪಯೋಗಿಸಲು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವ ಹಲವು ವಿಧಾನಗಳಿವೆ. ನಿಮ್ಮ ವೆಬ್ ವಾಸ್ತುಶಿಲ್ಪವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವ ರೀತಿಯನ್ನು ಪ್ರಭಾವಿತ ಮಾಡಬಹುದು. ನೀವು ಕೆಲಸ ಮಾಡುತ್ತಿರುವ ವ್ಯವಹಾರದಲ್ಲಿ ಡೇಟಾ ಸೈನ್ಸ್ ತಂಡವು ತರಬೇತುಗೊಂಡ ಮಾದರಿಯನ್ನು ನೀವು ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಬಳಸಬೇಕೆಂದು ಬಯಸಿದರೆ ಎಂದು ಕಲ್ಪಿಸಿ. + +### ಪರಿಗಣನೆಗಳು + +ನೀವು ಕೇಳಬೇಕಾದ ಹಲವಾರು ಪ್ರಶ್ನೆಗಳಿವೆ: + +- **ಇದು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅಥವಾ ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್ ಆಗಿದೆಯೇ?** ನೀವು ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸುತ್ತಿದ್ದರೆ ಅಥವಾ IoT ಸನ್ನಿವೇಶದಲ್ಲಿ ಮಾದರಿಯನ್ನು ಬಳಸಬೇಕಾದರೆ, ನೀವು [TensorFlow Lite](https://www.tensorflow.org/lite/) ಬಳಸಿ ಆಂಡ್ರಾಯ್ಡ್ ಅಥವಾ iOS ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಮಾದರಿಯನ್ನು ಬಳಸಬಹುದು. +- **ಮಾದರಿ ಎಲ್ಲಿಗೆ ಇರಲಿದೆ?** ಕ್ಲೌಡ್‌ನಲ್ಲಿ ಅಥವಾ ಸ್ಥಳೀಯವಾಗಿ? +- **ಆಫ್‌ಲೈನ್ ಬೆಂಬಲ.** ಅಪ್ಲಿಕೇಶನ್ ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬೇಕೇ? +- **ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಲು ಯಾವ ತಂತ್ರಜ್ಞಾನ ಬಳಸಲಾಗಿದೆ?** ಆಯ್ದ ತಂತ್ರಜ್ಞಾನವು ನೀವು ಬಳಸಬೇಕಾದ ಉಪಕರಣಗಳನ್ನು ಪ್ರಭಾವಿತ ಮಾಡಬಹುದು. + - **TensorFlow ಬಳಕೆ.** ಉದಾಹರಣೆಗೆ, TensorFlow ಬಳಸಿ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುತ್ತಿದ್ದರೆ, ಆ ಪರಿಸರವು [TensorFlow.js](https://www.tensorflow.org/js/) ಬಳಸಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ TensorFlow ಮಾದರಿಯನ್ನು ಪರಿವರ್ತಿಸಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ. + - **PyTorch ಬಳಕೆ.** ನೀವು [PyTorch](https://pytorch.org/)ಂತಹ ಗ್ರಂಥಾಲಯ ಬಳಸಿ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸುತ್ತಿದ್ದರೆ, ಅದನ್ನು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಬಳಸಲು [ONNX](https://onnx.ai/) (Open Neural Network Exchange) ಸ್ವರೂಪದಲ್ಲಿ ರಫ್ತು ಮಾಡಬಹುದು, ಮತ್ತು [Onnx Runtime](https://www.onnxruntime.ai/) ಬಳಸಿ ಬಳಸಬಹುದು. ಈ ಆಯ್ಕೆಯನ್ನು ಭವಿಷ್ಯ ಪಾಠದಲ್ಲಿ Scikit-learn ತರಬೇತುಗೊಂಡ ಮಾದರಿಗಾಗಿ ಅನ್ವೇಷಿಸಲಾಗುವುದು. + - **Lobe.ai ಅಥವಾ Azure Custom Vision ಬಳಕೆ.** ನೀವು [Lobe.ai](https://lobe.ai/) ಅಥವಾ [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77952-leestott)ಂತಹ ಎಂಎಲ್ ಸಾಫ್ಟ್‌ವೇರ್ ಸೇವೆಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ, ಈ ರೀತಿಯ ಸಾಫ್ಟ್‌ವೇರ್ ವಿವಿಧ ವೇದಿಕೆಗಳಿಗೆ ಮಾದರಿಯನ್ನು ರಫ್ತು ಮಾಡುವ ಮಾರ್ಗಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದರಲ್ಲಿ ನಿಮ್ಮ ಆನ್‌ಲೈನ್ ಅಪ್ಲಿಕೇಶನ್ ಮೂಲಕ ಕ್ಲೌಡ್‌ನಲ್ಲಿ ಪ್ರಶ್ನೆ ಕೇಳಲು ವಿಶೇಷ API ನಿರ್ಮಿಸುವುದೂ ಸೇರಿದೆ. + +ನೀವು ಸಂಪೂರ್ಣ ಫ್ಲಾಸ್ಕ್ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸುವ ಅವಕಾಶವನ್ನೂ ಹೊಂದಿದ್ದೀರಿ, ಅದು ವೆಬ್ ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಸ್ವತಃ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಬಹುದು. ಇದನ್ನು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಸನ್ನಿವೇಶದಲ್ಲಿ TensorFlow.js ಬಳಸಿ ಮಾಡಬಹುದು. + +ನಮ್ಮ ಉದ್ದೇಶಕ್ಕಾಗಿ, ನಾವು ಪೈಥಾನ್ ಆಧಾರಿತ ನೋಟ್ಬುಕ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದುದರಿಂದ, ತರಬೇತುಗೊಂಡ ಮಾದರಿಯನ್ನು ನೋಟ್ಬುಕ್‌ನಿಂದ ಪೈಥಾನ್ ನಿರ್ಮಿತ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಓದಲು ಸಾಧ್ಯವಾದ ಸ್ವರೂಪಕ್ಕೆ ರಫ್ತು ಮಾಡುವ ಹಂತಗಳನ್ನು ಅನ್ವೇಷಿಸೋಣ. + +## ಉಪಕರಣ + +ಈ ಕಾರ್ಯಕ್ಕಾಗಿ, ನೀವು ಎರಡು ಉಪಕರಣಗಳನ್ನು ಬೇಕಾಗುತ್ತದೆ: ಫ್ಲಾಸ್ಕ್ ಮತ್ತು ಪಿಕಲ್, ಎರಡೂ ಪೈಥಾನ್‌ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ. + +✅ [ಫ್ಲಾಸ್ಕ್](https://palletsprojects.com/p/flask/) ಎಂದರೆ ಏನು? ಅದರ ಸೃಷ್ಟಿಕರ್ತರಿಂದ 'ಮೈಕ್ರೋ-ಫ್ರೇಮ್ವರ್ಕ್' ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಲ್ಪಟ್ಟಿದೆ, ಫ್ಲಾಸ್ಕ್ ಪೈಥಾನ್ ಬಳಸಿ ವೆಬ್ ಫ್ರೇಮ್ವರ್ಕ್‌ಗಳ ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮತ್ತು ಟೆಂಪ್ಲೇಟಿಂಗ್ ಎಂಜಿನ್ ಅನ್ನು ಒದಗಿಸಿ ವೆಬ್ ಪುಟಗಳನ್ನು ನಿರ್ಮಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಫ್ಲಾಸ್ಕ್ ಬಳಸಿ ನಿರ್ಮಾಣ ಅಭ್ಯಾಸ ಮಾಡಲು [ಈ ಲರ್ನ್ ಮೋಡ್ಯೂಲ್](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-77952-leestott) ನೋಡಿ. + +✅ [ಪಿಕಲ್](https://docs.python.org/3/library/pickle.html) ಎಂದರೆ ಏನು? ಪಿಕಲ್ 🥒 ಪೈಥಾನ್ ಆಬ್ಜೆಕ್ಟ್ ರಚನೆಯನ್ನು ಸರಣೀಕರಿಸುವ ಮತ್ತು ಡೀ-ಸರಣೀಕರಿಸುವ ಪೈಥಾನ್ ಮೋಡ್ಯೂಲ್. ನೀವು ಮಾದರಿಯನ್ನು 'ಪಿಕಲ್' ಮಾಡಿದಾಗ, ಅದನ್ನು ವೆಬ್‌ನಲ್ಲಿ ಬಳಸಲು ಸರಣೀಕರಿಸುವ ಅಥವಾ ಸಮತಲಗೊಳಿಸುವಿರಿ. ಎಚ್ಚರಿಕೆ: ಪಿಕಲ್ ಸ್ವತಃ ಸುರಕ್ಷಿತವಲ್ಲ, ಆದ್ದರಿಂದ ಫೈಲ್ ಅನ್ನು 'ಅನ್-ಪಿಕಲ್' ಮಾಡಲು ಕೇಳಿದಾಗ ಜಾಗರೂಕತೆ ವಹಿಸಿ. ಪಿಕಲ್ ಮಾಡಿದ ಫೈಲ್‌ಗೆ `.pkl` ಎಂಬ ಸಫಿಕ್ಸ್ ಇರುತ್ತದೆ. + +## ಅಭ್ಯಾಸ - ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಶುದ್ಧೀಕರಿಸಿ + +ಈ ಪಾಠದಲ್ಲಿ ನೀವು [NUFORC](https://nuforc.org) (ರಾಷ್ಟ್ರೀಯ UFO ವರದಿ ಕೇಂದ್ರ) ಸಂಗ್ರಹಿಸಿದ 80,000 UFO ದೃಶ್ಯಾವಳಿಗಳ ಡೇಟಾವನ್ನು ಬಳಸುತ್ತೀರಿ. ಈ ಡೇಟಾದಲ್ಲಿ UFO ದೃಶ್ಯಾವಳಿಗಳ ಕೆಲವು ಆಸಕ್ತಿದಾಯಕ ವಿವರಣೆಗಳಿವೆ, ಉದಾಹರಣೆಗೆ: + +- **ದೀರ್ಘ ಉದಾಹರಣೆಯ ವಿವರಣೆ.** "ಒಬ್ಬ ವ್ಯಕ್ತಿ ರಾತ್ರಿ ಹೊಲದಲ್ಲಿ ಬೆಳಗುವ ಬೆಳಕಿನ ಕಿರಣದಿಂದ ಹೊರಬರುತ್ತಾನೆ ಮತ್ತು ಟೆಕ್ಸಾಸ್ ಇನ್ಸ್ಟ್ರುಮೆಂಟ್ಸ್ ಪಾರ್ಕಿಂಗ್ ಲಾಟ್ ಕಡೆ ಓಡುತ್ತಾನೆ". +- **ಸಣ್ಣ ಉದಾಹರಣೆಯ ವಿವರಣೆ.** "ಬೆಳಕುಗಳು ನಮ್ಮನ್ನು ಹಿಂಬಾಲಿಸಿದವು". + +[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) ಸ್ಪ್ರೆಡ್ಶೀಟ್‌ನಲ್ಲಿ ದೃಶ್ಯಾವಳಿ ನಡೆದ `city`, `state` ಮತ್ತು `country` ಕಾಲಮ್‌ಗಳ ಜೊತೆಗೆ ವಸ್ತುವಿನ `shape` ಮತ್ತು ಅದರ `latitude` ಮತ್ತು `longitude` ಕಾಲಮ್‌ಗಳಿವೆ. + +ಈ ಪಾಠದಲ್ಲಿ ಸೇರಿಸಿರುವ ಖಾಲಿ [ನೋಟ್ಬುಕ್](notebook.ipynb) ನಲ್ಲಿ: + +1. ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಮಾಡಿದಂತೆ `pandas`, `matplotlib`, ಮತ್ತು `numpy` ಅನ್ನು ಆಮದು ಮಾಡಿ ಮತ್ತು ufos ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಅನ್ನು ಆಮದು ಮಾಡಿ. ನೀವು ಒಂದು ಮಾದರಿ ಡೇಟಾ ಸೆಟ್ ನೋಡಬಹುದು: + + ```python + import pandas as pd + import numpy as np + + ufos = pd.read_csv('./data/ufos.csv') + ufos.head() + ``` + +1. ufos ಡೇಟಾವನ್ನು ಹೊಸ ಶೀರ್ಷಿಕೆಗಳೊಂದಿಗೆ ಸಣ್ಣ ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಪರಿವರ್ತಿಸಿ. `Country` ಕ್ಷೇತ್ರದಲ್ಲಿ ಇರುವ ವಿಶಿಷ್ಟ ಮೌಲ್ಯಗಳನ್ನು ಪರಿಶೀಲಿಸಿ. + + ```python + ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']}) + + ufos.Country.unique() + ``` + +1. ಈಗ, ನಾವು ನಿಭಾಯಿಸಬೇಕಾದ ಡೇಟಾ ಪ್ರಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಯಾವುದೇ ನಲ್ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಿ ಮತ್ತು 1-60 ಸೆಕೆಂಡುಗಳ ನಡುವಿನ ದೃಶ್ಯಾವಳಿಗಳನ್ನು ಮಾತ್ರ ಆಮದು ಮಾಡಿ: + + ```python + ufos.dropna(inplace=True) + + ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds'] <= 60)] + + ufos.info() + ``` + +1. ದೇಶಗಳ ಪಠ್ಯ ಮೌಲ್ಯಗಳನ್ನು ಸಂಖ್ಯೆಗೆ ಪರಿವರ್ತಿಸಲು Scikit-learn ನ `LabelEncoder` ಗ್ರಂಥಾಲಯವನ್ನು ಆಮದು ಮಾಡಿ: + + ✅ LabelEncoder ಡೇಟಾವನ್ನು ವರ್ಣಮಾಲಾ ಕ್ರಮದಲ್ಲಿ ಎನ್‌ಕೋಡ್ ಮಾಡುತ್ತದೆ + + ```python + from sklearn.preprocessing import LabelEncoder + + ufos['Country'] = LabelEncoder().fit_transform(ufos['Country']) + + ufos.head() + ``` + + ನಿಮ್ಮ ಡೇಟಾ ಹೀಗೆ ಕಾಣಿಸಬೇಕು: + + ```output + Seconds Country Latitude Longitude + 2 20.0 3 53.200000 -2.916667 + 3 20.0 4 28.978333 -96.645833 + 14 30.0 4 35.823889 -80.253611 + 23 60.0 4 45.582778 -122.352222 + 24 3.0 3 51.783333 -0.783333 + ``` + +## ಅಭ್ಯಾಸ - ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ + +ಈಗ ನೀವು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಗುಂಪುಗಳಾಗಿ ಡೇಟಾವನ್ನು ವಿಭಜಿಸಿ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಲು ಸಿದ್ಧರಾಗಬಹುದು. + +1. ನೀವು ತರಬೇತುಗೊಳಿಸಲು ಬಯಸುವ ಮೂರು ಲಕ್ಷಣಗಳನ್ನು X ವೆಕ್ಟರ್ ಆಗಿ ಆಯ್ಕೆಮಾಡಿ, ಮತ್ತು y ವೆಕ್ಟರ್ ಆಗಿ `Country` ಇರುತ್ತದೆ. ನೀವು `Seconds`, `Latitude` ಮತ್ತು `Longitude` ಅನ್ನು ಇನ್ಪುಟ್ ಆಗಿ ನೀಡಿ, ದೇಶದ ಐಡಿ ಪಡೆಯಲು ಬಯಸುತ್ತೀರಿ. + + ```python + from sklearn.model_selection import train_test_split + + Selected_features = ['Seconds','Latitude','Longitude'] + + X = ufos[Selected_features] + y = ufos['Country'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + ``` + +1. ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಳಸಿ ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಿ: + + ```python + from sklearn.metrics import accuracy_score, classification_report + from sklearn.linear_model import LogisticRegression + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('Accuracy: ', accuracy_score(y_test, predictions)) + ``` + +ನಿಖರತೆ ಕೆಟ್ಟದಿಲ್ಲ **(ಸುಮಾರು 95%)**, ಅಚ್ಚರಿಯಿಲ್ಲದೆ, ಏಕೆಂದರೆ `Country` ಮತ್ತು `Latitude/Longitude` ಪರಸ್ಪರ ಸಂಬಂಧ ಹೊಂದಿವೆ. + +ನೀವು ರಚಿಸಿದ ಮಾದರಿ ಬಹಳ ಕ್ರಾಂತಿಕಾರಕವಲ್ಲ, ಏಕೆಂದರೆ `Latitude` ಮತ್ತು `Longitude` ನಿಂದ `Country` ಅನ್ನು ಊಹಿಸಬಹುದು, ಆದರೆ ನೀವು ಶುದ್ಧೀಕರಿಸಿದ, ರಫ್ತು ಮಾಡಿದ ಕಚ್ಚಾ ಡೇಟಾದಿಂದ ತರಬೇತುಗೊಳಿಸುವ ಪ್ರಯತ್ನಕ್ಕೆ ಇದು ಒಳ್ಳೆಯ ಅಭ್ಯಾಸ. + +## ಅಭ್ಯಾಸ - ನಿಮ್ಮ ಮಾದರಿಯನ್ನು 'ಪಿಕಲ್' ಮಾಡಿ + +ಈಗ, ನಿಮ್ಮ ಮಾದರಿಯನ್ನು _ಪಿಕಲ್_ ಮಾಡುವ ಸಮಯವಾಗಿದೆ! ನೀವು ಅದನ್ನು ಕೆಲವು ಸಾಲುಗಳ ಕೋಡ್‌ನಲ್ಲಿ ಮಾಡಬಹುದು. ಪಿಕಲ್ ಮಾಡಿದ ನಂತರ, ನಿಮ್ಮ ಪಿಕಲ್ ಮಾಡಿದ ಮಾದರಿಯನ್ನು ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಸೆಕೆಂಡುಗಳು, ಅಕ್ಷಾಂಶ ಮತ್ತು ರೇಖಾಂಶ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿರುವ ಮಾದರಿ ಡೇಟಾ ಅರೆ ಮೇಲೆ ಪರೀಕ್ಷಿಸಿ, + +```python +import pickle +model_filename = 'ufo-model.pkl' +pickle.dump(model, open(model_filename,'wb')) + +model = pickle.load(open('ufo-model.pkl','rb')) +print(model.predict([[50,44,-12]])) +``` + +ಮಾದರಿ **'3'** ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಇದು ಯುಕೆ ದೇಶದ ಕೋಡ್. ಅದ್ಭುತ! 👽 + +## ಅಭ್ಯಾಸ - ಫ್ಲಾಸ್ಕ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ + +ಈಗ ನೀವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಕರೆಸಿ ಸಮಾನ ಫಲಿತಾಂಶಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವ ಫ್ಲಾಸ್ಕ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಬಹುದು, ಆದರೆ ದೃಶ್ಯವಾಗಿ ಹೆಚ್ಚು ಆಕರ್ಷಕ ರೀತಿಯಲ್ಲಿ. + +1. ನಿಮ್ಮ _notebook.ipynb_ ಫೈಲ್ ಪಕ್ಕದಲ್ಲಿ **web-app** ಎಂಬ ಫೋಲ್ಡರ್ ಅನ್ನು ರಚಿಸಿ, ಅಲ್ಲಿ ನಿಮ್ಮ _ufo-model.pkl_ ಫೈಲ್ ಇರುತ್ತದೆ. + +1. ಆ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಇನ್ನೂ ಮೂರು ಫೋಲ್ಡರ್‌ಗಳನ್ನು ರಚಿಸಿ: **static**, ಅದರೊಳಗೆ **css** ಫೋಲ್ಡರ್, ಮತ್ತು **templates**. ಈಗ ನೀವು ಕೆಳಗಿನ ಫೈಲ್‌ಗಳು ಮತ್ತು ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಹೊಂದಿರಬೇಕು: + + ```output + web-app/ + static/ + css/ + templates/ + notebook.ipynb + ufo-model.pkl + ``` + + ✅ ಪೂರ್ಣಗೊಂಡ ಅಪ್ಲಿಕೇಶನ್ ವೀಕ್ಷಣೆಗೆ ಪರಿಹಾರ ಫೋಲ್ಡರ್ ನೋಡಿ + +1. _web-app_ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ರಚಿಸಬೇಕಾದ ಮೊದಲ ಫೈಲ್ **requirements.txt**. ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅಪ್ಲಿಕೇಶನ್‌ನ _package.json_ ಹಾಗೆ, ಈ ಫೈಲ್ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಬೇಕಾದ ಅವಲಂಬನೆಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ. **requirements.txt** ನಲ್ಲಿ ಕೆಳಗಿನ ಸಾಲುಗಳನ್ನು ಸೇರಿಸಿ: + + ```text + scikit-learn + pandas + numpy + flask + ``` + +1. ಈಗ, _web-app_ ಗೆ ನಾವಿಗೇಟ್ ಮಾಡಿ ಈ ಫೈಲ್ ಅನ್ನು ರನ್ ಮಾಡಿ: + + ```bash + cd web-app + ``` + +1. ನಿಮ್ಮ ಟರ್ಮಿನಲ್‌ನಲ್ಲಿ `pip install` ಟೈಪ್ ಮಾಡಿ, _requirements.txt_ ನಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಿದ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಸ್ಥಾಪಿಸಲು: + + ```bash + pip install -r requirements.txt + ``` + +1. ಈಗ, ಅಪ್ಲಿಕೇಶನ್ ಪೂರ್ಣಗೊಳಿಸಲು ಇನ್ನೂ ಮೂರು ಫೈಲ್‌ಗಳನ್ನು ರಚಿಸಲು ಸಿದ್ಧರಾಗಿ: + + 1. ರೂಟ್‌ನಲ್ಲಿ **app.py** ರಚಿಸಿ. + 2. _templates_ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ **index.html** ರಚಿಸಿ. + 3. _static/css_ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ **styles.css** ರಚಿಸಿ. + +1. _styles.css_ ಫೈಲ್‌ನಲ್ಲಿ ಕೆಲವು ಶೈಲಿಗಳನ್ನು ನಿರ್ಮಿಸಿ: + + ```css + body { + width: 100%; + height: 100%; + font-family: 'Helvetica'; + background: black; + color: #fff; + text-align: center; + letter-spacing: 1.4px; + font-size: 30px; + } + + input { + min-width: 150px; + } + + .grid { + width: 300px; + border: 1px solid #2d2d2d; + display: grid; + justify-content: center; + margin: 20px auto; + } + + .box { + color: #fff; + background: #2d2d2d; + padding: 12px; + display: inline-block; + } + ``` + +1. ನಂತರ, _index.html_ ಫೈಲ್ ಅನ್ನು ನಿರ್ಮಿಸಿ: + + ```html + + + + + 🛸 UFO Appearance Prediction! 👽 + + + + +
+ +
+ +

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

+ +
+ + + + +
+ +

{{ prediction_text }}

+ +
+ +
+ + + + ``` + + ಈ ಫೈಲ್‌ನ ಟೆಂಪ್ಲೇಟಿಂಗ್ ನೋಡಿ. ಅಪ್ಲಿಕೇಶನ್ ನೀಡುವ ಚರಗಳ ಸುತ್ತಲೂ 'ಮಸ್ಟಾಚ್' ಸಿಂಟ್ಯಾಕ್ಸ್ ಇದೆ, ಉದಾಹರಣೆಗೆ ಭವಿಷ್ಯವಾಣಿ ಪಠ್ಯ: `{{}}`. ಅಲ್ಲದೆ `/predict` ಮಾರ್ಗಕ್ಕೆ ಭವಿಷ್ಯವಾಣಿ ಪೋಸ್ಟ್ ಮಾಡುವ ಫಾರ್ಮ್ ಇದೆ. + + ಕೊನೆಗೆ, ಮಾದರಿಯ ಬಳಕೆಯನ್ನು ಮತ್ತು ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಪ್ರದರ್ಶಿಸುವ ಪೈಥಾನ್ ಫೈಲ್ ನಿರ್ಮಿಸಲು ಸಿದ್ಧರಾಗಿ: + +1. `app.py` ನಲ್ಲಿ ಸೇರಿಸಿ: + + ```python + import numpy as np + from flask import Flask, request, render_template + import pickle + + app = Flask(__name__) + + model = pickle.load(open("./ufo-model.pkl", "rb")) + + + @app.route("/") + def home(): + return render_template("index.html") + + + @app.route("/predict", methods=["POST"]) + def predict(): + + int_features = [int(x) for x in request.form.values()] + final_features = [np.array(int_features)] + prediction = model.predict(final_features) + + output = prediction[0] + + countries = ["Australia", "Canada", "Germany", "UK", "US"] + + return render_template( + "index.html", prediction_text="Likely country: {}".format(countries[output]) + ) + + + if __name__ == "__main__": + app.run(debug=True) + ``` + + > 💡 ಟಿಪ್: ಫ್ಲಾಸ್ಕ್ ಬಳಸಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ರನ್ ಮಾಡುವಾಗ [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode) ಸೇರಿಸಿದರೆ, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಮಾಡಿದ ಯಾವುದೇ ಬದಲಾವಣೆಗಳು ತಕ್ಷಣವೇ ಪ್ರತಿಬಿಂಬಿತವಾಗುತ್ತವೆ, ಸರ್ವರ್ ಮರುಪ್ರಾರಂಭಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. ಎಚ್ಚರಿಕೆ! ಉತ್ಪಾದನಾ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಈ ಮೋಡ್ ಸಕ್ರಿಯಗೊಳಿಸಬೇಡಿ. + +ನೀವು `python app.py` ಅಥವಾ `python3 app.py` ರನ್ ಮಾಡಿದರೆ - ನಿಮ್ಮ ವೆಬ್ ಸರ್ವರ್ ಸ್ಥಳೀಯವಾಗಿ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ಮತ್ತು ನೀವು UFO ಗಳು ಎಲ್ಲಿ ದೃಶ್ಯಾವಳಿಯಾಗಿವೆ ಎಂಬ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರ ಪಡೆಯಲು ಸಣ್ಣ ಫಾರ್ಮ್ ಭರ್ತಿ ಮಾಡಬಹುದು! + +ಅದನ್ನು ಮಾಡುವ ಮೊದಲು, `app.py` ಭಾಗಗಳನ್ನು ನೋಡಿ: + +1. ಮೊದಲು, ಅವಲಂಬನೆಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. +1. ನಂತರ, ಮಾದರಿಯನ್ನು ಆಮದು ಮಾಡಲಾಗುತ್ತದೆ. +1. ನಂತರ, ಹೋಮ್ ಮಾರ್ಗದಲ್ಲಿ index.html ರೆಂಡರ್ ಆಗುತ್ತದೆ. + +`/predict` ಮಾರ್ಗದಲ್ಲಿ, ಫಾರ್ಮ್ ಪೋಸ್ಟ್ ಆಗುವಾಗ ಹಲವಾರು ಕಾರ್ಯಗಳು ನಡೆಯುತ್ತವೆ: + +1. ಫಾರ್ಮ್ ಚರಗಳನ್ನು ಸಂಗ್ರಹಿಸಿ numpy ಅರೆಗೆ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ. ಅವು ಮಾದರಿಗೆ ಕಳುಹಿಸಿ ಭವಿಷ್ಯವಾಣಿ ಪಡೆಯಲಾಗುತ್ತದೆ. +2. ನಾವು ಪ್ರದರ್ಶಿಸಲು ಬಯಸುವ ದೇಶಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ದೇಶ ಕೋಡ್‌ನಿಂದ ಓದಲು ಸುಲಭವಾದ ಪಠ್ಯವಾಗಿ ಮರು-ರೆಂಡರ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಆ ಮೌಲ್ಯವನ್ನು index.html ಗೆ ಕಳುಹಿಸಿ ಟೆಂಪ್ಲೇಟಿನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ. + +ಫ್ಲಾಸ್ಕ್ ಮತ್ತು ಪಿಕಲ್ ಮಾಡಿದ ಮಾದರಿಯನ್ನು ಬಳಸಿ ಈ ರೀತಿಯಲ್ಲಿ ಮಾದರಿಯನ್ನು ಬಳಸುವುದು ಸರಳವಾಗಿದೆ. ಅತಿ ಕಠಿಣವಾದುದು ಯಾವ ರೂಪದ ಡೇಟಾವನ್ನು ಮಾದರಿಗೆ ಕಳುಹಿಸಬೇಕು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು. ಅದು ಮಾದರಿ ತರಬೇತುಗೊಂಡ ರೀತಿಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಇದರಲ್ಲಿ ಮೂರು ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಇನ್ಪುಟ್ ಆಗಿ ನೀಡಬೇಕು ಭವಿಷ್ಯವಾಣಿ ಪಡೆಯಲು. + +ವೃತ್ತಿಪರ ಪರಿಸರದಲ್ಲಿ, ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವವರು ಮತ್ತು ಅದನ್ನು ವೆಬ್ ಅಥವಾ ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಬಳಸುವವರ ನಡುವೆ ಉತ್ತಮ ಸಂವಹನ ಅಗತ್ಯವಿದೆ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ಅದು ನೀವು ಒಬ್ಬರೇ! + +--- + +## 🚀 ಸವಾಲು + +ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುವ ಬದಲು ಮತ್ತು ಮಾದರಿಯನ್ನು ಫ್ಲಾಸ್ಕ್ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಆಮದು ಮಾಡುವ ಬದಲು, ನೀವು ಫ್ಲಾಸ್ಕ್ ಅಪ್ಲಿಕೇಶನ್ ಒಳಗೆ ನೇರವಾಗಿ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಬಹುದು! ನಿಮ್ಮ ನೋಟ್ಬುಕ್‌ನ ಪೈಥಾನ್ ಕೋಡ್ ಅನ್ನು, ನಿಮ್ಮ ಡೇಟಾ ಶುದ್ಧೀಕರಿಸಿದ ನಂತರ, `train` ಎಂಬ ಮಾರ್ಗದಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಒಳಗೆ ತರಬೇತುಗೊಳಿಸುವಂತೆ ಪರಿವರ್ತಿಸಲು ಪ್ರಯತ್ನಿಸಿ. ಈ ವಿಧಾನವನ್ನು ಅನುಸರಿಸುವ ಲಾಭ ಮತ್ತು ಹಾನಿಗಳನ್ನು ಏನು? + +## [ಪೋಸ್ಟ್-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಎಂಎಲ್ ಮಾದರಿಗಳನ್ನು ಉಪಯೋಗಿಸಲು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸುವ ಹಲವು ವಿಧಾನಗಳಿವೆ. ಯಾವುವು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅಥವಾ ಪೈಥಾನ್ ಬಳಸಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಲು ಸಾಧ್ಯವೋ ಅವುಗಳ ಪಟ್ಟಿ ಮಾಡಿ. ವಾಸ್ತುಶಿಲ್ಪವನ್ನು ಪರಿಗಣಿಸಿ: ಮಾದರಿ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಇರಬೇಕೇ ಅಥವಾ ಕ್ಲೌಡ್‌ನಲ್ಲಿ ಇರಬೇಕೇ? ನಂತರದಿದ್ದರೆ, ಅದನ್ನು ಹೇಗೆ ಪ್ರವೇಶಿಸುವಿರಿ? ಅನ್ವಯಿಸಿದ ಎಂಎಲ್ ವೆಬ್ ಪರಿಹಾರಕ್ಕಾಗಿ ವಾಸ್ತುಶಿಲ್ಪ ಮಾದರಿಯನ್ನು ರಚಿಸಿ. + +## ನಿಯೋಜನೆ + +[ಬೇರೊಂದು ಮಾದರಿಯನ್ನು ಪ್ರಯತ್ನಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/3-Web-App/1-Web-App/assignment.md b/translations/kn/3-Web-App/1-Web-App/assignment.md new file mode 100644 index 000000000..fbf250681 --- /dev/null +++ b/translations/kn/3-Web-App/1-Web-App/assignment.md @@ -0,0 +1,27 @@ + +# ಬೇರೆ ಮಾದರಿಯನ್ನು ಪ್ರಯತ್ನಿಸಿ + +## ಸೂಚನೆಗಳು + +ನೀವು ಈಗಾಗಲೇ ತರಬೇತಿಗೊಂಡ Regression ಮಾದರಿಯನ್ನು ಬಳಸಿ ಒಂದು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಈಗ ಹಿಂದಿನ Regression ಪಾಠದ ಒಂದು ಮಾದರಿಯನ್ನು ಬಳಸಿ ಈ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಮರುನಿರ್ಮಿಸಿ. ನೀವು ಶೈಲಿಯನ್ನು ಉಳಿಸಬಹುದು ಅಥವಾ ಕಬ್ಬು ಡೇಟಾವನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವಂತೆ ವಿಭಿನ್ನವಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಬಹುದು. ನಿಮ್ಮ ಮಾದರಿಯ ತರಬೇತಿ ವಿಧಾನವನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವಂತೆ ಇನ್ಪುಟ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಜಾಗರೂಕರಾಗಿರಿ. + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆ ಅಗತ್ಯವಿದೆ | +| -------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | -------------------------------------- | +| | ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರೀಕ್ಷಿತಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಕ್ಲೌಡ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗಿದೆ | ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ದೋಷಗಳಿವೆ ಅಥವಾ ಅಪ್ರತೀಕ್ಷಿತ ಫಲಿತಾಂಶಗಳನ್ನು ತೋರಿಸುತ್ತದೆ | ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/3-Web-App/1-Web-App/notebook.ipynb b/translations/kn/3-Web-App/1-Web-App/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/kn/3-Web-App/1-Web-App/solution/notebook.ipynb b/translations/kn/3-Web-App/1-Web-App/solution/notebook.ipynb new file mode 100644 index 000000000..1d2951975 --- /dev/null +++ b/translations/kn/3-Web-App/1-Web-App/solution/notebook.ipynb @@ -0,0 +1,269 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "5fa2e8f4584c78250ca9729b46562ceb", + "translation_date": "2025-12-19T16:48:25+00:00", + "source_file": "3-Web-App/1-Web-App/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "## ಯುಎಫ್‌ಒ ದೃಶ್ಯೀಕರಣವನ್ನು ತಿಳಿಯಲು ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ಬಳಸಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " datetime city state country shape \\\n", + "0 10/10/1949 20:30 san marcos tx us cylinder \n", + "1 10/10/1949 21:00 lackland afb tx NaN light \n", + "2 10/10/1955 17:00 chester (uk/england) NaN gb circle \n", + "3 10/10/1956 21:00 edna tx us circle \n", + "4 10/10/1960 20:00 kaneohe hi us light \n", + "\n", + " duration (seconds) duration (hours/min) \\\n", + "0 2700.0 45 minutes \n", + "1 7200.0 1-2 hrs \n", + "2 20.0 20 seconds \n", + "3 20.0 1/2 hour \n", + "4 900.0 15 minutes \n", + "\n", + " comments date posted latitude \\\n", + "0 This event took place in early fall around 194... 4/27/2004 29.883056 \n", + "1 1949 Lackland AFB, TX. Lights racing acros... 12/16/2005 29.384210 \n", + "2 Green/Orange circular disc over Chester, En... 1/21/2008 53.200000 \n", + "3 My older brother and twin sister were leaving ... 1/17/2004 28.978333 \n", + "4 AS a Marine 1st Lt. flying an FJ4B fighter/att... 1/22/2004 21.418056 \n", + "\n", + " longitude \n", + "0 -97.941111 \n", + "1 -98.581082 \n", + "2 -2.916667 \n", + "3 -96.645833 \n", + "4 -157.803611 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimecitystatecountryshapeduration (seconds)duration (hours/min)commentsdate postedlatitudelongitude
010/10/1949 20:30san marcostxuscylinder2700.045 minutesThis event took place in early fall around 194...4/27/200429.883056-97.941111
110/10/1949 21:00lackland afbtxNaNlight7200.01-2 hrs1949 Lackland AFB&#44 TX. Lights racing acros...12/16/200529.384210-98.581082
210/10/1955 17:00chester (uk/england)NaNgbcircle20.020 secondsGreen/Orange circular disc over Chester&#44 En...1/21/200853.200000-2.916667
310/10/1956 21:00ednatxuscircle20.01/2 hourMy older brother and twin sister were leaving ...1/17/200428.978333-96.645833
410/10/1960 20:00kaneohehiuslight900.015 minutesAS a Marine 1st Lt. flying an FJ4B fighter/att...1/22/200421.418056-157.803611
\n
" + }, + "metadata": {}, + "execution_count": 23 + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "ufos = pd.read_csv('../data/ufos.csv')\n", + "ufos.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array(['us', nan, 'gb', 'ca', 'au', 'de'], dtype=object)" + ] + }, + "metadata": {}, + "execution_count": 24 + } + ], + "source": [ + "\n", + "ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']})\n", + "\n", + "ufos.Country.unique()\n", + "\n", + "# 0 au, 1 ca, 2 de, 3 gb, 4 us" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\nInt64Index: 25863 entries, 2 to 80330\nData columns (total 4 columns):\n # Column Non-Null Count Dtype \n--- ------ -------------- ----- \n 0 Seconds 25863 non-null float64\n 1 Country 25863 non-null object \n 2 Latitude 25863 non-null float64\n 3 Longitude 25863 non-null float64\ndtypes: float64(3), object(1)\nmemory usage: 1010.3+ KB\n" + ] + } + ], + "source": [ + "ufos.dropna(inplace=True)\n", + "\n", + "ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds'] <= 60)]\n", + "\n", + "ufos.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Seconds Country Latitude Longitude\n", + "2 20.0 3 53.200000 -2.916667\n", + "3 20.0 4 28.978333 -96.645833\n", + "14 30.0 4 35.823889 -80.253611\n", + "23 60.0 4 45.582778 -122.352222\n", + "24 3.0 3 51.783333 -0.783333" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
SecondsCountryLatitudeLongitude
220.0353.200000-2.916667
320.0428.978333-96.645833
1430.0435.823889-80.253611
2360.0445.582778-122.352222
243.0351.783333-0.783333
\n
" + }, + "metadata": {}, + "execution_count": 26 + } + ], + "source": [ + "from sklearn.preprocessing import LabelEncoder\n", + "\n", + "ufos['Country'] = LabelEncoder().fit_transform(ufos['Country'])\n", + "\n", + "ufos.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "\n", + "Selected_features = ['Seconds','Latitude','Longitude']\n", + "\n", + "X = ufos[Selected_features]\n", + "y = ufos['Country']\n", + "\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", + " FutureWarning)\n", + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:469: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n", + " \"this warning.\", FutureWarning)\n", + " precision recall f1-score support\n", + "\n", + " 0 1.00 1.00 1.00 41\n", + " 1 1.00 0.02 0.05 250\n", + " 2 0.00 0.00 0.00 8\n", + " 3 0.94 1.00 0.97 131\n", + " 4 0.95 1.00 0.97 4743\n", + "\n", + " accuracy 0.95 5173\n", + " macro avg 0.78 0.60 0.60 5173\n", + "weighted avg 0.95 0.95 0.93 5173\n", + "\n", + "Predicted labels: [4 4 4 ... 3 4 4]\n", + "Accuracy: 0.9512855209742895\n", + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.\n", + " 'precision', 'predicted', average, warn_for)\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import accuracy_score, classification_report \n", + "from sklearn.linear_model import LogisticRegression\n", + "model = LogisticRegression()\n", + "model.fit(X_train, y_train)\n", + "predictions = model.predict(X_test)\n", + "\n", + "print(classification_report(y_test, predictions))\n", + "print('Predicted labels: ', predictions)\n", + "print('Accuracy: ', accuracy_score(y_test, predictions))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[3]\n" + ] + } + ], + "source": [ + "import pickle\n", + "model_filename = 'ufo-model.pkl'\n", + "pickle.dump(model, open(model_filename,'wb'))\n", + "\n", + "model = pickle.load(open('ufo-model.pkl','rb'))\n", + "print(model.predict([[50,44,-12]]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕಾರ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/3-Web-App/README.md b/translations/kn/3-Web-App/README.md new file mode 100644 index 000000000..c151820ae --- /dev/null +++ b/translations/kn/3-Web-App/README.md @@ -0,0 +1,37 @@ + +# ನಿಮ್ಮ ML ಮಾದರಿಯನ್ನು ಬಳಸಲು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ + +ಈ ಪಠ್ಯಕ್ರಮದ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ಅನ್ವಯಿತ ML ವಿಷಯವನ್ನು ಪರಿಚಯಿಸಿಕೊಳ್ಳುತ್ತೀರಿ: ನಿಮ್ಮ Scikit-learn ಮಾದರಿಯನ್ನು ಫೈಲ್ ಆಗಿ ಉಳಿಸುವುದು, ಅದನ್ನು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಳಸಬಹುದು. ಮಾದರಿ ಉಳಿಸಿದ ನಂತರ, ನೀವು ಅದನ್ನು Flask ನಲ್ಲಿ ನಿರ್ಮಿಸಲಾದ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಹೇಗೆ ಬಳಸುವುದು ಎಂದು ಕಲಿಯುತ್ತೀರಿ. ಮೊದಲು, ನೀವು UFO ದೃಶ್ಯಗಳ ಬಗ್ಗೆ ಇರುವ ಕೆಲವು ಡೇಟಾ ಬಳಸಿ ಮಾದರಿಯನ್ನು ರಚಿಸುವಿರಿ! ನಂತರ, ನೀವು ಸೆಕೆಂಡುಗಳ ಸಂಖ್ಯೆ, ಅಕ್ಷಾಂಶ ಮತ್ತು ರೇಖಾಂಶ ಮೌಲ್ಯವನ್ನು ನಮೂದಿಸಲು ಅನುಮತಿಸುವ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸುವಿರಿ, ಅದು ಯಾವ ದೇಶ UFO ನೋಡಿದ ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ. + +![UFO Parking](../../../translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.kn.jpg) + +ಚಿತ್ರವನ್ನು ಮೈಕೆಲ್ ಹೆರೆನ್ ಅವರು ಅನ್ಸ್ಪ್ಲ್ಯಾಶ್ ನಲ್ಲಿ ತೆಗೆದಿದ್ದಾರೆ + +## ಪಾಠಗಳು + +1. [ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ](1-Web-App/README.md) + +## ಕ್ರೆಡಿಟ್‌ಗಳು + +"ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ" ಅನ್ನು ♥️ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ರವರು ಬರೆಯಲಾಗಿದೆ. + +♥️ ಪ್ರಶ್ನೋತ್ತರಗಳನ್ನು ರೋಹನ್ ರಾಜ್ ರವರು ಬರೆಯಲಾಗಿದೆ. + +ಡೇಟಾಸೆಟ್ ಅನ್ನು [ಕಾಗಲ್](https://www.kaggle.com/NUFORC/ufo-sightings) ನಿಂದ ಪಡೆದಿದೆ. + +ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ವಾಸ್ತುಶಿಲ್ಪವನ್ನು ಭಾಗಶಃ [ಈ ಲೇಖನ](https://towardsdatascience.com/how-to-easily-deploy-machine-learning-models-using-flask-b95af8fe34d4) ಮತ್ತು ಅಭಿನವ್ ಸಾಗರ್ ಅವರ [ಈ ರೆಪೊ](https://github.com/abhinavsagar/machine-learning-deployment) ಸೂಚಿಸಿದ್ದಾರೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/4-Classification/1-Introduction/README.md b/translations/kn/4-Classification/1-Introduction/README.md new file mode 100644 index 000000000..1f6afe857 --- /dev/null +++ b/translations/kn/4-Classification/1-Introduction/README.md @@ -0,0 +1,315 @@ + +# ವರ್ಗೀಕರಣಕ್ಕೆ ಪರಿಚಯ + +ಈ ನಾಲ್ಕು ಪಾಠಗಳಲ್ಲಿ, ನೀವು ಕ್ಲಾಸಿಕ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ನ ಮೂಲಭೂತ ಗಮನಾರ್ಹ ವಿಷಯವಾದ _ವರ್ಗೀಕರಣ_ ಅನ್ನು ಅನ್ವೇಷಿಸುವಿರಿ. ಏಷ್ಯಾ ಮತ್ತು ಭಾರತದಲ್ಲಿನ ಎಲ್ಲಾ ಅದ್ಭುತ ಆಹಾರಗಳ ಬಗ್ಗೆ ಡೇಟಾಸೆಟ್ ಬಳಸಿ ವಿವಿಧ ವರ್ಗೀಕರಣ ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದನ್ನು ನಾವು ನೋಡೋಣ. ನೀವು ಹಸಿವಾಗಿದ್ದೀರಾ ಎಂದು ಆಶಿಸುತ್ತೇವೆ! + +![ಒಂದು ಚುಟುಕು!](../../../../translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.kn.png) + +> ಈ ಪಾಠಗಳಲ್ಲಿ ಪ್ಯಾನ್-ಏಷಿಯನ್ ಆಹಾರಗಳನ್ನು ಆಚರಿಸೋಣ! ಚಿತ್ರವನ್ನು [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ನೀಡಿದ್ದಾರೆ + +ವರ್ಗೀಕರಣವು [ನಿರೀಕ್ಷಿತ ಕಲಿಕೆ](https://wikipedia.org/wiki/Supervised_learning) ಎಂಬ ಒಂದು ರೂಪವಾಗಿದ್ದು, ಇದು ರಿಗ್ರೆಷನ್ ತಂತ್ರಜ್ಞಾನಗಳೊಂದಿಗೆ ಬಹಳ ಸಾಮ್ಯತೆ ಹೊಂದಿದೆ. ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಎಂದರೆ ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ಬಳಸಿ ಮೌಲ್ಯಗಳು ಅಥವಾ ಹೆಸರುಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದಾದರೆ, ವರ್ಗೀಕರಣ ಸಾಮಾನ್ಯವಾಗಿ ಎರಡು ಗುಂಪುಗಳಲ್ಲಿ ಬರುವುದಾಗಿದೆ: _ದ್ವೈತ ವರ್ಗೀಕರಣ_ ಮತ್ತು _ಬಹು-ವರ್ಗ ವರ್ಗೀಕರಣ_. + +[![ವರ್ಗೀಕರಣಕ್ಕೆ ಪರಿಚಯ](https://img.youtube.com/vi/eg8DJYwdMyg/0.jpg)](https://youtu.be/eg8DJYwdMyg "ವರ್ಗೀಕರಣಕ್ಕೆ ಪರಿಚಯ") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋ ನೋಡಿ: MIT ನ ಜಾನ್ ಗುಟ್ಟಾಗ್ ವರ್ಗೀಕರಣವನ್ನು ಪರಿಚಯಿಸುತ್ತಿದ್ದಾರೆ + +ಸ್ಮರಣೆ: + +- **ರೇಖೀಯ ರಿಗ್ರೆಷನ್** ನಿಮಗೆ ವ್ಯತ್ಯಾಸಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಸಹಾಯ ಮಾಡಿತು ಮತ್ತು ಹೊಸ ಡೇಟಾಪಾಯಿಂಟ್ ಆ ರೇಖೆಯ ಸಂಬಂಧದಲ್ಲಿ ಎಲ್ಲಿ ಬಿದ್ದೀತು ಎಂಬುದನ್ನು ನಿಖರವಾಗಿ ಊಹಿಸಲು ಸಹಾಯ ಮಾಡಿತು. ಉದಾಹರಣೆಗೆ, _ಸೆಪ್ಟೆಂಬರ್ ಮತ್ತು ಡಿಸೆಂಬರ್‌ನಲ್ಲಿ ಕಂಬಳಿಯ ಬೆಲೆ ಏನು ಇರುತ್ತದೆ_ ಎಂದು ಊಹಿಸಬಹುದು. +- **ಲಾಗಿಸ್ಟಿಕ್ ರಿಗ್ರೆಷನ್** ನಿಮಗೆ "ದ್ವೈತ ವರ್ಗಗಳು" ಅನ್ನು ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡಿತು: ಈ ಬೆಲೆ ಮಟ್ಟದಲ್ಲಿ, _ಈ ಕಂಬಳಿ ಕಿತ್ತಳೆ ಬಣ್ಣದದೆಯೇ ಅಥವಾ ಅಲ್ಲವೇ_? + +ವರ್ಗೀಕರಣವು ಡೇಟಾ ಪಾಯಿಂಟ್‌ನ ಲೇಬಲ್ ಅಥವಾ ವರ್ಗವನ್ನು ನಿರ್ಧರಿಸಲು ವಿವಿಧ ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಈ ಆಹಾರ ಡೇಟಾ ಬಳಸಿ, ಒಂದು ಗುಂಪಿನ ಪದಾರ್ಥಗಳನ್ನು ಗಮನಿಸಿ ಅದರ ಮೂಲ ಆಹಾರವನ್ನು ನಿರ್ಧರಿಸಬಹುದೇ ಎಂದು ನೋಡೋಣ. + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ಈ ಪಾಠ R ನಲ್ಲಿ ಲಭ್ಯವಿದೆ!](../../../../4-Classification/1-Introduction/solution/R/lesson_10.html) + +### ಪರಿಚಯ + +ವರ್ಗೀಕರಣವು ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಸಂಶೋಧಕ ಮತ್ತು ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಮೂಲಭೂತ ಚಟುವಟಿಕೆಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. ಒಂದು ದ್ವೈತ ಮೌಲ್ಯದ ಮೂಲಭೂತ ವರ್ಗೀಕರಣದಿಂದ ("ಈ ಇಮೇಲ್ ಸ್ಪ್ಯಾಮ್ ಆಗಿದೆಯೇ ಇಲ್ಲವೇ?") ಆರಂಭಿಸಿ, ಸಂಕೀರ್ಣ ಚಿತ್ರ ವರ್ಗೀಕರಣ ಮತ್ತು ವಿಭಾಗೀಕರಣದವರೆಗೆ, ಡೇಟಾವನ್ನು ವರ್ಗಗಳಲ್ಲಿ ವಿಂಗಡಿಸಿ ಅದರಲ್ಲಿ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳುವುದು ಸದಾ ಉಪಯುಕ್ತ. + +ವಿಜ್ಞಾನಾತ್ಮಕವಾಗಿ ಹೇಳುವುದಾದರೆ, ನಿಮ್ಮ ವರ್ಗೀಕರಣ ವಿಧಾನವು ಇನ್ಪುಟ್ ವ್ಯತ್ಯಾಸಗಳ ಮತ್ತು ಔಟ್‌ಪುಟ್ ವ್ಯತ್ಯಾಸಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ನಕ್ಷೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗುವ ಭವಿಷ್ಯವಾಣಿ ಮಾದರಿಯನ್ನು ರಚಿಸುತ್ತದೆ. + +![ದ್ವೈತ ಮತ್ತು ಬಹು-ವರ್ಗ ವರ್ಗೀಕರಣ](../../../../translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.kn.png) + +> ವರ್ಗೀಕರಣ ಆಲ್ಗಾರಿಥಮ್‌ಗಳು ನಿಭಾಯಿಸಬೇಕಾದ ದ್ವೈತ ಮತ್ತು ಬಹು-ವರ್ಗ ಸಮಸ್ಯೆಗಳು. ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ + +ನಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುವುದು, ದೃಶ್ಯೀಕರಣ ಮಾಡುವುದು ಮತ್ತು ML ಕಾರ್ಯಗಳಿಗೆ ಸಿದ್ಧಪಡಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸಲು ಬಳಸಬಹುದಾದ ವಿವಿಧ ವಿಧಾನಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳೋಣ. + +[ಸಂಖ್ಯಾಶಾಸ್ತ್ರ](https://wikipedia.org/wiki/Statistical_classification)ದಿಂದ ಪಡೆದ, ಕ್ಲಾಸಿಕ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಬಳಸಿ ವರ್ಗೀಕರಣವು `smoker`, `weight`, ಮತ್ತು `age` ಮುಂತಾದ ಲಕ್ಷಣಗಳನ್ನು ಬಳಸಿಕೊಂಡು _X ರೋಗದ ಸಂಭವನೀಯತೆ_ ಅನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ನೀವು ಹಿಂದಿನ ರಿಗ್ರೆಷನ್ ಅಭ್ಯಾಸಗಳಲ್ಲಿ ಮಾಡಿದಂತೆ, ನಿಮ್ಮ ಡೇಟಾ ಲೇಬಲ್ ಮಾಡಲ್ಪಟ್ಟಿದ್ದು, ML ಆಲ್ಗಾರಿಥಮ್‌ಗಳು ಆ ಲೇಬಲ್‌ಗಳನ್ನು ಬಳಸಿ ಡೇಟಾಸೆಟ್‌ನ ವರ್ಗಗಳನ್ನು (ಅಥವಾ 'ಲಕ್ಷಣಗಳನ್ನು') ವರ್ಗೀಕರಿಸಿ, ಅವುಗಳನ್ನು ಗುಂಪು ಅಥವಾ ಫಲಿತಾಂಶಕ್ಕೆ ನಿಯೋಜಿಸುತ್ತವೆ. + +✅ ಆಹಾರಗಳ ಬಗ್ಗೆ ಒಂದು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಕಲ್ಪಿಸಿ. ಬಹು-ವರ್ಗ ಮಾದರಿ ಯಾವ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರ ನೀಡಬಹುದು? ದ್ವೈತ ಮಾದರಿ ಯಾವ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರ ನೀಡಬಹುದು? ನೀವು ಒಂದು ನಿರ್ದಿಷ್ಟ ಆಹಾರದಲ್ಲಿ ಮೆಂತ್ಯು ಬಳಕೆಯಾಗುವ ಸಾಧ್ಯತೆಯನ್ನು ನಿರ್ಧರಿಸಲು ಬಯಸಿದರೆ? ಸ್ಟಾರ್ ಅನೀಸ್, ಆರ್ಟಿಚೋಕ್, ಹೂಕೋಸು ಮತ್ತು ಹರ್ಸರಡಿಷ್ ತುಂಬಿದ ಗ್ರೋಸರಿ ಬ್ಯಾಗ್ ಇದ್ದಾಗ, ನೀವು ಸಾಮಾನ್ಯ ಭಾರತೀಯ ವಾನಗಿಯನ್ನು ರಚಿಸಬಹುದೇ ಎಂದು ನೋಡಲು ಬಯಸಿದರೆ? + +[![ಅದ್ಭುತ ರಹಸ್ಯ ಬಾಸ್ಕೆಟ್‌ಗಳು](https://img.youtube.com/vi/GuTeDbaNoEU/0.jpg)](https://youtu.be/GuTeDbaNoEU "ಅದ್ಭುತ ರಹಸ್ಯ ಬಾಸ್ಕೆಟ್‌ಗಳು") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋ ನೋಡಿ. 'ಚಾಪ್ಡ್' ಶೋಯಿನ ಪೂರ್ಣ ತತ್ವವೇ 'ರಹಸ್ಯ ಬಾಸ್ಕೆಟ್' ಆಗಿದ್ದು, ಅಲ್ಲಿ ಶೆಫ್ಗಳು ಯಾದೃಚ್ಛಿಕ ಪದಾರ್ಥಗಳಿಂದ ಒಂದು ವಾನಗಿಯನ್ನು ತಯಾರಿಸಬೇಕು. ಖಂಡಿತವಾಗಿ ML ಮಾದರಿ ಸಹಾಯ ಮಾಡಿತ್ತೇ! + +## ನಮಸ್ಕಾರ 'ವರ್ಗೀಕರಣಕಾರ' + +ನಾವು ಈ ಆಹಾರ ಡೇಟಾಸೆಟ್‌ನಿಂದ ಕೇಳಬೇಕಾದ ಪ್ರಶ್ನೆ ವಾಸ್ತವದಲ್ಲಿ **ಬಹು-ವರ್ಗ ಪ್ರಶ್ನೆ** ಆಗಿದ್ದು, ನಾವು ಹಲವಾರು ರಾಷ್ಟ್ರೀಯ ಆಹಾರಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ. ಪದಾರ್ಥಗಳ ಒಂದು ಬ್ಯಾಚ್ ನೀಡಿದಾಗ, ಈ ಅನೇಕ ವರ್ಗಗಳಲ್ಲಿ ಯಾವುದು ಡೇಟಾಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ? + +ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ ವಿವಿಧ ಸಮಸ್ಯೆಗಳ ಪ್ರಕಾರ ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸಲು ಹಲವಾರು ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ನೀಡುತ್ತದೆ. ಮುಂದಿನ ಎರಡು ಪಾಠಗಳಲ್ಲಿ ನೀವು ಈ ಆಲ್ಗಾರಿಥಮ್‌ಗಳ ಬಗ್ಗೆ ತಿಳಿಯುವಿರಿ. + +## ಅಭ್ಯಾಸ - ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಮತ್ತು ಸಮತೋಲಗೊಳಿಸಿ + +ಈ ಯೋಜನೆಯನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಮೊದಲ ಕಾರ್ಯವೆಂದರೆ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಮತ್ತು ಉತ್ತಮ ಫಲಿತಾಂಶಗಳಿಗಾಗಿ **ಸಮತೋಲಗೊಳಿಸುವುದು**. ಈ ಫೋಲ್ಡರ್‌ನ ರೂಟ್‌ನಲ್ಲಿ ಇರುವ ಖಾಲಿ _notebook.ipynb_ ಫೈಲ್‌ನಿಂದ ಪ್ರಾರಂಭಿಸಿ. + +ಮೊದಲಿಗೆ ಸ್ಥಾಪಿಸಬೇಕಾದದ್ದು [imblearn](https://imbalanced-learn.org/stable/) ಆಗಿದೆ. ಇದು ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ ಪ್ಯಾಕೇಜ್ ಆಗಿದ್ದು, ಡೇಟಾವನ್ನು ಉತ್ತಮವಾಗಿ ಸಮತೋಲಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ (ನೀವು ಈ ಕಾರ್ಯವನ್ನು ಸ್ವಲ್ಪ ನಂತರ ತಿಳಿಯುವಿರಿ). + +1. `imblearn` ಅನ್ನು ಸ್ಥಾಪಿಸಲು, ಈ ಕೆಳಗಿನಂತೆ `pip install` ಅನ್ನು ರನ್ ಮಾಡಿ: + + ```python + pip install imblearn + ``` + +1. ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಆಮದುಮಾಡಲು ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಲು ಬೇಕಾದ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಆಮದುಮಾಡಿ, ಜೊತೆಗೆ `imblearn` ನಿಂದ `SMOTE` ಅನ್ನು ಆಮದುಮಾಡಿ. + + ```python + import pandas as pd + import matplotlib.pyplot as plt + import matplotlib as mpl + import numpy as np + from imblearn.over_sampling import SMOTE + ``` + + ಈಗ ನೀವು ಮುಂದಿನ ಹಂತದಲ್ಲಿ ಡೇಟಾವನ್ನು ಆಮದುಮಾಡಲು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ. + +1. ಮುಂದಿನ ಕಾರ್ಯವೆಂದರೆ ಡೇಟಾವನ್ನು ಆಮದುಮಾಡುವುದು: + + ```python + df = pd.read_csv('../data/cuisines.csv') + ``` + + `read_csv()` ಬಳಸಿ _cusines.csv_ ಫೈಲ್‌ನ ವಿಷಯವನ್ನು ಓದಿ `df` ಎಂಬ ಚರದಲ್ಲಿ ಇಡುತ್ತದೆ. + +1. ಡೇಟಾದ ಆಕಾರವನ್ನು ಪರಿಶೀಲಿಸಿ: + + ```python + df.head() + ``` + + ಮೊದಲ ಐದು ಸಾಲುಗಳು ಹೀಗೆ ಕಾಣಿಸುತ್ತವೆ: + + ```output + | | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini | + | --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- | + | 0 | 65 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 1 | 66 | indian | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 2 | 67 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 3 | 68 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 4 | 69 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | + ``` + +1. `info()` ಅನ್ನು ಕರೆಸಿ ಈ ಡೇಟಾ ಬಗ್ಗೆ ಮಾಹಿತಿ ಪಡೆಯಿರಿ: + + ```python + df.info() + ``` + + ನಿಮ್ಮ ಔಟ್‌ಪುಟ್ ಹೀಗೆ ಕಾಣುತ್ತದೆ: + + ```output + + RangeIndex: 2448 entries, 0 to 2447 + Columns: 385 entries, Unnamed: 0 to zucchini + dtypes: int64(384), object(1) + memory usage: 7.2+ MB + ``` + +## ಅಭ್ಯಾಸ - ಆಹಾರಗಳ ಬಗ್ಗೆ ತಿಳಿದುಕೊಳ್ಳುವುದು + +ಈಗ ಕೆಲಸ ಇನ್ನಷ್ಟು ಆಸಕ್ತಿದಾಯಕವಾಗುತ್ತದೆ. ಪ್ರತಿ ಆಹಾರದ ಪ್ರಕಾರ ಡೇಟಾ ಹಂಚಿಕೆಯನ್ನು ಕಂಡುಹಿಡಿಯೋಣ + +1. `barh()` ಅನ್ನು ಕರೆಸಿ ಡೇಟಾವನ್ನು ಬಾರ್‌ಗಳಾಗಿ ಚಿತ್ರಿಸಿ: + + ```python + df.cuisine.value_counts().plot.barh() + ``` + + ![ಆಹಾರ ಡೇಟಾ ಹಂಚಿಕೆ](../../../../translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.kn.png) + + ಆಹಾರಗಳ ಸಂಖ್ಯೆ ಸೀಮಿತವಾಗಿದೆ, ಆದರೆ ಡೇಟಾ ಹಂಚಿಕೆ ಅಸಮಾನವಾಗಿದೆ. ನೀವು ಅದನ್ನು ಸರಿಪಡಿಸಬಹುದು! ಅದನ್ನು ಮಾಡುವ ಮೊದಲು, ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಅನ್ವೇಷಿಸಿ. + +1. ಪ್ರತಿ ಆಹಾರದ ಪ್ರಕಾರ ಎಷ್ಟು ಡೇಟಾ ಇದೆ ಎಂದು ಕಂಡುಹಿಡಿದು ಅದನ್ನು ಮುದ್ರಿಸಿ: + + ```python + thai_df = df[(df.cuisine == "thai")] + japanese_df = df[(df.cuisine == "japanese")] + chinese_df = df[(df.cuisine == "chinese")] + indian_df = df[(df.cuisine == "indian")] + korean_df = df[(df.cuisine == "korean")] + + print(f'thai df: {thai_df.shape}') + print(f'japanese df: {japanese_df.shape}') + print(f'chinese df: {chinese_df.shape}') + print(f'indian df: {indian_df.shape}') + print(f'korean df: {korean_df.shape}') + ``` + + ಔಟ್‌ಪುಟ್ ಹೀಗೆ ಕಾಣುತ್ತದೆ: + + ```output + thai df: (289, 385) + japanese df: (320, 385) + chinese df: (442, 385) + indian df: (598, 385) + korean df: (799, 385) + ``` + +## ಪದಾರ್ಥಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು + +ಈಗ ನೀವು ಡೇಟಾದಲ್ಲಿ ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ಹೋಗಿ ಪ್ರತಿ ಆಹಾರದ ಪ್ರಕಾರ ಸಾಮಾನ್ಯ ಪದಾರ್ಥಗಳು ಯಾವುವು ಎಂದು ತಿಳಿದುಕೊಳ್ಳಬಹುದು. ಆಹಾರಗಳ ನಡುವೆ ಗೊಂದಲ ಉಂಟುಮಾಡುವ ಪುನರಾವರ್ತಿತ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಬೇಕು, ಆದ್ದರಿಂದ ಈ ಸಮಸ್ಯೆಯ ಬಗ್ಗೆ ತಿಳಿಯೋಣ. + +1. ಪೈಥಾನ್‌ನಲ್ಲಿ `create_ingredient()` ಎಂಬ ಫಂಕ್ಷನ್ ರಚಿಸಿ, ಇದು ಒಂದು ಪದಾರ್ಥ ಡೇಟಾಫ್ರೇಮ್ ರಚಿಸುತ್ತದೆ. ಈ ಫಂಕ್ಷನ್ ಒಂದು ಅನಗತ್ಯ ಕಾಲಮ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ, ಪದಾರ್ಥಗಳನ್ನು ಅವರ ಎಣಿಕೆಯ ಪ್ರಕಾರ ವಿಂಗಡಿಸುತ್ತದೆ: + + ```python + def create_ingredient_df(df): + ingredient_df = df.T.drop(['cuisine','Unnamed: 0']).sum(axis=1).to_frame('value') + ingredient_df = ingredient_df[(ingredient_df.T != 0).any()] + ingredient_df = ingredient_df.sort_values(by='value', ascending=False, + inplace=False) + return ingredient_df + ``` + + ಈಗ ನೀವು ಆ ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸಿ ಪ್ರತಿ ಆಹಾರದ ಪ್ರಕಾರ ಟಾಪ್ ಹತ್ತು ಜನಪ್ರಿಯ ಪದಾರ್ಥಗಳ ಬಗ್ಗೆ ತಿಳಿದುಕೊಳ್ಳಬಹುದು. + +1. `create_ingredient()` ಅನ್ನು ಕರೆಸಿ ಮತ್ತು `barh()` ಅನ್ನು ಕರೆಸಿ ಚಿತ್ರಿಸಿ: + + ```python + thai_ingredient_df = create_ingredient_df(thai_df) + thai_ingredient_df.head(10).plot.barh() + ``` + + ![ಥಾಯ್](../../../../translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.kn.png) + +1. ಜಪಾನೀಸ್ ಡೇಟಾ ಬಗ್ಗೆ ಅದೇ ರೀತಿಯಲ್ಲಿ ಮಾಡಿ: + + ```python + japanese_ingredient_df = create_ingredient_df(japanese_df) + japanese_ingredient_df.head(10).plot.barh() + ``` + + ![ಜಪಾನೀಸ್](../../../../translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.kn.png) + +1. ಈಗ ಚೈನೀಸ್ ಪದಾರ್ಥಗಳಿಗಾಗಿ: + + ```python + chinese_ingredient_df = create_ingredient_df(chinese_df) + chinese_ingredient_df.head(10).plot.barh() + ``` + + ![ಚೈನೀಸ್](../../../../translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.kn.png) + +1. ಇಂಡಿಯನ್ ಪದಾರ್ಥಗಳನ್ನು ಚಿತ್ರಿಸಿ: + + ```python + indian_ingredient_df = create_ingredient_df(indian_df) + indian_ingredient_df.head(10).plot.barh() + ``` + + ![ಇಂಡಿಯನ್](../../../../translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.kn.png) + +1. ಕೊನೆಗೆ, ಕೊರಿಯನ್ ಪದಾರ್ಥಗಳನ್ನು ಚಿತ್ರಿಸಿ: + + ```python + korean_ingredient_df = create_ingredient_df(korean_df) + korean_ingredient_df.head(10).plot.barh() + ``` + + ![ಕೊರಿಯನ್](../../../../translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.kn.png) + +1. ಈಗ, ವಿಭಿನ್ನ ಆಹಾರಗಳ ನಡುವೆ ಗೊಂದಲ ಉಂಟುಮಾಡುವ ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಪದಾರ್ಥಗಳನ್ನು `drop()` ಅನ್ನು ಕರೆಸಿ ತೆಗೆದುಹಾಕಿ: + + ಎಲ್ಲರೂ ಅಕ್ಕಿಯನ್ನು, ಬೆಳ್ಳುಳ್ಳಿ ಮತ್ತು ಶುಂಠಿಯನ್ನು ಇಷ್ಟಪಡುತ್ತಾರೆ! + + ```python + feature_df= df.drop(['cuisine','Unnamed: 0','rice','garlic','ginger'], axis=1) + labels_df = df.cuisine #.ಅನನ್ಯ() + feature_df.head() + ``` + +## ಡೇಟಾಸೆಟ್ ಸಮತೋಲಗೊಳಿಸಿ + +ನೀವು ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿದ ನಂತರ, [SMOTE](https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html) - "ಸಿಂಥೆಟಿಕ್ ಮೈನಾರಿಟಿ ಓವರ್-ಸ್ಯಾಂಪ್ಲಿಂಗ್ ತಂತ್ರ" - ಬಳಸಿ ಅದನ್ನು ಸಮತೋಲಗೊಳಿಸಿ. + +1. `fit_resample()` ಅನ್ನು ಕರೆಸಿ, ಈ ತಂತ್ರವು ಇಂಟರ್‌ಪೋಲೇಶನ್ ಮೂಲಕ ಹೊಸ ಮಾದರಿಗಳನ್ನು ರಚಿಸುತ್ತದೆ. + + ```python + oversample = SMOTE() + transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df) + ``` + + ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಮತೋಲಗೊಳಿಸುವ ಮೂಲಕ, ನೀವು ಅದನ್ನು ವರ್ಗೀಕರಿಸುವಾಗ ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ಪಡೆಯುತ್ತೀರಿ. ದ್ವೈತ ವರ್ಗೀಕರಣವನ್ನು ಯೋಚಿಸಿ. ನಿಮ್ಮ ಡೇಟಾದ ಬಹುಮತವು ಒಂದು ವರ್ಗವಾಗಿದ್ದರೆ, ML ಮಾದರಿ ಆ ವರ್ಗವನ್ನು ಹೆಚ್ಚು ಬಾರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ, ಏಕೆಂದರೆ ಅದಕ್ಕೆ ಹೆಚ್ಚು ಡೇಟಾ ಇದೆ. ಡೇಟಾ ಸಮತೋಲಗೊಳಿಸುವುದು ಯಾವುದೇ ತಿರುವು ಹೊಂದಿದ ಡೇಟಾವನ್ನು ತೆಗೆದುಹಾಕಿ ಈ ಅಸಮತೋಲನವನ್ನು ನಿವಾರಿಸುತ್ತದೆ. + +1. ಈಗ ನೀವು ಪದಾರ್ಥ ಪ್ರತಿ ಲೇಬಲ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಪರಿಶೀಲಿಸಬಹುದು: + + ```python + print(f'new label count: {transformed_label_df.value_counts()}') + print(f'old label count: {df.cuisine.value_counts()}') + ``` + + ನಿಮ್ಮ ಔಟ್‌ಪುಟ್ ಹೀಗೆ ಕಾಣುತ್ತದೆ: + + ```output + new label count: korean 799 + chinese 799 + indian 799 + japanese 799 + thai 799 + Name: cuisine, dtype: int64 + old label count: korean 799 + indian 598 + chinese 442 + japanese 320 + thai 289 + Name: cuisine, dtype: int64 + ``` + + ಡೇಟಾ ಚೆನ್ನಾಗಿ ಸ್ವಚ್ಛ, ಸಮತೋಲಿತ ಮತ್ತು ಬಹಳ ರುಚಿಕರವಾಗಿದೆ! + +1. ಕೊನೆಯ ಹಂತವೆಂದರೆ ನಿಮ್ಮ ಸಮತೋಲಿತ ಡೇಟಾವನ್ನು, ಲೇಬಲ್‌ಗಳು ಮತ್ತು ಲಕ್ಷಣಗಳನ್ನು ಒಳಗೊಂಡಂತೆ, ಹೊಸ ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಉಳಿಸಿ, ಅದನ್ನು ಫೈಲ್‌ಗೆ ರಫ್ತು ಮಾಡಬಹುದು: + + ```python + transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer') + ``` + +1. `transformed_df.head()` ಮತ್ತು `transformed_df.info()` ಬಳಸಿ ಡೇಟಾವನ್ನು ಮತ್ತೊಮ್ಮೆ ಪರಿಶೀಲಿಸಬಹುದು. ಭವಿಷ್ಯದ ಪಾಠಗಳಲ್ಲಿ ಬಳಸಲು ಈ ಡೇಟಾ ನಕಲನ್ನು ಉಳಿಸಿ: + + ```python + transformed_df.head() + transformed_df.info() + transformed_df.to_csv("../data/cleaned_cuisines.csv") + ``` + + ಈ ಹೊಸ CSV ಈಗ ರೂಟ್ ಡೇಟಾ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ದೊರೆಯುತ್ತದೆ. + +--- + +## 🚀ಸವಾಲು + +ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಹಲವಾರು ಆಸಕ್ತಿದಾಯಕ ಡೇಟಾಸೆಟ್‌ಗಳಿವೆ. `data` ಫೋಲ್ಡರ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ, ಯಾವುದು ದ್ವೈತ ಅಥವಾ ಬಹು-ವರ್ಗ ವರ್ಗೀಕರಣಕ್ಕೆ ಸೂಕ್ತವಾಗಿರಬಹುದು? ನೀವು ಆ ಡೇಟಾಸೆಟ್‌ನಿಂದ ಯಾವ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳುತ್ತೀರಿ? + +## [ಪೋಸ್ಟ್-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +SMOTE ನ API ಅನ್ನು ಅನ್ವೇಷಿಸಿ. ಯಾವ ಬಳಕೆ ಪ್ರಕರಣಗಳಿಗೆ ಇದು ಅತ್ಯುತ್ತಮ? ಯಾವ ಸಮಸ್ಯೆಗಳನ್ನು ಇದು ಪರಿಹರಿಸುತ್ತದೆ? + +## ನಿಯೋಜನೆ + +[ವರ್ಗೀಕರಣ ವಿಧಾನಗಳನ್ನು ಅನ್ವೇಷಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/4-Classification/1-Introduction/assignment.md b/translations/kn/4-Classification/1-Introduction/assignment.md new file mode 100644 index 000000000..f60c47b2d --- /dev/null +++ b/translations/kn/4-Classification/1-Introduction/assignment.md @@ -0,0 +1,27 @@ + +# ವರ್ಗೀಕರಣ ವಿಧಾನಗಳನ್ನು ಅನ್ವೇಷಿಸಿ + +## ಸೂಚನೆಗಳು + +[Scikit-learn ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://scikit-learn.org/stable/supervised_learning.html) ನಲ್ಲಿ ನೀವು ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸುವ ಹಲವು ವಿಧಾನಗಳ ದೊಡ್ಡ ಪಟ್ಟಿ ಕಂಡುಹಿಡಿಯಬಹುದು. ಈ ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳಲ್ಲಿ ಸ್ವಲ್ಪ ಹುಡುಕಾಟ ಮಾಡಿ: ನಿಮ್ಮ ಗುರಿ ವರ್ಗೀಕರಣ ವಿಧಾನಗಳನ್ನು ಹುಡುಕಿ, ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿರುವ ಡೇಟಾಸೆಟ್‌ಗಳಿಗೆ ಹೊಂದಿಸಿ, ಅದಕ್ಕೆ ಕೇಳಬಹುದಾದ ಪ್ರಶ್ನೆಯನ್ನು ಮತ್ತು ವರ್ಗೀಕರಣ ತಂತ್ರವನ್ನು ಹೊಂದಿಸಿ. .doc ಫೈಲ್‌ನಲ್ಲಿ ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಅಥವಾ ಟೇಬಲ್ ರಚಿಸಿ ಮತ್ತು ಡೇಟಾಸೆಟ್ ವರ್ಗೀಕರಣ ಆಲ್ಗೋರಿದಮ್‌ಗಳೊಂದಿಗೆ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ವಿವರಿಸಿ. + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯ | +| -------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| | 5 ಆಲ್ಗೋರಿದಮ್‌ಗಳೊಂದಿಗೆ ವರ್ಗೀಕರಣ ತಂತ್ರವನ್ನು ವಿವರಿಸುವ ಡಾಕ್ಯುಮೆಂಟ್ ಒದಗಿಸಲಾಗಿದೆ. ಅವಲೋಕನ ಚೆನ್ನಾಗಿ ವಿವರಿಸಲಾಗಿದೆ ಮತ್ತು ವಿವರವಾದದ್ದು. | 3 ಆಲ್ಗೋರಿದಮ್‌ಗಳೊಂದಿಗೆ ವರ್ಗೀಕರಣ ತಂತ್ರವನ್ನು ವಿವರಿಸುವ ಡಾಕ್ಯುಮೆಂಟ್ ಒದಗಿಸಲಾಗಿದೆ. ಅವಲೋಕನ ಚೆನ್ನಾಗಿ ವಿವರಿಸಲಾಗಿದೆ ಮತ್ತು ವಿವರವಾದದ್ದು. | 3 ಕ್ಕಿಂತ ಕಡಿಮೆ ಆಲ್ಗೋರಿದಮ್‌ಗಳೊಂದಿಗೆ ವರ್ಗೀಕರಣ ತಂತ್ರವನ್ನು ವಿವರಿಸುವ ಡಾಕ್ಯುಮೆಂಟ್ ಒದಗಿಸಲಾಗಿದೆ ಮತ್ತು ಅವಲೋಕನ ಚೆನ್ನಾಗಿ ವಿವರಿಸಲ್ಪಟ್ಟಿಲ್ಲ ಅಥವಾ ವಿವರವಾದದ್ದು ಅಲ್ಲ. | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/4-Classification/1-Introduction/notebook.ipynb b/translations/kn/4-Classification/1-Introduction/notebook.ipynb new file mode 100644 index 000000000..5180781f6 --- /dev/null +++ b/translations/kn/4-Classification/1-Introduction/notebook.ipynb @@ -0,0 +1,41 @@ +{ + "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": "d544ef384b7ba73757d830a72372a7f2", + "translation_date": "2025-12-19T17:02:36+00:00", + "source_file": "4-Classification/1-Introduction/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/4-Classification/1-Introduction/solution/Julia/README.md b/translations/kn/4-Classification/1-Introduction/solution/Julia/README.md new file mode 100644 index 000000000..3ea200872 --- /dev/null +++ b/translations/kn/4-Classification/1-Introduction/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb b/translations/kn/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb new file mode 100644 index 000000000..20389b2bf --- /dev/null +++ b/translations/kn/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb @@ -0,0 +1,731 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_10-R.ipynb", + "provenance": [], + "collapsed_sections": [] + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "2621e24705e8100893c9bf84e0fc8aef", + "translation_date": "2025-12-19T17:08:55+00:00", + "source_file": "4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb", + "language_code": "kn" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ವರ್ಗೀಕರಣ ಮಾದರಿ ನಿರ್ಮಿಸಿ: ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು\n" + ], + "metadata": { + "id": "ItETB4tSFprR" + } + }, + { + "cell_type": "markdown", + "source": [ + "## ವರ್ಗೀಕರಣಕ್ಕೆ ಪರಿಚಯ: ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ, ಸಿದ್ಧಪಡಿಸಿ ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಿ\n", + "\n", + "ಈ ನಾಲ್ಕು ಪಾಠಗಳಲ್ಲಿ, ನೀವು ಕ್ಲಾಸಿಕ್ ಯಂತ್ರ ಅಧ್ಯಯನದ ಮೂಲಭೂತ ಗಮನಾರ್ಹ ವಿಷಯವಾದ *ವರ್ಗೀಕರಣ* ಅನ್ನು ಅನ್ವೇಷಿಸುವಿರಿ. ಏಷ್ಯಾ ಮತ್ತು ಭಾರತದಲ್ಲಿನ ಎಲ್ಲಾ ಅದ್ಭುತ ಆಹಾರಗಳ ಬಗ್ಗೆ ಇರುವ ಡೇಟಾಸೆಟ್‌ನೊಂದಿಗೆ ವಿವಿಧ ವರ್ಗೀಕರಣ ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಬಳಸುವುದನ್ನು ನಾವು ಹಾದುಹೋಗುತ್ತೇವೆ. ನೀವು ಹಸಿವಾಗಿದ್ದೀರಾ ಎಂದು ಆಶಿಸುತ್ತೇವೆ!\n", + "\n", + "

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

ಈ ಪಾಠಗಳಲ್ಲಿ ಪ್ಯಾನ್-ಏಷಿಯನ್ ಆಹಾರಗಳನ್ನು ಆಚರಿಸಿ! ಚಿತ್ರ: ಜೆನ್ ಲೂಪರ್
\n", + "\n", + "\n", + "\n", + "\n", + "ವರ್ಗೀಕರಣವು [ನಿರೀಕ್ಷಿತ ಅಧ್ಯಯನ](https://wikipedia.org/wiki/Supervised_learning)ದ ಒಂದು ರೂಪವಾಗಿದ್ದು, ರಿಗ್ರೆಷನ್ ತಂತ್ರಜ್ಞಾನಗಳೊಂದಿಗೆ ಬಹಳ ಸಾಮಾನ್ಯತೆ ಹೊಂದಿದೆ. ವರ್ಗೀಕರಣದಲ್ಲಿ, ನೀವು ಒಂದು ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುತ್ತೀರಿ ಅದು ಯಾವ `ವರ್ಗ`ಕ್ಕೆ ಒಂದು ಐಟಂ ಸೇರಿದೆ ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ. ಯಂತ್ರ ಅಧ್ಯಯನವು ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ವಸ್ತುಗಳಿಗೆ ಮೌಲ್ಯಗಳು ಅಥವಾ ಹೆಸರುಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದರ ಬಗ್ಗೆ ಇದ್ದರೆ, ವರ್ಗೀಕರಣ ಸಾಮಾನ್ಯವಾಗಿ ಎರಡು ಗುಂಪುಗಳಿಗೆ ಬಿದ್ದುಹೋಗುತ್ತದೆ: *ದ್ವಿಪದ ವರ್ಗೀಕರಣ* ಮತ್ತು *ಬಹುಪದ ವರ್ಗೀಕರಣ*.\n", + "\n", + "ಸ್ಮರಿಸಿ:\n", + "\n", + "- **ರೇಖೀಯ ರಿಗ್ರೆಷನ್** ನಿಮಗೆ ಚರಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಮತ್ತು ಹೊಸ ಡೇಟಾಪಾಯಿಂಟ್ ಆ ರೇಖೆಯ ಸಂಬಂಧದಲ್ಲಿ ಎಲ್ಲಿ ಬಿದ್ದೀತೆ ಎಂಬುದನ್ನು ನಿಖರವಾಗಿ ಊಹಿಸಲು ಸಹಾಯ ಮಾಡಿತು. ಆದ್ದರಿಂದ, ನೀವು ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು, ಉದಾಹರಣೆಗೆ *ಸೆಪ್ಟೆಂಬರ್ ಮತ್ತು ಡಿಸೆಂಬರ್‌ನಲ್ಲಿ ಕಂಬಳಿಯ ಬೆಲೆ ಏನು ಇರುತ್ತದೆ* ಎಂದು.\n", + "\n", + "- **ಲಾಗಿಸ್ಟಿಕ್ ರಿಗ್ರೆಷನ್** ನಿಮಗೆ \"ದ್ವಿಪದ ವರ್ಗಗಳು\" ಅನ್ನು ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡಿತು: ಈ ಬೆಲೆ ಮಟ್ಟದಲ್ಲಿ, *ಈ ಕಂಬಳಿ ಕಿತ್ತಳೆ ಬಣ್ಣದದೆಯೇ ಅಥವಾ ಅಲ್ಲವೇ*?\n", + "\n", + "ವರ್ಗೀಕರಣವು ಡೇಟಾ ಪಾಯಿಂಟ್‌ನ ಲೇಬಲ್ ಅಥವಾ ವರ್ಗವನ್ನು ನಿರ್ಧರಿಸಲು ವಿವಿಧ ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಈ ಆಹಾರ ಡೇಟಾ ಜೊತೆ ಕೆಲಸ ಮಾಡಿ, ಒಂದು ಗುಂಪಿನ ಪದಾರ್ಥಗಳನ್ನು ಗಮನಿಸಿ ಅದರ ಮೂಲ ಆಹಾರವನ್ನು ನಾವು ನಿರ್ಧರಿಸಬಹುದೇ ಎಂದು ನೋಡೋಣ.\n", + "\n", + "### [**ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/19/)\n", + "\n", + "### **ಪರಿಚಯ**\n", + "\n", + "ವರ್ಗೀಕರಣವು ಯಂತ್ರ ಅಧ್ಯಯನ ಸಂಶೋಧಕ ಮತ್ತು ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಮೂಲಭೂತ ಚಟುವಟಿಕೆಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. ಒಂದು ದ್ವಿಪದ ಮೌಲ್ಯದ ಮೂಲಭೂತ ವರ್ಗೀಕರಣದಿಂದ (\"ಈ ಇಮೇಲ್ ಸ್ಪ್ಯಾಮ್ ಆಗಿದೆಯೇ ಇಲ್ಲವೇ?\"), ಸಂಕೀರ್ಣ ಚಿತ್ರ ವರ್ಗೀಕರಣ ಮತ್ತು ವಿಭಾಗೀಕರಣದವರೆಗೆ, ಡೇಟಾವನ್ನು ವರ್ಗಗಳಲ್ಲಿ ವಿಂಗಡಿಸಿ ಅದಕ್ಕೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳುವುದು ಸದಾ ಉಪಯುಕ್ತ.\n", + "\n", + "ವಿಜ್ಞಾನಾತ್ಮಕವಾಗಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಹೇಳುವುದಾದರೆ, ನಿಮ್ಮ ವರ್ಗೀಕರಣ ವಿಧಾನವು ಇನ್ಪುಟ್ ಚರಗಳ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಚರಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ನಕ್ಷೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗುವ ಭವಿಷ್ಯವಾಣಿ ಮಾದರಿಯನ್ನು ರಚಿಸುತ್ತದೆ.\n", + "\n", + "

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

ವರ್ಗೀಕರಣ ಆಲ್ಗಾರಿಥಮ್‌ಗಳು ನಿರ್ವಹಿಸಬೇಕಾದ ದ್ವಿಪದ ಮತ್ತು ಬಹುಪದ ಸಮಸ್ಯೆಗಳು. ಇನ್ಫೋಗ್ರಾಫಿಕ್: ಜೆನ್ ಲೂಪರ್
\n", + "\n", + "\n", + "\n", + "ನಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುವ, ದೃಶ್ಯೀಕರಿಸುವ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ ಕಾರ್ಯಗಳಿಗೆ ಸಿದ್ಧಪಡಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸಲು ಬಳಸಬಹುದಾದ ವಿವಿಧ ಮಾರ್ಗಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳೋಣ.\n", + "\n", + "[ಸಂಖ್ಯಾಶಾಸ್ತ್ರ](https://wikipedia.org/wiki/Statistical_classification)ದಿಂದ ಪಡೆದ, ಕ್ಲಾಸಿಕ್ ಯಂತ್ರ ಅಧ್ಯಯನ ಬಳಸಿ ವರ್ಗೀಕರಣವು `ಧೂಮಪಾನಿ`, `ತೂಕ`, ಮತ್ತು `ವಯಸ್ಸು` ಮುಂತಾದ ಲಕ್ಷಣಗಳನ್ನು ಬಳಸಿಕೊಂಡು *X ರೋಗದ ಸಂಭವನೀಯತೆ* ಅನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ನೀವು ಮೊದಲು ಮಾಡಿದ ರಿಗ್ರೆಷನ್ ಅಭ್ಯಾಸಗಳಂತೆ, ಇದು ಒಂದು ನಿರೀಕ್ಷಿತ ಅಧ್ಯಯನ ತಂತ್ರವಾಗಿದೆ, ನಿಮ್ಮ ಡೇಟಾ ಲೇಬಲ್ ಮಾಡಲ್ಪಟ್ಟಿದ್ದು, ಯಂತ್ರ ಅಧ್ಯಯನ ಆಲ್ಗಾರಿಥಮ್‌ಗಳು ಆ ಲೇಬಲ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾಸೆಟ್‌ನ ವರ್ಗಗಳನ್ನು (ಅಥವಾ 'ಲಕ್ಷಣಗಳನ್ನು') ವರ್ಗೀಕರಿಸಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತವೆ ಮತ್ತು ಅವುಗಳನ್ನು ಗುಂಪು ಅಥವಾ ಫಲಿತಾಂಶಕ್ಕೆ ನಿಯೋಜಿಸುತ್ತವೆ.\n", + "\n", + "✅ ಆಹಾರಗಳ ಬಗ್ಗೆ ಒಂದು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಕಲ್ಪಿಸಿ. ಬಹುಪದ ಮಾದರಿ ಏನು ಉತ್ತರಿಸಬಹುದು? ದ್ವಿಪದ ಮಾದರಿ ಏನು ಉತ್ತರಿಸಬಹುದು? ನೀವು ಒಂದು ನಿರ್ದಿಷ್ಟ ಆಹಾರದಲ್ಲಿ ಮೆಂತ್ಯ ಬಳಕೆಯಾಗುವ ಸಾಧ್ಯತೆಯನ್ನು ನಿರ್ಧರಿಸಲು ಬಯಸಿದರೆ? ನೀವು ಸ್ಟಾರ್ ಅನೀಸ್, ಆರ್ಟಿಚೋಕ್, ಹೂಕೋಸು ಮತ್ತು ಹರ್ಸರಾಡಿಷ್ ತುಂಬಿದ ಗ್ರೋಸರಿ ಬ್ಯಾಗ್ ಇದ್ದಾಗ, ನೀವು ಸಾಮಾನ್ಯ ಭಾರತೀಯ ವಾನಗಿಯನ್ನು ರಚಿಸಬಹುದೇ ಎಂದು ನೋಡಲು ಬಯಸಿದರೆ?\n", + "\n", + "### **ಹಲೋ 'ವರ್ಗೀಕರಣಕಾರ'**\n", + "\n", + "ನಾವು ಈ ಆಹಾರ ಡೇಟಾಸೆಟ್‌ಗೆ ಕೇಳಬೇಕಾದ ಪ್ರಶ್ನೆ ವಾಸ್ತವವಾಗಿ ಒಂದು **ಬಹುಪದ ಪ್ರಶ್ನೆ**, ಏಕೆಂದರೆ ನಾವು ಹಲವಾರು ರಾಷ್ಟ್ರೀಯ ಆಹಾರಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೇವೆ. ಪದಾರ್ಥಗಳ ಒಂದು ಬ್ಯಾಚ್ ನೀಡಿದಾಗ, ಈ ಅನೇಕ ವರ್ಗಗಳಲ್ಲಿ ಯಾವುದು ಡೇಟಾ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ?\n", + "\n", + "ಟಿಡಿಮೋಡಲ್ಸ್ ವಿವಿಧ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಬಳಸಬಹುದಾದ ವಿವಿಧ ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಮುಂದಿನ ಎರಡು ಪಾಠಗಳಲ್ಲಿ, ನೀವು ಈ ಆಲ್ಗಾರಿಥಮ್‌ಗಳ ಬಗ್ಗೆ ತಿಳಿಯುವಿರಿ.\n", + "\n", + "#### **ಪೂರ್ವಾಪೇಕ್ಷಿತ**\n", + "\n", + "ಈ ಪಾಠಕ್ಕಾಗಿ, ನಾವು ನಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಲು, ಸಿದ್ಧಪಡಿಸಲು ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಲು ಕೆಳಗಿನ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಅಗತ್ಯವಿದೆ:\n", + "\n", + "- `tidyverse`: [ಟಿಡಿವರ್ಸ್](https://www.tidyverse.org/) ಒಂದು [R ಪ್ಯಾಕೇಜ್‌ಗಳ ಸಂಗ್ರಹ](https://www.tidyverse.org/packages) ಆಗಿದ್ದು, ಡೇಟಾ ವಿಜ್ಞಾನವನ್ನು ವೇಗವಾಗಿ, ಸುಲಭವಾಗಿ ಮತ್ತು ಮನರಂಜನೀಯವಾಗಿ ಮಾಡುತ್ತದೆ!\n", + "\n", + "- `tidymodels`: [ಟಿಡಿಮೋಡಲ್ಸ್](https://www.tidymodels.org/) ಫ್ರೇಮ್ವರ್ಕ್ ಒಂದು [ಪ್ಯಾಕೇಜ್‌ಗಳ ಸಂಗ್ರಹ](https://www.tidymodels.org/packages/) ಆಗಿದ್ದು, ಮಾದರೀಕರಣ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಉಪಯುಕ್ತವಾಗಿದೆ.\n", + "\n", + "- `DataExplorer`: [ಡೇಟಾ ಎಕ್ಸ್‌ಪ್ಲೋರರ್ ಪ್ಯಾಕೇಜ್](https://cran.r-project.org/web/packages/DataExplorer/vignettes/dataexplorer-intro.html) EDA ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ವರದಿ ತಯಾರಿಕೆಯನ್ನು ಸರಳಗೊಳಿಸಲು ಮತ್ತು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸಲು ಉದ್ದೇಶಿಸಲಾಗಿದೆ.\n", + "\n", + "- `themis`: [ಥೆಮಿಸ್ ಪ್ಯಾಕೇಜ್](https://themis.tidymodels.org/) ಅಸಮತೋಲನ ಡೇಟಾ ನಿರ್ವಹಣೆಗೆ ಹೆಚ್ಚುವರಿ ರೆಸಿಪಿ ಹಂತಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.\n", + "\n", + "ನೀವು ಅವುಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬಹುದು:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"DataExplorer\", \"here\"))`\n", + "\n", + "ಬದಲಾಗಿ, ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ಈ ಮಾಯಾಜಾಲವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜ್‌ಗಳಿದ್ದಾರೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ, ಅವು ಇಲ್ಲದಿದ್ದರೆ ನಿಮ್ಮಿಗಾಗಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ.\n" + ], + "metadata": { + "id": "ri5bQxZ-Fz_0" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\r\n", + "\r\n", + "pacman::p_load(tidyverse, tidymodels, DataExplorer, themis, here)" + ], + "outputs": [], + "metadata": { + "id": "KIPxa4elGAPI" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನಾವು ನಂತರ ಈ ಅದ್ಭುತ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ ನಮ್ಮ ಪ್ರಸ್ತುತ R ಸೆಷನ್‌ನಲ್ಲಿ ಲಭ್ಯವಿರಿಸುವೆವು. (ಇದು ಕೇವಲ ಉದಾಹರಣೆಗೆ, `pacman::p_load()` ಈಗಾಗಲೇ ಅದನ್ನು ನಿಮ್ಮಿಗಾಗಿ ಮಾಡಿದೆ)\n" + ], + "metadata": { + "id": "YkKAxOJvGD4C" + } + }, + { + "cell_type": "markdown", + "source": [ + "## ವ್ಯಾಯಾಮ - ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಮತ್ತು ಸಮತೋಲಗೊಳಿಸಿ\n", + "\n", + "ಈ ಯೋಜನೆಯನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಮೊದಲ ಕಾರ್ಯವೆಂದರೆ ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ಪಡೆಯಲು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಮತ್ತು **ಸಮತೋಲಗೊಳಿಸುವುದು**\n", + "\n", + "ಡೇಟಾವನ್ನು ಪರಿಚಯಿಸೋಣ!🕵️\n" + ], + "metadata": { + "id": "PFkQDlk0GN5O" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Import data\r\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/4-Classification/data/cuisines.csv\")\r\n", + "\r\n", + "# View the first 5 rows\r\n", + "df %>% \r\n", + " slice_head(n = 5)\r\n" + ], + "outputs": [], + "metadata": { + "id": "Qccw7okxGT0S" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಆಕರ್ಷಕವಾಗಿದೆ! ನೋಡಿದಂತೆ, ಮೊದಲ ಕಾಲಮ್ ಒಂದು ರೀತಿಯ `id` ಕಾಲಮ್ ಆಗಿದೆ. ಡೇಟಾ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಮಾಹಿತಿ ಪಡೆಯೋಣ.\n" + ], + "metadata": { + "id": "XrWnlgSrGVmR" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Basic information about the data\r\n", + "df %>%\r\n", + " introduce()\r\n", + "\r\n", + "# Visualize basic information above\r\n", + "df %>% \r\n", + " plot_intro(ggtheme = theme_light())" + ], + "outputs": [], + "metadata": { + "id": "4UcGmxRxGieA" + } + }, + { + "cell_type": "markdown", + "source": [ + "From the output, we can immediately see that we have `2448` rows and `385` columns and `0` missing values. We also have 1 discrete column, *cuisine*.\n", + "\n", + "## ವ್ಯಾಯಾಮ - ಆಹಾರ ಶೈಲಿಗಳ ಬಗ್ಗೆ ತಿಳಿದುಕೊಳ್ಳುವುದು\n", + "\n", + "ಈಗ ಕೆಲಸ ಹೆಚ್ಚು ಆಸಕ್ತಿದಾಯಕವಾಗಲು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಪ್ರತಿ ಆಹಾರ ಶೈಲಿಗೆ ಪ್ರಕಾರದ ಡೇಟಾ ವಿತರಣೆ ಕಂಡುಹಿಡಿಯೋಣ.\n" + ], + "metadata": { + "id": "AaPubl__GmH5" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Count observations per cuisine\r\n", + "df %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(n)\r\n", + "\r\n", + "# Plot the distribution\r\n", + "theme_set(theme_light())\r\n", + "df %>% \r\n", + " count(cuisine) %>% \r\n", + " ggplot(mapping = aes(x = n, y = reorder(cuisine, -n))) +\r\n", + " geom_col(fill = \"midnightblue\", alpha = 0.7) +\r\n", + " ylab(\"cuisine\")" + ], + "outputs": [], + "metadata": { + "id": "FRsBVy5eGrrv" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಸಂಖ್ಯಾತ್ಮಕವಾದ ಅಡುಗೆಶೈಲಿಗಳು ಇವೆ, ಆದರೆ ಡೇಟಾದ ವಿತರಣೆಯು ಅಸಮಾನವಾಗಿದೆ. ನೀವು ಅದನ್ನು ಸರಿಪಡಿಸಬಹುದು! ಅದನ್ನು ಮಾಡುವ ಮೊದಲು, ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಅನ್ವೇಷಿಸಿ.\n", + "\n", + "ಮುಂದೆ, ಪ್ರತಿ ಅಡುಗೆಶೈಲಿಯನ್ನು ಅದರ ಸ್ವತಂತ್ರ ಟಿಬಲ್‌ಗೆ ಹಂಚಿ ಮತ್ತು ಪ್ರತಿ ಅಡುಗೆಶೈಲಿಗೆ ಎಷ್ಟು ಡೇಟಾ ಲಭ್ಯವಿದೆ (ಸಾಲುಗಳು, ಕಾಲಮ್‌ಗಳು) ಎಂದು ಕಂಡುಹಿಡಿಯೋಣ.\n", + "\n", + "> [ಟಿಬಲ್](https://tibble.tidyverse.org/) ಒಂದು ಆಧುನಿಕ ಡೇಟಾ ಫ್ರೇಮ್ ಆಗಿದೆ.\n", + "\n", + "

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

ಕಲಾಕೃತಿ @allison_horst ಅವರಿಂದ
\n" + ], + "metadata": { + "id": "vVvyDb1kG2in" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Create individual tibble for the cuisines\r\n", + "thai_df <- df %>% \r\n", + " filter(cuisine == \"thai\")\r\n", + "japanese_df <- df %>% \r\n", + " filter(cuisine == \"japanese\")\r\n", + "chinese_df <- df %>% \r\n", + " filter(cuisine == \"chinese\")\r\n", + "indian_df <- df %>% \r\n", + " filter(cuisine == \"indian\")\r\n", + "korean_df <- df %>% \r\n", + " filter(cuisine == \"korean\")\r\n", + "\r\n", + "\r\n", + "# Find out how much data is available per cuisine\r\n", + "cat(\" thai df:\", dim(thai_df), \"\\n\",\r\n", + " \"japanese df:\", dim(japanese_df), \"\\n\",\r\n", + " \"chinese_df:\", dim(chinese_df), \"\\n\",\r\n", + " \"indian_df:\", dim(indian_df), \"\\n\",\r\n", + " \"korean_df:\", dim(korean_df))" + ], + "outputs": [], + "metadata": { + "id": "0TvXUxD3G8Bk" + } + }, + { + "cell_type": "markdown", + "source": [ + "Perfect!😋\n", + "\n", + "## **ವ್ಯಾಯಾಮ - dplyr ಬಳಸಿ ಆಹಾರ ಪ್ರಕಾರದ ಪ್ರಾಥಮಿಕ ಪದಾರ್ಥಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು**\n", + "\n", + "ಈಗ ನೀವು ಡೇಟಾದಲ್ಲಿ ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ಹೋಗಿ ಪ್ರತಿ ಆಹಾರ ಪ್ರಕಾರದ ಸಾಮಾನ್ಯ ಪದಾರ್ಥಗಳು ಯಾವುವು ಎಂದು ತಿಳಿದುಕೊಳ್ಳಬಹುದು. ಆಹಾರ ಪ್ರಕಾರಗಳ ನಡುವೆ ಗೊಂದಲ ಉಂಟುಮಾಡುವ ಪುನರಾವರ್ತಿತ ಡೇಟಾವನ್ನು ನೀವು ಶುದ್ಧೀಕರಿಸಬೇಕು, ಆದ್ದರಿಂದ ಈ ಸಮಸ್ಯೆಯ ಬಗ್ಗೆ ತಿಳಿದುಕೊಳ್ಳೋಣ.\n", + "\n", + "R ನಲ್ಲಿ `create_ingredient()` ಎಂಬ ಫಂಕ್ಷನ್ ಅನ್ನು ರಚಿಸಿ, ಇದು ಒಂದು ಪದಾರ್ಥ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಈ ಫಂಕ್ಷನ್ ಒಂದು ಅನಗತ್ಯ ಕಾಲಮ್ ಅನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ಪ್ರಾರಂಭಿಸಿ, ಪದಾರ್ಥಗಳನ್ನು ಅವರ ಎಣಿಕೆಯ ಮೂಲಕ ಕ್ರಮಬದ್ಧಗೊಳಿಸುತ್ತದೆ.\n", + "\n", + "R ನಲ್ಲಿ ಫಂಕ್ಷನ್‌ನ ಮೂಲ ರಚನೆ:\n", + "\n", + "`myFunction <- function(arglist){`\n", + "\n", + "**`...`**\n", + "\n", + "**`return`**`(value)`\n", + "\n", + "`}`\n", + "\n", + "R ಫಂಕ್ಷನ್‌ಗಳ ಬಗ್ಗೆ ಸರಳ ಪರಿಚಯವನ್ನು ನೀವು [ಇಲ್ಲಿ](https://skirmer.github.io/presentations/functions_with_r.html#1) ಕಾಣಬಹುದು.\n", + "\n", + "ನೇರವಾಗಿ ಪ್ರಾರಂಭಿಸೋಣ! ನಾವು ನಮ್ಮ ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಕಲಿತ [dplyr ಕ್ರಿಯಾಪದಗಳನ್ನು](https://dplyr.tidyverse.org/) ಬಳಸಲಿದ್ದೇವೆ. ಪುನರಾವೃತ್ತಿಯಾಗಿ:\n", + "\n", + "- `dplyr::select()`: ನೀವು ಯಾವ **ಕಾಲಮ್‌ಗಳನ್ನು** ಉಳಿಸಬೇಕು ಅಥವಾ ಹೊರತುಪಡಿಸಬೇಕು ಎಂದು ಆಯ್ಕೆಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n", + "\n", + "- `dplyr::pivot_longer()`: ಡೇಟಾವನ್ನು \"ಉದ್ದಗೊಳಿಸಲು\" ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹೆಚ್ಚಿಸಿ ಕಾಲಮ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.\n", + "\n", + "- `dplyr::group_by()` ಮತ್ತು `dplyr::summarise()`: ವಿಭಿನ್ನ ಗುಂಪುಗಳಿಗಾಗಿ ಸಾರಾಂಶ ಅಂಕಿಅಂಶಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಮತ್ತು ಅದನ್ನು ಒಳ್ಳೆಯ ಟೇಬಲ್‌ನಲ್ಲಿ ಇಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n", + "\n", + "- `dplyr::filter()`: ನಿಮ್ಮ ಶರತ್ತುಗಳನ್ನು ಪೂರೈಸುವ ಸಾಲುಗಳನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಿರುವ ಡೇಟಾದ ಉಪಸಮೂಹವನ್ನು ರಚಿಸುತ್ತದೆ.\n", + "\n", + "- `dplyr::mutate()`: ಕಾಲಮ್‌ಗಳನ್ನು ರಚಿಸಲು ಅಥವಾ ಬದಲಾಯಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n", + "\n", + "Allison Horst ರವರ [*ಕಲೆಯೊಂದಿಗೆ* ತುಂಬಿದ learnr ಟ್ಯುಟೋರಿಯಲ್](https://allisonhorst.shinyapps.io/dplyr-learnr/#section-welcome) ಅನ್ನು ನೋಡಿ, ಇದು dplyr *(Tidyverse ಭಾಗ)* ನಲ್ಲಿ ಕೆಲವು ಉಪಯುಕ್ತ ಡೇಟಾ ವ್ರ್ಯಾಂಗ್ಲಿಂಗ್ ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ.\n" + ], + "metadata": { + "id": "K3RF5bSCHC76" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Creates a functions that returns the top ingredients by class\r\n", + "\r\n", + "create_ingredient <- function(df){\r\n", + " \r\n", + " # Drop the id column which is the first colum\r\n", + " ingredient_df = df %>% select(-1) %>% \r\n", + " # Transpose data to a long format\r\n", + " pivot_longer(!cuisine, names_to = \"ingredients\", values_to = \"count\") %>% \r\n", + " # Find the top most ingredients for a particular cuisine\r\n", + " group_by(ingredients) %>% \r\n", + " summarise(n_instances = sum(count)) %>% \r\n", + " filter(n_instances != 0) %>% \r\n", + " # Arrange by descending order\r\n", + " arrange(desc(n_instances)) %>% \r\n", + " mutate(ingredients = factor(ingredients) %>% fct_inorder())\r\n", + " \r\n", + " \r\n", + " return(ingredient_df)\r\n", + "} # End of function" + ], + "outputs": [], + "metadata": { + "id": "uB_0JR82HTPa" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಈಗ ನಾವು ಈ ಫಂಕ್ಷನ್ ಅನ್ನು ಉಪಯೋಗಿಸಿ ಪ್ರತಿ ಆಹಾರ ಶೈಲಿಯಲ್ಲಿನ ಟಾಪ್ ಹತ್ತು ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಪದಾರ್ಥಗಳ ಬಗ್ಗೆ ಒಂದು ಕಲ್ಪನೆ ಪಡೆಯಬಹುದು. `thai_df` ಜೊತೆಗೆ ಇದನ್ನು ಪ್ರಯೋಗಿಸೋಣ.\n" + ], + "metadata": { + "id": "h9794WF8HWmc" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Call create_ingredient and display popular ingredients\r\n", + "thai_ingredient_df <- create_ingredient(df = thai_df)\r\n", + "\r\n", + "thai_ingredient_df %>% \r\n", + " slice_head(n = 10)" + ], + "outputs": [], + "metadata": { + "id": "agQ-1HrcHaEA" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಹಿಂದಿನ ವಿಭಾಗದಲ್ಲಿ, ನಾವು `geom_col()` ಅನ್ನು ಬಳಸಿದ್ದೇವೆ, ಈಗ `geom_bar` ಅನ್ನು ಹೇಗೆ ಬಳಸಬಹುದು ಎಂದು ನೋಡೋಣ, ಬಾರ್ ಚಾರ್ಟ್‌ಗಳನ್ನು ರಚಿಸಲು. ಹೆಚ್ಚಿನ ಓದಿಗಾಗಿ `?geom_bar` ಅನ್ನು ಬಳಸಿ.\n" + ], + "metadata": { + "id": "kHu9ffGjHdcX" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make a bar chart for popular thai cuisines\r\n", + "thai_ingredient_df %>% \r\n", + " slice_head(n = 10) %>% \r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"steelblue\") +\r\n", + " xlab(\"\") + ylab(\"\")" + ], + "outputs": [], + "metadata": { + "id": "fb3Bx_3DHj6e" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನಾವು ಜಪಾನೀಸ್ ಡೇಟಾದಿಗೂ ಅದೇ ರೀತಿಯಲ್ಲಿ ಮಾಡೋಣ\n" + ], + "metadata": { + "id": "RHP_xgdkHnvM" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Get popular ingredients for Japanese cuisines and make bar chart\r\n", + "create_ingredient(df = japanese_df) %>% \r\n", + " slice_head(n = 10) %>%\r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"darkorange\", alpha = 0.8) +\r\n", + " xlab(\"\") + ylab(\"\")\r\n" + ], + "outputs": [], + "metadata": { + "id": "019v8F0XHrRU" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಚೈನೀಸ್ ಆಹಾರಗಳ ಬಗ್ಗೆ ಏನು?\n" + ], + "metadata": { + "id": "iIGM7vO8Hu3v" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Get popular ingredients for Chinese cuisines and make bar chart\r\n", + "create_ingredient(df = chinese_df) %>% \r\n", + " slice_head(n = 10) %>%\r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"cyan4\", alpha = 0.8) +\r\n", + " xlab(\"\") + ylab(\"\")" + ], + "outputs": [], + "metadata": { + "id": "lHd9_gd2HyzU" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನಾವು ಭಾರತೀಯ ಆಹಾರಗಳನ್ನು ನೋಡೋಣ 🌶️.\n" + ], + "metadata": { + "id": "ir8qyQbNH1c7" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Get popular ingredients for Indian cuisines and make bar chart\r\n", + "create_ingredient(df = indian_df) %>% \r\n", + " slice_head(n = 10) %>%\r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"#041E42FF\", alpha = 0.8) +\r\n", + " xlab(\"\") + ylab(\"\")" + ], + "outputs": [], + "metadata": { + "id": "ApukQtKjH5FO" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಕೊನೆಗೆ, ಕೊರಿಯನ್ ಪದಾರ್ಥಗಳನ್ನು ಚಿತ್ರಿಸಿ.\n" + ], + "metadata": { + "id": "qv30cwY1H-FM" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Get popular ingredients for Korean cuisines and make bar chart\r\n", + "create_ingredient(df = korean_df) %>% \r\n", + " slice_head(n = 10) %>%\r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"#852419FF\", alpha = 0.8) +\r\n", + " xlab(\"\") + ylab(\"\")" + ], + "outputs": [], + "metadata": { + "id": "lumgk9cHIBie" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಡೇಟಾ ದೃಶ್ಯೀಕರಣಗಳಿಂದ, ನಾವು ಈಗ ವಿಭಿನ್ನ ಆಹಾರ ಶೈಲಿಗಳ ನಡುವೆ ಗೊಂದಲವನ್ನು ಉಂಟುಮಾಡುವ ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಪದಾರ್ಥಗಳನ್ನು `dplyr::select()` ಬಳಸಿ ತೆಗೆದುಹಾಕಬಹುದು.\n", + "\n", + "ಎಲ್ಲರೂ ಅಕ್ಕಿ, ಬೆಳ್ಳುಳ್ಳಿ ಮತ್ತು ಶುಂಠಿ ಅನ್ನು ಪ್ರೀತಿಸುತ್ತಾರೆ!\n" + ], + "metadata": { + "id": "iO4veMXuIEta" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Drop id column, rice, garlic and ginger from our original data set\r\n", + "df_select <- df %>% \r\n", + " select(-c(1, rice, garlic, ginger))\r\n", + "\r\n", + "# Display new data set\r\n", + "df_select %>% \r\n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "iHJPiG6rIUcK" + } + }, + { + "cell_type": "markdown", + "source": [ + "## ರೆಸಿಪಿಗಳನ್ನು ಬಳಸಿ ಡೇಟಾ ಪೂರ್ವಸಿದ್ಧತೆ 👩‍🍳👨‍🍳 - ಅಸಮತೋಲನ ಡೇಟಾ ನಿರ್ವಹಣೆ ⚖️\n", + "\n", + "

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

ಕಲಾಕೃತಿ @allison_horst ಅವರಿಂದ
\n", + "\n", + "ಈ ಪಾಠವು ಆಹಾರವರ್ಗಗಳ ಬಗ್ಗೆ ಇರುವುದರಿಂದ, ನಾವು `recipes` ಅನ್ನು ಸಂದರ್ಭದಲ್ಲಿ ಇರಿಸಬೇಕಾಗಿದೆ.\n", + "\n", + "Tidymodels ಇನ್ನೊಂದು ಚೆನ್ನಾದ ಪ್ಯಾಕೇಜ್ ಒದಗಿಸುತ್ತದೆ: `recipes` - ಡೇಟಾ ಪೂರ್ವಸಿದ್ಧತೆಗಾಗಿ ಪ್ಯಾಕೇಜ್.\n" + ], + "metadata": { + "id": "kkFd-JxdIaL6" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನಮ್ಮ ಆಹಾರವರ್ಗಗಳ ವಿತರಣೆ ಮತ್ತೊಮ್ಮೆ ನೋಡೋಣ.\n" + ], + "metadata": { + "id": "6l2ubtTPJAhY" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Distribution of cuisines\r\n", + "old_label_count <- df_select %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(desc(n))\r\n", + "\r\n", + "old_label_count" + ], + "outputs": [], + "metadata": { + "id": "1e-E9cb7JDVi" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನೀವು ನೋಡಬಹುದು, ಆಹಾರದ ಪ್ರಕಾರಗಳ ಸಂಖ್ಯೆಯಲ್ಲಿ ಬಹಳ ಅಸಮಾನ ವಿತರಣೆಯಿದೆ. ಕೊರಿಯನ್ ಆಹಾರಗಳು ತಾಯ್ ಆಹಾರಗಳಿಗಿಂತ ಸುಮಾರು 3 ಪಟ್ಟು ಹೆಚ್ಚು. ಅಸಮತೋಲನದ ಡೇಟಾ ಸಾಮಾನ್ಯವಾಗಿ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ನಕಾರಾತ್ಮಕ ಪರಿಣಾಮಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ. ದ್ವಿಪದ ವರ್ಗೀಕರಣವನ್ನು ಯೋಚಿಸಿ. ನಿಮ್ಮ ಡೇಟಾದ ಬಹುಮತವು ಒಂದು ವರ್ಗವಾಗಿದ್ದರೆ, ಒಂದು ಯಂತ್ರ ಕಲಿಕೆ ಮಾದರಿ ಆ ವರ್ಗವನ್ನು ಹೆಚ್ಚು ಬಾರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ, ಏಕೆಂದರೆ ಅದಕ್ಕೆ ಹೆಚ್ಚು ಡೇಟಾ ಇದೆ. ಡೇಟಾವನ್ನು ಸಮತೋಲನಗೊಳಿಸುವುದು ಯಾವುದೇ ತಿರುವು ಹೊಂದಿದ ಡೇಟಾವನ್ನು ತೆಗೆದು ಈ ಅಸಮತೋಲನವನ್ನು ತೆಗೆದುಹಾಕಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಬಹುತೆಕ ಮಾದರಿಗಳು ಗಮನಗಳ ಸಂಖ್ಯೆ ಸಮಾನವಾಗಿದ್ದಾಗ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಮತ್ತು ಆದ್ದರಿಂದ ಅಸಮತೋಲನ ಡೇಟಾದೊಂದಿಗೆ ಹೋರಾಡುತ್ತವೆ.\n", + "\n", + "ಅಸಮತೋಲನ ಡೇಟಾ ಸೆಟ್‌ಗಳನ್ನು ನಿಭಾಯಿಸುವ ಪ್ರಮುಖ ಎರಡು ವಿಧಾನಗಳಿವೆ:\n", + "\n", + "- ಅಲ್ಪಸಂಖ್ಯಾತ ವರ್ಗಕ್ಕೆ ಗಮನಗಳನ್ನು ಸೇರಿಸುವುದು: `ಓವರ್-ಸ್ಯಾಂಪ್ಲಿಂಗ್` ಉದಾಹರಣೆಗೆ SMOTE ಆಲ್ಗಾರಿದಮ್ ಬಳಸಿ\n", + "\n", + "- ಬಹುಮತ ವರ್ಗದಿಂದ ಗಮನಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು: `ಅಂಡರ್-ಸ್ಯಾಂಪ್ಲಿಂಗ್`\n", + "\n", + "ಇದೀಗ ನಾವು `recipe` ಬಳಸಿ ಅಸಮತೋಲನ ಡೇಟಾ ಸೆಟ್‌ಗಳನ್ನು ಹೇಗೆ ನಿಭಾಯಿಸುವುದನ್ನು ಪ್ರದರ್ಶಿಸೋಣ. ಒಂದು recipe ಅನ್ನು ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಗೆ ಸಿದ್ಧಗೊಳಿಸಲು ಡೇಟಾ ಸೆಟ್‌ಗೆ ಯಾವ ಹಂತಗಳನ್ನು ಅನ್ವಯಿಸಬೇಕು ಎಂದು ವಿವರಿಸುವ ಬ್ಲೂಪ್ರಿಂಟ್ ಎಂದು ಪರಿಗಣಿಸಬಹುದು.\n" + ], + "metadata": { + "id": "soAw6826JKx9" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load themis package for dealing with imbalanced data\r\n", + "library(themis)\r\n", + "\r\n", + "# Create a recipe for preprocessing data\r\n", + "cuisines_recipe <- recipe(cuisine ~ ., data = df_select) %>% \r\n", + " step_smote(cuisine)\r\n", + "\r\n", + "cuisines_recipe" + ], + "outputs": [], + "metadata": { + "id": "HS41brUIJVJy" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನಮ್ಮ ಪೂರ್ವಸಿದ್ಧತಾ ಹಂತಗಳನ್ನು ವಿಭಜಿಸೋಣ.\n", + "\n", + "- ಸೂತ್ರದೊಂದಿಗೆ `recipe()` ಗೆ ಕರೆ ಮಾಡುವುದರಿಂದ `df_select` ಡೇಟಾವನ್ನು ಉಲ್ಲೇಖವಾಗಿ ಬಳಸಿಕೊಂಡು ಚರಗಳ *ಪಾತ್ರಗಳನ್ನು* ರೆಸಿಪಿಗೆ ತಿಳಿಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ `cuisine` ಕಾಲಮ್‌ಗೆ `outcome` ಪಾತ್ರವನ್ನು ನೀಡಲಾಗಿದೆ, ಉಳಿದ ಕಾಲಮ್‌ಗಳಿಗೆ `predictor` ಪಾತ್ರವನ್ನು ನೀಡಲಾಗಿದೆ.\n", + "\n", + "- [`step_smote(cuisine)`](https://themis.tidymodels.org/reference/step_smote.html) ಅಲ್ಪಸಂಖ್ಯಾತ ವರ್ಗದ ಹೊಸ ಉದಾಹರಣೆಗಳನ್ನು ಸಮೀಪದ ನೆರೆಹೊರೆಯವರನ್ನು ಬಳಸಿ ಸೃಷ್ಟಿಸುವ ರೆಸಿಪಿ ಹಂತದ *ವಿವರಣೆ* ರಚಿಸುತ್ತದೆ.\n", + "\n", + "ಈಗ, ನಾವು ಪೂರ್ವಸಿದ್ಧ ಡೇಟಾವನ್ನು ನೋಡಲು ಬಯಸಿದರೆ, ನಾವು [**`prep()`**](https://recipes.tidymodels.org/reference/prep.html) ಮತ್ತು [**`bake()`**](https://recipes.tidymodels.org/reference/bake.html) ನಮ್ಮ ರೆಸಿಪಿಯನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ.\n", + "\n", + "`prep()`: ತರಬೇತಿ ಸೆಟ್‌ನಿಂದ ಅಗತ್ಯವಾದ ಪರಿಮಾಣಗಳನ್ನು ಅಂದಾಜು ಮಾಡುತ್ತದೆ, ಅವುಗಳನ್ನು ನಂತರ ಇತರ ಡೇಟಾ ಸೆಟ್‌ಗಳಿಗೆ ಅನ್ವಯಿಸಬಹುದು.\n", + "\n", + "`bake()`: ಪೂರ್ವಸಿದ್ಧ ರೆಸಿಪಿಯನ್ನು ತೆಗೆದುಕೊಂಡು ಯಾವುದೇ ಡೇಟಾ ಸೆಟ್‌ಗೆ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ.\n" + ], + "metadata": { + "id": "Yb-7t7XcJaC8" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Prep and bake the recipe\r\n", + "preprocessed_df <- cuisines_recipe %>% \r\n", + " prep() %>% \r\n", + " bake(new_data = NULL) %>% \r\n", + " relocate(cuisine)\r\n", + "\r\n", + "# Display data\r\n", + "preprocessed_df %>% \r\n", + " slice_head(n = 5)\r\n", + "\r\n", + "# Quick summary stats\r\n", + "preprocessed_df %>% \r\n", + " introduce()" + ], + "outputs": [], + "metadata": { + "id": "9QhSgdpxJl44" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನಾವು ಈಗ ನಮ್ಮ ಆಹಾರವರ್ಗಗಳ ವಿತರಣೆಯನ್ನು ಪರಿಶೀಲಿಸಿ ಅವುಗಳನ್ನು ಅಸಮತೋಲನ ಡೇಟಾದೊಂದಿಗೆ ಹೋಲಿಸೋಣ.\n" + ], + "metadata": { + "id": "dmidELh_LdV7" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Distribution of cuisines\r\n", + "new_label_count <- preprocessed_df %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(desc(n))\r\n", + "\r\n", + "list(new_label_count = new_label_count,\r\n", + " old_label_count = old_label_count)" + ], + "outputs": [], + "metadata": { + "id": "aSh23klBLwDz" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಯಮ್! ಡೇಟಾ ಚೆನ್ನಾಗಿದ್ದು, ಸಮತೋಲನದಲ್ಲಿದ್ದು, ತುಂಬಾ ರುಚಿಕರವಾಗಿದೆ 😋!\n", + "\n", + "> ಸಾಮಾನ್ಯವಾಗಿ, ಒಂದು ರೆಸಿಪಿ ಅನ್ನು ಮಾದರೀಕರಣಕ್ಕಾಗಿ ಪ್ರೀಪ್ರೊಸೆಸರ್ ಆಗಿ ಬಳಸಲಾಗುತ್ತದೆ, ಅಲ್ಲಿ ಅದು ಡೇಟಾ ಸೆಟ್ ಮೇಲೆ ಯಾವ ಹಂತಗಳನ್ನು ಅನ್ವಯಿಸಬೇಕು ಎಂದು ನಿರ್ಧರಿಸುತ್ತದೆ, ಇದರಿಂದ ಅದು ಮಾದರೀಕರಣಕ್ಕೆ ಸಿದ್ಧವಾಗುತ್ತದೆ. ಆ ಸಂದರ್ಭದಲ್ಲಿ, `workflow()` ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ (ನಾವು ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಈಗಾಗಲೇ ನೋಡಿದ್ದಂತೆ) ಕೈಯಿಂದ ರೆಸಿಪಿಯನ್ನು ಅಂದಾಜಿಸುವ ಬದಲು\n", + ">\n", + "> ಆದ್ದರಿಂದ, ನೀವು ಸಾಮಾನ್ಯವಾಗಿ tidymodels ಬಳಸುವಾಗ **`prep()`** ಮತ್ತು **`bake()`** ರೆಸಿಪಿಗಳನ್ನು ಬಳಸಬೇಕಾಗಿಲ್ಲ, ಆದರೆ ಅವು ನಿಮ್ಮ ಉಪಕರಣಸಂಚಯದಲ್ಲಿ ಸಹಾಯಕ ಕಾರ್ಯಗಳಾಗಿವೆ, ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ ರೆಸಿಪಿಗಳು ನೀವು ನಿರೀಕ್ಷಿಸುವಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿರುವುದನ್ನು ದೃಢೀಕರಿಸಲು.\n", + ">\n", + "> ನೀವು **`bake()`** ಮಾಡಿದಾಗ, **`new_data = NULL`** ಇರುವ ಪ್ರಿಪ್ ಮಾಡಿದ ರೆಸಿಪಿ, ನೀವು ರೆಸಿಪಿ ನಿರ್ಧರಿಸುವಾಗ ನೀಡಿದ ಡೇಟಾವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ, ಆದರೆ ಪ್ರೀಪ್ರೊಸೆಸಿಂಗ್ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿಕೊಂಡು.\n", + "\n", + "ಈ ಡೇಟಾದ ಪ್ರತಿಯನ್ನು ಭವಿಷ್ಯದ ಪಾಠಗಳಲ್ಲಿ ಬಳಸಲು ಈಗ ಉಳಿಸೋಣ:\n" + ], + "metadata": { + "id": "HEu80HZ8L7ae" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Save preprocessed data\r\n", + "write_csv(preprocessed_df, \"../../../data/cleaned_cuisines_R.csv\")" + ], + "outputs": [], + "metadata": { + "id": "cBmCbIgrMOI6" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಈ ಹೊಸ CSV ಈಗ ರೂಟ್ ಡೇಟಾ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಕಂಡುಬರುತ್ತದೆ.\n", + "\n", + "**🚀ಸವಾಲು**\n", + "\n", + "ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಹಲವಾರು ಆಸಕ್ತಿದಾಯಕ ಡೇಟಾಸೆಟ್‌ಗಳಿವೆ. `data` ಫೋಲ್ಡರ್‌ಗಳನ್ನು ತೋಡಿಸಿ ಮತ್ತು ಯಾವುದೇ ಡೇಟಾಸೆಟ್‌ಗಳು ಬೈನರಿ ಅಥವಾ ಬಹು-ವರ್ಗ ವರ್ಗೀಕರಣಕ್ಕೆ ಸೂಕ್ತವಾಗಿದೆಯೇ ಎಂದು ನೋಡಿ? ಈ ಡೇಟಾಸೆಟ್‌ನಿಂದ ನೀವು ಯಾವ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳುತ್ತೀರಿ?\n", + "\n", + "## [**ಪಾಠದ ನಂತರದ ಕ್ವಿಜ್**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/20/)\n", + "\n", + "## **ಪುನರಾವೃತ್ತಿ & ಸ್ವಯಂ ಅಧ್ಯಯನ**\n", + "\n", + "- [package themis](https://github.com/tidymodels/themis) ಅನ್ನು ಪರಿಶೀಲಿಸಿ. ಅಸಮತೋಲನ ಡೇಟಾ ನಿರ್ವಹಿಸಲು ನಾವು ಇನ್ನಾವುದೇ ತಂತ್ರಗಳನ್ನು ಬಳಸಬಹುದು?\n", + "\n", + "- ಟಿಡಿ ಮಾದರಿಗಳು [ಉಲ್ಲೇಖ ವೆಬ್‌ಸೈಟ್](https://www.tidymodels.org/start/).\n", + "\n", + "- H. ವಿಕ್‌ಹ್ಯಾಮ್ ಮತ್ತು G. ಗ್ರೋಲೆಮಂಡ್, [*R for Data Science: Visualize, Model, Transform, Tidy, and Import Data*](https://r4ds.had.co.nz/).\n", + "\n", + "#### ಧನ್ಯವಾದಗಳು:\n", + "\n", + "[`Allison Horst`](https://twitter.com/allison_horst/) ಅವರಿಗೆ R ಅನ್ನು ಹೆಚ್ಚು ಆತಿಥ್ಯಪೂರ್ಣ ಮತ್ತು ಆಕರ್ಷಕವಾಗಿಸುವ ಅದ್ಭುತ ಚಿತ್ರಣಗಳನ್ನು ಸೃಷ್ಟಿಸಿದಕ್ಕಾಗಿ. ಅವಳ [ಗ್ಯಾಲರಿ](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM) ನಲ್ಲಿ ಇನ್ನಷ್ಟು ಚಿತ್ರಣಗಳನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ.\n", + "\n", + "[Cassie Breviu](https://www.twitter.com/cassieview) ಮತ್ತು [Jen Looper](https://www.twitter.com/jenlooper) ಅವರಿಗೆ ಈ ಮಾಯಾಜಾಲದ ಮೂಲ Python ಆವೃತ್ತಿಯನ್ನು ಸೃಷ್ಟಿಸಿದಕ್ಕಾಗಿ ♥️\n", + "\n", + "

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

ಕಲಾಕೃತಿ @allison_horst ಅವರಿಂದ
\n" + ], + "metadata": { + "id": "WQs5621pMGwf" + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/4-Classification/1-Introduction/solution/notebook.ipynb b/translations/kn/4-Classification/1-Introduction/solution/notebook.ipynb new file mode 100644 index 000000000..a56b33401 --- /dev/null +++ b/translations/kn/4-Classification/1-Introduction/solution/notebook.ipynb @@ -0,0 +1,677 @@ +{ + "cells": [ + { + "source": [ + "# ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು \n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "Imblearn ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ, ಇದು SMOTE ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ. ಇದು ಕ್ಲಾಸಿಫಿಕೇಶನ್ ಮಾಡುವಾಗ ಅಸಮತೋಲಿತ ಡೇಟಾವನ್ನು ನಿರ್ವಹಿಸಲು ಸಹಾಯ ಮಾಡುವ Scikit-learn ಪ್ಯಾಕೇಜ್ ಆಗಿದೆ. (https://imbalanced-learn.org/stable/)\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: imblearn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imblearn) (0.8.0)\n", + "Requirement already satisfied: numpy>=1.13.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imbalanced-learn->imblearn) (1.19.2)\n", + "Requirement already satisfied: scipy>=0.19.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imbalanced-learn->imblearn) (1.4.1)\n", + "Requirement already satisfied: scikit-learn>=0.24 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imbalanced-learn->imblearn) (0.24.2)\n", + "Requirement already satisfied: joblib>=0.11 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imbalanced-learn->imblearn) (0.16.0)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from scikit-learn>=0.24->imbalanced-learn->imblearn) (2.1.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib as mpl\n", + "import numpy as np\n", + "from imblearn.over_sampling import SMOTE" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('../../data/cuisines.csv')" + ] + }, + { + "source": [ + "ಈ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ನೀಡಲಾದ ವಿವಿಧ ಆಹಾರಶೈಲಿಗಳಲ್ಲಿನ ಎಲ್ಲಾ ವಿಧದ ಪದಾರ್ಥಗಳನ್ನು ಸೂಚಿಸುವ 385 ಕಾಲಮ್‌ಗಳು ಸೇರಿವೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 65 indian 0 0 0 0 0 \n", + "1 66 indian 1 0 0 0 0 \n", + "2 67 indian 0 0 0 0 0 \n", + "3 68 indian 0 0 0 0 0 \n", + "4 69 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 385 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
065indian00000000...0000000000
166indian10000000...0000000000
267indian00000000...0000000000
368indian00000000...0000000000
469indian00000000...0000000010
\n

5 rows × 385 columns

\n
" + }, + "metadata": {}, + "execution_count": 4 + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\nRangeIndex: 2448 entries, 0 to 2447\nColumns: 385 entries, Unnamed: 0 to zucchini\ndtypes: int64(384), object(1)\nmemory usage: 7.2+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "korean 799\n", + "indian 598\n", + "chinese 442\n", + "japanese 320\n", + "thai 289\n", + "Name: cuisine, dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ], + "source": [ + "df.cuisine.value_counts()" + ] + }, + { + "source": [ + "ಬಾರ್ ಗ್ರಾಫ್‌ನಲ್ಲಿ ಆಹಾರ ಪದ್ಧತಿಗಳನ್ನು ತೋರಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 7 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAD4CAYAAAAtrdtxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAASY0lEQVR4nO3df7TldV3v8eerGZkRRoeAiXtE5UgNIkUCjlwQIzAiC7NscdcSbcmsfkxl5SXX0juuyzK9d3UvlXnpplajma0kMtCUhluImNcr8msGBmb4pZaTQCFQOYom0fi+f+zPkd14hpnzOWefvYfzfKy113z35/vde7/22fvMa3++3733SVUhSVKPbxt3AEnSgcsSkSR1s0QkSd0sEUlSN0tEktRt+bgDLKYjjjiipqenxx1Dkg4oW7dufbiq1sy2bkmVyPT0NFu2bBl3DEk6oCT5u72tc3eWJKmbJSJJ6maJSJK6WSKSpG6WiCSpmyUiSepmiUiSulkikqRulogkqduS+sT69vt3Mb3xqnHH0ALZefG5444gLXnORCRJ3SwRSVI3S0SS1M0SkSR1s0QkSd0sEUlSN0tEktRtIkokyaFJXtuWz0yyeY6X/29Jzh5NOknS3kxEiQCHAq/tvXBVvbmqPraAeSRJ+2FSSuRi4DuTbAN+E1iV5Iokdye5NEkAkrw5yc1JdiTZNDT+viTnjTG/JC1Jk1IiG4G/qaoTgTcAJwEXAscDxwCnt+3eUVUvrKrvAZ4KvGxfV5xkQ5ItSbbs/tqu0aSXpCVqUkpkTzdV1X1V9Q1gGzDdxs9KcmOS7cBLgO/e1xVV1aaqWldV65YdvHp0iSVpCZrUL2B8dGh5N7A8yUrgXcC6qro3yVuAleMIJ0kamJSZyFeAp+1jm5nCeDjJKsBjIJI0ZhMxE6mqf0xyXZIdwL8AX5xlmy8leTewA3gAuHmRY0qS9jARJQJQVa/ay/gvDS1fBFw0yzbrR5dMkrQ3k7I7S5J0ALJEJEndLBFJUjdLRJLUzRKRJHWbmHdnLYYTjlrNlovPHXcMSXrScCYiSepmiUiSulkikqRulogkqZslIknqZolIkrpZIpKkbpaIJKmbJSJJ6maJSJK6WSKSpG6WiCSpmyUiSepmiUiSulkikqRulogkqZslIknqZolIkrpZIpKkbpaIJKmbJSJJ6rZ83AEW0/b7dzG98apxx9CY7Lz43HFHkJ50nIlIkrpZIpKkbpaIJKmbJSJJ6maJSJK6WSKSpG77VSJJPj3qIJKkA89+lUhVvWjUQSRJB579nYk8kmRVkmuT3JJke5Ifa+umk9yd5NIkdyW5IsnBbd2bk9ycZEeSTUnSxj+R5NeT3JTkM0m+r40vS/Kb7TK3J/m5Nj6V5JNJtrXrmtn+nCTXt0yXJ1k1ih+SJGl2czkm8nXgFVV1MnAW8FszpQA8F3hXVT0P+DLw2jb+jqp6YVV9D/BU4GVD17e8qk4BLgR+tY39NLCrql4IvBD42STPAV4FXF1VJwLPB7YlOQK4CDi7ZdoCvH4ud16SND9z+dqTAP8jyRnAN4CjgCPbunur6rq2/H7gdcDbgLOSvBE4GDgMuAP4i7bdh9q/W4HptnwO8L1JzmvnVwNrgZuB9yZ5CvDhqtqW5PuB44HrWpcdBFz/LaGTDcAGgGVPXzOHuytJ2pe5lMirgTXAC6rqsSQ7gZVtXe2xbSVZCbwLWFdV9yZ5y9D2AI+2f3cP5Qjwy1V19Z433srrXOB9Sd4O/DNwTVWd/0Shq2oTsAlgxdTaPXNKkuZhLruzVgMPtgI5Czh6aN2zk5zWll8FfIrHC+PhdqziPPbtauAX2oyDJMcmOSTJ0cAXq+rdwHuAk4EbgNOTfFfb9pAkx87h/kiS5ml/ZyIFXAr8RZLtDI4/3D20/h7gF5O8F7gT+N2q+lqSdwM7gAcY7JLal/cw2LV1Szve8hDw48CZwBuSPAY8Arymqh5Ksh64LMmKdvmLgM/s532SJM1Tqp54D0+Sw4FbqurovayfBja3g+cTbcXU2pq64JJxx9CY+FXwUp8kW6tq3WzrnnB3VpJnMDhY/bZRBJMkHdiecHdWVf098ITHGapqJzDxsxBJ0sLzu7MkSd0sEUlSN0tEktRtLh82POCdcNRqtvgOHUlaMM5EJEndLBFJUjdLRJLUzRKRJHWzRCRJ3SwRSVI3S0SS1M0SkSR1s0QkSd0sEUlSN0tEktTNEpEkdbNEJEndLBFJUjdLRJLUzRKRJHWzRCRJ3SwRSVI3S0SS1M0SkSR1s0QkSd2WjzvAYtp+/y6mN1417hhSt50XnzvuCNK/40xEktTNEpEkdbNEJEndLBFJUjdLRJLUzRKRJHWzRCRJ3Ra0RJK8L8l5s4w/I8kVC3lbkqTxW5QPG1bV3wPfUi6SpAPbvGYiSV6T5PYktyX54zZ8RpJPJ/nbmVlJkukkO9ry+iQfSvJXST6b5DeGru+cJNcnuSXJ5UlWtfGLk9zZbuttbWxNkg8mubmdTp/PfZEkzV33TCTJdwMXAS+qqoeTHAa8HZgCXgwcB1wJzLYb60TgJOBR4J4kvwP8S7u+s6vqq0n+C/D6JO8EXgEcV1WV5NB2Hb8N/K+q+lSSZwNXA8+bJecGYAPAsqev6b27kqRZzGd31kuAy6vqYYCq+qckAB+uqm8AdyY5ci+XvbaqdgEkuRM4GjgUOB64rl3PQcD1wC7g68AfJNkMbG7XcTZwfNsW4OlJVlXVI8M3VFWbgE0AK6bW1jzuryRpD6M4JvLo0HL2Y5vdLUeAa6rq/D03TnIK8AMMjqv8EoMC+zbg1Kr6+kKEliTN3XyOiXwc+E9JDgdou7Pm4wbg9CTf1a7vkCTHtuMiq6vq/wC/Ajy/bf9R4JdnLpzkxHneviRpjrpnIlV1R5JfA/5vkt3ArfMJUlUPJVkPXJZkRRu+CPgK8JEkKxnMVl7f1r0OeGeS2xncj08CPz+fDJKkuUnV0jlMsGJqbU1dcMm4Y0jd/HsiGockW6tq3Wzr/MS6JKmbJSJJ6maJSJK6WSKSpG6WiCSp26J8AeOkOOGo1Wzx3S2StGCciUiSulkikqRulogkqZslIknqZolIkrpZIpKkbpaIJKmbJSJJ6maJSJK6WSKSpG6WiCSpmyUiSepmiUiSulkikqRulogkqZslIknqZolIkrpZIpKkbpaIJKmbJSJJ6maJSJK6LR93gMW0/f5dTG+8atwxJM3RzovPHXcE7YUzEUlSN0tEktTNEpEkdbNEJEndLBFJUjdLRJLUbWQlkuTTc9z+zCSb2/LLk2wcTTJJ0kIZ2edEqupF87jslcCVCxhHkjQCo5yJPNL+PTPJJ5JckeTuJJcmSVv30jZ2C/ATQ5ddn+QdbflHk9yY5NYkH0tyZBt/S5L3tuv+2ySvG9V9kSTNbrGOiZwEXAgcDxwDnJ5kJfBu4EeBFwD/YS+X/RRwalWdBPwp8MahdccBPwScAvxqkqeMJr4kaTaL9bUnN1XVfQBJtgHTwCPA56vqs238/cCGWS77TOADSaaAg4DPD627qqoeBR5N8iBwJHDf8IWTbJi53mVPX7OQ90mSlrzFmok8OrS8m7mV1+8A76iqE4CfA1bO5XqralNVrauqdcsOXj2Hm5Uk7cs43+J7NzCd5Dvb+fP3st1q4P62fMHIU0mS9tvYSqSqvs5gN9NV7cD6g3vZ9C3A5Um2Ag8vUjxJ0n5IVY07w6JZMbW2pi64ZNwxJM2RXwU/Xkm2VtW62db5iXVJUjdLRJLUzRKRJHWzRCRJ3SwRSVK3xfrE+kQ44ajVbPFdHpK0YJyJSJK6WSKSpG6WiCSpmyUiSepmiUiSulkikqRulogkqZslIknqZolIkrpZIpKkbpaIJKmbJSJJ6maJSJK6WSKSpG6WiCSpmyUiSepmiUiSulkikqRulogkqZslIknqZolIkrotH3eAxbT9/l1Mb7xq3DEkaVHtvPjckV23MxFJUjdLRJLUzRKRJHWzRCRJ3SwRSVI3S0SS1M0SkSR1W9ASSTKdZMdCXqckaXJNxEwkyZL60KMkPVmMrESSHJPk1iTfl+QPk2xv589q69cnuTLJx4Fr29gbktyc5PYkbx26rg8n2ZrkjiQbhsYfSfJrSW5LckOSI0d1fyRJ32okJZLkucAHgfXAKUBV1QnA+cAfJVnZNj0ZOK+qvj/JOcDatv2JwAuSnNG2+6mqegGwDnhdksPb+CHADVX1fOCTwM/OkmVDki1Jtuz+2q5R3F1JWrJGUSJrgI8Ar66q24AXA+8HqKq7gb8Djm3bXlNV/9SWz2mnW4FbgOMYlAoMiuM24AbgWUPj/wpsbstbgek9w1TVpqpaV1Xrlh28eqHuoySJ0XwB4y7gCwzK4859bPvVoeUA/7Oqfn94gyRnAmcDp1XV15J8ApiZyTxWVdWWd7PEvlBSksZtFDORfwVeAbwmyauA/we8GiDJscCzgXtmudzVwE8lWdW2PSrJdwCrgX9uBXIccOoIMkuSOozklXtVfTXJy4BrgP8OnJBkO/BvwPqqejTJnpf5aJLnAde3dY8APwn8FfDzSe5iUD43jCKzJGnu8vjeoCe/FVNra+qCS8YdQ5IW1Xz/nkiSrVW1brZ1E/E5EUnSgckSkSR1s0QkSd0sEUlSN0tEktRtSX0474SjVrNlnu9SkCQ9zpmIJKmbJSJJ6maJSJK6WSKSpG6WiCSpmyUiSepmiUiSulkikqRulogkqZslIknqtqT+KFWSrzD7n+adFEcAD487xBMw3/yYb37MNz/zyXd0Va2ZbcWS+u4s4J69/XWuSZBki/n6mW9+zDc/SzWfu7MkSd0sEUlSt6VWIpvGHWAfzDc/5psf883Pksy3pA6sS5IW1lKbiUiSFpAlIknqtmRKJMlLk9yT5HNJNo4pw3uTPJhkx9DYYUmuSfLZ9u+3t/Ek+d8t7+1JTl6EfM9K8tdJ7kxyR5L/PEkZk6xMclOS21q+t7bx5yS5seX4QJKD2viKdv5zbf30KPO121yW5NYkmycw284k25NsS7KljU3EY9tu89AkVyS5O8ldSU6blHxJntt+bjOnLye5cFLytdv8lfZ7sSPJZe33ZfTPv6p60p+AZcDfAMcABwG3AcePIccZwMnAjqGx3wA2tuWNwK+35R8B/hIIcCpw4yLkmwJObstPAz4DHD8pGdvtrGrLTwFubLf7Z8Ar2/jvAb/Qll8L/F5bfiXwgUX4Gb4e+BNgczs/Sdl2AkfsMTYRj227zT8CfqYtHwQcOkn5hnIuAx4Ajp6UfMBRwOeBpw4979YvxvNvUX7o4z4BpwFXD51/E/CmMWWZ5t+XyD3AVFueYvCBSIDfB86fbbtFzPoR4AcnMSNwMHAL8B8ZfAp3+Z6PNXA1cFpbXt62ywgzPRO4FngJsLn9BzIR2drt7ORbS2QiHltgdftPMJOYb49M5wDXTVI+BiVyL3BYez5tBn5oMZ5/S2V31swPeMZ9bWwSHFlV/9CWHwCObMtjzdymtycxeLU/MRnb7qJtwIPANQxmmF+qqn+bJcM387X1u4DDRxjvEuCNwDfa+cMnKBtAAR9NsjXJhjY2KY/tc4CHgD9suwPfk+SQCco37JXAZW15IvJV1f3A24AvAP/A4Pm0lUV4/i2VEjkg1OBlwdjfc51kFfBB4MKq+vLwunFnrKrdVXUig1f9pwDHjSvLsCQvAx6sqq3jzvIEXlxVJwM/DPxikjOGV475sV3OYFfv71bVScBXGewe+qZxP/cA2jGFlwOX77lunPnasZgfY1DGzwAOAV66GLe9VErkfuBZQ+ef2cYmwReTTAG0fx9s42PJnOQpDArk0qr60CRmBKiqLwF/zWCKfmiSme+BG87wzXxt/WrgH0cU6XTg5Ul2An/KYJfWb09INuCbr1apqgeBP2dQwpPy2N4H3FdVN7bzVzAolUnJN+OHgVuq6ovt/KTkOxv4fFU9VFWPAR9i8Jwc+fNvqZTIzcDa9k6FgxhMR68cc6YZVwIXtOULGByHmBl/TXuXx6nArqFp80gkCfAHwF1V9fZJy5hkTZJD2/JTGRyvuYtBmZy3l3wzuc8DPt5eLS64qnpTVT2zqqYZPL8+XlWvnoRsAEkOSfK0mWUG+/V3MCGPbVU9ANyb5Llt6AeAOycl35DzeXxX1kyOScj3BeDUJAe33+OZn9/on3+LcSBqEk4M3i3xGQb70P/rmDJcxmB/5WMMXnn9NIP9kNcCnwU+BhzWtg3wzpZ3O7BuEfK9mMF0/HZgWzv9yKRkBL4XuLXl2wG8uY0fA9wEfI7BboYVbXxlO/+5tv6YRXqcz+Txd2dNRLaW47Z2umPmd2BSHtt2mycCW9rj+2Hg2ycs3yEMXq2vHhqbpHxvBe5uvxt/DKxYjOefX3siSeq2VHZnSZJGwBKRJHWzRCRJ3SwRSVI3S0SS1M0SkSR1s0QkSd3+PxNFbW14TY8fAAAAAElFTkSuQmCC\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "df.cuisine.value_counts().plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "thai df: (289, 385)\njapanese df: (320, 385)\nchinese df: (442, 385)\nindian df: (598, 385)\nkorean df: (799, 385)\n" + ] + } + ], + "source": [ + "\n", + "thai_df = df[(df.cuisine == \"thai\")]\n", + "japanese_df = df[(df.cuisine == \"japanese\")]\n", + "chinese_df = df[(df.cuisine == \"chinese\")]\n", + "indian_df = df[(df.cuisine == \"indian\")]\n", + "korean_df = df[(df.cuisine == \"korean\")]\n", + "\n", + "print(f'thai df: {thai_df.shape}')\n", + "print(f'japanese df: {japanese_df.shape}')\n", + "print(f'chinese df: {chinese_df.shape}')\n", + "print(f'indian df: {indian_df.shape}')\n", + "print(f'korean df: {korean_df.shape}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ವರ್ಗದ ಪ್ರಕಾರ ಶ್ರೇಷ್ಟ ಪದಾರ್ಥಗಳು ಯಾವುವು\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def create_ingredient_df(df):\n", + " # transpose df, drop cuisine and unnamed rows, sum the row to get total for ingredient and add value header to new df\n", + " ingredient_df = df.T.drop(['cuisine','Unnamed: 0']).sum(axis=1).to_frame('value')\n", + " # drop ingredients that have a 0 sum\n", + " ingredient_df = ingredient_df[(ingredient_df.T != 0).any()]\n", + " # sort df\n", + " ingredient_df = ingredient_df.sort_values(by='value', ascending=False, inplace=False)\n", + " return ingredient_df\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 10 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaYAAAD4CAYAAACngkIwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAeAklEQVR4nO3de7RVdb338fcHRFAhTPBCeNnogzckQJcdb11ES01QSxGLUtNHjl1EM2twhmbUo+PY5dhN07DHII+nuKSPFKe0FPEasTcCG1TUEk8QCmjuJIRg+33+WL+ti82+AWvvORfr8xpjjT3Xb/7mnN85x2J/+M0595qKCMzMzPKiW9YFmJmZlXIwmZlZrjiYzMwsVxxMZmaWKw4mMzPLlV2yLmBn0L9//6ipqcm6DDOzitG/f3/uv//++yPi9ObzHExlUFNTQ21tbdZlmJlVFEn9W2r3qTwzM8sVB5OZmeWKg8nMzHLF15jMzLrApk2bWLFiBRs2bMi6lC7Xq1cv9t9/f3r06NGh/g6mMqhf2UDNxNlZl2G2Q5bfdGbWJezUVqxYQZ8+faipqUFS1uV0mYjg1VdfZcWKFQwaNKhDy/hUnplZF9iwYQP9+vWrqlACkES/fv22aaRYEcEkaYqk81pof4+kme0su7y1WxLNzLpStYVSk23d74o+lRcRfwW2CiwzM6tcuQwmSRcC1wABLAYagQ9IuhrYD/hKRMyUVAP8OiKOktQd+CZwOvAWcEdE/LBknbsB9wD3RMQdkj4FTAB2BeYBn4uIRknrgO8Do4A3gbMj4pWu2G8zqx7lvi5d7muEvXv3Zt26dWVdZ0fl7lSepCHAdcDIiBgGXJlmDQBOohgYN7Ww6HigBhgeEe8F7i6Z1xv4FfDzFEpHAGOBEyNiOMXgG5f67gH8IW37EeCyVuocL6lWUm3j+obt3l8zM9tS7oIJGAnMiIi1ABHxWmr/fxHxVkQ8DezbwnKnAj+OiM3NlgO4D/hpRPwsvT8FOAaYL2lhen9wmvdP4Ndpuo5i2G0lIiZHRCEiCt1377sdu2lm1nUmTpzIrbfe+vb7SZMmccMNN3DKKadw9NFHM3ToUO67776tlnv44YcZNWrU2++/8IUvMGXKFADq6ur44Ac/yDHHHMNpp53GqlWrylJrHoOpNRtLprf1CuLjwOl65wqcgKkRMTy9DouISWnepnjnefON5PR0p5nZthg7dizTp09/+/306dO56KKLuPfee1mwYAFz5szhS1/6Eu/8+mvbpk2buOKKK5g5cyZ1dXVccsklXHvttWWpNY+/dB8C7pV0c0S8KmmvDi73O+BfJc2JiM2S9ioZNV2fXrcCnwMeBO6T9N2IWJ220SciXir3zpiZ5cGIESNYvXo1f/3rX1mzZg3vfve72W+//fjiF7/II488Qrdu3Vi5ciWvvPIK++23X7vrW7ZsGUuWLOHDH/4wAI2NjQwYMKAsteYumCJiqaQbgbmSGoGnOrjoT4BDgcWSNgF3ALeUzL8SuFPStyLiK5KuAx6Q1A3YBHwecDCZ2U5rzJgxzJw5k5dffpmxY8dy9913s2bNGurq6ujRowc1NTVb/b3RLrvswltvvfX2+6b5EcGQIUN48skny15n7oIJICKmAlPbmN87/VwOHJWmNwNXp1dp35qSt58paZ8GTGtt3Wl6JtDm30mZmVWKsWPHctlll7F27Vrmzp3L9OnT2WeffejRowdz5szhpZe2/r/5QQcdxNNPP83GjRt58803efDBBznppJM47LDDWLNmDU8++STHH388mzZt4rnnnmPIkCE7XGcug6nSDB3Yl1p/nYuZbYMsvgJqyJAhvPHGGwwcOJABAwYwbtw4Ro8ezdChQykUChx++OFbLXPAAQdw/vnnc9RRRzFo0CBGjBgBwK677srMmTOZMGECDQ0NbN68mauuuqoswaSOXuiy1hUKhfCDAs2sLc888wxHHHFE1mVkpqX9l1QXEYXmfSvprjwzM6sCDiYzM8sVB5OZWRep1ksn27rfDiYzsy7Qq1cvXn311aoLp6bnMfXq1avDy/iuPDOzLrD//vuzYsUK1qxZk3UpXa7pCbYd5WAyM+sCPXr06PATXKudT+WZmVmuOJjMzCxXHExmZpYrvsZUBvUrG8r+NEqzvMriq3SsunjEZGZmuVJ1wSTpvyXtmXUdZmbWsqo6lZeeYDsqIt5qt7OZmWVipx8xSaqRtEzSz4AlQKOk/mnehZIWS1ok6a7UtrekX0qan14nZlm/mVm1qZYR02Dgooj4g6TlAJKGANcBJ0TE2pJHuH8f+G5EPCbpQOB+YKvvqpc0HhgP0P1de3fBLpiZVYdqCaaXIuIPzdpGAjMiYi1ARLyW2k8Fjiye9QPgXZJ6R8S60oUjYjIwGaDngMHV9eVXZmadqFqC6R/b0LcbcFxEbGi3p5mZld1Of42pDQ8BYyT1Ayg5lfcAcEVTJ0nDM6jNzKxqVW0wRcRS4EZgrqRFwM1p1gSgkG6KeBq4PKsazcyqkart2SCdoVAoRG1tbdZlmJlVFEl1EVFo3l61IyYzM8snB5OZmeWKg8nMzHLFwWRmZrniYDIzs1xxMJmZWa44mMzMLFccTGZmlisOJjMzyxUHk5mZ5Uq1fLt4p6pf2UDNxNlZl2GWmeU3nZl1CbYT8YjJzMxyxcFkZma5UjHBJOksSRPLtK5Jkq4px7rMzKy8KuIak6RdImIWMCvD7W/OYttmZtWmy0dMki5MD+FbJOkuSTWSHkptD0o6MPWbIul2SfOAb0m6WNItad5oSfMkPSXp95L2Te2TJN0p6WFJf5Y0oWS710p6TtJjwGEl7YdI+q2kOkmPSjq8pe134SEyM6tqXTpikjQEuA44ISLWpseZTwWmRsRUSZcAPwDOSYvsn/o2Srq4ZFWPAcdFREj638BXgC+leYcDJwN9gGWSbgPeC1wADKe4zwuAutR/MnB5RDwv6V+AHwEjm2+/hX0ZD4wH6P6uvXfksJiZWYmuPpU3EpgREWsBIuI1SccDH0/z72LL0cmMlkKBYmBMkzQA2BV4sWTe7IjYCGyUtBrYF3g/cG9ErAeQNCv97A2cAMyQ1LR8zw5sn4iYTDHU6DlgsB8DbGZWJnm/xvSPVtp/CNwcEbMkfQiYVDJvY8l0I23vYzfg9YgYvo3bNzOzTtLV15geAsZI6geQTuU9QfE0G8A44NEOrKcvsDJNX9SB/o8A50jaTVIfYDRARPwdeFHSmFSPJA3r6M6YmVn5demIKSKWSroRmCupEXgKuAL4qaQvA2uAz3RgVZMonn77G8WwG9TOdhdImgYsAlYD80tmjwNuk3Qd0AP4RepnZmYZUIQvj+yoQqEQtbW1WZdhZlZRJNVFRKF5e8X8ga2ZmVUHB5OZmeWKg8nMzHLFwWRmZrniYDIzs1xxMJmZWa44mMzMLFccTGZmlisOJjMzyxUHk5mZ5Urev128ItSvbKBm4uysyzDL3PKbzsy6BNsJeMRkZma54mAyM7NcyTSYJJ0j6cgO9Jsi6bwW2j8k6ddlrKcg6Qdp+mJJt5Rr3WZm1jFZj5jOAdoNpq4SEbURMSHrOszMqlmbwSTpJkmfL3k/SdI1kr4sab6kxZK+XjL/q5KWSXpM0s8lXZPaD5H0W0l1kh6VdLikE4CzgG9LWpj6XJbWu0jSLyXtXlLOqZJqJT0naVQLte4h6U5Jf5T0lKSz29ivXpJ+Kqk+9T05tXd4BCZpfKqntnF9Q0cWMTOzDmhvxDQNOL/k/fkUnzI7GHgfMBw4RtIHJB0LnAsMA84ASh/+NBm4IiKOAa4BfhQRTwCzgC9HxPCI+BNwT0QcGxHDgGeAS0vWUZO2eSZwu6RezWq9FngoIt4HnEwx8PZoZb8+D0REDAU+AUxtYX1tiojJEVGIiEL33ftuy6JmZtaGNm8Xj4inJO0j6T3A3sDfgKHARyg+Fh2gN8Wg6gPcFxEbgA2SfgUgqTdwAsVHoTetumcrmzxK0g3Anmm995fMmx4RbwHPS/ozcHizZT8CnNU0SgN6AQdSDLjmTgJ+mPbxWUkvAYe2dSzMzKxrdOTvmGYA5wH7URxBHQT8e0T8uLSTpKtaWb4b8HpEDO/AtqYA50TEIkkXAx8qmdf8GfDN3ws4NyKWdWA7ZmaWUx25+WEacAHFcJpBcRRzSRoJIWmgpH2Ax4HR6fpNb2AUQET8HXhR0pjUX5KGpXW/QXGk1aQPsEpSD2BcszrGSOom6RDgYKB5AN0PXKE0LJM0oo19erRp/ZIOpTiycqCZmeVAu8EUEUspBsbKiFgVEQ8A/wU8KakemAn0iYj5FK8ZLQZ+A9QDTXcFjAMulbQIWAo03ZjwC+DL6QaEQ4CvAvMohtyzzUr5H+CPad2Xp1OGpf4P0ANYLGlpet+aHwHdUv3TgIsjYmN7x8LMzDqfIpqfEduBlUm9I2JdupvuEWB8RCwo2wZyqlAoRG1tbdZlmJlVFEl1EVFo3l7u78qbnP5gthcwtRpCyczMyquswRQRnyzn+naUpNOAbzZrfjEiPpZFPWZm1r6d+tvFI+J+trzl3MzMci7rryQyMzPbgoPJzMxyxcFkZma54mAyM7NccTCZmVmuOJjMzCxXHExmZpYrO/XfMXWV+pUN1EycnXUZZhVh+U1nZl2C5ZxHTGZmlisOplZIGi7po1nXYWZWbRxMrRsOOJjMzLpY7oJJ0oWSFktaJOkuSTWSHkptD0o6MPXbV9K9qd8iSSek9qslLUmvq1JbjaRnJN0haamkByTtluY9LKmQpvtLWi5pV+AbwFhJCyWNzeZomJlVn1wFk6QhwHXAyIgYBlwJ/JDiIzTeC9wN/CB1/wEwN/U7Glgq6RjgM8C/AMcBl5U8yXYwcGtEDAFeB85trY6I+CdwPTAtIoZHxLQWah0vqVZSbeP6hq1XYmZm2yVXwQSMBGZExFqAiHgNOJ7iE3MB7gJOKul7W+rXGBENad69EfGPiFgH3AO8P/V/MSIWpuk6oGZHCo2IyRFRiIhC99377siqzMysRN6CqTOVPjq9kXduld/MO8ehV5dWZGZmW8lbMD0EjJHUD0DSXsATwAVp/jjg0TT9IPDZ1K+7pL5p3jmSdpe0B/Cxkv6tWQ4ck6bPK2l/A+izQ3tjZmbbLFfBFBFLgRuBuZIWATcDVwCfkbQY+DTF606knydLqqd4au7I9Cj3KcAfgXnATyLiqXY2+x3gs5KeAvqXtM8BjvTND2ZmXUsRkXUNFa/ngMEx4KLvZV2GWUXwNz9YE0l1EVFo3u6vJCqDoQP7Uut/bGZmZZGrU3lmZmYOJjMzyxUHk5mZ5YqDyczMcsXBZGZmueJgMjOzXHEwmZlZrjiYzMwsVxxMZmaWKw4mMzPLFX8lURnUr2ygZuLsrMswq2j+Dj1r4hGTmZnlSsUHk6RvSDo16zrMzKw8Kv5UXkRc39nbkNQ9Iho7eztmZlZhIyZJX5W0TNJjkn4u6RpJUySdl+Yvl/R1SQsk1Us6PLXvLel3kpZK+omklyT1T/M+JemP6YGAP5bUPbWvk/Qf6YGFx2e202ZmVaZigknSscC5wDDgDGCrh0slayPiaOA24JrU9jXgoYgYAswEDkzrPAIYC5wYEcOBRoqPbwfYA5gXEcMi4rEW6hkvqVZSbeP6hrLso5mZVdapvBOB+yJiA7BB0q9a6XdP+lkHfDxNnwR8DCAifivpb6n9FOAYYL4kgN2A1WleI/DL1oqJiMnAZCg+wXZ7dsjMzLZWScHUURvTz0ba3z8BUyPi31qYt8HXlczMul7FnMoDHgdGS+olqTcwahuXPR9A0keAd6f2B4HzJO2T5u0l6aAy1mxmZtuoYkZMETFf0ixgMfAKUA909OLO14GfS/o08CTwMvBGRKyVdB3wgKRuwCbg88BLZd8BMzPrEEVUzuURSb0jYp2k3YFHgPERsaADy/UEGiNis6TjgdvSzQ5lUSgUora2tlyrMzOrCpLqImKrG9kqZsSUTJZ0JNCL4rWhdkMpORCYnkZF/wQu66wCzcxsx1RUMEXEJ7dzueeBEWUux8zMOkEl3fxgZmZVwMFkZma54mAyM7NccTCZmVmuOJjMzCxXHExmZpYrDiYzM8sVB5OZmeVKRf2BbV7Vr2ygZuLsrMswqzrLbzoz6xKsE3jEZGZmueJgMjOzXKmIYJJ0uaQL0/QUSedt53qGS/poeaszM7NyqohrTBFxe5lWNRwoAP/dfIakXSJic5m2Y2Zm2ymXwZRGR9cAQfHBgH8C1kXEd5r1ux4YDewGPAH8a0SEpIeBecDJwJ7Apen9N4DdJJ0E/DtwBHAIcDDwP5I+A9xGMbw2A1dHxJzO3VszMyuVu1N5koYA1wEjI2IYcGUb3W+JiGMj4iiK4VT6uPVdIuJ9wFXA1yLin8D1wLSIGB4R01K/I4FTI+ITFJ9eGxExFPgEMFVSr1bqHC+pVlJt4/qOPkjXzMzak7tgAkYCMyJiLUBEvNZG35MlzZNUn5YbUjLvnvSzDqhpYx2zIuLNNH0S8J9pu89SfMT6oS0tFBGTI6IQEYXuu/dtZ5fMzKyjcnkqryPSSOZHQCEi/iJpEsUn2zbZmH420vZ+/qNzKjQzs+2RxxHTQ8AYSf0AJO3VSr+mEForqTfQkTv13gD6tDH/UWBc2u6hFB/JvqwjRZuZWXnkLpgiYilwIzBX0iLg5lb6vQ7cASwB7gfmd2D1c4AjJS2UNLaF+T8CuqVTg9OAiyNiYwv9zMyskygisq6h4hUKhaitrc26DDOziiKpLiIKzdtzN2IyM7Pq5mAyM7NccTCZmVmuOJjMzCxXHExmZpYrDiYzM8sVB5OZmeWKg8nMzHLFwWRmZrniYDIzs1yp2G8Xz5P6lQ3UTJyddRlm1omW33Rm1iVUDY+YzMwsVxxMZmaWKw4mMzPLlVwEk6QLJS2WtEjSXZJGp0emPyXp95L2ldRN0vOS9k7LdJP0gqS90+uXkuan14mpzyRJd0p6WNKfJU1I7TWSnpF0h6Slkh6QtFuad4ik30qqk/SopMOzOzJmZtUn82CSNAS4DhgZEcOAK4HHgOMiYgTwC+ArEfEW8J+kJ8wCpwKLImIN8H3guxFxLHAu8JOSTRwOnAa8D/iapB6pfTBwa0QMAV5PywFMBq6IiGOAayg+PLClusdLqpVU27i+YYePg5mZFeXhrryRwIyIWAsQEa9JGgpMkzQA2BV4MfW9E7gP+B5wCfDT1H4qxSfTNq3zXelx6wCz01NoN0paDeyb2l+MiIVpug6oScucAMwoWVfPloqOiMkUQ4yeAwb7aYtmZmWSh2BqyQ+BmyNilqQPAZMAIuIvkl6RNJLiCKhp9NSN4ghrQ+lKUriUPhq9kXf2uXn7bmk9r0fE8LLujZmZdVjmp/KAh4AxkvoBSNoL6AusTPMvatb/JxRP6c2IiMbU9gBwRVMHSdsVLBHxd+BFSWPSeiRp2Pasy8zMtk/mwRQRS4EbgbmSFgE3UxwhzZBUB6xttsgsoDfvnMYDmAAU0g0UTwOX70BJ44BLUy1LgbN3YF1mZraNFFFZl0ckFSje6PD+rGtp0nPA4Bhw0feyLsPMOpG/+aH8JNVFRKF5e16vMbVI0kTgs7xzbSkXhg7sS60/tGZmZZH5qbxtERE3RcRBEfFY1rWYmVnnqKhgMjOznZ+DyczMcsXBZGZmueJgMjOzXHEwmZlZrjiYzMwsVxxMZmaWKw4mMzPLFQeTmZnlSkV9JVFe1a9soGbi7KzLMLOdWDV9V59HTGZmlitVEUySJkh6RtLf0hfBttbvYkm3dGVtZma2pWo5lfc54NSIWJF1IWZm1radfsQk6XbgYOA3kr7YNCKSNEbSEkmLJD1Sssh7JP1W0vOSvpVJ0WZmVWynD6aIuBz4K3Ay8LeSWdcDp0XEMOCskvbhwFhgKDBW0gEtrVfSeEm1kmob1zd0TvFmZlVopw+mNjwOTJF0GdC9pP3BiGiIiA3A08BBLS0cEZMjohARhe679+2Ccs3MqkPVBlMaSV0HHADUSeqXZm0s6dZI9VyHMzPLhar9pSvpkIiYB8yTdAbFgDIzs4xV7YgJ+LakeklLgCeARVkXZGZmVTJiioiaNDklvYiIj7fQ9e35qc+oTi3MzMy2UhXB1NmGDuxLbRV9XYiZWWeq5lN5ZmaWQw4mMzPLFQeTmZnlioPJzMxyxcFkZma54mAyM7NccTCZmVmuOJjMzCxXHExmZpYr/uaHMqhf2UDNxNlZl2Fm1qWWd9I33njEZGZmueJgMjOzXKnaYJJ0saRb0vTlki7MuiYzM6vSa0ySttjviLg9q1rMzGxLFR1Mkr4KfApYA/wFqAMagPHArsALwKcjYr2kKcAGYATwOLC4ZD2TgHUR8R1J/wu4Hdib4qPVx0TEn7pqn8zMql3FnsqTdCxwLjAMOAMopFn3RMSxETEMeAa4tGSx/YETIuLqNlZ9N3BrWv4EYFUr2x8vqVZSbeP6hh3cGzMza1LJI6YTgfsiYgOwQdKvUvtRkm4A9gR6A/eXLDMjIhpbW6GkPsDAiLgXIK27RRExGZgM0HPA4NihPTEzs7dV7IipDVOAL0TEUODrQK+Sef/IpCIzM+uwSg6mx4HRknpJ6g2MSu19gFWSegDjtmWFEfEGsELSOQCSekravZxFm5lZ2yo2mCJiPjCL4k0MvwHqKd748FVgHsXgenY7Vv1pYIKkxcATwH5lKdjMzDpEEZV7eURS74hYl0Y1jwDjI2JBV9dRKBSitra2qzdrZlbRJNVFRKF5eyXf/AAwWdKRFK8jTc0ilMzMrLwqOpgi4pNZ12BmZuVVsdeYzMxs5+RgMjOzXHEwmZlZrlT0XXl5IekNYFnWdWyH/sDarIvYDq67a7nurlUtda8FiIjTm8+o6JsfcmRZS7c85p2kWtfddVx313LdXaucdftUnpmZ5YqDyczMcsXBVB6Tsy5gO7nuruW6u5br7lplq9s3P5iZWa54xGRmZrniYDIzs1xxMO0ASadLWibpBUkTs66nNZIOkDRH0tOSlkq6MrVPkrRS0sL0+mjWtTYnabmk+lRfbWrbS9LvJD2ffr476zpLSTqs5JgulPR3SVfl9XhLulPSaklLStpaPMYq+kH6zC+WdHTO6v62pGdTbfdK2jO110h6s+TY356zulv9bEj6t3S8l0k6LZuqW617WknNyyUtTO07drwjwq/teAHdgT8BBwO7AouAI7Ouq5VaBwBHp+k+wHPAkcAk4Jqs62un9uVA/2Zt3wImpumJwDezrrOdz8nLwEF5Pd7AB4CjgSXtHWPgoxSffybgOGBezur+CLBLmv5mSd01pf1yeLxb/Gykf6eLgJ7AoPQ7p3te6m42/z+A68txvD1i2n7vA16IiD9HxD+BXwBnZ1xTiyJiVaRHgkTxKb3PAAOzrWqHnA1MTdNTgXMyrKU9pwB/ioiXsi6kNRHxCPBas+bWjvHZwM+i6A/AnpIGdE2lW2qp7oh4ICI2p7d/APbv8sLa0crxbs3ZwC8iYmNEvAi8QPF3T5drq25JAs4Hfl6ObTmYtt9A4C8l71dQAb/sJdUAIyg+5RfgC+m0x515OyWWBPCApDpJ41PbvhGxKk2/DOybTWkdcgFb/mPN+/Fu0toxrqTP/SUUR3dNBkl6StJcSe/Pqqg2tPTZqJTj/X7glYh4vqRtu4+3g6mKSOoN/BK4KiL+DtwGHAIMB1ZRHIrnzUkRcTRwBvB5SR8onRnF8wa5/JsHSbsCZwEzUlMlHO+t5PkYt0bStcBm4O7UtAo4MCJGAFcD/yXpXVnV14KK/GyU+ARb/gdsh463g2n7rQQOKHm/f2rLJUk9KIbS3RFxD0BEvBIRjRHxFnAHGZ0iaEtErEw/VwP3UqzxlabTR+nn6uwqbNMZwIKIeAUq43iXaO0Y5/5zL+liYBQwLoUq6VTYq2m6juK1mkMzK7KZNj4blXC8dwE+DkxratvR4+1g2n7zgcGSBqX/GV8AzMq4phal87//F3gmIm4uaS+9NvAxYEnzZbMkaQ9JfZqmKV7YXkLxOF+Uul0E3JdNhe3a4n+ReT/ezbR2jGcBF6a7844DGkpO+WVO0unAV4CzImJ9Sfvekrqn6YOBwcCfs6lya218NmYBF0jqKWkQxbr/2NX1teNU4NmIWNHUsMPHO4u7O3aWF8U7lJ6j+L+Ba7Oup406T6J4KmYxsDC9PgrcBdSn9lnAgKxrbVb3wRTvSFoELG06xkA/4EHgeeD3wF5Z19pC7XsArwJ9S9pyebwphucqYBPFaxiXtnaMKd6Nd2v6zNcDhZzV/QLFazJNn/PbU99z02doIbAAGJ2zulv9bADXpuO9DDgjT3Wn9inA5c367tDx9lcSmZlZrvhUnpmZ5YqDyczMcsXBZGZmueJgMjOzXHEwmZlZrjiYzMwsVxxMZmaWK/8fnSxrKwF+wYgAAAAASUVORK5CYII=\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "thai_ingredient_df = create_ingredient_df(thai_df)\r\n", + "thai_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 11 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "japanese_ingredient_df = create_ingredient_df(japanese_df)\r\n", + "japanese_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 12 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "chinese_ingredient_df = create_ingredient_df(chinese_df)\r\n", + "chinese_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 13 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "indian_ingredient_df = create_ingredient_df(indian_df)\r\n", + "indian_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 14 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "korean_ingredient_df = create_ingredient_df(korean_df)\r\n", + "korean_ingredient_df.head(10).plot.barh()" + ] + }, + { + "source": [ + "ಎಲ್ಲಾ ಪಾಕಶಾಲೆಗಳಿಗೂ ಸಾಮಾನ್ಯವಾಗಿರುವ ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಪದಾರ್ಥಗಳನ್ನು ಬಿಟ್ಟುಬಿಡಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 15 + } + ], + "source": [ + "feature_df= df.drop(['cuisine','Unnamed: 0','rice','garlic','ginger'], axis=1)\n", + "labels_df = df.cuisine #.unique()\n", + "feature_df.head()\n" + ] + }, + { + "source": [ + "SMOTE ಓವರ್‌ಸ್ಯಾಂಪ್ಲಿಂಗ್‌ನೊಂದಿಗೆ ಡೇಟಾವನ್ನು ಅತ್ಯಧಿಕ ವರ್ಗಕ್ಕೆ ಸಮತೋಲಗೊಳಿಸಿ. ಇಲ್ಲಿ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ಓದಿ: https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "oversample = SMOTE()\n", + "transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "new label count: korean 799\nchinese 799\njapanese 799\nindian 799\nthai 799\nName: cuisine, dtype: int64\nold label count: korean 799\nindian 598\nchinese 442\njapanese 320\nthai 289\nName: cuisine, dtype: int64\n" + ] + } + ], + "source": [ + "print(f'new label count: {transformed_label_df.value_counts()}')\r\n", + "print(f'old label count: {df.cuisine.value_counts()}')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 18 + } + ], + "source": [ + "transformed_feature_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " cuisine almond angelica anise anise_seed apple apple_brandy \\\n", + "0 indian 0 0 0 0 0 0 \n", + "1 indian 1 0 0 0 0 0 \n", + "2 indian 0 0 0 0 0 0 \n", + "3 indian 0 0 0 0 0 0 \n", + "4 indian 0 0 0 0 0 0 \n", + "... ... ... ... ... ... ... ... \n", + "3990 thai 0 0 0 0 0 0 \n", + "3991 thai 0 0 0 0 0 0 \n", + "3992 thai 0 0 0 0 0 0 \n", + "3993 thai 0 0 0 0 0 0 \n", + "3994 thai 0 0 0 0 0 0 \n", + "\n", + " apricot armagnac artemisia ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "... ... ... ... ... ... ... ... \n", + "3990 0 0 0 ... 0 0 0 \n", + "3991 0 0 0 ... 0 0 0 \n", + "3992 0 0 0 ... 0 0 0 \n", + "3993 0 0 0 ... 0 0 0 \n", + "3994 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "... ... ... ... ... ... ... ... \n", + "3990 0 0 0 0 0 0 0 \n", + "3991 0 0 0 0 0 0 0 \n", + "3992 0 0 0 0 0 0 0 \n", + "3993 0 0 0 0 0 0 0 \n", + "3994 0 0 0 0 0 0 0 \n", + "\n", + "[3995 rows x 381 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisia...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
0indian000000000...0000000000
1indian100000000...0000000000
2indian000000000...0000000000
3indian000000000...0000000000
4indian000000000...0000000010
..................................................................
3990thai000000000...0000000000
3991thai000000000...0000000000
3992thai000000000...0000000000
3993thai000000000...0000000000
3994thai000000000...0000000000
\n

3995 rows × 381 columns

\n
" + }, + "metadata": {}, + "execution_count": 19 + } + ], + "source": [ + "# export transformed data to new df for classification\n", + "transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer')\n", + "transformed_df" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\nRangeIndex: 3995 entries, 0 to 3994\nColumns: 381 entries, cuisine to zucchini\ndtypes: int64(380), object(1)\nmemory usage: 11.6+ MB\n" + ] + } + ], + "source": [ + "transformed_df.info()" + ] + }, + { + "source": [ + "ಭವಿಷ್ಯದಲ್ಲಿ ಬಳಸಲು ಫೈಲ್ ಅನ್ನು ಉಳಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "transformed_df.to_csv(\"../../data/cleaned_cuisines.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "kernelspec": { + "name": "python3", + "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" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "1da12ed6d238756959b8de9cac2a35a2", + "translation_date": "2025-12-19T17:04:22+00:00", + "source_file": "4-Classification/1-Introduction/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/translations/kn/4-Classification/2-Classifiers-1/README.md b/translations/kn/4-Classification/2-Classifiers-1/README.md new file mode 100644 index 000000000..9c5fe6e64 --- /dev/null +++ b/translations/kn/4-Classification/2-Classifiers-1/README.md @@ -0,0 +1,257 @@ + +# ಆಹಾರ ವರ್ಗೀಕರಣಗಳು 1 + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಹಿಂದಿನ ಪಾಠದಿಂದ ಉಳಿಸಿಕೊಂಡ ಸಮತೋಲನ, ಸ್ವಚ್ಛವಾದ ಆಹಾರಗಳ ಬಗ್ಗೆ ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಬಳಸುತ್ತೀರಿ. + +ನೀವು ಈ ಡೇಟಾಸೆಟ್ ಅನ್ನು ವಿವಿಧ ವರ್ಗೀಕರಣಕಾರಿಗಳೊಂದಿಗೆ ಬಳಸುತ್ತೀರಿ _ಒಂದು ಗುಂಪಿನ ಪದಾರ್ಥಗಳ ಆಧಾರದ ಮೇಲೆ ನೀಡಲಾದ ರಾಷ್ಟ್ರೀಯ ಆಹಾರವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು_. ಇದನ್ನು ಮಾಡುವಾಗ, ವರ್ಗೀಕರಣ ಕಾರ್ಯಗಳಿಗೆ ಆಲ್ಗೋರಿದಮ್‌ಗಳನ್ನು ಹೇಗೆ ಬಳಸಬಹುದು ಎಂಬುದರ ಬಗ್ಗೆ ನೀವು ಹೆಚ್ಚು ತಿಳಿಯುತ್ತೀರಿ. + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) +# ತಯಾರಿ + +ನೀವು [ಪಾಠ 1](../1-Introduction/README.md) ಪೂರ್ಣಗೊಳಿಸಿದ್ದೀರಿ ಎಂದು ಊಹಿಸಿ, ಈ ನಾಲ್ಕು ಪಾಠಗಳಿಗಾಗಿ ರೂಟ್ `/data` ಫೋಲ್ಡರ್‌ನಲ್ಲಿ _cleaned_cuisines.csv_ ಫೈಲ್ ಇರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. + +## ವ್ಯಾಯಾಮ - ರಾಷ್ಟ್ರೀಯ ಆಹಾರವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ + +1. ಈ ಪಾಠದ _notebook.ipynb_ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತ, ಆ ಫೈಲ್ ಮತ್ತು Pandas ಲೈಬ್ರರಿಯನ್ನು ಆಮದುಮಾಡಿ: + + ```python + import pandas as pd + cuisines_df = pd.read_csv("../data/cleaned_cuisines.csv") + cuisines_df.head() + ``` + + ಡೇಟಾ ಹೀಗೆ ಕಾಣುತ್ತದೆ: + +| | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini | +| --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- | +| 0 | 0 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 1 | 1 | indian | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 2 | 2 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 3 | 3 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | + + +1. ಈಗ, ಇನ್ನಷ್ಟು ಲೈಬ್ರರಿಗಳನ್ನು ಆಮದುಮಾಡಿ: + + ```python + from sklearn.linear_model import LogisticRegression + from sklearn.model_selection import train_test_split, cross_val_score + from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve + from sklearn.svm import SVC + import numpy as np + ``` + +1. ತರಬೇತಿಗಾಗಿ X ಮತ್ತು y ಸಂಯೋಜನೆಗಳನ್ನು ಎರಡು ಡೇಟಾಫ್ರೇಮ್‌ಗಳಾಗಿ ವಿಭಜಿಸಿ. `cuisine` ಲೇಬಲ್‌ಗಳ ಡೇಟಾಫ್ರೇಮ್ ಆಗಬಹುದು: + + ```python + cuisines_label_df = cuisines_df['cuisine'] + cuisines_label_df.head() + ``` + + ಇದು ಹೀಗೆ ಕಾಣುತ್ತದೆ: + + ```output + 0 indian + 1 indian + 2 indian + 3 indian + 4 indian + Name: cuisine, dtype: object + ``` + +1. ಆ `Unnamed: 0` ಕಾಲಮ್ ಮತ್ತು `cuisine` ಕಾಲಮ್ ಅನ್ನು `drop()` ಕರೆ ಮಾಡಿ ತೆಗೆದುಹಾಕಿ. ಉಳಿದ ಡೇಟಾವನ್ನು ತರಬೇತಿಗೆ ಬಳಸಬಹುದಾದ ಲಕ್ಷಣಗಳಾಗಿ ಉಳಿಸಿ: + + ```python + cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1) + cuisines_feature_df.head() + ``` + + ನಿಮ್ಮ ಲಕ್ಷಣಗಳು ಹೀಗೆ ಕಾಣುತ್ತವೆ: + +| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini | +| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: | +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | + +ಈಗ ನೀವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ ಸಿದ್ಧರಾಗಿದ್ದೀರಿ! + +## ನಿಮ್ಮ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು + +ನಿಮ್ಮ ಡೇಟಾ ಸ್ವಚ್ಛವಾಗಿದ್ದು ತರಬೇತಿಗೆ ಸಿದ್ಧವಾಗಿದೆ, ನೀವು ಯಾವ ಆಲ್ಗೋರಿದಮ್ ಅನ್ನು ಬಳಸಬೇಕೆಂದು ನಿರ್ಧರಿಸಬೇಕು. + +Scikit-learn ವರ್ಗೀಕರಣವನ್ನು Supervised Learning ಅಡಿಯಲ್ಲಿ ಗುಂಪುಮಾಡುತ್ತದೆ, ಮತ್ತು ಆ ವರ್ಗದಲ್ಲಿ ನೀವು ವರ್ಗೀಕರಿಸಲು ಹಲವಾರು ವಿಧಾನಗಳನ್ನು ಕಾಣುತ್ತೀರಿ. [ವೈವಿಧ್ಯ](https://scikit-learn.org/stable/supervised_learning.html) ಮೊದಲ ನೋಟದಲ್ಲಿ ಸ್ವಲ್ಪ ಗೊಂದಲಕಾರಿಯಾಗಿದೆ. ಕೆಳಗಿನ ವಿಧಾನಗಳು ಎಲ್ಲವೂ ವರ್ಗೀಕರಣ ತಂತ್ರಗಳನ್ನು ಒಳಗೊಂಡಿವೆ: + +- ರೇಖೀಯ ಮಾದರಿಗಳು +- ಬೆಂಬಲ ವೆಕ್ಟರ್ ಯಂತ್ರಗಳು +- ಸ್ಟೋಚಾಸ್ಟಿಕ್ ಗ್ರೇಡಿಯಂಟ್ ಡಿಸೆಂಟ್ +- ಸಮೀಪದ ನೆರೆಹೊರೆಯವರು +- ಗೌಸಿಯನ್ ಪ್ರಕ್ರಿಯೆಗಳು +- ನಿರ್ಧಾರ ಮರಗಳು +- ಎನ್ಸೆಂಬಲ್ ವಿಧಾನಗಳು (ಮತದಾನ ವರ್ಗೀಕರಣಕಾರಿಗಳು) +- ಬಹು ವರ್ಗ ಮತ್ತು ಬಹು ಔಟ್‌ಪುಟ್ ಆಲ್ಗೋರಿದಮ್‌ಗಳು (ಬಹು ವರ್ಗ ಮತ್ತು ಬಹು ಲೇಬಲ್ ವರ್ಗೀಕರಣ, ಬಹು ವರ್ಗ-ಬಹು ಔಟ್‌ಪುಟ್ ವರ್ಗೀಕರಣ) + +> ನೀವು [ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಡೇಟಾ ವರ್ಗೀಕರಿಸಲು](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification) ಕೂಡ ಬಳಸಬಹುದು, ಆದರೆ ಅದು ಈ ಪಾಠದ ವ್ಯಾಪ್ತಿಗೆ ಹೊರಗಿದೆ. + +### ಯಾವ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕು? + +ಹೀಗಾಗಿ, ನೀವು ಯಾವ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕು? ಬಹುಶಃ, ಹಲವಾರು ವಿಧಾನಗಳನ್ನು ಪ್ರಯೋಗಿಸಿ ಉತ್ತಮ ಫಲಿತಾಂಶವನ್ನು ಹುಡುಕುವುದು ಪರೀಕ್ಷಿಸುವ ಒಂದು ಮಾರ್ಗ. Scikit-learn ಒಂದು [ಪಕ್ಕಪಕ್ಕದ ಹೋಲಿಕೆ](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) ಒದಗಿಸುತ್ತದೆ, ಇದರಲ್ಲಿ KNeighbors, SVC ಎರಡು ರೀತಿಗಳು, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB ಮತ್ತು QuadraticDiscrinationAnalysis ಹೋಲಿಕೆ ಮಾಡಲಾಗಿದೆ, ಫಲಿತಾಂಶಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಲಾಗಿದೆ: + +![classification ಹೋಲಿಕೆ](../../../../translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.kn.png) +> Scikit-learn ಡಾಕ್ಯುಮೆಂಟೇಶನ್‌ನಲ್ಲಿ ರಚಿಸಲಾದ ಪ್ಲಾಟ್‌ಗಳು + +> AutoML ಈ ಸಮಸ್ಯೆಯನ್ನು ಕ್ಲೌಡ್‌ನಲ್ಲಿ ಈ ಹೋಲಿಕೆಗಳನ್ನು ನಡೆಸಿ ನಿಮ್ಮ ಡೇಟಾಗೆ ಅತ್ಯುತ್ತಮ ಆಲ್ಗೋರಿದಮ್ ಆಯ್ಕೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದನ್ನು [ಇಲ್ಲಿ](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott) ಪ್ರಯತ್ನಿಸಿ + +### ಉತ್ತಮ ವಿಧಾನ + +ಅನಿರೀಕ್ಷಿತವಾಗಿ ಊಹಿಸುವುದಕ್ಕಿಂತ ಉತ್ತಮ ವಿಧಾನವೆಂದರೆ, ಈ ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದಾದ [ML ಚೀಟ್ ಶೀಟ್](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) ನಲ್ಲಿ ನೀಡಲಾದ ಆಲೋಚನೆಗಳನ್ನು ಅನುಸರಿಸುವುದು. ಇಲ್ಲಿ, ನಮ್ಮ ಬಹು ವರ್ಗ ಸಮಸ್ಯೆಗೆ ಕೆಲವು ಆಯ್ಕೆಗಳು ಇವೆ: + +![ಬಹು ವರ್ಗ ಸಮಸ್ಯೆಗಳ ಚೀಟ್‌ಶೀಟ್](../../../../translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.kn.png) +> ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ ಆಲ್ಗೋರಿದಮ್ ಚೀಟ್ ಶೀಟ್‌ನ ಒಂದು ಭಾಗ, ಬಹು ವರ್ಗ ವರ್ಗೀಕರಣ ಆಯ್ಕೆಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ + +✅ ಈ ಚೀಟ್ ಶೀಟ್ ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ, ಮುದ್ರಿಸಿ, ನಿಮ್ಮ ಗೋಡೆಯ ಮೇಲೆ ಹಚ್ಚಿ! + +### ತರ್ಕ + +ನಾವು ಹೊಂದಿರುವ ನಿರ್ಬಂಧಗಳನ್ನು ಗಮನಿಸಿ ವಿಭಿನ್ನ ವಿಧಾನಗಳ ಮೂಲಕ ತರ್ಕ ಮಾಡೋಣ: + +- **ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ತುಂಬಾ ಭಾರವಾಗಿವೆ**. ನಮ್ಮ ಸ್ವಚ್ಛ ಆದರೆ ಕನಿಷ್ಠ ಡೇಟಾಸೆಟ್ ಮತ್ತು ನೋಟ್ಬುಕ್‌ಗಳ ಮೂಲಕ ಸ್ಥಳೀಯವಾಗಿ ತರಬೇತಿ ನಡೆಸುತ್ತಿರುವುದರಿಂದ, ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಈ ಕಾರ್ಯಕ್ಕೆ ತುಂಬಾ ಭಾರವಾಗಿವೆ. +- **ಎರಡು ವರ್ಗದ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಬಳಸುವುದಿಲ್ಲ**. ನಾವು ಎರಡು ವರ್ಗದ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಬಳಸುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ one-vs-all ನಿಯಮ ಹೊರತುಪಡಿಸಲಾಗಿದೆ. +- **ನಿರ್ಧಾರ ಮರ ಅಥವಾ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಕೆಲಸ ಮಾಡಬಹುದು**. ನಿರ್ಧಾರ ಮರ ಕೆಲಸ ಮಾಡಬಹುದು, ಅಥವಾ ಬಹು ವರ್ಗ ಡೇಟಾಗೆ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್. +- **ಬಹು ವರ್ಗ ಬೂಸ್ಟೆಡ್ ನಿರ್ಧಾರ ಮರಗಳು ಬೇರೆ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತವೆ**. ಬಹು ವರ್ಗ ಬೂಸ್ಟೆಡ್ ನಿರ್ಧಾರ ಮರವು ಅಪ್ರಮಾಣಿತ ಕಾರ್ಯಗಳಿಗೆ ಸೂಕ್ತ, ಉದಾ: ರ್ಯಾಂಕಿಂಗ್ ನಿರ್ಮಾಣಕ್ಕೆ, ಆದ್ದರಿಂದ ನಮ್ಮಿಗೆ ಉಪಯುಕ್ತವಲ್ಲ. + +### Scikit-learn ಬಳಕೆ + +ನಾವು ನಮ್ಮ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸಲು Scikit-learn ಅನ್ನು ಬಳಸುತ್ತೇವೆ. ಆದರೆ, Scikit-learn ನಲ್ಲಿ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಳಸಲು ಹಲವಾರು ವಿಧಾನಗಳಿವೆ. [ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression) ನೋಡಿ. + +ಮೂಲತಃ ಎರಡು ಪ್ರಮುಖ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳಿವೆ - `multi_class` ಮತ್ತು `solver` - ನಾವು Scikit-learn ಗೆ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮಾಡಲು ಕೇಳುವಾಗ ಅವುಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕು. `multi_class` ಮೌಲ್ಯವು ನಿರ್ದಿಷ್ಟ ವರ್ತನೆಯನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ. `solver` ಮೌಲ್ಯವು ಯಾವ ಆಲ್ಗೋರಿದಮ್ ಬಳಸಬೇಕೆಂದು ಸೂಚಿಸುತ್ತದೆ. ಎಲ್ಲಾ ಸೊಲ್ವರ್‌ಗಳು ಎಲ್ಲಾ `multi_class` ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ. + +ಡಾಕ್ಯುಮೆಂಟ್ ಪ್ರಕಾರ, ಬಹು ವರ್ಗ ಪ್ರಕರಣದಲ್ಲಿ, ತರಬೇತಿ ಆಲ್ಗೋರಿದಮ್: + +- **`multi_class` ಆಯ್ಕೆಯನ್ನು `ovr` ಗೆ ಸೆಟ್ ಮಾಡಿದರೆ one-vs-rest (OvR) ಯೋಜನೆಯನ್ನು ಬಳಸುತ್ತದೆ** +- **`multi_class` ಆಯ್ಕೆಯನ್ನು `multinomial` ಗೆ ಸೆಟ್ ಮಾಡಿದರೆ ಕ್ರಾಸ್-ಎಂಟ್ರೋಪಿ ನಷ್ಟವನ್ನು ಬಳಸುತ್ತದೆ**. (ಪ್ರಸ್ತುತ `multinomial` ಆಯ್ಕೆ ‘lbfgs’, ‘sag’, ‘saga’ ಮತ್ತು ‘newton-cg’ ಸೊಲ್ವರ್‌ಗಳಿಗೆ ಮಾತ್ರ ಬೆಂಬಲ ಇದೆ.)" + +> 🎓 ಇಲ್ಲಿ 'ಯೋಜನೆ' ಎಂದರೆ 'ovr' (ಒಂದು-ವಿರುದ್ಧ-ಮತ್ತು) ಅಥವಾ 'multinomial'. ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮೂಲತಃ ದ್ವಿವರ್ಗ ವರ್ಗೀಕರಣಕ್ಕೆ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, ಈ ಯೋಜನೆಗಳು ಬಹು ವರ್ಗ ವರ್ಗೀಕರಣ ಕಾರ್ಯಗಳನ್ನು ಉತ್ತಮವಾಗಿ ನಿರ್ವಹಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ. [ಮೂಲ](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/) + +> 🎓 'ಸೊಲ್ವರ್' ಅನ್ನು "ಆಪ್ಟಿಮೈಜೆಷನ್ ಸಮಸ್ಯೆಯಲ್ಲಿ ಬಳಸುವ ಆಲ್ಗೋರಿದಮ್" ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. [ಮೂಲ](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression). + +Scikit-learn ಈ ಟೇಬಲ್ ಅನ್ನು ನೀಡುತ್ತದೆ, ವಿವಿಧ ಡೇಟಾ ರಚನೆಗಳಿಂದ ಉಂಟಾಗುವ ಸವಾಲುಗಳನ್ನು ಸೊಲ್ವರ್‌ಗಳು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ವಿವರಿಸಲು: + +![ಸೊಲ್ವರ್‌ಗಳು](../../../../translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.kn.png) + +## ವ್ಯಾಯಾಮ - ಡೇಟಾವನ್ನು ವಿಭಜಿಸಿ + +ನೀವು ಇತ್ತೀಚೆಗೆ ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಗ್ಗೆ ಕಲಿತಿದ್ದೀರಿ, ಆದ್ದರಿಂದ ಮೊದಲ ತರಬೇತಿ ಪ್ರಯತ್ನಕ್ಕಾಗಿ ನಾವು ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮೇಲೆ ಗಮನಹರಿಸಬಹುದು. +`train_test_split()` ಅನ್ನು ಕರೆ ಮಾಡಿ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಗುಂಪುಗಳಾಗಿ ವಿಭಜಿಸಿ: + +```python +X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3) +``` + +## ವ್ಯಾಯಾಮ - ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಅನ್ವಯಿಸಿ + +ನೀವು ಬಹು ವರ್ಗ ಪ್ರಕರಣವನ್ನು ಬಳಸುತ್ತಿರುವುದರಿಂದ, ಯಾವ _ಯೋಜನೆ_ ಬಳಸಬೇಕು ಮತ್ತು ಯಾವ _ಸೊಲ್ವರ್_ ಸೆಟ್ ಮಾಡಬೇಕು ಎಂದು ಆಯ್ಕೆ ಮಾಡಬೇಕು. ಬಹು ವರ್ಗ ಸೆಟ್ಟಿಂಗ್ ಮತ್ತು **liblinear** ಸೊಲ್ವರ್ ಬಳಸಿ LogisticRegression ಅನ್ನು ತರಬೇತಿಗೆ ಬಳಸಿ. + +1. multi_class ಅನ್ನು `ovr` ಗೆ ಮತ್ತು ಸೊಲ್ವರ್ ಅನ್ನು `liblinear` ಗೆ ಸೆಟ್ ಮಾಡಿ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ರಚಿಸಿ: + + ```python + lr = LogisticRegression(multi_class='ovr',solver='liblinear') + model = lr.fit(X_train, np.ravel(y_train)) + + accuracy = model.score(X_test, y_test) + print ("Accuracy is {}".format(accuracy)) + ``` + + ✅ `lbfgs` ಎಂಬ ಬೇರೆ ಸೊಲ್ವರ್ ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ, ಅದು ಸಾಮಾನ್ಯವಾಗಿ ಡೀಫಾಲ್ಟ್ ಆಗಿರುತ್ತದೆ + + > ಗಮನಿಸಿ, ಅಗತ್ಯವಿದ್ದಾಗ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಫ್ಲ್ಯಾಟ್ ಮಾಡಲು Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) ಫಂಕ್ಷನ್ ಬಳಸಿ. + + ನಿಖರತೆ **80%** ಕ್ಕಿಂತ ಹೆಚ್ಚು ಉತ್ತಮವಾಗಿದೆ! + +1. ನೀವು ಈ ಮಾದರಿಯನ್ನು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿರುವುದನ್ನು ಡೇಟಾದ ಒಂದು ಸಾಲನ್ನು (#50) ಪರೀಕ್ಷಿಸುವ ಮೂಲಕ ನೋಡಬಹುದು: + + ```python + print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}') + print(f'cuisine: {y_test.iloc[50]}') + ``` + + ಫಲಿತಾಂಶ ಮುದ್ರಿತವಾಗಿದೆ: + + ```output + ingredients: Index(['cilantro', 'onion', 'pea', 'potato', 'tomato', 'vegetable_oil'], dtype='object') + cuisine: indian + ``` + + ✅ ಬೇರೆ ಸಾಲಿನ ಸಂಖ್ಯೆಯನ್ನು ಪ್ರಯತ್ನಿಸಿ ಮತ್ತು ಫಲಿತಾಂಶಗಳನ್ನು ಪರಿಶೀಲಿಸಿ + +1. ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ಪರಿಶೀಲಿಸುವಾಗ, ನೀವು ಈ ಭವಿಷ್ಯವಾಣಿಯ ನಿಖರತೆಯನ್ನು ಪರಿಶೀಲಿಸಬಹುದು: + + ```python + test= X_test.iloc[50].values.reshape(-1, 1).T + proba = model.predict_proba(test) + classes = model.classes_ + resultdf = pd.DataFrame(data=proba, columns=classes) + + topPrediction = resultdf.T.sort_values(by=[0], ascending = [False]) + topPrediction.head() + ``` + + ಫಲಿತಾಂಶ ಮುದ್ರಿಸಲಾಗಿದೆ - ಭಾರತೀಯ ಆಹಾರವೇ ಇದರ ಅತ್ಯುತ್ತಮ ಊಹೆ, ಉತ್ತಮ ಸಾಧ್ಯತೆಯೊಂದಿಗೆ: + + | | 0 | + | -------: | -------: | + | indian | 0.715851 | + | chinese | 0.229475 | + | japanese | 0.029763 | + | korean | 0.017277 | + | thai | 0.007634 | + + ✅ ಈ ಮಾದರಿ ಭಾರತೀಯ ಆಹಾರ ಎಂದು ಬಹುಶಃ ಖಚಿತವಾಗಿರುವುದಕ್ಕೆ ನೀವು ಕಾರಣವನ್ನು ವಿವರಿಸಬಹುದೇ? + +1. ನೀವು ರಿಗ್ರೆಶನ್ ಪಾಠಗಳಲ್ಲಿ ಮಾಡಿದಂತೆ ವರ್ಗೀಕರಣ ವರದಿಯನ್ನು ಮುದ್ರಿಸುವ ಮೂಲಕ ಹೆಚ್ಚಿನ ವಿವರಗಳನ್ನು ಪಡೆಯಿರಿ: + + ```python + y_pred = model.predict(X_test) + print(classification_report(y_test,y_pred)) + ``` + + | | precision | recall | f1-score | support | + | ------------ | --------- | ------ | -------- | ------- | + | chinese | 0.73 | 0.71 | 0.72 | 229 | + | indian | 0.91 | 0.93 | 0.92 | 254 | + | japanese | 0.70 | 0.75 | 0.72 | 220 | + | korean | 0.86 | 0.76 | 0.81 | 242 | + | thai | 0.79 | 0.85 | 0.82 | 254 | + | accuracy | 0.80 | 1199 | | | + | macro avg | 0.80 | 0.80 | 0.80 | 1199 | + | weighted avg | 0.80 | 0.80 | 0.80 | 1199 | + +## 🚀ಸವಾಲು + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಸ್ವಚ್ಛಗೊಳಿಸಿದ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು ಒಂದು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಇದು ಪದಾರ್ಥಗಳ ಸರಣಿಯ ಆಧಾರದ ಮೇಲೆ ರಾಷ್ಟ್ರೀಯ ಆಹಾರವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು. ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸಲು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ನೀಡುವ ಅನೇಕ ಆಯ್ಕೆಗಳನ್ನು ಓದಲು ಸ್ವಲ್ಪ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಿ. 'ಸಾಲ್ವರ್' ಎಂಬ ಕಲ್ಪನೆಗೆ ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ಹೋಗಿ, ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಏನು ನಡೆಯುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ. + +## [ಪಾಠೋತ್ತರ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಹಿಂದಿನ ಗಣಿತವನ್ನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಆಳವಾಗಿ ತಿಳಿದುಕೊಳ್ಳಿ [ಈ ಪಾಠದಲ್ಲಿ](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf) +## ನಿಯೋಜನೆ + +[ಸಾಲ್ವರ್‌ಗಳನ್ನು ಅಧ್ಯಯನ ಮಾಡಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/4-Classification/2-Classifiers-1/assignment.md b/translations/kn/4-Classification/2-Classifiers-1/assignment.md new file mode 100644 index 000000000..27cd96cf9 --- /dev/null +++ b/translations/kn/4-Classification/2-Classifiers-1/assignment.md @@ -0,0 +1,25 @@ + +# ಸೊಲ್ವರ್‌ಗಳನ್ನು ಅಧ್ಯಯನ ಮಾಡಿ +## ಸೂಚನೆಗಳು + +ಈ ಪಾಠದಲ್ಲಿ ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನ ಪ್ರಕ್ರಿಯೆಯೊಂದಿಗೆ ಅಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಜೋಡಿಸುವ ವಿವಿಧ ಸೊಲ್ವರ್‌ಗಳ ಬಗ್ಗೆ ಕಲಿತಿರಿ, ಅವುಗಳು ನಿಖರ ಮಾದರಿಯನ್ನು ರಚಿಸುತ್ತವೆ. ಪಾಠದಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾದ ಸೊಲ್ವರ್‌ಗಳ ಮೂಲಕ ಸಾಗಿರಿ ಮತ್ತು ಎರಡು ಸೊಲ್ವರ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ. ನಿಮ್ಮ ಸ್ವಂತ ಪದಗಳಲ್ಲಿ, ಈ ಎರಡು ಸೊಲ್ವರ್‌ಗಳನ್ನು ಹೋಲಿಸಿ ಮತ್ತು ಭೇದಿಸಿ. ಅವು ಯಾವ ರೀತಿಯ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತವೆ? ಅವು ವಿವಿಧ ಡೇಟಾ ರಚನೆಗಳೊಂದಿಗೆ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತವೆ? ನೀವು ಒಂದನ್ನು ಮತ್ತೊಂದಕ್ಕಿಂತ ಏಕೆ ಆಯ್ಕೆಮಾಡುತ್ತೀರಿ? +## ರೂಬ್ರಿಕ್ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯ | +| -------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------ | ---------------------------- | +| | ಎರಡು ಪ್ಯಾರಾಗ್ರಾಫ್‌ಗಳೊಂದಿಗೆ .doc ಫೈಲ್ ಅನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ, ಪ್ರತಿ ಸೊಲ್ವರ್ ಬಗ್ಗೆ ಚಿಂತನೆಯೊಂದಿಗೆ ಹೋಲಿಕೆ ಮಾಡಲಾಗಿದೆ. | ಒಂದು ಪ್ಯಾರಾಗ್ರಾಫ್ ಮಾತ್ರ ಇರುವ .doc ಫೈಲ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | ಕಾರ್ಯಪತ್ರ ಅಪೂರ್ಣವಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/4-Classification/2-Classifiers-1/notebook.ipynb b/translations/kn/4-Classification/2-Classifiers-1/notebook.ipynb new file mode 100644 index 000000000..03e470181 --- /dev/null +++ b/translations/kn/4-Classification/2-Classifiers-1/notebook.ipynb @@ -0,0 +1,41 @@ +{ + "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": "68829b06b4dcd512d3327849191f4d7f", + "translation_date": "2025-12-19T17:03:28+00:00", + "source_file": "4-Classification/2-Classifiers-1/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ವರ್ಗೀಕರಣ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/4-Classification/2-Classifiers-1/solution/Julia/README.md b/translations/kn/4-Classification/2-Classifiers-1/solution/Julia/README.md new file mode 100644 index 000000000..9ea1cbb9c --- /dev/null +++ b/translations/kn/4-Classification/2-Classifiers-1/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb b/translations/kn/4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb new file mode 100644 index 000000000..938a80b0b --- /dev/null +++ b/translations/kn/4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb @@ -0,0 +1,1302 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_11-R.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "6ea6a5171b1b99b7b5a55f7469c048d2", + "translation_date": "2025-12-19T17:22:41+00:00", + "source_file": "4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb", + "language_code": "kn" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ವರ್ಗೀಕರಣ ಮಾದರಿ ನಿರ್ಮಿಸಿ: ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು\n" + ], + "metadata": { + "id": "zs2woWv_HoE8" + } + }, + { + "cell_type": "markdown", + "source": [ + "## ಆಹಾರ ವರ್ಗೀಕರಣಗಳು 1\n", + "\n", + "ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ವಿವಿಧ ವರ್ಗೀಕರಣಗಳನ್ನು *ಒಂದು ಗುಂಪಿನ ಪದಾರ್ಥಗಳ ಆಧಾರದ ಮೇಲೆ ನೀಡಲಾದ ರಾಷ್ಟ್ರೀಯ ಆಹಾರವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು* ಅನ್ವೇಷಿಸುವೆವು. ಇದನ್ನು ಮಾಡುವಾಗ, ವರ್ಗೀಕರಣ ಕಾರ್ಯಗಳಿಗೆ ಆಲ್ಗೋರಿದಮ್‌ಗಳನ್ನು ಹೇಗೆ ಬಳಸಬಹುದು ಎಂಬುದರ ಬಗ್ಗೆ ಹೆಚ್ಚು ತಿಳಿಯುವೆವು.\n", + "\n", + "### [**ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/21/)\n", + "\n", + "### **ತಯಾರಿ**\n", + "\n", + "ಈ ಪಾಠವು ನಮ್ಮ [ಹಿಂದಿನ ಪಾಠ](https://github.com/microsoft/ML-For-Beginners/blob/main/4-Classification/1-Introduction/solution/lesson_10-R.ipynb) ಮೇಲೆ ನಿರ್ಮಿತವಾಗಿದೆ, ಅಲ್ಲಿ ನಾವು:\n", + "\n", + "- ಏಷ್ಯಾ ಮತ್ತು ಭಾರತದ ಎಲ್ಲಾ ಅದ್ಭುತ ಆಹಾರಗಳ ಬಗ್ಗೆ ಡೇಟಾಸೆಟ್ ಬಳಸಿ ವರ್ಗೀಕರಣಗಳಿಗೆ ಸೌಮ್ಯ ಪರಿಚಯ ನೀಡಿದ್ದೇವೆ 😋.\n", + "\n", + "- ನಮ್ಮ ಡೇಟಾವನ್ನು ತಯಾರಿಸಲು ಮತ್ತು ಸ್ವಚ್ಛಗೊಳಿಸಲು ಕೆಲವು [dplyr ಕ್ರಿಯಾಪದಗಳನ್ನು](https://dplyr.tidyverse.org/) ಅನ್ವೇಷಿಸಿದ್ದೇವೆ.\n", + "\n", + "- ggplot2 ಬಳಸಿ ಸುಂದರ ದೃಶ್ಯೀಕರಣಗಳನ್ನು ಮಾಡಿದ್ದೇವೆ.\n", + "\n", + "- ಅಸಮತೋಲನ ಡೇಟಾವನ್ನು [recipes](https://recipes.tidymodels.org/articles/Simple_Example.html) ಬಳಸಿ ಪೂರ್ವಪ್ರಕ್ರಿಯೆ ಮಾಡುವ ಮೂಲಕ ಹೇಗೆ ನಿಭಾಯಿಸಬಹುದು ಎಂದು ತೋರಿಸಿದ್ದೇವೆ.\n", + "\n", + "- ನಮ್ಮ ರೆಸಿಪಿಯನ್ನು `prep` ಮತ್ತು `bake` ಮಾಡುವ ಮೂಲಕ ಅದು ನಿರೀಕ್ಷಿತವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ದೃಢೀಕರಿಸಿದ್ದೇವೆ.\n", + "\n", + "#### **ಪೂರ್ವಾಪೇಕ್ಷಿತ**\n", + "\n", + "ಈ ಪಾಠಕ್ಕಾಗಿ, ನಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಲು, ತಯಾರಿಸಲು ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಲು ಕೆಳಗಿನ ಪ್ಯಾಕೇಜುಗಳು ಅಗತ್ಯವಿದೆ:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) ಒಂದು [R ಪ್ಯಾಕೇಜುಗಳ ಸಂಗ್ರಹ](https://www.tidyverse.org/packages) ಆಗಿದ್ದು, ಡೇಟಾ ವಿಜ್ಞಾನವನ್ನು ವೇಗವಾಗಿ, ಸುಲಭವಾಗಿ ಮತ್ತು ಹೆಚ್ಚು ಮನರಂಜನೀಯವಾಗಿ ಮಾಡುತ್ತದೆ!\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ಫ್ರೇಮ್ವರ್ಕ್ ಒಂದು [ಪ್ಯಾಕೇಜುಗಳ ಸಂಗ್ರಹ](https://www.tidymodels.org/packages/) ಆಗಿದ್ದು, ಮಾದರೀಕರಣ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕಾಗಿ.\n", + "\n", + "- `themis`: [themis ಪ್ಯಾಕೇಜ್](https://themis.tidymodels.org/) ಅಸಮತೋಲನ ಡೇಟಾವನ್ನು ನಿಭಾಯಿಸಲು ಹೆಚ್ಚುವರಿ ರೆಸಿಪಿ ಹಂತಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.\n", + "\n", + "- `nnet`: [nnet ಪ್ಯಾಕೇಜ್](https://cran.r-project.org/web/packages/nnet/nnet.pdf) ಒಂದು ಸಿಂಗಲ್ ಹಿಡನ್ ಲೇಯರ್ ಹೊಂದಿರುವ ಫೀಡ್-ಫಾರ್ವರ್ಡ್ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಅಂದಾಜಿಸಲು ಮತ್ತು ಬಹುಮಾನ ಲಾಜಿಸ್ಟಿಕ್ ರೆಗ್ರೆಷನ್ ಮಾದರಿಗಳನ್ನು ಮಾಡಲು ಕಾರ್ಯಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.\n", + "\n", + "ನೀವು ಅವುಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬಹುದು:\n" + ], + "metadata": { + "id": "iDFOb3ebHwQC" + } + }, + { + "cell_type": "markdown", + "source": [ + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"DataExplorer\", \"here\"))`\n", + "\n", + "ಬದಲಿ, ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ನೀವು ಈ ಘಟಕವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜುಗಳು ನಿಮ್ಮ ಬಳಿ ಇದ್ದಾರೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಅವು ಇಲ್ಲದಿದ್ದರೆ ಅವುಗಳನ್ನು ನಿಮ್ಮಿಗಾಗಿ ಸ್ಥಾಪಿಸುತ್ತದೆ.\n" + ], + "metadata": { + "id": "4V85BGCjII7F" + } + }, + { + "cell_type": "code", + "execution_count": 2, + "source": [ + "suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\r\n", + "\r\n", + "pacman::p_load(tidyverse, tidymodels, themis, here)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Loading required package: pacman\n", + "\n" + ] + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "an5NPyyKIKNR", + "outputId": "834d5e74-f4b8-49f9-8ab5-4c52ff2d7bc8" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಈಗ, ನಾವು ತಕ್ಷಣವೇ ಪ್ರಾರಂಭಿಸೋಣ!\n", + "\n", + "## 1. ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗಳಿಗೆ ಡೇಟಾವನ್ನು ವಿಭಜಿಸಿ.\n", + "\n", + "ನಾವು ನಮ್ಮ ಹಿಂದಿನ ಪಾಠದಿಂದ ಕೆಲವು ಹಂತಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಪ್ರಾರಂಭಿಸೋಣ.\n", + "\n", + "### ವಿಭಿನ್ನ ಆಹಾರಶೈಲಿಗಳ ನಡುವೆ ಗೊಂದಲವನ್ನು ಉಂಟುಮಾಡುವ ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಪದಾರ್ಥಗಳನ್ನು `dplyr::select()` ಬಳಸಿ ತೆಗೆದುಹಾಕಿ.\n", + "\n", + "ಎಲ್ಲರೂ ಅಕ್ಕಿ, ಬೆಳ್ಳುಳ್ಳಿ ಮತ್ತು ಶುಂಠಿ ಅನ್ನು ಪ್ರೀತಿಸುತ್ತಾರೆ!\n" + ], + "metadata": { + "id": "0ax9GQLBINVv" + } + }, + { + "cell_type": "code", + "execution_count": 3, + "source": [ + "# Load the original cuisines data\r\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/4-Classification/data/cuisines.csv\")\r\n", + "\r\n", + "# Drop id column, rice, garlic and ginger from our original data set\r\n", + "df_select <- df %>% \r\n", + " select(-c(1, rice, garlic, ginger)) %>%\r\n", + " # Encode cuisine column as categorical\r\n", + " mutate(cuisine = factor(cuisine))\r\n", + "\r\n", + "# Display new data set\r\n", + "df_select %>% \r\n", + " slice_head(n = 5)\r\n", + "\r\n", + "# Display distribution of cuisines\r\n", + "df_select %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(desc(n))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "New names:\n", + "* `` -> ...1\n", + "\n", + "\u001b[1m\u001b[1mRows: \u001b[1m\u001b[22m\u001b[34m\u001b[34m2448\u001b[34m\u001b[39m \u001b[1m\u001b[1mColumns: \u001b[1m\u001b[22m\u001b[34m\u001b[34m385\u001b[34m\u001b[39m\n", + "\n", + "\u001b[36m──\u001b[39m \u001b[1m\u001b[1mColumn specification\u001b[1m\u001b[22m \u001b[36m────────────────────────────────────────────────────────\u001b[39m\n", + "\u001b[1mDelimiter:\u001b[22m \",\"\n", + "\u001b[31mchr\u001b[39m (1): cuisine\n", + "\u001b[32mdbl\u001b[39m (384): ...1, almond, angelica, anise, anise_seed, apple, apple_brandy, a...\n", + "\n", + "\n", + "\u001b[36mℹ\u001b[39m Use \u001b[30m\u001b[47m\u001b[30m\u001b[47m`spec()`\u001b[47m\u001b[30m\u001b[49m\u001b[39m to retrieve the full column specification for this data.\n", + "\u001b[36mℹ\u001b[39m Specify the column types or set \u001b[30m\u001b[47m\u001b[30m\u001b[47m`show_col_types = FALSE`\u001b[47m\u001b[30m\u001b[49m\u001b[39m to quiet this message.\n", + "\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine almond angelica anise anise_seed apple apple_brandy apricot armagnac\n", + "1 indian 0 0 0 0 0 0 0 0 \n", + "2 indian 1 0 0 0 0 0 0 0 \n", + "3 indian 0 0 0 0 0 0 0 0 \n", + "4 indian 0 0 0 0 0 0 0 0 \n", + "5 indian 0 0 0 0 0 0 0 0 \n", + " artemisia ⋯ whiskey white_bread white_wine whole_grain_wheat_flour wine wood\n", + "1 0 ⋯ 0 0 0 0 0 0 \n", + "2 0 ⋯ 0 0 0 0 0 0 \n", + "3 0 ⋯ 0 0 0 0 0 0 \n", + "4 0 ⋯ 0 0 0 0 0 0 \n", + "5 0 ⋯ 0 0 0 0 0 0 \n", + " yam yeast yogurt zucchini\n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "5 0 0 1 0 " + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 381\n", + "\n", + "| cuisine <fct> | almond <dbl> | angelica <dbl> | anise <dbl> | anise_seed <dbl> | apple <dbl> | apple_brandy <dbl> | apricot <dbl> | armagnac <dbl> | artemisia <dbl> | ⋯ ⋯ | whiskey <dbl> | white_bread <dbl> | white_wine <dbl> | whole_grain_wheat_flour <dbl> | wine <dbl> | wood <dbl> | yam <dbl> | yeast <dbl> | yogurt <dbl> | zucchini <dbl> |\n", + "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", + "| indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| indian | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 381\n", + "\\begin{tabular}{lllllllllllllllllllll}\n", + " cuisine & almond & angelica & anise & anise\\_seed & apple & apple\\_brandy & apricot & armagnac & artemisia & ⋯ & whiskey & white\\_bread & white\\_wine & whole\\_grain\\_wheat\\_flour & wine & wood & yam & yeast & yogurt & zucchini\\\\\n", + " & & & & & & & & & & ⋯ & & & & & & & & & & \\\\\n", + "\\hline\n", + "\t indian & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t indian & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t indian & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t indian & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t indian & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 381
cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiawhiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
<fct><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
indian0000000000000000000
indian1000000000000000000
indian0000000000000000000
indian0000000000000000000
indian0000000000000000010
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine n \n", + "1 korean 799\n", + "2 indian 598\n", + "3 chinese 442\n", + "4 japanese 320\n", + "5 thai 289" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| cuisine <fct> | n <int> |\n", + "|---|---|\n", + "| korean | 799 |\n", + "| indian | 598 |\n", + "| chinese | 442 |\n", + "| japanese | 320 |\n", + "| thai | 289 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " cuisine & n\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t korean & 799\\\\\n", + "\t indian & 598\\\\\n", + "\t chinese & 442\\\\\n", + "\t japanese & 320\\\\\n", + "\t thai & 289\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
cuisinen
<fct><int>
korean 799
indian 598
chinese 442
japanese320
thai 289
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 735 + }, + "id": "jhCrrH22IWVR", + "outputId": "d444a85c-1d8b-485f-bc4f-8be2e8f8217c" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಅದ್ಭುತ! ಈಗ, ಡೇಟಾವನ್ನು 70% ತರಬೇತಿಗೆ ಮತ್ತು 30% ಪರೀಕ್ಷೆಗೆ ಹಂಚುವ ಸಮಯ ಬಂದಿದೆ. ತರಬೇತಿ ಮತ್ತು ಮಾನ್ಯತೆ ಡೇಟಾಸೆಟ್‌ಗಳಲ್ಲಿ ಪ್ರತಿ ಆಹಾರ ಶೈಲಿಯ ಅನುಪಾತವನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳಲು ಡೇಟಾವನ್ನು ಹಂಚುವಾಗ `stratification` ತಂತ್ರವನ್ನು ನಾವು ಅನ್ವಯಿಸುವೆವು.\n", + "\n", + "[rsample](https://rsample.tidymodels.org/), Tidymodels‌ನ ಪ್ಯಾಕೇಜ್, ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಡೇಟಾ ಹಂಚಿಕೆ ಮತ್ತು ಮರುನಮೂನೆಗಾಗಿ ಮೂಲಸೌಕರ್ಯವನ್ನು ಒದಗಿಸುತ್ತದೆ:\n" + ], + "metadata": { + "id": "AYTjVyajIdny" + } + }, + { + "cell_type": "code", + "execution_count": 4, + "source": [ + "# Load the core Tidymodels packages into R session\r\n", + "library(tidymodels)\r\n", + "\r\n", + "# Create split specification\r\n", + "set.seed(2056)\r\n", + "cuisines_split <- initial_split(data = df_select,\r\n", + " strata = cuisine,\r\n", + " prop = 0.7)\r\n", + "\r\n", + "# Extract the data in each split\r\n", + "cuisines_train <- training(cuisines_split)\r\n", + "cuisines_test <- testing(cuisines_split)\r\n", + "\r\n", + "# Print the number of cases in each split\r\n", + "cat(\"Training cases: \", nrow(cuisines_train), \"\\n\",\r\n", + " \"Test cases: \", nrow(cuisines_test), sep = \"\")\r\n", + "\r\n", + "# Display the first few rows of the training set\r\n", + "cuisines_train %>% \r\n", + " slice_head(n = 5)\r\n", + "\r\n", + "\r\n", + "# Display distribution of cuisines in the training set\r\n", + "cuisines_train %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(desc(n))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Training cases: 1712\n", + "Test cases: 736" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine almond angelica anise anise_seed apple apple_brandy apricot armagnac\n", + "1 chinese 0 0 0 0 0 0 0 0 \n", + "2 chinese 0 0 0 0 0 0 0 0 \n", + "3 chinese 0 0 0 0 0 0 0 0 \n", + "4 chinese 0 0 0 0 0 0 0 0 \n", + "5 chinese 0 0 0 0 0 0 0 0 \n", + " artemisia ⋯ whiskey white_bread white_wine whole_grain_wheat_flour wine wood\n", + "1 0 ⋯ 0 0 0 0 1 0 \n", + "2 0 ⋯ 0 0 0 0 1 0 \n", + "3 0 ⋯ 0 0 0 0 0 0 \n", + "4 0 ⋯ 0 0 0 0 0 0 \n", + "5 0 ⋯ 0 0 0 0 0 0 \n", + " yam yeast yogurt zucchini\n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "5 0 0 0 0 " + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 381\n", + "\n", + "| cuisine <fct> | almond <dbl> | angelica <dbl> | anise <dbl> | anise_seed <dbl> | apple <dbl> | apple_brandy <dbl> | apricot <dbl> | armagnac <dbl> | artemisia <dbl> | ⋯ ⋯ | whiskey <dbl> | white_bread <dbl> | white_wine <dbl> | whole_grain_wheat_flour <dbl> | wine <dbl> | wood <dbl> | yam <dbl> | yeast <dbl> | yogurt <dbl> | zucchini <dbl> |\n", + "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 381\n", + "\\begin{tabular}{lllllllllllllllllllll}\n", + " cuisine & almond & angelica & anise & anise\\_seed & apple & apple\\_brandy & apricot & armagnac & artemisia & ⋯ & whiskey & white\\_bread & white\\_wine & whole\\_grain\\_wheat\\_flour & wine & wood & yam & yeast & yogurt & zucchini\\\\\n", + " & & & & & & & & & & ⋯ & & & & & & & & & & \\\\\n", + "\\hline\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 381
cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiawhiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
<fct><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
chinese0000000000000100000
chinese0000000000000100000
chinese0000000000000000000
chinese0000000000000000000
chinese0000000000000000000
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine n \n", + "1 korean 559\n", + "2 indian 418\n", + "3 chinese 309\n", + "4 japanese 224\n", + "5 thai 202" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| cuisine <fct> | n <int> |\n", + "|---|---|\n", + "| korean | 559 |\n", + "| indian | 418 |\n", + "| chinese | 309 |\n", + "| japanese | 224 |\n", + "| thai | 202 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " cuisine & n\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t korean & 559\\\\\n", + "\t indian & 418\\\\\n", + "\t chinese & 309\\\\\n", + "\t japanese & 224\\\\\n", + "\t thai & 202\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
cuisinen
<fct><int>
korean 559
indian 418
chinese 309
japanese224
thai 202
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 535 + }, + "id": "w5FWIkEiIjdN", + "outputId": "2e195fd9-1a8f-4b91-9573-cce5582242df" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 2. ಅಸಮತೋಲನದ ಡೇಟಾವನ್ನು ನಿರ್ವಹಿಸುವುದು\n", + "\n", + "ನೀವು ಮೂಲ ಡೇಟಾ ಸೆಟ್ ಮತ್ತು ನಮ್ಮ ತರಬೇತಿ ಸೆಟ್‌ನಲ್ಲಿ ಗಮನಿಸಿದ್ದೀರಾ, ಅಡುಗೆಶೈಲಿಗಳ ಸಂಖ್ಯೆಯಲ್ಲಿ ಸಮತೋಲನವಿಲ್ಲದ ವಿತರಣೆ ಇದೆ. ಕೊರಿಯನ್ ಅಡುಗೆಶೈಲಿಗಳು *ಸುಮಾರು* 3 ಪಟ್ಟು ತಾಯಿ ಅಡುಗೆಶೈಲಿಗಳಿಗಿಂತ ಹೆಚ್ಚು. ಅಸಮತೋಲನದ ಡೇಟಾ ಸಾಮಾನ್ಯವಾಗಿ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ನಕಾರಾತ್ಮಕ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ. ಬಹುತೇಕ ಮಾದರಿಗಳು ಗಮನಗಳ ಸಂಖ್ಯೆ ಸಮಾನವಾಗಿದ್ದಾಗ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಮತ್ತು ಆದ್ದರಿಂದ ಅಸಮತೋಲನದ ಡೇಟಾ ಜೊತೆ ಹೋರಾಡುತ್ತವೆ.\n", + "\n", + "ಅಸಮತೋಲನದ ಡೇಟಾ ಸೆಟ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಎರಡು ಪ್ರಮುಖ ವಿಧಾನಗಳಿವೆ:\n", + "\n", + "- ಅಲ್ಪಸಂಖ್ಯಾತ ವರ್ಗಕ್ಕೆ ಗಮನಗಳನ್ನು ಸೇರಿಸುವುದು: `ಓವರ್-ಸ್ಯಾಂಪ್ಲಿಂಗ್` ಉದಾಹರಣೆಗೆ SMOTE ಆಲ್ಗಾರಿದಮ್ ಬಳಸಿ, ಇದು ಅಲ್ಪಸಂಖ್ಯಾತ ವರ್ಗದ ಹೊಸ ಉದಾಹರಣೆಗಳನ್ನು ಸಮೀಪದ ನೆರೆಹೊರೆಯವರನ್ನು ಬಳಸಿ ಸೃಷ್ಟಿಸುತ್ತದೆ.\n", + "\n", + "- ಬಹುಸಂಖ್ಯಾತ ವರ್ಗದಿಂದ ಗಮನಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು: `ಅಂಡರ್-ಸ್ಯಾಂಪ್ಲಿಂಗ್`\n", + "\n", + "ನಮ್ಮ ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ನಾವು `ರೆಸಿಪಿ` ಬಳಸಿ ಅಸಮತೋಲನದ ಡೇಟಾ ಸೆಟ್‌ಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದನ್ನು ತೋರಿಸಿದ್ದೇವೆ. ರೆಸಿಪಿ ಎಂದರೆ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಗೆ ಸಿದ್ಧಪಡಿಸಲು ಡೇಟಾ ಸೆಟ್‌ಗೆ ಯಾವ ಹಂತಗಳನ್ನು ಅನ್ವಯಿಸಬೇಕು ಎಂಬುದನ್ನು ವಿವರಿಸುವ ಬ್ಲೂಪ್ರಿಂಟ್ ಎಂದು ಭಾವಿಸಬಹುದು. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು ನಮ್ಮ `ತರಬೇತಿ ಸೆಟ್`ಗಾಗಿ ಅಡುಗೆಶೈಲಿಗಳ ಸಂಖ್ಯೆಯಲ್ಲಿ ಸಮಾನ ವಿತರಣೆ ಇರಬೇಕೆಂದು ಬಯಸುತ್ತೇವೆ. ಅದಕ್ಕೆ ನೇರವಾಗಿ ಹೋಗೋಣ.\n" + ], + "metadata": { + "id": "daBi9qJNIwqW" + } + }, + { + "cell_type": "code", + "execution_count": 5, + "source": [ + "# Load themis package for dealing with imbalanced data\r\n", + "library(themis)\r\n", + "\r\n", + "# Create a recipe for preprocessing training data\r\n", + "cuisines_recipe <- recipe(cuisine ~ ., data = cuisines_train) %>% \r\n", + " step_smote(cuisine)\r\n", + "\r\n", + "# Print recipe\r\n", + "cuisines_recipe" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Data Recipe\n", + "\n", + "Inputs:\n", + "\n", + " role #variables\n", + " outcome 1\n", + " predictor 380\n", + "\n", + "Operations:\n", + "\n", + "SMOTE based on cuisine" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 200 + }, + "id": "Az6LFBGxI1X0", + "outputId": "29d71d85-64b0-4e62-871e-bcd5398573b6" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನೀವು ಖಂಡಿತವಾಗಿಯೂ ಮುಂದುವರಿದು (prep+bake ಬಳಸಿ) ರೆಸಿಪಿ ನೀವು ನಿರೀಕ್ಷಿಸುವಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ದೃಢೀಕರಿಸಬಹುದು - ಎಲ್ಲಾ ಆಹಾರ ಲೇಬಲ್ಗಳಿಗೆ `559` ವೀಕ್ಷಣೆಗಳಿವೆ.\n", + "\n", + "ನಾವು ಈ ರೆಸಿಪಿಯನ್ನು ಮಾದರಿಗಾಗಿ ಪೂರ್ವಸಿದ್ಧತೆಯಾಗಿ ಬಳಸಲಿದ್ದೇವೆ, ಆದ್ದರಿಂದ `workflow()` ನಮ್ಮಿಗಾಗಿ ಎಲ್ಲಾ prep ಮತ್ತು bake ಅನ್ನು ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ನಾವು ಕೈಯಿಂದ ರೆಸಿಪಿಯನ್ನು ಅಂದಾಜಿಸಲು ಅಗತ್ಯವಿಲ್ಲ.\n", + "\n", + "ಈಗ ನಾವು ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ ಸಿದ್ಧರಾಗಿದ್ದೇವೆ 👩‍💻👨‍💻!\n", + "\n", + "## 3. ನಿಮ್ಮ ವರ್ಗೀಕರಣಕಾರರನ್ನು ಆಯ್ಕೆಮಾಡುವುದು\n", + "\n", + "

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

@allison_horst ಅವರ ಕಲಾಕೃತಿ
\n" + ], + "metadata": { + "id": "NBL3PqIWJBBB" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಈಗ ನಾವು ಕೆಲಸಕ್ಕೆ ಯಾವ ಆಲ್ಗೋರಿದಮ್ ಬಳಸಬೇಕೆಂದು ನಿರ್ಧರಿಸಬೇಕು 🤔.\n", + "\n", + "Tidymodels ನಲ್ಲಿ, [`parsnip package`](https://parsnip.tidymodels.org/index.html) ವಿವಿಧ ಎಂಜಿನ್‌ಗಳ (ಪ್ಯಾಕೇಜ್‌ಗಳ) ಮೂಲಕ ಮಾದರಿಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಸತತ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ. ದಯವಿಟ್ಟು parsnip ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಅನ್ನು ನೋಡಿ [ಮಾದರಿ ಪ್ರಕಾರಗಳು & ಎಂಜಿನ್‌ಗಳು](https://www.tidymodels.org/find/parsnip/#models) ಮತ್ತು ಅವುಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ [ಮಾದರಿ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳು](https://www.tidymodels.org/find/parsnip/#model-args) ಅನ್ನು ಅನ್ವೇಷಿಸಿ. ಪ್ರಥಮ ದೃಷ್ಟಿಯಲ್ಲಿ ವೈವಿಧ್ಯತೆಯು ಸ್ವಲ್ಪ ಗೊಂದಲಕಾರಿಯಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಕೆಳಗಿನ ವಿಧಾನಗಳು ಎಲ್ಲವೂ ವರ್ಗೀಕರಣ ತಂತ್ರಗಳನ್ನು ಒಳಗೊಂಡಿವೆ:\n", + "\n", + "- C5.0 ನಿಯಮಾಧಾರಿತ ವರ್ಗೀಕರಣ ಮಾದರಿಗಳು\n", + "\n", + "- ಲವಚಿಕ ವಿಭಜನಾ ಮಾದರಿಗಳು\n", + "\n", + "- ರೇಖೀಯ ವಿಭಜನಾ ಮಾದರಿಗಳು\n", + "\n", + "- ನಿಯಮಿತ ವಿಭಜನಾ ಮಾದರಿಗಳು\n", + "\n", + "- ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳು\n", + "\n", + "- ಬಹುಪದ ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳು\n", + "\n", + "- ನೈವ್ ಬೇಯ್ಸ್ ಮಾದರಿಗಳು\n", + "\n", + "- ಬೆಂಬಲ ವೆಕ್ಟರ್ ಯಂತ್ರಗಳು\n", + "\n", + "- ಸಮೀಪದ ನೆರೆಹೊರೆಯವರು\n", + "\n", + "- ನಿರ್ಣಯ ಮರಗಳು\n", + "\n", + "- ಸಂಯೋಜಿತ ವಿಧಾನಗಳು\n", + "\n", + "- ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು\n", + "\n", + "ಪಟ್ಟಿ ಮುಂದುವರಿಯುತ್ತದೆ!\n", + "\n", + "### **ಯಾವ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕು?**\n", + "\n", + "ಹೀಗಾಗಿ, ನೀವು ಯಾವ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕು? ಬಹುಶಃ, ಹಲವಾರು ವಿಧಾನಗಳನ್ನು ಪ್ರಯೋಗಿಸಿ ಉತ್ತಮ ಫಲಿತಾಂಶವನ್ನು ಹುಡುಕುವುದು ಪರೀಕ್ಷಿಸುವ ಒಂದು ಮಾರ್ಗವಾಗಿದೆ.\n", + "\n", + "> AutoML ಈ ಸಮಸ್ಯೆಯನ್ನು ಸುಗಮವಾಗಿ ಪರಿಹರಿಸುತ್ತದೆ, ಈ ಹೋಲಿಕೆಗಳನ್ನು ಕ್ಲೌಡ್‌ನಲ್ಲಿ ನಡೆಸಿ, ನಿಮ್ಮ ಡೇಟಾಗೆ ಅತ್ಯುತ್ತಮ ಆಲ್ಗೋರಿದಮ್ ಆಯ್ಕೆಮಾಡಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ. ಇದನ್ನು [ಇಲ್ಲಿ](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott) ಪ್ರಯತ್ನಿಸಿ\n", + "\n", + "ಮತ್ತಷ್ಟು, ವರ್ಗೀಕರಣಕಾರಿಯ ಆಯ್ಕೆ ನಮ್ಮ ಸಮಸ್ಯೆಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಫಲಿತಾಂಶವನ್ನು `ಎರಡು ತರಗತಿಗಳಿಗಿಂತ ಹೆಚ್ಚು` ವರ್ಗೀಕರಿಸಬಹುದಾದಾಗ, ನಮ್ಮ ಪ್ರಕರಣದಂತೆ, ನೀವು `ಬಹುತರಗತಿ ವರ್ಗೀಕರಣ ಆಲ್ಗೋರಿದಮ್` ಅನ್ನು ಬಳಸಬೇಕು, `ದ್ವಿತೀಯ ವರ್ಗೀಕರಣ` ಬದಲು.\n", + "\n", + "### **ಒಂದು ಉತ್ತಮ ವಿಧಾನ**\n", + "\n", + "ಅನಿರೀಕ್ಷಿತವಾಗಿ ಊಹಿಸುವುದಕ್ಕಿಂತ ಉತ್ತಮ ವಿಧಾನವೆಂದರೆ, ಈ ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದಾದ [ML ಚೀಟ್ ಶೀಟ್](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) ನಲ್ಲಿ ನೀಡಲಾದ ಆಲೋಚನೆಗಳನ್ನು ಅನುಸರಿಸುವುದು. ಇಲ್ಲಿ, ನಮ್ಮ ಬಹುತರಗತಿ ಸಮಸ್ಯೆಗೆ, ನಮಗೆ ಕೆಲವು ಆಯ್ಕೆಗಳು ಇವೆ:\n", + "\n", + "

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

ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ ಆಲ್ಗೋರಿದಮ್ ಚೀಟ್ ಶೀಟ್‌ನ ಒಂದು ವಿಭಾಗ, ಬಹುತರಗತಿ ವರ್ಗೀಕರಣ ಆಯ್ಕೆಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ
\n" + ], + "metadata": { + "id": "a6DLAZ3vJZ14" + } + }, + { + "cell_type": "markdown", + "source": [ + "### **ಕಾರಣ**\n", + "\n", + "ನಾವು ಹೊಂದಿರುವ ನಿರ್ಬಂಧಗಳನ್ನು ಗಮನಿಸಿ ವಿಭಿನ್ನ ವಿಧಾನಗಳ ಮೂಲಕ ನಾವು ಯೋಚಿಸಬಹುದೇ ಎಂದು ನೋಡೋಣ:\n", + "\n", + "- **ಡೀಪ್ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ತುಂಬಾ ಭಾರವಾಗಿವೆ**. ನಮ್ಮ ಸ್ವಚ್ಛ, ಆದರೆ ಕನಿಷ್ಠ ಡೇಟಾಸೆಟ್ ಮತ್ತು ನಾವು ನೋಟ್‌ಬುಕ್‌ಗಳ ಮೂಲಕ ಸ್ಥಳೀಯವಾಗಿ ತರಬೇತಿ ನಡೆಸುತ್ತಿರುವುದರಿಂದ, ಡೀಪ್ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಈ ಕಾರ್ಯಕ್ಕೆ ತುಂಬಾ ಭಾರವಾಗಿವೆ.\n", + "\n", + "- **ಎರಡು ವರ್ಗದ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಬಳಸುವುದಿಲ್ಲ**. ನಾವು ಎರಡು ವರ್ಗದ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಬಳಸುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಒನ್-ವಿಎಸ್-ಆಲ್ ಅನ್ನು ಹೊರತುಪಡಿಸಲಾಗಿದೆ.\n", + "\n", + "- **ನಿರ್ಣಯ ಮರ ಅಥವಾ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಕೆಲಸ ಮಾಡಬಹುದು**. ನಿರ್ಣಯ ಮರ ಕೆಲಸ ಮಾಡಬಹುದು, ಅಥವಾ ಬಹು ವರ್ಗದ ಡೇಟಾಗಾಗಿ ಬಹುಪದ ರಿಗ್ರೆಶನ್/ಬಹು ವರ್ಗದ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್.\n", + "\n", + "- **ಬಹು ವರ್ಗದ ಬೂಸ್ಟೆಡ್ ನಿರ್ಣಯ ಮರಗಳು ಬೇರೆ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತವೆ**. ಬಹು ವರ್ಗದ ಬೂಸ್ಟೆಡ್ ನಿರ್ಣಯ ಮರವು ಅಪ್ರಮಾಣಿತ ಕಾರ್ಯಗಳಿಗೆ ಸೂಕ್ತವಾಗಿದೆ, ಉದಾ: ರ್ಯಾಂಕಿಂಗ್ ನಿರ್ಮಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಿದ ಕಾರ್ಯಗಳು, ಆದ್ದರಿಂದ ಇದು ನಮಗೆ ಉಪಯುಕ್ತವಲ್ಲ.\n", + "\n", + "ಸಾಮಾನ್ಯವಾಗಿ, ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಯಂತ್ರ ಕಲಿಕೆ ಮಾದರಿಗಳಲ್ಲಿ (ಉದಾ: ಎನ್ಸೆಂಬಲ್ ವಿಧಾನಗಳು) ಕೈ ಹಾಕುವ ಮೊದಲು, ಏನಾಗುತ್ತಿದೆ ಎಂಬುದರ ಒಂದು ಕಲ್ಪನೆ ಪಡೆಯಲು ಸಾಧ್ಯವಾದಷ್ಟು ಸರಳ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸುವುದು ಉತ್ತಮ. ಆದ್ದರಿಂದ ಈ ಪಾಠಕ್ಕಾಗಿ, ನಾವು `ಬಹುಪದ ರಿಗ್ರೆಶನ್` ಮಾದರಿಯಿಂದ ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ.\n", + "\n", + "> ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಒಂದು ತಂತ್ರವಾಗಿದೆ, ಇದನ್ನು ಫಲಿತಾಂಶ ಚರವು ವರ್ಗೀಕೃತ (ಅಥವಾ ನಾಮಮಾತ್ರ) ಆಗಿರುವಾಗ ಬಳಸಲಾಗುತ್ತದೆ. ದ್ವಿಚರ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್‌ನಲ್ಲಿ ಫಲಿತಾಂಶ ಚರಗಳ ಸಂಖ್ಯೆ ಎರಡು, ಆದರೆ ಬಹುಪದ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್‌ನಲ್ಲಿ ಫಲಿತಾಂಶ ಚರಗಳ ಸಂಖ್ಯೆ ಎರಡುಕ್ಕಿಂತ ಹೆಚ್ಚು. ಹೆಚ್ಚಿನ ಓದಿಗಾಗಿ [ಅಡ್ವಾನ್ಸ್ಡ್ ರಿಗ್ರೆಶನ್ ವಿಧಾನಗಳು](https://bookdown.org/chua/ber642_advanced_regression/multinomial-logistic-regression.html) ನೋಡಿ.\n", + "\n", + "## 4. ಬಹುಪದ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಮಾಡಿ ಮತ್ತು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ.\n", + "\n", + "ಟಿಡಿಮೋಡಲ್ಸ್‌ನಲ್ಲಿ, `parsnip::multinom_reg()`, ಬಹುಪದ ವಿತರಣೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಬಹು ವರ್ಗದ ಡೇಟಾವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ರೇಖೀಯ ಪೂರ್ವಾನುಮಾನಕಾರಿಗಳನ್ನು ಬಳಸುವ ಮಾದರಿಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಈ ಮಾದರಿಯನ್ನು ಹೊಂದಿಸಲು ನೀವು ಬಳಸಬಹುದಾದ ವಿಭಿನ್ನ ವಿಧಾನಗಳು/ಎಂಜಿನ್‌ಗಳಿಗಾಗಿ `?multinom_reg()` ನೋಡಿ.\n", + "\n", + "ಈ ಉದಾಹರಣೆಗೆ, ನಾವು ಡೀಫಾಲ್ಟ್ [nnet](https://cran.r-project.org/web/packages/nnet/nnet.pdf) ಎಂಜಿನ್ ಮೂಲಕ ಬಹುಪದ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ಹೊಂದಿಸುವೆವು.\n", + "\n", + "> ನಾನು `penalty` ಗೆ ಮರುಕಳಿಸುವಂತೆ ಒಂದು ಮೌಲ್ಯವನ್ನು ಆಯ್ಕೆಮಾಡಿದೆ. ಈ ಮೌಲ್ಯವನ್ನು ಆಯ್ಕೆಮಾಡಲು ಉತ್ತಮ ವಿಧಾನಗಳಿವೆ, ಅಂದರೆ `ರಿಸ್ಯಾಂಪ್ಲಿಂಗ್` ಮತ್ತು `ಟ್ಯೂನಿಂಗ್` ಮಾದರಿಯನ್ನು ಬಳಸುವುದು, ಇದನ್ನು ನಾವು ನಂತರ ಚರ್ಚಿಸುವೆವು.\n", + ">\n", + "> ಮಾದರಿ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಹೇಗೆ ಟ್ಯೂನ್ ಮಾಡುವುದು ಎಂಬುದನ್ನು ತಿಳಿಯಲು [ಟಿಡಿಮೋಡಲ್ಸ್: ಪ್ರಾರಂಭಿಸಿ](https://www.tidymodels.org/start/tuning/) ನೋಡಿ.\n" + ], + "metadata": { + "id": "gWMsVcbBJemu" + } + }, + { + "cell_type": "code", + "execution_count": 6, + "source": [ + "# Create a multinomial regression model specification\r\n", + "mr_spec <- multinom_reg(penalty = 1) %>% \r\n", + " set_engine(\"nnet\", MaxNWts = 2086) %>% \r\n", + " set_mode(\"classification\")\r\n", + "\r\n", + "# Print model specification\r\n", + "mr_spec" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Multinomial Regression Model Specification (classification)\n", + "\n", + "Main Arguments:\n", + " penalty = 1\n", + "\n", + "Engine-Specific Arguments:\n", + " MaxNWts = 2086\n", + "\n", + "Computational engine: nnet \n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 166 + }, + "id": "Wq_fcyQiJvfG", + "outputId": "c30449c7-3864-4be7-f810-72a003743e2d" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಉತ್ತಮ ಕೆಲಸ 🥳! ಈಗ ನಮಗೆ ಒಂದು ರೆಸಿಪಿ ಮತ್ತು ಒಂದು ಮಾದರಿ ವಿವರಣೆ ಇದ್ದು, ಅವುಗಳನ್ನು ಒಟ್ಟಿಗೆ ಒಂದು ವಸ್ತುವಾಗಿ ಬಂಡಲ್ ಮಾಡುವ ಮಾರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯಬೇಕಾಗಿದೆ, ಅದು ಮೊದಲು ಡೇಟಾವನ್ನು ಪೂರ್ವಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ ನಂತರ ಪೂರ್ವಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದ ಡೇಟಾದ ಮೇಲೆ ಮಾದರಿಯನ್ನು ಹೊಂದಿಸಿ ಮತ್ತು ಸಾಧ್ಯವಾದ ನಂತರದ ಪ್ರಕ್ರಿಯೆಗಳಿಗೂ ಅವಕಾಶ ನೀಡುತ್ತದೆ. Tidymodels ನಲ್ಲಿ, ಈ ಅನುಕೂಲಕರ ವಸ್ತುವನ್ನು [`workflow`](https://workflows.tidymodels.org/) ಎಂದು ಕರೆಯುತ್ತಾರೆ ಮತ್ತು ಇದು ನಿಮ್ಮ ಮಾದರಿ ಘಟಕಗಳನ್ನು ಸುಲಭವಾಗಿ ಹಿಡಿದಿಡುತ್ತದೆ! Python ನಲ್ಲಿ ಇದನ್ನು *pipelines* ಎಂದು ಕರೆಯುತ್ತಾರೆ.\n", + "\n", + "ಹೀಗಾಗಿ ಎಲ್ಲವನ್ನೂ ಒಂದು workflow ಗೆ ಬಂಡಲ್ ಮಾಡೋಣ!📦\n" + ], + "metadata": { + "id": "NlSbzDfgJ0zh" + } + }, + { + "cell_type": "code", + "execution_count": 7, + "source": [ + "# Bundle recipe and model specification\r\n", + "mr_wf <- workflow() %>% \r\n", + " add_recipe(cuisines_recipe) %>% \r\n", + " add_model(mr_spec)\r\n", + "\r\n", + "# Print out workflow\r\n", + "mr_wf" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "══ Workflow ════════════════════════════════════════════════════════════════════\n", + "\u001b[3mPreprocessor:\u001b[23m Recipe\n", + "\u001b[3mModel:\u001b[23m multinom_reg()\n", + "\n", + "── Preprocessor ────────────────────────────────────────────────────────────────\n", + "1 Recipe Step\n", + "\n", + "• step_smote()\n", + "\n", + "── Model ───────────────────────────────────────────────────────────────────────\n", + "Multinomial Regression Model Specification (classification)\n", + "\n", + "Main Arguments:\n", + " penalty = 1\n", + "\n", + "Engine-Specific Arguments:\n", + " MaxNWts = 2086\n", + "\n", + "Computational engine: nnet \n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 333 + }, + "id": "Sc1TfPA4Ke3_", + "outputId": "82c70013-e431-4e7e-cef6-9fcf8aad4a6c" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಕಾರ್ಯಪ್ರವಾಹಗಳು 👌👌! ಒಂದು **`workflow()`** ಅನ್ನು ಮಾದರಿಯನ್ನು ಹೊಂದಿಸುವಂತೆ ಸರಿಹೊಂದಿಸಬಹುದು. ಆದ್ದರಿಂದ, ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವ ಸಮಯ ಬಂದಿದೆ!\n" + ], + "metadata": { + "id": "TNQ8i85aKf9L" + } + }, + { + "cell_type": "code", + "execution_count": 8, + "source": [ + "# Train a multinomial regression model\n", + "mr_fit <- fit(object = mr_wf, data = cuisines_train)\n", + "\n", + "mr_fit" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "══ Workflow [trained] ══════════════════════════════════════════════════════════\n", + "\u001b[3mPreprocessor:\u001b[23m Recipe\n", + "\u001b[3mModel:\u001b[23m multinom_reg()\n", + "\n", + "── Preprocessor ────────────────────────────────────────────────────────────────\n", + "1 Recipe Step\n", + "\n", + "• step_smote()\n", + "\n", + "── Model ───────────────────────────────────────────────────────────────────────\n", + "Call:\n", + "nnet::multinom(formula = ..y ~ ., data = data, decay = ~1, MaxNWts = ~2086, \n", + " trace = FALSE)\n", + "\n", + "Coefficients:\n", + " (Intercept) almond angelica anise anise_seed apple\n", + "indian 0.19723325 0.2409661 0 -5.004955e-05 -0.1657635 -0.05769734\n", + "japanese 0.13961959 -0.6262400 0 -1.169155e-04 -0.4893596 -0.08585717\n", + "korean 0.22377347 -0.1833485 0 -5.560395e-05 -0.2489401 -0.15657804\n", + "thai -0.04336577 -0.6106258 0 4.903828e-04 -0.5782866 0.63451105\n", + " apple_brandy apricot armagnac artemisia artichoke asparagus\n", + "indian 0 0.37042636 0 -0.09122797 0 -0.27181970\n", + "japanese 0 0.28895643 0 -0.12651100 0 0.14054037\n", + "korean 0 -0.07981259 0 0.55756709 0 -0.66979948\n", + "thai 0 -0.33160904 0 -0.10725182 0 -0.02602152\n", + " avocado bacon baked_potato balm banana barley\n", + "indian -0.46624197 0.16008055 0 0 -0.2838796 0.2230625\n", + "japanese 0.90341344 0.02932727 0 0 -0.4142787 2.0953906\n", + "korean -0.06925382 -0.35804134 0 0 -0.2686963 -0.7233404\n", + "thai -0.21473955 -0.75594439 0 0 0.6784880 -0.4363320\n", + " bartlett_pear basil bay bean beech\n", + "indian 0 -0.7128756 0.1011587 -0.8777275 -0.0004380795\n", + "japanese 0 0.1288697 0.9425626 -0.2380748 0.3373437611\n", + "korean 0 -0.2445193 -0.4744318 -0.8957870 -0.0048784496\n", + "thai 0 1.5365848 0.1333256 0.2196970 -0.0113078024\n", + " beef beef_broth beef_liver beer beet\n", + "indian -0.7985278 0.2430186 -0.035598065 -0.002173738 0.01005813\n", + "japanese 0.2241875 -0.3653020 -0.139551027 0.128905553 0.04923911\n", + "korean 0.5366515 -0.6153237 0.213455197 -0.010828645 0.27325423\n", + "thai 0.1570012 -0.9364154 -0.008032213 -0.035063746 -0.28279823\n", + " bell_pepper bergamot berry bitter_orange black_bean\n", + "indian 0.49074330 0 0.58947607 0.191256164 -0.1945233\n", + "japanese 0.09074167 0 -0.25917977 -0.118915977 -0.3442400\n", + "korean -0.57876763 0 -0.07874180 -0.007729435 -0.5220672\n", + "thai 0.92554006 0 -0.07210196 -0.002983296 -0.4614426\n", + " black_currant black_mustard_seed_oil black_pepper black_raspberry\n", + "indian 0 0.38935801 -0.4453495 0\n", + "japanese 0 -0.05452887 -0.5440869 0\n", + "korean 0 -0.03929970 0.8025454 0\n", + "thai 0 -0.21498372 -0.9854806 0\n", + " black_sesame_seed black_tea blackberry blackberry_brandy\n", + "indian -0.2759246 0.3079977 0.191256164 0\n", + "japanese -0.6101687 -0.1671913 -0.118915977 0\n", + "korean 1.5197674 -0.3036261 -0.007729435 0\n", + "thai -0.1755656 -0.1487033 -0.002983296 0\n", + " blue_cheese blueberry bone_oil bourbon_whiskey brandy\n", + "indian 0 0.216164294 -0.2276744 0 0.22427587\n", + "japanese 0 -0.119186087 0.3913019 0 -0.15595599\n", + "korean 0 -0.007821986 0.2854487 0 -0.02562342\n", + "thai 0 -0.004947048 -0.0253658 0 -0.05715244\n", + "\n", + "...\n", + "and 308 more lines." + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "GMbdfVmTKkJI", + "outputId": "adf9ebdf-d69d-4a64-e9fd-e06e5322292e" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಮಾದರಿ ತರಬೇತಿ ಸಮಯದಲ್ಲಿ ಕಲಿತ ಗುಣಾಂಕಗಳನ್ನು ಔಟ್‌ಪುಟ್ ತೋರಿಸುತ್ತದೆ.\n", + "\n", + "### ತರಬೇತಿಗೊಂಡ ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ\n", + "\n", + "ಮಾದರಿ ಪರೀಕ್ಷಾ ಸೆಟ್‌ನಲ್ಲಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸಿತು ಎಂದು ನೋಡಲು ಸಮಯವಾಗಿದೆ 📏! ಪರೀಕ್ಷಾ ಸೆಟ್‌ನಲ್ಲಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದರಿಂದ ಪ್ರಾರಂಭಿಸೋಣ.\n" + ], + "metadata": { + "id": "tt2BfOxrKmcJ" + } + }, + { + "cell_type": "code", + "execution_count": 9, + "source": [ + "# Make predictions on the test set\n", + "results <- cuisines_test %>% select(cuisine) %>% \n", + " bind_cols(mr_fit %>% predict(new_data = cuisines_test))\n", + "\n", + "# Print out results\n", + "results %>% \n", + " slice_head(n = 5)" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine .pred_class\n", + "1 indian thai \n", + "2 indian indian \n", + "3 indian indian \n", + "4 indian indian \n", + "5 indian indian " + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| cuisine <fct> | .pred_class <fct> |\n", + "|---|---|\n", + "| indian | thai |\n", + "| indian | indian |\n", + "| indian | indian |\n", + "| indian | indian |\n", + "| indian | indian |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " cuisine & .pred\\_class\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t indian & thai \\\\\n", + "\t indian & indian\\\\\n", + "\t indian & indian\\\\\n", + "\t indian & indian\\\\\n", + "\t indian & indian\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
cuisine.pred_class
<fct><fct>
indianthai
indianindian
indianindian
indianindian
indianindian
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "id": "CqtckvtsKqax", + "outputId": "e57fe557-6a68-4217-fe82-173328c5436d" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಉತ್ತಮ ಕೆಲಸ! Tidymodels ನಲ್ಲಿ, ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು [yardstick](https://yardstick.tidymodels.org/) ಅನ್ನು ಬಳಸಬಹುದು - ಇದು ಕಾರ್ಯಕ್ಷಮತೆ ಮೌಲ್ಯಮಾಪಕಗಳನ್ನು ಬಳಸಿ ಮಾದರಿಗಳ ಪರಿಣಾಮಕಾರಿತ್ವವನ್ನು ಅಳೆಯಲು ಬಳಸುವ ಪ್ಯಾಕೇಜ್. ನಾವು ನಮ್ಮ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಪಾಠದಲ್ಲಿ ಮಾಡಿದಂತೆ, ಬಿಕ್ಕಟ್ಟು ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಅನ್ನು ಲೆಕ್ಕಹಾಕುವುದರಿಂದ ಪ್ರಾರಂಭಿಸೋಣ.\n" + ], + "metadata": { + "id": "8w5N6XsBKss7" + } + }, + { + "cell_type": "code", + "execution_count": 10, + "source": [ + "# Confusion matrix for categorical data\n", + "conf_mat(data = results, truth = cuisine, estimate = .pred_class)\n" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " Truth\n", + "Prediction chinese indian japanese korean thai\n", + " chinese 83 1 8 15 10\n", + " indian 4 163 1 2 6\n", + " japanese 21 5 73 25 1\n", + " korean 15 0 11 191 0\n", + " thai 10 11 3 7 70" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 133 + }, + "id": "YvODvsLkK0iG", + "outputId": "bb69da84-1266-47ad-b174-d43b88ca2988" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಬಹು ವರ್ಗಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ, ಇದನ್ನು ಹೀಟ್ ಮ್ಯಾಪ್ ಆಗಿ ದೃಶ್ಯೀಕರಿಸುವುದು ಸಾಮಾನ್ಯವಾಗಿ ಹೆಚ್ಚು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸುಲಭವಾಗಿರುತ್ತದೆ, ಹೀಗೆ:\n" + ], + "metadata": { + "id": "c0HfPL16Lr6U" + } + }, + { + "cell_type": "code", + "execution_count": 11, + "source": [ + "update_geom_defaults(geom = \"tile\", new = list(color = \"black\", alpha = 0.7))\n", + "# Visualize confusion matrix\n", + "results %>% \n", + " conf_mat(cuisine, .pred_class) %>% \n", + " autoplot(type = \"heatmap\")" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "plot without title" + ], + "image/png": "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" + }, + "metadata": { + "image/png": { + "width": 420, + "height": 420 + } + } + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 436 + }, + "id": "HsAtwukyLsvt", + "outputId": "3032a224-a2c8-4270-b4f2-7bb620317400" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಕನ್ಫ್ಯೂಷನ್ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಪ್ಲಾಟ್‌ನಲ್ಲಿ ಗಾಢ ಬಣ್ಣದ ಚೌಕಗಳು ಹೆಚ್ಚಿನ ಪ್ರಕರಣಗಳ ಸಂಖ್ಯೆಯನ್ನು ಸೂಚಿಸುತ್ತವೆ, ಮತ್ತು ನೀವು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಮತ್ತು ನಿಜವಾದ ಲೇಬಲ್ ಒಂದೇ ಇರುವ ಪ್ರಕರಣಗಳನ್ನು ಸೂಚಿಸುವ ಗಾಢ ಬಣ್ಣದ ಚೌಕಗಳ ತಿರಸ್ಕೃತ ರೇಖೆಯನ್ನು ನೋಡಬಹುದು ಎಂದು ಆಶಿಸುತ್ತೇವೆ.\n", + "\n", + "ಇದೀಗ ಕನ್ಫ್ಯೂಷನ್ ಮ್ಯಾಟ್ರಿಕ್ಸ್‌ಗೆ ಸಾರಾಂಶ ಅಂಕಿಅಂಶಗಳನ್ನು ಲೆಕ್ಕಹಾಕೋಣ.\n" + ], + "metadata": { + "id": "oOJC87dkLwPr" + } + }, + { + "cell_type": "code", + "execution_count": 12, + "source": [ + "# Summary stats for confusion matrix\n", + "conf_mat(data = results, truth = cuisine, estimate = .pred_class) %>% \n", + "summary()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " .metric .estimator .estimate\n", + "1 accuracy multiclass 0.7880435\n", + "2 kap multiclass 0.7276583\n", + "3 sens macro 0.7780927\n", + "4 spec macro 0.9477598\n", + "5 ppv macro 0.7585583\n", + "6 npv macro 0.9460080\n", + "7 mcc multiclass 0.7292724\n", + "8 j_index macro 0.7258524\n", + "9 bal_accuracy macro 0.8629262\n", + "10 detection_prevalence macro 0.2000000\n", + "11 precision macro 0.7585583\n", + "12 recall macro 0.7780927\n", + "13 f_meas macro 0.7641862" + ], + "text/markdown": [ + "\n", + "A tibble: 13 × 3\n", + "\n", + "| .metric <chr> | .estimator <chr> | .estimate <dbl> |\n", + "|---|---|---|\n", + "| accuracy | multiclass | 0.7880435 |\n", + "| kap | multiclass | 0.7276583 |\n", + "| sens | macro | 0.7780927 |\n", + "| spec | macro | 0.9477598 |\n", + "| ppv | macro | 0.7585583 |\n", + "| npv | macro | 0.9460080 |\n", + "| mcc | multiclass | 0.7292724 |\n", + "| j_index | macro | 0.7258524 |\n", + "| bal_accuracy | macro | 0.8629262 |\n", + "| detection_prevalence | macro | 0.2000000 |\n", + "| precision | macro | 0.7585583 |\n", + "| recall | macro | 0.7780927 |\n", + "| f_meas | macro | 0.7641862 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 13 × 3\n", + "\\begin{tabular}{lll}\n", + " .metric & .estimator & .estimate\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t accuracy & multiclass & 0.7880435\\\\\n", + "\t kap & multiclass & 0.7276583\\\\\n", + "\t sens & macro & 0.7780927\\\\\n", + "\t spec & macro & 0.9477598\\\\\n", + "\t ppv & macro & 0.7585583\\\\\n", + "\t npv & macro & 0.9460080\\\\\n", + "\t mcc & multiclass & 0.7292724\\\\\n", + "\t j\\_index & macro & 0.7258524\\\\\n", + "\t bal\\_accuracy & macro & 0.8629262\\\\\n", + "\t detection\\_prevalence & macro & 0.2000000\\\\\n", + "\t precision & macro & 0.7585583\\\\\n", + "\t recall & macro & 0.7780927\\\\\n", + "\t f\\_meas & macro & 0.7641862\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 13 × 3
.metric.estimator.estimate
<chr><chr><dbl>
accuracy multiclass0.7880435
kap multiclass0.7276583
sens macro 0.7780927
spec macro 0.9477598
ppv macro 0.7585583
npv macro 0.9460080
mcc multiclass0.7292724
j_index macro 0.7258524
bal_accuracy macro 0.8629262
detection_prevalencemacro 0.2000000
precision macro 0.7585583
recall macro 0.7780927
f_meas macro 0.7641862
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 494 + }, + "id": "OYqetUyzL5Wz", + "outputId": "6a84d65e-113d-4281-dfc1-16e8b70f37e6" + } + }, + { + "cell_type": "markdown", + "source": [ + "ನಾವು ಕೆಲವು ಮೆಟ್ರಿಕ್ಸ್‌ಗಳಿಗೆ, ಉದಾಹರಣೆಗೆ ಶುದ್ಧತೆ, ಸಂವೇದನಶೀಲತೆ, ppv ಇತ್ಯಾದಿಗಳಿಗೆ ಸೀಮಿತಗೊಳ್ಳುವಾಗ, ಪ್ರಾರಂಭಕ್ಕೆ ನಾವು ಕೆಟ್ಟದಾಗಿ ಇಲ್ಲವೇ ಇಲ್ಲ 🥳!\n", + "\n", + "## 4. ಆಳವಾಗಿ ತೊಳೆಯುವುದು\n", + "\n", + "ಒಂದು ಸೂಕ್ಷ್ಮ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳೋಣ: ನಿರ್ದಿಷ್ಟ ರೀತಿಯ ಆಹಾರವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಫಲಿತಾಂಶವಾಗಿ ನಿಗದಿಪಡಿಸಲು ಯಾವ ಮಾನದಂಡವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ?\n", + "\n", + "ಸರಿ, ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮುಂತಾದ ಸಾಂಖ್ಯಿಕ ಯಂತ್ರ ಅಧ್ಯಯನ ಆಲ್ಗಾರಿದಮ್ಗಳು `ಸಂಭಾವ್ಯತೆ` ಆಧಾರಿತವಾಗಿವೆ; ಆದ್ದರಿಂದ ವರ್ಗೀಕರಿಸುವ ಯಂತ್ರವು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದೇನಂದರೆ ಸಾಧ್ಯವಾದ ಫಲಿತಾಂಶಗಳ ಸಮೂಹದ ಮೇಲೆ ಒಂದು ಸಾಧ್ಯತೆ ವಿತರಣೆಯಾಗಿದೆ. ಅತ್ಯಧಿಕ ಸಾಧ್ಯತೆಯಿರುವ ವರ್ಗವನ್ನು ನಂತರ ನೀಡಲಾದ ಅವಲೋಕನಗಳಿಗೆ ಅತ್ಯಂತ ಸಾಧ್ಯತೆಯ ಫಲಿತಾಂಶವಾಗಿ ಆಯ್ಕೆಮಾಡಲಾಗುತ್ತದೆ.\n", + "\n", + "ಕಠಿಣ ವರ್ಗ ಭವಿಷ್ಯವಾಣಿಗಳು ಮತ್ತು ಸಾಧ್ಯತೆಗಳನ್ನು ಎರಡನ್ನೂ ಮಾಡಿ ಇದನ್ನು ಕಾರ್ಯಾಚರಣೆಯಲ್ಲಿ ನೋಡೋಣ.\n" + ], + "metadata": { + "id": "43t7vz8vMJtW" + } + }, + { + "cell_type": "code", + "execution_count": 13, + "source": [ + "# Make hard class prediction and probabilities\n", + "results_prob <- cuisines_test %>%\n", + " select(cuisine) %>% \n", + " bind_cols(mr_fit %>% predict(new_data = cuisines_test)) %>% \n", + " bind_cols(mr_fit %>% predict(new_data = cuisines_test, type = \"prob\"))\n", + "\n", + "# Print out results\n", + "results_prob %>% \n", + " slice_head(n = 5)" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine .pred_class .pred_chinese .pred_indian .pred_japanese .pred_korean\n", + "1 indian thai 1.551259e-03 0.4587877 5.988039e-04 2.428503e-04\n", + "2 indian indian 2.637133e-05 0.9999488 6.648651e-07 2.259993e-05\n", + "3 indian indian 1.049433e-03 0.9909982 1.060937e-03 1.644947e-05\n", + "4 indian indian 6.237482e-02 0.4763035 9.136702e-02 3.660913e-01\n", + "5 indian indian 1.431745e-02 0.9418551 2.945239e-02 8.721782e-03\n", + " .pred_thai \n", + "1 5.388194e-01\n", + "2 1.577948e-06\n", + "3 6.874989e-03\n", + "4 3.863391e-03\n", + "5 5.653283e-03" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 7\n", + "\n", + "| cuisine <fct> | .pred_class <fct> | .pred_chinese <dbl> | .pred_indian <dbl> | .pred_japanese <dbl> | .pred_korean <dbl> | .pred_thai <dbl> |\n", + "|---|---|---|---|---|---|---|\n", + "| indian | thai | 1.551259e-03 | 0.4587877 | 5.988039e-04 | 2.428503e-04 | 5.388194e-01 |\n", + "| indian | indian | 2.637133e-05 | 0.9999488 | 6.648651e-07 | 2.259993e-05 | 1.577948e-06 |\n", + "| indian | indian | 1.049433e-03 | 0.9909982 | 1.060937e-03 | 1.644947e-05 | 6.874989e-03 |\n", + "| indian | indian | 6.237482e-02 | 0.4763035 | 9.136702e-02 | 3.660913e-01 | 3.863391e-03 |\n", + "| indian | indian | 1.431745e-02 | 0.9418551 | 2.945239e-02 | 8.721782e-03 | 5.653283e-03 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 7\n", + "\\begin{tabular}{lllllll}\n", + " cuisine & .pred\\_class & .pred\\_chinese & .pred\\_indian & .pred\\_japanese & .pred\\_korean & .pred\\_thai\\\\\n", + " & & & & & & \\\\\n", + "\\hline\n", + "\t indian & thai & 1.551259e-03 & 0.4587877 & 5.988039e-04 & 2.428503e-04 & 5.388194e-01\\\\\n", + "\t indian & indian & 2.637133e-05 & 0.9999488 & 6.648651e-07 & 2.259993e-05 & 1.577948e-06\\\\\n", + "\t indian & indian & 1.049433e-03 & 0.9909982 & 1.060937e-03 & 1.644947e-05 & 6.874989e-03\\\\\n", + "\t indian & indian & 6.237482e-02 & 0.4763035 & 9.136702e-02 & 3.660913e-01 & 3.863391e-03\\\\\n", + "\t indian & indian & 1.431745e-02 & 0.9418551 & 2.945239e-02 & 8.721782e-03 & 5.653283e-03\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 7
cuisine.pred_class.pred_chinese.pred_indian.pred_japanese.pred_korean.pred_thai
<fct><fct><dbl><dbl><dbl><dbl><dbl>
indianthai 1.551259e-030.45878775.988039e-042.428503e-045.388194e-01
indianindian2.637133e-050.99994886.648651e-072.259993e-051.577948e-06
indianindian1.049433e-030.99099821.060937e-031.644947e-056.874989e-03
indianindian6.237482e-020.47630359.136702e-023.660913e-013.863391e-03
indianindian1.431745e-020.94185512.945239e-028.721782e-035.653283e-03
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "id": "xdKNs-ZPMTJL", + "outputId": "68f6ac5a-725a-4eff-9ea6-481fef00e008" + } + }, + { + "cell_type": "markdown", + "source": [ + "ಬಹಳ ಉತ್ತಮ!\n", + "\n", + "✅ ಮೊದಲ ಅವಲೋಕನವು ಥಾಯ್ ಎಂದು ಮಾದರಿ pretty sure ಆಗಿರುವುದಕ್ಕೆ ನೀವು ವಿವರಿಸಬಹುದುವೇ?\n", + "\n", + "## **🚀ಸವಾಲು**\n", + "\n", + "ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ನಿಮ್ಮ ಸ್ವಚ್ಛಗೊಳಿಸಿದ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು ಒಂದು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಅದು ಒಂದು ಸರಣಿಯ ಪದಾರ್ಥಗಳ ಆಧಾರದ ಮೇಲೆ ರಾಷ್ಟ್ರೀಯ ಆಹಾರವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು. ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸಲು Tidymodels ನೀಡುವ [ಬಹುಮಾನ ಆಯ್ಕೆಗಳನ್ನು](https://www.tidymodels.org/find/parsnip/#models) ಮತ್ತು ಬಹುಪದವಿಧಾನ ರಿಗ್ರೆಶನ್ ಹೊಂದಿಸಲು [ಇತರೆ ಮಾರ್ಗಗಳನ್ನು](https://parsnip.tidymodels.org/articles/articles/Examples.html#multinom_reg-models) ಓದಲು ಸ್ವಲ್ಪ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಿ.\n", + "\n", + "#### ಧನ್ಯವಾದಗಳು:\n", + "\n", + "[`ಆಲಿಸನ್ ಹೋರ್ಸ್ಟ್`](https://twitter.com/allison_horst/) ಅವರಿಗೆ R ಅನ್ನು ಹೆಚ್ಚು ಆತಿಥ್ಯಪೂರ್ಣ ಮತ್ತು ಆಕರ್ಷಕವಾಗಿಸುವ ಅದ್ಭುತ ಚಿತ್ರಣಗಳನ್ನು ಸೃಷ್ಟಿಸಿದಕ್ಕಾಗಿ. ಅವರ [ಗ್ಯಾಲರಿ](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM) ನಲ್ಲಿ ಇನ್ನಷ್ಟು ಚಿತ್ರಣಗಳನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ.\n", + "\n", + "[ಕ್ಯಾಸಿ ಬ್ರೇವಿಯು](https://www.twitter.com/cassieview) ಮತ್ತು [ಜೆನ್ ಲೂಪರ್](https://www.twitter.com/jenlooper) ಅವರಿಗೆ ಈ ಮಾಯಾಜಾಲದ ಮೂಲ Python ಆವೃತ್ತಿಯನ್ನು ಸೃಷ್ಟಿಸಿದಕ್ಕಾಗಿ ♥️\n", + "\n", + "
\n", + "ಕೆಲವು ಹಾಸ್ಯಗಳನ್ನು ಸೇರಿಸುವುದಾಗಿತ್ತು ಆದರೆ ನಾನು ಆಹಾರ ಪನ್ಸ್ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲಾರೆ 😅.\n", + "\n", + "
\n", + "\n", + "ಶುಭ ಕಲಿಕೆ,\n", + "\n", + "[ಎರಿಕ್](https://twitter.com/ericntay), ಗೋಲ್ಡ್ ಮೈಕ್ರೋಸಾಫ್ಟ್ ಲರ್ನ್ ವಿದ್ಯಾರ್ಥಿ ರಾಯಭಾರಿ.\n" + ], + "metadata": { + "id": "2tWVHMeLMYdM" + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/4-Classification/2-Classifiers-1/solution/notebook.ipynb b/translations/kn/4-Classification/2-Classifiers-1/solution/notebook.ipynb new file mode 100644 index 000000000..d7af1381a --- /dev/null +++ b/translations/kn/4-Classification/2-Classifiers-1/solution/notebook.ipynb @@ -0,0 +1,281 @@ +{ + "cells": [ + { + "source": [ + "# ವರ್ಗೀಕರಣ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 1 + } + ], + "source": [ + "import pandas as pd\n", + "cuisines_df = pd.read_csv(\"../../data/cleaned_cuisines.csv\")\n", + "cuisines_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve\n", + "from sklearn.svm import SVC\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian\n", + "Name: cuisine, dtype: object" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ], + "source": [ + "cuisines_label_df = cuisines_df['cuisine']\n", + "cuisines_label_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 4 + } + ], + "source": [ + "cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)\n", + "cuisines_feature_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Accuracy is 0.8181818181818182\n" + ] + } + ], + "source": [ + "lr = LogisticRegression(multi_class='ovr',solver='liblinear')\n", + "model = lr.fit(X_train, np.ravel(y_train))\n", + "\n", + "accuracy = model.score(X_test, y_test)\n", + "print (\"Accuracy is {}\".format(accuracy))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "ingredients: Index(['artemisia', 'black_pepper', 'mushroom', 'shiitake', 'soy_sauce',\n 'vegetable_oil'],\n dtype='object')\ncuisine: korean\n" + ] + } + ], + "source": [ + "# test an item\n", + "print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')\n", + "print(f'cuisine: {y_test.iloc[50]}')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " 0\n", + "korean 0.392231\n", + "chinese 0.372872\n", + "japanese 0.218825\n", + "thai 0.013427\n", + "indian 0.002645" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
0
korean0.392231
chinese0.372872
japanese0.218825
thai0.013427
indian0.002645
\n
" + }, + "metadata": {}, + "execution_count": 8 + } + ], + "source": [ + "#rehsape to 2d array and transpose\n", + "test= X_test.iloc[50].values.reshape(-1, 1).T\n", + "# predict with score\n", + "proba = model.predict_proba(test)\n", + "classes = model.classes_\n", + "# create df with classes and scores\n", + "resultdf = pd.DataFrame(data=proba, columns=classes)\n", + "\n", + "# create df to show results\n", + "topPrediction = resultdf.T.sort_values(by=[0], ascending = [False])\n", + "topPrediction.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n\n chinese 0.75 0.73 0.74 223\n indian 0.93 0.88 0.90 255\n japanese 0.78 0.78 0.78 253\n korean 0.87 0.86 0.86 236\n thai 0.76 0.84 0.80 232\n\n accuracy 0.82 1199\n macro avg 0.82 0.82 0.82 1199\nweighted avg 0.82 0.82 0.82 1199\n\n" + ] + } + ], + "source": [ + "y_pred = model.predict(X_test)\r\n", + "print(classification_report(y_test,y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "kernelspec": { + "name": "python3", + "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" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "9408506dd864f2b6e334c62f80c0cfcc", + "translation_date": "2025-12-19T17:18:25+00:00", + "source_file": "4-Classification/2-Classifiers-1/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/translations/kn/4-Classification/3-Classifiers-2/README.md b/translations/kn/4-Classification/3-Classifiers-2/README.md new file mode 100644 index 000000000..2913f2a4c --- /dev/null +++ b/translations/kn/4-Classification/3-Classifiers-2/README.md @@ -0,0 +1,251 @@ + +# ಆಹಾರ ವರ್ಗೀಕರಣಗಳು 2 + +ಈ ಎರಡನೇ ವರ್ಗೀಕರಣ ಪಾಠದಲ್ಲಿ, ನೀವು ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸುವ ಇನ್ನಷ್ಟು ವಿಧಾನಗಳನ್ನು ಅನ್ವೇಷಿಸುವಿರಿ. ನೀವು ಒಂದು ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಇನ್ನೊಂದರಿಗಿಂತ ಆಯ್ಕೆಮಾಡುವ ಪರಿಣಾಮಗಳ ಬಗ್ಗೆ ಸಹ ತಿಳಿಯುವಿರಿ. + +## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +### ಪೂರ್ವಾಪೇಕ್ಷೆ + +ನೀವು ಹಿಂದಿನ ಪಾಠಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ್ದೀರಿ ಮತ್ತು ನಿಮ್ಮ `data` ಫೋಲ್ಡರ್‌ನಲ್ಲಿ _cleaned_cuisines.csv_ ಎಂಬ ಸ್ವಚ್ಛಗೊಳಿಸಿದ ಡೇಟಾಸೆಟ್ ಇದೆ ಎಂದು ನಾವು ಊಹಿಸುತ್ತೇವೆ, ಇದು ಈ 4-ಪಾಠ ಫೋಲ್ಡರ್‌ನ ರೂಟ್‌ನಲ್ಲಿ ಇದೆ. + +### ತಯಾರಿ + +ನಾವು ನಿಮ್ಮ _notebook.ipynb_ ಫೈಲ್ ಅನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿದ ಡೇಟಾಸೆಟ್‌ನೊಂದಿಗೆ ಲೋಡ್ ಮಾಡಿದ್ದೇವೆ ಮತ್ತು ಅದನ್ನು X ಮತ್ತು y ಡೇಟಾಫ್ರೇಮ್‌ಗಳಾಗಿ ವಿಭಜಿಸಿದ್ದೇವೆ, ಮಾದರಿ ನಿರ್ಮಾಣ ಪ್ರಕ್ರಿಯೆಗೆ ಸಿದ್ಧವಾಗಿದೆ. + +## ವರ್ಗೀಕರಣ ನಕ್ಷೆ + +ಹಿಂದೆ, ನೀವು ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸುವಾಗ Microsoft ನ ಚೀಟ್ ಶೀಟ್ ಬಳಸಿ ವಿವಿಧ ಆಯ್ಕೆಗಳ ಬಗ್ಗೆ ಕಲಿತಿದ್ದೀರಿ. Scikit-learn ಒಂದು ಸಮಾನವಾದ, ಆದರೆ ಹೆಚ್ಚು ಸೂಕ್ಷ್ಮ ಚೀಟ್ ಶೀಟ್ ಅನ್ನು ನೀಡುತ್ತದೆ, ಇದು ನಿಮ್ಮ ಅಂದಾಜುಕಾರರನ್ನು (ಮತ್ತೊಂದು ಪದದಲ್ಲಿ ವರ್ಗೀಕರಣಕಾರರು) ಇನ್ನಷ್ಟು ನಿಖರಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ: + +![ML Map from Scikit-learn](../../../../translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.kn.png) +> ಟಿಪ್: [ಈ ನಕ್ಷೆಯನ್ನು ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ ಭೇಟಿ ನೀಡಿ](https://scikit-learn.org/stable/tutorial/machine_learning_map/) ಮತ್ತು ದಾರಿಯಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಓದಿ. + +### ಯೋಜನೆ + +ನಿಮ್ಮ ಡೇಟಾ ಸ್ಪಷ್ಟವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಂಡ ನಂತರ ಈ ನಕ್ಷೆ ಬಹಳ ಸಹಾಯಕವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ನೀವು ಅದರ ದಾರಿಗಳಲ್ಲಿ 'ನಡೆದು' ನಿರ್ಧಾರಕ್ಕೆ ಬರಬಹುದು: + +- ನಮಗೆ >50 ಮಾದರಿಗಳು ಇವೆ +- ನಾವು ಒಂದು ವರ್ಗವನ್ನು ಊಹಿಸಲು ಬಯಸುತ್ತೇವೆ +- ನಮಗೆ ಲೇಬಲ್ ಮಾಡಲಾದ ಡೇಟಾ ಇದೆ +- ನಮಗೆ 100K ಕ್ಕಿಂತ ಕಡಿಮೆ ಮಾದರಿಗಳು ಇವೆ +- ✨ ನಾವು ಲೀನಿಯರ್ SVC ಆಯ್ಕೆಮಾಡಬಹುದು +- ಅದು ಕೆಲಸ ಮಾಡದಿದ್ದರೆ, ಏಕೆಂದರೆ ನಮಗೆ ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾ ಇದೆ + - ನಾವು ✨ KNeighbors ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಪ್ರಯತ್ನಿಸಬಹುದು + - ಅದು ಕೆಲಸ ಮಾಡದಿದ್ದರೆ, ✨ SVC ಮತ್ತು ✨ Ensemble ವರ್ಗೀಕರಣಕಾರಿಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ + +ಇದು ಅನುಸರಿಸಲು ಬಹಳ ಸಹಾಯಕ ದಾರಿಯಾಗಿದೆ. + +## ಅಭ್ಯಾಸ - ಡೇಟಾವನ್ನು ವಿಭಜಿಸಿ + +ಈ ದಾರಿಯನ್ನು ಅನುಸರಿಸಿ, ನಾವು ಕೆಲವು ಲೈಬ್ರರಿಗಳನ್ನು ಆಮದುಮಾಡುವುದರಿಂದ ಪ್ರಾರಂಭಿಸಬೇಕು. + +1. ಅಗತ್ಯವಿರುವ ಲೈಬ್ರರಿಗಳನ್ನು ಆಮದುಮಾಡಿ: + + ```python + from sklearn.neighbors import KNeighborsClassifier + from sklearn.linear_model import LogisticRegression + from sklearn.svm import SVC + from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier + from sklearn.model_selection import train_test_split, cross_val_score + from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve + import numpy as np + ``` + +1. ನಿಮ್ಮ ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ವಿಭಜಿಸಿ: + + ```python + X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3) + ``` + +## ಲೀನಿಯರ್ SVC ವರ್ಗೀಕರಣಕಾರ + +ಸಪೋರ್ಟ್-ವೆಕ್ಟರ್ ಕ್ಲಸ್ಟರಿಂಗ್ (SVC) ಎಂಬುದು ಸಪೋರ್ಟ್-ವೆಕ್ಟರ್ ಯಂತ್ರಗಳ ಕುಟುಂಬದ ಒಂದು ಭಾಗವಾಗಿದೆ (ಈ ಬಗ್ಗೆ ಕೆಳಗೆ ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ). ಈ ವಿಧಾನದಲ್ಲಿ, ನೀವು ಲೇಬಲ್‌ಗಳನ್ನು ಹೇಗೆ ಕ್ಲಸ್ಟರ್ ಮಾಡಬೇಕೆಂದು ನಿರ್ಧರಿಸಲು 'ಕರ್ಣಲ್' ಆಯ್ಕೆಮಾಡಬಹುದು. 'C' ಪರಿಮಾಣವು 'ನಿಯಮಿತತೆ'ಗೆ ಸಂಬಂಧಿಸಿದೆ, ಇದು ಪರಿಮಾಣಗಳ ಪ್ರಭಾವವನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. ಕರ್ಣಲ್ [ಬಹುಮಾನ](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC)ಗಳಲ್ಲೊಂದು ಆಗಿರಬಹುದು; ಇಲ್ಲಿ ನಾವು ಲೀನಿಯರ್ SVC ಬಳಸಲು 'linear' ಎಂದು ಹೊಂದಿಸಿದ್ದೇವೆ. Probability ಡೀಫಾಲ್ಟ್ 'false' ಆಗಿದೆ; ಇಲ್ಲಿ ನಾವು 'true' ಎಂದು ಹೊಂದಿಸಿದ್ದೇವೆ ಪ್ರಾಬಬಿಲಿಟಿ ಅಂದಾಜುಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು. ಡೇಟಾವನ್ನು ಶಫಲ್ ಮಾಡಲು random state ಅನ್ನು '0' ಎಂದು ಹೊಂದಿಸಿದ್ದೇವೆ. + +### ಅಭ್ಯಾಸ - ಲೀನಿಯರ್ SVC ಅನ್ವಯಿಸಿ + +ವರ್ಗೀಕರಣಕಾರರ ಅರೆ ಅನ್ನು ರಚಿಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸಿ. ನಾವು ಪರೀಕ್ಷಿಸುವಂತೆ ಈ ಅರೆಗೆ ಕ್ರಮೇಣ ಸೇರಿಸುತ್ತೇವೆ. + +1. ಲೀನಿಯರ್ SVC ನಿಂದ ಪ್ರಾರಂಭಿಸಿ: + + ```python + C = 10 + # ವಿಭಿನ್ನ ವರ್ಗೀಕರಿಸುವವರನ್ನು ರಚಿಸಿ. + classifiers = { + 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0) + } + ``` + +2. ಲೀನಿಯರ್ SVC ಬಳಸಿ ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ ಮತ್ತು ವರದಿಯನ್ನು ಮುದ್ರಿಸಿ: + + ```python + n_classifiers = len(classifiers) + + for index, (name, classifier) in enumerate(classifiers.items()): + classifier.fit(X_train, np.ravel(y_train)) + + y_pred = classifier.predict(X_test) + accuracy = accuracy_score(y_test, y_pred) + print("Accuracy (train) for %s: %0.1f%% " % (name, accuracy * 100)) + print(classification_report(y_test,y_pred)) + ``` + + ಫಲಿತಾಂಶ ಚೆನ್ನಾಗಿದೆ: + + ```output + Accuracy (train) for Linear SVC: 78.6% + precision recall f1-score support + + chinese 0.71 0.67 0.69 242 + indian 0.88 0.86 0.87 234 + japanese 0.79 0.74 0.76 254 + korean 0.85 0.81 0.83 242 + thai 0.71 0.86 0.78 227 + + accuracy 0.79 1199 + macro avg 0.79 0.79 0.79 1199 + weighted avg 0.79 0.79 0.79 1199 + ``` + +## K-ನೆರೆಹೊರೆಯವರ ವರ್ಗೀಕರಣಕಾರ + +K-ನೆರೆಹೊರೆಯವರು "ನೆರೆಹೊರೆಯವರು" ಕುಟುಂಬದ ML ವಿಧಾನಗಳ ಭಾಗವಾಗಿದ್ದು, ಮೇಲ್ವಿಚಾರಣೆಯುಳ್ಳ ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆಯಿಲ್ಲದ ಕಲಿಕೆಗೆ ಬಳಸಬಹುದು. ಈ ವಿಧಾನದಲ್ಲಿ, ಪೂರ್ವನಿರ್ಧರಿತ ಸಂಖ್ಯೆಯ ಬಿಂದುಗಳನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಡೇಟಾ ಈ ಬಿಂದುಗಳ ಸುತ್ತ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ, ಇದರಿಂದ ಸಾಮಾನ್ಯ ಲೇಬಲ್‌ಗಳನ್ನು ಊಹಿಸಬಹುದು. + +### ಅಭ್ಯಾಸ - K-ನೆರೆಹೊರೆಯವರ ವರ್ಗೀಕರಣಕಾರ ಅನ್ವಯಿಸಿ + +ಹಿಂದಿನ ವರ್ಗೀಕರಣಕಾರ ಚೆನ್ನಾಗಿತ್ತು ಮತ್ತು ಡೇಟಾದೊಂದಿಗೆ ಉತ್ತಮವಾಗಿ ಕೆಲಸ ಮಾಡಿತು, ಆದರೆ ನಾವು ಉತ್ತಮ ನಿಖರತೆಯನ್ನು ಪಡೆಯಬಹುದು. K-ನೆರೆಹೊರೆಯವರ ವರ್ಗೀಕರಣಕಾರವನ್ನು ಪ್ರಯತ್ನಿಸಿ. + +1. ನಿಮ್ಮ ವರ್ಗೀಕರಣಕಾರ ಅರೆಗೆ ಒಂದು ಸಾಲು ಸೇರಿಸಿ (ಲೀನಿಯರ್ SVC ಐಟಂನ ನಂತರ ಕಾಮಾ ಸೇರಿಸಿ): + + ```python + 'KNN classifier': KNeighborsClassifier(C), + ``` + + ಫಲಿತಾಂಶ ಸ್ವಲ್ಪ ಕೆಟ್ಟಿದೆ: + + ```output + Accuracy (train) for KNN classifier: 73.8% + precision recall f1-score support + + chinese 0.64 0.67 0.66 242 + indian 0.86 0.78 0.82 234 + japanese 0.66 0.83 0.74 254 + korean 0.94 0.58 0.72 242 + thai 0.71 0.82 0.76 227 + + accuracy 0.74 1199 + macro avg 0.76 0.74 0.74 1199 + weighted avg 0.76 0.74 0.74 1199 + ``` + + ✅ [K-ನೆರೆಹೊರೆಯವರು](https://scikit-learn.org/stable/modules/neighbors.html#neighbors) ಬಗ್ಗೆ ತಿಳಿಯಿರಿ + +## ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ವರ್ಗೀಕರಣಕಾರ + +ಸಪೋರ್ಟ್-ವೆಕ್ಟರ್ ವರ್ಗೀಕರಣಕಾರಗಳು [ಸಪೋರ್ಟ್-ವೆಕ್ಟರ್ ಯಂತ್ರ](https://wikipedia.org/wiki/Support-vector_machine) ಕುಟುಂಬದ ಭಾಗವಾಗಿದ್ದು, ವರ್ಗೀಕರಣ ಮತ್ತು ರಿಗ್ರೆಷನ್ ಕಾರ್ಯಗಳಿಗೆ ಬಳಸಲಾಗುತ್ತವೆ. SVM ಗಳು "ತರಬೇತಿ ಉದಾಹರಣೆಗಳನ್ನು ಸ್ಥಳದಲ್ಲಿ ಬಿಂದುಗಳಾಗಿ ನಕ್ಷೆ ಮಾಡುತ್ತವೆ" ಎರಡು ವರ್ಗಗಳ ನಡುವಿನ ದೂರವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಲು. ನಂತರದ ಡೇಟಾವನ್ನು ಈ ಸ್ಥಳದಲ್ಲಿ ನಕ್ಷೆ ಮಾಡಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಅವುಗಳ ವರ್ಗವನ್ನು ಊಹಿಸಬಹುದು. + +### ಅಭ್ಯಾಸ - ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ವರ್ಗೀಕರಣಕಾರ ಅನ್ವಯಿಸಿ + +ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ವರ್ಗೀಕರಣಕಾರದೊಂದಿಗೆ ಸ್ವಲ್ಪ ಉತ್ತಮ ನಿಖರತೆಯನ್ನು ಪ್ರಯತ್ನಿಸೋಣ. + +1. K-ನೆರೆಹೊರೆಯವರ ಐಟಂನ ನಂತರ ಕಾಮಾ ಸೇರಿಸಿ, ನಂತರ ಈ ಸಾಲನ್ನು ಸೇರಿಸಿ: + + ```python + 'SVC': SVC(), + ``` + + ಫಲಿತಾಂಶ ಬಹಳ ಚೆನ್ನಾಗಿದೆ! + + ```output + Accuracy (train) for SVC: 83.2% + precision recall f1-score support + + chinese 0.79 0.74 0.76 242 + indian 0.88 0.90 0.89 234 + japanese 0.87 0.81 0.84 254 + korean 0.91 0.82 0.86 242 + thai 0.74 0.90 0.81 227 + + accuracy 0.83 1199 + macro avg 0.84 0.83 0.83 1199 + weighted avg 0.84 0.83 0.83 1199 + ``` + + ✅ [ಸಪೋರ್ಟ್-ವೆಕ್ಟರ್‌ಗಳ](https://scikit-learn.org/stable/modules/svm.html#svm) ಬಗ್ಗೆ ತಿಳಿಯಿರಿ + +## ಎನ್ಸೆಂಬಲ್ ವರ್ಗೀಕರಣಕಾರಗಳು + +ಹಿಂದಿನ ಪರೀಕ್ಷೆ ಚೆನ್ನಾಗಿದ್ದರೂ, ನಾವು ದಾರಿಯ ಕೊನೆಯಲ್ಲಿ ಇರುವ ಎನ್ಸೆಂಬಲ್ ವರ್ಗೀಕರಣಕಾರಗಳನ್ನು ಪ್ರಯತ್ನಿಸೋಣ, ವಿಶೇಷವಾಗಿ ರ್ಯಾಂಡಮ್ ಫಾರೆಸ್ಟ್ ಮತ್ತು ಅಡಾಬೂಸ್ಟ್: + +```python + 'RFST': RandomForestClassifier(n_estimators=100), + 'ADA': AdaBoostClassifier(n_estimators=100) +``` + +ಫಲಿತಾಂಶ ಬಹಳ ಚೆನ್ನಾಗಿದೆ, ವಿಶೇಷವಾಗಿ ರ್ಯಾಂಡಮ್ ಫಾರೆಸ್ಟ್‌ಗೆ: + +```output +Accuracy (train) for RFST: 84.5% + precision recall f1-score support + + chinese 0.80 0.77 0.78 242 + indian 0.89 0.92 0.90 234 + japanese 0.86 0.84 0.85 254 + korean 0.88 0.83 0.85 242 + thai 0.80 0.87 0.83 227 + + accuracy 0.84 1199 + macro avg 0.85 0.85 0.84 1199 +weighted avg 0.85 0.84 0.84 1199 + +Accuracy (train) for ADA: 72.4% + precision recall f1-score support + + chinese 0.64 0.49 0.56 242 + indian 0.91 0.83 0.87 234 + japanese 0.68 0.69 0.69 254 + korean 0.73 0.79 0.76 242 + thai 0.67 0.83 0.74 227 + + accuracy 0.72 1199 + macro avg 0.73 0.73 0.72 1199 +weighted avg 0.73 0.72 0.72 1199 +``` + +✅ [ಎನ್ಸೆಂಬಲ್ ವರ್ಗೀಕರಣಕಾರಗಳು](https://scikit-learn.org/stable/modules/ensemble.html) ಬಗ್ಗೆ ತಿಳಿಯಿರಿ + +ಈ ಯಂತ್ರ ಕಲಿಕೆಯ ವಿಧಾನವು "ಕೆಲವು ಮೂಲ ಅಂದಾಜುಕಾರರ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ" ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಸುಧಾರಿಸಲು. ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಾವು ರ್ಯಾಂಡಮ್ ಟ್ರೀಸ್ ಮತ್ತು ಅಡಾಬೂಸ್ಟ್ ಬಳಸಿದ್ದೇವೆ. + +- [ರ್ಯಾಂಡಮ್ ಫಾರೆಸ್ಟ್](https://scikit-learn.org/stable/modules/ensemble.html#forest), ಸರಾಸರಿ ವಿಧಾನ, 'ನಿರ್ಣಯ ಮರಗಳ' ಒಂದು 'ಕಾಡನ್ನು' ರಚಿಸುತ್ತದೆ, ಇದು ಅತಿಯಾದ ಹೊಂದಾಣಿಕೆಯನ್ನು ತಪ್ಪಿಸಲು ಯಾದೃಚ್ಛಿಕತೆಯನ್ನು ಒಳಗೊಂಡಿದೆ. n_estimators ಪರಿಮಾಣವನ್ನು ಮರಗಳ ಸಂಖ್ಯೆಗೆ ಹೊಂದಿಸಲಾಗಿದೆ. + +- [ಅಡಾಬೂಸ್ಟ್](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) ಒಂದು ವರ್ಗೀಕರಣಕಾರವನ್ನು ಡೇಟಾಸೆಟ್‌ಗೆ ಹೊಂದಿಸುತ್ತದೆ ಮತ್ತು ನಂತರ ಆ ವರ್ಗೀಕರಣಕಾರದ ನಕಲುಗಳನ್ನು ಅದೇ ಡೇಟಾಸೆಟ್‌ಗೆ ಹೊಂದಿಸುತ್ತದೆ. ಇದು ತಪ್ಪಾಗಿ ವರ್ಗೀಕರಿಸಿದ ಐಟಂಗಳ ತೂಕಗಳ ಮೇಲೆ ಗಮನಹರಿಸಿ, ಮುಂದಿನ ವರ್ಗೀಕರಣಕಾರದ ಹೊಂದಾಣಿಕೆಯನ್ನು ಸರಿಪಡಿಸುತ್ತದೆ. + +--- + +## 🚀ಸವಾಲು + +ಈ ತಂತ್ರಗಳ ಪ್ರತಿಯೊಂದಕ್ಕೂ ನೀವು ತಿದ್ದುಪಡಿ ಮಾಡಬಹುದಾದ ಅನೇಕ ಪರಿಮಾಣಗಳಿವೆ. ಪ್ರತಿಯೊಂದರ ಡೀಫಾಲ್ಟ್ ಪರಿಮಾಣಗಳನ್ನು ಸಂಶೋಧಿಸಿ ಮತ್ತು ಈ ಪರಿಮಾಣಗಳನ್ನು ತಿದ್ದುಪಡಿ ಮಾಡುವುದು ಮಾದರಿಯ ಗುಣಮಟ್ಟಕ್ಕೆ ಏನು ಅರ್ಥವಾಗುತ್ತದೆ ಎಂದು ಯೋಚಿಸಿ. + +## [ಪೋಸ್ಟ್-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ & ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಈ ಪಾಠಗಳಲ್ಲಿ ಬಹಳಷ್ಟು ತಾಂತ್ರಿಕ ಪದಗಳಿವೆ, ಆದ್ದರಿಂದ [ಈ ಪಟ್ಟಿ](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) ಯನ್ನು ಪರಿಶೀಲಿಸಲು ಒಂದು ನಿಮಿಷ ತೆಗೆದುಕೊಳ್ಳಿ! + +## ನಿಯೋಜನೆ + +[ಪರಿಮಾಣ ಆಟ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/4-Classification/3-Classifiers-2/assignment.md b/translations/kn/4-Classification/3-Classifiers-2/assignment.md new file mode 100644 index 000000000..580b666da --- /dev/null +++ b/translations/kn/4-Classification/3-Classifiers-2/assignment.md @@ -0,0 +1,27 @@ + +# ಪ್ಯಾರಾಮೀಟರ್ ಪ್ಲೇ + +## ಸೂಚನೆಗಳು + +ಈ ವರ್ಗೀಕರಣಕಾರಿಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಡೀಫಾಲ್ಟ್ ಆಗಿ ಸೆಟ್ ಆಗಿರುವ ಅನೇಕ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳಿವೆ. VS ಕೋಡ್‌ನ ಇಂಟೆಲಿಸೆನ್ಸ್ ನಿಮಗೆ ಅವುಗಳನ್ನು ಆಳವಾಗಿ ತಿಳಿದುಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡಬಹುದು. ಈ ಪಾಠದಲ್ಲಿ ಒಂದಾದ ML ವರ್ಗೀಕರಣ ತಂತ್ರಗಳನ್ನು ಅಳವಡಿಸಿ ಮತ್ತು ವಿವಿಧ ಪ್ಯಾರಾಮೀಟರ್ ಮೌಲ್ಯಗಳನ್ನು ತಿದ್ದುಪಡಿ ಮಾಡಿ ಮಾದರಿಗಳನ್ನು ಮರುಶಿಕ್ಷಣ ಮಾಡಿ. ಕೆಲವು ಬದಲಾವಣೆಗಳು ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಏಕೆ ಸಹಾಯ ಮಾಡುತ್ತವೆ ಮತ್ತು ಇತರವು ಅದನ್ನು ಹೇಗೆ ಹಾಳುಮಾಡುತ್ತವೆ ಎಂಬುದನ್ನು ವಿವರಿಸುವ ನೋಟ್ಬುಕ್ ರಚಿಸಿ. ನಿಮ್ಮ ಉತ್ತರದಲ್ಲಿ ವಿವರವಾಗಿ ಬರೆಯಿರಿ. + +## ರೂಬ್ರಿಕ್ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆ ಅಗತ್ಯವಿದೆ | +| -------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | ----------------------------- | +| | ಸಂಪೂರ್ಣವಾಗಿ ನಿರ್ಮಿಸಲಾದ ವರ್ಗೀಕರಣಕಾರಿಯೊಂದಿಗೆ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ ಮತ್ತು ಅದರ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ತಿದ್ದುಪಡಿ ಮಾಡಿ ಬದಲಾವಣೆಗಳನ್ನು ಪಠ್ಯಪೆಟ್ಟಿಕೆಯಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ | ಭಾಗಶಃ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ ಅಥವಾ ಸರಿಯಾಗಿ ವಿವರಿಸಲಾಗಿಲ್ಲ | ನೋಟ್ಬುಕ್ ದೋಷಪೂರಿತ ಅಥವಾ ದೋಷಪೂರಿತವಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/4-Classification/3-Classifiers-2/notebook.ipynb b/translations/kn/4-Classification/3-Classifiers-2/notebook.ipynb new file mode 100644 index 000000000..6ff2bb6e1 --- /dev/null +++ b/translations/kn/4-Classification/3-Classifiers-2/notebook.ipynb @@ -0,0 +1,165 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ವರ್ಗೀಕರಣ ಮಾದರಿ ನಿರ್ಮಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 9 + } + ], + "source": [ + "import pandas as pd\n", + "cuisines_df = pd.read_csv(\"../data/cleaned_cuisines.csv\")\n", + "cuisines_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian\n", + "Name: cuisine, dtype: object" + ] + }, + "metadata": {}, + "execution_count": 10 + } + ], + "source": [ + "cuisines_label_df = cuisines_df['cuisine']\n", + "cuisines_label_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 11 + } + ], + "source": [ + "cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)\n", + "cuisines_feature_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "kernelspec": { + "name": "python3", + "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" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "15a83277036572e0773229b5f21c1e12", + "translation_date": "2025-12-19T17:02:55+00:00", + "source_file": "4-Classification/3-Classifiers-2/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/translations/kn/4-Classification/3-Classifiers-2/solution/Julia/README.md b/translations/kn/4-Classification/3-Classifiers-2/solution/Julia/README.md new file mode 100644 index 000000000..45e7bf7c6 --- /dev/null +++ b/translations/kn/4-Classification/3-Classifiers-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/kn/4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb b/translations/kn/4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb new file mode 100644 index 000000000..76377b315 --- /dev/null +++ b/translations/kn/4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb @@ -0,0 +1,654 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "lesson_12-R.ipynb", + "provenance": [], + "collapsed_sections": [] + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "fab50046ca413a38939d579f8432274f", + "translation_date": "2025-12-19T17:17:48+00:00", + "source_file": "4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb", + "language_code": "kn" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "jsFutf_ygqSx" + }, + "source": [ + "# ವರ್ಗೀಕರಣ ಮಾದರಿ ನಿರ್ಮಿಸಿ: ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HD54bEefgtNO" + }, + "source": [ + "## ಆಹಾರ ವರ್ಗೀಕರಣಗಳು 2\n", + "\n", + "ಈ ಎರಡನೇ ವರ್ಗೀಕರಣ ಪಾಠದಲ್ಲಿ, ನಾವು ವರ್ಗೀಕೃತ ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸುವ `ಹೆಚ್ಚು ವಿಧಾನಗಳನ್ನು` ಅನ್ವೇಷಿಸುವೆವು. ನಾವು ಒಂದು ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಮತ್ತೊಂದರ ಮೇಲೆ ಆಯ್ಕೆಮಾಡುವ ಪರಿಣಾಮಗಳ ಬಗ್ಗೆ ಸಹ ತಿಳಿಯುವೆವು.\n", + "\n", + "### [**ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/23/)\n", + "\n", + "### **ಪೂರ್ವಾಪೇಕ್ಷಿತ**\n", + "\n", + "ನಾವು ಹಿಂದಿನ ಪಾಠಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ್ದೀರಿ ಎಂದು ಊಹಿಸುತ್ತೇವೆ ಏಕೆಂದರೆ ನಾವು ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಕಲಿತ ಕೆಲವು ತತ್ವಗಳನ್ನು ಮುಂದುವರಿಸುವೆವು.\n", + "\n", + "ಈ ಪಾಠಕ್ಕಾಗಿ, ನಾವು ಕೆಳಗಿನ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಅಗತ್ಯವಿದೆ:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) ಒಂದು [R ಪ್ಯಾಕೇಜುಗಳ ಸಂಗ್ರಹ](https://www.tidyverse.org/packages) ಆಗಿದ್ದು, ಡೇಟಾ ವಿಜ್ಞಾನವನ್ನು ವೇಗವಾಗಿ, ಸುಲಭವಾಗಿ ಮತ್ತು ಹೆಚ್ಚು ಮನರಂಜನೀಯವಾಗಿ ಮಾಡುತ್ತದೆ!\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ಫ್ರೇಮ್ವರ್ಕ್ ಒಂದು [ಪ್ಯಾಕೇಜುಗಳ ಸಂಗ್ರಹ](https://www.tidymodels.org/packages/) ಆಗಿದ್ದು, ಮಾದರೀಕರಣ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕಾಗಿ.\n", + "\n", + "- `themis`: [themis ಪ್ಯಾಕೇಜ್](https://themis.tidymodels.org/) ಅಸಮತೋಲನ ಡೇಟಾವನ್ನು ನಿರ್ವಹಿಸಲು ಹೆಚ್ಚುವರಿ ರೆಸಿಪಿ ಹಂತಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.\n", + "\n", + "ನೀವು ಅವುಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬಹುದು:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"kernlab\", \"themis\", \"ranger\", \"xgboost\", \"kknn\"))`\n", + "\n", + "ಬದಲಾಗಿ, ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ಈ ಮಾಯಾಜಾಲವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜುಗಳಿದ್ದರೆ ಪರಿಶೀಲಿಸಿ, ಅವು ಇಲ್ಲದಿದ್ದರೆ ನಿಮ್ಮಿಗಾಗಿ ಅವುಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "vZ57IuUxgyQt" + }, + "source": [ + "suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\n", + "\n", + "pacman::p_load(tidyverse, tidymodels, themis, kernlab, ranger, xgboost, kknn)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "z22M-pj4g07x" + }, + "source": [ + "Now, let's hit the ground running!\n", + "\n", + "## **1. ವರ್ಗೀಕರಣ ನಕ್ಷೆ**\n", + "\n", + "ನಮ್ಮ [ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ](https://github.com/microsoft/ML-For-Beginners/tree/main/4-Classification/2-Classifiers-1), ನಾವು ಈ ಪ್ರಶ್ನೆಯನ್ನು ಪರಿಹರಿಸಲು ಪ್ರಯತ್ನಿಸಿದ್ದೇವೆ: ನಾವು ಹಲವಾರು ಮಾದರಿಗಳಲ್ಲಿ ಹೇಗೆ ಆಯ್ಕೆ ಮಾಡಬೇಕು? ಬಹುಮಟ್ಟಿಗೆ, ಇದು ಡೇಟಾದ ಲಕ್ಷಣಗಳು ಮತ್ತು ನಾವು ಪರಿಹರಿಸಲು ಬಯಸುವ ಸಮಸ್ಯೆಯ ಪ್ರಕಾರ (ಉದಾಹರಣೆಗೆ ವರ್ಗೀಕರಣ ಅಥವಾ ರಿಗ್ರೆಶನ್?) ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ.\n", + "\n", + "ಹಿಂದೆ, ನಾವು ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ ಚೀಟ್ ಶೀಟ್ ಬಳಸಿ ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸುವಾಗ ನಿಮಗೆ ಇರುವ ವಿವಿಧ ಆಯ್ಕೆಗಳನ್ನು ಕಲಿತಿದ್ದೇವೆ. ಪೈಥಾನ್‌ನ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಫ್ರೇಮ್ವರ್ಕ್, ಸ್ಕಿಕಿಟ್-ಲರ್ನ್, ಸಮಾನವಾದ ಆದರೆ ಹೆಚ್ಚು ಸೂಕ್ಷ್ಮ ಚೀಟ್ ಶೀಟ್ ಅನ್ನು ನೀಡುತ್ತದೆ, ಇದು ನಿಮ್ಮ ಅಂದಾಜುಕಾರರನ್ನು (ಮತ್ತೊಂದು ಪದದಲ್ಲಿ ವರ್ಗೀಕರಣಕಾರರು) ಇನ್ನಷ್ಟು ಸೀಮಿತಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು:\n", + "\n", + "

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

\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "u1i3xRIVg7vG" + }, + "source": [ + "> ಟಿಪ್: [ಈ ನಕ್ಷೆಯನ್ನು ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ ಭೇಟಿ ನೀಡಿ](https://scikit-learn.org/stable/tutorial/machine_learning_map/) ಮತ್ತು ದಾರಿಯಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಓದಿರಿ.\n", + ">\n", + "> [Tidymodels ರೆಫರೆನ್ಸ್ ಸೈಟ್](https://www.tidymodels.org/find/parsnip/#models) ವಿವಿಧ ಮಾದರಿಗಳ ಬಗ್ಗೆ ಅತ್ಯುತ್ತಮ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ.\n", + "\n", + "### **ಯೋಜನೆ** 🗺️\n", + "\n", + "ನಿಮ್ಮ ಡೇಟಾ ಬಗ್ಗೆ ಸ್ಪಷ್ಟವಾದ ಅರ್ಥವಿದ್ದಾಗ ಈ ನಕ್ಷೆ ಬಹಳ ಸಹಾಯಕವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ನೀವು ನಿರ್ಧಾರಕ್ಕೆ ದಾರಿಯ ಮೇಲೆ 'ನಡೆದಾಡಬಹುದು':\n", + "\n", + "- ನಮಗೆ \\>50 ಮಾದರಿಗಳು ಇವೆ\n", + "\n", + "- ನಾವು ಒಂದು ವರ್ಗವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬೇಕಾಗಿದೆ\n", + "\n", + "- ನಮಗೆ ಲೇಬಲ್ ಮಾಡಲಾದ ಡೇಟಾ ಇದೆ\n", + "\n", + "- ನಮಗೆ 100K ಕ್ಕಿಂತ ಕಡಿಮೆ ಮಾದರಿಗಳು ಇವೆ\n", + "\n", + "- ✨ ನಾವು ಲೀನಿಯರ್ SVC ಆಯ್ಕೆ ಮಾಡಬಹುದು\n", + "\n", + "- ಅದು ಕೆಲಸ ಮಾಡದಿದ್ದರೆ, ಏಕೆಂದರೆ ನಮಗೆ ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾ ಇದೆ\n", + "\n", + " - ನಾವು ✨ KNeighbors ವರ್ಗೀಕರಣವನ್ನು ಪ್ರಯತ್ನಿಸಬಹುದು\n", + "\n", + " - ಅದು ಕೆಲಸ ಮಾಡದಿದ್ದರೆ, ✨ SVC ಮತ್ತು ✨ ಎನ್ಸೆಂಬಲ್ ವರ್ಗೀಕರಣಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ\n", + "\n", + "ಇದು ಅನುಸರಿಸಲು ಬಹಳ ಸಹಾಯಕ ದಾರಿಯಾಗಿದೆ. ಈಗ, [tidymodels](https://www.tidymodels.org/) ಮಾದರೀಕರಣ ಫ್ರೇಮ್ವರ್ಕ್ ಬಳಸಿ ನೇರವಾಗಿ ಪ್ರಾರಂಭಿಸೋಣ: ಇದು ಉತ್ತಮ ಸಂಖ್ಯಾಶಾಸ್ತ್ರೀಯ ಅಭ್ಯಾಸವನ್ನು ಉತ್ತೇಜಿಸಲು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾದ R ಪ್ಯಾಕೇಜುಗಳ ಸತತ ಮತ್ತು ಲವಚಿಕ ಸಂಗ್ರಹ 😊.\n", + "\n", + "## 2. ಡೇಟಾವನ್ನು ವಿಭಜಿಸಿ ಮತ್ತು ಅಸಮತೋಲನ ಡೇಟಾ ಸೆಟ್ ಅನ್ನು ನಿರ್ವಹಿಸಿ.\n", + "\n", + "ನಮ್ಮ ಹಿಂದಿನ ಪಾಠಗಳಿಂದ, ನಮ್ಮ ಆಹಾರ ಶೈಲಿಗಳಲ್ಲಿ ಸಾಮಾನ್ಯ ಪದಾರ್ಥಗಳ ಒಂದು ಸೆಟ್ ಇದ್ದವು ಎಂದು ಕಲಿತೆವು. ಜೊತೆಗೆ, ಆಹಾರ ಶೈಲಿಗಳ ಸಂಖ್ಯೆಯಲ್ಲಿ ಅಸಮತೋಲನ ವಿತರಣೆಯೂ ಇತ್ತು.\n", + "\n", + "ನಾವು ಈ ಕೆಳಗಿನ ಮೂಲಕ ಈ ಸಮಸ್ಯೆಗಳನ್ನು ನಿರ್ವಹಿಸುವೆವು\n", + "\n", + "- ವಿಭಿನ್ನ ಆಹಾರ ಶೈಲಿಗಳ ನಡುವೆ ಗೊಂದಲ ಉಂಟುಮಾಡುವ ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಪದಾರ್ಥಗಳನ್ನು `dplyr::select()` ಬಳಸಿ ತೆಗೆದುಹಾಕುವುದು.\n", + "\n", + "- `over-sampling` ಆಲ್ಗಾರಿದಮ್ ಅನ್ನು ಅನ್ವಯಿಸುವ ಮೂಲಕ ಮಾದರೀಕರಣಕ್ಕೆ ಸಿದ್ಧವಾಗಲು ಡೇಟಾವನ್ನು ಪೂರ್ವಸಿದ್ಧಗೊಳಿಸುವ `recipe` ಅನ್ನು ಬಳಸುವುದು.\n", + "\n", + "ನಾವು ಈ ಮೇಲಿನ ವಿಷಯಗಳನ್ನು ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ಈಗಾಗಲೇ ನೋಡಿದ್ದೇವೆ ಆದ್ದರಿಂದ ಇದು ಸುಲಭವಾಗಿರುತ್ತದೆ 🥳!\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "6tj_rN00hClA" + }, + "source": [ + "# Load the core Tidyverse and Tidymodels packages\n", + "library(tidyverse)\n", + "library(tidymodels)\n", + "\n", + "# Load the original cuisines data\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/4-Classification/data/cuisines.csv\")\n", + "\n", + "# Drop id column, rice, garlic and ginger from our original data set\n", + "df_select <- df %>% \n", + " select(-c(1, rice, garlic, ginger)) %>%\n", + " # Encode cuisine column as categorical\n", + " mutate(cuisine = factor(cuisine))\n", + "\n", + "\n", + "# Create data split specification\n", + "set.seed(2056)\n", + "cuisines_split <- initial_split(data = df_select,\n", + " strata = cuisine,\n", + " prop = 0.7)\n", + "\n", + "# Extract the data in each split\n", + "cuisines_train <- training(cuisines_split)\n", + "cuisines_test <- testing(cuisines_split)\n", + "\n", + "# Display distribution of cuisines in the training set\n", + "cuisines_train %>% \n", + " count(cuisine) %>% \n", + " arrange(desc(n))" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zFin5yw3hHb1" + }, + "source": [ + "### ಅಸಮತೋಲಿತ ಡೇಟಾ ನಿರ್ವಹಣೆ\n", + "\n", + "ಅಸಮತೋಲಿತ ಡೇಟಾ ಸಾಮಾನ್ಯವಾಗಿ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ನಕಾರಾತ್ಮಕ ಪರಿಣಾಮಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ. ಗಮನಾರ್ಹ ಸಂಖ್ಯೆಯ ವೀಕ್ಷಣೆಗಳು ಸಮಾನವಾಗಿರುವಾಗ ಬಹುತೇಕ ಮಾದರಿಗಳು ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಮತ್ತು ಆದ್ದರಿಂದ ಅಸಮತೋಲಿತ ಡೇಟಾ ಜೊತೆ ಹೋರಾಡುತ್ತವೆ.\n", + "\n", + "ಅಸಮತೋಲಿತ ಡೇಟಾ ಸೆಟ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಎರಡು ಪ್ರಮುಖ ವಿಧಾನಗಳಿವೆ:\n", + "\n", + "- ಅಲ್ಪಸಂಖ್ಯಾತ ವರ್ಗಕ್ಕೆ ವೀಕ್ಷಣೆಗಳನ್ನು ಸೇರಿಸುವುದು: `ಓವರ್-ಸ್ಯಾಂಪ್ಲಿಂಗ್` ಉದಾಹರಣೆಗೆ SMOTE ಆಲ್ಗಾರಿದಮ್ ಬಳಸಿ, ಇದು ಅಲ್ಪಸಂಖ್ಯಾತ ವರ್ಗದ ಹೊಸ ಉದಾಹರಣೆಗಳನ್ನು ಸಮೀಪದ ನೆರೆಹೊರೆಯವರನ್ನು ಬಳಸಿ ಸೃಷ್ಟಿಸುತ್ತದೆ.\n", + "\n", + "- ಬಹುಸಂಖ್ಯಾತ ವರ್ಗದಿಂದ ವೀಕ್ಷಣೆಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು: `ಅಂಡರ್-ಸ್ಯಾಂಪ್ಲಿಂಗ್`\n", + "\n", + "ನಮ್ಮ ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ನಾವು `ರೆಸಿಪಿ` ಬಳಸಿ ಅಸಮತೋಲಿತ ಡೇಟಾ ಸೆಟ್‌ಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದನ್ನು ತೋರಿಸಿದ್ದೇವೆ. ರೆಸಿಪಿ ಎಂದರೆ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಗೆ ಸಿದ್ಧವಾಗಲು ಡೇಟಾ ಸೆಟ್‌ಗೆ ಯಾವ ಹಂತಗಳನ್ನು ಅನ್ವಯಿಸಬೇಕು ಎಂದು ವಿವರಿಸುವ ಬ್ಲೂಪ್ರಿಂಟ್ ಎಂದು ಪರಿಗಣಿಸಬಹುದು. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು ನಮ್ಮ `ಪ್ರಶಿಕ್ಷಣ ಸೆಟ್`ಗಾಗಿ ನಮ್ಮ ಆಹಾರವರ್ಗಗಳ ಸಂಖ್ಯೆಯಲ್ಲಿ ಸಮಾನ ವಿತರಣೆ ಇರಬೇಕೆಂದು ಬಯಸುತ್ತೇವೆ. ಬನ್ನಿ, ಅದಕ್ಕೆ ನೇರವಾಗಿ ಹೋಗೋಣ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "cRzTnHolhLWd" + }, + "source": [ + "# Load themis package for dealing with imbalanced data\n", + "library(themis)\n", + "\n", + "# Create a recipe for preprocessing training data\n", + "cuisines_recipe <- recipe(cuisine ~ ., data = cuisines_train) %>%\n", + " step_smote(cuisine) \n", + "\n", + "# Print recipe\n", + "cuisines_recipe" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KxOQ2ORhhO81" + }, + "source": [ + "ಈಗ ನಾವು ಮಾದರಿಗಳನ್ನು ತರಬೇತಿಗೆ ಸಿದ್ಧರಾಗಿದ್ದೇವೆ 👩‍💻👨‍💻!\n", + "\n", + "## 3. ಬಹುಪದೀಯ ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳಿಗಿಂತ ಮುಂದೆ\n", + "\n", + "ನಮ್ಮ ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ನಾವು ಬಹುಪದೀಯ ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳನ್ನು ನೋಡಿದ್ದೇವೆ. ವರ್ಗೀಕರಣಕ್ಕಾಗಿ ಇನ್ನಷ್ಟು ಲವಚಿಕ ಮಾದರಿಗಳನ್ನು ಅನ್ವೇಷಿಸೋಣ.\n", + "\n", + "### ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ಮೆಷೀನ್ಸ್.\n", + "\n", + "ವರ್ಗೀಕರಣದ ಸಂದರ್ಭದಲ್ಲಿ, `ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ಮೆಷೀನ್ಸ್` ಎಂಬುದು ಒಂದು ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರಜ್ಞಾನವಾಗಿದ್ದು, ವರ್ಗಗಳನ್ನು \"ಉತ್ತಮವಾಗಿ\" ವಿಭಜಿಸುವ *ಹೈಪರ್ಪ್ಲೇನ್* ಅನ್ನು ಹುಡುಕಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಸರಳ ಉದಾಹರಣೆಯನ್ನು ನೋಡೋಣ:\n", + "\n", + "

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

https://commons.wikimedia.org/w/index.php?curid=22877598
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "C4Wsd0vZhXYu" + }, + "source": [ + "H1~ ವರ್ಗಗಳನ್ನು ವಿಭಜಿಸುವುದಿಲ್ಲ. H2~ ವಿಭಜಿಸುತ್ತದೆ, ಆದರೆ ಸಣ್ಣ ಮಾರ್ಜಿನ್‌ನೊಂದಿಗೆ ಮಾತ್ರ. H3~ ಅವುಗಳನ್ನು ಗರಿಷ್ಠ ಮಾರ್ಜಿನ್‌ನೊಂದಿಗೆ ವಿಭಜಿಸುತ್ತದೆ.\n", + "\n", + "#### ಲೀನಿಯರ್ ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ಕ್ಲಾಸಿಫೈಯರ್\n", + "\n", + "ಸಪೋರ್ಟ್-ವೆಕ್ಟರ್ ಕ್ಲಸ್ಟರಿಂಗ್ (SVC) ಎಂಎಲ್ ತಂತ್ರಜ್ಞಾನಗಳ ಸಪೋರ್ಟ್-ವೆಕ್ಟರ್ ಯಂತ್ರಗಳ ಕುಟುಂಬದ ಒಂದು ಶಾಖೆಯಾಗಿದೆ. SVC ನಲ್ಲಿ, ಹೈಪರ್ಪ್ಲೇನ್ ಅನ್ನು ತರಬೇತಿ ಅವಲೋಕನಗಳ `ಬಹುತೇಕ` ಸರಿಯಾಗಿ ವಿಭಜಿಸಲು ಆಯ್ಕೆಮಾಡಲಾಗುತ್ತದೆ, ಆದರೆ ಕೆಲವು ಅವಲೋಕನಗಳನ್ನು `ತಪ್ಪಾಗಿ ವರ್ಗೀಕರಿಸಬಹುದು`. ಕೆಲವು ಬಿಂದುಗಳನ್ನು ತಪ್ಪು ಬದಿಯಲ್ಲಿ ಇರಲು ಅನುಮತಿಸುವ ಮೂಲಕ, SVM ಔಟ್‌ಲೈಯರ್‌ಗಳಿಗೆ ಹೆಚ್ಚು ಪ್ರತಿರೋಧಕವಾಗುತ್ತದೆ ಮತ್ತು ಹೀಗಾಗಿ ಹೊಸ ಡೇಟಾಗೆ ಉತ್ತಮ ಸಾಮಾನ್ಯೀಕರಣವನ್ನು ನೀಡುತ್ತದೆ. ಈ ಉಲ್ಲಂಘನೆಯನ್ನು ನಿಯಂತ್ರಿಸುವ ಪರಿಮಾಣವನ್ನು `cost` ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಇದರ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯ 1 ಆಗಿದೆ (`help(\"svm_poly\")` ನೋಡಿ).\n", + "\n", + "ಪೋಲಿನೋಮಿಯಲ್ SVM ಮಾದರಿಯಲ್ಲಿ `degree = 1` ಅನ್ನು ಹೊಂದಿಸಿ ಲೀನಿಯರ್ SVC ಅನ್ನು ರಚಿಸೋಣ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "vJpp6nuChlBz" + }, + "source": [ + "# Make a linear SVC specification\n", + "svc_linear_spec <- svm_poly(degree = 1) %>% \n", + " set_engine(\"kernlab\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle specification and recipe into a worklow\n", + "svc_linear_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(svc_linear_spec)\n", + "\n", + "# Print out workflow\n", + "svc_linear_wf" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rDs8cWNkhoqu" + }, + "source": [ + "ಈಗ ನಾವು ಪೂರ್ವಸಿದ್ಧತೆ ಹಂತಗಳು ಮತ್ತು ಮಾದರಿ ನಿರ್ದಿಷ್ಟೀಕರಣವನ್ನು *ಕಾರ್ಯಪ್ರವಾಹ*ದಲ್ಲಿ ಸೆರೆಹಿಡಿದಿದ್ದೇವೆ, ನಾವು ಲೀನಿಯರ್ SVC ಅನ್ನು ತರಬೇತುಗೊಳಿಸಿ ಫಲಿತಾಂಶಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು. ಕಾರ್ಯಕ್ಷಮತೆ ಮೌಲ್ಯಮಾಪಕಗಳಿಗಾಗಿ, ನಾವು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವ ಮೌಲ್ಯಮಾಪಕ ಸೆಟ್ ಅನ್ನು ರಚಿಸೋಣ: `accuracy`, `sensitivity`, `Positive Predicted Value` ಮತ್ತು `F Measure`\n", + "\n", + "> `augment()` ನೀಡಲಾದ ಡೇಟಾಗೆ ಭವಿಷ್ಯವಾಣಿಗಳಿಗಾಗಿ ಕಾಲಮ್(ಗಳು) ಸೇರಿಸುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "81wiqcwuhrnq" + }, + "source": [ + "# Train a linear SVC model\n", + "svc_linear_fit <- svc_linear_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "# Create a metric set\n", + "eval_metrics <- metric_set(ppv, sens, accuracy, f_meas)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "svc_linear_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0UFQvHf-huo3" + }, + "source": [ + "#### ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ಮೆಷಿನ್\n", + "\n", + "ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ಮೆಷಿನ್ (SVM) ಕ್ಲಾಸ್‌ಗಳ ನಡುವೆ ರೇಖೀಯವಲ್ಲದ ಗಡಿಯನ್ನು ಹೊಂದಿಸಲು ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ವರ್ಗೀಕರಣಕಾರನ ವಿಸ್ತರಣೆ ಆಗಿದೆ. ಮೂಲತಃ, SVMಗಳು ವರ್ಗಗಳ ನಡುವೆ ರೇಖೀಯವಲ್ಲದ ಸಂಬಂಧಗಳಿಗೆ ಹೊಂದಿಕೊಳ್ಳಲು ವೈಶಿಷ್ಟ್ಯ ಸ್ಥಳವನ್ನು ವಿಸ್ತರಿಸಲು *ಕರ್ಣಲ್ ಟ್ರಿಕ್* ಅನ್ನು ಬಳಸುತ್ತವೆ. SVMಗಳು ಬಳಸುವ ಜನಪ್ರಿಯ ಮತ್ತು ಅತ್ಯಂತ ಲವಚಿಕ ಕರ್ಣಲ್ ಫಂಕ್ಷನ್ ಒಂದು *ರೇಡಿಯಲ್ ಬೇಸಿಸ್ ಫಂಕ್ಷನ್.* ನಮ್ಮ ಡೇಟಾದ ಮೇಲೆ ಇದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನೋಡೋಣ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-KX4S8mzhzmp" + }, + "source": [ + "set.seed(2056)\n", + "\n", + "# Make an RBF SVM specification\n", + "svm_rbf_spec <- svm_rbf() %>% \n", + " set_engine(\"kernlab\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle specification and recipe into a worklow\n", + "svm_rbf_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(svm_rbf_spec)\n", + "\n", + "\n", + "# Train an RBF model\n", + "svm_rbf_fit <- svm_rbf_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "svm_rbf_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QBFSa7WSh4HQ" + }, + "source": [ + "ಬಹಳ ಉತ್ತಮ 🤩!\n", + "\n", + "> ✅ ದಯವಿಟ್ಟು ನೋಡಿ:\n", + ">\n", + "> - [*ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ಮೆಷೀನ್ಸ್*](https://bradleyboehmke.github.io/HOML/svm.html), R ಜೊತೆಗೆ ಹ್ಯಾಂಡ್ಸ್-ಆನ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್\n", + ">\n", + "> - [*ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ಮೆಷೀನ್ಸ್*](https://www.statlearning.com/), R ನಲ್ಲಿ ಅನ್ವಯಗಳೊಂದಿಗೆ ಸಾಂಖ್ಯಿಕ ಲರ್ನಿಂಗ್ ಗೆ ಪರಿಚಯ\n", + ">\n", + "> ಮುಂದಿನ ಓದಿಗಾಗಿ.\n", + "\n", + "### ಸಮೀಪದ ನೆರೆಹೊರೆಯ ವರ್ಗೀಕರಣಗಳು\n", + "\n", + "*K*-ಸಮೀಪದ ನೆರೆಹೊರೆಯ (KNN) ಒಂದು ಆಲ್ಗಾರಿದಮ್ ಆಗಿದ್ದು, ಪ್ರತಿಯೊಂದು ಅವಲೋಕನವನ್ನು ಅದರ ಇತರ ಅವಲೋಕನಗಳ *ಸಮಾನತೆ* ಆಧಾರವಾಗಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲಾಗುತ್ತದೆ.\n", + "\n", + "ನಮ್ಮ ಡೇಟಾಗೆ ಒಂದನ್ನು ಹೊಂದಿಸೋಣ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "k4BxxBcdh9Ka" + }, + "source": [ + "# Make a KNN specification\n", + "knn_spec <- nearest_neighbor() %>% \n", + " set_engine(\"kknn\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle recipe and model specification into a workflow\n", + "knn_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(knn_spec)\n", + "\n", + "# Train a boosted tree model\n", + "knn_wf_fit <- knn_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "knn_wf_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HaegQseriAcj" + }, + "source": [ + "ಈ ಮಾದರಿ ಚೆನ್ನಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲದಂತೆ ಕಾಣುತ್ತಿದೆ. ಬಹುಶಃ ಮಾದರಿಯ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ಬದಲಾಯಿಸುವುದು (`help(\"nearest_neighbor\")` ನೋಡಿ) ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಬಹುದು. ಅದನ್ನು ಪ್ರಯತ್ನಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.\n", + "\n", + "> ✅ ದಯವಿಟ್ಟು ನೋಡಿ:\n", + ">\n", + "> - [Hands-on Machine Learning with R](https://bradleyboehmke.github.io/HOML/)\n", + ">\n", + "> - [An Introduction to Statistical Learning with Applications in R](https://www.statlearning.com/)\n", + ">\n", + "> *K*-Nearest Neighbors ವರ್ಗೀಕರಣಗಳ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿಯಲು.\n", + "\n", + "### ಎನ್ಸೆಂಬಲ್ ವರ್ಗೀಕರಣಗಳು\n", + "\n", + "ಎನ್ಸೆಂಬಲ್ ಆಲ್ಗಾರಿದಮ್ಗಳು ಬಹುಮಟ್ಟದ ಮೂಲ ಅಂದಾಜುಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಮೂಲಕ ಉತ್ತಮ ಮಾದರಿಯನ್ನು ಉತ್ಪಾದಿಸುತ್ತವೆ, ಅದು ಕೆಳಗಿನ ರೀತಿಯಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ:\n", + "\n", + "`bagging`: ಮೂಲ ಮಾದರಿಗಳ ಸಂಗ್ರಹಕ್ಕೆ *ಸರಾಸರಿ ಕಾರ್ಯ* ಅನ್ವಯಿಸುವುದು\n", + "\n", + "`boosting`: ಪರಸ್ಪರ ಆಧಾರಿತ ಮಾದರಿಗಳ ಸರಣಿಯನ್ನು ನಿರ್ಮಿಸುವುದು, ಇದು ಭವಿಷ್ಯವಾಣಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸುತ್ತದೆ.\n", + "\n", + "ನಾವು ಪ್ರಾರಂಭಿಸೋಣ Random Forest ಮಾದರಿಯನ್ನು ಪ್ರಯತ್ನಿಸುವುದರಿಂದ, ಇದು ನಿರ್ಣಯ ಮರಗಳ ದೊಡ್ಡ ಸಂಗ್ರಹವನ್ನು ನಿರ್ಮಿಸಿ ನಂತರ ಒಟ್ಟಾರೆ ಉತ್ತಮ ಮಾದರಿಗಾಗಿ ಸರಾಸರಿ ಕಾರ್ಯವನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "49DPoVs6iK1M" + }, + "source": [ + "# Make a random forest specification\n", + "rf_spec <- rand_forest() %>% \n", + " set_engine(\"ranger\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle recipe and model specification into a workflow\n", + "rf_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(rf_spec)\n", + "\n", + "# Train a random forest model\n", + "rf_wf_fit <- rf_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "rf_wf_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RGVYwC_aiUWc" + }, + "source": [ + "ಚೆನ್ನಾಗಿದೆ 👏!\n", + "\n", + "ನಾವು Boosted Tree ಮಾದರಿಯೊಂದಿಗೆ ಕೂಡ ಪ್ರಯೋಗ ಮಾಡೋಣ.\n", + "\n", + "Boosted Tree ಒಂದು ಎನ್ಸೆಂಬಲ್ ವಿಧಾನವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಇದು ಕ್ರಮವಾಗಿ ನಿರ್ಧಾರ ಮರಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ, ಪ್ರತಿಯೊಂದು ಮರವು ಹಿಂದಿನ ಮರಗಳ ಫಲಿತಾಂಶಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದ್ದು, ದೋಷವನ್ನು ಕ್ರಮೇಣ ಕಡಿಮೆ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಇದು ತಪ್ಪಾಗಿ ವರ್ಗೀಕರಿಸಲಾದ ಐಟಂಗಳ ತೂಕಗಳ ಮೇಲೆ ಗಮನಹರಿಸುತ್ತದೆ ಮತ್ತು ಮುಂದಿನ ವರ್ಗೀಕರಿಸುವವರಿಗಾಗಿ ಹೊಂದಾಣಿಕೆಯನ್ನು ಸರಿಪಡಿಸುತ್ತದೆ.\n", + "\n", + "ಈ ಮಾದರಿಯನ್ನು ಹೊಂದಿಸುವ ವಿವಿಧ ವಿಧಾನಗಳಿವೆ (`help(\"boost_tree\")` ನೋಡಿ). ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಾವು `xgboost` ಎಂಜಿನ್ ಮೂಲಕ Boosted ಮರಗಳನ್ನು ಹೊಂದಿಸುವೆವು.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Py1YWo-micWs" + }, + "source": [ + "# Make a boosted tree specification\n", + "boost_spec <- boost_tree(trees = 200) %>% \n", + " set_engine(\"xgboost\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle recipe and model specification into a workflow\n", + "boost_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(boost_spec)\n", + "\n", + "# Train a boosted tree model\n", + "boost_wf_fit <- boost_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "boost_wf_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zNQnbuejigZM" + }, + "source": [ + "> ✅ ದಯವಿಟ್ಟು ನೋಡಿ:\n", + ">\n", + "> - [ಸಾಮಾಜಿಕ ವಿಜ್ಞಾನಿಗಳಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನ](https://cimentadaj.github.io/ml_socsci/tree-based-methods.html#random-forests)\n", + ">\n", + "> - [R ಜೊತೆಗೆ ಹ್ಯಾಂಡ್ಸ್-ಆನ್ ಯಂತ್ರ ಅಧ್ಯಯನ](https://bradleyboehmke.github.io/HOML/)\n", + ">\n", + "> - [R ನಲ್ಲಿ ಅನ್ವಯಗಳೊಂದಿಗೆ ಸಾಂಖ್ಯಿಕ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ](https://www.statlearning.com/)\n", + ">\n", + "> - - xgboost ಗೆ ಉತ್ತಮ ಪರ್ಯಾಯವಾದ AdaBoost ಮಾದರಿಯನ್ನು ಅನ್ವೇಷಿಸುತ್ತದೆ.\n", + ">\n", + "> ಎನ್ಸೆಂಬಲ್ ವರ್ಗೀಕರಣಗಳ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿಯಲು.\n", + "\n", + "## 4. ಹೆಚ್ಚುವರಿ - ಬಹು ಮಾದರಿಗಳನ್ನು ಹೋಲಿಕೆ\n", + "\n", + "ನಾವು ಈ ಪ್ರಯೋಗಶಾಲೆಯಲ್ಲಿ ಸಾಕಷ್ಟು ಮಾದರಿಗಳನ್ನು ಹೊಂದಿಸಿದ್ದೇವೆ 🙌. ವಿಭಿನ್ನ ಪೂರ್ವಸಿದ್ಧತೆಗಳ ಮತ್ತು/ಅಥವಾ ಮಾದರಿ ನಿರ್ದಿಷ್ಟತೆಗಳ ಸೆಟ್‌ಗಳಿಂದ ಅನೇಕ ವರ್ಕ್‌ಫ್ಲೋಗಳನ್ನು ರಚಿಸುವುದು ಮತ್ತು ನಂತರ ಕಾರ್ಯಕ್ಷಮತೆ ಮೌಲ್ಯಗಳನ್ನು ಒಂದೊಂದಾಗಿ ಲೆಕ್ಕಹಾಕುವುದು ಕಠಿಣ ಅಥವಾ ಭಾರವಾಗಬಹುದು.\n", + "\n", + "ಪ್ರಶಿಕ್ಷಣ ಸೆಟ್‌ನಲ್ಲಿ ವರ್ಕ್‌ಫ್ಲೋಗಳ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿಸುವ ಮತ್ತು ನಂತರ ಪರೀಕ್ಷಾ ಸೆಟ್ ಆಧಾರಿತ ಕಾರ್ಯಕ್ಷಮತೆ ಮೌಲ್ಯಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವ ಫಂಕ್ಷನ್ ಅನ್ನು ರಚಿಸುವ ಮೂಲಕ ಇದನ್ನು ಪರಿಹರಿಸಬಹುದೇ ಎಂದು ನೋಡೋಣ. ನಾವು ಪಟ್ಟಿಯ ಪ್ರತಿಯೊಂದು ಅಂಶಕ್ಕೆ ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಅನ್ವಯಿಸಲು [purrr](https://purrr.tidyverse.org/) ಪ್ಯಾಕೇಜ್‌ನ `map()` ಮತ್ತು `map_dfr()` ಅನ್ನು ಬಳಸುತ್ತೇವೆ.\n", + "\n", + "> [`map()`](https://purrr.tidyverse.org/reference/map.html) ಫಂಕ್ಷನ್‌ಗಳು ಅನೇಕ for ಲೂಪ್ಗಳನ್ನು ಕಡಿಮೆ ಮತ್ತು ಓದಲು ಸುಲಭವಾಗುವ ಕೋಡ್‌ನೊಂದಿಗೆ ಬದಲಾಯಿಸಲು ಅನುಮತಿಸುತ್ತವೆ. [`map()`](https://purrr.tidyverse.org/reference/map.html) ಫಂಕ್ಷನ್‌ಗಳ ಬಗ್ಗೆ ತಿಳಿಯಲು ಅತ್ಯುತ್ತಮ ಸ್ಥಳ R for data science ನಲ್ಲಿ ಇರುವ [ಪುನರಾವೃತ್ತಿ ಅಧ್ಯಾಯ](http://r4ds.had.co.nz/iteration.html).\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Qzb7LyZnimd2" + }, + "source": [ + "set.seed(2056)\n", + "\n", + "# Create a metric set\n", + "eval_metrics <- metric_set(ppv, sens, accuracy, f_meas)\n", + "\n", + "# Define a function that returns performance metrics\n", + "compare_models <- function(workflow_list, train_set, test_set){\n", + " \n", + " suppressWarnings(\n", + " # Fit each model to the train_set\n", + " map(workflow_list, fit, data = train_set) %>% \n", + " # Make predictions on the test set\n", + " map_dfr(augment, new_data = test_set, .id = \"model\") %>%\n", + " # Select desired columns\n", + " select(model, cuisine, .pred_class) %>% \n", + " # Evaluate model performance\n", + " group_by(model) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class) %>% \n", + " ungroup()\n", + " )\n", + " \n", + "} # End of function" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Fwa712sNisDA" + }, + "source": [ + "ನಾವು ನಮ್ಮ ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆದು ಮಾದರಿಗಳ accuracy ಅನ್ನು ಹೋಲಿಸೋಣ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "3i4VJOi2iu-a" + }, + "source": [ + "# Make a list of workflows\n", + "workflow_list <- list(\n", + " \"svc\" = svc_linear_wf,\n", + " \"svm\" = svm_rbf_wf,\n", + " \"knn\" = knn_wf,\n", + " \"random_forest\" = rf_wf,\n", + " \"xgboost\" = boost_wf)\n", + "\n", + "# Call the function\n", + "set.seed(2056)\n", + "perf_metrics <- compare_models(workflow_list = workflow_list, train_set = cuisines_train, test_set = cuisines_test)\n", + "\n", + "# Print out performance metrics\n", + "perf_metrics %>% \n", + " group_by(.metric) %>% \n", + " arrange(desc(.estimate)) %>% \n", + " slice_head(n=7)\n", + "\n", + "# Compare accuracy\n", + "perf_metrics %>% \n", + " filter(.metric == \"accuracy\") %>% \n", + " arrange(desc(.estimate))\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KuWK_lEli4nW" + }, + "source": [ + "[**workflowset**](https://workflowsets.tidymodels.org/) ಪ್ಯಾಕೇಜ್ ಬಳಕೆದಾರರಿಗೆ ದೊಡ್ಡ ಸಂಖ್ಯೆಯ ಮಾದರಿಗಳನ್ನು ರಚಿಸಲು ಮತ್ತು ಸುಲಭವಾಗಿ ಹೊಂದಿಸಲು ಅನುಮತಿಸುತ್ತದೆ ಆದರೆ ಇದು ಮುಖ್ಯವಾಗಿ `cross-validation` ಎಂಬ ಪುನರಾವೃತ್ತಿ ತಂತ್ರಗಳನ್ನು ಬಳಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, ಇದು ನಾವು ಇನ್ನೂ ಆವರಿಸಬೇಕಾದ ವಿಧಾನವಾಗಿದೆ.\n", + "\n", + "## **🚀ಸವಾಲು**\n", + "\n", + "ಈ ತಂತ್ರಗಳ ಪ್ರತಿಯೊಂದಕ್ಕೂ ನೀವು ಬದಲಾಯಿಸಬಹುದಾದ ಹೆಚ್ಚಿನ ಪರಿಮಾಣಗಳಿವೆ ಉದಾಹರಣೆಗೆ SVM ಗಳಲ್ಲಿ `cost`, KNN ನಲ್ಲಿ `neighbors`, Random Forest ನಲ್ಲಿ `mtry` (ಯಾದೃಚ್ಛಿಕವಾಗಿ ಆಯ್ದ ನಿರೀಕ್ಷಕರು).\n", + "\n", + "ಪ್ರತಿಯೊಂದು ಮಾದರಿಯ ಡೀಫಾಲ್ಟ್ ಪರಿಮಾಣಗಳನ್ನು ಸಂಶೋಧಿಸಿ ಮತ್ತು ಈ ಪರಿಮಾಣಗಳನ್ನು ಬದಲಾಯಿಸುವುದರಿಂದ ಮಾದರಿಯ ಗುಣಮಟ್ಟಕ್ಕೆ ಏನು ಅರ್ಥವಾಗುತ್ತದೆ ಎಂದು ಯೋಚಿಸಿ.\n", + "\n", + "ನಿರ್ದಿಷ್ಟ ಮಾದರಿ ಮತ್ತು ಅದರ ಪರಿಮಾಣಗಳ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ಬಳಸಿ: `help(\"model\")` ಉದಾ: `help(\"rand_forest\")`\n", + "\n", + "> ಪ್ರಾಯೋಗಿಕವಾಗಿ, ನಾವು ಸಾಮಾನ್ಯವಾಗಿ ಈ ಪರಿಮಾಣಗಳ *ಉತ್ತಮ ಮೌಲ್ಯಗಳನ್ನು* ಅಂದಾಜು ಮಾಡುತ್ತೇವೆ `ನಕಲಿ ಡೇಟಾ ಸೆಟ್` ಮೇಲೆ ಅನೇಕ ಮಾದರಿಗಳನ್ನು ತರಬೇತುಗೊಳಿಸಿ ಮತ್ತು ಈ ಎಲ್ಲಾ ಮಾದರಿಗಳು ಎಷ್ಟು ಚೆನ್ನಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂದು ಅಳೆಯುವ ಮೂಲಕ. ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು **ಟ್ಯೂನಿಂಗ್** ಎಂದು ಕರೆಯುತ್ತಾರೆ.\n", + "\n", + "### [**ಪಾಠದ ನಂತರದ ಪ್ರಶ್ನೋತ್ತರ**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/24/)\n", + "\n", + "### **ಪುನರಾವಲೋಕನ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ**\n", + "\n", + "ಈ ಪಾಠಗಳಲ್ಲಿ ಬಹಳಷ್ಟು ತಾಂತ್ರಿಕ ಪದಗಳಿವೆ, ಆದ್ದರಿಂದ [ಈ ಪಟ್ಟಿ](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) ಯನ್ನು ಪರಿಶೀಲಿಸಲು ಒಂದು ನಿಮಿಷ ತೆಗೆದುಕೊಳ್ಳಿ!\n", + "\n", + "#### ಧನ್ಯವಾದಗಳು:\n", + "\n", + "[`Allison Horst`](https://twitter.com/allison_horst/) ಅವರಿಗೆ R ಅನ್ನು ಹೆಚ್ಚು ಆತಿಥ್ಯಪೂರ್ಣ ಮತ್ತು ಆಕರ್ಷಕವಾಗಿಸುವ ಅದ್ಭುತ ಚಿತ್ರಣಗಳನ್ನು ಸೃಷ್ಟಿಸಿದಕ್ಕಾಗಿ. ಅವಳ [ಗ್ಯಾಲರಿ](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM) ನಲ್ಲಿ ಇನ್ನಷ್ಟು ಚಿತ್ರಣಗಳನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ.\n", + "\n", + "[Cassie Breviu](https://www.twitter.com/cassieview) ಮತ್ತು [Jen Looper](https://www.twitter.com/jenlooper) ಅವರಿಗೆ ಈ ಮಾಯಾಜಾಲದ ಮೂಲ Python ಆವೃತ್ತಿಯನ್ನು ಸೃಷ್ಟಿಸಿದಕ್ಕಾಗಿ ♥️\n", + "\n", + "ಶುಭ ಕಲಿಕೆ,\n", + "\n", + "[Eric](https://twitter.com/ericntay), ಗೋಲ್ಡ್ ಮೈಕ್ರೋಸಾಫ್ಟ್ ಲರ್ನ್ ವಿದ್ಯಾರ್ಥಿ ರಾಯಭಾರಿ.\n", + "\n", + "

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

@allison_horst ಅವರ ಕಲಾಕೃತಿ
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/4-Classification/3-Classifiers-2/solution/notebook.ipynb b/translations/kn/4-Classification/3-Classifiers-2/solution/notebook.ipynb new file mode 100644 index 000000000..eb9fbaf25 --- /dev/null +++ b/translations/kn/4-Classification/3-Classifiers-2/solution/notebook.ipynb @@ -0,0 +1,304 @@ +{ + "cells": [ + { + "source": [ + "# ಇನ್ನಷ್ಟು ವರ್ಗೀಕರಣ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 1 + } + ], + "source": [ + "import pandas as pd\n", + "cuisines_df = pd.read_csv(\"../../data/cleaned_cuisines.csv\")\n", + "cuisines_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian\n", + "Name: cuisine, dtype: object" + ] + }, + "metadata": {}, + "execution_count": 2 + } + ], + "source": [ + "cuisines_label_df = cuisines_df['cuisine']\n", + "cuisines_label_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 3 + } + ], + "source": [ + "cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)\n", + "cuisines_feature_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ವಿಭಿನ್ನ ವರ್ಗೀಕರಿಸುವವರನ್ನು ಪ್ರಯತ್ನಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.svm import SVC\n", + "from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier\n", + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "C = 10\n", + "# Create different classifiers.\n", + "classifiers = {\n", + " 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0),\n", + " 'KNN classifier': KNeighborsClassifier(C),\n", + " 'SVC': SVC(),\n", + " 'RFST': RandomForestClassifier(n_estimators=100),\n", + " 'ADA': AdaBoostClassifier(n_estimators=100)\n", + " \n", + "}\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Accuracy (train) for Linear SVC: 76.4% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.64 0.66 0.65 242\n", + " indian 0.91 0.86 0.89 236\n", + " japanese 0.72 0.73 0.73 245\n", + " korean 0.83 0.75 0.79 234\n", + " thai 0.75 0.82 0.78 242\n", + "\n", + " accuracy 0.76 1199\n", + " macro avg 0.77 0.76 0.77 1199\n", + "weighted avg 0.77 0.76 0.77 1199\n", + "\n", + "Accuracy (train) for KNN classifier: 70.7% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.65 0.63 0.64 242\n", + " indian 0.84 0.81 0.82 236\n", + " japanese 0.60 0.81 0.69 245\n", + " korean 0.89 0.53 0.67 234\n", + " thai 0.69 0.75 0.72 242\n", + "\n", + " accuracy 0.71 1199\n", + " macro avg 0.73 0.71 0.71 1199\n", + "weighted avg 0.73 0.71 0.71 1199\n", + "\n", + "Accuracy (train) for SVC: 80.1% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.71 0.69 0.70 242\n", + " indian 0.92 0.92 0.92 236\n", + " japanese 0.77 0.78 0.77 245\n", + " korean 0.87 0.77 0.82 234\n", + " thai 0.75 0.86 0.80 242\n", + "\n", + " accuracy 0.80 1199\n", + " macro avg 0.80 0.80 0.80 1199\n", + "weighted avg 0.80 0.80 0.80 1199\n", + "\n", + "Accuracy (train) for RFST: 82.8% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.80 0.75 0.77 242\n", + " indian 0.90 0.91 0.90 236\n", + " japanese 0.82 0.78 0.80 245\n", + " korean 0.85 0.82 0.83 234\n", + " thai 0.78 0.89 0.83 242\n", + "\n", + " accuracy 0.83 1199\n", + " macro avg 0.83 0.83 0.83 1199\n", + "weighted avg 0.83 0.83 0.83 1199\n", + "\n", + "Accuracy (train) for ADA: 71.1% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.60 0.57 0.58 242\n", + " indian 0.87 0.84 0.86 236\n", + " japanese 0.71 0.60 0.65 245\n", + " korean 0.68 0.78 0.72 234\n", + " thai 0.70 0.78 0.74 242\n", + "\n", + " accuracy 0.71 1199\n", + " macro avg 0.71 0.71 0.71 1199\n", + "weighted avg 0.71 0.71 0.71 1199\n", + "\n" + ] + } + ], + "source": [ + "n_classifiers = len(classifiers)\n", + "\n", + "for index, (name, classifier) in enumerate(classifiers.items()):\n", + " classifier.fit(X_train, np.ravel(y_train))\n", + "\n", + " y_pred = classifier.predict(X_test)\n", + " accuracy = accuracy_score(y_test, y_pred)\n", + " print(\"Accuracy (train) for %s: %0.1f%% \" % (name, accuracy * 100))\n", + " print(classification_report(y_test,y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "kernelspec": { + "name": "python3", + "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" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "7ea2b714669c823a596d986ba2d5739f", + "translation_date": "2025-12-19T17:09:17+00:00", + "source_file": "4-Classification/3-Classifiers-2/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/translations/kn/4-Classification/4-Applied/README.md b/translations/kn/4-Classification/4-Applied/README.md new file mode 100644 index 000000000..451dfb13e --- /dev/null +++ b/translations/kn/4-Classification/4-Applied/README.md @@ -0,0 +1,331 @@ + +# ರುಚಿಕರ ಆಹಾರ ಶಿಫಾರಸು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಕಲಿತ ಕೆಲವು ತಂತ್ರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ವರ್ಗೀಕರಣ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸುವಿರಿ ಮತ್ತು ಈ ಸರಣಿಯಲ್ಲಿ ಬಳಸಲಾದ ರುಚಿಕರ ಆಹಾರ ಡೇಟಾಸೆಟ್‌ನೊಂದಿಗೆ. ಜೊತೆಗೆ, ನೀವು ಉಳಿಸಿದ ಮಾದರಿಯನ್ನು ಬಳಸಲು ಒಂದು ಸಣ್ಣ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು Onnx ನ ವೆಬ್ ರನ್‌ಟೈಮ್ ಅನ್ನು ಉಪಯೋಗಿಸಿ ನಿರ್ಮಿಸುವಿರಿ. + +ಯಂತ್ರ ಅಧ್ಯಯನದ ಅತ್ಯಂತ ಉಪಯುಕ್ತ ಪ್ರಾಯೋಗಿಕ ಬಳಕೆಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ ಶಿಫಾರಸು ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿರ್ಮಿಸುವುದು, ಮತ್ತು ನೀವು ಇಂದು ಆ ದಿಕ್ಕಿನಲ್ಲಿ ಮೊದಲ ಹೆಜ್ಜೆ ಇಡಬಹುದು! + +[![ಈ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪ್ರಸ್ತುತಪಡಿಸುವುದು](https://img.youtube.com/vi/17wdM9AHMfg/0.jpg)](https://youtu.be/17wdM9AHMfg "Applied ML") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋ ನೋಡಿ: ಜೆನ್ ಲೂಪರ್ ವರ್ಗೀಕೃತ ಆಹಾರ ಡೇಟಾ ಬಳಸಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸುತ್ತಿದ್ದಾರೆ + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +ಈ ಪಾಠದಲ್ಲಿ ನೀವು ಕಲಿಯುವಿರಿ: + +- ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ Onnx ಮಾದರಿಯಾಗಿ ಉಳಿಸುವುದು ಹೇಗೆ +- ಮಾದರಿಯನ್ನು ಪರಿಶೀಲಿಸಲು ನೆಟ್ರಾನ್ ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು +- ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಉಪಯೋಗಿಸಿ ನಿರ್ಣಯ ಮಾಡಲು ಹೇಗೆ + +## ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ + +ಅನ್ವಯಿತ ಯಂತ್ರ ಅಧ್ಯಯನ ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿರ್ಮಿಸುವುದು ನಿಮ್ಮ ವ್ಯವಹಾರ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಈ ತಂತ್ರಜ್ಞಾನಗಳನ್ನು ಉಪಯೋಗಿಸುವ ಪ್ರಮುಖ ಭಾಗವಾಗಿದೆ. ನೀವು Onnx ಬಳಸಿ ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಮಾದರಿಗಳನ್ನು ಬಳಸಬಹುದು (ಅಗತ್ಯವಿದ್ದರೆ ಆಫ್‌ಲೈನ್ ಸನ್ನಿವೇಶದಲ್ಲಿಯೂ). + +[ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ](../../3-Web-App/1-Web-App/README.md), ನೀವು UFO ದೃಶ್ಯಗಳ ಬಗ್ಗೆ Regression ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ, ಅದನ್ನು "pickle" ಮಾಡಿ Flask ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಬಳಸಿದ್ದಿರಿ. ಈ ವಾಸ್ತುಶಿಲ್ಪ ತಿಳಿದುಕೊಳ್ಳಲು ಬಹಳ ಉಪಯುಕ್ತವಾದರೂ, ಅದು ಪೂರ್ಣ-ಸ್ಟ್ಯಾಕ್ ಪೈಥಾನ್ ಅಪ್ಲಿಕೇಶನ್ ಆಗಿದ್ದು, ನಿಮ್ಮ ಅಗತ್ಯಗಳು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ ಬಳಕೆಯನ್ನು ಒಳಗೊಂಡಿರಬಹುದು. + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಮೂಲಭೂತ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಆಧಾರಿತ ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಣಯಕ್ಕಾಗಿ ನಿರ್ಮಿಸಬಹುದು. ಆದಾಗ್ಯೂ, ಮೊದಲು ನೀವು ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಿ Onnx ಗೆ ಪರಿವರ್ತಿಸಬೇಕು. + +## ಅಭ್ಯಾಸ - ವರ್ಗೀಕರಣ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಿ + +ಮೊದಲು, ನಾವು ಬಳಸಿದ ಸ್ವಚ್ಛಗೊಳಿಸಿದ ಆಹಾರ ಡೇಟಾಸೆಟ್ ಬಳಸಿ ವರ್ಗೀಕರಣ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಿ. + +1. ಉಪಯುಕ್ತ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದುಮಾಡಿ: + + ```python + !pip install skl2onnx + import pandas as pd + ``` + + ನಿಮ್ಮ Scikit-learn ಮಾದರಿಯನ್ನು Onnx ಫಾರ್ಮ್ಯಾಟ್‌ಗೆ ಪರಿವರ್ತಿಸಲು '[skl2onnx](https://onnx.ai/sklearn-onnx/)' ಬೇಕಾಗುತ್ತದೆ. + +1. ನಂತರ, ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಮಾಡಿದಂತೆ `read_csv()` ಬಳಸಿ CSV ಫೈಲ್ ಓದಿ ನಿಮ್ಮ ಡೇಟಾ ಮೇಲೆ ಕೆಲಸ ಮಾಡಿ: + + ```python + data = pd.read_csv('../data/cleaned_cuisines.csv') + data.head() + ``` + +1. ಮೊದಲ ಎರಡು ಅನಗತ್ಯ ಕಾಲಮ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ ಉಳಿದ ಡೇಟಾವನ್ನು 'X' ಎಂದು ಉಳಿಸಿ: + + ```python + X = data.iloc[:,2:] + X.head() + ``` + +1. ಲೇಬಲ್ಗಳನ್ನು 'y' ಎಂದು ಉಳಿಸಿ: + + ```python + y = data[['cuisine']] + y.head() + + ``` + +### ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿ + +ನಾವು ಉತ್ತಮ ನಿಖರತೆ ಹೊಂದಿರುವ 'SVC' ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸುತ್ತೇವೆ. + +1. Scikit-learn ನಿಂದ ಸೂಕ್ತ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದುಮಾಡಿ: + + ```python + from sklearn.model_selection import train_test_split + from sklearn.svm import SVC + from sklearn.model_selection import cross_val_score + from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report + ``` + +1. ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗಳನ್ನು ವಿಭಜಿಸಿ: + + ```python + X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3) + ``` + +1. ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ಮಾಡಿದಂತೆ SVC ವರ್ಗೀಕರಣ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ: + + ```python + model = SVC(kernel='linear', C=10, probability=True,random_state=0) + model.fit(X_train,y_train.values.ravel()) + ``` + +1. ಈಗ, ನಿಮ್ಮ ಮಾದರಿಯನ್ನು `predict()` ಕರೆಮಾಡಿ ಪರೀಕ್ಷಿಸಿ: + + ```python + y_pred = model.predict(X_test) + ``` + +1. ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಪರಿಶೀಲಿಸಲು ವರ್ಗೀಕರಣ ವರದಿಯನ್ನು ಮುದ್ರಿಸಿ: + + ```python + print(classification_report(y_test,y_pred)) + ``` + + ನಾವು ಹಿಂದಿನಂತೆ ನೋಡಿದಂತೆ, ನಿಖರತೆ ಉತ್ತಮವಾಗಿದೆ: + + ```output + precision recall f1-score support + + chinese 0.72 0.69 0.70 257 + indian 0.91 0.87 0.89 243 + japanese 0.79 0.77 0.78 239 + korean 0.83 0.79 0.81 236 + thai 0.72 0.84 0.78 224 + + accuracy 0.79 1199 + macro avg 0.79 0.79 0.79 1199 + weighted avg 0.79 0.79 0.79 1199 + ``` + +### ನಿಮ್ಮ ಮಾದರಿಯನ್ನು Onnx ಗೆ ಪರಿವರ್ತಿಸಿ + +ಸರಿಯಾದ ಟೆನ್ಸರ್ ಸಂಖ್ಯೆಯೊಂದಿಗೆ ಪರಿವರ್ತನೆ ಮಾಡುವುದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಈ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ 380 ಪದಾರ್ಥಗಳಿವೆ, ಆದ್ದರಿಂದ ನೀವು `FloatTensorType` ನಲ್ಲಿ ಆ ಸಂಖ್ಯೆಯನ್ನು ಸೂಚಿಸಬೇಕು: + +1. 380 ಟೆನ್ಸರ್ ಸಂಖ್ಯೆಯನ್ನು ಬಳಸಿ ಪರಿವರ್ತಿಸಿ. + + ```python + from skl2onnx import convert_sklearn + from skl2onnx.common.data_types import FloatTensorType + + initial_type = [('float_input', FloatTensorType([None, 380]))] + options = {id(model): {'nocl': True, 'zipmap': False}} + ``` + +1. onx ಅನ್ನು ರಚಿಸಿ ಮತ್ತು **model.onnx** ಫೈಲ್ ಆಗಿ ಉಳಿಸಿ: + + ```python + onx = convert_sklearn(model, initial_types=initial_type, options=options) + with open("./model.onnx", "wb") as f: + f.write(onx.SerializeToString()) + ``` + + > ಗಮನಿಸಿ, ನಿಮ್ಮ ಪರಿವರ್ತನೆ ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ನೀವು [ಆಯ್ಕೆಗಳು](https://onnx.ai/sklearn-onnx/parameterized.html) ಅನ್ನು ಪಾಸ್ ಮಾಡಬಹುದು. ಈ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು 'nocl' ಅನ್ನು True ಮತ್ತು 'zipmap' ಅನ್ನು False ಆಗಿ ಪಾಸ್ ಮಾಡಿದ್ದೇವೆ. ಇದು ವರ್ಗೀಕರಣ ಮಾದರಿ ಆದ್ದರಿಂದ ZipMap ಅನ್ನು ತೆಗೆದುಹಾಕುವ ಆಯ್ಕೆಯಿದೆ, ಇದು ಡಿಕ್ಷನರಿಗಳ ಪಟ್ಟಿಯನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ (ಅಗತ್ಯವಿಲ್ಲ). `nocl` ಎಂದರೆ ಮಾದರಿಯಲ್ಲಿ ವರ್ಗ ಮಾಹಿತಿ ಸೇರಿಸಲಾಗಿದೆ. ನಿಮ್ಮ ಮಾದರಿಯ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡಲು `nocl` ಅನ್ನು 'True' ಆಗಿ ಸೆಟ್ ಮಾಡಿ. + +ನೋಟ್‌ಬುಕ್ ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ರನ್ ಮಾಡಿದರೆ ಈಗ Onnx ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ ಈ ಫೋಲ್ಡರ್‌ಗೆ ಉಳಿಸುತ್ತದೆ. + +## ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ವೀಕ್ಷಿಸಿ + +Onnx ಮಾದರಿಗಳು Visual Studio ಕೋಡ್‌ನಲ್ಲಿ ಬಹಳ ಸ್ಪಷ್ಟವಾಗಿ ಕಾಣುವುದಿಲ್ಲ, ಆದರೆ ಬಹಳ ಉತ್ತಮ ಉಚಿತ ಸಾಫ್ಟ್‌ವೇರ್ ಇದೆ, ಅನೇಕ ಸಂಶೋಧಕರು ಮಾದರಿಯನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಬಳಸುತ್ತಾರೆ. [Netron](https://github.com/lutzroeder/Netron) ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ ನಿಮ್ಮ model.onnx ಫೈಲ್ ತೆರೆಯಿರಿ. ನೀವು ಸರಳ ಮಾದರಿಯನ್ನು, ಅದರ 380 ಇನ್‌ಪುಟ್‌ಗಳು ಮತ್ತು ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ನೋಡಬಹುದು: + +![Netron visual](../../../../translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.kn.png) + +Netron ನಿಮ್ಮ ಮಾದರಿಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಸಹಾಯಕ ಸಾಧನವಾಗಿದೆ. + +ಈಗ ನೀವು ಈ ಸುಂದರ ಮಾದರಿಯನ್ನು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಬಳಸಲು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ. ನಿಮ್ಮ ಫ್ರಿಜ್‌ನಲ್ಲಿ ಉಳಿದಿರುವ ಪದಾರ್ಥಗಳ ಸಂಯೋಜನೆಯನ್ನು ನೋಡಿ ಯಾವ ಆಹಾರವನ್ನು ನಿಮ್ಮ ಮಾದರಿ ಸೂಚಿಸುತ್ತದೆ ಎಂದು ತಿಳಿದುಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುವ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸೋಣ. + +## ಶಿಫಾರಸು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ + +ನೀವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ನೇರವಾಗಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಬಳಸಬಹುದು. ಈ ವಾಸ್ತುಶಿಲ್ಪವು ಅದನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಮತ್ತು ಅಗತ್ಯವಿದ್ದರೆ ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿ ಕೂಡ ಚಾಲನೆ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ. ನಿಮ್ಮ `model.onnx` ಫೈಲ್ ಉಳಿಸಿದ ಅದೇ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ `index.html` ಫೈಲ್ ರಚಿಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸಿ. + +1. ಈ _index.html_ ಫೈಲ್‌ನಲ್ಲಿ ಕೆಳಗಿನ ಮಾರ್ಕ್‌ಅಪ್ ಸೇರಿಸಿ: + + ```html + + +
+ Cuisine Matcher +
+ + ... + + + ``` + +1. ಈಗ, `body` ಟ್ಯಾಗ್‌ಗಳ ಒಳಗೆ, ಕೆಲವು ಪದಾರ್ಥಗಳನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ ಚೆಕ್‌ಬಾಕ್ಸ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ತೋರಿಸಲು ಸ್ವಲ್ಪ ಮಾರ್ಕ್‌ಅಪ್ ಸೇರಿಸಿ: + + ```html +

Check your refrigerator. What can you create?

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ +
+ ``` + + ಪ್ರತಿ ಚೆಕ್‌ಬಾಕ್ಸ್‌ಗೆ ಒಂದು ಮೌಲ್ಯ ನೀಡಲಾಗಿದೆ. ಇದು ಡೇಟಾಸೆಟ್ ಪ್ರಕಾರ ಪದಾರ್ಥವು ಕಂಡುಬರುವ ಸೂಚ್ಯಂಕವನ್ನು ಪ್ರತಿಬಿಂಬಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಆಪಲ್ ಈ ಅಕ್ಷರಮಾಲೆಯ ಪಟ್ಟಿಯಲ್ಲಿ ಐದನೇ ಕಾಲಮ್‌ನಲ್ಲಿ ಇದೆ, ಆದ್ದರಿಂದ ಅದರ ಮೌಲ್ಯ '4' ಆಗಿದೆ ಏಕೆಂದರೆ ನಾವು 0 ರಿಂದ ಎಣಿಕೆ ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ. ನೀವು [ಪದಾರ್ಥಗಳ ಸ್ಪ್ರೆಡ್ಶೀಟ್](../../../../4-Classification/data/ingredient_indexes.csv) ಅನ್ನು ಪರಿಶೀಲಿಸಿ ಯಾವುದೇ ಪದಾರ್ಥದ ಸೂಚ್ಯಂಕವನ್ನು ಕಂಡುಹಿಡಿಯಬಹುದು. + + index.html ಫೈಲ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಕೆಲಸವನ್ನು ಮುಂದುವರೆಸಿ, ಕೊನೆಯ `` ನಂತರ ಮಾದರಿಯನ್ನು ಕರೆಮಾಡುವ ಸ್ಕ್ರಿಪ್ಟ್ ಬ್ಲಾಕ್ ಸೇರಿಸಿ. + +1. ಮೊದಲು, [Onnx Runtime](https://www.onnxruntime.ai/) ಅನ್ನು ಆಮದುಮಾಡಿ: + + ```html + + ``` + + > Onnx Runtime ಅನ್ನು ನಿಮ್ಮ Onnx ಮಾದರಿಗಳನ್ನು ವಿವಿಧ ಹಾರ್ಡ್‌ವೇರ್ ವೇದಿಕೆಗಳಲ್ಲಿ ಚಾಲನೆ ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ, ಇದರಲ್ಲಿ ಆಪ್ಟಿಮೈಜೆಷನ್‌ಗಳು ಮತ್ತು API ಸಹ ಇದೆ. + +1. ರನ್‌ಟೈಮ್ ಸಿದ್ಧವಾದ ಮೇಲೆ, ನೀವು ಅದನ್ನು ಕರೆಮಾಡಬಹುದು: + + ```html + + ``` + +ಈ ಕೋಡ್‌ನಲ್ಲಿ ಹಲವಾರು ಕಾರ್ಯಗಳು ನಡೆಯುತ್ತವೆ: + +1. 380 ಸಾಧ್ಯ ಮೌಲ್ಯಗಳ (1 ಅಥವಾ 0) ಅರೆ ರಚಿಸಲಾಗಿದೆ, ಇದು ಮಾದರಿಗಾಗಿ ನಿರ್ಣಯಕ್ಕೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ, ಪದಾರ್ಥ ಚೆಕ್‌ಬಾಕ್ಸ್ ಪರಿಶೀಲಿತವೋ ಇಲ್ಲವೋ ಅವಲಂಬಿಸಿ. +2. ಚೆಕ್‌ಬಾಕ್ಸ್‌ಗಳ ಅರೆ ಮತ್ತು ಅವು ಪರಿಶೀಲಿತವೋ ಇಲ್ಲವೋ ತಿಳಿಯಲು `init` ಫಂಕ್ಷನ್ ರಚಿಸಲಾಗಿದೆ, ಇದು ಅಪ್ಲಿಕೇಶನ್ ಪ್ರಾರಂಭವಾದಾಗ ಕರೆಮಾಡಲಾಗುತ್ತದೆ. ಚೆಕ್‌ಬಾಕ್ಸ್ ಪರಿಶೀಲಿತವಾಗಿದ್ದರೆ, `ingredients` ಅರೆ ಆಯ್ಕೆಮಾಡಿದ ಪದಾರ್ಥವನ್ನು ಪ್ರತಿಬಿಂಬಿಸುತ್ತದೆ. +3. `testCheckboxes` ಫಂಕ್ಷನ್ ರಚಿಸಲಾಗಿದೆ, ಇದು ಯಾವುದೇ ಚೆಕ್‌ಬಾಕ್ಸ್ ಪರಿಶೀಲಿತವೋ ಇಲ್ಲವೋ ಪರಿಶೀಲಿಸುತ್ತದೆ. +4. ಬಟನ್ ಒತ್ತಿದಾಗ `startInference` ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಮತ್ತು ಯಾವುದೇ ಚೆಕ್‌ಬಾಕ್ಸ್ ಪರಿಶೀಲಿತವಿದ್ದರೆ ನಿರ್ಣಯ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. +5. ನಿರ್ಣಯ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ: + 1. ಮಾದರಿಯನ್ನು ಅಸಿಂಕ್ರೋನಸ್ ಲೋಡ್ ಮಾಡುವುದು + 2. ಮಾದರಿಗೆ ಕಳುಹಿಸಲು ಟೆನ್ಸರ್ ರಚಿಸುವುದು + 3. ನೀವು ತರಬೇತುಗೊಂಡಾಗ ರಚಿಸಿದ `float_input` ಇನ್‌ಪುಟ್ ಅನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ 'ಫೀಡ್ಸ್' ರಚಿಸುವುದು (ನೀವು ನೆಟ್ರಾನ್ ಬಳಸಿ ಆ ಹೆಸರು ಪರಿಶೀಲಿಸಬಹುದು) + 4. ಈ 'ಫೀಡ್ಸ್' ಅನ್ನು ಮಾದರಿಗೆ ಕಳುಹಿಸಿ ಪ್ರತಿಕ್ರಿಯೆಗಾಗಿ ಕಾಯುವುದು + +## ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಪರೀಕ್ಷಿಸಿ + +Visual Studio Code ನಲ್ಲಿ ನಿಮ್ಮ index.html ಫೈಲ್ ಇರುವ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಟರ್ಮಿನಲ್ ಸೆಷನ್ ತೆರೆಯಿರಿ. ನೀವು [http-server](https://www.npmjs.com/package/http-server) ಅನ್ನು ಜಾಗತಿಕವಾಗಿ ಸ್ಥಾಪಿಸಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿ, ಮತ್ತು ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿ `http-server` ಟೈಪ್ ಮಾಡಿ. ಒಂದು ಲೋಕಲ್‌ಹೋಸ್ಟ್ ತೆರೆಯುತ್ತದೆ ಮತ್ತು ನೀವು ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನೋಡಬಹುದು. ವಿವಿಧ ಪದಾರ್ಥಗಳ ಆಧಾರದ ಮೇಲೆ ಯಾವ ಆಹಾರ ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ ಎಂದು ಪರಿಶೀಲಿಸಿ: + +![ingredient web app](../../../../translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.kn.png) + +ಅಭಿನಂದನೆಗಳು, ನೀವು ಕೆಲವು ಕ್ಷೇತ್ರಗಳೊಂದಿಗೆ 'ಶಿಫಾರಸು' ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ. ಈ ವ್ಯವಸ್ಥೆಯನ್ನು ವಿಸ್ತರಿಸಲು ಸ್ವಲ್ಪ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಿ! + +## 🚀ಸವಾಲು + +ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಬಹಳ ಸಣ್ಣದಾಗಿದೆ, ಆದ್ದರಿಂದ [ingredient_indexes](../../../../4-Classification/data/ingredient_indexes.csv) ಡೇಟಾದಿಂದ ಪದಾರ್ಥಗಳು ಮತ್ತು ಅವುಗಳ ಸೂಚ್ಯಂಕಗಳನ್ನು ಬಳಸಿ ಅದನ್ನು ವಿಸ್ತರಿಸಿ. ಯಾವ ರುಚಿ ಸಂಯೋಜನೆಗಳು ನಿರ್ದಿಷ್ಟ ರಾಷ್ಟ್ರೀಯ ಆಹಾರವನ್ನು ಸೃಷ್ಟಿಸಲು ಕೆಲಸ ಮಾಡುತ್ತವೆ? + +## [ಪೋಸ್ಟ್-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಈ ಪಾಠವು ಆಹಾರ ಪದಾರ್ಥಗಳಿಗಾಗಿ ಶಿಫಾರಸು ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಮಿಸುವ ಉಪಯುಕ್ತತೆಯನ್ನು ಸ್ಪರ್ಶಿಸಿದರೂ, ಯಂತ್ರ ಅಧ್ಯಯನ ಅನ್ವಯಿಕೆಗಳಲ್ಲಿ ಈ ಕ್ಷೇತ್ರವು ಉದಾಹರಣೆಗಳಿಂದ ತುಂಬಿದೆ. ಈ ವ್ಯವಸ್ಥೆಗಳು ಹೇಗೆ ನಿರ್ಮಿಸಲಾಗುತ್ತವೆ ಎಂಬುದರ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ಓದಿ: + +- https://www.sciencedirect.com/topics/computer-science/recommendation-engine +- https://www.technologyreview.com/2014/08/25/171547/the-ultimate-challenge-for-recommendation-engines/ +- https://www.technologyreview.com/2015/03/23/168831/everything-is-a-recommendation/ + +## ನಿಯೋಜನೆ + +[ಹೊಸ ಶಿಫಾರಸುಕಾರರನ್ನು ನಿರ್ಮಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/4-Classification/4-Applied/assignment.md b/translations/kn/4-Classification/4-Applied/assignment.md new file mode 100644 index 000000000..1fc57d857 --- /dev/null +++ b/translations/kn/4-Classification/4-Applied/assignment.md @@ -0,0 +1,27 @@ + +# ಶಿಫಾರಸುಕಾರರನ್ನು ನಿರ್ಮಿಸಿ + +## ಸೂಚನೆಗಳು + +ಈ ಪಾಠದಲ್ಲಿ ನಿಮ್ಮ ವ್ಯಾಯಾಮಗಳನ್ನು ನೀಡಿದಂತೆ, ನೀವು ಈಗ Onnx Runtime ಮತ್ತು ಪರಿವರ್ತಿತ Onnx ಮಾದರಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಆಧಾರಿತ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೇಗೆ ನಿರ್ಮಿಸುವುದು ಎಂದು ತಿಳಿದಿದ್ದೀರಿ. ಈ ಪಾಠಗಳಿಂದ ಅಥವಾ ಬೇರೆಡೆಗಳಿಂದ ಪಡೆದ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು ಹೊಸ ಶಿಫಾರಸುಕಾರರನ್ನು ನಿರ್ಮಿಸುವ ಪ್ರಯೋಗ ಮಾಡಿ (ದಯವಿಟ್ಟು ಕ್ರೆಡಿಟ್ ನೀಡಿ). ನೀವು ವಿವಿಧ ವ್ಯಕ್ತಿತ್ವ ಲಕ್ಷಣಗಳನ್ನು ಆಧರಿಸಿ ಪೆಟ್ ಶಿಫಾರಸುಕಾರರನ್ನು ಅಥವಾ ವ್ಯಕ್ತಿಯ ಮನೋಭಾವವನ್ನು ಆಧರಿಸಿ ಸಂಗೀತ ಶೈಲಿ ಶಿಫಾರಸುಕಾರರನ್ನು ರಚಿಸಬಹುದು. ಸೃಜನಶೀಲವಾಗಿರಿ! + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | ---------------------------------------------------------------------- | ------------------------------------- | --------------------------------- | +| | ಒಂದು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಮತ್ತು ನೋಟ್‌ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ, ಎರಡೂ ಚೆನ್ನಾಗಿ ದಾಖಲೆ ಮಾಡಲ್ಪಟ್ಟಿದ್ದು ಮತ್ತು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿವೆ | ಅವುಗಳಲ್ಲಿ ಒಂದೇ ಇಲ್ಲ ಅಥವಾ ದೋಷಪೂರಿತವಾಗಿದೆ | ಎರಡೂ ಇಲ್ಲ ಅಥವಾ ದೋಷಪೂರಿತವಾಗಿವೆ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/4-Classification/4-Applied/notebook.ipynb b/translations/kn/4-Classification/4-Applied/notebook.ipynb new file mode 100644 index 000000000..91ca1bac8 --- /dev/null +++ b/translations/kn/4-Classification/4-Applied/notebook.ipynb @@ -0,0 +1,41 @@ +{ + "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": "2f3e0d9e9ac5c301558fb8bf733ac0cb", + "translation_date": "2025-12-19T17:03:11+00:00", + "source_file": "4-Classification/4-Applied/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ಆಹಾರ ಶಿಫಾರಸು ಮಾಡುವ ವ್ಯವಸ್ಥೆ ನಿರ್ಮಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/4-Classification/4-Applied/solution/notebook.ipynb b/translations/kn/4-Classification/4-Applied/solution/notebook.ipynb new file mode 100644 index 000000000..88ea046b3 --- /dev/null +++ b/translations/kn/4-Classification/4-Applied/solution/notebook.ipynb @@ -0,0 +1,292 @@ +{ + "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')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "49325d6dd12a3628fc64fa7ccb1a80ff", + "translation_date": "2025-12-19T17:18:05+00:00", + "source_file": "4-Classification/4-Applied/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ಆಹಾರ ಶಿಫಾರಸು ಮಾಡುವ ವ್ಯವಸ್ಥೆ ನಿರ್ಮಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: skl2onnx in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (1.8.0)\n", + "Requirement already satisfied: protobuf in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (3.8.0)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.19.2)\n", + "Requirement already satisfied: onnx>=1.2.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.9.0)\n", + "Requirement already satisfied: six in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from skl2onnx) (1.12.0)\n", + "Requirement already satisfied: onnxconverter-common<1.9,>=1.6.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.8.1)\n", + "Requirement already satisfied: scikit-learn>=0.19 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (0.24.2)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.4.1)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from protobuf->skl2onnx) (45.1.0)\n", + "Requirement already satisfied: typing-extensions>=3.6.2.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from onnx>=1.2.1->skl2onnx) (3.10.0.0)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from scikit-learn>=0.19->skl2onnx) (2.1.0)\n", + "Requirement already satisfied: joblib>=0.11 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from scikit-learn>=0.19->skl2onnx) (0.16.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "!pip install skl2onnx" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd \n" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 60 + } + ], + "source": [ + "data = pd.read_csv('../../data/cleaned_cuisines.csv')\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 61 + } + ], + "source": [ + "X = data.iloc[:,2:]\n", + "X.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " cuisine\n", + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
cuisine
0indian
1indian
2indian
3indian
4indian
\n
" + }, + "metadata": {}, + "execution_count": 62 + } + ], + "source": [ + "y = data[['cuisine']]\n", + "y.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.svm import SVC\n", + "from sklearn.model_selection import cross_val_score\n", + "from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "SVC(C=10, kernel='linear', probability=True, random_state=0)" + ] + }, + "metadata": {}, + "execution_count": 65 + } + ], + "source": [ + "model = SVC(kernel='linear', C=10, probability=True,random_state=0)\n", + "model.fit(X_train,y_train.values.ravel())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "y_pred = model.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n\n chinese 0.72 0.70 0.71 236\n indian 0.91 0.88 0.89 243\n japanese 0.80 0.75 0.77 240\n korean 0.80 0.81 0.81 230\n thai 0.76 0.85 0.80 250\n\n accuracy 0.80 1199\n macro avg 0.80 0.80 0.80 1199\nweighted avg 0.80 0.80 0.80 1199\n\n" + ] + } + ], + "source": [ + "print(classification_report(y_test,y_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "from skl2onnx import convert_sklearn\n", + "from skl2onnx.common.data_types import FloatTensorType\n", + "\n", + "initial_type = [('float_input', FloatTensorType([None, 380]))]\n", + "options = {id(model): {'nocl': True, 'zipmap': False}}\n", + "onx = convert_sklearn(model, initial_types=initial_type, options=options)\n", + "with open(\"./model.onnx\", \"wb\") as f:\n", + " f.write(onx.SerializeToString())\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/4-Classification/README.md b/translations/kn/4-Classification/README.md new file mode 100644 index 000000000..1315767c7 --- /dev/null +++ b/translations/kn/4-Classification/README.md @@ -0,0 +1,43 @@ + +# ವರ್ಗೀಕರಣದೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸುವುದು + +## ಪ್ರಾದೇಶಿಕ ವಿಷಯ: ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು 🍜 + +ಏಷ್ಯಾ ಮತ್ತು ಭಾರತದಲ್ಲಿ, ಆಹಾರ ಪರಂಪರೆಗಳು ಅತ್ಯಂತ ವೈವಿಧ್ಯಮಯವಾಗಿವೆ ಮತ್ತು ತುಂಬಾ ರುಚಿಕರವಾಗಿವೆ! ಅವರ ಪದಾರ್ಥಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಪ್ರಾದೇಶಿಕ ಆಹಾರಗಳ ಬಗ್ಗೆ ಡೇಟಾವನ್ನು ನೋಡೋಣ. + +![ಥಾಯ್ ಆಹಾರ ಮಾರಾಟಗಾರ](../../../translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.kn.jpg) +> ಫೋಟೋ ಲಿಶೆಂಗ್ ಚಾಂಗ್ ಅವರಿಂದ ಅನ್ಸ್ಪ್ಲ್ಯಾಶ್ ನಲ್ಲಿ + +## ನೀವು ಏನು ಕಲಿಯುತ್ತೀರಿ + +ಈ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ನಿಮ್ಮ ಹಿಂದಿನ ರಿಗ್ರೆಶನ್ ಅಧ್ಯಯನದ ಮೇಲೆ ನಿರ್ಮಿಸಿ, ಡೇಟಾವನ್ನು ಉತ್ತಮವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಬಳಸಬಹುದಾದ ಇತರ ವರ್ಗೀಕರಣಗಳನ್ನು ತಿಳಿಯುತ್ತೀರಿ. + +> ವರ್ಗೀಕರಣ ಮಾದರಿಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದನ್ನು ಕಲಿಯಲು ಸಹಾಯ ಮಾಡುವ ಉಪಯುಕ್ತ ಕಡಿಮೆ-ಕೋಡ್ ಸಾಧನಗಳಿವೆ. ಈ ಕಾರ್ಯಕ್ಕಾಗಿ [Azure ML ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ](https://docs.microsoft.com/learn/modules/create-classification-model-azure-machine-learning-designer/?WT.mc_id=academic-77952-leestott) + +## ಪಾಠಗಳು + +1. [ವರ್ಗೀಕರಣಕ್ಕೆ ಪರಿಚಯ](1-Introduction/README.md) +2. [ಹೆಚ್ಚಿನ ವರ್ಗೀಕರಣಗಳು](2-Classifiers-1/README.md) +3. [ಇನ್ನಷ್ಟು ವರ್ಗೀಕರಣಗಳು](3-Classifiers-2/README.md) +4. [ಅನ್ವಯಿಸಿದ ಎಂಎಲ್: ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ](4-Applied/README.md) + +## ಕ್ರೆಡಿಟ್ಸ್ + +"ವರ್ಗೀಕರಣದೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸುವುದು" ಅನ್ನು ♥️ ಸಹಿತ [ಕ್ಯಾಸಿ ಬ್ರೇವಿಯು](https://www.twitter.com/cassiebreviu) ಮತ್ತು [ಜೆನ್ ಲೂಪರ್](https://www.twitter.com/jenlooper) ರವರು ಬರೆಯಲಾಗಿದೆ + +ರುಚಿಕರ ಆಹಾರಗಳ ಡೇಟಾಸೆಟ್ ಅನ್ನು [ಕಾಗಲ್](https://www.kaggle.com/hoandan/asian-and-indian-cuisines) ನಿಂದ ಪಡೆದಿದೆ. + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/5-Clustering/1-Visualize/README.md b/translations/kn/5-Clustering/1-Visualize/README.md new file mode 100644 index 000000000..226f07474 --- /dev/null +++ b/translations/kn/5-Clustering/1-Visualize/README.md @@ -0,0 +1,349 @@ + +# ಕ್ಲಸ್ಟರಿಂಗ್ ಪರಿಚಯ + +ಕ್ಲಸ್ಟರಿಂಗ್ ಒಂದು ರೀತಿಯ [ಅನಿಯಂತ್ರಿತ ಕಲಿಕೆ](https://wikipedia.org/wiki/Unsupervised_learning) ಆಗಿದ್ದು, ಅದು ಡೇಟಾಸೆಟ್ ಲೇಬಲ್ ಮಾಡದಿರುವುದು ಅಥವಾ ಅದರ ಇನ್‌ಪುಟ್‌ಗಳು ಪೂರ್ವನಿರ್ಧರಿತ ಔಟ್‌ಪುಟ್‌ಗಳೊಂದಿಗೆ ಹೊಂದಾಣಿಕೆ ಮಾಡದಿರುವುದಾಗಿ ಊಹಿಸುತ್ತದೆ. ಇದು ಲೇಬಲ್ ಮಾಡದ ಡೇಟಾದ ಮೂಲಕ ವಿವಿಧ ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾದಲ್ಲಿನ ಮಾದರಿಗಳನ್ನು ಗುರುತಿಸಿ ಗುಂಪುಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. + +[![No One Like You by PSquare](https://img.youtube.com/vi/ty2advRiWJM/0.jpg)](https://youtu.be/ty2advRiWJM "No One Like You by PSquare") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋವನ್ನು ನೋಡಿ. ನೀವು ಕ್ಲಸ್ಟರಿಂಗ್‌ನೊಂದಿಗೆ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಅಧ್ಯಯನ ಮಾಡುತ್ತಿರುವಾಗ, ಕೆಲವು ನೈಜೀರಿಯನ್ ಡ್ಯಾನ್ಸ್ ಹಾಲ್ ಟ್ರ್ಯಾಕ್‌ಗಳನ್ನು ಆನಂದಿಸಿ - ಇದು 2014 ರಲ್ಲಿ PSquare ಅವರಿಂದ ಅತ್ಯಂತ ಶ್ರೇಯಾಂಕಿತ ಹಾಡಾಗಿದೆ. + +## [ಪೂರ್ವ-ಲೇಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +### ಪರಿಚಯ + +[ಕ್ಲಸ್ಟರಿಂಗ್](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) ಡೇಟಾ ಅನ್ವೇಷಣೆಗೆ ಬಹಳ ಉಪಯುಕ್ತವಾಗಿದೆ. ನೈಜೀರಿಯನ್ ಪ್ರೇಕ್ಷಕರು ಸಂಗೀತವನ್ನು ಹೇಗೆ ಉಪಯೋಗಿಸುತ್ತಾರೆ ಎಂಬುದರಲ್ಲಿ ಟ್ರೆಂಡ್ಸ್ ಮತ್ತು ಮಾದರಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಇದು ಸಹಾಯ ಮಾಡಬಹುದೇ ಎಂದು ನೋಡೋಣ. + +✅ ಕ್ಲಸ್ಟರಿಂಗ್‌ನ ಉಪಯೋಗಗಳನ್ನು ಒಂದು ನಿಮಿಷ ಯೋಚಿಸಿ. ನಿಜ ಜೀವನದಲ್ಲಿ, ನೀವು ಬಟ್ಟೆಗಳನ್ನು ಗುಂಪುಮಾಡಬೇಕಾದಾಗ ಕ್ಲಸ್ಟರಿಂಗ್ ಆಗುತ್ತದೆ 🧦👕👖🩲. ಡೇಟಾ ಸೈನ್ಸ್‌ನಲ್ಲಿ, ಬಳಕೆದಾರರ ಇಚ್ಛೆಗಳ ವಿಶ್ಲೇಷಣೆ ಮಾಡಲು ಅಥವಾ ಯಾವುದೇ ಲೇಬಲ್ ಮಾಡದ ಡೇಟಾಸೆಟ್‌ನ ಲಕ್ಷಣಗಳನ್ನು ನಿರ್ಧರಿಸಲು ಕ್ಲಸ್ಟರಿಂಗ್ ಆಗುತ್ತದೆ. ಕ್ಲಸ್ಟರಿಂಗ್, ಒಂದು ರೀತಿಯಲ್ಲಿ, ಗೊಂದಲವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಹೀಗಾಗಿ ಅದು ಒಂದು ಸಾಕ್ ಡ್ರಾಯರ್‌ನಂತೆ. + +[![Introduction to ML](https://img.youtube.com/vi/esmzYhuFnds/0.jpg)](https://youtu.be/esmzYhuFnds "Introduction to Clustering") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋವನ್ನು ನೋಡಿ: MIT ನ John Guttag ಕ್ಲಸ್ಟರಿಂಗ್ ಪರಿಚಯಿಸುತ್ತಾರೆ + +ವೃತ್ತಿಪರ ಪರಿಸರದಲ್ಲಿ, ಕ್ಲಸ್ಟರಿಂಗ್ ಅನ್ನು ಮಾರುಕಟ್ಟೆ ವಿಭಾಗೀಕರಣ, ಯಾವ ವಯಸ್ಸಿನ ಗುಂಪು ಯಾವ ವಸ್ತುಗಳನ್ನು ಖರೀದಿಸುತ್ತಾರೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ಬಳಸಬಹುದು. ಮತ್ತೊಂದು ಉಪಯೋಗವು ಅನಾಮಲಿಯ ಪತ್ತೆ, ಉದಾಹರಣೆಗೆ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ವ್ಯವಹಾರಗಳ ಡೇಟಾಸೆಟ್‌ನಿಂದ ಮೋಸವನ್ನು ಪತ್ತೆಹಚ್ಚಲು. ಅಥವಾ ವೈದ್ಯಕೀಯ ಸ್ಕ್ಯಾನ್‌ಗಳ ಬ್ಯಾಚ್‌ನಲ್ಲಿ ಟ್ಯೂಮರ್‌ಗಳನ್ನು ಗುರುತಿಸಲು ಕ್ಲಸ್ಟರಿಂಗ್ ಬಳಸಬಹುದು. + +✅ ಬ್ಯಾಂಕಿಂಗ್, ಇ-ಕಾಮರ್ಸ್ ಅಥವಾ ವ್ಯವಹಾರ ಪರಿಸರದಲ್ಲಿ ನೀವು ಕ್ಲಸ್ಟರಿಂಗ್ ಅನ್ನು 'ವೈಲ್ಡ್' ನಲ್ಲಿ ಹೇಗೆ ಎದುರಿಸಿದ್ದೀರೋ ಎಂದು ಒಂದು ನಿಮಿಷ ಯೋಚಿಸಿ. + +> 🎓 ಆಸಕ್ತಿದಾಯಕವಾಗಿ, ಕ್ಲಸ್ಟರ್ ವಿಶ್ಲೇಷಣೆ 1930ರ ದಶಕದಲ್ಲಿ ಮಾನವಶಾಸ್ತ್ರ ಮತ್ತು ಮನೋವಿಜ್ಞಾನ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಹುಟ್ಟಿಕೊಂಡಿತು. ನೀವು ಅದನ್ನು ಹೇಗೆ ಬಳಸಲಾಗುತ್ತಿತ್ತು ಎಂದು ಊಹಿಸಬಹುದೇ? + +ಬದಲಿ, ನೀವು ಶಾಪಿಂಗ್ ಲಿಂಕ್‌ಗಳು, ಚಿತ್ರಗಳು ಅಥವಾ ವಿಮರ್ಶೆಗಳ ಮೂಲಕ ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳನ್ನು ಗುಂಪುಮಾಡಲು ಇದನ್ನು ಬಳಸಬಹುದು. ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಮತ್ತು ಅದರಲ್ಲಿ ಹೆಚ್ಚು ಸೂಕ್ಷ್ಮ ವಿಶ್ಲೇಷಣೆ ಮಾಡಲು ಕ್ಲಸ್ಟರಿಂಗ್ ಉಪಯುಕ್ತವಾಗಿದೆ, ಆದ್ದರಿಂದ ಈ ತಂತ್ರವನ್ನು ಇತರ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವ ಮೊದಲು ಡೇಟಾ ಬಗ್ಗೆ ತಿಳಿಯಲು ಬಳಸಬಹುದು. + +✅ ನಿಮ್ಮ ಡೇಟಾ ಕ್ಲಸ್ಟರ್‌ಗಳಲ್ಲಿ ಸಂಘಟಿತವಾದ ನಂತರ, ನೀವು ಅದಕ್ಕೆ ಕ್ಲಸ್ಟರ್ ಐಡಿ ನೀಡುತ್ತೀರಿ, ಮತ್ತು ಈ ತಂತ್ರವು ಡೇಟಾಸೆಟ್‌ನ ಗೌಪ್ಯತೆಯನ್ನು ಕಾಪಾಡಲು ಸಹಾಯ ಮಾಡಬಹುದು; ನೀವು ಡೇಟಾ ಪಾಯಿಂಟ್ ಅನ್ನು ಹೆಚ್ಚು ಬಹಿರಂಗಪಡಿಸುವ ಗುರುತಿಸುವ ಡೇಟಾ ಬದಲು ಅದರ ಕ್ಲಸ್ಟರ್ ಐಡಿ ಮೂಲಕ ಸೂಚಿಸಬಹುದು. ನೀವು ಇನ್ನಾವುದೇ ಕಾರಣಗಳನ್ನು ಯೋಚಿಸಬಹುದೇ, ಏಕೆ ನೀವು ಕ್ಲಸ್ಟರ್ ಐಡಿಯನ್ನು ಬಳಸುತ್ತೀರಿ? + +ಕ್ಲಸ್ಟರಿಂಗ್ ತಂತ್ರಗಳನ್ನು ಈ [ಕಲಿಕೆ ಘಟಕದಲ್ಲಿ](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott) ಆಳವಾಗಿ ತಿಳಿದುಕೊಳ್ಳಿ + +## ಕ್ಲಸ್ಟರಿಂಗ್ ಪ್ರಾರಂಭಿಸುವುದು + +[Scikit-learn ದೊಡ್ಡ ಪ್ರಮಾಣದಲ್ಲಿ](https://scikit-learn.org/stable/modules/clustering.html) ಕ್ಲಸ್ಟರಿಂಗ್ ಮಾಡಲು ವಿಧಾನಗಳನ್ನು ನೀಡುತ್ತದೆ. ನೀವು ಆಯ್ಕೆಮಾಡುವ ಪ್ರಕಾರ ನಿಮ್ಮ ಬಳಕೆಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ. ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಪ್ರಕಾರ, ಪ್ರತಿ ವಿಧಾನಕ್ಕೆ ವಿವಿಧ ಲಾಭಗಳಿವೆ. ಇಲ್ಲಿ Scikit-learn ಬೆಂಬಲಿಸುವ ವಿಧಾನಗಳ ಸರಳ ಪಟ್ಟಿಯಿದೆ ಮತ್ತು ಅವುಗಳ ಸೂಕ್ತ ಬಳಕೆ ಪ್ರಕರಣಗಳು: + +| ವಿಧಾನದ ಹೆಸರು | ಬಳಕೆ ಪ್ರಕರಣ | +| :--------------------------- | :--------------------------------------------------------------------- | +| K-Means | ಸಾಮಾನ್ಯ ಉದ್ದೇಶ, ಸೂಚಕ | +| Affinity propagation | ಅನೇಕ, ಅಸಮಾನ ಕ್ಲಸ್ಟರ್‌ಗಳು, ಸೂಚಕ | +| Mean-shift | ಅನೇಕ, ಅಸಮಾನ ಕ್ಲಸ್ಟರ್‌ಗಳು, ಸೂಚಕ | +| Spectral clustering | ಕಡಿಮೆ, ಸಮಾನ ಕ್ಲಸ್ಟರ್‌ಗಳು, ಪರಿವಹನಾತ್ಮಕ | +| Ward hierarchical clustering | ಅನೇಕ, ನಿರ್ಬಂಧಿತ ಕ್ಲಸ್ಟರ್‌ಗಳು, ಪರಿವಹನಾತ್ಮಕ | +| Agglomerative clustering | ಅನೇಕ, ನಿರ್ಬಂಧಿತ, ನಾನ್ ಯೂಕ್ಲಿಡಿಯನ್ ದೂರಗಳು, ಪರಿವಹನಾತ್ಮಕ | +| DBSCAN | ನಾನ್-ಫ್ಲಾಟ್ ಜ್ಯಾಮಿತಿ, ಅಸಮಾನ ಕ್ಲಸ್ಟರ್‌ಗಳು, ಪರಿವಹನಾತ್ಮಕ | +| OPTICS | ನಾನ್-ಫ್ಲಾಟ್ ಜ್ಯಾಮಿತಿ, ಬದಲಾಗುವ ಸಾಂದ್ರತೆಯೊಂದಿಗೆ ಅಸಮಾನ ಕ್ಲಸ್ಟರ್‌ಗಳು, ಪರಿವಹನಾತ್ಮಕ | +| Gaussian mixtures | ಫ್ಲಾಟ್ ಜ್ಯಾಮಿತಿ, ಸೂಚಕ | +| BIRCH | ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ ಮತ್ತು ಔಟ್‌ಲೈಯರ್‌ಗಳು, ಸೂಚಕ | + +> 🎓 ನಾವು ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಹೇಗೆ ರಚಿಸುತ್ತೇವೆ ಎಂಬುದು ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಗುಂಪುಗಳಲ್ಲಿ ಹೇಗೆ ಸಂಗ್ರಹಿಸುತ್ತೇವೆ ಎಂಬುದರ ಮೇಲೆ ಬಹಳ ಅವಲಂಬಿತವಾಗಿದೆ. ಕೆಲವು ಪದಗಳನ್ನು ವಿವರಿಸೋಣ: +> +> 🎓 ['ಪರಿವಹನಾತ್ಮಕ' ಮತ್ತು 'ಸೂಚಕ'](https://wikipedia.org/wiki/Transduction_(machine_learning)) +> +> ಪರಿವಹನಾತ್ಮಕ ನಿರ್ಣಯವು ನಿರೀಕ್ಷಿತ ತರಬೇತಿ ಪ್ರಕರಣಗಳಿಂದ ನಿರ್ಗಮಿಸುತ್ತದೆ, ಅವು ನಿರ್ದಿಷ್ಟ ಪರೀಕ್ಷಾ ಪ್ರಕರಣಗಳಿಗೆ ನಕ್ಷೆ ಮಾಡುತ್ತವೆ. ಸೂಚಕ ನಿರ್ಣಯವು ಸಾಮಾನ್ಯ ನಿಯಮಗಳಿಗೆ ನಕ್ಷೆ ಮಾಡಲಾದ ತರಬೇತಿ ಪ್ರಕರಣಗಳಿಂದ ನಿರ್ಗಮಿಸುತ್ತದೆ ಮತ್ತು ನಂತರ ಅವು ಪರೀಕ್ಷಾ ಪ್ರಕರಣಗಳಿಗೆ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ. +> +> ಉದಾಹರಣೆ: ನಿಮ್ಮ ಬಳಿ ಭಾಗಶಃ ಮಾತ್ರ ಲೇಬಲ್ ಮಾಡಲಾದ ಡೇಟಾಸೆಟ್ ಇದ್ದರೆ, ಕೆಲವು 'ರೆಕಾರ್ಡ್‌ಗಳು', ಕೆಲವು 'ಸಿಡಿಗಳು', ಮತ್ತು ಕೆಲವು ಖಾಲಿ. ನಿಮ್ಮ ಕೆಲಸ ಖಾಲಿ ಭಾಗಗಳಿಗೆ ಲೇಬಲ್ ನೀಡುವುದು. ನೀವು ಸೂಚಕ ವಿಧಾನವನ್ನು ಆಯ್ಕೆಮಾಡಿದರೆ, ನೀವು 'ರೆಕಾರ್ಡ್‌ಗಳು' ಮತ್ತು 'ಸಿಡಿಗಳು' ಹುಡುಕುವ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ, ಆ ಲೇಬಲ್‌ಗಳನ್ನು ಲೇಬಲ್ ಮಾಡದ ಡೇಟಾಗೆ ಅನ್ವಯಿಸುತ್ತೀರಿ. ಈ ವಿಧಾನವು 'ಕ್ಯಾಸೆಟ್‌ಗಳು' ಎಂಬ ವಸ್ತುಗಳನ್ನು ಸರಿಯಾಗಿ ವರ್ಗೀಕರಿಸಲು ಕಷ್ಟಪಡುತ್ತದೆ. ಪರಿವಹನಾತ್ಮಕ ವಿಧಾನವು, ಇನ್ನೊಂದು ಬದಿಯಲ್ಲಿ, ಈ ಅಜ್ಞಾತ ಡೇಟಾವನ್ನು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ ಏಕೆಂದರೆ ಅದು ಸಮಾನ ವಸ್ತುಗಳನ್ನು ಗುಂಪುಮಾಡುತ್ತದೆ ಮತ್ತು ನಂತರ ಗುಂಪಿಗೆ ಲೇಬಲ್ ಅನ್ವಯಿಸುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಕ್ಲಸ್ಟರ್‌ಗಳು 'ವೃತ್ತಾಕಾರದ ಸಂಗೀತ ವಸ್ತುಗಳು' ಮತ್ತು 'ಚೌಕಾಕಾರದ ಸಂಗೀತ ವಸ್ತುಗಳು' ಎಂದು ಪ್ರತಿಬಿಂಬಿಸಬಹುದು. +> +> 🎓 ['ನಾನ್-ಫ್ಲಾಟ್' ಮತ್ತು 'ಫ್ಲಾಟ್' ಜ್ಯಾಮಿತಿ](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering) +> +> ಗಣಿತೀಯ ಪದಬಳಕೆಯಿಂದ, ನಾನ್-ಫ್ಲಾಟ್ ಮತ್ತು ಫ್ಲಾಟ್ ಜ್ಯಾಮಿತಿ ಅಂದರೆ ಪಾಯಿಂಟ್‌ಗಳ ನಡುವಿನ ದೂರವನ್ನು 'ಫ್ಲಾಟ್' ([ಯೂಕ್ಲಿಡಿಯನ್](https://wikipedia.org/wiki/Euclidean_geometry)) ಅಥವಾ 'ನಾನ್-ಫ್ಲಾಟ್' (ನಾನ್-ಯೂಕ್ಲಿಡಿಯನ್) ಜ್ಯಾಮಿತೀಯ ವಿಧಾನಗಳಿಂದ ಅಳೆಯುವಿಕೆ. +> +> ಈ ಸಂದರ್ಭದಲ್ಲಿ 'ಫ್ಲಾಟ್' ಅಂದರೆ ಯೂಕ್ಲಿಡಿಯನ್ ಜ್ಯಾಮಿತಿ (ಇದರಲ್ಲಿ ಕೆಲವು ಭಾಗಗಳನ್ನು 'ಪ್ಲೇನ್' ಜ್ಯಾಮಿತಿ ಎಂದು ಕಲಿಸಲಾಗುತ್ತದೆ), ಮತ್ತು ನಾನ್-ಫ್ಲಾಟ್ ಅಂದರೆ ನಾನ್-ಯೂಕ್ಲಿಡಿಯನ್ ಜ್ಯಾಮಿತಿ. ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ಗೆ ಜ್ಯಾಮಿತಿಗೆ ಏನು ಸಂಬಂಧ? ಗಣಿತದಲ್ಲಿ ಆಧಾರಿತ ಎರಡು ಕ್ಷೇತ್ರಗಳಾಗಿ, ಕ್ಲಸ್ಟರ್‌ಗಳಲ್ಲಿನ ಪಾಯಿಂಟ್‌ಗಳ ನಡುವಿನ ದೂರವನ್ನು ಅಳೆಯಲು ಸಾಮಾನ್ಯ ವಿಧಾನ ಇರಬೇಕು, ಮತ್ತು ಅದು 'ಫ್ಲಾಟ್' ಅಥವಾ 'ನಾನ್-ಫ್ಲಾಟ್' ರೀತಿಯಲ್ಲಿ ಮಾಡಬಹುದು, ಡೇಟಾದ ಸ್ವಭಾವದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ. [ಯೂಕ್ಲಿಡಿಯನ್ ದೂರಗಳು](https://wikipedia.org/wiki/Euclidean_distance) ಎರಡು ಪಾಯಿಂಟ್‌ಗಳ ನಡುವಿನ ರೇಖೆಯ ಉದ್ದವಾಗಿ ಅಳೆಯಲ್ಪಡುತ್ತವೆ. [ನಾನ್-ಯೂಕ್ಲಿಡಿಯನ್ ದೂರಗಳು](https://wikipedia.org/wiki/Non-Euclidean_geometry) ವಕ್ರರೇಖೆಯ ಮೇಲೆ ಅಳೆಯಲ್ಪಡುತ್ತವೆ. ನಿಮ್ಮ ಡೇಟಾ ದೃಶ್ಯೀಕರಿಸಿದಾಗ ಸಮತಲದಲ್ಲಿ ಇಲ್ಲದಂತೆ ಕಾಣಿಸಿದರೆ, ಅದನ್ನು ನಿರ್ವಹಿಸಲು ವಿಶೇಷ ಆಲ್ಗಾರಿಥಮ್ ಬೇಕಾಗಬಹುದು. +> +![ಫ್ಲಾಟ್ ಮತ್ತು ನಾನ್-ಫ್ಲಾಟ್ ಜ್ಯಾಮಿತಿ ಇನ್ಫೋಗ್ರಾಫಿಕ್](../../../../translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.kn.png) +> ಇನ್ಫೋಗ್ರಾಫಿಕ್: [ದಾಸನಿ ಮಡಿಪಳ್ಳಿ](https://twitter.com/dasani_decoded) +> +> 🎓 ['ದೂರಗಳು'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf) +> +> ಕ್ಲಸ್ಟರ್‌ಗಳು ಅವುಗಳ ದೂರ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುತ್ತವೆ, ಉದಾ: ಪಾಯಿಂಟ್‌ಗಳ ನಡುವಿನ ದೂರಗಳು. ಈ ದೂರವನ್ನು ಕೆಲವು ವಿಧಾನಗಳಲ್ಲಿ ಅಳೆಯಬಹುದು. ಯೂಕ್ಲಿಡಿಯನ್ ಕ್ಲಸ್ಟರ್‌ಗಳು ಪಾಯಿಂಟ್ ಮೌಲ್ಯಗಳ ಸರಾಸರಿಯಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲ್ಪಡುತ್ತವೆ ಮತ್ತು 'ಸೆಂಟ್ರಾಯ್ಡ್' ಅಥವಾ ಕೇಂದ್ರ ಬಿಂದುವನ್ನು ಹೊಂದಿರುತ್ತವೆ. ದೂರಗಳು ಆ ಸೆಂಟ್ರಾಯ್ಡ್‌ಗೆ ಇರುವ ದೂರದಿಂದ ಅಳೆಯಲ್ಪಡುತ್ತವೆ. ನಾನ್-ಯೂಕ್ಲಿಡಿಯನ್ ದೂರಗಳು 'ಕ್ಲಸ್ಟ್ರಾಯ್ಡ್'ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದವು, ಅದು ಇತರ ಪಾಯಿಂಟ್‌ಗಳಿಗೆ ಅತ್ಯಂತ ಸಮೀಪದ ಬಿಂದುವಾಗಿರುತ್ತದೆ. ಕ್ಲಸ್ಟ್ರಾಯ್ಡ್‌ಗಳನ್ನು ವಿವಿಧ ರೀತಿಯಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು. +> +> 🎓 ['ನಿರ್ಬಂಧಿತ'](https://wikipedia.org/wiki/Constrained_clustering) +> +> [ನಿರ್ಬಂಧಿತ ಕ್ಲಸ್ಟರಿಂಗ್](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) ಈ ಅನಿಯಂತ್ರಿತ ವಿಧಾನಕ್ಕೆ 'ಅರ್ಧ-ನಿಯಂತ್ರಿತ' ಕಲಿಕೆಯನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ. ಪಾಯಿಂಟ್‌ಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು 'ಲಿಂಕ್ ಮಾಡಬಾರದು' ಅಥವಾ 'ಲಿಂಕ್ ಮಾಡಬೇಕು' ಎಂದು ಗುರುತಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಕೆಲವು ನಿಯಮಗಳನ್ನು ಡೇಟಾಸೆಟ್‌ಗೆ ಜಾರಿಗೊಳಿಸಲಾಗುತ್ತದೆ. +> +> ಉದಾಹರಣೆ: ಒಂದು ಆಲ್ಗಾರಿಥಮ್ ಲೇಬಲ್ ಮಾಡದ ಅಥವಾ ಅರ್ಧ ಲೇಬಲ್ ಮಾಡಲಾದ ಡೇಟಾದ ಮೇಲೆ ಮುಕ್ತವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಿದರೆ, ಅದು ಉತ್ಪಾದಿಸುವ ಕ್ಲಸ್ಟರ್‌ಗಳು ಕಡಿಮೆ ಗುಣಮಟ್ಟದಿರಬಹುದು. ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ಕ್ಲಸ್ಟರ್‌ಗಳು 'ವೃತ್ತಾಕಾರದ ಸಂಗೀತ ವಸ್ತುಗಳು', 'ಚೌಕಾಕಾರದ ಸಂಗೀತ ವಸ್ತುಗಳು', 'ತ್ರಿಕೋನಾಕಾರದ ವಸ್ತುಗಳು' ಮತ್ತು 'ಕುಕೀಸ್' ಎಂದು ಗುಂಪುಮಾಡಬಹುದು. ಕೆಲವು ನಿಯಮಗಳು ("ವಸ್ತು ಪ್ಲಾಸ್ಟಿಕ್‌ನಿಂದ ಮಾಡಬೇಕು", "ವಸ್ತು ಸಂಗೀತ ಉತ್ಪಾದಿಸಬಲ್ಲದು") ನೀಡಿದರೆ, ಇದು ಆಲ್ಗಾರಿಥಮ್‌ಗೆ ಉತ್ತಮ ಆಯ್ಕೆಗಳನ್ನು ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. +> +> 🎓 'ಸಾಂದ್ರತೆ' +> +> 'ಶಬ್ದ' ಇರುವ ಡೇಟಾವನ್ನು 'ಸಾಂದ್ರ' ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಪ್ರತಿ ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿನ ಪಾಯಿಂಟ್‌ಗಳ ನಡುವಿನ ದೂರಗಳು ಪರಿಶೀಲನೆಯಾಗುವಾಗ ಹೆಚ್ಚು ಅಥವಾ ಕಡಿಮೆ ಸಾಂದ್ರವಾಗಿರಬಹುದು, ಅಥವಾ 'ಘನತೆ' ಹೊಂದಿರಬಹುದು, ಆದ್ದರಿಂದ ಈ ಡೇಟಾವನ್ನು ಸೂಕ್ತ ಕ್ಲಸ್ಟರಿಂಗ್ ವಿಧಾನದಿಂದ ವಿಶ್ಲೇಷಿಸಬೇಕಾಗುತ್ತದೆ. [ಈ ಲೇಖನ](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) K-Means ಕ್ಲಸ್ಟರಿಂಗ್ ಮತ್ತು HDBSCAN ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಅಸಮಾನ ಕ್ಲಸ್ಟರ್ ಸಾಂದ್ರತೆಯೊಂದಿಗೆ ಶಬ್ದ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಅನ್ವೇಷಿಸುವ ವ್ಯತ್ಯಾಸವನ್ನು ತೋರಿಸುತ್ತದೆ. + +## ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗಳು + +100ಕ್ಕೂ ಹೆಚ್ಚು ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗಳಿವೆ, ಮತ್ತು ಅವುಗಳ ಬಳಕೆ ಡೇಟಾದ ಸ್ವಭಾವದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಕೆಲವು ಪ್ರಮುಖ ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಚರ್ಚಿಸೋಣ: + +- **ಹೈರಾರ್ಕಿಕಲ್ ಕ್ಲಸ್ಟರಿಂಗ್**. ಒಂದು ವಸ್ತುವನ್ನು ಅದರ ಸಮೀಪದ ವಸ್ತುವಿನ ಹತ್ತಿರತೆ ಆಧರಿಸಿ ವರ್ಗೀಕರಿಸಿದರೆ, ಕ್ಲಸ್ಟರ್‌ಗಳು ಅವುಗಳ ಸದಸ್ಯರ ದೂರದ ಆಧಾರದ ಮೇಲೆ ರಚಿಸಲಾಗುತ್ತವೆ. Scikit-learn ನ ಅಗ್ಗ್ಲೊಮೆರೇಟಿವ್ ಕ್ಲಸ್ಟರಿಂಗ್ ಹೈರಾರ್ಕಿಕಲ್ ಆಗಿದೆ. + + ![ಹೈರಾರ್ಕಿಕಲ್ ಕ್ಲಸ್ಟರಿಂಗ್ ಇನ್ಫೋಗ್ರಾಫಿಕ್](../../../../translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.kn.png) + > ಇನ್ಫೋಗ್ರಾಫಿಕ್: [ದಾಸನಿ ಮಡಿಪಳ್ಳಿ](https://twitter.com/dasani_decoded) + +- **ಸೆಂಟ್ರಾಯ್ಡ್ ಕ್ಲಸ್ಟರಿಂಗ್**. ಈ ಜನಪ್ರಿಯ ಆಲ್ಗಾರಿಥಮ್ 'k' ಅಥವಾ ರಚಿಸಬೇಕಾದ ಕ್ಲಸ್ಟರ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಆಯ್ಕೆಮಾಡಬೇಕಾಗುತ್ತದೆ, ನಂತರ ಆಲ್ಗಾರಿಥಮ್ ಕ್ಲಸ್ಟರ್‌ನ ಕೇಂದ್ರ ಬಿಂದುವನ್ನು ನಿರ್ಧರಿಸಿ ಆ ಬಿಂದುವಿನ ಸುತ್ತಲೂ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ. [K-means ಕ್ಲಸ್ಟರಿಂಗ್](https://wikipedia.org/wiki/K-means_clustering) ಸೆಂಟ್ರಾಯ್ಡ್ ಕ್ಲಸ್ಟರಿಂಗ್‌ನ ಜನಪ್ರಿಯ ಆವೃತ್ತಿಯಾಗಿದೆ. ಕೇಂದ್ರವನ್ನು ಸಮೀಪದ ಸರಾಸರಿ ಮೂಲಕ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಹೆಸರು. ಕ್ಲಸ್ಟರ್‌ನಿಂದ ಚದರ ದೂರವನ್ನು ಕನಿಷ್ಠಗೊಳಿಸಲಾಗುತ್ತದೆ. + + ![ಸೆಂಟ್ರಾಯ್ಡ್ ಕ್ಲಸ್ಟರಿಂಗ್ ಇನ್ಫೋಗ್ರಾಫಿಕ್](../../../../translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.kn.png) + > ಇನ್ಫೋಗ್ರಾಫಿಕ್: [ದಾಸನಿ ಮಡಿಪಳ್ಳಿ](https://twitter.com/dasani_decoded) + +- **ವಿತರಣಾ ಆಧಾರಿತ ಕ್ಲಸ್ಟರಿಂಗ್**. ಸಾಂಖ್ಯಿಕ ಮಾದರಿಗೊಳಿಸುವಿಕೆಯಲ್ಲಿ ಆಧಾರಿತ, ವಿತರಣಾ ಆಧಾರಿತ ಕ್ಲಸ್ಟರಿಂಗ್ ಡೇಟಾ ಪಾಯಿಂಟ್ ಒಂದು ಕ್ಲಸ್ಟರ್‌ಗೆ ಸೇರಿದ ಸಾಧ್ಯತೆಯನ್ನು ನಿರ್ಧರಿಸಿ ಅದಕ್ಕೆ ಅನುಗುಣವಾಗಿ ನಿಯೋಜಿಸುತ್ತದೆ. ಗಾಸಿಯನ್ ಮಿಶ್ರಣ ವಿಧಾನಗಳು ಈ ಪ್ರಕಾರಕ್ಕೆ ಸೇರಿವೆ. + +- **ಸಾಂದ್ರತೆ ಆಧಾರಿತ ಕ್ಲಸ್ಟರಿಂಗ್**. ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಅವುಗಳ ಸಾಂದ್ರತೆ ಅಥವಾ ಪರಸ್ಪರ ಗುಂಪುಮಾಡುವಿಕೆಯ ಆಧಾರದ ಮೇಲೆ ಕ್ಲಸ್ಟರ್‌ಗಳಿಗೆ ನಿಯೋಜಿಸಲಾಗುತ್ತದೆ. ಗುಂಪಿನಿಂದ ದೂರದಲ್ಲಿರುವ ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಔಟ್‌ಲೈಯರ್‌ಗಳು ಅಥವಾ ಶಬ್ದ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. DBSCAN, Mean-shift ಮತ್ತು OPTICS ಈ ಪ್ರಕಾರದ ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಸೇರಿವೆ. + +- **ಗ್ರಿಡ್ ಆಧಾರಿತ ಕ್ಲಸ್ಟರಿಂಗ್**. ಬಹು-ಆಯಾಮದ ಡೇಟಾಸೆಟ್‌ಗಳಿಗೆ, ಗ್ರಿಡ್ ರಚಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಡೇಟಾವನ್ನು ಗ್ರಿಡ್‌ನ ಸೆಲ್‌ಗಳ ನಡುವೆ ಹಂಚಲಾಗುತ್ತದೆ, ಹೀಗಾಗಿ ಕ್ಲಸ್ಟರ್‌ಗಳು ರಚಿಸಲಾಗುತ್ತವೆ. + +## ಅಭ್ಯಾಸ - ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಕ್ಲಸ್ಟರ್ ಮಾಡಿ + +ಕ್ಲಸ್ಟರಿಂಗ್ ತಂತ್ರವನ್ನು ಸರಿಯಾದ ದೃಶ್ಯೀಕರಣದಿಂದ ಬಹಳ ಸಹಾಯವಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ನಮ್ಮ ಸಂಗೀತ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸೋಣ. ಈ ಅಭ್ಯಾಸವು ಈ ಡೇಟಾದ ಸ್ವಭಾವಕ್ಕೆ ಯಾವ ಕ್ಲಸ್ಟರಿಂಗ್ ವಿಧಾನಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಳಸಬೇಕೆಂದು ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +1. ಈ ಫೋಲ್ಡರ್‌ನಲ್ಲಿರುವ [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/notebook.ipynb) ಫೈಲ್ ಅನ್ನು ತೆರೆಯಿರಿ. + +1. ಉತ್ತಮ ಡೇಟಾ ದೃಶ್ಯೀಕರಣಕ್ಕಾಗಿ `Seaborn` ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಆಮದುಮಾಡಿ. + + ```python + !pip install seaborn + ``` + +1. [_nigerian-songs.csv_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/data/nigerian-songs.csv) ನಿಂದ ಹಾಡುಗಳ ಡೇಟಾವನ್ನು ಸೇರಿಸಿ. ಹಾಡುಗಳ ಬಗ್ಗೆ ಕೆಲವು ಡೇಟಾ ಹೊಂದಿರುವ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ. ಲೈಬ್ರರಿಗಳನ್ನು ಆಮದುಮಾಡಿ ಮತ್ತು ಡೇಟಾವನ್ನು ಹೊರಹಾಕಿ, ಈ ಡೇಟಾವನ್ನು ಅನ್ವೇಷಿಸಲು ಸಿದ್ಧರಾಗಿ: + + ```python + import matplotlib.pyplot as plt + import pandas as pd + + df = pd.read_csv("../data/nigerian-songs.csv") + df.head() + ``` + + ಮೊದಲ ಕೆಲವು ಸಾಲುಗಳ ಡೇಟಾವನ್ನು ಪರಿಶೀಲಿಸಿ: + + | | name | album | artist | artist_top_genre | release_date | length | popularity | danceability | acousticness | energy | instrumentalness | liveness | loudness | speechiness | tempo | time_signature | + | --- | ------------------------ | ---------------------------- | ------------------- | ---------------- | ------------ | ------ | ---------- | ------------ | ------------ | ------ | ---------------- | -------- | -------- | ----------- | ------- | -------------- | + | 0 | Sparky | Mandy & The Jungle | Cruel Santino | alternative r&b | 2019 | 144000 | 48 | 0.666 | 0.851 | 0.42 | 0.534 | 0.11 | -6.699 | 0.0829 | 133.015 | 5 | + | 1 | shuga rush | EVERYTHING YOU HEARD IS TRUE | Odunsi (The Engine) | afropop | 2020 | 89488 | 30 | 0.71 | 0.0822 | 0.683 | 0.000169 | 0.101 | -5.64 | 0.36 | 129.993 | 3 | + | 2 | LITT! | LITT! | AYLØ | indie r&b | 2018 | 207758 | 40 | 0.836 | 0.272 | 0.564 | 0.000537 | 0.11 | -7.127 | 0.0424 | 130.005 | 4 | + | 3 | Confident / Feeling Cool | Enjoy Your Life | Lady Donli | nigerian pop | 2019 | 175135 | 14 | 0.894 | 0.798 | 0.611 | 0.000187 | 0.0964 | -4.961 | 0.113 | 111.087 | 4 | + | 4 | wanted you | rare. | Odunsi (The Engine) | afropop | 2018 | 152049 | 25 | 0.702 | 0.116 | 0.833 | 0.91 | 0.348 | -6.044 | 0.0447 | 105.115 | 4 | + +1. ಡೇಟಾಫ್ರೇಮ್ ಬಗ್ಗೆ ಕೆಲವು ಮಾಹಿತಿಗಳನ್ನು ಪಡೆಯಿರಿ, `info()` ಅನ್ನು ಕರೆ ಮಾಡಿ: + + ```python + df.info() + ``` + + ಔಟ್‌ಪುಟ್ ಹೀಗೆ ಕಾಣಿಸುತ್ತದೆ: + + ```output + + RangeIndex: 530 entries, 0 to 529 + Data columns (total 16 columns): + # Column Non-Null Count Dtype + --- ------ -------------- ----- + 0 name 530 non-null object + 1 album 530 non-null object + 2 artist 530 non-null object + 3 artist_top_genre 530 non-null object + 4 release_date 530 non-null int64 + 5 length 530 non-null int64 + 6 popularity 530 non-null int64 + 7 danceability 530 non-null float64 + 8 acousticness 530 non-null float64 + 9 energy 530 non-null float64 + 10 instrumentalness 530 non-null float64 + 11 liveness 530 non-null float64 + 12 loudness 530 non-null float64 + 13 speechiness 530 non-null float64 + 14 tempo 530 non-null float64 + 15 time_signature 530 non-null int64 + dtypes: float64(8), int64(4), object(4) + memory usage: 66.4+ KB + ``` + +1. ನಲ್ ಮೌಲ್ಯಗಳಿಗಾಗಿ ಡಬಲ್-ಚೆಕ್ ಮಾಡಿ, `isnull()` ಅನ್ನು ಕರೆ ಮಾಡಿ ಮತ್ತು ಮೊತ್ತ 0 ಆಗಿರುವುದನ್ನು ಪರಿಶೀಲಿಸಿ: + + ```python + df.isnull().sum() + ``` + + ಚೆನ್ನಾಗಿದೆಯೇ: + + ```output + name 0 + album 0 + artist 0 + artist_top_genre 0 + release_date 0 + length 0 + popularity 0 + danceability 0 + acousticness 0 + energy 0 + instrumentalness 0 + liveness 0 + loudness 0 + speechiness 0 + tempo 0 + time_signature 0 + dtype: int64 + ``` + +1. ಡೇಟಾವನ್ನು ವರ್ಣಿಸಿ: + + ```python + df.describe() + ``` + + | | release_date | length | popularity | danceability | acousticness | energy | instrumentalness | liveness | loudness | speechiness | tempo | time_signature | + | ----- | ------------ | ----------- | ---------- | ------------ | ------------ | -------- | ---------------- | -------- | --------- | ----------- | ---------- | -------------- | + | count | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | + | mean | 2015.390566 | 222298.1698 | 17.507547 | 0.741619 | 0.265412 | 0.760623 | 0.016305 | 0.147308 | -4.953011 | 0.130748 | 116.487864 | 3.986792 | + | std | 3.131688 | 39696.82226 | 18.992212 | 0.117522 | 0.208342 | 0.148533 | 0.090321 | 0.123588 | 2.464186 | 0.092939 | 23.518601 | 0.333701 | + | min | 1998 | 89488 | 0 | 0.255 | 0.000665 | 0.111 | 0 | 0.0283 | -19.362 | 0.0278 | 61.695 | 3 | + | 25% | 2014 | 199305 | 0 | 0.681 | 0.089525 | 0.669 | 0 | 0.07565 | -6.29875 | 0.0591 | 102.96125 | 4 | + | 50% | 2016 | 218509 | 13 | 0.761 | 0.2205 | 0.7845 | 0.000004 | 0.1035 | -4.5585 | 0.09795 | 112.7145 | 4 | + | 75% | 2017 | 242098.5 | 31 | 0.8295 | 0.403 | 0.87575 | 0.000234 | 0.164 | -3.331 | 0.177 | 125.03925 | 4 | + | max | 2020 | 511738 | 73 | 0.966 | 0.954 | 0.995 | 0.91 | 0.811 | 0.582 | 0.514 | 206.007 | 5 | + +> 🤔 ನಾವು ಕ್ಲಸ್ಟರಿಂಗ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದರೆ, ಲೇಬಲ್ ಮಾಡಲಾದ ಡೇಟಾವನ್ನು ಅಗತ್ಯವಿಲ್ಲದ ಅನ್‌ಸೂಪರ್ವೈಸ್‌ಡ್ ವಿಧಾನ, ನಾವು ಈ ಡೇಟಾವನ್ನು ಲೇಬಲ್‌ಗಳೊಂದಿಗೆ ಏಕೆ ತೋರಿಸುತ್ತಿದ್ದೇವೆ? ಡೇಟಾ ಅನ್ವೇಷಣಾ ಹಂತದಲ್ಲಿ, ಅವು ಸಹಾಯಕವಾಗುತ್ತವೆ, ಆದರೆ ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಅವು ಅಗತ್ಯವಿಲ್ಲ. ನೀವು ಕೇವಲ ಕಾಲಮ್ ಹೆಡರ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ ಡೇಟಾವನ್ನು ಕಾಲಮ್ ಸಂಖ್ಯೆಯಿಂದ ಉಲ್ಲೇಖಿಸಬಹುದು. + +ಡೇಟಾದ ಸಾಮಾನ್ಯ ಮೌಲ್ಯಗಳನ್ನು ನೋಡಿ. ಜನಪ್ರಿಯತೆ '0' ಆಗಿರಬಹುದು, ಇದು ರ್ಯಾಂಕಿಂಗ್ ಇಲ್ಲದ ಹಾಡುಗಳನ್ನು ತೋರಿಸುತ್ತದೆ. ಅವುಗಳನ್ನು ಶೀಘ್ರದಲ್ಲೇ ತೆಗೆದುಹಾಕೋಣ. + +1. ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಶೈಲಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಬಾರ್ಪ್ಲಾಟ್ ಬಳಸಿ: + + ```python + import seaborn as sns + + top = df['artist_top_genre'].value_counts() + plt.figure(figsize=(10,7)) + sns.barplot(x=top[:5].index,y=top[:5].values) + plt.xticks(rotation=45) + plt.title('Top genres',color = 'blue') + ``` + + ![most popular](../../../../translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.kn.png) + +✅ ನೀವು ಹೆಚ್ಚು ಟಾಪ್ ಮೌಲ್ಯಗಳನ್ನು ನೋಡಲು ಬಯಸಿದರೆ, ಟಾಪ್ `[:5]` ಅನ್ನು ದೊಡ್ಡ ಮೌಲ್ಯಕ್ಕೆ ಬದಲಾಯಿಸಿ ಅಥವಾ ಎಲ್ಲಾ ನೋಡಲು ಅದನ್ನು ತೆಗೆದುಹಾಕಿ. + +ಗಮನಿಸಿ, ಟಾಪ್ ಶೈಲಿ 'Missing' ಎಂದು ವರ್ಣಿಸಲ್ಪಟ್ಟಿದ್ದರೆ, ಅಂದರೆ Spotify ಅದನ್ನು ವರ್ಗೀಕರಿಸಿಲ್ಲ, ಆದ್ದರಿಂದ ಅದನ್ನು ತೆಗೆದುಹಾಕೋಣ. + +1. ಮಿಸ್ಸಿಂಗ್ ಡೇಟಾವನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿ ತೆಗೆದುಹಾಕಿ + + ```python + df = df[df['artist_top_genre'] != 'Missing'] + top = df['artist_top_genre'].value_counts() + plt.figure(figsize=(10,7)) + sns.barplot(x=top.index,y=top.values) + plt.xticks(rotation=45) + plt.title('Top genres',color = 'blue') + ``` + + ಈಗ ಶೈಲಿಗಳನ್ನು ಮರುಪರಿಶೀಲಿಸಿ: + + ![most popular](../../../../translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.kn.png) + +1. ಬಹುಮಟ್ಟಿಗೆ, ಟಾಪ್ ಮೂರು ಶೈಲಿಗಳು ಈ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಆಳವಾಗಿ ಆಳುತ್ತವೆ. `afro dancehall`, `afropop`, ಮತ್ತು `nigerian pop` ಮೇಲೆ ಗಮನಹರಿಸೋಣ, ಜೊತೆಗೆ 0 ಜನಪ್ರಿಯತೆ ಮೌಲ್ಯವಿರುವ ಯಾವುದೇ ಡೇಟಾವನ್ನು (ಅಂದರೆ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಜನಪ್ರಿಯತೆ ವರ್ಗೀಕರಣವಿಲ್ಲದವು ಮತ್ತು ನಮ್ಮ ಉದ್ದೇಶಗಳಿಗೆ ಶಬ್ದವೆಂದು ಪರಿಗಣಿಸಬಹುದು) ತೆಗೆದುಹಾಕಿ: + + ```python + df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')] + df = df[(df['popularity'] > 0)] + top = df['artist_top_genre'].value_counts() + plt.figure(figsize=(10,7)) + sns.barplot(x=top.index,y=top.values) + plt.xticks(rotation=45) + plt.title('Top genres',color = 'blue') + ``` + +1. ಡೇಟಾ ಯಾವುದೇ ವಿಶೇಷವಾಗಿ ಬಲವಾದ ಸಂಬಂಧ ಹೊಂದಿದೆಯೇ ಎಂದು ತ್ವರಿತ ಪರೀಕ್ಷೆ ಮಾಡಿ: + + ```python + corrmat = df.corr(numeric_only=True) + f, ax = plt.subplots(figsize=(12, 9)) + sns.heatmap(corrmat, vmax=.8, square=True) + ``` + + ![correlations](../../../../translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.kn.png) + + ಏಕೈಕ ಬಲವಾದ ಸಂಬಂಧ `energy` ಮತ್ತು `loudness` ನಡುವೆ ಇದೆ, ಇದು ಅಚ್ಚರಿಯ ಸಂಗತಿ ಅಲ್ಲ, ಏಕೆಂದರೆ ಗಟ್ಟಿಯಾದ ಸಂಗೀತ ಸಾಮಾನ್ಯವಾಗಿ ಬಹಳ ಶಕ್ತಿಶಾಲಿಯಾಗಿದೆ. ಬೇರೆ ಎಲ್ಲ ಸಂಬಂಧಗಳು ಸಾಪೇಕ್ಷವಾಗಿ ದುರ್ಬಲವಾಗಿವೆ. ಈ ಡೇಟಾದಲ್ಲಿ ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್ ಏನು ಮಾಡಬಹುದು ಎಂದು ನೋಡುವುದು ಆಸಕ್ತಿದಾಯಕವಾಗಿರುತ್ತದೆ. + + > 🎓 ಸಂಬಂಧವು ಕಾರಣವಲ್ಲ ಎಂಬುದನ್ನು ಗಮನಿಸಿ! ನಾವು ಸಂಬಂಧದ ಸಾಬೀತು ಹೊಂದಿದ್ದೇವೆ ಆದರೆ ಕಾರಣದ ಸಾಬೀತು ಇಲ್ಲ. [ರಂಜನೀಯ ವೆಬ್‌ಸೈಟ್](https://tylervigen.com/spurious-correlations) ಇದನ್ನು ಒತ್ತಿ ತೋರಿಸುತ್ತದೆ. + +ಈ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಹಾಡಿನ ಗ್ರಹಿತ ಜನಪ್ರಿಯತೆ ಮತ್ತು ನೃತ್ಯ ಸಾಮರ್ಥ್ಯದ ಸುತ್ತಲೂ ಯಾವುದೇ ಸಮಾಗಮವಿದೆಯೇ? ಫೇಸಟ್‌ಗ್ರಿಡ್ ತೋರಿಸುತ್ತದೆ, regardless of genre, there are concentric circles that line up. ನೈಜೀರಿಯನ್ ರುಚಿಗಳು ಈ ಶೈಲಿಗೆ ನೃತ್ಯ ಸಾಮರ್ಥ್ಯದ ನಿರ್ದಿಷ್ಟ ಮಟ್ಟದಲ್ಲಿ ಸಮಾಗಮವಾಗಬಹುದೇ? + +✅ ವಿಭಿನ್ನ ಡೇಟಾಪಾಯಿಂಟ್‌ಗಳನ್ನು (energy, loudness, speechiness) ಮತ್ತು ಹೆಚ್ಚು ಅಥವಾ ವಿಭಿನ್ನ ಸಂಗೀತ ಶೈಲಿಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ. ನೀವು ಏನು ಕಂಡುಹಿಡಿಯಬಹುದು? `df.describe()` ಟೇಬಲ್ ಅನ್ನು ನೋಡಿ ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳ ಸಾಮಾನ್ಯ ವಿಸ್ತಾರವನ್ನು. + +### ವ್ಯಾಯಾಮ - ಡೇಟಾ ವಿತರಣೆ + +ಈ ಮೂರು ಶೈಲಿಗಳು ತಮ್ಮ ಜನಪ್ರಿಯತೆ ಆಧಾರಿತವಾಗಿ ನೃತ್ಯ ಸಾಮರ್ಥ್ಯದ ಗ್ರಹಣೆಯಲ್ಲಿ ಪ್ರಮುಖವಾಗಿ ವಿಭಿನ್ನವಾಗಿದೆಯೇ? + +1. ನಮ್ಮ ಟಾಪ್ ಮೂರು ಶೈಲಿಗಳ ಜನಪ್ರಿಯತೆ ಮತ್ತು ನೃತ್ಯ ಸಾಮರ್ಥ್ಯದ ಡೇಟಾ ವಿತರಣೆಯನ್ನು ನೀಡಲಾದ x ಮತ್ತು y ಅಕ್ಷಗಳ ಮೇಲೆ ಪರಿಶೀಲಿಸಿ. + + ```python + sns.set_theme(style="ticks") + + g = sns.jointplot( + data=df, + x="popularity", y="danceability", hue="artist_top_genre", + kind="kde", + ) + ``` + + ನೀವು ಸಾಮಾನ್ಯ ಸಮಾಗಮದ ಬಿಂದುವಿನ ಸುತ್ತಲೂ ಸಾಂದ್ರ ವಲಯಗಳನ್ನು ಕಂಡುಹಿಡಿಯಬಹುದು, ಇದು ಪಾಯಿಂಟ್‌ಗಳ ವಿತರಣೆಯನ್ನು ತೋರಿಸುತ್ತದೆ. + + > 🎓 ಈ ಉದಾಹರಣೆ KDE (Kernel Density Estimate) ಗ್ರಾಫ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಇದು ಡೇಟಾವನ್ನು ನಿರಂತರ ಪ್ರಾಬಬಿಲಿಟಿ ಡೆನ್ಸಿಟಿ ವಕ್ರದಿಂದ ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಇದು ಬಹು ವಿತರಣೆಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಡೇಟಾವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + + ಸಾಮಾನ್ಯವಾಗಿ, ಈ ಮೂರು ಶೈಲಿಗಳು ತಮ್ಮ ಜನಪ್ರಿಯತೆ ಮತ್ತು ನೃತ್ಯ ಸಾಮರ್ಥ್ಯದ ದೃಷ್ಟಿಯಿಂದ ಸಡಿಲವಾಗಿ ಹೊಂದಿಕೊಳ್ಳುತ್ತವೆ. ಈ ಸಡಿಲವಾಗಿ ಹೊಂದಿಕೊಂಡಿರುವ ಡೇಟಾದಲ್ಲಿ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ನಿರ್ಧರಿಸುವುದು ಸವಾಲಾಗಿರುತ್ತದೆ: + + ![distribution](../../../../translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.kn.png) + +1. ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ ರಚಿಸಿ: + + ```python + sns.FacetGrid(df, hue="artist_top_genre", height=5) \ + .map(plt.scatter, "popularity", "danceability") \ + .add_legend() + ``` + + ಅದೇ ಅಕ್ಷಗಳ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ ಸಾದೃಶ್ಯ ಸಮಾಗಮ ಮಾದರಿಯನ್ನು ತೋರಿಸುತ್ತದೆ + + ![Facetgrid](../../../../translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.kn.png) + +ಸಾಮಾನ್ಯವಾಗಿ, ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ, ನೀವು ಡೇಟಾದ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ತೋರಿಸಲು ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್‌ಗಳನ್ನು ಬಳಸಬಹುದು, ಆದ್ದರಿಂದ ಈ ರೀತಿಯ ದೃಶ್ಯೀಕರಣವನ್ನು ನಿಪುಣತೆಯಿಂದ ಮಾಡುವುದು ಬಹಳ ಉಪಯುಕ್ತ. ಮುಂದಿನ ಪಾಠದಲ್ಲಿ, ನಾವು ಈ ಫಿಲ್ಟರ್ ಮಾಡಲಾದ ಡೇಟಾವನ್ನು ತೆಗೆದು k-means ಕ್ಲಸ್ಟರಿಂಗ್ ಬಳಸಿ ಈ ಡೇಟಾದಲ್ಲಿ ಆಸಕ್ತಿದಾಯಕ ರೀತಿಯಲ್ಲಿ ಒಟ್ಟುಗೂಡುತ್ತಿರುವ ಗುಂಪುಗಳನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೇವೆ. + +--- + +## 🚀ಸವಾಲು + +ಮುಂದಿನ ಪಾಠದ ತಯಾರಿಗಾಗಿ, ನೀವು ಕಂಡುಹಿಡಿಯಬಹುದಾದ ಮತ್ತು ಉತ್ಪಾದನಾ ಪರಿಸರದಲ್ಲಿ ಬಳಸಬಹುದಾದ ವಿವಿಧ ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗಳ ಬಗ್ಗೆ ಚಾರ್ಟ್ ರಚಿಸಿ. ಕ್ಲಸ್ಟರಿಂಗ್ ಯಾವ ರೀತಿಯ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದೆ? + +## [ಪೋಸ್ಟ್-ಲೆಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ನೀವು ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು, ನಾವು ಕಲಿತಂತೆ, ನಿಮ್ಮ ಡೇಟಾಸೆಟ್‌ನ ಸ್ವಭಾವವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಉತ್ತಮ. ಈ ವಿಷಯದ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [ಇಲ್ಲಿ](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html) ಓದಿ + +[ಈ ಸಹಾಯಕ ಲೇಖನ](https://www.freecodecamp.org/news/8-clustering-algorithms-in-machine-learning-that-all-data-scientists-should-know/) ವಿವಿಧ ಡೇಟಾ ಆಕಾರಗಳನ್ನು ನೀಡಿದಾಗ ವಿವಿಧ ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗಳು ಹೇಗೆ ವರ್ತಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ನಿಮಗೆ ತಿಳಿಸುತ್ತದೆ. + +## ನಿಯೋಜನೆ + +[ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಇತರ ದೃಶ್ಯೀಕರಣಗಳನ್ನು ಸಂಶೋಧಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/5-Clustering/1-Visualize/assignment.md b/translations/kn/5-Clustering/1-Visualize/assignment.md new file mode 100644 index 000000000..08bd97f07 --- /dev/null +++ b/translations/kn/5-Clustering/1-Visualize/assignment.md @@ -0,0 +1,27 @@ + +# ಕ್ಲಸ್ಟರಿಂಗ್‌ಗಾಗಿ ಇತರ ದೃಶ್ಯೀಕರಣಗಳನ್ನು ಸಂಶೋಧಿಸಿ + +## ಸೂಚನೆಗಳು + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಸಿದ್ಧತೆಗಾಗಿ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಲು ಕೆಲವು ದೃಶ್ಯೀಕರಣ ತಂತ್ರಗಳನ್ನು ಬಳಸಿದ್ದೀರಿ. ವಿಶೇಷವಾಗಿ, ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್‌ಗಳು ವಸ್ತುಗಳ ಗುಂಪುಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಉಪಯುಕ್ತವಾಗಿವೆ. ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್‌ಗಳನ್ನು ರಚಿಸಲು ವಿಭಿನ್ನ ವಿಧಾನಗಳು ಮತ್ತು ವಿಭಿನ್ನ ಲೈಬ್ರರಿಗಳನ್ನು ಸಂಶೋಧಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಕೆಲಸವನ್ನು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ದಾಖಲೆ ಮಾಡಿ. ನೀವು ಈ ಪಾಠದ ಡೇಟಾ, ಇತರ ಪಾಠಗಳ ಡೇಟಾ ಅಥವಾ ನೀವು ಸ್ವತಃ ಸಂಗ್ರಹಿಸಿದ ಡೇಟಾವನ್ನು ಬಳಸಬಹುದು (ಆದರೆ, ದಯವಿಟ್ಟು ಅದರ ಮೂಲವನ್ನು ನಿಮ್ಮ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಉಲ್ಲೇಖಿಸಿ). ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್‌ಗಳನ್ನು ಬಳಸಿ ಕೆಲವು ಡೇಟಾವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ ಮತ್ತು ನೀವು ಕಂಡುಕೊಂಡುದನ್ನು ವಿವರಿಸಿ. + +## ರೂಬ್ರಿಕ್ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯ | +| -------- | -------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ----------------------------------- | +| | ಐದು ಚೆನ್ನಾಗಿ ದಾಖಲಾಗಿರುವ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್‌ಗಳೊಂದಿಗೆ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | ಐದುಕ್ಕಿಂತ ಕಡಿಮೆ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್‌ಗಳೊಂದಿಗೆ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ ಮತ್ತು ಅದು ಕಡಿಮೆ ಚೆನ್ನಾಗಿ ದಾಖಲಾಗಿದ್ದುದು | ಅಪೂರ್ಣ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/5-Clustering/1-Visualize/notebook.ipynb b/translations/kn/5-Clustering/1-Visualize/notebook.ipynb new file mode 100644 index 000000000..5aa60a524 --- /dev/null +++ b/translations/kn/5-Clustering/1-Visualize/notebook.ipynb @@ -0,0 +1,52 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python383jvsc74a57bd0e134e05457d34029b6460cd73bbf1ed73f339b5b6d98c95be70b69eba114fe95", + "display_name": "Python 3.8.3 64-bit (conda)" + }, + "coopTranslator": { + "original_hash": "40e0707e96b3e1899a912776006264f9", + "translation_date": "2025-12-19T16:50:50+00:00", + "source_file": "5-Clustering/1-Visualize/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ಸ್ಪೋಟಿಫೈಯಿಂದ ಸಂಗ್ರಹಿಸಿದ ನೈಜೀರಿಯನ್ ಸಂಗೀತ - ಒಂದು ವಿಶ್ಲೇಷಣೆ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/5-Clustering/1-Visualize/solution/Julia/README.md b/translations/kn/5-Clustering/1-Visualize/solution/Julia/README.md new file mode 100644 index 000000000..a8d16df71 --- /dev/null +++ b/translations/kn/5-Clustering/1-Visualize/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb b/translations/kn/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb new file mode 100644 index 000000000..2cab7dfc0 --- /dev/null +++ b/translations/kn/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb @@ -0,0 +1,493 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "## **ನೈಜೀರಿಯನ್ ಸಂಗೀತವನ್ನು Spotify ನಿಂದ ಸ್ಕ್ರೇಪ್ ಮಾಡಲಾಗಿದೆ - ಒಂದು ವಿಶ್ಲೇಷಣೆ**\n", + "\n", + "ಕ್ಲಸ್ಟರಿಂಗ್ ಒಂದು ರೀತಿಯ [ಅನಿಯಂತ್ರಿತ ಕಲಿಕೆ](https://wikipedia.org/wiki/Unsupervised_learning) ಆಗಿದ್ದು, ಇದು ಡೇಟಾಸೆಟ್ ಲೇಬಲ್ ಮಾಡದಿರುವುದು ಅಥವಾ ಅದರ ಇನ್‌ಪುಟ್‌ಗಳು ಪೂರ್ವನಿರ್ಧರಿತ ಔಟ್‌ಪುಟ್‌ಗಳೊಂದಿಗೆ ಹೊಂದಾಣಿಕೆ ಮಾಡದಿರುವುದಾಗಿ ಊಹಿಸುತ್ತದೆ. ಇದು ಲೇಬಲ್ ಮಾಡದ ಡೇಟಾದ ಮೂಲಕ ವಿವಿಧ ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾದಲ್ಲಿನ ಮಾದರಿಗಳ ಪ್ರಕಾರ ಗುಂಪುಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.\n", + "\n", + "[**ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/27/)\n", + "\n", + "### **ಪರಿಚಯ**\n", + "\n", + "[ಕ್ಲಸ್ಟರಿಂಗ್](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) ಡೇಟಾ ಅನ್ವೇಷಣೆಗೆ ಬಹಳ ಉಪಯುಕ್ತವಾಗಿದೆ. ನೈಜೀರಿಯನ್ ಪ್ರೇಕ್ಷಕರು ಸಂಗೀತವನ್ನು ಹೇಗೆ ಉಪಯೋಗಿಸುತ್ತಾರೆ ಎಂಬುದರಲ್ಲಿ ಟ್ರೆಂಡ್ಸ್ ಮತ್ತು ಮಾದರಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಇದು ಸಹಾಯ ಮಾಡಬಹುದೇ ಎಂದು ನೋಡೋಣ.\n", + "\n", + "> ✅ ಕ್ಲಸ್ಟರಿಂಗ್‌ನ ಉಪಯೋಗಗಳನ್ನು ಕುರಿತು ಒಂದು ನಿಮಿಷ ಯೋಚಿಸಿ. ನಿಜ ಜೀವನದಲ್ಲಿ, ನೀವು ಬಟ್ಟೆಗಳನ್ನು ಗುಂಪುಮಾಡಬೇಕಾದಾಗ ಕ್ಲಸ್ಟರಿಂಗ್ ಆಗುತ್ತದೆ 🧦👕👖🩲. ಡೇಟಾ ಸೈನ್ಸ್‌ನಲ್ಲಿ, ಬಳಕೆದಾರರ ಇಚ್ಛೆಗಳ ವಿಶ್ಲೇಷಣೆ ಮಾಡಲು ಅಥವಾ ಯಾವುದೇ ಲೇಬಲ್ ಮಾಡದ ಡೇಟಾಸೆಟ್‌ನ ಲಕ್ಷಣಗಳನ್ನು ನಿರ್ಧರಿಸಲು ಕ್ಲಸ್ಟರಿಂಗ್ ಆಗುತ್ತದೆ. ಕ್ಲಸ್ಟರಿಂಗ್ ಒಂದು ರೀತಿಯಲ್ಲಿ ಗೊಂದಲವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಹೀಗಾಗಿ ಅದು ಒಂದು ಸಾಕ್ ಡ್ರಾಯರ್‌ನಂತೆ.\n", + "\n", + "ವೃತ್ತಿಪರ ಪರಿಸರದಲ್ಲಿ, ಕ್ಲಸ್ಟರಿಂಗ್ ಅನ್ನು ಮಾರುಕಟ್ಟೆ ವಿಭಾಗೀಕರಣ, ಯಾವ ವಯಸ್ಸಿನ ಗುಂಪು ಯಾವ ವಸ್ತುಗಳನ್ನು ಖರೀದಿಸುತ್ತಾರೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ಬಳಸಬಹುದು. ಮತ್ತೊಂದು ಉಪಯೋಗವು ಅನೋಮಲಿ ಪತ್ತೆಹಚ್ಚುವಿಕೆ, ಉದಾಹರಣೆಗೆ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ವ್ಯವಹಾರಗಳ ಡೇಟಾಸೆಟ್‌ನಿಂದ ಮೋಸವನ್ನು ಪತ್ತೆಹಚ್ಚಲು. ಅಥವಾ ವೈದ್ಯಕೀಯ ಸ್ಕ್ಯಾನ್ಸ್‌ನ ಬ್ಯಾಚ್‌ನಲ್ಲಿ ಟ್ಯೂಮರ್‌ಗಳನ್ನು ಗುರುತಿಸಲು ಕ್ಲಸ್ಟರಿಂಗ್ ಬಳಸಬಹುದು.\n", + "\n", + "✅ ಬ್ಯಾಂಕಿಂಗ್, ಇ-ಕಾಮರ್ಸ್ ಅಥವಾ ವ್ಯವಹಾರ ಪರಿಸರದಲ್ಲಿ ನೀವು ಕ್ಲಸ್ಟರಿಂಗ್ ಅನ್ನು 'ವೈಲ್ಡ್' ನಲ್ಲಿ ಹೇಗೆ ಎದುರಿಸಿದ್ದೀರೋ ಎಂದು ಒಂದು ನಿಮಿಷ ಯೋಚಿಸಿ.\n", + "\n", + "> 🎓 ಆಸಕ್ತಿಕರವಾಗಿ, ಕ್ಲಸ್ಟರ್ ವಿಶ್ಲೇಷಣೆ 1930ರ ದಶಕದಲ್ಲಿ ಮಾನವಶಾಸ್ತ್ರ ಮತ್ತು ಮನೋವಿಜ್ಞಾನ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಹುಟ್ಟಿಕೊಂಡಿತು. ನೀವು ಅದನ್ನು ಹೇಗೆ ಬಳಸಲಾಗುತ್ತಿತ್ತು ಎಂದು ಊಹಿಸಬಹುದೇ?\n", + "\n", + "ಮತ್ತೊಂದು ಆಯ್ಕೆ, ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳನ್ನು ಗುಂಪುಮಾಡಲು - ಖರೀದಿ ಲಿಂಕ್‌ಗಳು, ಚಿತ್ರಗಳು ಅಥವಾ ವಿಮರ್ಶೆಗಳ ಪ್ರಕಾರ. ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ ಇದ್ದಾಗ ಮತ್ತು ಅದನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಮತ್ತು ಹೆಚ್ಚಿನ ವಿಶ್ಲೇಷಣೆ ಮಾಡಲು ಕ್ಲಸ್ಟರಿಂಗ್ ಉಪಯುಕ್ತವಾಗಿದೆ, ಹೀಗಾಗಿ ಈ ತಂತ್ರವನ್ನು ಇತರ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವ ಮೊದಲು ಡೇಟಾ ಬಗ್ಗೆ ತಿಳಿಯಲು ಬಳಸಬಹುದು.\n", + "\n", + "✅ ನಿಮ್ಮ ಡೇಟಾ ಕ್ಲಸ್ಟರ್‌ಗಳಲ್ಲಿ ಸಂಘಟಿತವಾದ ಮೇಲೆ, ನೀವು ಅದಕ್ಕೆ ಕ್ಲಸ್ಟರ್ ಐಡಿ ನೀಡುತ್ತೀರಿ, ಮತ್ತು ಈ ತಂತ್ರವು ಡೇಟಾಸೆಟ್‌ನ ಗೌಪ್ಯತೆಯನ್ನು ಕಾಪಾಡಲು ಸಹಾಯ ಮಾಡಬಹುದು; ನೀವು ಡೇಟಾ ಪಾಯಿಂಟ್ ಅನ್ನು ಅದರ ಕ್ಲಸ್ಟರ್ ಐಡಿ ಮೂಲಕ ಸೂಚಿಸಬಹುದು, ಹೆಚ್ಚು ಬಹಿರಂಗವಾಗುವ ಗುರುತಿಸುವ ಡೇಟಾ ಬದಲಾಗಿ. ನೀವು ಇನ್ನಾವುದೇ ಕಾರಣಗಳನ್ನು ಯೋಚಿಸಬಹುದೇ, ಏಕೆ ನೀವು ಕ್ಲಸ್ಟರ್ ಐಡಿಯನ್ನು ಬಳಸುತ್ತೀರಿ?\n", + "\n", + "### ಕ್ಲಸ್ಟರಿಂಗ್ ಪ್ರಾರಂಭಿಸುವುದು\n", + "\n", + "> 🎓 ನಾವು ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಹೇಗೆ ರಚಿಸುವುದು ಎಂಬುದು ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಗುಂಪುಗಳಲ್ಲಿ ಹೇಗೆ ಸಂಗ್ರಹಿಸುವುದರ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಕೆಲವು ಪದಗಳನ್ನು ವಿವರಿಸೋಣ:\n", + ">\n", + "> 🎓 ['ಟ್ರಾನ್ಸ್‌ಡಕ್ಟಿವ್' ವಿರುದ್ಧ 'ಇಂಡಕ್ಟಿವ್'](https://wikipedia.org/wiki/Transduction_(machine_learning))\n", + ">\n", + "> ಟ್ರಾನ್ಸ್‌ಡಕ್ಟಿವ್ ನಿರ್ಣಯವು ನಿರೀಕ್ಷಿತ ತರಬೇತಿ ಪ್ರಕರಣಗಳಿಂದ ನಿರ್ಗಮಿಸುತ್ತದೆ, ಅವು ನಿರ್ದಿಷ್ಟ ಪರೀಕ್ಷಾ ಪ್ರಕರಣಗಳಿಗೆ ನಕ್ಷೆ ಮಾಡುತ್ತವೆ. ಇಂಡಕ್ಟಿವ್ ನಿರ್ಣಯವು ತರಬೇತಿ ಪ್ರಕರಣಗಳಿಂದ ಸಾಮಾನ್ಯ ನಿಯಮಗಳಿಗೆ ನಕ್ಷೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ನಂತರ ಅವು ಪರೀಕ್ಷಾ ಪ್ರಕರಣಗಳಿಗೆ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ.\n", + ">\n", + "> ಉದಾಹರಣೆ: ನಿಮ್ಮ ಬಳಿ ಭಾಗಶಃ ಲೇಬಲ್ ಮಾಡಲಾದ ಡೇಟಾಸೆಟ್ ಇದ್ದರೆ, ಕೆಲವು 'ರೆಕಾರ್ಡ್‌ಗಳು', ಕೆಲವು 'ಸಿಡಿಗಳು', ಮತ್ತು ಕೆಲವು ಖಾಲಿ. ನಿಮ್ಮ ಕೆಲಸ ಖಾಲಿ ಭಾಗಗಳಿಗೆ ಲೇಬಲ್ ನೀಡುವುದು. ನೀವು ಇಂಡಕ್ಟಿವ್ ವಿಧಾನವನ್ನು ಆರಿಸಿದರೆ, ನೀವು 'ರೆಕಾರ್ಡ್‌ಗಳು' ಮತ್ತು 'ಸಿಡಿಗಳು' ಹುಡುಕುವ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ, ಆ ಲೇಬಲ್‌ಗಳನ್ನು ಲೇಬಲ್ ಮಾಡದ ಡೇಟಾಗೆ ಅನ್ವಯಿಸುತ್ತೀರಿ. ಈ ವಿಧಾನವು 'ಕ್ಯಾಸೆಟ್‌ಗಳು' ಎಂದು ನಿಜವಾಗಿರುವ ವಸ್ತುಗಳನ್ನು ವರ್ಗೀಕರಿಸಲು ಕಷ್ಟಪಡುತ್ತದೆ. ಟ್ರಾನ್ಸ್‌ಡಕ್ಟಿವ್ ವಿಧಾನವು ಈ ಅಜ್ಞಾತ ಡೇಟಾವನ್ನು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಇದು ಸಮಾನ ವಸ್ತುಗಳನ್ನು ಗುಂಪುಮಾಡಿ ನಂತರ ಗುಂಪಿಗೆ ಲೇಬಲ್ ಅನ್ವಯಿಸುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಕ್ಲಸ್ಟರ್‌ಗಳು 'ವೃತ್ತಾಕಾರದ ಸಂಗೀತ ವಸ್ತುಗಳು' ಮತ್ತು 'ಚೌಕಾಕಾರದ ಸಂಗೀತ ವಸ್ತುಗಳು' ಎಂದು ಪ್ರತಿಬಿಂಬಿಸಬಹುದು.\n", + ">\n", + "> 🎓 ['ನಾನ್-ಫ್ಲಾಟ್' ವಿರುದ್ಧ 'ಫ್ಲಾಟ್' ಜ್ಯಾಮಿತಿ](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering)\n", + ">\n", + "> ಗಣಿತೀಯ ಪದಬಳಕೆಯಿಂದ, ನಾನ್-ಫ್ಲಾಟ್ ಮತ್ತು ಫ್ಲಾಟ್ ಜ್ಯಾಮಿತಿ ಅಂದರೆ ಪಾಯಿಂಟ್‌ಗಳ ನಡುವಿನ ದೂರವನ್ನು 'ಫ್ಲಾಟ್' ([ಯೂಕ್ಲಿಡಿಯನ್](https://wikipedia.org/wiki/Euclidean_geometry)) ಅಥವಾ 'ನಾನ್-ಫ್ಲಾಟ್' (ನಾನ್-ಯೂಕ್ಲಿಡಿಯನ್) ಜ್ಯಾಮಿತೀಯ ವಿಧಾನಗಳಿಂದ ಅಳೆಯುವುದು.\n", + ">\n", + "> ಈ ಸಂದರ್ಭದಲ್ಲಿ 'ಫ್ಲಾಟ್' ಅಂದರೆ ಯೂಕ್ಲಿಡಿಯನ್ ಜ್ಯಾಮಿತಿ (ಇದರಲ್ಲಿ ಕೆಲವು ಭಾಗಗಳನ್ನು 'ಪ್ಲೇನ್' ಜ್ಯಾಮಿತಿ ಎಂದು ಕಲಿಸಲಾಗುತ್ತದೆ), ಮತ್ತು ನಾನ್-ಫ್ಲಾಟ್ ಅಂದರೆ ನಾನ್-ಯೂಕ್ಲಿಡಿಯನ್ ಜ್ಯಾಮಿತಿ. ಜ್ಯಾಮಿತಿಗೆ ಯಂತ್ರ ಕಲಿಕೆಗೆ ಏನು ಸಂಬಂಧ? ಗಣಿತದಲ್ಲಿ ಆಧಾರಿತ ಎರಡು ಕ್ಷೇತ್ರಗಳಾಗಿ, ಕ್ಲಸ್ಟರ್‌ಗಳಲ್ಲಿನ ಪಾಯಿಂಟ್‌ಗಳ ನಡುವಿನ ದೂರವನ್ನು ಅಳೆಯಲು ಸಾಮಾನ್ಯ ವಿಧಾನ ಇರಬೇಕು, ಮತ್ತು ಅದು 'ಫ್ಲಾಟ್' ಅಥವಾ 'ನಾನ್-ಫ್ಲಾಟ್' ರೀತಿಯಲ್ಲಿ ಮಾಡಬಹುದು, ಡೇಟಾದ ಸ್ವಭಾವದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. [ಯೂಕ್ಲಿಡಿಯನ್ ದೂರಗಳು](https://wikipedia.org/wiki/Euclidean_distance) ಎರಡು ಪಾಯಿಂಟ್‌ಗಳ ನಡುವಿನ ರೇಖೆಯ ಉದ್ದವಾಗಿ ಅಳೆಯಲ್ಪಡುತ್ತವೆ. [ನಾನ್-ಯೂಕ್ಲಿಡಿಯನ್ ದೂರಗಳು](https://wikipedia.org/wiki/Non-Euclidean_geometry) ವಕ್ರರೇಖೆಯ ಮೇಲೆ ಅಳೆಯಲ್ಪಡುತ್ತವೆ. ನಿಮ್ಮ ಡೇಟಾ, ದೃಶ್ಯೀಕರಿಸಿದಾಗ, ಸಮತಲದಲ್ಲಿ ಇಲ್ಲದಂತೆ ಕಾಣಿಸಿದರೆ, ಅದನ್ನು ನಿರ್ವಹಿಸಲು ವಿಶೇಷ ಆಲ್ಗಾರಿಥಮ್ ಬೇಕಾಗಬಹುದು.\n", + "\n", + "

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

ಇನ್ಫೋಗ್ರಾಫಿಕ್: ದಾಸನಿ ಮಡಿಪಳ್ಳಿ
\n", + "\n", + "> 🎓 ['ದೂರಗಳು'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf)\n", + ">\n", + "> ಕ್ಲಸ್ಟರ್‌ಗಳು ಅವುಗಳ ದೂರ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುತ್ತವೆ, ಉದಾ. ಪಾಯಿಂಟ್‌ಗಳ ನಡುವಿನ ದೂರಗಳು. ಈ ದೂರವನ್ನು ಕೆಲವು ವಿಧಾನಗಳಲ್ಲಿ ಅಳೆಯಬಹುದು. ಯೂಕ್ಲಿಡಿಯನ್ ಕ್ಲಸ್ಟರ್‌ಗಳು ಪಾಯಿಂಟ್ ಮೌಲ್ಯಗಳ ಸರಾಸರಿಯಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುತ್ತವೆ ಮತ್ತು 'ಸೆಂಟ್ರಾಯ್ಡ್' ಅಥವಾ ಕೇಂದ್ರ ಬಿಂದುವನ್ನು ಹೊಂದಿರುತ್ತವೆ. ದೂರಗಳನ್ನು ಆ ಸೆಂಟ್ರಾಯ್ಡ್‌ಗೆ ಇರುವ ದೂರದಿಂದ ಅಳೆಯಲಾಗುತ್ತದೆ. ನಾನ್-ಯೂಕ್ಲಿಡಿಯನ್ ದೂರಗಳು 'ಕ್ಲಸ್ಟ್ರಾಯ್ಡ್‌ಗಳು'ಗೆ ಸಂಬಂಧಿಸಿದವು, ಇವು ಇತರ ಪಾಯಿಂಟ್‌ಗಳಿಗೆ ಅತ್ಯಂತ ಸಮೀಪದಲ್ಲಿರುವ ಪಾಯಿಂಟ್‌ಗಳು. ಕ್ಲಸ್ಟ್ರಾಯ್ಡ್‌ಗಳನ್ನು ವಿವಿಧ ರೀತಿಯಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು.\n", + ">\n", + "> 🎓 ['ನಿಬಂಧಿತ'](https://wikipedia.org/wiki/Constrained_clustering)\n", + ">\n", + "> [ನಿಬಂಧಿತ ಕ್ಲಸ್ಟರಿಂಗ್](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) ಈ ಅನಿಯಂತ್ರಿತ ವಿಧಾನಕ್ಕೆ 'ಅರ್ಧ-ನಿಯಂತ್ರಿತ' ಕಲಿಕೆಯನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ. ಪಾಯಿಂಟ್‌ಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು 'ಕನೆಕ್ಟ್ ಆಗಬಾರದು' ಅಥವಾ 'ಕನೆಕ್ಟ್ ಆಗಬೇಕು' ಎಂದು ಗುರುತಿಸಲಾಗುತ್ತದೆ, ಹೀಗಾಗಿ ಕೆಲವು ನಿಯಮಗಳನ್ನು ಡೇಟಾಸೆಟ್ ಮೇಲೆ ಜಾರಿಗೊಳಿಸಲಾಗುತ್ತದೆ.\n", + ">\n", + "> ಉದಾಹರಣೆ: ಒಂದು ಆಲ್ಗಾರಿಥಮ್ ಲೇಬಲ್ ಮಾಡದ ಅಥವಾ ಅರ್ಧ ಲೇಬಲ್ ಮಾಡಲಾದ ಡೇಟಾ ಬ್ಯಾಚ್ ಮೇಲೆ ಮುಕ್ತವಾಗಿದ್ದರೆ, ಅದು ಉತ್ಪಾದಿಸುವ ಕ್ಲಸ್ಟರ್‌ಗಳು ಕಡಿಮೆ ಗುಣಮಟ್ಟದಿರಬಹುದು. ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ಕ್ಲಸ್ಟರ್‌ಗಳು 'ವೃತ್ತಾಕಾರದ ಸಂಗೀತ ವಸ್ತುಗಳು', 'ಚೌಕಾಕಾರದ ಸಂಗೀತ ವಸ್ತುಗಳು', 'ತ್ರಿಭುಜಾಕಾರದ ವಸ್ತುಗಳು' ಮತ್ತು 'ಕುಕೀಸ್' ಎಂದು ಗುಂಪುಮಾಡಬಹುದು. ಕೆಲವು ನಿಯಮಗಳು ಅಥವಾ ನಿಯಂತ್ರಣಗಳು (\"ವಸ್ತು ಪ್ಲಾಸ್ಟಿಕ್‌ನಿಂದ ಮಾಡಲ್ಪಟ್ಟಿರಬೇಕು\", \"ವಸ್ತು ಸಂಗೀತ ಉತ್ಪಾದಿಸಲು ಸಾಧ್ಯವಾಗಬೇಕು\") ನೀಡಿದರೆ, ಆಲ್ಗಾರಿಥಮ್ ಉತ್ತಮ ಆಯ್ಕೆಗಳನ್ನು ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n", + ">\n", + "> 🎓 'ಸಾಂದ್ರತೆ'\n", + ">\n", + "> 'ಶಬ್ದ' ಇರುವ ಡೇಟಾವನ್ನು 'ಸಾಂದ್ರ' ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಪ್ರತಿ ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿನ ಪಾಯಿಂಟ್‌ಗಳ ನಡುವಿನ ದೂರಗಳು ಪರಿಶೀಲನೆಯಾಗುವಾಗ ಹೆಚ್ಚು ಅಥವಾ ಕಡಿಮೆ ಸಾಂದ್ರವಾಗಿರಬಹುದು, ಅಥವಾ 'ಘನತೆ' ಅಥವಾ 'ಜನಸಂಖ್ಯೆ' ಇದ್ದಂತೆ ಕಾಣಬಹುದು, ಹೀಗಾಗಿ ಈ ಡೇಟಾವನ್ನು ಸೂಕ್ತ ಕ್ಲಸ್ಟರಿಂಗ್ ವಿಧಾನದಿಂದ ವಿಶ್ಲೇಷಿಸಬೇಕಾಗುತ್ತದೆ. [ಈ ಲೇಖನ](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) K-ಮೀನ್ಸ್ ಕ್ಲಸ್ಟರಿಂಗ್ ಮತ್ತು HDBSCAN ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಅಸಮಾನ ಸಾಂದ್ರತೆ ಇರುವ ಶಬ್ದ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಅನ್ವೇಷಿಸುವ ವ್ಯತ್ಯಾಸವನ್ನು ತೋರಿಸುತ್ತದೆ.\n", + "\n", + "ಈ [ಕಲಿಕೆ ಘಟಕದಲ್ಲಿ](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott) ಕ್ಲಸ್ಟರಿಂಗ್ ತಂತ್ರಗಳನ್ನು ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ತಿಳಿದುಕೊಳ್ಳಿ\n", + "\n", + "### **ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗಳು**\n", + "\n", + "100ಕ್ಕೂ ಹೆಚ್ಚು ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗಳಿವೆ, ಮತ್ತು ಅವುಗಳ ಬಳಕೆ ಡೇಟಾದ ಸ್ವಭಾವದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಕೆಲವು ಪ್ರಮುಖಗಳನ್ನು ಚರ್ಚಿಸೋಣ:\n", + "\n", + "- **ಹೈರಾರ್ಕಿಕಲ್ ಕ್ಲಸ್ಟರಿಂಗ್**. ಒಂದು ವಸ್ತುವನ್ನು ಸಮೀಪದ ವಸ್ತುವಿನ ಹತ್ತಿರತೆ ಆಧರಿಸಿ ವರ್ಗೀಕರಿಸಿದರೆ, ಕ್ಲಸ್ಟರ್‌ಗಳು ಸದಸ್ಯರ ದೂರದ ಆಧಾರದ ಮೇಲೆ ರಚಿಸಲಾಗುತ್ತವೆ. ಹೈರಾರ್ಕಿಕಲ್ ಕ್ಲಸ್ಟರಿಂಗ್ ಎರಡು ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಪುನರಾವರ್ತಿತವಾಗಿ ಸಂಯೋಜಿಸುವ ಮೂಲಕ ಗುರುತಿಸಲಾಗುತ್ತದೆ.\n", + "\n", + "

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

ಇನ್ಫೋಗ್ರಾಫಿಕ್: ದಾಸನಿ ಮಡಿಪಳ್ಳಿ
\n", + "\n", + "- **ಸೆಂಟ್ರಾಯ್ಡ್ ಕ್ಲಸ್ಟರಿಂಗ್**. ಈ ಜನಪ್ರಿಯ ಆಲ್ಗಾರಿಥಮ್ 'k' ಅಥವಾ ರಚಿಸಬೇಕಾದ ಕ್ಲಸ್ಟರ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಆಯ್ಕೆಮಾಡಬೇಕಾಗುತ್ತದೆ, ನಂತರ ಆಲ್ಗಾರಿಥಮ್ ಕ್ಲಸ್ಟರ್‌ನ ಕೇಂದ್ರ ಬಿಂದುವನ್ನು ನಿರ್ಧರಿಸಿ ಆ ಬಿಂದುವಿನ ಸುತ್ತಲೂ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ. [ಕೆ-ಮೀನ್ಸ್ ಕ್ಲಸ್ಟರಿಂಗ್](https://wikipedia.org/wiki/K-means_clustering) ಸೆಂಟ್ರಾಯ್ಡ್ ಕ್ಲಸ್ಟರಿಂಗ್‌ನ ಜನಪ್ರಿಯ ಆವೃತ್ತಿಯಾಗಿದೆ, ಇದು ಡೇಟಾ ಸೆಟ್ ಅನ್ನು ಪೂರ್ವನಿರ್ಧರಿತ K ಗುಂಪುಗಳಾಗಿ ವಿಭಜಿಸುತ್ತದೆ. ಕೇಂದ್ರವನ್ನು ಸಮೀಪದ ಸರಾಸರಿ ಮೂಲಕ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ, ಹೀಗಾಗಿ ಹೆಸರಾಗಿದೆ. ಕ್ಲಸ್ಟರ್‌ನಿಂದ ಚದರ ದೂರವನ್ನು ಕನಿಷ್ಠಗೊಳಿಸಲಾಗುತ್ತದೆ.\n", + "\n", + "

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

ಇನ್ಫೋಗ್ರಾಫಿಕ್: ದಾಸನಿ ಮಡಿಪಳ್ಳಿ
\n", + "\n", + "- **ವಿತರಣಾ ಆಧಾರಿತ ಕ್ಲಸ್ಟರಿಂಗ್**. ಸಾಂಖ್ಯಿಕ ಮಾದರಿಗೊಳಿಸುವಿಕೆಯಲ್ಲಿ ಆಧಾರಿತ, ವಿತರಣಾ ಆಧಾರಿತ ಕ್ಲಸ್ಟರಿಂಗ್ ಡೇಟಾ ಪಾಯಿಂಟ್ ಒಂದು ಕ್ಲಸ್ಟರ್‌ಗೆ ಸೇರಿದ ಸಾಧ್ಯತೆಯನ್ನು ನಿರ್ಧರಿಸಿ ಅದಕ್ಕೆ ಅನುಗುಣವಾಗಿ ನಿಯೋಜಿಸುತ್ತದೆ. ಗಾಸಿಯನ್ ಮಿಶ್ರಣ ವಿಧಾನಗಳು ಈ ಪ್ರಕಾರಕ್ಕೆ ಸೇರಿವೆ.\n", + "\n", + "- **ಸಾಂದ್ರತೆ ಆಧಾರಿತ ಕ್ಲಸ್ಟರಿಂಗ್**. ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಅವುಗಳ ಸಾಂದ್ರತೆ ಅಥವಾ ಪರಸ್ಪರ ಗುಂಪುಮಾಡುವಿಕೆಯ ಆಧಾರದ ಮೇಲೆ ಕ್ಲಸ್ಟರ್‌ಗಳಿಗೆ ನಿಯೋಜಿಸಲಾಗುತ್ತದೆ. ಗುಂಪಿನಿಂದ ದೂರವಿರುವ ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಹೊರಗಿನ ಅಥವಾ ಶಬ್ದ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. DBSCAN, ಮೀನ್-ಶಿಫ್ಟ್ ಮತ್ತು OPTICS ಈ ಪ್ರಕಾರದ ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಸೇರಿವೆ.\n", + "\n", + "- **ಗ್ರಿಡ್ ಆಧಾರಿತ ಕ್ಲಸ್ಟರಿಂಗ್**. ಬಹು-ಮಾನದಂಡ ಡೇಟಾಸೆಟ್‌ಗಳಿಗೆ, ಗ್ರಿಡ್ ರಚಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಡೇಟಾವನ್ನು ಗ್ರಿಡ್‌ನ ಸೆಲ್‌ಗಳ ನಡುವೆ ಹಂಚಲಾಗುತ್ತದೆ, ಹೀಗಾಗಿ ಕ್ಲಸ್ಟರ್‌ಗಳು ರಚಿಸಲಾಗುತ್ತವೆ.\n", + "\n", + "ಕ್ಲಸ್ಟರಿಂಗ್ ಬಗ್ಗೆ ತಿಳಿಯಲು ಉತ್ತಮ ಮಾರ್ಗವೆಂದರೆ ಅದನ್ನು ಸ್ವತಃ ಪ್ರಯತ್ನಿಸುವುದು, ಹಾಗಾಗಿ ನೀವು ಈ ಅಭ್ಯಾಸದಲ್ಲಿ ಅದನ್ನು ಮಾಡುತ್ತೀರಿ.\n", + "\n", + "ಈ ಘಟಕವನ್ನು ಮುಗಿಸಲು ಕೆಲವು ಪ್ಯಾಕೇಜ್‌ಗಳು ಬೇಕಾಗುತ್ತವೆ. ನೀವು ಅವುಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬಹುದು: `install.packages(c('tidyverse', 'tidymodels', 'DataExplorer', 'summarytools', 'plotly', 'paletteer', 'corrplot', 'patchwork'))`\n", + "\n", + "ಬದಲಾಗಿ, ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ಈ ಘಟಕವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಬೇಕಾದ ಪ್ಯಾಕೇಜ್‌ಗಳಿದ್ದರೆ ಅವುಗಳನ್ನು ಪರಿಶೀಲಿಸಿ, ಇಲ್ಲದಿದ್ದರೆ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\r\n", + "\r\n", + "pacman::p_load('tidyverse', 'tidymodels', 'DataExplorer', 'summarytools', 'plotly', 'paletteer', 'corrplot', 'patchwork')\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## ವ್ಯಾಯಾಮ - ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಗುಂಪುಮಾಡಿ\n", + "\n", + "ಗುಂಪುಮಾಡುವಿಕೆ ಎಂಬ ತಂತ್ರಜ್ಞಾನವು ಸರಿಯಾದ ದೃಶ್ಯೀಕರಣದಿಂದ ಬಹಳ ಸಹಾಯವಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ನಮ್ಮ ಸಂಗೀತ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸೋಣ. ಈ ವ್ಯಾಯಾಮವು ಈ ಡೇಟಾದ ಸ್ವಭಾವಕ್ಕೆ ಯಾವ ಗುಂಪುಮಾಡುವಿಕೆ ವಿಧಾನವನ್ನು ನಾವು ಅತ್ಯಂತ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಳಸಬೇಕು ಎಂದು ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n", + "\n", + "ಡೇಟಾವನ್ನು ಆಮದು ಮಾಡುವ ಮೂಲಕ ನಾವು ತಕ್ಷಣ ಪ್ರಾರಂಭಿಸೋಣ.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load the core tidyverse and make it available in your current R session\r\n", + "library(tidyverse)\r\n", + "\r\n", + "# Import the data into a tibble\r\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/5-Clustering/data/nigerian-songs.csv\")\r\n", + "\r\n", + "# View the first 5 rows of the data set\r\n", + "df %>% \r\n", + " slice_head(n = 5)\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಕೆಲವೊಮ್ಮೆ, ನಾವು ನಮ್ಮ ಡೇಟಾದ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಮಾಹಿತಿಯನ್ನು ಬಯಸಬಹುದು. ನಾವು [*glimpse()*](https://pillar.r-lib.org/reference/glimpse.html) ಫಂಕ್ಷನ್ ಬಳಸಿ `ಡೇಟಾ` ಮತ್ತು `ಅದರ ರಚನೆ` ಅನ್ನು ನೋಡಬಹುದು:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Glimpse into the data set\r\n", + "df %>% \r\n", + " glimpse()\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಚೆನ್ನಾಗಿದೆ!💪\n", + "\n", + "ನಾವು ಗಮನಿಸಬಹುದು `glimpse()` ನಿಮಗೆ ಒಟ್ಟು ಸಾಲುಗಳ ಸಂಖ್ಯೆ (ನಿರೀಕ್ಷಣೆಗಳು) ಮತ್ತು ಕಾಲಮ್‌ಗಳು (ಚರಗಳು) ನೀಡುತ್ತದೆ, ನಂತರ, ಪ್ರತಿ ಚರದ ಹೆಸರು ನಂತರ ಸಾಲಿನಲ್ಲಿ ಪ್ರತಿ ಚರದ ಮೊದಲ ಕೆಲವು ಎಂಟ್ರಿಗಳನ್ನು ನೀಡುತ್ತದೆ. ಜೊತೆಗೆ, ಚರದ *ಡೇಟಾ ಪ್ರಕಾರ* ಪ್ರತಿ ಚರದ ಹೆಸರಿನ ನಂತರ ತಕ್ಷಣ `< >` ಒಳಗೆ ನೀಡಲಾಗಿದೆ.\n", + "\n", + "`DataExplorer::introduce()` ಈ ಮಾಹಿತಿಯನ್ನು ಸುಂದರವಾಗಿ ಸಾರಬಹುದು:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Describe basic information for our data\r\n", + "df %>% \r\n", + " introduce()\r\n", + "\r\n", + "# A visual display of the same\r\n", + "df %>% \r\n", + " plot_intro()\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಅದ್ಭುತ! ನಮ್ಮ ಡೇಟಾದಲ್ಲಿ ಯಾವುದೇ ಮಿಸ್ಸಿಂಗ್ ಮೌಲ್ಯಗಳಿಲ್ಲ ಎಂದು ನಾವು ಈಗಾಗಲೇ ಕಲಿತಿದ್ದೇವೆ.\n", + "\n", + "ನಾವು ಇದರಲ್ಲಿ ಇದ್ದಾಗ, ಸಾಮಾನ್ಯ ಕೇಂದ್ರ ಪ್ರವೃತ್ತಿ ಅಂಕಿಅಂಶಗಳನ್ನು (ಉದಾ: [ಸರಾಸರಿ](https://en.wikipedia.org/wiki/Arithmetic_mean) ಮತ್ತು [ಮಧ್ಯಮ](https://en.wikipedia.org/wiki/Median)) ಮತ್ತು ವಿಸ್ತರಣೆಯ ಅಳತೆಗಳನ್ನು (ಉದಾ: [ಪ್ರಮಾಣಿತ ವ್ಯತ್ಯಾಸ](https://en.wikipedia.org/wiki/Standard_deviation)) `summarytools::descr()` ಬಳಸಿ ಅನ್ವೇಷಿಸಬಹುದು.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Describe common statistics\r\n", + "df %>% \r\n", + " descr(stats = \"common\")\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಡೇಟಾದ ಸಾಮಾನ್ಯ ಮೌಲ್ಯಗಳನ್ನು ನೋಡೋಣ. ಜನಪ್ರಿಯತೆ `0` ಆಗಿರಬಹುದು, ಇದು ರ್ಯಾಂಕಿಂಗ್ ಇಲ್ಲದ ಹಾಡುಗಳನ್ನು ತೋರಿಸುತ್ತದೆ. ಅವುಗಳನ್ನು ನಾವು ಶೀಘ್ರದಲ್ಲೇ ತೆಗೆದುಹಾಕುತ್ತೇವೆ.\n", + "\n", + "> 🤔 ನಾವು ಕ್ಲಸ್ಟರಿಂಗ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದರೆ, ಲೇಬಲ್ ಮಾಡಲಾದ ಡೇಟಾವನ್ನು ಅಗತ್ಯವಿಲ್ಲದ ಅನ್‌ಸೂಪರ್ವೈಸ್ಡ್ ವಿಧಾನ, ನಾವು ಈ ಡೇಟಾವನ್ನು ಲೇಬಲ್‌ಗಳೊಂದಿಗೆ ಏಕೆ ತೋರಿಸುತ್ತಿದ್ದೇವೆ? ಡೇಟಾ ಅನ್ವೇಷಣಾ ಹಂತದಲ್ಲಿ ಅವು ಸಹಾಯಕವಾಗುತ್ತವೆ, ಆದರೆ ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಅವು ಅಗತ್ಯವಿಲ್ಲ.\n", + "\n", + "### 1. ಜನಪ್ರಿಯ ಶೈಲಿಗಳನ್ನು ಅನ್ವೇಷಿಸಿ\n", + "\n", + "ಹಾಗಾದರೆ ನಾವು ಮುಂದುವರಿದು, ಅದು ಕಾಣಿಸುವ ಸಂದರ್ಭಗಳ ಎಣಿಕೆಯನ್ನು ಮಾಡಿ ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಶೈಲಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯೋಣ 🎶.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Popular genres\r\n", + "top_genres <- df %>% \r\n", + " count(artist_top_genre, sort = TRUE) %>% \r\n", + "# Encode to categorical and reorder the according to count\r\n", + " mutate(artist_top_genre = factor(artist_top_genre) %>% fct_inorder())\r\n", + "\r\n", + "# Print the top genres\r\n", + "top_genres\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಅದು ಚೆನ್ನಾಗಿ ನಡೆದಿತು! ಅವರು ಹೇಳುತ್ತಾರೆ ಒಂದು ಚಿತ್ರವು ಡೇಟಾ ಫ್ರೇಮ್‌ನ ಸಾವಿರ ಸಾಲುಗಳ ಮೌಲ್ಯವಿದೆ (ನಿಜವಾಗಿಯೂ ಯಾರೂ ಎಂದಿಲ್ಲ 😅). ಆದರೆ ನೀವು ಅದರ ಅರ್ಥವನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುತ್ತೀರಿ, ಅಲ್ಲವೇ?\n", + "\n", + "ವರ್ಗೀಕೃತ ಡೇಟಾವನ್ನು (ಅಕ್ಷರ ಅಥವಾ ಫ್ಯಾಕ್ಟರ್ ಚರಗಳು) ದೃಶ್ಯೀಕರಿಸುವ ಒಂದು ವಿಧಾನವೆಂದರೆ ಬಾರ್ಪ್ಲಾಟ್‌ಗಳನ್ನು ಬಳಸುವುದು. ಟಾಪ್ 10 ಶೈಲಿಗಳ ಬಾರ್ಪ್ಲಾಟ್ ಅನ್ನು ಮಾಡೋಣ:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Change the default gray theme\r\n", + "theme_set(theme_light())\r\n", + "\r\n", + "# Visualize popular genres\r\n", + "top_genres %>%\r\n", + " slice(1:10) %>% \r\n", + " ggplot(mapping = aes(x = artist_top_genre, y = n,\r\n", + " fill = artist_top_genre)) +\r\n", + " geom_col(alpha = 0.8) +\r\n", + " paletteer::scale_fill_paletteer_d(\"rcartocolor::Vivid\") +\r\n", + " ggtitle(\"Top genres\") +\r\n", + " theme(plot.title = element_text(hjust = 0.5),\r\n", + " # Rotates the X markers (so we can read them)\r\n", + " axis.text.x = element_text(angle = 90))\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಈಗ ನಾವು `missing` ಶೈಲಿಗಳನ್ನು ಗುರುತಿಸುವುದು ಬಹಳ ಸುಲಭವಾಗಿದೆ 🧐!\n", + "\n", + "> ಒಳ್ಳೆಯ ದೃಶ್ಯೀಕರಣವು ನೀವು ನಿರೀಕ್ಷಿಸದ ವಿಷಯಗಳನ್ನು ತೋರಿಸುತ್ತದೆ, ಅಥವಾ ಡೇಟಾ ಬಗ್ಗೆ ಹೊಸ ಪ್ರಶ್ನೆಗಳನ್ನು ಎತ್ತಿಹಿಡಿಯುತ್ತದೆ - ಹ್ಯಾಡ್ಲಿ ವಿಕ್‌ಹ್ಯಾಮ್ ಮತ್ತು ಗ್ಯಾರೆಟ್ ಗ್ರೋಲೆಮಂಡ್, [R For Data Science](https://r4ds.had.co.nz/introduction.html)\n", + "\n", + "ಗಮನಿಸಿ, ಮೇಲಿನ ಶೈಲಿಯನ್ನು `Missing` ಎಂದು ವರ್ಣಿಸಿದಾಗ, ಅದು Spotify ಅದನ್ನು ವರ್ಗೀಕರಿಸದಿರುವುದನ್ನು ಅರ್ಥಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದನ್ನು ತೆಗೆದುಹಾಕೋಣ.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Visualize popular genres\r\n", + "top_genres %>%\r\n", + " filter(artist_top_genre != \"Missing\") %>% \r\n", + " slice(1:10) %>% \r\n", + " ggplot(mapping = aes(x = artist_top_genre, y = n,\r\n", + " fill = artist_top_genre)) +\r\n", + " geom_col(alpha = 0.8) +\r\n", + " paletteer::scale_fill_paletteer_d(\"rcartocolor::Vivid\") +\r\n", + " ggtitle(\"Top genres\") +\r\n", + " theme(plot.title = element_text(hjust = 0.5),\r\n", + " # Rotates the X markers (so we can read them)\r\n", + " axis.text.x = element_text(angle = 90))\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಸಣ್ಣ ಡೇಟಾ ಅನ್ವೇಷಣೆಯಿಂದ, ಈ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಟಾಪ್ ಮೂರು ಶೈಲಿಗಳು ಪ್ರಭುತ್ವ ಹೊಂದಿವೆ ಎಂದು ತಿಳಿದುಕೊಳ್ಳಬಹುದು. ನಾವು `afro dancehall`, `afropop`, ಮತ್ತು `nigerian pop` ಮೇಲೆ ಗಮನಹರಿಸೋಣ, ಜೊತೆಗೆ 0 ಜನಪ್ರಿಯತೆ ಮೌಲ್ಯವಿರುವ ಯಾವುದೇ ವಸ್ತುವನ್ನು ತೆಗೆದುಹಾಕಲು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಫಿಲ್ಟರ್ ಮಾಡೋಣ (ಅರ್ಥಾತ್ ಅದು ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಜನಪ್ರಿಯತೆಯೊಂದಿಗೆ ವರ್ಗೀಕರಿಸಲಾಗಿಲ್ಲ ಮತ್ತು ನಮ್ಮ ಉದ್ದೇಶಗಳಿಗೆ ಶಬ್ದ ಎಂದು ಪರಿಗಣಿಸಬಹುದು):\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "nigerian_songs <- df %>% \r\n", + " # Concentrate on top 3 genres\r\n", + " filter(artist_top_genre %in% c(\"afro dancehall\", \"afropop\",\"nigerian pop\")) %>% \r\n", + " # Remove unclassified observations\r\n", + " filter(popularity != 0)\r\n", + "\r\n", + "\r\n", + "\r\n", + "# Visualize popular genres\r\n", + "nigerian_songs %>%\r\n", + " count(artist_top_genre) %>%\r\n", + " ggplot(mapping = aes(x = artist_top_genre, y = n,\r\n", + " fill = artist_top_genre)) +\r\n", + " geom_col(alpha = 0.8) +\r\n", + " paletteer::scale_fill_paletteer_d(\"ggsci::category10_d3\") +\r\n", + " ggtitle(\"Top genres\") +\r\n", + " theme(plot.title = element_text(hjust = 0.5))\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ನಮ್ಮ ಡೇಟಾ ಸೆಟ್‌ನ ಸಂಖ್ಯಾತ್ಮಕ ಚರಗಳ ನಡುವೆ ಯಾವುದೇ ಸ್ಪಷ್ಟ ರೇಖೀಯ ಸಂಬಂಧವಿದೆಯೇ ಎಂದು ನೋಡೋಣ. ಈ ಸಂಬಂಧವನ್ನು ಗಣಿತೀಯವಾಗಿ [ಸಂಬಂಧಿತ ಅಂಕಿ](https://en.wikipedia.org/wiki/Correlation) ಮೂಲಕ ಪ್ರಮಾಣೀಕರಿಸಲಾಗುತ್ತದೆ.\n", + "\n", + "ಸಂಬಂಧಿತ ಅಂಕಿ -1 ಮತ್ತು 1 ನಡುವಿನ ಮೌಲ್ಯವಾಗಿದ್ದು, ಸಂಬಂಧದ ಬಲವನ್ನು ಸೂಚಿಸುತ್ತದೆ. 0 ಕ್ಕಿಂತ ಮೇಲ್ಪಟ್ಟ ಮೌಲ್ಯಗಳು *ಧನಾತ್ಮಕ* ಸಂಬಂಧವನ್ನು ಸೂಚಿಸುತ್ತವೆ (ಒಂದು ಚರದ ಹೆಚ್ಚಿನ ಮೌಲ್ಯಗಳು ಇನ್ನೊಂದು ಚರದ ಹೆಚ್ಚಿನ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಹೊಂದಿಕೊಳ್ಳುವ ಸಾಧ್ಯತೆ), ಮತ್ತು 0 ಕ್ಕಿಂತ ಕೆಳಗಿನ ಮೌಲ್ಯಗಳು *ನಕಾರಾತ್ಮಕ* ಸಂಬಂಧವನ್ನು ಸೂಚಿಸುತ್ತವೆ (ಒಂದು ಚರದ ಹೆಚ್ಚಿನ ಮೌಲ್ಯಗಳು ಇನ್ನೊಂದು ಚರದ ಕಡಿಮೆ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಹೊಂದಿಕೊಳ್ಳುವ ಸಾಧ್ಯತೆ).\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Narrow down to numeric variables and fid correlation\r\n", + "corr_mat <- nigerian_songs %>% \r\n", + " select(where(is.numeric)) %>% \r\n", + " cor()\r\n", + "\r\n", + "# Visualize correlation matrix\r\n", + "corrplot(corr_mat, order = 'AOE', col = c('white', 'black'), bg = 'gold2') \r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಡೇಟಾ ಬಲವಾಗಿ ಸಂಬಂಧಿತವಿಲ್ಲ, ಹೊರತು `energy` ಮತ್ತು `loudness` ನಡುವೆ, ಇದು ಅರ್ಥವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಗಟ್ಟಿಯಾದ ಸಂಗೀತವು ಸಾಮಾನ್ಯವಾಗಿ ಸಾಕಷ್ಟು ಶಕ್ತಿಶಾಲಿಯಾಗಿರುತ್ತದೆ. `Popularity` ಗೆ `release date` ಗೆ ಸಂಬಂಧವಿದೆ, ಇದು ಸಹ ಅರ್ಥವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಇತ್ತೀಚಿನ ಹಾಡುಗಳು ಬಹುಶಃ ಹೆಚ್ಚು ಜನಪ್ರಿಯವಾಗಿರುತ್ತವೆ. Length ಮತ್ತು energy ಕೂಡ ಸಂಬಂಧ ಹೊಂದಿರುವಂತೆ ತೋರುತ್ತದೆ.\n", + "\n", + "ಈ ಡೇಟಾದಿಂದ ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗೋರಿದಮ್ ಏನು ಮಾಡಬಹುದು ಎಂದು ನೋಡುವುದು ಆಸಕ್ತಿದಾಯಕವಾಗಿರುತ್ತದೆ!\n", + "\n", + "> 🎓 ಗಮನಿಸಿ, ಸಂಬಂಧವು ಕಾರಣವಲ್ಲ ಎಂದು ಸೂಚಿಸುವುದಿಲ್ಲ! ನಮ್ಮ ಬಳಿ ಸಂಬಂಧದ ಸಾಬೀತು ಇದೆ ಆದರೆ ಕಾರಣದ ಸಾಬೀತು ಇಲ್ಲ. ಒಂದು [ಮನರಂಜನೀಯ ವೆಬ್ ಸೈಟ್](https://tylervigen.com/spurious-correlations) ಈ ವಿಷಯವನ್ನು ಒತ್ತಿಹೇಳುವ ಕೆಲವು ದೃಶ್ಯಗಳನ್ನು ಹೊಂದಿದೆ.\n", + "\n", + "### 2. ಡೇಟಾ ವಿತರಣೆ ಅನ್ವೇಷಣೆ\n", + "\n", + "ನಾವು ಇನ್ನಷ್ಟು ಸೂಕ್ಷ್ಮ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳೋಣ. ಜನಪ್ರಿಯತೆಯ ಆಧಾರದ ಮೇಲೆ ಅವರ ಡ್ಯಾನ್ಸಬಿಲಿಟಿ ಗ್ರಹಣೆಯಲ್ಲಿ ಶೈಲಿಗಳು ಪ್ರಮುಖವಾಗಿ ವಿಭಿನ್ನವಾಗಿದೆಯೇ? ನಾವು ನಮ್ಮ ಟಾಪ್ ಮೂರು ಶೈಲಿಗಳ ಜನಪ್ರಿಯತೆ ಮತ್ತು ಡ್ಯಾನ್ಸಬಿಲಿಟಿ ಡೇಟಾ ವಿತರಣೆಯನ್ನು ನೀಡಲಾದ x ಮತ್ತು y ಅಕ್ಷಗಳ ಮೇಲೆ [density plots](https://www.khanacademy.org/math/ap-statistics/density-curves-normal-distribution-ap/density-curves/v/density-curves) ಬಳಸಿ ಪರಿಶೀಲಿಸೋಣ.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Perform 2D kernel density estimation\r\n", + "density_estimate_2d <- nigerian_songs %>% \r\n", + " ggplot(mapping = aes(x = popularity, y = danceability, color = artist_top_genre)) +\r\n", + " geom_density_2d(bins = 5, size = 1) +\r\n", + " paletteer::scale_color_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n", + " xlim(-20, 80) +\r\n", + " ylim(0, 1.2)\r\n", + "\r\n", + "# Density plot based on the popularity\r\n", + "density_estimate_pop <- nigerian_songs %>% \r\n", + " ggplot(mapping = aes(x = popularity, fill = artist_top_genre, color = artist_top_genre)) +\r\n", + " geom_density(size = 1, alpha = 0.5) +\r\n", + " paletteer::scale_fill_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n", + " paletteer::scale_color_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n", + " theme(legend.position = \"none\")\r\n", + "\r\n", + "# Density plot based on the danceability\r\n", + "density_estimate_dance <- nigerian_songs %>% \r\n", + " ggplot(mapping = aes(x = danceability, fill = artist_top_genre, color = artist_top_genre)) +\r\n", + " geom_density(size = 1, alpha = 0.5) +\r\n", + " paletteer::scale_fill_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n", + " paletteer::scale_color_paletteer_d(\"RSkittleBrewer::wildberry\")\r\n", + "\r\n", + "\r\n", + "# Patch everything together\r\n", + "library(patchwork)\r\n", + "density_estimate_2d / (density_estimate_pop + density_estimate_dance)\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ನಾವು ನೋಡುತ್ತೇವೆ, ಪ್ರಕಾರವನ್ನು ಪರಿಗಣಿಸದೆ, ಸುತ್ತುವರೆದ ವೃತ್ತಗಳು ಸರಿಹೊಂದಿವೆ. ಈ ಪ್ರಕಾರಕ್ಕಾಗಿ ನೈಜೀರಿಯನ್ ರುಚಿಗಳು ನೃತ್ಯ ಸಾಮರ್ಥ್ಯದ ನಿರ್ದಿಷ್ಟ ಮಟ್ಟದಲ್ಲಿ ಒಗ್ಗೂಡುತ್ತವೆಯೇ?\n", + "\n", + "ಸಾಮಾನ್ಯವಾಗಿ, ಮೂರು ಪ್ರಕಾರಗಳು ಅವರ ಜನಪ್ರಿಯತೆ ಮತ್ತು ನೃತ್ಯ ಸಾಮರ್ಥ್ಯದ ದೃಷ್ಟಿಯಿಂದ ಸರಿಹೊಂದಿವೆ. ಈ ಸಡಿಲವಾಗಿ ಸರಿಹೊಂದಿದ ಡೇಟಾದಲ್ಲಿ ಗುಂಪುಗಳನ್ನು ನಿರ್ಧರಿಸುವುದು ಒಂದು ಸವಾಲಾಗಿರುತ್ತದೆ. ಇದನ್ನು scatter plot ಬೆಂಬಲಿಸಬಹುದೇ ಎಂದು ನೋಡೋಣ.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# A scatter plot of popularity and danceability\r\n", + "scatter_plot <- nigerian_songs %>% \r\n", + " ggplot(mapping = aes(x = popularity, y = danceability, color = artist_top_genre, shape = artist_top_genre)) +\r\n", + " geom_point(size = 2, alpha = 0.8) +\r\n", + " paletteer::scale_color_paletteer_d(\"futurevisions::mars\")\r\n", + "\r\n", + "# Add a touch of interactivity\r\n", + "ggplotly(scatter_plot)\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಒಂದು ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ಅದೇ ಅಕ್ಷಗಳ ಮೇಲೆ ಸಮಾನವಾದ ಸಂಯೋಜನೆಯ ಮಾದರಿಯನ್ನು ತೋರಿಸುತ್ತದೆ.\n", + "\n", + "ಸಾಮಾನ್ಯವಾಗಿ, ಕ್ಲಸ್ಟರಿಂಗ್‌ಗಾಗಿ, ನೀವು ಡೇಟಾದ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ತೋರಿಸಲು ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್‌ಗಳನ್ನು ಬಳಸಬಹುದು, ಆದ್ದರಿಂದ ಈ ರೀತಿಯ ದೃಶ್ಯೀಕರಣವನ್ನು ನಿಪುಣರಾಗುವುದು ಬಹಳ ಉಪಯುಕ್ತವಾಗಿದೆ. ಮುಂದಿನ ಪಾಠದಲ್ಲಿ, ನಾವು ಈ ಫಿಲ್ಟರ್ ಮಾಡಿದ ಡೇಟಾವನ್ನು ತೆಗೆದುಕೊಂಡು k-ಮೀನ್ಸ್ ಕ್ಲಸ್ಟರಿಂಗ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಈ ಡೇಟಾದಲ್ಲಿ ಆಸಕ್ತಿದಾಯಕ ರೀತಿಯಲ್ಲಿ ಒಟ್ಟುಗೂಡುತ್ತಿರುವ ಗುಂಪುಗಳನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೇವೆ.\n", + "\n", + "## **🚀 ಸವಾಲು**\n", + "\n", + "ಮುಂದಿನ ಪಾಠದ ತಯಾರಿಗಾಗಿ, ನೀವು ಕಂಡುಹಿಡಿಯಬಹುದಾದ ಮತ್ತು ಉತ್ಪಾದನಾ ಪರಿಸರದಲ್ಲಿ ಬಳಸಬಹುದಾದ ವಿವಿಧ ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗಳ ಬಗ್ಗೆ ಚಾರ್ಟ್ ರಚಿಸಿ. ಕ್ಲಸ್ಟರಿಂಗ್ ಯಾವ ರೀತಿಯ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದೆ?\n", + "\n", + "## [**ಪಾಠೋತ್ತರ ಕ್ವಿಜ್**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/28/)\n", + "\n", + "## **ಪುನರ್ ವಿಮರ್ಶೆ & ಸ್ವಯಂ ಅಧ್ಯಯನ**\n", + "\n", + "ನೀವು ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗಳನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು, ನಾವು ಕಲಿತಂತೆ, ನಿಮ್ಮ ಡೇಟಾಸೆಟ್‌ನ ಸ್ವಭಾವವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಉತ್ತಮ. ಈ ವಿಷಯದ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [ಇಲ್ಲಿ](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html) ಓದಿ\n", + "\n", + "ಕ್ಲಸ್ಟರಿಂಗ್ ತಂತ್ರಗಳನ್ನು ನಿಮ್ಮ ಅರ್ಥವನ್ನು ಗಾಢಗೊಳಿಸಿ:\n", + "\n", + "- [ಟೈಡಿಮೋಡಲ್ಸ್ ಮತ್ತು ಸ್ನೇಹಿತರನ್ನು ಬಳಸಿ ಕ್ಲಸ್ಟರಿಂಗ್ ಮಾದರಿಗಳನ್ನು ತರಬೇತಿ ಮತ್ತು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ](https://rpubs.com/eR_ic/clustering)\n", + "\n", + "- ಬ್ರಾಡ್ಲಿ ಬೋಹ್ಮ್ಕೆ & ಬ್ರ್ಯಾಂಡನ್ ಗ್ರೀನ್‌ವೆಲ್, [*R ಜೊತೆಗೆ ಹ್ಯಾಂಡ್ಸ್-ಆನ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್*](https://bradleyboehmke.github.io/HOML/)*.*\n", + "\n", + "## **ಕಾರ್ಯ**\n", + "\n", + "[ಕ್ಲಸ್ಟರಿಂಗ್‌ಗಾಗಿ ಇತರ ದೃಶ್ಯೀಕರಣಗಳನ್ನು ಸಂಶೋಧಿಸಿ](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/assignment.md)\n", + "\n", + "## ಧನ್ಯವಾದಗಳು:\n", + "\n", + "[ಜೆನ್ ಲೂಪರ್](https://www.twitter.com/jenlooper) ಈ ಮಾಯಾಜಾಲದ ಮೂಲ ಪೈಥಾನ್ ಆವೃತ್ತಿಯನ್ನು ರಚಿಸಿದವರಿಗೆ ♥️\n", + "\n", + "[`ದಾಸನಿ ಮಡಿಪಳ್ಳಿ`](https://twitter.com/dasani_decoded) ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಸಂಪ್ರದಾಯಗಳನ್ನು ಹೆಚ್ಚು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ಸುಲಭವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಅದ್ಭುತ ಚಿತ್ರಣಗಳನ್ನು ರಚಿಸಿದವರಿಗೆ.\n", + "\n", + "ಸಂತೋಷಕರ ಅಧ್ಯಯನ,\n", + "\n", + "[ಎರಿಕ್](https://twitter.com/ericntay), ಗೋಲ್ಡ್ ಮೈಕ್ರೋಸಾಫ್ಟ್ ಲರ್ನ್ ವಿದ್ಯಾರ್ಥಿ ರಾಯಭಾರಿ.\n" + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "anaconda-cloud": "", + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "3.4.1" + }, + "coopTranslator": { + "original_hash": "99c36449cad3708a435f6798cfa39972", + "translation_date": "2025-12-19T17:02:20+00:00", + "source_file": "5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/kn/5-Clustering/1-Visualize/solution/notebook.ipynb b/translations/kn/5-Clustering/1-Visualize/solution/notebook.ipynb new file mode 100644 index 000000000..ddc27eb94 --- /dev/null +++ b/translations/kn/5-Clustering/1-Visualize/solution/notebook.ipynb @@ -0,0 +1,831 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ಸ್ಪೋಟಿಫೈಯಿಂದ ಸಂಗ್ರಹಿಸಿದ ನೈಜೀರಿಯನ್ ಸಂಗೀತ - ಒಂದು ವಿಶ್ಲೇಷಣೆ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: seaborn in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (0.11.2)\n", + "Requirement already satisfied: matplotlib>=2.2 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from seaborn) (3.5.0)\n", + "Requirement already satisfied: numpy>=1.15 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from seaborn) (1.21.4)\n", + "Requirement already satisfied: pandas>=0.23 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from seaborn) (1.3.4)\n", + "Requirement already satisfied: scipy>=1.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from seaborn) (1.7.2)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (4.28.1)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (2.4.7)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (1.3.2)\n", + "Requirement already satisfied: pillow>=6.2.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (8.4.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (0.11.0)\n", + "Requirement already satisfied: packaging>=20.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (21.2)\n", + "Requirement already satisfied: setuptools-scm>=4 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (6.3.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (2.8.2)\n", + "Requirement already satisfied: pytz>=2017.3 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from pandas>=0.23->seaborn) (2021.3)\n", + "Requirement already satisfied: six>=1.5 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from python-dateutil>=2.7->matplotlib>=2.2->seaborn) (1.16.0)\n", + "Requirement already satisfied: tomli>=1.0.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from setuptools-scm>=4->matplotlib>=2.2->seaborn) (1.2.2)\n", + "Requirement already satisfied: setuptools in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from setuptools-scm>=4->matplotlib>=2.2->seaborn) (59.1.1)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "!pip install seaborn" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
0SparkyMandy & The JungleCruel Santinoalternative r&b2019144000480.6660.85100.4200.5340000.1100-6.6990.0829133.0155
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
2LITT!LITT!AYLØindie r&b2018207758400.8360.27200.5640.0005370.1100-7.1270.0424130.0054
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
\n", + "
" + ], + "text/plain": [ + " name album \\\n", + "0 Sparky Mandy & The Jungle \n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "2 LITT! LITT! \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "0 Cruel Santino alternative r&b 2019 144000 48 \n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "2 AYLØ indie r&b 2018 207758 40 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "\n", + " speechiness tempo time_signature \n", + "0 0.0829 133.015 5 \n", + "1 0.3600 129.993 3 \n", + "2 0.0424 130.005 4 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv(\"../../data/nigerian-songs.csv\")\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಡೇಟಾಫ್ರೇಮ್ ಬಗ್ಗೆ ಮಾಹಿತಿ ಪಡೆಯಿರಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 530 entries, 0 to 529\n", + "Data columns (total 16 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 name 530 non-null object \n", + " 1 album 530 non-null object \n", + " 2 artist 530 non-null object \n", + " 3 artist_top_genre 530 non-null object \n", + " 4 release_date 530 non-null int64 \n", + " 5 length 530 non-null int64 \n", + " 6 popularity 530 non-null int64 \n", + " 7 danceability 530 non-null float64\n", + " 8 acousticness 530 non-null float64\n", + " 9 energy 530 non-null float64\n", + " 10 instrumentalness 530 non-null float64\n", + " 11 liveness 530 non-null float64\n", + " 12 loudness 530 non-null float64\n", + " 13 speechiness 530 non-null float64\n", + " 14 tempo 530 non-null float64\n", + " 15 time_signature 530 non-null int64 \n", + "dtypes: float64(8), int64(4), object(4)\n", + "memory usage: 66.4+ KB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಶೂನ್ಯ ಮೌಲ್ಯಗಳಿಗಾಗಿ ದ್ವಿಗುಣ ಪರಿಶೀಲನೆ ಮಾಡಿ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "name 0\n", + "album 0\n", + "artist 0\n", + "artist_top_genre 0\n", + "release_date 0\n", + "length 0\n", + "popularity 0\n", + "danceability 0\n", + "acousticness 0\n", + "energy 0\n", + "instrumentalness 0\n", + "liveness 0\n", + "loudness 0\n", + "speechiness 0\n", + "tempo 0\n", + "time_signature 0\n", + "dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಡೇಟಾದ ಸಾಮಾನ್ಯ ಮೌಲ್ಯಗಳನ್ನು ನೋಡಿ. ಜನಪ್ರಿಯತೆ '0' ಆಗಿರಬಹುದು ಎಂದು ಗಮನಿಸಿ - ಮತ್ತು ಆ ಮೌಲ್ಯ ಹೊಂದಿರುವ ಅನೇಕ ಸಾಲುಗಳಿವೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
release_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
count530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000
mean2015.390566222298.16981117.5075470.7416190.2654120.7606230.0163050.147308-4.9530110.130748116.4878643.986792
std3.13168839696.82225918.9922120.1175220.2083420.1485330.0903210.1235882.4641860.09293923.5186010.333701
min1998.00000089488.0000000.0000000.2550000.0006650.1110000.0000000.028300-19.3620000.02780061.6950003.000000
25%2014.000000199305.0000000.0000000.6810000.0895250.6690000.0000000.075650-6.2987500.059100102.9612504.000000
50%2016.000000218509.00000013.0000000.7610000.2205000.7845000.0000040.103500-4.5585000.097950112.7145004.000000
75%2017.000000242098.50000031.0000000.8295000.4030000.8757500.0002340.164000-3.3310000.177000125.0392504.000000
max2020.000000511738.00000073.0000000.9660000.9540000.9950000.9100000.8110000.5820000.514000206.0070005.000000
\n", + "
" + ], + "text/plain": [ + " release_date length popularity danceability acousticness \\\n", + "count 530.000000 530.000000 530.000000 530.000000 530.000000 \n", + "mean 2015.390566 222298.169811 17.507547 0.741619 0.265412 \n", + "std 3.131688 39696.822259 18.992212 0.117522 0.208342 \n", + "min 1998.000000 89488.000000 0.000000 0.255000 0.000665 \n", + "25% 2014.000000 199305.000000 0.000000 0.681000 0.089525 \n", + "50% 2016.000000 218509.000000 13.000000 0.761000 0.220500 \n", + "75% 2017.000000 242098.500000 31.000000 0.829500 0.403000 \n", + "max 2020.000000 511738.000000 73.000000 0.966000 0.954000 \n", + "\n", + " energy instrumentalness liveness loudness speechiness \\\n", + "count 530.000000 530.000000 530.000000 530.000000 530.000000 \n", + "mean 0.760623 0.016305 0.147308 -4.953011 0.130748 \n", + "std 0.148533 0.090321 0.123588 2.464186 0.092939 \n", + "min 0.111000 0.000000 0.028300 -19.362000 0.027800 \n", + "25% 0.669000 0.000000 0.075650 -6.298750 0.059100 \n", + "50% 0.784500 0.000004 0.103500 -4.558500 0.097950 \n", + "75% 0.875750 0.000234 0.164000 -3.331000 0.177000 \n", + "max 0.995000 0.910000 0.811000 0.582000 0.514000 \n", + "\n", + " tempo time_signature \n", + "count 530.000000 530.000000 \n", + "mean 116.487864 3.986792 \n", + "std 23.518601 0.333701 \n", + "min 61.695000 3.000000 \n", + "25% 102.961250 4.000000 \n", + "50% 112.714500 4.000000 \n", + "75% 125.039250 4.000000 \n", + "max 206.007000 5.000000 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ನಾವು ಶೈಲಿಗಳನ್ನು ಪರಿಶೀಲಿಸೋಣ. 'ಕಳೆದುಹೋಗಿದೆ' ಎಂದು ಪಟ್ಟಿಮಾಡಿರುವವುಗಳ ಸಂಖ್ಯೆ ಸಾಕಷ್ಟು ಇದೆ, ಅಂದರೆ ಅವು ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಯಾವುದೇ ಶೈಲಿಯಲ್ಲಿ ವರ್ಗೀಕರಿಸಲ್ಪಟ್ಟಿಲ್ಲ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top[:5].index,y=top[:5].values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "'Missing' ಶೈಲಿಗಳನ್ನು ತೆಗೆದುಹಾಕಿ, ಏಕೆಂದರೆ ಅದು Spotify ನಲ್ಲಿ ವರ್ಗೀಕರಿಸಲಾಗಿಲ್ಲ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df = df[df['artist_top_genre'] != 'Missing']\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಮೇಲಿನ ಮೂರು ಪ್ರಕಾರಗಳು ಡೇಟಾಸೆಟ್‌ನ ದೊಡ್ಡ ಭಾಗವನ್ನು ಹೊಂದಿವೆ, ಆದ್ದರಿಂದ ಅವುಗಳ ಮೇಲೆ ಗಮನಹರಿಸೋಣ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n", + "df = df[(df['popularity'] > 0)]\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಡೇಟಾ ಶಕ್ತಿಶಾಲಿಯಾಗಿ ಸಂಬಂಧ ಹೊಂದಿಲ್ಲ, ಎನರ್ಜಿ ಮತ್ತು ಲೌಡ್‌ನೆಸ್ ನಡುವೆ ಮಾತ್ರ, ಇದು ಅರ್ಥವಾಗುತ್ತದೆ. ಜನಪ್ರಿಯತೆ ಬಿಡುಗಡೆ ದಿನಾಂಕಕ್ಕೆ ಸಂಬಂಧಿಸಿದೆ, ಇದು ಸಹ ಅರ್ಥವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಇತ್ತೀಚಿನ ಹಾಡುಗಳು ಬಹುಶಃ ಹೆಚ್ಚು ಜನಪ್ರಿಯವಾಗಿರುತ್ತವೆ. ಉದ್ದ ಮತ್ತು ಎನರ್ಜಿ ನಡುವೆ ಸಂಬಂಧವಿದೆ ಎಂದು ತೋರುತ್ತದೆ - ಬಹುಶಃ ಚಿಕ್ಕ ಹಾಡುಗಳು ಹೆಚ್ಚು ಶಕ್ತಿಶಾಲಿಯಾಗಿರುತ್ತವೆ?\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "corrmat = df.corr()\n", + "f, ax = plt.subplots(figsize=(12, 9))\n", + "sns.heatmap(corrmat, vmax=.8, square=True);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಜನಪ್ರಿಯತೆಯ ಆಧಾರದ ಮೇಲೆ ಅವರ ನೃತ್ಯ ಸಾಮರ್ಥ್ಯದ ಗ್ರಹಿಕೆಯಲ್ಲಿ ಶೈಲಿಗಳು ಪ್ರಮುಖವಾಗಿ ಭಿನ್ನವಾಗಿದೆಯೇ? ನೀಡಲಾದ x ಮತ್ತು y ಅಕ್ಷಗಳ ಮೇಲೆ ಜನಪ್ರಿಯತೆ ಮತ್ತು ನೃತ್ಯ ಸಾಮರ್ಥ್ಯದ ನಮ್ಮ ಟಾಪ್ ಮೂರು ಶೈಲಿಗಳ ಡೇಟಾ ವಿತರಣೆ ಪರಿಶೀಲಿಸಿ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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OKvs+++/H25FAXz55ZcALFiwgJycHDl53mmA3GUnIyNzRFx22WXce++9fPPNN2g0GkaMGBEWj76YMWMGxcXFXHrppQQCAaZOncq1115LY2MjZrOZ559/nurqagoKCvjjH/+IwWDg8ccf584778Tv95OcnMwTTzwRPt+mTZv46KOP0Ov1/QZolTm1kAVJRkbmiCgoKODzzz/vtX3/lBR79uzpse+OO+7gjjvu6HWMXq/npZde6rW925uuL37961//KHIE/ZiQu+xkZGRkZE4K5BaSjIzMgJKamsrixYsP65jDLS9zaiC3kGRkZGRkTgpkQZKRkZGROSmQBUlGRkZG5qRAFiQZGRkZmZMCWZBkZGSOKU1NTdx6663H5FzPPfccixYtOibnkjn5kb3sZGRkjikJCQn861//Oibnuueee47JeWRODWRBkpGROSLWrl3LK6+8gk6no6ysjIKCAv7617/S3NzM9ddfz+LFi2lsbOTee+/FarWSn5/P+vXrWbZsGU6nk8cff5zS0lKCwSC33norF1xwQTgSeGdnJzNmzKC5uZlx48Yxd+5cnnnmGVavXo3VaiUqKooXXniBuLg4pkyZwtlnn83GjRtRKpU8++yzpKWl9bC1v3QVFRUVPProo3R2dmIwGHjooYcoKiriwQcfRBAESkpKcDgc3H777Vx88cUD8C3/uJAFSUbmFMW+bQn2rcdnPk7k8JlEFp1x0HKbN2/m66+/Jj4+nssvv5wVK1aQn58f3v/EE09w7rnncs0117BgwQK++OILAF566SWGDBnCU089hcPh4MorrwxHBW9qauKrr75CpVLx4IMPAlBVVUV5eTnvvfceCoWC+++/n88//5ybb76ZlpYWJk6cyCOPPMKTTz7Jf//73/Bx+9OdrmLx4sU88MADfP7559x3333cdtttzJ49my1btnDPPffw7bffhu147733aGtrY+7cuUyePJm4uLij/WqPiL6C1p6OyGNIMjIyR0xeXh6JiYkoFApycnKwWq099q9cuZI5c+YAcNZZZ2EymQBYtWoV7733HnPmzOGaa67B5XJRWloKwODBg3tE8gbIyMjggQce4MMPP+TJJ59ky5YtPVJdTJ06NWzPD23oZv90FU1NTTQ2NlJdXc3s2bMBGDFiBGazmfLycgDmzp2LWq0mMTGRUaNGsXHjxqP6ro6OH4cgyS0k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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.set_theme(style=\"ticks\")\n", + "\n", + "# Show the joint distribution using kernel density estimation\n", + "g = sns.jointplot(\n", + " data=df,\n", + " x=\"popularity\", y=\"danceability\", hue=\"artist_top_genre\",\n", + " kind=\"kde\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಸಾಮಾನ್ಯವಾಗಿ, ಮೂರು ಶೈಲಿಗಳು ಅವರ ಜನಪ್ರಿಯತೆ ಮತ್ತು ನೃತ್ಯ ಸಾಮರ್ಥ್ಯದ ದೃಷ್ಟಿಯಿಂದ ಹೊಂದಿಕೊಳ್ಳುತ್ತವೆ. ಅದೇ ಅಕ್ಷಗಳ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ಸಮಾನ ಸಂಯೋಜನೆಯ ಮಾದರಿಯನ್ನು ತೋರಿಸುತ್ತದೆ. ಪ್ರತಿ ಶೈಲಿಯ ಪ್ರಕಾರ ಡೇಟಾ ವಿತರಣೆ ಪರಿಶೀಲಿಸಲು ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ಪ್ರಯತ್ನಿಸಿ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages/seaborn/axisgrid.py:337: UserWarning: The `size` parameter has been renamed to `height`; please update your code.\n", + " warnings.warn(msg, UserWarning)\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.FacetGrid(df, hue=\"artist_top_genre\", size=5) \\\n", + " .map(plt.scatter, \"popularity\", \"danceability\") \\\n", + " .add_legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + }, + "kernelspec": { + "display_name": "Python 3.7.0 64-bit ('3.7')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.9" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "c61deff2839902ac8cb4ed411eb10fee", + "translation_date": "2025-12-19T16:58:04+00:00", + "source_file": "5-Clustering/1-Visualize/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/5-Clustering/2-K-Means/README.md b/translations/kn/5-Clustering/2-K-Means/README.md new file mode 100644 index 000000000..f54ecc0ab --- /dev/null +++ b/translations/kn/5-Clustering/2-K-Means/README.md @@ -0,0 +1,263 @@ + +# K-Means ಕ್ಲಸ್ಟರಿಂಗ್ + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು Scikit-learn ಮತ್ತು ನೀವು ಮೊದಲು ಆಮದು ಮಾಡಿದ ನೈಜೀರಿಯನ್ ಸಂಗೀತ ಡೇಟಾಸೆಟ್ ಬಳಸಿ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಹೇಗೆ ರಚಿಸುವುದು ಎಂದು ಕಲಿಯುತ್ತೀರಿ. ನಾವು ಕ್ಲಸ್ಟರಿಂಗ್‌ಗಾಗಿ K-Means ನ ಮೂಲಭೂತಗಳನ್ನು ಆವರಿಸುವೆವು. ನೀವು ಮೊದಲು ಪಾಠದಲ್ಲಿ ಕಲಿತಂತೆ, ಕ್ಲಸ್ಟರ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಅನೇಕ ವಿಧಾನಗಳಿವೆ ಮತ್ತು ನೀವು ಬಳಸುವ ವಿಧಾನ ನಿಮ್ಮ ಡೇಟಾದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ ಎಂದು ಗಮನದಲ್ಲಿಡಿ. ನಾವು K-Means ಅನ್ನು ಪ್ರಯತ್ನಿಸುವೆವು ಏಕೆಂದರೆ ಇದು ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಕ್ಲಸ್ಟರಿಂಗ್ ತಂತ್ರವಾಗಿದೆ. ಆರಂಭಿಸೋಣ! + +ನೀವು ಕಲಿಯಲಿರುವ ಪದಗಳು: + +- ಸಿಲ್ಹೌಟ್ ಸ್ಕೋರಿಂಗ್ +- ಎಲ್ಬೋ ವಿಧಾನ +- ಇನರ್ಷಿಯಾ +- ವ್ಯತ್ಯಾಸ + +## ಪರಿಚಯ + +[K-Means ಕ್ಲಸ್ಟರಿಂಗ್](https://wikipedia.org/wiki/K-means_clustering) ಸಿಗ್ನಲ್ ಪ್ರೊಸೆಸಿಂಗ್ ಕ್ಷೇತ್ರದಿಂದ ಪಡೆದ ವಿಧಾನವಾಗಿದೆ. ಇದು 'k' ಕ್ಲಸ್ಟರ್‌ಗಳಾಗಿ ಡೇಟಾ ಗುಂಪುಗಳನ್ನು ವಿಭಜಿಸಲು ಮತ್ತು ವಿಭಾಗಿಸಲು ಉಪಯೋಗಿಸಲಾಗುತ್ತದೆ, ನಿರೀಕ್ಷಣೆಯ ಸರಣಿಯನ್ನು ಬಳಸಿ. ಪ್ರತಿ ನಿರೀಕ್ಷಣೆ ನೀಡಲಾದ ಡೇಟಾಪಾಯಿಂಟ್ ಅನ್ನು ಅದರ ಸಮೀಪದ 'ಸರಾಸರಿ' ಅಥವಾ ಕ್ಲಸ್ಟರ್‌ನ ಕೇಂದ್ರ ಬಿಂದುವಿಗೆ ಸಮೀಪವಾಗಿರುವಂತೆ ಗುಂಪು ಮಾಡುತ್ತದೆ. + +ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು [ವೊರೋನಾಯ್ ಡಯಾಗ್ರಾಮ್‌ಗಳು](https://wikipedia.org/wiki/Voronoi_diagram) ಎಂದು ದೃಶ್ಯೀಕರಿಸಬಹುದು, ಇದರಲ್ಲಿ ಒಂದು ಬಿಂದುವು (ಅಥವಾ 'ಬೀಜ') ಮತ್ತು ಅದರ ಸಂಬಂಧಿತ ಪ್ರದೇಶವನ್ನು ಒಳಗೊಂಡಿದೆ. + +![voronoi diagram](../../../../translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.kn.png) + +> ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ + +K-Means ಕ್ಲಸ್ಟರಿಂಗ್ ಪ್ರಕ್ರಿಯೆ [ಮೂರು ಹಂತಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ](https://scikit-learn.org/stable/modules/clustering.html#k-means): + +1. ಆಲ್ಗಾರಿಥಮ್ ಡೇಟಾಸೆಟ್‌ನಿಂದ ಮಾದರಿಯನ್ನು ತೆಗೆದು k-ಸಂಖ್ಯೆಯ ಕೇಂದ್ರ ಬಿಂದುಗಳನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತದೆ. ಇದಾದ ನಂತರ, ಇದು ಲೂಪ್ ಮಾಡುತ್ತದೆ: + 1. ಪ್ರತಿ ಮಾದರಿಯನ್ನು ಸಮೀಪದ ಸೆಂಟ್ರಾಯ್ಡ್‌ಗೆ ನಿಯೋಜಿಸುತ್ತದೆ. + 2. ಹಿಂದಿನ ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳಿಗೆ ನಿಯೋಜಿಸಲಾದ ಎಲ್ಲಾ ಮಾದರಿಗಳ ಸರಾಸರಿ ಮೌಲ್ಯವನ್ನು ತೆಗೆದು ಹೊಸ ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳನ್ನು ರಚಿಸುತ್ತದೆ. + 3. ನಂತರ, ಹೊಸ ಮತ್ತು ಹಳೆಯ ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ಲೆಕ್ಕಿಸಿ, ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳು ಸ್ಥಿರವಾಗುವವರೆಗೆ ಪುನರಾವರ್ತಿಸುತ್ತದೆ. + +K-Means ಬಳಕೆಯ ಒಂದು ದೋಷವೆಂದರೆ ನೀವು 'k' ಅನ್ನು ಸ್ಥಾಪಿಸಬೇಕಾಗುತ್ತದೆ, ಅಂದರೆ ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳ ಸಂಖ್ಯೆ. ಅದೃಷ್ಟವಶಾತ್ 'ಎಲ್ಬೋ ವಿಧಾನ' 'k' ಗೆ ಉತ್ತಮ ಪ್ರಾರಂಭಿಕ ಮೌಲ್ಯವನ್ನು ಅಂದಾಜಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ನೀವು ಅದನ್ನು ಕ್ಷಣದಲ್ಲೇ ಪ್ರಯತ್ನಿಸುವಿರಿ. + +## ಪೂರ್ವಾಪೇಕ್ಷಿತ + +ನೀವು ಈ ಪಾಠದ [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/2-K-Means/notebook.ipynb) ಫೈಲ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತೀರಿ, ಇದರಲ್ಲಿ ನೀವು ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ಮಾಡಿದ ಡೇಟಾ ಆಮದು ಮತ್ತು ಪ್ರಾಥಮಿಕ ಶುದ್ಧೀಕರಣವನ್ನು ಒಳಗೊಂಡಿದೆ. + +## ವ್ಯಾಯಾಮ - ತಯಾರಿ + +ಮತ್ತೆ ಹಾಡುಗಳ ಡೇಟಾವನ್ನು ನೋಡಿ ಪ್ರಾರಂಭಿಸಿ. + +1. ಪ್ರತಿ ಕಾಲಮ್‌ಗೆ `boxplot()` ಅನ್ನು ಕರೆಸಿ ಬಾಕ್ಸ್‌ಪ್ಲಾಟ್ ರಚಿಸಿ: + + ```python + plt.figure(figsize=(20,20), dpi=200) + + plt.subplot(4,3,1) + sns.boxplot(x = 'popularity', data = df) + + plt.subplot(4,3,2) + sns.boxplot(x = 'acousticness', data = df) + + plt.subplot(4,3,3) + sns.boxplot(x = 'energy', data = df) + + plt.subplot(4,3,4) + sns.boxplot(x = 'instrumentalness', data = df) + + plt.subplot(4,3,5) + sns.boxplot(x = 'liveness', data = df) + + plt.subplot(4,3,6) + sns.boxplot(x = 'loudness', data = df) + + plt.subplot(4,3,7) + sns.boxplot(x = 'speechiness', data = df) + + plt.subplot(4,3,8) + sns.boxplot(x = 'tempo', data = df) + + plt.subplot(4,3,9) + sns.boxplot(x = 'time_signature', data = df) + + plt.subplot(4,3,10) + sns.boxplot(x = 'danceability', data = df) + + plt.subplot(4,3,11) + sns.boxplot(x = 'length', data = df) + + plt.subplot(4,3,12) + sns.boxplot(x = 'release_date', data = df) + ``` + + ಈ ಡೇಟಾ ಸ್ವಲ್ಪ ಶಬ್ದಮಯವಾಗಿದೆ: ಪ್ರತಿ ಕಾಲಮ್ ಅನ್ನು ಬಾಕ್ಸ್‌ಪ್ಲಾಟ್ ಆಗಿ ಗಮನಿಸಿದರೆ, ನೀವು ಔಟ್‌ಲೈಯರ್‌ಗಳನ್ನು ಕಾಣಬಹುದು. + + ![outliers](../../../../translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.kn.png) + +ನೀವು ಡೇಟಾಸೆಟ್ ಮೂಲಕ ಹೋಗಿ ಈ ಔಟ್‌ಲೈಯರ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಬಹುದು, ಆದರೆ ಅದು ಡೇಟಾವನ್ನು ಬಹಳ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. + +1. ಈಗ, ನಿಮ್ಮ ಕ್ಲಸ್ಟರಿಂಗ್ ವ್ಯಾಯಾಮಕ್ಕೆ ನೀವು ಯಾವ ಕಾಲಮ್‌ಗಳನ್ನು ಬಳಸುತ್ತೀರಿ ಎಂದು ಆಯ್ಕೆಮಾಡಿ. ಸಮಾನ ಶ್ರೇಣಿಯ ಕಾಲಮ್‌ಗಳನ್ನು ಆರಿಸಿ ಮತ್ತು `artist_top_genre` ಕಾಲಮ್ ಅನ್ನು ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾ ಆಗಿ ಎನ್‌ಕೋಡ್ ಮಾಡಿ: + + ```python + from sklearn.preprocessing import LabelEncoder + le = LabelEncoder() + + X = df.loc[:, ('artist_top_genre','popularity','danceability','acousticness','loudness','energy')] + + y = df['artist_top_genre'] + + X['artist_top_genre'] = le.fit_transform(X['artist_top_genre']) + + y = le.transform(y) + ``` + +1. ಈಗ ನೀವು ಎಷ್ಟು ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಗುರಿಯಾಗಿಸಬೇಕೆಂದು ಆಯ್ಕೆಮಾಡಬೇಕು. ನೀವು ಡೇಟಾಸೆಟ್‌ನಿಂದ 3 ಹಾಡು ಶೈಲಿಗಳನ್ನು ತೆಗೆದುಕೊಂಡಿದ್ದೀರಿ, ಆದ್ದರಿಂದ 3 ಅನ್ನು ಪ್ರಯತ್ನಿಸೋಣ: + + ```python + from sklearn.cluster import KMeans + + nclusters = 3 + seed = 0 + + km = KMeans(n_clusters=nclusters, random_state=seed) + km.fit(X) + + # ಪ್ರತಿ ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಾಗಿ ಕ್ಲಸ್ಟರ್ ಅನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ + + y_cluster_kmeans = km.predict(X) + y_cluster_kmeans + ``` + +ನೀವು ಪ್ರತಿ ಡೇಟಾಫ್ರೇಮ್ ಸಾಲಿಗೆ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಕ್ಲಸ್ಟರ್‌ಗಳ (0, 1, ಅಥವಾ 2) ಅರೆ ಅನ್ನು ಮುದ್ರಿತವಾಗಿರುವುದನ್ನು ನೋಡುತ್ತೀರಿ. + +1. ಈ ಅರೆ ಬಳಸಿ 'ಸಿಲ್ಹೌಟ್ ಸ್ಕೋರ್' ಅನ್ನು ಲೆಕ್ಕಿಸಿ: + + ```python + from sklearn import metrics + score = metrics.silhouette_score(X, y_cluster_kmeans) + score + ``` + +## ಸಿಲ್ಹೌಟ್ ಸ್ಕೋರ್ + +1 ಗೆ ಸಮೀಪವಾದ ಸಿಲ್ಹೌಟ್ ಸ್ಕೋರ್ ಅನ್ನು ಹುಡುಕಿ. ಈ ಸ್ಕೋರ್ -1 ರಿಂದ 1 ರವರೆಗೆ ಬದಲಾಗುತ್ತದೆ, ಮತ್ತು ಸ್ಕೋರ್ 1 ಆಗಿದ್ದರೆ, ಕ್ಲಸ್ಟರ್ ಗಟ್ಟಿಯಾಗಿದ್ದು ಇತರ ಕ್ಲಸ್ಟರ್‌ಗಳಿಂದ ಚೆನ್ನಾಗಿ ವಿಭಜಿತವಾಗಿದೆ. 0 ಗೆ ಸಮೀಪವಾದ ಮೌಲ್ಯವು ಹತ್ತಿರದ ಕ್ಲಸ್ಟರ್‌ಗಳ ನಿರ್ಧಾರ ಗಡಿಭಾಗದ ಬಳಿ ಮಾದರಿಗಳೊಂದಿಗೆ ಓವರ್‌ಲ್ಯಾಪ್ ಆಗಿರುವ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಸೂಚಿಸುತ್ತದೆ. [(ಮೂಲ)](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam) + +ನಮ್ಮ ಸ್ಕೋರ್ **.53** ಆಗಿದ್ದು, ಮಧ್ಯದಲ್ಲಿ ಇದೆ. ಇದು ನಮ್ಮ ಡೇಟಾ ಈ ರೀತಿಯ ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ವಿಶೇಷವಾಗಿ ಸೂಕ್ತವಿಲ್ಲದಿರುವುದನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಆದರೆ ಮುಂದುವರಿಯೋಣ. + +### ವ್ಯಾಯಾಮ - ಮಾದರಿ ನಿರ್ಮಿಸಿ + +1. `KMeans` ಅನ್ನು ಆಮದು ಮಾಡಿ ಮತ್ತು ಕ್ಲಸ್ಟರಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿ. + + ```python + from sklearn.cluster import KMeans + wcss = [] + + for i in range(1, 11): + kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42) + kmeans.fit(X) + wcss.append(kmeans.inertia_) + + ``` + + ಇಲ್ಲಿ ಕೆಲವು ಭಾಗಗಳನ್ನು ವಿವರಿಸುವುದು ಅಗತ್ಯ. + + > 🎓 range: ಇವು ಕ್ಲಸ್ಟರಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯ ಪುನರಾವೃತ್ತಿಗಳು + + > 🎓 random_state: "ಸೆಂಟ್ರಾಯ್ಡ್ ಪ್ರಾರಂಭಿಕರಣಕ್ಕಾಗಿ ಯಾದೃಚ್ಛಿಕ ಸಂಖ್ಯೆ ಉತ್ಪಾದನೆಯನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ." [ಮೂಲ](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans) + + > 🎓 WCSS: "within-cluster sums of squares" ಕ್ಲಸ್ಟರ್‌ನೊಳಗಿನ ಎಲ್ಲಾ ಬಿಂದುಗಳ ಸರಾಸರಿ ದೂರದ ಚದರ ಮೌಲ್ಯವನ್ನು ಅಳೆಯುತ್ತದೆ. [ಮೂಲ](https://medium.com/@ODSC/unsupervised-learning-evaluating-clusters-bd47eed175ce). + + > 🎓 ಇನರ್ಷಿಯಾ: K-Means ಆಲ್ಗಾರಿಥಮ್‌ಗಳು 'ಇನರ್ಷಿಯಾ' ಅನ್ನು ಕನಿಷ್ಠಗೊಳಿಸಲು ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತವೆ, "ಕ್ಲಸ್ಟರ್‌ಗಳು ಒಳಾಂಗಣವಾಗಿ ಎಷ್ಟು ಸಮ್ಮಿಲಿತವಾಗಿವೆ ಎಂಬ ಅಳೆಯುವಿಕೆ." [ಮೂಲ](https://scikit-learn.org/stable/modules/clustering.html). ಮೌಲ್ಯವು ಪ್ರತಿ ಪುನರಾವೃತ್ತಿಯಲ್ಲಿ wcss ಚರದಲ್ಲಿ ಸೇರಿಸಲಾಗುತ್ತದೆ. + + > 🎓 k-means++: [Scikit-learn](https://scikit-learn.org/stable/modules/clustering.html#k-means) ನಲ್ಲಿ ನೀವು 'k-means++' ಆಪ್ಟಿಮೈಜೆಶನ್ ಅನ್ನು ಬಳಸಬಹುದು, ಇದು "ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಪರಸ್ಪರ ದೂರದಲ್ಲಿರುವಂತೆ ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಇದರಿಂದ ಯಾದೃಚ್ಛಿಕ ಪ್ರಾರಂಭಿಕರಣಕ್ಕಿಂತ ಉತ್ತಮ ಫಲಿತಾಂಶಗಳು ಸಾಧ್ಯ." + +### ಎಲ್ಬೋ ವಿಧಾನ + +ಹಿಂದೆ, ನೀವು 3 ಹಾಡು ಶೈಲಿಗಳನ್ನು ಗುರಿಯಾಗಿಸಿಕೊಂಡಿದ್ದೀರಿ, ಆದ್ದರಿಂದ 3 ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಬೇಕು ಎಂದು ಊಹಿಸಿದ್ದೀರಿ. ಆದರೆ ಅದು ಸರಿ ಆಗಿದೆಯೇ? + +1. 'ಎಲ್ಬೋ ವಿಧಾನ' ಬಳಸಿ ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. + + ```python + plt.figure(figsize=(10,5)) + sns.lineplot(x=range(1, 11), y=wcss, marker='o', color='red') + plt.title('Elbow') + plt.xlabel('Number of clusters') + plt.ylabel('WCSS') + plt.show() + ``` + + ನೀವು ಹಿಂದಿನ ಹಂತದಲ್ಲಿ ನಿರ್ಮಿಸಿದ `wcss` ಚರವನ್ನು ಬಳಸಿ ಚಾರ್ಟ್ ರಚಿಸಿ, ಇದರಲ್ಲಿ ಎಲ್ಬೋದಲ್ಲಿ 'ವಂಗಿ' ಇರುವ ಸ್ಥಳವನ್ನು ತೋರಿಸುತ್ತದೆ, ಇದು ಅತ್ಯುತ್ತಮ ಕ್ಲಸ್ಟರ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಬಹುಶಃ ಅದು **3** ಆಗಿರಬಹುದು! + + ![elbow method](../../../../translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.kn.png) + +## ವ್ಯಾಯಾಮ - ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ + +1. ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ, ಈ ಬಾರಿ ಮೂರು ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಹೊಂದಿಸಿ, ಮತ್ತು ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ಆಗಿ ಪ್ರದರ್ಶಿಸಿ: + + ```python + from sklearn.cluster import KMeans + kmeans = KMeans(n_clusters = 3) + kmeans.fit(X) + labels = kmeans.predict(X) + plt.scatter(df['popularity'],df['danceability'],c = labels) + plt.xlabel('popularity') + plt.ylabel('danceability') + plt.show() + ``` + +1. ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಪರಿಶೀಲಿಸಿ: + + ```python + labels = kmeans.labels_ + + correct_labels = sum(y == labels) + + print("Result: %d out of %d samples were correctly labeled." % (correct_labels, y.size)) + + print('Accuracy score: {0:0.2f}'. format(correct_labels/float(y.size))) + ``` + + ಈ ಮಾದರಿಯ ನಿಖರತೆ ತುಂಬಾ ಉತ್ತಮವಿಲ್ಲ, ಮತ್ತು ಕ್ಲಸ್ಟರ್‌ಗಳ ಆಕಾರವು ಕಾರಣವನ್ನು ಸೂಚಿಸುತ್ತದೆ. + + ![clusters](../../../../translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.kn.png) + + ಈ ಡೇಟಾ ತುಂಬಾ ಅಸಮತೋಲನವಾಗಿದೆ, ತುಂಬಾ ಕಡಿಮೆ ಸಂಬಂಧಿತವಾಗಿದೆ ಮತ್ತು ಕಾಲಮ್ ಮೌಲ್ಯಗಳ ನಡುವೆ ತುಂಬಾ ವ್ಯತ್ಯಾಸವಿದೆ, ಆದ್ದರಿಂದ ಚೆನ್ನಾಗಿ ಕ್ಲಸ್ಟರ್ ಆಗುವುದಿಲ್ಲ. ವಾಸ್ತವದಲ್ಲಿ, ರಚನೆಯಾಗುವ ಕ್ಲಸ್ಟರ್‌ಗಳು ಮೇಲಿನ ಮೂರು ಶೈಲಿ ವರ್ಗಗಳಿಂದ ಬಹಳ ಪ್ರಭಾವಿತ ಅಥವಾ ವಕ್ರವಾಗಿರಬಹುದು. ಅದು ಒಂದು ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆ! + + Scikit-learn ನ ಡಾಕ್ಯುಮೆಂಟೇಶನ್‌ನಲ್ಲಿ, ನೀವು ಈ ರೀತಿಯ ಮಾದರಿಯು, ಕ್ಲಸ್ಟರ್‌ಗಳು ಚೆನ್ನಾಗಿ ವಿಭಜಿಸಲ್ಪಡದಿರುವುದರಿಂದ, 'ವ್ಯತ್ಯಾಸ' ಸಮಸ್ಯೆಯನ್ನು ಹೊಂದಿದೆ ಎಂದು ನೋಡಬಹುದು: + + ![problem models](../../../../translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.kn.png) + > Scikit-learn ನಿಂದ ಇನ್ಫೋಗ್ರಾಫಿಕ್ + +## ವ್ಯತ್ಯಾಸ + +ವ್ಯತ್ಯಾಸವನ್ನು "ಸರಾಸರಿಯಿಂದ ಚದರ ವ್ಯತ್ಯಾಸಗಳ ಸರಾಸರಿ" ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ [(ಮೂಲ)](https://www.mathsisfun.com/data/standard-deviation.html). ಈ ಕ್ಲಸ್ಟರಿಂಗ್ ಸಮಸ್ಯೆಯ ಸನ್ನಿವೇಶದಲ್ಲಿ, ಇದು ನಮ್ಮ ಡೇಟಾಸೆಟ್‌ನ ಸಂಖ್ಯೆಗಳು ಸರಾಸರಿಯಿಂದ ಸ್ವಲ್ಪ ಹೆಚ್ಚು ವಿಭಿನ್ನವಾಗುವ倾向ವನ್ನು ಸೂಚಿಸುತ್ತದೆ. + +✅ ಇದು ಈ ಸಮಸ್ಯೆಯನ್ನು ಸರಿಪಡಿಸಲು ನೀವು ಮಾಡಬಹುದಾದ ಎಲ್ಲಾ ಮಾರ್ಗಗಳನ್ನು ಯೋಚಿಸಲು ಉತ್ತಮ ಸಮಯ. ಡೇಟಾವನ್ನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ತಿದ್ದುಪಡಿ ಮಾಡಬೇಕೆ? ವಿಭಿನ್ನ ಕಾಲಮ್‌ಗಳನ್ನು ಬಳಸಬೇಕೆ? ವಿಭಿನ್ನ ಆಲ್ಗಾರಿಥಮ್ ಬಳಸಬೇಕೆ? ಸೂಚನೆ: ನಿಮ್ಮ ಡೇಟಾವನ್ನು [ಸ್ಕೇಲ್ ಮಾಡಿ](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/) ಸಾಮಾನ್ಯೀಕರಿಸಿ ಮತ್ತು ಇತರ ಕಾಲಮ್‌ಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ. + +> ಈ '[ವ್ಯತ್ಯಾಸ ಕ್ಯಾಲ್ಕ್ಯುಲೇಟರ್](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ, ಈ ಕಲ್ಪನೆಯನ್ನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು. + +--- + +## 🚀ಚಾಲೆಂಜ್ + +ಈ ನೋಟ್ಬುಕ್‌ನೊಂದಿಗೆ ಸ್ವಲ್ಪ ಸಮಯ ಕಳೆಯಿರಿ, ಪರಿಮಾಣಗಳನ್ನು ತಿದ್ದುಪಡಿ ಮಾಡಿ. ನೀವು ಡೇಟಾವನ್ನು ಹೆಚ್ಚು ಶುದ್ಧೀಕರಿಸುವ ಮೂಲಕ (ಉದಾಹರಣೆಗೆ ಔಟ್‌ಲೈಯರ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ) ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಸುಧಾರಿಸಬಹುದೇ? ನೀವು ಕೆಲವು ಡೇಟಾ ಮಾದರಿಗಳಿಗೆ ಹೆಚ್ಚು ತೂಕ ನೀಡಲು ತೂಕಗಳನ್ನು ಬಳಸಬಹುದು. ಉತ್ತಮ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ರಚಿಸಲು ಇನ್ನೇನು ಮಾಡಬಹುದು? + +ಸೂಚನೆ: ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ಕೇಲ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ. ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಕಾಮೆಂಟ್ ಮಾಡಲಾದ ಕೋಡ್ ಇದೆ, ಇದು ಡೇಟಾ ಕಾಲಮ್‌ಗಳನ್ನು ಪರಸ್ಪರ ಸಮೀಪವಾಗುವಂತೆ ಮಾಡಲು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸ್ಕೇಲಿಂಗ್ ಅನ್ನು ಸೇರಿಸುತ್ತದೆ. ನೀವು ಕಂಡುಕೊಳ್ಳುತ್ತೀರಿ, ಸಿಲ್ಹೌಟ್ ಸ್ಕೋರ್ ಇಳಿಯುತ್ತದೆ, ಆದರೆ ಎಲ್ಬೋ ಗ್ರಾಫ್‌ನ 'ಕಿಂಕ್' ಸ್ಮೂತ್ ಆಗುತ್ತದೆ. ಇದಕ್ಕೆ ಕಾರಣ, ಡೇಟಾವನ್ನು ಅಸ್ಕೇಲ್ ಆಗದಂತೆ ಬಿಡುವುದರಿಂದ ಕಡಿಮೆ ವ್ಯತ್ಯಾಸವಿರುವ ಡೇಟಾ ಹೆಚ್ಚು ತೂಕವನ್ನು ಹೊಂದುತ್ತದೆ. ಈ ಸಮಸ್ಯೆಯ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಓದಿ [ಇಲ್ಲಿ](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226). + +## [ಪೋಸ್ಟ್-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ & ಸ್ವಯಂ ಅಧ್ಯಯನ + +K-Means ಸಿಮ್ಯುಲೇಟರ್ ಅನ್ನು ನೋಡಿ [ಇಂತಹ ಒಂದು](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/). ನೀವು ಈ ಸಾಧನವನ್ನು ಮಾದರಿ ಡೇಟಾ ಬಿಂದುಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಮತ್ತು ಅದರ ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳನ್ನು ನಿರ್ಧರಿಸಲು ಬಳಸಬಹುದು. ನೀವು ಡೇಟಾದ ಯಾದೃಚ್ಛಿಕತೆ, ಕ್ಲಸ್ಟರ್‌ಗಳ ಸಂಖ್ಯೆ ಮತ್ತು ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಸಂಪಾದಿಸಬಹುದು. ಇದು ಡೇಟಾವನ್ನು ಹೇಗೆ ಗುಂಪು ಮಾಡಬಹುದು ಎಂಬುದರ ಬಗ್ಗೆ ನಿಮಗೆ ಕಲ್ಪನೆ ನೀಡುತ್ತದೆಯೇ? + +ಮತ್ತಷ್ಟು, ಸ್ಟ್ಯಾನ್‌ಫೋರ್ಡ್‌ನಿಂದ [ಈ K-Means ಹ್ಯಾಂಡ್‌ಔಟ್](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html) ಅನ್ನು ನೋಡಿ. + +## ನಿಯೋಜನೆ + +[ವಿಭಿನ್ನ ಕ್ಲಸ್ಟರಿಂಗ್ ವಿಧಾನಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/5-Clustering/2-K-Means/assignment.md b/translations/kn/5-Clustering/2-K-Means/assignment.md new file mode 100644 index 000000000..7d049c286 --- /dev/null +++ b/translations/kn/5-Clustering/2-K-Means/assignment.md @@ -0,0 +1,26 @@ + +# ವಿಭಿನ್ನ ಕ್ಲಸ್ಟರಿಂಗ್ ವಿಧಾನಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ + +## ಸೂಚನೆಗಳು + +ಈ ಪಾಠದಲ್ಲಿ ನೀವು K-Means ಕ್ಲಸ್ಟರಿಂಗ್ ಬಗ್ಗೆ ಕಲಿತಿದ್ದೀರಿ. ಕೆಲವೊಮ್ಮೆ K-Means ನಿಮ್ಮ ಡೇಟಾಗೆ ಸೂಕ್ತವಾಗಿರದು. ಈ ಪಾಠಗಳಿಂದ ಅಥವಾ ಬೇರೆ ಎಲ್ಲಿಂದಾದರೂ (ನಿಮ್ಮ ಮೂಲವನ್ನು ಉಲ್ಲೇಖಿಸಿ) ಡೇಟಾ ಬಳಸಿ ಒಂದು ನೋಟ್ಬುಕ್ ರಚಿಸಿ ಮತ್ತು K-Means ಬಳಸದೆ ಬೇರೆ ಕ್ಲಸ್ಟರಿಂಗ್ ವಿಧಾನವನ್ನು ತೋರಿಸಿ. ನೀವು ಏನು ಕಲಿತಿರಿ? +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯ | +| -------- | --------------------------------------------------------------- | -------------------------------------------------------------------- | ---------------------------- | +| | ಚೆನ್ನಾಗಿ ದಾಖಲೆ ಮಾಡಲಾದ ಕ್ಲಸ್ಟರಿಂಗ್ ಮಾದರಿಯೊಂದಿಗೆ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | ಉತ್ತಮ ದಾಖಲೆ ಇಲ್ಲದೆ ಮತ್ತು/ಅಥವಾ ಅಪೂರ್ಣ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | ಅಪೂರ್ಣ ಕೆಲಸ ಸಲ್ಲಿಸಲಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/5-Clustering/2-K-Means/notebook.ipynb b/translations/kn/5-Clustering/2-K-Means/notebook.ipynb new file mode 100644 index 000000000..1577d01c4 --- /dev/null +++ b/translations/kn/5-Clustering/2-K-Means/notebook.ipynb @@ -0,0 +1,233 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "3e5c8ab363e8d88f566d4365efc7e0bd", + "translation_date": "2025-12-19T16:50:33+00:00", + "source_file": "5-Clustering/2-K-Means/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ಸ್ಪೋಟಿಫೈಯಿಂದ ಸಂಗ್ರಹಿಸಿದ ನೈಜೀರಿಯನ್ ಸಂಗೀತ - ಒಂದು ವಿಶ್ಲೇಷಣೆ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: seaborn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.11.1)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.19.2)\n", + "Requirement already satisfied: pandas>=0.23 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.1.2)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.4.1)\n", + "Requirement already satisfied: matplotlib>=2.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (3.1.0)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2.8.0)\n", + "Requirement already satisfied: pytz>=2017.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2019.1)\n", + "Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (0.10.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (1.1.0)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (2.4.0)\n", + "Requirement already satisfied: six>=1.5 in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from python-dateutil>=2.7.3->pandas>=0.23->seaborn) (1.12.0)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib>=2.2->seaborn) (45.1.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install seaborn" + ] + }, + { + "source": [ + "ನಾವು ಕೊನೆಯ ಪಾಠದಲ್ಲಿ ಮುಗಿಸಿದ ಸ್ಥಳದಿಂದ ಪ್ರಾರಂಭಿಸಿ, ಡೇಟಾ ಆಮದುಮಾಡಿ ಫಿಲ್ಟರ್ ಮಾಡಲಾಗಿದೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "0 Sparky Mandy & The Jungle \n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "2 LITT! LITT! \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "0 Cruel Santino alternative r&b 2019 144000 48 \n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "2 AYLØ indie r&b 2018 207758 40 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "\n", + " speechiness tempo time_signature \n", + "0 0.0829 133.015 5 \n", + "1 0.3600 129.993 3 \n", + "2 0.0424 130.005 4 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
0SparkyMandy & The JungleCruel Santinoalternative r&b2019144000480.6660.85100.4200.5340000.1100-6.6990.0829133.0155
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
2LITT!LITT!AYLØindie r&b2018207758400.8360.27200.5640.0005370.1100-7.1270.0424130.0054
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
\n
" + }, + "metadata": {}, + "execution_count": 6 + } + ], + "source": [ + "\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "\n", + "df = pd.read_csv(\"../data/nigerian-songs.csv\")\n", + "df.head()" + ] + }, + { + "source": [ + "ನಾವು ಕೇವಲ 3 ಶೈಲಿಗಳ ಮೇಲೆ ಮಾತ್ರ ಗಮನಹರಿಸುವೆವು. ಬಹುಶಃ ನಾವು 3 ಗುಂಪುಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "metadata": {}, + "execution_count": 7 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n", + "df = df[(df['popularity'] > 0)]\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "5 Kasala Pioneers \n", + "6 Pull Up Everything Pretty \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "5 DRB Lasgidi nigerian pop 2020 184800 26 \n", + "6 prettyboydo nigerian pop 2018 202648 29 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "5 0.803 0.1270 0.525 0.000007 0.1290 -10.034 \n", + "6 0.818 0.4520 0.587 0.004490 0.5900 -9.840 \n", + "\n", + " speechiness tempo time_signature \n", + "1 0.3600 129.993 3 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 \n", + "5 0.1970 100.103 4 \n", + "6 0.1990 95.842 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
5KasalaPioneersDRB Lasgidinigerian pop2020184800260.8030.12700.5250.0000070.1290-10.0340.1970100.1034
6Pull UpEverything Prettyprettyboydonigerian pop2018202648290.8180.45200.5870.0044900.5900-9.8400.199095.8424
\n
" + }, + "metadata": {}, + "execution_count": 8 + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕಾರ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/5-Clustering/2-K-Means/solution/Julia/README.md b/translations/kn/5-Clustering/2-K-Means/solution/Julia/README.md new file mode 100644 index 000000000..3290319ef --- /dev/null +++ b/translations/kn/5-Clustering/2-K-Means/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb b/translations/kn/5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb new file mode 100644 index 000000000..d80ed9062 --- /dev/null +++ b/translations/kn/5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb @@ -0,0 +1,642 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "anaconda-cloud": "", + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "3.4.1" + }, + "colab": { + "name": "lesson_14.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "coopTranslator": { + "original_hash": "ad65fb4aad0a156b42216e4929f490fc", + "translation_date": "2025-12-19T16:56:57+00:00", + "source_file": "5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb", + "language_code": "kn" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "GULATlQXLXyR" + }, + "source": [ + "## R ಮತ್ತು ಟೈಡಿ ಡೇಟಾ ತತ್ವಗಳನ್ನು ಬಳಸಿಕೊಂಡು K-ಮೀನ್ಸ್ ಕ್ಲಸ್ಟರಿಂಗ್ ಅನ್ನು ಅನ್ವೇಷಿಸಿ.\n", + "\n", + "### [**ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/29/)\n", + "\n", + "ಈ ಪಾಠದಲ್ಲಿ, ನೀವು Tidymodels ಪ್ಯಾಕೇಜ್ ಮತ್ತು R ಪರಿಸರದಲ್ಲಿನ ಇತರ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು (ನಾವು ಅವುಗಳನ್ನು ಸ್ನೇಹಿತರು 🧑‍🤝‍🧑 ಎಂದು ಕರೆಯುತ್ತೇವೆ) ಮತ್ತು ನೀವು ಮೊದಲು ಆಮದು ಮಾಡಿದ ನೈಜೀರಿಯನ್ ಸಂಗೀತ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಹೇಗೆ ರಚಿಸುವುದು ಎಂದು ಕಲಿಯುತ್ತೀರಿ. ನಾವು K-ಮೀನ್ಸ್ ಕ್ಲಸ್ಟರಿಂಗ್‌ನ ಮೂಲಭೂತಗಳನ್ನು ಆವರಿಸುವೆವು. ನೀವು ಮೊದಲು ಪಾಠದಲ್ಲಿ ಕಲಿತಂತೆ, ಕ್ಲಸ್ಟರ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಅನೇಕ ವಿಧಾನಗಳಿವೆ ಮತ್ತು ನೀವು ಬಳಸುವ ವಿಧಾನ ನಿಮ್ಮ ಡೇಟಾದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ ಎಂದು ಗಮನದಲ್ಲಿರಿಸಿ. K-ಮೀನ್ಸ್ ಅನ್ನು ಪ್ರಯತ್ನಿಸೋಣ ಏಕೆಂದರೆ ಇದು ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಕ್ಲಸ್ಟರಿಂಗ್ ತಂತ್ರವಾಗಿದೆ. ಆರಂಭಿಸೋಣ!\n", + "\n", + "ನೀವು ಕಲಿಯಲಿರುವ ಪದಗಳು:\n", + "\n", + "- ಸಿಲ್ಹೌಟ್ ಸ್ಕೋರಿಂಗ್\n", + "\n", + "- ಎಲ್ಬೋ ವಿಧಾನ\n", + "\n", + "- ಇನರ್ಷಿಯಾ\n", + "\n", + "- ವ್ಯತ್ಯಾಸ\n", + "\n", + "### **ಪರಿಚಯ**\n", + "\n", + "[K-ಮೀನ್ಸ್ ಕ್ಲಸ್ಟರಿಂಗ್](https://wikipedia.org/wiki/K-means_clustering) ಸಿಗ್ನಲ್ ಪ್ರೊಸೆಸಿಂಗ್ ಕ್ಷೇತ್ರದಿಂದ ಪಡೆದ ವಿಧಾನವಾಗಿದೆ. ಇದು ಡೇಟಾದ ಗುಂಪುಗಳನ್ನು ಅವುಗಳ ಲಕ್ಷಣಗಳಲ್ಲಿ ಹೊಂದಾಣಿಕೆಯ ಆಧಾರದ ಮೇಲೆ `k ಕ್ಲಸ್ಟರ್‌ಗಳು` ಎಂದು ವಿಭಜಿಸಲು ಮತ್ತು ವಿಭಾಗಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.\n", + "\n", + "ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು [ವೊರೋನಾಯ್ ಡಯಾಗ್ರಾಮ್‌ಗಳು](https://wikipedia.org/wiki/Voronoi_diagram) ಎಂದು ದೃಶ್ಯೀಕರಿಸಬಹುದು, ಇದರಲ್ಲಿ ಒಂದು ಬಿಂದು (ಅಥವಾ 'ಬೀಜ') ಮತ್ತು ಅದರ ಸಂಬಂಧಿತ ಪ್ರದೇಶವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.\n", + "\n", + "

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

ಜೆನ್ ಲೂಪರ್ ಅವರ ಇನ್ಫೋಗ್ರಾಫಿಕ್
\n", + "\n", + "\n", + "K-ಮೀನ್ಸ್ ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಕೆಳಗಿನ ಹಂತಗಳಿವೆ:\n", + "\n", + "1. ಡೇಟಾ ವಿಜ್ಞಾನಿ ರಚಿಸಲು ಬಯಸುವ ಕ್ಲಸ್ಟರ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸುತ್ತಾನೆ.\n", + "\n", + "2. ನಂತರ, ಆಲ್ಗಾರಿಥಮ್ ಡೇಟಾ ಸೆಟ್‌ನಿಂದ ಯಾದೃಚ್ಛಿಕವಾಗಿ K ವೀಕ್ಷಣೆಗಳನ್ನು ಆರಿಸಿಕೊಂಡು ಅವುಗಳನ್ನು ಕ್ಲಸ್ಟರ್‌ಗಳ ಪ್ರಾಥಮಿಕ ಕೇಂದ್ರಗಳಾಗಿ (ಅಥವಾ ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳು) ಬಳಸುತ್ತದೆ.\n", + "\n", + "3. ನಂತರ, ಉಳಿದ ಪ್ರತಿಯೊಂದು ವೀಕ್ಷಣೆಯನ್ನು ಅದರ ಅತಿ ಸಮೀಪದ ಸೆಂಟ್ರಾಯ್ಡ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗುತ್ತದೆ.\n", + "\n", + "4. ನಂತರ, ಪ್ರತಿ ಕ್ಲಸ್ಟರ್‌ನ ಹೊಸ ಸರಾಸರಿ ಲೆಕ್ಕಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಸೆಂಟ್ರಾಯ್ಡ್ ಅನ್ನು ಆ ಸರಾಸರಿಗೇ ಸರಿಸಲಾಗುತ್ತದೆ.\n", + "\n", + "5. ಈಗ ಕೇಂದ್ರಗಳನ್ನು ಮರು ಲೆಕ್ಕಿಸಿದ ನಂತರ, ಪ್ರತಿಯೊಂದು ವೀಕ್ಷಣೆಯನ್ನು ಮತ್ತೆ ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ ಅದು ಬೇರೆ ಕ್ಲಸ್ಟರ್‌ಗೆ ಹೆಚ್ಚು ಸಮೀಪವಿದೆಯೇ ಎಂದು ನೋಡಲು. ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ನವೀಕೃತ ಕ್ಲಸ್ಟರ್ ಸರಾಸರಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಮತ್ತೆ ನಿಯೋಜಿಸಲಾಗುತ್ತದೆ. ಕ್ಲಸ್ಟರ್ ನಿಯೋಜನೆ ಮತ್ತು ಸೆಂಟ್ರಾಯ್ಡ್ ನವೀಕರಣ ಹಂತಗಳನ್ನು ಪುನರಾವರ್ತಿಸಲಾಗುತ್ತದೆ, ಕ್ಲಸ್ಟರ್ ನಿಯೋಜನೆಗಳು ಬದಲಾಗದವರೆಗೆ (ಅಥವಾ ಸಮೀಕರಣ ಸಾಧನೆಯಾಗುವವರೆಗೆ). ಸಾಮಾನ್ಯವಾಗಿ, ಆಲ್ಗಾರಿಥಮ್ ಪ್ರತಿ ಹೊಸ ಪುನರಾವೃತ್ತಿಯಲ್ಲಿ ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳ ಚಲನೆಯು ಅಲ್ಪವಾಗುವಾಗ ಮತ್ತು ಕ್ಲಸ್ಟರ್‌ಗಳು ಸ್ಥಿರವಾಗುವಾಗ ನಿಲ್ಲುತ್ತದೆ.\n", + "\n", + "
\n", + "\n", + "> ಪ್ರಾಥಮಿಕ k ವೀಕ್ಷಣೆಗಳನ್ನು ಯಾದೃಚ್ಛಿಕವಾಗಿ ಆರಿಸುವುದರಿಂದ, ಪ್ರತಿ ಬಾರಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅನ್ವಯಿಸುವಾಗ ಸ್ವಲ್ಪ ವಿಭಿನ್ನ ಫಲಿತಾಂಶಗಳನ್ನು ಪಡೆಯಬಹುದು. ಈ ಕಾರಣಕ್ಕಾಗಿ, ಹೆಚ್ಚಿನ ಆಲ್ಗಾರಿಥಮ್‌ಗಳು ಹಲವಾರು *ಯಾದೃಚ್ಛಿಕ ಪ್ರಾರಂಭಗಳನ್ನು* ಬಳಸುತ್ತವೆ ಮತ್ತು ಕಡಿಮೆ WCSS ಇರುವ ಪುನರಾವೃತ್ತಿಯನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತವೆ. ಆದ್ದರಿಂದ, *ಅನಗತ್ಯ ಸ್ಥಳೀಯ ಗರಿಷ್ಠವನ್ನು* ತಪ್ಪಿಸಲು K-ಮೀನ್ಸ್ ಅನ್ನು ಹಲವಾರು *nstart* ಮೌಲ್ಯಗಳೊಂದಿಗೆ ನಿರಂತರವಾಗಿ ನಡೆಸುವಂತೆ ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ.\n", + "\n", + "
\n", + "\n", + "Allison Horst ಅವರ [ಕಲಾಕೃತಿ](https://github.com/allisonhorst/stats-illustrations) ಬಳಸಿ ಈ ಚಿಕ್ಕ ಅನಿಮೇಷನ್ ಕ್ಲಸ್ಟರಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ವಿವರಿಸುತ್ತದೆ:\n", + "\n", + "

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

@allison_horst ಅವರ ಕಲಾಕೃತಿ
\n", + "\n", + "\n", + "\n", + "ಕ್ಲಸ್ಟರಿಂಗ್‌ನಲ್ಲಿ ಉದ್ಭವಿಸುವ ಮೂಲಭೂತ ಪ್ರಶ್ನೆ ಏನೆಂದರೆ: ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಎಷ್ಟು ಕ್ಲಸ್ಟರ್‌ಗಳಾಗಿ ವಿಭಜಿಸಬೇಕು ಎಂದು ನೀವು ಹೇಗೆ ತಿಳಿಯುತ್ತೀರಿ? K-ಮೀನ್ಸ್ ಬಳಕೆಯ ಒಂದು ದುರ್ಬಲತೆ ಎಂದರೆ ನೀವು `k` ಅನ್ನು, ಅಂದರೆ `ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳ` ಸಂಖ್ಯೆಯನ್ನು ಸ್ಥಾಪಿಸಬೇಕಾಗುತ್ತದೆ. ಅದೃಷ್ಟವಶಾತ್, `ಎಲ್ಬೋ ವಿಧಾನ` ಉತ್ತಮ ಪ್ರಾರಂಭಿಕ ಮೌಲ್ಯವನ್ನು ಅಂದಾಜಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ನೀವು ಅದನ್ನು ಕ್ಷಣದಲ್ಲೇ ಪ್ರಯತ್ನಿಸುವಿರಿ.\n", + "\n", + "### \n", + "\n", + "**ಪೂರ್ವಾಪೇಕ್ಷಿತ**\n", + "\n", + "ನಾವು [ಹಿಂದಿನ ಪಾಠ](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb) ನಿಂದ ನಿಲ್ಲಿಸಿದ ಸ್ಥಳದಿಂದಲೇ ಪ್ರಾರಂಭಿಸುವೆವು, ಅಲ್ಲಿ ನಾವು ಡೇಟಾ ಸೆಟ್ ಅನ್ನು ವಿಶ್ಲೇಷಿಸಿ, ಅನೇಕ ದೃಶ್ಯೀಕರಣಗಳನ್ನು ಮಾಡಿದ್ದೇವೆ ಮತ್ತು ಆಸಕ್ತಿಯ ವೀಕ್ಷಣೆಗಳಿಗೆ ಡೇಟಾ ಸೆಟ್ ಅನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿದ್ದೇವೆ. ಅದನ್ನು ಖಚಿತವಾಗಿ ಪರಿಶೀಲಿಸಿ!\n", + "\n", + "ಈ ಘಟಕವನ್ನು ಮುಗಿಸಲು ಕೆಲವು ಪ್ಯಾಕೇಜ್‌ಗಳು ಬೇಕಾಗುತ್ತವೆ. ನೀವು ಅವುಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬಹುದು: `install.packages(c('tidyverse', 'tidymodels', 'cluster', 'summarytools', 'plotly', 'paletteer', 'factoextra', 'patchwork'))`\n", + "\n", + "ಬದಲಾಗಿ, ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ಈ ಘಟಕವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜ್‌ಗಳು ನಿಮ್ಮ ಬಳಿ ಇದ್ದಾರೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಕೆಲವು ಇಲ್ಲದಿದ್ದರೆ ಅವುಗಳನ್ನು ನಿಮ್ಮಿಗಾಗಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ah_tBi58LXyi" + }, + "source": [ + "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n", + "\n", + "pacman::p_load('tidyverse', 'tidymodels', 'cluster', 'summarytools', 'plotly', 'paletteer', 'factoextra', 'patchwork')\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7e--UCUTLXym" + }, + "source": [ + "ನಾವು ತಕ್ಷಣವೇ ಪ್ರಾರಂಭಿಸೋಣ!\n", + "\n", + "## 1. ಡೇಟಾದೊಂದಿಗೆ ನೃತ್ಯ: 3 ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಸಂಗೀತ ಶೈಲಿಗಳನ್ನು ನಿಗದಿಪಡಿಸಿ\n", + "\n", + "ಇದು ನಾವು ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ಮಾಡಿದ工作的 ಪುನರಾವೃತ್ತಿ. ನಾವು ಕೆಲವು ಡೇಟಾವನ್ನು ಕತ್ತರಿಸಿ ತುಂಡುಮಾಡೋಣ!\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Ycamx7GGLXyn" + }, + "source": [ + "# Load the core tidyverse and make it available in your current R session\n", + "library(tidyverse)\n", + "\n", + "# Import the data into a tibble\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/5-Clustering/data/nigerian-songs.csv\", show_col_types = FALSE)\n", + "\n", + "# Narrow down to top 3 popular genres\n", + "nigerian_songs <- df %>% \n", + " # Concentrate on top 3 genres\n", + " filter(artist_top_genre %in% c(\"afro dancehall\", \"afropop\",\"nigerian pop\")) %>% \n", + " # Remove unclassified observations\n", + " filter(popularity != 0)\n", + "\n", + "\n", + "\n", + "# Visualize popular genres using bar plots\n", + "theme_set(theme_light())\n", + "nigerian_songs %>%\n", + " count(artist_top_genre) %>%\n", + " ggplot(mapping = aes(x = artist_top_genre, y = n,\n", + " fill = artist_top_genre)) +\n", + " geom_col(alpha = 0.8) +\n", + " paletteer::scale_fill_paletteer_d(\"ggsci::category10_d3\") +\n", + " ggtitle(\"Top genres\") +\n", + " theme(plot.title = element_text(hjust = 0.5))\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b5h5zmkPLXyp" + }, + "source": [ + "🤩 ಅದೊಂದು ಚೆನ್ನಾಗಿ ನಡೆದಿತು!\n", + "\n", + "## 2. ಇನ್ನಷ್ಟು ಡೇಟಾ ಅನ್ವೇಷಣೆ.\n", + "\n", + "ಈ ಡೇಟಾ ಎಷ್ಟು ಸ್ವಚ್ಛವಾಗಿದೆ? ಬಾಕ್ಸ್ ಪ್ಲಾಟ್‌ಗಳನ್ನು ಬಳಸಿ ಔಟ್‌ಲೈಯರ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸೋಣ. ನಾವು ಕಡಿಮೆ ಔಟ್‌ಲೈಯರ್‌ಗಳಿರುವ ಸಂಖ್ಯಾತ್ಮಕ ಕಾಲಮ್‌ಗಳ ಮೇಲೆ ಗಮನಹರಿಸುವೆವು (ನೀವು ಔಟ್‌ಲೈಯರ್‌ಗಳನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಬಹುದು). ಬಾಕ್ಸ್ ಪ್ಲಾಟ್‌ಗಳು ಡೇಟಾದ ವ್ಯಾಪ್ತಿಯನ್ನು ತೋರಿಸಬಹುದು ಮತ್ತು ಯಾವ ಕಾಲಮ್‌ಗಳನ್ನು ಬಳಸಬೇಕೆಂದು ಆಯ್ಕೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ. ಗಮನಿಸಿ, ಬಾಕ್ಸ್ ಪ್ಲಾಟ್‌ಗಳು ವ್ಯತ್ಯಾಸವನ್ನು ತೋರಿಸುವುದಿಲ್ಲ, ಇದು ಉತ್ತಮ ಕ್ಲಸ್ಟರ್ ಮಾಡಬಹುದಾದ ಡೇಟಾದ ಪ್ರಮುಖ ಅಂಶವಾಗಿದೆ. ಹೆಚ್ಚಿನ ಓದಿಗಾಗಿ ದಯವಿಟ್ಟು [ಈ ಚರ್ಚೆಯನ್ನು](https://stats.stackexchange.com/questions/91536/deduce-variance-from-boxplot) ನೋಡಿ.\n", + "\n", + "[ಬಾಕ್ಸ್ ಪ್ಲಾಟ್‌ಗಳು](https://en.wikipedia.org/wiki/Box_plot) ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾದ ವಿತರಣೆಗಳನ್ನು ಗ್ರಾಫಿಕಲ್ ಆಗಿ ಚಿತ್ರಿಸಲು ಬಳಸಲಾಗುತ್ತವೆ, ಆದ್ದರಿಂದ ಜನಪ್ರಿಯ ಸಂಗೀತ ಶೈಲಿಗಳ ಜೊತೆಗೆ ಎಲ್ಲಾ ಸಂಖ್ಯಾತ್ಮಕ ಕಾಲಮ್‌ಗಳನ್ನು *ಆಯ್ಕೆ* ಮಾಡುವುದರಿಂದ ಪ್ರಾರಂಭಿಸೋಣ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "HhNreJKLLXyq" + }, + "source": [ + "# Select top genre column and all other numeric columns\n", + "df_numeric <- nigerian_songs %>% \n", + " select(artist_top_genre, where(is.numeric)) \n", + "\n", + "# Display the data\n", + "df_numeric %>% \n", + " slice_head(n = 5)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uYXrwJRaLXyq" + }, + "source": [ + "ಎಲ್ಲಾ ಆಯ್ಕೆ ಸಹಾಯಕ `where` ಇದನ್ನು ಸುಲಭವಾಗಿಸುತ್ತದೆ 💁? ಇಂತಹ ಇತರ ಕಾರ್ಯಗಳನ್ನು [ಇಲ್ಲಿ](https://tidyselect.r-lib.org/) ಅನ್ವೇಷಿಸಿ.\n", + "\n", + "ನಾವು ಪ್ರತಿ ಸಂಖ್ಯಾತ್ಮಕ ಲಕ್ಷಣಗಳಿಗಾಗಿ ಬಾಕ್ಸ್‌ಪ್ಲಾಟ್ ಮಾಡಲಿದ್ದೇವೆ ಮತ್ತು ಲೂಪ್ಗಳನ್ನು ಬಳಸುವುದನ್ನು ತಪ್ಪಿಸಲು ಬಯಸುತ್ತೇವೆ, ಆದ್ದರಿಂದ ನಮ್ಮ ಡೇಟಾವನ್ನು *ದೀರ್ಘ* ಸ್ವರೂಪಕ್ಕೆ ಮರುರೂಪಗೊಳಿಸೋಣ, ಇದು ನಮಗೆ `facets` - ಪ್ರತಿ ಉಪಸಮೂಹವನ್ನು ಪ್ರದರ್ಶಿಸುವ ಉಪಚಿತ್ರಗಳನ್ನು ಬಳಸಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "gd5bR3f8LXys" + }, + "source": [ + "# Pivot data from wide to long\n", + "df_numeric_long <- df_numeric %>% \n", + " pivot_longer(!artist_top_genre, names_to = \"feature_names\", values_to = \"values\") \n", + "\n", + "# Print out data\n", + "df_numeric_long %>% \n", + " slice_head(n = 15)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-7tE1swnLXyv" + }, + "source": [ + "ಬಹಳ ಹೆಚ್ಚು! ಈಗ ಕೆಲವು `ggplots` ಸಮಯ! ಆದ್ದರಿಂದ ನಾವು ಯಾವ `geom` ಅನ್ನು ಬಳಸಲಿದ್ದೇವೆ?\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "r88bIsyuLXyy" + }, + "source": [ + "# Make a box plot\n", + "df_numeric_long %>% \n", + " ggplot(mapping = aes(x = feature_names, y = values, fill = feature_names)) +\n", + " geom_boxplot() +\n", + " facet_wrap(~ feature_names, ncol = 4, scales = \"free\") +\n", + " theme(legend.position = \"none\")\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EYVyKIUELXyz" + }, + "source": [ + "Easy-gg!\n", + "\n", + "ಈಗ ನಾವು ಈ ಡೇಟಾ ಸ್ವಲ್ಪ ಶಬ್ದಮಯವಾಗಿದೆ ಎಂದು ನೋಡಬಹುದು: ಪ್ರತಿ ಕಾಲಮ್ ಅನ್ನು ಬಾಕ್ಸ್‌ಪ್ಲಾಟ್ ಆಗಿ ಗಮನಿಸುವ ಮೂಲಕ, ನೀವು ಔಟ್‌ಲೈಯರ್‌ಗಳನ್ನು ನೋಡಬಹುದು. ನೀವು ಡೇಟಾಸೆಟ್ ಮೂಲಕ ಹೋಗಿ ಈ ಔಟ್‌ಲೈಯರ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಬಹುದು, ಆದರೆ ಅದು ಡೇಟಾವನ್ನು ಬಹಳ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.\n", + "\n", + "ಈಗ, ನಾವು ನಮ್ಮ ಕ್ಲಸ್ಟರಿಂಗ್ ವ್ಯಾಯಾಮಕ್ಕಾಗಿ ಯಾವ ಕಾಲಮ್‌ಗಳನ್ನು ಬಳಸುವುದೆಂದು ಆಯ್ಕೆ ಮಾಡೋಣ. ಸಮಾನ ಶ್ರೇಣಿಗಳಿರುವ ಸಂಖ್ಯಾತ್ಮಕ ಕಾಲಮ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡೋಣ. ನಾವು `artist_top_genre` ಅನ್ನು ಸಂಖ್ಯಾತ್ಮಕವಾಗಿ ಎನ್‌ಕೋಡ್ ಮಾಡಬಹುದು ಆದರೆ ಈಗ ಅದನ್ನು ಬಿಟ್ಟುಬಿಡುತ್ತೇವೆ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-wkpINyZLXy0" + }, + "source": [ + "# Select variables with similar ranges\n", + "df_numeric_select <- df_numeric %>% \n", + " select(popularity, danceability, acousticness, loudness, energy) \n", + "\n", + "# Normalize data\n", + "# df_numeric_select <- scale(df_numeric_select)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "D7dLzgpqLXy1" + }, + "source": [ + "## 3. R ನಲ್ಲಿ k-means ಕ್ಲಸ್ಟರಿಂಗ್ ಲೆಕ್ಕಹಾಕುವುದು\n", + "\n", + "ನಾವು R ನಲ್ಲಿ ನಿರ್ಮಿತ `kmeans` ಫಂಕ್ಷನ್ ಬಳಸಿ k-means ಅನ್ನು ಲೆಕ್ಕಹಾಕಬಹುದು, `help(\"kmeans()\")` ನೋಡಿ. `kmeans()` ಫಂಕ್ಷನ್ ತನ್ನ ಪ್ರಾಥಮಿಕ ಆರ್ಗ್ಯುಮೆಂಟ್ ಆಗಿ ಎಲ್ಲಾ ಸಂಖ್ಯಾತ್ಮಕ ಕಾಲಮ್‌ಗಳಿರುವ ಡೇಟಾ ಫ್ರೇಮ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ.\n", + "\n", + "k-means ಕ್ಲಸ್ಟರಿಂಗ್ ಬಳಸುವ ಮೊದಲ ಹಂತವು ಅಂತಿಮ ಪರಿಹಾರದಲ್ಲಿ ರಚಿಸಲಾಗುವ ಕ್ಲಸ್ಟರ್‌ಗಳ ಸಂಖ್ಯೆ (k) ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವುದು. ನಾವು ಡೇಟಾಸೆಟ್‌ನಿಂದ 3 ಹಾಡು ಶೈಲಿಗಳನ್ನು ಹೊರತೆಗೆಯಲಾಗಿದೆ ಎಂದು ತಿಳಿದಿದ್ದೇವೆ, ಆದ್ದರಿಂದ 3 ಅನ್ನು ಪ್ರಯತ್ನಿಸೋಣ:\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "uC4EQ5w7LXy5" + }, + "source": [ + "set.seed(2056)\n", + "# Kmeans clustering for 3 clusters\n", + "kclust <- kmeans(\n", + " df_numeric_select,\n", + " # Specify the number of clusters\n", + " centers = 3,\n", + " # How many random initial configurations\n", + " nstart = 25\n", + ")\n", + "\n", + "# Display clustering object\n", + "kclust\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hzfhscWrLXy-" + }, + "source": [ + "kmeans ವಸ್ತುವಿನಲ್ಲಿ ಹಲವಾರು ಮಾಹಿತಿಯ ತುಂಡುಗಳು ಇವೆ, ಅವುಗಳನ್ನು `help(\"kmeans()\")` ನಲ್ಲಿ ಚೆನ್ನಾಗಿ ವಿವರಿಸಲಾಗಿದೆ. ಈಗ, ಕೆಲವು ವಿಷಯಗಳ ಮೇಲೆ ಗಮನಹರಿಸೋಣ. ಡೇಟಾ 65, 110, 111 ಗಾತ್ರದ 3 ಗುಂಪುಗಳಾಗಿ ಗುಂಪುಬದ್ಧಗೊಂಡಿದೆ ಎಂದು ನಾವು ನೋಡುತ್ತೇವೆ. ಔಟ್‌ಪುಟ್‌ನಲ್ಲಿ 5 ಚರಗಳಾದ 3 ಗುಂಪುಗಳ ಕ್ಲಸ್ಟರ್ ಕೇಂದ್ರಗಳು (ಸರಾಸರಿ) ಕೂಡ ಸೇರಿವೆ.\n", + "\n", + "ಕ್ಲಸ್ಟರಿಂಗ್ ವೆಕ್ಟರ್ ಪ್ರತಿ ವೀಕ್ಷಣೆಯ ಕ್ಲಸ್ಟರ್ ನಿಯೋಜನೆ ಆಗಿದೆ. ಮೂಲ ಡೇಟಾ ಸೆಟ್‌ಗೆ ಕ್ಲಸ್ಟರ್ ನಿಯೋಜನೆಯನ್ನು ಸೇರಿಸಲು `augment` ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸೋಣ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0XwwpFGQLXy_" + }, + "source": [ + "# Add predicted cluster assignment to data set\n", + "augment(kclust, df_numeric_select) %>% \n", + " relocate(.cluster) %>% \n", + " slice_head(n = 10)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NXIVXXACLXzA" + }, + "source": [ + "ಪರಿಪೂರ್ಣ, ನಾವು ನಮ್ಮ ಡೇಟಾ ಸೆಟ್ ಅನ್ನು 3 ಗುಂಪುಗಳ ಸೆಟ್ ಆಗಿ ವಿಭಜಿಸಿದ್ದೇವೆ. ಹಾಗಾದರೆ, ನಮ್ಮ ಕ್ಲಸ್ಟರಿಂಗ್ ಎಷ್ಟು ಉತ್ತಮವಾಗಿದೆ 🤷? ಬನ್ನಿ, `Silhouette score` ಅನ್ನು ನೋಡೋಣ\n", + "\n", + "### **Silhouette score**\n", + "\n", + "[Silhouette ವಿಶ್ಲೇಷಣೆ](https://en.wikipedia.org/wiki/Silhouette_(clustering)) ಫಲಿತಾಂಶ ಕ್ಲಸ್ಟರ್‌ಗಳ ನಡುವಿನ ವಿಭಜನೆ ದೂರವನ್ನು ಅಧ್ಯಯನ ಮಾಡಲು ಬಳಸಬಹುದು. ಈ ಸ್ಕೋರ್ -1 ರಿಂದ 1 ರವರೆಗೆ ಬದಲಾಗುತ್ತದೆ, ಮತ್ತು ಸ್ಕೋರ್ 1 ಗೆ ಹತ್ತಿರ ಇದ್ದರೆ, ಕ್ಲಸ್ಟರ್ ಗಟ್ಟಿಯಾಗಿದ್ದು ಇತರ ಕ್ಲಸ್ಟರ್‌ಗಳಿಂದ ಚೆನ್ನಾಗಿ ವಿಭಜಿಸಲಾಗಿದೆ. 0 ಗೆ ಹತ್ತಿರದ ಮೌಲ್ಯವು ಹತ್ತಿರದ ಕ್ಲಸ್ಟರ್‌ಗಳ ನಿರ್ಧಾರ ಗಡಿಬಿಡಿಯ ಬಳಿ ಮಾದರಿಗಳೊಂದಿಗೆ ಒತ್ತಡದ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ.[ಮೂಲ](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam).\n", + "\n", + "ಸರಾಸರಿ silhouette ವಿಧಾನವು ವಿಭಿನ್ನ *k* ಮೌಲ್ಯಗಳಿಗಾಗಿ ವೀಕ್ಷಣೆಗಳ ಸರಾಸರಿ silhouette ಅನ್ನು ಲೆಕ್ಕಹಾಕುತ್ತದೆ. ಉನ್ನತ ಸರಾಸರಿ silhouette ಸ್ಕೋರ್ ಉತ್ತಮ ಕ್ಲಸ್ಟರಿಂಗ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ.\n", + "\n", + "ಸರಾಸರಿ silhouette ಅಗಲವನ್ನು ಲೆಕ್ಕಹಾಕಲು ಕ್ಲಸ್ಟರ್ ಪ್ಯಾಕೇಜಿನ `silhouette` ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸಬಹುದು.\n", + "\n", + "> silhouette ಅನ್ನು ಯಾವುದೇ [ದೂರ](https://en.wikipedia.org/wiki/Distance \"Distance\") ಮಾಪಕದಿಂದ ಲೆಕ್ಕಹಾಕಬಹುದು, ಉದಾಹರಣೆಗೆ ನಾವು [ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb) ಚರ್ಚಿಸಿದಂತೆ [ಯೂಕ್ಲಿಡಿಯನ್ ದೂರ](https://en.wikipedia.org/wiki/Euclidean_distance \"Euclidean distance\") ಅಥವಾ [ಮ್ಯಾನ್ಹ್ಯಾಟನ್ ದೂರ](https://en.wikipedia.org/wiki/Manhattan_distance \"Manhattan distance\").\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Jn0McL28LXzB" + }, + "source": [ + "# Load cluster package\n", + "library(cluster)\n", + "\n", + "# Compute average silhouette score\n", + "ss <- silhouette(kclust$cluster,\n", + " # Compute euclidean distance\n", + " dist = dist(df_numeric_select))\n", + "mean(ss[, 3])\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QyQRn97nLXzC" + }, + "source": [ + "ನಮ್ಮ ಅಂಕೆ **.549** ಆಗಿದ್ದು, ಮಧ್ಯದಲ್ಲಿ ಇದೆ. ಇದು ನಮ್ಮ ಡೇಟಾ ಈ ರೀತಿಯ ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ವಿಶೇಷವಾಗಿ ಸೂಕ್ತವಲ್ಲದಿರುವುದನ್ನು ಸೂಚಿಸುತ್ತದೆ. ನಾವು ಈ ಊಹೆಯನ್ನು ದೃಶ್ಯವಾಗಿ ದೃಢೀಕರಿಸಬಹುದೇ ಎಂದು ನೋಡೋಣ. [factoextra ಪ್ಯಾಕೇಜ್](https://rpkgs.datanovia.com/factoextra/index.html) ಕ್ಲಸ್ಟರಿಂಗ್ ಅನ್ನು ದೃಶ್ಯೀಕರಿಸಲು (`fviz_cluster()`) ಕಾರ್ಯಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "7a6Km1_FLXzD" + }, + "source": [ + "library(factoextra)\n", + "\n", + "# Visualize clustering results\n", + "fviz_cluster(kclust, df_numeric_select)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IBwCWt-0LXzD" + }, + "source": [ + "ಕ್ಲಸ್ಟರ್‌ಗಳಲ್ಲಿನ ಓವರ್‌ಲ್ಯಾಪ್ ನಮ್ಮ ಡೇಟಾ ಈ ರೀತಿಯ ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ವಿಶೇಷವಾಗಿ ಸೂಕ್ತವಿಲ್ಲವೆಂದು ಸೂಚಿಸುತ್ತದೆ ಆದರೆ ನಾವು ಮುಂದುವರೆಯೋಣ.\n", + "\n", + "## 4. ಅತ್ಯುತ್ತಮ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ನಿರ್ಧರಿಸುವುದು\n", + "\n", + "ಕೆ-ಮೀನ್ಸ್ ಕ್ಲಸ್ಟರಿಂಗ್‌ನಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ ಉದ್ಭವಿಸುವ ಮೂಲಭೂತ ಪ್ರಶ್ನೆ ಇದು - ತಿಳಿದಿರುವ ವರ್ಗ ಲೇಬಲ್ಗಳಿಲ್ಲದೆ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಎಷ್ಟು ಕ್ಲಸ್ಟರ್‌ಗಳಾಗಿ ವಿಭಜಿಸಬೇಕು ಎಂದು ನೀವು ಹೇಗೆ ತಿಳಿಯಬಹುದು?\n", + "\n", + "ನಾವು ಪ್ರಯತ್ನಿಸಬಹುದಾದ ಒಂದು ವಿಧಾನವೆಂದರೆ ಡೇಟಾ ಮಾದರಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಕ್ಲಸ್ಟರ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕ್ರಮೇಣ ಹೆಚ್ಚಿಸುವ ಮೂಲಕ (ಉದಾ: 1-10 ರವರೆಗೆ) `ಕ್ಲಸ್ಟರಿಂಗ್ ಮಾದರಿಗಳ ಸರಣಿಯನ್ನು ರಚಿಸುವುದು` ಮತ್ತು **ಸಿಲ್ಹೌಟ್ ಸ್ಕೋರ್** ಮುಂತಾದ ಕ್ಲಸ್ಟರಿಂಗ್ ಮೆಟ್ರಿಕ್ಸ್‌ಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು.\n", + "\n", + "ವಿಭಿನ್ನ *k* ಮೌಲ್ಯಗಳಿಗಾಗಿ ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗೋರಿದಮ್ ಅನ್ನು ಗಣನೆ ಮಾಡಿ ಮತ್ತು **ವಿಥಿನ್ ಕ್ಲಸ್ಟರ್ ಸಮ್ ಆಫ್ ಸ್ಕ್ವೇರ್ಸ್** (WCSS) ಅನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವ ಮೂಲಕ ಅತ್ಯುತ್ತಮ ಕ್ಲಸ್ಟರ್ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಧರಿಸೋಣ. ಒಟ್ಟು ವಿಥಿನ್-ಕ್ಲಸ್ಟರ್ ಸಮ್ ಆಫ್ ಸ್ಕ್ವೇರ್ಸ್ (WCSS) ಕ್ಲಸ್ಟರಿಂಗ್‌ನ ಸಂಕುಚಿತತೆಯನ್ನು ಅಳೆಯುತ್ತದೆ ಮತ್ತು ನಾವು ಅದನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಕಡಿಮೆ ಇರಿಸಲು ಬಯಸುತ್ತೇವೆ, ಕಡಿಮೆ ಮೌಲ್ಯಗಳು ಅಂದರೆ ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳು ಹತ್ತಿರವಿರುವುದನ್ನು ಸೂಚಿಸುತ್ತದೆ.\n", + "\n", + "1 ರಿಂದ 10 ರವರೆಗೆ `k` ನ ವಿಭಿನ್ನ ಆಯ್ಕೆಗಳ ಪರಿಣಾಮವನ್ನು ಈ ಕ್ಲಸ್ಟರಿಂಗ್ ಮೇಲೆ ಅನ್ವೇಷಿಸೋಣ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "hSeIiylDLXzE" + }, + "source": [ + "# Create a series of clustering models\n", + "kclusts <- tibble(k = 1:10) %>% \n", + " # Perform kmeans clustering for 1,2,3 ... ,10 clusters\n", + " mutate(model = map(k, ~ kmeans(df_numeric_select, centers = .x, nstart = 25)),\n", + " # Farm out clustering metrics eg WCSS\n", + " glanced = map(model, ~ glance(.x))) %>% \n", + " unnest(cols = glanced)\n", + " \n", + "\n", + "# View clustering rsulsts\n", + "kclusts\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "m7rS2U1eLXzE" + }, + "source": [ + "ಈಗ ನಾವು ಪ್ರತಿ ಕ್ಲಸ್ಟರಿಂಗ್ ಆಲ್ಗೋರಿದಮ್‌ಗೆ ಕೇಂದ್ರ *k* ಇರುವ ಒಟ್ಟು ಒಳಗಿನ-ಕ್ಲಸ್ಟರ್ ಸಮ್ಮಿಶ್ರಣಗಳ ಮೊತ್ತ (tot.withinss) ಹೊಂದಿದ್ದೇವೆ, ನಾವು [ಎಲ್ಬೋ ವಿಧಾನ](https://en.wikipedia.org/wiki/Elbow_method_(clustering)) ಅನ್ನು ಬಳಸಿಕೊಂಡು ಅತ್ಯುತ್ತಮ ಕ್ಲಸ್ಟರ್ ಸಂಖ್ಯೆಯನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೇವೆ. ಈ ವಿಧಾನವು ಕ್ಲಸ್ಟರ್ ಸಂಖ್ಯೆಯ ಕಾರ್ಯವಾಗಿ WCSS ಅನ್ನು ಚಿತ್ರಿಸುವುದನ್ನು ಒಳಗೊಂಡಿದ್ದು, ಬಳಕೆ ಮಾಡಲು ಕ್ಲಸ್ಟರ್ ಸಂಖ್ಯೆಯಾಗಿ [ವಕ್ರದ ಎಲ್ಬೋ](https://en.wikipedia.org/wiki/Elbow_of_the_curve \"Elbow of the curve\") ಅನ್ನು ಆಯ್ಕೆಮಾಡುವುದು.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "o_DjHGItLXzF" + }, + "source": [ + "set.seed(2056)\n", + "# Use elbow method to determine optimum number of clusters\n", + "kclusts %>% \n", + " ggplot(mapping = aes(x = k, y = tot.withinss)) +\n", + " geom_line(size = 1.2, alpha = 0.8, color = \"#FF7F0EFF\") +\n", + " geom_point(size = 2, color = \"#FF7F0EFF\")\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pLYyt5XSLXzG" + }, + "source": [ + "ಚಿತ್ರವು ಕ್ಲಸ್ಟರ್‌ಗಳ ಸಂಖ್ಯೆ ಒಂದುರಿಂದ ಎರಡುಕ್ಕೆ ಹೆಚ್ಚಾದಂತೆ WCSS ನಲ್ಲಿ ದೊಡ್ಡ ಕಡಿತವನ್ನು ತೋರಿಸುತ್ತದೆ (ಹೀಗಾಗಿ ಹೆಚ್ಚು *ದೃಢತೆ*), ಮತ್ತು ಎರಡುರಿಂದ ಮೂರು ಕ್ಲಸ್ಟರ್‌ಗಳಿಗೆ ಮತ್ತಷ್ಟು ಗಮನಾರ್ಹ ಕಡಿತವನ್ನು ತೋರಿಸುತ್ತದೆ. ಅದಾದ ಮೇಲೆ, ಕಡಿತವು ಕಡಿಮೆ ಸ್ಪಷ್ಟವಾಗುತ್ತದೆ, ಫಲವಾಗಿ ಚಾರ್ಟ್‌ನಲ್ಲಿ ಸುಮಾರು ಮೂರು ಕ್ಲಸ್ಟರ್‌ಗಳ ಬಳಿ `ಎಲ್ಬೋ` 💪 ಕಾಣಿಸುತ್ತದೆ. ಇದು ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳ ಎರಡು ರಿಂದ ಮೂರು ಸಮರ್ಪಕವಾಗಿ ವಿಭಜಿತ ಕ್ಲಸ್ಟರ್‌ಗಳಿರುವ ಉತ್ತಮ ಸೂಚನೆ.\n", + "\n", + "ನಾವು ಈಗ ಮುಂದುವರಿದು `k = 3` ಇರುವ ಕ್ಲಸ್ಟರಿಂಗ್ ಮಾದರಿಯನ್ನು ಹೊರತೆಗೆಯಬಹುದು:\n", + "\n", + "> `pull()`: ಒಂದು ಕಾಲಮ್ ಅನ್ನು ಹೊರತೆಗೆಯಲು ಬಳಸಲಾಗುತ್ತದೆ\n", + ">\n", + "> `pluck()`: ಪಟ್ಟಿಗಳಂತಹ ಡೇಟಾ ರಚನೆಗಳನ್ನು ಸೂಚಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "JP_JPKBILXzG" + }, + "source": [ + "# Extract k = 3 clustering\n", + "final_kmeans <- kclusts %>% \n", + " filter(k == 3) %>% \n", + " pull(model) %>% \n", + " pluck(1)\n", + "\n", + "\n", + "final_kmeans\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "l_PDTu8tLXzI" + }, + "source": [ + "ಶ್ರೇಷ್ಠ! ನಾವು ಪಡೆದ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸೋಣ. `plotly` ಬಳಸಿ ಸ್ವಲ್ಪ ಇಂಟರಾಕ್ಟಿವಿಟಿ ಬೇಕೆ?\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "dNcleFe-LXzJ" + }, + "source": [ + "# Add predicted cluster assignment to data set\n", + "results <- augment(final_kmeans, df_numeric_select) %>% \n", + " bind_cols(df_numeric %>% select(artist_top_genre)) \n", + "\n", + "# Plot cluster assignments\n", + "clust_plt <- results %>% \n", + " ggplot(mapping = aes(x = popularity, y = danceability, color = .cluster, shape = artist_top_genre)) +\n", + " geom_point(size = 2, alpha = 0.8) +\n", + " paletteer::scale_color_paletteer_d(\"ggthemes::Tableau_10\")\n", + "\n", + "ggplotly(clust_plt)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6JUM_51VLXzK" + }, + "source": [ + "ಬಹುಶಃ ನಾವು ನಿರೀಕ್ಷಿಸಿದ್ದೇವೆ ಪ್ರತಿ ಕ್ಲಸ್ಟರ್ (ವಿಭಿನ್ನ ಬಣ್ಣಗಳಿಂದ ಪ್ರತಿನಿಧಿಸಲಾಗಿದೆ) ವಿಭಿನ್ನ ಶೈಲಿಗಳನ್ನು (ವಿಭಿನ್ನ ಆಕಾರಗಳಿಂದ ಪ್ರತಿನಿಧಿಸಲಾಗಿದೆ) ಹೊಂದಿರುತ್ತದೆ.\n", + "\n", + "ನಾವು ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ನೋಡೋಣ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "HdIMUGq7LXzL" + }, + "source": [ + "# Assign genres to predefined integers\n", + "label_count <- results %>% \n", + " group_by(artist_top_genre) %>% \n", + " mutate(id = cur_group_id()) %>% \n", + " ungroup() %>% \n", + " summarise(correct_labels = sum(.cluster == id))\n", + "\n", + "\n", + "# Print results \n", + "cat(\"Result:\", label_count$correct_labels, \"out of\", nrow(results), \"samples were correctly labeled.\")\n", + "\n", + "cat(\"\\nAccuracy score:\", label_count$correct_labels/nrow(results))\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "C50wvaAOLXzM" + }, + "source": [ + "ಈ ಮಾದರಿಯ ನಿಖರತೆ ಕೆಟ್ಟದಾಗಿಲ್ಲ, ಆದರೆ ಅತ್ಯುತ್ತಮವೂ ಅಲ್ಲ. ಡೇಟಾ K-Means ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಸೂಕ್ತವಾಗಿಲ್ಲದಿರಬಹುದು. ಈ ಡೇಟಾ ತುಂಬಾ ಅಸಮತೋಲನವಾಗಿದೆ, ತುಂಬಾ ಕಡಿಮೆ ಸಂಬಂಧಿತವಾಗಿದೆ ಮತ್ತು ಕಾಲಮ್ ಮೌಲ್ಯಗಳ ನಡುವೆ ತುಂಬಾ ವ್ಯತ್ಯಾಸವಿದೆ, ಆದ್ದರಿಂದ ಚೆನ್ನಾಗಿ ಕ್ಲಸ್ಟರ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ವಾಸ್ತವದಲ್ಲಿ, ರೂಪುಗೊಂಡಿರುವ ಕ್ಲಸ್ಟರ್‌ಗಳು ಮೇಲಿನ ಮೂರು ಜಾನರ್ ವರ್ಗಗಳಿಂದ ಬಹುಮಟ್ಟಿಗೆ ಪ್ರಭಾವಿತವಾಗಿವೆ ಅಥವಾ ತಿರುವು ಹೊಂದಿವೆ.\n", + "\n", + "ಆದರೂ, ಅದು ತುಂಬಾ ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯಾಗಿದೆ!\n", + "\n", + "Scikit-learn ನ ಡಾಕ್ಯುಮೆಂಟೇಶನ್‌ನಲ್ಲಿ, ನೀವು ಈ ಮಾದರಿಯಂತಹ, ಚೆನ್ನಾಗಿ ವಿಭಜಿಸಲ್ಪಟ್ಟಿಲ್ಲದ ಕ್ಲಸ್ಟರ್‌ಗಳಿರುವ ಮಾದರಿಯು 'ವ್ಯತ್ಯಾಸ' ಸಮಸ್ಯೆಯನ್ನು ಹೊಂದಿದೆ ಎಂದು ನೋಡಬಹುದು:\n", + "\n", + "

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

Scikit-learn ನಿಂದ ಇನ್ಫೋಗ್ರಾಫಿಕ್
\n", + "\n", + "\n", + "\n", + "## **ವ್ಯತ್ಯಾಸ**\n", + "\n", + "ವ್ಯತ್ಯಾಸವನ್ನು \"ಸರಾಸರಿ ಮೌಲ್ಯದಿಂದ ಚದರ ವ್ಯತ್ಯಾಸಗಳ ಸರಾಸರಿ\" ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ [ಮೂಲ](https://www.mathsisfun.com/data/standard-deviation.html). ಈ ಕ್ಲಸ್ಟರಿಂಗ್ ಸಮಸ್ಯೆಯ ಸನ್ನಿವೇಶದಲ್ಲಿ, ಇದು ನಮ್ಮ ಡೇಟಾಸೆಟ್‌ನ ಸಂಖ್ಯೆಗಳು ಸರಾಸರಿ ಮೌಲ್ಯದಿಂದ ಸ್ವಲ್ಪ ಹೆಚ್ಚು ವಿಭಿನ್ನವಾಗುವ ಡೇಟಾವನ್ನು ಸೂಚಿಸುತ್ತದೆ.\n", + "\n", + "✅ ಈ ಸಮಸ್ಯೆಯನ್ನು ಸರಿಪಡಿಸಲು ನೀವು ಮಾಡಬಹುದಾದ ಎಲ್ಲಾ ಮಾರ್ಗಗಳನ್ನು ಯೋಚಿಸುವ ಉತ್ತಮ ಸಮಯ ಇದು. ಡೇಟಾವನ್ನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ತಿದ್ದುಪಡಿ ಮಾಡಬೇಕೆ? ವಿಭಿನ್ನ ಕಾಲಮ್‌ಗಳನ್ನು ಬಳಸಬೇಕೆ? ಬೇರೆ ಆಲ್ಗಾರಿಥಮ್ ಬಳಸಬೇಕೆ? ಸೂಚನೆ: ನಿಮ್ಮ ಡೇಟಾವನ್ನು [ಸ್ಕೇಲ್ ಮಾಡಿ](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/) ಸಾಮಾನ್ಯೀಕರಿಸಿ ಮತ್ತು ಬೇರೆ ಕಾಲಮ್‌ಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ.\n", + "\n", + "> ಈ '[ವ್ಯತ್ಯಾಸ ಕ್ಯಾಲ್ಕುಲೇಟರ್](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ ಮತ್ತು ಈ ಕಲ್ಪನೆಯನ್ನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ.\n", + "\n", + "------------------------------------------------------------------------\n", + "\n", + "## **🚀ಸವಾಲು**\n", + "\n", + "ಈ ನೋಟ್ಬುಕ್‌ನೊಂದಿಗೆ ಸ್ವಲ್ಪ ಸಮಯ ಕಳೆಯಿರಿ, ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ತಿದ್ದುಪಡಿ ಮಾಡಿ. ಡೇಟಾವನ್ನು ಹೆಚ್ಚು ಸ್ವಚ್ಛಗೊಳಿಸುವ ಮೂಲಕ (ಉದಾಹರಣೆಗೆ, ಔಟ್‌ಲೈಯರ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ) ನೀವು ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಸುಧಾರಿಸಬಹುದೇ? ನೀವು ನೀಡಲಾದ ಡೇಟಾ ಮಾದರಿಗಳಿಗೆ ಹೆಚ್ಚು ತೂಕ ನೀಡಲು ತೂಕಗಳನ್ನು ಬಳಸಬಹುದು. ಉತ್ತಮ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ರಚಿಸಲು ಇನ್ನೇನು ಮಾಡಬಹುದು?\n", + "\n", + "ಸೂಚನೆ: ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ಕೇಲ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ. ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಕಾಮೆಂಟ್ ಮಾಡಲಾದ ಕೋಡ್ ಇದೆ, ಅದು ಡೇಟಾ ಕಾಲಮ್‌ಗಳನ್ನು ಪರಸ್ಪರ ಹೋಲುವಂತೆ ಮಾಡಲು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸ್ಕೇಲಿಂಗ್ ಅನ್ನು ಸೇರಿಸುತ್ತದೆ. ಸಿಲ್ಹೌಟ್ ಸ್ಕೋರ್ ಕಡಿಮೆಯಾಗುತ್ತದೆ, ಆದರೆ ಎಲ್ಬೋ ಗ್ರಾಫ್‌ನ 'ಕಿಂಕ್' ಸ್ಮೂತ್ ಆಗುತ್ತದೆ. ಇದಕ್ಕೆ ಕಾರಣ, ಡೇಟಾವನ್ನು ಸ್ಕೇಲ್ ಮಾಡದಿದ್ದರೆ ಕಡಿಮೆ ವ್ಯತ್ಯಾಸವಿರುವ ಡೇಟಾ ಹೆಚ್ಚು ತೂಕವನ್ನು ಹೊಂದುತ್ತದೆ. ಈ ಸಮಸ್ಯೆಯ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಓದಿ [ಇಲ್ಲಿ](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226).\n", + "\n", + "## [**ಪೋಸ್ಟ್-ಲೆಕ್ಚರ್ ಕ್ವಿಜ್**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/30/)\n", + "\n", + "## **ಪುನರ್ ವಿಮರ್ಶೆ & ಸ್ವಯಂ ಅಧ್ಯಯನ**\n", + "\n", + "- K-Means ಸಿಮ್ಯುಲೇಟರ್ ಅನ್ನು ನೋಡಿ [ಇಂತಹ ಒಂದು](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/). ನೀವು ಈ ಉಪಕರಣವನ್ನು ಬಳಸಿ ಮಾದರಿ ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಿ ಅದರ ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳನ್ನು ನಿರ್ಧರಿಸಬಹುದು. ನೀವು ಡೇಟಾದ ಯಾದೃಚ್ಛಿಕತೆ, ಕ್ಲಸ್ಟರ್‌ಗಳ ಸಂಖ್ಯೆ ಮತ್ತು ಸೆಂಟ್ರಾಯ್ಡ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಸಂಪಾದಿಸಬಹುದು. ಇದರಿಂದ ಡೇಟಾವನ್ನು ಹೇಗೆ ಗುಂಪುಮಾಡಬಹುದು ಎಂಬುದರ ಬಗ್ಗೆ ನಿಮಗೆ ಕಲ್ಪನೆ ಸಿಗುತ್ತದೆಯೇ?\n", + "\n", + "- ಜೊತೆಗೆ, ಸ್ಟ್ಯಾನ್ಫರ್ಡ್‌ನಿಂದ [K-Means ಕುರಿತು ಈ ಹ್ಯಾಂಡ್‌ಔಟ್](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html) ಅನ್ನು ನೋಡಿ.\n", + "\n", + "ನೀವು ಹೊಸದಾಗಿ ಪಡೆದ ಕ್ಲಸ್ಟರಿಂಗ್ ಕೌಶಲ್ಯಗಳನ್ನು K-Means ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಸೂಕ್ತವಾಗಿರುವ ಡೇಟಾ ಸೆಟ್‌ಗಳ ಮೇಲೆ ಪ್ರಯತ್ನಿಸಲು ಬಯಸುತ್ತೀರಾ? ದಯವಿಟ್ಟು ನೋಡಿ:\n", + "\n", + "- [ಟ್ರೇನ್ ಮತ್ತು ಮೌಲ್ಯಮಾಪನ ಕ್ಲಸ್ಟರಿಂಗ್ ಮಾದರಿಗಳು](https://rpubs.com/eR_ic/clustering) ಟಿಡಿಮೋಡಲ್ಸ್ ಮತ್ತು ಸ್ನೇಹಿತರು ಬಳಸಿ\n", + "\n", + "- [K-means ಕ್ಲಸ್ಟರ್ ವಿಶ್ಲೇಷಣೆ](https://uc-r.github.io/kmeans_clustering), ಯುಸಿ ಬಿಸಿನೆಸ್ ಅನಾಲಿಟಿಕ್ಸ್ R ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಗೈಡ್\n", + "\n", + "- [ಟಿಡಿ ಡೇಟಾ ತತ್ವಗಳೊಂದಿಗೆ K-means ಕ್ಲಸ್ಟರಿಂಗ್](https://www.tidymodels.org/learn/statistics/k-means/)\n", + "\n", + "## **ಅಸೈನ್‌ಮೆಂಟ್**\n", + "\n", + "[ವಿಭಿನ್ನ ಕ್ಲಸ್ಟರಿಂಗ್ ವಿಧಾನಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/2-K-Means/assignment.md)\n", + "\n", + "## ಧನ್ಯವಾದಗಳು:\n", + "\n", + "[ಜೆನ್ ಲೂಪರ್](https://www.twitter.com/jenlooper) ಈ ಮಾದರಿಯ ಮೂಲ ಪೈಥಾನ್ ಆವೃತ್ತಿಯನ್ನು ರಚಿಸಿದವರಿಗೆ ♥️\n", + "\n", + "[`ಅಲಿಸನ್ ಹೋರ್ಸ್ಟ್`](https://twitter.com/allison_horst/) R ಅನ್ನು ಹೆಚ್ಚು ಆತಿಥ್ಯಪೂರ್ಣ ಮತ್ತು ಆಕರ್ಷಕವಾಗಿಸುವ ಅದ್ಭುತ ಚಿತ್ರಣಗಳನ್ನು ರಚಿಸಿದವರಿಗೆ. ಅವರ [ಗ್ಯಾಲರಿ](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM) ನಲ್ಲಿ ಇನ್ನಷ್ಟು ಚಿತ್ರಣಗಳನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ.\n", + "\n", + "ಸಂತೋಷಕರ ಅಧ್ಯಯನ,\n", + "\n", + "[ಎರಿಕ್](https://twitter.com/ericntay), ಗೋಲ್ಡ್ ಮೈಕ್ರೋಸಾಫ್ಟ್ ಲರ್ನ್ ವಿದ್ಯಾರ್ಥಿ ರಾಯಭಾರಿ.\n", + "\n", + "

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

@allison_horst ಅವರ ಕಲಾಕೃತಿ
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/5-Clustering/2-K-Means/solution/notebook.ipynb b/translations/kn/5-Clustering/2-K-Means/solution/notebook.ipynb new file mode 100644 index 000000000..2f49976b2 --- /dev/null +++ b/translations/kn/5-Clustering/2-K-Means/solution/notebook.ipynb @@ -0,0 +1,554 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "e867e87e3129c8875423a82945f4ad5e", + "translation_date": "2025-12-19T16:52:00+00:00", + "source_file": "5-Clustering/2-K-Means/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ಸ್ಪೋಟಿಫೈಯಿಂದ ಸಂಗ್ರಹಿಸಿದ ನೈಜೀರಿಯನ್ ಸಂಗೀತ - ಒಂದು ವಿಶ್ಲೇಷಣೆ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: seaborn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.11.1)\n", + "Requirement already satisfied: pandas>=0.23 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.1.2)\n", + "Requirement already satisfied: matplotlib>=2.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (3.1.0)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.4.1)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.19.2)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2.8.0)\n", + "Requirement already satisfied: pytz>=2017.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2019.1)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (1.1.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (0.10.0)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (2.4.0)\n", + "Requirement already satisfied: six>=1.5 in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from python-dateutil>=2.7.3->pandas>=0.23->seaborn) (1.12.0)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib>=2.2->seaborn) (45.1.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install seaborn" + ] + }, + { + "source": [ + "ನಾವು ಕೊನೆಯ ಪಾಠದಲ್ಲಿ ಮುಗಿಸಿದ ಸ್ಥಳದಿಂದ ಪ್ರಾರಂಭಿಸಿ, ಡೇಟಾವನ್ನು ಆಮದುಮಾಡಿ ಮತ್ತು ಫಿಲ್ಟರ್ ಮಾಡಲಾಗಿದೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "0 Sparky Mandy & The Jungle \n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "2 LITT! LITT! \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "0 Cruel Santino alternative r&b 2019 144000 48 \n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "2 AYLØ indie r&b 2018 207758 40 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "\n", + " speechiness tempo time_signature \n", + "0 0.0829 133.015 5 \n", + "1 0.3600 129.993 3 \n", + "2 0.0424 130.005 4 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
0SparkyMandy & The JungleCruel Santinoalternative r&b2019144000480.6660.85100.4200.5340000.1100-6.6990.0829133.0155
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
2LITT!LITT!AYLØindie r&b2018207758400.8360.27200.5640.0005370.1100-7.1270.0424130.0054
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
\n
" + }, + "metadata": {}, + "execution_count": 11 + } + ], + "source": [ + "\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "\n", + "df = pd.read_csv(\"../../data/nigerian-songs.csv\")\n", + "df.head()" + ] + }, + { + "source": [ + "ನಾವು ಕೇವಲ 3 ಶೈಲಿಗಳ ಮೇಲೆ ಮಾತ್ರ ಗಮನಹರಿಸುವೆವು. ಬಹುಶಃ ನಾವು 3 ಗುಂಪುಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "metadata": {}, + "execution_count": 12 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n", + "df = df[(df['popularity'] > 0)]\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "5 Kasala Pioneers \n", + "6 Pull Up Everything Pretty \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "5 DRB Lasgidi nigerian pop 2020 184800 26 \n", + "6 prettyboydo nigerian pop 2018 202648 29 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "5 0.803 0.1270 0.525 0.000007 0.1290 -10.034 \n", + "6 0.818 0.4520 0.587 0.004490 0.5900 -9.840 \n", + "\n", + " speechiness tempo time_signature \n", + "1 0.3600 129.993 3 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 \n", + "5 0.1970 100.103 4 \n", + "6 0.1990 95.842 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
5KasalaPioneersDRB Lasgidinigerian pop2020184800260.8030.12700.5250.0000070.1290-10.0340.1970100.1034
6Pull UpEverything Prettyprettyboydonigerian pop2018202648290.8180.45200.5870.0044900.5900-9.8400.199095.8424
\n
" + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "df.head()" + ] + }, + { + "source": [ + "ಈ ಡೇಟಾ ಎಷ್ಟು ಸ್ವಚ್ಛವಾಗಿದೆ? ಬಾಕ್ಸ್ ಪ್ಲಾಟ್‌ಗಳನ್ನು ಬಳಸಿ ಔಟ್‌ಲೈಯರ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ. ನಾವು ಕಡಿಮೆ ಔಟ್‌ಲೈಯರ್‌ಗಳಿರುವ ಕಾಲಮ್‌ಗಳ ಮೇಲೆ ಗಮನಹರಿಸುವೆವು (ನೀವು ಔಟ್‌ಲೈಯರ್‌ಗಳನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಬಹುದು). ಬಾಕ್ಸ್ ಪ್ಲಾಟ್‌ಗಳು ಡೇಟಾದ ವ್ಯಾಪ್ತಿಯನ್ನು ತೋರಿಸಬಹುದು ಮತ್ತು ಯಾವ ಕಾಲಮ್‌ಗಳನ್ನು ಬಳಸಬೇಕೆಂದು ಆಯ್ಕೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಗಮನಿಸಿ, ಬಾಕ್ಸ್ ಪ್ಲಾಟ್‌ಗಳು ವ್ಯತ್ಯಾಸವನ್ನು ತೋರಿಸುವುದಿಲ್ಲ, ಇದು ಉತ್ತಮ ಕ್ಲಸ್ಟರ್ ಮಾಡಬಹುದಾದ ಡೇಟಾದ ಪ್ರಮುಖ ಅಂಶವಾಗಿದೆ (https://stats.stackexchange.com/questions/91536/deduce-variance-from-boxplot)\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 14 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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AAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOTMpx5g16xWq7FcLu9dOz4+HrOZ9gQAAHj5nHmAh/iOAAAAdo1zCgCwLX53AAD7zG+dzxNUfGS5XI7z8/N71y4uLsbJyclEEwEAADwfZx7gIb4jAACAXeOcAgBsi98dAMA+81vn8yQlAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAA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AAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAKrtqYAAACAASURBVAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDirfQ9Qzfr6envy5Mkb1wAAAIbAPQ9wHXsEAABQjfsUAGBRvO4AAIbMa523E1T8ycrKStvY2Oh7DAAAgFvhnge4jj0CAACoxn0KALAoXncAAEPmtc7brfQ9AAAAAAAAAAAAAAAAwKIJKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAA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AAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMiZTz3Aulkulx+dvXnzZjx//nzMZvoTAAAAYHstl8uxWCyune3t7dmJAHwmn68AAAAA28W+B4BN47vr0wQVN1xcXHx0dnx8PE5OTsb+/v4EEwEAAACsxmKxGEdHR9fO7EQAPp/PVwAAAIDtYt8DwKbx3fVpkhIAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAPibvfuJjeuq/wZ87Lj5ya/SNEZq+6LWYovUIL1ITXYNKxYsQIioiaNEqhDQFJImFFg6RaLuFikhEW1ZISVK0qqoArGhK9JVky4imggQC6SGqmoiZJpatX6uY78bbDnj8Z07M/fM3Lnf55EQ9vjc8+/eOb33jD8xAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQEVJH330UfrHP/6RlpaW0sLCwvrrCwsLaWlpKS0tLa2/tvZ962vtbCy3VZnW8v0oe3y/7Qyr7rrJMdatrqvWtiLNM0TlfQ5EYb3Lx9wCADRT0X1eu591W77b9te+n5+f37L8Vsd02mevuu/dau1n0++xo4wzl17nzXx3VsUc1WWec/UjR70bPzMdRXU550A9WSMgJu/9wSrz+3WDOied2nFtAECzCVSU9MMf/jD94Ac/SN/97nfTgQMH0vz8fJqfn08HDhxIzz//fHrhhRfS4uJiWlxcTC+88EI6efLkfa/99Kc/TYuLi/fVuVb2hRdeSPPz823LtJbvVKZI2eP7bWdYdddNjrFurHOrr3O1DdSL9zkQhfUuH3MLANBMRfd57X7Wbflu21/7/p///Gfav39/+uijjzaVX9snbz1m4775IPrerdZ+ltnnH2Xtzgvl9XpNenbrrIo5qss85+pHjnrXPifdKixXd3U550A9WSMgJu/9wWrdD+j2ub/qvhS149oAgOYTqOjShx9+mD777LN06tSpNDs7mz777LP097//Pd28eTNduHAhnT9/Pt28eTP99a9/ve+1999/P124cOG+utbK3rx5M83OzrYt01q+U5kiZY/vt51h1V03Oca6sc6tvs7VNlAv3udAFNa7fMwtAEAzFd3ntftZt+W7bX/t+x/96EdpZWUlnThxYlP5tX3y1mM27psPou/dau1nmX3+UdbuvFBer9ekZ7fOqpijusxzrn7kqHftc9JTp05VVucg1eWcA/VkjYCYvPcHq3U/oNvn/qr7UtSOawMAmk+gokc3btxIN2/evO+1ixcvposXL2567dKlSymllC5fvpxu3bqVUkrp1q1b66+nlNbr2lhmo1u3bqXLly8XlilS9vh+26miD02QY6wb67x06dL69bPx68uXL6erV6+GmWeIKtJ6CsRmvcvH3AIANFPRfV67n3Vbvtv2N+5Vrv0rjnfu3El//OMf18tv3Ce/dOnSfT3bnlAAACAASURBVMes7Zu37oHm6Hu3Nrax1s9O+/yjrN14mzjOXHq9Jj27dVbFHNVlnnP1I0e9V69eXV8Lbty4ka5evdp3nYNUl3MO1JM1AmLy3h+s1v2Adr9fN6hz0qkd1wYAxCBQUaF79+6llZWVTa/du3cvpZTS559/ns6cOZNWVlbS6dOn11/faK3M6urq+murq6vpzJkzaXl5ecsyRcoe3287VfShCXKMtbXO5eXl9etn49eff/55mpubCzHPEFWk9RSIzXqXj7kFAGimovu8dj87ffp0On36dOnyne4Z2x2zca9yo1/+8pdpeXl50z758vJy22Na90Cr7nu3Wtto1bR77K3G27Rx5tLrNenZrbMq5qgu85yrHznqXVlZSXNzc/e9Njc3t+kz0rqqyzkH6skaATF57w/W6urqpv2A1t+vK3rur7ovRefetQEAcQhUDNi1a9fSq6++mt57773CMu+8887691euXEnXrl0rLFOk7PH9tlNFH5ogx1jb1bmVu3fvVto2UC+R1lMgNutdPuYWAKCZiu7z2v3svffe27RPXVS+0z1ju2Na9yrX3Lt3Lx0/frztPvlWx+Tse7fK7Nc26R67aLxNGmcuvV6Tnt06q2KO6jLPufqRo95XX31101p99+7d9Nprr/Vc5yDV5ZwD9WSNgJi89wfrypUrhb83l1Lxc3/VfSk6964NAIhDoKLF22+/nb2NN954o2OZc+fOpcXFxbS4uJjOnTtXWKZI2eP7baeKPjRBjrEW1VlW0+YZooq0ngKxWe/yMbcAAM1UdJ939uzZdPbs2dJ1FZXf6p6xlz3Mv/3tb12VL6OXvnerm7E24R67zHibMM5cen0G8+zWWRVzVJd5ztWPHPXOz89v+Tnn66+/nubn57uuc5Dqcs6BerJGQEze+4O1uLjY1R5FqyrPSadzPz8/79oAgEAEKlr8/ve/z95GmT95+/HHH6cLFy6k8+fPp9u3bxeWKVL2+H7bqaIPTZBjrEV1ltW0eYaoIq2nQGzWu3zMLQBAMxXd592+fTvduXOndF1F5be6Z6xiD7MKvfS9W92MtQn32GXG24Rx5tLrM5hnt86qmKO6zHOufuSod3Z2dsvPOVdWVtKpU6e6rnOQ6nLOgXqyRkBM3vuDdf78+a72KFpVeU46nfvZ2VnXBgAEIlCxwf79+4fdhftcvHgxXbp0qbDMpUuX0q1bt9r+7IMPPkiXL1/uePy7775bqtxW7RQp24de6q6bHGMtU2dZTZlniCrSegrEZr3Lx9wCADRTlXuIZbTeMw66/X70e7/by1hH+R67m/GO8jhz6fUZzLNbZ1XMUV3mOVc/ctT77rvvpps3bxaWuXHjRrp69WrpOgepLuccqCdrBMTkvT9YH3zwQcffgyujinNS5tx3uve9dOlS+vDDD/vqBwBQHwIV//Xpp5+mf//738Puxn3u3buX7t27V1hmeXk5nTlzJq2urt73+urqavrVr36VlpeXOx7/8ssvlyrXrp0i3fSh27rrJsdYy9ZZVhPmGaKKtJ4CsVnv8jG3AADNVPUeYhkb7xmH0X4/+rnf7XWso3qP3e14R3WcufT6DObZrbMq5qgu85yrHznqXVlZSS+//HKp9ufm5rb8KxbDUpdzDtSTNQJi8t4frNXV1XTmzJmOvwdXRr/npKq9jOXl5fSb3/ymrzoAgPqYGHYH6uKb3/zmsLvQs2vXrqV33nkn7du3b/21K1eupGvXrpU6/u7duz23U6SbPnRbd93kGGs3dZY16vMMUUVaT4HYrHf5mFugrHa/+PTJJ58MoSeD03Z8PiAdbW3OX9OvY+qv3TVYxS+b5thDLGPtnnF1dXUo7fej1/vdfuZ6FO+xexnvKI4zl16fwTy7dVbFHNVlnnP1I0e9r776aunPE+/evZtee+219Nxzz5UqPwh1OedAPVkjICbv/cG6cuVKeu+99yqrr59zUuVeyvXr1ze9Zh+SUeBzkQbz+Qgd5PqsogkqD1SMjY093qHI/626zX5V8efEhu3cuXNpz549aXJyMi0uLqZz585lb6dIL30oW3fd5BhrHc4hUA+R1lMgNutdPuYWBmsU90U2+vTTTze99swzzwyhJ0N2739TSv9n2L2gV/f+d9NLIa9jau/TTz9NX/jCF3o+PuceYhlnz54d2X+hs9v73SrmepTusfsZ7yiNM5den8G+8pWveHbroIrn27o8I+fqR4565+fn0xtvvNFVna+//no6ePBgmpqa6uq4HOpyziGKUdsXsUZATN77g7W4uJjOnj1beb29nJNB7KXYh2Rk+VykGXw+Qg/6/ayiKcYz1Hmrw/9q989VvfLKK8PuQt8+/vjjdOHChZRSSufPn0+3b9/O3k6RXvpQtu66yTHWOpxDoB4iradAbNa7fMwtDNzI7YsAMJpy7iGWcfv27XTnzp2htd+Pbu93q5jrUbrH7me8ozTOXHp9BpudnfXs1kEVz7d1eUbO1Y8c9c7Oznb9LxWurKykU6dOdXVMLnU55xDISO2LWCMgJu/9wTp//nyW/YNezsmw91IAgPrKEagYKX/+85+H3YXKvPnmm2lhYSH97ne/y97O0tLSlj9fWlrquQ+d6q6bHGPtp85+2wbqJdJ6CsRmvcvH3AIANNMg9hCbruz9bpVzPQr32FWMdxTGmUs/83fz5s2ejosy31U839blGTlXP3LUu7Cw0PO1eePGjbSwsNDTsVWpyzkH6skaATF57w/W0tJSevPNN7PV3805sZcCABTJEaiY7vC/PRna7NnXvva1YXehMvv37087duxI3/nOd7K3s3379i1/vn379p770Knuuskx1n7q7LdtoF4iradAbNa7fMwtDMVI7YsAMJoGsYfYdGXvd6uc61G4x65ivKMwzlz6mb8nnniip+OizHcVz7d1eUbO1Y8c9e7YsaPna3P37t1px44dPR1blbqccwhmZPZFrBEQk/f+YG3fvj3t378/W/3dnBN7KQBAkYmqK1xdXf1X0c/HxsaqbrJvzz33XHrllVeG3Y2+PProo+nw4cMppZSOHDmS3n777Sx/omxjO0V66UPZuusmx1jrcA6Beoi0ngKxWe/yMbcwWKO4L7LRgw8+uOm13/72t+mhhx4aQm8G45NPPknPPPPM/S9u+5/hdIZqtDl/Tb+Oqb92a027NbcbOfcQy3jkkUfS6upqunPnzlDa70e397tVzPUo3WP3M95RGmcuvT6Dzc3NpaNHj3p2K1DF821dnpFz9SNHvXNzc2n//v1pZWWldJ3j4+PppZdeKl0+p7qcc4hi1PZFrBEQk/f+YB05ciT96U9/qnz/oJdzMoi9FPuQjAKfizSYz0foIMdnFU1ReaBiFM3MzIx8oOLYsWNpcnIypZTS5ORkOnbsWPr5z3+etZ0ivfShbN11k2OsdTiHQD1EWk+B2Kx3+ZhboBvj45v/mOlDDz2Udu3aNYTeDFHNfsGDLrU5fyGvY2qv3ZrbjZx7iGUcP348ra6uDq39fnR7v1vFXI/SPXY/4x2lcebS6zPY1NSUZ7cOqni+rcszcq5+5Kh3amoqPf300+ny5cul6zxw4ECampoqXT6nupxzoJ6sERCT9/5gTU5OpuPHj1e+f9DLORnEXop9SEaWz0Wawecj9KDfzyqawiz81x/+8Idhd6Fne/bsSU899dR9r+3bty/t2VPur2Xu3Lmz53aKdNOHbuuumxxj7abOskZ9niGqSOspEJv1Lh9zCwDQTDn2EMtYu2ccVvv96PV+t5+xjuI9di/jHcVx5tLrM5hnt86qmKO6zHOufuSo9+jRo6U/T9y5c2d69tlnS5UdlLqcc6CerBEQk/f+YO3bty89+eSTldXXzzmpci/jq1/9aiX1AADDJ1DxXw8++GB6+OGHh92N+2zbti1t27atsMzExEQ6ceLEpj+NOTY2lk6cOJEmJor/CMnExESanZ0tVa5dO0W66UO3dddNjrGWrbOsJswzRBVpPQVis97lY24BAJqp6j3EMjbeMw6j/X70c7/b61hH9R672/GO6jhz6fUZzLNbZ1XMUV3mOVc/ctQ7Pj6eZmdnS7U/Oztbu3/ZsC7nHKgnawTE5L0/WGNjY+nkyZMdfw+ujH7PSVV7GRMTE+n73/9+X3UAAPVRr92sIXvjjTeG3YX7HDp0KM3MzBSWmZmZSdPT021/Nj09nQ4ePNjx+L1795Yqt1U7Rcr2oZe66ybHWMvUWVZT5hmiirSeArFZ7/IxtwAAzVTlHmIZrfeMg26/H/3e7/Yy1lG+x+5mvKM8zlx6fQbz7NZZFXNUl3nO1Y8c9e7duzc98cQThWV2796d9u7dW7rOQarLOQfqyRoBMXnvD9b09HTH34Mro4pzUubcd7r3nZmZSY899lhf/QAA6kOgosW3vvWt7G2U+VdZHn300XT48OF05MiR9MgjjxSWKVL2+H7bqaIPTZBjrEV1ltW0eYaoIq2nQGzWu3zMLQBAMxXd5z3yyCNd/XXmovJb3TNWsYdZhV763q1uxtqEe+wy423COHPp9RnMs1tnVcxRXeY5Vz9y1Ds3N7fl55zj4+PppZde6rrOQarLOQfqyRoBMXnvD9aRI0e62qNoVeU56XTu5+bmXBsAEIhARYuvf/3r2dt4+umnO5Y5duxYmpycTJOTk+nYsWOFZYqUPb7fdqroQxPkGGtRnWU1bZ4hqkjrKRCb9S4fcwsA0ExF93nHjx9Px48fL11XUfmt7hl72cP88pe/3FX5Mnrpe7e6GWsT7rHLjLcJ48yl12cwz26dVTFHdZnnXP3IUe/U1NSWn3MeOHAgTU1NdV3nINXlnAP1ZI2AmLz3B2tycrKrPYpWVZ6TTud+amrKtQEAgQhUDNiePXvS0aNH05NPPllY5qmnnlr/ft++fWnPnj2FZYqUPb7fdqroQxPkGGu7Oreyc+fOStsG6iXSegrEZr3Lx9wCADRT0X3eVj9r3afuVL7onrHdMa17lWu2bduWzp4923affKtjNnryyScr7Xu3yuzXNukeu2i8TRpnLr1ek57dOqtijuoyz7n6kaPeo0ePblqrd+7cmZ599tme6xykupxzoJ6sERCT9/5g7du3r/D35lIqfu6vui9F5961AQBxCFRUaNu2bZv+zO22bdvStm3bUkopPfDAA+nkyZNpfHw8nTx5cv31jdbKjI2Nrb82NjaWTpw4kSYmJrYsU6Ts8f22U0UfmiDHWFvrnJiYWL9+Nn79wAMPpFOnToWYZ4gq0noKxGa9y8fcAgA0U9F93lY/O3nyZFfli+4Z2x2zca9yo5/97GdpYmJi0z75xMRE22Na90B//OMfV9r3brW20app99hbjbdp48yl12vSs1tnVcxRXeY5Vz9y1Ds+Pp5mZ2fve+3FF1/c9BlpXdXlnAP1ZI2AmLz3B2tsbGzTfkDr79cVPfdX3Zeic+/aAIA4RmNnq4Z2796dnnjiifteO3ToUDp06NCm12ZmZlJKKR08eDA9/vjjKaWUpqen119PKa3XtbHMRtPT0+ngwYOFZYqUPb7fdqroQxPkGOvGOmdmZtavn41fHzx4MO3ZsyfMPENUkdZTIDbrXT7mFgCgmYru89r9rNvy3ba/ca9ycnIypZTSww8/nL7xjW+sl9+4Tz4zM3PfMWv75q17oDn63q2Nbaz1s9M+/yhrN94mjjOXXq9Jz26dVTFHdZnnXP3IUe/evXvX14Ldu3d3/BeG66Yu5xyoJ2sExOS9P1it+wHtfr9uUOekUzuuDQCIof0/n8SWHnvssTQ/P59eeumllFJKhw8fTtPT02liYiIdPnw4pZTS9evX08rKShofH19/7S9/+cv612uOHDmSrl+/nlJKaW5uLr344oubyrSWb1dPWWWP77edYdVdNznG2lrnVl9HmmeIyvsciMJ6l4+5BQBopqL7vHY/67Z8t+2vff+Tn/wkfe9730tnzpzZVH5tn7z1mF/84hf37Zvn7nu3WvvZ2t+m2eq8UE6v16Rnt86qmKO6zHOufuSod25uLh0+fHj9M9NRU5dzDtSTNQJi8t4frHb7Ad0891fdl6J2XBsA0Hxjq6urg21wbOzxlNKtlFK6detW7VKb77//fnr++ec3vf7rX/86TUxMpC996UtpaWkp7dixI6WU0sLCQtq+fXtKKa3//9LS0vpxG19b+3qjtbLbt2/fskxr+U5lqji+33aGVXfd5Bjrxjq3+jpX20C9eJ8DUVjv8qnz3P7rX/9K09PTa99Or66u/muY/YGq1H1f5D//+U/69re/fd9rb731Vtq1a9eQepRfuzEv/L9DafWBySH1KKWxzxfTjusX73tt2H0aJe3mr+nXMfU36PW16D6v3c+6Ld9t+2vfz8/Pp6mpqbblU0ptjynaA83R92619rPO99hViDLOXHqdN/PdWRVzVJd5ztWPHPUuLCysf2Y6iupyzrdib4Qmqvu+yEZ1XyOAPLz3B6t1P6Db5/6q+1LUTrufR9xPpxnq+LnIoDX1cxifj9DJKP23a9D7Iv5CRUlf/OIX1y+YjTdH7TYJ291cbXXDtfH1Mjd//d4glj0+541opAePHGPd6pppbSvSPENU3udAFNa7fMwtAEAzFd3ndbN/3elnZY9Z+75dmKJTnzrtoVfd92619rPp99hRxplLr/NmvjurYo7qMs+5+pGj3lEOU6RUn3MO1JM1AmLy3h+sMr/rNKhz0qkd1wYANNv4sDsAAAAAAAAAAAAAAAAwaAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOBPD7kDd7NixY9Nrp0+fTjt37hxCbwAAAAAGZ+fOnemtt97a9BoA/bG+AgAAADSL/R4ARo3/dm1NoKLF+PjmP9qxa9eutq8DAAAANMn4+HjatWvXsLsB0DjWVwAAAIBmsd8DwKjx366tSQkAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAWz1K/gAAIABJREFUAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQA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AAAAAAAoR1ABAAAAAAAAAAAAAACUI6gAAAAAAAAAAAAAAADKEVQAAAAAAAAAAAAAAADlCCoAAAAAAAAAAAAAAIByBBUAAAAAAAAAAAAAAEA5ggoAAAAAAAAAAAAAAKAcQQUAAAAAAAAAAAAAAFCOoAIAAAAAAAAAAAAAAChHUAEAAAAAAAAAAAAAAJQjqAAAAAAAAAAAAAAAAMoRVAAAAAAAAAAAAAAAAOUIKgAAAAAAAAAAAAAAgHIEFQAAAAAAAAAAAAAAQDmCCgAAAAAAAAAAAAAAoBxBBQAAAAAAAAAAAAAAUI6gAgAAAAAAAAAAAAAAKEdQAQAAAAAAAAAAAAAAlCOoAAAAAAAAAAAAAAAAyhFUAAAAAAAAAAAAAAAA5QgqAAAAAAAAAAAAAACAcgQVAAAAAAAAAAAAAABAOYIKAAAAAAAAAAAAAACgHEEFAAAAAAAAAAAAAABQjqACAAAAAAAAAAAAAAAoR1ABAAAAAAAAAAAAAACUI6gAAAAAAAAAAAAAAADKEVQAAAAAAAAAAAAAAADlCCoAAAAAAAAAAAAAAIByBBUAAAAAAAAAAAAAAEA5ggoAAAAAAAAAAAAAAKAcQQUAAAAAAAAAAAAAAFCOoAIAAAAAAAAAAAAAAChHUAEAAAAAAAAAAAAAAJQjqAAAAAAAAAAAAAAAAMoRVAAAAAAAAAAAAAAAAOUIKgAAAAAAAAAAAAAAgHIEFQAAAAAAAAAAAAAAQDmCCgAAAAAAAAAAAAAAoBxBBQAAAAAAAAAAAAAAUI6gAgAAAAAAAAAAAAAAKEdQAQAAAAAAAAAAAAAAlCOoAAAAAAAAAAAAAAAAyhFUAAAAAAAAAAAAAAAA5QgqAAAAAAAAAAAAAACAcgQVAAAAAAAAAAAAAABAOYIKAAAAAAAAAAAAAACgHEEFAAAAAAAAAAAAAABQjqACAAAAAAAAAAAAAAAoR1ABAAAAAAAAAAAAAACUI6gAAAAAAAAAAAAAAADKEVQAAAAAAAAAAAAAAADlCCoAAAAAAAAAAAAAAIByBBUAAAAAAAAAAAAAAEA5ggoAAAAAAAAAAAAAAKAcQQUAAAAAAAAAAAAAAFCOoAIAAAAAAAAAAAAAAChHUAEAAAAAAAAAAAAAAJQjqAAAAAAAAAAAAAAAAMoRVAAAAAAAAAAAAAAAAOUIKgAAAAAAAAAAAAAAgHIE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gHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHC6iy6gbJYtW5beeeedR7YBAJSJngUAKIo+BACo0BcAAADA3K1evbqhbQBAvgQqqnR2dqbly5cXXQYAQF16FgCgKPoQAKBCXwAAAABz19396P99s9Y2ACBfnUUXAAAAAAAAAAAAAAAAsNAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAA/pe9Ow+X5yrrBP59fwkBEkgCBIkgEhYVUFSGRcMiQTaFAMoIMi4QhUEYZRTFCYhL1FEQhhFkGRAYAwoIKiEBRQhLkE0JOGyyLwECgSQsISwh25k/qi63c+nbd+v11ufzPPXc6ttVp6r7rVNVfareUwAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAINz8KJXgNmoS7+56FVYnEsvGvu/mv+asMQGXUcAAACAmVja9gbtZXOztNsAAAAAAAAAY0mo2KcOe9/LFr0KS+Vq7ztl0asAAAAAwD63Sm1y2ssAAAAAAAAgObDoFQAAAAAAAAAAAAAAAJg3CRUAAAAAAAAAAAAAc3TEEUds638AwGxJqAAAAAAAAAAAAAAAAAbn4EWvAHt3+OGH5+Uvf/miV2NpXH755bnwwguv8L+rX/3qOXBA/hCTHX744YteBQAAAGBFrFKbnPayxdLmBAAAAMA449oYtSUBwPxJqNgHDhw4kCOPPHLRq7FUrnnNay56FQAAAADYx1atTU57GQAAAAAsl1VrYwSA/UoXZAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAACdn8Y+AAAgAElEQVQAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBOXgByzxobeScc85ZwOIBAABYdht+Lx602XSwgrSLAAAAsCVtI+xT2kUAAADY0rzbRaq1NutlXHGBVbdOcuZcFwoAAMAqu01r7R2LXgmYBu0iAAAA7IK2EfYF7SIAAADswszbRQ7MsnAAAAAAAAAAAAAAAIBltIgnVFw5yS36l+cluWyuK8DQHZ31Hi9uk+RzC1wX2IrtlVVhW2WV2F5ZFbbV7pGN1+7H39ta++YiVwamRbvIyrAfHgZx3v/EeP8T4/1PjIdBnPc/Md4dbSPsOyvSLmKftdzEZ7mJz/ISm+UmPstLbJab+Cw38VleqxKbubaLHDzLwsfpP5DHkbIQVTX68nOttbMXtS6wFdsrq8K2yiqxvbIqbKvf8slFrwBMm3aR1WA/PAzivP+J8f4nxvufGA+DOO9/Yrwn2kbYV1ahXcQ+a7mJz3ITn+UlNstNfJaX2Cw38Vlu4rO8Viw2c2sXOTCvBQEAAAAAAAAAAAAAACwLCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHCqtbbodQAAAAAAAAAAAAAAAJgrT6gAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqWElVdYOqenJVfbCqvlZVX6yqM6vqt6vq0D2WfaCqbl5VJ1TVM/tyv1lVrR+Om9LHYCBmvL0eWlX3q6r/05f5paq6pKq+UFVvq6qTquroaX0W9rcZb6s3q6pfq6rnV9W/V9XZVXVRv5yPV9VLquq+VVXT+jzsX7PcVics89B+W107HzhrFsth/5nxvvWEkW1yq+GEKX0kgJVVVYdU1UOr6tVVdU7/W/+rVfWhqvqrqrrdNsv5yao6pT+n/Wb/95Sq+slZf4ahqqrvqKrjq+qPqupVVXX+yDHu5F2Ut+cYVtXBVfXwqnpTVZ1XVd+oqo9V1bOr6vt3uk5DN40YT7uNpC/vf/RlfbE/l/tgf253g11/2AGbdl3eUPaufrOJ83TNIsZVddeqOrmqPtrH54Kq+nBV/X1VPaKqrrbF/GI8RdOMcVUdU1V/VlXvrKov9/vsL1bVW6vq96vqO7ZZjhhPUVXduv/+XzNyrvTVvt79VVXdYYflOe8CpqKqDq+qB/b79zf25wYXVNXFVXVuVZ3RHw+uNcVl2odt07ziU1P63devz7ba1veyvstijvGZ6jWLIZznzSM21Z13bzcuE39TD63uTFLdb5nRz3zclMr9L9Wdi3+uuvspPllVf1NVx+6gjH1fd7YyzfhU1RFV9fPV/R56d19HL6nuuP6GqvqtqjpyG+WctZf6t19MOTYn7WC/tuVyquqo6to73lNVX+mH9/T/m9o55jKbVnyq6rhdHHvO2KSsQdWdvX5fu1ie486o1prBsFJDknsnuSBJ22T4UJKb7KH8B08ouyU5btHfgWF1hllur0l+MMmFW2yvrV/+zy76uzAs9zCHfevfbGNbbUnOSHKtRX8fhuUdZr2tTlju/9qwnLMW/V0Yln+Yw771hG3uW1uSExb9fRgMBsMihyQ3SPK+bewv/yJJbVLGgSTP3WL+5yQ5sOjPu9+GLb7zk3dQzlRimOSoJG+fUMZFSR666O9tlYa9xjhTbiNJcpMkH96inOMX/b2t2jCturxJ2Tv+zSbOyx3jJNdI8vJt1OsfFuPVi3GSX0zy9S3K+0KSu21RjhhPN77/so0615I8P8khW5TlvMtgMEx1SHLXbe6jzktyjz0uyz5sCeOTKf7uS3c9cjvr2xb93a5KfPrlnLDd7zVbXLPIQM7z5lR3jtlBXNaGV29S1qDqzoTv9IeTXLLhMx+3xzKvmuQfJ3ynlyX5g22UM4i6M6/4JPnJdMfrrbb5c5LceYuyztpm/Tlr0d/hKsSmL++kHezXJi4nyY/0cdxs/s8mue2iv8NViU+S43YQm7Xh2ZuUNai6s4Pv64w9LsdxZ8xwcGCFVNUtk7wkXYX+apLHJ3lD//qBSf5rku9N8o9VdevW2oW7WczI+CVJ3pvkSklusYdVZ4DmsL0enmStB7a3JHllkneku9B07ST365dxeJIXVtVXWmuv2tOHYl+a07710iT/lm5bfW+Sz6Vr+LlGkpsm+ZUkP5DkTkleUVV3aK1dvpfPxf4zp211s+X+RrrGkkuSXH0a5bK/LWB7vUe6hpzNnL3H8gFWVlVdKV2j4FrPj+9J8r/TJbZdPckdkvxWksOSPDLd/vQJY4r6kyQP6cf/X5InJvlYkhsn+R9JbpnkoenOc39nBh+FzqeSfDDJ3Xcx755jWFUHJTklyW36f70s3Y00X0x30eV3k3xHkmdX1Wf8Dt+V3cR4am0kVXX1dPuM7+n/9Zwkf5vkG0nunOSxfTkvqarbt9betYP1ZN1e6vIV7OY3mzjPxa5jXFVHJDk9ya36f52S5O/T7bMvS3L9dG1I/3lCGWI8e7uKcVXdPsnJ6W5WvTzdzfmnpjsH++50nV7dO8k1k5xaVT/QWvv4mHLEePqu2//9bJK/S/KmdHE+KMmx6c6Zr5fkQemum/3chLKcdwGz8Ol0bazv7MfPSXc8+a4kP5PuvP+oJKdV1W1ba+/e5XLsw3Zn1vGZxbXxdyT5pR2ux6qaV/1Zs+trFgM8z5t1bD6T7d3v9Nisn989f4tph1R3rqCqDiT5yyQHJzk33b58Gv5vknv2429I8tR0degW6Y41N05yUlWd01r7y03WbWh159vMID7XSnLldL9dT0/yz0neneTL6erozyf52SRHJ3nlNr/XU9OdB2zm4j2u81KaYd1Zs9V+7hObvVFV10/yinTnE5emu370yv7t45P8ZpLvTHcv061aa/vuuvsM4nNmtnfseXq6Nr5k62PP0OrO/0nyzAnvf22P5TvujLPojA6DYSdD1nvHuSTJsWPe/+2sZzedtMtl3DbdDRQ/muQq/f9OGin3uEV/D4bVGGa9vSa5XbobNW8+YZr7pjuxb0k+mk16WjUMe5jTvvXgLd4/KMk/jCznPov+XgzLN8xjWx1T5kHpGgVbkt/Levb7WYv+PgzLPcxp33rCSBnHLPozGwwGw7IO6S48ru0v35rkoDHT3CpdY2tL8qWN56/pkuDWeuY5M8lVN7x/aP//tX3/1J+YNeQhyR+mu3Bxnf71MSMxPXmbZUwlhkl+eWTZzxjz/k2y/oSqj2z1W8gwnRhnim0kSf5oZNm/vcmy1ralMxb93a3SMI26PKbMXf1mE+fljnGSF/TzXJQJbUTpOkcau58V4+WNcbqbEtbm+W+bTPPkkWmeLsZzi+8rkzwgY86X+/ePSpeUvPa9/9gm0znvMhgMUx822zdtmOanRvYbL9vlcuzDljQ+me7vvjOGdI4wx/pzwkgZx+xhfQdznjev2GxnPdIlXrQkX9m47xuZblB1Z5Pv4Df67+ADSf50JDbH7aHMHx8p57SN20W68/BPZr3t+hqblDOYujOv+KRLlnhWku+eMM0jR5bz+gnTnZU9tIGt+jCjunPSWjl7XLcXjKzP/ce8/4CR9/dl/GYRn20s88isPwHmIxOmG1TdGfnuT5rhMhx3NhkOBFZEVd02yR37l89rrb1tzGRPTrdjT5Jf73uh3JHW2ttba09rrf1ra+2iXa4uAzeP7bW19tbW2s+21t4/YZpT0/V4knSZg7fcyTLY/+a4b710i/cvS/KkkX/dcbNpGaZ5batj/Hq6Gyw/lOTPplAeA7DA7RWA8W43Mv74/tzzClpr78x6j0NHJrnZhkl+I/nWk14f2Vr7xob5v57uwkn66R6115VmXWvtD1prr2ytfX4PxUwrho/u/34xXYLkxnX9aLonUyXdDTI/vYd1Hoy9xnhabST9Odl/719+IN0527ctK8nz+pd3qqrbbJyG8aZUlzfa8W82cZ6dacS4qu6Q5Bf7l7/bWjttwvLauDYnMZ6dKdXjtXOzL7TWNutp749Gxo/d+KYYz0Zr7fjW2kvHnS/375+f7ikVa35mk6KcdwFTt9m+acM0L093Xpjs/jqTfdguzCM+ro3v3hzrz54N7TxviWJz16w/rezvN+776FTVdyf54/7lwzO93tDXjhmXpks6v8J20Z+Hn9i/PDLdU5I2rtug6s44s4hPa+0lrbWHt9Y+NWGap6Xr7CPpvtej9rrc/WaGdWfPqurodE8aSZJXt9b+buM0rbWXJnl1//IX+3n2jQXG52fTPQEmSf56Tsuk47izCQkVrJKfGhn/q3ETtNYuT5c1mHSV+c6zXinYxDJtr28YGb/xjJbB6lqmbfXCkfGrzGgZrK65b6tVdYOsX8B/eGttaX7Ys/SWad8KQHLIyPjHJ0z3sXHzVFWl6+EwST7YWvvXcTP3/1+7uHnffj6WwLRiWFXfm/Vkm5f2N9KMc/LI+ErfFLMPbdVGcuckR/Tjz+/P2cY5eWRcjBdkD7/ZxHm5/Vr/94IkT99lGWK83NbOsz6x2QSttQuSnL9h+lFivDgTj6XOu4AlsHatacfXmezD5mLX8dkB18Z3bx7x2YrzvPFmHZsHjYw/f0bL2A+ekeRq6bbNN06jwKq6epK79C9f21o7e5NJX5bu6SHJ+G1e3ZlBfHbgjP7vgSQ3nPOyV8EiY7OV+2T9Huqx1/V7J/d/D/Tz7CeLis/asadl/b4JZsxxZzIJFaySO/R/v5bknROmG92x3352qwMTLdP2euWR8S17OGBwlmlbfeDI+AdntAxW1yK21WcmOSzJX7fWzthjWQzLMu1bAVi/ySFJbjRhurWL7C3JR0b+f8Os99C2VWPy2vvXS3LMNteP2ZtWDO8wZrpv01r7XJIP9y8d45fLVm0k24pxul7n1m6KEuPF2e1vNnFeUlV1SNZvYjx97QnSVXVQVV2/qo6pqu3cQCTGy23t3GzTm0yq6vAka716fmjMJGK8OFsdS513AQtTVd+X5If7l7u5zmQfNkNTiM92uTa+C3OMz1ac520w69j0N1audRR2VpJ/mfYy9oOqekCS49M9eejRW0y+E7fJehL5pGPGxUnWEv1u0/cMPmrQdWeG8dkux55NLEFstrLdurMvr+svKj5VdeOsP8H0Ta21s+a1bBx3JpFQwSpZ68Xho+Me4z1i9AfEzTadCmZrmbbXO42Mf2BGy2B1LXRbraqjqurYqnpeksf1/z4/yQuntQz2jbluq1X1wCT3TPKlJL+123IYrEXsW/+qqj5bVRdX1flV9a9V9T+r6np7LBdgP3hx1ntRObGqDto4QVXdMsm9+pcvaq19ZeTtm4+Mb3XRUpvEcppWDHdTzvWr6rAtpmV+tmoj2VaM+3O8j/Yv1fUF2ONvNnFeXj+U9R5X31tVh1fVU9K1FX0q3RMNLqiq06vquAnliPFye1b/91pV9fBNpvm9MdOPEuPFmcqxdMz7zruAXamqQ6vqe6rqN9PdyHNw/9ZTdlGcfdiUTTk+27WTa+M3rap/q6ovV9VFVXV2VZ1aVQ8ac9PYvjPj+Oz2moXzvMy97vxMkkP78b9urbVtzDOoulNVRyZ5av/yxNba+ZOm36HdHDMOTvI9uylnP9adGcdnu9aOPZdk/fvdzI9V1buq6sKq+npVfaKqXlJVP7Xfnno9z9hU1Wuq6tz+uHNuVZ1RVY+pqmtsMeta3bmgT3Ydq7V2TtavM6k7e7ebJyMNpu707l9V7+8/64VV9ZGqen5V3XmP5TruTCChgpXQ9zq11hvRZo+ZSZK01r6UrjfgJLn+LNcLxlmm7bWqfijrNwW9t7UmoYJvWdS22v9waVXVkpyX5K1JfjlJpbtA/tOttS/vZRnsL/PeVvsf1WsNko9prZ23m3IYpgWeBxyX5DuTXCnJtZL8SLpEtY9W1a/ssWyAldY3Av9iuh5Qbp/kzP7i3o9W1V2r6g/SXZg8JMm/59tvzP2ukfGJ+/Yknx4Z1yaxPKYVw92UUxvmY0G22UayFquvbeN36VqMr11VV544JVM1hd9s4ry8Ri/EHUjXg9mvJzly5P+HJLlrktdX1YmblCPGy+3/JnlBP/6MqnpOVd27qm5dVferqlOy3ivin7TWXjumDDFegKo6kOQxI/966ZjJnHcBM1dVJ4xcZ/pauqc8PDnJdfpJnpDkRbso2j5sCmYYn+0se6fXxq+T5LZJjkjXu/j1ktwn3Y1976qqpb/pa6fmGJ/jsrtrFoM9z1tg3Rm9qfUFm051RUOrO09McnSStyR53pTLnvaxZ3B1J7ONz5aq6l5JfrB/+eoNnTWNc8N0HUpcLclV0z3p6gFJTknypn3WWd48Y3O3JNdOd9y5drokl8cn+XhV3XfCfGt1Z6v6l6zXnf1y7WchdadPfviF/uU3kvzdNmcdUt1JunbSm6X7rFdLcpN0x+zXV9UpVXXELst13Jng4K0ngaVw9ZHxr25j+q+le9z71WazOjDRUmyv/QHouUnWel993ITJGaal2FZH/EWSP15QjwEst3lvq09K1xD4tiTP2WUZDNe8t9ePJ3lZuu117YfojZL853S9Cl0lybOqqrXW/nKXywBYea2106rqVumSJR6Sb+/x5vPpekJ+Tmvt6xve28m+/Wsj49oklse0YmhbWFE7aCNZi/F2z+PWXC3JN3e3duzCXn+zifPyuubI+Inpfs/8c5LfT/KeJIen+63zhHQ37jyhqj7YWjt1QzlivMRaa5cleXBVvSLJ7yR5aD+MekOSP90kmSIR40V5VLob55LkZa21d46ZxnkXsEjvSvKw1tqZu5zfPmy29hqfiXZ4bfzyJK9L8k9J3p3kC+ni9p+S/Eq6m9dunuQNVXXb1tqnZrHOS2Za8dnrNQvned9uZnWnqr476z3rv7W1tlXP+oOrO1V1x3S/Vy5N8vBtPsFjJ6Z97BlU3ZlDfLZa/jWTPKN/eVm69ovNXJzktCSvSfK+JBek60Di2CSPSHez8u2TnF5Vx7bWLpjVes/DHGPz3iQvT/L2JJ9Nl1DxfUl+Psnd033H/1BV926tvWrM/LupOyt/zrbgunOHdOcGSXJKa+3CLaYfVN1J1zncaemOtx9Mt22uJQk9PF2i6k8lObWq7tZau2SH5TvuTCChglVxlZHxi7cx/Vqlu+oM1gW2sizb69OT3Loff35r7RVTLp/Vt6ht9ZfS3Txc6U5yb53uJPfXktyoqh7aWvv8HpfB/jK3bbWqfizdE1MW0ujCvjDPfesp6Y7xG7fTM5O8pKqOT3fh4kpJ/ryqTpv0qFKA/ayqDknXc8t9052HbnSddD3ifCJdQ+WonezbRxsBtUksj2nF0LawurbbRrIW452cxyViPDdT+s0mzsvrsJHxqyQ5Pcnx/Q34Sfek02dV1fvSPV3qQJLH97912oZ5EzFeWn2PtQ9KcotNJjk2yUOq6gOttc+MeV+M56yq7pQumSlJzk3XnjuO8y5gHl6e7klWSVfvb5yud9qfTvLiqvqN1tord1Gufdh0zCo+W9nJtfH7bdKT7puq6pnpErcfnK696ClJ7jfVNV2sWcZnGtcshnyet4i68wtZbyvdztMpBlV3+jblv0z3Hf15a+19M1jMtI89g6k7c4rPpOUflOSFSW7Q/+t/ttb+34RZbrtJ/Tmjqp6e5O/TJQDcLMkfJPnNaa7vPM0xNk9prZ005v//luQF/RORnpUu2fK5VXXj1tpFG6bdTd1Z2XqTLL7upHui/JrtHHsGU3d619vk855eVU9L8qokt0yXYPGIdJ0X74TjzgQHFr0CsE2jB7NDtjH92qNhvjGDdYGtLHx7rarHZr1XrzOT/Oq0ymZfWci22lr7RGvtfa2197bW3tRa+/N0j0D8pyTHJzmzqvbFY42Zmrlsq33vRWs/HJ/aWnvPTuaH3tz2ra21CybdQNY3rP9R//LQdD2yAwxOVR2W5LVJHpuu5+snpmtYvXK63q3vnuTN6S66v7yqNja27mTfPvqoWm0Sy2NaMbQtrKAdtpGsxXgn53GJGM/FFH+zifPy2nhR+8SRZIpvaa29Od2NWEl3TN94U74YL7G+F8S3Jbl3ks+ku5B+dLp4XT/dfvrrSR6Y5O1V9f1jihHjOepjcEq6jvouSnL/1tq5m0zuvAuYudbal/vrTO9rrZ3ZWvvb1tr90iXr3Shdb60n7KJo+7ApmGF8NrXTa+Ob3KS29t4lfVkf6v/101V1vWms5zKYZXymdM1isOd5i6g7Wb+p9ZtJXrKddZzw3n6sO7+T5KZJPpXkD2e0jGkfe4ZUd+YRn0memeQn+vFXJvnjSRNvUX8uTJdA9cX+Xw/rb3pfVXOJzaTvtH//2Ume17+8brqnJW20m7qzyvUmWWDdqaqrJLl///Kz6a7dTTSwurPV5/18uid+rT2V4pG7WITjzgQSKlgVo4/22c5jk9Z6strOI2Vg2ha6vfYZtn/av/xgknu21r42YRaGa2n2rX0W+C+lu1h6/XQ3ucGaeW2rj0v3+MdPp8tch91Ymn1r7y+TrF3AuNOkCQH2sZOS3LEff0hr7cTW2gdbaxe31r7SWjs9yZ2TvCHdTbpPqqofGpl/J/v20Z61tUksj2nF0LawYnbRRrIW452cxyViPC/T+s0mzstrdD973hY9O756ZPw2m5QjxkumT4x6cbqk1s8l+dHW2t+01j7fWruktXZ2a+2ZSX4s3YXZ6yZ5/piixHhOquqGSV6T5BpJLkvywNbav0yYxXkXsDCttb9O8nfp7oN5elVdc4dF2IfN0BTiM9Ysro231i7N+g2YyQDa1mcVnzG2umbhPG+DGdad26a7oTZJTtvqxuTt2E91p6pumq6DniR55AzvuZn2sWcQdWeO8dls+Y9P8rD+5ZuSPGBchxA70Vq7IMnf9i8Py/pTl1bKomMzxrNHxqd13FnJepMsRXzuk+TIfvyFe603yf6pO9vVWvt4uqf6JslNquq6OyzCcWeCgxe9ArAdrbWLquoLSa6VZGKv5VV1jaxXwk/Pet1go0Vur1X1X9JlQSfJJ5PcrbV2/l7LZX9atn1ra+38qnpLkrsluW9VXanvyYKBm+O2emL/97VJ7l1V46ZZK/uwqnpgP35ua+31O1wW+9QS7lvP7dfnqCSr3hMQwI5Vd0D/5f7lh1tr427IS2vt0qr6vXRPqjiQ5IQkj+rfPntk0q2epHb9kXFtEstjWjHcWM6k39tr5bQN8zEnu2wjOTvJj6Q73z9yi5sJ1mJ8XmvtmxOmY3qm9ZtNnJfX6H53q33n6LTX3vCeGC+vn8j6b9OntdY+N26i1tp/VNXfpOvh9lZV9UOttXePTCLGc9BflH9tusSWluSXW2unbjGb8y5g0U5N10vtYemOOy/awbz2YbO3l/h8mxlfG3//yPhQ2tanGp9xtnHNwnneeLOIzYNGxl8whfLW7Je686h0vW5/PMmhI20Mo35gZPzHq+rofvwVO7hJeeMx4x0Tpt3q2DOkujOv+HybqjoxyWP6l/+e5PjW2rR6XN8P9WdhsdnEVt/p2Umuk63P/ZL1urPK134WHR/Hnul4f5J79uPXS/e0j+1y3JlAQgWr5P3pepS8SVUd3Gc2j3PTkfEPzH61YKy5b69VdZ90JxsHkpyT5C6ttSE0vLE3y7ZvPa//e2i6hrRzZrgsVss8ttW1R9H9Uj9MclS6HhWT5I1JJFQwatn2rZs+YhtgAK6TZK3Xtkm9XCfJO0fGR/fR79/k/+Nok1hO04rhxnLetY1yPr0EvXANzh7aSN6f9Ue/3zTJv25S/sFJbty/VNfnZ1q/2cR5ef3HyPhBW0w7+v7G31xivLxuNjL+71tM+850CRVJF8fRhAoxnrGqOipdj4c36v/1yNbadm52cN4FLNp5I+M32OG89mGzt5f4XMEcro0PsV19avHZwqTv1nneeFONTVVdKcm3OiFI8s97LXPEfqk7V+7/3ijr7QuT/N7I+A2TbHefvptjz6VJPjKmnCHVnXnF5wqq6r8leUL/8gNJ7tFa+6RtGjwAACAASURBVMpuytrEfqg/C4nNBFt9p+9PcqskR1TV0Zt1/FBV35nk8P6lurMLVfUdSe7Rv/z31tr7dlvWGPuh7uzEXj6v484EBxa9ArADb+7/HpbuQLaZ0cczvWV2qwMTzXV7raq7JHlpukS5L6TrfeNjuy2PQVm2fetopvBSP+aLuVu2bRUmWZrttaqune5msmRnPRMA7BejN1hu1bHIlTaZ7xNZ34du9Zj6H+v/fibJWVutHHMzrRi+eWR803L6Hpu+t3/pnHTO9thGsq0Yp3ts+NqTEMR49YjzkmqtfTLJp/qXx9QmjyHp3Xhk/DMb3hPj5TWNc7NEjGeqqo5I8uokN+//9ZjW2jO2ObvzLmDR9nKdyT5s9qZyHXBO18ZvPjI+lLb1mV+n3cY1C+d54007NvdK96T1JHnRhI7BdmOIdWcvzkxycT8+6ZhxSJIfXZuntXbJhknUnRmrql9M8vT+5ceT3HWKT0Vao/5M31bf6XbrjvtQ9u7nst4WNM2nUyTDqzt7+byOOxNIqGCVvHxkfGwPZFV1IOuPBvpykjfMeqVgE3PbXqvqduke8XjlJBeky4D+j8lzwbcszb61qr4rybH9y0+21i6cxXJYWTPfVltrtdWQ7pHRSbeNrv3/uB1+Fva/pdm3JnlYkrWbkN44o2UALLMvJlnrIerYvieUzYw2+H1ibaS11tL95kqSm1bVj2aM/v9rvbWc2s/HEphWDFtrH856DzoPqKpDN1nkCSPjp+xqpdmVKbSRnNHPlyQPnnAz9wkj42I8J1P8zXZGxHmZ/UP/9/Akd5kw3f1Gxt+84b0zIsbL6hMj43fcYtqx52a9MyLGM9Gf3/xjkv/U/+tPWmt/tt35nXcBS+D+I+Pv3cmM9mFzsev4rJnHtfG+/eiXR/71L9Msf4ntOT7bsNU1izPiPG+cacfmQSPjz59CeUn2V91prZ2wjTaIPxyZ5c4j7521g+VcmOR1/cu79vdMjHO/rPeOP26bPyMDqjvzis+aqrpfkr9Kt/86O91TkaZ603af2L725JivJ3nHNMufl3nHZht+ZWR83HHntCSX9+OTnoh7Qv/38n6elbTg+Kwdey5J8qI9lvUt+6XubFdV3TDJ3fqXH2utbexoZiLHnckkVLAyWmtvT/Km/uVDqurYMZP9VtYfGf3UjZlRVXVcVbV+OHl2a8vQzWt7raofTndx47B0j9W6V2vtndP4DAzDPLbVqvreqvrxSevRn+C+KMkh/b+mnY3MinMewCqZ0771mKq65aT1qKrjk/x+//Ib6Rr6AAaltXZ5ut9MSXLdJI8bN11VXSPJ6I1ir9wwyVOSXNaPP62qrrph/qsmeVr/8tJ+epbLtGL4v/q/10zyxI1vVtWNkzy2f/nRrEAD8X4xjTaS1trFSf6if3mzJI8es5xjkzykf/nG1tqZu15pFkKcl95TklzUj//vqjp84wRV9QtJjutf/mNr7dOj74vxUntduovbSfKIqrrFuImq6ieT/HT/8jNJ3jX6vhjPRt/74ClJbt//66mttd/dRVHOu4Cpq6oTquoqW0zzqCT37F9+IutttGvvb+cagX3YLswrPtP43VdVd66qIye8f6Ukz816+/0rNp5vrpp5xGda1yyGdp43x33b6PTXTPeEiiR5b2vtXZOmH5lvcHVnGvoYr8XnpE0mWztmHJzkGVV10IYyjsp62/WX033PVzC0ujMt24lPVd09yYuTHJTk3HRPpjhrh8v5iY3nFBvev1q6Jy+tPTnmea21b+5kGfvNVrGpqltU1U22KONhSR7av/xcxpxvtdY+l+SF/ct7VNXPjCnn/knu0b/8636eQdvmvm10+u9Psnae8M+ttfO2uZxB1Z2qundN6Biuqq6TrjOatXvrnjlmGsedPdjqcbqwbH493aNfrprkNVX1p+l6871qukyzh/XTfTjJk3e7kKo6YcO/fnhk/Ceq6piR1x9trW3sAQuSGW+vfUPbq5Os/Wj93SQXVNUPTJjt3NbauTtdFvverPet103yuqp6d7pe29+Z7sfKpUmOTneB7iH9eJK8L8kTdvVJ2O/mch4AUzLr7fWYJG+oqrcleUWSd6drxEuSGyX5mX5Y6wng0TvtnQBgH/mjJPdNcmiSk6rqVul6Xvt4kquke2TtbyT57n7617XWXjNaQGvtw1X1pCSPSfd42rdU1Z8l+ViSGyc5MeuNwU9qrX1kth9pWKrqDklGL44cNTJ+k43tOK21kzeWMcUYPj9dT3u3T/KrVXV0kuck+VKS2yb5vXS99lye5L+31i7d/icdrr3GeMptJE9K8rNJvjfJE/sLc3+b7maPOyf5nXTt6t9It+9gm6ZRl6dInGdgSvvrT1XV76e78fAWSd7e76/fk27/er8kj+gn/0qSR22yOmI8A3uNcWvty1X1hHTnZ1dP8taqelqS09MdS6+T7rztv2a9U7jH9EmyG4nx9L04yd378dcned4Wx9KL+17Yr8B5FzAjJyV5clX9Q7qnU30syVfTHU9ukeTns54QdnGSh7XWLhtTzkT2Ybt2UmYcnyn+7ntwktOq6rR0Pet+KN155dWS3Cpd2/3N1+ZP19a/6k7K7OvPMZneNYshneedlDns2zZ4YNZvxNzJ0ymGWHfmorX2+qr623SxuU+S06vqKUk+m247eFzW265PbK19aZOihlR35qK6p1Kdkq7OXJKuDeJKWxx7zm6tfXnD/x6T5IVV9bJcsa4fkeR2SR6e9Rh/KN2+gcluleS5VfWGJK9K9/SeL6Tbxm+abv+59vv2snT7z69tUtbjkvxEkmsneXFV3TrrnW4dn66jxCQ5L935Bzv34JHxnRx7hlZ3npZuH/MPSd6W5Kx0++yj0nUu8ytZb4t7c5Jn7GYhjjsTtNYMhpUaktw73eNi2ibDh5LcZJN5jxuZ7uQJy9is7HHDpuUYDLPcXtM9Emkn22pLctKivxPDcg4z3laP28E2+sok117092FY3mEe5wFbLP+sfv6zFv1dGJZ/WJJ969fSNRAt/PswGAyGRQ5J7pqusXur/ebrklxjkzIOJHneFvM/N8mBRX/e/TYkOXknv30nlDOVGKZrsH77hDIuSvLQRX9vqzTsNcaZchtJupuFPzxh3guSHL/o723VhmnV5S2WcVa2+ZtNnJc7xkken+4Gw83m/3ySY8V49WKc7ia6P98ivi3dDWOPFuO5xnenx9KzJpTlvMtgMEx1GDnP22r4dJK7bVLGcSPTnTxhWfZhSxifTOl3X7Z/PvOeJDdf9He7QvE5bpvL2NY1iwzkPG8esRkz/b/2016a5OgdrOvg6s42vpOTRj73cZtMM7rvOmlCWVdN9wSezb7XyybNP1LOIOrOvOKzoYztDieMKeeMbc57RpLrLfq7W5HYnLDN7/T8JPfdxjr9SJJzJpRzTpIfWfR3tyrx2TDtgXRPH21JvpjkkB2sy6DqTrZ/XvD3SY7cS2ziuDN28IQKVk5r7RVV9YPpspnvleS70jWsfzTJ3yV5emvt6xOKgLmxvbIqZrytviXd4+/umq43n+9K19vcoel6rfhEuoabF7fW3rKXz8H+Z7/KKpnx9vrOJL+Q5Nh0+9bvTHeB7uB0vZz9R7qbgp/bPJ0KIK2111bVTdM9Ge0nk3x/uh4NL0339LQzk7woyWmtbwEcU8blSR7S9wzzsCS3SbfvPb+f/9mttVfN+rOwe9OKYWvt/Kq6Xbres38u3eOMD0vXe8/rkjy1tfYfs/kUzENr7aNVdcskv5rk/ukuChyS7gaGf0oX408ucBWZAnFebq21x/Y9nz4iyR3T/ea5KN0FutOSPK21dsEWZYjxEurPtR5VVX+T5KFJ7pDkBunaCr+a7jfzG9Mdl7/t6QcbyhLjJeW8C5iBe6RrY719uv39dZJcK11vp+cmeVe6TrteutdrBPZhuzK3+EzBn/Xrc2y63vSvneSaSb6ZLmn3HeluUjul7f1JAMtiHvGZ6jWLAZ3nzbXuVNX3pLtpOElOb619bgezD7HuzE1r7RtJ7lVVP5fuZtgfStd+/fkkb0p3TfFt2yhnKHVn1Tw6yV3S1Z/vS7d/PDLJ19OdF/xbuicGvmaz6xN8m39Kd73n2HRPD1vbf1a6m/bfneSf0yWafWWrwlpr/1ZVt0h3Xf+n0j15KenuZzo1yVNaa1+Y8mcYirsk+f/s3XmYJVV9N/DvD0FFBHFDUFRcYoxCVBQTNwSj0biCor4aE8HEXZNINJvhFZNoXhNMosHgLmiMcQUVNW4Rlxijxg2XuERARFQUcVA2gfP+caqdy+XeXmZ6pme6Pp/nuU/f6qo6dW518wz16/M954bD+ze21i5Zwblj+2/nsUnumf55b57+eXdLr5edmeTjSU5Yzr8HS/Hvzmy1Pn6PAAAAAAAAAAAAAAAAlm+Hte4AAAAAAAAAAAAAAADA1iZQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAAAAKMjUAEAAAAAAAAAAAAAAIyOQAUAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAACjI1ABAAAAAAAAAAAAAACMjkAFAAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVADAGquqfaqqDa/DN6Odwyfa2WfVOggAAAAAAAAAjE5VHb0wDmGt+7I9qqqDJsZxHLTW/QEAZhOoAAAAAAAAAAAAAAAARkegAgAAAAAA1jGrWgIAAACT1ArYEqzIAcD2SqACANaJ1trxrbUaXqevdX8AAAAAAAAAgO1Xa+3ohXEIa92X7VFr7ZSJcRynrHV/AIDZBCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACgFVRVTesqv9XVZ+pqh9X1c+q6ntVdWpVvaGqDq+q3abOacPr6GH73lX1jqo6u6ouqqpvVtWxVXWjZfZh/6p6aVV9tap+UlU/Hd4fV1W32opt7FtV/zh89h8N9+K7VfWBqvqjqtprGW3cp6reOZx3cVWdNvRh70XOOXzinu4zY/8pw75Thu0bVdXfVdU3qurCqvphVb23qn5jmZ9zz6p6XlV9uqrOHfp5ZlW9qaruvcS5Vxn6+97hM14y/N58vao+WFV/VlW3mXPurYb7+8WqOn849ztV9bmqenVVPbKqrraczwAAAADrWVUdVFUtyWsmvn3aRP1g4XXQjHMPqao3V9W3hjrNeUMN4DlVde1Frnn80Obpw/aeVXVMVX2tqi6oqrOG2sFtp87bp6pePBx34VBXen1V3WKRax298BmG7d2r6rlV9aWhrnNuVX2oqh61zPu1T1X9/XD++UN/v15VL6uq/ZbTBgAAAGzLVlormH72ntHe6cP+44ft/Yfn+TOH5/tvDOMSrjd13l2n6g7/W1UvqKpdl/EZrlJVj62qk4exAhcP4x0+VlVHVtXOm3p/lrjuvaqPfzlt+GwXVNUZVfWJofZxrxnnHLRY/WXiuJtUHxNy2nA/vlNVJ1XVwcP+pX4O0+NvDhj6+u3h/pxVVa+rql9a4jPevKr+sPp4ldOHz3nh8DnfWFX3m3PePkPfPjTx7Q/N+L06fOKcK9SQFunTUmNhpn8H7zi0fdrw2efds80eHwTA+lGtzfz3AgCWrarukeTkJLstceiDWmsnT5y38I/Qc5O0JEfPOe/Hw7kfnXP9HZIck+QPktScNi5N8tTW2su3YBtXSfK3S7SRJCe01g6fOG+fJKcNm0ck+cUkfzLn3HOS3LO19pUZ1z88G4seN2utnT61/5Qk90zy4STPTnJSkisULSY8q7V2zLwPUFW/meRlSXaZd0ySVyV5Umvt0qlzr5nk3Unusci5SfLW1tphU+c+PMk/J7nqEufu11r74hLHAAAAwLo2/KH+Q0sdl+Tg1topwznXTvKWJFcaBDDh+0ke0lr7xIxrHp/ksUnOSPKQJP+WZM8Zbfw0yf1aax8bBhy8Lcm1Zhz3oyT3aK19aca1jk7ynGHz5knen2ReAONNSX5zuk4x0dZvJ3l5knmTNFyW5KjW2l/P2Q8AAADbvJXWCiafvVtrVxoHMQyGv2mSE5J8MMkrM/vv+V9LH+vw3ap6ZpK/yexxFZ8ZjvvJnP7fJMk7ktxukb5/I8kDWmtfW+SYFamqv08fC7KYH7bWpoMjB2Xj/f55/WXqmHsleXuSa85osyX58/R7utjPYXL8zfeTvCjJjjPauyDJb7TWPjKjjZsl+eaMc6b9c5IjJmssU+NeFnNEa+344ZzjM9SQWmv7zDthGWNhTs/G38FPJPnHTH32yXu2GuODAFh/Zv2jCQDLVn0lgH9ND1Ocn+S49IfB76c/0N0syV2THLpIMw9IcqckX01/aP5C+h/QH57k8cP7k6tq39bamTPO/8ckTxnefyTJ8ekPeRekP0T/QZLbJnlZVX23tfaOLdTGy5M8bnh/dpJjk3w8PRBy/SR3TnLYjPMmPT79fn04PbDwtSS7J/nt4XX9JK9Ocpcl2lnMXulhisvTgxsfS3JJkrsn+b/D9f66qt4zZ7DCI5K8Lv3B8pvD5/xyethjnyS/k+T+w9cNSY6cauLobAxTnJzk9Um+leSiJHskuUOSB6YXBiave4P0h+Srpv9+HZv+MPyDJDsnuWV6YOSQFd4PAAAAWK8+lWS/9GDDXw3fu2+S70wdd1ry8zrPB5Lsnx4g+Jf0SRFOS7JTkgPTn/P3SPLuqrpDa+2MOde+RpIT05/j/yy91nFZkvsN27skeV1V3Se9TvHj9LrEf6X/7eJh6fWYa6dP2vCrS3zWN6bXoV6aHgj5cZJfTvLHSW6V5BHD537G9IlV9YD0WlAl+UmSFw734dL0Os2fpk9K8fyqOq+1dtwSfQEAAIBt1YpqBStwuySPSg8zHJPk1CS7po+heEz6s/kxVfW29IkqFwa+fzX9mfv30scZ7J8eILjSJJRVdd308Q03TnJxklek1xtOTw8j/HqS308fO/Ceqtq/tfbjFX6OK6mqB2ZjmOIL6eNivpJee9g9fSzJvdPHhKy07ZunB0R2Sa9DHJdeJ9mQZN8kz0ryvPR6yXLcd+jHqemhilPTx1Mcmn5vrpFej/mF1tolU+deJX3syHvTJ634cpJzk1wn/ef31OGzPiZ9rMhzJs49K/336oD0MS1J/9l/auoa317m59gUBwx9OzP9d/DT6TWm6ck+V2N8EADrjBUqANgsQ1L+g8PmFVagmDpuxyTXaK1tmPje5D9CM2cZqKrfSvLaYfPNrbVHTO2/T5L3DZu/21p71YxrXz3Ju9JnVjwjyS2nkvKr0caD02cMSJL/THL/1tp5c+7FjSeDITOS+q9I8sQ29Y90Vb0iye8Om/u31j47tf/wLG+Figyf4W6ttbOmjrl7+gNjJXlxa+33p/ZfL70Acq30h+AnzprZsaqelz444vIkt2mtfXVi37fSCxxvaa09fPrcieOu01o7d2L7cekDKJJFVqCoYfnO1tqF89oGAACAMVmqZjBx3MLz/HlJ7t1a++8Zx9w0vfaxV5J/aa395tT+49NnF0z6JAi/2lr736ljnpo+UULSJ2g4L71Occ7UcX+TPnAgmV0LOTpX/OP9o1trb5g6ZtckH03/g/jlSW43WVOoqp3SB17cMD1McY/W2ucW+cwXJLlpa+0HAQAAgO3UCmoFR2d5K1QkfcLJ+7TWLpg65s3pk09elh5C+FCSR7bWLps45irpYYlfTfLDJHtOj0WoqtcneXT6eIeDW2tXCn1U1R3S6wC7JHl+a+3Zc27BslXVa5P81nDdfRdZPeMKYxyG7x2URVaoqKoTs3HSyENbaydN7b/GcP7PwxpLrFCR9MkxDp0OTFTVs7MxRPPQ1tqJU/t3SbJba+3sOZ+v0seJHJ6+8uiNpgMry1mRY+LY47O6K1QkPUBy4CLjdTZ7fBAA69MOa90BALZ7e068v9KSgAtaa5dOhilmeMKsh87W2uuSvGfYPLSq9pw6ZGFWgrfOetAZ2rgoydOGzZsmOXgLtnFBksPmPZwNbc1aZWPB2UmePh2mGBwz8X46Qb9ST58OUwx9+1g2zmww6xpPTg9TnJXkKYs8ND5nOGaH9JU1Ji38DD+6WAenCw0T5/1oXphiOO9CYQoAAABYmaq6ZvpMg0ly1KwwRZIMK1L85bD58OGP7fMcNR2mGLw6faXKpK/G+XvTYYrB5EoQS9VCTp4OUwz9PT/JE4bNHZI8aeqQQ9PDFEnyV9NhiqGNM7Ix2HGNJEcs0RcAAAAYm5Y+QP2CGfv+afh6lSRXTx8fctnkAcP2y4fN6ya5zeT+YaLKRw6bT5sVphja+WySlwybh6/oE8y3MFbhM/PCFMO1p8c4LKqqbpjkQcPmW6bDFEObF2RjXWM5LkpyxIzVJ5LkxekrUCQz6iyttZ/OC1MM+1uSP0wPxuySvirHtuapi43XyeqMDwJgHRKoAGBzTT5Mbeofk0+d90f6wcJygDsmOWjhm1W128T2Wxa7QGvtK+mzIibJXVa5jeumz5KQJG9srU0vhbkSb2mtXTzn+l9NnykxSW6+Gdc4Lz1NP8/Cz2LWNR48fD15Xj+THqBJn7kxmbhXg4XfmUcOsyks18J5166qh6zgPAAAAGBp90yfRCFZokaSjZNq7JTkjnOOaUneNHNHnwjh68Pmj5K8d85xpyU5f9hcqhbymnk7WmufTPKlYXP6j/0L2y0ba1CzvDl9Fs1ZbQAAAMDYfWEYUzHL5yfev3+R4MHkcdN1gAekBzIuyMZJOedZqFvcsKpussSxy7EwVuHAqrrFKrS34OD0z5Qkr5t3UGvt87nivVnM+1tr35/TzvnZWI9ZcsxJVe1UVXtX1S9V1b5VtW/6pBQ/HA653TL7tLWc2VqbO7HnaowPAmD9EqgAYHN9LMk3h/f/UFWfrKo/raq7VdVVl9nGp5bY/8mJ9/tNvL9DNv5b9oaqaou9klxvOHbPVW7j9kkWllRcdNWFZfifJfb/aPi662Zc4+uttcsX2b9QvLjCNYYlNm8/bD5xGffqsOHY6VVFThi+3jXJaVV1bFUdWlXXX6Lf70gPgyTJiVX171X1jKq649A3AAAAYNPdaeL92Us880+uHDn93L/gB0vMzLjwjP+NOSt1Th+3VC1kufWlW03VrPYdvp42Z5WMJMkws+Nnp84BAAAAuq8tsm9yxYDlHjddB1ioW1wjyaVL1C1OnjhvXt1iJV47fL1uki9W1b9W1RFVdcvNbHeyvrDYJKRJ8ulltrnUmJOZ40EWDCGKp1bVJ9In/DwzyZeTnDrx2mM4/Hqz2lhDX1hi/2qMDwJgnRKoAGCztNZ+lr4E4cJMAwckeX560OK8qvq3qnr0EgPeZ6bjJ3xv4v11Jt7vMX3gMk2uirAabUw+JM5d/nCZZi1/OWkhCLE5AYLlXmP6/xOuk75KyEpNr0Lxl+kzPrb0+//UJG9L8v2q+mJVPbeqbjDdSGvth+krZJyVHmA5OMnfpRcOzq2qt1XVAzehfwAAAMDq1EgmLbf+sFq1kOXWlyrJtSe+v1BrWur8JPnu1DkAAABAN/f5fmrCx8XqAJPHTdcBVrtusWyttQ8meVqSC5NcPckj08c8fL2qvl1VL62qTVmtYbI+MXeSh2XuX7DJdZaquk6S/0xybJJfSbLUJKo7L7NPW8uPlti/Zr9DAGz7NmVQJABcQWvty1W1X3qw4kFJDkxyy/SHp/sOryOr6v5zlhZcbBbCxUw+4D0xyceXed7kQ9RqtDEWk/fqlUletMzzLpncGEI4v1NVL0zyqCT3Sp9N4qpJbju8jqyqx7TW3j517keHWR4eluT+6b9reyfZLcmhSQ6tqvcmeWhrbalCAQAAALDR5HP//kl+tszzvr0F+rIpNrW+tFrnAwAAAFvOQt3iB+mTLy7Xaatx8dbaS6rqzUkeneQ+Se6W5FpJbpQ+1uQJVfX81tqfr8b11siLktxxeH9SemjkC+mTUFy0sMJoVX0ryY3TJ63Ylly2xH7jgwCYS6ACgFXRWrss/YHqpCSpqr2S3C999YE7Dq+XpQ96n3al1QgW2X/uxPsfTry/oLX2xRV2e7Xa+MHE+7024fztxeS9r028Vz/XWvtykqOSHFVVV09y9/Tiw28nuWb6Eou3aK2dPXXeRUleP7xSVTdL8oAkT09yq/QAz/OSPGNz+gcAAAAjM1kjOae1tq0EJZbrBknOXGJ/0oMTk38IP3dq/2L2nDoHAAAA2DoW6ha7JvnKMEZlqxomEP2HJP9QVTskuX36GJinJdk9ybOr6lPTE0cuYrI+cf0kZy1y7PU3ocvLVlW7pa+8kSSvb609ZpHDr73IvpVYWC1jhyWO22WVrrca44MAWKeW+scIADZJa+3s1tprktwlyWeGbz+wqmYt+XfAEs1N7p98oPlcNs4eeLdN6ujqtPHZiTYO3MQ2tnmttUuSfGnY3NR7Na/ti1prH2itPS7Js4Zv75zkgcs497TW2rHpvycLgz0esZr9AwAAgO3cclZf+OzE+1V97t9Klltf+vpQ41iwUGu6WVXNHZxQVTslucPUOQAAALC92t5WalyoW1wtyZ3WsiNJ0lq7vLX2mdbaUUl+bWLXSsYqfGni/R3nHtVt6c/8C0l2Gt6/cd5BVXXr9Aky51nJ79X5w9fdlzjuVitoczGrMT4IgHVKoAKALaq19rMkHx42d8zsB6H9quoOM76/4HHD18uSnDLR9jlJPjFsPnqxP3ov0r/VaOPcbFwK8BFVdcOVtrEdecfw9dZVdd8tdI0PTry/3nJPaq1tSPKplZ4HAAAAI3DRxPurzTnmA0kuGN7/XlXVlu3SqnvsvB1VdUCSfYfN9bePyQAAIABJREFUD0ztXtiuJEcs0v5hSa41pw0AAADY3iynVrAteWc2Dob/g7XsyLTW2meycbWJlYxVOCUbV2n4rXkHVdXtktxukzq3fDtOvF9sRYgnLdHOSn6vThu+7lpVvzjrgKq6apKHLdHOsqzG+CAA1i+BCgA2S1Xdo6puucj+qya557D5kyTnzDn05VV1pYeyqnp0kvsPmye11s6eOuSvhq+7JXlLVc1NrlfV1arqqVV19S3QxguGr9dI8uaqulbmqKq95+3bDrwo/eeYJK+pqtsudnBVPaCqfnli+zpV9aAlBmX8+sT7hQfoVNV9q2qvRa51rSR3nj4PAAAAyGQ95RazDmitnZfk2GHzrkn+vqrm/g2hqm5QVb+7el3cbA+uqivNAllV10zysmHz8on3C05K8p3h/bOrar8Zbdw4yTHD5gVJXrMqPQYAAIC1s2StYFvSWvtqkjcPm/+nqo5c7PiqullVPWo1rl1Vj6yqnRfZf6ck1x42lz1WobX27STvGjYPq6pDZrS9c5KXr6C7m+ob2RhYeeysMR1V9aAkT1uinZX8Xn144v0fzjnm75LcaIl2VmI1xgcBsA7tuPQhALCoX0tyVFV9NP1B7wvpoYmd05fde1KS/YdjX9Vau3RGG59OX57w01X1giSnps/4d1iSJw7HnJ/kmdMnttbeXVUvSvL7SQ5M8pWqemmSjyX5YXpy/pZJ7pHkoekPsSdsgTbeWVWvSvI76YMOvlxVxyb5jyQb0mchuFOSRyb5fJLDZ97NbVxr7XtV9dgkb0myV/rP7Pgk70ny7fQlIPdODzYcluTmSR6U/nuR9IfSdyQ5vareluS/kpyR5NKhvQclWRiMcVaSkycu/6gk76yq9yd5X5IvJjk3ya7ps0w+LRsfpF+6mp8bAAAAtnOfTZ8h8OpJ/rKqfpb+PL4wC+JZrbULk/zf9IkxfiW9TnJQVb0iyeeS/DS9JnLbJPdO8hvpNZxXbsXPsZhPJ/mXqrpnet1iQ5JfTvLHSRZmOXxJa+0Lkye11i6pqiekz3S5W5L/qKq/TV9B87L0Os+fJNljOOWZrbUfbOkPAwAAAFvYcmsF25Inp4+7uHmSF1bVQ5K8NsmXklyc5LrpKzncL8m9kpyY5A2rcN0XJHlpVb09yUeSfC29TnLdJHdP8vThuMuy8jrJkenjbhYm7zxu6PeG9HEQf5TkNkk+leSAzfsY87XWflhV707ygPT7976hL2ek10Qelj7O5ZtJdk8yc3WH1tq3qurb6eNGnjm8/2r6vUmS77XWzh+O/WxV/WeSuyR5/DBh6wlJfpzkF5I8If3n+PH0+sxqfM7NHh8EwPokUAHAatgh/Y/t91zkmLcn+dM5+941vJ6T2TP8bUjy4Nba6XPOf0b6wPqjkuyZ5OhF+vHTbHxQW+02npjkwiRPTXLDJM+fc/7nF2l7m9dae9tQmDg+yXXSQzPzlnW8PP1+TdsnvTAwz9lJHtJa+8nU93dKX7Hk/lc+5edemuTFi+wHAACAUWmtnV9VL07/I/z+6RMVTDo4ySmttYur6j7pz/wPTR+EcGzm27AFurupHpEegnjK8Jr21sypRbTW3lVVR6SvXrFrkr8YXpMuS3JUa+24VesxAAAArJHl1gq2dr8W01o7t6ruluRN6QPeDxxe86xm3WL3JI8dXrNcnORJrbVPr6TR1to3hpUpTkwfzP/0bAxoLHhu+ricA9JDMFvKk9ODBTdJn0zj3lP7v5XkkCTvXqKd5yf5pyQ3Sx8rNOmI9LrTgselr1SxR2bf32PSAzOrEqgYrMb4IADWmbnLdQPAMh2TnkQ/Lskn0h+gLhpep6c/yD6wtXbIYrMXtNaOTk+5vyvJ95JcMpz/T0lu21r78CLnttbaX6SviPE36TMSnpv+UHN+ki8neX36g9des/qxSm1c1lp7evqMCC/PxlkJfpbku+kFiCMzY6WN7U1r7Z3pD7/PTPLv6T+zn6UHSk5LX1niyCT7tNY+NHHqGemrVxydfj++muS89BUqfpA+m8Ozkty6tfbfU5d9RpLHJHl1+s/nrPTfkwvT7/UJSe7RWntya+3yAAAAAJP+JMnjk3w0G2seV9JaO7+19rD0gQmvTH92Pz/92f3c9BkRX5I+2cF9tny3l6e1dlqSO6b/0f4rSS5In9HwI0ke01o7bM7KqQvnn5Dk1kleNJz/0/Saw/8meUWSO7TW/nqLfggAAADYupZVK9iWtNa+21o7MMkD08dwfDO9BvCzJOekr2bwwiT3bK09bpUue3D6igZvTV+t85z0OsmG9JU+jklym9ba8ZvSeGvt/emrUbwsfUzFJeljMN6V5H7DeJrdhsN/vKkfYhn9ODM9XPO36WMwLh6u9/n0UMftW2tfXkY7x6WPI3pfku+n36t5x/7PcM2F1TAuSb+//5bkAa21Z23GR5p3zc0eHwTA+lOttbXuAwAjVVUL/wg9d3gABAAAAIBlqaqj01c8TWut1rY3AAAAAFtGVX0gya8l+Vhr7R5r3R8AWG+sUAEAAAAAAAAAAACwjamqGyY5cNj8xFr2BQDWK4EKAAAAAAAAAAAAgK2sqm65yL6dkxyfZKfhW6/dGn0CgLHZca07AAAAAAAAAAAAADBCr6yqXZK8Kcl/Jzk3ya5J7pTkKUkWAhevaq2dujZdBID1TaACAAAAAAAAAAAAWHeqao8ke2zCqZe01r622v2Z407Da54Tkzx9K/UFAEZHoAIAAAAAAAAAAABYj56S5DmbcN4ZSfZZ3a7MdGSSQ5PcK8neSa6fpJJ8P8knkpzQWnv3VugHAIxWtdbWug8AAAAAAAAAAAAAq6qqjs4mBipaa/usbm8AgG2RQAUAAAAAAAAAAAAAADA6O6x1BwAAAAAAAAAAAAAAALY2gQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGZ8etfcGqulqS/YbNc5JctrX7AAAAwDbvKkmuP7w/tbV28Vp2BlaLuggAAADLpDbCuqMuAgAAwDJt1brIVg9UpD8cf2oNrgsAAMD26YAkn17rTsAqURcBAABgpdRGWC/URQAAAFipLV4X2WFLNg4AAAAAAAAAAAAAALAtWosVKs5ZePPJT34ye+211xp0AQAAgG3Z2WefnTvf+c4Lm+csdixsZ9RFAAAAWJLaCOuUuggAAABL2tp1kbUIVFy28GavvfbK3nvvvQZdAAAAYDty2dKHwHZDXQQAAICVUhthvVAXAQAAYKW2eF1khy19AQAAAAAAAAAAAAAAgG2NQAUAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAACjI1ABAAAAAAAAAAAAAACMjkAFAAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAAAAKMjUAEAAAAAAAAAAAAAAIyOQAUAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAACjI1ABAAAAAAAAAAAAAACMjkAFAAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAAAAKMjUAEAAAAAAAAAAAAAAIyOQAUAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAACjI1ABAAAAAAAAAAAAAACMjkAFAAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAAAAKMjUAEAAAAAAAAAAAAAAIyOQAUAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAACjI1ABAAAAAAAAAAAAAACMjkAFAAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAAAAKMjUAEAAAAAAAAAAAAAAIyOQAUAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAACjI1ABAAAAAAAAAAAAAACMjkAFAAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAAAAKOz41p3AABgW3L55Zdnw4YNa92Ndevyyy/P+eeff4Xv7brrrtlhBznfzbXbbru5jwAArEvr/TnNc9Km8xwEAAAAAPOt99rqWlLX3brUgtnSBCoAACZs2LAhhxxyyFp3A1bspJNOyu67777W3QAAgFXnOY15PAcBAAAAwHxqq6wXasFsaeI6AAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjM6Oa90BAIBt3U/3fWjajldb626sD5delGt+8cQrfOsn+x6a7Hj1NerQ9qkuvTi7fPFta90NAABYM+vqOc1z0rJ4DgIAAACAzbeuaqtrSV13i1ELZi0IVAAALKHteLW0nXZe626sCzXrmzte3f0FAABWZD09p3lOAgAAAAC2lvVUW11L6rqwvuyw1h0AAAAAAAAAAAAAAADY2gQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdP4/e3fwG2XV7wH8tLdyU4OFcQE3Rv4CYGFi2cHfYCRQE0hYCSZNcOF20AV16YY3XYArE0gsROPeHaykGxPhH5DrAjYNhdiIvNO78L2R4kynffqcPuf09/kkbKYzh29Mf8/MOY9fRqECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIZ6rrAAAlGwwGaXV1dcNjMzMzaXJSHw0AqJPPNwC0zXsLAHg/BAAAumdfAgBsxmeF0RQqADaxurqaPvjggw2P/fDDD+ngwYMdJQIA2BmfbwBom/cWAPB+CAAAdM++BADYjM8Ko6mUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShU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AAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAADA/7F379HWnHV9wL+/NxcgJCFyUVpAwkVcICqsJkgQ4VVRqwsERClasa9KEVpslaqwrNrUeqOWBVphRbyQIF6gSCJFQaAYigISoBZSCBclUeSSIBJCQhJCpn/MnJz9npy9z97n7LNvz+ez1qx37/fMfp6Z+T3zPDOz5zcbAAAAAAAAAACA5kioAAAAAAAAAAAAAAAAmiOhAgAAAAAAAAAAAAAAaI6ECgAAAAAAAAAAAAAAoDkSKgAAAAAAAAAAAAAAgOZIqAAAAAAAAAAAAAAAAJojoQIAAAAAAAAAAAAAAGiOhAoAAAAAAAAAAAAAAKA5EioAAAAAAAAAAAAAAIDmSKgAAAAAAAAAAAAAAACaI6ECAAAAAAAAAAAAAABojoQKAAAAAAAAAAAAAACgORIqAAAAAAAAAAAAAACA5kioAAAAAAAAAAAAAAAAmiOhAgAAAAAAAAAAAAAAaI6ECgAAAAAAAAAAAAAAoDkSKgAAAAAAAAAAAAAAgOZIqAAAAAAAAAAAAAAAAJojoQIAAAAAAAAAAAAAAGiOhAoAAAAAAAAAAAAAAKA5EioAAAAAAAAAAAAAAIDmSKgAAAAAAAAAAAAAAACaI6ECAAAAAAAAAAAAAABojoQKAAAAAAAAAAAAAACgOScuewEAVtnpp5+eiy666Fb/BwCwrhzfADBvxhYAMB4CAADL57wEAJjEscJ4EioAJjhy5EjOOOOMZS8GAMDcOL4BYN6MLQBgPAQAAJbPeQkAMIljhfGOLHsBAAAAAAAAAAAAAAAAFk1CBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEA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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.figure(figsize=(20,20), dpi=200)\n", + "\n", + "plt.subplot(4,3,1)\n", + "sns.boxplot(x = 'popularity', data = df)\n", + "\n", + "plt.subplot(4,3,2)\n", + "sns.boxplot(x = 'acousticness', data = df)\n", + "\n", + "plt.subplot(4,3,3)\n", + "sns.boxplot(x = 'energy', data = df)\n", + "\n", + "plt.subplot(4,3,4)\n", + "sns.boxplot(x = 'instrumentalness', data = df)\n", + "\n", + "plt.subplot(4,3,5)\n", + "sns.boxplot(x = 'liveness', data = df)\n", + "\n", + "plt.subplot(4,3,6)\n", + "sns.boxplot(x = 'loudness', data = df)\n", + "\n", + "plt.subplot(4,3,7)\n", + "sns.boxplot(x = 'speechiness', data = df)\n", + "\n", + "plt.subplot(4,3,8)\n", + "sns.boxplot(x = 'tempo', data = df)\n", + "\n", + "plt.subplot(4,3,9)\n", + "sns.boxplot(x = 'time_signature', data = df)\n", + "\n", + "plt.subplot(4,3,10)\n", + "sns.boxplot(x = 'danceability', data = df)\n", + "\n", + "plt.subplot(4,3,11)\n", + "sns.boxplot(x = 'length', data = df)\n", + "\n", + "plt.subplot(4,3,12)\n", + "sns.boxplot(x = 'release_date', data = df)" + ] + }, + { + "source": [ + "ಸಮಾನ ಶ್ರೇಣಿಗಳಿರುವ ಕೆಲವು ಕಾಲಮ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ. ನಮ್ಮ ಶೈಲಿಗಳನ್ನು ಸರಿಯಾಗಿ ಇಡಲು artist_top_genre ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import LabelEncoder, StandardScaler\n", + "le = LabelEncoder()\n", + "\n", + "# scaler = StandardScaler()\n", + "\n", + "X = df.loc[:, ('artist_top_genre','popularity','danceability','acousticness','loudness','energy')]\n", + "\n", + "y = df['artist_top_genre']\n", + "\n", + "X['artist_top_genre'] = le.fit_transform(X['artist_top_genre'])\n", + "\n", + "# X = scaler.fit_transform(X)\n", + "\n", + "y = le.transform(y)\n", + "\n" + ] + }, + { + "source": [ + "K-Means ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಎಷ್ಟು ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಬೇಕೆಂದು ಹೇಳಬೇಕಾಗಿರುವ ದೋಷವಿದೆ. ನಾವು ಮೂರು ಹಾಡಿನ ಪ್ರಕಾರಗಳಿವೆ ಎಂದು ತಿಳಿದಿದ್ದೇವೆ, ಆದ್ದರಿಂದ 3 ಮೇಲೆ ಗಮನಹರಿಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 0, 2, 1, 1, 0, 1, 0, 0,\n", + " 0, 1, 0, 2, 0, 0, 2, 2, 1, 1, 0, 2, 2, 2, 2, 1, 1, 0, 2, 0, 2, 0,\n", + " 2, 0, 0, 1, 1, 2, 1, 0, 0, 2, 2, 2, 2, 1, 1, 0, 1, 2, 2, 1, 2, 2,\n", + " 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 2, 0, 2, 1, 1, 1, 2, 2, 2,\n", + " 2, 1, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 0,\n", + " 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 0, 1, 2, 1, 2,\n", + " 1, 2, 2, 2, 0, 2, 1, 1, 1, 2, 1, 0, 1, 2, 2, 1, 1, 1, 0, 1, 2, 2,\n", + " 2, 1, 1, 0, 1, 2, 1, 1, 1, 1, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2,\n", + " 0, 1, 0, 0, 1, 0, 0, 2, 0, 0, 1, 1, 2, 0, 2, 2, 0, 2, 2, 1, 1, 0,\n", + " 1, 1, 0, 0, 1, 0, 2, 0, 1, 0, 2, 0, 0, 2, 2, 2, 1, 1, 1, 1, 1, 0,\n", + " 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 1, 1, 0, 2, 2, 2,\n", + " 1, 1, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 1, 1, 1, 2, 2, 2,\n", + " 1, 2, 1, 2, 1, 1, 1, 0, 2, 2, 2, 1, 2, 1, 0, 1, 2, 1, 1, 1, 2, 1],\n", + " dtype=int32)" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ], + "source": [ + "\n", + "from sklearn.cluster import KMeans\n", + "\n", + "nclusters = 3 \n", + "seed = 0\n", + "\n", + "km = KMeans(n_clusters=nclusters, random_state=seed)\n", + "km.fit(X)\n", + "\n", + "# Predict the cluster for each data point\n", + "\n", + "y_cluster_kmeans = km.predict(X)\n", + "y_cluster_kmeans" + ] + }, + { + "source": [ + "ಆ ಸಂಖ್ಯೆಗಳು ನಮಗೆ ಹೆಚ್ಚು ಅರ್ಥವಿಲ್ಲ, ಆದ್ದರಿಂದ ನಿಖರತೆಯನ್ನು ನೋಡಲು 'ಸಿಲುಯೆಟ್ ಸ್ಕೋರ್' ಪಡೆಯೋಣ. ನಮ್ಮ ಸ್ಕೋರ್ ಮಧ್ಯದಲ್ಲಿ ಇದೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.5466747351275563" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ], + "source": [ + "from sklearn import metrics\n", + "score = metrics.silhouette_score(X, y_cluster_kmeans)\n", + "score" + ] + }, + { + "source": [ + "KMeans ಅನ್ನು ಆಮದು ಮಾಡಿ ಮತ್ತು ಒಂದು ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.cluster import KMeans\n", + "wcss = []\n", + "\n", + "for i in range(1, 11):\n", + " kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42)\n", + " kmeans.fit(X)\n", + " wcss.append(kmeans.inertia_)" + ] + }, + { + "source": [ + "ಆ ಮಾದರಿಯನ್ನು ಬಳಸಿ, ಎಲ್ಬೋ ವಿಧಾನವನ್ನು ಉಪಯೋಗಿಸಿ, ನಿರ್ಮಿಸಲು ಅತ್ಯುತ್ತಮ ಗುಂಪುಗಳ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಧರಿಸಿ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/seaborn/_decorators.py:43: FutureWarning: Pass the following variables as keyword args: x, y. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n FutureWarning\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.figure(figsize=(10,5))\n", + "sns.lineplot(range(1, 11), wcss,marker='o',color='red')\n", + "plt.title('Elbow')\n", + "plt.xlabel('Number of clusters')\n", + "plt.ylabel('WCSS')\n", + "plt.show()" + ] + }, + { + "source": [ + "Looks like 3 is a good number after all. Fit the model again and create a scatterplot of your clusters. They do group in bunches, but they are pretty close together." + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOydd3gUVduH7zOzNZWE0BKqVAHpAgpSFBTBil2wI2Lvfnasr72j2MWCBVGQpqgIAtKl914SSoD0bJ853x+zCdnsbFhCAop7X5eXZHZ2zskmOc85T/k9QkpJjBgxYsT476Ic7wnEiBEjRozjS8wQxIgRI8Z/nJghiBEjRoz/ODFDECNGjBj/cWKGIEaMGDH+48QMQYwYMWL8x6k2QyCE+FQIkS2EWB3hdSGEeFsIsVkIsVII0am65hIjRowYMSJTnSeCMcCACl4/F2ge/G84MLoa5xIjRowYMSJQbYZASjkbyKnglguBL6TBAqCGEKJedc0nRowYMWKYYzmOY2cAu8p8nRm8tqeiN6WlpcnGjRtX47RixIgR48Tj77//PiClrGX22vE0BFEjhBiO4T6iYcOGLFmy5DjPKEaMGDH+XQghdkR67XhmDWUBDcp8XT94LQwp5YdSyi5Syi61apkatBgxYsSIUUmOpyGYBFwbzB7qDuRLKSt0C8WIESNGjKqn2lxDQohvgD5AmhAiExgJWAGklO8D04CBwGbABdxQXXOJESNGjBiRqTZDIKW86jCvS+D26ho/RowYMWJER6yyOEaMGDH+48QMQYwYMWL8x4kZghgxYsT4jxMzBDFixIjxH+dfUVAWI0aM/xYysAu8vxtf2PsjLPWP74ROcGKGIEaMGP8o9OLPofBVQBoXCl9HJj6IEn/tcZ3XiUzMNRQjRox/DDKwM2gEvIAv+J8XCl8xTgkxqoWYIYgRI8Y/B+9vgG7ygg7eX4/1bP4zxFxDMWIcJQd25zD5velsWbGdFqc24/wRZ5NSO/l4T+tfijzeE/hPEjMEMU54pJRIKVGUqj8Ab125g3t7PYHf68fvDbBsxiomvDWVd+b/j/ot0qt8vBMee38ofMvkBcV4LUa1EHMNHWN25uex/sB+NN3s+BujKinOL+bl60cx0Hk1A2xXcn/fkezaYCpwW2neuvVDXAVu/N4AAD6Pn+I8F+/dM6ZKx/mvICyNIOEewI6xT7UY/064B2FpeETPklJH+jciAxHVl2MEEYbkz7+HLl26yH9jP4LMgnxumfIT2/JyUYXAplp49ewB9G180vGe2gmJlJI7uj3CtpU78PuMRVoIQXxyHGM2vk1yWtJRj6FpGufar0Lq4X9DVruFae5vjnqM/yoysB08wZiA42yEpfGRvd87D5n/AEgXSB3U+oiUdxGWJlU+138LQoi/pZRdzF6LnQiOAbqUXP3jODYcPIAnEKDY7yfX4+b2aZPZlpd7vKfHrvx83l44n2dnz2Tuzh382zYHZqxbuImd6zJLjQAYxsHn9fPLp39UyRiKomCxmntX7U57lYxRFUj57zt9CktjRMJw478jNQLaHmTuraAfMAwBHtC2IHOGIqW/Wub7bydmCI4Bi7IyyXW70cstsAFd5+tVK47TrAymbtzAOWPH8O7iBXy2fCkjpv7ELVN+qhbXVXF+MZuXb6Mwt6jKn12ezA27Ta/73D62rqwaV4EQgn5De2G1W0Ou2xxWBtx0ZpWMcTTorono2b2Q+1qhZ/dEd/1wvKd0TJCu8UCg/FXDKHjnHo8p/eOJBYuPAftdxabXA7pOVmHBMZ7NIVx+Pw/9/gueQCDk2rzMnUzfspmBzVtUyTi6rvPhg18yefR0LDYLAV+As4b24u73bka1qFUyRgl5+/NZ+vsq8g8UoJu4bOxxNpp3qjp33K1vXMfuLXtZv2gTqkVF82u069OGG569ssrGqAy66ycoeBLwBC9kQ8Ez6IASd8nxnFr1o+8FTHb+UjdOCTHCiBmCY0CnuukETHbYTouV3g0bH/sJBVmUlYlqkknj8vv5acPaKjMEP7w+hSkf/IbP48fnMf5A/xg7h6TUBIa9OLRKxgCY+M40PnzoKyw2FYEg4AugWo3FGUBRBPY4O+fc0LfKxnQmOHn1j6fYtnonmRt206hNAxq2yjC9t8TlJoSosvEjUvwmpUagFDcUvQUnuCEQttOQ7qkY/a7KooOt0/GY0j+emGvoGJCRlMRlrdvitBxyIdhVlXqJCVzY6uTjNi+LokRM27apVbdHGP/6ZLwub8g1r9vHpPemV1k8YsuK7Xz88Fj8Xj/uQg+uQje6piMAZ6IDq91Ct0GdeXfRiySmJFTJmGVp0rYhZ1zS3dQI7N2ezaPnPs8A25UMdF7NC0PfoiCnsMrnEIIWoeurvveEiAFViONssDTEyDwqwQmOAQhL0+M1q380sRPBMeLpPmfRqV4GX6xchsvnY2DzltzQoRMOi/Xwb64mumbUR1XCd6dOi5XLW7etsnEixQQ8xR50Ta8S99D0MTPxe8PdATaHjQc+u50zBnc76jEqg6vQzZ3dHqHgYCG6LtE1ndnjF7B15Q4+WP5qtdQ2AKDWB21n+HUl/dicSMohpRf0IlBSEKJ6959C2CD1W6TrS/BMBuyIuCHgvKhax/03EzMExwghBBe1OpmLjuMJoDw2VeWD8y7ipkk/AqAFC6+uansKPRs2qrJxWnRuypp5G8KuN2iVUWUxAneRxzQmIKXEU1zeRXLsmPHVbDwub8jcAr4A+7bvZ8WsNXQ885TqGTjhfsj/P0LdQw5IuK9Kh5FSgn8J0vMHiHiE84KQfH8pfciC58A9AZCgJCMTn0BxDqjSeZRHKHGIhFsg4ZZqHedEoVpNsxBigBBigxBisxDiYZPXGwkhZgghVgohZgkhYlqzx5iuGfVZcNMInjuzP4/27M3PQ67j8V59q3TXeOsb1+OIs6METx9CCOxxNu5456YqG+OMwd1xxIenbGoBjc7921XZOEfKttU78RR7w65rms6u9eaZTVWB4jwXkl8CtSGgGv9PfgEl7oIqG0NKicx/CJk7DFyfQPF7yAOD0F0TD92T/zi4J1IqIqfvh/yHkL5FVTaPGEdPtZ0IhBAq8C7QH8gEFgshJkkp15a57VXgCynl50KIM4EXgGuqa04nGlJKxq5awUdLl5DncXNqen0e7tmLZqk1j+g58TYbF7asvpNKy1Ob8c7CFxj7/A9sXrqVRm0aMOSxS6o0e6fLOe3pfHZ7/v51BZ5iL0KAzWnjuqevILVuSpWNEwktoFGYW0RiSkLIKadp+8Y44u1hxkBVFRq1rt59j+I8F5znVt8AvjmGSJx0By8EjP8KnkA6zgQkeKZhKIiWxYMsGo1I7Vp9c4txRFSna6grsFlKuRVACPEtcCFQ1hC0BkrOqjOBifzLkVJG3E3vys/npw3rKPL5OLPJSZyannFUO+8X587mq1XLcQfTP2du38rCrEymXX0tDZL/WaJnjds04LGv76m25yuKwlWPXMzmpdvwuo0UwabtG9NvaK9KPa+in+OcHxYw7tVJ5O8voMs57YlLdDJ59K/4fQFsDitDn7yMS+4ZhBCCM6/uyedPjcPn8aNrRuaY1WYho3k92vVuXblv9h+CdE8NFmyVQ1jA9xeozUBYQZY3BJjHL2IcN6rTEGQAZQXEM4HyEbsVwGDgLeBiIFEIUVNKebDsTUKI4cBwgIYNj0xv5FixKCuTZ/78g3UH9pNkt3NTx87c2qVbaXrmTxvW8cjvv6JJHb+u8+XK5XTLqE+yw8HO/Dy612/A9R06USsuPqrx8j0evli5DK+mlV6TgCfg5/2/F/H8mcdWoCtvfz5/TViE3xug23mdqNekzlE/c/nM1Ux4exp5+wvocVFXzrulP3GJzpAxJ749jaUzVpNat4ZxGiiTnbRh8Rbu7/sUn6x5I2qDu2XFdt654xPWzt+AI87OucPO4qYXhmALFo19+ez3fPfyT3iDO/wpH/wWIjHh9/r5/IlviUt0MHBYP5wJTkYtfIF37/qUxb8sQ7Wo9LmyByNevfa4BG2rFGEBBOapZxawNDBy98NQwNqheucW44ioNq0hIcSlwAAp5bDg19cA3aSUd5S5Jx0YBTQBZgOXAG2llHmRnlsVWkP5Hg/j1qxi2b49tKyZxlVt21E7vvIphWuy93H5+G9Ld+YATouFy9ucwsjeZ1Lg9dL9k/dDCrdKKPkzsikq8TYrk6+6hvTEw+vgLN+7h+smjqfQF77balUzjWlDrotq7gFd5+OlS/hq1XKKfX56NWrMQz3OICOKOZQwe/x8XrpuFIoQ6MF6iasfu4Qhjx1Zvrqr0M3fv61ECNi1Pouxz/9YmnZqc9qo3aAm7y15CWeCk4N7chnR8UGK812m2UIlOBMdPDvpYdr3bnPY8fft2M/Np9yHu+hQgNXmtNLl7A48PeEhivOLubzecHwekx1uOWo1SOPrHaOj+K7/vUjfEmTOTYA79AURh6g9HyGc6EXvQ/HoMu4jAcKJqPlDLJXzGFOR1lB1ngiygAZlvq4fvFaKlHI3xokAIUQCcElFRqBKJlVYwKCvv6DI60NH8uvmTXy4ZDHjL7+Kk2vVrtQz3160IGyRdwcCfLt6Jfd278G8XTuNnH0TSsywT9fQvDpvLPiLV/of3q+bnpiIr8xpoAQBnJSSGvXcH/j1Z6Zv2VR6spiycT1zd+7gt2uuJ9UZd9j3F+QU8tJ1o/C5QxfHb/73I90GdqJZx+hEvmaPn8/L149CtahIKXEXhmb6+Nw+sncdZOqHv3Ppfecz9rnxFOYUoQXCP4OySF2yd1t2VIZgwttTS1VED43rZ8n05ezZto+DWTlY7ZaoDEHu3iPTkFo+czVf/+9H9m7LpvXpLRn6xKXUb17viJ5xrBG2Lsj466H4U4zfPAWQiBqjEMI4uYn4W0BNRxaNNqp6bZ0g4U7wr0Z3jTdE4ByDEEp0J+EY1UN1Zg0tBpoLIZoIIWzAlcCksjcIIdLEoaTiR4BPq3E+APzfb9Mp8HrRg0uwDri1ALdPm1LpZ248eMD0cGxVVXYXFmAxydU3Q5OSOTui08GpHZ9A38YnYVdD0y8dFgsjuhwKwi3bs5sLv/2KZu+8TocPRvHmgr9Kq5x35efzy+aNYe6lAq+Hb1atjGoeC6csRVXDf438Xj8zvp4T1TMOZB3kpetG4XX5cBW4w4xACT63j/mTjdPg4p+XH9YIgOHrj9YYbVq6jYA//NRmtVvJ3LCb1HopISJ2FdHgZPPqYjP++HYuj5//AstmrGLP1n3M/GYut3V5iB3rMqN+xvFCSbwXkTYVkfgQIulJRO25CHtPpLYbGdhmSEFru0E/CLIQApmQOxxZMBJcnyALnkfuP8toUVkBUi9Gun9CFn+O9IenIsc4OqrNEEgpA8AdwHRgHTBOSrlGCPGMEKIkh60PsEEIsRGoAzxfXfMpYUGWed/T7fm5eE1cN9HQKi0Ns6Xer2lkJCbRo0GjqKs5kx2OqMd9/Zxzuahla+yqikVRqJ+UxHsDL6BtbcM/v+ngQYZO+J5V2fvQpaTA6+XDpUt4YubvAKzdn43fRPpCk5KZ27dGNQdN002/NymJaqEG+HPcfFMp5/IIASl1awCQWPPwrjy700a7Xm1o2r5xVPNo3qmJqZqo3+unfst00pvWpWWXplhsFR+k7U4bt7wSXaN1TdN47+7P8LoOnTJ0TcdT5GXM499G9YzjjbA0RMQPRcQNBj0X/cCFyP3nIA9cBPs7Q9EokHmADtqmMqqgAG6QeciCxyM+X/qWI/efgcwfiSx8BXnwMvT8h0/8CuljSLXWEUgpp0kpW0gpm0opnw9ee1JKOSn47/FSyubBe4ZJKcMTrquY8gqgZamsIbiz62k4LKGLg9Ni4aq27Ui023Farbw38AIcqorDYsGqKMZBulyw0GmxMKxj56jHdVisvNDvbFaMuJPFw27lz+uG0bvxod3v6CULQ3b7AJ5AgInr15LjdlHk90VsDGgWezCj28COpdkwZbE5bfS+7PSonuEp9kZlNGxOGxfdYbjNLr3v/LC6AdWqUDMjleS0JNLq1+TKhy/i6YkPRjUHgMF3D8LqKKck6rRx6oCOpcHvpyY8SPverbHarTgTHCSkxHPF/11Iiy5NSUiJp/XpLXh+6qN07t8+qjFz9+WHxCRKkFKy+q91Uc+99H2BzUjvQqRezRIWZmPLADJnCAQ2YNQNuIML/uF+l3TwLUKaZBdJqSHzbgVZhKEd5AM84P4ZvNOr+luocqS2Fz1/JPr+/ugHr0Z6Zh7vKZnyn6ssTrDZKDJZ5FQhiLfZKvXM1rVqM+aiS3jmz5msO7CfZLudG4NZQyXUS0ykZlw8+13FKEJgV1XqJyWTWViAVVHwaRpDTmnPpZWQdrCpKjY1vEJ37YH9pobPpqrsys+nht1hBHhN7qkZRXwAIKVODW598wZG3zsGLaChazo2h43+1/biQOZBJrw9jdant6Rll8iBwVPP7cA3L04I0yMSwpCIUK0qWkDnllevoW2PVgD0vbIH21fv5Ic3pmC1Wwn4AjTr2IRnJv0fSamJUc29PLUb1uLNOc8y6s5PWDPPyBoaOLwfNzx3Vek9SamJvDj9CXL35VGYW0xGs7pHVR0dnxwX8TSUcgT1D1I7gMwdDoHNpSmbMuEOlGNZWeubG1ywKyNhXhJjKId/FUgzV6Eb6RqHcFRvhfLRILV9yAMXBD+TAGg7kHlrkIn3osRff7ynF8J/zhDc2+10np/7Z8jiJ4Ahp7Q3VeKMxAGXi+/WrGTDgQO0q1OXy1q3ZfJV5rVwmq4z9Mfv2e8qDtmBZxYW8N7A87GrFlqmpUUVnD0STk6rxeacg2ELvVfTaJCcTIPkZCxBI1QWu6pyXouWUY9z3vD+dDyzLTO//Qu/x0+Tdo14546PmTF2DgGfhqIqdOp3CiPHP2C6aLbo3JRmnZqwZu76kOsd+rZlxOvXU5hTRItTm+KMP+Q2E0Jw4/NXc+n957N1xQ7SMlKrpEdwfHIcaRmpJNSIIy7R+LfFGj7nlDo1SKlT46jHc8Y7OPPqnsz89q+QgLs93s7Vj1xc+rXU9iILXwPvbBBOiBuCiL8BIYw/YZl3OwTWA4FDC2fxe0hLC4Sj6tRWK0TLjpAuejgsYO9V+r2EEgBTxysgK3eCP1bI4g8PGYFS3FD4BjLuitKA+j+B/5whuL5DJ3I8bj5eagQddQmXnNyax87oE/UzNh48wGXff4tPC+DVNH7ftoX3/17ExCuGUD8pvJBrfuYuiv3+MDeMX9OYtWM7T/WuniYmt3bpyq9bNoWktTosFi5o0arU6NzZtTvvLV5Yeo/DYqFRcg0Gnxy52ElKyboFG1k4bSlxiU76XtmDjGb1GPr4pUgpubH1PRQeLKSs/Vn6+yqmfvg7F9x2Ttjz9mzbx6YlW8Kur5m3gcTUBE5qZ657tG/HfsY+/wMr/1xDrQZpXPXwxXTqV3k5idx9edza5SGKc4vRdUnBwSI+e/xbdqzN5L4PR1T6uYfjrneH4ff6mfPDQiw2FalLhj55GX2u6AGA1POQBy8GPQ/QQOZC0TvIwDpEjdeRgUzwryWsGYt0I12fVbkhkHoe+DeAWi+0j7C1IxHlbEMQGMqgunF6UVIRSc+a32pth7kH24mI+4eLyHnnE94gBxAqBLaAteqEHY+W/2zPYpffT2ZBPnUTEkiyRx+gBbjs+29Yumd3yK+8KgRnNWnK++ddGHb/lI3refj3X3EFTNQxVZWArtM8tSaP9+pDjwZVJ/YGRtbQU3/+wersfSTa7VzXviN3dj0tJJ11zs7tfLliOXleDwObteCKNqfgtJqrokopeeWGd5kzfgEetxeL1YKiKjz02e30vvx0dm/Zy/D294cEP0to2qEx7y99Jez6uFd+4rMnviVQLiPH5rAy7MWhXHzXwLD37Nm2j1s7P4SnyIMWMHah9jg7t799A+feeNYRfUYljHnyW8a9MimsLsHqsPLF5lGkpRtpuWvmbWDCO9PI2ZNL9/O6MGh4P+KTKj7NSWmksVpsFmrVN5cAKcgpJGdPHvVOqh3S6lIv+gCK3iW8v4AdkTYNZAEy55rg7rMcanOUWlONOfhXGgJw/lUgEiDuGkTCbRF24ubfgyx8FVxfgLCB9IO1PSLlPYRiuOP03HvAO5NDtQV2YywZAArA0goSH0GgQWAjqI3BfkaFc5De2cjcOwEN8IGIA2tnRMoHUc/9eKDn3Gi4y8KwIWr9jlDrHtP5HK86gn8Ufk3DHQiQaLMhhCDOaqVFzbQjfk5A11m2d0/YvkeTktk7t5u+p1PddFMjAJS6ZTYcPMDNkyfy5cWX0rleaOphkc+HVVGwW478x9WxXjo/XVlx85czGjbmjCgb5Cz+ZTlzflhQWsFbsni/cuO7nHpuRwJ+LWLFbMBvHhAO+DVTP7muy4jv+eqZ8bgLPSGBaq/Lywf3f0H/a3pH7CUspWTt/I0cyMqhRZeTQiqgV81ZZy5lbbeybeUO0tJTmfrRb4y+93N8bi9SGtXLU97/ldF/v0R8snku/Nr5G3hhyFvkZucjdUmDVhk8Me4+MpqF1gkkpSaaxzd8Swg3Ahi76cA6sPfBfCduA4dx2pSBrUFjEVygZT4Uf4zU9yKS/2c67zA8E8H1FeCFkrwO/zJk/oOIlPeNKdV4DekaB+5vjHscgxDxNyIUkywve4+ohhX2XlDrV6R7MugHEfaeYDut2uWsjxYRfzPS9zehBXc2sHU95kbgcJzwhsCvabz412y+Wb2SgK6TFhfHYz37ALD2QDZNaqQwqHnLiDvg8ihCoEYIsJbP6S9ha14uFqEQOIz/1BMI8Mb8v/hq8OUALN2zm0dm/MrW3FwUAec0bc5zZ/YnyX78GqPPGDvHVE1Ttags/X0lPS7qSmJqQtg9NqeN/teY6/6cfuGpjH3+h7DMIUURnH6h6QaGFbPWmGYraZrO3m3ZpvGCg3tyefCsp9ifmYMiBAF/gL5X9eS+j0agKAoNW2Wweu76sOcGfAHqNK6Nx+Xl/fs+Dwlq+9w+DmTl8NN707n6kcFhY+buy+Phc54LyQzaunIH9/V6krE7Rkc0WCFYmoJvHuHtFzVQ6yOEDZn4BBQ8hZGtIwG7of0ffyNQ4q8OF3/DPQmZ+ABCOXwRoiz+lLAqYnzgnYvU8xFKMkKoiPirIP4qs0dUGqHWQSQMq9JnVjfCfhoy6TEofBGjZ7LfMGA1Xj/eUwvjhDcEI2fNYOL6dXg0Y+e6t6iIu36Zgk1V8WoacVYrL/01hx8vvzoqoTZFCAY2b8G0TZvw64cWLruqRsz4yfO4sVssBPyHT8ncmGPILO3Kz+eaCeNxB08SmoTpWzax/sB+GiQnE9B1Lm7VhvNbtDyiIPfRoloij6WoCkIIHvvmXh4Z8BxaQMPn8eNMcNDw5AwuutO8YrpxmwZcev/5/PDa5NKCLavNwlWPDg7ZNWdu2sOPb0xh+5pdYW6kEjS/RlKaedbQ81e9QdamvSEL/azv5nFyt+YMGt6fwfcM4rcvZ4cs9Fa7hZanNsMRb2fRz8tMTyh+r5854+ebGoJfv5gVZuCkLnEXe1n08zJOv+BU07mWRcQNQbq/MRaSQzMDtTnCasRylLjBSEsTZPFnRs9e2xmI+GsQSjCg7V+L4Vop/3A7BHaALYpqdD1S0b8SdEslG7n93llI93cgPQjH+eC8ACGOXwOmo0EGthlGWCSC/awjroBW4i5HOi8yPmMlBaEeuRfiWHBCG4ICr5cf163Fp5f7Q4TS/HqX348nEODhGdMZG9yJH46n+/RjW14em3MOIjBqEzrWTef+08yPul3SMwjo0RVXNUsx/Mefr1iKTwtd7Py6zubcHDbn5gCwZPduJm9cx8fnX1ytAmYuv5+J69eyKCsTxzn1UX9LQNsT6o+WuiwN1LY5vSVfbBnFjLFz2J+ZQ7szTqbbeZ1QI5yYAG545krOGNyNOeMXIISg9+Wn0eSUQ/GSNfM28PA5z+L3+tECuqlBsjqsdBvYydS9krsvj/ULN4ft9r0uLxNH/cyg4f1p0DKD56c8wmvDRrM/0zDI7fq0IXvHAW5oeRdSyogGyBWhGjp754HSPs1l8Xv9HMzKifh5lEVYGkDKp8j8R0ELVhvbe4e5dIStI8LW0fwhlpMNn3z51E7pBbWB6VvCsPcM9hYo97usJIBiGGxZ+CK4vqXk5CB9y4ymNKmfYyjT/zsw4iHPgWuccUFYgKcg5SOELfpaHwh2TLM2r/I5ViUntCHYX1xkWjlbHl1KFmVl4g0EovLDJ9ntTLj8albu28u2vFxa1kyrUKeobkIiN3ToxOcrlpfu8C2KgqbrIZ5dh8XCPd2NIqwV+/aiHSaQ7w74WZiVyfzMXZzeIHpV1vUH9vPrls1YFIWBzVvQuEbkfPVct5sLvv2KHLcbd8CPTVWRD7Yl/f31OHcUBbWB4Inv78cRd8hlVaNWMpfcc17UcwJo1qEJzTqYy0G8ccsHIe6mkgCxoirY42wEfBqnntOBh8bcbvp+T7EXRTU3lmXdNu37tOHzTe9QcLAQCdx08t0U5hRxuJyKSIa4bqNaptcDvsARyVAIW2dI+yVYoWtHKEeWaiwSbkZ6fiHUteMw+vgGd6lSSmMnX/QB6MXg6A2Jj6KoKcFn3GV0IpPFGIVdCmBDJD2LEAoysAtcX2O4p0pwQ2A1eGeBo3JB/OOC709wjaf0ewnGRGTuCKg97197wonECW0IFCGQUaWzAYgj2lULIWhftx7t60YnDPbg6WfQOT2Dr1Yup8jnY1DzlhT7fHy6/G9yPR6apqTyRK++dM0wmpWYCcqZ4fL7mb1je9SG4NV5c/h0+VL8moYiBKMWLeDhnr24tr35TvKthfPILmNQfZoGCgQe6MJNRRk4E5z0HNy10kVc0eBxedm1Psv0NavDyltzn6NGnRqk1I7s2qvbpDaJKQl4XaG7cIvNQs9y/YyFECSnJTFj7Bz83sBhjQBAk1PMP//c7ALT64qqkL3D6JsgpWTy6Ol8/cIE8vbl06h1fW557To6nRXaxlIIAaJyTXaEpRmkfo4seBoCa0HEg/NqROLdpffIvLtCq3U9P4FnOnqtuShqEk0NypcAACAASURBVEKth6z5FeQ9adQsqDUh4T5EyQLvW4hpqqd0Ib0zD933L0C6xhMeDwEIgG8p2I9PD+zq4oQ2BGayz2aoQtCzYUPT6tyqQgTTS89qElphe3vX7qZNUOKt0VU521SVFGd06a9r92fz6fKlpZ+LJiV+dF6Y+ydnN21G3YTwxXz6lk2mp6oDXjc9h/WhTkLl5bujxVqBto+qKCEupEgIIXjo8zt44oKX0PwBAn4Ne5yd5FqJpr59gANZOaZunfCHw3m3mPd/MAtog/E9lcQbvn1xAl//78fSE8/WlTt48oIXeXH647TtWXWd44StAyJtgunvmx7IiiDZ4IHC56DGy0htH+RcazShxwuaG/IfRirxCHtvUJJAKCYJTBaIIhj9j8KsmQ5g1EBE8TvxL+OfnX91lFgPE0S1KArxVht14hN48axDhU5+TePzFcs4/5svOe/rLxizfGnUO/TKYHYS6dO4ScQspLIoQhDQJW/M/4u/du2oUIhr2qaN+Ew0fYQQzNh2SGRu6Z7d3Dx5Av2//MxUjgOMQjx7FTWej4pK1Lvous5vX/zJnac9ys3t7mPt/A28Pe85LrzzXHpc1JVhLw7ho5Wvk1TT/DTTqlszrPbD75UsFpVNS7eZvnbGJd2xx4UbdV2XdB3YEb/PzzcvTAjLsvK6fXz2RKjonJRepG8Z0r8pKsE16d+AnncP+v4B6Ll3If2GdpHpydddQXNA75/G84pGgZ7PIdePDniQ+Y8hpQ723pjvLS0I55H1pjjeCOcFRgV3GDrYzDPZ/s2c0CeC+snJEfsnNUhKZsgp7WlcowZ9G5+ENbjoSikZNnkCS3ZnlVbbvjxvDr9t3cxXF192zLpKXdn2FMasWMpBl6t0R25TVQSUzlXTJbrUeXex0Q8hbrmVjnXr8ekFg0vvKYsiBMLkAykrgPf71s3c9ctUvIEAEvPiflUIOtdLp4ajakvkc/flsXDqUhCC7ud1okYtw9Xj84ZXZZegaTq7t+wlOS0xLI//zVs+ZOa3c0sX2a83/8isb+fx7pKXSjuOVUS7Xq1peWoz1i/chNcdOeMr4NeY++NCrvy/8ErXlqc2xRHvCCuwa9Q6g7T0VA5kHYx4atix9pAMte6eDAVPAgKkBmo6pHwQUtkr/auRxV+CtsdIOXX/gOHL10HbjvT+CamfIMwWMrUCl5N0oe8/G7S9mFbK6gWg70GoGZA6Bpl7c7BeQRhjJ72IsFRtoWS14zgXPJMNd5d0AVZAhaSXEeLIClD/DZzQhqDA60URwjToWuD1MHP7VlrXqk2X9IxSyYXFu7P4e8/uEFkGTyDAin17KwzKegMBpm3ayF+7dpCRlMTlbU45oi5f5UmyO5h85TW8t2Qhv23dTKLNELK7oEUrlu/bg1/TueeXqRxwH+oZ6/L7WbpnN+PWrGJIu/BWgOe1aMnHy5aglXOZ6VLS76SmSCl5cuaMEJdaySenCIFDtSAE1IqP580B4dW+R8PPn85g1B2foAR7G7xz+0fc+9EI+g3phTPeQUbzemRu2B32Pr/Pzy0dHkALaPQc3J37Px6B3Wkna/MeZoydHeLa8Xn87N2ezZ/j5tH/mt6HnZMQgv/9/BgT357GL5/+gdftI2dPrmkKaXIt81PF/ElLwpr2AOxav5utK3dQv2U6IkK/igYtjVoI6V8H+Y8RUlSmbUPmXg9pvyOEgu6eAvmPUrrw+xcSavF1wI0seBaR9lP4YI5LoOAZzAXjvKBtN51jcDJGzAEQ1jZQaw74VxgBVlvHals4pdQNgyPiqnyDJoQKNd4H3zzDgCo1EM4LDWN3jJHSjXRNBv8SsDRGOC9FqJVrohWJE9oQFPv9WBUVTQvfxeR7vSzMymRhViafL1/K95ddRcd66SzZnWUaW3D7/SzZnWVqCIp8Pi4Z9zVZhQW4/EZmzcdLl/DR+RcfUTZPeWrGxfFEr7480StUK+bU9Pqs3Z9tWq3sDgQYv26NqSFoUTONu7qexlsL5wHGQiel5Nm+/cj3eFiTvY8ct1mADOIsVp7qcybpiUl0zagfJqF9NOzdns2oOz4J88e/cfP7dOjblrT0VO4ZPZzHznsBv9doAq+oCrqmowd0PAFjx//XhIUAPDr2btbO2xgUuAt9pqfYy9+/rohoCApyCvnh9SnM+2kxiakJDL5nEJc/eCGXP2hIh9zc7j52rssK2cU74u1cfNcg0+ctn7XaVGYaYM1f6zmpXSMuvf98vn91ckj9gt1p47qnrwBAur4mXMpZBz3XqOy1ngIFIwmtPo5whgqsN40RKIodPfl1yL+PI1MPtRpFUsohAT4hVKMTWclM9ELwTEVq2QhbJ7CdflRVwVJKZPEnwRaYLlBqIBPuQ4m7rNLPNEMIAfYeiCgroKsDqecgD14CWg5G8NpmFAemfoGwVl5XqzwntCFolFyDRLsNj6vioLEO3PDTDywfcSdpcXE4LBZc/tAFxGGxUis+1PXg9vvJLi5m/LrV7MzPK61NKIkn3Dd9GvNuuqVKF80SKtoBVfTaiC5dGdi8Bb9v3YJFUWhXpw4P//4ruwryUYQIq7kooVZ8PINPPny7x8ow+/v56BGkmMc8/i2tujWnw5lteWfB//j+1UnsWLOLA1k55OwNLXDyefzM/XEhhblFRgMbk8/BYlOp1cC8qKc4v5hbOz9E7t680paVm5ZuZfN927j+6SsBeH7KIzw84Dn27zqIalHxe/0MefwSupxt3n8gLSMVm8MaZuRUi1raZOfakZfjKfLw06hf8PsCJKTGc8fbN9Ghb7BAUduH+eIsQM+BwKYIr5vhiPj7oTgHIu09kK7vjE5ingoa44jEoNZQK0SNVyPepvvWQM6VlMQVZLECluZQczxCVK5CXhZ/CkXvUJrVox+EgufQsSNsHYzCLaX6stiOJbLwneDPv2QN8xkS43kPIWr9UmXjnNCGQBGCV/qfy4ipPxHQNAIVBNgKfD6KfT4GNm/J83Nmhb2uCsGg5i0AQ1b6xbmzGbt6BYoQuE2URQGK/D625ebQNNVcZOxI8QYCjF6yiB/WrUGLUB/htFi44jA9DRom1+DGjp2RUtL3i0/ILCiosGGP02JhROfDV8BWloBfQ5r4yX0eP398M4dZ4/5C6pJzbzqLBz+7HSEEQ5vcZvos1aqSv7+Ajme1JT7ZiafYE6JjpFpUBt5snsY45YPfyMsuCOlb7Cn28v0rkxh81yCSaiZSu2EtPlnzJpuXbSP/QCEtT21KYkrkzKn+1/bh6+d/DLkmhJH22nWgsWte9sdqJr//G1rwM/C5fLx/7xja9WptCNTZ+wZTM8ud1qTPUPyUbiNuEA3iMJWxIgFh64BUalVgCASixpug1EVUUCglpYTc6witK9AhsAFZ8AoiOXJXsgqfWfw+4amdbih4CIkd0JCOsxHJz/+jpJ4rhfdXTOMyWiZSO4hQq2ZtOaGzhgB6NWrMlKuuYWi7jmGpm+XxBPwk2GyMHXw59ZOScFqsxFmtpCcm8uXgy0pVSt9ZtICvV6/AEwjgimAEwAjmOixVU3gipeTaieP5cOlisgoL2FtcZNQCYCzUFkXBabHSo0EjLomyuc2yvXs44HKZGgFFCBJsNhwWC8M6dalUw5xoOe2CLqgmmv8Afm8Ar8uHz+Nn+piZLJjyNwBterQqjSeEzFsR1GlcC1VVeW3m0zRu0wC704YzwUGNWkmM/OHBEKG5siz+ZbmpP99is7ChjEy2EILmnU6iy9ntKzQCAGnpqTw35RFS69XAkeDAHmcjo0U6r816GpvdipSS14a9h9flLXU3+Tx+CnOL+Hzkd8Z4cReDmgGU9bU7IX4YQk0zKo8tzYEosrjkwYgZR9K/Cbm/NzL3FiiMIAsNYDkFYT+jQiNgPG8DSPM6Cjw/HH6upniN3semGHEQ8IHnN2Tew5Uc459EpFOTNEQHq4hqPREIIQYAb2H8hn4spXyx3OsNgc+BGsF7HpZSTqvqeZyUksqTvQ0/e9O3X4u4cCcGF/q2tevw53XD2JKbg5TQLDW19DgtpeTTZX+HBJPNUISgaUoKGUmVDxiXZcmeLNbszw6JX/h1nTirlUtatSY9KYmu6fXpULde1IGzHLcrotuqe0YDHunZi0Y1UkioZOe2w5G5cTcrZq0hLskZMWBaFk+xl2kf/c5p53fh2qcuY8GUJXiKPKVuJUecnZv+dzVWm/EHkt60Lh+ueI2szXvwunw0alO/QpmLWg3TEIoIU0LVNZ2UOkYGk6ZpfPviRCa+M43ifDdtTm/BrW/cELFnAkD73m34ZtcH7FibidVmIaP5oZ9Rzt48cvflh71HC+gsmrYUwAi21vzeiBV4poOShIi7JqTPgEh5D5l7Y1CCQjWXpAZjx2/yM5dSN96vZ0f8PgziIGX0Ye4Jou+P/Fqlu9LaQUmLYp5e8M5A6rkIpXJFeFJ6ka4Jxq5cSUHEDTFiHMeSuCtMJMhVsHVGKFWztkA1GgJhCIu8C/QHMoHFQohJUsq1ZW57HKOp/WghRGtgGtC4uuYEMLB5C6Zu2hh2/ZTadUIKyoQQNDNx6fh1neIKxOPirFYEgkS7jfcGXVA1kwZW7ttHwMQd5PL7sVss3NK56xE/s0PddNP6CKfFwoBmzWlT23znfLRIKXnrtg/57YvZCGHoFEVVuAV4PcZnn9GsHu8ufokvnx7HqjnrSMuoyVWPXMxp54enRpaXe47ExXeey5zv54ekiiqqQr2T6tC0fWMA3hrxIX98M7c0HXT5zDXc0/NxPlj+KvVOivx5KYpCk7bhiQOOeHvEVpXxyYdkJIQSj0i4GRJuNr1XqHWg5hRDllo/gCz+Dny/hd9o624+Qf+yCMZDgNrU0COyd0fEXR29b9/awXi/2dZLqVw6qRACmfBAMJXWPAh/6GarET+ohCGQ0os8eAUEtmGcMgTS8xsy8X6U+OsqM/VKIeJvRPqXgXeeUayHACUNkRze1+NoqM4TQVdgs5RyK4AQ4lvgQqCsIZBAiVlLBsLzA6uY58/sz7oD+9mZn09A17EoCikOJ+8PCm8oY4ZNVWmQnMzO/PBdXKuaadzYsTO14xPo0aBhlaqCZiQmYVXUsIXbabHQMLlyLRPT4uK4pfOpfLz071INJLuqUi8xsdoCwwBzfljAjK/mmLphKsIRb+esq88o/bp+83o88tXdEe+XUjLzm7lMGj0dT7GXPlf04MI7BoS0vCxLi85Nuf+T23jr1g/RdYkW0DjplIaM/PFBhBDkZufz+1dzwnoW+Dx+xr3yE3ePHn5E3w9AfFIcXc7pwJLpy0ME7exxdi4yachTEUIICKqRyvxnzG/yrTG/LoswrxqRoNZDSf3giOYCoKiJ6PZzwVv+kC8guQLX0+GeG3cRUnEiC98EbXewSU4BpgYnWkG9ckjXhDJGgOCzPVD4KtI5+JgFo4WwIlLeR/rXg3+NUT9i61blvRiq0xBkALvKfJ0JlBfoeAr4VQhxJxAP9DN7kBBiODAcoGHDyqdjgpGfP33I9czeuZ11+/fTuEYK/U5qekTyEiN7n8nt0yaXumkEhmDcM3370SW9evKMz2xyEvE2K+6AP8Snb1EUEu12vl29klPTM0wD05qus7eoiES7PayXwb3de9Cudl0+X7mMfI+Hc5u1IMFmY8BXY8h2FdMstSaP9ux9VGmw5Zn64e+mPQ3MUC0qWkDDkeDg5O7NOWvIGYd/U5C3bvuQGV8d6p+wa0MWM7+ZyzsLX4hYUNb3yh6ccUk3tq/eRUJKPHUbH8rXztywG5vDGmYItIAWEkM4Uh4aczuPn/cCW1bswGJV8Xn99Bt6BuePOLvSz0TPNL8ud5umj2LtVE7mOohwHlWDeFHjNWRhBrg+B3yGSqnzCigciZ67A9S6kHAvitM8/Tbicx3nIByGGoAM7EQevChY+KWXzpuEeyqdmWQEaU1SqYUV/EuDVdTHDmFtBdZW1ff86mpVKYS4FBggpRwW/PoaoJuU8o4y99wXnMNrQojTgE+AtlJG7uBSVa0qD8fyvXuYtGE9Esn5LVrRqV5oo5M/tm3ludl/sK+4mPqJSTxzZn+6BQXjqov5u3YybPKE0viERQgcVitI0KShZDqoeUte6ndOqe9/2qYNPDlrBi6/YUD6NWnKS/3OIT6C33/M8qW8Mm9OWJ/jMRdeUiqId7Tce8YTrP5rfYX3WG0WajeqRd+relBwsJCu53bi1AEdUKI8Ze3Zuo9hbe8Nczk54u3cPXo4/YaaN8mpiAO7c7i26R1hhkBRFfpf04sHPjVXPo2W7Wt2sW97Nk07NCYt4+iyQfTsPqCbHLCV2ii1zdongl48FgpforQoTThBbYao+Y0hpXwUGOuMZhRo5d5BqFvHAUkjUeIqL0MhAzuQRW+DbxEotREJtyIcpvvKqNDz7gfPFMLL8OMRKZ9Glvv+B1NRq8rqzBrKAsqey+oHr5XlJmAcgJRyPkZaxHHv3PDyX7O5+sdxfLFyGV+sWMY1E77nf2VSSrfm5nD/rz+zt7gYdyBAZmEhd/08hT2FkbIZjh5vIMCt0yaFLNABKSny+Sjy+3AHAniC1c2TNhiL7N97snjwt1/IcbvxBAL4NI0Z27Zw1y9TTMfQdJ03F84LC4R7AgFemTenyr6XM4ecgT0ufKdmsVmIS3KSUCOec27oy6iFL3DdU1dw5zvD6DawU9RGAGD1X+tNexZ4ir0smb68UvNOS0/ltAu6YHOGLopWu5XLHozOtVgRjds0oNugzkdtBABIuJvQLCMAJyTcFfEtSvwQROqX4LwI7GciEkdWiREAw20lhAVZ+Arhvn0PFL0elX5SRLQd4F9pBKi1LYYmk4xOdNJ0vnFDCM/YESCSwGpeM/JvpjpdQ4uB5kKIJhgG4Erg6nL37ATOAsYIIU7G+M2tINWg+tmcc5AxK5aFZOe4AwG+WrWCwSe3oVVaLR774zcKvJ7SvYI74MenBXh+zixGDTy/WuY1ddMGCryHd6e4A36+Xr2Ci1qdzAdLFodVSXs1jXm7drK3qJC6CYn4NI13Fs3n61UrKPb5I7bT3BTsnFYVDLixL398PYcty7fjLvJgtVlQLApPfHcf3QZF3/Rj7YKNfPjAF2xaupXkWklc/uCFJNSI589x83AVutG18IXFYrVELCgDw300+r7PWTlrDc5EB+ffNoCrH7m4tKXk/31xJx899CU/f/IHPrePxqc05K53h9Ho5CM7LXlcXhZOXYq70E2n/u2oXcGcKoMSdzE6ASh6IxgwTYX4u1HiKm6+JGztEbZqXOgC282v6wcx6g2OXI5C+paHnjKkC1xfIvX9RnBc2MDex7xvcgSErRMy8X4ofDWYpilBJCFSP/3H90quDNVmCKSUASHEHcB0jNTQT6WUa4QQzwBLpJSTgPuBj4QQ92Kcwa6X1eCryi4u4vu1q8kqKKBb/Qac26xFxJjAH9u2mhZr+TWNGdu20iy1Jot3Z5k2r5+5fWvY+6qKP3dsj/reksV/Z0G+aaqsVVXZV1xM3YREbp36E39u345+mL4NjSoZkDbDarPy0m9P8sVT45g/eQk1aiVxw3NX0rZH9JLLm5dv46F+z5TKMuzfdZD37vkMRVXQSrSATGKfqlVl4DDzgrIDWQe5s/ujuArcSCnxun2Me2kimRt28+hYIyhts1u5/a0bue3NG9ACGharhaK8Yia8PZVtq3fRvGMTzhrai7jEyIVMq+eu47FBLyCRSF2iBXSufPgirh0ZXYe8aFHiLoO4y5DSB1iPmWBihah1jd17eUQikXPmK0YWjcL0lOGZiPROx3B86FBjFMIefYxJib8O6RxsxASCJ4ET0QhANdcRBGsCppW79mSZf68FqlXIY8nuLK6Z8D1+TUMHxq9dzdsL5/PTlUNN8+MjGQghBPag+qcSoXm9Ral6WeZV2fuYu3M72UXRuZ0cFgsXtTQW1K7pGWzNzQlLO/VrOk1TUtmWm8Os7dsO27rHYbFwb/fQH9OWFdtZ/PMyHAkOel92Gil1ojcUPq+fh/o9zZYVO/AUedhtU3n47Od4/Lv76H5edCeCL54ah88dekKSukQrK5ERlE+12a2oFhWLzcL/fXFnxDTPCW//jM/tC3FReN0+5k5YSPbO/dRueKjbmBACi9VC1uY93HXao3jdPrwuHzPj7Xz5zPeMWvSi6S7f5/Xz+Pkv4ioMDUSOe2USJ7VvTFp6Cg1aZRCfdGQdyCqiIteODGwH7wxAAcc5CDU94r1VgtrY3BAodStvqDRzCXAgqIIa/GfeHVDrryM7GSiJxzwwfDw4oSUmpJQMnzyhVAMIDL/6trxcHp0xnR4NGtG4RgpdM+qX/hKeVr+BaSOWgK5zWn0jJfScps34dcvmkPtsqsrgk1tXOB+338/M7Vtx+f30bNjItBHM6ux9rMneR/2kZCasX8u0zRvxa5ppYl8JJYYpzmqlWWpNrj7FEKMa0aUrkzaup8jrK93xOy0Wbul8Kgk2G9+t3hrRCAiMxa5uQgKP9uxNz4aNyCosoIbdwSf3fs6vn88i4NNQrSof/99XPPrNPVE1YgeY/tlMNi/bVpqLH/BpBNB48Zq3+X7fx6UFYRWxZfn2qFoUOOIdDHlsMF3O7kCTUxoGhejMWb9oE36TnsQ2u5UdazNDDEEJb474kMLc4tJaAE+xF5/Hz+h7xjDyhwfC7l/+x2pTX7jX5eWZS1/FmeAg4NO47MHzue6pK6p1F68XvR8sVtIBAYWvIxMfMpQt9SKjbqCq1Tb9y8yva5uRMoAQlViSLCcHC+kO9wuhGL0VjjBD6b/ACW0ItuXmkhfBrz5l00ZmbNuKIgTpiUl8c8nlpDrjWLJnN6qJdLWKYMmeTNrUrs2zffuxOSeHXQX5pal4LWumcUOHTvyxbSu14+NpU6t2yB/xoqxMbpo0obTZvSZ17ujandtPNQp8vIEAN0+eyN97jHi6LiU+TYuq0WaduHjibDb6NG7CLZ1PZfzaNazdn03rWrX5ZvAVfLR0MfMyd5LmjGN451M5v4WRhmapIPiakZjI79fehE1V+Wb1Srp89B5+TUPTdOLz9pHi9SM0I9ce4IUhbzFu78cRc/TL8sfYOWH6/GAY7o1LttLm9JaHfUaDlulk7zxw2PsURdCwVX2adTTvhVyWJqc0ZM28DYdcS0H8Xj/pzeqGzHPD4s3kZhewYtYa00rkRT8vNR2jfMZRWaQucRUYO9gfXp9CRrN6UcllVwbp3xQ0AuX+PgqfReI0BJEKNGTcdShJ4Qat8kQK4EqOTPX0ECLhDqR3DuatJcuPUdmK5hObE9oQZLuKK3y9JDtme14uj/3xG6MHXchBl8u0f4GG5IDL0P6v4XAy7eprWZSVyba8XFrUrMnPmzZyzldjsKkqmi5pkJzM5xddQu34hOAiPyGsIvm9xQs5rX5DOtVL570lC1m8OzPk9BIt+90uAsVFZBUWMGb5UmyqijsQwGmxEGe1MuGKIbyeFF6c1L9pM56ZPdPU2JzfohU2VeX3rZt5dvbMUGmLjqlofo1a47eXXlNUhWW/r+L0Cw9/KrCZdOwCYyG0OaLTTxn65GWsnru+woYxYFT0dhkQKsl9YHcOOXtyadAyHWfCIV/+4LsHMf2zmSGGwOaw0r5Pm9Lq5L3bs/m/s58ld28eiHA5ihJKgsvl6dC3jWk/g/J4ir2Me+Wn6jMEnulEXpTdhzbX7i+R9tOqTorZ3hc8vwBlPwMB1k6Vzk4S1laQ+gWy8CXwrwIRFyyQK2d0pQa26GME/yVOzMhHkBY1a1boUinBr+vM2LYVv6axsyAv4n078w69JoSgW/0GXNm2HVmFhXy9ehVeTaPQ58MV8LM55yC3T5sMwNxdO0zdGJ5AgO/XrgZg3JrVlTICQGkMwBMIoElZauDcgQC5Hg8jZ80wfV96YhIXt2qNWs79UMPhYHhQsuKdRQvCMo+kTaWwW210W+ivT7Rx/vOG98cRHx4YTEiJj2rnDtC2Ryue+P5+0pvWQVEEzgQH3c/vjM1hJS7JSVyik+S0RF6c/nhp8Zir0M1j5/2Pa5vdwYNnPc1ldYbx7UsTSp+Z3rQur8wYSbOOjVEUgdVupd/QXjw5/oHS7+/x815g79Z9uIs8uAvNd6BWuyVi4Vt8cjztelfsQiwhLzu8er3qiDInQ7oNWeoqQiT+X7B/cYkBdoBIRFRQaazrPvSDN6DvbYW+twX6vu7onlmhz7W1R6n5NUrdVYjaC4wOY6XKo4oxTuL9CDXcvRfjBD8RpDrj6Fa/AQsydx32Xl1KdCnJLop8isguNn/NEKErV20qJauz97G3qBCvSZ9gMP4U3cG+B9H2RLapKrXj4vFoAfI9HtN4Rll0KZmz0yQ4F+Tl/gPoULceY5Yvpcjno99JTbm72+kkOwwXT8TaCCnR4ywowZ7GAb/GytlrWT5rDb0u6U7bnq1M/dsBf4AeF3el34ze/DpmJkJRUFUFi03l2UkPH5FPvNvATnQb2Amfx4fFZkFRFNxFblbOXofdaeOUM04OiQm8fP0ols1Yhd8bwB8sNBv73A9kNKvHGZcYLrpWXZsz+u9X8Hn9WKxqSO3CjrWZ7Nu+37R3gqIqWO3GHBq2rs/NLw81nfOB3TmsnBVB5qHs8xRB+z7Vp/gqHOcgiz8idGceAXk4l8sRjKvWhbRfke5JEFgFluYI58UhjW3CODgoNMAscyBvOHrq9ygmqa5CCEh+BXwLjJOPcBrdxaqxMvffzgltCADeH3Qht02dxOLdmShCwa8ZvXjL/ikLoH2dutgtFlrXqsXcXeYL58m1zHcTkfL7VUWh0OujR4OG+E0avsRZrQxqbvjDzz6pGT+sXxOW4VMStC3pV/zewAvo3bgJGw8e4OLvxh7WEABYKkh5U4RgaLsODDXpaAbQvm49/ti2JWz/KAISa3EAq8OKpunoAY2J7/yM1HV++WQGfa7owX0fjShd2H//6k8+zyHhdgAAIABJREFUfngsOXtySa6VzDUjL+OD5a+ycvY6kmom0HVgp6j6CJthcxxyKTgTnHQbGK4QWZBTyKJpy0J6DYDhgvnu5YmlhqD0mSZzKc53oZgUqQHUb1GPwXcPolGbBrQ5vWVEg7Z23gYsNkuFInuqVcURZ+eG566MeM/RIqwtkAkjoGg0hjEQhLlSAHAinOeVfiWlBN8CoxWlmg6O/kes+S+UeET8VcBVh71X9601zzICoytb2kRjXtp+pOszQ5xNTUfE34Swn4awn3ZEc/uvcsIbgiS7na8GX0ZWYQH7i4tJttu56sdxFHp9uAN+HBYLNlXlxbMM3ZI7u57GJ8v+No0TTNu0kXFrV9Mtoz6P9Oxdqk7a/6SmfLZ8Wdhib1ctnJSSgqoojOx9Js/MnmkEXIMZPj0aNOSsk4weCfef3pM5O7eT5/Xg8vtxqBYsqsKzfc4is7CARJudQc1bUjPOSCtsHmWzG6uicl6LwwdfI3H/aT2Yt2tHSLWxTVW5rV0H0kY2R9d0xv7vBwLlmrnM+u4v+l/bm3a9WjPru794c8RHpTn/edn5fPjglwx/eSgX3FZ5HZsjoTCnCNWi4Dex2eU7nUWiWcfGpqcBm9PG2df1YdDw/od9Ro3ayaYuNEUR1G5UC0ecnVN6ncwVD11EnUbV68ZQEm5DOgaA5//ZO8/wKKo2DN9ntqZ3IEDoTXoTEFFRARVQUBAQ7KBi7+WzYu8FCypiwYKAgAoCIoh0lI50pNdACOnJtpnz/ZhkSbKzyZJkQ8t9XVyY2Z2Zs7iZd+YtzzMPhAmJGbLeRa8deIBQsLYFu95lI6UDefxW8GzVZaSFHTJfhbgJCHPJXh9lxrXM/2v5w2lSPYI8ds2JuoBnC9K5BBn5Mkpo+Se+zwXO+kBQQK2ISK+Z/J833c4v27awPvkwTeLiGdi8BdF2/a4mzGrll8HDuPXXaaTmG8MX3I0XFJ8X7NnNykMHmT3sFmpFRHJXh078tn0bxx26lINJCCwmE69f3tOrQDqkZWvaJ9Zk6pZNZLuc9GrQmIvq1vNqAsWHhjL3ptv4ddsW1iYfokF0LAObt/Re+IuT4XT49UQQgM1sRhGC+tExPFvM8/hkiAsJ9RafC9CkpFPrJnTpncTvX83HbDYVCQSgB4OXB72HxaYPXBX24wW9XfLbF38qdyBIO5LOjrW7ia8VS/1WRaWNVVVlxqd/MOPTP3DmOr0OYIVRTArtewTm/WoLsXHnWzfy8f1fFplajogN5+q7rwjoGC27NSMiJhxHjrNIodlis/Dy9Keo16JsapmBINVD+vCVcykosYiwEWDvjQjXVVMFIG0XI/OmgpaOsF0Gtkt0D2JA5ozTFTALOm9kDpCLTH8EEf9rcBZtMX5SBfThNEBmf5pvVlPwHSxQCn0ZGdIbUYEGLmcrQROdCxaVJToH+kRyam4u106e4JPDtygKQ1u14YVLLgP09NCkjf+yeN9eakVGckubdjSLL/mOzuFx88fOHRzKyqJ19RpcUDsp4Bz5T5s28OSffxi+Zsl/AmkUG8f5NWuVqxf9vlkzmLXD178hxm5n1R338OcPi/nwni/8GrSXhBAwy/Gj3w6bkpBS8vmj45n+6R9YbGZUj0adZrV4bfbTRCfoJjKv3vA+y2es9gYhk9mEqqrevKDJbCIkws5na94O+O77f1e9wrr5m/C4C0lGh1j5YMkrJRa6NU3zGtMIRfB8vzc5svcYJpOCUASPfDGSiwcGnsaQUtMN4XMnAW6w90OEDvTbeaPfNffNv2su+C7bwXoByHTAjAi9HuzX+J2e1VIuB9Wo3mZFJPwVtEKsdrSL7s1cnOgvUOyX+F+XCEXETUGYGwVlXWcaJYnOnTNPBCdDptPJO8sWM2P7Njyaavgo79Y0Zu/Yzv6MDNrUqMHQlm24o8P53BGgt++utOMMnjIRR75YnM1spll8At9fOzAge8ukqCi/r4VbrQxtdaKIpknJsdwcwq02Qi0nd3c0b7exvHKaw8HBrCy69O3AByNPXqseIDYxpkxBAGDe94uY+cU83E63tzd/1797efWGD3h73gvs23qQZdNXFfE8UD0qVruFWo0TkZqkdfcWDH6iX8A6P0f2pvDvws1FggDo08KT3v6VZyY8ZLjf+oWbeO2GD8jN1v2TE5LiGDX1MRCCvKw8GratF9AQXWFkxpO6VHJBIde9BemYBbHfGl7IZc6X+TLNhW9oHOD668R7MjeCYwEi5gM/Jy3ppjGIN5TxsyD1hkITxFaIeArFnt9aq8QZBwLpAVE2d7JzjapAUAxV0xg0ZSJ70tNK7eQ5lpPD/JxdLN2/l6/WruHnwUOpFx3YF++h32dyPC/P++uT63az6egRPl+9kgc7dzXcx6WqfLNuDZM3b0DVJBZFMSwWj2h/IujP3bmD5xbMI8Ohi+Rd1agJr17WM+CAYOSKVkCOy0nt+ASenfgIrwx5D0VRUD1qQG5jtlArt79WXIMwcKZ98JuPp4HqUdm0dBtpRzPYtmKHoaexy+Gmfuu6/O87/yqc/ji67xgWm8Xn80lNcvC/w4b7HDt0nGf7vl5krQe3H+LRS0cxYd9nZSqQS/c23bKyiL6OAzwbwbUIbN19d3L9g3ExuPCB88D5F9K9CWExMCYK6Qc54yg6lCXAXE+fRg4SihILCXPQNBeQi1Ksw0iEDUemP0HRgTILWDtVmLn72c5ZPUdQFhbu3cPBzIyA2jkLLpH6/ICTVxcvDOgcx3Jz2X481eceyqmqTNls3FoopWTE9J/54J9l7EpLY29GOkjpMyfRq0Ej7u6o+/+sSz7Mg3NmcjQnB6eq4lJVft+xnYfnzAxonQDVQsMMtwsgKV+IrkvfDny6+i26XdeZDr3aYPZjRF+Y869sV65hqazjxq28ikmQk5FLfO1YjDJiFpu5REvJkqjborbhZLDZaqL1xcaCeXO/XeA1pS9ASnA73F5P4pPG9Q+Gd+AyF+n0U1w11cbYgaw4Hl3T3wARdgeYG+sDWwCE6oqcUe8FcNzyoyhWnyAAeiss4SPRZxLCAZs+oBb9fqWs62zgnH0i8Ggax/NyibaHFBGa23IshTy3cRG2YPDKqKNIk5IlJfTrF0aW8Bjt77W1yYdZffhQ0QlfKQmzWBjRrgMJYeH0atiY+ELF5U9XrcBpIEO9cO8ejmRnUz28dPGt5y65lAdm/1bkMwv0yeOCp4q/Ji3lndvH6PIZmoaqaigmxecCWJgl0/7hiye/5863bip1DUbUbpLIkb2+iuWqW6Vmw+rUbFid6IQonLmuIuswmf2rj5ZGZGwE/e67iulj5njrDooisIfZGfiIsfz4sYPHDZ+QVI+qTyfnM+/7RfzwylRSDx2nYdt63PHWTTTv0sR4IUosCLOBAbwFXOvR0u4G68WI0P7e1k4RNgLpXELpMgwWvx6/QgmFuCngWoR0/asL1NmvQijGNwuViRJ+NzL0JvBsByUBYQ5e0f1s5Jx8Ivhm3Ro6jB1D9/Ff0u7zT3hn2RKvmmjdqChCDPLWYRYL93Xqwie9r8biR2XUaD8jEkLDaBAd43N/ZjOZuLap8dTpuuTDhrMIOW43uW4PQ1u1KRIEAPZmpBuGFavJRHIxNVOZP1AHsGz/PoZOnUy3r8fy2/atDG/XAatiQhECBejTuAlv9tC7ZDJTs3jntjG48lw481y4nZ78bhiJ2WIynCAuYOr7xgY5geCv5VMCGceyUBSFd/4aRbPOjbDYzNhCrFSrE89rs54pl/b/HW/eyL2jb6POebWIrhbFJYO7MmbVm37NZNp2b0lIuLH+UosL9QGnaR/O5IORYzmw/RB52Q42LtnKEz1eYtvKHcaLsPdAV3Yvjhs863U10aw3kMf6IzXdkF5Y20HU6/k58xDAguGvv1DA5r8NVggFYeuOEvGAXpw+DYJAAUIJR1jbVwWBMnDOPRFM27LJx4rx63WrsSgKD3bpSs8GjXh18QKvXAPoQ1cOj4exq1diVhRUTfURprOZTAxu0SrgdXxwZR8GT5mIS9XI87gJs1ioFx3D3eefsHXOcbmYsGE9v+/8j1y322++PsRs/L+xY2Itdh1PxVPsCcatajSIiQX0yebXlixk6pZNOD0e6kXHcDAr05saK5gstppMaJrEpphYsHcPO9OO0zyhGv/MXGPoBCYl9L6jBwMe7sstje83XJ+majjznNhCTl6HPi/LuEvJYjWTk5FLTLUoqiXFM3rJq6QdSceZ56J63QTdhP5IOmlHMqjVuIbhuXeu38OaeRuIiAmja//zWTFrLb9/NR9N0+h1y6X0uqU7Vw0P7Kmia7/zSWpWiz2b9nsL1/YwG136dqBB67p43B6+fWGyYXvtV8/+yJtznvM5phB2XVsnbWS+abvILwQXFm7LA/UQMnc8Ily30FRCeiPtV4B6EJRIcG9Fpj+Ibk1Jvg3jmKBf3KVnPzLnK91RzNIYETai1M4e6VyGzBmvdw/ZL0OE3lhpBvLnAudcIPhoxd8+/fd5Hg9frl3N/Z0vwGY2M2XQUJ6aN8crTWE1mXB4PEX2U6TEajJhNZlwqxoXJtXhIT9FXiOaxMWz+LY7mfnfNg5lZtK6Rg26163vnTvIc7u5dtIP7M/MxKmWbLnnz1Xs7o6dmLF9CznuE4b3IWYzw9t1JCLfxP6u334tIna3Oz2tyDEKQkjB605NxelSeXjOLObceCuapvlNZ5mtZmo2rFFimqjwVPDJ0Llve2Z+PtdHwM1kNvH1MxMIiQjhytsvo3H7+mz5+z8cuU4kks8eHs/K39dhsZnRVI1bXhzsTetIKXl3+BgWTF6G6tEwW0y8f9fnuqF8fnrnv9W7WDx1Oa/M+J+3LVdKydYVOziw/RD1WiTRuH2DIut5b+GL/Prx7/z5w2LMVjNXj+xFz1v0+kj60Qw8BtLXALvW7/H7+YWlOSQs1Ien3NshcxSQW+xdTnDMhvATXspCmMBcR//B1gWqLQPPJsAM5mZBN16R7u3I44Pz01oe8GxG5s2G2C8RVsPORrScryBrNN60VvZWZN4UiPv1pLwFqvDPORcIjuRkG27P87hxejyEWCzUiojku2uvx+nxsPVYCkOn/eRzqdOAdjUSual1O5rGxdEwwEnfwoRbrX6fIqZu2cTBrNKDAICRAKaUklqRkfwy5EbeXbaEvw/uJzYklDvbd2TAeXpHyM7jqaw6fLBMYnd7M9JJycmhU+/2aPd84fO61W6l+2BdsbL74K7Mn+BrmN6+Z+siMw471u5m4U/LEIpC90FdadC6rs8+BQx7ZgCLp/5Ddlo2Lodb7xCSEpfDzaIpfyOEyD+nxGKzIKXEkeNEUQSqR/MWfce/MInEBtW5sH8nlvy8goU/LS/kk6D/27sKBTFHjpN/F27m34WbadO9BTkZOTzZ6xX2bt6PEAJNkzQ9vyGvznwae74vsy3ExqDH+zHIwNc4Ms7/XW2N+iUXtYUQYGkOIgzpT8JZlHzXLIQJLIEN1FUEMuv1/EG0AlQgD5n5AiLet4lBatmQ9T5FO5WcoB5F5k7wDsOVaS3OJfowmnoIrB0Q4fchzPXKfLwzmXMuEDSLi2fdkWSf7SFmCzf+/BNxIaHc2rY9XZPqYDObcaoqJsW428KtqvRu7KegV07+3L3T7+RwYULMFno0ODHeP23LJt5ZvoTk7GwSwyN4rGu3Ij7KblVl8uaN/LxlE5lOZ5kNw6WUmBRBTLUo7vt4OB/f9yWaJtFUDYvVTN+RPTmvc2MAnhh/H2lHMlg7f4P3EaNZ58bc+tIQprw3g8i4CPZs2s/0T37XL9BCMO3937jhf9cy7NmBhuePqR7NFxve5bfP/mDNvA2YzCY2Lt3qTb9IKb0X+8L6QmqxqOnIcTLxjZ+5sH8n/vjmL5+WVCMcOU7WLdhIm+4t+OTBr9m1fk8RQ5stf//H2Ce+5eq7ehGVEElsDf8txVa7lWvuvYLpY/4okh6yhVq5+YXrS10LgDDXRZrrguc/imr6hyBCy1aMDxqu1cbbPTuR0okQxVJ17o2657BPYdwJzr+gjIFAy50KmS/hfcpwHEY6/4S4aQhzYAq4ZxNBDQRCiCuB0eiVrXFSyjeKvf4+UKB/EApUk1JWnDmuAU91u4Rbf51apPtGAE7Vw9pkvRd86f69PNzlQka070jLatUNPYztJhO9GjYO2jqrhYX7tcQsINRs4aK6dflt+1bGrVlFhM3GjG1bcBTk97OzeGb+XACubdYcTUqGT/+Z1YcPBhRkSiIpKorYEL04fdXtl9P20pYsnLwct9PNBdd0pFHbE79MJpOJt+Y+T9qRdA5sP0z1egmMe+p7Hr/8RVSPismkFPMV0P2CJ7z+M5cMvpDajRMN1xAZG8HQpwcw9OkBvDt8TJHhsZMh9bCeDlP9qMQWxxpiJSouEiklf01c6pPacTvdzBjzB/O+W4zH5aHtZS15ZsKDhEUVzb3n5ThwO9wMf30YZquZXz6cjcvpJjo+kjvfvZnzr2wX8GcQ0Z8ij9+UbwKfXysIHazLMZ9OKBGgGdV3LPl/ir8/BmPfBAFK2Yr+Unog63WKdlBpuuR29ofnZNtp0AKB0AVKPgF6AgeAlUKI6fk+xQBIKR8u9P77gcC/+WWkU63afH/t9byzbAlbU1Owm82k5uYWGczK83h4d/lSBrVoRaTNxjMXdfcWkCW6h29ieESR6d2K5sbWbZmxfWuRgKUIQUJoGJfVa4AqNRLDw/l8zSqvkJ3At7vc4fHw7vIl9G96Hkv27WVN8qESg4BAdy4TgNlkwuF2GyYdMhwONCm9WkmJ9asz5Mn+JX6mmOrRxFSPZv6ExSyfvsp7B+xvNZqqsXz6Kq5/1Lg1szBh0WGltqwaoZgU2l6qyz23urg5K39fV+o+UpPMGf8XUz/4zW9+H/D6Faybv4FXh47mtZlPA3qn1du3j2HVHP1cifWr8dhX93DLi4NxZDsIjQwtgyyIlp9ycaJ/CxRQDWQZTjWhN0H2GIoOw9kgZKBxfcLcRJ+B8Oyi6FS0HRF2S9nWoCaDNBqu08BVOfI1pxsBBQIhxGrgK2CClDKttPfn0wnYIaXclX+MiUA/YLOf998AvBDgsctF+8SaTBgwCIAhUyeRnO1bN7CaFDYcTebCpLoMbdWGZvEJjF+/hqM5OfRs0IjBLVoRZi1boTMQWlWrzsuX9uCFBX+iCIGqadSMiOTLa66lTlQ0blXl/C8+LRIo/D07HMrKotFH72H2M4ks0AviqpR0qZ3ECxdfSkJYOMdycxgydZLXma0wOW43R7KzSYwwzkE785ws/WUlacnpNO/alGadGnkvbrO/nB9QCkZRREDDaQBX3HYpv332R6mOZT5IyfWPXQPAvq0H/b7NFmpDMQk0VUNqkh1rSjBML4bb6WHd/I2kHk4jtkY0T/Z6mT0b93kL3fu3HeLJK17hy43vGfoiB/QxUgfnawYVoIFzOjK3LSLM2BvhVCDC7kCq+yHvVxA2kC6wdUdEPmX8fiEgZhwy7U7w7ANh0p3GIp7yW1wuFSUavz4MQZyQPp0J9IlgMHAb+l39KuBr4A9ZcoK5FlBYAOQA0NnojUKIukB9YH6A66kwEkJDDe+kPZokxn5CZ719Yk3aJ9as1LUNOK8FfRo3YePRo0TYbDSJjfNeTLccS0H10y1khAS/3gUSePLCi7m1bVEd/0ibjWh7iGEg0KQk3E8g3L1xH49d+gJulwe304PZYqJN9xa8+PMTJ4TfAuSiAYZfGR/qt6zD3R/cypgHv8FsNeFxqwGlikwWE4umLKd+yzqk+PFADo0M4daXBlO3RR2eu/p1wwGxgqcRIYwlecxWM+lHMzh2IJUD2w/5dDt5XB6mfzqHEa/rF+2czFzmfP0XGxZvIalpTfqO7OV3/kFzbwGZavwBsz+FcgQCKSW41+laPpbm5RZwE8KEiHoVGf6wrh1kStLNakrax5SIiJ+B9OwALR3MzfXhtrKuQQlH2q/Kt8wsfEMSgggbWer++myGPKvaVwPqFZNS7pBSPgM0ASagPx3sFUK8KISIrYB1DAGmSCkNrxBCiDuFEKuEEKtSUnynScvDLW3aYy/Wh28SgloREZxXinpoaTg9HlYcPMC65MMl5vpLwm620LFmLZrGxRdJF4RZLOXO8xfG3/ruaNfBZ07BajJxab363hbUwkgpeWngO2SmZpOX5cDj8ujF1b828tvnulpqr5u7eztqimMLtWEPtWG1W3jg0zv8DmoZ0eeOnkw6NJbHv76X/vdd6XeQqzBup4c/f1gMQMdebbCG+AY3j8vDpTd0w2ozY7EZ3zvF1ojm0iEXct4FTYq4ohUgpSSpaU2S96QUcT0rfI79Ww8BcDw5jeHNH+KrZ35kybR/mPLuDIa3eIhN859HS+mJduxaZN7PJwr9nv/8f0BZdrtLqaUhU/sh025DZr6APHYdWtpdSFm2WkxhhCkeYT2/1CBQZB9zI4S1Y7mCgPdYUS+DvSdg1SUzRJhuZWn3P0wn1UNoqcOQRzshj3ZGOzYQ6dlV7rWcDgRcIxBCtEZ/KugNTAV+ALqh38UbiYYfBAqP+NXO32bEEOBeP68hpRwLjAVdhjrQNQdCx5q1ePqi7ry2eAFmRcGjaSRFRvFlv+vKJd88d+cOHp07G9AvAmFWK+OuvpaW1cqmc1Mcm8nst+PHoiioUmISIiAHM5vJ5FeEbmDzluw4fpxv/12L1WTCpWp0SKzJWz2MfQQO7Uwm5YDv3akz18V3L/7E/AlLqNsiicYd6vPf2j04sh1Y7RYUReHRr+4hJz0HIQQXXNORmOon3zcQHh1Gt2s706JrU375aHZA+7idHqa+/xvV6iYQERtGZorm7QKyhVpp36M1rw0bjSPb6W0tLYwQcF6XJjw94SFSDqRyV9vHyM3M8xaf7aE2Rrw+FKvdSsO29fAYFKVtIVZadtMnjb9+9kfSj2Z693e7PLhdHt4duY5xi3QZE5kxClwbEFHPg6WD/w9nKvtTrMx4Gjw7KFLFcS5DZn+OiDAeEjxTEMKOiH4PqWXoBXZTbb8S3gBSuvT0m5aCtzPLswGZOgQS5p/x8wwB+RHk1wjSgS+BqVKe6OUSQkyTUl5nsI8Z2A5cjh4AVgJDpZSbir2vGfA7UL+UVBMQPD+CXLebjUePEG230yTu5LsRth5L4c0li1idfIhom53DWZk+WchIq5V/RtyNzc8k8MmwPvkww37+iVy3b5qiaVw8s4fdwiNzZjFj+1ZDbaTC2Ewmltx2p18THIC0vDy2px4jMSKCOlH+L9D7tx3kno5PllgDMJkVLDYLt782jOPJacQkRHHp0G7EVPMvrV0Wprw3g2+en4jb4UbTJEIRRcxgQL+ImyxmvThuMxMWFcYFV3dg7fyNRMaGgxDsWr/H+3mEIkBSJAjbQq28Ne8FrzZQyoFUfnx9GmvmbSC+ViyDn+hXpAPo5cHv8c9vq731DJNZITIugq+2jCY8OoyB1YeTkZLp83nMVo0JqzcTFVfwzbIiEuYhTDXQjl2bPxhW5NNB9NgTcs0ngZQO5JH2GJbylWoo1XznQs5mpGMOMuOpYjMQAKGIyKcRoYNOybpOhorwI7i+oOhb6KD1pZS7jYIAgJTSI4S4D5iD3j76lZRykxDiJWCVlHJ6/luHABMDCQLBJNRioVOt2mXad1facfpP/B5X/t13tsv40Tnb7eavPbu5slH5204bxcYZpnMsikK3Ovog1t0dOzPrv20+gnGgO5gJ9JTQWz2uLDEIAMSEhNC5dukaLrWb1CQyLqLEQKB6NFSPkz++mc+nq98u9ZhlZeAjV5PYsAY/vj4NR46TTr3bMXf8Apx5LjwuFU1V0VTp7fxxuzw4c10c3nWEr7eMZvvqnTxyyQtF+vtlfkAxm02YbRbMFhP3fzKiiEBcQu04HvjkDr/revqHB/np3RnM+GwOjhwnXfp04LZXbyA8Wm8vtYfaMEzoSLDYCv0/F1ZdpsFUAxH7HTLtHnCvzH/RAhHPlCkI6OcqIe3o09N/ZiK1THDMQHoO6FpMtsvQ718NUA/4+dy5SHVfQLqupzOBBoIpQHFH8ClACc+kIKWcBcwqtu35Yj+PCnANFcahrEy+WruadUeSaRIbx4j2Hb3aO2Vh1II/vUGgJDQp2Xg0uUICQZjVykOduzL6n2XeWoFZUYiw2bizvW6Ok+fRh7MKowjBRXXqcln9hlgUhR4NGpUaBE4GIQTPTHyYp654Gc2jldjFs3PdXn2OwCCnXhH88e0CRt/9BZpHRfVoJO8+yiWDLqBz7/akHkpj/AuTyMkoWgjXVI21f27E5XCxbv5GHxMa0INB/4evoveIHtRsWOOk128ymxjyZH+/7bZ9R/bi+5d/KpKGMps12l2cTWh44e+ZBoqeahRKOCLuW6R2HLQ0MNUpl0WjUMKR5obg2VZ89WAru/Xp6YJ0b9bnLqQHyEPmhYKpDsT+aKy1ZG6eP9hW7PsgQhGWlpWy5mBSYiDIT9u0AKKEEIXv/COB0itxpwlSSlYeOsjRnGyi7XbumTUDp8eDW9NYn3yYX7dtYXz/gXSsWatMx1916FDA7y1emC4Pd3Y4nwYxMYxds4qUnBwurluPezp2JiFM/yJ/tmoF7mIdOqqULD+wnzd7XOl9X0XTvEsTvt81hvkTlnDsYCq/jpmDw8DK0mw1G5rHBIoj18m87xaxfsFGqtdLoO9dvahRT2//y0rLZvTIL3A5TlxMnblOFv20nMuHXczFAy/g2xcn+zmyRNMkkXERWKxm1GIdPla7hep1qpHUtGzfl9K4/tGr2b56Z76gnwmpqSTWyeSxD/YVepcJlEQfeQihxOoy1QEitex8g3gT2Lp6ZasBRNTr+RdLN7owXQgoYYiIR8v1+U4HZPoj+T7HBRtywbMLmTMWEfGw7w7WLmBqlB8YC54MLKDUAFvZZM1PJ0q7KjUF+gLRQOGpnizA/7PvacSF1AToAAAgAElEQVThrCyG/TyZozk5CPRhscIpFVVK8jwenpk/lzk33lq2kwT4XGgSgjY1jKdky0qPBo3o0aBoS19ydhZ70tPZfvyY4WyBBAb+9CNhVitDWrRiaKs2mA06WcpDZFwE/e/Xp1oX/rScZINAEBJhL3NBPistm3vPf4q0I+k4cpyYrSZ+/eh3Xp7xFG0vbcmqOesxWZSic0vo8hALJi6h/eWtqNciiY1LtvocO7paFPZQGxcN6MyYh7/2eV0xKXQfErjA4MliMpt4fvKj7N92kB1r91C9XgLN2h6EzKf1C5ZUwdISET26XA0NWt5MyPif7m2gb4HoDxG2iwH0O934ObovsrpDN3sJGXDGF0alekRP9fjggrzpYBAIhBC64mvOJ5D3i/7/wN4HEfFguZ68ThdKDARSyl+BX4UQF0gpl1fSmiqU+2bPYH9GRqkF051px3F43AH5BRenY2Itluwv3ZRGk5J2NYI3i+BSVR6fO5s/du7AajL5rVW4VJX9mXoW+s2li1i8bw9fXH1t0NZl1EUEkHksq8ypoYlv/ELKgVRvft/jUvG4VN685SMm7P3MUBob9F9oU/6QWsp+47mBzOPZqB6VsKgwnpnwEC8OfMerV2S2mHjsq3uITqjYwrYRSU1rFXrqaIK0LQF1ry4XbSpf95lUD0LGU4CzyBCNTLsfqi1E5DuBCVO1M75DyJcSvm/C/2tCCUVEPA4RjwdhTaeWEm8DhRBP5P/nUCHEh8X/VML6ysWR7Gw2pxwtNQiAnl/3ZzhTGqO6X4bNVPq+ihAs2BO8vuP3li9l7q6d+daZroDsxPM8Hpbt38e/BkJ8FYXZz4VeMSllTg0tnvq3obxD1vFsDu86Qscr2qKpvv8C1hArPW7UC6iZqcZKtJpHw5HrRPWofPrIeNRCshWapjH28e9wGVhWVjSappGVlu1tIxXChDA38AYBKR1Ix19Ixx9eA5pAkXm/gZF4iAAcc8u58tMbYYrXLTd9Ln92CDEWOTzbKe23cEv+36uA1QZ/TmvyPO6AsjY2k4lrmzX3egGcLA1iYvl58DC6161PhNXq1yhGlZJ9GWUf8CmNCRvXF5GcCBRVSlYfDrzOcdL4SV+UI6uBzc9AmqZJbKE2QiNCeG7Sw9hCrNjD9AE1q93CgIf70KJrU0BXQDUirlYMoREhrJi9luPJaWieQoFAlWQdz2bpz8a+vhXF3O8WMqTWnQxKvIP+sbfy1bMTikxkS+cy5NELkBmPIjOeQh69AC13eglHLIbMwbA1VKr5JjdnNyL6A13QToQBFhAhYGmLCLv9VC/tlFBaamhG/t/jK2c5FUudqGgfd67CRFituFSNrklJPH9x+TohmsUn8FU/vZ5++6/TWLDXWItGKc/VrxSMZgoCwaIoVA9S4RjwKwSnqbpsdVlSQ/3uvZLPHh1fpLVTMSk0aluPuERd9rlznw5M2P8ZS39egSPHyflXteXvGau5PnEEWalZJDaogdVuwe3yeOcLbKFW7vtwOEII9m4+YChTkZftYM+m/T7bK4q/f1vN6LvHFvFFmPbBLKQqGf76MKSWhUy/G2Qx/+HMZ5DWtogC45kSELbuuuOXj4exAraLKuaDnMYIc13d2Mc5H9TDetHd0r5cNZczmdK6hmbgX8sMKeU1Fb6iCuRYbo6hhDRA9bAw3ul1FXUio0mKqth8b4uEaizcu9vnH86iKNSNDp7Kdutq1Q29FkpCF5wzc3n9hqW+t6y0uLAp6+Zv9NneoE3dMreO9r7jcjYt38aiycv0YwiIqRbFs5MeKfK+yNgIr63k18/+yNQPZnqDx4Hth7DaLbS9tCXJu49Qq3Eiw54dSMt8L+E6zWphDbH62GKGhNupe15wOoYAvh01yWeC2Znr5JePZ3Pzi4Mwq/NAGl2wVGTedETEfaWfxNIO7FeA84/8JwAB2CF0CMLcoLS9y4XUMpF5U/UZCHMTRMgghOnkjZ3KixBWsBtPyJ9rlNY19E6lrCJIHMjM9BvF0hwOLkzy74BVHga1aMW4tat8nL9CLBYuqxe8X7IXL+3BDVMn4fJ48EiJWQjMJhOtEqqzNTWFmJAQrmjYmN+2bSXd6UACtSIiGdP7mgqZdvbHPe/fyoPdnsPlcKG6VRSTomsJfTKizMdUFIUnv7mPG58dwLYVO4irFUuri84z1PEBvdW0cBAowOVwY7Ga+XbHJz77dO7TnuiEKFx5bm+e3mRWCIsOo9uALmVee2kk7zXW09JUjey0HKLDczDM76OCDKxWIISAqDfB1QeZNwOECWG/FmEL3ucCXa9Hpg4ALQe9pWseMmccxE5EWILn71FFyZSWGlpYWQsJBpEGomgFBFLcLStJUVF8cEUfHps7GyEEUkpCLVbGXXNtUC+4rapVZ+YNN/PFmpVsTjlKi2rVGdGuo89TyFMXXszu9DTMilKiXERFUb9VXcauf4cp781g28qdNGhdh+sfvYbaTcrfQVWrUSK1GpXeknvs4HEUP05zuzfsM9xuMpsYvexVPr7/S5b9uhKpSTr3bc/9Hw3Hagtey2DDNvUMn6CsIVYi4yNAXgxZb/ruKEIQ9sB72oUQYLsEYSvj9HEZkJmv6wNv3kDmBOlCZj6LiJtUaeuooiilpYYmSykHCSE2UDRFJAAppaw8s9MyUC86hjCLhRyD3PkVhdzFPJrGHzv/48/du4gPCWVwy1blmjQGuKJRY7rXq8/a5MPYTCba1EgMan2ggLrR0bxymX8FRdAvAOX9fCdLjXrVuO/D4ZV6zsLE1YzxW6uo28JXWiQvOw+z1UxMtSiem/SIV1uoMnLIt786lMcvH1UkPWQLtXHbKzdgMpmAOsjQWyD3O/S7aqkraFq7g6WMGv2VhWsRvk8zEtzrkdJVovBbFcGjRNE5IUSilPJwvl+AD1LK0pvnK5iTFZ2buX0bj86djSs/TaMIQbTNxqxht1AtLByXqjJs2mS2HEsh1+32plPe6nEFfZs0C9bHqOIUMPaJ75g+Zo6PN3BhwbhNy7bx/p2fcWD7IRRF4ZLBXXngkxGEhIf4O2xQ2Lx8G+Oe+oGd6/cQXyuWm18YxCWDig6xSdcKPdcu3Qj71frdvZHL12mEduR8P9LYFkT19f61fqooNyWJzgWkPpp/kBrormMSWCmlDF7jeQmURX10/ZFkxq1ZxYHMDC5MqsOtbTsQn6+v8+OG9byyeIGPtn+oxcKqO+4u04BZFSdPekoGnz78jd6WKQQXD+zCyHdvITKuZPMPj9vDkb0pRMVHekXb/KFpGhPf+Jkp784gKy2HOs1rc+8Ht9G+h/5ge+C/w9zd/vEignkWm4WW3Zrx1tzn/R22ipNAy3wDcn+gqCGMBexXoES/d6qWdU5Q7kAghBgBPI/uPSCAS4CXpJRfVeRCA6GiZaiHTZvM8gO+rYDhViuf9+nHBUmlt+JVUT7cLje3n/cQKftTvUVZs8VEjfrVGLfxfb+dRTO/mMsXT3yPmi8q1+26zjzyxUi/pjeFkVL6pHk+um8cM8fO8zGxt4VY+Wzt2xVS0zjXkdKBTLsLXOtODJKY6iFixyOU4E9rn8tUhAz140A7KXU/PCFEHLAM3ansjCbUYpyTlFIS4sespSxIKZm+fSvfrl9LjttN70ZNuL1dB792j+cSy35dRUZKZpELsMetkno4jX9mraHrNef77LNi9lo+ffibInn0pT//g5SSZyY8VOo5jXL9ezbt9wkCoIvjHd51pCoQVABC2BGx45HuzbqAm6k+WNqcs/37pwuBBoJUdKG5ArLyt53xDG3VmmX79+mSzYWIsNpoXT1wG73SGLVwPlM2b/SmoPampzFj+1Zm3HDjGZ9+klKyYvZaZo/7E6fDxeVDL+LSIReWOiOgqipH9x5j+6qd5BmI0jlzXezddMAwEEx4bZpPr73L4WbpzyvISssmIubkhdGaX9CELX9v9+oKFeB2uqnXsurJsCIRluZgaX6ql1FFPqV1DRVM5+wA/hFC/IpeI+gH/BvktVUK3evW56bWbRm/fg0mRUFBYDGZ+LLfdRXW5XMwM5PJmzYUmStwqiqHsrL4ddtWBrdoVSHnOVV8/th4Zo6d582tb1y8hXnfL+K1WU/77etfPO0fRt89FkeOE4/L4zV/L4wt1ErtpsZ34cf8CNmZLCYyUjLLFAj639+b3z6bi8etFpk0vmjgBSTUrvyBpyqqqCxKeyIoqNTtzP9TwK/BWU5wyHI6mfXfNpJzsmlXoybd6tT1XuSFEDzV7WJuatOWFQcOEGW3c1GdulgqcM5gTfIhzIriM2CW53GzcO/uMzoQHNqZzIxP/8DlOPFE5chxsmnZNlbNWU+nq9r57LNt1U7evPlDQ//fAkxmE5GxEVxwtbH3UYtuzUg5kOoTPBRFUL1eQpk+S1xiDB+veJ0vnvyetfM2EBIRQv/7ruT6x07rAfoqqig3pQ2UvVhZCwkWm1OOcsPUyaiaRq7HTajFQrO4eH64blCR4a5aEZFce15wHlUTQo27WcyKQq2IyKCcs7JY++cGhMFdvyPbwd+/rTIMBFPem4Erz3e2Q1EECD04d+nbgQfGjMBsMf6K3vzC9fw9YxWOHKc3GNhCbQx/fRgWa9lTbbUaJTJq6tknM1xFFSURUI1ACJEAPIHuVuZ1JpNSXlbKflcCo9EFwMdJKd8weM8gYBR6ymm9lHJooIsvDSkl98/+jSzXiVa1XLebzSkpfLl2Nfec37miTlUinWrVJtoe4mOKY1YUhrZqUylrCBbhMeEoJt8Umtli8tv6mbzrCEbdaiHhdl785QlaXdzcb0qpgFqNEhmz6k2+HfUTGxZvJqF2HDf87zq69C3RPbWKKqowINBi8Q/AJHS3spHALYCxIEo+QggT8AnQEzgArBRCTJdSbi70nsbA/4ALpZRpQohqJ/8R/HMwK5PD2Vk+2x2qh2lbN1VaIFCEYMJ1g7jrt1/Yk5GOSeh1iHd6XkX96JhKWYM/NE3jzWWLmbjxX1yqSrsaNXm755XUigzsSaVzn/aGF22T2cQVtxorura5tAU71+3BXcxPwO3y0KBNvVKDQAG1GiXyv+8fCOi9VVRRhX8CDQRxUsovhRAP5usPLRRCrCxln07ADinlLgAhxET0IvPmQu+5A/hESpkGIKU8enLLLxmBQNWM5yQCnKOrMJKiopg17Bb2pqeT63HTODauwu0hy8LAn34solj698H9XPrtlyy97Q4SwkovuNpDbbz++7M8d/UbuJ1uELo42uNf30tiA2MXrQEP9WX2l/PR0nNQ87X+7WE2rn2gd5mKvFVUUUX5CDQQFCR0Dwsh+gCHgNLEamoBhSe1DgDFb8GbAAghlqKnj0ZJKX8PcE2lUjMiAn8q2pUhtmZEMGWoT5atKSmGstUeTWPUwvl80juwIul5nRsz6dBYNi/fjtvppsWFTbGF+B/qiqkezWdr3ua7l35i1Zx1RMVHMPCRa7hsaLcyf5Yqqqii7AQaCF4RQkQBjwIfAZGAr8Nz2c7fGOgO1AYWCSFaSSnTC79JCHEncCdAnTqB93MfzMr0O6iyLyPdcPu5xG//+Rq3F/D3ASNzb/+YzCZaXXRewO9PqB3HI2NHntQ5qqiiiuAQUCCQUv6W/58ZQKBWXgeBpEI/187fVpgDwD9SSjewWwixHT0wFEk7SSnHAmNBl5gI8PwIhN9ZgMpQAj3dKempKDak7CJrUkp+/nAWk9+ZTlZqFk06NmTke7fStGPJ5jcZxzJZMWstCL32EBlbss5QFacHUkrQjoCwIZRTW/OqomwElKQWQjQRQvwphNiY/3NrIcSzpey2EmgshKgvdG3ZIUBxU9Vf0J8GEELEo6eKKszdvVZkpGF7pt1sZuB5LSrqNGcsA89r4bdO8XCXC8t83HFPfc9Xz/xI6sHjuBxuNi7ZymPdXyjR3vGPbxcwtM5IPrpvHB/dO46hSSP5a9LSMq/hZJBS4nK4DDuZqigZ6VqFPNYDmdITebQbWuqNSLVCS31VVAKBViu/QO/ucQNIKf9Fv7D7RUrpAe4D5gBbgMlSyk1CiJeEEAXJ5zlAqhBiM/AX8HiBnlFF8dFVfYmy2Qi1WFCEINRioXX1Gtzatn1FnuaMRFEUJg4Y7GPSc3vb9vRu3KRMx8zNyuOXj343cAJz8cMrUwz3ObovhdEjx+JyuMnLdpCX7cCZ5+Kd28aQejitTOsIlD8nLOaGpLu4OvxGrou/jUlv/1oVEAJEqoeQacNB3Y+uJuoG92rk8Zuq/g3PMAKtEYRKKVcUy7d7/L25ACnlLGBWsW3PF/pvCTyS/ycoNItPYOntdzF7x3aSs7NpXyORLrWTqkSu8mmfWJMt9z7Esv37SMnJpmeDRoSWQwgvefdRzFYTrmLSQZom+W+N8cPewsnLvZIORRCweOrf9L/vqjKvpySW/bqS9+/8zDvhnJ2Ww/cv/QRSMviJ/kE559mEzJ0IsvhlQNXTRO5VYPXViKri9CTQQHBMCNGQ/BYcIcRA4HDQVlXBhFosDKhKBZVI1wqS205IivMRbQNdcbjOeb5OYAAupxuPgeqn6lFxO3wnkCuKr5/70UfmwpHj5MfXf2bgo1fnu4FV4Rd1LycaCgsjQK1cuxIpXeD4A+n6B0y1ECHXIUwVOpZ0VhNoauhe4HOgmRDiIPAQcHfQVlXFGUtETDg9b7oYW2jRpwpriJVhzwww3Kdz7/aGgx2aR6NTn+Cl8JL3GM9EOnOdOAzUUKsohqUTYNBUID1gaVlpy5BaNjL1OmTGs5A3CbI/Rh7rhXRVnG/J2U5AgUBKuUtK2QNIAJpJKbtJKfcEdWVVBIRbVflz904mb9rA7vTg5tMD5f5PRtDv3iuxh9kQiqB2k0Re/PkJmp7fyPD9qYfTUAwkq01mhdRDwftMdZoZK5uGRYUSEnHiApednsP8CYuZ9/0iMlN9J9XPVURIf1BigMLaTnaw90CY61faOmTOV+DZC+Tmb3GBzEWmP1JVqwiQQLWGXgPeKujvF0LEAI9KKUvrHKoiiOw4nsoNUyfj9HhQpUSTGv2bNue1y3ue0hqI2WLmjjdvYvjrw/C4Vay2kkXgtq3Yger2TQ1pmmT7yh20vzw46qzDX7+R5695A2deMZP4V2/wylwsmrKcN2/5GJNJ/1n1qDz42Z30url7UNZ0JiGUMIifhsz+BBxzQdghdBgi9MbKXYhjJkWtL/PRMvT0lble5a7nDCTQ1NBVhYe88iUhegdnSVUEgpSSO2f8wvG8XLLdLvI8bpyqyoztW5m+3f+gWGWiKEqpQQD0uoI9zHcS2RZiJSEpPhhLA6D95a148ZcnaNimHla7hZqNavDI2Lvoc0dPANKOpPPmLR/jynN5u5lcDjejR47lyN4SpbbOGYQSixL5HEq1RSgJf6CE3YIuM1aZi/DX3KCV8FoVhQk0EJiEEN7fVCFECFC6MWwVQWPH8eMcycnxEdDI9bj5YcP6U7KmsnLJoK6YrWYKP8QIIbDYLXS7rlNQz92hZxs+W/s2M3MnMH77R1w29CLva4un/oPRc5WmSRZOXhbUdVVxEtj83JMqsQhTlb1oIAQaCH4A/hRCDBdCDAfmAuODt6wqSsOpevxORzs8weu0CQahESG8t/Al6raog8VmwWKz0KB1Xd5f9HKJmkXBxuVwoWmaz3bNo+J0+DfVAUhPyWDF7LXsWLu7Kk8dbNTDYBSytSx00YIqSiNQiYk3hRD/Apfnb3pZSjkneMuqojSaxSdgMSk+3Xt2s5lrmgSu+XO6UL9lHb74911SD6chBMTWOPVSBZ37tOfr5yb6bLfYLVzQt6PhPlJKvnpmAtM+mInFZkH1qNSoX5035jxLXOKp/0xnJe6lGIpLCi2/RmDcpFDFCQLWQZZSzpZSPpb/pyoInGLMisL7vXoTYjZjUfScbKjFQqPYOG5sfeaa3cQlxpwWQQAgqWktBjzUB1uo3v0khMAeauOq4ZfTqJ1xV8ziqX/zy0ezcTnc5GTk4shxsm/LAV4c8HYlr/4cQvHjJy09IE6P79LpTqBdQ9cBbwLV0J/BBPpg8Jnts3iGc0m9+sy58VYmb9rIkZxsLqpTlysaNq5Qv+WKYvvqnYx/YTK7/91LUrOa3PTCIFpe2OxUL6tUbn91KBdccz5//rAITZNcNuRCWpSw7qkfzMSRU7SDRVM1dq7bw9F9KVSrUzY/5bIgtRxk3m/g2QLmpoiQqxHK2ef3IMKGI9OfAPIKbbWAtTPC5CdIVFGEQCeL3wKullJuCeZiqjh5akdG8cgFZReIqww2Lt3KU1e8givPiZSQciCVTUu38cLUxzj/Sl9P49ON8zo35rzOjQN6b3ZatuF2k8VEdnou1SpmgLtUpHoYmToAtBz0C2QIMns0xE1BmI0nvM9UhP0KZPhuyB4DwgzSDZa2iOj3TvXSzhgCDQRHqoJAUaSUrEk+xJ70dJrExdOqmrEbV0Wfc+n+fUzdshGPJunXtBmX1W942ktqf/boeB8ROmeei08e/Jpvtp3+geBk6NrvfA7vPOJjw2kym6jbvPIuwDLzJdCOAwXF7jyQTmTmKETsuEpbR2WhhI9Eht4Inv9ASTjrgl2wCTQQrBJCTEKXjfb+RksppwVlVac5mU4Hw6b95J3klVLSqnoNvr7mOkIspffNl5VXFy/gx40byMvvCvprzy4uq9eA0Vf2Oa1F9Hat32O4/dCOw6geFZPBVPGZyvWPXcP8CUtIT8nEledCUfQ22Ic+u6tyP6dzESeCQAEauJYipTytvy9lRSjhYD27biwqi0ADQST6/HavQtskcE4Gguf/+pPtqcdwF2otXJ98mHeWL+G5iwP17Tk5dqUd54cN/+JUT9xp5rrd/Ll7F6sOH+T8mqfvHVBkfCSpB4/7bA+JCEExnXrf5ookMjaCsevfYebYeayas45qdeLp/0BvGrWtPMkFHRPGgnBnT9AtCSldyNzJ4JgBwo4IvQFsV5yVAbAiCLR99LZgL+RMQZOS2Tu2FwkCAE5VZeqWTUELBIv27sGoRS7P4+av3btO60Aw5Mn+jHvqhyLpIVuojese6ntW/mKGRYUx6PF+DHq836lbREgfyJtO0WBgAfvZfzGU0oM8fiO4t1FQQJaudRDyNyJq1Cld2+lKoF1DdmA40AKwF2yXUt4epHWdtmhSovoZEHKpvno5FUWY1YpJUaDYOSyKQrj19B7y7nfvlWQcy+Snd2agKAJN1eh7Zw9ufM5YjbSs5GTkMPHNX1j403Jsdit97+5F37t6npNy0iLif0j3Zr2PXqogTGCqjYh8vvSdz3Sc88CznaJdRHmQNxUZdhvCXLdchy8YEDybAmqgqaHvgK3AFcBLwDB017FzDrOi0L5GTVYfPljk/lxBcEndekE77xUNGzFqwXyf7SZFoV/T03uATAjBLaMGM+TJ/qQcOE5czRhCwuyl73gSuBwu7uvyNEf2pOB26nfBXzzxPRsXb+GZHx+u0HOdCQglEuJ+AdcKvYBqbqi3U4qzKxVnhHQuAZlr8IoCrpVQxkAgtePIjFF6oEEibRcjIl9EmGqUZ7mnBYF+KxpJKZ8DcqSU44E+QOfgLev05rXLexJhs2E363E0xGwmJsTOs0FKCwFE2ux83rcf4Var90+I2cw7Pa+kVuSZMc5hC7FRu3FihQcBgL8mLuXYgVRvEADdV2D59FXs23ow4OO4XW7mfb+Ilwa+w+h7xrLTT6H7TEAIgbB1RoTdiLBdcE4EASB/wMygaUMo+bLZJ4+UKjJ1SH4Q8AAqOBciUwci5ZnvXRHoE0HBb1e6EKIlkIw+XHZO0ig2jvk3385PmzayNfUYratXZ8B5LYm0BTdF061OXVaOuJvlB/ajahpdaicRVg5bybOJdX9t9BnkAhCKYMvf26nTrFapx3A53Tx6yfPs2bQfR44TxaQwd/xC7vt4OFfedlkwll1FEBAhA5E5X+NbLLeC7SKjXUrHuQi0FIo69Gogs8HxO4Sc2damgQaCsfkeBM8C04Fw4LnSdhJCXAmMRm9VGCelfKPY67cCbwMFt2wfSynPiCbn2JBQ7uoYXGVMI2xmM93rVXYHyulPjfrVsNjMPjaZQhHE14oN6Bhzxy9g98b93qK2pmo481x8fP9XXDKoa1CeZKqoeIQ5CaJHIzMeQ2+w0EBEI2I+R5RVllrdBdLA80DmIt3/IQyM2s4kSgwEQojCpvIFnUOf5P8dVsq+pvz39gQOACuFENOllJuLvXWSlPK+wJd8+uBWVTKdTqLtdr2QW8Upo/eIHkx5d0aRQKAogojYcNpeFpht4sKflvsMvoHulLZ52TY69DxzNZzONYT9UrD9De6NIGxgPq98xV1zI/04spgftwhFWJqWb7GnAaU9EUTk/90UOB/9aQDgamBFKft2AnZIKXcBCCEmAv2A4oHgjENKyUcr/uaLNStxaxp2k5kHu3TltrbB89etomQSasfx6syneeOmD8lMzUJTJQ1a1+G5yY8G3DUUHm18byOlLGJdWcWZgRCWihsws3YDpYbeheVND5lARIH9ioo5xymkxEAgpXwRQAixCGgvpczK/3kUMLOUY9cC9hf6+QDGBeYBQoiLge3Aw1LK/cXfIIS4E7gToE6dShJrKYHPV6/k89UryPPoXwiXqvLOssVEWK0MbF55pt1G7E1PZ9zaVWxKOUqLhGqMaNeRutHRp3RNlUXri5vzw55PSd59FIvdQnzNwFJCBfQd2YuVs9fiKPZUEB4VRrNOVVLG5zJCmCDuR2Tma3pNAA1slyEin6WQZ9cZS6D5jOpAYScOV/628jIDqCelbE0JZjdSyrFSyo5Syo4JCZWn3uhnLXxWKAgUkOfx8OGKv0/RqnQ2Hj1Cnx+/ZdLGf1mXfJhJG/+lz4/fsvHokVO6rspECEFig+onHQRAt64c/GQ/LHYLoREhhEaEEFM9mtdmP+P1MK7i3EUo0SjRb6HU+BelxkaUmKyH6lIAABJdSURBVA8RprOjZybQYvG3wAohxM/5P/cHvilln4NAUqGfa3OiKAyAlDK10I/j0FVOT2vcmkaW06BoBBzNMVaerCxeWPAnue4TnRIeKfG43Yxa8CdTBg09hSurHHIyc/np3RksnLQMW4iVq+/uxVUjLj+pi/iNz11Pnzt78u+iLUTEhNGme4tyawTl5TiY+t4M5v+4FLPFRJ87e9D3rl5nlcZSFWc2gUpMvCqEmA0U9F7dJqVcW8puK4HGQoj66AFgCFDkaiSESJRSHs7/8RpO0yE1l6rywd/L+GHDOnLcbsyK4iMxAXpb6alk/ZFkw+3r/Gw/m3A5XDxwwdMc3n0Ut0MPhp8+Mp5/F2/hf989cFLHioyPoF7LJMKjw8p9sfa4PTx80XPs33oQV/66vnjyB9bO38ioqY+X69hVVFFRBPpEgJRyDbDmJN7vEULcB8xBbx/9Skq5SQjxErBKSjkdeEAIcQ169eU4cOvJLL6yeHzu78zdtQNHfjpIM5CYsJvNPN3tkspeWhFCLRayXb5eumFBVEQtTF6OA03VCIsMrZTzFWbh5OUc3XfMGwRAHyhbMu0f9j97kKSmpc8RACz5+R/ev+tzXA43qkelWafGPDf5EWKqRZVpXUt/WcmhHcneIFCwrlVz1rFj3e5TIEZXRRW+BDXxKaWcJaVsIqVsKKV8NX/b8/lBACnl/6SULaSUbaSUl0optwZzPWUhOTuLP3b+5w0CBShCEGsPIdJmo0NiTb7pN4CuSae2kH1Dy9beaecC7GYzw1q1Dep5Uw+n8b8rX+Ha2FsZEH8793R8gt0b9gb1nMVZM3+D4UCZogg2L98e0DF2rNutdx0dy8KR7cDtcLN5+TaevurVMq/r30WbyMs2mDyVsCXAdVVRRbAJ+IngXGVPejpWkxlnMbE3TUrqREUxbfCwU7QyXx69oBuHs7KYu2sHVpMJl6rSs0FDHurSNWjnVFWVRy5+jiN7U1A9errsvzW7efiS5/l2x8dExkaUcoSKoXrdBCxWs48hjKIoxAVYOP7lw1lFnigAVLfK/m2H2PXvXhq0PnmNmoSkeKx2S5EnAtCNagJdVxVVBJuqVohSqBcdXcQDoACzEDRPOL06BqwmEx9e1Zf5Nw/nsz79mH/zcEZf2RdrENU31/65kbSjGd4gUIDH6eGP8QuCdt7i9B5xOSZL0c+pKIKw6FDaXR5YS2/ynhQ0zTftZ7aYSD3k66cQCL1uvsSnziCEwBZq4/yrgvukVkUVgVIVCEqhRngEVzRs5JNysZrNjGjf8RStqmQSIyK4IKkOiRHBvxs/vOsImse3cO7Mc3Fg22GDPYJDtaR4Xp7+FHE1Y7CH2bDaLTRoU493F7wY8EBZ+56tsdp9JQjcTjeNOzQo07pia8Tw2uxnSEiKxx5qwxpipV7LJN5b+CIWa+XUbqqoojTOidSQ0+Phrz27OZKTRbsaNWld/eRkY9/ueRXv/72UCRvWk+N206Z6DUZ1v5x60WVTMjybaNSuPkLxHd23h9k4r0tghu8VRdtLWzJh32cc2pGM1W6hWp2Tmzm5emQvpo+ZQ0ZKJp78FJM9zMY1915JdELZisUALS9sxg97xnBwRzIWq5nqdU/tLEwVVRRHSD8mK6crHTt2lKtWrQr4/bvSjjN4yiQcHjceTUMRgs61k/i8Tz8s56BhSUUjpeTxy19ky9/bvXlwk8VEfM1Yvtz8PraQM2vqMj0lg4lv/sLyX1cRERvGgIevpvvgrmeVCUkV5yZCiNVSSsM0xlkfCHr/MJ5tqceKmMiEmM081rUbt7XtUPELPAdxOVx8/8oU5nz9Fx6XyoXXduL2V28o1110FVVUUbGcs4HgUFYml3/7lU/HD0Dj2Djm3HhrBa+uiiqqqOL0pKRAcFYXiz2a5veR3mMwGfz/9u4/yKryvuP4+7PL7soiIhTGqFB3VaISlR9FA0karUqLP4KdmEZMmpBEy8SqI8ROitKxE1NnqjP1RyamDqYmnalKq8aUAadqiWmjbQQUURQRlE2BIGADQfm1LPvtH+esOSzrsqR7Oefe83nN3Ln3POe5dz/cs8v3nufc8xwzszKq6UIw6pghjGg+eGrhpvr6wl/n18zsSKnpQiCJ70y9lEENjR98/bO5oYFThg4r7Fc/rfqtemENN0y+halN0/mTj1zN/DueoNN7oFZgNX2MoMuvdu/ix2+sYuN7OzjnhJFcdPIpDPC0wlYB61b+DzdMuuWAK501NTdxyTUX8uf3fLWXZ5pVVm/HCEpxHsGwgc18bby/IWSV9/Dtj9O+58CJ//bu2suiec8w41ufZ9CQXq/wapaLUhQCq007fvUeC+9/muWLV/KRlhF8dtaltJ51+PMB9ae1y9uInqapaBzApnVbPNuoFZILgVWlbZu38/UJ3+T9be/TvmcfdfV1PDv/eebOn83kz+R3/KflzFFsXLOJ7kOuHe0dPqPYCssD5VaVHr79R+x4d8cHZzN37u9k7+527vqz+3M9MPvFuVfQOPDAOYSamhuZ8uXzGDz06JxSmfXOhcCq0s8XvkjHvoNPFNyzcw+/fCu/azSfOr6V2xfdQutZybUpmo8ZyBWzP8MN370mt0xmh+KhIatKRw9thraD2/d3dDJoyJG/QlrW2PM+xrwVf0dnZ6cvem9Vwb+lVpU+O+syjhp04IR2Axrq+dgnT/utLyvZ31wErFpU9DdV0lRJqyWtlTSnl35XSApJPsvL+uSiP/00l86cQsNRDQwaMpCm5iZazz6JuY/MyjuaWdWp2AllkuqBN4EpwAZgKXBVRLzerd9gYBHQCFwfEb2eLfbbnFBmtWvb5u2sXb6O4ScOy/2ro2ZFltekc+cCayPi7YhoB+YDl/fQ79vAHUAPV/g2693Q447lnKnjXQTM/h8qWQhOBNZnljekbR+QNAEYFRGLKpjDzMx6kdvRLEl1wF3ATX3oO1PSMknLtm7dWvlwZmYlUslCsBEYlVkembZ1GQycCfxUUhswCVjQ0wHjiJgXERMjYuKIET4708ysP1WyECwFRktqldQITAcWdK2MiF9HxPCIaImIFuDnwLRDHSw2M7P+VbFCEBEdwPXAU8Aq4F8i4jVJt0maVqmfa2Zmh6eiZxZHxJPAk93abv2QvudXMouZmfXMpz6amZWcC4GZWcm5EJiZlZwLgZlZybkQmJmVnAuBmVnJuRCYmZWcC4GZWcm5EJiZlZwLgZlZybkQmJmVnAuBmVnJuRCYmZWcC4GZWcm5EJiZlZwLgZlZybkQmJmVnAuBmVnJVbQQSJoqabWktZLm9LD+65JelfSypOckjalkHjMzO1jFCoGkeuA+4GJgDHBVD//RPxwRZ0XEOOBO4K5K5TEzs55Vco/gXGBtRLwdEe3AfODybIeI2JFZHAREBfOYmVkPBlTwtU8E1meWNwAf795J0nXAN4BG4IIK5jEzsx7kfrA4Iu6LiFOAvwT+qqc+kmZKWiZp2datW49sQDOzGlfJQrARGJVZHpm2fZj5wB/3tCIi5kXExIiYOGLEiH6MaGZmlSwES4HRklolNQLTgQXZDpJGZxYvBdZUMI+ZmfWgYscIIqJD0vXAU0A98GBEvCbpNmBZRCwArpd0EbAP2AbMqFQeMzPrWSUPFhMRTwJPdmu7NfP4xkr+fDMzO7TcDxabmVm+XAjMzErOhcDMrOQqeozArD9FBGteeptfrn2H1rNP4qQzRuYdyawmuBBYVXh/+07m/NHf8IvX11NXV8f+jv2Mu+BM/vrxv6ChsSHveGZVzUNDVhXuvXYeb61oY8/Ovex6bzd7d7ez/Ccreejbj+UdzazquRBY4XXs6+C5J5bQ0d5xQHv77nYWPbA4p1RmtcOFwApvf8d+Ovd39rhu7+69RziNWe1xIbDCaxrYxMljTzqova5OnDN1fA6JzGqLC4FVhZseuJaBgwfS0JQcGG4c2MjgYYOZeeeXck5mVv38rSGrCqeOb+XBVfew8P6naVu5njMmjebiay7kmGGD845mVvVcCKxqDD9hGF+5bXreMcxqjoeGzMxKzoXAzKzkXAjMzErOhcDMrORcCMzMSs6FwMys5FwIzMxKzoXAzKzkXAjMzEpOEZF3hsMiaSvwiz52Hw68W8E4/aVackL1ZHXO/lUtOaF6sh7pnCdFxIieVlRdITgckpZFxMS8cxxKteSE6snqnP2rWnJC9WQtUk4PDZmZlZwLgZlZydV6IZiXd4A+qpacUD1ZnbN/VUtOqJ6shclZ08cIzMzs0Gp9j8DMzA6hZguBpKmSVktaK2lO3nm6SHpQ0hZJKzNtwyQ9I2lNej80z4xpplGSnpX0uqTXJN1YxKySjpK0RNKKNOe30vZWSS+k2/+fJTXmmbOLpHpJyyUtTJeLmrNN0quSXpa0LG0r1LZPMx0r6TFJb0haJWly0XJKOi19H7tuOyTNKlLOmiwEkuqB+4CLgTHAVZLG5JvqAz8EpnZrmwMsjojRwOJ0OW8dwE0RMQaYBFyXvodFy7oXuCAixgLjgKmSJgF3AHdHxKnANuDqHDNm3QisyiwXNSfAH0TEuMxXHIu27QHuBf4tIk4HxpK8t4XKGRGr0/dxHPB7wC7gCYqUMyJq7gZMBp7KLN8M3Jx3rkyeFmBlZnk1cHz6+Hhgdd4Ze8j8r8CUImcFmoGXgI+TnKgzoKffhxzzjST5g78AWAioiDnTLG3A8G5thdr2wBBgHemxzqLm7JbtD4Hni5azJvcIgBOB9ZnlDWlbUR0XEZvSx+8Ax+UZpjtJLcB44AUKmDUdbnkZ2AI8A7wFbI+IjrRLUbb/PcA3gc50+XcoZk6AAJ6W9KKkmWlb0bZ9K7AV+EE63PZ9SYMoXs6s6cAj6ePC5KzVQlC1Ivl4UJivckk6GngcmBURO7LripI1IvZHsts9EjgXOD3nSAeRdBmwJSJezDtLH30qIiaQDK9eJ+nT2ZUF2fYDgAnA30fEeGAn3YZXCpITgPT4zzTg0e7r8s5Zq4VgIzAqszwybSuqzZKOB0jvt+ScBwBJDSRF4KGI+FHaXMisABGxHXiWZIjlWEkD0lVF2P6fBKZJagPmkwwP3UvxcgIQERvT+y0k49nnUrxtvwHYEBEvpMuPkRSGouXscjHwUkRsTpcLk7NWC8FSYHT6jYxGkt2xBTln6s0CYEb6eAbJeHyuJAn4B2BVRNyVWVWorJJGSDo2fTyQ5DjGKpKC8Lm0W+45I+LmiBgZES0kv48/iYgvUrCcAJIGSRrc9ZhkXHslBdv2EfEOsF7SaWnThcDrFCxnxlX8ZlgIipQz74MnFTwocwnwJsl48dy882RyPQJsAvaRfKK5mmSseDGwBvh3YFgBcn6KZFf1FeDl9HZJ0bICZwPL05wrgVvT9pOBJcBakl3xprzf00zm84GFRc2ZZlqR3l7r+vsp2rZPM40DlqXb/8fA0ILmHAT8LzAk01aYnD6z2Mys5Gp1aMjMzPrIhcDMrORcCMzMSs6FwMys5FwIzMxKzoXArJ9IasnOKnsYz/uvzPO/0P/JzHrnQmCWk64ziiPiE2lTC+BCYEecC4GVRvqJ+w1JD6Vz1z8mqVnShemkZa+m14toSvu3SbozbV8i6dS0/YeSPpd53fc/5Gf9TNJL6e0Tafv5afsCkrNgs8//W+D30znrZ0v6T0njMq/5nKSxFXuDrLRcCKxsTgO+FxFnADuAb5BcI+LKiDiLZCKzazP9f522f5dk9tC+2gJMiWTitiuB72TWTQBujIiPdnvOHOBnkcxdfzfJFB9fAZD0UeCoiFhxGBnM+sSFwMpmfUQ8nz7+J5L5adZFxJtp2z8C2Zk2H8ncTz6Mn9MAPCDpVZKpI7IXRloSEev68BqPApelk/99jaRgmfW7AYfuYlZTus+psp1kzpe+9O963EH6IUpSHdDT5SVnA5tJrppVB+zJrNvZp6ARuyQ9A1wOfJ7k6lZm/c57BFY2vyup65P9F0gmLGvpGv8HvgT8R6b/lZn7/04ft/Gb/5SnkXz6724IsCkiOtPXrO9DtveAwd3avk8yrLQ0Irb14TXMDpsLgZXNapILrawimanybuCrwKPpME4ncH+m/1BJr5Bca3h22vYAcJ6kFSTDRT19wv8eMCPtc/qH9OnuFWC/pBWSZgNEciGbHcAPDu+fadZ3nn3USiO95ObCiDizj/3bgIkR8W4FYx0qwwnAT4HT070Ls37nPQKzgpL0ZZLrRM91EbBK8h6BmVnJeY/AzKzkXAjMzErOhcDMrORcCMzMSs6FwMys5FwIzMxK7v8A+me/ab3a2nMAAAAASUVORK5CYII=\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "from sklearn.cluster import KMeans\n", + "kmeans = KMeans(n_clusters = 3)\n", + "kmeans.fit(X)\n", + "labels = kmeans.predict(X)\n", + "plt.scatter(df['popularity'],df['danceability'],c = labels)\n", + "plt.xlabel('popularity')\n", + "plt.ylabel('danceability')\n", + "plt.show()" + ] + }, + { + "source": [ + "ಈ ಮಾದರಿಯ ನಿಖರತೆ ಕೆಟ್ಟದಾಗಿಲ್ಲ, ಆದರೆ ಅತ್ಯುತ್ತಮವೂ ಅಲ್ಲ. ಡೇಟಾ K-Means ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಸೂಕ್ತವಾಗಿರದಿರಬಹುದು. ನೀವು ಬೇರೆ ವಿಧಾನವನ್ನು ಪ್ರಯತ್ನಿಸಬಹುದು.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 811, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Result: 109 out of 286 samples were correctly labeled.\nAccuracy score: 0.38\n" + ] + } + ], + "source": [ + "labels = kmeans.labels_\n", + "\n", + "correct_labels = sum(y == labels)\n", + "\n", + "print(\"Result: %d out of %d samples were correctly labeled.\" % (correct_labels, y.size))\n", + "\n", + "print('Accuracy score: {0:0.2f}'. format(correct_labels/float(y.size)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/5-Clustering/2-K-Means/solution/tester.ipynb b/translations/kn/5-Clustering/2-K-Means/solution/tester.ipynb new file mode 100644 index 000000000..959bb4a05 --- /dev/null +++ b/translations/kn/5-Clustering/2-K-Means/solution/tester.ipynb @@ -0,0 +1,345 @@ +{ + "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')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "6f92868513e59d321245137c1c4c5311", + "translation_date": "2025-12-19T16:52:29+00:00", + "source_file": "5-Clustering/2-K-Means/solution/tester.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ಸ್ಪೋಟಿಫೈಯಿಂದ ಸಂಗ್ರಹಿಸಿದ ನೈಜೀರಿಯನ್ ಸಂಗೀತ - ಒಂದು ವಿಶ್ಲೇಷಣೆ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: seaborn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.11.1)\n", + "Requirement already satisfied: pandas>=0.23 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.1.2)\n", + "Requirement already satisfied: matplotlib>=2.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (3.1.0)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.19.2)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.4.1)\n", + "Requirement already satisfied: pytz>=2017.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2019.1)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2.8.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (1.1.0)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (2.4.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (0.10.0)\n", + "Requirement already satisfied: six>=1.5 in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from python-dateutil>=2.7.3->pandas>=0.23->seaborn) (1.12.0)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib>=2.2->seaborn) (45.1.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install seaborn" + ] + }, + { + "source": [ + "ನಾವು ಕೊನೆಯ ಪಾಠದಲ್ಲಿ ಮುಗಿಸಿದ ಸ್ಥಳದಿಂದ ಪ್ರಾರಂಭಿಸಿ, ಡೇಟಾ ಆಮದುಮಾಡಿ ಫಿಲ್ಟರ್ ಮಾಡಲಾಗಿದೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "0 Sparky Mandy & The Jungle \n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "2 LITT! LITT! \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "0 Cruel Santino alternative r&b 2019 144000 48 \n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "2 AYLØ indie r&b 2018 207758 40 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "\n", + " speechiness tempo time_signature \n", + "0 0.0829 133.015 5 \n", + "1 0.3600 129.993 3 \n", + "2 0.0424 130.005 4 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
0SparkyMandy & The JungleCruel Santinoalternative r&b2019144000480.6660.85100.4200.5340000.1100-6.6990.0829133.0155
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
2LITT!LITT!AYLØindie r&b2018207758400.8360.27200.5640.0005370.1100-7.1270.0424130.0054
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
\n
" + }, + "metadata": {}, + "execution_count": 105 + } + ], + "source": [ + "\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import numpy as np\n", + "\n", + "df = pd.read_csv(\"../../data/nigerian-songs.csv\")\n", + "df.head()" + ] + }, + { + "source": [ + "ನಾವು ಕೇವಲ 3 ಶೈಲಿಗಳ ಮೇಲೆ ಮಾತ್ರ ಗಮನಹರಿಸುವೆವು. ಬಹುಶಃ ನಾವು 3 ಗುಂಪುಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "metadata": {}, + "execution_count": 106 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n", + "df = df[(df['popularity'] > 0)]\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "5 Kasala Pioneers \n", + "6 Pull Up Everything Pretty \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "5 DRB Lasgidi nigerian pop 2020 184800 26 \n", + "6 prettyboydo nigerian pop 2018 202648 29 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "5 0.803 0.1270 0.525 0.000007 0.1290 -10.034 \n", + "6 0.818 0.4520 0.587 0.004490 0.5900 -9.840 \n", + "\n", + " speechiness tempo time_signature \n", + "1 0.3600 129.993 3 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 \n", + "5 0.1970 100.103 4 \n", + "6 0.1990 95.842 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
5KasalaPioneersDRB Lasgidinigerian pop2020184800260.8030.12700.5250.0000070.1290-10.0340.1970100.1034
6Pull UpEverything Prettyprettyboydonigerian pop2018202648290.8180.45200.5870.0044900.5900-9.8400.199095.8424
\n
" + }, + "metadata": {}, + "execution_count": 107 + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "scaler = StandardScaler()\n", + "\n", + "# X = df.loc[:, ('danceability','energy')]\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "output_type": "error", + "ename": "ValueError", + "evalue": "Unknown label type: 'continuous'", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0;31m# we create an instance of SVM and fit out data. We do not scale our\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0;31m# data since we want to plot the support vectors\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 22\u001b[0;31m \u001b[0mls30\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mLabelSpreading\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_30\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_30\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Label Spreading 30% data'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 23\u001b[0m \u001b[0mls50\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mLabelSpreading\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_50\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_50\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Label Spreading 50% data'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mls100\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mLabelSpreading\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Label Spreading 100% data'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/semi_supervised/_label_propagation.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, X, y)\u001b[0m\n\u001b[1;32m 228\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_validate_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 229\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mX_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 230\u001b[0;31m \u001b[0mcheck_classification_targets\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 231\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 232\u001b[0m \u001b[0;31m# actual graph construction (implementations should override this)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/utils/multiclass.py\u001b[0m in \u001b[0;36mcheck_classification_targets\u001b[0;34m(y)\u001b[0m\n\u001b[1;32m 181\u001b[0m if y_type not in ['binary', 'multiclass', 'multiclass-multioutput',\n\u001b[1;32m 182\u001b[0m 'multilabel-indicator', 'multilabel-sequences']:\n\u001b[0;32m--> 183\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Unknown label type: %r\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0my_type\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 184\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 185\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: Unknown label type: 'continuous'" + ] + } + ], + "source": [ + "from sklearn.svm import SVC\n", + "from sklearn.semi_supervised import LabelSpreading\n", + "from sklearn.semi_supervised import SelfTrainingClassifier\n", + "from sklearn import datasets\n", + "\n", + "X = df[['danceability','acousticness']].values\n", + "y = df['energy'].values\n", + "\n", + "# X = scaler.fit_transform(X)\n", + "\n", + "# step size in the mesh\n", + "h = .02\n", + "\n", + "rng = np.random.RandomState(0)\n", + "y_rand = rng.rand(y.shape[0])\n", + "y_30 = np.copy(y)\n", + "y_30[y_rand < 0.3] = -1 # set random samples to be unlabeled\n", + "y_50 = np.copy(y)\n", + "y_50[y_rand < 0.5] = -1\n", + "# we create an instance of SVM and fit out data. We do not scale our\n", + "# data since we want to plot the support vectors\n", + "ls30 = (LabelSpreading().fit(X, y_30), y_30, 'Label Spreading 30% data')\n", + "ls50 = (LabelSpreading().fit(X, y_50), y_50, 'Label Spreading 50% data')\n", + "ls100 = (LabelSpreading().fit(X, y), y, 'Label Spreading 100% data')\n", + "\n", + "# the base classifier for self-training is identical to the SVC\n", + "base_classifier = SVC(kernel='rbf', gamma=.5, probability=True)\n", + "st30 = (SelfTrainingClassifier(base_classifier).fit(X, y_30),\n", + " y_30, 'Self-training 30% data')\n", + "st50 = (SelfTrainingClassifier(base_classifier).fit(X, y_50),\n", + " y_50, 'Self-training 50% data')\n", + "\n", + "rbf_svc = (SVC(kernel='rbf', gamma=.5).fit(X, y), y, 'SVC with rbf kernel')\n", + "\n", + "# create a mesh to plot in\n", + "x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n", + "y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n", + "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n", + " np.arange(y_min, y_max, h))\n", + "\n", + "color_map = {-1: (1, 1, 1), 0: (0, 0, .9), 1: (1, 0, 0), 2: (.8, .6, 0)}\n", + "\n", + "classifiers = (ls30, st30, ls50, st50, ls100, rbf_svc)\n", + "for i, (clf, y_train, title) in enumerate(classifiers):\n", + " # Plot the decision boundary. For that, we will assign a color to each\n", + " # point in the mesh [x_min, x_max]x[y_min, y_max].\n", + " plt.subplot(3, 2, i + 1)\n", + " Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n", + "\n", + " # Put the result into a color plot\n", + " Z = Z.reshape(xx.shape)\n", + " plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)\n", + " plt.axis('off')\n", + "\n", + " # Plot also the training points\n", + " colors = [color_map[y] for y in y_train]\n", + " plt.scatter(X[:, 0], X[:, 1], c=colors, edgecolors='black')\n", + "\n", + " plt.title(title)\n", + "\n", + "plt.suptitle(\"Unlabeled points are colored white\", y=0.1)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/5-Clustering/README.md b/translations/kn/5-Clustering/README.md new file mode 100644 index 000000000..ee0e990ec --- /dev/null +++ b/translations/kn/5-Clustering/README.md @@ -0,0 +1,44 @@ + +# ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕಾಗಿ ಕ್ಲಸ್ಟರಿಂಗ್ ಮಾದರಿಗಳು + +ಕ್ಲಸ್ಟರಿಂಗ್ ಎಂದರೆ ಒಂದು ಯಂತ್ರ ಅಧ್ಯಯನ ಕಾರ್ಯವಾಗಿದ್ದು, ಅದು ಪರಸ್ಪರ ಹೋಲುವ ವಸ್ತುಗಳನ್ನು ಕಂಡುಹಿಡಿದು ಅವುಗಳನ್ನು ಕ್ಲಸ್ಟರ್‌ಗಳು ಎಂದು ಕರೆಯುವ ಗುಂಪುಗಳಲ್ಲಿ ಸೇರಿಸುವುದು. ಯಂತ್ರ ಅಧ್ಯಯನದ ಇತರ ವಿಧಾನಗಳಿಂದ ಕ್ಲಸ್ಟರಿಂಗ್ ವಿಭಿನ್ನವಾಗಿರುವುದು ಎಂದರೆ, ಇದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಡೆಯುತ್ತದೆ, ವಾಸ್ತವದಲ್ಲಿ, ಇದು ಮೇಲ್ವಿಚಾರಿತ ಅಧ್ಯಯನದ ವಿರುದ್ಧವಾಗಿದೆ ಎಂದು ಹೇಳಬಹುದು. + +## ಪ್ರಾದೇಶಿಕ ವಿಷಯ: ನೈಜೀರಿಯನ್ ಪ್ರೇಕ್ಷಕರ ಸಂಗೀತ ರುಚಿಗೆ ಕ್ಲಸ್ಟರಿಂಗ್ ಮಾದರಿಗಳು 🎧 + +ನೈಜೀರಿಯಾದ ವೈವಿಧ್ಯಮಯ ಪ್ರೇಕ್ಷಕರಿಗೆ ವೈವಿಧ್ಯಮಯ ಸಂಗೀತ ರುಚಿಗಳು ಇವೆ. Spotify ನಿಂದ ಸ್ಕ್ರೇಪ್ ಮಾಡಲಾದ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು ([ಈ ಲೇಖನದಿಂದ ಪ್ರೇರಿತ](https://towardsdatascience.com/country-wise-visual-analysis-of-music-taste-using-spotify-api-seaborn-in-python-77f5b749b421)), ನೈಜೀರಿಯಾದಲ್ಲಿ ಜನಪ್ರಿಯವಾಗಿರುವ ಕೆಲವು ಸಂಗೀತಗಳನ್ನು ನೋಡೋಣ. ಈ ಡೇಟಾಸೆಟ್ ವಿವಿಧ ಹಾಡುಗಳ 'ನೃತ್ಯ ಸಾಮರ್ಥ್ಯ' ಅಂಕ, 'ಅಕೌಸ್ಟಿಕ್‌ನೆಸ್', ಶಬ್ದದ ತೀವ್ರತೆ, 'ಸ್ಪೀಚಿನೆಸ್', ಜನಪ್ರಿಯತೆ ಮತ್ತು ಶಕ್ತಿ ಬಗ್ಗೆ ಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿದೆ. ಈ ಡೇಟಾದಲ್ಲಿ ಮಾದರಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ಆಸಕ್ತಿದಾಯಕವಾಗಿರುತ್ತದೆ! + +![A turntable](../../../translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.kn.jpg) + +> ಫೋಟೋ ಮಾರ್ಸೆಲಾ ಲಾಸ್ಕೋಸ್ಕಿ ಅವರಿಂದ ಅನ್ಸ್ಪ್ಲ್ಯಾಶ್ ನಲ್ಲಿ + +ಈ ಪಾಠ ಸರಣಿಯಲ್ಲಿ, ನೀವು ಕ್ಲಸ್ಟರಿಂಗ್ ತಂತ್ರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸುವ ಹೊಸ ಮಾರ್ಗಗಳನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ. ನಿಮ್ಮ ಡೇಟಾಸೆಟ್‌ಗೆ ಲೇಬಲ್ಗಳು ಇಲ್ಲದಿದ್ದಾಗ ಕ್ಲಸ್ಟರಿಂಗ್ ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ. ಲೇಬಲ್ಗಳು ಇದ್ದರೆ, ನೀವು ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಕಲಿತ ವರ್ಗೀಕರಣ ತಂತ್ರಗಳು ಹೆಚ್ಚು ಉಪಯುಕ್ತವಾಗಬಹುದು. ಆದರೆ ಲೇಬಲ್ಗಳಿಲ್ಲದ ಡೇಟಾವನ್ನು ಗುಂಪುಮಾಡಲು ನೀವು ನೋಡುತ್ತಿರುವಾಗ, ಕ್ಲಸ್ಟರಿಂಗ್ ಮಾದರಿಗಳು ಮಾದರಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಉತ್ತಮ ಮಾರ್ಗವಾಗಿದೆ. + +> ಕ್ಲಸ್ಟರಿಂಗ್ ಮಾದರಿಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದನ್ನು ಕಲಿಯಲು ಸಹಾಯ ಮಾಡುವ ಕಡಿಮೆ-ಕೋಡ್ ಉಪಕರಣಗಳು ಲಭ್ಯವಿವೆ. ಈ ಕಾರ್ಯಕ್ಕಾಗಿ [Azure ML ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ](https://docs.microsoft.com/learn/modules/create-clustering-model-azure-machine-learning-designer/?WT.mc_id=academic-77952-leestott) + +## ಪಾಠಗಳು + +1. [ಕ್ಲಸ್ಟರಿಂಗ್ ಪರಿಚಯ](1-Visualize/README.md) +2. [ಕೆ-ಮೀನ್ಸ್ ಕ್ಲಸ್ಟರಿಂಗ್](2-K-Means/README.md) + +## ಕ್ರೆಡಿಟ್ಸ್ + +ಈ ಪಾಠಗಳನ್ನು 🎶 [ಜೆನ್ ಲೂಪರ್](https://www.twitter.com/jenlooper) ರವರು ಬರೆದಿದ್ದು, [ರಿಶಿತ್ ದಾಗ್ಲಿ](https://rishit_dagli) ಮತ್ತು [ಮುಹಮ್ಮದ್ ಸಕಿಬ್ ಖಾನ್ ಇನಾನ್](https://twitter.com/Sakibinan) ರವರ ಸಹಾಯಕ ವಿಮರ್ಶೆಗಳೊಂದಿಗೆ. + +[ನೈಜೀರಿಯನ್ ಹಾಡುಗಳು](https://www.kaggle.com/sootersaalu/nigerian-songs-spotify) ಡೇಟಾಸೆಟ್ Spotify ನಿಂದ ಸ್ಕ್ರೇಪ್ ಮಾಡಲಾಗಿ Kaggle ನಿಂದ ಪಡೆದಿದೆ. + +ಈ ಪಾಠವನ್ನು ರಚಿಸಲು ಸಹಾಯ ಮಾಡಿದ ಉಪಯುಕ್ತ ಕೆ-ಮೀನ್ಸ್ ಉದಾಹರಣೆಗಳಲ್ಲಿ ಈ [ಐರಿಸ್ ಅನ್ವೇಷಣೆ](https://www.kaggle.com/bburns/iris-exploration-pca-k-means-and-gmm-clustering), ಈ [ಪರಿಚಯಾತ್ಮಕ ನೋಟ್ಬುಕ್](https://www.kaggle.com/prashant111/k-means-clustering-with-python), ಮತ್ತು ಈ [ಕಲ್ಪನಾತ್ಮಕ NGO ಉದಾಹರಣೆ](https://www.kaggle.com/ankandash/pca-k-means-clustering-hierarchical-clustering) ಸೇರಿವೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/1-Introduction-to-NLP/README.md b/translations/kn/6-NLP/1-Introduction-to-NLP/README.md new file mode 100644 index 000000000..6f7322625 --- /dev/null +++ b/translations/kn/6-NLP/1-Introduction-to-NLP/README.md @@ -0,0 +1,181 @@ + +# ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ಪರಿಚಯ + +ಈ ಪಾಠವು *ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ* ಎಂಬ ಉಪಕ್ಷೇತ್ರವಾದ *ಗಣನಾತ್ಮಕ ಭಾಷಾಶಾಸ್ತ್ರ* ನ ಸಂಕ್ಷಿಪ್ತ ಇತಿಹಾಸ ಮತ್ತು ಪ್ರಮುಖ ತತ್ವಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. + +## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ಪರಿಚಯ + +NLP, ಸಾಮಾನ್ಯವಾಗಿ ತಿಳಿದಿರುವಂತೆ, ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಅನ್ವಯಿಸಿ ಉತ್ಪಾದನಾ ಸಾಫ್ಟ್‌ವೇರ್‌ನಲ್ಲಿ ಬಳಸಲಾಗಿರುವ ಅತ್ಯಂತ ಪ್ರಸಿದ್ಧ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. + +✅ ನೀವು ಪ್ರತಿದಿನವೂ ಬಳಸುವ ಯಾವುದೇ ಸಾಫ್ಟ್‌ವೇರ್‌ನಲ್ಲಿ ಕೆಲವು NLP ಅಳವಡಿಸಲಾಗಿದೆ ಎಂದು ನೀವು ಭಾವಿಸುತ್ತೀರಾ? ನಿಮ್ಮ ಪದ ಸಂಸ್ಕರಣಾ ಕಾರ್ಯಕ್ರಮಗಳು ಅಥವಾ ನೀವು ನಿಯಮಿತವಾಗಿ ಬಳಸುವ ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಬಗ್ಗೆ ಏನು? + +ನೀವು ತಿಳಿಯಲಿರುವುದು: + +- **ಭಾಷೆಗಳ ಕಲ್ಪನೆ**. ಭಾಷೆಗಳು ಹೇಗೆ ಅಭಿವೃದ್ಧಿ ಹೊಂದಿದವು ಮತ್ತು ಅಧ್ಯಯನದ ಪ್ರಮುಖ ಕ್ಷೇತ್ರಗಳು ಯಾವುವು. +- **ವ್ಯಾಖ್ಯಾನ ಮತ್ತು ತತ್ವಗಳು**. ಕಂಪ್ಯೂಟರ್‌ಗಳು ಪಠ್ಯವನ್ನು ಹೇಗೆ ಪ್ರಕ್ರಿಯೆ ಮಾಡುತ್ತವೆ ಎಂಬುದರ ಬಗ್ಗೆ ವ್ಯಾಖ್ಯಾನಗಳು ಮತ್ತು ತತ್ವಗಳನ್ನು ನೀವು ಕಲಿಯುತ್ತೀರಿ, ಇದರಲ್ಲಿ ಪಾರ್ಸಿಂಗ್, ವ್ಯಾಕರಣ ಮತ್ತು ನಾಮಪದ ಮತ್ತು ಕ್ರಿಯಾಪದಗಳನ್ನು ಗುರುತಿಸುವುದು ಸೇರಿದೆ. ಈ ಪಾಠದಲ್ಲಿ ಕೆಲವು ಕೋಡಿಂಗ್ ಕಾರ್ಯಗಳಿವೆ ಮತ್ತು ಕೆಲವು ಪ್ರಮುಖ ತತ್ವಗಳನ್ನು ಪರಿಚಯಿಸಲಾಗುತ್ತದೆ, ಅವುಗಳನ್ನು ನೀವು ಮುಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಕೋಡ್ ಮಾಡಲು ಕಲಿಯುತ್ತೀರಿ. + +## ಗಣನಾತ್ಮಕ ಭಾಷಾಶಾಸ್ತ್ರ + +ಗಣನಾತ್ಮಕ ಭಾಷಾಶಾಸ್ತ್ರವು ಹಲವು ದಶಕಗಳ ಸಂಶೋಧನೆ ಮತ್ತು ಅಭಿವೃದ್ಧಿಯ ಕ್ಷೇತ್ರವಾಗಿದ್ದು, ಕಂಪ್ಯೂಟರ್‌ಗಳು ಭಾಷೆಗಳೊಂದಿಗೆ ಹೇಗೆ ಕೆಲಸ ಮಾಡಬಹುದು, ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದು, ಅನುವಾದ ಮಾಡಬಹುದು ಮತ್ತು ಸಂವಹನ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ಅಧ್ಯಯನ ಮಾಡುತ್ತದೆ. ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ (NLP) ಎಂಬುದು ಸಂಬಂಧಿತ ಕ್ಷೇತ್ರವಾಗಿದ್ದು, ಕಂಪ್ಯೂಟರ್‌ಗಳು 'ನೈಸರ್ಗಿಕ' ಅಥವಾ ಮಾನವ ಭಾಷೆಗಳನ್ನು ಹೇಗೆ ಪ್ರಕ್ರಿಯೆ ಮಾಡಬಹುದು ಎಂಬುದರ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಿದೆ. + +### ಉದಾಹರಣೆ - ಫೋನ್ ಡಿಕ್ಟೇಶನ್ + +ನೀವು ಟೈಪ್ ಮಾಡುವ ಬದಲು ನಿಮ್ಮ ಫೋನ್‌ಗೆ ಮಾತಾಡಿದ್ದರೆ ಅಥವಾ ವರ್ಚುವಲ್ ಸಹಾಯಕನಿಗೆ ಪ್ರಶ್ನೆ ಕೇಳಿದ್ದರೆ, ನಿಮ್ಮ ಮಾತು ಪಠ್ಯ ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿತಗೊಂಡು ನಂತರ ನೀವು ಮಾತನಾಡಿದ ಭಾಷೆಯಿಂದ *ಪಾರ್ಸ್* ಮಾಡಲಾಯಿತು. ಪತ್ತೆಯಾದ ಪ್ರಮುಖ ಪದಗಳನ್ನು ನಂತರ ಫೋನ್ ಅಥವಾ ಸಹಾಯಕನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ಕ್ರಮ ಕೈಗೊಳ್ಳಲು ಸಾಧ್ಯವಾದ ಸ್ವರೂಪಕ್ಕೆ ಪ್ರಕ್ರಿಯೆ ಮಾಡಲಾಯಿತು. + +![comprehension](../../../../translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.kn.png) +> ನಿಜವಾದ ಭಾಷಾಶಾಸ್ತ್ರದ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಕಷ್ಟ! ಚಿತ್ರವನ್ನು [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಒದಗಿಸಿದ್ದಾರೆ + +### ಈ ತಂತ್ರಜ್ಞಾನ ಹೇಗೆ ಸಾಧ್ಯವಾಯಿತು? + +ಇದು ಸಾಧ್ಯವಾಯಿತು ಏಕೆಂದರೆ ಯಾರೋ ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಂ ಬರೆಯುವ ಮೂಲಕ ಇದನ್ನು ಮಾಡಿದರು. ಕೆಲವು ದಶಕಗಳ ಹಿಂದೆ, ಕೆಲವು ವಿಜ್ಞಾನ ಕಲ್ಪನೆ ಲೇಖಕರು ಜನರು ತಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ಗಳಿಗೆ ಮುಖ್ಯವಾಗಿ ಮಾತಾಡುತ್ತಾರೆ ಮತ್ತು ಕಂಪ್ಯೂಟರ್‌ಗಳು ಯಾವಾಗಲೂ ಅವರ ಅರ್ಥವನ್ನು ನಿಖರವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತವೆ ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ್ದರು. ದುಃಖಕರವಾಗಿ, ಇದು ಅನೇಕರು ಊಹಿಸಿದಕ್ಕಿಂತ ಕಠಿಣ ಸಮಸ್ಯೆಯಾಗಿದ್ದು, ಇಂದು ಇದು ಬಹಳ ಚೆನ್ನಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲ್ಪಟ್ಟ ಸಮಸ್ಯೆಯಾಗಿದ್ದರೂ, ವಾಕ್ಯದ ಅರ್ಥವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಾಗ 'ಪೂರ್ಣ' ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸಾಧಿಸುವಲ್ಲಿ ಪ್ರಮುಖ ಸವಾಲುಗಳಿವೆ. ವಿಶೇಷವಾಗಿ ಹಾಸ್ಯವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಾಗ ಅಥವಾ ವಾಕ್ಯದಲ್ಲಿ ವ್ಯಂಗ್ಯವನ್ನು ಪತ್ತೆಹಚ್ಚುವಾಗ ಇದು ಕಠಿಣ ಸಮಸ್ಯೆಯಾಗುತ್ತದೆ. + +ಈ ಸಮಯದಲ್ಲಿ, ನೀವು ಶಾಲಾ ತರಗತಿಗಳನ್ನು ನೆನಪಿಸಿಕೊಳ್ಳಬಹುದು, ಅಲ್ಲಿ ಶಿಕ್ಷಕರು ವಾಕ್ಯದ ವ್ಯಾಕರಣ ಭಾಗಗಳನ್ನು ಕಲಿಸುತ್ತಿದ್ದರು. ಕೆಲವು ದೇಶಗಳಲ್ಲಿ ವಿದ್ಯಾರ್ಥಿಗಳಿಗೆ ವ್ಯಾಕರಣ ಮತ್ತು ಭಾಷಾಶಾಸ್ತ್ರವನ್ನು ವಿಶೇಷ ವಿಷಯವಾಗಿ ಕಲಿಸಲಾಗುತ್ತದೆ, ಆದರೆ ಬಹುತೇಕ ದೇಶಗಳಲ್ಲಿ ಈ ವಿಷಯಗಳು ಭಾಷೆ ಕಲಿಕೆಯ ಭಾಗವಾಗಿ ಸೇರಿವೆ: ಪ್ರಾಥಮಿಕ ಶಾಲೆಯಲ್ಲಿ ನಿಮ್ಮ ಮೊದಲ ಭಾಷೆಯನ್ನು (ಓದಲು ಮತ್ತು ಬರೆಯಲು ಕಲಿಯುವುದು) ಮತ್ತು ನಂತರದ ಶಾಲೆಯಲ್ಲಿ ಎರಡನೇ ಭಾಷೆಯನ್ನು ಕಲಿಯುವಾಗ. ನಾಮಪದಗಳನ್ನು ಕ್ರಿಯಾಪದಗಳಿಂದ ಅಥವಾ ಕ್ರಿಯಾವಿಶೇಷಣಗಳನ್ನು ವಿಶೇಷಣಗಳಿಂದ ವಿಭಜಿಸುವಲ್ಲಿ ನೀವು ಪರಿಣತಿ ಹೊಂದಿರದಿದ್ದರೂ ಚಿಂತೆ ಮಾಡಬೇಡಿ! + +*ಸರಳ ವರ್ತಮಾನ* ಮತ್ತು *ವರ್ತಮಾನ ಪ್ರಗತಿಶೀಲ* ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ನೀವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಹಿಂಜರಿದರೆ, ನೀವು ಏಕಾಂತವಲ್ಲ. ಇದು ಅನೇಕ ಜನರಿಗೆ, ಭಾಷೆಯ ಸ್ಥಳೀಯ ಭಾಷಣಕಾರರಿಗೂ ಸವಾಲಾಗಿರುವ ವಿಷಯ. ಒಳ್ಳೆಯ ಸುದ್ದಿ ಎಂದರೆ ಕಂಪ್ಯೂಟರ್‌ಗಳು ಅಧಿಕೃತ ನಿಯಮಗಳನ್ನು ಅನ್ವಯಿಸುವಲ್ಲಿ ಬಹಳ ಚೆನ್ನಾಗಿವೆ, ಮತ್ತು ನೀವು ಮಾನವನಂತೆ ವಾಕ್ಯವನ್ನು *ಪಾರ್ಸ್* ಮಾಡಬಲ್ಲ ಕೋಡ್ ಬರೆಯಲು ಕಲಿಯುತ್ತೀರಿ. ನಂತರ ನೀವು ಪರಿಶೀಲಿಸುವ ದೊಡ್ಡ ಸವಾಲು ಎಂದರೆ ವಾಕ್ಯದ *ಅರ್ಥ* ಮತ್ತು *ಭಾವನೆ* ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು. + +## ಪೂರ್ವಾಪೇಕ್ಷಿತಗಳು + +ಈ ಪಾಠಕ್ಕಾಗಿ ಮುಖ್ಯ ಪೂರ್ವಾಪೇಕ್ಷಿತವು ಈ ಪಾಠದ ಭಾಷೆಯನ್ನು ಓದಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಸಾಮರ್ಥ್ಯ. ಯಾವುದೇ ಗಣಿತ ಸಮಸ್ಯೆಗಳು ಅಥವಾ ಸಮೀಕರಣಗಳನ್ನು ಪರಿಹರಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. ಮೂಲ ಲೇಖಕ ಈ ಪಾಠವನ್ನು ಇಂಗ್ಲಿಷ್‌ನಲ್ಲಿ ಬರೆದಿದ್ದರೂ, ಇದು ಇತರ ಭಾಷೆಗಳಿಗೆ ಅನುವಾದಿಸಲಾಗಿದೆ, ಆದ್ದರಿಂದ ನೀವು ಅನುವಾದವನ್ನು ಓದುತ್ತಿರಬಹುದು. ವಿವಿಧ ಭಾಷೆಗಳ ವ್ಯಾಕರಣ ನಿಯಮಗಳನ್ನು ಹೋಲಿಸಲು ಕೆಲವು ಉದಾಹರಣೆಗಳಲ್ಲಿ ವಿವಿಧ ಭಾಷೆಗಳು ಬಳಸಲ್ಪಟ್ಟಿವೆ. ಅವುಗಳು *ಅನುವಾದಿಸಲ್ಪಟ್ಟಿಲ್ಲ*, ಆದರೆ ವಿವರಣಾತ್ಮಕ ಪಠ್ಯವನ್ನು ಅನುವಾದಿಸಲಾಗಿದೆ, ಆದ್ದರಿಂದ ಅರ್ಥ ಸ್ಪಷ್ಟವಾಗಿರಬೇಕು. + +ಕೋಡಿಂಗ್ ಕಾರ್ಯಗಳಿಗಾಗಿ, ನೀವು Python ಬಳಸುತ್ತೀರಿ ಮತ್ತು ಉದಾಹರಣೆಗಳು Python 3.8 ಬಳಕೆ ಮಾಡುತ್ತಿವೆ. + +ಈ ವಿಭಾಗದಲ್ಲಿ ನೀವು ಬೇಕಾಗಿರುವುದು ಮತ್ತು ಬಳಸುವದು: + +- **Python 3 ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ**. Python 3 ನಲ್ಲಿ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ, ಈ ಪಾಠದಲ್ಲಿ ಇನ್‌ಪುಟ್, ಲೂಪ್‌ಗಳು, ಫೈಲ್ ಓದುವುದು, ಅರೆಗಳು ಬಳಸಲಾಗುತ್ತವೆ. +- **Visual Studio Code + ವಿಸ್ತರಣೆ**. ನಾವು Visual Studio Code ಮತ್ತು ಅದರ Python ವಿಸ್ತರಣೆಯನ್ನು ಬಳಸುತ್ತೇವೆ. ನೀವು ನಿಮ್ಮ ಆಯ್ಕೆಯ Python IDE ಕೂಡ ಬಳಸಬಹುದು. +- **TextBlob**. [TextBlob](https://github.com/sloria/TextBlob) Python ಗಾಗಿ ಸರಳೀಕೃತ ಪಠ್ಯ ಪ್ರಕ್ರಿಯೆ ಗ್ರಂಥಾಲಯವಾಗಿದೆ. ನಿಮ್ಮ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಇದನ್ನು ಸ್ಥಾಪಿಸಲು TextBlob ಸೈಟ್‌ನ ಸೂಚನೆಗಳನ್ನು ಅನುಸರಿಸಿ (ಕೆಳಗಿನಂತೆ ಕಾರ್ಪೋರಾ ಸಹ ಸ್ಥಾಪಿಸಿ): + + ```bash + pip install -U textblob + python -m textblob.download_corpora + ``` + +> 💡 ಟಿಪ್: ನೀವು Python ಅನ್ನು ನೇರವಾಗಿ VS Code ಪರಿಸರಗಳಲ್ಲಿ ಚಾಲನೆ ಮಾಡಬಹುದು. ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://code.visualstudio.com/docs/languages/python?WT.mc_id=academic-77952-leestott) ಪರಿಶೀಲಿಸಿ. + +## ಯಂತ್ರಗಳೊಂದಿಗೆ ಮಾತಾಡುವುದು + +ಕಂಪ್ಯೂಟರ್‌ಗಳು ಮಾನವ ಭಾಷೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಪ್ರಯತ್ನಿಸುವ ಇತಿಹಾಸವು ದಶಕಗಳ ಹಿಂದೆ ಆರಂಭವಾಯಿತು, ಮತ್ತು ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪರಿಗಣಿಸಿದ ಮೊದಲ ವಿಜ್ಞಾನಿಗಳಲ್ಲಿ ಒಬ್ಬರು *ಆಲನ್ ಟ್ಯೂರಿಂಗ್*. + +### 'ಟ್ಯೂರಿಂಗ್ ಪರೀಕ್ಷೆ' + +1950ರ ದಶಕದಲ್ಲಿ ಟ್ಯೂರಿಂಗ್ *ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ* ಕುರಿತು ಸಂಶೋಧನೆ ಮಾಡುತ್ತಿದ್ದಾಗ, ಮಾನವ ಮತ್ತು ಕಂಪ್ಯೂಟರ್ (ಟೈಪ್ ಮಾಡಿದ ಪತ್ರಚರ್ಯೆಯ ಮೂಲಕ) ನಡುವೆ ಸಂಭಾಷಣಾ ಪರೀಕ್ಷೆಯನ್ನು ನೀಡಬಹುದೇ ಎಂದು ಪರಿಗಣಿಸಿದರು, ಅಲ್ಲಿ ಸಂಭಾಷಣೆಯಲ್ಲಿರುವ ಮಾನವನು ಅವರು ಮತ್ತೊಬ್ಬ ಮಾನವನೊಂದಿಗೆ ಮಾತನಾಡುತ್ತಿದ್ದಾರೋ ಅಥವಾ ಕಂಪ್ಯೂಟರ್‌ನೊಂದಿಗೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲಾರರು. + +ನಿರ್ದಿಷ್ಟ ಸಮಯದ ಸಂಭಾಷಣೆಯ ನಂತರ, ಮಾನವನು ಉತ್ತರಗಳು ಕಂಪ್ಯೂಟರ್‌ನಿಂದ ಬಂದವೆಯೇ ಎಂದು ನಿರ್ಧರಿಸಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ಆ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು *ಚಿಂತಿಸುವುದಾಗಿ* ಹೇಳಬಹುದೇ? + +### ಪ್ರೇರಣೆ - 'ನಕಲಿ ಆಟ' + +ಈ ಕಲ್ಪನೆ ಒಂದು ಪಕ್ಷದ ಆಟದಿಂದ ಬಂದಿದೆ, ಅದನ್ನು *ನಕಲಿ ಆಟ* ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಅಲ್ಲಿ ಒಂದು ಪ್ರಶ್ನೆಗಾರನು ಒಬ್ಬನಾಗಿ ಕೊಠಡಿಯಲ್ಲಿ ಇರುತ್ತಾನೆ ಮತ್ತು ಇನ್ನೊಂದು ಕೊಠಡಿಯಲ್ಲಿ ಇರುವ ಇಬ್ಬರಲ್ಲಿ ಯಾರು ಪುರುಷ ಮತ್ತು ಯಾರು ಮಹಿಳೆ ಎಂದು ನಿರ್ಧರಿಸುವ ಕಾರ್ಯವನ್ನು ಹೊಂದಿರುತ್ತಾನೆ. ಪ್ರಶ್ನೆಗಾರನು ಟಿಪ್ಪಣಿಗಳನ್ನು ಕಳುಹಿಸಬಹುದು ಮತ್ತು ಬರೆಯಲಾದ ಉತ್ತರಗಳು ರಹಸ್ಯ ವ್ಯಕ್ತಿಯ ಲಿಂಗವನ್ನು ಬಹಿರಂಗಪಡಿಸುವಂತಹ ಪ್ರಶ್ನೆಗಳನ್ನು ಯೋಚಿಸಬೇಕು. ಖಂಡಿತವಾಗಿ, ಇನ್ನೊಂದು ಕೊಠಡಿಯಲ್ಲಿ ಇರುವ ಆಟಗಾರರು ಪ್ರಶ್ನೆಗಾರನನ್ನು ತಪ್ಪುಮಾಡಲು ಅಥವಾ ಗೊಂದಲಕ್ಕೆ ಒಳಪಡಿಸಲು ಉತ್ತರಿಸುತ್ತಾರೆ, ಆದರೆ ಸತ್ಯವಂತಿಕೆಯಿಂದ ಉತ್ತರಿಸುತ್ತಿರುವಂತೆ ಕಾಣಿಸುವ ಪ್ರಯತ್ನ ಮಾಡುತ್ತಾರೆ. + +### ಎಲಿಜಾ ಅಭಿವೃದ್ಧಿ + +1960ರ ದಶಕದಲ್ಲಿ MIT ವಿಜ್ಞಾನಿ *ಜೋಸೆಫ್ ವೈಜನ್‌ಬಾಮ್* [*ಎಲಿಜಾ*](https://wikipedia.org/wiki/ELIZA) ಎಂಬ ಕಂಪ್ಯೂಟರ್ 'ಥೆರಪಿಸ್ಟ್' ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದರು, ಅದು ಮಾನವನಿಗೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಿ ಅವರ ಉತ್ತರಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡಂತೆ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತಿತ್ತು. ಆದರೆ, ಎಲಿಜಾ ವಾಕ್ಯವನ್ನು ಪಾರ್ಸ್ ಮಾಡಿ ಕೆಲವು ವ್ಯಾಕರಣ ರಚನೆಗಳು ಮತ್ತು ಪ್ರಮುಖ ಪದಗಳನ್ನು ಗುರುತಿಸಬಹುದು, ಆದರೂ ವಾಕ್ಯವನ್ನು *ಅರ್ಥಮಾಡಿಕೊಂಡಿದೆ* ಎಂದು ಹೇಳಲಾಗುವುದಿಲ್ಲ. ಎಲಿಜಾ "**ನಾನು** ದುಃಖಿತ" ಎಂಬ ವಾಕ್ಯವನ್ನು ಪಡೆದರೆ, ಅದು ವಾಕ್ಯದಲ್ಲಿ ಪದಗಳನ್ನು ಮರುಕ್ರಮಿಸಿ "ನೀವು ಎಷ್ಟು ಕಾಲ ದುಃಖಿತ ಇದ್ದೀರಿ" ಎಂಬ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ರೂಪಿಸಬಹುದು. + +ಇದು ಎಲಿಜಾ ವಾಕ್ಯವನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡು ಮುಂದಿನ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುತ್ತಿರುವಂತೆ ಭಾಸ ನೀಡಿತು, ಆದರೆ ವಾಸ್ತವದಲ್ಲಿ ಅದು ಕಾಲವನ್ನು ಬದಲಾಯಿಸಿ ಕೆಲವು ಪದಗಳನ್ನು ಸೇರಿಸುತ್ತಿತ್ತು. ಎಲಿಜಾ ಪ್ರತಿಕ್ರಿಯೆ ಹೊಂದಿರುವ ಪ್ರಮುಖ ಪದವನ್ನು ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ಅದು ಬದಲಾಗಿ ಅನೇಕ ವಿಭಿನ್ನ ಹೇಳಿಕೆಗಳಿಗೆ ಅನ್ವಯಿಸುವ ಸಾಧ್ಯವಿರುವ ಯಾದೃಚ್ಛಿಕ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನೀಡುತ್ತಿತ್ತು. ಉದಾಹರಣೆಗೆ, ಬಳಕೆದಾರನು "**ನೀವು** ಒಂದು ಸೈಕಲ್" ಎಂದು ಬರೆದರೆ, ಅದು "ನಾನು ಎಷ್ಟು ಕಾಲ ಸೈಕಲ್ ಆಗಿದ್ದೇನೆ?" ಎಂದು ಪ್ರತಿಕ್ರಿಯಿಸಬಹುದು, ಬದಲಾಗಿ ಹೆಚ್ಚು ಯುಕ್ತಿಪೂರ್ಣ ಪ್ರತಿಕ್ರಿಯೆಯ ಬದಲು. + +[![ಎಲಿಜಾ ಜೊತೆ ಚಾಟ್](https://img.youtube.com/vi/RMK9AphfLco/0.jpg)](https://youtu.be/RMK9AphfLco "ಎಲಿಜಾ ಜೊತೆ ಚಾಟ್") + +> 🎥 ಮೂಲ ELIZA ಪ್ರೋಗ್ರಾಂ ಕುರಿತು ವೀಡಿಯೋಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ + +> ಗಮನಿಸಿ: ನೀವು 1966 ರಲ್ಲಿ ಪ್ರಕಟಿತ [ಎಲಿಜಾ](https://cacm.acm.org/magazines/1966/1/13317-elizaa-computer-program-for-the-study-of-natural-language-communication-between-man-and-machine/abstract) ಮೂಲ ವಿವರಣೆಯನ್ನು ಓದಲು ACM ಖಾತೆ ಹೊಂದಿದ್ದರೆ ಓದಬಹುದು. ಬದಲಾಗಿ, ಎಲಿಜಾ ಬಗ್ಗೆ [ವಿಕಿಪೀಡಿಯಾ](https://wikipedia.org/wiki/ELIZA) ನಲ್ಲಿ ಓದಿ. + +## ವ್ಯಾಯಾಮ - ಮೂಲಭೂತ ಸಂಭಾಷಣಾ ಬಾಟ್ ಕೋಡಿಂಗ್ + +ಎಲಿಜಾ ಹೋಲುವ ಸಂಭಾಷಣಾ ಬಾಟ್ ಒಂದು ಪ್ರೋಗ್ರಾಂ ಆಗಿದ್ದು, ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಪಡೆಯುತ್ತದೆ ಮತ್ತು ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ ಪ್ರತಿಕ್ರಿಯಿಸುವಂತೆ ಕಾಣುತ್ತದೆ. ಎಲಿಜಾ ಹೋಲುವಂತೆ, ನಮ್ಮ ಬಾಟ್‌ ಬಳಿ ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ ಸಂಭಾಷಣೆ ನಡೆಸುತ್ತಿರುವಂತೆ ಕಾಣಿಸುವ ಹಲವು ನಿಯಮಗಳಿರಲಾರವು. ಬದಲಾಗಿ, ನಮ್ಮ ಬಾಟ್‌ಗೆ ಒಂದೇ ಸಾಮರ್ಥ್ಯವಿದೆ, ಅದು ಯಾವುದೇ ಸರಳ ಸಂಭಾಷಣೆಯಲ್ಲಿ ಕೆಲಸ ಮಾಡಬಹುದಾದ ಯಾದೃಚ್ಛಿಕ ಪ್ರತಿಕ್ರಿಯೆಗಳೊಂದಿಗೆ ಸಂಭಾಷಣೆಯನ್ನು ಮುಂದುವರಿಸುವುದು. + +### ಯೋಜನೆ + +ಸಂಭಾಷಣಾ ಬಾಟ್ ನಿರ್ಮಿಸುವಾಗ ನಿಮ್ಮ ಹಂತಗಳು: + +1. ಬಳಕೆದಾರರಿಗೆ ಬಾಟ್ ಜೊತೆ ಹೇಗೆ ಸಂವಹನ ಮಾಡಬೇಕೆಂದು ಸೂಚನೆಗಳನ್ನು ಮುದ್ರಿಸಿ +2. ಲೂಪ್ ಪ್ರಾರಂಭಿಸಿ + 1. ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಸ್ವೀಕರಿಸಿ + 2. ಬಳಕೆದಾರನಿಗೆ ನಿರ್ಗಮಿಸಲು ಕೇಳಿದ್ದರೆ, ನಿರ್ಗಮಿಸಿ + 3. ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಪ್ರಕ್ರಿಯೆ ಮಾಡಿ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆ ನಿರ್ಧರಿಸಿ (ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಪ್ರತಿಕ್ರಿಯೆ ಸಾಧ್ಯವಿರುವ ಸಾಮಾನ್ಯ ಪ್ರತಿಕ್ರಿಯೆಗಳ ಪಟ್ಟಿಯಿಂದ ಯಾದೃಚ್ಛಿಕ ಆಯ್ಕೆ) + 4. ಪ್ರತಿಕ್ರಿಯೆ ಮುದ್ರಿಸಿ +3. ಹಂತ 2 ಗೆ ಮರುಹೊಂದಿಸಿ + +### ಬಾಟ್ ನಿರ್ಮಾಣ + +ಮುಂದೆ ಬಾಟ್ ರಚಿಸೋಣ. ನಾವು ಕೆಲವು ವಾಕ್ಯಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸೋಣ. + +1. ಕೆಳಗಿನ ಯಾದೃಚ್ಛಿಕ ಪ್ರತಿಕ್ರಿಯೆಗಳೊಂದಿಗೆ Python ನಲ್ಲಿ ಈ ಬಾಟ್ ಅನ್ನು ನೀವು ಸ್ವತಃ ರಚಿಸಿ: + + ```python + random_responses = ["That is quite interesting, please tell me more.", + "I see. Do go on.", + "Why do you say that?", + "Funny weather we've been having, isn't it?", + "Let's change the subject.", + "Did you catch the game last night?"] + ``` + + ಮಾರ್ಗದರ್ಶನಕ್ಕಾಗಿ ಕೆಲವು ಉದಾಹರಣಾ ಔಟ್‌ಪುಟ್ (ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ `>` ಚಿಹ್ನೆಯಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಸಾಲುಗಳಲ್ಲಿ): + + ```output + Hello, I am Marvin, the simple robot. + You can end this conversation at any time by typing 'bye' + After typing each answer, press 'enter' + How are you today? + > I am good thanks + That is quite interesting, please tell me more. + > today I went for a walk + Did you catch the game last night? + > I did, but my team lost + Funny weather we've been having, isn't it? + > yes but I hope next week is better + Let's change the subject. + > ok, lets talk about music + Why do you say that? + > because I like music! + Why do you say that? + > bye + It was nice talking to you, goodbye! + ``` + + ಈ ಕಾರ್ಯಕ್ಕೆ ಒಂದು ಸಾಧ್ಯವಾದ ಪರಿಹಾರವನ್ನು [ಇಲ್ಲಿ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/1-Introduction-to-NLP/solution/bot.py) ನೋಡಬಹುದು + + ✅ ನಿಲ್ಲಿಸಿ ಮತ್ತು ಪರಿಗಣಿಸಿ + + 1. ಯಾದೃಚ್ಛಿಕ ಪ್ರತಿಕ್ರಿಯೆಗಳು ಯಾರನ್ನಾದರೂ ಬಾಟ್ ಅವರನ್ನು ನಿಜವಾಗಿಯೂ ಅರ್ಥಮಾಡಿಕೊಂಡಿದೆ ಎಂದು ಭಾವಿಸುವಂತೆ 'ತಪ್ಪಿಸುವುದೇ' ಎಂದು ನೀವು ಭಾವಿಸುತ್ತೀರಾ? + 2. ಬಾಟ್ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಲು ಯಾವ ವೈಶಿಷ್ಟ್ಯಗಳು ಬೇಕಾಗುತ್ತವೆ? + 3. ಒಂದು ಬಾಟ್ ವಾಕ್ಯದ ಅರ್ಥವನ್ನು ನಿಜವಾಗಿಯೂ 'ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದರೆ', ಅದು ಸಂಭಾಷಣೆಯ ಹಿಂದಿನ ವಾಕ್ಯಗಳ ಅರ್ಥವನ್ನು 'ಸ್ಮರಿಸಬೇಕಾಗುತ್ತದೆಯೇ'? + +--- + +## 🚀ಸವಾಲು + +ಮೇಲಿನ "ನಿಲ್ಲಿಸಿ ಮತ್ತು ಪರಿಗಣಿಸಿ" ಅಂಶಗಳಲ್ಲಿ ಒಂದನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಅದನ್ನು ಕೋಡ್‌ನಲ್ಲಿ ಅನುಷ್ಠಾನಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ ಪೇಪರ್‌ನಲ್ಲಿ ಪ್ಸ್ಯೂಡೋಕೋಡ್ ಬಳಸಿ ಪರಿಹಾರವನ್ನು ಬರೆಯಿರಿ. + +ಮುಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು ನೈಸರ್ಗಿಕ ಭಾಷೆಯನ್ನು ಪಾರ್ಸ್ ಮಾಡುವ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನದ ಹಲವಾರು ಇತರ ವಿಧಾನಗಳನ್ನು ಕಲಿಯುತ್ತೀರಿ. + +## [ಪೋಸ್ಟ್-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಕೆಳಗಿನ ಉಲ್ಲೇಖಗಳನ್ನು ಹೆಚ್ಚಿನ ಓದು ಅವಕಾಶಗಳಾಗಿ ನೋಡಿ. + +### ಉಲ್ಲೇಖಗಳು + +1. ಶೂಬರ್ಟ್, ಲೆನ್ಹಾರ್ಟ್, "ಗಣನಾತ್ಮಕ ಭಾಷಾಶಾಸ್ತ್ರ", *ಸ್ಟ್ಯಾನ್ಫರ್ಡ್ ತತ್ವಶಾಸ್ತ್ರ ನಿಘಂಟು* (ವಸಂತ 2020 ಆವೃತ್ತಿ), ಎಡ್ವರ್ಡ್ ಎನ್. ಜಾಲ್ಟಾ (ಸಂಪಾದಕ), URL = . +2. ಪ್ರಿನ್ಸ್ಟನ್ ವಿಶ್ವವಿದ್ಯಾಲಯ "ವರ್ಡ್‌ನೆಟ್ ಬಗ್ಗೆ." [WordNet](https://wordnet.princeton.edu/). ಪ್ರಿನ್ಸ್ಟನ್ ವಿಶ್ವವಿದ್ಯಾಲಯ. 2010. + +## ಹೋಮ್ವರ್ಕ್ + +[ಬಾಟ್ ಹುಡುಕಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/1-Introduction-to-NLP/assignment.md b/translations/kn/6-NLP/1-Introduction-to-NLP/assignment.md new file mode 100644 index 000000000..88a5f7b2b --- /dev/null +++ b/translations/kn/6-NLP/1-Introduction-to-NLP/assignment.md @@ -0,0 +1,27 @@ + +# ಬಾಟ್ ಹುಡುಕಿ + +## ಸೂಚನೆಗಳು + +ಬಾಟ್‌ಗಳು ಎಲ್ಲೆಡೆ ಇವೆ. ನಿಮ್ಮ ಕಾರ್ಯ: ಒಂದು ಹುಡುಕಿ ಅದನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳಿ! ನೀವು ಅವುಗಳನ್ನು ವೆಬ್‌ಸೈಟ್‌ಗಳಲ್ಲಿ, ಬ್ಯಾಂಕಿಂಗ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಮತ್ತು ಫೋನಿನಲ್ಲಿ ಕಂಡುಹಿಡಿಯಬಹುದು, ಉದಾಹರಣೆಗೆ ನೀವು ಹಣಕಾಸು ಸೇವಾ ಕಂಪನಿಗಳಿಗೆ ಸಲಹೆ ಅಥವಾ ಖಾತೆ ಮಾಹಿತಿಗಾಗಿ ಕರೆ ಮಾಡಿದಾಗ. ಬಾಟ್ ಅನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಮತ್ತು ನೀವು ಅದನ್ನು ಗೊಂದಲಕ್ಕೆ ತರುವ ಸಾಧ್ಯತೆ ಇದೆಯೇ ಎಂದು ನೋಡಿ. ನೀವು ಬಾಟ್ ಅನ್ನು ಗೊಂದಲಕ್ಕೆ ತರುವುದಾದರೆ, ಅದು ಏಕೆ ಸಂಭವಿಸಿತು ಎಂದು ನೀವು ಯೋಚಿಸುತ್ತೀರಿ? ನಿಮ್ಮ ಅನುಭವದ ಬಗ್ಗೆ ಒಂದು ಚಿಕ್ಕ ಪ್ರಬಂಧವನ್ನು ಬರೆಯಿರಿ. + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | --------------------- | +| | ಪೂರ್ಣ ಪುಟದ ಪ್ರಬಂಧ ಬರೆಯಲಾಗಿದೆ, ಅಂದಾಜು ಬಾಟ್ ವಾಸ್ತುಶಿಲ್ಪವನ್ನು ವಿವರಿಸಿ ಮತ್ತು ಅದರೊಂದಿಗೆ ನಿಮ್ಮ ಅನುಭವವನ್ನು ವಿವರಿಸಲಾಗಿದೆ | ಪ್ರಬಂಧ ಅಪೂರ್ಣ ಅಥವಾ ಚೆನ್ನಾಗಿ ಸಂಶೋಧಿಸಲ್ಪಟ್ಟಿಲ್ಲ | ಯಾವುದೇ ಪ್ರಬಂಧ ಸಲ್ಲಿಸಲಾಗಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/2-Tasks/README.md b/translations/kn/6-NLP/2-Tasks/README.md new file mode 100644 index 000000000..a91f20506 --- /dev/null +++ b/translations/kn/6-NLP/2-Tasks/README.md @@ -0,0 +1,230 @@ + +# ಸಾಮಾನ್ಯ ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ಕಾರ್ಯಗಳು ಮತ್ತು ತಂತ್ರಗಳು + +ಬಹುತೇಕ *ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ* ಕಾರ್ಯಗಳಿಗೆ, ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬೇಕಾದ ಪಠ್ಯವನ್ನು ವಿಭಜಿಸಿ, ಪರಿಶೀಲಿಸಿ, ಮತ್ತು ಫಲಿತಾಂಶಗಳನ್ನು ನಿಯಮಗಳು ಮತ್ತು ಡೇಟಾ ಸೆಟ್‌ಗಳೊಂದಿಗೆ ಸಂಗ್ರಹಿಸಬೇಕು ಅಥವಾ ಕ್ರಾಸ್ ರೆಫರೆನ್ಸ್ ಮಾಡಬೇಕು. ಈ ಕಾರ್ಯಗಳು, ಪ್ರೋಗ್ರಾಮರ್‌ಗೆ ಪಠ್ಯದ _ಅರ್ಥ_ ಅಥವಾ _ಉದ್ದೇಶ_ ಅಥವಾ ಕೇವಲ ಪದಗಳ ಮತ್ತು ಪದಗಳ _ಆವರ್ತನ_ ಅನ್ನು ಪಡೆಯಲು ಅನುಮತಿಸುತ್ತವೆ. + +## [ಪೂರ್ವ-ವ್ಯಾಖ್ಯಾನ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +ಪಠ್ಯವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವ ಸಾಮಾನ್ಯ ತಂತ್ರಗಳನ್ನು ಕಂಡುಹಿಡಿಯೋಣ. ಯಂತ್ರ ಅಧ್ಯಯನದೊಂದಿಗೆ ಸಂಯೋಜಿಸಿದಾಗ, ಈ ತಂತ್ರಗಳು ನಿಮಗೆ ದೊಡ್ಡ ಪ್ರಮಾಣದ ಪಠ್ಯವನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ವಿಶ್ಲೇಷಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ. ಈ ಕಾರ್ಯಗಳಿಗೆ ML ಅನ್ವಯಿಸುವ ಮೊದಲು, NLP ತಜ್ಞನು ಎದುರಿಸುವ ಸಮಸ್ಯೆಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳೋಣ. + +## NLP ಗೆ ಸಾಮಾನ್ಯವಾದ ಕಾರ್ಯಗಳು + +ನೀವು ಕೆಲಸ ಮಾಡುತ್ತಿರುವ ಪಠ್ಯವನ್ನು ವಿಶ್ಲೇಷಿಸುವ ವಿವಿಧ ವಿಧಾನಗಳಿವೆ. ನೀವು ನಿರ್ವಹಿಸಬಹುದಾದ ಕಾರ್ಯಗಳಿವೆ ಮತ್ತು ಈ ಕಾರ್ಯಗಳ ಮೂಲಕ ನೀವು ಪಠ್ಯದ ಅರ್ಥವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ನಿರ್ಣಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ಈ ಕಾರ್ಯಗಳನ್ನು ಕ್ರಮವಾಗಿ ನಿರ್ವಹಿಸುತ್ತೀರಿ. + +### ಟೋಕನೈಜೆಷನ್ + +ಬಹುಶಃ ಬಹುತೇಕ NLP ಅಲ್ಗಾರಿದಮ್‌ಗಳು ಮೊದಲಿಗೆ ಪಠ್ಯವನ್ನು ಟೋಕನ್‌ಗಳಾಗಿ ಅಥವಾ ಪದಗಳಾಗಿ ವಿಭಜಿಸಬೇಕಾಗುತ್ತದೆ. ಇದು ಸರಳವಾಗಿ ಕೇಳಿದರೂ, ವ್ಯಾಕರಣ ಚಿಹ್ನೆಗಳು ಮತ್ತು ವಿಭಿನ್ನ ಭಾಷೆಗಳ ಪದ ಮತ್ತು ವಾಕ್ಯ ವಿಭಾಜಕಗಳನ್ನು ಗಮನದಲ್ಲಿಟ್ಟುಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ, ಇದು ಸಂಕೀರ್ಣವಾಗಬಹುದು. ನೀವು ವಿಭಜನೆಗಳನ್ನು ನಿರ್ಧರಿಸಲು ವಿವಿಧ ವಿಧಾನಗಳನ್ನು ಬಳಸಬೇಕಾಗಬಹುದು. + +![tokenization](../../../../translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.kn.png) +> **Pride and Prejudice** ನಿಂದ ವಾಕ್ಯವನ್ನು ಟೋಕನೈಸ್ ಮಾಡಲಾಗಿದೆ. ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ + +### ಎम्बೆಡ್ಡಿಂಗ್ಸ್ + +[ಪದ ಎम्बೆಡ್ಡಿಂಗ್ಸ್](https://wikipedia.org/wiki/Word_embedding) ನಿಮ್ಮ ಪಠ್ಯ ಡೇಟಾವನ್ನು ಸಂಖ್ಯಾತ್ಮಕವಾಗಿ ಪರಿವರ್ತಿಸುವ ವಿಧಾನವಾಗಿದೆ. ಎम्बೆಡ್ಡಿಂಗ್ಸ್ ಅನ್ನು ಈ ರೀತಿಯಲ್ಲಿ ಮಾಡಲಾಗುತ್ತದೆ, ಅಂದರೆ ಸಮಾನ ಅರ್ಥವಿರುವ ಪದಗಳು ಅಥವಾ ಜೊತೆಯಾಗಿ ಬಳಸಲಾಗುವ ಪದಗಳು ಗುಂಪು formed ಮಾಡುತ್ತವೆ. + +![word embeddings](../../../../translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.kn.png) +> "ನಿಮ್ಮ ನರಗಳಿಗೆ ನನಗೆ ಅತ್ಯಂತ ಗೌರವವಿದೆ, ಅವು ನನ್ನ ಹಳೆಯ ಸ್ನೇಹಿತರು." - **Pride and Prejudice** ನ ವಾಕ್ಯಕ್ಕೆ ಪದ ಎम्बೆಡ್ಡಿಂಗ್ಸ್. ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ + +✅ ಪದ ಎम्बೆಡ್ಡಿಂಗ್ಸ್ ಅನ್ನು ಪ್ರಯೋಗಿಸಲು [ಈ ರೋಚಕ ಸಾಧನವನ್ನು](https://projector.tensorflow.org/) ಪ್ರಯತ್ನಿಸಿ. ಒಂದು ಪದವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಸಮಾನ ಪದಗಳ ಗುಂಪುಗಳು ತೋರಿಸಲಾಗುತ್ತದೆ: 'toy' 'disney', 'lego', 'playstation', ಮತ್ತು 'console' ಜೊತೆಗೆ ಗುಂಪು formed ಮಾಡುತ್ತದೆ. + +### ಪಾರ್ಸಿಂಗ್ ಮತ್ತು ಭಾಗ-ಭಾಷಾ ಟ್ಯಾಗಿಂಗ್ + +ಪ್ರತಿ ಟೋಕನೈಸ್ ಮಾಡಿದ ಪದವನ್ನು ಭಾಷೆಯ ಭಾಗವಾಗಿ ಟ್ಯಾಗ್ ಮಾಡಬಹುದು - ನಾಮಪದ, ಕ್ರಿಯಾಪದ, ಅಥವಾ ವಿಶೇಷಣ. ವಾಕ್ಯ `the quick red fox jumped over the lazy brown dog` ಅನ್ನು POS ಟ್ಯಾಗ್ ಮಾಡಿದರೆ fox = ನಾಮಪದ, jumped = ಕ್ರಿಯಾಪದ ಎಂದು ಇರಬಹುದು. + +![parsing](../../../../translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.kn.png) + +> **Pride and Prejudice** ನಿಂದ ವಾಕ್ಯವನ್ನು ಪಾರ್ಸ್ ಮಾಡಲಾಗಿದೆ. ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ + +ಪಾರ್ಸಿಂಗ್ ಎಂದರೆ ವಾಕ್ಯದಲ್ಲಿ ಯಾವ ಪದಗಳು ಪರಸ್ಪರ ಸಂಬಂಧ ಹೊಂದಿವೆ ಎಂದು ಗುರುತಿಸುವುದು - ಉದಾಹರಣೆಗೆ `the quick red fox jumped` ಒಂದು ವಿಶೇಷಣ-ನಾಮಪದ-ಕ್ರಿಯಾಪದ ಕ್ರಮವಾಗಿದ್ದು, ಇದು `lazy brown dog` ಕ್ರಮದಿಂದ ವಿಭಿನ್ನವಾಗಿದೆ. + +### ಪದ ಮತ್ತು ವಾಕ್ಯांश ಆವರ್ತನೆಗಳು + +ದೊಡ್ಡ ಪಠ್ಯವನ್ನು ವಿಶ್ಲೇಷಿಸುವಾಗ ಉಪಯುಕ್ತ ವಿಧಾನವೆಂದರೆ ಪ್ರತಿಯೊಂದು ಪದ ಅಥವಾ ಆಸಕ್ತಿಯ ವಾಕ್ಯಾಂಶದ ಡಿಕ್ಷನರಿ ನಿರ್ಮಿಸಿ, ಅದು ಎಷ್ಟು ಬಾರಿ ಕಾಣಿಸುತ್ತದೆ ಎಂದು ಎಣಿಸುವುದು. ವಾಕ್ಯ `the quick red fox jumped over the lazy brown dog` ನಲ್ಲಿ 'the' ಪದದ ಆವರ್ತನೆ 2 ಆಗಿದೆ. + +ನಾವು ಪದಗಳ ಆವರ್ತನೆಯನ್ನು ಎಣಿಸುವ ಉದಾಹರಣೆಯ ಪಠ್ಯವನ್ನು ನೋಡೋಣ. ರುದ್ಯಾರ್ಡ್ ಕಿಪ್ಲಿಂಗ್ ಅವರ ಕವಿತೆ The Winners ನಲ್ಲಿ ಕೆಳಗಿನ ಪದ್ಯವಿದೆ: + +```output +What the moral? Who rides may read. +When the night is thick and the tracks are blind +A friend at a pinch is a friend, indeed, +But a fool to wait for the laggard behind. +Down to Gehenna or up to the Throne, +He travels the fastest who travels alone. +``` + +ವಾಕ್ಯಾಂಶ ಆವರ್ತನೆಗಳು ಕೇಸ್-ಅಸಂವೇದನಶೀಲ ಅಥವಾ ಕೇಸ್-ಸಂವೇದನಶೀಲವಾಗಿರಬಹುದು, ಉದಾಹರಣೆಗೆ `a friend` ವಾಕ್ಯಾಂಶದ ಆವರ್ತನೆ 2 ಆಗಿದ್ದು, `the` ಆವರ್ತನೆ 6 ಆಗಿದೆ, ಮತ್ತು `travels` 2 ಆಗಿದೆ. + +### ಎನ್-ಗ್ರಾಮ್ಸ್ + +ಪಠ್ಯವನ್ನು ನಿಗದಿತ ಉದ್ದದ ಪದಗಳ ಸರಣಿಗಳಾಗಿ ವಿಭಜಿಸಬಹುದು, ಒಂದು ಪದ (ಯುನಿಗ್ರಾಮ್), ಎರಡು ಪದಗಳು (ಬಿಗ್ರಾಮ್), ಮೂರು ಪದಗಳು (ಟ್ರಿಗ್ರಾಮ್) ಅಥವಾ ಯಾವುದೇ ಸಂಖ್ಯೆಯ ಪದಗಳು (ಎನ್-ಗ್ರಾಮ್). + +ಉದಾಹರಣೆಗೆ `the quick red fox jumped over the lazy brown dog` ನ 2-ಗ್ರಾಮ್ ಅಂಕೆ ಈ ಕೆಳಗಿನ ಎನ್-ಗ್ರಾಮ್‌ಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ: + +1. the quick +2. quick red +3. red fox +4. fox jumped +5. jumped over +6. over the +7. the lazy +8. lazy brown +9. brown dog + +ಇದನ್ನು ವಾಕ್ಯದ ಮೇಲೆ ಸ್ಲೈಡಿಂಗ್ ಬಾಕ್ಸ್ ಆಗಿ ದೃಶ್ಯೀಕರಿಸುವುದು ಸುಲಭವಾಗಬಹುದು. ಇಲ್ಲಿ 3 ಪದಗಳ ಎನ್-ಗ್ರಾಮ್‌ಗಳಿಗಾಗಿ, ಪ್ರತಿ ವಾಕ್ಯದಲ್ಲಿ ಎನ್-ಗ್ರಾಮ್ ಬೋಲ್ಡ್ ಆಗಿದೆ: + +1. **the quick red** fox jumped over the lazy brown dog +2. the **quick red fox** jumped over the lazy brown dog +3. the quick **red fox jumped** over the lazy brown dog +4. the quick red **fox jumped over** the lazy brown dog +5. the quick red fox **jumped over the** lazy brown dog +6. the quick red fox jumped **over the lazy** brown dog +7. the quick red fox jumped over **the lazy brown** dog +8. the quick red fox jumped over the **lazy brown dog** + +![n-grams sliding window](../../../../6-NLP/2-Tasks/images/n-grams.gif) + +> ಎನ್-ಗ್ರಾಮ್ ಮೌಲ್ಯ 3: ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ + +### ನಾಮಪದ ವಾಕ್ಯಾಂಶ ಹೊರತೆಗೆಯುವುದು + +ಬಹುತೇಕ ವಾಕ್ಯಗಳಲ್ಲಿ, ನಾಮಪದವು ವಿಷಯ ಅಥವಾ ವಸ್ತುವಾಗಿರುತ್ತದೆ. ಇಂಗ್ಲಿಷ್‌ನಲ್ಲಿ, ಇದು ಸಾಮಾನ್ಯವಾಗಿ 'a' ಅಥವಾ 'an' ಅಥವಾ 'the' ಮುಂಚಿತವಾಗಿರುವುದರಿಂದ ಗುರುತಿಸಬಹುದು. ವಾಕ್ಯದ ಅರ್ಥವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಪ್ರಯತ್ನಿಸುವಾಗ 'ನಾಮಪದ ವಾಕ್ಯಾಂಶವನ್ನು ಹೊರತೆಗೆಯುವುದು' NLP ನಲ್ಲಿ ಸಾಮಾನ್ಯ ಕಾರ್ಯವಾಗಿದೆ. + +✅ "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun." ಎಂಬ ವಾಕ್ಯದಲ್ಲಿ, ನೀವು ನಾಮಪದ ವಾಕ್ಯಾಂಶಗಳನ್ನು ಗುರುತಿಸಬಹುದೇ? + +`the quick red fox jumped over the lazy brown dog` ವಾಕ್ಯದಲ್ಲಿ 2 ನಾಮಪದ ವಾಕ್ಯಾಂಶಗಳಿವೆ: **quick red fox** ಮತ್ತು **lazy brown dog**. + +### ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ + +ವಾಕ್ಯ ಅಥವಾ ಪಠ್ಯವನ್ನು ಭಾವನೆಗಾಗಿ ವಿಶ್ಲೇಷಿಸಬಹುದು, ಅದು *ಧನಾತ್ಮಕ* ಅಥವಾ *ನಕಾರಾತ್ಮಕ* ಆಗಿದೆಯೇ ಎಂದು. ಭಾವನೆ *ಧ್ರುವೀಯತೆ* ಮತ್ತು *ವಸ್ತುನಿಷ್ಠತೆ/ವಿಷಯನಿಷ್ಠತೆ* ನಲ್ಲಿ ಅಳೆಯಲಾಗುತ್ತದೆ. ಧ್ರುವೀಯತೆ -1.0 ರಿಂದ 1.0 (ನಕಾರಾತ್ಮಕದಿಂದ ಧನಾತ್ಮಕ) ಮತ್ತು 0.0 ರಿಂದ 1.0 (ಅತ್ಯಂತ ವಸ್ತುನಿಷ್ಠದಿಂದ ಅತ್ಯಂತ ವಿಷಯನಿಷ್ಠ) ಅಳೆಯಲಾಗುತ್ತದೆ. + +✅ ನಂತರ ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನ ಬಳಸಿ ಭಾವನೆಯನ್ನು ನಿರ್ಧರಿಸುವ ವಿವಿಧ ವಿಧಾನಗಳನ್ನು ಕಲಿಯುತ್ತೀರಿ, ಆದರೆ ಒಂದು ವಿಧಾನವೆಂದರೆ ಮಾನವ ತಜ್ಞರಿಂದ ಧನಾತ್ಮಕ ಅಥವಾ ನಕಾರಾತ್ಮಕ ಎಂದು ವರ್ಗೀಕರಿಸಲಾದ ಪದಗಳು ಮತ್ತು ವಾಕ್ಯಾಂಶಗಳ ಪಟ್ಟಿ ಹೊಂದಿ, ಆ ಮಾದರಿಯನ್ನು ಪಠ್ಯಕ್ಕೆ ಅನ್ವಯಿಸಿ ಧ್ರುವೀಯತೆ ಅಂಕೆಯನ್ನು ಲೆಕ್ಕಿಸಬಹುದು. ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡಬಹುದು ಮತ್ತು ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ ಕಡಿಮೆ ಪರಿಣಾಮಕಾರಿಯಾಗಬಹುದು ಎಂದು ನೀವು ನೋಡಬಹುದೇ? + +### ರೂಪಾಂತರ + +ರೂಪಾಂತರವು ನಿಮಗೆ ಒಂದು ಪದವನ್ನು singular ಅಥವಾ plural ರೂಪದಲ್ಲಿ ಪಡೆಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +### ಲೆಮಟೈಜೆಷನ್ + +*ಲೆಮ್ಮಾ* ಎಂದರೆ ಪದಗಳ ಗುಂಪಿಗೆ ಮೂಲ ಅಥವಾ ಮುಖ್ಯ ಪದ, ಉದಾಹರಣೆಗೆ *flew*, *flies*, *flying* ಗಳ ಲೆಮ್ಮಾ ಕ್ರಿಯಾಪದ *fly* ಆಗಿದೆ. + +NLP ಸಂಶೋಧಕರಿಗೆ ಉಪಯುಕ್ತವಾದ ಡೇಟಾಬೇಸ್‌ಗಳು ಕೂಡ ಲಭ್ಯವಿವೆ, ವಿಶೇಷವಾಗಿ: + +### ವರ್ಡ್‌ನೆಟ್ + +[WordNet](https://wordnet.princeton.edu/) ಪದಗಳು, ಸಮಾನಾರ್ಥಕಗಳು, ವಿರುದ್ಧಾರ್ಥಕಗಳು ಮತ್ತು ವಿವಿಧ ಭಾಷೆಗಳ ಪ್ರತಿಯೊಂದು ಪದಕ್ಕೆ ಅನೇಕ ವಿವರಗಳ ಡೇಟಾಬೇಸ್ ಆಗಿದೆ. ಅನುವಾದಗಳು, ಸ್ಪೆಲ್ ಚೆಕ್‌ಗಳು ಅಥವಾ ಯಾವುದೇ ರೀತಿಯ ಭಾಷಾ ಸಾಧನಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ ಇದು ಅತ್ಯಂತ ಉಪಯುಕ್ತವಾಗಿದೆ. + +## NLP ಗ್ರಂಥಾಲಯಗಳು + +ಸೌಭಾಗ್ಯವಶಾತ್, ನೀವು ಈ ಎಲ್ಲಾ ತಂತ್ರಗಳನ್ನು ಸ್ವತಃ ನಿರ್ಮಿಸಬೇಕಾಗಿಲ್ಲ, ಏಕೆಂದರೆ ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ಅಥವಾ ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಪರಿಣತಿ ಹೊಂದದ ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರಿಗೆ ಬಹಳ ಸುಲಭವಾಗುವ ಅತ್ಯುತ್ತಮ Python ಗ್ರಂಥಾಲಯಗಳು ಲಭ್ಯವಿವೆ. ಮುಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಇವುಗಳ ಇನ್ನಷ್ಟು ಉದಾಹರಣೆಗಳಿವೆ, ಆದರೆ ಇಲ್ಲಿ ನೀವು ಮುಂದಿನ ಕಾರ್ಯಕ್ಕೆ ಸಹಾಯ ಮಾಡುವ ಕೆಲವು ಉಪಯುಕ್ತ ಉದಾಹರಣೆಗಳನ್ನು ಕಲಿಯುತ್ತೀರಿ. + +### ವ್ಯಾಯಾಮ - `TextBlob` ಗ್ರಂಥಾಲಯ ಬಳಕೆ + +ಈ ರೀತಿಯ ಕಾರ್ಯಗಳನ್ನು ನಿಭಾಯಿಸಲು ಸಹಾಯಕ API ಗಳನ್ನು ಹೊಂದಿರುವ TextBlob ಎಂಬ ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸಿ. TextBlob "ದೊಡ್ಡ [NLTK](https://nltk.org) ಮತ್ತು [pattern](https://github.com/clips/pattern) ಗ್ರಂಥಾಲಯಗಳ ಮೇಲೆ ನಿಂತಿದೆ ಮತ್ತು ಎರಡರೊಂದಿಗೆ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ." ಇದರ API ನಲ್ಲಿ ಸಾಕಷ್ಟು ML ಒಳಗೊಂಡಿದೆ. + +> ಗಮನಿಸಿ: ಅನುಭವಸಂಪನ್ನ Python ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರಿಗೆ ಶಿಫಾರಸು ಮಾಡಲಾದ TextBlob ಗೆ ಉಪಯುಕ್ತ [ತ್ವರಿತ ಪ್ರಾರಂಭ](https://textblob.readthedocs.io/en/dev/quickstart.html#quickstart) ಮಾರ್ಗದರ್ಶಿ ಲಭ್ಯವಿದೆ + +*ನಾಮಪದ ವಾಕ್ಯಾಂಶಗಳನ್ನು* ಗುರುತಿಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ, TextBlob ನಾಮಪದ ವಾಕ್ಯಾಂಶಗಳನ್ನು ಹುಡುಕಲು ಹಲವಾರು ಎಕ್ಸ್ಟ್ರಾಕ್ಟರ್ ಆಯ್ಕೆಗಳನ್ನು ನೀಡುತ್ತದೆ. + +1. `ConllExtractor` ಅನ್ನು ನೋಡಿ. + + ```python + from textblob import TextBlob + from textblob.np_extractors import ConllExtractor + # ನಂತರ ಬಳಸಲು Conll ಎಕ್ಸ್ಟ್ರಾಕ್ಟರ್ ಅನ್ನು ಆಮದುಮಾಡಿ ಮತ್ತು ರಚಿಸಿ + extractor = ConllExtractor() + + # ನಂತರ ನೀವು ನಾಮಪದ ವಾಕ್ಯಘಟಕ ಎಕ್ಸ್ಟ್ರಾಕ್ಟರ್ ಬೇಕಾದಾಗ: + user_input = input("> ") + user_input_blob = TextBlob(user_input, np_extractor=extractor) # ಡೀಫಾಲ್ಟ್ ಅಲ್ಲದ ಎಕ್ಸ್ಟ್ರಾಕ್ಟರ್ ಸೂಚಿಸಲಾಗಿದೆ ಎಂದು ಗಮನಿಸಿ + np = user_input_blob.noun_phrases + ``` + + > ಇಲ್ಲಿ ಏನಾಗುತ್ತಿದೆ? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor) "ConLL-2000 ತರಬೇತಿ ಕಾರ್ಪಸ್ ಬಳಸಿ ಚಂಕ್ ಪಾರ್ಸಿಂಗ್ ಮೂಲಕ ತರಬೇತುಗೊಂಡ ನಾಮಪದ ವಾಕ್ಯಾಂಶ ಎಕ್ಸ್ಟ್ರಾಕ್ಟರ್." ConLL-2000 2000 ರಲ್ಲಿ ನಡೆದ ಕಂಪ್ಯೂಟೇಶನಲ್ ನೈಸರ್ಗಿಕ ಭಾಷಾ ಕಲಿಕೆಯ ಸಮ್ಮೇಳನವನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಪ್ರತಿ ವರ್ಷ ಸಮ್ಮೇಳನವು NLP ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಕಾರ್ಯಾಗಾರವನ್ನು ಆಯೋಜಿಸಿತು, 2000 ರಲ್ಲಿ ಅದು ನಾಮ ಚಂಕಿಂಗ್ ಆಗಿತ್ತು. ವಾಲ್ ಸ್ಟ್ರೀಟ್ ಜರ್ನಲ್ ಮೇಲೆ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಂಡಿತು, "ಸೆಕ್ಷನ್ 15-18 ತರಬೇತಿ ಡೇಟಾ (211727 ಟೋಕನ್ಸ್) ಮತ್ತು ಸೆಕ್ಷನ್ 20 ಪರೀಕ್ಷಾ ಡೇಟಾ (47377 ಟೋಕನ್ಸ್)" ಆಗಿತ್ತು. ನೀವು ಬಳಸದ ವಿಧಾನಗಳನ್ನು [ಇಲ್ಲಿ](https://www.clips.uantwerpen.be/conll2000/chunking/) ಮತ್ತು ಫಲಿತಾಂಶಗಳನ್ನು [ಇಲ್ಲಿ](https://ifarm.nl/erikt/research/np-chunking.html) ನೋಡಬಹುದು. + +### ಸವಾಲು - NLP ಬಳಸಿ ನಿಮ್ಮ ಬಾಟ್ ಅನ್ನು ಸುಧಾರಿಸುವುದು + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ನೀವು ಬಹಳ ಸರಳ Q&A ಬಾಟ್ ನಿರ್ಮಿಸಿದ್ದೀರಿ. ಈಗ, ನೀವು ಮಾರ್ವಿನ್ ಅನ್ನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಸಹಾನುಭೂತಿಪರನಾಗಿಸಲು ನಿಮ್ಮ ಇನ್ಪುಟ್‌ನ ಭಾವನೆಯನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಮತ್ತು ಭಾವನೆಗೆ ಹೊಂದಿಕೆಯಾಗುವ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಮುದ್ರಿಸುವಿರಿ. ನೀವು `noun_phrase` ಅನ್ನು ಗುರುತಿಸಿ ಅದನ್ನು ಕುರಿತು ಇನ್ನಷ್ಟು ಇನ್ಪುಟ್ ಕೇಳಬೇಕಾಗುತ್ತದೆ. + +ಉತ್ತಮ ಸಂಭಾಷಣಾ ಬಾಟ್ ನಿರ್ಮಿಸುವ ನಿಮ್ಮ ಹಂತಗಳು: + +1. ಬಳಕೆದಾರರಿಗೆ ಬಾಟ್ ಜೊತೆ ಹೇಗೆ ಸಂವಹನ ಮಾಡಬೇಕೆಂದು ಸೂಚನೆಗಳನ್ನು ಮುದ್ರಿಸಿ +2. ಲೂಪ್ ಪ್ರಾರಂಭಿಸಿ + 1. ಬಳಕೆದಾರ ಇನ್ಪುಟ್ ಸ್ವೀಕರಿಸಿ + 2. ಬಳಕೆದಾರನಿಂದ ನಿರ್ಗಮನ ಕೇಳಿದರೆ, ನಿರ್ಗಮಿಸಿ + 3. ಬಳಕೆದಾರ ಇನ್ಪುಟ್ ಪ್ರಕ್ರಿಯೆ ಮಾಡಿ ಮತ್ತು ಸೂಕ್ತ ಭಾವನೆ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನಿರ್ಧರಿಸಿ + 4. ಭಾವನೆಯಲ್ಲಿ ನಾಮಪದ ವಾಕ್ಯಾಂಶ ಕಂಡುಬಂದರೆ, ಅದನ್ನು ಬಹುವಚನ ಮಾಡಿ ಮತ್ತು ಆ ವಿಷಯದ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ಇನ್ಪುಟ್ ಕೇಳಿ + 5. ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಮುದ್ರಿಸಿ +3. ಹಂತ 2 ಗೆ ಮರುಹೊಂದಿಸಿ + +TextBlob ಬಳಸಿ ಭಾವನೆ ನಿರ್ಧರಿಸುವ ಕೋಡ್ ತುಣುಕು ಇಲ್ಲಿದೆ. ಭಾವನೆ ಪ್ರತಿಕ್ರಿಯೆಯ ನಾಲ್ಕು *ಗ್ರೇಡಿಯಂಟ್* ಮಾತ್ರಗಳಿವೆ (ನೀವು ಹೆಚ್ಚು ಇರಿಸಬಹುದು): + +```python +if user_input_blob.polarity <= -0.5: + response = "Oh dear, that sounds bad. " +elif user_input_blob.polarity <= 0: + response = "Hmm, that's not great. " +elif user_input_blob.polarity <= 0.5: + response = "Well, that sounds positive. " +elif user_input_blob.polarity <= 1: + response = "Wow, that sounds great. " +``` + +ನಿಮಗೆ ಮಾರ್ಗದರ್ಶನ ನೀಡಲು ಕೆಲವು ಉದಾಹರಣಾ ಔಟ್‌ಪುಟ್ ಇಲ್ಲಿದೆ (ಬಳಕೆದಾರ ಇನ್ಪುಟ್ > ಚಿಹ್ನೆಯಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ): + +```output +Hello, I am Marvin, the friendly robot. +You can end this conversation at any time by typing 'bye' +After typing each answer, press 'enter' +How are you today? +> I am ok +Well, that sounds positive. Can you tell me more? +> I went for a walk and saw a lovely cat +Well, that sounds positive. Can you tell me more about lovely cats? +> cats are the best. But I also have a cool dog +Wow, that sounds great. Can you tell me more about cool dogs? +> I have an old hounddog but he is sick +Hmm, that's not great. Can you tell me more about old hounddogs? +> bye +It was nice talking to you, goodbye! +``` + +ಕಾರ್ಯಕ್ಕೆ ಒಂದು ಸಾಧ್ಯ ಪರಿಹಾರ [ಇಲ್ಲಿ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/2-Tasks/solution/bot.py) ಇದೆ + +✅ ಜ್ಞಾನ ಪರಿಶೀಲನೆ + +1. ಸಹಾನುಭೂತಿಪರ ಪ್ರತಿಕ್ರಿಯೆಗಳು ಯಾರನ್ನಾದರೂ ಬಾಟ್ ಅವರನ್ನು ನಿಜವಾಗಿಯೂ ಅರ್ಥಮಾಡಿಕೊಂಡಿದೆ ಎಂದು 'ಮೋಸಗೊಳಿಸುವುದೇ' ಎಂದು ನೀವು ಭಾವಿಸುತ್ತೀರಾ? +2. ನಾಮಪದ ವಾಕ್ಯಾಂಶವನ್ನು ಗುರುತಿಸುವುದು ಬಾಟ್ ಅನ್ನು ಹೆಚ್ಚು 'ನಂಬಬಹುದಾದ' ಮಾಡುತ್ತದೆಯೇ? +3. ವಾಕ್ಯದಿಂದ 'ನಾಮಪದ ವಾಕ್ಯಾಂಶ' ಹೊರತೆಗೆಯುವುದು ಉಪಯುಕ್ತವಾದದ್ದು ಏಕೆ? + +--- + +ಹಿಂದಿನ ಜ್ಞಾನ ಪರಿಶೀಲನೆಯಲ್ಲಿ ಬಾಟ್ ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ ಮತ್ತು ಸ್ನೇಹಿತನ ಮೇಲೆ ಪರೀಕ್ಷಿಸಿ. ಅದು ಅವರನ್ನು ಮೋಸಗೊಳಿಸಬಹುದೇ? ನೀವು ನಿಮ್ಮ ಬಾಟ್ ಅನ್ನು ಹೆಚ್ಚು 'ನಂಬಬಹುದಾದ' ಮಾಡಬಹುದೇ? + +## 🚀ಸವಾಲು + +ಹಿಂದಿನ ಜ್ಞಾನ ಪರಿಶೀಲನೆಯಲ್ಲಿ ಒಂದು ಕಾರ್ಯವನ್ನು ತೆಗೆದುಕೊಂಡು ಅದನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ. ಬಾಟ್ ಅನ್ನು ಸ್ನೇಹಿತನ ಮೇಲೆ ಪರೀಕ್ಷಿಸಿ. ಅದು ಅವರನ್ನು ಮೋಸಗೊಳಿಸಬಹುದೇ? ನೀವು ನಿಮ್ಮ ಬಾಟ್ ಅನ್ನು ಹೆಚ್ಚು 'ನಂಬಬಹುದಾದ' ಮಾಡಬಹುದೇ? + +## [ಪೋಸ್ಟ್-ವ್ಯಾಖ್ಯಾನ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಮುಂದಿನ ಕೆಲವು ಪಾಠಗಳಲ್ಲಿ ನೀವು ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆಯ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ಕಲಿಯುತ್ತೀರಿ. ಈ ರೋಚಕ ತಂತ್ರವನ್ನು [KDNuggets](https://www.kdnuggets.com/tag/nlp) ನಲ್ಲಿ ಇರುವ ಲೇಖನಗಳಲ್ಲಿ ಸಂಶೋಧಿಸಿ. + +## ನಿಯೋಜನೆ + +[ಬಾಟ್ ಅನ್ನು ಮಾತಾಡಿಸಲು ಮಾಡಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/2-Tasks/assignment.md b/translations/kn/6-NLP/2-Tasks/assignment.md new file mode 100644 index 000000000..6484ed2e5 --- /dev/null +++ b/translations/kn/6-NLP/2-Tasks/assignment.md @@ -0,0 +1,27 @@ + +# ಬಾಟ್‌ಗೆ ಪ್ರತಿಕ್ರಿಯೆ ನೀಡಿಸುವಂತೆ ಮಾಡಿ + +## ಸೂಚನೆಗಳು + +ಹಿಂದಿನ ಕೆಲವು ಪಾಠಗಳಲ್ಲಿ, ನೀವು ಚಾಟ್ ಮಾಡಲು ಮೂಲಭೂತ ಬಾಟ್ ಅನ್ನು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಿದ್ದೀರಿ. ಈ ಬಾಟ್ ನೀವು 'bye' ಎಂದು ಹೇಳುವವರೆಗೆ ಯಾದೃಚ್ಛಿಕ ಉತ್ತರಗಳನ್ನು ನೀಡುತ್ತದೆ. ನೀವು ಉತ್ತರಗಳನ್ನು ಸ್ವಲ್ಪ ಕಡಿಮೆ ಯಾದೃಚ್ಛಿಕವಾಗಿಸುವಂತೆ ಮಾಡಬಹುದೇ, ಮತ್ತು ನೀವು 'why' ಅಥವಾ 'how' ಎಂಬಂತಹ ವಿಶೇಷ ಪದಗಳನ್ನು ಹೇಳಿದಾಗ ಉತ್ತರಗಳನ್ನು ಪ್ರೇರೇಪಿಸಬಹುದೇ? ನಿಮ್ಮ ಬಾಟ್ ಅನ್ನು ವಿಸ್ತರಿಸುವಾಗ ಈ ರೀತಿಯ ಕೆಲಸವನ್ನು ಕಡಿಮೆ ಕೈಯಿಂದ ಮಾಡಲು ಯಂತ್ರ ಅಧ್ಯಯನ ಹೇಗೆ ಸಹಾಯ ಮಾಡಬಹುದು ಎಂದು ಸ್ವಲ್ಪ ಯೋಚಿಸಿ. ನಿಮ್ಮ ಕಾರ್ಯಗಳನ್ನು ಸುಲಭಗೊಳಿಸಲು ನೀವು NLTK ಅಥವಾ TextBlob ಗ್ರಂಥಾಲಯಗಳನ್ನು ಬಳಸಬಹುದು. + +## ರೂಬ್ರಿಕ್ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | --------------------------------------------- | ------------------------------------------------ | ----------------------- | +| | ಹೊಸ bot.py ಫೈಲ್ ಅನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ ಮತ್ತು ದಾಖಲೆ ಮಾಡಲಾಗಿದೆ | ಹೊಸ ಬಾಟ್ ಫೈಲ್ ಅನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ ಆದರೆ ಅದರಲ್ಲಿ ದೋಷಗಳಿವೆ | ಫೈಲ್ ಅನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/3-Translation-Sentiment/README.md b/translations/kn/6-NLP/3-Translation-Sentiment/README.md new file mode 100644 index 000000000..8c774e80d --- /dev/null +++ b/translations/kn/6-NLP/3-Translation-Sentiment/README.md @@ -0,0 +1,202 @@ + +# ಅನುವಾದ ಮತ್ತು ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ ML ನೊಂದಿಗೆ + +ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ನೀವು `TextBlob` ಬಳಸಿ ಮೂಲ ಬಾಟ್ ಅನ್ನು ಹೇಗೆ ನಿರ್ಮಿಸುವುದು ಎಂದು ಕಲಿತಿರಿ, ಇದು ಮೂಲಭೂತ NLP ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಲು ML ಅನ್ನು ಹಿಂಬದಿಯಲ್ಲಿ ಒಳಗೊಂಡಿರುವ ಗ್ರಂಥಾಲಯವಾಗಿದೆ, ಉದಾಹರಣೆಗೆ ನಾಮಪದ ವಾಕ್ಯাংশ ಹೊರತೆಗೆಯುವುದು. ಗಣಕ ಭಾಷಾಶಾಸ್ತ್ರದಲ್ಲಿ ಮತ್ತೊಂದು ಪ್ರಮುಖ ಸವಾಲು ಎಂದರೆ ಒಂದು ಮಾತಾಡುವ ಅಥವಾ ಬರೆಯುವ ಭಾಷೆಯಿಂದ ಮತ್ತೊಂದು ಭಾಷೆಗೆ ವಾಕ್ಯವನ್ನು ನಿಖರವಾಗಿ _ಅನುವಾದ_ ಮಾಡುವುದು. + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +ಅನುವಾದವು ಬಹಳ ಕಠಿಣ ಸಮಸ್ಯೆಯಾಗಿದ್ದು, ಸಾವಿರಾರು ಭಾಷೆಗಳಿದ್ದು ಪ್ರತಿಯೊಂದು ಭಾಷೆಯು ವಿಭಿನ್ನ ವ್ಯಾಕರಣ ನಿಯಮಗಳನ್ನು ಹೊಂದಿರುವುದರಿಂದ ಅದು ಇನ್ನಷ್ಟು ಸಂಕೀರ್ಣವಾಗುತ್ತದೆ. ಒಂದು ವಿಧಾನವೆಂದರೆ ಒಂದು ಭಾಷೆಯ, ಉದಾಹರಣೆಗೆ ಇಂಗ್ಲಿಷ್‌ನ, ಅಧಿಕೃತ ವ್ಯಾಕರಣ ನಿಯಮಗಳನ್ನು ಭಾಷಾ-ಆಧಾರಿತವಲ್ಲದ ರಚನೆಗೆ ಪರಿವರ್ತಿಸಿ, ನಂತರ ಅದನ್ನು ಮತ್ತೊಂದು ಭಾಷೆಗೆ ಮರಳಿಸಿ ಅನುವಾದಿಸುವುದು. ಈ ವಿಧಾನದಲ್ಲಿ ನೀವು ಕೆಳಗಿನ ಹಂತಗಳನ್ನು ಅನುಸರಿಸುತ್ತೀರಿ: + +1. **ಗುರುತಿಸುವಿಕೆ**. ಇನ್ಪುಟ್ ಭಾಷೆಯ ಪದಗಳನ್ನು ನಾಮಪದ, ಕ್ರಿಯಾಪದ ಇತ್ಯಾದಿಯಾಗಿ ಗುರುತಿಸುವುದು ಅಥವಾ ಟ್ಯಾಗ್ ಮಾಡುವುದು. +2. **ಅನುವಾದ ಸೃಷ್ಟಿ**. ಗುರಿ ಭಾಷೆಯ ಸ್ವರೂಪದಲ್ಲಿ ಪ್ರತಿ ಪದದ ನೇರ ಅನುವಾದವನ್ನು ಉತ್ಪಾದಿಸುವುದು. + +### ಉದಾಹರಣೆಯ ವಾಕ್ಯ, ಇಂಗ್ಲಿಷ್ ನಿಂದ ಐರಿಷ್ + +'ಇಂಗ್ಲಿಷ್' ನಲ್ಲಿ, ವಾಕ್ಯ _I feel happy_ ಮೂರು ಪದಗಳಿದ್ದು ಕ್ರಮದಲ್ಲಿ: + +- **ವಿಷಯ** (I) +- **ಕ್ರಿಯಾಪದ** (feel) +- **ವಿಶೇಷಣ** (happy) + +ಆದರೆ, 'ಐರಿಷ್' ಭಾಷೆಯಲ್ಲಿ, ಅದೇ ವಾಕ್ಯವು ಬಹಳ ವಿಭಿನ್ನ ವ್ಯಾಕರಣ ರಚನೆ ಹೊಂದಿದೆ - "*happy*" ಅಥವಾ "*sad*" ಎಂಬ ಭಾವನೆಗಳನ್ನು ನಿಮ್ಮ ಮೇಲೆ ಇರುವಂತೆ ವ್ಯಕ್ತಪಡಿಸಲಾಗುತ್ತದೆ. + +ಇಂಗ್ಲಿಷ್ ವಾಕ್ಯ `I feel happy` ಐರಿಷ್‌ನಲ್ಲಿ `Tá athas orm` ಆಗಿರುತ್ತದೆ. *ಶಬ್ದಾರ್ಥ* ಅನುವಾದವು `Happy is upon me` ಆಗಿರುತ್ತದೆ. + +ಐರಿಷ್ ಮಾತನಾಡುವವರು ಇಂಗ್ಲಿಷ್‌ಗೆ ಅನುವಾದಿಸುವಾಗ `I feel happy` ಎಂದು ಹೇಳುತ್ತಾರೆ, `Happy is upon me` ಎಂದು ಅಲ್ಲ, ಏಕೆಂದರೆ ಅವರು ವಾಕ್ಯದ ಅರ್ಥವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತಾರೆ, ಪದಗಳು ಮತ್ತು ವಾಕ್ಯ ರಚನೆ ವಿಭಿನ್ನವಾಗಿದ್ದರೂ. + +ಐರಿಷ್ ವಾಕ್ಯದ ಅಧಿಕೃತ ಕ್ರಮಗಳು: + +- **ಕ್ರಿಯಾಪದ** (Tá ಅಥವಾ is) +- **ವಿಶೇಷಣ** (athas, ಅಥವಾ happy) +- **ವಿಷಯ** (orm, ಅಥವಾ upon me) + +## ಅನುವಾದ + +ಸರಳ ಅನುವಾದ ಕಾರ್ಯಕ್ರಮವು ಪದಗಳನ್ನು ಮಾತ್ರ ಅನುವಾದಿಸಬಹುದು, ವಾಕ್ಯ ರಚನೆಯನ್ನು ಗಮನಿಸದೆ. + +✅ ನೀವು ವಯಸ್ಕನಾಗಿ ಎರಡನೇ (ಅಥವಾ ಮೂರನೇ ಅಥವಾ ಹೆಚ್ಚು) ಭಾಷೆಯನ್ನು ಕಲಿತಿದ್ದರೆ, ನೀವು ನಿಮ್ಮ ಮೂಲ ಭಾಷೆಯಲ್ಲಿ ಯೋಚಿಸಿ, ತಲೆಯೊಳಗೆ ಪದದಿಂದ ಪದಕ್ಕೆ ಎರಡನೇ ಭಾಷೆಗೆ ಅನುವಾದಿಸಿ, ನಂತರ ನಿಮ್ಮ ಅನುವಾದವನ್ನು ಮಾತನಾಡಲು ಪ್ರಾರಂಭಿಸಿದ್ದೀರಿ. ಇದು ಸರಳ ಅನುವಾದ ಕಂಪ್ಯೂಟರ್ ಕಾರ್ಯಕ್ರಮಗಳು ಮಾಡುವುದಕ್ಕೆ ಸಮಾನವಾಗಿದೆ. ಈ ಹಂತವನ್ನು ದಾಟಿ ಪ್ರವಾಹಿತ ಭಾಷಾ ನಿಪುಣತೆಯನ್ನು ಪಡೆಯುವುದು ಮುಖ್ಯ! + +ಸರಳ ಅನುವಾದವು ಕೆಟ್ಟ (ಮತ್ತು ಕೆಲವೊಮ್ಮೆ ಹಾಸ್ಯಾಸ್ಪದ) ತಪ್ಪು ಅನುವಾದಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ: `I feel happy` ಅನ್ನು ಐರಿಷ್‌ನಲ್ಲಿ ಶಬ್ದಾರ್ಥವಾಗಿ `Mise bhraitheann athas` ಎಂದು ಅನುವಾದಿಸಲಾಗುತ್ತದೆ. ಇದರ ಅರ್ಥ (ಶಬ್ದಾರ್ಥವಾಗಿ) `me feel happy` ಆಗಿದ್ದು, ಇದು ಮಾನ್ಯ ಐರಿಷ್ ವಾಕ್ಯವಲ್ಲ. ಇಂಗ್ಲಿಷ್ ಮತ್ತು ಐರಿಷ್ ಎರಡು ಸಮೀಪದ ದ್ವೀಪಗಳಲ್ಲಿ ಮಾತನಾಡುವ ಭಾಷೆಗಳಾಗಿದ್ದರೂ, ಅವು ವಿಭಿನ್ನ ವ್ಯಾಕರಣ ರಚನೆಗಳನ್ನು ಹೊಂದಿವೆ. + +> ನೀವು ಐರಿಷ್ ಭಾಷಾ ಪರಂಪರೆಗಳ ಬಗ್ಗೆ ಕೆಲವು ವೀಡಿಯೊಗಳನ್ನು ನೋಡಬಹುದು, ಉದಾಹರಣೆಗೆ [ಇದು](https://www.youtube.com/watch?v=mRIaLSdRMMs) + +### ಯಂತ್ರ ಅಧ್ಯಯನ ವಿಧಾನಗಳು + +ಈವರೆಗೆ, ನೀವು ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆಗೆ ಅಧಿಕೃತ ನಿಯಮಗಳ ವಿಧಾನವನ್ನು ಕಲಿತಿದ್ದೀರಿ. ಮತ್ತೊಂದು ವಿಧಾನವೆಂದರೆ ಪದಗಳ ಅರ್ಥವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ, _ಬದಲಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಬಳಸಿ ಮಾದರಿಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು_. ಮೂಲ ಮತ್ತು ಗುರಿ ಭಾಷೆಗಳಲ್ಲಿ ಸಾಕಷ್ಟು ಪಠ್ಯ (ಒಂದು *ಕೋರ್ಪಸ್* ಅಥವಾ *ಕೋರ್ಪೋರಾ*) ಇದ್ದರೆ ಇದು ಅನುವಾದದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು. + +ಉದಾಹರಣೆಗೆ, 1813 ರಲ್ಲಿ ಜೇನ್ ಆಸ್ಟಿನ್ ಬರೆದ ಪ್ರಸಿದ್ಧ ಇಂಗ್ಲಿಷ್ ناವಲ *Pride and Prejudice* ಯನ್ನು ಪರಿಗಣಿಸಿ. ನೀವು ಇಂಗ್ಲಿಷ್ ಪುಸ್ತಕ ಮತ್ತು ಅದರ ಮಾನವ ಅನುವಾದವನ್ನು *ಫ್ರೆಂಚ್* ನಲ್ಲಿ ಪರಿಶೀಲಿಸಿದರೆ, ಒಂದು ಭಾಷೆಯಲ್ಲಿನ ವಾಕ್ಯಗಳು ಇನ್ನೊಂದು ಭಾಷೆಗೆ _ಪ್ರಚಲಿತವಾಗಿ_ ಅನುವಾದವಾಗಿರುವುದನ್ನು ಪತ್ತೆಹಚ್ಚಬಹುದು. ನೀವು ಅದನ್ನು ಕ್ಷಣದಲ್ಲೇ ಮಾಡುತ್ತೀರಿ. + +ಉದಾಹರಣೆಗೆ, ಇಂಗ್ಲಿಷ್ ವಾಕ್ಯ `I have no money` ಅನ್ನು ಫ್ರೆಂಚ್‌ಗೆ ಶಬ್ದಾರ್ಥವಾಗಿ ಅನುವಾದಿಸಿದಾಗ, ಅದು `Je n'ai pas de monnaie` ಆಗಬಹುದು. "Monnaie" ಒಂದು ಕಪಟ ಫ್ರೆಂಚ್ 'false cognate', ಏಕೆಂದರೆ 'money' ಮತ್ತು 'monnaie' ಸಮಾನಾರ್ಥಕವಲ್ಲ. ಮಾನವನು ಮಾಡಬಹುದಾದ ಉತ್ತಮ ಅನುವಾದ `Je n'ai pas d'argent` ಆಗಿರುತ್ತದೆ, ಏಕೆಂದರೆ ಇದು ನೀವು ಹಣವಿಲ್ಲ ಎಂದು ಉತ್ತಮವಾಗಿ ಸೂಚಿಸುತ್ತದೆ (ಮತ್ತೆ 'monnaie' ಅರ್ಥ 'ಲೂಸ್ ಚೇಂಜ್'). + +![monnaie](../../../../translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.kn.png) + +> ಚಿತ್ರ [Jen Looper](https://twitter.com/jenlooper) ಅವರಿಂದ + +ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಯು ಸಾಕಷ್ಟು ಮಾನವ ಅನುವಾದಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಅದು ಎರಡೂ ಭಾಷೆಗಳ ಪರಿಣತ ಮಾನವರಿಂದ ಹಿಂದಿನ ಅನುವಾದಗಳಲ್ಲಿ ಕಂಡ ಸಾಮಾನ್ಯ ಮಾದರಿಗಳನ್ನು ಗುರುತಿಸಿ ಅನುವಾದಗಳ ನಿಖರತೆಯನ್ನು ಸುಧಾರಿಸಬಹುದು. + +### ಅಭ್ಯಾಸ - ಅನುವಾದ + +ನೀವು ವಾಕ್ಯಗಳನ್ನು ಅನುವಾದಿಸಲು `TextBlob` ಅನ್ನು ಬಳಸಬಹುದು. ಪ್ರಸಿದ್ಧ **Pride and Prejudice** ಮೊದಲ ಸಾಲನ್ನು ಪ್ರಯತ್ನಿಸಿ: + +```python +from textblob import TextBlob + +blob = TextBlob( + "It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife!" +) +print(blob.translate(to="fr")) + +``` + +`TextBlob` ಅನುವಾದದಲ್ಲಿ ಚೆನ್ನಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!". + +TextBlob ನ ಅನುವಾದವು 1932 ರಲ್ಲಿ V. Leconte ಮತ್ತು Ch. Pressoir ಅವರಿಂದ ಮಾಡಿದ ಫ್ರೆಂಚ್ ಅನುವಾದಕ್ಕಿಂತ ಬಹಳ ನಿಖರವಾಗಿದೆ ಎಂದು ವಾದಿಸಬಹುದು: + +"C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles." + +ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಯಂತ್ರ ಅಧ್ಯಯನದಿಂದ ತಿಳಿದಿರುವ ಅನುವಾದವು ಮೂಲ ಲೇಖಕರ ಮಾತುಗಳಿಗೆ ಅನಗತ್ಯವಾಗಿ ಪದಗಳನ್ನು ಸೇರಿಸುವ ಮಾನವ ಅನುವಾದಿಗಿಂತ ಉತ್ತಮ ಕೆಲಸ ಮಾಡುತ್ತದೆ. + +> ಇಲ್ಲಿ ಏನಾಗುತ್ತಿದೆ? ಮತ್ತು TextBlob ಅನುವಾದದಲ್ಲಿ ಏಕೆ ಇಷ್ಟು ಉತ್ತಮವಾಗಿದೆ? ಹೌದು, ಹಿಂಬದಿಯಲ್ಲಿ, ಇದು Google translate ಅನ್ನು ಬಳಸುತ್ತಿದೆ, ಇದು ಲಕ್ಷಾಂತರ ವಾಕ್ಯಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಕಾರ್ಯಕ್ಕೆ ಅತ್ಯುತ್ತಮ ಸರಣಿಗಳನ್ನು ಊಹಿಸುವ ಸುಧಾರಿತ AI. ಇಲ್ಲಿ ಯಾವುದೇ ಕೈಯಿಂದ ಮಾಡಲಾಗುವುದಿಲ್ಲ ಮತ್ತು `blob.translate` ಬಳಸಲು ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕ ಬೇಕಾಗುತ್ತದೆ. + +✅ ಇನ್ನಷ್ಟು ವಾಕ್ಯಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ. ಯಾವುದು ಉತ್ತಮ, ML ಅಥವಾ ಮಾನವ ಅನುವಾದ? ಯಾವ ಸಂದರ್ಭಗಳಲ್ಲಿ? + +## ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ + +ಮತ್ತೊಂದು ಕ್ಷೇತ್ರದಲ್ಲಿ ಯಂತ್ರ ಅಧ್ಯಯನವು ಚೆನ್ನಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದರೆ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ. ಭಾವನಾತ್ಮಕತೆಯ ಅ-ML ವಿಧಾನವು 'ಧನಾತ್ಮಕ' ಮತ್ತು 'ನಕಾರಾತ್ಮಕ' ಪದಗಳು ಮತ್ತು ವಾಕ್ಯಗಳನ್ನು ಗುರುತಿಸುವುದು. ನಂತರ, ಹೊಸ ಪಠ್ಯವನ್ನು ನೀಡಿದಾಗ, ಒಟ್ಟು ಧನಾತ್ಮಕ, ನಕಾರಾತ್ಮಕ ಮತ್ತು ತಟಸ್ಥ ಪದಗಳ ಮೌಲ್ಯವನ್ನು ಲೆಕ್ಕಿಸಿ ಒಟ್ಟು ಭಾವನಾತ್ಮಕತೆಯನ್ನು ಗುರುತಿಸುವುದು. + +ಈ ವಿಧಾನವು ಸುಲಭವಾಗಿ ಮೋಸಗೊಳ್ಳುತ್ತದೆ, ನೀವು Marvin ಕಾರ್ಯದಲ್ಲಿ ನೋಡಿದಂತೆ - ವಾಕ್ಯ `Great, that was a wonderful waste of time, I'm glad we are lost on this dark road` ಒಂದು ವ್ಯಂಗ್ಯಾತ್ಮಕ, ನಕಾರಾತ್ಮಕ ಭಾವನಾತ್ಮಕ ವಾಕ್ಯ, ಆದರೆ ಸರಳ ಅಲ್ಗಾರಿದಮ್ 'great', 'wonderful', 'glad' ಅನ್ನು ಧನಾತ್ಮಕವಾಗಿ ಮತ್ತು 'waste', 'lost' ಮತ್ತು 'dark' ಅನ್ನು ನಕಾರಾತ್ಮಕವಾಗಿ ಗುರುತಿಸುತ್ತದೆ. ಒಟ್ಟು ಭಾವನಾತ್ಮಕತೆ ಈ ವಿರುದ್ಧ ಪದಗಳಿಂದ ಪ್ರಭಾವಿತವಾಗುತ್ತದೆ. + +✅ ಒಂದು ಕ್ಷಣ ನಿಲ್ಲಿ ಮತ್ತು ನಾವು ಮಾನವ ಮಾತನಾಡುವವರಾಗಿ ವ್ಯಂಗ್ಯವನ್ನು ಹೇಗೆ ವ್ಯಕ್ತಪಡಿಸುತ್ತೇವೆ ಎಂದು ಯೋಚಿಸಿ. ಧ್ವನಿಯ ಉಚ್ಛಾರಣೆಯು ದೊಡ್ಡ ಪಾತ್ರ ವಹಿಸುತ್ತದೆ. "Well, that film was awesome" ಎಂಬ ವಾಕ್ಯವನ್ನು ವಿಭಿನ್ನ ರೀತಿಯಲ್ಲಿ ಹೇಳಿ ನಿಮ್ಮ ಧ್ವನಿ ಅರ್ಥವನ್ನು ಹೇಗೆ ವ್ಯಕ್ತಪಡಿಸುತ್ತದೆ ಎಂದು ಕಂಡುಹಿಡಿಯಿರಿ. + +### ML ವಿಧಾನಗಳು + +ML ವಿಧಾನವು ನಕಾರಾತ್ಮಕ ಮತ್ತು ಧನಾತ್ಮಕ ಪಠ್ಯಗಳನ್ನು - ಟ್ವೀಟ್‌ಗಳು, ಚಲನಚಿತ್ರ ವಿಮರ್ಶೆಗಳು ಅಥವಾ ಮಾನವರು ಅಂಕೆ ಮತ್ತು ಬರಹ ಅಭಿಪ್ರಾಯ ನೀಡಿದ ಯಾವುದೇ ಪಠ್ಯಗಳನ್ನು ಕೈಯಿಂದ ಸಂಗ್ರಹಿಸುವುದು. ನಂತರ NLP ತಂತ್ರಗಳನ್ನು ಅಭಿಪ್ರಾಯಗಳು ಮತ್ತು ಅಂಕೆಗಳಿಗೆ ಅನ್ವಯಿಸಿ, ಮಾದರಿಗಳು ಹೊರಬರುತ್ತವೆ (ಉದಾ: ಧನಾತ್ಮಕ ಚಲನಚಿತ್ರ ವಿಮರ್ಶೆಗಳಲ್ಲಿ 'Oscar worthy' ಪದಗಳು ನಕಾರಾತ್ಮಕ ವಿಮರ್ಶೆಗಿಂತ ಹೆಚ್ಚು ಕಾಣಿಸಬಹುದು, ಅಥವಾ ಧನಾತ್ಮಕ ರೆಸ್ಟೋರೆಂಟ್ ವಿಮರ್ಶೆಗಳಲ್ಲಿ 'gourmet' ಪದವು 'disgusting' ಗಿಂತ ಹೆಚ್ಚು). + +> ⚖️ **ಉದಾಹರಣೆ**: ನೀವು ರಾಜಕಾರಣಿಯ ಕಚೇರಿಯಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೀರಿ ಮತ್ತು ಹೊಸ ಕಾಯ್ದೆ ಚರ್ಚೆಯಲ್ಲಿದೆ ಎಂದು ಊಹಿಸೋಣ, ನಾಗರಿಕರು ಆ ಕಾಯ್ದೆಗೆ ಬೆಂಬಲಿಸುವ ಅಥವಾ ವಿರೋಧಿಸುವ ಇಮೇಲ್‌ಗಳನ್ನು ಕಚೇರಿಗೆ ಬರೆಯಬಹುದು. ನೀವು ಆ ಇಮೇಲ್‌ಗಳನ್ನು ಓದಿ ಎರಡು ಗುಂಪುಗಳಲ್ಲಿ, *ಬೆಂಬಲ* ಮತ್ತು *ವಿರೋಧ* ಎಂದು ವಿಂಗಡಿಸುವ ಕೆಲಸವನ್ನು ಮಾಡಬೇಕಾಗಬಹುದು. ಇಮೇಲ್‌ಗಳು ಬಹಳವಾಗಿದ್ದರೆ, ಅವುಗಳನ್ನು ಓದಲು ನೀವು ಅತಿಯಾದ ಒತ್ತಡಕ್ಕೆ ಒಳಗಾಗಬಹುದು. ಒಂದು ಬಾಟ್ ಅವುಗಳನ್ನು ಓದಿ, ಅರ್ಥಮಾಡಿಕೊಂಡು, ಯಾವ ಗುಂಪಿಗೆ ಸೇರಬೇಕೆಂದು ಹೇಳಿದರೆ ಚೆನ್ನಾಗಿರುತ್ತದೆಯೇ? +> +> ಅದನ್ನು ಸಾಧಿಸುವ ಒಂದು ವಿಧಾನ ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಬಳಸುವುದು. ನೀವು *ವಿರೋಧ* ಇಮೇಲ್‌ಗಳ ಒಂದು ಭಾಗ ಮತ್ತು *ಬೆಂಬಲ* ಇಮೇಲ್‌ಗಳ ಒಂದು ಭಾಗವನ್ನು ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಲು ಬಳಸುತ್ತೀರಿ. ಮಾದರಿ ವಿರೋಧ ಮತ್ತು ಬೆಂಬಲ ಗುಂಪುಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಪದಗಳು ಮತ್ತು ವಾಕ್ಯಗಳನ್ನು ಗುರುತಿಸುವುದು, ಆದರೆ ಯಾವುದೇ ವಿಷಯವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದಿಲ್ಲ, ಕೇವಲ ಕೆಲವು ಪದಗಳು ಮತ್ತು ಮಾದರಿಗಳು ಯಾವ ಗುಂಪಿನಲ್ಲಿ ಹೆಚ್ಚು ಕಾಣಿಸಬಹುದು ಎಂದು ತಿಳಿದುಕೊಳ್ಳುತ್ತದೆ. ನೀವು ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ ಬಳಸದ ಇಮೇಲ್‌ಗಳೊಂದಿಗೆ ಪರೀಕ್ಷಿಸಿ, ನೀವು ತಲುಪಿದ ನಿರ್ಣಯಕ್ಕೆ ಅದು ಸಹಮತಿಯಾಗಿದೆಯೇ ಎಂದು ನೋಡಬಹುದು. ನಂತರ, ನೀವು ಮಾದರಿಯ ನಿಖರತೆಯಿಂದ ಸಂತೃಪ್ತರಾದಾಗ, ಭವಿಷ್ಯದ ಇಮೇಲ್‌ಗಳನ್ನು ಓದದೆ ಪ್ರಕ್ರಿಯೆ ಮಾಡಬಹುದು. + +✅ ಈ ಪ್ರಕ್ರಿಯೆ ನೀವು ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಬಳಸಿದ ಪ್ರಕ್ರಿಯೆಗಳಂತೆ ತೋರುತ್ತದೆಯೇ? + +## ಅಭ್ಯಾಸ - ಭಾವನಾತ್ಮಕ ವಾಕ್ಯಗಳು + +ಭಾವನಾತ್ಮಕತೆ -1 ರಿಂದ 1 ರ *ಪೋಲಾರಿಟಿ* ಮೂಲಕ ಅಳೆಯಲಾಗುತ್ತದೆ, ಅಂದರೆ -1 ಅತ್ಯಂತ ನಕಾರಾತ್ಮಕ ಭಾವನಾತ್ಮಕತೆ ಮತ್ತು 1 ಅತ್ಯಂತ ಧನಾತ್ಮಕ. ಭಾವನಾತ್ಮಕತೆ 0 - 1 ಅಂಕೆಯೊಂದಿಗೆ ವಸ್ತುನಿಷ್ಠತೆ (0) ಮತ್ತು ವಿಷಯನಿಷ್ಠತೆ (1) ಕೂಡ ಅಳೆಯಲಾಗುತ್ತದೆ. + +ಮತ್ತೆ ಜೇನ್ ಆಸ್ಟಿನ್ ಅವರ *Pride and Prejudice* ಅನ್ನು ನೋಡಿ. ಪಠ್ಯವನ್ನು [Project Gutenberg](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) ನಲ್ಲಿ ಲಭ್ಯವಿದೆ. ಕೆಳಗಿನ ಉದಾಹರಣೆ ಒಂದು ಚಿಕ್ಕ ಕಾರ್ಯಕ್ರಮವನ್ನು ತೋರಿಸುತ್ತದೆ, ಇದು ಪುಸ್ತಕದ ಮೊದಲ ಮತ್ತು ಕೊನೆಯ ವಾಕ್ಯಗಳ ಭಾವನಾತ್ಮಕತೆಯನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಅದರ ಪೋಲಾರಿಟಿ ಮತ್ತು ವಿಷಯನಿಷ್ಠೆ/ವಸ್ತುನಿಷ್ಠೆ ಅಂಕೆಯನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ. + +ನೀವು ಕೆಳಗಿನ ಕಾರ್ಯದಲ್ಲಿ `TextBlob` ಗ್ರಂಥಾಲಯವನ್ನು (ಮೇಲಿನ ವಿವರಣೆ ಪ್ರಕಾರ) `sentiment` ನಿರ್ಧರಿಸಲು ಬಳಸಬೇಕು (ನೀವು ನಿಮ್ಮದೇ ಭಾವನಾತ್ಮಕತೆ ಲೆಕ್ಕಿಸುವ ಯಂತ್ರವನ್ನು ಬರೆಯಬೇಕಾಗಿಲ್ಲ). + +```python +from textblob import TextBlob + +quote1 = """It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife.""" + +quote2 = """Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them.""" + +sentiment1 = TextBlob(quote1).sentiment +sentiment2 = TextBlob(quote2).sentiment + +print(quote1 + " has a sentiment of " + str(sentiment1)) +print(quote2 + " has a sentiment of " + str(sentiment2)) +``` + +ನೀವು ಕೆಳಗಿನ ಔಟ್‌ಪುಟ್ ಅನ್ನು ನೋಡುತ್ತೀರಿ: + +```output +It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want # of a wife. has a sentiment of Sentiment(polarity=0.20952380952380953, subjectivity=0.27142857142857146) + +Darcy, as well as Elizabeth, really loved them; and they were + both ever sensible of the warmest gratitude towards the persons + who, by bringing her into Derbyshire, had been the means of + uniting them. has a sentiment of Sentiment(polarity=0.7, subjectivity=0.8) +``` + +## ಸವಾಲು - ಭಾವನಾತ್ಮಕ ಪೋಲಾರಿಟಿ ಪರಿಶೀಲನೆ + +ನಿಮ್ಮ ಕಾರ್ಯವೆಂದರೆ, ಭಾವನಾತ್ಮಕ ಪೋಲಾರಿಟಿ ಬಳಸಿ, *Pride and Prejudice* ನಲ್ಲಿ ಸಂಪೂರ್ಣ ಧನಾತ್ಮಕ ವಾಕ್ಯಗಳು ಸಂಪೂರ್ಣ ನಕಾರಾತ್ಮಕ ವಾಕ್ಯಗಳಿಗಿಂತ ಹೆಚ್ಚು ಇದೆಯೇ ಎಂದು ನಿರ್ಧರಿಸುವುದು. ಈ ಕಾರ್ಯಕ್ಕಾಗಿ, ಪೋಲಾರಿಟಿ ಅಂಕೆ 1 ಅಥವಾ -1 ಅನ್ನು ಸಂಪೂರ್ಣ ಧನಾತ್ಮಕ ಅಥವಾ ಸಂಪೂರ್ಣ ನಕಾರಾತ್ಮಕ ಎಂದು ಪರಿಗಣಿಸಬಹುದು. + +**ಹಂತಗಳು:** + +1. Project Gutenberg ನಿಂದ [Pride and Prejudice ನ ಪ್ರತಿಯನ್ನು](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) .txt ಫೈಲ್ ಆಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ. ಫೈಲ್ ಆರಂಭ ಮತ್ತು ಕೊನೆಯಲ್ಲಿ ಇರುವ ಮೆಟಾಡೇಟಾವನ್ನು ತೆಗೆದುಹಾಕಿ, ಮೂಲ ಪಠ್ಯವನ್ನು ಮಾತ್ರ ಉಳಿಸಿ +2. ಫೈಲ್ ಅನ್ನು Python ನಲ್ಲಿ ತೆರೆಯಿರಿ ಮತ್ತು ವಿಷಯವನ್ನು ಸ್ಟ್ರಿಂಗ್ ಆಗಿ ತೆಗೆದುಕೊಳ್ಳಿ +3. ಪುಸ್ತಕ ಸ್ಟ್ರಿಂಗ್ ಬಳಸಿ TextBlob ರಚಿಸಿ +4. ಪುಸ್ತಕದ ಪ್ರತಿ ವಾಕ್ಯವನ್ನು ಲೂಪ್‌ನಲ್ಲಿ ವಿಶ್ಲೇಷಿಸಿ + 1. ಪೋಲಾರಿಟಿ 1 ಅಥವಾ -1 ಇದ್ದರೆ, ಆ ವಾಕ್ಯವನ್ನು ಧನಾತ್ಮಕ ಅಥವಾ ನಕಾರಾತ್ಮಕ ಸಂದೇಶಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ +5. ಕೊನೆಯಲ್ಲಿ, ಎಲ್ಲಾ ಧನಾತ್ಮಕ ಮತ್ತು ನಕಾರಾತ್ಮಕ ವಾಕ್ಯಗಳನ್ನು (ಬೇರೆ ಬೇರೆ) ಮತ್ತು ಅವುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಮುದ್ರಿಸಿ. + +ಇಲ್ಲಿ ಒಂದು ಉದಾಹರಣೆಯ [ಉತ್ತರ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb) ಇದೆ. + +✅ ಜ್ಞಾನ ಪರಿಶೀಲನೆ + +1. ಭಾವನಾತ್ಮಕತೆ ವಾಕ್ಯದಲ್ಲಿ ಬಳಸಿದ ಪದಗಳ ಆಧಾರದಲ್ಲಿ ಇರುತ್ತದೆ, ಆದರೆ ಕೋಡ್ ಪದಗಳನ್ನು *ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತದೆಯೇ*? +2. ನೀವು ಭಾವನಾತ್ಮಕ ಪೋಲಾರಿಟಿ ನಿಖರವಾಗಿದೆ ಎಂದು ಭಾವಿಸುತ್ತೀರಾ, ಅಥವಾ ಬೇರೆ ಪದಗಳಲ್ಲಿ, ಅಂಕೆಗಳಿಗೆ ನೀವು *ಒಪ್ಪುತ್ತೀರಾ*? + 1. ವಿಶೇಷವಾಗಿ, ಕೆಳಗಿನ ವಾಕ್ಯಗಳ ಸಂಪೂರ್ಣ **ಧನಾತ್ಮಕ** ಪೋಲಾರಿಟಿಗೆ ನೀವು ಒಪ್ಪುತ್ತೀರಾ ಅಥವಾ ವಿರೋಧಿಸುತ್ತೀರಾ? + * “What an excellent father you have, girls!” said she, when the door was shut. + * “Your examination of Mr. Darcy is over, I presume,” said Miss Bingley; “and pray what is the result?” “I am perfectly convinced by it that Mr. Darcy has no defect. + * How wonderfully these sort of things occur! + * I have the greatest dislike in the world to that sort of thing. + * Charlotte is an excellent manager, I dare say. + * “This is delightful indeed! + * I am so happy! + * Your idea of the ponies is delightful. + 2. ಮುಂದಿನ 3 ವಾಕ್ಯಗಳನ್ನು ಸಂಪೂರ್ಣ ಧನಾತ್ಮಕ ಭಾವನಾತ್ಮಕತೆ ಪಡೆದಿವೆ, ಆದರೆ ನಿಕಟ ಓದಿನಲ್ಲಿ ಅವು ಧನಾತ್ಮಕ ವಾಕ್ಯಗಳಲ್ಲ. ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ ಅವುಗಳನ್ನು ಧನಾತ್ಮಕ ಎಂದು ಯಾಕೆ ಭಾವಿಸಿತು? + * Happy shall I be, when his stay at Netherfield is over!” “I wish I could say anything to comfort you,” replied Elizabeth; “but it is wholly out of my power. + * If I could but see you as happy! + * Our distress, my dear Lizzy, is very great. + 3. ಕೆಳಗಿನ ವಾಕ್ಯಗಳ ಸಂಪೂರ್ಣ **ನಕಾರಾತ್ಮಕ** ಪೋಲಾರಿಟಿಗೆ ನೀವು ಒಪ್ಪುತ್ತೀರಾ ಅಥವಾ ವಿರೋಧಿಸುತ್ತೀರಾ? + - Everybody is disgusted with his pride. + - “I should like to know how he behaves among strangers.” “You shall hear then—but prepare yourself for something very dreadful. + - The pause was to Elizabeth’s feelings dreadful. + - It would be dreadful! + +✅ ಜೇನ್ ಆಸ್ಟಿನ್ ಅವರ ಅಭಿಮಾನಿಗಳು ತಿಳಿದುಕೊಳ್ಳುತ್ತಾರೆ ಅವರು ತಮ್ಮ ಪುಸ್ತಕಗಳಲ್ಲಿ ಇಂಗ್ಲಿಷ್ ರೆಜೆನ್ಸಿ ಸಮಾಜದ ಅತಿವಾದ ಅಂಶಗಳನ್ನು ವಿಮರ್ಶಿಸುವುದನ್ನು. *Pride and Prejudice* ನ ಪ್ರಮುಖ ಪಾತ್ರ ಎಲಿಜಬೆತ್ ಬೆನೆಟ್ (ಲೇಖಕನಂತೆ) ಸಾಮಾಜಿಕ ವೀಕ್ಷಕಳು ಮತ್ತು ಅವಳ ಭಾಷೆ ಬಹಳ ಸೂಕ್ಷ್ಮವಾಗಿದೆ. ಕಥೆಯ ಪ್ರೇಮ ಸಂಬಂಧಿ ಮಿಸ್ಟರ್ ಡಾರ್ಸಿ ಕೂಡ ಎಲಿಜಬೆತ್ ಅವರ ಆಟದ ಮತ್ತು ಹಾಸ್ಯಾಸ್ಪದ ಭಾಷಾ ಬಳಕೆಯನ್ನು ಗಮನಿಸುತ್ತಾನೆ: "ನಾನು ನಿಮ್ಮ ಪರಿಚಯವನ್ನು ಸಾಕಷ್ಟು ಕಾಲ ಹೊಂದಿದ್ದೇನೆ, ನೀವು ಕೆಲವೊಮ್ಮೆ ನಿಮ್ಮದೇ ಅಲ್ಲದ ಅಭಿಪ್ರಾಯಗಳನ್ನು ಪ್ರೊಫೆಸ್ಸ್ ಮಾಡುವುದರಲ್ಲಿ ದೊಡ್ಡ ಆನಂದವನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತೀರಿ." + +--- + +## 🚀ಸವಾಲು + +ಮಾರ್ವಿನ್ ಅನ್ನು ಬಳಕೆದಾರ ಇನ್ಪುಟ್‌ನಿಂದ ಇತರ ಲಕ್ಷಣಗಳನ್ನು ಹೊರತೆಗೆಯುವ ಮೂಲಕ ಇನ್ನೂ ಉತ್ತಮಗೊಳಿಸಬಹುದೇ? + +## [ಪೋಸ್ಟ್-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಪಠ್ಯದಿಂದ ಭಾವನೆಯನ್ನು ಹೊರತೆಗೆಯಲು ಅನೇಕ ವಿಧಾನಗಳಿವೆ. ಈ ತಂತ್ರವನ್ನು ಬಳಸಬಹುದಾದ ವ್ಯವಹಾರಿಕ ಅನ್ವಯಗಳನ್ನು ಯೋಚಿಸಿ. ಇದು ಹೇಗೆ ತಪ್ಪು ಹೋಗಬಹುದು ಎಂದು ಯೋಚಿಸಿ. [Azure Text Analysis](https://docs.microsoft.com/azure/cognitive-services/Text-Analytics/how-tos/text-analytics-how-to-sentiment-analysis?tabs=version-3-1?WT.mc_id=academic-77952-leestott) ಮುಂತಾದ ಭಾವನೆಯನ್ನು ವಿಶ್ಲೇಷಿಸುವ ಸುಧಾರಿತ ಉದ್ಯಮ-ಸಿದ್ಧ ವ್ಯವಸ್ಥೆಗಳ ಬಗ್ಗೆ ಹೆಚ್ಚು ಓದಿ. ಮೇಲಿನ ಪ್ರೈಡ್ ಮತ್ತು ಪ್ರಿಜುಡಿಸ್ ವಾಕ್ಯಗಳನ್ನು ಕೆಲವು ಪರೀಕ್ಷಿಸಿ ಮತ್ತು ಇದು ಸೂಕ್ಷ್ಮತೆಯನ್ನು ಪತ್ತೆಹಚ್ಚಬಹುದೇ ಎಂದು ನೋಡಿ. + +## ನಿಯೋಜನೆ + +[Poetic license](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/3-Translation-Sentiment/assignment.md b/translations/kn/6-NLP/3-Translation-Sentiment/assignment.md new file mode 100644 index 000000000..bc243c76f --- /dev/null +++ b/translations/kn/6-NLP/3-Translation-Sentiment/assignment.md @@ -0,0 +1,27 @@ + +# ಕಾವ್ಯಾತ್ಮಕ ಪರವಾನಗಿ + +## ಸೂಚನೆಗಳು + +[ಈ ನೋಟ್ಬುಕ್](https://www.kaggle.com/jenlooper/emily-dickinson-word-frequency) ನಲ್ಲಿ ನೀವು 500 ಕ್ಕೂ ಹೆಚ್ಚು ಎಮಿಲಿ ಡಿಕಿನ್ಸನ್ ಕವಿತೆಗಳನ್ನೂ, ಅವುಗಳ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಅಜೂರ್ ಟೆಕ್ಸ್ಟ್ ಅನಾಲಿಟಿಕ್ಸ್ ಬಳಸಿ ಪೂರ್ವವೀಕ್ಷಣೆ ಮಾಡಲಾಗಿದೆ. ಈ ಡೇಟಾಸೆಟ್ ಬಳಸಿ, ಪಾಠದಲ್ಲಿ ವಿವರಿಸಲಾದ ತಂತ್ರಗಳನ್ನು ಉಪಯೋಗಿಸಿ ವಿಶ್ಲೇಷಿಸಿ. ಒಂದು ಕವಿತೆಯ ಸೂಚಿಸಲಾದ ಭಾವನೆ ಅಜೂರ್ ಸೇವೆಯ ಹೆಚ್ಚು ಸುಧಾರಿತ ನಿರ್ಣಯದೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆಯೇ? ನಿಮ್ಮ ಅಭಿಪ್ರಾಯದಲ್ಲಿ ಏಕೆ ಅಥವಾ ಏಕೆ ಅಲ್ಲ? ಏನಾದರೂ ನಿಮಗೆ ಆಶ್ಚರ್ಯಕರವಾಗಿದೆಯೇ? + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯ | +| -------- | -------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------ | +| | ಲೇಖಕರ ಮಾದರಿ ಔಟ್‌ಪುಟ್‌ನ ದೃಢ ವಿಶ್ಲೇಷಣೆಯೊಂದಿಗೆ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | ನೋಟ್ಬುಕ್ ಅಪೂರ್ಣವಾಗಿದೆ ಅಥವಾ ವಿಶ್ಲೇಷಣೆ ನಡೆಸುವುದಿಲ್ಲ | ಯಾವುದೇ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/3-Translation-Sentiment/solution/Julia/README.md b/translations/kn/6-NLP/3-Translation-Sentiment/solution/Julia/README.md new file mode 100644 index 000000000..2780e398f --- /dev/null +++ b/translations/kn/6-NLP/3-Translation-Sentiment/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/3-Translation-Sentiment/solution/R/README.md b/translations/kn/6-NLP/3-Translation-Sentiment/solution/R/README.md new file mode 100644 index 000000000..4cb199508 --- /dev/null +++ b/translations/kn/6-NLP/3-Translation-Sentiment/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb b/translations/kn/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb new file mode 100644 index 000000000..ae7954472 --- /dev/null +++ b/translations/kn/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb @@ -0,0 +1,100 @@ +{ + "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": "27de2abc0235ebd22080fc8f1107454d", + "translation_date": "2025-12-19T16:49:20+00:00", + "source_file": "6-NLP/3-Translation-Sentiment/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from textblob import TextBlob\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# You should download the book text, clean it, and import it here\n", + "with open(\"pride.txt\", encoding=\"utf8\") as f:\n", + " file_contents = f.read()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "book_pride = TextBlob(file_contents)\n", + "positive_sentiment_sentences = []\n", + "negative_sentiment_sentences = []" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for sentence in book_pride.sentences:\n", + " if sentence.sentiment.polarity == 1:\n", + " positive_sentiment_sentences.append(sentence)\n", + " if sentence.sentiment.polarity == -1:\n", + " negative_sentiment_sentences.append(sentence)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"The \" + str(len(positive_sentiment_sentences)) + \" most positive sentences:\")\n", + "for sentence in positive_sentiment_sentences:\n", + " print(\"+ \" + str(sentence.replace(\"\\n\", \"\").replace(\" \", \" \")))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"The \" + str(len(negative_sentiment_sentences)) + \" most negative sentences:\")\n", + "for sentence in negative_sentiment_sentences:\n", + " print(\"- \" + str(sentence.replace(\"\\n\", \"\").replace(\" \", \" \")))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/6-NLP/4-Hotel-Reviews-1/README.md b/translations/kn/6-NLP/4-Hotel-Reviews-1/README.md new file mode 100644 index 000000000..08b085c38 --- /dev/null +++ b/translations/kn/6-NLP/4-Hotel-Reviews-1/README.md @@ -0,0 +1,419 @@ + +# ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳೊಂದಿಗೆ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ - ಡೇಟಾ ಪ್ರಕ್ರಿಯೆ + +ಈ ವಿಭಾಗದಲ್ಲಿ ನೀವು ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಕಲಿತ ತಂತ್ರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ದೊಡ್ಡ ಡೇಟಾಸೆಟ್‌ನ ಅನ್ವೇಷಣಾತ್ಮಕ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಮಾಡುತ್ತೀರಿ. ವಿವಿಧ ಕಾಲಮ್‌ಗಳ ಉಪಯುಕ್ತತೆಯನ್ನು ಚೆನ್ನಾಗಿ ಅರ್ಥಮಾಡಿಕೊಂಡ ನಂತರ, ನೀವು ತಿಳಿಯಲಿದ್ದೀರಿ: + +- ಅನಗತ್ಯ ಕಾಲಮ್‌ಗಳನ್ನು ಹೇಗೆ ತೆಗೆದುಹಾಕುವುದು +- ಇತ್ತೀಚಿನ ಕಾಲಮ್‌ಗಳ ಆಧಾರದ ಮೇಲೆ ಹೊಸ ಡೇಟಾವನ್ನು ಹೇಗೆ ಲೆಕ್ಕಹಾಕುವುದು +- ಅಂತಿಮ ಸವಾಲಿಗಾಗಿ ಫಲಿತಾಂಶ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಹೇಗೆ ಉಳಿಸುವುದು + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +### ಪರಿಚಯ + +ಇದುವರೆಗೆ ನೀವು ತಿಳಿದುಕೊಂಡಿರುವುದು, ಪಠ್ಯ ಡೇಟಾ ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾ ಪ್ರಕಾರಗಳಿಗಿಂತ ಬಹಳ ವಿಭಿನ್ನವಾಗಿದೆ. ಅದು ಮಾನವನು ಬರೆದ ಅಥವಾ ಮಾತನಾಡಿದ ಪಠ್ಯವಾಗಿದ್ದರೆ, ಅದನ್ನು ಮಾದರಿಗಳು ಮತ್ತು ಆವರ್ತನೆಗಳು, ಭಾವನೆ ಮತ್ತು ಅರ್ಥವನ್ನು ಕಂಡುಹಿಡಿಯಲು ವಿಶ್ಲೇಷಿಸಬಹುದು. ಈ ಪಾಠವು ನಿಮಗೆ ನಿಜವಾದ ಡೇಟಾ ಸೆಟ್ ಮತ್ತು ನಿಜವಾದ ಸವಾಲಿನೊಳಗೆ ಕರೆದೊಯ್ಯುತ್ತದೆ: **[ಯುರೋಪಿನ 515K ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳ ಡೇಟಾ](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)** ಮತ್ತು ಇದಕ್ಕೆ [CC0: ಸಾರ್ವಜನಿಕ ಡೊಮೇನ್ ಪರವಾನಗಿ](https://creativecommons.org/publicdomain/zero/1.0/) ಇದೆ. ಇದು Booking.com ನ ಸಾರ್ವಜನಿಕ ಮೂಲಗಳಿಂದ ಸ್ಕ್ರೇಪ್ ಮಾಡಲಾಗಿದೆ. ಡೇಟಾಸೆಟ್ ರಚನೆದವರು ಜಿಯಾಶೆನ್ ಲಿಯು. + +### ತಯಾರಿ + +ನೀವು ಬೇಕಾಗಿರುವುದು: + +* Python 3 ಬಳಸಿ .ipynb ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಚಾಲನೆ ಮಾಡುವ ಸಾಮರ್ಥ್ಯ +* pandas +* NLTK, [ನೀವು ಸ್ಥಳೀಯವಾಗಿ ಸ್ಥಾಪಿಸಬೇಕು](https://www.nltk.org/install.html) +* Kaggle ನಲ್ಲಿ ಲಭ್ಯವಿರುವ ಡೇಟಾಸೆಟ್ [515K ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳ ಡೇಟಾ ಯುರೋಪಿನಲ್ಲಿ](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe). ಇದು ಅನ್ಜಿಪ್ ಮಾಡಿದಾಗ ಸುಮಾರು 230 MB ಆಗಿದೆ. ಈ NLP ಪಾಠಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ರೂಟ್ `/data` ಫೋಲ್ಡರ್‌ಗೆ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ. + +## ಅನ್ವೇಷಣಾತ್ಮಕ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ + +ಈ ಸವಾಲು ನೀವು ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ಅತಿಥಿ ವಿಮರ್ಶಾ ಅಂಕಗಳನ್ನು ಬಳಸಿ ಹೋಟೆಲ್ ಶಿಫಾರಸು ಬಾಟ್ ನಿರ್ಮಿಸುತ್ತಿದ್ದೀರಿ ಎಂದು ಊಹಿಸುತ್ತದೆ. ನೀವು ಬಳಸಲಿರುವ ಡೇಟಾಸೆಟ್ 6 ನಗರಗಳಲ್ಲಿ 1493 ವಿಭಿನ್ನ ಹೋಟೆಲ್‌ಗಳ ವಿಮರ್ಶೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. + +Python, ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳ ಡೇಟಾಸೆಟ್ ಮತ್ತು NLTK ಭಾವನೆ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಬಳಸಿ ನೀವು ಕಂಡುಹಿಡಿಯಬಹುದು: + +* ವಿಮರ್ಶೆಗಳಲ್ಲಿ ಅತ್ಯಂತ ಹೆಚ್ಚು ಬಳಕೆಯಾದ ಪದಗಳು ಮತ್ತು ವಾಕ್ಯಗಳು ಯಾವುವು? +* ಹೋಟೆಲ್ ಅನ್ನು ವರ್ಣಿಸುವ ಅಧಿಕೃತ *ಟ್ಯಾಗ್‌ಗಳು* ವಿಮರ್ಶಾ ಅಂಕಗಳೊಂದಿಗೆ ಹೊಂದಾಣಿಕೆ ಹೊಂದಿದೆಯೇ (ಉದಾ: *ಯುವ ಮಕ್ಕಳೊಂದಿಗೆ ಕುಟುಂಬ*ಗಾಗಿ ಹೆಚ್ಚು ನಕಾರಾತ್ಮಕ ವಿಮರ್ಶೆಗಳು ಇದ್ದರೆ, *ಒಂಟಿ ಪ್ರಯಾಣಿಕ*ಗಿಂತ ಹೆಚ್ಚು, ಇದು *ಒಂಟಿ ಪ್ರಯಾಣಿಕರಿಗೆ* ಉತ್ತಮವಾಗಿದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆಯೇ?) +* NLTK ಭಾವನೆ ಅಂಕಗಳು ಹೋಟೆಲ್ ವಿಮರ್ಶಕರ ಸಂಖ್ಯಾತ್ಮಕ ಅಂಕಗಳೊಂದಿಗೆ 'ಒಪ್ಪಿಗೆಯಲ್ಲವೇ'? + +#### ಡೇಟಾಸೆಟ್ + +ನೀವು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ ಸ್ಥಳೀಯವಾಗಿ ಉಳಿಸಿಕೊಂಡಿರುವ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಅನ್ವೇಷಿಸೋಣ. ಫೈಲ್ ಅನ್ನು VS Code ಅಥವಾ Excel ಮುಂತಾದ ಸಂಪಾದಕದಲ್ಲಿ ತೆರೆಯಿರಿ. + +ಡೇಟಾಸೆಟ್‌ನ ಹೆಡರ್‌ಗಳು ಹೀಗಿವೆ: + +*Hotel_Address, Additional_Number_of_Scoring, Review_Date, Average_Score, Hotel_Name, Reviewer_Nationality, Negative_Review, Review_Total_Negative_Word_Counts, Total_Number_of_Reviews, Positive_Review, Review_Total_Positive_Word_Counts, Total_Number_of_Reviews_Reviewer_Has_Given, Reviewer_Score, Tags, days_since_review, lat, lng* + +ಇವುಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಸುಲಭವಾಗುವಂತೆ ಗುಂಪು ಮಾಡಲಾಗಿದೆ: +##### ಹೋಟೆಲ್ ಕಾಲಮ್‌ಗಳು + +* `Hotel_Name`, `Hotel_Address`, `lat` (ಅಕ್ಷಾಂಶ), `lng` (ರೇಖಾಂಶ) + * *lat* ಮತ್ತು *lng* ಬಳಸಿ Python ನಲ್ಲಿ ಹೋಟೆಲ್ ಸ್ಥಳಗಳನ್ನು ತೋರಿಸುವ ನಕ್ಷೆಯನ್ನು ರಚಿಸಬಹುದು (ನಕಾರಾತ್ಮಕ ಮತ್ತು ಧನಾತ್ಮಕ ವಿಮರ್ಶೆಗಳಿಗೆ ಬಣ್ಣ ಕೋಡ್ ಮಾಡಬಹುದು) + * Hotel_Address ನಮಗೆ ಸ್ಪಷ್ಟವಾಗಿ ಉಪಯುಕ್ತವಲ್ಲ, ಮತ್ತು ನಾವು ಅದನ್ನು ಸುಲಭವಾಗಿ ಶ್ರೇಣೀಕರಿಸಲು ಮತ್ತು ಹುಡುಕಲು ದೇಶದೊಂದಿಗೆ ಬದಲಾಯಿಸಬಹುದು + +**ಹೋಟೆಲ್ ಮೆಟಾ-ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳು** + +* `Average_Score` + * ಡೇಟಾಸೆಟ್ ರಚನೆದವರ ಪ್ರಕಾರ, ಈ ಕಾಲಮ್ *ಹೋಟೆಲ್‌ನ ಸರಾಸರಿ ಅಂಕ, ಕಳೆದ ವರ್ಷದ ಇತ್ತೀಚಿನ ಕಾಮೆಂಟ್ ಆಧಾರಿತವಾಗಿ ಲೆಕ್ಕಹಾಕಲಾಗಿದೆ*. ಇದು ಅಸಾಮಾನ್ಯ ವಿಧಾನವಾಗಿದ್ದರೂ, ಡೇಟಾ ಸ್ಕ್ರೇಪ್ ಆಗಿರುವುದರಿಂದ ನಾವು ಇದನ್ನು ಪ್ರಸ್ತುತ ಮೌಲ್ಯವಾಗಿ ತೆಗೆದುಕೊಳ್ಳಬಹುದು. + + ✅ ಈ ಡೇಟಾದ ಇತರ ಕಾಲಮ್‌ಗಳ ಆಧಾರದ ಮೇಲೆ, ಸರಾಸರಿ ಅಂಕವನ್ನು ಲೆಕ್ಕಹಾಕಲು ಬೇರೆ ಯಾವ ವಿಧಾನವನ್ನು ನೀವು ಯೋಚಿಸಬಹುದು? + +* `Total_Number_of_Reviews` + * ಈ ಹೋಟೆಲ್ ಪಡೆದ ವಿಮರ್ಶೆಗಳ ಒಟ್ಟು ಸಂಖ್ಯೆ - ಇದು ಡೇಟಾಸೆಟ್‌ನ ವಿಮರ್ಶೆಗಳಿಗೆ ಸಂಬಂಧಿಸಿದದೆಯೇ ಎಂಬುದು ಸ್ಪಷ್ಟವಿಲ್ಲ (ಕೆಲವು ಕೋಡ್ ಬರೆಯದೆ) +* `Additional_Number_of_Scoring` + * ಇದರಿಂದ ಅರ್ಥ, ವಿಮರ್ಶೆ ಅಂಕ ನೀಡಲಾಗಿದೆ ಆದರೆ ವಿಮರ್ಶಕನು ಧನಾತ್ಮಕ ಅಥವಾ ನಕಾರಾತ್ಮಕ ವಿಮರ್ಶೆ ಬರೆಯಲಿಲ್ಲ + +**ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳು** + +- `Reviewer_Score` + - ಕನಿಷ್ಠ 1 ದಶಮಾಂಶ ಸ್ಥಾನವಿರುವ ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯ, ಕನಿಷ್ಠ ಮತ್ತು ಗರಿಷ್ಠ ಮೌಲ್ಯಗಳು 2.5 ಮತ್ತು 10 + - 2.5 ಅತಿ ಕಡಿಮೆ ಅಂಕವಾಗಿರುವುದಕ್ಕೆ ಕಾರಣ ವಿವರಿಸಲಾಗಿಲ್ಲ +- `Negative_Review` + - ವಿಮರ್ಶಕನು ಏನೂ ಬರೆಯದಿದ್ದರೆ, ಈ ಕ್ಷೇತ್ರದಲ್ಲಿ "**No Negative**" ಇರುತ್ತದೆ + - ಗಮನಿಸಿ, ವಿಮರ್ಶಕನು ಧನಾತ್ಮಕ ವಿಮರ್ಶೆಯನ್ನು ನಕಾರಾತ್ಮಕ ವಿಮರ್ಶೆ ಕಾಲಮ್‌ನಲ್ಲಿ ಬರೆಯಬಹುದು (ಉದಾ: "ಈ ಹೋಟೆಲ್ ಬಗ್ಗೆ ಏನೂ ಕೆಟ್ಟದ್ದು ಇಲ್ಲ") +- `Review_Total_Negative_Word_Counts` + - ಹೆಚ್ಚು ನಕಾರಾತ್ಮಕ ಪದಗಳ ಸಂಖ್ಯೆ ಕಡಿಮೆ ಅಂಕವನ್ನು ಸೂಚಿಸುತ್ತದೆ (ಭಾವನಾತ್ಮಕತೆಯನ್ನು ಪರಿಶೀಲಿಸದೆ) +- `Positive_Review` + - ವಿಮರ್ಶಕನು ಏನೂ ಬರೆಯದಿದ್ದರೆ, ಈ ಕ್ಷೇತ್ರದಲ್ಲಿ "**No Positive**" ಇರುತ್ತದೆ + - ಗಮನಿಸಿ, ವಿಮರ್ಶಕನು ನಕಾರಾತ್ಮಕ ವಿಮರ್ಶೆಯನ್ನು ಧನಾತ್ಮಕ ವಿಮರ್ಶೆ ಕಾಲಮ್‌ನಲ್ಲಿ ಬರೆಯಬಹುದು (ಉದಾ: "ಈ ಹೋಟೆಲ್ ಬಗ್ಗೆ ಏನೂ ಒಳ್ಳೆಯದು ಇಲ್ಲ") +- `Review_Total_Positive_Word_Counts` + - ಹೆಚ್ಚು ಧನಾತ್ಮಕ ಪದಗಳ ಸಂಖ್ಯೆ ಹೆಚ್ಚು ಅಂಕವನ್ನು ಸೂಚಿಸುತ್ತದೆ (ಭಾವನಾತ್ಮಕತೆಯನ್ನು ಪರಿಶೀಲಿಸದೆ) +- `Review_Date` ಮತ್ತು `days_since_review` + - ವಿಮರ್ಶೆಗೆ تازگي ಅಥವಾ ಹಳೆಯತನದ ಅಳತೆ ಅನ್ವಯಿಸಬಹುದು (ಹಳೆಯ ವಿಮರ್ಶೆಗಳು ನವೀನ ವಿಮರ್ಶೆಗಳಂತೆ ನಿಖರವಾಗಿರದಿರಬಹುದು, ಹೋಟೆಲ್ ನಿರ್ವಹಣೆ ಬದಲಾಗಿದೆ, ಪುನರ್ ನಿರ್ಮಾಣ ಮಾಡಲಾಗಿದೆ, ಅಥವಾ ಈಜುಕೊಳ ಸೇರಿಸಲಾಗಿದೆ ಮುಂತಾದ ಕಾರಣಗಳಿಂದ) +- `Tags` + - ವಿಮರ್ಶಕನು ತಮ್ಮ ಅತಿಥಿ ಪ್ರಕಾರ (ಉದಾ: ಒಂಟಿ ಅಥವಾ ಕುಟುಂಬ), ಕೊಠಡಿ ಪ್ರಕಾರ, ಉಳಿದಿರುವ ಅವಧಿ ಮತ್ತು ವಿಮರ್ಶೆ ಸಲ್ಲಿಸಿದ ಸಾಧನವನ್ನು ವರ್ಣಿಸಲು ಆಯ್ಕೆಮಾಡಬಹುದಾದ ಚಿಕ್ಕ ವರ್ಣನಾತ್ಮಕ ಪದಗಳು + - ದುರದೃಷ್ಟವಶಾತ್, ಈ ಟ್ಯಾಗ್‌ಗಳನ್ನು ಬಳಸುವುದು ಸಮಸ್ಯೆಯಾಗಿದೆ, ಕೆಳಗಿನ ವಿಭಾಗದಲ್ಲಿ ಅವುಗಳ ಉಪಯುಕ್ತತೆಯನ್ನು ಚರ್ಚಿಸಲಾಗಿದೆ + +**ವಿಮರ್ಶಕ ಕಾಲಮ್‌ಗಳು** + +- `Total_Number_of_Reviews_Reviewer_Has_Given` + - ಶಿಫಾರಸು ಮಾದರಿಯಲ್ಲಿ ಇದು ಒಂದು ಅಂಶವಾಗಬಹುದು, ಉದಾಹರಣೆಗೆ, ನೂರಾರು ವಿಮರ್ಶೆಗಳಿರುವ ಹೆಚ್ಚು ಸಕ್ರಿಯ ವಿಮರ್ಶಕರು ಹೆಚ್ಚು ನಕಾರಾತ್ಮಕವಾಗಿರಬಹುದು ಎಂದು ನೀವು ನಿರ್ಧರಿಸಬಹುದು. ಆದರೆ ಯಾವುದೇ ವಿಮರ್ಶೆಯ ವಿಮರ್ಶಕನು ವಿಶಿಷ್ಟ ಕೋಡ್‌ನೊಂದಿಗೆ ಗುರುತಿಸಲ್ಪಟ್ಟಿಲ್ಲ, ಆದ್ದರಿಂದ ವಿಮರ್ಶೆಗಳ ಗುಂಪಿಗೆ ಲಿಂಕ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ. 100 ಅಥವಾ ಹೆಚ್ಚು ವಿಮರ್ಶೆಗಳಿರುವ 30 ವಿಮರ್ಶಕರು ಇದ್ದಾರೆ, ಆದರೆ ಇದು ಶಿಫಾರಸು ಮಾದರಿಗೆ ಹೇಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಿಲ್ಲ. +- `Reviewer_Nationality` + - ಕೆಲವು ಜನರು ಕೆಲವು ರಾಷ್ಟ್ರಗಳವರು ಧನಾತ್ಮಕ ಅಥವಾ ನಕಾರಾತ್ಮಕ ವಿಮರ್ಶೆ ನೀಡುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚು ಎಂದು ಭಾವಿಸಬಹುದು. ಇಂತಹ ಅನೇಕ ಕಥನಗಳನ್ನು ನಿಮ್ಮ ಮಾದರಿಗಳಲ್ಲಿ ಸೇರಿಸುವಾಗ ಜಾಗರೂಕವಾಗಿರಿ. ಇವು ರಾಷ್ಟ್ರೀಯ (ಮತ್ತು ಕೆಲವೊಮ್ಮೆ ಜಾತಿ) стереотип್‌ಗಳು, ಮತ್ತು ಪ್ರತಿಯೊಬ್ಬ ವಿಮರ್ಶಕನು ತಮ್ಮ ಅನುಭವ ಆಧಾರಿತ ವಿಮರ್ಶೆ ಬರೆದ ವ್ಯಕ್ತಿ. ಇದು ಅವರ ಹಿಂದಿನ ಹೋಟೆಲ್ ಉಳಿವಿನ ಅನುಭವ, ಪ್ರಯಾಣದ ದೂರ, ಮತ್ತು ವೈಯಕ್ತಿಕ ಸ್ವಭಾವ ಮುಂತಾದ ಅನೇಕ ದೃಷ್ಟಿಕೋನಗಳಿಂದ ಪ್ರಭಾವಿತವಾಗಿರಬಹುದು. ಅವರ ರಾಷ್ಟ್ರೀಯತೆ ವಿಮರ್ಶಾ ಅಂಕಕ್ಕೆ ಕಾರಣ ಎಂದು ಭಾವಿಸುವುದು ಕಷ್ಟ. + +##### ಉದಾಹರಣೆಗಳು + +| ಸರಾಸರಿ ಅಂಕ | ಒಟ್ಟು ವಿಮರ್ಶೆಗಳ ಸಂಖ್ಯೆ | ವಿಮರ್ಶಕ ಅಂಕ | ನಕಾರಾತ್ಮಕ
ವಿಮರ್ಶೆ | ಧನಾತ್ಮಕ ವಿಮರ್ಶೆ | ಟ್ಯಾಗ್‌ಗಳು | +| ------------ | ---------------------- | ------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- | +| 7.8 | 1945 | 2.5 | ಇದು ಪ್ರಸ್ತುತ ಹೋಟೆಲ್ ಅಲ್ಲ, ಆದರೆ ನಿರ್ಮಾಣ ಸ್ಥಳವಾಗಿದೆ. ನಾನು ಬೆಳಗಿನ ಜಾವದಿಂದ ಮತ್ತು ದಿನಪೂರ್ತಿ ಅಸಹ್ಯವಾದ ಕಟ್ಟಡ ಶಬ್ದದಿಂದ ಭಯಭೀತನಾಗಿದ್ದೆ, ದೀರ್ಘ ಪ್ರಯಾಣದ ನಂತರ ವಿಶ್ರಾಂತಿ ಪಡೆಯುತ್ತಿದ್ದಾಗ ಮತ್ತು ಕೊಠಡಿಯಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದಾಗ. ಜನರು ದಿನಪೂರ್ತಿ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದರು, ಅಂದರೆ ಪಕ್ಕದ ಕೊಠಡಿಗಳಲ್ಲಿ ಜಾಕ್‌ಹ್ಯಾಮರ್‌ಗಳೊಂದಿಗೆ. ನಾನು ಕೊಠಡಿ ಬದಲಾವಣೆ ಕೇಳಿದೆ, ಆದರೆ ಶಾಂತ ಕೊಠಡಿ ಲಭ್ಯವಿರಲಿಲ್ಲ. ಇನ್ನೂ ಕೆಟ್ಟದಾಗಿ, ನಾನು ಹೆಚ್ಚುವರಿ ಶುಲ್ಕ ವಿಧಿಸಲ್ಪಟ್ಟಿದ್ದೆ. ನಾನು ಸಂಜೆ ಚೆಕ್ ಔಟ್ ಮಾಡಿದೆ, ಏಕೆಂದರೆ ನನಗೆ ಬೇಗಲೇ ವಿಮಾನ ಹಾರಬೇಕಾಗಿತ್ತು ಮತ್ತು ಸೂಕ್ತ ಬಿಲ್ ಪಡೆದಿದ್ದೆ. ಒಂದು ದಿನದ ನಂತರ ಹೋಟೆಲ್ ನನ್ನ ಅನುಮತಿಯಿಲ್ಲದೆ ಬುಕ್ ಮಾಡಿದ ಬೆಲೆಯಿಗಿಂತ ಹೆಚ್ಚಾಗಿ ಶುಲ್ಕ ವಿಧಿಸಿತು. ಇದು ಭಯಾನಕ ಸ್ಥಳ. ಇಲ್ಲಿ ಬುಕ್ ಮಾಡಿಕೊಳ್ಳುವುದರಿಂದ ನಿಮ್ಮನ್ನು ಶಿಕ್ಷಿಸಬೇಡಿ | ಇಲ್ಲದೆ ಭಯಾನಕ ಸ್ಥಳ ದೂರವಿರಿ | ವ್ಯವಹಾರ ಪ್ರಯಾಣ ಜೋಡಿ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಡಬಲ್ ರೂಮ್ 2 ರಾತ್ರಿಗಳು ಉಳಿದಿದ್ದಾರೆ | + +ನೀವು ನೋಡಬಹುದು, ಈ ಅತಿಥಿಗೆ ಈ ಹೋಟೆಲ್‌ನಲ್ಲಿ ಸಂತೋಷಕರ ಉಳಿವು ಇರಲಿಲ್ಲ. ಹೋಟೆಲ್‌ಗೆ 7.8 ಸರಾಸರಿ ಅಂಕ ಮತ್ತು 1945 ವಿಮರ್ಶೆಗಳಿವೆ, ಆದರೆ ಈ ವಿಮರ್ಶಕ 2.5 ಅಂಕ ನೀಡಿದ್ದು, ತಮ್ಮ ನಕಾರಾತ್ಮಕ ಉಳಿವಿನ ಬಗ್ಗೆ 115 ಪದಗಳನ್ನು ಬರೆದಿದ್ದಾರೆ. ಅವರು Positive_Review ಕಾಲಮ್‌ನಲ್ಲಿ ಏನೂ ಬರೆಯದಿದ್ದರೆ, ನೀವು ಧನಾತ್ಮಕವಿಲ್ಲ ಎಂದು ಊಹಿಸಬಹುದು, ಆದರೆ ಅವರು ಎಚ್ಚರಿಕೆಯ 7 ಪದಗಳನ್ನು ಬರೆದಿದ್ದಾರೆ. ನಾವು ಪದಗಳನ್ನು ಮಾತ್ರ ಎಣಿಸಿದರೆ ಅಥವಾ ಪದಗಳ ಅರ್ಥ ಅಥವಾ ಭಾವನಾತ್ಮಕತೆಯನ್ನು ಪರಿಗಣಿಸದೆ ಇದ್ದರೆ, ವಿಮರ್ಶಕರ ಉದ್ದೇಶದ ಬಗ್ಗೆ ತಪ್ಪು ದೃಷ್ಟಿಕೋನವಾಗಬಹುದು. ವಿಚಿತ್ರವಾಗಿ, ಅವರ 2.5 ಅಂಕ ಗೊಂದಲಕಾರಿಯಾಗಿದೆ, ಏಕೆಂದರೆ ಹೋಟೆಲ್ ಉಳಿವು ಅಷ್ಟು ಕೆಟ್ಟದಾಗಿದ್ದರೆ, ಏಕೆ ಅಂಕ ನೀಡಿದರು? ಡೇಟಾಸೆಟ್ ಅನ್ನು ನಿಖರವಾಗಿ ಪರಿಶೀಲಿಸಿದರೆ, ಕನಿಷ್ಠ ಸಾಧ್ಯ ಅಂಕ 2.5, 0 ಅಲ್ಲ. ಗರಿಷ್ಠ ಅಂಕ 10. + +##### ಟ್ಯಾಗ್‌ಗಳು + +ಮೇಲಿನಂತೆ, ಮೊದಲ ನೋಟದಲ್ಲಿ, `Tags` ಬಳಸಿ ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸುವ ಯೋಚನೆ ಅರ್ಥಪೂರ್ಣವಾಗಿದೆ. ದುರದೃಷ್ಟವಶಾತ್, ಈ ಟ್ಯಾಗ್‌ಗಳು ಮಾನಕೀಕೃತವಾಗಿಲ್ಲ, ಅಂದರೆ ಒಂದು ಹೋಟೆಲ್‌ನಲ್ಲಿ ಆಯ್ಕೆಗಳು *Single room*, *Twin room*, ಮತ್ತು *Double room* ಆಗಿರಬಹುದು, ಆದರೆ ಮುಂದಿನ ಹೋಟೆಲ್‌ನಲ್ಲಿ ಅವು *Deluxe Single Room*, *Classic Queen Room*, ಮತ್ತು *Executive King Room* ಆಗಿರಬಹುದು. ಇವು ಒಂದೇ ಅರ್ಥದಿರಬಹುದು, ಆದರೆ ಅನೇಕ ಬದಲಾವಣೆಗಳಿವೆ, ಆದ್ದರಿಂದ ಆಯ್ಕೆ: + +1. ಎಲ್ಲಾ ಪದಗಳನ್ನು ಒಂದೇ ಮಾನಕಕ್ಕೆ ಬದಲಾಯಿಸಲು ಪ್ರಯತ್ನಿಸುವುದು, ಇದು ಬಹಳ ಕಷ್ಟ, ಏಕೆಂದರೆ ಪ್ರತಿಯೊಂದು ಪ್ರಕರಣದಲ್ಲಿಯೂ ಪರಿವರ್ತನೆ ಮಾರ್ಗ ಸ್ಪಷ್ಟವಿಲ್ಲ (ಉದಾ: *Classic single room* ನಕ್ಷೆ *Single room* ಗೆ ಆದರೆ *Superior Queen Room with Courtyard Garden or City View* ನಕ್ಷೆ ಮಾಡುವುದು ಬಹಳ ಕಷ್ಟ) + +1. ನಾವು NLP ವಿಧಾನವನ್ನು ತೆಗೆದು, ಪ್ರತಿಯೊಂದು ಹೋಟೆಲ್‌ಗೆ ಅನ್ವಯಿಸುವಂತೆ *Solo*, *Business Traveller*, ಅಥವಾ *Family with young kids* ಮುಂತಾದ ಪದಗಳ ಆವರ್ತನೆಯನ್ನು ಅಳೆಯಬಹುದು ಮತ್ತು ಅದನ್ನು ಶಿಫಾರಸುಗೆ ಸೇರಿಸಬಹುದು + +ಟ್ಯಾಗ್‌ಗಳು ಸಾಮಾನ್ಯವಾಗಿ (ಆದರೆ ಯಾವಾಗಲೂ ಅಲ್ಲ) 5 ರಿಂದ 6 ಕಮಾ ವಿಭಜಿತ ಮೌಲ್ಯಗಳ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿರುವ ಒಂದು ಕ್ಷೇತ್ರವಾಗಿವೆ, ಅವು *ಪ್ರಯಾಣದ ಪ್ರಕಾರ*, *ಅತಿಥಿಗಳ ಪ್ರಕಾರ*, *ಕೊಠಡಿಯ ಪ್ರಕಾರ*, *ರಾತ್ರಿ ಸಂಖ್ಯೆ*, ಮತ್ತು *ವಿಮರ್ಶೆ ಸಲ್ಲಿಸಿದ ಸಾಧನದ ಪ್ರಕಾರ* ಹೊಂದಿವೆ. ಆದರೆ ಕೆಲವು ವಿಮರ್ಶಕರು ಪ್ರತಿಯೊಂದು ಕ್ಷೇತ್ರವನ್ನು ತುಂಬದಿದ್ದರೆ (ಒಂದು ಖಾಲಿ ಇರಬಹುದು), ಮೌಲ್ಯಗಳು ಯಾವಾಗಲೂ ಒಂದೇ ಕ್ರಮದಲ್ಲಿರಲಾರವು. + +ಉದಾಹರಣೆಗೆ, *ಗುಂಪಿನ ಪ್ರಕಾರ* ತೆಗೆದುಕೊಳ್ಳಿ. `Tags` ಕಾಲಮ್‌ನಲ್ಲಿ ಈ ಕ್ಷೇತ್ರದಲ್ಲಿ 1025 ವಿಭಿನ್ನ ಸಾಧ್ಯತೆಗಳಿವೆ, ಮತ್ತು ದುರದೃಷ್ಟವಶಾತ್ ಕೆಲವು ಮಾತ್ರ ಗುಂಪಿಗೆ ಸಂಬಂಧಿಸಿದವು (ಕೆಲವು ಕೊಠಡಿಯ ಪ್ರಕಾರ ಇತ್ಯಾದಿ). ನೀವು ಕುಟುಂಬವನ್ನು ಮಾತ್ರ ಫಿಲ್ಟರ್ ಮಾಡಿದರೆ, ಫಲಿತಾಂಶಗಳಲ್ಲಿ ಅನೇಕ *Family room* ಪ್ರಕಾರದ ಫಲಿತಾಂಶಗಳಿವೆ. ನೀವು *with* ಪದವನ್ನು ಸೇರಿಸಿದರೆ, ಅಂದರೆ *Family with* ಮೌಲ್ಯಗಳನ್ನು ಎಣಿಸಿದರೆ, ಫಲಿತಾಂಶಗಳು ಉತ್ತಮವಾಗಿವೆ, 515,000 ಫಲಿತಾಂಶಗಳಲ್ಲಿ 80,000 ಕ್ಕೂ ಹೆಚ್ಚು "Family with young children" ಅಥವಾ "Family with older children" ಎಂಬ ವಾಕ್ಯांशವನ್ನು ಹೊಂದಿವೆ. + +ಇದರಿಂದ ಟ್ಯಾಗ್ ಕಾಲಮ್ ನಮಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಉಪಯುಕ್ತವಲ್ಲ, ಆದರೆ ಅದನ್ನು ಉಪಯುಕ್ತವಾಗಿಸಲು ಕೆಲವು ಕೆಲಸ ಬೇಕಾಗುತ್ತದೆ. + +##### ಸರಾಸರಿ ಹೋಟೆಲ್ ಅಂಕ + +ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ ಕೆಲವು ವಿಚಿತ್ರತೆಗಳು ಅಥವಾ ವ್ಯತ್ಯಾಸಗಳಿವೆ, ಅವುಗಳನ್ನು ನಾನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲಾರೆ, ಆದರೆ ನಿಮ್ಮ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ ನೀವು ಅವುಗಳ ಬಗ್ಗೆ ತಿಳಿದಿರಬೇಕು. ನೀವು ಅರ್ಥಮಾಡಿಕೊಂಡರೆ, ದಯವಿಟ್ಟು ಚರ್ಚಾ ವಿಭಾಗದಲ್ಲಿ ನಮಗೆ ತಿಳಿಸಿ! + +ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಸರಾಸರಿ ಅಂಕ ಮತ್ತು ವಿಮರ್ಶೆಗಳ ಸಂಖ್ಯೆಗೆ ಸಂಬಂಧಿಸಿದ ಕಾಲಮ್‌ಗಳು ಇವೆ: + +1. Hotel_Name +2. Additional_Number_of_Scoring +3. Average_Score +4. Total_Number_of_Reviews +5. Reviewer_Score + +ಈ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಅತ್ಯಧಿಕ ವಿಮರ್ಶೆಗಳಿರುವ ಏಕೈಕ ಹೋಟೆಲ್ *Britannia International Hotel Canary Wharf* ಆಗಿದ್ದು, 515,000 ವಿಮರ್ಶೆಗಳಲ್ಲಿ 4789 ವಿಮರ್ಶೆಗಳಿವೆ. ಆದರೆ ಈ ಹೋಟೆಲ್‌ಗೆ `Total_Number_of_Reviews` ಮೌಲ್ಯವನ್ನು ನೋಡಿದರೆ, ಅದು 9086 ಆಗಿದೆ. ನೀವು ಊಹಿಸಬಹುದು, ವಿಮರ್ಶೆಗಳಿಲ್ಲದ ಹೆಚ್ಚಿನ ಅಂಕಗಳಿವೆ, ಆದ್ದರಿಂದ ನಾವು `Additional_Number_of_Scoring` ಕಾಲಮ್ ಮೌಲ್ಯವನ್ನು ಸೇರಿಸಬಹುದು. ಆ ಮೌಲ್ಯ 2682 ಆಗಿದ್ದು, 4789 ಗೆ ಸೇರಿಸಿದರೆ 7,471 ಆಗುತ್ತದೆ, ಇದು `Total_Number_of_Reviews` ಗಿಂತ 1615 ಕಡಿಮೆ. + +`Average_Score` ಕಾಲಮ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಂಡರೆ, ನೀವು ಊಹಿಸಬಹುದು ಇದು ಡೇಟಾಸೆಟ್‌ನ ವಿಮರ್ಶೆಗಳ ಸರಾಸರಿ, ಆದರೆ Kaggle ವಿವರಣೆ "*ಹೋಟೆಲ್‌ನ ಸರಾಸರಿ ಅಂಕ, ಕಳೆದ ವರ್ಷದ ಇತ್ತೀಚಿನ ಕಾಮೆಂಟ್ ಆಧಾರಿತವಾಗಿ ಲೆಕ್ಕಹಾಕಲಾಗಿದೆ*". ಇದು ಬಹಳ ಉಪಯುಕ್ತವಲ್ಲದಂತೆ ತೋರುತ್ತದೆ, ಆದರೆ ನಾವು ಡೇಟಾಸೆಟ್‌ನ ವಿಮರ್ಶಾ ಅಂಕಗಳ ಆಧಾರದ ಮೇಲೆ ನಮ್ಮದೇ ಸರಾಸರಿ ಲೆಕ್ಕಹಾಕಬಹುದು. ಉದಾಹರಣೆಗೆ, ಅದೇ ಹೋಟೆಲ್‌ಗೆ ಸರಾಸರಿ ಹೋಟೆಲ್ ಅಂಕ 7.1 ಎಂದು ನೀಡಲಾಗಿದೆ, ಆದರೆ ಲೆಕ್ಕಹಾಕಿದ ಅಂಕ (ಡೇಟಾಸೆಟ್‌ನ ವಿಮರ್ಶಕರ ಸರಾಸರಿ ಅಂಕ) 6.8 ಆಗಿದೆ. ಇದು ಸಮೀಪದಲ್ಲಿದೆ, ಆದರೆ ಅದೇ ಮೌಲ್ಯವಲ್ಲ, ಮತ್ತು ನಾವು ಊಹಿಸಬಹುದು `Additional_Number_of_Scoring` ವಿಮರ್ಶೆಗಳ ಅಂಕಗಳು ಸರಾಸರಿಯನ್ನು 7.1 ಗೆ ಹೆಚ್ಚಿಸಿದ್ದವು. ಅದನ್ನು ಪರೀಕ್ಷಿಸಲು ಅಥವಾ ಸಾಬೀತುಪಡಿಸಲು ಯಾವುದೇ ಮಾರ್ಗವಿಲ್ಲದ ಕಾರಣ, `Average_Score`, `Additional_Number_of_Scoring` ಮತ್ತು `Total_Number_of_Reviews` ಅನ್ನು ನಾವು ಹೊಂದಿಲ್ಲದ ಡೇಟಾ ಆಧಾರಿತವಾಗಿದ್ದಾಗ ಬಳಸುವುದು ಅಥವಾ ನಂಬುವುದು ಕಷ್ಟ. + +ಇನ್ನಷ್ಟು ಗೊಂದಲಕ್ಕೆ, ಎರಡನೇ ಅತ್ಯಧಿಕ ವಿಮರ್ಶೆಗಳಿರುವ ಹೋಟೆಲ್‌ಗೆ ಲೆಕ್ಕಹಾಕಿದ ಸರಾಸರಿ ಅಂಕ 8.12 ಮತ್ತು ಡೇಟಾಸೆಟ್‌ನ `Average_Score` 8.1 ಆಗಿದೆ. ಇದು ಸರಿಯಾದ ಅಂಕದ ಸಂಧರ್ಭವೇ ಅಥವಾ ಮೊದಲ ಹೋಟೆಲ್ ವ್ಯತ್ಯಾಸವೇ? +ಈ ಹೋಟೆಲ್‌ಗಳು ಹೊರಗಿನ ಅಂಕಿ ಇರಬಹುದು ಎಂಬ ಸಾಧ್ಯತೆಯ ಮೇಲೆ, ಮತ್ತು ಬಹುಶಃ ಹೆಚ್ಚಿನ ಮೌಲ್ಯಗಳು ಸರಿಹೊಂದಬಹುದು (ಆದರೆ ಕೆಲವು ಕಾರಣಕ್ಕಾಗಿ ಕೆಲವು ಸರಿಹೊಂದುವುದಿಲ್ಲ) ನಾವು ಡೇಟಾಸೆಟ್‌ನ ಮೌಲ್ಯಗಳನ್ನು ಅನ್ವೇಷಿಸಲು ಮತ್ತು ಮೌಲ್ಯಗಳ ಸರಿಯಾದ ಬಳಕೆಯನ್ನು (ಅಥವಾ ಬಳಕೆಯಿಲ್ಲದಿರುವುದನ್ನು) ನಿರ್ಧರಿಸಲು ಮುಂದಿನ ಸಣ್ಣ ಪ್ರೋಗ್ರಾಂ ಬರೆಯುತ್ತೇವೆ. + +> 🚨 ಎಚ್ಚರಿಕೆಯ ಟಿಪ್ಪಣಿ +> +> ಈ ಡೇಟಾಸೆಟ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ನೀವು ಪಠ್ಯದಿಂದ ಏನಾದರೂ ಲೆಕ್ಕಹಾಕುವ ಕೋಡ್ ಬರೆಯುತ್ತೀರಿ, ನೀವು ಸ್ವತಃ ಪಠ್ಯವನ್ನು ಓದದೆ ಅಥವಾ ವಿಶ್ಲೇಷಣೆ ಮಾಡದೆ. ಇದು NLP ಯ ಸಾರಾಂಶ, ಅರ್ಥ ಅಥವಾ ಭಾವನೆಯನ್ನು ಮಾನವನು ಮಾಡದೆ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು. ಆದಾಗ್ಯೂ, ನೀವು ಕೆಲವು ನಕಾರಾತ್ಮಕ ವಿಮರ್ಶೆಗಳನ್ನು ಓದಬಹುದು. ನಾನು ನಿಮಗೆ ಅದನ್ನು ಓದಬೇಡಿ ಎಂದು ಸಲಹೆ ನೀಡುತ್ತೇನೆ, ಏಕೆಂದರೆ ನೀವು ಅದನ್ನು ಮಾಡಬೇಕಾಗಿಲ್ಲ. ಕೆಲವು ವಿಮರ್ಶೆಗಳು ಮೂರ್ಖತನ ಅಥವಾ ಅಸಂಬಂಧಿತ ನಕಾರಾತ್ಮಕ ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳಾಗಿವೆ, ಉದಾಹರಣೆಗೆ "ಹವಾಮಾನ ಚೆನ್ನಾಗಿರಲಿಲ್ಲ", ಇದು ಹೋಟೆಲ್ ಅಥವಾ ಯಾರಿಗಾದರೂ ನಿಯಂತ್ರಣದಲ್ಲಿಲ್ಲ. ಆದರೆ ಕೆಲವು ವಿಮರ್ಶೆಗಳಲ್ಲಿ ಕತ್ತಲೆ ಬದಿಯೂ ಇದೆ. ಕೆಲವೊಮ್ಮೆ ನಕಾರಾತ್ಮಕ ವಿಮರ್ಶೆಗಳು ಜಾತ್ಯಾತೀತ, ಲಿಂಗಭೇದ, ಅಥವಾ ವಯೋಭೇದವಾಗಿರುತ್ತವೆ. ಇದು ದುಃಖದಾಯಕವಾದರೂ ಸಾರ್ವಜನಿಕ ವೆಬ್‌ಸೈಟ್‌ನಿಂದ ಸ್ಕ್ರೇಪ್ ಮಾಡಿದ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ನಿರೀಕ್ಷಿಸಬಹುದಾದದ್ದು. ಕೆಲವು ವಿಮರ್ಶಕರು ಅಸಹ್ಯ, ಅಸೌಕರ್ಯಕರ ಅಥವಾ ಕೋಪದಾಯಕ ವಿಮರ್ಶೆಗಳನ್ನು ಬರೆದಿರುತ್ತಾರೆ. ನಿಮ್ಮನ್ನು ಕೋಪಗೊಳ್ಳಿಸುವುದಕ್ಕಿಂತ ಕೋಡ್ ಭಾವನೆಯನ್ನು ಅಳೆಯಲು ಬಿಡುವುದು ಉತ್ತಮ. ಅಂದರೆ, ಇಂತಹವರು ಅಲ್ಪಸಂಖ್ಯಾತರು, ಆದರೆ ಇರುತ್ತಾರೆ. + +## ಅಭ್ಯಾಸ - ಡೇಟಾ ಅನ್ವೇಷಣೆ +### ಡೇಟಾ ಲೋಡ್ ಮಾಡಿ + +ಡೇಟಾವನ್ನು ದೃಶ್ಯವಾಗಿ ಪರಿಶೀಲಿಸುವುದು ಸಾಕು, ಈಗ ನೀವು ಕೆಲವು ಕೋಡ್ ಬರೆಯುತ್ತೀರಿ ಮತ್ತು ಕೆಲವು ಉತ್ತರಗಳನ್ನು ಪಡೆಯುತ್ತೀರಿ! ಈ ವಿಭಾಗವು pandas ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸುತ್ತದೆ. ನಿಮ್ಮ ಮೊದಲ ಕಾರ್ಯ CSV ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡಿ ಓದಲು ಸಾಧ್ಯವಾಗುವಂತೆ ಮಾಡುವುದು. pandas ಗ್ರಂಥಾಲಯದಲ್ಲಿ ವೇಗವಾದ CSV ಲೋಡರ್ ಇದೆ, ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಡೇಟಾಫ್ರೇಮ್‌ನಲ್ಲಿ ಇಡಲಾಗುತ್ತದೆ, ಹಿಂದಿನ ಪಾಠಗಳಂತೆ. ನಾವು ಲೋಡ್ ಮಾಡುತ್ತಿರುವ CSV ನಲ್ಲಿ ಅರ್ಧ ಮಿಲಿಯನ್‌ಕ್ಕಿಂತ ಹೆಚ್ಚು ಸಾಲುಗಳಿವೆ, ಆದರೆ ಕೇವಲ 17 ಕಾಲಮ್‌ಗಳಿವೆ. pandas ನಿಮಗೆ ಡೇಟಾಫ್ರೇಮ್‌ನೊಂದಿಗೆ ಸಂವಹನ ಮಾಡಲು ಬಹಳ ಶಕ್ತಿಶಾಲಿ ವಿಧಾನಗಳನ್ನು ನೀಡುತ್ತದೆ, ಪ್ರತಿಯೊಂದು ಸಾಲಿನ ಮೇಲೆ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಮಾಡಲು ಸಹ. + +ಈ ಪಾಠದಿಂದ ಮುಂದುವರಿದಂತೆ, ಕೆಲವು ಕೋಡ್ ತುಣುಕುಗಳು ಮತ್ತು ಕೋಡ್ ವಿವರಣೆಗಳು ಮತ್ತು ಫಲಿತಾಂಶಗಳ ಅರ್ಥದ ಬಗ್ಗೆ ಚರ್ಚೆಗಳು ಇರುತ್ತವೆ. ನಿಮ್ಮ ಕೋಡ್‌ಗೆ ಸೇರಿಸಿರುವ _notebook.ipynb_ ಅನ್ನು ಬಳಸಿ. + +ನೀವು ಬಳಸಲಿರುವ ಡೇಟಾ ಫೈಲ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುವುದರಿಂದ ಪ್ರಾರಂಭಿಸೋಣ: + +```python +# CSV ನಿಂದ ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ +import pandas as pd +import time +# ಫೈಲ್ ಲೋಡ್ ಸಮಯವನ್ನು ಲೆಕ್ಕಿಸಲು ಪ್ರಾರಂಭ ಮತ್ತು ಅಂತ್ಯದ ಸಮಯವನ್ನು ಬಳಸಲು ಸಮಯವನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಲಾಗುತ್ತಿದೆ +print("Loading data file now, this could take a while depending on file size") +start = time.time() +# df ಎಂದರೆ 'ಡೇಟಾಫ್ರೇಮ್' - ನೀವು ಫೈಲ್ ಅನ್ನು ಡೇಟಾ ಫೋಲ್ಡರ್‌ಗೆ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ್ದೀರಾ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ +df = pd.read_csv('../../data/Hotel_Reviews.csv') +end = time.time() +print("Loading took " + str(round(end - start, 2)) + " seconds") +``` + +ಡೇಟಾ ಲೋಡ್ ಆದ ನಂತರ, ನಾವು ಅದರಲ್ಲಿ ಕೆಲವು ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಮಾಡಬಹುದು. ಮುಂದಿನ ಭಾಗಕ್ಕಾಗಿ ಈ ಕೋಡ್ ಅನ್ನು ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಂನ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಇಡಿ. + +## ಡೇಟಾ ಅನ್ವೇಷಣೆ + +ಈ ಪ್ರಕರಣದಲ್ಲಿ, ಡೇಟಾ ಈಗಾಗಲೇ *ಶುದ್ಧ* ಆಗಿದೆ, ಅಂದರೆ ಅದು ಕೆಲಸ ಮಾಡಲು ಸಿದ್ಧವಾಗಿದೆ, ಮತ್ತು ಅಲಂಕೃತ ಭಾಷೆಗಳ ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿಲ್ಲ, ಇದು ಆಲ್ಗೋರಿದಮ್‌ಗಳಿಗೆ ತೊಂದರೆ ಉಂಟುಮಾಡಬಹುದು, ಅವು ಕೇವಲ ಇಂಗ್ಲಿಷ್ ಅಕ್ಷರಗಳನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತವೆ. + +✅ ನೀವು ಕೆಲವೊಮ್ಮೆ NLP ತಂತ್ರಗಳನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು ಸ್ವರೂಪಗೊಳಿಸುವ ಪ್ರಾಥಮಿಕ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅಗತ್ಯವಿರುವ ಡೇಟಾ ಜೊತೆ ಕೆಲಸ ಮಾಡಬೇಕಾಗಬಹುದು, ಆದರೆ ಈ ಬಾರಿ ಅಲ್ಲ. ನೀವು ಮಾಡಬೇಕಾದರೆ, ನೀವು ಇಂಗ್ಲಿಷ್ ಅಲ್ಲದ ಅಕ್ಷರಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತೀರಿ? + +ಡೇಟಾ ಲೋಡ್ ಆದ ನಂತರ, ನೀವು ಕೋಡ್ ಮೂಲಕ ಅದನ್ನು ಅನ್ವೇಷಿಸಬಹುದೆಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ನೀವು ಬಹುಶಃ `Negative_Review` ಮತ್ತು `Positive_Review` ಕಾಲಮ್‌ಗಳ ಮೇಲೆ ಗಮನಹರಿಸಲು ಇಚ್ಛಿಸುವಿರಿ. ಅವು ನಿಮ್ಮ NLP ಆಲ್ಗೋರಿದಮ್‌ಗಳಿಗೆ ಪ್ರಕ್ರಿಯೆ ಮಾಡಲು ನೈಸರ್ಗಿಕ ಪಠ್ಯದಿಂದ ತುಂಬಿವೆ. ಆದರೆ ಕಾಯಿರಿ! NLP ಮತ್ತು ಭಾವನೆಯಲ್ಲಿ ಮುಳುಗುವ ಮೊದಲು, ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ಅನುಸರಿಸಿ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ನೀಡಲಾದ ಮೌಲ್ಯಗಳು pandas ಬಳಸಿ ಲೆಕ್ಕಹಾಕಿದ ಮೌಲ್ಯಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತವೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. + +## ಡೇಟಾಫ್ರೇಮ್ ಕಾರ್ಯಾಚರಣೆಗಳು + +ಈ ಪಾಠದ ಮೊದಲ ಕಾರ್ಯ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಪರಿಶೀಲಿಸುವ ಕೋಡ್ ಬರೆಯುವುದು (ಬದಲಾವಣೆ ಮಾಡದೆ) ಕೆಳಗಿನ ದೃಢೀಕರಣಗಳು ಸರಿಯೇ ಎಂದು ಪರಿಶೀಲಿಸುವುದು. + +> ಅನೇಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಕಾರ್ಯಗಳಂತೆ, ಇದನ್ನು ಪೂರ್ಣಗೊಳಿಸುವ ಹಲವು ಮಾರ್ಗಗಳಿವೆ, ಆದರೆ ಉತ್ತಮ ಸಲಹೆ ಎಂದರೆ ಸರಳ, ಸುಲಭವಾದ ಮಾರ್ಗವನ್ನು ಆರಿಸುವುದು, ವಿಶೇಷವಾಗಿ ನೀವು ಭವಿಷ್ಯದಲ್ಲಿ ಈ ಕೋಡ್‌ಗೆ ಮರಳುವಾಗ ಅದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸುಲಭವಾಗಿರುತ್ತದೆ. ಡೇಟಾಫ್ರೇಮ್‌ಗಳೊಂದಿಗೆ, ನೀವು ಬಯಸುವ ಕಾರ್ಯವನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಮಾಡಲು ಸಾಮಾನ್ಯವಾಗಿ ಮಾರ್ಗವಿರುವ ಸಮಗ್ರ API ಇದೆ. + +ಕೆಳಗಿನ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೋಡಿಂಗ್ ಕಾರ್ಯಗಳಾಗಿ ಪರಿಗಣಿಸಿ ಮತ್ತು ಪರಿಹಾರವನ್ನು ನೋಡದೆ ಉತ್ತರಿಸಲು ಪ್ರಯತ್ನಿಸಿ. + +1. ನೀವು appena ಲೋಡ್ ಮಾಡಿದ ಡೇಟಾಫ್ರೇಮ್‌ನ *ಆಕಾರ* ಅನ್ನು ಮುದ್ರಿಸಿ (ಆಕಾರ ಎಂದರೆ ಸಾಲುಗಳ ಮತ್ತು ಕಾಲಮ್‌ಗಳ ಸಂಖ್ಯೆ) +2. ವಿಮರ್ಶಕರ ರಾಷ್ಟ್ರೀಯತೆಗಳ ಆವರ್ತನೆ ಎಣಿಕೆ ಲೆಕ್ಕಹಾಕಿ: + 1. `Reviewer_Nationality` ಕಾಲಮ್‌ಗೆ ಎಷ್ಟು ವಿಭಿನ್ನ ಮೌಲ್ಯಗಳಿವೆ ಮತ್ತು ಅವು ಯಾವುವು? + 2. ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಯಾವ ವಿಮರ್ಶಕರ ರಾಷ್ಟ್ರೀಯತೆ ಅತ್ಯಂತ ಸಾಮಾನ್ಯವಾಗಿದೆ (ದೇಶ ಮತ್ತು ವಿಮರ್ಶೆಗಳ ಸಂಖ್ಯೆ ಮುದ್ರಿಸಿ)? + 3. ಮುಂದಿನ ಟಾಪ್ 10 ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ರಾಷ್ಟ್ರೀಯತೆಗಳು ಮತ್ತು ಅವುಗಳ ಆವರ್ತನೆ ಎಣಿಕೆ ಯಾವುವು? +3. ಟಾಪ್ 10 ವಿಮರ್ಶಕರ ರಾಷ್ಟ್ರೀಯತೆಗಳಿಗೆ ಪ್ರತಿ ದೇಶದ ಅತ್ಯಂತ ವಿಮರ್ಶಿಸಲಾದ ಹೋಟೆಲ್ ಯಾವುದು? +4. ಪ್ರತಿ ಹೋಟೆಲ್‌ಗೆ ಎಷ್ಟು ವಿಮರ್ಶೆಗಳಿವೆ (ಹೋಟೆಲ್ ಆವರ್ತನೆ ಎಣಿಕೆ) ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ? +5. ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಪ್ರತಿ ಹೋಟೆಲ್‌ಗೆ `Average_Score` ಕಾಲಮ್ ಇದ್ದರೂ, ನೀವು ಪ್ರತಿ ಹೋಟೆಲ್‌ಗೆ ಎಲ್ಲಾ ವಿಮರ್ಶಕರ ಅಂಕಗಳ ಸರಾಸರಿಯನ್ನು ಲೆಕ್ಕಹಾಕಬಹುದು. ನಿಮ್ಮ ಡೇಟಾಫ್ರೇಮ್‌ಗೆ `Calc_Average_Score` ಎಂಬ ಹೊಸ ಕಾಲಮ್ ಸೇರಿಸಿ, ಅದು ಲೆಕ್ಕಹಾಕಿದ ಸರಾಸರಿಯನ್ನು ಹೊಂದಿರಲಿ. +6. ಯಾವುದೇ ಹೋಟೆಲ್‌ಗಳಿಗೆ (1 ದಶಮಾಂಶ ಸ್ಥಾನಕ್ಕೆ ರೌಂಡ್ ಮಾಡಿದ) `Average_Score` ಮತ್ತು `Calc_Average_Score` ಒಂದೇ ಇದ್ದವೆಯೇ? + 1. ಒಂದು Python ಫಂಕ್ಷನ್ ಬರೆಯಲು ಪ್ರಯತ್ನಿಸಿ, ಅದು Series (ಸಾಲು) ಅನ್ನು ಆರ್ಗ್ಯುಮೆಂಟ್ ಆಗಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಮೌಲ್ಯಗಳನ್ನು ಹೋಲಿಸಿ, ಮೌಲ್ಯಗಳು ಸಮಾನವಾಗದಿದ್ದಾಗ ಸಂದೇಶವನ್ನು ಮುದ್ರಿಸುತ್ತದೆ. ನಂತರ `.apply()` ವಿಧಾನವನ್ನು ಬಳಸಿ ಪ್ರತಿಯೊಂದು ಸಾಲಿನನ್ನೂ ಪ್ರಕ್ರಿಯೆ ಮಾಡಿ. +7. `Negative_Review` ಕಾಲಮ್‌ನಲ್ಲಿ "No Negative" ಮೌಲ್ಯ ಇರುವ ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಲೆಕ್ಕಿಸಿ ಮತ್ತು ಮುದ್ರಿಸಿ +8. `Positive_Review` ಕಾಲಮ್‌ನಲ್ಲಿ "No Positive" ಮೌಲ್ಯ ಇರುವ ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಲೆಕ್ಕಿಸಿ ಮತ್ತು ಮುದ್ರಿಸಿ +9. `Positive_Review` ಕಾಲಮ್‌ನಲ್ಲಿ "No Positive" ಮತ್ತು `Negative_Review` ಕಾಲಮ್‌ನಲ್ಲಿ "No Negative" ಮೌಲ್ಯಗಳಿರುವ ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಲೆಕ್ಕಿಸಿ ಮತ್ತು ಮುದ್ರಿಸಿ +### ಕೋಡ್ ಉತ್ತರಗಳು + +1. ನೀವು appena ಲೋಡ್ ಮಾಡಿದ ಡೇಟಾಫ್ರೇಮ್‌ನ *ಆಕಾರ* ಅನ್ನು ಮುದ್ರಿಸಿ (ಆಕಾರ ಎಂದರೆ ಸಾಲುಗಳ ಮತ್ತು ಕಾಲಮ್‌ಗಳ ಸಂಖ್ಯೆ) + + ```python + print("The shape of the data (rows, cols) is " + str(df.shape)) + > The shape of the data (rows, cols) is (515738, 17) + ``` + +2. ವಿಮರ್ಶಕರ ರಾಷ್ಟ್ರೀಯತೆಗಳ ಆವರ್ತನೆ ಎಣಿಕೆ ಲೆಕ್ಕಹಾಕಿ: + + 1. `Reviewer_Nationality` ಕಾಲಮ್‌ಗೆ ಎಷ್ಟು ವಿಭಿನ್ನ ಮೌಲ್ಯಗಳಿವೆ ಮತ್ತು ಅವು ಯಾವುವು? + 2. ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಯಾವ ವಿಮರ್ಶಕರ ರಾಷ್ಟ್ರೀಯತೆ ಅತ್ಯಂತ ಸಾಮಾನ್ಯವಾಗಿದೆ (ದೇಶ ಮತ್ತು ವಿಮರ್ಶೆಗಳ ಸಂಖ್ಯೆ ಮುದ್ರಿಸಿ)? + + ```python + # value_counts() ಒಂದು ಸೀರೀಸ್ ವಸ್ತುವನ್ನು ರಚಿಸುತ್ತದೆ, ಇದರಲ್ಲಿ ಸೂಚ್ಯಂಕ ಮತ್ತು ಮೌಲ್ಯಗಳಿವೆ, ಈ ಪ್ರಕರಣದಲ್ಲಿ, ದೇಶ ಮತ್ತು ವಿಮರ್ಶಕ ರಾಷ್ಟ್ರೀಯತೆಯಲ್ಲಿ ಅವುಗಳ ಸಂಭವನೀಯತೆ + nationality_freq = df["Reviewer_Nationality"].value_counts() + print("There are " + str(nationality_freq.size) + " different nationalities") + # ಸೀರೀಸ್‌ನ ಮೊದಲ ಮತ್ತು ಕೊನೆಯ ಸಾಲುಗಳನ್ನು ಮುದ್ರಿಸಿ. ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಮುದ್ರಿಸಲು nationality_freq.to_string() ಗೆ ಬದಲಾಯಿಸಿ + print(nationality_freq) + + There are 227 different nationalities + United Kingdom 245246 + United States of America 35437 + Australia 21686 + Ireland 14827 + United Arab Emirates 10235 + ... + Comoros 1 + Palau 1 + Northern Mariana Islands 1 + Cape Verde 1 + Guinea 1 + Name: Reviewer_Nationality, Length: 227, dtype: int64 + ``` + + 3. ಮುಂದಿನ ಟಾಪ್ 10 ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ರಾಷ್ಟ್ರೀಯತೆಗಳು ಮತ್ತು ಅವುಗಳ ಆವರ್ತನೆ ಎಣಿಕೆ ಯಾವುವು? + + ```python + print("The highest frequency reviewer nationality is " + str(nationality_freq.index[0]).strip() + " with " + str(nationality_freq[0]) + " reviews.") + # ಮೌಲ್ಯಗಳಲ್ಲಿ ಮುಂಚಿತ ಖಾಲಿ ಜಾಗವಿದೆ, ಮುದ್ರಣಕ್ಕಾಗಿ ಅದನ್ನು strip() ತೆಗೆದುಹಾಕುತ್ತದೆ + # ಅತಿ ಸಾಮಾನ್ಯ 10 ರಾಷ್ಟ್ರೀಯತೆಗಳು ಮತ್ತು ಅವುಗಳ ಆವರ್ತನೆಗಳು ಯಾವುವು? + print("The next 10 highest frequency reviewer nationalities are:") + print(nationality_freq[1:11].to_string()) + + The highest frequency reviewer nationality is United Kingdom with 245246 reviews. + The next 10 highest frequency reviewer nationalities are: + United States of America 35437 + Australia 21686 + Ireland 14827 + United Arab Emirates 10235 + Saudi Arabia 8951 + Netherlands 8772 + Switzerland 8678 + Germany 7941 + Canada 7894 + France 7296 + ``` + +3. ಟಾಪ್ 10 ವಿಮರ್ಶಕರ ರಾಷ್ಟ್ರೀಯತೆಗಳಿಗೆ ಪ್ರತಿ ದೇಶದ ಅತ್ಯಂತ ವಿಮರ್ಶಿಸಲಾದ ಹೋಟೆಲ್ ಯಾವುದು? + + ```python + # ಟಾಪ್ 10 ರಾಷ್ಟ್ರೀಯತೆಗಳಿಗೆ ಅತ್ಯಂತ ಹೆಚ್ಚು ವಿಮರ್ಶಿಸಲಾದ ಹೋಟೆಲ್ ಯಾವುದು + # ಸಾಮಾನ್ಯವಾಗಿ pandas ನಲ್ಲಿ ನೀವು ಸ್ಪಷ್ಟ ಲೂಪ್ ಅನ್ನು ತಪ್ಪಿಸುವಿರಿ, ಆದರೆ ಮಾನದಂಡಗಳನ್ನು ಬಳಸಿ ಹೊಸ ಡೇಟಾಫ್ರೇಮ್ ರಚಿಸುವುದನ್ನು ತೋರಿಸಲು ಬಯಸಿದೆ (ಬಹಳ ದೊಡ್ಡ ಡೇಟಾ ಪ್ರಮಾಣದೊಂದಿಗೆ ಇದನ್ನು ಮಾಡಬೇಡಿ ಏಕೆಂದರೆ ಇದು ತುಂಬಾ ನಿಧಾನವಾಗಬಹುದು) + for nat in nationality_freq[:10].index: + # ಮೊದಲು, ಮಾನದಂಡಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುವ ಎಲ್ಲಾ ಸಾಲುಗಳನ್ನು ಹೊಸ ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಹೊರತೆಗೆಯಿರಿ + nat_df = df[df["Reviewer_Nationality"] == nat] + # ಈಗ ಹೋಟೆಲ್ ಫ್ರೀಕ್ವೆನ್ಸಿ ಪಡೆಯಿರಿ + freq = nat_df["Hotel_Name"].value_counts() + print("The most reviewed hotel for " + str(nat).strip() + " was " + str(freq.index[0]) + " with " + str(freq[0]) + " reviews.") + + The most reviewed hotel for United Kingdom was Britannia International Hotel Canary Wharf with 3833 reviews. + The most reviewed hotel for United States of America was Hotel Esther a with 423 reviews. + The most reviewed hotel for Australia was Park Plaza Westminster Bridge London with 167 reviews. + The most reviewed hotel for Ireland was Copthorne Tara Hotel London Kensington with 239 reviews. + The most reviewed hotel for United Arab Emirates was Millennium Hotel London Knightsbridge with 129 reviews. + The most reviewed hotel for Saudi Arabia was The Cumberland A Guoman Hotel with 142 reviews. + The most reviewed hotel for Netherlands was Jaz Amsterdam with 97 reviews. + The most reviewed hotel for Switzerland was Hotel Da Vinci with 97 reviews. + The most reviewed hotel for Germany was Hotel Da Vinci with 86 reviews. + The most reviewed hotel for Canada was St James Court A Taj Hotel London with 61 reviews. + ``` + +4. ಪ್ರತಿ ಹೋಟೆಲ್‌ಗೆ ಎಷ್ಟು ವಿಮರ್ಶೆಗಳಿವೆ (ಹೋಟೆಲ್ ಆವರ್ತನೆ ಎಣಿಕೆ) ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ? + + ```python + # ಹಳೆಯದನ್ನು ಆಧರಿಸಿ ಹೊಸ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಮೊದಲಿಗೆ ರಚಿಸಿ, ಅಗತ್ಯವಿಲ್ಲದ ಕಾಲಮ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ + 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) + + # ಸಾಲುಗಳನ್ನು Hotel_Name ಮೂಲಕ ಗುಂಪು ಮಾಡಿ, ಅವುಗಳನ್ನು ಎಣಿಸಿ ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಹೊಸ ಕಾಲಮ್ Total_Reviews_Found ನಲ್ಲಿ ಇಡಿ + hotel_freq_df['Total_Reviews_Found'] = hotel_freq_df.groupby('Hotel_Name').transform('count') + + # ಎಲ್ಲಾ ನಕಲಿ ಸಾಲುಗಳನ್ನು ತೆಗೆದುಹಾಕಿ + hotel_freq_df = hotel_freq_df.drop_duplicates(subset = ["Hotel_Name"]) + display(hotel_freq_df) + ``` + | Hotel_Name | Total_Number_of_Reviews | Total_Reviews_Found | + | :----------------------------------------: | :---------------------: | :-----------------: | + | Britannia International Hotel Canary Wharf | 9086 | 4789 | + | Park Plaza Westminster Bridge London | 12158 | 4169 | + | Copthorne Tara Hotel London Kensington | 7105 | 3578 | + | ... | ... | ... | + | Mercure Paris Porte d Orleans | 110 | 10 | + | Hotel Wagner | 135 | 10 | + | Hotel Gallitzinberg | 173 | 8 | + + ನೀವು ಗಮನಿಸಬಹುದು ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಎಣಿಸಿದ ಫಲಿತಾಂಶಗಳು `Total_Number_of_Reviews` ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ. ಈ ಮೌಲ್ಯವು ಹೋಟೆಲ್‌ಗೆ ಒಟ್ಟು ವಿಮರ್ಶೆಗಳ ಸಂಖ್ಯೆ ಸೂಚಿಸುತ್ತಿದೆಯೇ ಅಥವಾ ಎಲ್ಲಾ ವಿಮರ್ಶೆಗಳು ಸ್ಕ್ರೇಪ್ ಆಗಿಲ್ಲವೇ ಅಥವಾ ಬೇರೆ ಲೆಕ್ಕಾಚಾರವೇ ಎಂಬುದು ಸ್ಪಷ್ಟವಿಲ್ಲ. ಈ ಅಸ್ಪಷ್ಟತೆಯ ಕಾರಣದಿಂದ `Total_Number_of_Reviews` ಅನ್ನು ಮಾದರಿಯಲ್ಲಿ ಬಳಸಲಾಗುವುದಿಲ್ಲ. + +5. ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಪ್ರತಿ ಹೋಟೆಲ್‌ಗೆ `Average_Score` ಕಾಲಮ್ ಇದ್ದರೂ, ನೀವು ಪ್ರತಿ ಹೋಟೆಲ್‌ಗೆ ಎಲ್ಲಾ ವಿಮರ್ಶಕರ ಅಂಕಗಳ ಸರಾಸರಿಯನ್ನು ಲೆಕ್ಕಹಾಕಬಹುದು. ನಿಮ್ಮ ಡೇಟಾಫ್ರೇಮ್‌ಗೆ `Calc_Average_Score` ಎಂಬ ಹೊಸ ಕಾಲಮ್ ಸೇರಿಸಿ, ಅದು ಲೆಕ್ಕಹಾಕಿದ ಸರಾಸರಿಯನ್ನು ಹೊಂದಿರಲಿ. `Hotel_Name`, `Average_Score`, ಮತ್ತು `Calc_Average_Score` ಕಾಲಮ್‌ಗಳನ್ನು ಮುದ್ರಿಸಿ. + + ```python + # ಒಂದು ಸಾಲನ್ನು ತೆಗೆದುಕೊಂಡು ಅದರಲ್ಲಿ ಕೆಲವು ಲೆಕ್ಕಾಚಾರಗಳನ್ನು ಮಾಡುವ ಫಂಕ್ಷನ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ + def get_difference_review_avg(row): + return row["Average_Score"] - row["Calc_Average_Score"] + + # 'mean' ಎಂದರೆ ಗಣಿತೀಯ ಪದ 'ಸರಾಸರಿ' + df['Calc_Average_Score'] = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1) + + # ಎರಡು ಸರಾಸರಿ ಅಂಕಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ಹೊಂದಿರುವ ಹೊಸ ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸಿ + df["Average_Score_Difference"] = df.apply(get_difference_review_avg, axis = 1) + + # Hotel_Name ನ ಎಲ್ಲಾ ನಕಲುಗಳನ್ನು ತೆಗೆದುಹಾಕಿ df ರಚಿಸಿ (ಹೀಗಾಗಿ ಪ್ರತಿ ಹೋಟೆಲಿಗೆ ಕೇವಲ 1 ಸಾಲು ಮಾತ್ರ) + review_scores_df = df.drop_duplicates(subset = ["Hotel_Name"]) + + # ಕಡಿಮೆ ಮತ್ತು ಹೆಚ್ಚು ಸರಾಸರಿ ಅಂಕ ವ್ಯತ್ಯಾಸವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ವಿಂಗಡಿಸಿ + review_scores_df = review_scores_df.sort_values(by=["Average_Score_Difference"]) + + display(review_scores_df[["Average_Score_Difference", "Average_Score", "Calc_Average_Score", "Hotel_Name"]]) + ``` + + ನೀವು `Average_Score` ಮೌಲ್ಯ ಮತ್ತು ಲೆಕ್ಕಹಾಕಿದ ಸರಾಸರಿ ಅಂಕಗಳ ನಡುವೆ ಕೆಲವೊಮ್ಮೆ ವ್ಯತ್ಯಾಸ ಏಕೆ ಇದೆ ಎಂದು ಆಶ್ಚರ್ಯಪಡಬಹುದು. ಕೆಲವು ಮೌಲ್ಯಗಳು ಹೊಂದಿಕೆಯಾಗುತ್ತವೆ, ಆದರೆ ಇತರವು ವ್ಯತ್ಯಾಸ ಹೊಂದಿರುವುದಕ್ಕೆ ಕಾರಣ ತಿಳಿಯದಿದ್ದರೂ, ಈ ಸಂದರ್ಭದಲ್ಲಿ ನಾವು ಹೊಂದಿರುವ ವಿಮರ್ಶಾ ಅಂಕಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸರಾಸರಿಯನ್ನು ಸ್ವತಃ ಲೆಕ್ಕಹಾಕುವುದು ಸುರಕ್ಷಿತ. ವ್ಯತ್ಯಾಸಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಬಹಳ ಸಣ್ಣವಾಗಿವೆ, ಇಲ್ಲಿ ಡೇಟಾಸೆಟ್ ಸರಾಸರಿ ಮತ್ತು ಲೆಕ್ಕಹಾಕಿದ ಸರಾಸರಿಯಿಂದ ಅತ್ಯಂತ ವ್ಯತ್ಯಾಸ ಹೊಂದಿರುವ ಹೋಟೆಲ್‌ಗಳಿವೆ: + + | Average_Score_Difference | Average_Score | Calc_Average_Score | Hotel_Name | + | :----------------------: | :-----------: | :----------------: | ------------------------------------------: | + | -0.8 | 7.7 | 8.5 | Best Western Hotel Astoria | + | -0.7 | 8.8 | 9.5 | Hotel Stendhal Place Vend me Paris MGallery | + | -0.7 | 7.5 | 8.2 | Mercure Paris Porte d Orleans | + | -0.7 | 7.9 | 8.6 | Renaissance Paris Vendome Hotel | + | -0.5 | 7.0 | 7.5 | Hotel Royal Elys es | + | ... | ... | ... | ... | + | 0.7 | 7.5 | 6.8 | Mercure Paris Op ra Faubourg Montmartre | + | 0.8 | 7.1 | 6.3 | Holiday Inn Paris Montparnasse Pasteur | + | 0.9 | 6.8 | 5.9 | Villa Eugenie | + | 0.9 | 8.6 | 7.7 | MARQUIS Faubourg St Honor Relais Ch teaux | + | 1.3 | 7.2 | 5.9 | Kube Hotel Ice Bar | + + 1 ಕ್ಕಿಂತ ಹೆಚ್ಚು ವ್ಯತ್ಯಾಸ ಹೊಂದಿರುವ ಹೋಟೆಲ್ ಒಂದೇ ಇದ್ದುದರಿಂದ, ನಾವು ವ್ಯತ್ಯಾಸವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ ಲೆಕ್ಕಹಾಕಿದ ಸರಾಸರಿ ಅಂಕವನ್ನು ಬಳಸಬಹುದು ಎಂದು ಅರ್ಥ. + +6. `Negative_Review` ಕಾಲಮ್‌ನಲ್ಲಿ "No Negative" ಮೌಲ್ಯ ಇರುವ ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಲೆಕ್ಕಿಸಿ ಮತ್ತು ಮುದ್ರಿಸಿ + +7. `Positive_Review` ಕಾಲಮ್‌ನಲ್ಲಿ "No Positive" ಮೌಲ್ಯ ಇರುವ ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಲೆಕ್ಕಿಸಿ ಮತ್ತು ಮುದ್ರಿಸಿ + +8. `Positive_Review` ಕಾಲಮ್‌ನಲ್ಲಿ "No Positive" ಮತ್ತು `Negative_Review` ಕಾಲಮ್‌ನಲ್ಲಿ "No Negative" ಮೌಲ್ಯಗಳಿರುವ ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಲೆಕ್ಕಿಸಿ ಮತ್ತು ಮುದ್ರಿಸಿ + + ```python + # ಲ್ಯಾಂಬ್ಡಾಗಳೊಂದಿಗೆ: + start = time.time() + no_negative_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" else False , axis=1) + print("Number of No Negative reviews: " + str(len(no_negative_reviews[no_negative_reviews == True].index))) + + no_positive_reviews = df.apply(lambda x: True if x['Positive_Review'] == "No Positive" else False , axis=1) + print("Number of No Positive reviews: " + str(len(no_positive_reviews[no_positive_reviews == True].index))) + + both_no_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" and x['Positive_Review'] == "No Positive" else False , axis=1) + print("Number of both No Negative and No Positive reviews: " + str(len(both_no_reviews[both_no_reviews == True].index))) + end = time.time() + print("Lambdas took " + str(round(end - start, 2)) + " seconds") + + Number of No Negative reviews: 127890 + Number of No Positive reviews: 35946 + Number of both No Negative and No Positive reviews: 127 + Lambdas took 9.64 seconds + ``` + +## ಇನ್ನೊಂದು ವಿಧಾನ + +Lambda ಗಳನ್ನು ಬಳಸದೆ ಐಟಂಗಳನ್ನು ಎಣಿಸುವ ಮತ್ತೊಂದು ವಿಧಾನ, ಮತ್ತು ಸಾಲುಗಳನ್ನು ಎಣಿಸಲು sum ಬಳಸಿ: + + ```python + # ಲ್ಯಾಂಬ್ಡಾಗಳಿಲ್ಲದೆ (ನೀವು ಎರಡನ್ನೂ ಬಳಸಬಹುದು ಎಂದು ತೋರಿಸಲು ನೋಟೇಶನ್‌ಗಳ ಮಿಶ್ರಣವನ್ನು ಬಳಸಿಕೊಂಡು) + start = time.time() + no_negative_reviews = sum(df.Negative_Review == "No Negative") + print("Number of No Negative reviews: " + str(no_negative_reviews)) + + no_positive_reviews = sum(df["Positive_Review"] == "No Positive") + print("Number of No Positive reviews: " + str(no_positive_reviews)) + + both_no_reviews = sum((df.Negative_Review == "No Negative") & (df.Positive_Review == "No Positive")) + print("Number of both No Negative and No Positive reviews: " + str(both_no_reviews)) + + end = time.time() + print("Sum took " + str(round(end - start, 2)) + " seconds") + + Number of No Negative reviews: 127890 + Number of No Positive reviews: 35946 + Number of both No Negative and No Positive reviews: 127 + Sum took 0.19 seconds + ``` + + ನೀವು ಗಮನಿಸಿದ್ದೀರಾ, 127 ಸಾಲುಗಳಲ್ಲಿ `Negative_Review` ಮತ್ತು `Positive_Review` ಕಾಲಮ್‌ಗಳಲ್ಲಿ ಕ್ರಮವಾಗಿ "No Negative" ಮತ್ತು "No Positive" ಮೌಲ್ಯಗಳಿವೆ. ಅಂದರೆ ವಿಮರ್ಶಕರು ಹೋಟೆಲ್‌ಗೆ ಸಂಖ್ಯಾತ್ಮಕ ಅಂಕ ನೀಡಿದರೂ, ಧನಾತ್ಮಕ ಅಥವಾ ನಕಾರಾತ್ಮಕ ವಿಮರ್ಶೆ ಬರೆಯಲು ನಿರಾಕರಿಸಿದ್ದಾರೆ. ಅದೃಷ್ಟವಶಾತ್, ಇದು ಸಣ್ಣ ಪ್ರಮಾಣದ ಸಾಲುಗಳು (127 ರಲ್ಲಿ 515738, ಅಥವಾ 0.02%), ಆದ್ದರಿಂದ ಇದು ನಮ್ಮ ಮಾದರಿ ಅಥವಾ ಫಲಿತಾಂಶಗಳನ್ನು ಯಾವುದೇ ವಿಶೇಷ ದಿಕ್ಕಿನಲ್ಲಿ ಬದಲಿಸುವುದಿಲ್ಲ, ಆದರೆ ವಿಮರ್ಶೆಗಳ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ವಿಮರ್ಶೆಗಳಿಲ್ಲದ ಸಾಲುಗಳಿರುವುದು ಅಚ್ಚರಿಯ ಸಂಗತಿ, ಆದ್ದರಿಂದ ಇಂತಹ ಸಾಲುಗಳನ್ನು ಅನ್ವೇಷಿಸುವುದು ಮುಖ್ಯ. + +ನೀವು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಅನ್ವೇಷಿಸಿದ ನಂತರ, ಮುಂದಿನ ಪಾಠದಲ್ಲಿ ನೀವು ಡೇಟಾವನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿ ಮತ್ತು ಕೆಲವು ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ ಸೇರಿಸುವಿರಿ. + +--- +## 🚀ಸವಾಲು + +ಈ ಪಾಠವು, ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ನೋಡಿದಂತೆ, ನಿಮ್ಮ ಡೇಟಾ ಮತ್ತು ಅದರ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಕಾರ್ಯಾಚರಣೆ ಮಾಡುವ ಮೊದಲು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಎಷ್ಟು ಮಹತ್ವದದ್ದು ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ. ಪಠ್ಯ ಆಧಾರಿತ ಡೇಟಾ ವಿಶೇಷವಾಗಿ ಜಾಗರೂಕ ಪರಿಶೀಲನೆಗೆ ಒಳಪಡುತ್ತದೆ. ವಿವಿಧ ಪಠ್ಯಭರಿತ ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ, ಮಾದರಿಯಲ್ಲಿ ಬಯಾಸ್ ಅಥವಾ ಭಾವನಾತ್ಮಕ ತಿರುವುಗಳನ್ನು ಪರಿಚಯಿಸಬಹುದಾದ ಪ್ರದೇಶಗಳನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ. + +## [ಪಾಠದ ನಂತರದ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +[ಈ NLP ಅಧ್ಯಯನ ಮಾರ್ಗವನ್ನು](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) ತೆಗೆದುಕೊಳ್ಳಿ, ಭಾಷಣ ಮತ್ತು ಪಠ್ಯಭರಿತ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ ಪ್ರಯತ್ನಿಸಲು ಉಪಕರಣಗಳನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ. + +## ನಿಯೋಜನೆ + +[NLTK](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/4-Hotel-Reviews-1/assignment.md b/translations/kn/6-NLP/4-Hotel-Reviews-1/assignment.md new file mode 100644 index 000000000..420c74536 --- /dev/null +++ b/translations/kn/6-NLP/4-Hotel-Reviews-1/assignment.md @@ -0,0 +1,21 @@ + +# NLTK + +## ಸೂಚನೆಗಳು + +NLTK ಗಣನೀಯ ಭಾಷಾಶಾಸ್ತ್ರ ಮತ್ತು NLP ನಲ್ಲಿ ಬಳಸಲು ಪ್ರಸಿದ್ಧ ಗ್ರಂಥಾಲಯವಾಗಿದೆ. '[NLTK ಪುಸ್ತಕ](https://www.nltk.org/book/)' ಅನ್ನು ಓದಿ ಅದರ ವ್ಯಾಯಾಮಗಳನ್ನು ಪ್ರಯತ್ನಿಸುವ ಅವಕಾಶವನ್ನು ಪಡೆದುಕೊಳ್ಳಿ. ಈ ಅಗ್ರೇಡ್ ಮಾಡದ ಕಾರ್ಯದಲ್ಲಿ, ನೀವು ಈ ಗ್ರಂಥಾಲಯವನ್ನು ಹೆಚ್ಚು ಆಳವಾಗಿ ತಿಳಿದುಕೊಳ್ಳುವಿರಿ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/4-Hotel-Reviews-1/notebook.ipynb b/translations/kn/6-NLP/4-Hotel-Reviews-1/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/Julia/README.md b/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/Julia/README.md new file mode 100644 index 000000000..1b344018b --- /dev/null +++ b/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/R/README.md b/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/R/README.md new file mode 100644 index 000000000..0b37e04b0 --- /dev/null +++ b/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb b/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb new file mode 100644 index 000000000..ff52bbd0e --- /dev/null +++ b/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb @@ -0,0 +1,174 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": 3 + }, + "orig_nbformat": 4, + "coopTranslator": { + "original_hash": "2d05e7db439376aa824f4b387f8324ca", + "translation_date": "2025-12-19T16:49:31+00:00", + "source_file": "6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# EDA\n", + "import pandas as pd\n", + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def get_difference_review_avg(row):\n", + " return row[\"Average_Score\"] - row[\"Calc_Average_Score\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the hotel reviews from CSV\n", + "print(\"Loading data file now, this could take a while depending on file size\")\n", + "start = time.time()\n", + "df = pd.read_csv('../../data/Hotel_Reviews.csv')\n", + "end = time.time()\n", + "print(\"Loading took \" + str(round(end - start, 2)) + \" seconds\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# What shape is the data (rows, columns)?\n", + "print(\"The shape of the data (rows, cols) is \" + str(df.shape))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# value_counts() creates a Series object that has index and values\n", + "# in this case, the country and the frequency they occur in reviewer nationality\n", + "nationality_freq = df[\"Reviewer_Nationality\"].value_counts()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# What reviewer nationality is the most common in the dataset?\n", + "print(\"The highest frequency reviewer nationality is \" + str(nationality_freq.index[0]).strip() + \" with \" + str(nationality_freq[0]) + \" reviews.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# What is the top 10 most common nationalities and their frequencies?\n", + "print(\"The top 10 highest frequency reviewer nationalities are:\")\n", + "print(nationality_freq[0:10].to_string())\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# How many unique nationalities are there?\n", + "print(\"There are \" + str(nationality_freq.index.size) + \" unique nationalities in the dataset\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# What was the most frequently reviewed hotel for the top 10 nationalities - print the hotel and number of reviews\n", + "for nat in nationality_freq[:10].index:\n", + " # First, extract all the rows that match the criteria into a new dataframe\n", + " nat_df = df[df[\"Reviewer_Nationality\"] == nat] \n", + " # Now get the hotel freq\n", + " freq = nat_df[\"Hotel_Name\"].value_counts()\n", + " print(\"The most reviewed hotel for \" + str(nat).strip() + \" was \" + str(freq.index[0]) + \" with \" + str(freq[0]) + \" reviews.\") \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# How many reviews are there per hotel (frequency count of hotel) and do the results match the value in `Total_Number_of_Reviews`?\n", + "# First create a new dataframe based on the old one, removing the uneeded columns\n", + "hotel_freq_df = df.drop([\"Hotel_Address\", \"Additional_Number_of_Scoring\", \"Review_Date\", \"Average_Score\", \"Reviewer_Nationality\", \"Negative_Review\", \"Review_Total_Negative_Word_Counts\", \"Positive_Review\", \"Review_Total_Positive_Word_Counts\", \"Total_Number_of_Reviews_Reviewer_Has_Given\", \"Reviewer_Score\", \"Tags\", \"days_since_review\", \"lat\", \"lng\"], axis = 1)\n", + "# Group the rows by Hotel_Name, count them and put the result in a new column Total_Reviews_Found\n", + "hotel_freq_df['Total_Reviews_Found'] = hotel_freq_df.groupby('Hotel_Name').transform('count')\n", + "# Get rid of all the duplicated rows\n", + "hotel_freq_df = hotel_freq_df.drop_duplicates(subset = [\"Hotel_Name\"])\n", + "print()\n", + "print(hotel_freq_df.to_string())\n", + "print(str(hotel_freq_df.shape))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# While there is an `Average_Score` for each hotel according to the dataset, \n", + "# you can also calculate an average score (getting the average of all reviewer scores in the dataset for each hotel)\n", + "# Add a new column to your dataframe with the column header `Calc_Average_Score` that contains that calculated average. \n", + "df['Calc_Average_Score'] = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1)\n", + "# Add a new column with the difference between the two average scores\n", + "df[\"Average_Score_Difference\"] = df.apply(get_difference_review_avg, axis = 1)\n", + "# Create a df without all the duplicates of Hotel_Name (so only 1 row per hotel)\n", + "review_scores_df = df.drop_duplicates(subset = [\"Hotel_Name\"])\n", + "# Sort the dataframe to find the lowest and highest average score difference\n", + "review_scores_df = review_scores_df.sort_values(by=[\"Average_Score_Difference\"])\n", + "print(review_scores_df[[\"Average_Score_Difference\", \"Average_Score\", \"Calc_Average_Score\", \"Hotel_Name\"]])\n", + "# Do any hotels have the same (rounded to 1 decimal place) `Average_Score` and `Calc_Average_Score`?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/README.md b/translations/kn/6-NLP/5-Hotel-Reviews-2/README.md new file mode 100644 index 000000000..be335e791 --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/README.md @@ -0,0 +1,391 @@ + +# ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳೊಂದಿಗೆ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ + +ನೀವು ಈಗಾಗಲೇ ಡೇಟಾಸೆಟ್ ಅನ್ನು ವಿವರವಾಗಿ ಅನ್ವೇಷಿಸಿದ್ದೀರಿ, ಈಗ ಕಾಲಮ್‌ಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿ ನಂತರ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ NLP ತಂತ್ರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಹೋಟೆಲ್‌ಗಳ ಬಗ್ಗೆ ಹೊಸ洞察ಗಳನ್ನು ಪಡೆಯುವ ಸಮಯವಾಗಿದೆ. + +## [ಪೂರ್ವ-ಲೇಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +### ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ ಕಾರ್ಯಾಚರಣೆಗಳು + +ನೀವು ಗಮನಿಸಿದ್ದಂತೆ, ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಕೆಲವು ಸಮಸ್ಯೆಗಳಿವೆ. ಕೆಲವು ಕಾಲಮ್‌ಗಳು ಅರ್ಥವಿಲ್ಲದ ಮಾಹಿತಿಯಿಂದ ತುಂಬಿವೆ, ಇತರವು ತಪ್ಪಾಗಿವೆ ಎಂದು ತೋರುತ್ತದೆ. ಅವು ಸರಿಯಾಗಿದ್ದರೆ, ಅವು ಹೇಗೆ ಲೆಕ್ಕಿಸಲ್ಪಟ್ಟಿವೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಿಲ್ಲ, ಮತ್ತು ಉತ್ತರಗಳನ್ನು ನಿಮ್ಮ ಸ್ವಂತ ಲೆಕ್ಕಾಚಾರಗಳಿಂದ ಸ್ವತಂತ್ರವಾಗಿ ಪರಿಶೀಲಿಸಲಾಗುವುದಿಲ್ಲ. + +## ವ್ಯಾಯಾಮ: ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಡೇಟಾ ಪ್ರಕ್ರಿಯೆ + +ಡೇಟಾವನ್ನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಸ್ವಚ್ಛಗೊಳಿಸಿ. ನಂತರ ಉಪಯುಕ್ತವಾಗುವ ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸಿ, ಇತರ ಕಾಲಮ್‌ಗಳ ಮೌಲ್ಯಗಳನ್ನು ಬದಲಿಸಿ, ಮತ್ತು ಕೆಲವು ಕಾಲಮ್‌ಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ತೆಗೆದುಹಾಕಿ. + +1. ಪ್ರಾಥಮಿಕ ಕಾಲಮ್ ಪ್ರಕ್ರಿಯೆ + + 1. `lat` ಮತ್ತು `lng` ಅನ್ನು ತೆಗೆದುಹಾಕಿ + + 2. `Hotel_Address` ಮೌಲ್ಯಗಳನ್ನು ಕೆಳಗಿನ ಮೌಲ್ಯಗಳಿಂದ ಬದಲಿಸಿ (ವಿಳಾಸದಲ್ಲಿ ನಗರ ಮತ್ತು ದೇಶದ ಹೆಸರು ಇದ್ದರೆ, ಅದನ್ನು ಕೇವಲ ನಗರ ಮತ್ತು ದೇಶಕ್ಕೆ ಬದಲಿಸಿ). + + ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಇವು ಮಾತ್ರ ನಗರಗಳು ಮತ್ತು ದೇಶಗಳು: + + ಆಂಸ್ಟರ್ಡ್ಯಾಮ್, ನೆದರ್ಲ್ಯಾಂಡ್ಸ್ + + ಬಾರ್ಸಿಲೋನಾ, ಸ್ಪೇನ್ + + ಲಂಡನ್, ಯುನೈಟೆಡ್ ಕಿಂಗ್‌ಡಮ್ + + ಮಿಲಾನ್, ಇಟಲಿ + + ಪ್ಯಾರಿಸ್, ಫ್ರಾನ್ಸ್ + + ವಿಯೆನ್ನಾ, ಆಸ್ಟ್ರಿಯಾ + + ```python + def replace_address(row): + if "Netherlands" in row["Hotel_Address"]: + return "Amsterdam, Netherlands" + elif "Barcelona" in row["Hotel_Address"]: + return "Barcelona, Spain" + elif "United Kingdom" in row["Hotel_Address"]: + return "London, United Kingdom" + elif "Milan" in row["Hotel_Address"]: + return "Milan, Italy" + elif "France" in row["Hotel_Address"]: + return "Paris, France" + elif "Vienna" in row["Hotel_Address"]: + return "Vienna, Austria" + + # ಎಲ್ಲಾ ವಿಳಾಸಗಳನ್ನು ಸಂಕ್ಷಿಪ್ತ, ಹೆಚ್ಚು ಉಪಯುಕ್ತ ರೂಪದಲ್ಲಿ ಬದಲಾಯಿಸಿ + df["Hotel_Address"] = df.apply(replace_address, axis = 1) + # value_counts() ನ ಮೊತ್ತವು ವಿಮರ್ಶೆಗಳ ಒಟ್ಟು ಸಂಖ್ಯೆಗೆ ಸೇರಬೇಕು + print(df["Hotel_Address"].value_counts()) + ``` + + ಈಗ ನೀವು ದೇಶ ಮಟ್ಟದ ಡೇಟಾವನ್ನು ಪ್ರಶ್ನಿಸಬಹುದು: + + ```python + display(df.groupby("Hotel_Address").agg({"Hotel_Name": "nunique"})) + ``` + + | Hotel_Address | Hotel_Name | + | :--------------------- | :--------: | + | Amsterdam, Netherlands | 105 | + | Barcelona, Spain | 211 | + | London, United Kingdom | 400 | + | Milan, Italy | 162 | + | Paris, France | 458 | + | Vienna, Austria | 158 | + +2. ಹೋಟೆಲ್ ಮೆಟಾ-ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ + + 1. `Additional_Number_of_Scoring` ಅನ್ನು ತೆಗೆದುಹಾಕಿ + + 2. `Total_Number_of_Reviews` ಅನ್ನು ಆ ಹೋಟೆಲ್‌ಗೆ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ನಿಜವಾಗಿಯೂ ಇರುವ ವಿಮರ್ಶೆಗಳ ಒಟ್ಟು ಸಂಖ್ಯೆಯಿಂದ ಬದಲಿಸಿ + + 3. `Average_Score` ಅನ್ನು ನಮ್ಮ ಸ್ವಂತ ಲೆಕ್ಕಿಸಿದ ಅಂಕದಿಂದ ಬದಲಿಸಿ + + ```python + # `Additional_Number_of_Scoring` ಅನ್ನು ತೆಗೆದುಹಾಕಿ + df.drop(["Additional_Number_of_Scoring"], axis = 1, inplace=True) + # `Total_Number_of_Reviews` ಮತ್ತು `Average_Score` ಅನ್ನು ನಮ್ಮ ಸ್ವಂತ ಲೆಕ್ಕಹಾಕಿದ ಮೌಲ್ಯಗಳಿಂದ ಬದಲಾಯಿಸಿ + df.Total_Number_of_Reviews = df.groupby('Hotel_Name').transform('count') + df.Average_Score = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1) + ``` + +3. ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ + + 1. `Review_Total_Negative_Word_Counts`, `Review_Total_Positive_Word_Counts`, `Review_Date` ಮತ್ತು `days_since_review` ಅನ್ನು ತೆಗೆದುಹಾಕಿ + + 2. `Reviewer_Score`, `Negative_Review`, ಮತ್ತು `Positive_Review` ಅನ್ನು ಹಾಗೆಯೇ ಇಡಿರಿ, + + 3. ಈಗಿಗೆ `Tags` ಅನ್ನು ಇಡಿರಿ + + - ಮುಂದಿನ ವಿಭಾಗದಲ್ಲಿ ಟ್ಯಾಗ್‌ಗಳ ಮೇಲೆ ಕೆಲವು ಹೆಚ್ಚುವರಿ ಫಿಲ್ಟರಿಂಗ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಮಾಡಲಾಗುವುದು ಮತ್ತು ನಂತರ ಟ್ಯಾಗ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುವುದು + +4. ವಿಮರ್ಶಕರ ಕಾಲಮ್‌ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ + + 1. `Total_Number_of_Reviews_Reviewer_Has_Given` ಅನ್ನು ತೆಗೆದುಹಾಕಿ + + 2. `Reviewer_Nationality` ಅನ್ನು ಇಡಿರಿ + +### ಟ್ಯಾಗ್ ಕಾಲಮ್‌ಗಳು + +`Tag` ಕಾಲಮ್ ಸಮಸ್ಯೆಯಾಗಿದೆ ಏಕೆಂದರೆ ಅದು ಕಾಲಮ್‌ನಲ್ಲಿ ಪಠ್ಯ ರೂಪದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾದ ಪಟ್ಟಿ. ದುರದೃಷ್ಟವಶಾತ್, ಈ ಕಾಲಮ್‌ನ ಉಪ ವಿಭಾಗಗಳ ಕ್ರಮ ಮತ್ತು ಸಂಖ್ಯೆ ಯಾವಾಗಲೂ ಒಂದೇ ರೀತಿಯಲ್ಲ. ಮಾನವನಿಗೆ ಸರಿಯಾದ ವಾಕ್ಯಗಳನ್ನು ಗುರುತಿಸುವುದು ಕಷ್ಟ, ಏಕೆಂದರೆ 515,000 ಸಾಲುಗಳು, 1427 ಹೋಟೆಲ್‌ಗಳು ಇವೆ, ಮತ್ತು ಪ್ರತಿಯೊಂದು ವಿಮರ್ಶಕನು ಆಯ್ಕೆಮಾಡಬಹುದಾದ ಸ್ವಲ್ಪ ವಿಭಿನ್ನ ಆಯ್ಕೆಗಳು ಇವೆ. ಇಲ್ಲಿ NLP ಪ್ರಭಾವಶಾಲಿ. ನೀವು ಪಠ್ಯವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ ಸಾಮಾನ್ಯ ವಾಕ್ಯಗಳನ್ನು ಕಂಡುಹಿಡಿದು ಅವುಗಳನ್ನು ಎಣಿಸಬಹುದು. + +ದುರದೃಷ್ಟವಶಾತ್, ನಾವು ಏಕಪದಗಳಲ್ಲಿ ಆಸಕ್ತಿ ಹೊಂದಿಲ್ಲ, ಆದರೆ ಬಹುಪದ ವಾಕ್ಯಗಳಲ್ಲಿ (ಉದಾ: *Business trip*). ಇಷ್ಟು ದೊಡ್ಡ ಡೇಟಾದ ಮೇಲೆ ಬಹುಪದ ಫ್ರೀಕ್ವೆನ್ಸಿ ವಿತರಣಾ ಆಲ್ಗೋರಿದಮ್ ಅನ್ನು ನಡೆಸುವುದು (6762646 ಪದಗಳು) ಬಹಳ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಬಹುದು, ಆದರೆ ಡೇಟಾವನ್ನು ನೋಡದೆ ಇದನ್ನು ಅಗತ್ಯ ವೆಚ್ಚವೆಂದು ಭಾಸವಾಗುತ್ತದೆ. ಇಲ್ಲಿ ಅನ್ವೇಷಣಾತ್ಮಕ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ ಉಪಯುಕ್ತವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ನೀವು ಟ್ಯಾಗ್‌ಗಳ ಮಾದರಿಯನ್ನು ನೋಡಿದ್ದೀರಿ ಉದಾ: `[' Business trip ', ' Solo traveler ', ' Single Room ', ' Stayed 5 nights ', ' Submitted from a mobile device ']` , ನೀವು ಪ್ರಕ್ರಿಯೆಯನ್ನು ಬಹಳ ಕಡಿಮೆ ಮಾಡಲು ಸಾಧ್ಯವಿದೆಯೇ ಎಂದು ಕೇಳಬಹುದು. ಅದೃಷ್ಟವಶಾತ್, ಸಾಧ್ಯ - ಆದರೆ ಮೊದಲು ನೀವು ಆಸಕ್ತಿಯ ಟ್ಯಾಗ್‌ಗಳನ್ನು ಖಚಿತಪಡಿಸಲು ಕೆಲವು ಹಂತಗಳನ್ನು ಅನುಸರಿಸಬೇಕು. + +### ಟ್ಯಾಗ್‌ಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡುವುದು + +ಡೇಟಾಸೆಟ್‌ನ ಗುರಿ ಭಾವನೆ ಮತ್ತು ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸುವುದು, ಇದು ನಿಮಗೆ ಅತ್ಯುತ್ತಮ ಹೋಟೆಲ್ ಆಯ್ಕೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ (ನಿಮಗಾಗಿ ಅಥವಾ ಗ್ರಾಹಕನಿಗೆ ಹೋಟೆಲ್ ಶಿಫಾರಸು ಬಾಟ್ ಮಾಡಲು). ನೀವು ಟ್ಯಾಗ್‌ಗಳು ಅಂತಿಮ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಉಪಯುಕ್ತವೋ ಇಲ್ಲವೋ ಎಂದು ಕೇಳಿಕೊಳ್ಳಬೇಕು. ಇಲ್ಲಿದೆ ಒಂದು ವ್ಯಾಖ್ಯಾನ (ನೀವು ಬೇರೆ ಕಾರಣಗಳಿಗಾಗಿ ಡೇಟಾಸೆಟ್ ಬೇಕಾದರೆ ವಿಭಿನ್ನ ಟ್ಯಾಗ್‌ಗಳು ಒಳಗಾಗಬಹುದು/ಬಾಹ್ಯವಾಗಬಹುದು): + +1. ಪ್ರಯಾಣದ ಪ್ರಕಾರ ಸಂಬಂಧಿಸಿದೆ, ಮತ್ತು ಅದು ಉಳಿಯಬೇಕು +2. ಅತಿಥಿ ಗುಂಪಿನ ಪ್ರಕಾರ ಮುಖ್ಯವಾಗಿದೆ, ಮತ್ತು ಅದು ಉಳಿಯಬೇಕು +3. ಅತಿಥಿ ಉಳಿದ ಕೊಠಡಿ, ಸೂಟ್ ಅಥವಾ ಸ್ಟುಡಿಯೋ ಪ್ರಕಾರ ಅಸಂಬಂಧಿತ (ಎಲ್ಲಾ ಹೋಟೆಲ್‌ಗಳಲ್ಲಿಯೂ ಮೂಲತಃ ಒಂದೇ ರೀತಿಯ ಕೊಠಡಿಗಳು ಇವೆ) +4. ವಿಮರ್ಶೆ ಸಲ್ಲಿಸಿದ ಸಾಧನ ಅಸಂಬಂಧಿತ +5. ವಿಮರ್ಶಕನು ಉಳಿದ ರಾತ್ರಿ ಸಂಖ್ಯೆ *ಸಂಬಂಧಿಸಬಹುದು* ಆದರೆ ಅದು ದೂರದೃಷ್ಟಿ ಮತ್ತು ಬಹುಶಃ ಅಸಂಬಂಧಿತ + +ಸಾರಾಂಶವಾಗಿ, **2 ವಿಧದ ಟ್ಯಾಗ್‌ಗಳನ್ನು ಉಳಿಸಿ ಮತ್ತು ಇತರವನ್ನು ತೆಗೆದುಹಾಕಿ**. + +ಮೊದಲು, ನೀವು ಟ್ಯಾಗ್‌ಗಳನ್ನು ಉತ್ತಮ ಸ್ವರೂಪದಲ್ಲಿ ಇರಿಸುವವರೆಗೆ ಎಣಿಸಲು ಬಯಸುವುದಿಲ್ಲ, ಅಂದರೆ ಚದರ ಕೊಠಡಿಗಳು ಮತ್ತು ಉಲ್ಲೇಖಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು. ನೀವು ಇದನ್ನು ಹಲವಾರು ರೀತಿಯಲ್ಲಿ ಮಾಡಬಹುದು, ಆದರೆ ವೇಗವಾಗಿ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಏಕೆಂದರೆ ಬಹಳ ಡೇಟಾ ಪ್ರಕ್ರಿಯೆಗೆ ಸಮಯ ಬೇಕಾಗಬಹುದು. ಅದೃಷ್ಟವಶಾತ್, pandas ಇದನ್ನು ಸುಲಭವಾಗಿ ಮಾಡುತ್ತದೆ. + +```Python +# ತೆರೆಯುವ ಮತ್ತು ಮುಚ್ಚುವ ಕೋಷ್ಠಕಗಳನ್ನು ತೆಗೆದುಹಾಕಿ +df.Tags = df.Tags.str.strip("[']") +# ಎಲ್ಲಾ ಉಲ್ಲೇಖಗಳನ್ನು ಕೂಡ ತೆಗೆದುಹಾಕಿ +df.Tags = df.Tags.str.replace(" ', '", ",", regex = False) +``` + +ಪ್ರತಿ ಟ್ಯಾಗ್ ಹೀಗೆ ಆಗುತ್ತದೆ: `Business trip, Solo traveler, Single Room, Stayed 5 nights, Submitted from a mobile device`. + +ಮುಂದೆ ಸಮಸ್ಯೆ ಕಂಡುಬರುತ್ತದೆ. ಕೆಲವು ವಿಮರ್ಶೆಗಳು ಅಥವಾ ಸಾಲುಗಳು 5 ಕಾಲಮ್‌ಗಳಿವೆ, ಕೆಲವು 3, ಕೆಲವು 6. ಇದು ಡೇಟಾಸೆಟ್ ರಚನೆಯ ಪರಿಣಾಮ, ಮತ್ತು ಸರಿಪಡಿಸಲು ಕಷ್ಟ. ನೀವು ಪ್ರತಿಯೊಂದು ವಾಕ್ಯದ ಫ್ರೀಕ್ವೆನ್ಸಿ ಎಣಿಕೆ ಪಡೆಯಲು ಬಯಸುತ್ತೀರಿ, ಆದರೆ ಅವು ಪ್ರತಿ ವಿಮರ್ಶೆಯಲ್ಲಿ ವಿಭಿನ್ನ ಕ್ರಮದಲ್ಲಿವೆ, ಆದ್ದರಿಂದ ಎಣಿಕೆ ತಪ್ಪಾಗಬಹುದು, ಮತ್ತು ಹೋಟೆಲ್‌ಗೆ ಅದು ಅರ್ಹವಾದ ಟ್ಯಾಗ್ ನೀಡಲಾಗದಿರಬಹುದು. + +ಬದಲಿಗೆ ನೀವು ವಿಭಿನ್ನ ಕ್ರಮವನ್ನು ನಮ್ಮ ಲಾಭಕ್ಕೆ ಬಳಸುತ್ತೀರಿ, ಏಕೆಂದರೆ ಪ್ರತಿಯೊಂದು ಟ್ಯಾಗ್ ಬಹುಪದವಾಗಿದೆ ಆದರೆ ಕಾಮಾ ಮೂಲಕ ವಿಭಜಿಸಲಾಗಿದೆ! ಸರಳ ವಿಧಾನವೆಂದರೆ 6 ತಾತ್ಕಾಲಿಕ ಕಾಲಮ್‌ಗಳನ್ನು ರಚಿಸಿ, ಪ್ರತಿಯೊಂದು ಟ್ಯಾಗ್ ಅನ್ನು ಅದರ ಕ್ರಮಕ್ಕೆ ಹೊಂದಿಕೊಂಡು ಕಾಲಮ್‌ಗೆ ಸೇರಿಸಿ. ನಂತರ ಆ 6 ಕಾಲಮ್‌ಗಳನ್ನು ಒಂದು ದೊಡ್ಡ ಕಾಲಮ್‌ಗೆ ಮರ್ಜ್ ಮಾಡಿ `value_counts()` ವಿಧಾನವನ್ನು ಆ ಕಾಲಮ್ ಮೇಲೆ ಚಾಲನೆ ಮಾಡಬಹುದು. ಅದನ್ನು ಮುದ್ರಿಸಿದಾಗ, 2428 ವಿಭಿನ್ನ ಟ್ಯಾಗ್‌ಗಳಿವೆ. ಇಲ್ಲಿದೆ ಸಣ್ಣ ಮಾದರಿ: + +| Tag | Count | +| ------------------------------ | ------ | +| Leisure trip | 417778 | +| Submitted from a mobile device | 307640 | +| Couple | 252294 | +| Stayed 1 night | 193645 | +| Stayed 2 nights | 133937 | +| Solo traveler | 108545 | +| Stayed 3 nights | 95821 | +| Business trip | 82939 | +| Group | 65392 | +| Family with young children | 61015 | +| Stayed 4 nights | 47817 | +| Double Room | 35207 | +| Standard Double Room | 32248 | +| Superior Double Room | 31393 | +| Family with older children | 26349 | +| Deluxe Double Room | 24823 | +| Double or Twin Room | 22393 | +| Stayed 5 nights | 20845 | +| Standard Double or Twin Room | 17483 | +| Classic Double Room | 16989 | +| Superior Double or Twin Room | 13570 | +| 2 rooms | 12393 | + +ಕೆಲವು ಸಾಮಾನ್ಯ ಟ್ಯಾಗ್‌ಗಳು `Submitted from a mobile device` ನಮಗೆ ಉಪಯೋಗವಿಲ್ಲ, ಆದ್ದರಿಂದ ಅವುಗಳನ್ನು ಎಣಿಸುವ ಮೊದಲು ತೆಗೆದುಹಾಕುವುದು ಬುದ್ಧಿವಂತಿಕೆ, ಆದರೆ ಇದು ವೇಗವಾದ ಕಾರ್ಯವಾಗಿರುವುದರಿಂದ ಅವುಗಳನ್ನು ಉಳಿಸಿ ನಿರ್ಲಕ್ಷಿಸಬಹುದು. + +### ಉಳಿದಿರುವ ಟ್ಯಾಗ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು + +ಈ ಟ್ಯಾಗ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು ಹಂತ 1, ಇದು ಪರಿಗಣಿಸಬೇಕಾದ ಟ್ಯಾಗ್‌ಗಳ ಒಟ್ಟು ಸಂಖ್ಯೆಯನ್ನು ಸ್ವಲ್ಪ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. ಗಮನಿಸಿ ನೀವು ಅವುಗಳನ್ನು ಡೇಟಾಸೆಟ್‌ನಿಂದ ತೆಗೆದುಹಾಕುವುದಿಲ್ಲ, ಕೇವಲ ವಿಮರ್ಶೆಗಳ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಎಣಿಕೆ/ಉಳಿಸುವ ಮೌಲ್ಯಗಳ ಪರಿಗಣನೆಗೆ ತೆಗೆದುಹಾಕುತ್ತೀರಿ. + +| Length of stay | Count | +| ---------------- | ------ | +| Stayed 1 night | 193645 | +| Stayed 2 nights | 133937 | +| Stayed 3 nights | 95821 | +| Stayed 4 nights | 47817 | +| Stayed 5 nights | 20845 | +| Stayed 6 nights | 9776 | +| Stayed 7 nights | 7399 | +| Stayed 8 nights | 2502 | +| Stayed 9 nights | 1293 | +| ... | ... | + +ಕೊಠಡಿಗಳ, ಸೂಟ್‌ಗಳ, ಸ್ಟುಡಿಯೋಗಳ, ಅಪಾರ್ಟ್‌ಮೆಂಟ್‌ಗಳ ಬಹುಮತ variety ಇದೆ. ಅವು ಎಲ್ಲವೂ ಅಂದಾಜು ಮಾಡಬಹುದಾದ ಅರ್ಥ ಹೊಂದಿವೆ ಮತ್ತು ನಿಮಗೆ ಸಂಬಂಧವಿಲ್ಲ, ಆದ್ದರಿಂದ ಅವುಗಳನ್ನು ಪರಿಗಣನೆಗೆ ತೆಗೆದುಹಾಕಿ. + +| Type of room | Count | +| ----------------------------- | ----- | +| Double Room | 35207 | +| Standard Double Room | 32248 | +| Superior Double Room | 31393 | +| Deluxe Double Room | 24823 | +| Double or Twin Room | 22393 | +| Standard Double or Twin Room | 17483 | +| Classic Double Room | 16989 | +| Superior Double or Twin Room | 13570 | + +ಕೊನೆಗೆ, ಮತ್ತು ಇದು ಸಂತೋಷದಾಯಕ (ಏಕೆಂದರೆ ಬಹಳ ಪ್ರಕ್ರಿಯೆ ಬೇಕಾಗಲಿಲ್ಲ), ನೀವು ಕೆಳಗಿನ *ಉಪಯುಕ್ತ* ಟ್ಯಾಗ್‌ಗಳನ್ನು ಹೊಂದಿರುತ್ತೀರಿ: + +| Tag | Count | +| --------------------------------------------- | ------ | +| Leisure trip | 417778 | +| Couple | 252294 | +| Solo traveler | 108545 | +| Business trip | 82939 | +| Group (combined with Travellers with friends) | 67535 | +| Family with young children | 61015 | +| Family with older children | 26349 | +| With a pet | 1405 | + +ನೀವು ವಾದಿಸಬಹುದು `Travellers with friends` ಮತ್ತು `Group` ಬಹುಶಃ ಒಂದೇ, ಮತ್ತು ಮೇಲಿನಂತೆ ಅವುಗಳನ್ನು ಸಂಯೋಜಿಸುವುದು ನ್ಯಾಯಸಮ್ಮತ. ಸರಿಯಾದ ಟ್ಯಾಗ್‌ಗಳನ್ನು ಗುರುತಿಸುವ ಕೋಡ್ [Tags ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) ನಲ್ಲಿ ಇದೆ. + +ಕೊನೆಯ ಹಂತವು ಈ ಟ್ಯಾಗ್‌ಗಳಿಗಾಗಿ ಹೊಸ ಕಾಲಮ್‌ಗಳನ್ನು ರಚಿಸುವುದು. ನಂತರ, ಪ್ರತಿಯೊಂದು ವಿಮರ್ಶೆ ಸಾಲಿಗೆ, `Tag` ಕಾಲಮ್ ಹೊಸ ಕಾಲಮ್‌ಗಳಲ್ಲಿ ಒಂದೊಂದರೊಂದಿಗೆ ಹೊಂದಿದರೆ, 1 ಸೇರಿಸಿ, ಇಲ್ಲದಿದ್ದರೆ 0 ಸೇರಿಸಿ. ಅಂತಿಮ ಫಲಿತಾಂಶವು ಎಷ್ಟು ವಿಮರ್ಶಕರು ಈ ಹೋಟೆಲ್ ಆಯ್ಕೆಮಾಡಿದ್ದಾರೆ ಎಂಬ ಎಣಿಕೆ ಆಗಿರುತ್ತದೆ, ಉದಾ: ವ್ಯವಹಾರ ಅಥವಾ ವಿಶ್ರಾಂತಿ, ಅಥವಾ ಪಶುಪಾಲನೆಗಾಗಿ, ಮತ್ತು ಇದು ಹೋಟೆಲ್ ಶಿಫಾರಸು ಮಾಡುವಾಗ ಉಪಯುಕ್ತ ಮಾಹಿತಿ. + +```python +# ಟ್ಯಾಗ್‌ಗಳನ್ನು ಹೊಸ ಕಾಲಮ್ಗಳಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ +# Hotel_Reviews_Tags.py ಫೈಲ್, ಅತ್ಯಂತ ಪ್ರಮುಖ ಟ್ಯಾಗ್‌ಗಳನ್ನು ಗುರುತಿಸುತ್ತದೆ +# ವಿಶ್ರಾಂತಿ ಪ್ರವಾಸ, ಜೋಡಿ, ಏಕಾಂಗ ಪ್ರವಾಸಿ, ವ್ಯವಹಾರಿಕ ಪ್ರವಾಸ, ಸ್ನೇಹಿತರೊಂದಿಗೆ ಪ್ರಯಾಣಿಕರೊಂದಿಗೆ ಗುಂಪು +# ಯುವ ಮಕ್ಕಳೊಂದಿಗೆ ಕುಟುಂಬ, ಹಿರಿಯ ಮಕ್ಕಳೊಂದಿಗೆ ಕುಟುಂಬ, ಪಶುವೊಂದರೊಂದಿಗೆ +df["Leisure_trip"] = df.Tags.apply(lambda tag: 1 if "Leisure trip" in tag else 0) +df["Couple"] = df.Tags.apply(lambda tag: 1 if "Couple" in tag else 0) +df["Solo_traveler"] = df.Tags.apply(lambda tag: 1 if "Solo traveler" in tag else 0) +df["Business_trip"] = df.Tags.apply(lambda tag: 1 if "Business trip" in tag else 0) +df["Group"] = df.Tags.apply(lambda tag: 1 if "Group" in tag or "Travelers with friends" in tag else 0) +df["Family_with_young_children"] = df.Tags.apply(lambda tag: 1 if "Family with young children" in tag else 0) +df["Family_with_older_children"] = df.Tags.apply(lambda tag: 1 if "Family with older children" in tag else 0) +df["With_a_pet"] = df.Tags.apply(lambda tag: 1 if "With a pet" in tag else 0) + +``` + +### ನಿಮ್ಮ ಫೈಲ್ ಉಳಿಸಿ + +ಕೊನೆಗೆ, ಡೇಟಾಸೆಟ್ ಅನ್ನು ಈಗಿನ ಸ್ಥಿತಿಯಲ್ಲಿ ಹೊಸ ಹೆಸರಿನಿಂದ ಉಳಿಸಿ. + +```python +df.drop(["Review_Total_Negative_Word_Counts", "Review_Total_Positive_Word_Counts", "days_since_review", "Total_Number_of_Reviews_Reviewer_Has_Given"], axis = 1, inplace=True) + +# ಲೆಕ್ಕ ಹಾಕಲಾದ ಕಾಲಮ್‌ಗಳೊಂದಿಗೆ ಹೊಸ ಡೇಟಾ ಫೈಲ್ ಉಳಿಸಲಾಗುತ್ತಿದೆ +print("Saving results to Hotel_Reviews_Filtered.csv") +df.to_csv(r'../data/Hotel_Reviews_Filtered.csv', index = False) +``` + +## ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ ಕಾರ್ಯಾಚರಣೆಗಳು + +ಈ ಕೊನೆಯ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳಿಗೆ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಅನ್ವಯಿಸಿ ಫಲಿತಾಂಶಗಳನ್ನು ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಉಳಿಸುವಿರಿ. + +## ವ್ಯಾಯಾಮ: ಫಿಲ್ಟರ್ ಮಾಡಿದ ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಉಳಿಸಿ + +ಈಗ ನೀವು ಹಿಂದಿನ ವಿಭಾಗದಲ್ಲಿ ಉಳಿಸಿದ ಫಿಲ್ಟರ್ ಮಾಡಿದ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುತ್ತಿದ್ದೀರಿ, **ಮೂಲ ಡೇಟಾಸೆಟ್ ಅಲ್ಲ**. + +```python +import time +import pandas as pd +import nltk as nltk +from nltk.corpus import stopwords +from nltk.sentiment.vader import SentimentIntensityAnalyzer +nltk.download('vader_lexicon') + +# CSV ನಿಂದ ಫಿಲ್ಟರ್ ಮಾಡಲಾದ ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ +df = pd.read_csv('../../data/Hotel_Reviews_Filtered.csv') + +# ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಇಲ್ಲಿ ಸೇರಿಸಲಾಗುವುದು + + +# ಕೊನೆಗೆ ಹೊಸ NLP ಡೇಟಾ ಸೇರಿಸಿದ ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳನ್ನು ಉಳಿಸಲು ಮರೆಯಬೇಡಿ +print("Saving results to Hotel_Reviews_NLP.csv") +df.to_csv(r'../data/Hotel_Reviews_NLP.csv', index = False) +``` + +### ನಿಲ್ಲಿಸುವ ಪದಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು + +ನೀವು ನೆಗೆಟಿವ್ ಮತ್ತು ಪಾಸಿಟಿವ್ ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳಲ್ಲಿ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ ನಡೆಸಿದರೆ, ಅದು ಬಹಳ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಶಕ್ತಿಶಾಲಿ ಟೆಸ್ಟ್ ಲ್ಯಾಪ್‌ಟಾಪ್‌ನಲ್ಲಿ ವೇಗವಾದ CPU ಇದ್ದು, 12 - 14 ನಿಮಿಷಗಳವರೆಗೆ ತೆಗೆದುಕೊಂಡಿತು, ಯಾವ ಭಾವನೆ ಗ್ರಂಥಾಲಯ ಬಳಸಿದೆಯೋ ಅವನ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಇದು (ಸಾಪೇಕ್ಷವಾಗಿ) ದೀರ್ಘ ಸಮಯ, ಆದ್ದರಿಂದ ಅದನ್ನು ವೇಗಗೊಳಿಸಲು ಸಾಧ್ಯವಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುವುದು ಸೂಕ್ತ. + +ನಿಲ್ಲಿಸುವ ಪದಗಳು ಅಥವಾ ಸಾಮಾನ್ಯ ಇಂಗ್ಲಿಷ್ ಪದಗಳು, ಅವು ವಾಕ್ಯದ ಭಾವನೆಯನ್ನು ಬದಲಾಯಿಸುವುದಿಲ್ಲ, ಅವುಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು ಮೊದಲ ಹಂತ. ಅವುಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ ವೇಗವಾಗಿ ನಡೆಯುತ್ತದೆ, ಆದರೆ ಕಡಿಮೆ ನಿಖರವಾಗುವುದಿಲ್ಲ (ನಿಲ್ಲಿಸುವ ಪದಗಳು ಭಾವನೆಗೆ ಪ್ರಭಾವ ಬೀರುವುದಿಲ್ಲ, ಆದರೆ ವಿಶ್ಲೇಷಣೆಯನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತವೆ). + +ಅತ್ಯಂತ ದೀರ್ಘ ನೆಗೆಟಿವ್ ವಿಮರ್ಶೆ 395 ಪದಗಳಿತ್ತು, ಆದರೆ ನಿಲ್ಲಿಸುವ ಪದಗಳನ್ನು ತೆಗೆದುಹಾಕಿದ ನಂತರ ಅದು 195 ಪದಗಳಾಗಿದೆ. + +ನಿಲ್ಲಿಸುವ ಪದಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು ಕೂಡ ವೇಗವಾದ ಕಾರ್ಯ, 2 ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳಿಂದ 515,000 ಸಾಲುಗಳಲ್ಲಿ 3.3 ಸೆಕೆಂಡುಗಳಲ್ಲಿ ತೆಗೆದುಕೊಂಡಿತು. ನಿಮ್ಮ ಸಾಧನದ CPU ವೇಗ, RAM, SSD ಇದ್ದೇ ಇಲ್ಲ, ಮತ್ತು ಇತರ ಕೆಲವು ಅಂಶಗಳ ಮೇಲೆ ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಅಥವಾ ಕಡಿಮೆ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಕಾರ್ಯದ ಸಾಪೇಕ್ಷ ಸಣ್ಣತೆ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆಯ ಸಮಯವನ್ನು ಸುಧಾರಿಸಿದರೆ, ಅದನ್ನು ಮಾಡುವುದು ಲಾಭದಾಯಕ. + +```python +from nltk.corpus import stopwords + +# CSV ನಿಂದ ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ +df = pd.read_csv("../../data/Hotel_Reviews_Filtered.csv") + +# ಸ್ಟಾಪ್ ಪದಗಳನ್ನು ತೆಗೆದುಹಾಕಿ - ಹೆಚ್ಚಿನ ಪಠ್ಯಕ್ಕೆ ಇದು ನಿಧಾನವಾಗಬಹುದು! +# ರಯಾನ್ ಹ್ಯಾನ್ (Kaggle ನಲ್ಲಿ ryanxjhan) ವಿವಿಧ ಸ್ಟಾಪ್ ಪದಗಳ ತೆಗೆದುಹಾಕುವ ವಿಧಾನಗಳ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಅಳೆಯುವ ಉತ್ತಮ ಪೋಸ್ಟ್ ಹೊಂದಿದ್ದಾರೆ +# https://www.kaggle.com/ryanxjhan/fast-stop-words-removal # ರಯಾನ್ ಶಿಫಾರಸು ಮಾಡುವ ವಿಧಾನವನ್ನು ಬಳಸುವುದು +start = time.time() +cache = set(stopwords.words("english")) +def remove_stopwords(review): + text = " ".join([word for word in review.split() if word not in cache]) + return text + +# ಎರಡೂ ಕಾಲಮ್‌ಗಳಿಂದ ಸ್ಟಾಪ್ ಪದಗಳನ್ನು ತೆಗೆದುಹಾಕಿ +df.Negative_Review = df.Negative_Review.apply(remove_stopwords) +df.Positive_Review = df.Positive_Review.apply(remove_stopwords) +``` + +### ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ ನಡೆಸುವುದು + +ಈಗ ನೀವು ನೆಗೆಟಿವ್ ಮತ್ತು ಪಾಸಿಟಿವ್ ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳಿಗೆ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಲೆಕ್ಕಿಸಿ, 2 ಹೊಸ ಕಾಲಮ್‌ಗಳಲ್ಲಿ ಫಲಿತಾಂಶವನ್ನು ಸಂಗ್ರಹಿಸಬೇಕು. ಭಾವನೆ ಪರೀಕ್ಷೆ ವಿಮರ್ಶಕರ ಅಂಕದೊಂದಿಗೆ ಹೋಲಿಕೆ ಮಾಡುವುದು. ಉದಾಹರಣೆಗೆ, ಭಾವನೆ ವಿಶ್ಲೇಷಕನು ನೆಗೆಟಿವ್ ವಿಮರ್ಶೆಗೆ 1 (ಅತ್ಯಂತ ಧನಾತ್ಮಕ ಭಾವನೆ) ಮತ್ತು ಪಾಸಿಟಿವ್ ವಿಮರ್ಶೆಗೆ 1 ಎಂದು ಅಂದಾಜಿಸಿದರೆ, ಆದರೆ ವಿಮರ್ಶಕನು ಹೋಟೆಲ್‌ಗೆ ಕನಿಷ್ಠ ಅಂಕ ನೀಡಿದ್ದರೆ, ವಿಮರ್ಶೆ ಪಠ್ಯ ಮತ್ತು ಅಂಕ ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ ಅಥವಾ ಭಾವನೆ ವಿಶ್ಲೇಷಕನು ಭಾವನೆಯನ್ನು ಸರಿಯಾಗಿ ಗುರುತಿಸಲಿಲ್ಲ. ಕೆಲವು ಭಾವನೆ ಅಂಕಗಳು ಸಂಪೂರ್ಣ ತಪ್ಪಾಗಿರಬಹುದು, ಮತ್ತು ಬಹುಶಃ ಅದು ವಿವರಿಸಬಹುದಾಗಿದೆ, ಉದಾ: ವಿಮರ್ಶೆ ಅತ್ಯಂತ ವ್ಯಂಗ್ಯಾತ್ಮಕವಾಗಿರಬಹುದು "ನಾನು ಬಿಸಿಲಿಲ್ಲದ ಕೊಠಡಿಯಲ್ಲಿ ನಿದ್ರೆ ಮಾಡಿದ್ದೇನೆ ಎಂದು ಖಂಡಿತವಾಗಿ ಪ್ರೀತಿಸಿದೆ" ಮತ್ತು ಭಾವನೆ ವಿಶ್ಲೇಷಕನು ಅದನ್ನು ಧನಾತ್ಮಕ ಭಾವನೆ ಎಂದು ಭಾವಿಸುತ್ತದೆ, ಆದರೆ ಮಾನವ ಓದಿದರೆ ಅದು ವ್ಯಂಗ್ಯ ಎಂದು ತಿಳಿಯುತ್ತದೆ. +NLTK ವಿಭಿನ್ನ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಕರನ್ನು ಕಲಿಯಲು ಒದಗಿಸುತ್ತದೆ, ಮತ್ತು ನೀವು ಅವುಗಳನ್ನು ಬದಲಾಯಿಸಿ ಭಾವನೆ ಹೆಚ್ಚು ಅಥವಾ ಕಡಿಮೆ ನಿಖರವಾಗಿದೆಯೇ ಎಂದು ನೋಡಬಹುದು. ಇಲ್ಲಿ VADER ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ ಬಳಸಲಾಗಿದೆ. + +> Hutto, C.J. & Gilbert, E.E. (2014). VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text. Eighth International Conference on Weblogs and Social Media (ICWSM-14). Ann Arbor, MI, June 2014. + +```python +from nltk.sentiment.vader import SentimentIntensityAnalyzer + +# ವಾಡರ್ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಕವನ್ನು ರಚಿಸಿ (ನೀವು ಪ್ರಯತ್ನಿಸಬಹುದಾದ NLTK ನಲ್ಲಿ ಇತರರೂ ಇದ್ದಾರೆ) +vader_sentiment = SentimentIntensityAnalyzer() +# ಹುಟ್ಟೋ, ಸಿ.ಜೆ. & ಗಿಲ್ಬರ್ಟ್, ಇ.ಇ. (2014). ವಾಡರ್: ಸಾಮಾಜಿಕ ಮಾಧ್ಯಮ ಪಠ್ಯದ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆಗೆ ನಿಯಮಾಧಾರಿತ ಸರಳ ಮಾದರಿ. ಎಂಟನೇ ಅಂತಾರಾಷ್ಟ್ರೀಯ ವೆಬ್ಲಾಗ್ ಮತ್ತು ಸಾಮಾಜಿಕ ಮಾಧ್ಯಮ ಸಮ್ಮೇಳನ (ICWSM-14). ಆನ್ ಅರ್ಬರ್, MI, ಜೂನ್ 2014. + +# ವಿಮರ್ಶೆಗೆ 3 ಇನ್ಪುಟ್ ಸಾಧ್ಯತೆಗಳಿವೆ: +# ಅದು "ನಕಾರಾತ್ಮಕವಿಲ್ಲ" ಆಗಿರಬಹುದು, ಆ ಸಂದರ್ಭದಲ್ಲಿ 0 ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ +# ಅದು "ಧನಾತ್ಮಕವಿಲ್ಲ" ಆಗಿರಬಹುದು, ಆ ಸಂದರ್ಭದಲ್ಲಿ 0 ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ +# ಅದು ವಿಮರ್ಶೆಯಾಗಿರಬಹುದು, ಆ ಸಂದರ್ಭದಲ್ಲಿ ಭಾವನೆಯನ್ನು ಲೆಕ್ಕಿಸಿ +def calc_sentiment(review): + if review == "No Negative" or review == "No Positive": + return 0 + return vader_sentiment.polarity_scores(review)["compound"] +``` + +ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಂನಲ್ಲಿ ನಂತರ ನೀವು ಭಾವನೆಯನ್ನು ಲೆಕ್ಕಹಾಕಲು ಸಿದ್ಧರಾಗಿದ್ದಾಗ, ನೀವು ಪ್ರತಿಯೊಂದು ವಿಮರ್ಶೆಗೆ ಇದನ್ನು ಹೀಗೆ ಅನ್ವಯಿಸಬಹುದು: + +```python +# ನಕಾರಾತ್ಮಕ ಭಾವನೆ ಮತ್ತು ಧನಾತ್ಮಕ ಭಾವನೆ ಕಾಲಮ್ ಸೇರಿಸಿ +print("Calculating sentiment columns for both positive and negative reviews") +start = time.time() +df["Negative_Sentiment"] = df.Negative_Review.apply(calc_sentiment) +df["Positive_Sentiment"] = df.Positive_Review.apply(calc_sentiment) +end = time.time() +print("Calculating sentiment took " + str(round(end - start, 2)) + " seconds") +``` + +ಇದು ನನ್ನ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಸುಮಾರು 120 ಸೆಕೆಂಡುಗಳು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಆದರೆ ಪ್ರತಿ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಇದು ಬದಲಾಗಬಹುದು. ನೀವು ಫಲಿತಾಂಶಗಳನ್ನು ಮುದ್ರಿಸಿ ಭಾವನೆ ವಿಮರ್ಶೆಗೆ ಹೊಂದಿಕೆಯಾಗಿದೆಯೇ ಎಂದು ನೋಡಲು ಬಯಸಿದರೆ: + +```python +df = df.sort_values(by=["Negative_Sentiment"], ascending=True) +print(df[["Negative_Review", "Negative_Sentiment"]]) +df = df.sort_values(by=["Positive_Sentiment"], ascending=True) +print(df[["Positive_Review", "Positive_Sentiment"]]) +``` + +ಚಾಲೆಂಜ್‌ನಲ್ಲಿ ಬಳಸುವ ಮೊದಲು ಫೈಲ್‌ನೊಂದಿಗೆ ಮಾಡಬೇಕಾದ ಕೊನೆಯ ಕೆಲಸ, ಅದನ್ನು ಉಳಿಸುವುದು! ನೀವು ನಿಮ್ಮ ಎಲ್ಲಾ ಹೊಸ ಕಾಲಮ್‌ಗಳನ್ನು ಮರುಕ್ರಮಗೊಳಿಸುವುದನ್ನು ಪರಿಗಣಿಸಬೇಕು, ಇದರಿಂದ ಅವುಗಳನ್ನು ಕೆಲಸ ಮಾಡಲು ಸುಲಭವಾಗುತ್ತದೆ (ಮಾನವನಿಗೆ ಇದು ಒಂದು ಸೌಂದರ್ಯ ಬದಲಾವಣೆ). + +```python +# ಕಾಲಮ್ಗಳನ್ನು ಮರುಕ್ರಮಗೊಳಿಸಿ (ಇದು ಸೌಂದರ್ಯಕ್ಕಾಗಿ, ಆದರೆ ನಂತರ ಡೇಟಾವನ್ನು ಅನ್ವೇಷಿಸಲು ಸುಲಭವಾಗಿಸಲು) +df = df.reindex(["Hotel_Name", "Hotel_Address", "Total_Number_of_Reviews", "Average_Score", "Reviewer_Score", "Negative_Sentiment", "Positive_Sentiment", "Reviewer_Nationality", "Leisure_trip", "Couple", "Solo_traveler", "Business_trip", "Group", "Family_with_young_children", "Family_with_older_children", "With_a_pet", "Negative_Review", "Positive_Review"], axis=1) + +print("Saving results to Hotel_Reviews_NLP.csv") +df.to_csv(r"../data/Hotel_Reviews_NLP.csv", index = False) +``` + +ನೀವು ಸಂಪೂರ್ಣ ಕೋಡ್ ಅನ್ನು [ವಿಶ್ಲೇಷಣಾ ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb)ಗಾಗಿ ಚಲಾಯಿಸಬೇಕು (ನೀವು [ನಿಮ್ಮ ಫಿಲ್ಟರಿಂಗ್ ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) ಅನ್ನು ಚಲಾಯಿಸಿ Hotel_Reviews_Filtered.csv ಫೈಲ್ ಅನ್ನು ರಚಿಸಿದ ನಂತರ). + +ಪುನಃ ಪರಿಶೀಲಿಸಲು, ಹಂತಗಳು ಇವು: + +1. ಮೂಲ ಡೇಟಾಸೆಟ್ ಫೈಲ್ **Hotel_Reviews.csv** ಅನ್ನು ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ [ಎಕ್ಸ್‌ಪ್ಲೋರರ್ ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb) ಮೂಲಕ ಅನ್ವೇಷಿಸಲಾಗಿದೆ +2. Hotel_Reviews.csv ಅನ್ನು [ಫಿಲ್ಟರಿಂಗ್ ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಿ **Hotel_Reviews_Filtered.csv** ಅನ್ನು ಪಡೆದಿದ್ದಾರೆ +3. Hotel_Reviews_Filtered.csv ಅನ್ನು [ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣಾ ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) ಮೂಲಕ ಪ್ರಕ್ರಿಯೆ ಮಾಡಿ **Hotel_Reviews_NLP.csv** ಅನ್ನು ಪಡೆದಿದ್ದಾರೆ +4. ಕೆಳಗಿನ NLP ಚಾಲೆಂಜ್‌ನಲ್ಲಿ Hotel_Reviews_NLP.csv ಅನ್ನು ಬಳಸಿ + +### ಸಮಾರೋಪ + +ನೀವು ಪ್ರಾರಂಭಿಸಿದಾಗ, ನಿಮಗೆ ಕಾಲಮ್‌ಗಳು ಮತ್ತು ಡೇಟಾ ಇರುವ ಡೇಟಾಸೆಟ್ ಇತ್ತು ಆದರೆ ಅದರಲ್ಲಿ ಎಲ್ಲವೂ ಪರಿಶೀಲಿಸಲಾಗಲಿಲ್ಲ ಅಥವಾ ಬಳಸಲಾಗಲಿಲ್ಲ. ನೀವು ಡೇಟಾವನ್ನು ಅನ್ವೇಷಿಸಿ, ಬೇಕಾಗದವನ್ನೆಲ್ಲಾ ಫಿಲ್ಟರ್ ಮಾಡಿ, ಟ್ಯಾಗ್‌ಗಳನ್ನು ಉಪಯುಕ್ತವಾದುದಾಗಿ ಪರಿವರ್ತಿಸಿ, ನಿಮ್ಮ ಸ್ವಂತ ಸರಾಸರಿಗಳನ್ನು ಲೆಕ್ಕಹಾಕಿ, ಕೆಲವು ಭಾವನಾತ್ಮಕ ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸಿ ಮತ್ತು ಸಹಜ ಪಠ್ಯವನ್ನು ಪ್ರಕ್ರಿಯೆ ಮಾಡುವ ಬಗ್ಗೆ ಕೆಲವು ಆಸಕ್ತಿದಾಯಕ ವಿಷಯಗಳನ್ನು ಕಲಿತಿದ್ದೀರಿ. + +## [ಪಾಠೋತ್ತರ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ಚಾಲೆಂಜ್ + +ನೀವು ಈಗ ನಿಮ್ಮ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಭಾವನೆಗಾಗಿ ವಿಶ್ಲೇಷಿಸಿದ್ದೀರಿ, ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ನೀವು ಕಲಿತ ತಂತ್ರಗಳನ್ನು (ಶ್ರೇಣೀಕರಣ, ಬಹುಶಃ?) ಬಳಸಿಕೊಂಡು ಭಾವನೆಯ ಸುತ್ತಲೂ ಮಾದರಿಗಳನ್ನು ನಿರ್ಧರಿಸಲು ಪ್ರಯತ್ನಿಸಿ. + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +[ಈ ಲರ್ನ್ ಮೋಡ್ಯೂಲ್](https://docs.microsoft.com/en-us/learn/modules/classify-user-feedback-with-the-text-analytics-api/?WT.mc_id=academic-77952-leestott) ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ ಮತ್ತು ಪಠ್ಯದಲ್ಲಿ ಭಾವನೆಯನ್ನು ಅನ್ವೇಷಿಸಲು ವಿಭಿನ್ನ ಸಾಧನಗಳನ್ನು ಬಳಸಿ. + +## ನಿಯೋಜನೆ + +[ಬೇರೊಂದು ಡೇಟಾಸೆಟ್ ಪ್ರಯತ್ನಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/assignment.md b/translations/kn/6-NLP/5-Hotel-Reviews-2/assignment.md new file mode 100644 index 000000000..0c62a9715 --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/assignment.md @@ -0,0 +1,27 @@ + +# ಬೇರೆ ಡೇಟಾಸೆಟ್ ಪ್ರಯತ್ನಿಸಿ + +## ಸೂಚನೆಗಳು + +ನೀವು ಈಗಾಗಲೇ ಪಠ್ಯಕ್ಕೆ ಭಾವನೆಯನ್ನು ನಿಯೋಜಿಸಲು NLTK ಬಳಸದ ಬಗ್ಗೆ ಕಲಿತಿದ್ದೀರಿ, ಈಗ ಬೇರೆ ಡೇಟಾಸೆಟ್ ಪ್ರಯತ್ನಿಸಿ. ನೀವು ಅದಕ್ಕೆ ಸುತ್ತಲೂ ಕೆಲವು ಡೇಟಾ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವಿಕೆ ಮಾಡಬೇಕಾಗಬಹುದು, ಆದ್ದರಿಂದ ಒಂದು ನೋಟ್ಬುಕ್ ರಚಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಚಿಂತನೆ ಪ್ರಕ್ರಿಯೆಯನ್ನು ದಾಖಲೆ ಮಾಡಿ. ನೀವು ಏನು ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ? + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಗೆ ಅಗತ್ಯ | +| -------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ---------------------- | +| | ಭಾವನೆ ಹೇಗೆ ನಿಯೋಜಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ವಿವರಿಸುವ ಚೆನ್ನಾಗಿ ದಾಖಲೆ ಮಾಡಲಾದ ಸೆಲ್‌ಗಳೊಂದಿಗೆ ಸಂಪೂರ್ಣ ನೋಟ್ಬುಕ್ ಮತ್ತು ಡೇಟಾಸೆಟ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಉತ್ತಮ ವಿವರಣೆಗಳಿಲ್ಲ | ನೋಟ್ಬುಕ್ ದೋಷಪೂರಿತವಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/notebook.ipynb b/translations/kn/6-NLP/5-Hotel-Reviews-2/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb new file mode 100644 index 000000000..ecf961123 --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb @@ -0,0 +1,172 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 4, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "033cb89c85500224b3c63fd04f49b4aa", + "translation_date": "2025-12-19T16:49:43+00:00", + "source_file": "6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import time\n", + "import ast" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def replace_address(row):\n", + " if \"Netherlands\" in row[\"Hotel_Address\"]:\n", + " return \"Amsterdam, Netherlands\"\n", + " elif \"Barcelona\" in row[\"Hotel_Address\"]:\n", + " return \"Barcelona, Spain\"\n", + " elif \"United Kingdom\" in row[\"Hotel_Address\"]:\n", + " return \"London, United Kingdom\"\n", + " elif \"Milan\" in row[\"Hotel_Address\"]: \n", + " return \"Milan, Italy\"\n", + " elif \"France\" in row[\"Hotel_Address\"]:\n", + " return \"Paris, France\"\n", + " elif \"Vienna\" in row[\"Hotel_Address\"]:\n", + " return \"Vienna, Austria\" \n", + " else:\n", + " return row.Hotel_Address\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the hotel reviews from CSV\n", + "start = time.time()\n", + "df = pd.read_csv('../../data/Hotel_Reviews.csv')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# dropping columns we will not use:\n", + "df.drop([\"lat\", \"lng\"], axis = 1, inplace=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Replace all the addresses with a shortened, more useful form\n", + "df[\"Hotel_Address\"] = df.apply(replace_address, axis = 1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Drop `Additional_Number_of_Scoring`\n", + "df.drop([\"Additional_Number_of_Scoring\"], axis = 1, inplace=True)\n", + "# Replace `Total_Number_of_Reviews` and `Average_Score` with our own calculated values\n", + "df.Total_Number_of_Reviews = df.groupby('Hotel_Name').transform('count')\n", + "df.Average_Score = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Process the Tags into new columns\n", + "# The file Hotel_Reviews_Tags.py, identifies the most important tags\n", + "# Leisure trip, Couple, Solo traveler, Business trip, Group combined with Travelers with friends, \n", + "# Family with young children, Family with older children, With a pet\n", + "df[\"Leisure_trip\"] = df.Tags.apply(lambda tag: 1 if \"Leisure trip\" in tag else 0)\n", + "df[\"Couple\"] = df.Tags.apply(lambda tag: 1 if \"Couple\" in tag else 0)\n", + "df[\"Solo_traveler\"] = df.Tags.apply(lambda tag: 1 if \"Solo traveler\" in tag else 0)\n", + "df[\"Business_trip\"] = df.Tags.apply(lambda tag: 1 if \"Business trip\" in tag else 0)\n", + "df[\"Group\"] = df.Tags.apply(lambda tag: 1 if \"Group\" in tag or \"Travelers with friends\" in tag else 0)\n", + "df[\"Family_with_young_children\"] = df.Tags.apply(lambda tag: 1 if \"Family with young children\" in tag else 0)\n", + "df[\"Family_with_older_children\"] = df.Tags.apply(lambda tag: 1 if \"Family with older children\" in tag else 0)\n", + "df[\"With_a_pet\"] = df.Tags.apply(lambda tag: 1 if \"With a pet\" in tag else 0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# No longer need any of these columns\n", + "df.drop([\"Review_Date\", \"Review_Total_Negative_Word_Counts\", \"Review_Total_Positive_Word_Counts\", \"days_since_review\", \"Total_Number_of_Reviews_Reviewer_Has_Given\"], axis = 1, inplace=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Saving results to Hotel_Reviews_Filtered.csv\n", + "Filtering took 23.74 seconds\n" + ] + } + ], + "source": [ + "# Saving new data file with calculated columns\n", + "print(\"Saving results to Hotel_Reviews_Filtered.csv\")\n", + "df.to_csv(r'../../data/Hotel_Reviews_Filtered.csv', index = False)\n", + "end = time.time()\n", + "print(\"Filtering took \" + str(round(end - start, 2)) + \" seconds\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb new file mode 100644 index 000000000..b3fd34e69 --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb @@ -0,0 +1,137 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 4, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "341efc86325ec2a214f682f57a189dfd", + "translation_date": "2025-12-19T16:49:54+00:00", + "source_file": "6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the hotel reviews from CSV (you can )\n", + "import pandas as pd \n", + "\n", + "df = pd.read_csv('../../data/Hotel_Reviews_Filtered.csv')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# We want to find the most useful tags to keep\n", + "# Remove opening and closing brackets\n", + "df.Tags = df.Tags.str.strip(\"[']\")\n", + "# remove all quotes too\n", + "df.Tags = df.Tags.str.replace(\" ', '\", \",\", regex = False)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# removing this to take advantage of the 'already a phrase' fact of the dataset \n", + "# Now split the strings into a list\n", + "tag_list_df = df.Tags.str.split(',', expand = True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Remove leading and trailing spaces\n", + "df[\"Tag_1\"] = tag_list_df[0].str.strip()\n", + "df[\"Tag_2\"] = tag_list_df[1].str.strip()\n", + "df[\"Tag_3\"] = tag_list_df[2].str.strip()\n", + "df[\"Tag_4\"] = tag_list_df[3].str.strip()\n", + "df[\"Tag_5\"] = tag_list_df[4].str.strip()\n", + "df[\"Tag_6\"] = tag_list_df[5].str.strip()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# Merge the 6 columns into one with melt\n", + "df_tags = df.melt(value_vars=[\"Tag_1\", \"Tag_2\", \"Tag_3\", \"Tag_4\", \"Tag_5\", \"Tag_6\"])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "The shape of the tags with no filtering: (2514684, 2)\n", + " index count\n", + "0 Leisure trip 338423\n", + "1 Couple 205305\n", + "2 Solo traveler 89779\n", + "3 Business trip 68176\n", + "4 Group 51593\n", + "5 Family with young children 49318\n", + "6 Family with older children 21509\n", + "7 Travelers with friends 1610\n", + "8 With a pet 1078\n" + ] + } + ], + "source": [ + "# Get the value counts\n", + "tag_vc = df_tags.value.value_counts()\n", + "# print(tag_vc)\n", + "print(\"The shape of the tags with no filtering:\", str(df_tags.shape))\n", + "# Drop rooms, suites, and length of stay, mobile device and anything with less count than a 1000\n", + "df_tags = df_tags[~df_tags.value.str.contains(\"Standard|room|Stayed|device|Beds|Suite|Studio|King|Superior|Double\", na=False, case=False)]\n", + "tag_vc = df_tags.value.value_counts().reset_index(name=\"count\").query(\"count > 1000\")\n", + "# Print the top 10 (there should only be 9 and we'll use these in the filtering section)\n", + "print(tag_vc[:10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb new file mode 100644 index 000000000..b0771d40f --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb @@ -0,0 +1,260 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 4, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "705bf02633759f689abc37b19749a16d", + "translation_date": "2025-12-19T16:50:06+00:00", + "source_file": "6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[nltk_data] Downloading package vader_lexicon to\n[nltk_data] /Users/jenlooper/nltk_data...\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True" + ] + }, + "metadata": {}, + "execution_count": 9 + } + ], + "source": [ + "import time\n", + "import pandas as pd\n", + "import nltk as nltk\n", + "from nltk.corpus import stopwords\n", + "from nltk.sentiment.vader import SentimentIntensityAnalyzer\n", + "nltk.download('vader_lexicon')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "vader_sentiment = SentimentIntensityAnalyzer()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# There are 3 possibilities of input for a review:\n", + "# It could be \"No Negative\", in which case, return 0\n", + "# It could be \"No Positive\", in which case, return 0\n", + "# It could be a review, in which case calculate the sentiment\n", + "def calc_sentiment(review): \n", + " if review == \"No Negative\" or review == \"No Positive\":\n", + " return 0\n", + " return vader_sentiment.polarity_scores(review)[\"compound\"] \n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the hotel reviews from CSV\n", + "df = pd.read_csv(\"../../data/Hotel_Reviews_Filtered.csv\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# Remove stop words - can be slow for a lot of text!\n", + "# Ryan Han (ryanxjhan on Kaggle) has a great post measuring performance of different stop words removal approaches\n", + "# https://www.kaggle.com/ryanxjhan/fast-stop-words-removal # using the approach that Ryan recommends\n", + "start = time.time()\n", + "cache = set(stopwords.words(\"english\"))\n", + "def remove_stopwords(review):\n", + " text = \" \".join([word for word in review.split() if word not in cache])\n", + " return text\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Remove the stop words from both columns\n", + "df.Negative_Review = df.Negative_Review.apply(remove_stopwords) \n", + "df.Positive_Review = df.Positive_Review.apply(remove_stopwords)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Removing stop words took 5.77 seconds\n" + ] + } + ], + "source": [ + "end = time.time()\n", + "print(\"Removing stop words took \" + str(round(end - start, 2)) + \" seconds\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Calculating sentiment columns for both positive and negative reviews\n", + "Calculating sentiment took 201.07 seconds\n" + ] + } + ], + "source": [ + "# Add a negative sentiment and positive sentiment column\n", + "print(\"Calculating sentiment columns for both positive and negative reviews\")\n", + "start = time.time()\n", + "df[\"Negative_Sentiment\"] = df.Negative_Review.apply(calc_sentiment)\n", + "df[\"Positive_Sentiment\"] = df.Positive_Review.apply(calc_sentiment)\n", + "end = time.time()\n", + "print(\"Calculating sentiment took \" + str(round(end - start, 2)) + \" seconds\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " Negative_Review Negative_Sentiment\n", + "186584 So bad experience memories I hotel The first n... -0.9920\n", + "129503 First charged twice room booked booking second... -0.9896\n", + "307286 The staff Had bad experience even booking Janu... -0.9889\n", + "452092 No WLAN room Incredibly rude restaurant staff ... -0.9884\n", + "201293 We usually traveling Paris 2 3 times year busi... -0.9873\n", + "... ... ...\n", + "26899 I would say however one night expensive even d... 0.9933\n", + "138365 Wifi terribly slow I speed test network upload... 0.9938\n", + "79215 I find anything hotel first I walked past hote... 0.9938\n", + "278506 The property great location There bakery next ... 0.9945\n", + "339189 Guys I like hotel I wish return next year Howe... 0.9948\n", + "\n", + "[515738 rows x 2 columns]\n", + " Positive_Review Positive_Sentiment\n", + "137893 Bathroom Shower We going stay twice hotel 2 ni... -0.9820\n", + "5839 I completely disappointed mad since reception ... -0.9780\n", + "64158 get everything extra internet parking breakfas... -0.9751\n", + "124178 I didnt like anythig Room small Asked upgrade ... -0.9721\n", + "489137 Very rude manager abusive staff reception Dirt... -0.9703\n", + "... ... ...\n", + "331570 Everything This recently renovated hotel class... 0.9984\n", + "322920 From moment stepped doors Guesthouse Hotel sta... 0.9985\n", + "293710 This place surprise expected good actually gre... 0.9985\n", + "417442 We celebrated wedding night Langham I commend ... 0.9985\n", + "132492 We arrived super cute boutique hotel area expl... 0.9987\n", + "\n", + "[515738 rows x 2 columns]\n" + ] + } + ], + "source": [ + "df = df.sort_values(by=[\"Negative_Sentiment\"], ascending=True)\n", + "print(df[[\"Negative_Review\", \"Negative_Sentiment\"]])\n", + "df = df.sort_values(by=[\"Positive_Sentiment\"], ascending=True)\n", + "print(df[[\"Positive_Review\", \"Positive_Sentiment\"]])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# Reorder the columns (This is cosmetic, but to make it easier to explore the data later)\n", + "df = df.reindex([\"Hotel_Name\", \"Hotel_Address\", \"Total_Number_of_Reviews\", \"Average_Score\", \"Reviewer_Score\", \"Negative_Sentiment\", \"Positive_Sentiment\", \"Reviewer_Nationality\", \"Leisure_trip\", \"Couple\", \"Solo_traveler\", \"Business_trip\", \"Group\", \"Family_with_young_children\", \"Family_with_older_children\", \"With_a_pet\", \"Negative_Review\", \"Positive_Review\"], axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Saving results to Hotel_Reviews_NLP.csv\n" + ] + } + ], + "source": [ + "print(\"Saving results to Hotel_Reviews_NLP.csv\")\n", + "df.to_csv(r\"../../data/Hotel_Reviews_NLP.csv\", index = False)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕಾರ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md new file mode 100644 index 000000000..ad48999e3 --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/R/README.md b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/R/README.md new file mode 100644 index 000000000..9ee7bb327 --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/README.md b/translations/kn/6-NLP/README.md new file mode 100644 index 000000000..141d0a852 --- /dev/null +++ b/translations/kn/6-NLP/README.md @@ -0,0 +1,40 @@ + +# ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ಆರಂಭಿಸುವುದು + +ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ (NLP) ಎಂದರೆ ಮಾನವ ಭಾಷೆಯನ್ನು ಮಾತನಾಡುವ ಮತ್ತು ಬರೆಯುವ ರೀತಿಯಲ್ಲಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಮಿನ ಸಾಮರ್ಥ್ಯ. ಇದನ್ನು ನೈಸರ್ಗಿಕ ಭಾಷೆ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಇದು ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆಯ (AI) ಒಂದು ಘಟಕವಾಗಿದೆ. NLP 50 ವರ್ಷಗಳಿಗಿಂತ ಹೆಚ್ಚು ಕಾಲದಿಂದ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದು, ಭಾಷಾಶಾಸ್ತ್ರ ಕ್ಷೇತ್ರದಲ್ಲಿ ಮೂಲಗಳನ್ನು ಹೊಂದಿದೆ. ಈ ಸಂಪೂರ್ಣ ಕ್ಷೇತ್ರವು ಯಂತ್ರಗಳಿಗೆ ಮಾನವ ಭಾಷೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುವುದಕ್ಕೆ ನಿರ್ದೇಶಿತವಾಗಿದೆ. ಇದನ್ನು ನಂತರ ಸ್ಪೆಲ್ ಚೆಕ್ ಅಥವಾ ಯಂತ್ರ ಅನುವಾದದಂತಹ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಬಳಸಬಹುದು. ಇದಕ್ಕೆ ವೈದ್ಯಕೀಯ ಸಂಶೋಧನೆ, ಹುಡುಕಾಟ ಎಂಜಿನ್‌ಗಳು ಮತ್ತು ವ್ಯವಹಾರ ಬುದ್ಧಿವಂತಿಕೆ ಸೇರಿದಂತೆ ಹಲವಾರು ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ನೈಜ ಜಗತ್ತಿನ ಅನೇಕ ಅನ್ವಯಿಕೆಗಳಿವೆ. + +## ಪ್ರಾದೇಶಿಕ ವಿಷಯ: ಯುರೋಪಿಯನ್ ಭಾಷೆಗಳು ಮತ್ತು ಸಾಹಿತ್ಯ ಮತ್ತು ಯುರೋಪಿನ ರೋಮ್ಯಾಂಟಿಕ್ ಹೋಟೆಲ್ಗಳು ❤️ + +ಪಠ್ಯಕ್ರಮದ ಈ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನದ ಅತ್ಯಂತ ವ್ಯಾಪಕ ಬಳಕೆಗಳಲ್ಲಿ ಒಂದಾದ ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ (NLP) ಪರಿಚಯಿಸಲ್ಪಡುತ್ತೀರಿ. ಗಣನೀಯ ಭಾಷಾಶಾಸ್ತ್ರದಿಂದ ಪಡೆದ ಈ ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆಯ ವರ್ಗವು ಮಾನವರು ಮತ್ತು ಯಂತ್ರಗಳ ನಡುವೆ ಧ್ವನಿ ಅಥವಾ ಪಠ್ಯ ಸಂವಹನದ ಮೂಲಕ ಸೇತುವೆಯಾಗಿದೆ. + +ಈ ಪಾಠಗಳಲ್ಲಿ ನಾವು NLP ಮೂಲಭೂತಗಳನ್ನು ಕಲಿಯುತ್ತೇವೆ, ಚಿಕ್ಕ ಸಂಭಾಷಣಾತ್ಮಕ ಬಾಟ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವ ಮೂಲಕ ಯಂತ್ರ ಅಧ್ಯಯನವು ಈ ಸಂಭಾಷಣೆಗಳನ್ನು ಹೇಗೆ ಹೆಚ್ಚು 'ಸ್ಮಾರ್ಟ್' ಆಗಿ ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ತಿಳಿಯುತ್ತೇವೆ. ನೀವು ಕಾಲದಲ್ಲಿ ಹಿಂದಕ್ಕೆ ಪ್ರಯಾಣ ಮಾಡಿ, ಜೆನ್ ಆಸ್ಟೆನ್ ಅವರ 1813 ರಲ್ಲಿ ಪ್ರಕಟಿತ ಕ್ಲಾಸಿಕ್ ناವಲ **ಪ್ರೈಡ್ ಅಂಡ್ ಪ್ರೆಜುಡಿಸ್** ನ ಎಲಿಜಬೆತ್ ಬೆನೆಟ್ ಮತ್ತು ಮಿಸ್ಟರ್ ಡಾರ್ಸಿಯವರೊಂದಿಗೆ ಸಂಭಾಷಣೆ ಮಾಡುತ್ತೀರಿ. ನಂತರ, ಯುರೋಪಿನ ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳ ಮೂಲಕ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಕಲಿಯುವ ಮೂಲಕ ನಿಮ್ಮ ಜ್ಞಾನವನ್ನು ವಿಸ್ತರಿಸುತ್ತೀರಿ. + +![ಪ್ರೈಡ್ ಅಂಡ್ ಪ್ರೆಜುಡಿಸ್ ಪುಸ್ತಕ ಮತ್ತು ಚಹಾ](../../../translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.kn.jpg) +> ಫೋಟೋ ಎಲೈನ್ ಹೌಲಿನ್ ಅವರಿಂದ ಅನ್ಸ್ಪ್ಲ್ಯಾಶ್ ನಲ್ಲಿ + +## ಪಾಠಗಳು + +1. [ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆಗೆ ಪರಿಚಯ](1-Introduction-to-NLP/README.md) +2. [ಸಾಮಾನ್ಯ NLP ಕಾರ್ಯಗಳು ಮತ್ತು ತಂತ್ರಗಳು](2-Tasks/README.md) +3. [ಯಂತ್ರ ಅಧ್ಯಯನದೊಂದಿಗೆ ಅನುವಾದ ಮತ್ತು ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ](3-Translation-Sentiment/README.md) +4. [ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿದ್ಧಪಡಿಸುವುದು](4-Hotel-Reviews-1/README.md) +5. [ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆಗೆ NLTK](5-Hotel-Reviews-2/README.md) + +## ಕ್ರೆಡಿಟ್ಸ್ + +ಈ ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ಪಾಠಗಳನ್ನು ☕ ಸಹಿತ [ಸ್ಟೀಫನ್ ಹೌವೆಲ್](https://twitter.com/Howell_MSFT) ರವರು ಬರೆಯಲಾಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/data/README.md b/translations/kn/6-NLP/data/README.md new file mode 100644 index 000000000..7934e7133 --- /dev/null +++ b/translations/kn/6-NLP/data/README.md @@ -0,0 +1,17 @@ + +ಈ ಫೋಲ್ಡರ್‌ಗೆ ಹೋಟೆಲ್ ವಿಮರ್ಶಾ ಡೇಟಾವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ. + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/1-Introduction/README.md b/translations/kn/7-TimeSeries/1-Introduction/README.md new file mode 100644 index 000000000..00b018eb4 --- /dev/null +++ b/translations/kn/7-TimeSeries/1-Introduction/README.md @@ -0,0 +1,201 @@ + +# ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಪರಿಚಯ + +![ಕಾಲ ಸರಣಿಗಳ ಸಾರಾಂಶವನ್ನು ಸ್ಕೆಚ್‌ನೋಟ್‌ನಲ್ಲಿ](../../../../translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.kn.png) + +> ಸ್ಕೆಚ್‌ನೋಟ್ [ಟೊಮೊಮಿ ಇಮುರು](https://www.twitter.com/girlie_mac) ಅವರಿಂದ + +ಈ ಪಾಠದಲ್ಲಿ ಮತ್ತು ಮುಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ತಿಳಿದುಕೊಳ್ಳುತ್ತೀರಿ, ಇದು ಎಂಎಲ್ ವಿಜ್ಞಾನಿಯ repertoire ನಲ್ಲಿ ಒಂದು ಆಸಕ್ತಿದಾಯಕ ಮತ್ತು ಮೌಲ್ಯಯುತ ಭಾಗವಾಗಿದೆ, ಆದರೆ ಇತರ ವಿಷಯಗಳಿಗಿಂತ ಸ್ವಲ್ಪ ಕಡಿಮೆ ಪರಿಚಿತವಾಗಿದೆ. ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಒಂದು ರೀತಿಯ 'ಕ್ರಿಸ್ಟಲ್ ಬಾಲ್' ಆಗಿದೆ: ಬೆಲೆ ಮುಂತಾದ ಚರದ ಹಿಂದಿನ ಕಾರ್ಯಕ್ಷಮತೆಯ ಆಧಾರದ ಮೇಲೆ, ನೀವು ಅದರ ಭವಿಷ್ಯದ ಸಾಧ್ಯ ಮೌಲ್ಯವನ್ನು ಊಹಿಸಬಹುದು. + +[![ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಪರಿಚಯ](https://img.youtube.com/vi/cBojo1hsHiI/0.jpg)](https://youtu.be/cBojo1hsHiI "ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಪರಿಚಯ") + +> 🎥 ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಕುರಿತು ವೀಡಿಯೋಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ + +## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +ಇದು ವ್ಯವಹಾರಕ್ಕೆ ನೇರವಾಗಿ ಅನ್ವಯಿಸುವ ಬೆಲೆ ನಿಗದಿ, ಇನ್ವೆಂಟರಿ ಮತ್ತು ಸರಬರಾಜು ಸರಪಳಿ ಸಮಸ್ಯೆಗಳಂತಹ ಸಮಸ್ಯೆಗಳಿಗೆ ನೇರ ಅನ್ವಯವಿರುವ ಉಪಯುಕ್ತ ಮತ್ತು ಆಸಕ್ತಿದಾಯಕ ಕ್ಷೇತ್ರವಾಗಿದೆ. ಭವಿಷ್ಯದ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಉತ್ತಮವಾಗಿ ಊಹಿಸಲು ಹೆಚ್ಚಿನ ಒಳನೋಟಗಳನ್ನು ಪಡೆಯಲು ಡೀಪ್ ಲರ್ನಿಂಗ್ ತಂತ್ರಗಳನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿದರೂ, ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಕ್ಲಾಸಿಕ್ ಎಂಎಲ್ ತಂತ್ರಜ್ಞಾನಗಳಿಂದ ಬಹುಮಟ್ಟಿಗೆ ಪ್ರಭಾವಿತವಾಗಿರುವ ಕ್ಷೇತ್ರವಾಗಿಯೇ ಉಳಿದಿದೆ. + +> ಪೆನ್ ಸ್ಟೇಟ್‌ನ ಉಪಯುಕ್ತ ಕಾಲ ಸರಣಿ ಪಠ್ಯಕ್ರಮವನ್ನು [ಇಲ್ಲಿ](https://online.stat.psu.edu/stat510/lesson/1) ಕಾಣಬಹುದು + +## ಪರಿಚಯ + +ನೀವು ಸಮಯದೊಂದಿಗೆ ಎಷ್ಟು ಬಾರಿ ಮತ್ತು ಎಷ್ಟು ಕಾಲ ಬಳಸಲಾಗುತ್ತದೆ ಎಂಬುದರ ಬಗ್ಗೆ ಡೇಟಾವನ್ನು ಒದಗಿಸುವ ಸ್ಮಾರ್ಟ್ ಪಾರ್ಕಿಂಗ್ ಮೀಟರ್‌ಗಳ ಸರಣಿಯನ್ನು ನಿರ್ವಹಿಸುತ್ತಿದ್ದೀರಿ ಎಂದು ಊಹಿಸೋಣ. + +> ಮೀಟರ್‌ನ ಹಿಂದಿನ ಕಾರ್ಯಕ್ಷಮತೆಯ ಆಧಾರದ ಮೇಲೆ, ಸರಬರಾಜು ಮತ್ತು ಬೇಡಿಕೆಯ ನಿಯಮಗಳ ಪ್ರಕಾರ ಅದರ ಭವಿಷ್ಯದ ಮೌಲ್ಯವನ್ನು ನೀವು ಊಹಿಸಬಹುದಾದರೆ? + +ನಿಮ್ಮ ಗುರಿಯನ್ನು ಸಾಧಿಸಲು ಯಾವಾಗ ಕ್ರಮ ಕೈಗೊಳ್ಳಬೇಕೆಂದು ನಿಖರವಾಗಿ ಊಹಿಸುವುದು ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿಯಿಂದ ಎದುರಿಸಬಹುದಾದ ಸವಾಲಾಗಿದೆ. ಜನರು ಪಾರ್ಕಿಂಗ್ ಸ್ಥಳ ಹುಡುಕುತ್ತಿರುವ ಸಮಯದಲ್ಲಿ ಹೆಚ್ಚು ಶುಲ್ಕ ವಿಧಿಸುವುದು ಅವರಿಗೆ ಸಂತೋಷಕರವಾಗುವುದಿಲ್ಲ, ಆದರೆ ಇದು ರಸ್ತೆಗಳ ಸ್ವಚ್ಛತೆಯನ್ನು ಕಾಪಾಡಲು ಆದಾಯವನ್ನು ಉತ್ಪಾದಿಸುವ ಖಚಿತ ಮಾರ್ಗವಾಗಿರುತ್ತದೆ! + +ಕಾಲ ಸರಣಿ ಆಲ್ಗಾರಿಥಮ್‌ಗಳ ಕೆಲವು ಪ್ರಕಾರಗಳನ್ನು ಅನ್ವೇಷಿಸಿ, ಕೆಲವು ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಮತ್ತು ಸಿದ್ಧಪಡಿಸಲು ನೋಟ್ಬುಕ್ ಪ್ರಾರಂಭಿಸೋಣ. ನೀವು ವಿಶ್ಲೇಷಿಸುವ ಡೇಟಾ GEFCom2014 ಭವಿಷ್ಯವಾಣಿ ಸ್ಪರ್ಧೆಯಿಂದ ತೆಗೆದುಕೊಂಡಿದೆ. ಇದು 2012 ರಿಂದ 2014 ರವರೆಗೆ 3 ವರ್ಷಗಳ ಗಂಟೆಗಟ್ಟಲೆ ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನದ ಇತಿಹಾಸದ ಮಾದರಿಗಳನ್ನು ಆಧರಿಸಿ, ನೀವು ಭವಿಷ್ಯದ ವಿದ್ಯುತ್ ಲೋಡ್ ಮೌಲ್ಯಗಳನ್ನು ಊಹಿಸಬಹುದು. + +ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ನೀವು ಇತಿಹಾಸದ ಲೋಡ್ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಬಳಸಿಕೊಂಡು ಒಂದು ಕಾಲ ಹಂತವನ್ನು ಮುಂಚಿತವಾಗಿ ಊಹಿಸುವುದನ್ನು ಕಲಿಯುತ್ತೀರಿ. ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ಆದರೆ, ಹಿನ್ನೆಲೆಯಲ್ಲಿರುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಉಪಯುಕ್ತ. + +## ಕೆಲವು ವ್ಯಾಖ್ಯಾನಗಳು + +'ಕಾಲ ಸರಣಿ' ಎಂಬ ಪದವನ್ನು ಎದುರಿಸಿದಾಗ, ಅದರ ಬಳಕೆಯನ್ನು ವಿವಿಧ ಸಂದರ್ಭಗಳಲ್ಲಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ. + +🎓 **ಕಾಲ ಸರಣಿ** + +ಗಣಿತದಲ್ಲಿ, "ಕಾಲ ಸರಣಿ ಎಂದರೆ ಸಮಯ ಕ್ರಮದಲ್ಲಿ ಸೂಚಿಸಲ್ಪಟ್ಟ (ಅಥವಾ ಪಟ್ಟಿ ಮಾಡಲಾದ ಅಥವಾ ಗ್ರಾಫ್ ಮಾಡಲಾದ) ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳ ಸರಣಿ. ಸಾಮಾನ್ಯವಾಗಿ, ಕಾಲ ಸರಣಿ ಎಂದರೆ ಸಮಯದಲ್ಲಿ ಸಮಾನ ಅಂತರದ ಕ್ರಮವಾಗಿ ತೆಗೆದುಕೊಂಡ ಸರಣಿ." ಕಾಲ ಸರಣಿಯ ಉದಾಹರಣೆ ಎಂದರೆ [ಡೌ ಜೋನ್ಸ್ ಇಂಡಸ್ಟ್ರಿಯಲ್ ಅವರೆಜ್](https://wikipedia.org/wiki/Time_series) ನ ದೈನಂದಿನ ಮುಚ್ಚುವ ಮೌಲ್ಯ. ಕಾಲ ಸರಣಿ ಪ್ಲಾಟ್‌ಗಳು ಮತ್ತು ಸಾಂಖ್ಯಿಕ ಮಾದರೀಕರಣವನ್ನು ಸಿಗ್ನಲ್ ಪ್ರೊಸೆಸಿಂಗ್, ಹವಾಮಾನ ಭವಿಷ್ಯವಾಣಿ, ಭೂಕಂಪ ಭವಿಷ್ಯವಾಣಿ ಮತ್ತು ಇತರ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ ಕಾಣಬಹುದು, ಅಲ್ಲಿ ಘಟನೆಗಳು ಸಂಭವಿಸುತ್ತವೆ ಮತ್ತು ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಸಮಯದೊಂದಿಗೆ ಪ್ಲಾಟ್ ಮಾಡಬಹುದು. + +🎓 **ಕಾಲ ಸರಣಿ ವಿಶ್ಲೇಷಣೆ** + +ಕಾಲ ಸರಣಿ ವಿಶ್ಲೇಷಣೆ ಎಂದರೆ ಮೇಲ್ಕಂಡ ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸುವುದು. ಕಾಲ ಸರಣಿ ಡೇಟಾ ವಿಭಿನ್ನ ರೂಪಗಳನ್ನು ಹೊಂದಬಹುದು, ಉದಾಹರಣೆಗೆ 'ವಿರಾಮಿತ ಕಾಲ ಸರಣಿ' ಇದು ವಿರಾಮದ ಘಟನೆಗೆ ಮುಂಚೆ ಮತ್ತು ನಂತರದ ಕಾಲ ಸರಣಿಯ ಬೆಳವಣಿಗೆಯ ಮಾದರಿಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ. ಕಾಲ ಸರಣಿಗೆ ಬೇಕಾದ ವಿಶ್ಲೇಷಣೆ ಡೇಟಾದ ಸ್ವಭಾವದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಕಾಲ ಸರಣಿ ಡೇಟಾ ಸ್ವತಃ ಸಂಖ್ಯೆಗಳ ಅಥವಾ ಅಕ್ಷರಗಳ ಸರಣಿಯಾಗಿರಬಹುದು. + +ನಿರ್ವಹಿಸಬೇಕಾದ ವಿಶ್ಲೇಷಣೆ ವಿವಿಧ ವಿಧಾನಗಳನ್ನು ಬಳಸುತ್ತದೆ, ಅವುಗಳಲ್ಲಿ ಫ್ರೀಕ್ವೆನ್ಸಿ-ಡೊಮೇನ್ ಮತ್ತು ಟೈಮ್-ಡೊಮೇನ್, ರೇಖೀಯ ಮತ್ತು ಅರೆಖೀಯ, ಮತ್ತು ಇನ್ನಷ್ಟು ಸೇರಿವೆ. ಈ ರೀತಿಯ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸುವ ಅನೇಕ ಮಾರ್ಗಗಳ ಬಗ್ಗೆ [ಇಲ್ಲಿ](https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm) ತಿಳಿದುಕೊಳ್ಳಿ. + +🎓 **ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ** + +ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ ಎಂದರೆ ಹಿಂದಿನ ಸಂಗ್ರಹಿತ ಡೇಟಾದ ಮಾದರಿಗಳನ್ನು ಆಧರಿಸಿ ಭವಿಷ್ಯದ ಮೌಲ್ಯಗಳನ್ನು ಊಹಿಸಲು ಮಾದರಿಯನ್ನು ಬಳಸುವುದು. ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ಅನ್ವೇಷಿಸಲು ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳನ್ನು ಬಳಸಬಹುದು, ಸಮಯ ಸೂಚ್ಯಂಕಗಳನ್ನು x ಚರಗಳಾಗಿ ಗ್ರಾಫ್‌ನಲ್ಲಿ ಬಳಸಿಕೊಂಡು, ಆದರೆ ಇಂತಹ ಡೇಟಾವನ್ನು ವಿಶೇಷ ಮಾದರಿಗಳ ಮೂಲಕ ವಿಶ್ಲೇಷಿಸುವುದು ಉತ್ತಮ. + +ಕಾಲ ಸರಣಿ ಡೇಟಾ ಕ್ರಮಬದ್ಧ ವೀಕ್ಷಣೆಗಳ ಪಟ್ಟಿ ಆಗಿದ್ದು, ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಮೂಲಕ ವಿಶ್ಲೇಷಿಸಬಹುದಾದ ಡೇಟಾದಂತೆ ಅಲ್ಲ. ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಮಾದರಿ ARIMA, ಇದು "ಆಟೋರೆಗ್ರೆಸಿವ್ ಇಂಟಿಗ್ರೇಟೆಡ್ ಮೂವಿಂಗ್ ಅವರೆಜ್" ಎಂಬ ಅಕ್ಷರಶಃ. + +[ARIMA ಮಾದರಿಗಳು](https://online.stat.psu.edu/stat510/lesson/1/1.1) "ಸರಣಿಯ ಪ್ರಸ್ತುತ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿನ ಮೌಲ್ಯಗಳು ಮತ್ತು ಹಿಂದಿನ ಊಹಾ ದೋಷಗಳಿಗೆ ಸಂಬಂಧಿಸುತ್ತದೆ." ಅವು ಸಮಯ-ಡೊಮೇನ್ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಅತ್ಯಂತ ಸೂಕ್ತವಾಗಿವೆ, ಅಲ್ಲಿ ಡೇಟಾ ಸಮಯದೊಂದಿಗೆ ಕ್ರಮಬದ್ಧವಾಗಿದೆ. + +> ARIMA ಮಾದರಿಗಳ ಹಲವು ಪ್ರಕಾರಗಳಿವೆ, ಅವುಗಳ ಬಗ್ಗೆ ನೀವು [ಇಲ್ಲಿ](https://people.duke.edu/~rnau/411arim.htm) ತಿಳಿದುಕೊಳ್ಳಬಹುದು ಮತ್ತು ಮುಂದಿನ ಪಾಠದಲ್ಲಿ ಅವುಗಳ ಬಗ್ಗೆ ಸ್ಪರ್ಶಿಸುವಿರಿ. + +ಮುಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು [ಏಕಚರ ಕಾಲ ಸರಣಿ](https://itl.nist.gov/div898/handbook/pmc/section4/pmc44.htm) ಬಳಸಿ ARIMA ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸುವಿರಿ, ಇದು ಸಮಯದೊಂದಿಗೆ ಮೌಲ್ಯ ಬದಲಾಗುವ ಒಂದು ಚರವನ್ನು ಗಮನಿಸುತ್ತದೆ. ಈ ರೀತಿಯ ಡೇಟಾದ ಉದಾಹರಣೆ [ಈ ಡೇಟಾಸೆಟ್](https://itl.nist.gov/div898/handbook/pmc/section4/pmc4411.htm) ಆಗಿದ್ದು, ಇದು ಮಾಉನಾ ಲೋಆ ವೀಕ್ಷಣಾಲಯದಲ್ಲಿ ಮಾಸಿಕ CO2 ಸಾಂದ್ರತೆಯನ್ನು ದಾಖಲಿಸುತ್ತದೆ: + +| CO2 | YearMonth | Year | Month | +| :----: | :-------: | :---: | :---: | +| 330.62 | 1975.04 | 1975 | 1 | +| 331.40 | 1975.13 | 1975 | 2 | +| 331.87 | 1975.21 | 1975 | 3 | +| 333.18 | 1975.29 | 1975 | 4 | +| 333.92 | 1975.38 | 1975 | 5 | +| 333.43 | 1975.46 | 1975 | 6 | +| 331.85 | 1975.54 | 1975 | 7 | +| 330.01 | 1975.63 | 1975 | 8 | +| 328.51 | 1975.71 | 1975 | 9 | +| 328.41 | 1975.79 | 1975 | 10 | +| 329.25 | 1975.88 | 1975 | 11 | +| 330.97 | 1975.96 | 1975 | 12 | + +✅ ಈ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಸಮಯದೊಂದಿಗೆ ಬದಲಾಗುವ ಚರವನ್ನು ಗುರುತಿಸಿ + +## ಗಮನಿಸಬೇಕಾದ ಕಾಲ ಸರಣಿ ಡೇಟಾ ಲಕ್ಷಣಗಳು + +ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ನೋಡಿದಾಗ, ಅದರಲ್ಲಿ [ನಿರ್ದಿಷ್ಟ ಲಕ್ಷಣಗಳು](https://online.stat.psu.edu/stat510/lesson/1/1.1) ಇವೆಂದು ನೀವು ಗಮನಿಸಬಹುದು, ಅವುಗಳನ್ನು ಗಮನದಲ್ಲಿಟ್ಟುಕೊಂಡು ಅವುಗಳ ಮಾದರಿಗಳನ್ನು ಉತ್ತಮವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ನೀವು ಅವುಗಳನ್ನು ತಗ್ಗಿಸಬೇಕಾಗಬಹುದು. ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ನೀವು ವಿಶ್ಲೇಷಿಸಲು ಬಯಸುವ 'ಸಿಗ್ನಲ್' ಎಂದು ಪರಿಗಣಿಸಿದರೆ, ಈ ಲಕ್ಷಣಗಳನ್ನು 'ಶಬ್ದ' ಎಂದು ಭಾವಿಸಬಹುದು. ಈ 'ಶಬ್ದ' ಅನ್ನು ಕೆಲವು ಸಾಂಖ್ಯಿಕ ತಂತ್ರಗಳನ್ನು ಬಳಸಿ ಕಡಿಮೆ ಮಾಡಬೇಕಾಗಬಹುದು. + +ಕಾಲ ಸರಣಿಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ನೀವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಕೆಲವು ಪರಿಕಲ್ಪನೆಗಳು ಇಲ್ಲಿವೆ: + +🎓 **ಪ್ರವೃತ್ತಿಗಳು** + +ಪ್ರವೃತ್ತಿಗಳು ಎಂದರೆ ಸಮಯದೊಂದಿಗೆ ಅಳೆಯಬಹುದಾದ ಏರಿಕೆ ಮತ್ತು ಇಳಿಕೆಗಳು. [ಇನ್ನಷ್ಟು ಓದಿ](https://machinelearningmastery.com/time-series-trends-in-python). ಕಾಲ ಸರಣಿಯ ಸನ್ನಿವೇಶದಲ್ಲಿ, ನಿಮ್ಮ ಕಾಲ ಸರಣಿಯಿಂದ ಪ್ರವೃತ್ತಿಗಳನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಮತ್ತು ಅಗತ್ಯವಿದ್ದರೆ ತೆಗೆದುಹಾಕುವುದು. + +🎓 **[ಹಂಗಾಮಿ ಪ್ರಭಾವ](https://machinelearningmastery.com/time-series-seasonality-with-python/)** + +ಹಂಗಾಮಿ ಪ್ರಭಾವ ಎಂದರೆ ಹಬ್ಬದ ಸಮಯದ ವ್ಯಾಪಾರ ಹೆಚ್ಚಳದಂತಹ ನಿಯಮಿತ ಅಸ್ಥಿರತೆಗಳು. [ನೋಡಿ](https://itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm) ವಿವಿಧ ರೀತಿಯ ಪ್ಲಾಟ್‌ಗಳು ಡೇಟಾದಲ್ಲಿ ಹಂಗಾಮಿ ಪ್ರಭಾವವನ್ನು ಹೇಗೆ ತೋರಿಸುತ್ತವೆ. + +🎓 **ಅಸಾಮಾನ್ಯ ಮೌಲ್ಯಗಳು** + +ಅಸಾಮಾನ್ಯ ಮೌಲ್ಯಗಳು ಸಾಮಾನ್ಯ ಡೇಟಾ ವ್ಯತ್ಯಾಸದಿಂದ ಬಹಳ ದೂರದಲ್ಲಿರುತ್ತವೆ. + +🎓 **ದೀರ್ಘಾವಧಿ ಚಕ್ರ** + +ಹಂಗಾಮಿ ಪ್ರಭಾವದಿಂದ ಸ್ವತಂತ್ರವಾಗಿ, ಡೇಟಾ ದೀರ್ಘಾವಧಿ ಚಕ್ರವನ್ನು ತೋರಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ ಒಂದು ವರ್ಷಕ್ಕಿಂತ ಹೆಚ್ಚು ಕಾಲ ಇರುವ ಆರ್ಥಿಕ ಕುಸಿತ. + +🎓 **ಸ್ಥಿರ ವ್ಯತ್ಯಾಸ** + +ಸಮಯದೊಂದಿಗೆ, ಕೆಲವು ಡೇಟಾ ಸ್ಥಿರ ಅಸ್ಥಿರತೆಗಳನ್ನು ತೋರಿಸುತ್ತವೆ, ಉದಾಹರಣೆಗೆ ದಿನ ಮತ್ತು ರಾತ್ರಿ ಎನರ್ಜಿ ಬಳಕೆ. + +🎓 **ಅಕಸ್ಮಾತ್ ಬದಲಾವಣೆಗಳು** + +ಡೇಟಾ ಅಕಸ್ಮಾತ್ ಬದಲಾವಣೆಯನ್ನು ತೋರಿಸಬಹುದು, ಇದಕ್ಕೆ ಹೆಚ್ಚಿನ ವಿಶ್ಲೇಷಣೆ ಬೇಕಾಗಬಹುದು. ಉದಾಹರಣೆಗೆ COVID ಕಾರಣದಿಂದ ವ್ಯವಹಾರಗಳ ಅಕಸ್ಮಾತ್ ಮುಚ್ಚುವಿಕೆ ಡೇಟಾದಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನುಂಟುಮಾಡಿತು. + +✅ ಇಲ್ಲಿ [ನಮೂನಾ ಕಾಲ ಸರಣಿ ಪ್ಲಾಟ್](https://www.kaggle.com/kashnitsky/topic-9-part-1-time-series-analysis-in-python) ಇದೆ, ಇದು ಕೆಲವು ವರ್ಷಗಳ ಕಾಲ ದಿನನಿತ್ಯದ ಆಟದ ಕರೆನ್ಸಿ ಖರ್ಚನ್ನು ತೋರಿಸುತ್ತದೆ. ಈ ಡೇಟಾದಲ್ಲಿ ಮೇಲ್ಕಂಡ ಲಕ್ಷಣಗಳಲ್ಲಿ ಯಾವುದಾದರೂ ಗುರುತಿಸಬಹುದೇ? + +![ಆಟದ ಕರೆನ್ಸಿ ಖರ್ಚು](../../../../translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.kn.png) + +## ಅಭ್ಯಾಸ - ವಿದ್ಯುತ್ ಬಳಕೆ ಡೇಟಾ ಮೂಲಕ ಪ್ರಾರಂಭಿಸುವುದು + +ಹಿಂದಿನ ಬಳಕೆಯನ್ನು ಆಧರಿಸಿ ಭವಿಷ್ಯದ ವಿದ್ಯುತ್ ಬಳಕೆಯನ್ನು ಊಹಿಸಲು ಕಾಲ ಸರಣಿ ಮಾದರಿಯನ್ನು ರಚಿಸುವುದನ್ನು ಪ್ರಾರಂಭಿಸೋಣ. + +> ಈ ಉದಾಹರಣೆಯ ಡೇಟಾ GEFCom2014 ಭವಿಷ್ಯವಾಣಿ ಸ್ಪರ್ಧೆಯಿಂದ ತೆಗೆದುಕೊಂಡಿದೆ. ಇದು 2012 ರಿಂದ 2014 ರವರೆಗೆ 3 ವರ್ಷಗಳ ಗಂಟೆಗಟ್ಟಲೆ ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. +> +> ಟಾವ್ ಹಾಂಗ್, ಪಿಯೆರ್ರೆ ಪಿನ್ಸನ್, ಶು ಫಾನ್, ಹಮಿದ್ರೆಜಾ ಜರೆಪೌರ್, ಅಲ್ಬೆರ್ಟೋ ಟ್ರೊಕೊಲ್ಲಿ ಮತ್ತು ರಾಬ್ ಜೆ. ಹಿಂಡ್ಮನ್, "ಪ್ರಾಬಬಿಲಿಸ್ಟಿಕ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್: ಗ್ಲೋಬಲ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್ ಸ್ಪರ್ಧೆ 2014 ಮತ್ತು ಮುಂದಿನದು", ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಜರ್ನಲ್ ಆಫ್ ಫೋರ್ಕಾಸ್ಟಿಂಗ್, ವಾಲ್ಯೂಮ್ 32, ಸಂಖ್ಯೆ 3, ಪುಟಗಳು 896-913, ಜುಲೈ-ಸೆಪ್ಟೆಂಬರ್, 2016. + +1. ಈ ಪಾಠದ `working` ಫೋಲ್ಡರ್‌ನಲ್ಲಿ _notebook.ipynb_ ಫೈಲ್ ತೆರೆಯಿರಿ. ಡೇಟಾ ಲೋಡ್ ಮತ್ತು ದೃಶ್ಯೀಕರಣಕ್ಕೆ ಸಹಾಯ ಮಾಡುವ ಲೈಬ್ರರಿಗಳನ್ನು ಸೇರಿಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸಿ + + ```python + import os + import matplotlib.pyplot as plt + from common.utils import load_data + %matplotlib inline + ``` + + ಗಮನಿಸಿ, ನೀವು ಒಳಗೊಂಡಿರುವ `common` ಫೋಲ್ಡರ್‌ನ ಫೈಲ್‌ಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದೀರಿ, ಇದು ನಿಮ್ಮ ಪರಿಸರವನ್ನು ಸಿದ್ಧಪಡಿಸುತ್ತದೆ ಮತ್ತು ಡೇಟಾ ಡೌನ್‌ಲೋಡ್ ಮಾಡುವುದನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. + +2. ನಂತರ, `load_data()` ಮತ್ತು `head()` ಅನ್ನು ಕರೆಸಿ ಡೇಟಾವನ್ನು ಡೇಟಾಫ್ರೇಮ್ ಆಗಿ ಪರಿಶೀಲಿಸಿ: + + ```python + data_dir = './data' + energy = load_data(data_dir)[['load']] + energy.head() + ``` + + ನೀವು ದಿನಾಂಕ ಮತ್ತು ಲೋಡ್ ಅನ್ನು ಪ್ರತಿನಿಧಿಸುವ ಎರಡು ಕಾಲಮ್‌ಗಳಿವೆ ಎಂದು ನೋಡಬಹುದು: + + | | load | + | :-----------------: | :----: | + | 2012-01-01 00:00:00 | 2698.0 | + | 2012-01-01 01:00:00 | 2558.0 | + | 2012-01-01 02:00:00 | 2444.0 | + | 2012-01-01 03:00:00 | 2402.0 | + | 2012-01-01 04:00:00 | 2403.0 | + +3. ಈಗ, `plot()` ಅನ್ನು ಕರೆಸಿ ಡೇಟಾವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ: + + ```python + energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![energy plot](../../../../translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.kn.png) + +4. ಈಗ, 2014 ರ ಜುಲೈ ಮೊದಲ ವಾರವನ್ನು `[from date]: [to date]` ಮಾದರಿಯಲ್ಲಿ `energy` ಗೆ ಇನ್ಪುಟ್ ನೀಡುವ ಮೂಲಕ ಪ್ಲಾಟ್ ಮಾಡಿ: + + ```python + energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![july](../../../../translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.kn.png) + + ಅದ್ಭುತವಾದ ಪ್ಲಾಟ್! ಈ ಪ್ಲಾಟ್‌ಗಳನ್ನು ನೋಡಿ ಮೇಲ್ಕಂಡ ಲಕ್ಷಣಗಳಲ್ಲಿ ಯಾವುದಾದರೂ ನೀವು ಗುರುತಿಸಬಹುದೇ? ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವ ಮೂಲಕ ನಾವು ಏನು ಊಹಿಸಬಹುದು? + +ಮುಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು ARIMA ಮಾದರಿಯನ್ನು ರಚಿಸಿ ಕೆಲವು ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡುತ್ತೀರಿ. + +--- + +## 🚀ಸವಾಲು + +ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿಯಿಂದ ಲಾಭ ಪಡೆಯಬಹುದಾದ ಎಲ್ಲಾ ಕೈಗಾರಿಕೆಗಳು ಮತ್ತು ವಿಚಾರಣಾ ಕ್ಷೇತ್ರಗಳ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ. ಈ ತಂತ್ರಗಳನ್ನು ಕಲೆಯಲ್ಲಿಯೂ ಅನ್ವಯಿಸಬಹುದೇ? ಆರ್ಥಿಕಶಾಸ್ತ್ರದಲ್ಲಿ? ಪರಿಸರಶಾಸ್ತ್ರದಲ್ಲಿ? ಚಿಲ್ಲರೆ ವ್ಯಾಪಾರದಲ್ಲಿ? ಕೈಗಾರಿಕೆಯಲ್ಲಿ? ಹಣಕಾಸಿನಲ್ಲಿ? ಇನ್ನೆಲ್ಲಿ? + +## [ಪೋಸ್ಟ್-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಇಲ್ಲಿ ನಾವು ಅವುಗಳನ್ನು ಒಳಗೊಂಡಿಲ್ಲದಿದ್ದರೂ, ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಕೆಲವೊಮ್ಮೆ ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಯ ಕ್ಲಾಸಿಕ್ ವಿಧಾನಗಳನ್ನು ಸುಧಾರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಅವುಗಳ ಬಗ್ಗೆ [ಈ ಲೇಖನದಲ್ಲಿ](https://medium.com/microsoftazure/neural-networks-for-forecasting-financial-and-economic-time-series-6aca370ff412) ಇನ್ನಷ್ಟು ಓದಿ + +## ಹವಾಲೆ + +[ಇನ್ನಷ್ಟು ಕಾಲ ಸರಣಿಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/1-Introduction/assignment.md b/translations/kn/7-TimeSeries/1-Introduction/assignment.md new file mode 100644 index 000000000..6a2f6f38b --- /dev/null +++ b/translations/kn/7-TimeSeries/1-Introduction/assignment.md @@ -0,0 +1,27 @@ + +# ಇನ್ನಷ್ಟು ಕಾಲ ಸರಣಿಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಿ + +## ಸೂಚನೆಗಳು + +ನೀವು ಈ ವಿಶೇಷ ಮಾದರಿಯನ್ನು ಅಗತ್ಯವಿರುವ ಡೇಟಾ ಪ್ರಕಾರವನ್ನು ನೋಡಿ ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ ಬಗ್ಗೆ ಕಲಿಯಲು ಪ್ರಾರಂಭಿಸಿದ್ದೀರಿ. ನೀವು ಶಕ್ತಿ ಸುತ್ತಲೂ ಕೆಲವು ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಿದ್ದೀರಿ. ಈಗ, ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಯಿಂದ ಲಾಭ ಪಡೆಯಬಹುದಾದ ಇನ್ನಷ್ಟು ಡೇಟಾವನ್ನು ಹುಡುಕಿ. ಮೂರು ಉದಾಹರಣೆಗಳನ್ನು ಕಂಡುಹಿಡಿದು (ಪ್ರಯತ್ನಿಸಿ [Kaggle](https://kaggle.com) ಮತ್ತು [Azure Open Datasets](https://azure.microsoft.com/en-us/services/open-datasets/catalog/?WT.mc_id=academic-77952-leestott)) ಅವುಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಒಂದು ನೋಟ್ಬುಕ್ ರಚಿಸಿ. ಅವುಗಳಲ್ಲಿ ಇರುವ ಯಾವುದೇ ವಿಶೇಷ ಲಕ್ಷಣಗಳನ್ನು (ಹಂಗಾಮಿ, ತೀವ್ರ ಬದಲಾವಣೆಗಳು, ಅಥವಾ ಇತರ ಪ್ರವೃತ್ತಿಗಳು) ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಸೂಚಿಸಿ. + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾತ್ತ | ಸಮರ್ಪಕ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | ------------------------------------------------------ | ---------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| | ಮೂರು ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಚಿತ್ರಿಸಿ ಮತ್ತು ವಿವರಿಸಲಾಗಿದೆ | ಎರಡು ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಚಿತ್ರಿಸಿ ಮತ್ತು ವಿವರಿಸಲಾಗಿದೆ | ಕೆಲವು ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ಮಾತ್ರ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಚಿತ್ರಿಸಲಾಗಿದೆ ಅಥವಾ ವಿವರಿಸಲಾಗಿದೆ ಅಥವಾ ನೀಡಲಾದ ಡೇಟಾ ಅಪರ್ಯಾಪ್ತವಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/1-Introduction/solution/Julia/README.md b/translations/kn/7-TimeSeries/1-Introduction/solution/Julia/README.md new file mode 100644 index 000000000..88cb4a274 --- /dev/null +++ b/translations/kn/7-TimeSeries/1-Introduction/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/1-Introduction/solution/R/README.md b/translations/kn/7-TimeSeries/1-Introduction/solution/R/README.md new file mode 100644 index 000000000..8352a0509 --- /dev/null +++ b/translations/kn/7-TimeSeries/1-Introduction/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/1-Introduction/solution/notebook.ipynb b/translations/kn/7-TimeSeries/1-Introduction/solution/notebook.ipynb new file mode 100644 index 000000000..2da779d9d --- /dev/null +++ b/translations/kn/7-TimeSeries/1-Introduction/solution/notebook.ipynb @@ -0,0 +1,172 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ಡೇಟಾ ಸೆಟ್ ಅಪ್\n", + "\n", + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ, ನಾವು ಹೇಗೆ:\n", + "- ಈ ಮೋಡ್ಯೂಲ್‌ಗಾಗಿ ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ಸೆಟ್ ಅಪ್ ಮಾಡುವುದು\n", + "- ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವುದು\n", + "\n", + "ಈ ಉದಾಹರಣೆಯಲ್ಲಿನ ಡೇಟಾ GEFCom2014 ಮುನ್ಸೂಚನಾ ಸ್ಪರ್ಧೆಯಿಂದ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ1. ಇದು 2012 ಮತ್ತು 2014 ರ ನಡುವೆ 3 ವರ್ಷಗಳ ಗಂಟೆಗಂಟೆಯ ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.\n", + "\n", + "1ಟಾವ್ ಹಾಂಗ್, ಪಿಯೆರ್ರೆ ಪಿನ್ಸನ್, ಶು ಫ್ಯಾನ್, ಹಮಿದ್ರೆಜಾ ಜರೆಪೌರ್, ಅಲ್ಬೆರ್ಟೋ ಟ್ರೊಕೋಲ್ಲಿ ಮತ್ತು ರಾಬ್ ಜೆ. ಹಿಂಡ್ಮನ್, \"ಪ್ರಾಬಬಿಲಿಸ್ಟಿಕ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್: ಗ್ಲೋಬಲ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್ ಸ್ಪರ್ಧೆ 2014 ಮತ್ತು ನಂತರ\", ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಜರ್ನಲ್ ಆಫ್ ಫೋರ್ಕಾಸ್ಟಿಂಗ್, ವಾಲ್ಯೂಮ್ 32, ಸಂಖ್ಯೆ 3, ಪುಟಗಳು 896-913, ಜುಲೈ-ಸೆಪ್ಟೆಂಬರ್, 2016.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import matplotlib.pyplot as plt\n", + "from common.utils import load_data\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "csv ನಿಂದ ಡೇಟಾವನ್ನು Pandas ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಲೋಡ್ ಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2698.0\n", + "2012-01-01 01:00:00 2558.0\n", + "2012-01-01 02:00:00 2444.0\n", + "2012-01-01 03:00:00 2402.0\n", + "2012-01-01 04:00:00 2403.0" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
load
2012-01-01 00:00:002698.0
2012-01-01 01:00:002558.0
2012-01-01 02:00:002444.0
2012-01-01 03:00:002402.0
2012-01-01 04:00:002403.0
\n
" + }, + "metadata": {}, + "execution_count": 7 + } + ], + "source": [ + "data_dir = './data'\n", + "energy = load_data(data_dir)[['load']]\n", + "energy.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಎಲ್ಲಾ ಲಭ್ಯವಿರುವ ಲೋಡ್ ಡೇಟಾವನ್ನು (ಜನವರಿ 2012 ರಿಂದ ಡಿಸೆಂಬರ್ 2014) ಚಿತ್ರಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2014ರ ಜುಲೈ ಮೊದಲ ವಾರವನ್ನು ರೇಖಾಚಿತ್ರಗೊಳಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAHiCAYAAABFgonlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXhb5ZU/8O+r3bYkO7bl3YljZ3dCnJBASCCQFkqBgUDpBrRMZ6YLMJ2l26/TTjtDmelMp09nOtNOaUt31tKFtRToQAkpSUhIiJPY2Z14X+VFkiVL1vL+/pBkjHESL5Ku7r3fz/P4IbF07z1Gsa1z3/OeI6SUICIiIiIiIgIAg9IBEBERERERUfZgkkhEREREREQTmCQSERERERHRBCaJRERERERENIFJIhEREREREU1gkkhEREREREQTTEoHoITi4mJZU1OjdBhERERERESKOHDggFtK6ZruMV0miTU1Ndi/f7/SYRARERERESlCCNF2rsdYbkpEREREREQTmCQSERERERHRBCaJRERERERENEGXexKJiIiIiIgAIBwOo7OzE8FgUOlQ0sJms6Gqqgpms3nGxzBJJCIiIiIi3ers7ITD4UBNTQ2EEEqHk1JSSgwODqKzsxOLFy+e8XEsNyUiIiIiIt0KBoMoKirSXIIIAEIIFBUVzXqVlEkiERERERHpmhYTxKS5fG1MEomIiIiIiBRkt9tTcp57770X3/rWt+Z9HiaJRERERERENIFJIhERERERURaQUuILX/gCVq9ejTVr1uDxxx8HAIyOjuLd73431q9fjzVr1uDpp5+eOObrX/86li1bhssvvxwnTpxISRzsbkpERERERATga88242i3N6XnXFXhxD/fWD+j5z7xxBNobGzEoUOH4Ha7sXHjRmzduhUulwtPPvkknE4n3G43Nm3ahJtuuglvvvkmfvnLX6KxsRGRSATr16/HxRdfPO+YuZJIRERERESUBV577TXcdtttMBqNKC0txZVXXok33ngDUkp8+ctfxkUXXYSrr74aXV1d6Ovrw5/+9CfccsstyM3NhdPpxE033ZSSOLiSSEREREREBMx4xS/THnnkEQwMDODAgQMwm82oqamZ9ViL2eBKIhERERERURa44oor8PjjjyMajWJgYAA7d+7EJZdcAo/Hg5KSEpjNZrzy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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "kernel_info": { + "name": "python3" + }, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "dddca9ad9e34435494e0933c218e1579", + "translation_date": "2025-12-19T17:37:19+00:00", + "source_file": "7-TimeSeries/1-Introduction/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/1-Introduction/working/notebook.ipynb b/translations/kn/7-TimeSeries/1-Introduction/working/notebook.ipynb new file mode 100644 index 000000000..44122fd6a --- /dev/null +++ b/translations/kn/7-TimeSeries/1-Introduction/working/notebook.ipynb @@ -0,0 +1,63 @@ +{ + "cells": [ + { + "source": [ + "# ಡೇಟಾ ಸೆಟ್ ಅಪ್\n", + "\n", + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ, ನಾವು ಹೇಗೆ ಮಾಡುವುದು ಎಂದು ತೋರಿಸುತ್ತೇವೆ:\n", + "\n", + "ಈ ಮೋಡ್ಯೂಲ್‌ಗಾಗಿ ಕಾಲ ಸರಣಿಯ ಡೇಟಾವನ್ನು ಸೆಟ್ ಅಪ್ ಮಾಡುವುದು\n", + "ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವುದು\n", + "ಈ ಉದಾಹರಣೆಯಲ್ಲಿನ ಡೇಟಾ GEFCom2014 ಮುನ್ಸೂಚನಾ ಸ್ಪರ್ಧೆಯಿಂದ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ1. ಇದು 2012 ಮತ್ತು 2014 ರ ನಡುವೆ 3 ವರ್ಷಗಳ ಗಂಟೆಗಂಟೆಯ ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.\n", + "\n", + "1ಟಾವ್ ಹಾಂಗ್, ಪಿಯೆರ್ರೆ ಪಿನ್ಸನ್, ಶು ಫ್ಯಾನ್, ಹಮಿದ್ರೆಜಾ ಜರೆಪೌರ್, ಅಲ್ಬೆರ್ಟೋ ಟ್ರೊಕೋಲ್ಲಿ ಮತ್ತು ರಾಬ್ ಜೆ. ಹಿಂಡ್ಮನ್, \"ಪ್ರಾಬಬಿಲಿಸ್ಟಿಕ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್: ಗ್ಲೋಬಲ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್ ಸ್ಪರ್ಧೆ 2014 ಮತ್ತು ಮುಂದಿನ ಕಾಲ\", ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಜರ್ನಲ್ ಆಫ್ ಫೋರ್ಕಾಸ್ಟಿಂಗ್, ವಾಲ್ಯೂಮ್ 32, ಸಂಖ್ಯೆ 3, ಪುಟಗಳು 896-913, ಜುಲೈ-ಸೆಪ್ಟೆಂಬರ್, 2016.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "kernel_info": { + "name": "python3" + }, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "5e2bbe594906dce3aaaa736d6dac6683", + "translation_date": "2025-12-19T17:36:37+00:00", + "source_file": "7-TimeSeries/1-Introduction/working/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/2-ARIMA/README.md b/translations/kn/7-TimeSeries/2-ARIMA/README.md new file mode 100644 index 000000000..82354cbd7 --- /dev/null +++ b/translations/kn/7-TimeSeries/2-ARIMA/README.md @@ -0,0 +1,409 @@ + +# ARIMA ಬಳಸಿ ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿ + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ತಿಳಿದುಕೊಂಡಿದ್ದೀರಿ ಮತ್ತು ಒಂದು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿದ್ದೀರಿ, ಅದು ಒಂದು ಕಾಲಾವಧಿಯಲ್ಲಿ ವಿದ್ಯುತ್ ಲೋಡ್‌ನ ಅಸ್ಥಿರತೆಯನ್ನು ತೋರಿಸುತ್ತದೆ. + +[![ARIMA ಗೆ ಪರಿಚಯ](https://img.youtube.com/vi/IUSk-YDau10/0.jpg)](https://youtu.be/IUSk-YDau10 "ARIMA ಗೆ ಪರಿಚಯ") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋ ನೋಡಿ: ARIMA ಮಾದರಿಗಳ ಸಂಕ್ಷಿಪ್ತ ಪರಿಚಯ. ಉದಾಹರಣೆ R ನಲ್ಲಿ ಮಾಡಲಾಗಿದೆ, ಆದರೆ ತತ್ವಗಳು ಸರ್ವತ್ರ ಅನ್ವಯವಾಗುತ್ತವೆ. + +## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ಪರಿಚಯ + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು [ARIMA: *A*uto*R*egressive *I*ntegrated *M*oving *A*verage](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average) ಬಳಸಿ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವ ವಿಶೇಷ ವಿಧಾನವನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ. ARIMA ಮಾದರಿಗಳು ವಿಶೇಷವಾಗಿ [ನಾನ್-ಸ್ಟೇಷನರಿ](https://wikipedia.org/wiki/Stationary_process) ಆಗಿರುವ ಡೇಟಾಗೆ ಹೊಂದಿಕೊಳ್ಳಲು ಸೂಕ್ತವಾಗಿವೆ. + +## ಸಾಮಾನ್ಯ ತತ್ವಗಳು + +ARIMA ಜೊತೆ ಕೆಲಸ ಮಾಡಲು, ನೀವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಕೆಲವು ತತ್ವಗಳಿವೆ: + +- 🎓 **ಸ್ಟೇಷನರಿ**. ಸಾಂಖ್ಯಿಕ ದೃಷ್ಟಿಕೋನದಿಂದ, ಸ್ಟೇಷನರಿ ಎಂದರೆ ಕಾಲದಲ್ಲಿ ಸರಿದೂಗಿಸಿದಾಗ ಡೇಟಾದ ವಿತರಣೆಯು ಬದಲಾಗದಿರುವುದು. ನಾನ್-ಸ್ಟೇಷನರಿ ಡೇಟಾ ಎಂದರೆ, ವಿಶ್ಲೇಷಿಸಲು ಪರಿವರ್ತನೆ ಮಾಡಬೇಕಾದ ಪ್ರವೃತ್ತಿಗಳಿಂದ ಅಸ್ಥಿರತೆ ತೋರಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಋತುವಿನ ಪ್ರಭಾವದಿಂದ ಡೇಟಾದಲ್ಲಿ ಅಸ್ಥಿರತೆ ಉಂಟಾಗಬಹುದು ಮತ್ತು ಅದನ್ನು 'seasonal-differencing' ಪ್ರಕ್ರಿಯೆಯಿಂದ ತೆಗೆದುಹಾಕಬಹುದು. + +- 🎓 **[ಡಿಫರೆನ್ಸಿಂಗ್](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**. ಡಿಫರೆನ್ಸಿಂಗ್ ಎಂದರೆ, ನಾನ್-ಸ್ಟೇಷನರಿ ಡೇಟಾವನ್ನು ಅದರ ಅಸ್ಥಿರ ಪ್ರವೃತ್ತಿಯನ್ನು ತೆಗೆದುಹಾಕಿ ಸ್ಟೇಷನರಿ ಮಾಡಲು ಪರಿವರ್ತಿಸುವ ಪ್ರಕ್ರಿಯೆ. "ಡಿಫರೆನ್ಸಿಂಗ್ ಕಾಲ ಸರಣಿಯ ಮಟ್ಟದಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ, ಪ್ರವೃತ್ತಿ ಮತ್ತು ಋತುವಿನ ಅಸ್ಥಿರತೆಯನ್ನು ನಿವಾರಣೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಪರಿಣಾಮವಾಗಿ ಕಾಲ ಸರಣಿಯ ಸರಾಸರಿಯನ್ನು ಸ್ಥಿರಗೊಳಿಸುತ್ತದೆ." [ಶಿಕ್ಷಾಂಗ್ ಇತ್ಯಾದಿಗಳ ಪತ್ರಿಕೆ](https://arxiv.org/abs/1904.07632) + +## ಕಾಲ ಸರಣಿಯ ಸನ್ನಿವೇಶದಲ್ಲಿ ARIMA + +ARIMA ಭಾಗಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ, ಅದು ಕಾಲ ಸರಣಿಯನ್ನು ಹೇಗೆ ಮಾದರಿಮಾಡಲು ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ತಿಳಿದುಕೊಳ್ಳೋಣ. + +- **AR - AutoRegressive**. Autoregressive ಮಾದರಿಗಳು, ಹೆಸರಿನಂತೆ, ನಿಮ್ಮ ಡೇಟಾದ ಹಿಂದಿನ ಮೌಲ್ಯಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಲು 'ಹಿಂದಕ್ಕೆ' ನೋಡುತ್ತವೆ ಮತ್ತು ಅವುಗಳ ಬಗ್ಗೆ ಊಹೆ ಮಾಡುತ್ತವೆ. ಈ ಹಿಂದಿನ ಮೌಲ್ಯಗಳನ್ನು 'ಲ್ಯಾಗ್'ಗಳು ಎಂದು ಕರೆಯುತ್ತಾರೆ. ಉದಾಹರಣೆಗೆ, ಪೆನ್ಸಿಲ್ ಮಾರಾಟದ ಮಾಸಿಕ ಡೇಟಾ. ಪ್ರತಿ ತಿಂಗಳ ಮಾರಾಟ ಮೊತ್ತವನ್ನು 'ವಿಕಸಿಸುತ್ತಿರುವ ಚರ' ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಈ ಮಾದರಿ "ವಿಕಸಿಸುತ್ತಿರುವ ಚರವು ತನ್ನ ಸ್ವಂತ ಲ್ಯಾಗ್ (ಹಿಂದಿನ) ಮೌಲ್ಯಗಳ ಮೇಲೆ ರಿಗ್ರೆಶನ್ ಆಗುತ್ತದೆ." [ವಿಕಿಪೀಡಿಯ](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average) + +- **I - Integrated**. ARMA ಮಾದರಿಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ARIMA ಯಲ್ಲಿರುವ 'I' ಅದರ *[ಒಕ್ಕೂಟ](https://wikipedia.org/wiki/Order_of_integration)* ಅಂಶವನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಡಿಫರೆನ್ಸಿಂಗ್ ಹಂತಗಳನ್ನು ಅನ್ವಯಿಸುವ ಮೂಲಕ ಡೇಟಾ 'ಒಕ್ಕೂಟ' ಆಗುತ್ತದೆ ಮತ್ತು ನಾನ್-ಸ್ಟೇಷನರಿ ಅಸ್ಥಿರತೆಯನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. + +- **MA - Moving Average**. ಈ ಮಾದರಿಯ [moving-average](https://wikipedia.org/wiki/Moving-average_model) ಅಂಶವು ಲ್ಯಾಗ್‌ಗಳ ಪ್ರಸ್ತುತ ಮತ್ತು ಹಿಂದಿನ ಮೌಲ್ಯಗಳನ್ನು ಗಮನಿಸಿ ನಿರ್ಧರಿಸಲಾದ ಔಟ್‌ಪುಟ್ ಚರವನ್ನು ಸೂಚಿಸುತ್ತದೆ. + +ಮುಖ್ಯಾಂಶ: ARIMA ವಿಶೇಷ ರೀತಿಯ ಕಾಲ ಸರಣಿ ಡೇಟಾಗೆ ಅತ್ಯಂತ ಸಮೀಪವಾಗಿ ಹೊಂದಿಕೊಳ್ಳಲು ಬಳಸಲಾಗುತ್ತದೆ. + +## ಅಭ್ಯಾಸ - ARIMA ಮಾದರಿ ನಿರ್ಮಿಸಿ + +ಈ ಪಾಠದಲ್ಲಿ [_/working_](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA/working) ಫೋಲ್ಡರ್ ತೆರೆಯಿರಿ ಮತ್ತು [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/7-TimeSeries/2-ARIMA/working/notebook.ipynb) ಫೈಲ್ ಅನ್ನು ಹುಡುಕಿ. + +1. `statsmodels` ಪೈಥಾನ್ ಲೈಬ್ರರಿಯನ್ನು ಲೋಡ್ ಮಾಡಲು ನೋಟ್ಬುಕ್ ಅನ್ನು ರನ್ ಮಾಡಿ; ARIMA ಮಾದರಿಗಳಿಗೆ ಇದನ್ನು ನೀವು ಬಳಸುತ್ತೀರಿ. + +1. ಅಗತ್ಯವಿರುವ ಲೈಬ್ರರಿಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ + +1. ಈಗ, ಡೇಟಾ ಪ್ಲಾಟ್ ಮಾಡಲು ಉಪಯುಕ್ತವಾದ ಇನ್ನಷ್ಟು ಲೈಬ್ರರಿಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ: + + ```python + import os + import warnings + import matplotlib.pyplot as plt + import numpy as np + import pandas as pd + import datetime as dt + import math + + from pandas.plotting import autocorrelation_plot + from statsmodels.tsa.statespace.sarimax import SARIMAX + from sklearn.preprocessing import MinMaxScaler + from common.utils import load_data, mape + from IPython.display import Image + + %matplotlib inline + pd.options.display.float_format = '{:,.2f}'.format + np.set_printoptions(precision=2) + warnings.filterwarnings("ignore") # ಎಚ್ಚರಿಕೆ ಸಂದೇಶಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಲು ಸೂಚಿಸಿ + ``` + +1. `/data/energy.csv` ಫೈಲ್‌ನಿಂದ ಡೇಟಾವನ್ನು ಪಾಂಡಾಸ್ ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ನೋಡಿ: + + ```python + energy = load_data('./data')[['load']] + energy.head(10) + ``` + +1. ಜನವರಿ 2012 ರಿಂದ ಡಿಸೆಂಬರ್ 2014 ರವರೆಗೆ ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಎನರ್ಜಿ ಡೇಟಾವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ. ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ನಾವು ಈ ಡೇಟಾವನ್ನು ನೋಡಿದ್ದೇವೆ, ಆದ್ದರಿಂದ ಯಾವುದೇ ಆಶ್ಚರ್ಯವಿಲ್ಲ: + + ```python + energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ಈಗ, ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸೋಣ! + +### ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ರಚಿಸಿ + +ನಿಮ್ಮ ಡೇಟಾ ಲೋಡ್ ಆದ ಮೇಲೆ, ಅದನ್ನು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗಳಾಗಿ ವಿಭಜಿಸಬಹುದು. ನೀವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಸೆಟ್‌ನಲ್ಲಿ ತರಬೇತಿಮಾಡುತ್ತೀರಿ. ಸಾಮಾನ್ಯವಾಗಿ, ಮಾದರಿ ತರಬೇತಿ ಮುಗಿದ ನಂತರ, ನೀವು ಅದರ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಾ ಸೆಟ್ ಬಳಸಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತೀರಿ. ಪರೀಕ್ಷಾ ಸೆಟ್ ತರಬೇತಿ ಸೆಟ್‌ನ ನಂತರದ ಕಾಲಾವಧಿಯನ್ನು ಒಳಗೊಂಡಿರಬೇಕು, ಇದರಿಂದ ಮಾದರಿ ಭವಿಷ್ಯದ ಕಾಲಾವಧಿಗಳಿಂದ ಮಾಹಿತಿ ಪಡೆಯುವುದಿಲ್ಲ. + +1. 2014 ಸೆಪ್ಟೆಂಬರ್ 1 ರಿಂದ ಅಕ್ಟೋಬರ್ 31 ರವರೆಗೆ ಎರಡು ತಿಂಗಳ ಅವಧಿಯನ್ನು ತರಬೇತಿ ಸೆಟ್‌ಗೆ ಮೀಸಲಿಡಿ. ಪರೀಕ್ಷಾ ಸೆಟ್ 2014 ನವೆಂಬರ್ 1 ರಿಂದ ಡಿಸೆಂಬರ್ 31 ರವರೆಗೆ ಎರಡು ತಿಂಗಳ ಅವಧಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ: + + ```python + train_start_dt = '2014-11-01 00:00:00' + test_start_dt = '2014-12-30 00:00:00' + ``` + + ಈ ಡೇಟಾ ದೈನಂದಿನ ಎನರ್ಜಿ ಬಳಕೆಯನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವುದರಿಂದ, ಬಲವಾದ ಋತುವಿನ ಮಾದರಿಯಿದೆ, ಆದರೆ ಬಳಕೆ ಇತ್ತೀಚಿನ ದಿನಗಳ ಬಳಕೆಗೆ ಹೆಚ್ಚು ಸಮಾನವಾಗಿದೆ. + +1. ವ್ಯತ್ಯಾಸಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಿ: + + ```python + energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \ + .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \ + .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾ](../../../../translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.kn.png) + + ಆದ್ದರಿಂದ, ಡೇಟಾವನ್ನು ತರಬೇತಿಗೆ ಸಾಪೇಕ್ಷವಾಗಿ ಸಣ್ಣ ಕಾಲಾವಧಿ ವಿಂಡೋ ಬಳಸುವುದು ಸಾಕಾಗುತ್ತದೆ. + + > ಟಿಪ್ಪಣಿ: ARIMA ಮಾದರಿಯನ್ನು ಹೊಂದಿಸಲು ನಾವು ಬಳಸುವ ಫಂಕ್ಷನ್ ಫಿಟಿಂಗ್ ಸಮಯದಲ್ಲಿ ಇನ್-ಸ್ಯಾಂಪಲ್ ಮಾನ್ಯತೆ ಬಳಸುತ್ತದೆ, ಆದ್ದರಿಂದ ನಾವು ಮಾನ್ಯತೆ ಡೇಟಾವನ್ನು ಹೊರತುಪಡಿಸುತ್ತೇವೆ. + +### ತರಬೇತಿಗೆ ಡೇಟಾವನ್ನು ಸಿದ್ಧಪಡಿಸಿ + +ಈಗ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ಸ್ಕೇಲಿಂಗ್ ಮೂಲಕ ತರಬೇತಿಗೆ ಸಿದ್ಧಪಡಿಸಬೇಕು. ನೀವು ಬೇಕಾದ ಕಾಲಾವಧಿಗಳು ಮತ್ತು ಕಾಲಮ್‌ಗಳನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಂತೆ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿ, ಮತ್ತು ಡೇಟಾವನ್ನು 0,1 ನಡುವಿನ ಅಂತರಾಳದಲ್ಲಿ ಪ್ರಕ್ಷೇಪಿಸಲು ಸ್ಕೇಲ್ ಮಾಡಿ. + +1. ಮೂಲ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಮೇಲ್ಕಂಡ ಕಾಲಾವಧಿಗಳ ಪ್ರಕಾರ ಮತ್ತು 'load' ಮತ್ತು ದಿನಾಂಕ ಕಾಲಮ್‌ಗಳನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಂತೆ ಫಿಲ್ಟರ್ ಮಾಡಿ: + + ```python + train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']] + test = energy.copy()[energy.index >= test_start_dt][['load']] + + print('Training data shape: ', train.shape) + print('Test data shape: ', test.shape) + ``` + + ಡೇಟಾದ ಆಕಾರವನ್ನು ನೋಡಬಹುದು: + + ```output + Training data shape: (1416, 1) + Test data shape: (48, 1) + ``` + +1. ಡೇಟಾವನ್ನು (0, 1) ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಸ್ಕೇಲ್ ಮಾಡಿ. + + ```python + scaler = MinMaxScaler() + train['load'] = scaler.fit_transform(train) + train.head(10) + ``` + +1. ಮೂಲ ಮತ್ತು ಸ್ಕೇಲ್ಡ್ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಿ: + + ```python + energy[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']].rename(columns={'load':'original load'}).plot.hist(bins=100, fontsize=12) + train.rename(columns={'load':'scaled load'}).plot.hist(bins=100, fontsize=12) + plt.show() + ``` + + ![ಮೂಲ](../../../../translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.kn.png) + + > ಮೂಲ ಡೇಟಾ + + ![ಸ್ಕೇಲ್ಡ್](../../../../translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.kn.png) + + > ಸ್ಕೇಲ್ಡ್ ಡೇಟಾ + +1. ಈಗ ನೀವು ಸ್ಕೇಲ್ಡ್ ಡೇಟಾವನ್ನು ಕ್ಯಾಲಿಬ್ರೇಟ್ ಮಾಡಿದ್ದೀರಿ, ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ಸ್ಕೇಲ್ ಮಾಡಬಹುದು: + + ```python + test['load'] = scaler.transform(test) + test.head() + ``` + +### ARIMA ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ + +ARIMA ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಸಮಯ ಬಂದಿದೆ! ನೀವು ಈಗ ಮೊದಲು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದ `statsmodels` ಲೈಬ್ರರಿಯನ್ನು ಬಳಸುತ್ತೀರಿ. + +ಈಗ ನೀವು ಕೆಲವು ಹಂತಗಳನ್ನು ಅನುಸರಿಸಬೇಕು + + 1. `SARIMAX()` ಅನ್ನು ಕರೆ ಮಾಡಿ ಮತ್ತು ಮಾದರಿ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು p, d, q ಮತ್ತು P, D, Q ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಪಾಸ್ ಮಾಡಿ. + 2. ತರಬೇತಿ ಡೇಟಾ ಮೇಲೆ ಮಾದರಿಯನ್ನು ಸಿದ್ಧಪಡಿಸಲು fit() ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆ ಮಾಡಿ. + 3. `forecast()` ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆ ಮಾಡಿ ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಹಂತಗಳ ಸಂಖ್ಯೆ (ಹೋರೈಜನ್) ಅನ್ನು ಸೂಚಿಸಿ. + +> 🎓 ಈ ಎಲ್ಲಾ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಏಕೆ? ARIMA ಮಾದರಿಯಲ್ಲಿ ಮೂರು ಪ್ಯಾರಾಮೀಟರ್‌ಗಳಿವೆ, ಅವು ಕಾಲ ಸರಣಿಯ ಪ್ರಮುಖ ಅಂಶಗಳನ್ನು ಮಾದರಿಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ: ಋತುವಿನ ಪ್ರಭಾವ, ಪ್ರವೃತ್ತಿ ಮತ್ತು ಶಬ್ದ. ಈ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು: + +`p`: ಮಾದರಿಯ ಸ್ವಯಂ-ಪ್ರತಿಗಾಮಿ ಅಂಶಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಪ್ಯಾರಾಮೀಟರ್, ಇದು *ಹಿಂದಿನ* ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. +`d`: ಮಾದರಿಯ ಒಕ್ಕೂಟ ಭಾಗಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಪ್ಯಾರಾಮೀಟರ್, ಇದು ಕಾಲ ಸರಣಿಗೆ ಅನ್ವಯಿಸುವ *ಡಿಫರೆನ್ಸಿಂಗ್* (🎓 ಡಿಫರೆನ್ಸಿಂಗ್ ನೆನಪಿಸಿಕೊಳ್ಳಿ 👆) ಪ್ರಮಾಣವನ್ನು ಪ್ರಭಾವಿಸುತ್ತದೆ. +`q`: ಮಾದರಿಯ ಚಲಿಸುವ ಸರಾಸರಿ ಭಾಗಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಪ್ಯಾರಾಮೀಟರ್. + +> ಟಿಪ್ಪಣಿ: ನಿಮ್ಮ ಡೇಟಾದಲ್ಲಿ ಋತುವಿನ ಅಂಶವಿದ್ದರೆ - ಇದರಲ್ಲಿ ಇದೆ - ನಾವು ಋತುವಿನ ARIMA ಮಾದರಿಯನ್ನು (SARIMA) ಬಳಸುತ್ತೇವೆ. ಆ ಸಂದರ್ಭದಲ್ಲಿ ನೀವು ಇನ್ನೊಂದು ಪ್ಯಾರಾಮೀಟರ್ ಸೆಟ್ ಅನ್ನು ಬಳಸಬೇಕು: `P`, `D`, ಮತ್ತು `Q` , ಅವು `p`, `d`, ಮತ್ತು `q` ನಂತೆ ಸಂಬಂಧಿಸಿದವು, ಆದರೆ ಮಾದರಿಯ ಋತುವಿನ ಅಂಶಗಳಿಗೆ ಸಂಬಂಧಿಸಿದವು. + +1. ನಿಮ್ಮ ಇಚ್ಛಿತ ಹೋರೈಜನ್ ಮೌಲ್ಯವನ್ನು ಹೊಂದಿಸಿ. 3 ಗಂಟೆಗಳ ಪ್ರಯತ್ನ ಮಾಡೋಣ: + + ```python + # ಮುಂದಿನ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಹೆಜ್ಜೆಗಳ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ + HORIZON = 3 + print('Forecasting horizon:', HORIZON, 'hours') + ``` + + ARIMA ಮಾದರಿಯ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಉತ್ತಮ ಮೌಲ್ಯಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ಸವಾಲಿನಾಯಕವಾಗಬಹುದು ಏಕೆಂದರೆ ಇದು ಸ್ವಲ್ಪ ವಿಷಯಾತ್ಮಕ ಮತ್ತು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ನೀವು [`pyramid` ಲೈಬ್ರರಿಯಿಂದ](https://alkaline-ml.com/pmdarima/0.9.0/modules/generated/pyramid.arima.auto_arima.html) `auto_arima()` ಫಂಕ್ಷನ್ ಬಳಸುವುದನ್ನು ಪರಿಗಣಿಸಬಹುದು. + +1. ಈಗಾಗಲೇ ಕೆಲವು ಕೈಯಿಂದ ಆಯ್ಕೆಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ ಉತ್ತಮ ಮಾದರಿಯನ್ನು ಹುಡುಕಿ. + + ```python + order = (4, 1, 0) + seasonal_order = (1, 1, 0, 24) + + model = SARIMAX(endog=train, order=order, seasonal_order=seasonal_order) + results = model.fit() + + print(results.summary()) + ``` + + ಫಲಿತಾಂಶಗಳ ಟೇಬಲ್ ಮುದ್ರಿತವಾಗುತ್ತದೆ. + +ನೀವು ನಿಮ್ಮ ಮೊದಲ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ! ಈಗ ಅದನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವ ಮಾರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯಬೇಕು. + +### ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ + +ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು, ನೀವು 'walk forward' ಮಾನ್ಯತೆ ಎಂದು ಕರೆಯುವ ವಿಧಾನವನ್ನು ಅನುಸರಿಸಬಹುದು. ಪ್ರಾಯೋಗಿಕವಾಗಿ, ಕಾಲ ಸರಣಿ ಮಾದರಿಗಳನ್ನು ಪ್ರತಿ ಹೊಸ ಡೇಟಾ ಲಭ್ಯವಾಗುವಾಗ ಮರುತರಬೇತಿಮಾಡಲಾಗುತ್ತದೆ. ಇದರಿಂದ ಮಾದರಿ ಪ್ರತಿ ಕಾಲ ಹಂತದಲ್ಲಿ ಉತ್ತಮ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು. + +ಕಾಲ ಸರಣಿಯ ಆರಂಭದಿಂದ ಈ ತಂತ್ರವನ್ನು ಬಳಸಿ, ತರಬೇತಿ ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ. ನಂತರ ಮುಂದಿನ ಕಾಲ ಹಂತದ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ. ಭವಿಷ್ಯವಾಣಿ ತಿಳಿದಿರುವ ಮೌಲ್ಯಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡಲಾಗುತ್ತದೆ. ನಂತರ ತರಬೇತಿ ಸೆಟ್ ಅನ್ನು ತಿಳಿದಿರುವ ಮೌಲ್ಯವನ್ನು ಸೇರಿಸಿ ವಿಸ್ತರಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸಲಾಗುತ್ತದೆ. + +> ಟಿಪ್ಪಣಿ: ನೀವು ತರಬೇತಿ ಸೆಟ್ ವಿಂಡೋವನ್ನು ಸ್ಥಿರವಾಗಿರಿಸಬೇಕು, ಇದರಿಂದ ಪ್ರತಿ ಬಾರಿ ಹೊಸ ವೀಕ್ಷಣೆಯನ್ನು ಸೇರಿಸುವಾಗ, ಆರಂಭದ ವೀಕ್ಷಣೆಯನ್ನು ತೆಗೆದುಹಾಕಬಹುದು ಮತ್ತು ತರಬೇತಿ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗುತ್ತದೆ. + +ಈ ಪ್ರಕ್ರಿಯೆ ಮಾದರಿ ಪ್ರಾಯೋಗಿಕವಾಗಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದರ ಹೆಚ್ಚು ದೃಢವಾದ ಅಂದಾಜನ್ನು ನೀಡುತ್ತದೆ. ಆದರೆ, ಇದರಿಂದ ಅನೇಕ ಮಾದರಿಗಳನ್ನು ರಚಿಸುವ ಗಣನೆ ವೆಚ್ಚ ಬರುತ್ತದೆ. ಡೇಟಾ ಸಣ್ಣದಾಗಿದ್ದರೆ ಅಥವಾ ಮಾದರಿ ಸರಳವಾಗಿದ್ದರೆ ಇದು ಸ್ವೀಕಾರಾರ್ಹ, ಆದರೆ ದೊಡ್ಡ ಪ್ರಮಾಣದಲ್ಲಿ ಸಮಸ್ಯೆಯಾಗಬಹುದು. + +Walk-forward ಮಾನ್ಯತೆ ಕಾಲ ಸರಣಿ ಮಾದರಿಯ ಮೌಲ್ಯಮಾಪನದ ಚಿನ್ನದ ಮಾನದಂಡವಾಗಿದೆ ಮತ್ತು ನಿಮ್ಮ ಸ್ವಂತ ಯೋಜನೆಗಳಿಗೆ ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ. + +1. ಪ್ರತಿ HORIZON ಹಂತಕ್ಕೆ ಪರೀಕ್ಷಾ ಡೇಟಾ ಪಾಯಿಂಟ್ ರಚಿಸಿ. + + ```python + test_shifted = test.copy() + + for t in range(1, HORIZON+1): + test_shifted['load+'+str(t)] = test_shifted['load'].shift(-t, freq='H') + + test_shifted = test_shifted.dropna(how='any') + test_shifted.head(5) + ``` + + | | | load | load+1 | load+2 | + | ---------- | -------- | ---- | ------ | ------ | + | 2014-12-30 | 00:00:00 | 0.33 | 0.29 | 0.27 | + | 2014-12-30 | 01:00:00 | 0.29 | 0.27 | 0.27 | + | 2014-12-30 | 02:00:00 | 0.27 | 0.27 | 0.30 | + | 2014-12-30 | 03:00:00 | 0.27 | 0.30 | 0.41 | + | 2014-12-30 | 04:00:00 | 0.30 | 0.41 | 0.57 | + + ಡೇಟಾ ಅದರ ಹೋರೈಜನ್ ಪಾಯಿಂಟ್ ಪ್ರಕಾರ ಅಡ್ಡವಾಗಿ ಸರಿಸಲಾಗಿದೆ. + +1. ಈ ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ವಿಧಾನವನ್ನು ಬಳಸಿ ಪರೀಕ್ಷಾ ಡೇಟಾದ ಉದ್ದದ ಲೂಪ್‌ನಲ್ಲಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ: + + ```python + %%time + training_window = 720 # ತರಬೇತಿಗೆ 30 ದಿನಗಳು (720 ಗಂಟೆಗಳು) ಮೀಸಲಿಡಿ + + train_ts = train['load'] + test_ts = test_shifted + + history = [x for x in train_ts] + history = history[(-training_window):] + + predictions = list() + + order = (2, 1, 0) + seasonal_order = (1, 1, 0, 24) + + for t in range(test_ts.shape[0]): + model = SARIMAX(endog=history, order=order, seasonal_order=seasonal_order) + model_fit = model.fit() + yhat = model_fit.forecast(steps = HORIZON) + predictions.append(yhat) + obs = list(test_ts.iloc[t]) + # ತರಬೇತಿ ವಿಂಡೋವನ್ನು ಸರಿಸಿ + history.append(obs[0]) + history.pop(0) + print(test_ts.index[t]) + print(t+1, ': predicted =', yhat, 'expected =', obs) + ``` + + ತರಬೇತಿ ನಡೆಯುತ್ತಿರುವುದನ್ನು ನೀವು ನೋಡಬಹುದು: + + ```output + 2014-12-30 00:00:00 + 1 : predicted = [0.32 0.29 0.28] expected = [0.32945389435989236, 0.2900626678603402, 0.2739480752014323] + + 2014-12-30 01:00:00 + 2 : predicted = [0.3 0.29 0.3 ] expected = [0.2900626678603402, 0.2739480752014323, 0.26812891674127126] + + 2014-12-30 02:00:00 + 3 : predicted = [0.27 0.28 0.32] expected = [0.2739480752014323, 0.26812891674127126, 0.3025962399283795] + ``` + +1. ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ನಿಜವಾದ ಲೋಡ್ ಜೊತೆಗೆ ಹೋಲಿಸಿ: + + ```python + eval_df = pd.DataFrame(predictions, columns=['t+'+str(t) for t in range(1, HORIZON+1)]) + eval_df['timestamp'] = test.index[0:len(test.index)-HORIZON+1] + eval_df = pd.melt(eval_df, id_vars='timestamp', value_name='prediction', var_name='h') + eval_df['actual'] = np.array(np.transpose(test_ts)).ravel() + eval_df[['prediction', 'actual']] = scaler.inverse_transform(eval_df[['prediction', 'actual']]) + eval_df.head() + ``` + + ಔಟ್‌ಪುಟ್ + | | | timestamp | h | prediction | actual | + | --- | ---------- | --------- | --- | ---------- | -------- | + | 0 | 2014-12-30 | 00:00:00 | t+1 | 3,008.74 | 3,023.00 | + | 1 | 2014-12-30 | 01:00:00 | t+1 | 2,955.53 | 2,935.00 | + | 2 | 2014-12-30 | 02:00:00 | t+1 | 2,900.17 | 2,899.00 | + | 3 | 2014-12-30 | 03:00:00 | t+1 | 2,917.69 | 2,886.00 | + | 4 | 2014-12-30 | 04:00:00 | t+1 | 2,946.99 | 2,963.00 | + + ಗಂಟೆಗಟ್ಟಲೆ ಡೇಟಾದ ಭವಿಷ್ಯವಾಣಿ ಮತ್ತು ನಿಜವಾದ ಲೋಡ್ ಅನ್ನು ಗಮನಿಸಿ. ಇದು ಎಷ್ಟು ನಿಖರವಾಗಿದೆ? + +### ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಪರಿಶೀಲಿಸಿ + +ನಿಮ್ಮ ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಎಲ್ಲಾ ಭವಿಷ್ಯವಾಣಿಗಳ ಮೇಲೆ ಸರಾಸರಿ ಶೇಕಡಾವಾರು ದೋಷ (MAPE) ಪರೀಕ್ಷಿಸುವ ಮೂಲಕ ಪರಿಶೀಲಿಸಿ. + +> **🧮 ಗಣಿತವನ್ನು ತೋರಿಸಿ** +> +> ![MAPE](../../../../translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.kn.png) +> +> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/) ಅನ್ನು ಮೇಲಿನ ಸೂತ್ರದಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಅನುಪಾತವಾಗಿ ಭವಿಷ್ಯವಾಣಿ ನಿಖರತೆಯನ್ನು ತೋರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. actualt ಮತ್ತು predictedt ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು actualt ಮೂಲಕ ಭಾಗಿಸಲಾಗುತ್ತದೆ. "ಈ ಲೆಕ್ಕಾಚಾರದಲ್ಲಿ ಪರಮ ಮೌಲ್ಯವನ್ನು ಪ್ರತಿ ಭವಿಷ್ಯವಾಣಿ ಸಮಯದ ಬಿಂದುವಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಹೊಂದಿಸಿದ ಬಿಂದುಗಳ ಸಂಖ್ಯೆ n ಮೂಲಕ ಭಾಗಿಸಲಾಗುತ್ತದೆ." [wikipedia](https://wikipedia.org/wiki/Mean_absolute_percentage_error) + +1. ಸಮೀಕರಣವನ್ನು ಕೋಡ್‌ನಲ್ಲಿ ವ್ಯಕ್ತಪಡಿಸಿ: + + ```python + if(HORIZON > 1): + eval_df['APE'] = (eval_df['prediction'] - eval_df['actual']).abs() / eval_df['actual'] + print(eval_df.groupby('h')['APE'].mean()) + ``` + +1. ಒಂದು ಹಂತದ MAPE ಅನ್ನು ಲೆಕ್ಕಹಾಕಿ: + + ```python + print('One step forecast MAPE: ', (mape(eval_df[eval_df['h'] == 't+1']['prediction'], eval_df[eval_df['h'] == 't+1']['actual']))*100, '%') + ``` + + ಒಂದು ಹಂತದ ಭವಿಷ್ಯವಾಣಿ MAPE: 0.5570581332313952 % + +1. ಬಹು ಹಂತದ ಭವಿಷ್ಯವಾಣಿ MAPE ಅನ್ನು ಮುದ್ರಿಸಿ: + + ```python + print('Multi-step forecast MAPE: ', mape(eval_df['prediction'], eval_df['actual'])*100, '%') + ``` + + ```output + Multi-step forecast MAPE: 1.1460048657704118 % + ``` + + ಒಳ್ಳೆಯ ಕಡಿಮೆ ಸಂಖ್ಯೆ ಉತ್ತಮ: MAPE 10 ಇರುವ ಭವಿಷ್ಯವಾಣಿ 10% ತಪ್ಪಿದೆ ಎಂದು ಪರಿಗಣಿಸಿ. + +1. ಆದರೆ ಯಾವಾಗಲೂ ಹಾಗೆಯೇ, ಈ ರೀತಿಯ ನಿಖರತೆ ಅಳೆಯುವಿಕೆಯನ್ನು ದೃಶ್ಯವಾಗಿ ನೋಡುವುದು ಸುಲಭ, ಆದ್ದರಿಂದ ಅದನ್ನು ರೇಖಾಚಿತ್ರಗೊಳಿಸೋಣ: + + ```python + if(HORIZON == 1): + ## ಏಕ ಹಂತದ ಭವಿಷ್ಯವಾಣಿ ರೇಖಾಚಿತ್ರಣ + eval_df.plot(x='timestamp', y=['actual', 'prediction'], style=['r', 'b'], figsize=(15, 8)) + + else: + ## ಬಹು ಹಂತದ ಭವಿಷ್ಯವಾಣಿ ರೇಖಾಚಿತ್ರಣ + plot_df = eval_df[(eval_df.h=='t+1')][['timestamp', 'actual']] + for t in range(1, HORIZON+1): + plot_df['t+'+str(t)] = eval_df[(eval_df.h=='t+'+str(t))]['prediction'].values + + fig = plt.figure(figsize=(15, 8)) + ax = plt.plot(plot_df['timestamp'], plot_df['actual'], color='red', linewidth=4.0) + ax = fig.add_subplot(111) + for t in range(1, HORIZON+1): + x = plot_df['timestamp'][(t-1):] + y = plot_df['t+'+str(t)][0:len(x)] + ax.plot(x, y, color='blue', linewidth=4*math.pow(.9,t), alpha=math.pow(0.8,t)) + + ax.legend(loc='best') + + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![a time series model](../../../../translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.kn.png) + +🏆 ಅತ್ಯುತ್ತಮ ನಿಖರತೆಯೊಂದಿಗೆ ಮಾದರಿಯನ್ನು ತೋರಿಸುವ ಅತ್ಯಂತ ಚೆನ್ನಾದ ರೇಖಾಚಿತ್ರ. ಶುಭಾಶಯಗಳು! + +--- + +## 🚀ಸವಾಲು + +ಟೈಮ್ ಸೀರಿಸ್ ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಿಸುವ ವಿಧಾನಗಳನ್ನು ಆಳವಾಗಿ ಅಧ್ಯಯನ ಮಾಡಿ. ಈ ಪಾಠದಲ್ಲಿ ನಾವು MAPE ಬಗ್ಗೆ ಸ್ಪರ್ಶಿಸಿದ್ದೇವೆ, ಆದರೆ ನೀವು ಬಳಸಬಹುದಾದ ಇತರ ವಿಧಾನಗಳಿವೆಯೇ? ಅವುಗಳನ್ನು ಸಂಶೋಧಿಸಿ ಮತ್ತು ಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸಿ. ಸಹಾಯಕ ದಾಖಲೆ [ಇಲ್ಲಿ](https://otexts.com/fpp2/accuracy.html) ಲಭ್ಯವಿದೆ + +## [ಪಾಠೋತ್ತರ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಈ ಪಾಠವು ARIMA ಬಳಸಿ ಟೈಮ್ ಸೀರಿಸ್ ಭವಿಷ್ಯವಾಣಿಯ ಮೂಲಭೂತಗಳನ್ನು ಮಾತ್ರ ಸ್ಪರ್ಶಿಸುತ್ತದೆ. [ಈ ಸಂಗ್ರಹಾಲಯ](https://microsoft.github.io/forecasting/) ಮತ್ತು ಅದರ ವಿವಿಧ ಮಾದರಿ ಪ್ರಕಾರಗಳನ್ನು ಆಳವಾಗಿ ಅಧ್ಯಯನ ಮಾಡಿ ಟೈಮ್ ಸೀರಿಸ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವ ಇತರ ವಿಧಾನಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಲು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಿ. + +## ನಿಯೋಜನೆ + +[ಹೊಸ ARIMA ಮಾದರಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/2-ARIMA/assignment.md b/translations/kn/7-TimeSeries/2-ARIMA/assignment.md new file mode 100644 index 000000000..0630e763e --- /dev/null +++ b/translations/kn/7-TimeSeries/2-ARIMA/assignment.md @@ -0,0 +1,27 @@ + +# ಹೊಸ ARIMA ಮಾದರಿ + +## ಸೂಚನೆಗಳು + +ನೀವು ಈಗಾಗಲೇ ARIMA ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಹೊಸ ಡೇಟಾ ಬಳಸಿ ಹೊಸದೊಂದು ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ ([Duke ನಿಂದ ಈ ಡೇಟಾಸೆಟ್‌ಗಳಲ್ಲಿ ಒಂದನ್ನು ಪ್ರಯತ್ನಿಸಿ](http://www2.stat.duke.edu/~mw/ts_data_sets.html)). ನಿಮ್ಮ ಕೆಲಸವನ್ನು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಟಿಪ್ಪಣಿ ಮಾಡಿ, ಡೇಟಾ ಮತ್ತು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ದೃಶ್ಯೀಕರಿಸಿ, ಮತ್ತು MAPE ಬಳಸಿ ಅದರ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಿಸಿ. + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ----------------------------------- | +| | ಹೊಸ ARIMA ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ, ಪರೀಕ್ಷಿಸಿ, ದೃಶ್ಯೀಕರಣಗಳೊಂದಿಗೆ ವಿವರಿಸಿ ಮತ್ತು ನಿಖರತೆಯನ್ನು ಸೂಚಿಸಿದ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ. | ಪ್ರಸ್ತುತಪಡಿಸಿದ ನೋಟ್ಬುಕ್ ಟಿಪ್ಪಣಿಸದ ಅಥವಾ ದೋಷಗಳಿರುವುದು | ಅಪೂರ್ಣ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/2-ARIMA/solution/Julia/README.md b/translations/kn/7-TimeSeries/2-ARIMA/solution/Julia/README.md new file mode 100644 index 000000000..218f2eb18 --- /dev/null +++ b/translations/kn/7-TimeSeries/2-ARIMA/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/2-ARIMA/solution/R/README.md b/translations/kn/7-TimeSeries/2-ARIMA/solution/R/README.md new file mode 100644 index 000000000..786ca8c6b --- /dev/null +++ b/translations/kn/7-TimeSeries/2-ARIMA/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/2-ARIMA/solution/notebook.ipynb b/translations/kn/7-TimeSeries/2-ARIMA/solution/notebook.ipynb new file mode 100644 index 000000000..8a9016174 --- /dev/null +++ b/translations/kn/7-TimeSeries/2-ARIMA/solution/notebook.ipynb @@ -0,0 +1,1101 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ARIMA ಬಳಸಿ ಕಾಲ ಸರಣಿ ಮುನ್ಸೂಚನೆ\n", + "\n", + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ, ನಾವು ಹೇಗೆ ಮಾಡುವುದು ಎಂದು ತೋರಿಸುತ್ತೇವೆ:\n", + "- ARIMA ಕಾಲ ಸರಣಿ ಮುನ್ಸೂಚನೆ ಮಾದರಿಗಾಗಿ ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ತರಬೇತಿಗೆ ಸಿದ್ಧಪಡಿಸುವುದು\n", + "- ಸರಳ ARIMA ಮಾದರಿಯನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ ಮುಂದಿನ HORIZON ಹಂತಗಳನ್ನು ಮುನ್ಸೂಚಿಸುವುದು (ಕಾಲ *t+1* ರಿಂದ *t+HORIZON* ವರೆಗೆ)\n", + "- ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು\n", + "\n", + "ಈ ಉದಾಹರಣೆಯ ಡೇಟಾ GEFCom2014 ಮುನ್ಸೂಚನೆ ಸ್ಪರ್ಧೆಯಿಂದ1 ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ. ಇದು 2012 ರಿಂದ 2014 ರವರೆಗೆ 3 ವರ್ಷಗಳ ಗಂಟೆಗಂಟೆ ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಕಾರ್ಯವು ಭವಿಷ್ಯದ ವಿದ್ಯುತ್ ಲೋಡ್ ಮೌಲ್ಯಗಳನ್ನು ಮುನ್ಸೂಚಿಸುವುದಾಗಿದೆ. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಾವು ಇತಿಹಾಸದ ಲೋಡ್ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಬಳಸಿ ಒಂದು ಕಾಲ ಹಂತ ಮುನ್ಸೂಚಿಸುವುದನ್ನು ತೋರಿಸುತ್ತೇವೆ.\n", + "\n", + "1ಟಾವ್ ಹಾಂಗ್, ಪಿಯೆರ್ರೆ ಪಿನ್ಸನ್, ಶು ಫ್ಯಾನ್, ಹಮಿದ್ರೆಜಾ ಜರೈಪೂರ್, ಅಲ್ಬೆರ್ಟೋ ಟ್ರೊಕೋಲ್ಲಿ ಮತ್ತು ರಾಬ್ ಜೆ. ಹಿಂಡ್ಮನ್, \"ಪ್ರೊಬಬಿಲಿಸ್ಟಿಕ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್: ಗ್ಲೋಬಲ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್ ಸ್ಪರ್ಧೆ 2014 ಮತ್ತು ಮುಂದಿನದು\", ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಜರ್ನಲ್ ಆಫ್ ಫೋರ್ಕಾಸ್ಟಿಂಗ್, ವಾಲ್ಯೂಮ್ 32, ಸಂಖ್ಯೆ 3, ಪುಟಗಳು 896-913, ಜುಲೈ-ಸೆಪ್ಟೆಂಬರ್, 2016.\n" + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ\n", + "ಕೆಲವು ಅಗತ್ಯವಿರುವ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸಿ. ಈ ಗ್ರಂಥಾಲಯಗಳು ಮತ್ತು ಅವುಗಳ ಸಂಬಂಧಿತ ಆವೃತ್ತಿಗಳು ಪರಿಹಾರಕ್ಕಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಾಗಿ ತಿಳಿದುಬಂದಿವೆ:\n", + "\n", + "* `statsmodels == 0.12.2`\n", + "* `matplotlib == 3.4.2`\n", + "* `scikit-learn == 0.24.2`\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 16, + "source": [ + "!pip install statsmodels" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/bin/sh: pip: command not found\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 17, + "source": [ + "import os\n", + "import warnings\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import datetime as dt\n", + "import math\n", + "\n", + "from pandas.plotting import autocorrelation_plot\n", + "from statsmodels.tsa.statespace.sarimax import SARIMAX\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "from common.utils import load_data, mape\n", + "from IPython.display import Image\n", + "\n", + "%matplotlib inline\n", + "pd.options.display.float_format = '{:,.2f}'.format\n", + "np.set_printoptions(precision=2)\n", + "warnings.filterwarnings(\"ignore\") # specify to ignore warning messages\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 18, + "source": [ + "energy = load_data('./data')[['load']]\n", + "energy.head(10)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2012-01-01 00:00:002,698.00
2012-01-01 01:00:002,558.00
2012-01-01 02:00:002,444.00
2012-01-01 03:00:002,402.00
2012-01-01 04:00:002,403.00
2012-01-01 05:00:002,453.00
2012-01-01 06:00:002,560.00
2012-01-01 07:00:002,719.00
2012-01-01 08:00:002,916.00
2012-01-01 09:00:003,105.00
\n", + "
" + ], + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2,698.00\n", + "2012-01-01 01:00:00 2,558.00\n", + "2012-01-01 02:00:00 2,444.00\n", + "2012-01-01 03:00:00 2,402.00\n", + "2012-01-01 04:00:00 2,403.00\n", + "2012-01-01 05:00:00 2,453.00\n", + "2012-01-01 06:00:00 2,560.00\n", + "2012-01-01 07:00:00 2,719.00\n", + "2012-01-01 08:00:00 2,916.00\n", + "2012-01-01 09:00:00 3,105.00" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಎಲ್ಲಾ ಲಭ್ಯವಿರುವ ಲೋಡ್ ಡೇಟಾವನ್ನು (ಜನವರಿ 2012 ರಿಂದ ಡಿಸೆಂಬರ್ 2014) ಚಿತ್ರಿಸಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 19, + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾ ಸೆಟ್‌ಗಳನ್ನು ರಚಿಸಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "source": [ + "train_start_dt = '2014-11-01 00:00:00'\n", + "test_start_dt = '2014-12-30 00:00:00' " + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 21, + "source": [ + "energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \\\n", + " .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \\\n", + " .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 22, + "source": [ + "train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]\n", + "test = energy.copy()[energy.index >= test_start_dt][['load']]\n", + "\n", + "print('Training data shape: ', train.shape)\n", + "print('Test data shape: ', test.shape)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Training data shape: (1416, 1)\n", + "Test data shape: (48, 1)\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "source": [ + "scaler = MinMaxScaler()\n", + "train['load'] = scaler.fit_transform(train)\n", + "train.head(10)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-11-01 00:00:000.10
2014-11-01 01:00:000.07
2014-11-01 02:00:000.05
2014-11-01 03:00:000.04
2014-11-01 04:00:000.06
2014-11-01 05:00:000.10
2014-11-01 06:00:000.19
2014-11-01 07:00:000.31
2014-11-01 08:00:000.40
2014-11-01 09:00:000.48
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-11-01 00:00:00 0.10\n", + "2014-11-01 01:00:00 0.07\n", + "2014-11-01 02:00:00 0.05\n", + "2014-11-01 03:00:00 0.04\n", + "2014-11-01 04:00:00 0.06\n", + "2014-11-01 05:00:00 0.10\n", + "2014-11-01 06:00:00 0.19\n", + "2014-11-01 07:00:00 0.31\n", + "2014-11-01 08:00:00 0.40\n", + "2014-11-01 09:00:00 0.48" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಮೂಲ vs ಮಾಪನಗೊಳಿಸಿದ ಡೇಟಾ:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 24, + "source": [ + "energy[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']].rename(columns={'load':'original load'}).plot.hist(bins=100, fontsize=12)\n", + "train.rename(columns={'load':'scaled load'}).plot.hist(bins=100, fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + }, + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ನಾವು ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ಕೂಡಾ ಪ್ರಮಾಣಗೊಳಿಸೋಣ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 25, + "source": [ + "test['load'] = scaler.transform(test)\n", + "test.head()" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-12-30 00:00:000.33
2014-12-30 01:00:000.29
2014-12-30 02:00:000.27
2014-12-30 03:00:000.27
2014-12-30 04:00:000.30
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-12-30 00:00:00 0.33\n", + "2014-12-30 01:00:00 0.29\n", + "2014-12-30 02:00:00 0.27\n", + "2014-12-30 03:00:00 0.27\n", + "2014-12-30 04:00:00 0.30" + ] + }, + "metadata": {}, + "execution_count": 25 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## ARIMA ವಿಧಾನವನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 26, + "source": [ + "# Specify the number of steps to forecast ahead\n", + "HORIZON = 3\n", + "print('Forecasting horizon:', HORIZON, 'hours')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Forecasting horizon: 3 hours\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 27, + "source": [ + "order = (4, 1, 0)\n", + "seasonal_order = (1, 1, 0, 24)\n", + "\n", + "model = SARIMAX(endog=train, order=order, seasonal_order=seasonal_order)\n", + "results = model.fit()\n", + "\n", + "print(results.summary())\n" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " SARIMAX Results \n", + "==========================================================================================\n", + "Dep. Variable: load No. Observations: 1416\n", + "Model: SARIMAX(4, 1, 0)x(1, 1, 0, 24) Log Likelihood 3477.239\n", + "Date: Thu, 30 Sep 2021 AIC -6942.477\n", + "Time: 14:36:28 BIC -6911.050\n", + "Sample: 11-01-2014 HQIC -6930.725\n", + " - 12-29-2014 \n", + "Covariance Type: opg \n", + "==============================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "ar.L1 0.8403 0.016 52.226 0.000 0.809 0.872\n", + "ar.L2 -0.5220 0.034 -15.388 0.000 -0.588 -0.456\n", + "ar.L3 0.1536 0.044 3.470 0.001 0.067 0.240\n", + "ar.L4 -0.0778 0.036 -2.158 0.031 -0.148 -0.007\n", + "ar.S.L24 -0.2327 0.024 -9.718 0.000 -0.280 -0.186\n", + "sigma2 0.0004 8.32e-06 47.358 0.000 0.000 0.000\n", + "===================================================================================\n", + "Ljung-Box (L1) (Q): 0.05 Jarque-Bera (JB): 1464.60\n", + "Prob(Q): 0.83 Prob(JB): 0.00\n", + "Heteroskedasticity (H): 0.84 Skew: 0.14\n", + "Prob(H) (two-sided): 0.07 Kurtosis: 8.02\n", + "===================================================================================\n", + "\n", + "Warnings:\n", + "[1] Covariance matrix calculated using the outer product of gradients (complex-step).\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಪ್ರತಿ HORIZON ಹಂತಕ್ಕೆ ಒಂದು ಪರೀಕ್ಷಾ ಡೇಟಾ ಪಾಯಿಂಟ್ ರಚಿಸಿ.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 28, + "source": [ + "test_shifted = test.copy()\n", + "\n", + "for t in range(1, HORIZON):\n", + " test_shifted['load+'+str(t)] = test_shifted['load'].shift(-t, freq='H')\n", + " \n", + "test_shifted = test_shifted.dropna(how='any')\n", + "test_shifted.head(5)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
loadload+1load+2
2014-12-30 00:00:000.330.290.27
2014-12-30 01:00:000.290.270.27
2014-12-30 02:00:000.270.270.30
2014-12-30 03:00:000.270.300.41
2014-12-30 04:00:000.300.410.57
\n", + "
" + ], + "text/plain": [ + " load load+1 load+2\n", + "2014-12-30 00:00:00 0.33 0.29 0.27\n", + "2014-12-30 01:00:00 0.29 0.27 0.27\n", + "2014-12-30 02:00:00 0.27 0.27 0.30\n", + "2014-12-30 03:00:00 0.27 0.30 0.41\n", + "2014-12-30 04:00:00 0.30 0.41 0.57" + ] + }, + "metadata": {}, + "execution_count": 28 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಪರೀಕ್ಷಾ ಡೇಟಾದ ಮೇಲೆ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 29, + "source": [ + "%%time\n", + "training_window = 720 # dedicate 30 days (720 hours) for training\n", + "\n", + "train_ts = train['load']\n", + "test_ts = test_shifted\n", + "\n", + "history = [x for x in train_ts]\n", + "history = history[(-training_window):]\n", + "\n", + "predictions = list()\n", + "\n", + "# let's user simpler model for demonstration\n", + "order = (2, 1, 0)\n", + "seasonal_order = (1, 1, 0, 24)\n", + "\n", + "for t in range(test_ts.shape[0]):\n", + " model = SARIMAX(endog=history, order=order, seasonal_order=seasonal_order)\n", + " model_fit = model.fit()\n", + " yhat = model_fit.forecast(steps = HORIZON)\n", + " predictions.append(yhat)\n", + " obs = list(test_ts.iloc[t])\n", + " # move the training window\n", + " history.append(obs[0])\n", + " history.pop(0)\n", + " print(test_ts.index[t])\n", + " print(t+1, ': predicted =', yhat, 'expected =', obs)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "2014-12-30 00:00:00\n", + "1 : predicted = [0.32 0.29 0.28] expected = [0.32945389435989236, 0.2900626678603402, 0.2739480752014323]\n", + "2014-12-30 01:00:00\n", + "2 : predicted = [0.3 0.29 0.3 ] expected = [0.2900626678603402, 0.2739480752014323, 0.26812891674127126]\n", + "2014-12-30 02:00:00\n", + "3 : predicted = [0.27 0.28 0.32] expected = [0.2739480752014323, 0.26812891674127126, 0.3025962399283795]\n", + "2014-12-30 03:00:00\n", + "4 : predicted = [0.28 0.32 0.42] expected = [0.26812891674127126, 0.3025962399283795, 0.40823634735899716]\n", + "2014-12-30 04:00:00\n", + "5 : predicted = [0.3 0.39 0.54] expected = [0.3025962399283795, 0.40823634735899716, 0.5689346463742166]\n", + "2014-12-30 05:00:00\n", + "6 : predicted = [0.4 0.55 0.66] expected = [0.40823634735899716, 0.5689346463742166, 0.6799462846911368]\n", + "2014-12-30 06:00:00\n", + "7 : predicted = [0.57 0.68 0.75] expected = [0.5689346463742166, 0.6799462846911368, 0.7309758281110115]\n", + "2014-12-30 07:00:00\n", + "8 : predicted = [0.68 0.75 0.8 ] expected = [0.6799462846911368, 0.7309758281110115, 0.7511190689346463]\n", + "2014-12-30 08:00:00\n", + "9 : predicted = [0.75 0.8 0.82] expected = [0.7309758281110115, 0.7511190689346463, 0.7636526410026856]\n", + "2014-12-30 09:00:00\n", + "10 : predicted = [0.77 0.78 0.78] expected = [0.7511190689346463, 0.7636526410026856, 0.7381378692927483]\n", + "2014-12-30 10:00:00\n", + "11 : predicted = [0.76 0.75 0.74] expected = [0.7636526410026856, 0.7381378692927483, 0.7188898836168307]\n", + "2014-12-30 11:00:00\n", + "12 : predicted = [0.77 0.76 0.75] expected = [0.7381378692927483, 0.7188898836168307, 0.7090420769919425]\n", + "2014-12-30 12:00:00\n", + "13 : predicted = [0.7 0.68 0.69] expected = [0.7188898836168307, 0.7090420769919425, 0.7081468218442255]\n", + "2014-12-30 13:00:00\n", + "14 : predicted = [0.72 0.73 0.76] expected = [0.7090420769919425, 0.7081468218442255, 0.7385854968666068]\n", + "2014-12-30 14:00:00\n", + "15 : predicted = [0.71 0.73 0.86] expected = [0.7081468218442255, 0.7385854968666068, 0.8478066248880931]\n", + "2014-12-30 15:00:00\n", + "16 : predicted = [0.73 0.85 0.97] expected = [0.7385854968666068, 0.8478066248880931, 0.9516562220232765]\n", + "2014-12-30 16:00:00\n", + "17 : predicted = [0.87 0.99 0.97] expected = [0.8478066248880931, 0.9516562220232765, 0.934198746642793]\n", + "2014-12-30 17:00:00\n", + "18 : predicted = [0.94 0.92 0.86] expected = [0.9516562220232765, 0.934198746642793, 0.8876454789615038]\n", + "2014-12-30 18:00:00\n", + "19 : predicted = [0.94 0.89 0.82] expected = [0.934198746642793, 0.8876454789615038, 0.8294538943598924]\n", + "2014-12-30 19:00:00\n", + "20 : predicted = [0.88 0.82 0.71] expected = [0.8876454789615038, 0.8294538943598924, 0.7197851387645477]\n", + "2014-12-30 20:00:00\n", + "21 : predicted = [0.83 0.72 0.58] expected = [0.8294538943598924, 0.7197851387645477, 0.5747538048343777]\n", + "2014-12-30 21:00:00\n", + "22 : predicted = [0.72 0.58 0.47] expected = [0.7197851387645477, 0.5747538048343777, 0.4592658907788718]\n", + "2014-12-30 22:00:00\n", + "23 : predicted = [0.58 0.47 0.39] expected = [0.5747538048343777, 0.4592658907788718, 0.3858549686660697]\n", + "2014-12-30 23:00:00\n", + "24 : predicted = [0.46 0.38 0.34] expected = [0.4592658907788718, 0.3858549686660697, 0.34377797672336596]\n", + "2014-12-31 00:00:00\n", + "25 : predicted = [0.38 0.34 0.33] expected = [0.3858549686660697, 0.34377797672336596, 0.32542524619516544]\n", + "2014-12-31 01:00:00\n", + "26 : predicted = [0.36 0.34 0.34] expected = [0.34377797672336596, 0.32542524619516544, 0.33034914950760963]\n", + "2014-12-31 02:00:00\n", + "27 : predicted = [0.32 0.32 0.35] expected = [0.32542524619516544, 0.33034914950760963, 0.3706356311548791]\n", + "2014-12-31 03:00:00\n", + "28 : predicted = [0.32 0.36 0.47] expected = [0.33034914950760963, 0.3706356311548791, 0.470008952551477]\n", + "2014-12-31 04:00:00\n", + "29 : predicted = [0.37 0.48 0.65] expected = [0.3706356311548791, 0.470008952551477, 0.6145926589077886]\n", + "2014-12-31 05:00:00\n", + "30 : predicted = [0.48 0.64 0.75] expected = [0.470008952551477, 0.6145926589077886, 0.7247090420769919]\n", + "2014-12-31 06:00:00\n", + "31 : predicted = [0.63 0.73 0.79] expected = [0.6145926589077886, 0.7247090420769919, 0.786034019695613]\n", + "2014-12-31 07:00:00\n", + "32 : predicted = [0.71 0.76 0.79] expected = [0.7247090420769919, 0.786034019695613, 0.8012533572068039]\n", + "2014-12-31 08:00:00\n", + "33 : predicted = [0.79 0.82 0.83] expected = [0.786034019695613, 0.8012533572068039, 0.7994628469113696]\n", + "2014-12-31 09:00:00\n", + "34 : predicted = [0.82 0.83 0.81] expected = [0.8012533572068039, 0.7994628469113696, 0.780214861235452]\n", + "2014-12-31 10:00:00\n", + "35 : predicted = [0.8 0.78 0.76] expected = [0.7994628469113696, 0.780214861235452, 0.7587287376902416]\n", + "2014-12-31 11:00:00\n", + "36 : predicted = [0.77 0.75 0.74] expected = [0.780214861235452, 0.7587287376902416, 0.7367949865711727]\n", + "2014-12-31 12:00:00\n", + "37 : predicted = [0.77 0.76 0.76] expected = [0.7587287376902416, 0.7367949865711727, 0.7188898836168307]\n", + "2014-12-31 13:00:00\n", + "38 : predicted = [0.75 0.75 0.78] expected = [0.7367949865711727, 0.7188898836168307, 0.7273948075201431]\n", + "2014-12-31 14:00:00\n", + "39 : predicted = [0.73 0.75 0.87] expected = [0.7188898836168307, 0.7273948075201431, 0.8299015219337511]\n", + "2014-12-31 15:00:00\n", + "40 : predicted = [0.74 0.85 0.96] expected = [0.7273948075201431, 0.8299015219337511, 0.909579230080573]\n", + "2014-12-31 16:00:00\n", + "41 : predicted = [0.83 0.94 0.93] expected = [0.8299015219337511, 0.909579230080573, 0.855863921217547]\n", + "2014-12-31 17:00:00\n", + "42 : predicted = [0.94 0.93 0.88] expected = [0.909579230080573, 0.855863921217547, 0.7721575649059982]\n", + "2014-12-31 18:00:00\n", + "43 : predicted = [0.87 0.82 0.77] expected = [0.855863921217547, 0.7721575649059982, 0.7023276633840643]\n", + "2014-12-31 19:00:00\n", + "44 : predicted = [0.79 0.73 0.63] expected = [0.7721575649059982, 0.7023276633840643, 0.6195165622202325]\n", + "2014-12-31 20:00:00\n", + "45 : predicted = [0.7 0.59 0.46] expected = [0.7023276633840643, 0.6195165622202325, 0.5425246195165621]\n", + "2014-12-31 21:00:00\n", + "46 : predicted = [0.6 0.47 0.36] expected = [0.6195165622202325, 0.5425246195165621, 0.4735899731423454]\n", + "CPU times: user 12min 15s, sys: 2min 39s, total: 14min 54s\n", + "Wall time: 2min 36s\n" + ] + } + ], + "metadata": { + "scrolled": true + } + }, + { + "cell_type": "markdown", + "source": [ + "ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ನಿಜವಾದ ಲೋಡ್‌ಗಳೊಂದಿಗೆ ಹೋಲಿಸಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 30, + "source": [ + "eval_df = pd.DataFrame(predictions, columns=['t+'+str(t) for t in range(1, HORIZON+1)])\n", + "eval_df['timestamp'] = test.index[0:len(test.index)-HORIZON+1]\n", + "eval_df = pd.melt(eval_df, id_vars='timestamp', value_name='prediction', var_name='h')\n", + "eval_df['actual'] = np.array(np.transpose(test_ts)).ravel()\n", + "eval_df[['prediction', 'actual']] = scaler.inverse_transform(eval_df[['prediction', 'actual']])\n", + "eval_df.head()" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timestamphpredictionactual
02014-12-30 00:00:00t+13,008.743,023.00
12014-12-30 01:00:00t+12,955.532,935.00
22014-12-30 02:00:00t+12,900.172,899.00
32014-12-30 03:00:00t+12,917.692,886.00
42014-12-30 04:00:00t+12,946.992,963.00
\n", + "
" + ], + "text/plain": [ + " timestamp h prediction actual\n", + "0 2014-12-30 00:00:00 t+1 3,008.74 3,023.00\n", + "1 2014-12-30 01:00:00 t+1 2,955.53 2,935.00\n", + "2 2014-12-30 02:00:00 t+1 2,900.17 2,899.00\n", + "3 2014-12-30 03:00:00 t+1 2,917.69 2,886.00\n", + "4 2014-12-30 04:00:00 t+1 2,946.99 2,963.00" + ] + }, + "metadata": {}, + "execution_count": 30 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಎಲ್ಲಾ ಭವಿಷ್ಯವಾಣಿಗಳ ಮೇಲೆ **ಸರಾಸರಿ ಸಾಪೇಕ್ಷ ಶೇಕಡಾವಾರು ದೋಷ (MAPE)** ಅನ್ನು ಲೆಕ್ಕಹಾಕಿ\n", + "\n", + "$$MAPE = \\frac{1}{n} \\sum_{t=1}^{n}|\\frac{actual_t - predicted_t}{actual_t}|$$\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 31, + "source": [ + "if(HORIZON > 1):\n", + " eval_df['APE'] = (eval_df['prediction'] - eval_df['actual']).abs() / eval_df['actual']\n", + " print(eval_df.groupby('h')['APE'].mean())" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "h\n", + "t+1 0.01\n", + "t+2 0.01\n", + "t+3 0.02\n", + "Name: APE, dtype: float64\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 32, + "source": [ + "print('One step forecast MAPE: ', (mape(eval_df[eval_df['h'] == 't+1']['prediction'], eval_df[eval_df['h'] == 't+1']['actual']))*100, '%')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "One step forecast MAPE: 0.5570581332313952 %\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 33, + "source": [ + "print('Multi-step forecast MAPE: ', mape(eval_df['prediction'], eval_df['actual'])*100, '%')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Multi-step forecast MAPE: 1.1460048657704118 %\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಪರೀಕ್ಷಾ ಸೆಟ್‌ನ ಮೊದಲ ವಾರದ ಭವಿಷ್ಯವಾಣಿಗಳು ಮತ್ತು ವಾಸ್ತವಗಳನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 34, + "source": [ + "if(HORIZON == 1):\n", + " ## Plotting single step forecast\n", + " eval_df.plot(x='timestamp', y=['actual', 'prediction'], style=['r', 'b'], figsize=(15, 8))\n", + "\n", + "else:\n", + " ## Plotting multi step forecast\n", + " plot_df = eval_df[(eval_df.h=='t+1')][['timestamp', 'actual']]\n", + " for t in range(1, HORIZON+1):\n", + " plot_df['t+'+str(t)] = eval_df[(eval_df.h=='t+'+str(t))]['prediction'].values\n", + "\n", + " fig = plt.figure(figsize=(15, 8))\n", + " ax = plt.plot(plot_df['timestamp'], plot_df['actual'], color='red', linewidth=4.0)\n", + " ax = fig.add_subplot(111)\n", + " for t in range(1, HORIZON+1):\n", + " x = plot_df['timestamp'][(t-1):]\n", + " y = plot_df['t+'+str(t)][0:len(x)]\n", + " ax.plot(x, y, color='blue', linewidth=4*math.pow(.9,t), alpha=math.pow(0.8,t))\n", + " \n", + " ax.legend(loc='best')\n", + " \n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "No handles with labels found to put in legend.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "kernel_info": { + "name": "python3" + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "c193140200b9684da27e3890211391b6", + "translation_date": "2025-12-19T17:39:15+00:00", + "source_file": "7-TimeSeries/2-ARIMA/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/2-ARIMA/working/notebook.ipynb b/translations/kn/7-TimeSeries/2-ARIMA/working/notebook.ipynb new file mode 100644 index 000000000..8c74f25bc --- /dev/null +++ b/translations/kn/7-TimeSeries/2-ARIMA/working/notebook.ipynb @@ -0,0 +1,59 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": 3 + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "523ec472196307b3c4235337353c9ceb", + "translation_date": "2025-12-19T17:37:45+00:00", + "source_file": "7-TimeSeries/2-ARIMA/working/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ARIMA ಬಳಸಿ ಕಾಲ ಸರಣಿ ಮುನ್ಸೂಚನೆ\n", + "\n", + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ, ನಾವು ಹೇಗೆ ಮಾಡುವುದು ಎಂದು ತೋರಿಸುತ್ತೇವೆ:\n", + "- ARIMA ಕಾಲ ಸರಣಿ ಮುನ್ಸೂಚನೆ ಮಾದರಿಗಾಗಿ ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ತರಬೇತಿಗೆ ಸಿದ್ಧಪಡಿಸುವುದು\n", + "- ಸರಳ ARIMA ಮಾದರಿಯನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ ಮುಂದಿನ HORIZON ಹಂತಗಳನ್ನು ಮುನ್ಸೂಚಿಸುವುದು (ಕಾಲ *t+1* ರಿಂದ *t+HORIZON* ವರೆಗೆ)\n", + "- ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು\n", + "\n", + "ಈ ಉದಾಹರಣೆಯಲ್ಲಿನ ಡೇಟಾ GEFCom2014 ಮುನ್ಸೂಚನೆ ಸ್ಪರ್ಧೆಯಿಂದ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ1. ಇದು 2012 ರಿಂದ 2014 ರವರೆಗೆ 3 ವರ್ಷಗಳ ಗಂಟೆಗಂಟೆ ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಕಾರ್ಯವು ಭವಿಷ್ಯದ ವಿದ್ಯುತ್ ಲೋಡ್ ಮೌಲ್ಯಗಳನ್ನು ಮುನ್ಸೂಚಿಸುವುದಾಗಿದೆ. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಾವು ಇತಿಹಾಸದ ಲೋಡ್ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಬಳಸಿಕೊಂಡು ಒಂದು ಕಾಲ ಹಂತ ಮುನ್ಸೂಚಿಸುವುದನ್ನು ತೋರಿಸುತ್ತೇವೆ.\n", + "\n", + "1ಟಾವ್ ಹಾಂಗ್, ಪಿಯೆರ್ರೆ ಪಿನ್ಸನ್, ಶು ಫ್ಯಾನ್, ಹಮಿದ್ರೆಜಾ ಜರೈಪೌರ್, ಅಲ್ಬೆರ್ಟೋ ಟ್ರೊಕೋಲ್ಲಿ ಮತ್ತು ರಾಬ್ ಜೆ. ಹಿಂಡ್ಮನ್, \"ಪ್ರೊಬಬಿಲಿಸ್ಟಿಕ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್: ಗ್ಲೋಬಲ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್ ಸ್ಪರ್ಧೆ 2014 ಮತ್ತು ನಂತರ\", ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಜರ್ನಲ್ ಆಫ್ ಫೋರ್ಕಾಸ್ಟಿಂಗ್, ವಾಲ್ಯೂಮ್ 32, ಸಂಖ್ಯೆ 3, ಪುಟಗಳು 896-913, ಜುಲೈ-ಸೆಪ್ಟೆಂಬರ್, 2016.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pip install statsmodels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/3-SVR/README.md b/translations/kn/7-TimeSeries/3-SVR/README.md new file mode 100644 index 000000000..dde65f936 --- /dev/null +++ b/translations/kn/7-TimeSeries/3-SVR/README.md @@ -0,0 +1,402 @@ + +# ಸಮಯ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ ಸಹಾಯ ವಕ್ಟರ್ ರೆಗ್ರೆಸರ್‌ನೊಂದಿಗೆ + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು ಸಮಯ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಗಾಗಿ ARIMA ಮಾದರಿಯನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂದು ಕಲಿತಿರಿ. ಈಗ ನೀವು ನಿರಂತರ ಡೇಟಾವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಳಸುವ ರೆಗ್ರೆಸರ್ ಮಾದರಿ ಆಗಿರುವ Support Vector Regressor ಮಾದರಿಯನ್ನು ನೋಡಲಿದ್ದೀರಿ. + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ಪರಿಚಯ + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ರೆಗ್ರೆಷನ್‌ಗಾಗಿ [**SVM**: **S**ಪೋರ್ಟ್ **V**ೆಕ್ಟರ್ **M**ಶೀನ್](https://en.wikipedia.org/wiki/Support-vector_machine) ಬಳಸಿ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವ ವಿಶೇಷ ವಿಧಾನವನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ, ಅಥವಾ **SVR: Support Vector Regressor**. + +### ಸಮಯ ಸರಣಿಯ ಸಂದರ್ಭದಲ್ಲಿ SVR [^1] + +ಸಮಯ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಯಲ್ಲಿ SVR ಮಹತ್ವವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೊದಲು, ನೀವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಕೆಲವು ಪ್ರಮುಖ ಸಂಪ್ರದಾಯಗಳು ಇಲ್ಲಿವೆ: + +- **ರೆಗ್ರೆಷನ್:** ನಿರಂತರ ಮೌಲ್ಯಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ನೀಡಲಾದ ಇನ್ಪುಟ್‌ಗಳ ಸೆಟ್‌ನಿಂದ ಸೂಪರ್ವೈಸ್ಡ್ ಲರ್ನಿಂಗ್ ತಂತ್ರ. ಆಲೋಚನೆ ಎಂದರೆ ಫೀಚರ್ ಸ್ಪೇಸ್‌ನಲ್ಲಿ ಅತಿ ಹೆಚ್ಚು ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ವಕ್ರರೇಖೆ (ಅಥವಾ ರೇಖೆ) ಅನ್ನು ಹೊಂದಿಸುವುದು. ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ](https://en.wikipedia.org/wiki/Regression_analysis). +- **ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ಮಷೀನ್ (SVM):** ವರ್ಗೀಕರಣ, ರೆಗ್ರೆಷನ್ ಮತ್ತು ಔಟ್‌ಲೈಯರ್ ಪತ್ತೆಗಾಗಿ ಬಳಸುವ ಒಂದು ವಿಧದ ಸೂಪರ್ವೈಸ್ಡ್ ಮಷೀನ್ ಲರ್ನಿಂಗ್ ಮಾದರಿ. ಈ ಮಾದರಿ ಫೀಚರ್ ಸ್ಪೇಸ್‌ನಲ್ಲಿ ಒಂದು ಹೈಪರ್ಪ್ಲೇನ್ ಆಗಿದ್ದು, ವರ್ಗೀಕರಣದಲ್ಲಿ ಇದು ಗಡಿಬಿಡಿ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ರೆಗ್ರೆಷನ್‌ನಲ್ಲಿ ಅತ್ಯುತ್ತಮ ಹೊಂದಾಣಿಕೆಯ ರೇಖೆಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. SVM ನಲ್ಲಿ, ಸಾಮಾನ್ಯವಾಗಿ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಹೆಚ್ಚಿನ ಆಯಾಮಗಳ ಸ್ಥಳಕ್ಕೆ ಪರಿವರ್ತಿಸಲು Kernel ಫಂಕ್ಷನ್ ಬಳಸಲಾಗುತ್ತದೆ, ಇದರಿಂದ ಅವುಗಳನ್ನು ಸುಲಭವಾಗಿ ವಿಭಜಿಸಬಹುದು. SVM ಗಳ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ](https://en.wikipedia.org/wiki/Support-vector_machine). +- **ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ರೆಗ್ರೆಸರ್ (SVR):** SVM ರ ಒಂದು ವಿಧ, ಅತಿ ಹೆಚ್ಚು ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ಅತ್ಯುತ್ತಮ ಹೊಂದಾಣಿಕೆಯ ರೇಖೆಯನ್ನು (SVM ನಲ್ಲಿ ಹೈಪರ್ಪ್ಲೇನ್) ಕಂಡುಹಿಡಿಯಲು. + +### ಏಕೆ SVR? [^1] + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ನೀವು ARIMA ಬಗ್ಗೆ ಕಲಿತಿರಿ, ಇದು ಸಮಯ ಸರಣಿ ಡೇಟಾವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಅತ್ಯಂತ ಯಶಸ್ವಿ ಸಾಂಖ್ಯಿಕ ರೇಖೀಯ ವಿಧಾನವಾಗಿದೆ. ಆದರೆ, ಅನೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಸಮಯ ಸರಣಿ ಡೇಟಾದಲ್ಲಿ *ಅರೇಖೀಯತೆ* ಇರುತ್ತದೆ, ಇದನ್ನು ರೇಖೀಯ ಮಾದರಿಗಳಿಂದ ನಕ್ಷೆ ಹಾಕಲಾಗುವುದಿಲ್ಲ. ಇಂತಹ ಸಂದರ್ಭಗಳಲ್ಲಿ, ರೆಗ್ರೆಷನ್ ಕಾರ್ಯಗಳಿಗೆ ಡೇಟಾದಲ್ಲಿನ ಅರೇಖೀಯತೆಯನ್ನು ಪರಿಗಣಿಸುವ SVM ಯ ಶಕ್ತಿ SVR ಅನ್ನು ಸಮಯ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಯಲ್ಲಿ ಯಶಸ್ವಿಯಾಗಿಸುತ್ತದೆ. + +## ಅಭ್ಯಾಸ - SVR ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ + +ಡೇಟಾ ತಯಾರಿಕೆಗೆ ಮೊದಲ ಕೆಲವು ಹಂತಗಳು ಹಿಂದಿನ [ARIMA](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA) ಪಾಠದಂತೆಯೇ ಇವೆ. + +ಈ ಪಾಠದಲ್ಲಿ [_/working_](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/3-SVR/working) ಫೋಲ್ಡರ್ ತೆರೆಯಿರಿ ಮತ್ತು [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/7-TimeSeries/3-SVR/working/notebook.ipynb) ಫೈಲ್ ಅನ್ನು ಹುಡುಕಿ.[^2] + +1. ನೋಟ್ಬುಕ್ ಅನ್ನು ರನ್ ಮಾಡಿ ಮತ್ತು ಅಗತ್ಯವಿರುವ ಲೈಬ್ರರಿಗಳನ್ನು ಆಮದುಮಾಡಿ: [^2] + + ```python + import sys + sys.path.append('../../') + ``` + + ```python + import os + import warnings + import matplotlib.pyplot as plt + import numpy as np + import pandas as pd + import datetime as dt + import math + + from sklearn.svm import SVR + from sklearn.preprocessing import MinMaxScaler + from common.utils import load_data, mape + ``` + +2. `/data/energy.csv` ಫೈಲ್‌ನಿಂದ ಡೇಟಾವನ್ನು ಪಾಂಡಾಸ್ ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ನೋಡಿ: [^2] + + ```python + energy = load_data('../../data')[['load']] + ``` + +3. ಜನವರಿ 2012 ರಿಂದ ಡಿಸೆಂಬರ್ 2014 ರವರೆಗೆ ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಎನರ್ಜಿ ಡೇಟಾವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ: [^2] + + ```python + energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![ಪೂರ್ಣ ಡೇಟಾ](../../../../translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.kn.png) + + ಈಗ, ನಮ್ಮ SVR ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸೋಣ. + +### ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ರಚಿಸಿ + +ನಿಮ್ಮ ಡೇಟಾ ಈಗ ಲೋಡ್ ಆಗಿದೆ, ಆದ್ದರಿಂದ ನೀವು ಅದನ್ನು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗಳಾಗಿ ವಿಭಜಿಸಬಹುದು. ನಂತರ ನೀವು SVR ಗೆ ಅಗತ್ಯವಿರುವ ಸಮಯ-ಹಂತ ಆಧಾರಿತ ಡೇಟಾಸೆಟ್ ರಚಿಸಲು ಡೇಟಾವನ್ನು ಮರುರೂಪಗೊಳಿಸುವಿರಿ. ನೀವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಸೆಟ್‌ನಲ್ಲಿ ತರಬೇತಿಮಾಡುತ್ತೀರಿ. ಮಾದರಿ ತರಬೇತಿ ಮುಗಿದ ನಂತರ, ನೀವು ಅದರ ನಿಖರತೆಯನ್ನು ತರಬೇತಿ ಸೆಟ್, ಪರೀಕ್ಷಾ ಸೆಟ್ ಮತ್ತು ನಂತರ ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತೀರಿ. ಮಾದರಿ ಭವಿಷ್ಯದ ಸಮಯ ಅವಧಿಗಳಿಂದ ಮಾಹಿತಿ ಪಡೆಯದಂತೆ ಪರೀಕ್ಷಾ ಸೆಟ್ ತರಬೇತಿ ಸೆಟ್‌ನ ನಂತರದ ಅವಧಿಯನ್ನು ಒಳಗೊಂಡಿರಬೇಕು ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು [^2] (*ಒವರ್‌ಫಿಟಿಂಗ್* ಎಂದು ಕರೆಯಲ್ಪಡುವ ಪರಿಸ್ಥಿತಿ). + +1. 2014 ಸೆಪ್ಟೆಂಬರ್ 1 ರಿಂದ ಅಕ್ಟೋಬರ್ 31 ರವರೆಗೆ ಎರಡು ತಿಂಗಳ ಅವಧಿಯನ್ನು ತರಬೇತಿ ಸೆಟ್‌ಗೆ ಮೀಸಲಿಡಿ. ಪರೀಕ್ಷಾ ಸೆಟ್ 2014 ನವೆಂಬರ್ 1 ರಿಂದ ಡಿಸೆಂಬರ್ 31 ರವರೆಗೆ ಎರಡು ತಿಂಗಳ ಅವಧಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ: [^2] + + ```python + train_start_dt = '2014-11-01 00:00:00' + test_start_dt = '2014-12-30 00:00:00' + ``` + +2. ವ್ಯತ್ಯಾಸಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಿ: [^2] + + ```python + energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \ + .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \ + .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾ](../../../../translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.kn.png) + + + +### ತರಬೇತಿಗಾಗಿ ಡೇಟಾವನ್ನು ತಯಾರಿಸಿ + +ಈಗ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ಸ್ಕೇಲಿಂಗ್ ಮೂಲಕ ತರಬೇತಿಗಾಗಿ ತಯಾರಿಸಬೇಕಾಗಿದೆ. ನೀವು ಬೇಕಾದ ಕಾಲಾವಧಿಗಳು ಮತ್ತು ಕಾಲಮ್‌ಗಳನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಂತೆ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿ, ಮತ್ತು ಡೇಟಾ 0 ಮತ್ತು 1 ನಡುವಿನ ಅಂತರಾಳದಲ್ಲಿ ಪ್ರಕ್ಷೇಪಿತವಾಗುವಂತೆ ಸ್ಕೇಲ್ ಮಾಡಬೇಕು. + +1. ಪ್ರಾರಂಭಿಕ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಮೇಲ್ಕಂಡ ಕಾಲಾವಧಿಗಳನ್ನೂ ಮತ್ತು 'load' ಕಾಲಮ್ ಜೊತೆಗೆ ದಿನಾಂಕವನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಂತೆ ಫಿಲ್ಟರ್ ಮಾಡಿ: [^2] + + ```python + train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']] + test = energy.copy()[energy.index >= test_start_dt][['load']] + + print('Training data shape: ', train.shape) + print('Test data shape: ', test.shape) + ``` + + ```output + Training data shape: (1416, 1) + Test data shape: (48, 1) + ``` + +2. ತರಬೇತಿ ಡೇಟಾವನ್ನು (0, 1) ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಸ್ಕೇಲ್ ಮಾಡಿ: [^2] + + ```python + scaler = MinMaxScaler() + train['load'] = scaler.fit_transform(train) + ``` + +4. ಈಗ, ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ಸ್ಕೇಲ್ ಮಾಡಿ: [^2] + + ```python + test['load'] = scaler.transform(test) + ``` + +### ಸಮಯ-ಹಂತಗಳೊಂದಿಗೆ ಡೇಟಾ ರಚಿಸಿ [^1] + +SVR ಗಾಗಿ, ನೀವು ಇನ್ಪುಟ್ ಡೇಟಾವನ್ನು `[batch, timesteps]` ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸುತ್ತೀರಿ. ಆದ್ದರಿಂದ, ನೀವು ಇತ್ತೀಚೆಗೆ ಇರುವ `train_data` ಮತ್ತು `test_data` ಅನ್ನು ಮರುರೂಪಗೊಳಿಸಿ, ಹೊಸ ಆಯಾಮವು ಸಮಯ ಹಂತಗಳನ್ನು ಸೂಚಿಸುತ್ತದೆ. + +```python +# ನಂಪೈ ಅರೆಗಳಾಗಿ ಪರಿವರ್ತನೆ ಮಾಡಲಾಗುತ್ತಿದೆ +train_data = train.values +test_data = test.values +``` + +ಈ ಉದಾಹರಣೆಗೆ, ನಾವು `timesteps = 5` ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ. ಆದ್ದರಿಂದ, ಮಾದರಿಗೆ ಇನ್ಪುಟ್‌ಗಳು ಮೊದಲ 4 ಸಮಯ ಹಂತಗಳ ಡೇಟಾಗಳಾಗಿದ್ದು, ಔಟ್‌ಪುಟ್ 5ನೇ ಸಮಯ ಹಂತದ ಡೇಟಾಗಿರುತ್ತದೆ. + +```python +timesteps=5 +``` + +ನೋಡಿದಂತೆ, ತರಬೇತಿ ಡೇಟಾವನ್ನು 2D ಟೆನ್ಸರ್‌ಗೆ ಪರಿವರ್ತಿಸುವ nested list comprehension: + +```python +train_data_timesteps=np.array([[j for j in train_data[i:i+timesteps]] for i in range(0,len(train_data)-timesteps+1)])[:,:,0] +train_data_timesteps.shape +``` + +```output +(1412, 5) +``` + +ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು 2D ಟೆನ್ಸರ್‌ಗೆ ಪರಿವರ್ತಿಸುವುದು: + +```python +test_data_timesteps=np.array([[j for j in test_data[i:i+timesteps]] for i in range(0,len(test_data)-timesteps+1)])[:,:,0] +test_data_timesteps.shape +``` + +```output +(44, 5) +``` + +ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾದಿಂದ ಇನ್ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು: + +```python +x_train, y_train = train_data_timesteps[:,:timesteps-1],train_data_timesteps[:,[timesteps-1]] +x_test, y_test = test_data_timesteps[:,:timesteps-1],test_data_timesteps[:,[timesteps-1]] + +print(x_train.shape, y_train.shape) +print(x_test.shape, y_test.shape) +``` + +```output +(1412, 4) (1412, 1) +(44, 4) (44, 1) +``` + +### SVR ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ [^1] + +ಈಗ, SVR ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಸಮಯ. ಈ ಅನುಷ್ಠಾನ ಕುರಿತು ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ನೀವು [ಈ ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html) ಅನ್ನು ನೋಡಿ. ನಮ್ಮ ಅನುಷ್ಠಾನಕ್ಕಾಗಿ, ನಾವು ಈ ಹಂತಗಳನ್ನು ಅನುಸರಿಸುತ್ತೇವೆ: + + 1. `SVR()` ಅನ್ನು ಕರೆಸಿ ಮತ್ತು ಮಾದರಿ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು kernel, gamma, c ಮತ್ತು epsilon ಅನ್ನು ಪಾಸ್ ಮಾಡಿ + 2. `fit()` ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆಸಿ ತರಬೇತಿ ಡೇಟಾಗೆ ಮಾದರಿಯನ್ನು ತಯಾರಿಸಿ + 3. `predict()` ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆಸಿ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡಿ + +ಈಗ ನಾವು SVR ಮಾದರಿಯನ್ನು ರಚಿಸುತ್ತೇವೆ. ಇಲ್ಲಿ ನಾವು [RBF kernel](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel) ಅನ್ನು ಬಳಸುತ್ತೇವೆ ಮತ್ತು ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು gamma, C ಮತ್ತು epsilon ಅನ್ನು ಕ್ರಮವಾಗಿ 0.5, 10 ಮತ್ತು 0.05 ಎಂದು ಹೊಂದಿಸುತ್ತೇವೆ. + +```python +model = SVR(kernel='rbf',gamma=0.5, C=10, epsilon = 0.05) +``` + +#### ತರಬೇತಿ ಡೇಟಾದ ಮೇಲೆ ಮಾದರಿಯನ್ನು ಹೊಂದಿಸಿ [^1] + +```python +model.fit(x_train, y_train[:,0]) +``` + +```output +SVR(C=10, cache_size=200, coef0=0.0, degree=3, epsilon=0.05, gamma=0.5, + kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False) +``` + +#### ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡಿ [^1] + +```python +y_train_pred = model.predict(x_train).reshape(-1,1) +y_test_pred = model.predict(x_test).reshape(-1,1) + +print(y_train_pred.shape, y_test_pred.shape) +``` + +```output +(1412, 1) (44, 1) +``` + +ನೀವು ನಿಮ್ಮ SVR ಅನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ! ಈಗ ಅದನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡೋಣ. + +### ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ [^1] + +ಮೌಲ್ಯಮಾಪನಕ್ಕಾಗಿ, ಮೊದಲು ನಾವು ಡೇಟಾವನ್ನು ಮೂಲ ಮಾಪಕಕ್ಕೆ ಮರುಸ್ಕೇಲ್ ಮಾಡುತ್ತೇವೆ. ನಂತರ, ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು, ನಾವು ಮೂಲ ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಸಮಯ ಸರಣಿ ಪ್ಲಾಟ್ ಅನ್ನು ಚಿತ್ರಿಸುತ್ತೇವೆ ಮತ್ತು MAPE ಫಲಿತಾಂಶವನ್ನು ಮುದ್ರಿಸುತ್ತೇವೆ. + +ಭವಿಷ್ಯವಾಣಿ ಮತ್ತು ಮೂಲ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಸ್ಕೇಲ್ ಮಾಡಿ: + +```python +# ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಪನ ಮಾಡುವುದು +y_train_pred = scaler.inverse_transform(y_train_pred) +y_test_pred = scaler.inverse_transform(y_test_pred) + +print(len(y_train_pred), len(y_test_pred)) +``` + +```python +# ಮೂಲ ಮೌಲ್ಯಗಳನ್ನು ಮಾಪನಗೊಳಿಸುವುದು +y_train = scaler.inverse_transform(y_train) +y_test = scaler.inverse_transform(y_test) + +print(len(y_train), len(y_test)) +``` + +#### ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾದ ಮೇಲೆ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪರಿಶೀಲಿಸಿ [^1] + +ನಮ್ಮ ಪ್ಲಾಟ್‌ನ x-ಅಕ್ಷದಲ್ಲಿ ತೋರಿಸಲು ಡೇಟಾಸೆಟ್‌ನಿಂದ ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ. ನಾವು ಮೊದಲ ```timesteps-1``` ಮೌಲ್ಯಗಳನ್ನು ಮೊದಲ ಔಟ್‌ಪುಟ್‌ಗೆ ಇನ್ಪುಟ್ ಆಗಿ ಬಳಸುತ್ತಿದ್ದೇವೆ, ಆದ್ದರಿಂದ ಔಟ್‌ಪುಟ್‌ಗಾಗಿ ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್‌ಗಳು ಅದರಿಂದ ನಂತರ ಪ್ರಾರಂಭವಾಗುತ್ತವೆ. + +```python +train_timestamps = energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)].index[timesteps-1:] +test_timestamps = energy[test_start_dt:].index[timesteps-1:] + +print(len(train_timestamps), len(test_timestamps)) +``` + +```output +1412 44 +``` + +ತರಬೇತಿ ಡೇಟಾದ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ: + +```python +plt.figure(figsize=(25,6)) +plt.plot(train_timestamps, y_train, color = 'red', linewidth=2.0, alpha = 0.6) +plt.plot(train_timestamps, y_train_pred, color = 'blue', linewidth=0.8) +plt.legend(['Actual','Predicted']) +plt.xlabel('Timestamp') +plt.title("Training data prediction") +plt.show() +``` + +![ತರಬೇತಿ ಡೇಟಾ ಭವಿಷ್ಯವಾಣಿ](../../../../translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.kn.png) + +ತರಬೇತಿ ಡೇಟಾದ MAPE ಅನ್ನು ಮುದ್ರಿಸಿ + +```python +print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%') +``` + +```output +MAPE for training data: 1.7195710200875551 % +``` + +ಪರೀಕ್ಷಾ ಡೇಟಾದ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ + +```python +plt.figure(figsize=(10,3)) +plt.plot(test_timestamps, y_test, color = 'red', linewidth=2.0, alpha = 0.6) +plt.plot(test_timestamps, y_test_pred, color = 'blue', linewidth=0.8) +plt.legend(['Actual','Predicted']) +plt.xlabel('Timestamp') +plt.show() +``` + +![ಪರೀಕ್ಷಾ ಡೇಟಾ ಭವಿಷ್ಯವಾಣಿ](../../../../translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.kn.png) + +ಪರೀಕ್ಷಾ ಡೇಟಾದ MAPE ಅನ್ನು ಮುದ್ರಿಸಿ + +```python +print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%') +``` + +```output +MAPE for testing data: 1.2623790187854018 % +``` + +🏆 ನೀವು ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಅತ್ಯುತ್ತಮ ಫಲಿತಾಂಶವನ್ನು ಪಡೆದಿದ್ದೀರಿ! + +### ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪರಿಶೀಲಿಸಿ [^1] + +```python +# ಲೋಡ್ ಮೌಲ್ಯಗಳನ್ನು numpy ಅರೆ ಆಗಿ ಹೊರತೆಗೆಯುವುದು +data = energy.copy().values + +# ಮಾಪನ +data = scaler.transform(data) + +# ಮಾದರಿ ಇನ್‌ಪುಟ್ ಅಗತ್ಯದ ಪ್ರಕಾರ 2D ಟೆನ್ಸರ್ ಗೆ ಪರಿವರ್ತಿಸುವುದು +data_timesteps=np.array([[j for j in data[i:i+timesteps]] for i in range(0,len(data)-timesteps+1)])[:,:,0] +print("Tensor shape: ", data_timesteps.shape) + +# ಡೇಟಾದಿಂದ ಇನ್‌ಪುಟ್‌ಗಳು ಮತ್ತು ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು +X, Y = data_timesteps[:,:timesteps-1],data_timesteps[:,[timesteps-1]] +print("X shape: ", X.shape,"\nY shape: ", Y.shape) +``` + +```output +Tensor shape: (26300, 5) +X shape: (26300, 4) +Y shape: (26300, 1) +``` + +```python +# ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ +Y_pred = model.predict(X).reshape(-1,1) + +# ವಿಲೋಮ ಮಾಪನ ಮತ್ತು ಆಕಾರ ಬದಲಿಸಿ +Y_pred = scaler.inverse_transform(Y_pred) +Y = scaler.inverse_transform(Y) +``` + +```python +plt.figure(figsize=(30,8)) +plt.plot(Y, color = 'red', linewidth=2.0, alpha = 0.6) +plt.plot(Y_pred, color = 'blue', linewidth=0.8) +plt.legend(['Actual','Predicted']) +plt.xlabel('Timestamp') +plt.show() +``` + +![ಪೂರ್ಣ ಡೇಟಾ ಭವಿಷ್ಯವಾಣಿ](../../../../translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.kn.png) + +```python +print('MAPE: ', mape(Y_pred, Y)*100, '%') +``` + +```output +MAPE: 2.0572089029888656 % +``` + + + +🏆 ಅತ್ಯುತ್ತಮ ಪ್ಲಾಟ್‌ಗಳು, ಉತ್ತಮ ನಿಖರತೆಯ ಮಾದರಿಯನ್ನು ತೋರಿಸುತ್ತಿವೆ. ಶುಭಾಶಯಗಳು! + +--- + +## 🚀ಸವಾಲು + +- ಮಾದರಿಯನ್ನು ರಚಿಸುವಾಗ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು (gamma, C, epsilon) ಅನ್ನು ಬದಲಾಯಿಸಿ ಮತ್ತು ಡೇಟಾದ ಮೇಲೆ ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ ಯಾವ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಸೆಟ್ ಪರೀಕ್ಷಾ ಡೇಟಾದ ಮೇಲೆ ಉತ್ತಮ ಫಲಿತಾಂಶ ನೀಡುತ್ತದೆ ಎಂದು ನೋಡಿ. ಈ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಬಗ್ಗೆ ತಿಳಿಯಲು, ನೀವು [ಈ ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel) ಅನ್ನು ನೋಡಿ. +- ಮಾದರಿಗಾಗಿ ವಿಭಿನ್ನ kernel ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ ಮತ್ತು ಅವುಗಳ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ವಿಶ್ಲೇಷಿಸಿ. ಸಹಾಯಕ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ [ಇಲ್ಲಿ](https://scikit-learn.org/stable/modules/svm.html#kernel-functions) ಲಭ್ಯವಿದೆ. +- ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಹಿಂದಕ್ಕೆ ನೋಡಲು ಮಾದರಿಗಾಗಿ `timesteps` ಗೆ ವಿಭಿನ್ನ ಮೌಲ್ಯಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ. + +## [ಪೋಸ್ಟ್-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಈ ಪಾಠವು ಸಮಯ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಗಾಗಿ SVR ಅನ್ವಯವನ್ನು ಪರಿಚಯಿಸುವುದಾಗಿತ್ತು. SVR ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ನೀವು [ಈ ಬ್ಲಾಗ್](https://www.analyticsvidhya.com/blog/2020/03/support-vector-regression-tutorial-for-machine-learning/) ಅನ್ನು ನೋಡಿ. ಈ [scikit-learn ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://scikit-learn.org/stable/modules/svm.html) ಸಾಮಾನ್ಯವಾಗಿ SVM ಗಳ, [SVR ಗಳ](https://scikit-learn.org/stable/modules/svm.html#regression) ಮತ್ತು ಬಳಸಬಹುದಾದ ವಿವಿಧ [kernel ಫಂಕ್ಷನ್‌ಗಳು](https://scikit-learn.org/stable/modules/svm.html#kernel-functions) ಮತ್ತು ಅವುಗಳ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಕುರಿತು ಸಮಗ್ರ ವಿವರಣೆ ನೀಡುತ್ತದೆ. + +## ನಿಯೋಜನೆ + +[ಹೊಸ SVR ಮಾದರಿ](assignment.md) + + + +## ಕ್ರೆಡಿಟ್‌ಗಳು + + +[^1]: ಈ ವಿಭಾಗದ ಪಠ್ಯ, ಕೋಡ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು [@AnirbanMukherjeeXD](https://github.com/AnirbanMukherjeeXD) ಕೊಡುಗೆ ನೀಡಿದ್ದಾರೆ +[^2]: ಈ ವಿಭಾಗದ ಪಠ್ಯ, ಕೋಡ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು [ARIMA](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA) ನಿಂದ ತೆಗೆದುಕೊಂಡಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/3-SVR/assignment.md b/translations/kn/7-TimeSeries/3-SVR/assignment.md new file mode 100644 index 000000000..e3764fa8b --- /dev/null +++ b/translations/kn/7-TimeSeries/3-SVR/assignment.md @@ -0,0 +1,31 @@ + +# ಹೊಸ SVR ಮಾದರಿ + +## ಸೂಚನೆಗಳು [^1] + +ನೀವು ಈಗಾಗಲೇ SVR ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಹೊಸ ಡೇಟಾ ಬಳಸಿ ಹೊಸದೊಂದು ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ (Duke ನಿಂದ [ಈ ಡೇಟಾಸೆಟ್‌ಗಳಲ್ಲಿ ಒಂದನ್ನು ಪ್ರಯತ್ನಿಸಿ](http://www2.stat.duke.edu/~mw/ts_data_sets.html)). ನಿಮ್ಮ ಕೆಲಸವನ್ನು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಟಿಪ್ಪಣಿ ಮಾಡಿ, ಡೇಟಾ ಮತ್ತು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ದೃಶ್ಯೀಕರಿಸಿ, ಮತ್ತು ಸೂಕ್ತ ಪ್ಲಾಟ್‌ಗಳು ಮತ್ತು MAPE ಬಳಸಿ ಅದರ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಿಸಿ. ವಿವಿಧ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಮತ್ತು ಟೈಮ್‌ಸ್ಟೆಪ್ಸ್‌ಗಾಗಿ ವಿಭಿನ್ನ ಮೌಲ್ಯಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ. + +## ರೂಬ್ರಿಕ್ [^1] + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ಸಮರ್ಪಕ | ಸುಧಾರಣೆಯ ಅಗತ್ಯ | +| -------- | ------------------------------------------------------------ | --------------------------------------------------------- | ----------------------------------- | +| | SVR ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ, ಪರೀಕ್ಷಿಸಿ, ದೃಶ್ಯೀಕರಣಗಳೊಂದಿಗೆ ವಿವರಿಸಿ ಮತ್ತು ನಿಖರತೆಯನ್ನು ಸೂಚಿಸುವ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ. | ಪ್ರಸ್ತುತಪಡಿಸಿದ ನೋಟ್ಬುಕ್ ಟಿಪ್ಪಣಿಸದಿರುವುದು ಅಥವಾ ದೋಷಗಳನ್ನು ಹೊಂದಿದೆ. | ಅಪೂರ್ಣ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | + + + +[^1]:ಈ ವಿಭಾಗದ ಪಠ್ಯವು [ARIMA ನಿಂದ ನೀಡಲಾದ ಕಾರ್ಯ](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA/assignment.md) ಆಧಾರಿತವಾಗಿದೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/3-SVR/solution/notebook.ipynb b/translations/kn/7-TimeSeries/3-SVR/solution/notebook.ipynb new file mode 100644 index 000000000..4a868f8bd --- /dev/null +++ b/translations/kn/7-TimeSeries/3-SVR/solution/notebook.ipynb @@ -0,0 +1,1035 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "fv9OoQsMFk5A" + }, + "source": [ + "# ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ರೆಗ್ರೆಸರ್ ಬಳಸಿ ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ, ನಾವು ಹೇಗೆ ಮಾಡುವುದು ಎಂದು ತೋರಿಸುತ್ತೇವೆ:\n", + "\n", + "- 2D ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು SVM ರೆಗ್ರೆಸರ್ ಮಾದರಿಗಾಗಿ ತರಬೇತಿಗೆ ಸಿದ್ಧಪಡಿಸುವುದು\n", + "- RBF ಕರ್ಣೆಲ್ ಬಳಸಿ SVR ಅನ್ನು ಜಾರಿಗೆ ತರುವುದು\n", + "- ಪ್ಲಾಟ್‌ಗಳು ಮತ್ತು MAPE ಬಳಸಿ ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ಮೋಡ್ಯೂಲ್‌ಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append('../../')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "M687KNlQFp0-" + }, + "outputs": [], + "source": [ + "import os\n", + "import warnings\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import datetime as dt\n", + "import math\n", + "\n", + "from sklearn.svm import SVR\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "from common.utils import load_data, mape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Cj-kfVdMGjWP" + }, + "source": [ + "## ಡೇಟಾ ಸಿದ್ಧತೆ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8fywSjC6GsRz" + }, + "source": [ + "### ಡೇಟಾ ಲೋಡ್ ಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "aBDkEB11Fumg", + "outputId": "99cf7987-0509-4b73-8cc2-75d7da0d2740" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2012-01-01 00:00:002698.0
2012-01-01 01:00:002558.0
2012-01-01 02:00:002444.0
2012-01-01 03:00:002402.0
2012-01-01 04:00:002403.0
\n", + "
" + ], + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2698.0\n", + "2012-01-01 01:00:00 2558.0\n", + "2012-01-01 02:00:00 2444.0\n", + "2012-01-01 03:00:00 2402.0\n", + "2012-01-01 04:00:00 2403.0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "energy = load_data('../../data')[['load']]\n", + "energy.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "O0BWP13rGnh4" + }, + "source": [ + "### ಡೇಟಾವನ್ನು ಚಿತ್ರಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 486 + }, + "id": "hGaNPKu_Gidk", + "outputId": "7f89b326-9057-4f49-efbe-cb100ebdf76d" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAH1CAYAAABbUbvGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAC4S0lEQVR4nOzdd7wU1d0G8OfcQu9dQUA6goI0RQXFimL3jb3FrjHRmNg19hJrYo29d8WKFQQFC0WlSu8gvVzqBe695/1jd/bOzk7vs/t88/GTy+7M7NnZmTOn/o6QUoKIiIiIiIgIAIqiTgARERERERHFByuJRERERERElMFKIhEREREREWWwkkhEREREREQZrCQSERERERFRBiuJRERERERElFESdQKi0KxZM9m+ffuok0FERERERBSJX375Za2UsrneewVZSWzfvj0mTZoUdTKIiIiIiIgiIYRYbPQeh5sSERERERFRBiuJRERERERElMFKIhEREREREWUU5JxEIiIiIiIiANi1axeWLVuG8vLyqJMSiFq1aqFNmzYoLS21vQ8riUREREREVLCWLVuG+vXro3379hBCRJ0cX0kpsW7dOixbtgx77rmn7f043JSIiIiIiApWeXk5mjZtmncVRAAQQqBp06aOe0lZSSQiIiIiooKWjxVEhZvvxkoiERERERFRhOrVq+fLcW6//XY89NBDno/DSiIRERERERFlsJJIREREREQUA1JKXHvttejZsyf23ntvvPPOOwCALVu24LDDDkOfPn2w99574+OPP87sc88996BLly446KCDMHv2bF/SweimREREREREAO74dAZ+/2OTr8fca/cGuO24Hra2HT58OCZPnowpU6Zg7dq16N+/PwYPHozmzZvjww8/RIMGDbB27Vrsv//+OP744/Hrr7/i7bffxuTJk1FRUYE+ffqgb9++ntPMnkQiIiIiIqIYGDduHM444wwUFxejZcuWOPjggzFx4kRIKXHTTTdhn332weGHH47ly5dj1apVGDt2LE466STUqVMHDRo0wPHHH+9LOtiTSEREREREBNju8QvbG2+8gTVr1uCXX35BaWkp2rdv73hZCyfYk0hERERERBQDgwYNwjvvvIPKykqsWbMG33//PQYMGICysjK0aNECpaWlGD16NBYvXgwAGDx4MD766CNs374dmzdvxqeffupLOtiT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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IPuNor4eGwYY" + }, + "source": [ + "### ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾ ರಚಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "ysvsNyONGt0Q" + }, + "outputs": [], + "source": [ + "train_start_dt = '2014-11-01 00:00:00'\n", + "test_start_dt = '2014-12-30 00:00:00'" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 548 + }, + "id": "SsfdLoPyGy9w", + "outputId": "d6d6c25b-b1f4-47e5-91d1-707e043237d7" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAITCAYAAACqpFnEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9d7gkyVUmjL+RmVV1bdvpHitpRiOLJCQhCdCHkxAsEny4FQiz2mXNhzD74yfWsAgjFrMLfBghBAtIeCuMkLBCFllkRjNyYzTe9vS073v7+qrKjO+PyBMZmRURGSdv3+rb3fE+Tz/3dt2Kyqw0kXHO+573CCklIiIiIiIiIiIiIiIiIiIAILnQOxARERERERERERERERGxexCDxIiIiIiIiIiIiIiIiAiNGCRGREREREREREREREREaMQgMSIiIiIiIiIiIiIiIkIjBokRERERERERERERERERGjFIjIiIiIiIiIiIiIiIiNDILvQOXAhcccUV8vrrr7/QuxEREREREREREREREXFBcMstt5ySUh6y/e2yDBKvv/563HzzzRd6NyIiIiIiIiIiIiIiIi4IhBAPuf4W5aYRERERERERERERERERGjFIjIiIiIiIiIiIiIiIiNCIQWJERERERERERERERESExmVZkxgRERERERERERERcXljNBrhyJEj2NzcvNC7sqOYmZnBddddh16vFzwmBokREREREREREREREZcdjhw5gsXFRVx//fUQQlzo3dkRSClx+vRpHDlyBDfccEPwuCg3jYiIiIiIiIiIiIi47LC5uYmDBw9esgEiAAghcPDgQTZbGoPEiIiIiIiIiIiIiIjLEpdygEjo8h1jkBgRERERERERERERETFlLC0t4Td+4zfY4772a78WS0tL53+HDMQgMSIiIiIiIiIiIiIiYspwBYnj8dg77u1vfzv27du3Q3ulEI1rIiIiIiIiIiIiIiIipozXvOY1uO+++/Cc5zwHvV4PMzMz2L9/P+68807cfffd+KZv+iY88sgj2NzcxKtf/Wq86lWvAgBcf/31uPnmm7G6uoqXvexl+NIv/VJ85CMfwbXXXou//du/xezs7Lb3LQaJERERERERERERERGXNX7q72/HHUfPndfP/Lxr9uB/fv0znH//+Z//edx222349Kc/jfe///34uq/7Otx2223ahfT3fu/3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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \\\n", + " .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \\\n", + " .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XbFTqBw6G1Ch" + }, + "source": [ + "### ತರಬೇತಿಗಾಗಿ ಡೇಟಾ ಸಿದ್ಧಪಡಿಸುವುದು\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಈಗ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ತರಬೇತಿಗಾಗಿ ತಯಾರಿಸಲು ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ಸ್ಕೇಲಿಂಗ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cYivRdQpHDj3", + "outputId": "a138f746-461c-4fd6-bfa6-0cee094c4aa1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training data shape: (1416, 1)\n", + "Test data shape: (48, 1)\n" + ] + } + ], + "source": [ + "train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]\n", + "test = energy.copy()[energy.index >= test_start_dt][['load']]\n", + "\n", + "print('Training data shape: ', train.shape)\n", + "print('Test data shape: ', test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಡೇಟಾವನ್ನು (0, 1) ಶ್ರೇಣಿಯಲ್ಲಿ ಮಾಪಿಸಿ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "3DNntGQnZX8G", + "outputId": "210046bc-7a66-4ccd-d70d-aa4a7309949c" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-11-01 00:00:000.101611
2014-11-01 01:00:000.065801
2014-11-01 02:00:000.046106
2014-11-01 03:00:000.042525
2014-11-01 04:00:000.059087
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-11-01 00:00:00 0.101611\n", + "2014-11-01 01:00:00 0.065801\n", + "2014-11-01 02:00:00 0.046106\n", + "2014-11-01 03:00:00 0.042525\n", + "2014-11-01 04:00:00 0.059087" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scaler = MinMaxScaler()\n", + "train['load'] = scaler.fit_transform(train)\n", + "train.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "26Yht-rzZexe", + "outputId": "20326077-a38a-4e78-cc5b-6fd7af95d301" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-12-30 00:00:000.329454
2014-12-30 01:00:000.290063
2014-12-30 02:00:000.273948
2014-12-30 03:00:000.268129
2014-12-30 04:00:000.302596
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-12-30 00:00:00 0.329454\n", + "2014-12-30 01:00:00 0.290063\n", + "2014-12-30 02:00:00 0.273948\n", + "2014-12-30 03:00:00 0.268129\n", + "2014-12-30 04:00:00 0.302596" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test['load'] = scaler.transform(test)\n", + "test.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x0n6jqxOQ41Z" + }, + "source": [ + "### ಕಾಲಚರಣಗಳೊಂದಿಗೆ ಡೇಟಾ ರಚನೆ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fdmxTZtOQ8xs" + }, + "source": [ + "ನಮ್ಮ SVR ಗಾಗಿ, ನಾವು ಇನ್‌ಪುಟ್ ಡೇಟಾವನ್ನು `[batch, timesteps]` ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸುತ್ತೇವೆ. ಆದ್ದರಿಂದ, ನಾವು ಇತ್ತೀಚಿನ `train_data` ಮತ್ತು `test_data` ಅನ್ನು ಪುನರ್‌ರೂಪಗೊಳಿಸುತ್ತೇವೆ ಹಾಗಾಗಿ ಒಂದು ಹೊಸ ಆಯಾಮವು timesteps ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ. ನಮ್ಮ ಉದಾಹರಣೆಗೆ, ನಾವು `timesteps = 5` ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ. ಆದ್ದರಿಂದ, ಮಾದರಿಯ ಇನ್‌ಪುಟ್‌ಗಳು ಮೊದಲ 4 timesteps ಗಾಗಿ ಡೇಟಾಗಳಾಗಿದ್ದು, ಔಟ್‌ಪುಟ್ 5ನೇ timestep ಗಾಗಿ ಡೇಟಾಗಿರುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "Rpju-Sc2HFm0" + }, + "outputs": [], + "source": [ + "# Converting to numpy arrays\n", + "\n", + "train_data = train.values\n", + "test_data = test.values" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Selecting the timesteps\n", + "\n", + "timesteps=5" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "O-JrsrsVJhUQ", + "outputId": "c90dbe71-bacc-4ec4-b452-f82fe5aefaef" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1412, 5)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Converting data to 2D tensor\n", + "\n", + "train_data_timesteps=np.array([[j for j in train_data[i:i+timesteps]] for i in range(0,len(train_data)-timesteps+1)])[:,:,0]\n", + "train_data_timesteps.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "exJD8AI7KE4g", + "outputId": "ce90260c-f327-427d-80f2-77307b5a6318" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(44, 5)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Converting test data to 2D tensor\n", + "\n", + "test_data_timesteps=np.array([[j for j in test_data[i:i+timesteps]] for i in range(0,len(test_data)-timesteps+1)])[:,:,0]\n", + "test_data_timesteps.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "2u0R2sIsLuq5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1412, 4) (1412, 1)\n", + "(44, 4) (44, 1)\n" + ] + } + ], + "source": [ + "x_train, y_train = train_data_timesteps[:,:timesteps-1],train_data_timesteps[:,[timesteps-1]]\n", + "x_test, y_test = test_data_timesteps[:,:timesteps-1],test_data_timesteps[:,[timesteps-1]]\n", + "\n", + "print(x_train.shape, y_train.shape)\n", + "print(x_test.shape, y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8wIPOtAGLZlh" + }, + "source": [ + "## SVR ಮಾದರಿ ರಚನೆ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "EhA403BEPEiD" + }, + "outputs": [], + "source": [ + "# Create model using RBF kernel\n", + "\n", + "model = SVR(kernel='rbf',gamma=0.5, C=10, epsilon = 0.05)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GS0UA3csMbqp", + "outputId": "d86b6f05-5742-4c1d-c2db-c40510bd4f0d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "SVR(C=10, cache_size=200, coef0=0.0, degree=3, epsilon=0.05, gamma=0.5,\n", + " kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Fit model on training data\n", + "\n", + "model.fit(x_train, y_train[:,0])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Rz_x8S3UrlcF" + }, + "source": [ + "### ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XR0gnt3MnuYS", + "outputId": "157e40ab-9a23-4b66-a885-0d52a24b2364" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1412, 1) (44, 1)\n" + ] + } + ], + "source": [ + "# Making predictions\n", + "\n", + "y_train_pred = model.predict(x_train).reshape(-1,1)\n", + "y_test_pred = model.predict(x_test).reshape(-1,1)\n", + "\n", + "print(y_train_pred.shape, y_test_pred.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_2epncg-SGzr" + }, + "source": [ + "## ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ವಿಶ್ಲೇಷಣೆ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1412 44\n" + ] + } + ], + "source": [ + "# Scaling the predictions\n", + "\n", + "y_train_pred = scaler.inverse_transform(y_train_pred)\n", + "y_test_pred = scaler.inverse_transform(y_test_pred)\n", + "\n", + "print(len(y_train_pred), len(y_test_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xmm_YLXhq7gV", + "outputId": "18392f64-4029-49ac-c71a-a4e2411152a1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1412 44\n" + ] + } + ], + "source": [ + "# Scaling the original values\n", + "\n", + "y_train = scaler.inverse_transform(y_train)\n", + "y_test = scaler.inverse_transform(y_test)\n", + "\n", + "print(len(y_train), len(y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "u3LBj93coHEi", + "outputId": "d4fd49e8-8c6e-4bb0-8ef9-ca0b26d725b4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1412 44\n" + ] + } + ], + "source": [ + "# Extract the timesteps for x-axis\n", + "\n", + "train_timestamps = energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)].index[timesteps-1:]\n", + "test_timestamps = energy[test_start_dt:].index[timesteps-1:]\n", + "\n", + "print(len(train_timestamps), len(test_timestamps))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(25,6))\n", + "plt.plot(train_timestamps, y_train, color = 'red', linewidth=2.0, alpha = 0.6)\n", + "plt.plot(train_timestamps, y_train_pred, color = 'blue', linewidth=0.8)\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.title(\"Training data prediction\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LnhzcnYtXHCm", + "outputId": "f5f0d711-f18b-4788-ad21-d4470ea2c02b" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAPE for training data: 1.7195710200875551 %\n" + ] + } + ], + "source": [ + "print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 225 + }, + "id": "53Q02FoqQH4V", + "outputId": "53e2d59b-5075-4765-ad9e-aed56c966583" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10,3))\n", + "plt.plot(test_timestamps, y_test, color = 'red', linewidth=2.0, alpha = 0.6)\n", + "plt.plot(test_timestamps, y_test_pred, color = 'blue', linewidth=0.8)\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "clOAUH-SXCJG", + "outputId": "a3aa85ff-126a-4a4a-cd9e-90b9cc465ef5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAPE for testing data: 1.2623790187854018 %\n" + ] + } + ], + "source": [ + "print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DHlKvVCId5ue" + }, + "source": [ + "## ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್ ಭವಿಷ್ಯವಾಣಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cOFJ45vreO0N", + "outputId": "35628e33-ecf9-4966-8036-f7ea86db6f16" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tensor shape: (26300, 5)\n", + "X shape: (26300, 4) \n", + "Y shape: (26300, 1)\n" + ] + } + ], + "source": [ + "# Extracting load values as numpy array\n", + "data = energy.copy().values\n", + "\n", + "# Scaling\n", + "data = scaler.transform(data)\n", + "\n", + "# Transforming to 2D tensor as per model input requirement\n", + "data_timesteps=np.array([[j for j in data[i:i+timesteps]] for i in range(0,len(data)-timesteps+1)])[:,:,0]\n", + "print(\"Tensor shape: \", data_timesteps.shape)\n", + "\n", + "# Selecting inputs and outputs from data\n", + "X, Y = data_timesteps[:,:timesteps-1],data_timesteps[:,[timesteps-1]]\n", + "print(\"X shape: \", X.shape,\"\\nY shape: \", Y.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "id": "ESSAdQgwexIi" + }, + "outputs": [], + "source": [ + "# Make model predictions\n", + "Y_pred = model.predict(X).reshape(-1,1)\n", + "\n", + "# Inverse scale and reshape\n", + "Y_pred = scaler.inverse_transform(Y_pred)\n", + "Y = scaler.inverse_transform(Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 328 + }, + "id": "M_qhihN0RVVX", + "outputId": "a89cb23e-1d35-437f-9d63-8b8907e12f80" + }, + "outputs": [ + { + "data": { + "image/png": "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/vvvj1/96ldYt25duq5TTjkFEydOBAAMHjwYRx55JA4//HCcfvrpWLp0KXr16oXnnnsOPXv2xJgxY7B+/XpccsklOProo3H00Ufjhx9+AABUV1fjzDPPxMEHH4zrr78eQgglv7WdkloIIYQQQgghhESX2lpg8mTghBMy2zZvDq8/hBBCCCGEEOXEYjF88803OPvsswEAkydPxsyZM9GjRw/06dMH22yzDSZMmICWlhYcf/zxOPPMMzFlyhTMmzcPs2fPRlVVFQ466CD88Y9/zKp3/fr1uOGGGzB69Gj06NEDNTU16NatG26++WZ06dIFd955JwDgyiuvxN/+9jeccMIJWL58Oc466yzMmTMH//73v3HCCSfggQcewNdff42+ffsq+b1UcBFCCCGEEEJIqfPMM0B1NfDxx2H3hBBCCCGEkJJG09TX6ebwtHnzZvTs2RNAwoPruuuuw9ixY3HMMcegR48eAIAhQ4Zg+vTp6fxadXV1WLBgAUaPHo3f/e53qKysxC677ILTTjstp/5x48bhpJNOStfVrVs3y3589913WTm76uvrsWnTJowePRqfJSNInHvuuejataun328HFVyEEEIIIYQQUupUV4fdA0IIIYQQQsoCRdH3PJHKwWVmyy23TH8WQuDFF1/EWWedlVVm0KBByvqh6zrGjRuHTp06KavTCebgIoQQQgghhBBCCCGEEEIIKWHOOussvPrqq2hrawMAzJ8/H42NjTjppJPw0UcfIR6PY82aNRgxYkTOsccddxxGjx6NJUuWAABqamoAAFtttRUaGhrS5c4880y8+OKL6e8ppdtJJ52EDz74AADwzTffoLa2VslvooKLEEIIIYQQQgghhBBCCCGkhLn++utx0EEH4cgjj8QhhxyCm266CbFYDBdddBH2228/HHTQQbj66qvxi1/8IufYHXbYAX369MHFF1+Mww8/HJdffjkA4De/+Q0GDBiAnj17YsyYMXjhhRcwceJEHHbYYTjooIPQq1cvAMCDDz6I0aNH4+CDD8Znn32GPfbYQ8lv0kQY/nKSHHXUUWLixIlhd4MQQgghhBBCipubbnLe37t3YfpBCCGEEEJIiTFnzhwceOCBYXejJLA6l5qmTRJCHGVVnh5chBBCCCGEEFLuRNjwkRBCCCGEEEKsoIKLEEIIIYQQQgghhBBCCCGEFBVUcBFCCCGEEEJIuaPrYfeAEEIIIYQQQjxBBRchhBBCCCGElDsMUUgIIYQQQohvBNfTgfFzDqngIoQQQgghhBBCCCGEEEII8UGnTp1QXV1NJVcAhBCorq5Gp06dPB3XLk/9IYQQQgghhBBSLPBlnBBCCCGEEF/stttuWLlyJdavXx92V4qaTp06YbfddvN0DBVchBBCCCGEEEIIIYQQQgghPmjfvj169OgRdjfKEoYoJIQQQgghhJByhx5chBBCCCGEkCKDCi5CCCGEEEIIKXeo4CKEEELCYeVKYNmysHtBCCFFCUMUEkIIIYQQQgghhBBCSBg88kji/8svA+0oqiWEEC9IeXBpmrZU07QZmqZN1TRtYnJbN03ThmqatiD5v2tyu6Zp2guapi3UNG26pmlHGur5Q7L8Ak3T/pCfn0QIIYQQQgghxBP04CKEEELCJRYLuweEEFJ0eAlReKoQoqcQ4qjk97sBDBNC7AdgWPI7AJwDYL/k340AXgUSCjEADwI4FsAxAB5MKcUIIYQQQgghhBBCCCGkbKGxCSGEeCZIDq4LALyd/Pw2gAsN298RCcYB2FbTtJ0BnAVgqBCiRghRC2AogLMDtE8IIYQQQgghRAW6HnYPCCGEkPKGCi5CCPGMrIJLABiiadokTdNuTG7bSQixJvl5LYCdkp93BbDCcOzK5Da77YQQQgghhBBCCCGEEFJeGJVaVHARQohnZDMXniCEWKVp2o4AhmqaNte4UwghNE1TMgonFWg3AsAee+yhokpCCCGEEEIIIU5QqEYIIYSEC72pCSHEM1IeXEKIVcn/6wAMQCKHVlUy9CCS/9cli68CsLvh8N2S2+y2m9vqI4Q4Sghx1A477ODt1xBCCCGEEEIIIYQQQkgxQAMTQggJhKuCS9O0LTVN2yr1GcCZAGYCGAjgD8lifwDwRfLzQABXawmOA1CXDGX4LYAzNU3rqmla12Q93yr9NYQQQgghhBBCvEMBGyGEEFJ4jF5bnIsJIcQzMiEKdwIwQNO0VPkPhBCDNU2bAOBjTdOuA7AMwGXJ8oMA/BrAQgBNAK4FACFEjaZpjwCYkCz3sBCiRtkvIYQQQgghhBDiDwrVCCGEEEIIIUWGq4JLCLEYwOEW26sBnG6xXQC4xaauNwC84b2bhBBCCCGEEEIIIYQQUkIYDUxobEIIIZ6RysFFCCGEEEIIIaSEoVCNEEIIKTxUcBFCSCCo4CKEEEIIIYQQQgghhJBCE5ZSa8oU4OOPs3OAEUJIESKTg4sQQgghhBBCSClDq3FCCCGk8ITlwdWrV+L/nnsCxx5buHYJIUQx9OAihBBCCCGEkHKHCi5CCCGk8IQ9/1ZXh9s+IYQEhAouQgghhWXNGqCpKexeEEIIIcRI2AI2QgghpBxhDi5CCAkEFVyEEEISbN4MvPwyMHVq/tqoqgIeegi45578tUEIIYQQQgghhBQDVHARQkggqOAihBCSYMgQYPp04NVX89fG/PmJ/83N+WuDEEIIKWUWLwaefTbhEa0SCtUIIYSQwsP5lxBCAkEFFyGEkASbN+e/DV3PfxuEEEJIKfPUU8C8eZnk8KqggI0QQggpPGF7cHH+J4QUOVRwEUIISaBpYfeAEEIIIbKsXRt2Dwgh+aa5mQZihJQ6VDARQkggqOAihBCSwKjgamzMTxtcvBNCCCHRhHM0IdGiuRm47TbgwQfD7gkhpFDQg4sQQjxDBRchhJAERgXXHXcA69eH1xdCCCGEOLP//mH3gBCST1asSPxfty7cfhBC8kvYIQoJIaTIoYKLEEKINVOnqq+TC3ZCCCEkMR/GYsHrUAnnaEKiBcOHE1IecP4lhJBAUMFFCCEkQYVpSggqeCOEEEKINU8/DdxyC9DSEnZPMlDARki0oIKLEFIIOP8TQoocKrgIIYQkML9E86WaEEIIyQ+LFyf+v/VWIs+OH+jBRUhpw7U4IeUH52JCCPEMFVyEEEISFELBxQU7IYQQkmHyZOD998PuBSGEEEIIIYQUJVRwEUJI2EyeDMyZE3YvCmMlSgUXIYQQko3fNQA9uAgpbejBRUj5EcZczPmfEFLktAu7A4QQUtY0NwO9eyc+v/IKUFkZXl8YopAQQggpHqjgIqS04VqckPKgtTXzmXMxIYR4hh5chBASJm1t1p/DgC/RhBBCSOGhMIsQYgXX5oSUPvX1wP33h9sHrkMIIUUOFVyEEBImup75HI+H1w+AHlyEEEJIGERFsBSVfhBCCCHlwtSp2d/t5uIFC4DHHgNWrMh7lwghpNiggosQQsLEqOAyfg6DQii4KDwjhBBCsvE7N3JOJSQabNoEvPwyMHt22D0hhBQbsu/c//kPsHw58Oqr6vvA9QQhpMihgosQQsLEqNR6912gpSW8vhBCCCEk/0RVkBTVfhESdb74Apg+HXj++bB7Qggpdtzm4uZm9W2GbWhLCCEBoYKLEELCxBiWcNo04JtvwuuLGYYoJIQQQtRjFiT5FSwpUkhpfXpjSf12VHAR4pfNm8PuASGkVAhjLub8TwgpcqjgIoSQsGhpAfr2zd5WWxtOX4DCLGy5eCaEEFLuqLKU9jinPj7lHNww+veW+zY0d+EcTYhfKivD7gEhpFjxOvdyriaEkByo4CKEkLAYNQpYujR7W6l7TXFBTgghpNwxem8DBZv7X551Ml6feyK0Pr1z9lVonJ8J8U2pr98JIYXD7X2Z4QQJISQHKrgIISQsmppytxXyBbmqCnjhhVwlW4oKThGEEEKIclQpuBQajVDBRQghhBQBNBglhJAcKL0khJAoUUgFV//+wKxZwBNPFK5NLsgJIYSUO2br6wh4f1RqtAgnhBBCQieIB9fGjUAsprQ7hBBSDFDBRQghUaKQQq716533R0DgRgghhJQcZg+uCKDRg0sOGuoQQghRiXlecZtn7PZXVwN33QU8/LCafhFCSBFBBRchhISF1eK0kIITvwmxN2wAXnsNWLnS23Hz5gGffeavTUIIIaRUMM/1IYQo/NOYK/HdygOU1VcW6Drw2GPAO++E3RMSNWgURggpFHYeXAsWJP5XVRWuL4QQEhGo4CKEkChRDMKlvn2BiROBp5/2dtyzz+anP4QQQkgxE4KCq9eck/Ha3BN9H1+WLFsGrFgB/PBD2D0h5UifPkBLS9i9IISoxqsHl52Ci4p2QkgZQwUXIYREiSgpuCpspoiamsR/vmQTQggh3gljrndpUwgtWmuQKELhIQmTSZOA777L3rZyJdDQEE5/CCHRgnM4IaSMaRd2BwghpGyxWoQ6JY3NN7KLYjvFFyGEEEK8E4IHFwB8vPgojHp3v0RVoPLGE0JQ4UUKj1GZtW4d8Mgjic+9e4fTH0KIevzO7UHkCFSOEUKKHEopCSGEeIMCHUIIIcQ/qnJwKaBq8zahta2EhobCebAYr1PKm50QoHDPcDye+bxmTWHaJIQUFjdlE9/FCSEkByq4CCEkSoRpPWVu+/33gfnzw+kHrcgIIYSUCyF5cBU9QgB33pn4K/S5oICRhE1lZdg9IISoQNX8ZayHqQQIIWUGFVyEEELs+e9/c7flU4gkBPDMM8Czz+avDUIIIaQUUD0fF7PCjAouQoLT3JwIdzh9etg9IaR88TufGY/761+BtjbXQ2J6BVrjVJYTQoofKrgIISQsrBavxSBcMvZx2jS1dcfjwKJFCc+xYjgXhBBCSDHgMqcW5ZRr7HQsVti2qeAipcjQodBuvgmj/jUk7J4QQuywm3/ME/nata5V/d/w67D3h48p6BQhhIQLFVyEEFKuqJBmvfJK8DrsKLSwihBCCCkCnpx6Fir6vOr5OCedjIAGDBgQoFchoOuZz1wzkDJkSf122NjSWV2FjY0AgOk1u6mrkxDiDRUeXED2HGnDpA17YFVjV3/tEUJIhKCCixBCokQxmFDnO0RhColFOSGksCya04q+z9UDs2Yxvj8hfgk4j07esAcEKtTPx3PnAuvWqa0znxh/f6HXTxV8jSbhs/eHj+P/hl8XdjcIIUFIzl+//uZWPDHlbP/zmfndWaKeCq0IZA+EECIBV+aEEBIWYSuzzKbcYfcHyF6YR6E/hJAsnrxiKq6/Y2sse+y9/HpwElJORGm+KybFdaEVXFG6TiRaaBoW129f2FskuY6vbd1CTX31SeMVQkhhSQ4c36w4FP0WHe0+18iGKJRAA+c1QkhpQAUXIYSERdiCkrDbtyJMa2xCiDutCeH3Xv2ewIKfakLuDCElgsf5Li3a8nycRPmZMz3VGSqF9vo2tkcPLmJE17HPh4/h25UHh90T/9x/f9qDkytwQgqIYf6K6RXAf/+b8Ki2Q6GCS8mxhBASAbgyJ4SQKFEMi8tChSgshnNBSBnTHG8XdhcIKVqmVe+GNU1b+zo2rajyMk+6lE3vnTLFV59CgR5cJAp8/jkwdiwAoKGtY37byuM9WL2xEv8af0He6ieE2GB4ruMiKaLt0ydQPZbfLWCIQkJIqUAFFyGEhMyMml1Q39op8aUYhCdUcBFCCCGB6Pnp/bjsuxt9Hav5FEjZ2HwDAITQUh981R0KRq+tQntwFdN5Ivnlm2/SH+N68YpXhqw8CI9P/XXY3SCk/DDMX2kFlx8vYR8KLoYoJISUCsW7AiOEkGInueg8rP+DuOuni0PuTESg8IgQQkipk5zfWnx6QaYtrj16cEkpxo4/3lefQoEeXCRi6I5qZAUYQ5PZhSlTQGNbR1RV5a16QogRq7nFyWhDVYjCXr3yOYwUjro6oKEh7F4QQkKGCi5CCIkAzfH2YXfBmi0sElfTg4sQQggJjJ6y1Pabg8ujZMrJUlukat1yS091hoYQwIwZ2d8L0SYhDqQ9IRVy8ZCbce/4C50Lvf460NKirM17J1yE7t2VVUcIcUKVB7IXDy4hgClTit+DKx4H/vlP4M47w+4JISRkqOAihJAIUKElF7ZhCk+EwNyNO+W9mf9MOwOt8UrbPlh+JoQQQkqF5PxW6FlOSh9WLHPv1KnAm29mvhciRCEpb1pagCeeAIYNsy2i50HBNWDpEXh/4TG5O5IP9I9V+0C74Xpg+HDlbRNCCouUkrytDfj4Y6uD5RuKxQA4hy4uCpqbM5+LZf1CCMkLVHARQkhYGBZhHyw8Bl3feja09lMc+PHD2NjS2bFM0MXjP376LeZulDAL5SKVEEJICePX2yOvFtfFMvfOm5f9nR5cJN/88AOwdKm1YDlJvkIULt+0Hfb78GHne7CpKVAbvLsJCQk/c4uDol2K1lYA/nN6Roakog5AwpuLEFK2+Av8TgghRCnN8Q5ojncIV3iStARt1V2mBgV9lFpMU5BESOQoektPQiJE3vP1mJBSjBXL3GsWZBXag6tYzhNRh43wVAhgScP2eW9+Yb1LlAXek4QUPYGeYrObttOYUCrKoLa2zGd6chNS1tCDixBCwiIP3lGB2k9+jxstyvPUnwq75TtDFBJSNOQj1wgh5cS06t2x1ZvP+5/vqqqAgQPlygrhqE4ruinXLJwruh9ASoVvVhyCfT58DEB5zIvV1cDq1WH3gpASx2OOTctjnObFpDKo6HNwJT3RAHAdQEiZQwUXIYSQLOK6y9SgYPFYUezhEAiJADU1wLp1YfeCEBKETW2dPB+T5QX99ddK+pFWfxWLgMgYlggojOV2sZwbUjC++w6YvGGPsLsBAHh31B5BoxTmYuHlcdppwK67Km6HEJKNCgWXE8n5zE8zkYIeXISQJFRwEUJIuWLrwZX/qUHThLugyLxI3biRwiVCDJx4bCt22qkEXk4JKTds5t98U1Lhgc0KLubgIvnGYrI94wzg/okXhNAZ5PTn6peOwTffKG5jxYqcTTSsIUQxYcwtpTKfyUR/EYLKL0LKACq4CCEkLKIWojC1GRpWbOqK3w//o6fjvDUtIZE3tjN7NnDXXcBHHwVum5CSIB7H6uVt7uUUsvPOwNvzjytom4QQEytX5m6rrZU6tOhDERmhsIqEwMK6HRDXNQgBHH987n7nQKBy1NQYHKc8rrkL+Rqxfn3h2iKkZInFgAUL8lO304CQ8uBKrQuKVeFl7LfduuDFF4G//S07nCEhpOSggosQQkgWQgDfrToQ7y881lEJd+e4S7CxpbO/NqwEAG1twDvvWB8weHDi/4gRvtojpOQwv8StXZv3JteuBVr19nlvh5Cyw4tg6ZFHcrfdfTewaJHzcU1Nct6epSDkKkQbxXqeSCD2++hRvDHveOg6MHZsftrYbruEPDYSONznO+5YwH4QUqq8/z4wb56aurzMS2kFV5Ejo+CaNQtobgaWLi1Ilwgh4UAFFyGElCNjxyaS01sgoElZef93+pkYs3Y/X80LgdxF+OTJwIwZme/GRWplZebzZ5/5apOQksZOOUwIKTksBVKff+4s3PrnPx3ndqprCJGjavPWtvv6Lz4SL78U/GlatSpwFWqwGFMYFpkQhSQ15Vqf3gCcvUD7LTw6XS4wpWik4fabSvE3E0LSSCu4NE2r1DRtiqZpXyW/v6Vp2hJN06Ym/3omt2uapr2gadpCTdOma5p2pKGOP2iatiD59wflv4YQQoqdQi283n7bvgseqtFlQg1atmFxnDmov/FctGuX+fztt77aJKSksUgETwgpTSxzac2fD0yd6rvORyafiz9//7viFQAVImRhsZ4bEhwhgMZGAIm1r52SZ9CKQ3HrXzT/90qyjbSGy6keapoIKV0snu+5G7s7HyMEZtbskvXdqWyimRKa19zWAZzDiZnx44Hvvgu7F0QRXjy4bgMwx7TtH0KInsm/qclt5wDYL/l3I4BXAUDTtG4AHgRwLIBjADyoaVrXAH0nhJDiJuwcXDZtC6E5L3YNfYwLf47AAsgVyPNFnRBCSDkQcK63nS1HjfJ3HICvlx+GV2efUjwCoDDWDAxRWL689RYwaFD6q+vl37jRXztDhybqnzULeO457/fZlCn+2rXhvc+7KK2PEOKM0yPfvsL07mxR+ND+D2Jpw3bulZVKiEIjbgquOWZxNil7+vYFPvnE/5xNIoWUZFLTtN0AnAvgdYniFwB4RyQYB2BbTdN2BnAWgKFCiBohRC2AoQDO9tlv4sLLLwOnHtMI3HcfY80SQixZv7mLZZiD8wbfiocnnZf44vJi7duDS2jA3/+eSKxrx3PPZSxZmUyekJLhqquAjz4KuxeERAiPQmzbUINOcyokLbWLVXFTrP0mxcG4cemPTiHE0rg8i7YY17tz5wLLl9uXtVLyjh/vr10brvq7c6Kt004DPv5YaZOEEBsqNbn34ZZ4O/dCpfJu7cXwJJXTu6EB+PHHRP5vQgCgpSXsHhAFyJre/w/APwGYR8HHkmEIn9M0rWNy264AVhjKrExus9tO8kD//sDICVsC69cntF2EkOKggAKaplgHy+3z6rpjccMO9gcq8eDSEguJNWty9n29/BBMWLcnUFsLfPllTpuW3wkhRcN77wFvvBF2LwgJEc5hwZH14Fq6NDHg1NcHb5PXjaQYMcJ5v9+wwcacs4Dne64gd2hba/rjiBHAgAGFaJSQMsNijstRcNm8Hw9deSAGrziYIQrtePHFhFfuF1/ktTukiOD6riRwlUxqmnYegHVCiEmmXfcAOADA0QC6AbhLRYc0TbtR07SJmqZNXL9+vYoqiV8LMkJIftE0NLZZK5kKQYdKibEhT2EUszy/TPWdN/gvuHL4dYkvTU3JA0rEyowQVQiR/e4bwsJ87eat4XepxvcIQgx49eCyE0i5KH1sPb+KEfNvtTqHDQ3AE08AP/1EKTwJxIpNXdNRD4asPBD//VeNmordnv0CTpZCIirDd98BsU3NBegNIeVJ2kPUYj6vkFRG/WXs73DON391aSgVorCE1gWy4+WyZYn/M2bkry+kKHhx5qnFnX+WZCFjen88gPM1TVsK4EMAp2ma9p4QYk0yDGELgDeRyKsFAKsA7G44frfkNrvtWQgh+gghjhJCHLXDDg4eBMSZdesyn/mwEhJJ2mIaurz5YvbGAj6vlVoq55b3YxfW7eD7WMBgYdrcDNx9N9CvX1ZlMZG0YE1ZwJobosKLkNA5a9DtOPZYNXWtWcM0fITIknpU3l9wjKPBSM5xMs9Ysb43WPX7zjsznzdtUtLGmDX7oq61U/GeJ+KL5Zu6pT+PrdoXd42/xPkAmfvjgw+Ae+5xDo0UgftMCGDgwMT4ccYZwPrmrcPuEiFlSY6CK8j4YM7BFYGxxhfGfnuVD/j1tCUlwwszTy2u/LPEEVcFlxDiHiHEbkKIvQBcAWC4EOL3ybxa0DRNA3AhgJnJQwYCuFpLcByAOiHEGgDfAjhT07SumqZ1BXBmchvJA9pGg1WZz4f1sMPotUtIPpGK4Z/P9pNDQ5temb3BheUNXbHfR48GbDv526dOTST1HDkya39MT05PdgtVLkJIuRORZ8CvB5dZ0F6jyBiekHIg5cH1+xHXYXXjNpkdbgquUrLUTg4iM2p2weL67d3HRBUadCFw0pf/wKOTzw1eFyGjRiXCcU+fntmWvE9jemUij86SJZ6qlPHCssPOM1QIYN48f3XW1tJJghCvNMXaW273rOAqhxCFXnJwEWIiZfBN4+nSwF/ylATva5o2A8AMANsDSEk7BwFYDGAhgNcA/BkAhBA1AB4BMCH593ByG8kju7//hG/DhBkzgCFD1PaHEJLBcg0WwsIsreCSpDWeKe9XSZc+zphrwOjB5aZ04yKEkEjg24uT76CEeMdscQ3TPOyq4JJvo1g4rP+DOO5zi0j55nWCwt9VXGeIBEFF6jZX2toyn5MKrudnno5ubz8LTJhgf1wRuD3/+c8Jo1k7hABOP71w/SEk6izftB22fOMly30V5hxcZrzkrC4FD66mJuCrrzLfKR8gHkk/U8V4/5McPCm4hBAjhRDnJT+fJoQ4VAhxiBDi90KITcntQghxixBin+T+iYbj3xBC7Jv8e1PtTyFWrGzshljc/+J3wgTgoYfU9YcQUiCEcJ2oU0KxtHAsT/m2LNtOVVthPQ3F3SxQuQghpLA0Niqtbvly4MknlVZJSPHgRQhlJCm8MXpiCQAT1++ZyA9kV08pzpkG4X5zvH3ubzQqDQA1gq9SPI/EkW22AX79a+Bhr157Cu6VpljHwHWoIMhPaXZJ1xWLAcOH+6+fkJLFKgeX2bwiYIjCVY3bYnPc2lvMb50F5aOPgLlz/bfPOb3sqSx2D0aSRRAPLlIGTJgA/PvfYfeCkNIkb2sqXU9Ijvv0cW4/VdxjOBNNZIREfn+CpeeX4YTEBUMUEhIWq1cDL5mNR01hRM0MGpSINirLvHmJ1COEEA+kFFyGF3IhNCyo2zFrvx1FH4rISEUFbh97GYDkmsK8LjCHsOC6gfjkm2+AISsPDrsbAIC1Gzvl5VZuaAA2xzqor9gBXWcKHEK8kBOi0IyXwUEI7Pb+U5hWvXuwTqUYOhT45z+BDRvU1CeDOYQrPbiIR9IeXCF4RC9dyqWpaqjgItY0NeVsmjYN+OyzooiGQEhRkLcQhWvXJmbMyZNd2k95cHlr2m8Oj+emn479Pnw4q027N9uYW9jEWMxXH7LYsCERh9Vs5U2IQhQ7PtmjcIX82mvAX/7i7ZhzzwUefhhYvFhZNwgpH2Sf3+ScaQ5RmDZUUeHBVSxv25qG52cmYptJradUe3AVy3kikeXDhUdhyzdeyN7o8qK9819+iw8+UN+X3XcHrh99teW+fN3qt9wC7LSTe7lVq4ApU4BHHslPPwgpFpTm4FIdxrd//0RM1y++CFaPD/b78GH8bwZjnRLvpKfcENZ0PXoAX35Z8GZLGiq4iDXDhmV/13X07AlcckkovSGkJAlbNpLyotKFw1TgFubQg/fXyDU/w8L6nbKPMyqqDG3pTmETAeDvfwcWLJBu25IXXwQ+/RQYMCBYPYTYMHUq0KVLniov9AAiYd3y3HPAPvsUoC+ElCsWShohXEING47za6ASScwhjt3CPiocM2nrVyb88IP/YyXutx/X7e0ehrBj7v71M9YkPljMy35z49bV2e/L13Jj4sRMjjOnNnbbDTjySOCBB/LTD0KKBc8KLify9WAX8v0k2dbC+p0wbNUBvo8nJCwaGsLuQWlBBRexxuxVsWhROP0gpIQReuFyXlm2L6z/u/XHr4Ds6+WHpj+7hUVMN+t0Pj780Fc/0qxdm/i/cGGwegixYf36AjaWx7FD14HPf5QwsyaE+MNrDi4t2yAkPae6hPUtqSgMbj8mHwouCsPKixA8EcwsWr9V7sbRYwrfkYBoGrBpk/1+PlqEuJMOp2aHF8/lUlBwGWSWUvKJvfbKX18IIaFDBRexxmwVyXi2hBSGQiq4Uh5c0DwFAc5Obm+R98KGuMiEHUxbmNoIqBpjnaD16Z2p26qcijCFhOSRoMLk++7LWDd7RdfVTd3z5gEXPfpzy32NjcF/Z2MjLdhImeFnrt+8GXj9dQCmEIVGgxGXEIVSAqBikTQb3lUENPdwSwp/l1BcH4koQSY3D/fHwhcGJeLwWbS574eP+e+DIsTUaf6PNZwGp5DNfJwIMWEefxYtQoV5DlfpwVWMD6Fh3tc04f4bevTI/l6Mv5mUBqkUGQXLZVAeUMFFrHEL+0EICYzfMCKuGIU8Ds9uxklKA554AqLOpyRdcnz400Ej058vHPInXD3imuzFuxBoirWXr1tVZuqSMmknpcRjjwHff+/v2OOPB847T21/8sUppwC/+EXYvSAk4nz1FTBnDoBcQ5P0d1cFlwTFsuY3KrisvMLNCi+FObjiOl+hS52aGmDqul0K0tZ+Hz2KaXe+6/3AQj2rH32kpBqn7hbLsENIPpC6/59+OjdEYZCKS+GhM6wDnNY3G1s6Y1H99rk7SuEckOJk0KDEfybhUgpX5yVKtmWnjwqo4CIk7+TtsXJLgp7clhIIpRVttbVS1WsiIyQSAtJCo207bE5/3tC8FT5Z/HOgogIPTTwPVU1bAUJgyzdecqyjTa/IhGLiuEQijnkq9YPtbe5y/48bB4wa5b29p57yd5xfNC2RhyMNPcZJOeBn/jIkyTHZhmSEXql6N2wAHnkEmDIla7vmVTgWVVpbgeXL018L7VEVd8pdSkqCv/4VOOKt23wf/9ubunkq39zsELEgZERLq+djUjZoTj8naxwbWcCFByERQ9botTIZovCiITdjbdPWwXJP5suDq5Dv55Lj5Z+/vzLhDUvZATERWm7aVIoMenAphatzQggJCdmcV55x82wytZFSGEnn4PKZ4Na8gEi1++/Jv8EXy3o69lUI4I25v8TWbz6PO8f91lO7lrz1lv9jCZFEhZyq0Pqeu+8GRowwbSxkHs7vvitcW4REBZn5zFAmx4MrNS+nBozhw4GVK4FevdLbn59xGiZv2NN732pro6d4fuklYPHi9FdL4WA+BFkpDy4quEqe+AY5oy87Ph20haKehI/XiBPz5gHt2nls5OOPPR5ASOkg+w6eMmb5fOkR+LFqb/d5rtQ9uCRpaOtkvaOMzgGJFq2610mSyMDVeRmgJAxa1F5sCSkB8ramMj6vVs9ucltqbAjcDcnxwRxWQUADhgxJfBawPiHJbfXNHXDd6D+gOd4B49ftlbXPFz/+6P9YQmRZswZAQtHVr5+/Kvx6cCnlnXcK19bs2YVri5AixWhoImCI3JAaF8we2ULg+ZmnyVVuHFtmzUpovV97zW9X88O8eVlfLdcQybXJ8k1dccIX/1AzZibriDFEYcnTfvHcgrZnGWbTVz1KqgnEunWJ/6efDowZI3fMZ4t7YsaM/PWJkCijS8rrjO/SMStDCy9eWfmS74XkweXkyW3boygMmCQaFPBe+PproOM//XuIE3u4OieEkCihUADjxIcLj8LLs04BAOjJBbKsMlzLWkxq8h5cJgWXLkz1WHmeJetujVemN9WnrLC4KCURYuFCoKkpe5vW74P051mzfFQIQIyVVMZaPA9F+YgUZacJKQBZHlzGzYYcXCmBVceOOcf6MngbPTrxf/Jk78cWGhvB3vh1PfBD1b5Km4qJCo5VJU5lWOE8vbh+F+gedB07bCJHDB8OVFcb6nHo7hXDbsCf/+yjc4QUObrQsMQqP5QFRgVXXA84D5kVXMU4pxllEg5GArb7ivE3k7yw6zGFybkJAEuXFqypsoMKrjJAybhtrmTTJl/VHHooUFWloD+ElAB5W1MZXzRtGrntx8vxn+ln5rcfRtracl6PjS/MutCAWCz3uJS3maGPbXpS2eW34/mKOU7Kmv32A+65x36/59ssmXxWnzzVd5+8EIsB++9fkKac8XiiYjFgwoQ89YWQAnHL6Muwfr18+dwQhakvNnl8hPA31VnNyxHE0tgmlXdMZX4Frhciz4Rek/DEFdOica1WrXLcHb1sWw44uVdNm+arSothyh1DaFJCSoFPFv8c+3/8SO4OyxCFGaVUTFTm7M/ByUur2CM0DRyYcReFN6NbUj5cey0wZ457udVV7XItVUnRQQVXiRI4ibSL9djQJyf50nHNnAnMLWzEB0Iii6+cEUOGAE88ATQ325cxLlht6mtfkVGCpcIi+MkJJj3S3HprbohC88GSgrS0FVaqAq8LdCq4SJ6oq8v+niWE9nCbtbQA01bvACDb0/G997JlOyoFt5s3A/PnK6rMaLJtxvAyaonH57FfP+CYYzwdQkj4mO7zV2aenJv7zkxybV7dvGWWYEs3enDZPT9+5zm3nJ4RwdI6m3N7WfL008C9Hx2eyEEXNqkceAVESWoCc50C0ObPsy8Q96cI95WndNkyX20RElU2tnSWLlthWPfHgnpw5Wt+L9Tc+/XX0kUZorB8eestYMAAycLvv5/PrpACQAVXGTBq9X7BhVYmYfqZj52MF1/0VxXnEUIS+HoWPv004df8/ff2ZdwUXEJkKbi8xv3PqdLth2zeDCBXGC8MU5CABrRvb9uY8YVdGPf16wfcdhtQXy/T9QSlEJKBFJxhw9zLqMrl/MILQM+nfgcgOy7/VVcBDz8sX09otLTY73NxU5m/bltpA7rTTwfuustDvwiJMGKe3GJ9+3eexUuzTs0cB0PYIjsPLi+GIMbBqkgUXAAsjVfu/ukivDrnZOVtqMqXRPKI0zwkgRIDksbG4HVY4LSeGLn6Z/jsM8XteVSa+VJcgctxQtzIycHlZrTp5aEq0gewtmULAM5Gt+kxTMsY9U5Yt2fR/mbiDenLPM/BkCNPBHZMIVlQwVUG/PqrP+Pyy7O3tbQAXbt6qMTCs4LzASHBELq18kmKtjb7fRIeXB0qMs90ykNE+gVWMt51mqSAzOzBZUQXGtDZwoLNQliX7qcQwMiRQGsrMG6cez/s4GBGXGhqAn71K/dyZhmyUcgj4vIC5qROOHGc6RlLt1GI+1ZRG62thi8ukq/9n74O996b+Lxxo3O9w4cDa9YE6hopR4QAxo+P3s0zapTzfptn54WZp+HS725KfLF7ZuNx+Tm+COdEy+Tyuo6npp2NYasOVNiQsP5MokcUwm/5uUcktUNCAOfdlJszpM/ck3DJJR7bzJMizozb6Vi1Cnj88YJ0hZDoYzHfaOYcXF7q8LKvSKhr7YRubz8HwFsOrs+X9sQxn99bEueAuBOF5UAWxWQ8VmRQwVWm1Ne7C47yhV+rLkKIAacHyWOIwrTQSzKufY6QzG1xKJEHQwDWk33aWtqiOYnfacfqxm0wdOWB0Pr09nQcIV7IClE49kfp4yocVme2i/R8vKQ55dxw4PTLumXZxXTsCHz7bfKLxCKgoSHxv2tXJuIleWDRIqBvX+Chh8LuSRauj7DNs7NiU7fMl9QAoWnY0Lxl1nZfXkcVFfhu5QGRlwFJhXxW+CPyEQaOBEfTgGGrD0h8iYAAydKQzQ3JF2VdB74e2cV7/VasXeu4u1DP/7JlwL/+ld82Zs/2aORLSJ6xfeSND56u44Jv/4SLhvw5vSkmKqXfwaVQ9aAXcMHQGm/nq+3qli3dC5GSwe62+P57IC5CUIkMHlz4NssEKrjKhfo61yK/+x1QW5tQfp12d/4SWkT9JZmQQhHoWVCo4Ep7cEn2J0vZ5EHIY9XlIz/9V7JOTdq8JrBgSQicMPAfOHPQ7envhDjhpHAy4mgo2SCfuDLL8ws2Hlwy6AEFfDU1vg4b/kOnHIPw5cv9daFAhuWknKiqCrsHlvid23bqbAjRa/B63uGdZ/HdyqSw36/5qqbhjEF/w8L6Hf0dXyCEQF4VWuY6uWpQz+bNwIYNweupjZDgsmgUoZWV7mXygcwzqjiX2pQp4Rn5EmJFpWY9P2c9HkJg6MqDsvbHrDy4QswzHdMrMHXDbgVrD8j2aHMOUZhN2vuNMoCywM7Y5MQTgRk1hb1nAWSl1nhq6lm4+mreh6qggqtEyfGUMGe+t+DDD4GpUxOGrSOmb2eqsEgW6IQUEZZrKtmFlouC64kpZ2NR/fYOIQotPLgk8fvCbuXBNaV6j0ydkh5ci+p3THheBViU1rcawiFycUtckJ0CzbdS9otXMGWwXRuWpEKYxgIquCIX04EQBUTAs8PqQXZ9tG0GhpjR+tRU74bmpIdHPC6vlLHoW5sekgBcEgGJXCQq2xMa1w6KueYaYIcdwu5FBiV5McK8R7y07WLF4/Vn2K1hBgwwpRBeIWH5smqVt8YJKTLaVVivSXSj17XFejxulYMrRN6ZfxyO+Oz+0Prk5T1LLxbjAxKM5PyhjxsvVdyX17UPjDKx6TW74913uaZUBRVcZUJgC7KIKbgWLOAYQIofqZA6rpWI3Bx5uo57J1yEXrNtEqsLkR2iUCT+amStXrNycDmUmzABeO45YPp0ABI5uKwqc2qgqcmtp7ZkCS44mJQ9jzwCbLONezmVkUCccFRwpV5ynRpTpZjKh4JLYj0R9Dw2Nwc7npQ4xaq4tXl2Plh4bOaLIUQhYBDi6Lq/d4Gk4LsopskCenC9vzB/kS7KFb9evlEmX8+NgOZet5fGXeZlVb/j1luBq64yNCtjbGDuW8RkEoQEpdLm/dis4DKXiukShh1O6x3Fc2ZjrKNzAV0HhgwBqqsDtWOHbRjmn37K2detY1PqoLz0hUSECRMAAGL9eqnioXpdR8H4rgSggqtMcVobWu6L2GLyZz8Dvvgi7F4QEgwlIQr79AFuuSXbSzO5mG3TK20XtlkhCqHhrfm/xK7vP51TrrGtQ26/sz47WJy8/jowdy7wzjuJLjvYj+tCA0aOzN2R8uDSXKYrtxhypiReWX3h4rbsGTcuK1qALUEUXF7uMsvbORm7SZ8+y3vjMuT5OUhVv2Rl+7y209QEdO7sXo6UMVEY8608uPzkyJKoF0DCgyvAzy5Ka+c8Xue4iLZHG0EknnNfwjLJd27XnxdRRb7UZVmxIvNZtQwiJeiM6Pkh5UeFTYjCrFvUwkglFrF5yDWX0WuvAZ9+Ctx7r7I2jesmy6GlrQ14442cfbtvWZOqQFlfSATRUmk4LOYRC0WrrmIdTkKFCi6ShYoxvrY2eB0ybJJPZ0JI6TJ5cvZ/IP0g24YUMnlwPT7lHPxx1B8si65q3Db3cMPU4Ulo7+bBZYXLoKQLDc2xds4vwC0twP33A/37+2qDlCarVgE77ZT4LCs/sZKH6LrB4KK1xf5YD0lsK9auzt04f36inpbWxHeJ+3ZzvIP0b9M++lC2e75pagL2PmOf/FTe0AAgE52REFsiaiVpKQzfuBF46ilg0iS5gco0LqRf6r38ZmMdTsKBlhbg8cfTXtqhU0APLpI/ImZTGQiv4Y7mzgV2uOwURY2ru1cLbtU+c2b+6h44MPE/K1YiIeHRzk7BZZx3LZ5nSw8uM46Wd2rns3iqv3b1GmUVisiRH7h4sDU2J2QjqXnm+u+ukMnkQoqVpMWo8T5Ztiwpr07NBUa4xit6qOAiclg87FOmAO+9l1u0Wzdg8OAC9ImQIsfyxVfhxNqmV1rXN2hQloLr0yVH2taxyS3cgCTLN3VFtUMIRDfrcLvTcu/4C9H5jZftJSJNTcD//pew2Bw6NF1ZKQlQiD/mzwfWrfN2jNV9uGgRcOGFic+tk2dhzZrMPr+3mfbj2Nw206HC8nTz/vhj7jaF45Fmk2ZPGV99lW6HkGLE8nEbOBBYvDjhra1pifyTMpWkQhSmxgu/3gopBZfVaNa7d0JS8PLL/uoOQHOsHeZv3NG5UAFzcpEIYLawDHi9VUwlXhVDU6YAG+pyIydY1j1nrnMBm2e+uhr4xS88dStSHHD1MaipcS4zYYLEWkAyZBUh+abSRsEV100hCk1DmqUha5B5L+CY6cWQTwUxvQLN8UxUCEtj2eRvSuUjzTqnAPrO/gWmvD87f50k4ZJ6dzbMxXvtBVx6qXVxLhOLHyq4iG/698+Oo23Eac0Yi+WmDCKkHPFjEbm2aWs8P+M0i8psksKbt69bBwwebMrB5a0fxn7LJlrf84Mn8eTUc2z32y6KXYRyM2p2TXywC1HYr19COGiCIQpJpeG90FUQkoxfKBpyXYfbGyLufbb0SOyyi3UV3tJhZAr/bvgNOOUUmU76p60N2BzLb+jAvJN03aKCixQrlmsC44JZ5ua2y9Gn61jd1FWyI1YeXBblOqoxgPHDE1PPwf4fP5K90UvuEb8Irh0Kga9TmzJiKmJk56/X5p6A/7uw0bmQzUmcPTsRltkLbtfDtzGPQ2QHO+at2MJqWZ9m6lSmMSDFhV2EEzcPro2tWxQuObAE8QKHd/v98D9ir35PpL/bpU2ob+2E2bU7A7AWF+iDaJkfJVpb7YPueMZmUq2pgXt6i0LDNaUSInZViSpcp5fRoxP/582Tq9DlgauvT0QqkeGMM4rbcowQVVg+Vi7P2r8mXIDbf7zc+ThjiEJzfc3NALJzcDm1aDWW5GP+dYt5bCX4i+sGNZXdImW2tVVW1eZtDJVzQVGOtGsnX1a88SYAQO/7Zs6+9pJ6odQ9PHJkItF6r172Zc13+6hRsFykG7e0xf0v6f7wB2Cnd5/xfXwkSD7HVHCRUuOJKWcnQvH6ID13+nWfdPLg2n57f3UqoL61U+5GC8v1Si2PbqN9+uSv7jLH17IsgoO/198h+xPmbtwZ/Zf83HN/amsTUU+9kq/fIVWBRWVO/TniCOCxx5JfnJTcXPuTiNCuwl8OrriMkWkBPbjieoWSemSZtGGPrO+WBru6jpO+vBOteuJlLSU5yBKbFGOO0RLm229zPaySaai9k17DWmAhO3K7F+bOBfr2td7X2AisXeuxf0Q5VHCVK198nvj/8cdKqttmG+Dqq+XLT5wYvE2uS0mxYzmJutzYb8w7Qbp+SwVXcrVstBZzUi5Z6uA0Yw4uOQ8uN/zk4Gr3ei9MTi1u7d6mrRLyMGwRQbYHlysLFgAA9Lm5RiHarBm527RcT+bUXXbqqYmIXv/7n4f2U5U60OGR+20X3W7MmJGdW6+YiaCMk0QNTcOqxm3DTSZtMe/YzUT3TrgIU6t393Vzp+sMGKKwKBJvWyq4dPv9AdtoWUZJRqSI4ODv7vlU2PVnz57A+edbdcT53P17/Nn4ZsUhSvvSowcwcf2eruU2Nwe4rqNG+T+WEJXMnQu8+aalRbhdiELduC63GEzSCqUoMGqUu6Jo662VvnKbhy3LqoXAwrodco4x9rUo1jdlTF0dsMMO7uVkyBJ9e/TgisWAhx8Grr8+8f3ZZ4F33snsv+46YOedA3SO8iglRGhUJKGQeuFNBbOuqoLWvNlXVQsXZj4X4vmsrQVWr85/O4TkjSAPisSLvGVs7rSCK7OYjgeImb2pTU2IIjcFl92pSnti2ZwPEdfx+dLDcdXwa/H+gmOsy3hMAk6Kn/p6oHH6IgDAb89vcc97nA7TlX2fjRgBfPnINMtDzFZcL8w8HdtIOg5aCr3MnhQWFcyYWt7xf//7X+CKKxKf+Z5AnNjt/afw1rxohROwtD5OzYHQpOb9HJsWP/O7VYhCK8GVuT8tLcB//pNwU80zUroMIVDpIwSaW50pThp4JweaPKHEgytoDi4F907BPZ9cGl++3F9Vz089BcNXHyB/QDJahBNLlwJtuo1navJErFsHbHFirqea9HldtEiyICF55rnnErFBLRLV2ym6zTm4zMREhbvRZqG8GD/4IGM8a1fvIYeg4rXemFUTRAuQwXzenHJwpY+xcvKigivSWNkq++XyZBAku1vU6ZFo3z6R+SLF3/8O3Hln5rsxB7cvuJ5UAhVcZYLt85IKWfJmMuzS++8Db73loYLwuO02YNddw+4FIf5R8VjN27gT/jjyasvKWvXK3IVtspzRgysu7F1Z3EIU/n2cTZZOAK/OPgk9P70PG1s625ZJodtZfcmeJBupQLPoiIuG/BnvLTwOfecdb90EQxOUFTfeCOy2G3D6jfsAAD79sqO0sYT5Xrn4YuDm739vXdbi1k2m8rLdn8LqdtaOPsq9fz+Ndy3jCYVzfyGipLzxBvDVV8HqIOVDbesWobZfYbLadvLq1oU/BVf6u98HwikHF4AmY+6+sWMT3q5GCUCesBQIWvx48zlWyfj1PfKT56tc2VgrVeyHH4CqKosdHrVD8+YBDQ2Z7/feC9x3n6cqXInCPNTcnG2EWhA++sh2l5dz0miTZsy2jlq5eyhVySOP2OcTJyQveIgRag5RaM7VZWnAEmTQ8Xts8jg7T7Q0yTG6avPW/toxV2fuhlVUGSFMucNTZU3HkciiwvBDCC3rgVI1N7e0AIMGJT576acKAxpiDRVc5U7q6TZOtj6DnEZhEU9IMeEnB9cNB4zJ+v7pkiPx5vzjE2/8QOLlLjXTWpHy4AoQFkV2ITho+aGYVr07ur79P/c63XJwuXVXYgBKt2Eqq8c5eJUTr72WLdRy49NPgUcm/RpA7m3mtJjNd97nufMtlnCb/Xlg54sNG4BHHw1Wh+x5iuta1vUQcQqeiQ3JGyXIPKikGx7al7UwzjHeDiq4cfLgqqjAlm+8hNFr9kt8j4XsQWphua48ap0X63jiCa22Jv3Zadw/4YREHsvcCrxd7AMOAG6/PfF5jz2AJ54AHn/cUxWu3Dvu/PTy3C1XtXIha/IkPv44sN9+aqs2M379Xrjppsx3rUpN+E7Pz6/HMeid11vw3ntqPQQIsWLFpq7Y84PHLe9Ru2c/K0ShrluvWfL9siFDdTUAw5rGrs3kA61EuC8E5tV1z9ok48GV2Zyr9CLRYtSoxNisbB33xRfZ363yO3qch+vrgXPPTXz2GPEwF96ISqCCq0xJPbpvTTsCAwYAj4w5JczuEFKW+JnHOlRkL4zTdaRcUJ57Ltu01UYYU2mT0Danj1YbFYeBAfzl4JIhy2rLa9uEAHjoIeDxKecAyF34ui26nQTYxlt7/PiEIk3quOT/A4/uguqWLu6Vh8gXXwD335+nyk2/sd0fr8asWYbdAz7PU8OkVDBbQxeaHOtjh+7IhijUTYYcqkIUOs2Ta5qcQwVbsnAhfndpDD/95L17iabkrl3elZhUcDnSqxfwyis+Dhw92nG35bPiQwqW8qpesSK73uXLbcJ8e+T56afixRcTnzt1CsGTCon8JflmUf2O6NNHXX3PfbanJ0MkO4569AIMH26zU4i0gW+HDsHbIsSJmTW7YPmm7Tytz83zrqVHchQUXMmkxq5rqjwbF1kay0rM0YENgUheOOUUU86soJgnAwUKLqvqvv/edxVEAVRwlTnXfnkxLr4YeGDU6flvzGKCveWWhGCPkHJExZqzvi0Z/u/4ZPg9c9wWm3hFsotLK+FYPtbKcVGButZOuTuM+Ud8oGsZAYVd7iLKp0gai5vBuP71ogxdtw72Cihk34bXXQf89rfGNv09ZHaekJqWrUCz2p9v1q3zJ9wbNw7WOdLMSc5MiNFjHPcTUqGJhPdzGJOAEDnPuZ2XFAC0xNt5U3DZfJftWxqnNv0OHLNmAc88gw/7t8MnTy32V4cVFuudLGMeFYsXt3wnJIs//SnxrucVMeibwG1XHHaw72P33BN4e/4vA/cByL5FamrsywGFmYvTRMzj28gdfQ7Ad9/5ONB0Aict2wHffmtd9K73D0Nty5Y+GiHEO2nlj8V6wy2TSKKQ8GeU45RsyLyO9jufJX+T5paDK+3B5a8ZM2fuNivru2WrQlh6axnXW74MgUj+WDA//TEWU+AZheT1bpfJ+ej5Vp8/371MkhNPdPfYtoTrSSXwaSY5SMW194OFJuuVV4C337Y/pK4OWLIkeNOEFA0uz5pZAPb0tLMSHzpZKIes6hMC8zbuhNVN2/rujtDUTx1vz/8Ftn3refsO+FwNG8M72An/qeAqD2bOBB5/zGUumzPHcbcXD64zzwTO/9ZesuckQ3a624XQfIUCmzrV8yGBMf7G++8HjjxS7jjj+bjhBuDkk10qt9pNi0xiR8qKWBPAO+8AP/4YSjfM+Sos7+jkm31TrIPUPW2r4FLoDW2LpqGxrQPiuktZwzirL8yjgssupJPiNoh6VISYFULLuVxLlyLb07fA8iS39pQquNwa++ILNDYmzkkhWb4cOOggubJ250NsbrbcfvUtuUZFDQvXWhrXPD3wAEcjJEJU4qT8sX0/NYlqLRVcpvqEbirz8cfWwvlJkzJJa53o1w+46SbnuU42/UFyPeMlPLMtQqCdaQ2liwpLuYdbRghGcokYQ4amPwoRcF405pGV0JTZrnXNBuQWCSKN/cxSTstCBZcSqOAickg8cK6Dzxhv1tSaBmy/PbD33p4OI6RosJpEXSMNmL63r3ARdFtUeMDHD+PblXKWrX766Ie1m7ex6YCQa9OmQJaCy+ZQV2EcKQleegn4130u19piRZqV18lDDi4veK7nGxfrdovnoU+fRO6SYkAIAM3N2d89QrkzcSMtZFm1qvCNC+GekB0w5MCSew5EPJ41jgVW9CYFAk65LdIhCgF0efNFPDDxfOc6x40zV6EGC8GWZUgnlVAgkR9cBvAfxui44ALv1ZxyCnDIIf675QdPt0hTU976kUN1Nf76V6BHj8I1mcLFlsgV8fEnltvf/TjX2O/Vz7rnPQcZIW6kZ1AvIQqN45eFB5d0Ta++mrvNKo6aVd9Gjkz8f+89+/pTCq5U/2bPBqZMyS1nNC5SgNT5kMnRraQ3JB+IhYvUVZZjTWqxrrV7ITd4fwGwvK+8KLgoecofVHCVKEqSNxpYvKpj8EpMA8a++7ofYmmk7svnk5DoYbXm8mpFdMtBIxMfbM0cg40FUglb8y3gEcJ3EgFLDy5ziEJaboXOgAH5D82jIsTBru8/hYcfznwP0ufUbbj77sD06R4P9uGOtW4d0snuC4JdXCAZGhqAT6wFWISoIr1WNr+4FohKs3DGai4yhBEzW3NboYsK4N//Nnz34cFlZWHuUK45njx/tbUAgIX1OzrXb0iu41cBJ3uU8nmFHlwFwdaDa948AMDadRUYONC0zyqfhulytbU57w8b7dP+hWtM111DJkaWVN7hAjJmDNCtW8GbJSVC2qDGMkShjQeXOQeXhCpGekzzOndNm2a/Lx7HFd9djxdmnpbZ1qtXbrlUiEII5/okMXuCCaG5yiisQhTaedCR8NHH/ACtbmPii4XXlCvJe25R/Q4YujRj6WD3nDwy7lfWObRM64s9922fvb+tjR5cEYEKrjLFzjW477zj8ers3FhA+1z2c0/1jxoFfPihc5lFSYW852f56689HkBINPGj4DIvwnLe581S/DyEJSpo6C9dB955B2JtlXtZq8PNHlzJ87Fth8wiifKp8Jk9O/9tSCm4XCyymuMdspyRgwhP9Vhi9btyZe4+p/Adq5u2wRdz97fcZ5dnzpVNNtncA4wfQXKoNE+dgyUTq50LuZx8p65feGEw/RspcpL3TjrvwoIFPt9Gg2H2LrKcWysNeSQlwrZtaO6SCKWS/I3xoLklzOfKiPEhGzMGGJoIKxPT5dv0a2AiFU5diCyB4IjFe/pqyxEuIArLihWeihsvz7Bhmcd83pzEjuWz6vHWW9nHXHFFgP5ZYLwtXadUlR5cycbspsqaxo55G/ZUhCBzCk2VDzmgW50//pjW4RPimfS9bBmi0PoYc4SRnDWDhELHFq9zV/v29vt0HR8tPhqLG3ZwriN5EpZt2g4tL/YJ9iBb5DHVrdZQQtjIMgzHUcEVWQQA9O6d+PyWQ14bFz5beiTO/PSm7I0WE8yT40/H7bcnHBY1zT6E7/Iqk/PHoEFZX0N4pSBJqOAqU+wE1B8sPBa95lglu3AgudoThknqjTeA3/3Od/ek2iOkFPG6yEq/RKbCCOmA1qd3pkBAbyvLHFzmbXm2OBE/jMXXyw/1dWy2gkszJMI1lKF8qizwq4wyH6fqdhe19l6JTn2dsL4HLvzgMjWdSOHTQ9INv+fqw0XHYO8Xbs9b2198AXz0UaDqSQmQnm8XL07cFAVGamxJh+nVpOaq9ZuTOWVGjw7WuRTG/AU2feu53cqs8EWfLZVMtof8G8xUVmRO2qp6Bfl26MFVEJTNs4Z6fvWrTBqNAw5KrA0nztsa116bfUw+54aC5uByqXu7e27El18WoOE8kI9xwzVEfMoSy+BVS4gsTh5cduR4cMnk4DIVOX/wn20saj3OXb/4hf0+2bqS48yVw6/H0QPuCaYFELmjgF3UmayfP2YMMHdudhEGjIssQmhpj119gcJwhQ737KRJwFVXJT7L5qjsfOm5GDEi813UbvTdNRIMKrhKkIJrjFMKJ58eFp4pskU4IV5w9eAyfTdbL7XFXYZ1j1IDS2uoQiIElm3aDn8Z66Ixt/ldQjOFKNT1HKtuz/KpZcuATz8FWls9HkjsKIRXvpQHl8XN4DTlaHGXHHg+UZKAOWQaYx3DfUQY6oG4kHWHjB0bVjekEJBTcG3XKTuEi6/HQIhEKIb33zfkALMfCM1tHLfjYuf6t946bYij1HLaxYMrL1baVHA54veVzfZ+81hhFC6P0zOYkxJE5dxfAnOg0lf+tEebz/MyJykUN+QQJESW9H1nGQJYIkShdA6u7K1fLj/cukNWAsNNm3I2/fn73+Hnn93r6sElg9HodEbNbsoHaJm0CkIAeO65rIg49OCKFsZ58JXZJ+PMQbcBUKuIFKvXSE0w6dvHpWxzW7vs1Dp9+/roVPHP2VGACq4SpF07YMjKg7O2mQcEpY/PwoWJ/xT2EuKJQCEKNS37mUuHETIdb148evbgKkyIwp232Gi7L8jCM6evKQWXIcyD5/X1448DQ4YwxplKUmGH8mihIaPg0o48IifNo+OatslHPPAk+VjGph/vCCySd3v/Kdx6q5q6GhuBnXbydozbOBWBU0RCRggNrfFKnP7V38JoPDd/hNU9u/vuqeLQ4+43rXm+9B229IMPEl5gybHZ8ujk5Gnu9xHbL3eu25DzzNdjOG2a9bhs8Ruz5nq7tYQQCTNdc4Imu7JGpkxxP4ZIIaXc8ZhMM+oKLuO+q0Zci8em/Dr/HSoBfI0bVvGgjXW6eXD5aZOQJOnZxzIHlzX+PLgkcmfb9ANz5sCc3HDYqgMweYNLeF9TXV8uOwzNsdzcpuaQi0EHaPP50K1CNpra+O13N2FzrH3WuoUKrmhhvDZTq/fAT+v2TmzXCz8K+31XPK3P5Xj00QI1RrKggosEpq4xnOTcslxwATBypPfjhgzJ1dnNnAkce6ySbhHiKQ63JX/9a444bGNrZ+djPC4mpXJwRWFCtumDcdEqbMr5zlGyfr2/40gO2uRJiQ8TJ+atjYrNcsooYw7bt9+2j9738stAc9zBotEFJwWMXwtjHVrJRs9Zt05tfVEYtkhIGAxCNjR3wfDVB0TihrDsQSr8sKQH17Tq3bCmaWvnOl07kps0yCkJu2fhkC6hdLJDCOCVV+z3mTAKwGx/w6hRwBNPAH36eOsLkCMMJGqwfRzNmk03pcV3w9R0KAANDYmQR4DzMLOofkdMchMk54n11WpFQr69pAw8+ijwpz9Z73Maj2xxG0CjoA0lJUuFgweXHTk5uKxm9Ndf97d+sbvfTbnuLZVqLnWd/+0t+GjxUTnFchRcgUMUmhVc1rlCje9bQ1YejJWNXbOLhB2thkgRxnXyOy3MqNkN/fur7QuRgwquMqFNr8zyqPe1MLRh24tPkytoYwYfj3vMqesxXsHAgcANN3jPCXbWWcDHH2dvGzUKGD/eWz2E2OHLg8tojW1c3CWfi08Xm3JfBMzBZdUf2Sq8tORkWR3kNVlUVGa3kVyprG/OCABlrOIt4cuwepqb81a19uMPno+55hpgkSnkd+r+v/VWoK51C9/9cQxb5LPOV2efgi22ACq3lu9XlUt04WeeAe6dcKHPHoWHqzV2+PoMEhbJi69DS8+pYViGmnGyvJbNwfXb727GlcOuT3/XRUWwmz3pbWUpWEidx2S/F9TtmO4rvvnGvl3DdkuBlBPJY42eWU4YhXO25+/HHxP/p0+Xbt+9UhIIu3vH/A64Zo1jNfrn4Ssghw4FjkrKemtrgY0bkzuWLPFvYCWDh+d+x8N3zl8/fDJlSo6sXQl2MhAx6Bu54wLGTdR1YMaMQFWQIsQpB5fdPWlelpjnPSE0YNUqYMECwzaLiqzereLx7JzdNvhRcAFAdXNuzsscfZbi+TMu671m2tzQ1klpP0ieUPjiJgClIQqt4PIwHKjgKhPmbtzZMTdkmPTpA2y5ZX7bWLgQ+PBD78eZPbgoECP5JqibvKt3ldcQhYF6I09Mr3Qv5ITdAtZwPgQ0y9WG7ncq5ICgHp5TJehmK0kHundPxsK34dFHgc+XHqGiWwWFCi7ixquzT8YpX94BIBovok7WqfeMv0haCTe2au/sDUOGeOtIWxuOGXA3rh5xTTrvhuXzklK+QYMQwM8+eiT5HcDnn9srjLbbLlOFt56lJWSVMkI3U86SvIQh8hgyj8ghnYMr5pwHM2rD/HnnAT//efLL6tV4cZakkahPFiwANq2ozWsbkcHNQMpl0hdjf3Ter8h74PPPgcMOU1IVKSL85eAyzC8WObjSjB6dVc7M8zNOw5CBpudDctFTKWNMYlFXbUuuoV1O1wKGpTd7itp6cLmkW/jz9x6t4Eko+DJEs1FMyY7nQd4VPd/efDFVAlflpUaID8a8up1w1lnB61m2DDjgAA8H1OZv4S4Tjp8Qv/jx4EqTnLA3xTpmVRbTTcN6UAVXgXJwtdkpuKTdxdxDFCY26DllvQo259R2R49+j3Ehkg/yeE5l79r5812NwpVg9Rxdn3S8UJpovlzh80nsSN4bi+p3xML6RHK3giu4hNxMeuHDCeXy4oYdpKtu1dunLbOFAPDZZ5l8uTLU1GDC+h4YtuqAtBe07uLBZbl2SbuqmNh1V0MVHtcTLS14ceapmFGzi21/jBhDOilRcJnboIJLinwZWdY3FF9oqcWLkx8KMEf97GdA38+6uhcsBT74INjxBVozeIpaQ0oPD4uNrJB+FgquxlhHzN+4I1BdnSlmMVff/uPl+Me17mH1jeGNU1Rtzt2Wg8WzYxWm1DIvdgDMv1SHRQ4uieeaObiihd07sN2qOT2nJhk9Wt1wTg+u4oOr8lJj7FjXIiNGAO8tUJ9IqinW0dlIVHJgmDoVmDdPvt0HH+sgX9gjUQhZQ8oL9xCFGZpi7bGsYbus/XttVW06oAAhCq3qlBTepbBVcEFSAGbnwRWLG4rYeHB5WNgKAQxffQCWNmxPAXpA2tospoUInNNf/AL4dQHyvFvdd3375r/dYmbiREjnGHMbgUSbteX/0qWuTgGk2LEYZ6LwIprTrQ0b8MWPO2X2+1iT6kgqn1atkj/IoLRJ9cnOMjqxT0NMZObwxfU74IWZp0qGKPQoNKiqwl/HXoGBy3o6l1u0CHjllayQTkIA+OknoFevHAs2rU9vLK7f3r19Krh8YQyTL4PsUmCbs47Dhg1O9URYcBkw1F2UCeWXzZ4d6HBpr2/TdXvuuYTsghAn0sYWHvJvm+dHs4JrwNIjsP/HjwBHeI+y0BbLfUp3ee8ZTFi3Z9a2dT4VXMfvtMiioIkgCy8hLDy4rA1xrE6vMWf5o0eHH8qWZPAiQZo7F9hnn+xtJ58MLFmSMFjVzjrT/mCZEIWN/i0S4i32L5M0ZM0fXJWXGvPnO+8XAjfeCNwx7rLC9CfJTz8Bv3n9AtdyCxdKvIObBqOH/5uH+IZJDZv2/WiXgoSoRXqtJwSuHnEtBq04NPE1KfjaeYu6nHL+Gkge7vc11aOiIuaQhyCIx5he15D5LCwsu+DtlHzwAXDrD8lQBiUsnCgERiVCVm65CNDYaL9PmVWYlaVhksjcWhG5HimOPhp49lnJwnYncfXqxP/Jky139+gBvPSS976RIsJqHojAK1HOXPfGG9n7fTyO94y/GId88oA3RUyyoZZ4+/QmJ0WUDi3Le3zoqoNw29grpBRcnuf3Dg5Gbcb2nnsOAHJDFL7xRiK5z6RJmbLJsWK9Rc4QVyIzWJcWXu6LtNGDxbUIIym9NPm+dyI2f6vE8rq6nc/k+bDyLDHu99QmgDvuAJ56yrlpIHA0NhJlqqtd75/U7SniFjm4bEMUmhRcdkJx470vEbIfAOpbOlqWa4xZb1eB0hCFdoa0c+Zkf9+wAXGRbUT7yORf47Lvbkp/36KdKScJiSRWt7ad0aOu53p2GVnW0A039znSvkCqzU8/A+DT8LGm2r1MVmOlO2cXkvDf5oha3BZ3M2cWph8mPv8c+Gr23q7l9tsPuOWW/PfHle+/T/xfvsJyt6Yl3o8JCYKfEIVpa9RPPkl4EZnqyjk+4GQpgITbZ9Y2iTY8ths40baxvaoq4N57gR9+gNg1k1tIAJYhCuMe8hWlZOMAKNjKB1zcAYiWZVfUbvOWFrlyZm+XxkagoQEJsz6L/UaqPb6TkCIjCh5clnk4TDQ0ZO/3OSzM2bgLsPvu8gckhU7VLV3S873l2iR50oTQrOdwu5MaxINL8kKJ1jbcP+H8rNVKVlvmJLvw6S0etQEyYng5PVJFLSqMgvelLyoD5p51g+spT1gpHrL2O+yTuc/btQPq6tzLkSJi3DjgppsS75wuyd47VCQk5LVN8gqkXA8um3vUwuvaDTulmq/3cb9jTeAQhdnttsbboe6r0dlWihZGMV8tz06Cx6EyOkybBqxq3NZyn5frJATQ0eFRa4x1Qu+h7rJpUVOLpUuB9r88Wr7xJJ7f5XkjKoEKrlLDbYW1cmVh+qGYX/0qei8wASMhEGKJlxCFWZ9TCi435ZOfHFymRbtUFTYhAeywDH8En2FCv/02IaF+5x3reN8+c3Bt3myy4KFgSwktLZn7vs9Xu+Qt96GXhWYh1pjrNm8NrcL6HrK1MFbBpk3yZYWAs1gnupif/VNOAQ4+GHLx+CO23iD5J5LX3OR1Vf/jLP91eRnULE6GkyfM2/N/gR/W7pO7w846O8uDy2PfPFh8PzrlXDTGMsItXWgYtXo/vDjz1OyCQebynXf2f2xZ4G/+CHi7+qqnkJx2Gko6vGW+jXRWNm7rKeqqDNL3SoDxornZ96Ekgog33sTYtXsnPJhHjnQsm1rXt7TlPvd2t55bDi5D5Vnl7Duc2ZeTs1vicCONjS5NWawZzOVjrQEVXKbzsaKxG7Z96/ns9xwLQ4LaluzoT5H29C0zevYE/vT9/1nu83KdhFAjprn0uxt95xDlfRUOpbuyKlck3fOLjWHDDO+0Fr/xwAMZUogUH5aOTx4mQ6MyzDFPRtZB3haTljm4zH3s1cs5plsAdKHJDVvG39U5E1c76xzBJgeX5FS49dYJI700JSycKCRbbgk8OOl8AMBNzx+EGTPy0w71kUnK0D1J0xL5u1YYnLKdhhWGEipxouDBhVzhTI4HkWnQ+vmAf/lvzMsPNCqg7LzDDTsHrTgUvx78V8d6sjbrxvqt52WZvuUwdWrGq8xKuAbgXxMuxF/HXpG9w4snjbn9gw6SP7bciMcL8t4pJWRdsCDv/fDCiBHgoiQA/zf8ehx+uGljnmUgKvK58ZKXFgvqdsTxA+9C+9dfxfTqXaWO8bK+NM+7trePlisPcGvczoB0ty617h1raUGXLsB7z613L2vA3Lf2e8mdM7vKbM+H8SQXqeyTBEOVgqsp1hFr1wavhxQOSudIXqmpkS87Zozzfqf5ae5cYOhQ+bacGDkS0K6/Tk1lhHhENkSh1qc3plbvkdm+bDnQ2Jh1/JQNFiGJPC70hq46CHWtnWz3/2aPacDy5cCXXwZqxw6/1i9an94YV9UjqxtCwFrBFZfra078Zb6pKsH8smcROargLFyYUGhaUfTvSh4Cie9/w4moqyvO+9ztMjkJq4zDxJo1wLp1avpEIoLFQ+wlVG2+cJvvzFbH3ir36SWVHC88hxIEbBVXxs26jeGJVN9MvNJ/x0TIKFgr5nRdQ/uK5PHG85FUcEmtN4p+AiggmzZJe/IsXJgdGsvWe99jiMJ0LcOHS/WjoOQ5RKHWddu81m/FnrvHsWFDYdqqlZDDe8Ht0U6PDxb3YCyWiI5OyosWvV36c9Vmm5eGJKk1p1UIQLv1qPmetA1RaLgnf/u/45064dhHq75c87OxuYWGDQMALO/3g209a5ucz4cKbKNdZCV5lvjNivpD8kvJL79K/gcWBiq4Sg03jwIhoG1uKkxfAGy3XeK/jBz4pJOCtaVqTJjlEAGG4w5RiZ8cXLZ1zV8A3HVX1vGrm7qits40Jni8iZ+b8StcP+rq7CoMQqDtOyXDAJhyhQAOyXA9IIQPoVPy86zaXbKFW6IiWaEpRKFfq0x6cOUFpxCFa9YUTohgcUsXjPBF7Qnmr+oSdhdySD++eVQwGwWm++wDHHts3poiYWDlwSVp6KCKWQs6YEPzVlnbEhFB89QPL0okQ9nLe5+W2ORnnrT5LcauCKF5NGm3/x23/HBlTlbxZZsyuUp14aLg8nHqy/W9YPFiYK+9XAq1a2e7q1ev7Mu+337AuHWZfBieohk43NpXjfgj3nwT0TRIKsE15PKVlXjjDWD02v0K33jAa/zilBMwerTNTpcUD598AnTv7t6GppXvmFGKvDr7ZOmyqTHNyphGdryrlAhR+PUUa6+oGTW7ZQ2Wdvehea5vV2ExP2/cmN2sRWXXjromZ5vqe1/Kg0sCFd6ZJP94WRf84x/Af5/MU84DEmlKb2VFnBEC2BSi1K4IcFwf19fLlSPEJ+45uKz3d+z7CuItsZzju/28h6kC76vL/kt+bluFgJbwFLOQMKjII6Tr/hVQFZqAqDeNd1YeXH4XthwECs7++wNHHRVuHwohnMhn/gptX4tcOUVE+vy7XAi7F9ZYm8NxqVCrS5ekN23ejIJZpJPwKGiIwrY2HHLuntb78jXAeM3OneSzpUcmNvlRu0t4cAmHcpa4Ca6SCeWt+pul4DLiZS73mcOz1JgyBVi2LHHqvv3WppDDef3Tn4DVq+3rn13THeutol9Z1Dl3rr3+YfCKQ/Daa859CY0SVHABwF13AXeOuzTv7XgeKl0OuGvMefiXXRTYKVPw0KTfeGwwl+OOA26+OXA1JCKs2NRNumzq9rPy4HI7JvXFNgeX7MNgDFFoM6ebt6fX0sY2kmOX07vKEdstl+vTwoVy5cwIYd++h0gVJEJ4yRHtwpdfAl8Obq+sPlI8lObKqpyJ4gJeNXn6jam0JI7vG4MG5aVtUp748eByWsI2xTokwv2Y2bzZuVEXurQ3ZUU21PFj1d448rP7ch8cp4W4B+qaO8oJ1rJNwtP/RENmsWQnSIvLKLhoclk4HASYDQ3A+vXZuZRS3Hqrcy7GfCc9J4VF22Vnx/1240b70060PygVxsqUr6UcllZlhZUHVyEteOfOtdwskEfzfg+amMbNuQthlR5cxiFeFxWZDTNnAq+/DrS02Nfp9jtSObj2zfUgEQIZBZcxLnpSse1LiVemawPjz545U339x3/2d1x+uVzZCy4ATj/dfr8QiKYyKYp9KjIMdqfuRGAiX7wYaEoF0mkqXEQdkh+Mo7+sgapl/m07vZVpTrI1HE1VMH26Yx+s8muambRhD/z0U+a75e9KKbgc3vOv3T83tKFlmwHyI9q27zEHl990CCTB7NmKKnKJO1vyy62S/4GFgSsrUjJYjgmrVkkfv/32idBYEVj/kjImiJCtRW+XEBaZSSbDi8eBb8d5j4l98V5Tsr4bF4Lz6pIxOSxe1FU8SiNW7Ov9nCQHg9rWLbCycdvMZkOuj0O6ZsYGy3NmZsYMb30g/nExJGhpAfbYI3f7yy8Dzz+fpz4VmHzPQ+XqdUAIgPAVXDaC7RwjDJUvux7qWlW7BXbsnC05tjw/bgOVVw+uF18EJkxwzpckOXiJrbfJPVRoGcMbg8vP4pptAQCXfnejRMXZ55GCsfzhRf5vtOOyJIovd1RwBUIIYJvcx9z5ABWoupe++05NPSQ0jJEC2nS5nHpWc4atN5XJg8vVUO+zz5z3Syh+rhl5LY47zrma1DOQ7nWQNZXHcIJphMPs6zlEob8ukAQHHww0N7uXc2PA4M6O+9+fd5Q6ZVoU4Y2oBK6syo1ye3DmzfNUXNez3zei+D5EShvHBaHL89tr9smOllY/fl6Fs+88NEj3Et2wWlJWVOC11wyPnBD2yXA90L4iLrdItjg3d467FGcNuj27iK4DQmC3LhkrIV1mKnSVnhCv2N7ONt4N5US+vc3KIXqHiuXOxImJ/1wLlBgWN4eXsEGBsVNwCZMHl8o1uwettoZcQZqld7jPNo2bdaHllnPSbLj9jtQ5swlHXN/WKfHlrLMSMfbmzcM+zyRihq1p2ta5bmP9JFLoOjBr+VaW+4QAB/FyII/XeMZS63srEOWwECtxjLNBS9w+56Cx7KTVztEH7FsAtu1g8y4qMb/v1LkOF1yRUSDIGmekyxmfr7SCy34+tFTk6R7c16T6ZreD83Sh8XvKR47MRIe/+MbtHcv+edTluOcef+2Q8oEKrnJDxvojorgNnC0twV1khXBeHxfnmSNRxWqh53ifC+GYCPWbFQc736PvvC3dNycs+1hRgRtvBJ58MrNJxatmlw6t3gWPNicxvdg259AwntM2+YSktY0dvPWL5B2n50dFTjgAGDUq/7IyVX21w6/BZBSQfYlS4Vlx9NHyZdescT6vzz4LXHll4C6RPFFQDy4bjF7GiQ3heHBpeu6NbOXp7FqlTYHsn5j5zY1tHbBu81b2CZUA98ErFaLQouljd1uFDhVJoXJlJfD44xD/fda5PhcoRyswNpPvqlXAIX851fNxocKbpzgQAof99ZTM9yjeSyQUjOvM7ls4x8tMvb//X/+LsHixuR7nY9w74j6WVG3eBgO/yeQkcj3E7JJjPCCl4NIs9iWRXlPJGN/YvJvbRmDJ1zqKKOfUU4FnnpEvn3M5izQkCaeR/CEtNdQ0rVLTtCmapn2V/N5D07SfNE1bqGnaR5qmdUhu75j8vjC5fy9DHfckt8/TNO0s5b+GRBYVD7Hb/DR0aMJF1q3hRYvsIxcKwYgRJFzcFoROgu+YXmm92EtO/hX5VNFqubHFVeTg6tKuWUrBta7WkEjUTsFlOLfGz+lzPmlSIpHT6NE5x7a25tY3fNZOrv0iDhTporQU4PueR4T7vbrLLsCrr9rv79sX6NdPYZ+IfywegJdmnYoRI0Loi4G0l3EKlWOkFw8ui/vdcszwubjP+okGpd7/Db8OO737H6C9Q2Jwt8HLkIPTTIfKODqkcnAlF/uBFeEcTO2RPTeFyEVEaVLpo+AaazELQbpNkrmWFuAPVyiIy0WKFuO7ZKdKZwNJ41xj1tfYKbKy5ifFc43r3Dd/vv0+KQ8ui21WHlwua5NB/xyJe475Dli92lSZsG/d49qpFEMNT58OPPVU2L2wZ8aMzJDtJbxhzmPw2aeJ/9OmKelXqHA9qQQvovzbAMwxfH8KwHNCiH0B1AK4Lrn9OgC1ye3PJctB07SDAFwB4GAAZwN4RdM0uWC1hPjFNFBoGrDvvsAJJ1jPfUIAWL++MH0jZY/VgsotRKHTEsw2/vfGjQD8K5yMSrWffkok/7ZDjJ+Q/KAmROEN316CqdW7uffRuMy19eCyJn3O330XA5b0hP7eBzllRk72nruMOCM+/Eh5nRs3Ap9/rrzaglLQ9e3y5QVsrLCc/83NeFuN0yq0Frm3L7vlw6RJnpxDSb6xeMj+M/1M/POf4bUPJNcE+QpR6MWDS+iobu6Stc0qRKFfoZDRCcsYovCLZT0TGw85xFe9iU7ZK7gAoENl0oNL0zB34074ernHsM0UQKhn4EDLzap0UpG9ZJHtWJEicT5/+1ug79wT7AtszihbdT05b9tYxa5eDbzzUSevvSQRZ8IEoHdv78fJ5uACPEQikB0i/BjDBBl/kgYiTka3Vko7yzWDS9+feW9nPDn1HFhZINl6uHlcR5XiSPzcc8Ddd4fdC3uM+spAU+HcZG6MMWOweXMi8nRUKNaoacWOlIJL07TdAJwL4PXkdw3AaQD6J4u8DeDC5OcLkt+R3H96svwFAD4UQrQIIZYAWAjgGAW/gZQJKt8Dli5NRCexbGPQIKk6aAxI8kGQHFw6NOsiHyQUNpVBFE5JF6ZRo2z2//BD4r8hprwKD67Ztbvg3QVu2W6BdhXuvy0tPDSdpLSHmBC4eOifMLs2Nz56xYZ1ch0ucu65p4ApsMaOVV5ldTVw0UXKqy04+Z5e0o+A7QMdXZ56Cth7b/dy46r2xvvvB2jIh8DAbl1w1FHAggUB+kLUYuvlW+B+mNvP2RBeiMKYyF4kW4YodBupJEIUDlzWM+dZO+rGI6X66dimxfMrdJHxZNc0XDfqapz/7S3+24KNRTrxRr11aC+VXoOEAMCnnwLDVx9gX8Bwz/35z8BOOyH3nrOIWEFKh3vvBW6+Wa6s8RZ4bMqvncsaCuuN2bm0CupBlLTEcr1/rQRlKczPhGyIQqtGXdbaaVmChWe3qhxc0qEgiTI6dvR3nO2l1XXccw+w115+e6Qeu+f6hReASev3KHBvygdZD67/AfgngNQItB2AjUKIlCRzJYBdk593BbACAJL765Ll09stjiGq4MI/G8kJLlWsuhrYHGdeHVIYrAQj7h5c9vf0MTssxe+GX5+7o6YGcx/+GIsbdvDTzWTHdOM/W95Z8Iv0Z1WjUatL4l4gswDWdaBqo/WqKcugy7A9dc5bGhNTWsfK3MTPFVMmOVdo4txzgQsucOl0BHnySSjzenHDbuFntz3o9FYss6MQ+bf6EmvW5rX+fBKPA0uWyJUNJIAyeBXQCo8UAiGyPbiUKk+8KGwtykoLq2SqN9dlqmfSvGzvMU9tpjy4bEb8tLBMCPv8HRL1lzvG09CvH3DTTdbljFfhgguAMWOsCuV3dhYi/22QCKA4H8LEiUBtbW69Hw/bLki1aZau28JzPST/aI2bpMsaFSOLG7Z3LmscDU2x4+ymFWnFl5d56Ztv5A5JKrgs17/pEIUOXbLy+rZq02VtMq8umQ6gnUkW4JSXnCEKSxbb+zYeR3V1Qbvim9tuA/rMPSl3B9eXSnBd2Wuadh6AdUIIC+meejRNu1HTtImapk1cz1BxxEAhnvk99wRu/eF3Dn3ITID932nEf/6T/z6R8sJWwaXrCe2DA9+tOgBNMQvljq7jwAcvwxXDbgjQMfvE7QCg9emdXVZRiEIAaJFQcKU61vflZnS/9bfWRZIL2BWrKlDf2jm9PXXOU7+to0UcdStvNKchadAg4Kuv3LtNCkcxKSnyLovzE3+ljHhj3vHY4lJna1wrKEMtEmylSQXKCygZonDuum6F6Y8Elvk0fA6pObKn2lp/FTlUbqccTM3lIhZH3GK9VV8np0BLf6VgDJMmAX36uJcbOBD47DOLHXYDZ31doH6liKzMKLIdK1+0OsNY1NCQ3Jh9fz76diJsupfLJ9pyDed+ee/JnvtH8k/FimSMs2R4fyfO2T2Tn83V9sLwuTUuF84wq0qnBrwodIwxgp2w8eCaORPQLjgfgPN7lVtO8UxB576vauya+NC5c84+q9DJ5jpf/7SrXD9KjGKaXvz09frrgTrTEqHo38GK6aJFGBnTteMBnK9p2lIAHyIRmvB5ANtqmpaSOu4GIBWgeBWA3QEguX8bANXG7RbHpBFC9BFCHCWEOGqHHQJ4GxBrwnhwZs1SVpUQQGOLhLDbR71e+WzwlvjHP5R3hZQ5tgvCRYuweWkVYg4Wx3E/1sgS1LZkrAxFnXUomSyWLIFbvjBP7be6WzmmhFnrvxpnW2ZR/Y6AENijZzeMW5eJcWZeIMf13PNoqeBiSINAKJ2OWlqyvmpaIoFtMVKIaVo0yFuoFjNO51IAaGoybUy+HdW2bInNMe/e3EX/clUu2N0Yy1dYby8Q/5pwYdb3WSu3UVe5h4HFyovZ0ttJ0psqp664abtVaPDp0z3VKYNR6XXwX07FhPU9cspssy0fYmUEncxUmmNzcC57vh2dKyDPwZAsU9TUJD6YFgp+bmvxQb+cbWtqO+Onn7zXRfJLOq9USsHpwK5bbkx/9vLW+9KsU7O+20a0kH3PdPFcziKZSsD1Pq6wliksXZr57DSsqvLgsu2PkweXoaEbHt7duoxbv0gg3ngDeOUV+/1Z944Hp5bUterbF5gyxV/fSGnjKg0VQtwjhNhNCLEXgCsADBdC/B+AEQBSZvJ/APBF8vPA5Hck9w8XQojk9is0TeuoaVoPAPsBGK/sl5DoMmCAkmr22gvo0QPocuOVSuojJGysFn+2Cq54HNu+9RzeNYQAlD42IAOX9cwsnocNdz8guQhVkYMLAJa6hH3Ianpjjef6U4K7zm+8DABYvinXar6dlmvxlq/zTeQYOdKg1zKbcSFaiWajRrm8zLW2AvPmWe/7cNEx2HLL/Pfhlcc3Kq1PCHkDXGKD0wMQy1XuFBRD35R6nXrJwWXRrtV859uDyyVEIQBguMRaw4rUWsWiyufHH5f22pqzcmtf1WsXZsceZg4ub/zvf8A2WycFmlVVif8SyqdFixJ/fhRVDFFIAODsP+7iqXxaeJ4z4drfS6efnmNvlajrB+ucs+NNkrBYDFi40EMniXLS85+E4sX4Hr9th8225aZOTeSUTtHQ1slUjwQSE67UnOzi5exWuWUbQXJwNTZ664cMqWsnm6qEnti+sTvFf/4zcItFitOffrI4ZvJkf4YDpmM4zRNAPgeXFXcBuEPTtIVI5Njqm9zeF8B2ye13ALgbAIQQswB8DGA2gMEAbhFC8BU9BAr+7CuSpK1fnz+BpZhmbSlaTCGtSGlgu8iKxdCq5yZYNZJXhUvyObYNB2CkQ8LzQVWIQhlSw0ylm1LNZhE+eXLm+yNTzs0p061T7gKcgq1g2Obakhx3Tz0VeOcd+/0eQ7BHhkLk4CoXDdeYMcABDvnkZZF9abIqN27A6uAdMHDvvSiIYq4cEUD4Ci4DQsuPV7ZruxbDg6WCy209YDPOxHVrwdfle0/IfG9tda7bDgfh3YC5B2Ftk0KvOOLIF19VWq4Z6xuS9/Wbbyb+SwywBx2U+PNFg0TkAVL0qBZS262SZi7ewnaaGD48IcA1ernE48DRA+6xLG++9V97DdhvP89dJQr5aV2uZ68dxnnx1oNH2JY74gjgpjG/T3+XXYHL3tMff7s19LjI9Y62QssOy2/fuE0o5dVrMlUZfonZEHRja67HpGWVk5yz4HSqtF8L2P6E1AsgXSTzTuqamq+t2eFu0ybg+++B445L/Nc2ZzxjX5h1Gk44wVt7OW1qWvEruMrk3TzfeHpzEkKMFEKcl/y8WAhxjBBiXyHEpUKIluT25uT3fZP7FxuOf0wIsY8QYn8hxDdqfwoBEEnVdSweTp9qaoD9/mDv7ZJFr1757QwhFlgJYGyVVBJCN7uE6deNuspTvyxJW25JPM9CKA1RKEWyf5U+lGpxUYF6g/wjZhGiEFuUtkR52bLoTB9e7hynx4KWXfZwDe2NIArH9g3evUqdmDTJ2kKcyNPn2z0tt0+v3k2Je5wQwJo1LgUsOLH7gvw9nB7qlVVw+cWyrngcndsZ8l/a5kmTM2KxKyZlpOOBY/5+otL6osCgQe6PgcztdOHvOtuuSwFkctxITM6trYm/pmbvSl9RU+teKAw4EatFwfm0nOst6v36K2Hb3MknA4cdlvn+r38BU6v3kGpfIu0TyTM1LV2kyxrnsutHX4ULL5Q7zhwK3+7dWvaWvvyFE7Dy5S/kDPtS463PEMOWiRQtyv53+pkSnXHPR/b3w76z3uEYgzy5zy6Eg7m4VCnixrBhmdvLrOB65hngxORyKRYD8P776X0t8fYYa+3kmkNVFdAvGfFVCGBzLGP8zfd8AgTz4CLFSAiL6fb/vg+PP17wZrFkCbBwlXvuHoCuySQ6pBbLmzcDzz5r2CEh0bQT3LwxT9IsRgIpIVdynFEVolAK2TYtQiHoqMjK9xHTcxfbYptt7ZosCZYsyXwu1AJR9vSNGwfceKNNHRLvN8VGQXJwiUSqiXlr/IXpIiZqkwJUg9n21KkJxbHqcbBY7+socVOvIyy3x0SlkhM8YgSwi7doWACA7lvUYcKkzKvZVh2aA/cljZffZVHWMp+GmxezXQ4u8zpip50AXc+eE/y64NqZEyfp3tnem+dXu8723NyMZaU3hp57bmLeTbHffsAXX9iXLyRbnnqM52OE0CIp+XrmTffw207eCyQb9R5c9vWJWNxxSG02DN3zpstbpHB+D5+9t0rmA5K4GMa5rDnewXqctHjvbF8hZ0hjvgedetQwZip+XL6rVL2AvAdXOidZyvPLw3N22WXAr3/t3OaCuh0d60hFg/l+5rbS7abXD8UayqOIMC655s9PfP7Zz3Jv+xyDVIvUAjJMmQJcmcxWs24d8KfvM6lrIjjNkxCggouULCoGuYa2TtiwIXg9hFjhZCU9dizw978bdkhYlZstwpTiJYFtckFZyBCfmRCFLovZmTNzNulCQ8vgTGiJmIXFsaW3nUtTXGip4e23E2FbvGJ8vnbcEXhj3i/VdSqf+Fz0e0IIvPQScMBdF7iXJdjYuoWtkhUA8PXXAABt+rT0piOOAM45B6hQPA5SAJZnFJzgmlWbfdX1yeKjcMzpW6W/b9UuHAWXdIhCn6cqp66ePRMKLuP2gAouO+Xbjp0bbA+1Mm4hiZxAOSnRli8PpS9+iOqQ+c/ndnYt06myzbUMSVLARbemO7+TZXVl0ya5cuD8HgX26JL0upfJeSXzTpwygDJwyd6Ts75L1ePSn3snXIhT3r/BvZ6UosqrgUpaDmDYZOi3VW2ffAJ88w3gJExrc5l3Uy2ceOexjuWy8KjgkopOU0RoWuLdOfW5qcm5vGoWLChMO1deCUyv2T3xJaVdK2Y4ASiBCi5Scsyb5318sJvk/z7uUnTvbihHTy+SZ1KCn5z3NBlLsnzenxYLW8eyQoTiweWHuNDw78nnGb5bTI2SFu2lQCwGNNjIAJub1elfVLxQOF1243vN+vXAmqZtA7dXCETfNzIWk/lqA/bXuOxocxcg6qLCWclq8xI9Zw7QZ+5JPjtmDd9/8oyKE/zJJ4n/U6cG60pYc4xdwnhFN5/l46LYg8vu3Dn9hJFr9k98cIwvWfykTu38+cCECdZl6upcwqUNHqy6WznoQsOKFYnPQXQXWtAKQqRU15l+2dJK6e83X58FxrPtNFZowtmDK4sK+WsoFi5KfFD4m4g30u+uEnOQZVQTifjoZsMn24i8rj3IMLV6dw+l5T24zHyz/JD05/Tvd6lM9O6T+G8hb4vt6OzubmssKxPCQ/IhLfVxNp92kx5Pdf6Ix4t1ms8Q+kksDajgIiXHAQcA48erq09BOgZCpLFVcPldaKvCSw6ulAdXARVcqTWBpXJKgo0tmWS4Vp5wVovyUl2HPPMMsLVN1KWrrwa23bag3XFE1xMKuV0P385yX1FSAMt4oRetvE89EycGryN5MmW8VmVzNNhRquNOFNi2Q6OSEyw2Jz24JPM/5LByZbIihRc7qAeXVYhCN6GQbIhCAIjHs/I1TZpiM5e7/Y7UwG9TTmqN8Pnn7mWKkBdfTEQGqEwazJ9xBnCMTcS/c89NONYVBJvJaML6HthDLnWRIxwyS5xBgwConxtT45H220ty9rktn7JvafvSOR5cqSgTP/3k3kGSF1Ih8byGKMxsNL18WIxvxrlz40Zgft1OlvV7MQRcvin3PciSVHIknzm4vq/aN1NErkW0rd9oW6Xbujnr9KXWRg79A+C6Dih3mprCt+PJR5SfSL7X8h4sOFRwkZJk82Zvg1ypW26QaGI155329h+wcqU/Dy6/yh0pku27KdE6VrZlPLgKKVaQ7J8dxvOdDk9hxEJb4nZJ4nGgutpXd5Tz6KPAzTfb75ddfy1apKY/gLpxt6UFWL3WIm9aka4pCzIfCRHNF4EwMFqx+L1pNBvDBAuC5rIp1vs6Mji4pWzRrjU0pVIWScmDykvda/RB0mWtum0laHMNcWTB2rXAqIUWeUJ0PWv+PmrAvzzXneiUc4hCqXWShFdnFionRh+0tQE1FssWM3/9aya3669+5W5LsWxZ5nOOIL7A702B5ytOeCWB5WUMQVLrdjtl7XcomxuiMLmB1rWh4cmDy+rimo773+tb5hQxzk433aDjqWlnW9afNc4qXvx59eDSfnMeBg8GZtdmPK50SbmD3pBIyLSpuV3OPlcFl3H/wIGmLto8XEL+GqaLm36vn4hQfpg/Pyt9b14wjzM33eQvT6wVqXP0wAOZ4AWEhAkVXOVGGUlGZN5lzjkHmDbNvRwhhWTCBECrSWpGUpmKJRZpec3BlcRNqCEE0n0taIjCJH7yFZgXyGfsNie3jE8Prr339tydvPDii0Dv3onPCxda5jzOIWzrLhmEsB/ry2i688zYdftg1aqwexENBv3YlfdKGbHpmVdt97WviCsZOH5a18O5gE/L6SD8qV+wUJm+QhRalL/tNuDW/qdYNKDniLlSjnBudVo2bbNWkTKCmTVLqo00IUt17rsP2E7SeD/FsGFy5YIq5FVB/RSxJfnOoVLp+tBDwOqmbWz3a8L5nUzWg8vMg5POT3yooIguLNK5nKUip1hcJ5Ny8m8P5t5HxvfO+okFzh2UysHlwwP7nHNci1iypGF7NDUBB9x9Yc4+N1mBcf8RD18oF6XJaw4u5K5vDjgAOOoo4KqrpKrwzf77A8d6SC/mRkuLxcZ167K+5uP9/rnngBEj7PcXYg4v+nUCX0aVwNmzhBACaGzJtYwwFypk2LCoM3hwIjd8Y6xj2F0hZYjdPBabMQfa228lvqSslfxakqki2b6bcMi4SAwjRGH3LeqdC0qsfuJWluo+f0q9S3fCYL/9gDvvdC+3yy72VuEqFpEq1nGlqOASev5t43/zzS3o1SvPjRQJ5/7zYM/y7Bw8hCgMSuq+1jSm6fBD68p1zgUUxDbdodOmYBV4CQmcB6wMOixDFPq43SvX2UhWdD1HWNinj/f63fJB9J13gvdK3fDq8aUYo6cVkPAcv+MONXUHDakaGYpU8hXWGBBVLOdYhdc29d7y738DNS1dHEoK+fHPgwcXCZ+0QkXiAlsWkVhDGFf5Wtx+/siq36U/O3WWTLQke9PJ/P7U7xDCUWE2o2ZX+2nSpR3jMz+1apcs4wzbNhWFKJw8GXjvvUBVSNHWpkbptHw50KmTxY6UhWse8HOKBw4E+i85Um1Hfv5zoMUiR2PYFKswooihgquEGDgQ6HLtpY5lJizsmt8wZkXIww8D3d56VqosxyhSCMToMRnrwNWrE//DzsGVxE303qa3w73/7ZZY7BbyxVw2RKHVyk/TsrzfLD3hfIQojAo//3mO8VaO4s3ut5hfSArxm1vi7dKOi24UbZ4tF6Zs8JYsmgSjWJ5lILuvlh4uxJE2PTecaRYKboaOlbHEB7/a95BvyHk1O+RsMyqfGhqAFSuAqjorSYoB0+9YtgzQl6+0LWeev/1E6VKyDtoyN6SUIyFrms23y8iRCWvqUoKKAOJGIYdNDYD4ZrD9ftn71a7TvOFDIx1eX1GIQitk71Uv5m5e5z4Vz4tsmy1xewN8x35YhFNPl1eYg0sky771FjBlitQhSqmtVRMy0DYCt09r2+Zm93WYn/vof/8DXph5uq8+2bLrrtAmTFBbp0Luugs47TQAmwIawBFXqOkoIVZavDOaOeauU7HAJpFlKeFk1W/G0pWXkALgtCbIcdn3m+xWFWmLcveiT/TZPn/9sCH1EuB6DiqtczXdeOCY9HcrIwCr310sypXJkzOfHdLPeKZPH2DUKGDqVH/H2724/fqbv+Dgg+XrKTU5gICGZ6afFXY3yorAL/rpHFz5lbAtWpStdC61e78QFELBFdiTLw8ht7xwVv8bcrYZQxRecw2wxx7APv+42FO9e+0FfLT4aNv95rNmOce6XJ/UGiDQZfR6cMj5cgoh2M/XWNPUBLz1/b55bV9AK9rBsr6tc9hdiBQNETkf2uYm4MexsqXtdxkHOeODXKT3aymgefDgMnsdb9uh0bMHl3M5eaQN2GVDFEr8ju/XJsduiXNld0t3ahezP8ii3qxHxu44jyEKdVEBCIFrrwXuvlvqkFBYvBgYM0bt8PC3vwFvv229r3PnRL4uR71RnYvnYAEtDwoRRcMvgwYlQzguXGhfqJisLSMMFVwlBNdCGaZNyxbqFjuy3gykNNA0kZvkNmwPrpSCS1bgtnJlKMI5t3PwxGc/s9y+ZbuMpjtm9ZJgseiwXYbU1jr24ccfgfXrHYt4ZvZsIObwjpCia1d1bd50E3DKKcARR6irEwBiohKLF8uVdVoLFus6UTDuXMFRpazO94i3776J8SPdHtd9nmnV7S2JNQ1qFFxuik63NpIKkyiNYcauVFXJdWz+mq0kK095cGXPvZN/8j4Wpg23gzyN225rvb2hwXp7AS6UrtvLkcK4TyzblEnuaeLrr4Fr+7qHjQwy1hUiPy0Jl1WrgJHLC5f0Vvt8gPN+4/0qG6LQmFyIk3s4CIv3bwfM75wCWvZxNsYPxuHTMo+XD5QruFLpBhyKDFpxqFSTTm1NXbOT/Rym6znnWGa9Xr+pQr4wkj81SgsuC2bPTuRAOylYOtUsvvwy4U3Vq5e9o0TfvsAxx9jXIV5+xbkRGeGECiI4Zi5r6Iabbk58TttXO/Uz4vdgscAVXwkRwec6NP72N+CPfwy7F+ro3Llw8wOJBhXmJLdSFmF5HNLTCi5JCq1hllTA3fvuQTnb/jf9VLwy++T0dythiFW9tiEYXay5f/lL4PbbHYt45uCD7S2wgpDPtZaKqh37VywudiaYc6N4OPJI4IorgJ73nONemESC1gJ4cFXYjG4//ggsWSLRRiyGTz8FTvlKIlligUhZOAOAWL5C6phVNR68LYTIEWT1699B/vgkSjy4Tj7ZevsXX1hvL4BQ4uWX7fVu5uZDk5FE1BpvY2tnviSXOH/+M3Dmh8Ff/GXvEq3VOfxL9u0m6cG1dq1k6ySfpK+WhGdujvJFmBRcqTzaJozrfCfDzKz3AUnv5SjipD+68rPfYqydM6QQaF+RfR3i1RvT++zel1as65guI9c/Q060iJ7Ggw8G5s9XW+f55yf+jxsH7O4SGV/TgKoqix1uIcTKWGnTqrdHn9dMMqWo3mAlBBVcJQSflzwSgcH5/fcTExApHYSN/F0ILSMgSy2wQwyBs/82a9O5XqQtzTStoI9Nqi0/C/xxVXtjek1mZScbojDI78uHwrqpyf+xERjilCOGfhd2F3wRVliyckaYhltZpkwBPvoImLY8uGvkhg3e13Fc93mnICEKba7LL38JXHaZRBu6jvFjo2XVtLAuk5dLtNplizfh8VyqmIaUCPna2Xj52SW9K8AEKhOG/r77EgIoO0ezIFTPXZflYGJJHs9DuYYoJHIovbwSxlGa5pxn2OjF69Q3baFBYs0QhZEgbWAqMZ6Z1+s5Ci4bzY3xOMcUVB7eBzx7cLn9PF3H8uXAovrcnJw5uFS2Y6cGiGXLbfc/8YR9HzpUZK+FxPffu7fpMURhXFQUrVGkEencbj6n6urqXPlFlN5Z8x0mPggc0gsHFVzElU6VDJeEmhr7fQVyrbrmGuCWWwrSFAkZAS0TIiECCq55dd2xxV47AvCwKCq0xsQmSb0fckJOCOC1abn++bY/USZuex7W0eW4eBJLl9qf7hX2L1NRphSVjVFH14Hp04F2F/1G+hirmPR3j/eWkyhFfT0wd27m+9y5wEsv+aqKuNDqkOwcgBoPLs1lgHdp45y7D4c+anTgfqjkvYXHpT//WLWP1DFeT6WUAY2bFXvy1TaQ0MWuDZvtIp5/wViFw6lJdeuxx4Du3fMTweLdwTvi2GPV1yt1j+g6gqg/OaeWOJqmdv2bEqA7Nemyv6FBw5VXuhfWjNEuSkDAXvQIw8zhI0RhXFRkv6/X11set7JxW0Md9oN7jneuw80kreCSqCvFsccCI9fs76leK7p2bIJ4403b/XPm2OywSg+QPOfHnbU1vljW0/owXT7MJADEI+z9pgJVU+DZZ8P7OkAInHQS8Mar0fTwLjgyizkSCCq4iCtR0syHhsOAc+ElFZg2LWHVUOCmSZFjd211oaWtUNKCk4jcCLrseKDrBR070h5ceWgzFgNemfKL3DbdOmP3HWr0lZdfDjz0UPB6gLByeAS/VmLCJNsXyGKFc27hEcIm9IYDTjHpvXLSScCJJyY+//OfwG9/C/zlL+7HlaNSOyiOObgg1HhwOeyTyfUweOL2iLdGT9i5ZLHwdM9lCf+c3IpsDFTO3n0mHnnESw8VhSj0eLCTDO3bbxO584JSDDKR4aNcvCP9MnFiIGNCzqkljmoF16xZ7k1KiIz79cuUloIeXJEg9f6tHX0U9JjzPGyes2J6pZRS5Z7xF2PRIus6/OK1Htd5QwhPaRUdcyJDg15rk0QSQLzRRvlhIUtIff9pUnv7BnVvspOYXhnKRDpqZEQmb0lWrMjNQOH6C4TAmDHAmppO+epWmqIYNTm25x0quEoIPi/5x+ol6YuBFejZE7j55jy1WVxzH1GAcZGaVoRE4UbQdXmlhK4rsxjyghKliek5t1NG3fzBybjqqtztw8eYFt1tmXBOqXFaVsF1112JsENWfPxxfvJuGcnXvFJVBczZuLNc4XXrbHcJAeC119R0ipQ1Uvd6i3PeDekyJhYvznx+5hkp+RrxSXNBPLiEbV2bN8u1sX5zl8D9UM2atQEEaAMGuBY2n5XBKw7BAw+Y0phEMA+JU5vDhiEtyPTL6acD771nvz8Ky0MAOP23wUO1WrJxY6DD1zRti2Xrt1DTFxI9hDfFuyuSlUkrTmX7RgVXJDDm0Gz57GvHsjkRP4BsBddOO9keu+++AGIxR8NM4z02e0F7VDdvaVvWa4hCV4SAkJlcZEI5ChdFSOMm6+0WsgSp+S6VL1TSuzpmyL1dWwt89pnUYYE55dTsa3HZZcC0aXLHLlsmH46YuZ3Dh0N64aCCq4Tgg5NHJGbT1jxFcozKiytRj5MHV4oQIxPmMm6c/AtdSKE28iHcim+0X0FaCZ1yhDwWAm+xbr1U208/DTz1lFRRPPYYcMopcmX79QO6dTNsmD5d6ji/49EbbwBDhmS+X3QRcPKXd0odq82d7dynJUustxfpgn7d5q3C7kL5sXSpo4dEmm+/dS2yse+nrmXmzMmOfMx5vnA8MeUc5wJ5DlE4e7ZcG8aQgFFBxmvBSNbP9KH4TXHBBbapTHJIG27nw5bX5ro5rdOCLIV0PWG/MXw4sDwZcddK1yNWrPDfiE9cz6/ED5e+mxQ8k2c+elLgOkhECWEC9SZzsS9845ir0jZwH/2wq98GiCqEyMrjo//wo3Nxtxxc22zj3N6IEY7vKsY7++DzemBq9R62ZaVzZKeUP25juBDK0hIIaC6/Mzc1QCwGfPJpBT5f2tOxrCXJa5AOVehWHJnrNn48cMklUocp55NPgM8/lyu7117ATTdlbws8FPrwlHZ91y6gPCjKObhST/OgMdbv+Cd0X8CXQUVQwVVC5Gst1BJ3cAEuF4TA1KnAKkPMZDNO51/XgTp7z2y3pkmZYVwIxmP2luAFp7FRvhvxeEEVDPkMURh/uVfACnKlX2L1GunDHcM+GPatXQuMGiVfZ22t4fuw4dL98cN11wF/+lPme1OTmnrfXXAc7vjxUjWVRYT9Pno07C6UHx98ILeGkvAkqJ8wz7XMQQclnokUURjey4XL9pnoXCBfIQqN9RZprhVt5Ajfx26usLc8B+B63ueOtvfkNaIkRKFHnC5nkH6sWwfceGP2tq5dgRkzTG1syFOM9CB8951rESE0T9b4QYjpVBiULELIGahIICsg1eBB+O9CczI62xX/y4RCX1vTAQDQ2AjsuaeadogEQmQ8sAHE23V0LJ7rwVXhaX7/7b8PxcT19hc4n+/RbvdvY5OP0Jp2ReDNAPXpp4H27YHLrtkC36/dL6cuWfS4XOkg53m9nL2qNF7kucb3eCekDX5kLYmS3HcfsN07zzqW0bYsnPd0pGf51asBAOf+yVpJvU2HzXwZVAQVXCUEjX3yyxFHAM/OOMPXsb17A9tu61xG04ANG6TS95ASYXmttRWH8ZKndCORuA8qKjzl4AoDaQs2B8ynOr5idbAKLc5FGGGU/KDyvsuHN+LM2l3Re87J6ismZYcqAZns2KdCyRuJeaHI6NLOxZNIwdxVYSUkXbYs89kQtraY0KZM8lTeeH9ucf2VruW7tLe/Nt1G9M+t1IK0giuIqMOuDTsPLgflSZBntNImpZVZqBVJb+UpU9TVpWKgi1Q4BKIUXS+4DMSTp4APB4edf30Err4auOOOjPcmKQzGy6VXOIc0tnyXM1xQNw+iT3/ojs3xDl66FxzJ8bTLyT9HY6MaJZcQmuOcbJ7DZs50rku2P8MWymmHheEYL4wfD+y4o+fDlOF33LP9qV6SriGhD6MjhBxa3Nk7LpLruCKFCi5CCoBRruHE3nsn4u8aoQCrNHnnHeC3b/zacp8uKtILwUi9k1dWyk/A8XhBc3ClnpN8PC/xoIsOi7fXDc1d8OCDcoe7LWCLxRmgWPpJyhNlCi7JQcj4XHOeLxxOQhYNUOTBZVGHcQAsUgWXZ2TPZbJc50r787LLFnJhEELJwWW4tOvWAUuXZr7nQ8FVKkgrIYXwHB4zp4qWPMWRJ6Gz38NXYfBgNXXF9QosXO8SVg4ePQWqnL1P7caId98F+vRxr37evEARYMuOmhrnSGzGEMPpKCo2WBp9GhVcAZcTazdvnbd3p7yE8bVBF5rj3PyLnRbb7rOqSxZP59/HxTKGGldFPpT1OT+taq1kweIi6DqBlAZUcJUQ9OAqfhoagNGjs7cV+VxTFPzrX8DXznlkPTN0aDKZvA3jx9vvEyJz3edt2A6xWETug4oK6YWl20tBvlARotCsxIvpclKmzZuT+VXMWGgpx6/vgYcf9tO7bJYtKx4hWKEVXIV8eSPFj6c11LBh9vUIuRtdhYLLy3GqBIClTIWmK8rBZVFHe4OVa6QsV+TxOqKmTuVXX0mWd9hnTALvhJIQhR4PNnpwnXkm0KOHXFXTpwPPP2+/307pnhPpQebKRGIRmc3Gls5oHP6Te0FaxxAHFm7YFg32qXI9MXLN/tjvgd+5lvMkSHXJURB0OjjgAOCZZ4LVUU5st51DbmORPZr6MpgwXNCg7yF3jrsUffsGqsKStjZg7Oq91FSWzullP0fHRCVa4vbecMfumJ1L2WGJLXVOv5i8GwBgi0o5za8w506TJB9TUzyeCVvqFelpXiLcutL2iOtd69eLkORCBRchinASjgUZrzjW5Z/HHweefFJtnWeeCbzxhv1+x7xKhmnwuHf+jP/9z+WAQlFRIb1Yn7xsu8K6WyfPj4oQhWbiknU++ihw8MEWOwKugAtx6QtxdxWpTJeUAZ6fsYEDbXd9uqgnUO2eE6fQHlznnFM+jkNOOJ1qTYPSi5FVlXEALNLB0Kt1bOr3u6ZjMlr12BATcpYca+q2yGpbKTaVGvN8pMIHbtqU3Ocw/T/5JHD77Qq6JVNonntuQOVtunDEZ/fjuj7HSjQWvDUavBCVaJq6eyq+aGngOurrnffrOtC9e+BmSoYNG+z3ZeXgcjHWtHzPNQz6KhQg+fAS6tcP+MtoRfmLhYB2nPM4/quv/4a9P3zcdv/fx12aNcy3OjjcyswG933SE3PnAttvIRcLXEBzDqtbQBnMv/8NdO4sV7atDZg/372c9FgVEW+JLu19aviKGK5R1EEFVwkRkTGJKCYKeo1ywClcQT7qdLquuilWdXU1sL7eOdFtQdDkxVtusYZVk8+FgWyIQlsL0gJbHzt5DnrloYeAt99WU5fxNBR0XFuxooCNkWLkbz9ehn//W6KgxI37tx8vA9bahP9QzMEHA7fc4l4u1e18zHPFhpPhhQZ3RYsXsqy/jQNgkXqkeH3PSM3Lk3+S06w6XZuvlh2aKuRYxwNfHZPVtiqqqoALXj3bcp/V5dwqmWLV0Zgpue+TT4A5c3LDmcumApMyJpJdGDhJfpPMnAksqd9erj4FfPL9ztKe9HbwXYqoRINQZhim93ldUU32xOOJMazsSVr5bFFvv0Yzvum6TdVu84yKkLmVG6qUG944KZDC4mRDOmUtZt9BITSp87F2LSBaPVh1paxSJNC0hGxG5rK4KZ+D8N13wP77q69X14Gn78tjx13YZYuNvo6jLJwAVHCVFHyo84jEDFZfDwwfnr1t2jTpw4M0TRSwerWaeoRIePIAzsJEfZV9g+YF8TPPAN2vP09F9wIj65WlLV9WWGuUVIgEBc+Lud+L6ncIVqHDG1I+PCq22ML7MXbXtXdvKAmlCBR+jkrfC6tWFbZhUnT8ULWvu5eJEbeBxmNCL+FT4bFiBTBypHu5VPX04CpMDq5UDVmXtcgVXFfu+5PvU1O5bo1UOadr03vOSZJ1KMDih44bBwyc0cOicHaIwlzlk3szl10GHHQQcMIJ/rpn18TPfpbotxszZhi+SMTDOvRQ4L6JF1rumz9fSkfmicuePkrag88OWkeTqKI3e9c26Lq/aaTsZQqjRgEA2k+dYL3fdIJ8OVsb6hC6gpDH348GFsvnqHJDF5ra+0BRZWPGZD5rLfYePLrQHCxKsxFxuYfENTycxb7f/z4j72lszC0Sjyfm1m22SXjMqZIz+aGutbMX/R3q6oC7Hts6fx1yoVW3D2dZqsgqbok7VHCVEFRw5RGJAWf4cOD00zPfa2qAnj3z0/Rf/0pLLNUsX574v88+Uu/3trS2Avffn/jstDDuPXAX2326KRBQZKIZCRFKAncZUs9JPoQYp331d7nG7XB4C+3QITfa2fz5wLXXZr5rVvlcCoiquSW0dRsnRxJB0rdlWxtETGKQD+AVRg+uDE7jUIXmU2pow4TF22W+JOs9uOuqolRwCaF5znGZEu5pzcHdik/dZV6qI85tqsjBZVmv/T477+Tnnwcm2MhRreo0K6BFo4fwShYsWGAQGjrMg4cdZviSirHok/33TyjsCCllVK7L/bxXnXIKcNZZHtrQs/+XLY2Nnoq7vX9bzguGjcremRW6XAldRF6OXunwfMm+58c3NkiX9ZNSYfDgjAFJly650U4++igzt155JbDrrp6b8IzddT20/4M49VRjOeffG/b9sbTBn4e41zDakSPsE18iUMFFiATazt4DVxsFSao9uF58MTenQXMzMGuW/3bKFtMJXrwY+PZb/9WpCMNW1bQ1jvv8Hv+dyBe6Lr1Y1DR14TsKjfG6KQn3l7wp7O6HJdm5dfH558BbbwGHHpo4IBbTsOWWCvpRbARc6KXvVY/eNIQUlFhMblwdMsRys4z+Vt+YCDWi1zonuy8HHD24lCnzExUd/9AZGQfSpKRM95nMPGz6LToGfedKuhglSZ3rCs0tzlMiNKTTiP+bPadLtZkSKAYxdnn5812xcKF8eaMHl5HbbwfGj7c/zjzFme8/8eZb8p1QhYKHwKMMuSAUNCcsKXlU3k1xUZEbn9SFMWPSzkgA3JfLqf2RMZiMKkKgU7uMpYGvEIVGDy5Vd4ri0MlR9OAyUllhf+Jdva2S6K/JWysLAA2N1u+KGuQMn8yPsNU8mDW9qnZ1BoDRo213eVnTyFKq+pgt26nPAeZmFFGipzIUKPUpIWikHh3Gjwe+/lqu7OTJwOP2eTdtJw/z9X76aeCQQ+TaJAYM2oXUOf3mG//VGV8e9GX2uX+6drSXAMyv28l/B/KJrktbo4U1HKleIPzhDwoqcVFwmUmVmzkzcxab5Ay584JxrLELtzF3bqLf9fUK5yIhsO++wLsLjgtUjZ3wkZC8IfEQpIpMm67l3TNWvJ540dffVJRQr4hxGoZVWX8ahVrpNUGRhygEgNfmnujrOBXnNabLvbKquIK3vvAzPPecfHnj8ys7z59yioQxlaRESkp5IzEm6TqwsUUyu32wpggpajQIqefulFOA0Wv2cyyjC82Xh7aX5yw1LhXp1FNQjNfVSSF44YUCD0+2SB+g2INL9XutritWTORBy3HgtvZhjXVRIdVmXFRId21zrAO2vuLXlvuEpLjc/Dy6PmuvvSZVryfG2Cu4/IwXTvz0k9qc3ypQ5Vnr5EHol6L3LisiqOAiJA/87nfAH/+Y+e40Ufz3v8C//mW/XyywfsE1OyV4ia1bbmyzjUMeAouL49fCbcSIhHdduuqJk2zLtjkkzI5qGEBPi9jOnQtqMZsvK6KlS533X7HPeOkQhVG2dJK2MlxjHUT8wAOBoUOBdetkG5Q4GbqORYuATW2dJCvNZe1aoN1xR/k+nhAjQ2d2x7RpwLtzj3Yu6OFNsudxnRCXyS8TwBPxd71PAeBsdOHEl18mBHWlTj5mrPRQl5oHoCHeVh5SRpH88bttuVGmsOOa4ebvf58u51xN4UMUxn0ouEaNyk0+n+PBJdkXpya9nIeXXgK6PveA/AGElCmyU/yoUUB1SxfHMjr85V7xIrBOCds/+8xzMyVJi12OH5MnsZOS4osv3C+AihxcqimGfIS/2nWu7T4hIPW86EKT/q1OMplMo854VnDlw4NLgpNPBsav3ytwPccd5+yhHgaq7uzGWAdFNcnDHFzqoIKrhKDFXHTwkmTatS6DxiQWA6Yno7TwestTX++QB6FD7iQWj/kTPp12GnDvvZnvdoqqeBy4ej/7zN9e81wUDF2Xtj/R9HDiYKhQqnlZ/HfrKOFalQpN1WZ9TnKEWgrWN17rcCqf1T+HFbvRkuvMMy0KxA1xW1evsijgoVOS1DEiG1HImf85Cz17AlcPvcq5oAcPrqDY1fPgg8CwYYnPA5YeAcC/8cQ332SHQypmXOcIBeOOsQqzgksXGtpdfkngNooBkZwuju+eh9g4NqgIUei9zczrdJDbJ3ctoC5/yCV/38u1zAp/+m9Cyg4NQtkYE5f0Ts3pgw+PjP/7v0RKg3Lnyann2O7L8uDyEwHC8J6kxINLsbFoMYQodPJ2EZAL89ylfYt011RcJ8/v8l6M1iR/iMy9Mno00BTraL2ziIWLKm9DKaNDL5itmSygaksdVHCVEmvt3XlJ4dC03Jw6dqxenZtU2oxxspo+HTj88Ew72eU8dLIMGTMGeP11ix0WCq6OaFHSpt2CqV07YHXTNp6PCx0hsgQ5TuhxeWWYCna/7WI88EA+hFpyv+L554Fp0+yqSNQhPukv12IJPMtDhxq+pBZ2hjiLUr8xcA6uol6rkxJnzhzghhvyV//DDydCFxuJS47fZkopB6DrHKF4ALZScJUbsr9YxZlPne9CzqMy11Qm2qDsfOXFgyvFZ8Ps15yEkPDwa9QYjwMDBiQ+jx4N3H+/fVnjmHHddb6aK3piMaDv0D1cyxnXCHo82ESiJkShYgWX4hCFWmf/UTZykOiYAKRC7XSsdBGwZdWpXsGlNByorYAhm6C/4+d/+QXmzQtURXgIEd0wgGPHRtV0vSShgquU+GZw2D0gFnz6KTJJxk3suivwySfOx9stjvxGKxo7VnqeLCk++cRGmGixmLrhgO+VtOm0sF3VuK3tPr9CyLzjIXbjy9NPLHhS70ceUVNPVgJbmbcAIXD77Q65XZPnTYyyj41tqs6SF15wD5noVocftE3ulkdWfP01cPPNSJuLtsYrMWKEh3Y7Bg8RQAUXCYWqKtciixbZGF3Y4eNmNh/ywszTPNcBAO3b+zoskjh7q6rPwZUmOQ/EVFuGRpgLXvwV3nvPXch32T17K2szdQWrm4LlkvJiRNZnzomu5fbbzz2cT26IQuvzdsstwE03uZcjGVQ924Sopq7Vfaxavz53W1sbcPHFic/jxwOPPmp/vFHYvmCBxw6WCHPnAte/fIRzISGy5qtY3GZsdZgQup5wUKaYgrFZebhdaJEMnQggE/HE4bzpQpOSRzwx5Rwl5//q/X70dRGUXrepUwNXIfMKMXnhNhg7tjgNbSPdZwltp/AZqpbkElEpKvFDZLXWZc5vfwt89JH/4+0mZ7uX786dgZUr7es7/nib8GHlisVk0rmdvNWPE49MOde+WbfFWxSJx6XHmeUNXfPcGWuUvwjIvARI5uCyu66ygrTbbgNefdW9O16ZMQOYvXFn2/1a0vOqRcKx0dj3Pn2A3r2R/oEbW7fEaf7k64QUFdpJJ7oXUtWWw3Rh3vfq7JPy25kiwGnuzYdRRmpM3P+SQwAAMZ/hqIqVXr2AdhXOL/efDNsOI39ojw8XHeNa3/g5Lvlsktfw2OevlO9kQJ6dcUb6s9NywC0hu+xaYN68xPyaKafmvi1l2UqhDa5I6aPqeTnu83tcy+y4Y7A2xA9j05/dIseUKrLXy1jszbm/sC7koGDZ2JDJ76UrELWqFnzrOiDG/qisPqUkf6dT2E4hqeBq0dv5uuZmtmovF9NT1oNr9epkQJOITrjFahgaWaUtIO/OF9F7otgor7esEifsAamL5ARQzjz/lPdzZDfU2V3v5uaEZXi509bmPwyaKgWTLiowYwZw8MFW+5wUXBEdmj14cFU3d0F1S+HjWt0x7jK1FbrcQ1JLkeTCRnbZIp0Py2cdZg47DLhz3KUObSYq69QJmFa9u3S9lZrK+AyEEBmamzPjhGaSA/i1Zi2ldy7Xn6IiB5fhcyoc0PzliTA+rsnMS4wffgC2bOduHXHjnVtJ1XfsLUc77heq84t4RGr+Xr3aen9jg682J67f03efPLNhg2uRsN9HCck3iWBYxXOji48z4WLK9fk0joMX7zXZskz1BoGphvec03eZY11ZLGa93dymFr33eSEAsWx52N2wJrlg7b6FfeQQHXIKrpheIf2Mzq/bybmAxCSao+CqWmdZbtddk9FNXNh7b+nbDACwaRNQ3xo8XKTU+BDRl4LIjm0yHlw0wlFG9EZd4ht6cEWf2+/uJOUFYcRuwHMbxNeujfBAXwA6dADuu0+ioMUk/YRD8lmvHHYYMHt27tzmpOCK6pM8Ye5WWNko55k1pXoPDFzWM78dyhNCKHYTTym4ZBcvra22u9KhSRsbA3Yqwc72jlueMY83FevWWu8oEEJoZT0GkvLAfI8bE8h/800i52MK38Yb1dWJ/x6MHEqVn37yVl6sWJk1ncTKTMEFyClWFyyzSXruEV2Rgsvv3CHV9tix1ttNc7+scK6+LVg4Rk9s3Fi4thTCEIVENUrvqDwJjP/xD+C114AhKzNh88p1XWw8xZ8tPRK3355b5qa/dsDkDRmDAWNEl3ffNdQhqXlQk4NLLbqIsMQwucbsUGF/fmU9uLwYC8/faK/g8qPIvv9+YOh79qHK161zf+SXLDF4fUuMDyeeCJz+9R0eemmNVqSR8qJucMA1SOGggosoozVefi/tfvAsHLELUVi30fE4pzCF5cLjjwNY7mKlpGoWFwK/2Mnedc6ss5habZ/oNqpWHMf88xSMXLN/2N0oKG63h9S1cglRmFPnkKG2+9Ivpi6xjoQAli0D7v2Ls0X42rXu/fH7KlSxeZPtvkLd4+X6Ik9KhBUr0h+HTO9uWcT8fDqNWb49uMZPSHywE8x75J57gEmTlFTlGaexx/gC+vzzwK23Zu9fvRo47jj3vhvbEL16Z6Vkay1HBVcB3+sFFCd3LyA5z7LEMS3N7qWUnn/ZRKARY/mm7cLuAikhhIjuu5qR//wHuPFG4IphmSTUKtbF69cDDf4cTkNj4cLs788/n1umpSX75Jw56HZcey1w6KHA1VcbDIgk4zxG0YMr4VUe0Xs3HfHEvn9rN28tpeDae+v10nOfU84vWYzP1aOPAt+sONSxrMx63MuzOm+efNnAbUZRAyZEpJ093E5rVv53EojojbqkaGnVSygLeR6p8PjU2Y11Wv9PbMtVVdlGQCk/vvoq62uszXRCVU0mLostB6ecHFQstIh/PAuB3e6h5L0hnU8vZn8veQlR+OGHwBMvyYV9UoXxVFTSWomQYNTVpT8OnWnjbrm5Sbq6wNbE9fZhY7zw5JOJ3ExBeeopYMwYb8fI5uC6/Xbg5Zez96cUJ2ecAUeMbejQMHduZl9DIb1tIsLvht/gXkgRQuTH0VA6l0eAac+P4LlTZ+eDlBt5SGgPaVhCiDfGzZAP6T5zZrC2VDyfO+4InHde8HoKSd++7mWExQD+1lsW51zypV6JB5diZVSkZejp92V7vl5+mNQkf8wOS30ZdbU3eY/Jni6vz5Wn61Dgi+baXAStiCJ9X3NRVFCo4Coh6PpYHFR6NN61FYq3mUKZGC7/5ZcDF1zgtWelycgFu2Z9z/F8k5gRGxqAqVNdCrlYjngJTakqBxgJQPq+cL4/pEbdZF3SObgcFuTpNVIBV3Ke1mUGV4V0F8MKUQiGKCRFjsxLpGkscPTgcsr9qEt4mCt8oFRUdffdSU9tD7gOnQ4FUn328m7/zfJD8NBD8uVJMHShKZG9+A9R6H7/2N1jud6Yap43lcuFleslQ0ly8iUlTHO8PRpjasKqAkBTs7tILqVTef+9aMh7ytGQNq1XWbNGqryKuUh16LVEiMKIjs+yJ0xCwdWmV/rKfW057xoLrLPOreVlytM0uZ8axjSqbawtfKOKiKwsXGIRFlmvyiKECi5CCkyFx8HXrjTfHR0wTCSn/i9b06fpcduydjzwAHDEES6FXFYqaQWXMUGKXVWc5CKD24JDCA3fDXO5XimLNJu6zBbnUknqXe7bRPgU527lhZdeMvYihA4QUkIY5hU7AwovITmcvINHjkyE37MiH8KQoGsYu/GtXTvgiSccjnP7LRIKCre+G6u4Y9xlGD3auTyR45rfu4eFqtBEqKnixGb3NZ4d5ttKxXO3fDkwblzgatLs/vuT5QpG2pyakGCcO/hWnPzlncrq69DOXdqdzist8R7phNYS7Ph0PUX2qipSuUSdysgF5AAGDHAumAzlqmIMX7Gpq9LxdG1dZ9S1RtSTXDZntaSCSxZhEImb18k5fXn1Vcs6vCq4VK6rBw92PyVCAJgxw7UubcBn7g1GcH4XemTVtgkjeBf5L0MUqoMKrhIisg81yaJyU517IQN2k3xMr0BTk7FckF6VGA45AnLOk8WJ+799s83Y7d4lNmwwyB9158CCrVVJi5gvv3QolSDuITEqUY8QMNwXzg/W8sZuOOOcdlL12iku//pXoLshvY6UB1cBkRWg2/YtLA8uUXwv4IRkoTgMiNM6wcnLOB/ri6DP5scfW2+Px4Hx4+2PC/JTjH1WFK2ReODt991Dod9y8qy8RM9xegaeObZ/plw8WqF7XnoJOOEEubJ8jyBEjuZ4B6X1dWznLrAfMiSh5Hry+YDKibVy3kdueE25EDoSXlczZzv/qLQSYc89nSuaPRuAGoPVXnMkjQokOeKhC/DQpN8orVMZLiH900iEiIyJCl9eMa7zoI2i1MuadsIE4Iz+N7mWk63znHPcT0k8DmDiRIk2uRBQjqzVFRdhSii2qYmQoqdi6WLH/Tn5eGwm+Uu/uxG77+6vD5oGrF3r79iiwCn5q3mSsZhMzAJ9uwXGDjsYcnTouuOioOXtDxMfNmyw71u6S5TKFwsxXW4abWkB1m7exna/xG0BwFsOrjDIGq9sQhT+6lfA3I3dUQio4CJFjeEGtlU0e0grKRyW/U7HLajfMac/YWOOElNfn+me07tkkPk1Vf/GjcA22wAPPmjTBk3OQmOLDjHoLe6eXp4xe/8b6Nwu2Z7LxOv2+JjXkMUq69Dq6yI1VhASdTqM/961zLRpwGOPBW9L1ZNZbI+4zNy/fIWkguvQQ90aM/4jsshapzS5555NhCj0oeAyrZOb4+3xt39kDFmFHvyirl8PjF61j3tfhPmDf+JxSD20mkxzmzYF7o9qhPAW0aKgyIQo5HuDMqjgIqTAVA7+2nG/eQy0GxPjohI1Ne7lrKiqAna2yVefL267DTj//MK2acVxv+6avcHixJknGaf1QDoGuYsHV8uqpAZDwuTNuSYSJaQWJELgjjuAgz95SLJOezRR+NhLqu/GYcOAmPCYjJCQMsduHsrN26O+7c+XusXo9U5Q4Vgqn+ngwQmj1IaGzL5AIeqcFmG12bkJHn44kZ9z8+YA7RHlxEe5C4vdyBGUfOW8dk8h9fzJ5uAq1rXghvVh94CQoqKQeW9UeWgUnQeXBVdd5a289NoiOcYrSzlQLpqydEh/l3KxmGtVbXqlktO2oG5H/O8lg4LLpk5t5YrgjeURiVOWwbigtmLYsEB9KTvyEVaA2FICUxNJEVmtNcmiQvM2yOXzBXf48IQRRiHyFbzwglR0Pk80NgJ/+pPFjkp74fnEaaawEhYrlfcXHpv13UkQlz7cZfJq1du59i0Fc3CFi4CWvrCTpzmHH5S6VkJg1SoP7TvUWfHj2HSdLk0qex/y/TJcLi9khBQCm+dpyqKts5yW/T52UscpNNkOWlU7w9A8fLh7+ZUrgcMPBx6adJ5r2X7vG+Zzw9wu+n2YU/aII3KFZBz5wkMIQB/4VfCKZs3K/u4Q3spoZR0kxLB5P9eChJBCMGWK92O0NvcwcVEibjGevvce8PbbCY8aqTpWJK1a3QTWKQ8uVTKccnmfkghR2LVjo3OkniRecnA5IZHZAgCg/aQw2aW5LQXXPxaDpAeXAHr1ciyjt4WY6NSGSD8iuu4qpxdCi/iPKB6o4Cohis1VvFypcBngckMU5o/TTwe22grYbrs8NpJHZs2ymYMllEhpPEwmVh7ZsgquRfU7JD4kTd7aV9ib0jAHV/EgK4BSpmyqrXEvpJgZNbtJzS85ZVIPTEgLNgGN8yIpC6qqPBS2eR7tHtPLLjN8CcFk+/rrgR9+yN1uVHDlOF1ZhJDp0QOYPh1Y37y1a5v/figxn1doeraCa/ESy/LLl5vap2IiVJSsodZlP1RSs5gQyq79xx8D/5l+ppK6Ck0Yd3+HijyEpSSkQKjOe7NiBfAbmzRL5udz2TLgyCMTnxsbgZkznetePimhDdICempedpnHtUtAYjYKj2uuAV57Ta6O+FvvJj5IvtcoiGbnqb2iR2GuIr8hCnOaMtVh997/6ZIjcO21gZvLbV8Aq2q3UFKPDJoGiKp1jmXeGb1X4P4oR4jovvO7RHkiaqEUlZACU+GyiM2NjpP/IbGuLnfb3LnR9qitqlLUPyGw3zbOK+zUhDljhuXhCVw68++U1XhSQOikGKFwLFy8vEbILp69vJs4WoBL9k6lB5cXrJpsnu2cdzCfRHaxS4gEk2Z3Tj/HWmuL1DGqPbg++cTwReED9e67UnnC0bcv8M47uduNdiw5fV+4MKe8THiWVr0SG2oq0gOZEMgSuNjN2xMm2OfjIoVF6CI0z6fp04Sll4Asxvn9rruAl2adqqJbBaeutTO+X7JrQdvssVV1QdsjJMqMGgV8JenIatQpPPSQe3qphjUJ4zWniDS1tYl8YR99lMiPacUnnwDjDE4v990HvPhi8HcXXbeuY8v29muojz+Wqzu+KRmP2K2TqRCFuqK5KMoCGZWkPbjs0SD3gquLCiXvwWaZjN07+tiqffHWW1D68h2PA59+Cuz2zysD16XrQEubu+hfg3CVNGxsbB+4P6qJtA5Y4vmNcveLDSq4SgiGKCwOKt1CFJpc/vMhQJfhwAOBzz93LlNVJZXn0xMPPADsv79zmdWrge7dHeYLT9oE97JOMr2RI+XqueeIbxIfkgquOHMQlQSyIQq93JJOdabuxVMu6mpbJmp0PvGosLtASFFy1O8PwPz5yS8O1tLG8cVprLn5wFGZ8KuTgfvv99ghhR5cmzYBX3zhGPkNf/xj4n9rKzBiRPa+yok/pT+3tZki1rQ0++rT/Lru2OHkg7BiTWJ+FqjIkv45rccefhhS5Uj+UaHgmrR+T+myqet9+M/boTHWyb5gyprM4SF1856wo3tnC0u1kJhZuytO7PV/BW2Tb8CkmDmsv1oLCad1gNlbzOiB7JZ6B8gsA6bX7G7rgfX11wmF1RVXJIxZ7PuS+fzYY8Bf/wqMHu3eBye6dQPuvDN3+95bbbA9Zto0ubrTywEXgXXKi5whCr0hYqkcXC7nTVLhJ3v+nTyAZUMUpkkv2oOz7bY2qTh80ukG96RzMt6kUbwdBbTil4VH8cQWIVRwlRCq3dtJfnA1gG7OFsyEOdZZheQz0r17RgClimHD3NcGqYTugwYl/j/yiCldguKTpunZpt9z5mSu44QJyY0ui632FclVsUT4xCAWwEQR0uEnCnutUou3UT92cCxnFaKr0FDIS0hwZCK27LFH4n9bW84SIotuHRvTY9vLLwOPPprxoip0Di4gEaLokENytz/6KLDzzsCbbya+v/cecNpp2WXazZ6e/vzAA4kQhKpoasr8zqNPzCgswh9ViQwqQhQubtg+67sKz3rtw36O++fXdU97T0g9aoaHtrIiuIU/ZSuElAZeHH5OTTqKrl0LtEg4ihvtXB54wL19J7sYq3FOIr2SI3V1wMSJudvP2G1OsIphWI+5DJZzlm8JQOE7YmOjmnoizpwFidjTrvmzJG7w6TW74sQP5LRD3bewcTOEhQeX2zwZ9AY2scFeL5s33Nc7EVwsCBFdWfhOO7kWYQ4udVDBRUgIrFolLycKy4NLts6VK73VqcLLPnXuHnss8f+BB0y5uNw6vi47trCbxYeWjKGgVSdWGRbRjwBdd6xFTwlcJCzgmYMrXLwsMvITotAe2cWb+HqQfIMligBDFJLiJ3UPy9zKV18N7LWX/X4duWNbx47AvfdmQuwNHizRmQAsWpT9vcYireDo0QlhWwqr8IJOAn2VyvWJUzKCFlklB99Rw2Pxhq0xv85dmOCGa7QFA9KXO+nBtWD1lq5FpR61n35yL1Mm0KCGECSSb8HFg8tmxNp5ZyRCrCGRk8ouQssB52SsSazGqblz092wLeOEivnTqk3XeiUajqdCDrqUFUlhhzJjQxnNYwkgYnHMmAHc8oN9SD4NkBImrWrcVrpdJ7mL+Qq6Ki2LfAGowX0+FRGMmCkE8MHCY8LuhjVdu7rKb4r7rokW7dyLEEJUIoRzSJ6c8h7qVY2MMsqrwirVz7q6hADLLRyhFa6LZbdODRyYyFwvSUVrwiS+esZq4Lztrdt3aTO9IJJQcIWVP4IkeHbGGai8N4an/+teNh8hCp2EqNJ3xpAhED3OlW9UAbqencQ5Cos1KrhIsePlHnYLs2McW4z1PvFE5vM55zisJwI+UIsWAfvu615OZrxs50EBQcqHu774JYBfBq7HnC9XlQJl1izgkDvOcy0n9aitWAHguET5SMy44cF1MyFA85padNp9dxcFlzs33gjssgtwruE1YtYsYNIkU10WlR14oHsZmX1e+e4751dxobm8f7e1AXCOjpGu3zUHV7K8qnGpTHJwaULHqFESBSUWiV68rh3zohuemLo6YMb63aXrLUY+WHgMBq84OOxueEcILN+0Xdi9sKbIlZ7FBt0ESggu7UsD8xgoPUFnxehTg8x66scfvdX54ouJMIS33AIccIC/frkuiN0mEmPMJ2EjtjDUkRIcnHfvYZg3z0ZHpVDBRQ+u8Hnm2XZy1nwFvlayQizXF7k8cPHFQM9P70t/r27uUvA+EFJqZDy4gsfF14OGwJDMwTVvnvX2VHhhFXjxsFGFtMcuV+RFj/l5cxSASa7TNU0+b61XwW+533EqQkgSUuz8u3d3AGr0IZ1M6QTvvRf4wx+yt8mMU3fcYR9C2JenlQ1nnAGcdZb9fqFAyJx+53M7wUJxDq5yUXDpcTz5pES5iy50LaN7OPdO88fE9XulP999N3Di5393q0y63SgyYOkR6DvvBMcyKp4l1USwS54QFhE2iD8oRS0hyt16r1hwW+ysb94aY8bIl0+Xq1rnXsgjytZThor+9rfEAsEuv5fMYjmwB1cq6YgDd91lbC/zbNXWZrd/yj7J7LxC5Fj8ZnUptXiSysHFoblYkBKqePXgcnjmpYVeIbguxeNAXGTu7+GrfWqwFUGBFykF/vCHROJ1GVwVXB6FLRs3mjZoGl55Bfilg4PMpk32xit2/TMPVzLjpYqcQ4TYsWzT9jjGEO1GlSW+UvmF4cEJnHuiuto98W6E4RswIUBtfWIN7jTO/FC1r1SaILM9i1Wdr77qXk9TE7B0qf3+trZE3k2VWCvOXMZwXUf7Cot4yAbSObJdF1uJ9Qk9uLyh6RJJZyXxcu5lc5875bhNUw5KijL4iaqhRKJwUIpKSAi4zX0nnSRf1hMSip28YFqYBZW9Wx2ftU0IdKx0WL0bY1nbJKV8+hmD4MCwva0te9HfqTWTmLR7Z/skpWnBoowHl86hORJIPHyyC2jZd5PmZufkutIeXFx8AmCIQlL8/PQT8Oab7uWWLpXx4PI2t4wYnl2hdtKJuP9+Z89tq3xZXpFScIWQTFp2XOXwWxpMmJD4v3Spcz4PWUO0Sk2Xvodk5q7Rs7eXq0yCd/86AXMGL1VWHyGk8KTeSdzGmY8+cq/LPAZ9+aXPTjkQjydCF99/v9p6R45M9N+os3cdp4VA147OLrZCUsGV2q0qBVe5KLgqoLvOfdK5qD2FKKTcxQt3fnhU2F3IIdJyD8UhNYkzzMFFSIHxOv5+ufwwZW2vmFgFQD52sDLhsGlgF8LZmitFPG7t8CQTorBjRQwt8faWux8afBweutO9/XR7hqt28slAO8PIqUsudtOLJwkF17y67vKdI/lD1+FmB+LVI8KNLl2AePxXtvudvASN7Pv+Q6gOSZ8dKVasgJcxj5AosmkT8PjUXzuWsQsBZMQYolBmfm+3aSOArlnbamrcj7NDWkEkUc5bXkP5so71SAjIoGl8US0xEs/WJYHr6TX7JDT8J3A1aU5+8JT056BRPK7+4OyAvQkXhgUlBIjrcgqudLhgh/ecfBqIpTIFXHyxVWoG62Pq6hI5zL2kN9h118RxTvWm0d0NEGTf+VMKKRVrgRO7L8hOrVDCVAj339nY1lGqLi8zouy7fKSVKKT44Q2mBKqrSwhaqpcejzwC3DnuUtdyP/0EVG3e2rXcstXWCh9fbNggX9ZkeTRxIjBtmvMhsVi2IsmI6/jvUqDP+MOzvrsJBozPlhDICu1g9OBxqsVLDi4SEYTAVu2dk8ZIrUU8hCh0e4fZ2NoZM2e617Nu89bl8j7kiPbSi2F3gZDIIABPL1DtNO+DiFP1Kt/dnATaZqFSwYyfZeI+kaKgQ4X8tZS9r9+cfzz691dYIUmjLBQYIUVMymPIbQi58cbkB4fILvmUK/Xqlfgfj+fOz2LWbMtj/vxn4MADvel66g2BVVyV4LruWmZd81ZS7WY8uIKfRAGUjQeXttk9SeXmeAepurwYPcheJ07N4WMXRjTS18YmWlRWkWQ5EhxXSaumaZ00TRuvado0TdNmaZr27+T2tzRNW6Jp2tTkX8/kdk3TtBc0TVuoadp0TdOONNT1B03TFiT//mDTJCEljRdrnqFD5coddxzQf8nPrXcaFkWVFXID54ABif+Oi9uqKrnOAb4G7NQC1nxodTWwetp61/acWlzTILdATVHhkMw+vYASwvHaesnBRSKCEK4LZJmwBgdecwyGDJFozxg604ZHJp+HQw+VqIvQopsQE17DsMiuGYyk5uw//hE5wnzZpcD337uX8ZRfQZGyX3Tt5lwgqeDi2FP8pK7h+PEhND7bWsDrhKzQr1Sh1yQpVs7bY7qyuvSkB5e0PsRhUvaj4Pr2W7lyjiKE777L2fTAA8CkSYnP553nvV+AhEePy3s8AFw7Uk58qdLAUAitbBRcFUMGK1OselkjKjWQoJKCkFCRedNtAXCaEOJwAD0BnK1p2nHJff8QQvRM/k1NbjsHwH7JvxsBvAoAmqZ1A/AggGMBHAPgQU3TsuOekEAEDU9BCkdB575hw9If7TyizIz7MdnBRkUJp30szNLWT6ZDzzgD+MX5OzgeO2t+ezS0dZZuyDXes8M+6RxMqXJ0tSweJDyvZB7lucu3lGtPQsFF5Bmx+mdo1RmJmZAUxkTaUiEKAzw+b74JvP66fPnRozOfZRyhvCiRAgubUtK47i7hg8PKc0ryxrHHhtDorFkQHpPZrZOI4lDK8A2YFCsqhesrqxKRWqTlDA7v5xXw/u4uk34AcA51bNX3Rx4B5s1LfB482N+rtKsSXNddx5H0O4V0iEK5vjkhgLIJUdi+Iq5MTOItB5dCDy4quPKK3XUVyhLe5QEhXOX0NNJRh6uCSyRISbnbJ/+crtAFAN5JHjcOwLaapu0M4CwAQ4UQNUKIWgBDARR3wG9CfFBwy965c9MfZZ2Htli3BACgDRxoX8hLqD0fk/30pEGbeU23aJH7sYdcsr90O7MWdMC6zc4eXU6TknSIQoOnFykSVq509XhQavVF5adSPlx0DD5ZbOPZSki5kpyDZKaidpX+PbiA3DWHU5v/z95Zh8lRpH/8WzOz7prsJht3d3dPiId4QgTiOZwASZCgh7veoXf84LAD7rA73B0O9wQICZIQ192Z/v3RPT3dPS3VMrrv53nyZLu7uqpmprvkVbtW2XZCFbs2fn75ZbFKqw20pOCiaT71sbNWj8m6fudO7+tMY7YesPCuJIgkxctcvi+8nYc//vBGwcUE+xMn7zbmppuMr8VKTsKTQ9OqDK8xeW6mPQMFMwTUHw8uxrxbP9l5r7iisbQHPvvMTY+IWJLU626OzlGIQu/gklAzxvyMsY8A/AZRSfW2dOliKQzhNYyxcMa/RgB+Uty+VTpndJ4g6hfdu8d3/FJoiHitsXP3SyEAzcyoDVaxR44AS5bwdk6n2t27AESsZrUKLq8NpDtNaYkdRjG1pR/KbMHOG/LJbmgoIgnYtctyK0O/a3LjJIcQQaQrSgtBs3XI3o++BwD4X3nRVv333AOcfnrk2I6Cy64Dq2kOLkAlEArWuhQOSYsAq7Xb79u9E2oRiaUuxB9OOiQwLuMrbhijMJcEUU/w2nI/GPRIweXALzKZ00xbfiehkGUZv0UeHbmtoPi9vr+1AVd5S+qJBxcA/PSTdRkegiH+hzHI8Q5++SXwwQcclZGSIjEkcRSczvO74Js9lYnuRr2B680XBCEoCEI3AI0B9GGMdQJwNoB2AHoDKAVwphcdYowtZ4y9xxh77/ffLfLsECqsktcRyYGdeS+8QHIDO+Vk3Hef+DevB1d2QBTSHP/KIhw0yvdpsIrduhW4+271uWAd/4d+7TN15NKtW9XX4+rk8r0o5DPPwQXxR+XNwUWkDn6/pZDJ01GXPLg8x0fzIkFEcfQo8OOPxtevvl60hqnbbE/ScNll6vl/61bg8sv5+2QHszlVm7Mi+MST9ip3yI5fRSEUKSfqF3/7pi9atfKwQloLEES9wev9oS0vGDMF1zdfO2rbS+6+G8jjifLOoQAym5fbF2/j8uBqXfQbR2fEr/Wbb4A1/xzFVd6M+pSDS+jjXUxgOx5cR0MZnrVLxBajoU34zH7u0njx6fe52HbQPDMT7Ru8w5adhSAIuwG8CGCcIAjbpTCERwDcBTGvFgD8DKBGcVtj6ZzReW0btwuC0EsQhF4VFeZ5dgg19FqkITZj8Bvxdtjn8kk+IY9yHbXIKJ+qchWrCIM4dGh00U2XmCwcdu827UubNupjIyWd3UX1rl0chQ4csCwSEhjXwpoUXClIZqbl7+bl73r2+fU7SXwsoAUjQUQIbwyzsoD//tesoFhy2L9PNylkeJvMhx8CZ55pfN02Ci2YpQeXYl4OvfCSq2Y/3FJi2SYAoK4O334rKjyI+sOuI5x5NnlhjPIxEEQ9wcsQhYBof3riibyNmyi4/m2SpsDoHs6P0rZ8h+E15TLh7rthbGirZPt2yyJmy4/irENAKGS5p5vd8j2pMot8OiHBKxFOlEd6OvPOTxZ5Tm2QKLlLOA8eEWe8euESCXn/eYKlgosxVsEYK5b+zgEwGsCXUl4tMMYYgKkAPpVueQLAcUykH4A9giBsB/AsgDGMsRLGWAmAMdI5wiOcuJIT8WfiNSN0lUB6CB4taMILztDWKJ2yLsFQZFHw8MMGzlqKkzffJODDD8W/f9Zp4utvTYaaPXvkP0dxGDp5Ff6glCdcf4a4SDELQxcSfLIgzUz4JS+0aPJKHXw+SyGTlyEK/3wVKbgIgogdt30xFG+8ab3p50nWvHat+ri6WmXrol+vy+mPZWXi1Vet69LmrAi6HKf/2M85NtfWYtMm4KOdTVy1R6QWsVjV0UqRIOoH7/7WzNP6bBl8mhho/uuHrvLfFraoMlx7awBtC3/hKielv7SGQzhgtp8TBIYnnrE2agyHslt0eUfTcp7ro+qJgmvGlQM8q8vtus8pNRM6J6Td+oKRrE2oS+0wnoLgYQK6eg7Pm18F4EXG2McA3oWYg+vfAO5jjH0C4BMA5QAukso/BeB7AN8C+AuA1QAgCMIfAC6U6ngXwAXSOYKoV2zZUZCwMLG8wvgqQa2l0h1vFSvoNTe2x6ZNZu2aNKao/PnnrftmFi7QczJFoZZZbGZuDy7yJEk9QiHrHFz0uyY1tFYkCDVXXMMRq5jjxXnsMfUxhwG1J+/j11LUJFMPLm2IQpfLhrDQyzIBfZ1J3lIibfHaUnz3wUzyPiaIesLe2hxP67NlCGqiOLn4wwny3716mSXt3GujQZEPfq02vObIe5VDq2c2pn67twJTFhXjQF22aR3hvE73Pmfcf0A0EvIqXKPAKWcg1Px2qDDRXSAIIgEErAoIgvAxgO4650cYlBcArDG4dieAO232keCEQranI9Y/Ks+aJ7zY5RUuCbv3WBfSrKDNFtSmhkc2rZLY4UMAPA4HY4T0hZklKg2ByRl9zb5eLz19iDgRDMY1RCHhPSQkJAg1PFMujweXkzXnypX27zHCbOx9YVs7ILRXUdbd/Btuq90F88wLBoMkh6qHeL2+Kzlukqf1EQRB6MK5B//uO5MJ/4kngAULAJivC66/PhI60ZP8uHv3AoWSEoPLg8v42o7DBVxN8noFfbG9GF24SloT0nikEwQRTarv98ke1ztI4koQKU7AUk2tCFHIOfhzbdY1q1htbixlfo+QmcDHroIrnlOAtBquzNlnWCSksBQ3szoz8wIjkpRQCILFNEkKLoIgUgkeQxeBo9DWrfbb/uAD+/c4RqFpcjv/BoOceTsFAc8956opIgUhwQRBEClHKGS5Bz/lFOtq2MIFuPde6e/33zMs94Qipdf8Vu8YluMWVPOEfQGAw4ft1WsC757vwqd6uG5L3TApuAgCMJFRepXDJEFQiELvSO0ngSDSHK/HOVPFlaIxvQXcunXAAw/olweAQ4eAb7+NHI8Zo2zXpFMefcjrrwf27/ekKplwerCcgHHYITkUksXnkL97mrxSB44NRapbDPFQnHkg0V1wDL1tBKGGS07C+eLsM7b9iDmWY68qRKG77Q537mpB4FIOEukFGboQBJEscE9Bb75pGQbm2mv5qvrsM+mPt982LKNMz5AXMM7VMPlZ3UBQ0fz2W+Rvs4WNtJn3YmZ+5ZfWcphkM7xcBggCw1fbKdweQZgh+DjCrycxtHPwDlJwpRFx9WwhUoqws5XpgkuxUNTbrF9xhfjPiCefBFq31r9mKlCzswoUBFOh1ldf8VfFw8dfZISbNeTDnU0AQUCncY3x+A/dDMuRACQF4ZAE14ff1UzBm+w4iuVPEGnMk89Yu33zhCgEYmOvEdrrjaXKVTdm4eBBqU6XhghHa/mMQ1koSDYs9ZD6YOhCEESKwDsJ/fabZ5N4WM5wJGS8vlDq0rxIqyEok2uafY5QCIcOAYtfWuK6zf9s7YjZszn65uE64EBdpnV4ZIKo51TcckGiu+AKWkd6Bym40gjmRTxjIql44/0sT+rhClFYGxFiGwntnS5I3ebguvlm6Q+LFWOvXvx94oI3JIAg4LNvMs2rEni0jERSwZFMpT4ouAiCqF/c91I1mje3Lse7Jjh6lL/tw3c/YF0I1lPp6efn4403xL/denBt25nNN3XT/F4voXUAQRDJgvDFl1zlXvuiTOVV5QUrXl1geE3pCe3FmBkKKuZbs/26IODnn103ZwtBYJ4o8QD+vF8EQaQuggDaQ3gEjZgEUQ9g+8Vk63uP5pgUiqzEjBRhysVaOHyfFaEQ8OSzGeYFLHjwQfH/3X+EsOtIHl/DXiBIubWsrCo4JiQSgKQeZ97Q2LJMfbC4SWUvqPrw+xCE12z5NRdbtliX4xXgZGUBH33EV7Z280+etKmk7YMX2r9JwUl/64Vnn+UoSHky6iU0zxAEkSwc2X2Iq9zgDUNw54P5luVOPtm6rvC8bLZHDyu4gkFg874y60rDLtgGLPnbiMhBMIge5T/oFxSEuMuNvWyPIjQRRPojgHJweQUpuAiiHsAOi4vdSWZxrZUKLgNrIaVgqdmQGq62X3nFogCHQOjll8X/L/0zV5P81JqHXmO8wiqeUHYkAEk5Lr+vkWWZ+qC4TOXlVn34fQgiUYTXBMr8m0Yo02WYwatQ51Eq3HYbX5s87NzJUSgBgjQi8dA8QxBEstBielfusjzbXMt9vIK8wGHDa+GgGHfcAdz51SDryt57z/Tyc19FjBBvvDsfH+xoql/Q40l51y5PqyMIgkhpY+JkgxRcaQS9FoQR4WfjSNDEk0oBT4jC3Xv5kjkOH25RwMbCM2QdMc4eVqtU2YPLAi4PLhpu05H6INhKZet0snwkiNizeLF1GV7PKy9lURbyMVsowysZwQTy4KqPkGCCIIhk4dARvv05wDcv8+SfDHNOj6cMr9XVivPjH39wVmbRue17I95nV99RaFzQY8OTHwwcxVRNetdcSu/BCILgg6QV3kES1zSCBHmEEX/s8eOtt8zL3PdoJHyh1zm4TJFWnVx1ey082rbN9DITBGzfDvzjO4vkXnZCFJJ5d1pRLxRc9MgSBGECjwDsjjv46nr86/bmBfbtA8C3GfRyzcKRkhEIhWi8rIeQhz5BEKmIz8exf+XYejMG/O9/wFnvTDcsU2ceNCUaG5o10z5yTd7e4uU6oD7sM4nY0yiPXA+TmZBAIQq9ghRcBFEP+Otj5ejf37zMaRdErJ+MFlNvv23D8oqTYC2/0spz42iL7Lo7d/tx6aXAG7+2Mq+HY0I6GvJTeo40pD5Y1qXyZ0zlvhNEqsAjh/rHP/jqWvLMbPMCQQ5XKom4K7hoc1ovIQEkQRCpCM/I9b//8dVlFcb3629tih1tTOBWCq5UzsFFHsKEF9DyNLkheYV3kIIrjYiJdw2RUFoX/Rq3tn793S+npDKzRv37371t98AB/knX88nZbx7GYcoZbXDDDRz1cHTs+k9H4owzOPtFpAz1QbC143BBortAEEQSEp76fCyO1htCuG3rsbeuDti925tmX3ie4zOSFUtakZ9hnE9GCQkgCYJIRXzMOw8uHt55B9j6E+dm3oZgy3QbnhAPLu+8Mb7fV+FJPUT9Zl9tdqK7QJhA60jvIAUXQSQx8ba2CC9izfJF8eShsENdXQKtSrKyvKmHU6j14YfeNEckD14puPpVfu9JPQRBEPHGt3NH/BqzsWD48UegpMSbZp9+hmPL5HGuDyKxNMjZy1WOQhQSBJGKeGkczVNX377ATTdzFKyrs9U5Mx3WZ1/6sWcPd1WeIAAQ/vPf+DZKECbsq82xLkQkDAEgNzuPIAUXQSQp558P/Li/NK5thsdVM6G9HQXX1q3WZR5+rthTD67fvt7NVxngnVUX5wcQBP6yRGpgpgy2A+OwoiQIgkg2vvwSeP6TSk/qsmMpnpThPMiDK63gtaitD57cBEGkHzbSXJnCmMeRhL78kqvC/fvF/0Mh47LfbA7guuu86hgnAhB67Y04N0oQRKoigHJweUUg0R0gvINxpdwmUoVNmwAgI65tRjy4jBeKv/3GX19NjXWZzT9ncsuEeMb9Bm2L+SoD4q7gItKPQ8FMT+oJhsjehCCI1EIQgNde866+a6/lKBQK4fBh4L9b23vXsEe0XTUi0V0gPIR3ZUehZQiCSEW8lB15uRXetiMTS86yFiIUFIjtmjVde1SIexqP7/4owc7DefFtlCCIlIVEid5BErU0gjwACLfweHBddZW3bWYEQjY8uDx+xj1ScB0+wFePIACf/5jvSZtEekEhjmIDzYoEEUM8Dsl3zz08bYbw4IPAvd/0965hgtDh5wPFXOXqBPN8rgRBEMmIVx5cgLeprlpPaIX/vF3EXT504JDhtWBdYnYCH+7ksPIlCIIA0KbIhgcBYQopuAiCkAl7UsUz9E+XFgc8DVFoC48SiuV0aM5VThCAjn8iC28iGvLgIggi1RBq6zyNyvfxx9Zl9uxh2MuXGokgXHE0FN8oCnZokr8z0V0gCCLF8dKDy8sc3QcP2dsTmYaJDYXi7sEFeBfCnqjflGfvS3QXiDjw5Iw7gYqKRHcjLaAQhQRByCQifURl8dHEpa3w0tyMg1deiWtzRApBHlyxgb5VgogdQ3vtxw97SuLa5imX0AaQIDJ9HkqTPSbLX4sjweRVDhIEIbLozIae1MMO7kdtbWIilIjKK+O2hWBihAyUm5HwAgqBXE847jigRYtE9yItIAVXGkHDH+GWYBD4z3+As96ZHr9GOUMcffYZsGu3x095nBVcBGHEnqM5ie5CWkIhCgkidny0Jb7KLbtkBoI4Wkfh44j0I56RFuxCuSQIon7BDuxHgwbJGYI/FIx/Di4AOBIkMSvhHppOCcIeNPKmEWOeOjnRXSDSgK++inODO3dyeXB16gQAmZ42feOjVZ7WRxBO2bKvPNFdIAiCSCv8QhAAKbiI9IO8AwiCSCZy4myn17HkZ3y2q5FlOSEYQtu2ceiQhvXvTot/o0TaQXM9QdiDgsMSBJFQhPfeT5i1559uSMCKlyAIgiCImMMY2b4SRLxJ5txlBEF4D0P8PTe5vVhDIbTL3hLTvhBErEhmb22CSEZIwUUQhEyiFE2JaDfTVxv/RgmCIAiCiAsH67IS3QWCiAkk9CIIIlk4eNiHH36Ib5uf76rmKicEQxCeeTbGvSGI2EA5uAjCHqTgIghCBU+c6mee8a49AYwrRCFBEIRdgiFa5hAEQRDpBYU1JggiWbjy3kpMnpzoXugjhATKY0SkLPTsEoQ9SPJDEISMEOKbRseP97hdmr0JgogBG9+bmuguEARBEARBOCbAgtj8/h+J7gZBpBw1+bsS3QWCcAx5axOEPUjBRRBEhARomp7YPwLr1sW9WVowEGlPjv9oortAEARBEARBuIAxAc2akjUgQdil9JOXKcwbQRBEPSGQ6A4QBJE8CMEQ4q33vual7sBLcW0SAMU0JtIfEoUQBEEQBEGkD9W5u7DtYEnM2ynLOYCdh/Ji3g5BxJKgwFAb8ie6GwThiP212YnuAkGkFOTBRRBEhFCIKwdXOhAkBReR5pCXIkEQBEEQRHpQVwdMa/ZR1Pnzp/3P03buvkvA1yuu9rROgkgEPR/diAUvHp/obhAEQRBxgBRcBEHIiB5c9QOBhj8izaHcdgRBEARBEOmBX8cRxcdCOG/6JwCATF+tJ+0EMhgy/PVnT0gQBEEQROpDEl6CICKEaDNDEARBmNO/9e+J7gJBEB7hZ0HdvwmCSCKkEBtm3vk3DnwAX8w613VTRUVA5tIFrushCIIgCMKC+hJCKw6QgosgiAi//ELjK0GkCSGBpngiNrxx3n8S3QWCIDyiUd5u+W8/I0Mngkg2GARDAZggQHbZ9zH3wak3n34TjjkGyOrQEj9+ssdlbQRBEARBEPGBpF8EQcgIt9ya6C4QBOERdQIlVSZiR+O8P1CevS/R3SAIwgXC1degOpeE2ASR0kjKLx9zH5u6WckeWZdWU+O6OoIgCIIgiLhACi6CICKEQintwVWYcSjRXSAIgqgXfP3hQTw6mowiCCJdWNvxxUR3gSAIC7QqLOW+jUEAKy+La38IgiAIgiCSAVJwEQQh4z6wRWLZW5uT6C4QBEHUC3JaN0amvy7R3SCSnExfbaK7QHByw+AHE90FgiCM4LBA9MKDy26bBEEQBEEQyUAg0R0gCCJ56PDQ+ah9LNG9IAiCIAgiHTgaykh0Fwhexo0Dbk90JwiCsIOg0GmJObg8VnIRBEEQBBE7yJjEM0jBRRCEzK4jecCRRPeCIAiCSAVoOU4QBEEQsUUp+xIEnZnXJwbl8bFQ7BomCIIgCIJIYihEYbpQSyFgCIIgCIIgCIJwAAmzCSJ5MXg/GYtcy/bX0WtMEARBEES9hBRc6UJtLY5t/n6ie0EQBEEQRD2BQiERBEEQRPzQzrqCACAkem5l+2tpXiYIgiAIol5CCi6CIAiCIIgUZduCMxLdBYIgUhhZHE6uHwSRvJi9n8OGAQDyB3aNX5sEQRAEQRBJBCm40gVBIHstgiAIgqhnVOXujX+jUlZ7kn0RROoTFGg7SBBeUJBxKDENFxfj9dcEDN4whOZlgiAIgiDqJbSjIQiCIAiCIAiCqG8IAmpDfvFvH20LCcIph49fg/4Nvo9J3UeCGfLfgqDWYIUVWgMGMu+VW6QtIwiCIAgiRaCdTLogCFELXrc0yNmD1R1e8rROgiAIgiDSA8r1QRApDmOoC9F2kCDcEvP50EDZJAjqa677IdC8ThAEQRBE6kE7mnRBECDAWwVXr4ofcNOg+z2tkyAIgiAID+nePf5tklU3QaQN+2uzEt0Fgkg5dv71n+oTVVWeG5uGyfLXyn97vd8nCIIgCIJIB0jBRRhCy2eCIAiCSHJat45bU2Mbf4bgspVAhhguiTGy9CaIVOOa/g9iY/cn5ePSrIPICxwGQMJzguCltKA26lwsZsRs/1HcOug+7vKe2p/EyZjlzSl/xpSmH8WlLYIgCIJIKshw1DNIwZUuCILni2ofC3lcI0EQBEEQnhLHRbGPheBjQmK8xgiC8IRRjb7Ayg6voFnBDgDA8xOvwZZ56xPcK4JIbfw+AUJNE8/rvXHgA1jc9s2kFIDdN+KvnqQzaF30m7i2IAiCIIj6BoUG9gxScKURXodFSL5lNEEQ8WL7gjNwepf/JLobBEFYEUehFwOA886TvcZonUAQqQeDgEadS7F57gage3eUZB1EefYBIBCgvHoEwYtm7vUxAUJuvvfNaN5J3TfUoxxc387ZoP5cFuuLea3eRbviXxy3F8bPQjTyEARBEAThikCiO0B4RAw8uBhZaRNEvaUg4zCy/HWJ7gZBEEkEYwJQWZnobhAE4ZaTTgJ++AFo0waoqwO+/RZo25ZCFBIELz61nXCsbE1kzyazBpQKLhf9aFm4A0Ce6lzzgt+xeV+F80o5CPhCMctfRhAEQRBJTRJ6aKcq5MGVLui4NY5q9LmrKn0Q6GUjiHoK5dYhCEILAzyzFCcIwh39Kr/HrBbv2b6PMQDZ2UDbtuLBqFHAypW05icIOwSi7YRjEWVIXo/7/VIbFu+p205IOTalxvH+9Etwi0kOMC9CC/pZCKE4Krh+WXA6RlR/Gbf2CIIgCIKIPaTgSiO0C97/HnOdq/pIwE0Q9RsKB0wQRBQkBCeIpGB2y/dwbo9/276PFNME4QGdO6uPBSEm6+aavF3iHzoKNT1cv98LF6oOS7IOoix7v2FxL3J2+1kIoTh6jzbI3UdyDoIgCIJIM0jBlS4IgudhRUiERRD1F3r/CSK1yPTVxrwNreCMdF0EkTg8F6bTC00Q/DRrpj5mzPN38tDSNRjR6CtgwQJDBZcXHlQy55wDNGwYdVpvZHhv2sVAx45ixBeX+FkIQSF2YqkMn3HIdWH5ipi1SxB26d/gu0R3gSAIImUhBVca4fU+19MFM0EQulTl7k7KzRUrLEh0FwiC4EESSucE4qDg0qwLPt9VFfM2CYIwxolOijwXCMIDdF4+rVOXU4ozD+CcCe8jOyApZgYPlq8dCaoVXVGhg30eKqpNBpieExoAJ5zgibzAxwRkmSih2hT9gq9nn+O4/qMnrIGfBfUvcnrGEUQ8eGPK5YnuAkEQRMpCCi7CEAphQhCxJ2nfsxh4hRIEETuaF+yIeRvaEWH7wSIAQHXurpi3TRCEGs/naPLgIgjnMIZrrwV+3XiD66r6Vm7BBZPe1b3292/7qY6jQgS6cSPTjgFS3i9dhgwBcnM9UXAxBlw74EGc3e1p3euFmYfRuug3V21ox0s5tcO0aa7qJQiCIAgiOSAFV7ogCNFJZydMcFWlnoXnwaVrXdVJEERqwCAkq+qNIAgNvx93Kk7p/HzM22FMUAnAxtV8BgDYMm895rZ8J+btEwShxomRTG3IRGhNEIQp1bm7cOyxiFYGMQa/H8gKGHsi2WLIEPH/3r1Ni0V1w83q3Y6CS8KTiC9VVWhWsBOX9HlMvw0IQLt27tshCIIgiCTh+Lav4ZvZGxPdjbSCFFzpguC9MFpvwRqPEEgEUe/o2zfRPYiCCe6TRhMEEQd8PpRnH4Dfg0TvVmj9O8qyxMTzfiagzkb+jPbF25IyNCtBpBIMApCVZfu+w3UZMegNQdQPJjT5FA89ZHydeZWIq1Ur4MorgeOPV52e3uwDdXuxNEdjDJg40bSNKA8yJ6xaZXrZ7wsBRUW2qy3MOIR+ld9HX+jUSXX43DHX4MROsTcSIghLGjdOdA8IgogThZmH0arodyBEcjevIAUXYQgFKiGI2EMRgQiCcEVxcdya0gq5wiF/fEwgrxCCiDMBn7MNcXXeHo97QhD1B18c4hvI3tIFBVEbhRaF6nDEPo1ntef7ikmTVIcntHsVj46+JdK+y++juKAOaNDAtIzTNs7u/jTenHoZMHSo+oLmSxrZ6Es0yt3tqA2C8JQePRLdA4Ig4oS8r/bKMIawVnAxxrIZY+8wxv7HGPuMMbZJOt+cMfY2Y+xbxtg/GGOZ0vks6fhb6XozRV1nS+e/YoyNjdmnqo/EIF+OJxZZBEGkJOTBRRApQk4OsHGjblhhr9GGKKwLRZaRpOAiiPjiZyHb3hvC8hVolLdb/yJj0eHOCYJQYRiST5obY51bV1s/g0bB5WWIQh16lP+Iac0/ko/thCgslby+lex6+RPxj/HjDe9zGgYxP3BE/EPnc8k1kmCRSCYSYPn68Khb494mQRAKaB7yDB4PriMARgiC0BVANwDjGGP9AFwG4BpBEFoB2AUg7D9/PIBd0vlrpHJgjHUAMAdARwDjANzMGCNpiIdEbUpdTpC0xSWI+gtjOmMKQRDJB2NATU18mtIcl2fvR/8G3wGwp+DSLk+mNP3IXccIop5Rk/cHBkjvHkEQ8WFOy3cwr1Uk3+RnM8/HX4fcG9c+6KT+SgxSSCVe5dO/xt6If429ybjA1KnAuHG6l5yEYP7k2E1Y0eEVICMD6NYtSn4YCu9xcnMBwHNDYYJIFWa0+DDRXSCIeolsnJpBocO9wlLBJYiEzW0ypH8CgBEAHpbO3wNgqvT3FOkY0vWRjDEmnX9AEIQjgiBsBvAtgD5efAgC+jm43Cq48vOiT44Z46pOgiBSgwAL0maPIAgVWi+x7EAd3phyOQCbCi7FiuXi3o/h4dG3edNBgqgn/Dj/bHQr3+p5vfHwBCWIVOX+kXdgcNW38nGHku1oVrBTPAjvu+Nsia0N3+dq+89xc5avTvxD+py8yqfcwFFk+oPmhQIB3dNOPLg6lW5Dhi8EXHcdkBct0wiF84aWlwOLFtmunyDShjiGOicIQkOrVkCHDonuRdrAlYOLMeZnjH0E4DcA/wXwHYDdgiBIKxxsBdBI+rsRgJ8AQLq+B0CZ8rzOPYRbYrCY9nXpZF2IIAj3JGMirjht0DN9tehVsSUubREEETvchCgM+EL4bs4GD3tDEPWAtWvl5cOqDi9hfqu3XVdJntsEYcGaNZG/zzsvslyWXkYvls/asINKMsMKJol4pBRQdiU7UCv+kZMjtc//gZ1+N64+o19cm6i+TkFAUFAoJAcMiENmNYJIUvqQzwFBJIwzzpDnKcI9XAouQRCCgiB0A9AYotdVu1h1iDG2nDH2HmPsvd9//z1WzaQlXm5Kx9V8imUruB4PgiBcEOtY/U54Y8plcVO69WuwGS9OvDoubREE4Y7N+8oNr5kpuMY2/gwbuj8lHzMAGDYMgOgtCgAtCnd40UWCqB906AB07iwfrmj/KtoU/equzmQ0tiGIZMLnA7p0iRxXV0dFOzgajK2g6sxuz+L1yZfJx4wB8czBBUCcv5s2BeA8P5YMh9bLdRuM6YQoVMs5nMpRijIPojp3l9OeEYSaRMzDNPcTBJEm2NJgCIKwG8CLAPoDKGaMhf3IGwP4Wfr7ZwA1ACBdLwKwU3le5x5lG7cLgtBLEIReFRUVdrpXv9ELUeiC6/r/A/37e1ghQRDGJNnCsn+D73U3g7GAQUhKJR9BpAxxDIf03u/NDK91Ld2K3HBCdw3dy3/Enzq+IB8zFrFOD/hib31OEGlH+L2nxNQEITOh5hPsXnxS7BrQWa/LuZykayXZh3Bpn0e5q5zW7EMw8M+D+ceOw4CG30e6lIg19Ny58ufNM5j3tXCFPzUYz5zk4AIArFpleCmoUWjxhGXvXbEZWf5a1bmN3Z/C+9MvcdY/gkgGfGTUThCJwE9hwT3HcjRjjFUwxoqlv3MAjAbwBURF17FSsUUAHpf+fkI6hnT9BUEQBOn8HMZYFmOsOYDWACJZWgnvcSE0N7w1yQTxBJEW1GMBFY0oBJEGZGTglsH/h98Wnm5YxGj5kOGzyMlBEIQhYeG2LSF39+4GldGMTKQ2Gb4gijIPx7VNrWLE7xNwVrdnue9/dMytqMlXewAxwPh9nDABaNFCPmxVqI54E+scXNoSYxp/jo+P3cRVfbviXzCrxXu2u+XIg6thQ6BbN8PLWg8uHt6Z9meUZe1XnfOzEBnqEakNKbgIIiFkawwmCPfwjGZVAF5kjH0M4F0A/xUE4d8AzgRwKmPsW4g5tu6Qyt8BoEw6fyqAswBAEITPADwI4HMAzwBYIwgCSTW8QhC4LI94oYUaQcSXWS3eQ1HmwUR3I0KcBF2U0J4gXCJtTGOROyc/w0JQOGqU+P/IkfAxAZn+OvPyEso1RsAXBM47D2jf3mk3CYLgpXt34PjjDS/TnEykMrF8fv8z4VouD65w+F07OJ2/n51wLZ6feI13IQodwBjQuXSbdTkABZlH8I9Rf7HdhmMPLrlxBkEj9ory4HKcH4zGTCLFIeMWgkgIpODyHksFlyAIHwuC0F0QhC6CIHQSBOEC6fz3giD0EQShlSAIMwVBOCKdPywdt5Kuf6+o62JBEFoKgtBWEISnY/ex6iGC4Klwiza4BBFf/jHqLxha9XWiuxE3BjT4Vv7baLwp1VhJEgQRe5rk78S3tz2PPYtPwqCGkfc0238UT467QV14xgxgwwZgyhRg7FhTMxul0E25l87wBYHqamDePI8+AUHUP7jX7c2bAxkZhpdjoSgniHgRy6d3dOMvdM/Lb154YhswAPjTn1y1pQzja0ZR5iHkZ2hCBMY4KkSBleGLAVyKN4O+O1IiWXwPsmLSzvd1zDFRp/wsRPoBwjs8epiE5Svi3iZBxIqXJl6J+0b81ZO6CjMOyX9PbvoRdp+buFzwWZyGoQQ/5I+aRni5nLWa5rqW/WRt2U0QROqyerWpV2iGz92E/PqUKwAYjzWDG36DAQ2+N7hKEISMxxvTbH8tWlYdRKEmzNOWuesxocmn6sI+H9Ckifj/9OnwtWllu73ybHeKbFubeIJIM0guRRARfCykCt/nOYFA1KkopTBj4rxoA603kW2UHlwxDFG4ee56HNPkExcN6GChYFrf7Slc0vsx7uoCLIjgspWWYde0IQq5IuEwphOSkvKIEikOhSgkkhBlONhGebtRlHnIpDQfT467Ac8dc4187GNCQpVMAQrT7zk0mqULHltrGVpZSQvf7mU/Yd+Sk1ReGPGmOneXdSGCSHKU26SksZzeuBFo1cpUaX5ipxewfcEZtqu+uPdjYpgXCcb0t5SvTL4STfN32q6fIAh3GFlK81hQM5/+GMag9jAJrzG+nn0OJjX52H4nCYJQ4cnqgbRlRIpjmrvKC1q3jjqlu4q12QfdfFAcdXi+bzBoMzxnNyvY6e7r9ftt37Kg9dtoX/ILfxO+kLheUbal7bQgRJSKkgzFqSTFzwQgP9/h3QShIRHzMGPo3+C7+LfrMb8sMM4DTKQW70y9BDNbvC8f+wzkRXbJ9NWpcj8netXrp6hpnkMKrjRC14LMIVa3+qRY2GEvjHhzSufn8L9jL0xI2wThOR06JLoHcaNn+Q+qMC9mIUu8zCtIEAQfRu8kl4KL85UNF2td9Bv8PlrcEwRBEO4xC9VZknUAgxt+47zyXr2AJUuiTru2MW3dOsqDy/bqV+GBEfc82gbhGFe2fxkjGynW+wzA2WcD5eW2qrebNsEX/vwDByoriSoX5cHFoyxkLKqcj4XAMqI9+wgiZfD58OqkK/DYmJsT3RNXNMjdl+guEB7RtOAP1UzmZyFP5jbG1NOBgMTadrnOL0lEQQqudEEQPA5RaO7BlQwJVUn0TaQNbdqIXlPJAsdM7+n717697unEjzIEkQJ4vDJnTL9Ot/M+q662LHN2t6dx/4i/4LOZ57tqiyDqC+H1etyF2gSRhPhM3oM/dXwRr0y+0nnlxxwD5OVFnR5c9S1O6vQ8EHQYaqikBEE9D65kZf589XGnTsDYsVHFNvZ4Cu2KNJ5XNTXAwoW2mpN/U05Not8XAtasAYYPNy3nOixkuD3OfGkEEVemTuUvyxj8PoGE7URSoTQm8Er27NN5xkMJjKCUDDL1dCOFVlOEKYIQ7e3gyoPL/GUz20DEC9rME2lFTU2iexBBGjusrBmdvIPascVAlg4gsQsOgkgZvFZwQdCNx+9jIeCUU5xXrBBOMabThiDgkj6PYU6r99ChZLvzdgiiHvHLwULvKiMhLZHiMBNlg5M16/UDHrDMOV2SdRDXDnhQrYCx+S7pKrgcvo+xzMGFqipgyBC+qpzs03WUWIwBWCHm2nxv2sXoVbHFtAo/CwHNm1t+FtmDSw5RyPfFaXvoZyHbbnwfH7sJNXl/2LqHqF/4mcvcPHaeSWk9btdbMhXJDRyR/17c5g1c1ueRBPaGMIJBQEgxJvtZyJMlKkP03JTB6tAkf6f7d84meYHD6G0xnxH2IQVXOuNGwWVxPdHaZlJuEelIMoTkK8vaH1Mhl1ZpZraYTpqcZASRAng1fvgUAkLlXOvzMaBdO8f1Rs3b2lwcTuM8DR3q7D6CSAPalfwKgHRTBAF4H93jT51eRJbPIgF9OApBr17OGmEsyqCLd58rgAHnn++s3RgTbdBm8Jks5n4fCwE9egCMoWfFj5bfjU9PyakzQDry4NKpx0norM6l20iSQejDGOpOWIn13Z82LLKs3at4dfLlnrZZX2hWEMnvPaz6K8xv/U4Ce0MYwZgQ5cHlSYhCnToCfgE/zFvvum677Fx0GrqX/xT3dtMdUnClC4IQLQzWscDmxWoASYZFWT2ai4l0J0ke5rO6PY2vZp/L3R9WWmK7jbqwxeSiRWIdRgUrK5NC4UcQSY/J+/rpsefbrw4CkJ0ddd5N6BI/CyHTr0nqG9DkrHCq4EqS8ZMgEkHAJ76Xnhh+0bvEzd+G35noLhA6mHpwxerxXrVK9G4ePdpxY65CFFZVqQ5djQWG351get1o/lYWL8064KxLNsvzrlVO7/JfnNzpOfmYawmi8/nDYzBBeILPB7/PfAdclHkI7Yt/MSkBIGTjufT5LEN6pgP/m3EBVrZ/RT7W8+YhkgMG9bzoVfhMMQeXEH2SSBtIwZVGRA3PjGHz3PV4b9rFmNL0I1t1Gb7n0gV5wOnd21a9XkGCbyIdSfQSqzDjMMqy+TagTheEdSE/MGUKUFkJAPh+XzmtKwiCE4YQfllwOnf5jqUOQ/317Al07ao6xeW5bfAy+1kI2f5aRTGBy4OrOJNvPFrT4UW0LvqVqyxBJBMvTbwSp3X5j+P7Ex1Rob6yoPXbie4CoYNZCH0GAWjc2Hadco1Gi9WsLNG72YVhqZchuRMisNULLajoy4Gla9FxQXf5WlXubu6q5c/D+f0GWIhLYLm200u4ZsBD8rET2cLK9i9jbOPPuPYxNwy4HwtbvykeDB1KsgzCMVzCfrtGY3PmpP0TWZR5KGrNVB/CMqYqQa0Hlwe/FYMAZjCXxHtMJuVqbCAFV7qgN4n5fGhWsBM9K37EY2NvsVWd2Qs3oeYTTGv2kdxGomA50RbmBJHKJDrnlKy4lt7rWEz0tSE/MGGCPGZ9s6eBYVma9glCDWNAg9x90Sc9xMcEICMDWL06+rxD/L4QAn5FDi4IQH6+6T2hZStQlbuHq/4bBz2ALqVbHfePIBLF0OpvcHHvx/HFrHMd3R9ehnslpKF5l0hlzDy4AAAFBbbrjIfQy58VsC4UDzxcTzAI8rohd9xQ0bhNYtuCM9GnYjNXPT4r7zEFl/V5BK9P0QndZnavnIOLD+XzsKH7UyjOOsR139pOL0XCozHm2GmdSE/O6PIsHh9zE5diims9bseDq55AyqzUgZWWyHKpO4bcg9KsA2mngKXnMTaQgitd0AtR6CYHl8kL9+T4GzGhyafiQVmZ4zYIglATchOixANkBVduLgDrNbaTIaY2pPbaMNvgJlrhRxApgccKLqaoU1mzKwVXVC4OAAMHAn37ysnjtesJ7o9FLqBEipPlr0PT/D8c3Rt2hKS3AGiQw6cQJ9IX5fwVdc3hHBYPRcRH//Ph8Yl/kY/dCL5i2l8bIQoZUxjM6hi06HZTpx7ZW0Vq22yv1Ln0Z7Qo3GF4XRdpEK3T7E900Xx+xgCccw53U8FQpO/kwUUoGdTwW0xu9jHXCxwUfGBFheaFBAF5gcO2+pDyHiVDhti+hd7C5IT5ffJ4ubTdG55t9ZgmlxcDoiOKxAkGABs3JqTtdIYUXGlE1JSUkeE4ITzXGDJxIjBggKP63cIgkEyLSAuUm9hELyuDAgPWrOGycHX6/rULxwwPb1TBDBfUUUp7gqjnaN8Vn0cxyVVtGAjW3Ci4AiwYfdLvB5YuFZPHA2KYp8suA664AmjRQuqL4yYJIqVwKlgKvyMNc/fwCUzNhGeMpaywR1i+AoMbfpvobhAJxtKDK34d4S87ZgxatQLalvwWuZ3zVr3X2ZXixGMPLrO+8LbkD+e4ysgAYG78Jndf+zm0x8ovThJuXvnxaFii8bxieblA48bc43edEBGk0h6H0KWBcWSTMFzPmyBg1+JTcFKn5z3oVIpgEVmKIXrMTHmlXprCWHRuylj8VgIAtG/veb08sHZtgZqahLSdzpCCK10QDBaRp5ziyMvKMLavcoE4aVJCQxQSRNogvVf/2drR02qXtn3NlgA8GPIBXbpwl7e70BCWr0D38p9U58w2qmTdSBDmXNL7MXn80JVbz5hhu07DFJwuNhZhAdVNA/9PrMtICFlcDBQWyjn6uEgGYSZBuMTpY5yZIWBxmzdQlGnPUtsIEvUQqYzZa+ToFcvOjqxFPQ8HHEKjRpG8YE7mWD3Dk4R4cOkVLcjHgbpMk6qkjmo6LCxfgXE1n8rHsgf4mDFAWZnptyR/hwb9DLAgDh+/RjwYMUI0pmnVCgBQG7IfJtLWI+HzoS5EchPCgiZNgJUrDS+/NPFKrO/+tPWzl5eHDF+IFDgW0BYieanTKrg8+K2UuSFlxowBjjkm7mFj6d2MDTTL1gdOPx2oqrJ1S4ZPx9oa0DF7SNysQIMCQZhzx9C/oSiTLzY8EG0pE1MFE2PoXvYjRjf6wjjiSexaJ4iUZ1m7V3Fmt2fleTmk9746mKOVyielNxdvVf834q/RdUr/r+74surYE4IG6xWCSAXKy13d7vMBdw27h/+GJJHmVGTvxRV9H050N4g0g8EbD66K7L14ZdIVQJs2MfO0mVDzKbZujdTtpNu6Cq4YrN0rsvebFzAIUTi/1TtY0f5l3VvMeqkM5Scb3ZaVARdeyBe+PKBRVinWNFn+OvHc7NnAmWfaNtZ1/P36/ZF9FiMpBqFG9f537274fAxs+B0KeQxamjYFJk605dmdJMsD53B8AGUReguTFwZBNQ9g1CjP6lUfQ/Ti7d/fcZ0ndnoeJ7R71X5fUv19S1JIwZUu6OXgClNaCowfb6s6QwVXmzbi/1L4IIIgPCBJZrhXfmkd1/Y+mHEx/tz3n4bXKXwHQajRfSPCCi69vBROFFxuNnyMYW6rd6NOv/1bc+d1WtG1KwAaL4gUpVDMo+H4vbMbSSHeJqoGNM7bjdO7/jfR3SDSDLMQhXbesaLMQxhcJYa8jNUbE5VDx8G76bkHl8F3N7Dhd/hj0Smma4rL+jyC9sXbVFUNq/4atw7+PwMFmF58RfGc0uBOFVWGMdMcXIwJYm5PKZyhSUHz65z3hQ+5cqb5/eTBRbgmPI4ZyurkggyYNIlUOAoYhGhb/ZLihPSFMIcxRBS5kyYBxx7LPYczmEcvUg7jgt5Jm/y5zz/RpfRn2/clifgv7aBZNl0QBNsT2KhGn6NTif7LGPAZDAwFBcC11wJnnCEeJ9KDiwYFgrDEzob+3d+aqY7Ncu7EIw8eLcoJggNpt+aV3NoXgxwm81q9Ey2I57G05BkFysvFdQlBpColJc7v9fJdZQxBITHJtr2A1gyE2fxl51WRyzoNxW/R2PDqL7HqsmbqW5SJ7zlzXuqFIY+FggsASrIOGt8nCFjX7T/IDdRad0Q67wt/XuV3LLUfVBisaNMm6Hqrh28HxNyehteNQxhe1Osxw/ss6+PB71eF3KIw7IQunGNObkateQF5b8DxnCVIqJbps/gMcYC8uJITBgG3DLoPm+euB/LzxRyxLnJBy/Uynd/c5fMf8AVxNJS6a+d0gxRc9ZiHR9+ma2kNmFiFMAbk5CRF7i2akIh0INHPcfOC33Fx78cAAOf1/LfqWkz7ptj4GrVDHhkEocbM4tlM6GOrDbEhZzdrwwIBeHnSlZjU9GPVusFyk1Jrc9Obk2OvPEEkC4wBF1wAluvwGfZyPU6WY/xkZSW6B4QODPDknZCVL0Y5ri07Yn7PTQPvtxtcRRefzvrZJyQgbG9YmK44pfoKQqGovxe1eRPTm32g/r2kv3MUijK/xujWLESh4b5FDlGo1zmR3MBRw3oN27PzaFRVqTzTksSZlkgSGAQxTFpRkXk56ZkzM0J11Yc44vf6M1i8kLqX6UVMWgoyj6BZwU71/MGB9nfO8NUZlvUpwhoLDlUjfibgSNDCa5iIG4nXUhDeYBai0IAMX9BwkegzSPzqllM7/xePjr7F0zoJgnBOadZBrO/+NAD7C1tHsrDzzhP/5xhbzIQKtw3+Oz6feZ6DDkT4/bhTMbuFvpKfIJIRBgGYODFyomVLMSE1vFMIq/Ju2b25Q4eoU70qtohrCqWCy2qsmTDBbssyKw3yfRBE0pKZKeaXcYLHHlzxIhYipbgaxUybFr+2CG4YBKCwECvav6zyDtjY/UnRk5gT2TNq6NC4yT+9ysFVnnsQ70272IMeKQh3rrKS/xajt1wSVi5r/xoeGXObuI7R8Lfhd+KNKZcB0AjBGePLwWXZOechCvXGGbOwiTInnIA6svInDGBMABYvti4HThmdrHROXg8uPQ/UeMIY2fUkK6rfRdo/8v5U2rlnUpOPcWbXZ+Rrut7SLh4EHxNwQrvXcOdQG/lwiZhBCq40wu76O8MXRFHmIXs3aV9+m4NB59Kf0aP8R3ttcnaFIAj7KIXZ5Zok0mZeFo7cxEeNAqqrxb85rHG0m9jwQvjXhafjhHavqSw8nVCefSDKMpSovwjLV6BPxWbTMp1Lt8apNyYoJ7916+SFf3gTe2jpGjTI2RNdlrd6hTWbapPAU9ewYWLidlV9Enas6hs3Bq65xtHG/JbB/4dNPZ/AvFZv87dHEAmG18CkffE2/G/GBZETXnpwxTE6g+fW5y1bUsivNEGevxzAmACMG4dbxz2OTH/Ek+mCXk+IluCc+JgAnH8+0LFjTJ4rvTW0cgzQ88zSQ/c9Ki9HzwqHe22jef6cc4AhQ4C5c/Wv6+bYUhwo1/xKD5Urr5TzEAIA/KICqDz7ANoXbxdPaUMUmnlwGV3Srml0CnItlzSfM1xfMCPb+t6SElXfabwi3PLz/HW65xvl7ZLn8/d3NIlnl2zh+TrA4iXWjiVA4iPpEPqofhfJsMLpb1WSdVDO+a6de716Bitz9mFJ2zc8qYtwBym40gUHIRT8TMCqDi+LsU1N6k1G8jKOJLoLBOEd0oJserMP4t502BJx24IzsKz9a6prvBtsbpQLT4W1utF6VBvPuEPxdgjLV6AyZ19MQjMQhNlT9ftxp+L2wX+PW1/0MNu7hQUn2YE6V4ITwxwmPNIfnw/o1cuyGFfv/H7HS5Bzez6JxW3edHYzQSQxjAFdyn5Wn5BQvi/ti7fhpE7P26s8jgouBojhmFIVsrKLGZ/PPB8PjbrN0b0+JojCsE2bVMoExqBWpPDUU1wMIDaegVY18q5xdcstWWLbI7Qsaz9mtnjPuECjRsD8+WIubhOU35WhgUyTJsCiRcCZZ0bXN2IE0KyZ6pRWKG22vuEWgLrwwFSFYQwruOYuML3nlyffj7qXwrATSri9UxiASy8FAFTn6RsDzGz+vvz3m79Ge0ga4ZXStTJnL1c5z98Ai3lZLwULTeXJCWMANmwQ55327SPneO5V/L2h+1M4s9uz0XVLKEMUOkYnPD+ROEjBlS44kAL5mICAL2Ru0ebxqC/AmwSBuYGjZHFBpB2eW/ONGsVdY1Xu3qiNstXr7+odLC8HTj8duDg6jMqQqq8BAD3KfwKDsYcVjQFEPCnIOIJADDz+svy1OKvb0/w3GLyYX+5uKP/tNITPk+NuwP0j/qrIV6F4xxxqm7TvqZ8F0an0Z4PSasjCmagv2F5uh5VRCqWUMg/flf0ewdK2rzurMw4wJgB5ea7rqcrdjS9mnSuGDjMos6bDi67bIeJDaNkKlGYfRLbfvof+9GYfYFm7iKFWlALhoou469JVHNmZA516T5u1r4NuiK+yMmDVKltt3zXsHjw46i+e7vsZA5AteTa1bau+OGAA0KJF9E25ucDZZwOIzP/aLpl7cHF8b5dcAlRVRd/Ls6fQdIb5xONgZXR9ShqUiTlgSKlFGKF9/jJ1lDEAgDZtgNJSw3f13B7/xjUDHpKvdyrhW297xTPjr8M/OdOReCETBIDjWr+JncedYjl+BYy+UyI5adJE9By2MS+VZB1Ah5Jt8vEJ7V5D66Lf5GMGqOZyMphOP0jBlUaYLpo0i/KyrP0GBTUToXazG0czh0Z5u3BVv4d0r2X7jZMFEkQqoXylPJ9iXb6vnsS5V6IVDrRuLSq6FP1kCOHlSVcBjOHsbk+j9oTV8ga+jifGve0u0WaT4CPA+DZGOf6jaCiFWPpx3ll4cNRtWN3hJcPyQxp+g0v7PMZVd6avzvC9fmRzd/lv+d21KbDuW7kZjfN361/s3l3/PC+SRfm+JSfhxn825rqF6/2UkwOry3o+fhFELJDmRdsGG+FxQDEeBEM+TRGbdfp8OKPLsyjJOmDvvgTCIKBd8a+GuXEA4MZBD6gEHt40TONLLHDztV7e7xF0L/9JPlYqfJGfD2RlcdflZyHF3CLhYVQTq/fdcjyQ+mIYacHii2xd9CuKMg/Kx/J86fQH6Nw5ugsQgAsvFI3Z2rSxXWVQ731mDOf0eApzWvLnUwvfJ/YJhuui49q8hbuG3m1ej0HEnLIyoF1ra9mE8l4SqxJmnNL5Obw6+XLjApZWqFJ0mOYfetgrc35beBrG1nyObM4UAl4pF3IDR1GafdByz6PrwUVvYlKi97vw/FZ/LDrV1HmDQVC9Ol7k4HK8NqB1ZEwgBVe6IAi2hucdi04zvPbJTHVs/7enXmrsauzIQo2PSU0+xqldntO9lu2vpTGBIDxALx51GKsxxat3UHfB4vOBMcDvExBcJlqiHg2SCziROHxM4FpcHzz+T+hQIuaOqMnfhZktPkBHj4Srmb6g4YtXqwjp6VS5I1s36rWxcCFfJXr3hnNzDRyInPPPRKAtR8gUxtQCSr0iCBl+H/H2/upW9iPO7/mvuLZJuOeZ8ddhcZvExM3/cta5XPkodQkLcpQGIm4fecZweb9HcW6PJ11WxNGUF2FhCMIEN/oopeBVnkucvqs6WEUBthT8hhVcDgXEX88+F1ObfSQfuzYI6dQJOE0tW2AQxLCQrVs7qjJkYNS2pO0buLDXE7rXrD6FmdK/JOsgFrfVD208t+U72L/kTzrtifXl5ABfvKkfLk6J/D0LAv44km9Znqg/aMeEvIyj6FbmIu+vXi5di7JudfgVOcYG9HroKZxcYeXBpZeDizx4khL9OZLvtzIzjtTWy4wa4+QfI28Hgg6f4yRNBZTqkIIrjYiJJ4Lfjz6VWxxbiNnhwl6P474Rf7Usd1GvxzC75Xs0KBBph9b62jUc72fAFzSMqX9ej3/jvWnRIQQBMYdfLJC7rNP3IyG1giscGsQNNIrUb8Y0/gxtin6xLCcsXwHGbCyuo47tP6vNCnaIiaIV+JixQufsbs/IfxsJhqww3WxmcyRR14E1qQHmzBHHmeOOA2pqOG9kltO8ygpP863He4lwUqcXsKL9K/FtlHBNx5JtKE2Qx1Lb4l9lobnt5XQ45n/Ys7JFi+hcNXb3BXEMUQjAWwWXSYhCALhr6D04rwcpoNOB4dVf4qd5Z0adVz1NjKnnXZvPmnLfK88ldiYVB++S8gnmWWuc0+PfaGqWZsAC5fjg2oMLAFq18nRNbeY1b/T9WAnz8x3m8M701yEv4ygAYNeRSGhVu2Gr5e/ZQ2Upkb648i6S3uVEhGDjGUXennopOnlk/Me7N9O+r+S9lby4+W2Uz7yVJ5gc5tfh3Der5fvWhYi4QgqudMGpJGfgQPPr0gJdrt3lZtTHQoYDVuui39AsP7JQN/pEazu9iJKsgzQpEemD9F71rtwSg6rN35OALwSMHat7rSDziOyJEnUfZ7g2FQbjlO67nJurOpzR/H3MaqFYRJxxhv32CULDP8fcgr6Vmz2pa0LNJ/hj0SkA7AmWGROABg2izm+euwG9K7aozvmYsddDA4WntZXnkx4lWQeQE857ogznA+DK1d/brk+Fw7WDlWJQJYTUlI23BxdZgaYm/hjk1bMFp6BzfM0n6hOjRkkXxov5dv70J5WnKIN+KC1Twmt+xaN859B78PwxV9urhwPP306TEIUA0KdyS1xDNRGxI8MXROP83fjg3MfQVmGgolpLap8Hm/tkpphrT+r0gv08boEARjf6HCOqv9SvX2/dq8wLwhGi8IJe/0KG0fjFMecqW5DXDAHvIiW41V+XZh/Ez/PXAYMHu2+TMcxo/j5O7/Jf40Lr1hnWq+f5AZhHwdBDHpPJSJfQYFuuZbWnlvYVybo27eOhzEN+oy3eKz1lH/mRJwcndnoehRmHTMtw/VZt25oqdbXvmWe/vxNPZYpiEBNIwZUu2AxRKLNwobmSq6TEaY908WninirRxkQ1Ilwky1+H2wf/zbO+EUTCkB78c3o8hQ+m8yfB9oIAC5lamhotuHnDtang3dCVlwOLFqlOPTz6dlzd/yGgqAi44AKgVSt7bevRtKn7OoiUxs8EQ8GFHkZT1MOjbsX9I/+Kkiwxp4X2Sbd8Vxo14m/fIOwIcy7LAyDGLTeag0+bYyNJtTYJuwtjFCtFITNS+FVWJsQEhuXmJKBVwg2WguRYY5GDa3LTj/DutEvw1PgbIyf//GegStXMAAAApaxJREFUpRTmMxAAunUDcnMxq+X7CC5bqa2aH521AIOA8mx7YYd48EroZub1Has2idhjppwNzwvdm/6h+k21j4ATQ48wSgHZ5f0exY2DHpDzSHLBGP7zTjHOUnhWqy/rCFoV3Y2l4v2xMTcD0Hpw+YD27YGMDFd1K383V4aol14KnHIKqtctAGbOjLps+5dlDA+Pvh1ndP2PcZmWLYGRI3UvyYqszEz1eZ9aqWrWPuCdwTCRfuiPCQ7foUsuAfJET0OuNU4insfGjT1bfcljjYPNDxnMJwfXDXgQOYGj8rFuiEKe3yovL7rc1Knyn4eCGdh+sEjRjke//8knA4358kvLkKFDTCAFVxrhyFqZMTFwtJaw98TYseLGWVneBVqNeoeSbeYJNHUID1qMAcvav+aqP06ItwKCSG+iLUk8nOx4QxTGa2HLMZEzCMCZZwKVlfoFLrtMYZXmRZdok1mf8bMQrhnwID6beT4wfLh54fXrDS/V5O9CYeZhR30wewJ1n08DhfTUZh/hibE3AVCEKHTykvTrZ/+eGGE1YmT5dZK6l5QAp5ziOEyjU3yanEKdS7di+wLyNE12EhG+R4WFB1fT/D/Qq+IH9UmNh7OS8OfRfTeskKM2iM/x8navYFSjL+zXw4HbvAdh/Cwkhj+dM8fWPqhZwQ5MavI/5w2TgDo28AqICgqAyZOj18wLFsh/usrBpaz3oouAjRtN3ztdqqttrehtrf/txO/VMKWZ+Nwr35eQwEQBnZvnWhNW2NUrUloKtGsHdOkCZGVFN2XwXdnJN6SL4gNU50ZCRAd8IaBDB2DgQNw++G9yuFO7IQrXdnwJZ3R5Vvx8BKFA76k0fYUmTDC+plDG21njeBX5gPc99GoPzhiAqiqgb19n9xJJhxt5WJ1i/8cyAmKkg06dAABHghmq6CjyXM/xIHQq+RnC8hXRFwYMEI3NGjZ03GfCO0jBlS44WcV37Kh/b1YWcNJJkb81nhQqGEOP8h/Qo/wH4zIKtF4fZVkHMKjhd1JVOh4hOl4aiZ6Iupf/lNgOEOmHl0nibWLlwWWEn4U866utenQKfz9nPW4d9HdvOkOkPWd3exovTbwSgPgcF2UeFkNxanN2KJk6FWja1Fqowhiwdq39TaLBS1Ab8gMAXpx4FQB1Di6t1VmWvw6Tmn4MQG25PrTqK/Rv8B1/X5YsUXTLwdpC68HldJxgzDLxfX4gkk9D7unkyUBpadwN48QcbZHjDF8QDXP3Gt9AJAUJV3DF6EHNDRzVH4fM2tO8rLcNuQ+N83d72zG5Kfefe1qzD3Fej3+L1uo6YV7N6FSyDU+Muxl+J+GWAbK8jRUGHjRKGBPE37ykJNpjSBHOTjAQc8xq8Z5lG6pwwBUV/LkjNRgZWujObIpnKh5bgU6lEc9sq7mWF+XnTYRnBNd4zqHg+s+Ea/HomFvl0wFfUJSNZGZiWfvXMK35RwA0IQo5FjtDrpiEy9ftiISYJQgJ7vclPE4MHQqceGJ0PUx7nLxzlaceXOefr5sreG3HF/HtnA0etUTEC10PLs5p6tweT2JF+5d1r4UEhuxAnZzH0877oVt26lRg/nzuOjQVOruPMIUUXGmErb1Wu3ZizH49Tj4ZaNaMu6r3p1+CGwc+wFXWz0Kuwx/IyQBd1kMQyYinG0Kfz7S+pvk7MLXZR6bvkt7cu7zdKziuzVvc3eha9hP2Lj6Ra5AKCn7uCT/82QoyDzuzVifqJW2KfkWnUjFXjepRKy+3vNcwxG74/M03A50727dK1FT89PjrAQBHQmI+jGHVX0cVM/f8ivz90qSr0b5YP5desmOmKOxVsQWX931EbzdveW+iOHqCwbqLSBh+Fkrss6KMksALxxzZKG+3faG1Qb2xEJB5sda5ot/DWNruDflYW+Owqq9U1rbKT3egTgw1Vrdstet+EB7i8wHXXce3p9UYQaieU5N35B+j/mLdDYUxiRuMPode7iZbzblVsA4fjjO7PotaaU4Kh1d2BVO/1bGU3RnVbZgTi9eQT/pecwJHVeGr/ZoxMPz12/6MbduKwlCSYRAaHIVk4/AEjPvqxiKPX17gMB4fI0ab8MxjjBm/kH4WQqbP2JCFQhQmlm5lP+I7TgUk72/Vs+JHrOn4ku618JohbLxl5wnUNaBo3Vr1zD886laUZ+/jq5AMpWICKbjSBcFmMumePSOLKzsvlwchCpWDkyp2Om8Xwn+0aeOqL47p0SMx7RLpCzPYoHtQr9m48NbUy8Qwn336iBO0Tpx7PdZ3fxo1+busC4a7AQEFmUesC2rhsOR1SzIKwYnYkumvUwt+160DxowRrSGNsJgnGQSga9doIcqECfZjcgMYV/MZAOBIUL1RZBCsBTXdukVZjcc7XJ8KFwt4M0Xhhu5PYWGbt+VjuaQ0nnplkc6LONqar2kyYphXhXCGjwlxf1ZkxowBJk3iK6sMvWOxFheWrzCeoznW8amy5VaFltEJd2S2ngomckwkzNGxwo9Ceo6DKo8h7/DKs9MoD5heaDvlOGTZuo0QhUvavK6+Nm0aMGMGGBP78cuC0zG+5lOrFrnwLAeXGVdcYfjxDX835bqJM0Sh8rMENJ6etscPstQnAFze9xH8U8qBZwlXYnrrMj3Kf+Sux/Ubm5cHbNpk2q3irEOY3EyMNhGPNAEMAmryd+GrWedEX3OST5zwlCx/HVoU7og679Xvoq1HO3bbmet58tnNaPEhd31EbKDVfbogCOaThNlCWBBQk/eH8XXGjDcNOoK2woxDmNfqbZ3CBoOIZH2S7a/lEjLIA9X8+XI81VgwruZT/GPk7TGrnyBklAqueDYLAZg3T1R2n356dMiMRo3075PeY88WhUYr4VmzRGtHq9thLsgCxLjJBAEAVbl71HNNy5bAjBmWVoeASd4HJgCrI54AcqmmTcXcHU5o1AgV2fs17cMwRKES+UrHjkDHjqrPW5hxiLsL8rrChXDG8TjBOO802JjHW3nNmKD6mnwsFAkFTSQtDAlUcHXrZjnuyO+5wXxshtN3IB4KcQa4tl7lHpaqqqQ2FcJrt785CaxjCu+zq/Lg8lBQ6ZWCy+g50/M0Ohr081esk5dKj0Z5u3DnsHvVJ7t3V3kQNcjd59njHBeD9MJC1An635VXHlyaP+HXKCR1FVw2w703yd+Jhjl7bN1DpDbl2fvRrvgX3WtR49dll4FlZbpuc3TjL/TzBsWC4cMto2EoQ7p7tfbimc/bFP/m6D4ithiN2fohCm2EE9Q516rwV1VoXrGcuTsuQ6R/lusCadLgNoCgdWRMIAUXAQD4cf7ZaGyi5DJ8ncMJqRUFVnd8CX8d8jf94iyksXAWxHCJEDX4UQOCzkpZHgtyc0WhZAx4fMxNeGT0rZjV8v2Y1E8QRnhqScSYaX2MwdxrZf16sMqK6PvsdsNmeRV5eZG/+/TR1Mv3Xc1u8S4+mnGh7jWy26pf7Fp0MoZXf21oVW31TNn2sNQmZjKq06DMvcPvwvYFZwAAzuz6DM7u/nREwWXSprxp9PuBE0+U59ZjmnyMnMBR486sXas6dLT59HDBHhZyvjxJzJk2r9XbCC5bydV+3HNwaRrVhjRSbpKI5GBJm9eRE+AzrkooTZpwGXtocfQOrFiBoNYTykE18UArmNB+XLnfHToAZ5+tutaldGtM+0bEB8N3123EERjPy3YwUtTpCfW0HtumLFokRjI5/XTTYqZrGg6jHruovJ5i6LFs9LsbCiD9CoWYhQfXxb0fQ8/yH9Gj/Ec5lFpA83uF9Ix/fD5k+03WVxq+mnUuHhsb7c1D+YLqJ1H7i6IisDatrW6KXYdcYCp7kP/wTuJRF5YfOvg+yIMrsSjnCSsPYCdPu/KR+GbOuWiiiW5gFt7ytsF/x+/HReZYQwOKMCHxOveegkIUxgRScKULgiAPAw1y9uDeYXfKLxkA8wFfulYnJbM3ymehey2s4FINSMbounZKdWb7a1EbsrZei8dENLnZx8gN1OpfpMGI8BClRwYuuMDjyl0ufAMBoKQkulrpHeSt3vYbo6x49mzRC+KUU4Djj9fUK5azWnBoPStUdSS7YJPwlOIs0XvJ6Hd36vGgvUtbv+ViVxDwztRLok7nZxxBw9y9AIA/9/0nVnV4RaHgMnizMjIgQL3ZC7f/73E3Gfdh2TKgc2d1v12ItvMzDiu7YB+Fom5I1Tfy6SgBlkEDcffg0oQoDGhi/iepHKJec+ewexHwhVw9567gfSg2bJCF0YJgcp/GW1T3HbBaw/boER8PLg88ZGSFgM8Hq5DMytzCP847C9cOeNBd47QXSCyS8YgqRKHZ62Txe63q8BJWd3hJPvbOg0v/vN66VRnKuyrXwrOnQQPgtNPE8OJ6cOz7cdFFaiMyD1CufWI55xlZyLsOUcgY1nd/GjmBWvh9ghxKLUcjE9Bt3+/HrkWn4Iq+D5v2PUx2oC5KcQYALXXCdRHpASlT1AoFr9YawRBnPV26qA59JvIBIj4o50Ivl1VR75rBD200Z7wz9RIsafs68gKRedly3SpFJaMQ2ImFvv00Iryx61z6s5iXQjlKmI0YYQFYeGOoMwCYWYqLbWvL67ennUiU9Wb56yIWGCYwJkRZYlpxXo9/2SpPEAmhQQOwfHebzRcnXoVTO/+XqyzPQltvPeDVxp+L4mLgxBNlT08l4QWEn5mLJ2ntSmjxSpEVOW/+TpgtdsP39q78Qe3lY7TrkkMUas4ffzxQUwNMnRp1i9M3VtdK2YpAAB8fuwkPehDiV6so1FVMGoQFeuu35q7btwNjUH1PfhZSHTMIlqFbiMTQsWR7orvgDTU1qrlS+d5PafoRnj/maq5qHviul6tubJO8Ts0IvxmmIdItEEz2LSqCQVWxvMCRmHqXEO4xm7OUv7ZhiEKL+VNL74ofcEGvJ+Rjn5WlNidGq1O9dXST/D8QWrYC383ZgPN7/ttdwzxzdkkJ0Lu3u3Y0xGt3oPUyDeM6RKFOuanNPsSUph9p2tepLxBAdqAOfSq3cHtsJ733MOE5xvsIvXP23yhtvrhEYKYIkMc+n8+z5z/I48HVo0eUoayPcnAlHHnMrqxUKTx1QxS6+a0MZOFGT0zvyh+i8ib7mGAeen7SJGD4cP7nmrSrMYEUXOmCXlJUzYvcseRn/dwb4US9JtYPgqasTEYGkKmOD8xgbA2hKxiXCucGjqr6YGRhz0pLI5aYHANDt7IfcX4v/o3C+9Mv4i5LEJ6gFYK6YECD73BFv0ewf8mfYjZxhheuyve5JOsAhlR9HVX2lM7P4eLej8ekH1V5omeLNjY+QVhRXXIIz4y/zrP6tK+ads588Pue5hVIHteCclmmDKkzfbp1J/r0ET04SkpwQa/HcVGvx+RLKit365oi3XJiheb3o3PpNlTm7LN/r4YXJl4te7at7vASlrV/NbqQViAlhyiMvweXclOjXe/4mACMGRPXPhF8rO7wEn6Yd1ZiO+GV6apiMFK+A/kZRzCi0VdcVWw7UBw5OPtsy3WJNu9uleR1at5Nsc4f55+tu3bgQTvOat95WcimCcXmydKIPLhiCk9EDwAagZjJbxKeJwxyV2k9cH0moYPtYDQPGRmKMQa0KNyBLH+d67YBg/le+bk8fo5VxkMxfEeMZBZcHlxmoRl1FFz/HHMrOpaqjSB0BZiZmcDKlRhS9Q1Cy1fh6Amr0KX0J+O2YKAoo3VC2mLXc9mJTCBDEz0Aa9ZwNOTRutkqhDoUn8nDEIVmRoTymDB+PJCd7VGLhFfIv0+TJoaGC04IT3PyUzZunPj/qFGqucnKaDtUFcl/64Ngng83JweYM4ffg4vWkTGBFFzpgiBEvyOaRdqnMy9Ax9Jt0fdKCiozDy7TGOdXX809IWo3EIwJgCDg9cmXoWPJtuiksYKAq/uJYUTC1nR29xt2rEMYQuhRbr4YJQjP8VDB5WMCfExAXsZRbdU6zXK0pZcHT/pfaSlZnbsbL0+6Kqrs6V3+gwlNPg03aNlcTd4f3C952ALbb2GBxUyu09Ii8ZRn70PnOOdDYQX5GFvzubgYtXMf5xOj9RD7aX+pSZ0Rnhp3PZ4ad714UKHIf1dSInpmTZ1qHaKQMZzT4yls6PG0vA5QzoN2nnlH74fUZnh8cTymMYb2Jb+gd+UPAICbBt2P4dU6gnA5F6h6DTOx6cem1bco+J27KzxlGRNUgoWAxoOrb+VmstZLUhgDSjIPJrobuvgUwiAZnvBjUAt9ZI+UkLVByLdzNuKvQ+4Fhg1ThfbTcna3p/HFrHNx34g7LeuM6qYHsy/X3qN1a1mwIYdXVrZtZo1r3riz+wguDtZlWhdizL5ATCcagFiV+vdsnLeL3+vHBCNvcV2hWgyeKeXnKs/eh6rc3eoCHOOBHeL1WhgJEA09uJRjpt9Eear8zRcsMCxWnr1f/0L37vKfGb6QpaCTJ3INkdy8OPEqvDAxev9rhNHc55W6J0qW1qUL0LWrJ3XzwpWDKzfXsxCFdSZG+owJwAkniLlMNfx3a3vy4Eow8v5UEGIbHrt1a+C664CZM1WntblcteRm1uHZCdcC4I9gxB0yk4gJ9O2nEeFFtPyiFhYqLpq8kH36ADBXYpkOOBkZ2uKmoR30JpIBDb8HY/ohB07p8jxennQl/j78TsP7zfA8DwdjGNjgW7QrTpOQNkRSYVf++c3sjcjyR2LDqzZ3jNlLWq3XHyH6XWYQgNWrVRO9UbflMpWVovWUCc8dcw0+mbmJu2/hui1zcHHXSCSCFgU78PGxF8a30VWrxATtp52mOm1lEGEY9chE2QSoc0iZMb7JZxjf5DOgRQtgzpzIhaZNxfdH8Q5xKag5rCnNcBQ+xCsljkU98lUDa+yWheZKqe/mbjS8VpJ1QPW3WVllf4qzD0NYvgKA5FkqfYY3p/wZL0y8GgiF8PbUSzGt2YeW9RH1AI53RZ5DHSi4lF4w8lkOgXZx1iEc3+51y+Y6l/6MdsW/WtZniEtpuHZ9r1vb6acDBQWqU6qx0+V41SBnj6v7CX0sBV1yfkmb3slDhgCTJ5tViW/nbMC1/R/0ZC4zmkO9CoFoiMYQ5s99HsX3czZg89wN6s8V9DacWbxyX7Yo3IGuZdEGqYYCSMZEy/3hw809uJQ5yQYPBlav1i3WqXQbtnOEYjVVcDVooC8IJUOYlKI48yAKpZyzbtANyWb1KNgxSrfbuAvMEgcwJoh7mnnzPAlRuL7bU1jd8WXD6z4IhqFYj4b8unIOIn7Ic7ggeJoPV3dfHvbgq6yMlFPMGVW5u3VDfI5p/AUA/nmb+3PQWB8TSMGVRoQtGQUwcQGvsCLSllFRVQVccQVemXQl3pp6qe6GM6ixjLbCX1Gme54xtTBaW1udQUiKIVXfoGn+TukemwouG5Mnb0z+16ZcgYdGuc8vQhAAXHlwtSpSC3G1r+ieo7mG9/ocWi2x4iKga1f4fRpvTL02wucvvBAoKjKtNy9wBEWZh/knfEGAsHwF5dJIccLPyOI2b6BZAV9y7XuG3YWFrd901mBmppir5rTTxP8VON1saZ9/7bxTrbWa1tKjh/p48WJRKHvllcA554gJ5SOVW3UmquxNg+7H21MvBYqLbW0f3AirwnfGdP0+d25UmOQwTfJ3ycomO5ze5T/4Y9Gp8jHvOKkdu/0sJAvSyrP3i7HcQyH0qdyCnMBR2/1S8tGMOCuE6wEJ2WfaUXDxEvZIqqxEqUJRK49RHgu0naL85E7DIlVk7wPOMg4tqX0nddcpGRnoV/m9rrDclFAIvy08DRu6P23vPoILXt2nUpDElYPL5wP69Ys6nacYkxvm7EV2wJsQgUYKDt15xak3oRWFhTiz27MoyDwihj5UGqaahVtyAHdoJpeUZB3ERzOiUwqYCiBnzlQbDukxcqTo8bJ8uXist7447jgAQMPcvZZjuJlnCdav1xeEktAzpWCMf61sVoo3LKsVbvJk630Os3X0l7PO1T1v9lkYBODUU4HSUk8UGhf3eRz9G3wvVR5dn/b7EFRzBpFInhp3Pe4adrd4kJdn6fnEvSc9/3z5T93h9MQTxRzvALJ8kbn+uzkb8aCJfJcBXIsTbk80igQQE0jBlS5oX5BZs3TfaMPXqLAQXcp+Rt/KLQYKLv4BRxuGUItPm3hV0c+jSmtTk/jk+gf68EyejaUk11aeIHKb55xDLs1ETHCyr7HyHjHCae6q8GKRZxFtx0o1ZFORrhyrTA3adfICDq3iy0VCxJ7wWH/XsHtEgSUHx7V5CzV5u5w1eKGxcsDSg8swtIjRDQrDE8MiAtCrF7BhQ+Rk+NkuKAAaN7bXJgB06iQq7yRP7sqcfehTuQXo2TPqE0xv9oFheBXH1pWLFzu7zwYCIIZQk2B6ni4GzGrxHnc7TsbJIVVfY1aL94GMDPyx6JSIIYL0e7gVZHQti29ITyJx2BZWDR8OrFwJrFuHLoMKcWipmH9DFqh7GJLMzTpYucZ3UouwfAUqcvYDzZvbbzv8R5MmwOTJeHPqZbisz6O266nI2R+d74TwBMu9m07+aO71s6bg5zPPw/TZGfLz7EZArMUohKJuG4sXi8oVr2nZMvL3jBlqY7Nhw0SZwQUXeNLUln3lntTjFNehobKyxJxFPaW8qXrj5cCB3NVFhYtTkp0NIaCjQNN5kE/p/Bz+MZIMa5MRu/Og0Th1WCfiipM5VveeGAnS2xp4cBsZrAPqsS8e8v1oBVeEloW/kzwvgQyp+gZN8neJThnHHONa4dmqUHoeq6rMC1ZUAPPm4dwe/8bycG5nnw85gVpTo2kv1wZE7CAFVxoRfuV0B2o7ySO1sw1jlkKuqFtMJotc/xFF1YLqZr9q0mNA//7mfeXYzSg180b8NP9sAJqBq7paP/cAY6LA0WbuFoIwxGUOLqfLAR7PBL3+KF+7a/o/aHE/P7Ii3YGCy7QPOguSlyZdLVVB9luJJlMxRtux/tWW7VL6E16ZdIX5TS1ayFZbejiN/619T7RPHNeTqowPz5H7w3SsWLtWVJhp3yUd743WRb/p57aCCwVX//6RfDdevGJLlkT+lnKoaAXL5/Z4EjcOvJ+rOjthlJVeMOZ1RtYzL0+6Cse1eQvIyEBJlpTb6dJLZU88x8pZot6h+6yavVQ+nygsKCgAVq5E9ogB0i0OPLis8v25pU4c+72ah+3kAwYgjpHSfMCV80lJOPefvbsITnjnYkMPLi0mIT7b9yuC74Slcng6L593o8+hKyjLyxND4g0eDCxa5K5ho887Zoy6XCAgei0pvcRd8MWsc3FBr8c9qcsUg5xC8nzrFRaRJ3T3IUuXisYs552HXuU/mObw1LU30Bnfu5f9iGnN3Yc2jnlozHqIjwncihozAbne/OVk/ezI6MJjr0HevVw8Qppqv/OwEvz96RfhnB5PUojCBCL/NitXArm5lgYKZs9VRfZefDMn4lHIE8Z/U69/RQwQ9ULXbtggj/Ezmr+PRW0cRo4xgrx1YwIpuNIFQZAFUbqThfRycs2/OslXrQTPvBNUSdYBZPqDandnxarg2Obv45NjN0lNCcCgQeJC0SGvT74MT46/gbu87MHVty+wfj3AGGpPWKVblsYkwguUeVoA/udqUMNv8PiYm8wLxciDS7n5P7nz8wCA/bVZumV5rV0YQmhWsFM6iEHs4m7ddE/HK18AYUymYjNmGs5F4qlx1wOIXugWZBzB4KpvzW+2eGYME9YLYWUN3/MsaLwR9TauU5p+ZNwvt8ntGdP/rOXlUU+8/A7o7NA9SfjrxkRz+XIx0XvfvsD06cApp8iX8jRh/rqX/4Q1HV/SrWZD96dw5PjVuKrfQ+ha9hMm1HwKANi24Ax0LPnZtAtDq/SVf1q0BjsAItb45eVAaanoVTdrFv7c91HsWXwSV71EjJk3L3Ft84QotEiAbUp2tiwIfuNXyYvDQ5Np7fzerexHbiUzA4ChQ8UuedQfbT3ab0wVNnX4cPFA2vMcCmbAFpq8XoS3mBlXKOdhw3J25tCwIleqyscEy5yxvNjy4Ap3YsECYMAAdw0rP5Pb9YQN2hX/ivE1n8W+oSVLgH798Mz46zCpyf8AKLw6vaRxY2DZMmCjdR5Omb59gSuuAKqr8cDIv+DL2fph3AB+h1q/z30wt0+O3YRFTkN7E4YwCNx7SbNIQV7kzirL2o+BDb+LLsc577teHkj9yTUJw62N+uQpuiEK1d95+E3qUf4TGNOJLEV4xosG0UHCaOdBq1HuaNB+9AvDZ0z7sEtrQfl0u3ai4al04uHRt4uGi0TSQwqudEHQTK7aAZ5nxpo8WYxLrrQil+qyM+kyJuhOML8tPE0MgagsC40Hl09Ap9JtAKRBz+eTBUROBNEdSrajKnevqCjTYWjVV/j9uEiuDT8LiUK0RYvkGOVRrqqk2SI8RLvY5V3s5QWOYnKzj80L6XkgKvDCgyvMEZ3QCoC0sJSEWIYIAkLLV6Emf5dxA7qdi5QzG+LojU1uMv11QEkJAD6rv/FNPosqe/vgv5nGzebFSqFj9CxpH9kuZVuR449s8PTm0MfG3mLckI6hiYysbDMuEsXGjcDUqcDAgcZvvY5nh5sE0J4oj3v2FK3ZGQPGjhU3HNLnDxhZqep8MX4WQqY/iFO7PIePZlyEhW3eBgBxfWBy+yfHbsJNnAJ7ANHSqi5dgNNPV4efHDkSGb4QCjOdJSWvUuRzK83yWJhX3zjnHHl+SniYGkHA34ffEXU6ajnv8L36cneVaKE6YoStPpmhXR+Pq/lMVDJzCOcFQAwjc/XVUdfmtXobj442GR9dwrKzIrl4JOF/JWd4XJnSUmDhQo97lp4cXLrW9j2jG3+Oac1MPFbCIQoVc7bKAMVsDjVCacgydar9+3UwskiP63iTa5yLNxZwhft3S04OMHgwxtZ8jsbhvUOs6NUrKl8rL36fIObfNEAI6TwHOgpJM4UBIHovWNGi8HduIy2CHztrcR8zTuOhJ9y3K3Lasei0SD4qDooyD6Ig45BpHwCgUd4uZPv5c8d2LduKn+ev070WEiIGeJ6FfJs71/CS9hNp93mMAaFl9vP1EtYMM4gOEkY1VzBmuQe3o+a3LGmg4IrCJOoLkZyQgiuNCAuizBbNZpbaOOYY0SJKZza19uDSnhCiklLKVlXatg0sy2ThuwvLM3ngNNikZ/nrUJ6tTMINcWPuZGNEEA7wM2ceXJablI0bgepqDGxg7NHCtbDUeXfkMUa6dmzz9zG75ftiWE9tGxCsLeS1QuFYeHDF4n7CEzJ9QaB3bwDmcdu1KL29upZtRXXeHtd9cWojq513bxn0f/hj0SlyyCOlUPqMLs/i1cmXK+5VMHiwqBThWFB3K/uJv4M1NaJFutncpqPgcrP1dKMc4yFgJESz+V6bGRnkBI7C7xOPh1nk7fvlYJFuiGe0bu2ZgPHqfg9i6/yzAADbF5yBP3V80ZN66y0ZNr12Ysz81u9EndN6tWrXDLa4/nrRm5AXaUwwWm8EmHrMkMP8VVbytxEIRCntWhTswLTmH/HXIWGl/NPdH0lj4qjGX+Lw8WvsNWhgPEeoyQnU2r6nZeEOPDrmVstyNw/8P5zV7WkAmtBcjOHuYXdhdYeXom/Svj+aNSiP8Rcv4TXFG1MuQyNFaNq4Lj/HjgU6dxZzS8WBbmUc4aI9JNZrDVNc7leMPLiaK8IafjD9Ikxu+rGhfOe6AQ/g05nWOdR8ebmu838S0YgeXHyYff+OIia4DOk/q8X72LvkZNHbGwYK+VGjsHX+Wbiy3yO2uma0JxMEJsv2eN/ci3s/hpGNvtC/WFkZycer68Gl8RLSjhdCdJ5uIj7EI6cVtzGJUc7shQvtrWkhelISiYMUXOmCIkShLpmZUjFnI3jQLEmqBjstMABo2lRxInK3WVJIvfJ62B04lVYlhsQ6JwFRr3DqwWW6AV+6VBRoM4bXplyB+0b8NapIcNlKZPqdJUeX3yvpXXho9O24uv9DkaTMemXNUC68mzXTj4OsR6dO4v/t25sKtvwspL+490V/i+XZ+3DDAGuPjePbvhafPANpTpfSnzCn5bvyZscwRKAOSsttq6cs238UW+aebR2i0CJEotH7qRUABxbNR/bw/vL8lheI5J7sWrYVg/RCiABiaKI1ayz7KSxf4SxUAmPRIQrDXdeRtITs5sVTYCefmi0EAWd0eRZdyrZy32I2rmq9UJS/pTxCjBqFFydFe5oo+W5vRbQHvMcwFhlTG+bupU25V5x3XmLa5fgBtWsEV94RvMZbYQV769amxeTuz5mDhjl70Kv8B+6uhBRhXJX7l8v6PIKVHV7hq+TEE1WH2j2OkWJO9bUrDrL81jl7ieRiabs3sLrDywDU4Y7BGBa1eQuTm/5PPjZEmvs8zRspEV5T9G/wvTondOPG3jWih/Qh/CwE5OeLeTnDIXNjDGMQw0WPGhXbhqTFiyehlJ3i0iBWd+/StCm+mHW+nOO4+9x2ouePwXPpZwJXbi0GAeNrPjM1fCTsw5jALV978sdOuvNSw5w96FJqvaY9qdPz3mvHw4Z1iOG6XUEIEVnbP0b9BQ+M/IvlPas7vGTfy1pCu2biCYVPxAfV3owj+pjZe6a9PVx3VCSuMHr5FYcMid4tlpUBF1wghvvmnNO+nH0uXlMYshLxhd7wNCK8SBIUE4dM9+5Au3aRl9bm5PiXIffinmF3GbetGHBMk1sOGhQ9YA0eDMyfD1x4IbAu4s4sC8YzM4G2bQ0HtaVtX8PYxvrxvrWCeC3y2fHjsbL9y+ImiVPBRRBe0LroN0ceXE/91Fn8o0cP9WRcXi7GfwciSdB13h3+3FgmHlxadBYjtq1zzjqL/0tYvFgMM7RsmamCP9NIaKXT34rsfVjb6SXLpntXbMH8VtHW9oQ9/jPhOsxq+b5uuCErlMow+RmfMkW3rI8JaFrwh+Wz5T7LgcSgQaKySmpvQ4+n8Omx58t9SRjMRNXjcYhCwxCCHnB5v0eRa+QVoPMbm/3sdwy5Fxf3fkw+fvj7HvLfcp7CwkLLPh3b4n1gxQqgY0fLsvIY7RSpPwm1XE8Hwg9GdTVYzx7mZWONgYW11vvF9vjhZM16zjmi8qhPH/Oqw6NJTg62L1wnh/7k6pZB/1Z3fBmN8nZbVzB/vuW7ZvTJjRRcRGqgncXCx6b7T7PfOfzuhUMUemjAqHxfHxt7Mx6efK94cNJJnrVhhqGnc6yZM0f0HIsDdgyjkg3tHD5t1F6gc2dk9esOf9tW4sljjzWtg/d5ZQyY2+pdvDYlft519QGfjRxci9vo50DbvnAdWhX9rntNybUDHrTVNysEQNyrSIalumtKD/N2Dq36Cuf3/Jc8Hrcu+s0yOgIgKhEv6v24o9DF2vdjb22OuoCHn4+wh960nOGrE6OA6RhdVuUaR2oxGgcNjcKaNwcmTQJOPjlybv58fXkzY8Dq1cDMmQBEI1OzEPHl2QdQknXQ8DoRW0jBlS5oPbi0I0YgAJxySlTiey4YwwntXhetxQ1DFGrV5jrlmjcXJ9EGDdTnfT5gyBDR/bNFC1FABI1ySpFYXtvOHUP/JgqWdJAFAxyT1y2D/w+X9HmM+7thvtRdUBPJwSOjb8Xdw+5RnbO9sdY+28pjDxNLM0USVvkV4XhXuD6PchFjZ2zKzRUTxUth4IwIW/UKy1eoQyoJ0VZ3ZgKSHuU/4E8dXwAA/HrIWuBNWKMyZACngmv9egDqcIYNcqT8Ay6taa3yHBg9nlZPbW6gFh1LtwNQfGYL7whDXG7GtPny5Pk7Jyeq7MhGX6J98TZH7eRZfJeO4R0jFGsN3XFICmnSrXwrJjaJ5DNsV/yrmOsL9kJVlWfvBwoKgBkzrAsvWSIaHjll1Spg1ixScKU6ymdZ573+YPpFOK3Lf1Xn/HYVXE7Gi/x8UXkkRyzQhzEBuOIKR0oiv8Kq1ml0CS1WnzTcTS8VGF71neBHa8gZNkzRE2QZCZ5Xtn8Z/SqlXDXSGjRc1kud56KlftmSu3PpNgz9q5S3jcNowgv8PhchTd3QqFHc2k2IB9f8+er/rTBYm4ZyIvuX1R1ewqP/LRS/txNOQKib2ujCLIIAzzdNkWdiA2NA26JfMIDDM85qj8GFk729IOCCXo+jUJFvSzytfnLM9mC6nk8VFQCA3hWb8fKkKy3f+U09/4VFJvJEIxiAFoUGoYttRnMa1PBb9b6GFFxJhZlzQvuSX6JS4BgRvt3Qg4sxYOJEoH17J910FhI7qhJ69mIBKbjSBSFiPWKegyu2PD3+eqzt+KL+5JuVJQ4ma9bIyVr9JolXtYkHdQeScFgrM3fjcBgzM2wq/AjCC5oX7EB+xhHVOd7H65we/xb/MArgDniaS04pVJPHGEkpEbnA8MO8szCq0efyKS5rc96QhCaYLTSUHlyq3tj0OGtZ+DuuH/gPAECn0m20WfQAOVTHiBFAx454YuzN1uEq8vKAm27CrJbvYX6rtyEsX4HmhTvFawbPvPxbWbxgx7V+C/kZh+18BHX9RjRrJv/pYyHg5puBadMAOAg5ZvbOc3A4qM47JACioljKg6bkkj6P4fNZmxy107xgB1bp5T9xi9HmvmtXcSyRlFM4/XRuJaJyUz+8OmJNyustc2DpWrQs3CEeSLkMTGFMXBPZRB6y6uqAkSO5rYYJA5J8Pde9/KcoDy5TLxUTYhGWqjDjsGNBvXLcU75lXs6r2lBQ4fcnKhThtdd61ibhEZrwk4YMHiwbu3C/zj4fbhn8f3h50pV4a+qlEQVXDJZ0mYvmYuBxLeXjuI3Z0pfhZT4xJ+3Hg4R4cA0ZAtx4I5/HNmCs4Dpmkvy3duzjXeoxQNdAKapcck93KQuDgNLsg3idwzPOx6mMlLEalBjDjObvY1zNp5ZVndPjKWT51euJqPB9ZgouvWuDBwMAKrL3Y0jVN5Z9sGMgq7rPZh4lJdp1/KSmH0f2NfPmkZIh0axdK/7PGHpXbMaQht/Ix3YwKm2o4DKA9w01fWxW8CnhaFCODaTgSiPClrxcL6adF4rDUiT8ko+r+QzFWYfkhVyGMt54uM0GDYDjjgMAZPsNQgxZXJPhEeCvXWv9eZX1cFrGxFu43aLA2nWdSC1shf9TsH3BGTinx5PigXaGVT7r4RCFLjbU4f4o47vLTRx/fCTxppS4vkn+LtVigktAPHcuUF0NrFzpuJ9mC40MX1AuoPouGjaMKmvWX+VGoHvZj/Y7SUQhC1+ys4ETT0TXsq0YWvW1YflMnzQvBAIY0/gL/H3EnZoKLcZvi7ngzG7P4sWJxrmWjJ4zyyn11FPFZxzSIlwx59hWcOmEEuSGsSgPLgBiOCEPPT4BINMfxM2DrPPZ2cboy161Crj++oigp7BQDgUoC7qHD9etR2mZqszZZxXmOIwqXGJZmai8XLaM48M4pFZsL5VDMyUFybS5tOqLIKBFwe8YzyHI0qs32yikJ08VOuuSH+edJebZkfqmoqAAT467AWd3e1q3vn+NvRF3D7tbPvZK6K+1RtcK95sX7sBV/R6K/qo5hMOECwxCB+sSfpY6dgSmTtUtonoeFyxAXXa+ZXXqCsQHINMfRN/KLVEeXJ7CGFBaKh96YM9ls3khMeNcPNqUc7cmSJyVkWFdJpzP0CDnWqi0XP5b+5V17qw4GDnSJIKAwLV3ZEKCwlWmOUa5HnXLeiE70nh+Pzz6dhzf9nWuW7VjXLQRiM5DJkVJUUbN0PZFDkke3kf066fbvixLsJmawUhJISxfYduDS2bgQGDoUOvGidgRCKgGujenXIanx18vHjidQzSTrKu8tXpoI5Hp0aOH5bjw9exzPOoQoYUUXOmCVYjCcLHwxBZrjyUp9M/2BeuwvttTOh0RX3pHCi6dEGxmnmBgzNo6w0iwp3dfAjYKP847C8vavxr3don4w7P4bZi7Fxk6z/zBpWvVz7KVAnj0aO5+KReI8t+NGom5866/HjjvPPm6UljMpeCqrBTvdxGyS5k7qUn+TsxtGcmPpUw8Lr/SbdoAs2dH5QkqzTpg2EbYi21eq7dRnbcnqWSjqYqPCbY8AHIDR43H4PXrrcdnp2E19RSkVvcoycoSw/Qi+p2wnVNH4Q3mhPtH3iHGwLdDMj3shlIeFj3myTlVJAYNEsetzp1lpTygFpApfw95HWLXG3bcOKBXL3v32EHqe0JCM6UpCXnEmfW6Xcl3czfi3J5P2m7m0dG34PoB/7B9nxk1+bv0L4wfD3TpgglNPsWI6i91i/Rr8D2qcqWwsoyphGp2hIVarO7M8IVwapfnHNcfpip3t6LNJBobE8CZXZ/BY2NuTmgfdENnAWL4zDDK90vrZSsZnwgsRuOpou2SEmDr1tg0o9cmQ4IUXPHwipCiSHQs2R4553J95DkbNwIXXKBScipRiTQ0gthRoxTXZ80CmjbFkjbRigzen5cx8EW1IWxh5+0yXe/ref/r/bjKh0ZWzlugHA9M+hNWBrw77RJ8PvM8PDL6VnHQWrFCf5yVZA5yrr9wJIjjjhPDv2m7AajPn3aaVc8BAJk+g1zaAIeCy0LBQR5cSYPfJ8Dvk34PKcoJL6qIMIg863Y9uCwdLPr2BUaPjqz9HEYxaF30m6NIHoQ1tDNOI3g2WfIY7rGCK6rtoUOBk09GWfaBSLxhnXqa5v9hWKfW2lR3/pGETgtavY0nx92gutRc4/EkLF+BAk3sYZk2bSJ/K/tZpzOhykH847hhyM5GrZ7lDJF2WOV2m99Kk8SdMTncTk6gVq3gMntG58zhyxUjobSAiRLmZ2WJG02p7WOafIpGebv0y8YIZZjSmwf9Hzb2iCjWlQtjITztzZoF5OWpEnA/O+Fa/MMkPF74O7hvxJ3RIY4IRzAmAJdeqj5n8sx0LjXJB9W0qUk70h8uw/t58TRrN1u2rctatRLzUl52mf3GGcPslu9hdst37d+bLNjxNJMVXAIwcqSo3DrnHDFU8rBhojAekdAr81q9jQlNPgEEAbsXnyR6pE+dKluw/rHoFLw08UpvPofTTfXpp8sWhLQvd4lyPEj0l8nhweWUac0/QgelENhrlH2bOlV+R3lzFqbSY/yXIfdiy9z1ie5G0tC66DeMbKSvyIwXhvsjI8FTRgawYYPo9Tt2LDB7NoAYDgHhHB9SvppGjWLUjg4Js01RGJDEjMaNge7dcXa3p3H0hFWicuvkk2Pfrh0KCkwt/qVHAj4WQp+KLeZ1MYY7h90bddrHQly/s88HMapNjx6WZes7V/Z7CENMokko0e5Z5EgTOoghCg0GmnPPjT6nNyh17Rp1ytLYKayI0gj7tV7O1Xl7AAC9Kn5A+5JfML35h2IfevRQjbO3Dvo7XpkUyb8Z8IWAK68UIxgAonyuSZPojwMAkyJhOdGmDVBUZN53AP7iAuOLFoZChmFaw3uJRK/90hkrhbpO1CEAolGAzXGKQRANCiRjUrlam0ZToxp9gYdG3Wb8XGRmAscei9xiKU1HOJJRVH8syMiQ1x6Et5CCK10IhWQPrpgKlA2Eg/0qv8eZXZ+JnGBMtogLGXiNbV9wBi7o9UR0ZdKAkqONE+yLdmsOK7iyA3WY0EQdtuX7uRvV/TFi3TqgZUv9ax06qA7HNP5M/lvPkqVhzh7jdlzAhJC+aziR0ug9llbvb1RINkHAB9Mvxlezzomu1Oy5r67m2/lK76MqB5fFbSd3fh5vTrmMq6xXKD24GICdhyOJm5sX7pDDujGoxxGl92fzgp0ozT5o2IbW24tycLnHB4E7Zs9V/R6KhC4wwmqj0ratZTtOPAi47gmHvdM8N6YeyEa0axcJfeMS3ZAk0YWcN+BSqRiFnUElvJ4I1IpKbcYi/wIBOQRWaZb43t834k45l1ZRppSLTfJIQYMGKMk6iN6VW/TbuvhiJ5/GPoq8YqE4eI+MafwZdh53SszbqffMnGl+PYFCGMtXTjsWWdygnTtVHlyAvZB2yno074PhN6bXPxMDCSV+JiDT7yJMbBrRNH8H+lV+H7sGOJ/5diW/4txwXlptFUZjZJMmQLduwPTpsgFDKFZikQYNgEsuUUU6iCvx1HJdeilw9tmi10esYQxYuRKMid6Z6NQp5cKNDhkC7P3kBwSXrcL81u+YFzZ4H5jJtejCLOW+o0SwtuNLkVxAFmgF6GYGkDVGht0DB0aUQ2bMmiVHSQIgv9shq3V8vhjGVZvDUzs0jGz0Jf5YpL/eqxMicqg2xb+KIYrDkZRYiCv/bFBHdsY1PNlY/7Qv3qbKOWpZvySvJNzRsvC36JOqOKsWKBVcTscoxX1OowFk+oM4tsUHlg/OW+8G8K1JalvLd/Kssww9ewl3kIIrjRBkBResQxQ6zbUhhQPQUpB5BH/u+0/1SXnS9amOwzTM3Wu4SZzb8p0ohZXsCaYkKyti/uSUli2NB7HJk+WNdrOCHXh2wvXyYKSn4Nq+cJ0675iHkAdX/SD8KK7t+CKWt3vF+oZQCC0Kd6BN8W/qCrwirODymXhwhVGE8Yq3KE5pvcYg4Pt9ovXo3sUnYm7Ld+X497KiThtWAdYKq94VP3jZZQIGSl6DR7g48yDyMkxCFJq1A0FUVIwbZ/teJUbKIDchSjyPD24GU6wTJLhCbLnJz+W1YN7m7//M+OuwssPLpmU6lGwXQ7yG0fY5N1e0KDSiVy9XFusV2XuxrJ39MMTxCFGY7a81VfynNIrfOeEhCtu3B665xrhsMlsZt2snCt7WrROPLcYL1RjI1DOvLzMATJjgyMuAS1lvxEknqZTHhDVb5m1Ax9Ltjo19nOYW1v7KWYEgNvWyCLvL8YKXNM6LjpLgFWVlfDmbvMIgJFnMKS1NvjCBSU5BPudvZGAsZBq+TUkyhZpOMNqoP1rsrMsZE1Q51owUXMLyFajK3av/M/DO7+3b60ZqUQnTL7ww+r7p04G2baMUXHrh+0qyNOs9qQ11rlpBdS3gC3I9XzExytIY9n4+axM2dI9EcTEMURiO0nTCCRQqziWfzzwPtwz6v+gLTsccG3tOYfkK3fOxdgxo0sTYPwIguW0iIQVXuiAI8qRhprEe2/hz9Ch3IKQ96SQxlEO+cSJfI8bXfIqhVV+pT5pN5Izh/0begWYFO1WnZat3Qb0x1gqd/CyICTWf6FatFeTpLmCU3gQZGXKS+gALin+PHQsAqA3qvz6uNtgGMB8zjjFPpCx6G8/wuSVtX496B6IIBMQYxccco6gg+vkLevBMKr1ODNcrgwYBNTUAYvMemKFc3Ad8EY/HgswjYn+POQaYOjXKE9Sn8kwzHpd+XXg6VrRXKxzd5AohRPQ2HkYCGfm505s/li61bqxvX9cZ3h3n4FLgOgeXByj7y7WvdqPg8tqDiyfBbxhBwNiaz5EbsIipDsnLK0ytcXndJ8Ch8uHZCdcCEMPC3D7k75blozxU4vDopKtIzCyMUNzQTqYZGeJa00vi8pAwMQRoeLcvjRdGTTMmqEKJKZ9rLz+/ofJebxGTlwf07YsDS9diXM2n0dfDt5Lntid8fOwm3Dfijpi3Y+fXCsyYgr9PfABYuTJm/Ykn7Yu3ieEjSbGR1lTm7KPf2CZaI2otPiZw51dkAHDqqbLBNbfC0QskjxV5D9yhg37ItIIC4KSTVEadgEn4PiXSRK4U2MvyM+m50yrOlBzX+k38uc+jAAw8uHj6EAoBK/QVGXrPvvK3i/qM/fqJ/w8eLP5fWQksXGjdB8IQHxOsPZZ4GDRIzMeel2ddVg/Fs9Cq8Df8fbiDNUbY66x/f2d9kLBUcNGYHTMsJRaMsRrG2IuMsc8ZY58xxk6Szp/PGPuZMfaR9G+C4p6zGWPfMsa+YoyNVZwfJ537ljF2Vmw+Uj1F4BtYruj3CN6ffon9l6pDBzGUgxGTJ0efk9roU7kFL026mr9Ngx2xoRBQIXg7od2r2DJ3PZ4cf6NpEzcMuB+ARsF1+eViaAVtMnllfOE5c2QvtqOhiKB0Qs0n+Gb2RsQMQSBLgHRFM4mHF3pci84bbxStxpTvn8575sWzo/TgMnwX8/LE+MfgcM32mKDCkyHgC+rnCRszJmpRXpgZyctn1uOoGPdDhrjsMQHoPOdSTiRTtM/4vHmyIYIXmD0HXsiKk8GDS9U+T4jEZPLgmjgRGD1aHmtct63dNOfmRt7vcMLsGDGm8RcAIu/BVf0eQvtikzxzGoJx8OBKhAI2HmT6g94rXzm5tv8/8O60S3Sv/Xbc6Vjf7Snda47w4DOGXyPuZzNsVW5oEIBIXiLGVK+p1fM2utHneO4YfU837ifVZD+SG6i1Frg1aCAb8xDOjH18EKzv4507vJpj2rUDrr5aFLClOpInw5X9HnE3f6cSCRrPXePiOf95/jqMafw5356LBKpc9KrYYmvd42OCuP/t1QtAdJ6rTF9txGPMruBe+5trf8O8PGDlSj5lHGM6Hlz8n7NOsd6U75PCKvqZYPh8tSv+BWd2exaAizWrlAdMVk4p0aQT0RL1GRcvFsd5M/cbwhZZ/jr9MUjzTNw48H45nYuwfEX03LRwoWhgYjRWrTfOf6q9xe8TrMO+6rFypZir2aVcgRRciYNnlKkDcJogCB0A9AOwhjEWHkmuEQShm/TvKQCQrs0B0BHAOAA3M8b8jDE/gJsAjAfQAcBcRT2EWwTBnseE1y/VMceI+SfKyoxj57tsk2cD9Zchf0fj/N2W5dZ2egmARrBXVGQYC/WZ8dfhgZF/VZ3rVLoNf+r4AgAgL+MIWhWJoTZi4X7NIKhiHxNpxOWXqw7Dr4mZNVRUYUDOJYNp06KKuQpjJQiY0/IdlVU1j7VVvOdtlQcXC2FczWfRhRiLUnBd2uefeHHiVQAUi2CdsKdy7aWlwKZNwLx5aevZEE+inpOpU8EK9ZMJy89deEF89tliKKuBA63b0W3MPoYeXHamX837kxAPLkV/TZXpBdJv4WYj6LWCKysLOPZYPgEzT9vaUGiXXgoMGACcf76uZ6Du+Ofy2Qo/A6d2eU4Mw8lJPJSjhuFdUpgr+j6MD6dflLCwfx1LtqGXQcjbkqyD+iGOtMZXvHgg9D0iGXR9PmsT3w1SX/WstQGdHFzKHJoWr1Kzgp3cXimG+yKj3106byks3LRJDjeXzJEj44WfYw7rXvajKoS79udrV7wdV/V7yFkHTH4E+RngHaPTRejEm483HQgLIrt0SWw/nMI7RivSRIxu9DkeHHUbqvP2gDGbhow0aJny7rRLbZXP8UtrtrBBtGbNVJO/S/QYKywENm2y5wXM81t1785tVBqWLYTDunUp26ouoCfUlz7XuT2elI1L/Cwk5hAqKgIQnaNaiXKPo9tPi8/48bGbVO9IOPIBAFHhpTTyDXuPG7QPQPw8Tj2ECF2y/bX6ykvN3LOm40sozT5geN2Spk2BKVPw3DHXYExjHTmPFwQCovG4y3mzLg4GiIQ+lt+8IAjbBUH4QPp7H4AvADQyuWUKgAcEQTgiCMJmAN8C6CP9+1YQhO8FQTgK4AGpLOEFyhCFPOVjsdgtLxeT6E6QnPnMNuNBE+G9Qd9kIZyLvmvnUC4vGcYwtuZzdC3bqmq7MOsIrh/4D7GIoniscmLUUojCtIMxISpkWnjha6rgatsWWLBAfW78eOCGG8Qky0quu0713F/Y63F8OetcW+/R/SPVLt48t8oL/jihDVFoJPjVKrhyA7VoUSgqp+VNh5l31qWXAg0bAoxRqCIP0BWem212BgyQN1Ro1kw0qOANO8j5zJv9rsrnbEjV17JVppsQhdkmCak9Rycvh6kH1yWXAJdd5i5hfCKFKXbb9vvFRNmMAVVVsbV8V/RNfg9atLDl/ZqfccTrXkURfl7P6fFvZPmTIKyfB7Qr/kU2SgoTz/Hcaig6vt3ruH7AA+JBONyQU4GMBwquRrm7MajhNwCAJW1ej1ww8qL0+4GTTzb24NKctmOgZ/Y7aesJz+06BU3PW/ZH8QF4w1ilLYsXI8tfh63zzzQt9sGMi7Gu63/kYx9TPx1Tmv4Pp3Z5Tv3b+Hy4f8Rf0Ltis3kfSGAfjVOFeCqycKG4TmnePNE9cQbvfuy44+RcnwUZhzGzxQfypQzGsY5Md0VngsgOh7eW1ouGa+r27SNGYxCNp2e3eNeTPvCuG0c1+gKtCn8FICq5FrV5S11g8WLgoouA226LnJOem7LsA6JxCYAGOXtV71uAhYzld0oFl858afVYdi7dphrjw5EPAABDh6pzG0r7QeUcnq5RCJKJTB+fBxegma4dzt0jG30ZpUhmMPAiTND6QM/ooGPJz5EDGo9jhq2dO2OsGYDuAMIZWNcyxj5mjN3JGAtLPxoB+Elx21bpnNF5wgsEge/97dtXFA527BjzLiEnxzjMg1kydoMPYpp/xSgZ9bBh4v8DBgBAlBdUZc4+436YdkLdDx7ByHdzNthrS4NyoLx+wAN4ZPStruojkhNLD65LLhFjfYdjRytRWPfJZGerFpTVubvRtvhX2xOrXSFOg9x9eGuqPSs4N6hCFLIgKnP24Z5hd0WVm9DkUwyr+kpXcE05teKP3lNl9GgyJgCLFsV2UVhcbHpZ+Zz1rdiMMY0/j/SNE+W8M6L6S8xo/oFJ6dhjauiRmWn5nRhSVSX+n2ZhQDx7/BSKB9kDomFDW8L++a3fxvFtX+Mq62dBjGr0ua0uApHn44Je/4q74UKskN/XBG18fRpDCxmpP43yduNPnV4UQ+Gdd554rahIFD796U/2GmvSRPxfKQSySWn2Qbw6+UoAENcPgJhzy8yLsn17w3WMyrCBaVbQFi+Y2VirvPLa5Mtx3YB/GBS08uDip16vGpo3F/NUZGWhUd5u43I6yhYG9d5JVwjp82FOq/eQG7AYd0jBFU1enrgHnjDBsmjKk5HhfJ2SDNTUiP238kCrqhKj5SB6HCzLOYhdi06OTf8IU7LCnqnS3FWZzSdbGlvzOe4cdg8+PfZ8/sYM5seAz2BNoeHyfo/imznnGhfw+aKjmGhyegnLV6BpwR/67eugHOeNvLo9IxAwlgkSMSM3cFQla+pdsRl/GXKvZX40N+O21mPMMFKLmVNFDNFbt3w68wIw8L2rhHO4RxnGWD6ARwCcLAjCXgC3AGgJoBuA7QCu8qJDjLHljLH3GGPv/f67geUdEY0goCTrIAALQduSJcCf/yzmmIg1jKkT9SoHmKIiMfzPlVdG3xe2CNFYq7Yo+B2rOryk39by5dFxeSdNAmbNEv9u2RK48kocCUY2+F/MOhdX9nuY73NYFrHeXLUo3GHdlkkXVnd4GRu7PwkA6Fz6M1oU0PuRjig9uLyyDG5esDNSP9P+YdUhsZyTnFp9K7fYvscpWg8uxoDjwpZpkyaJ/zOG+0bciRcm6ucEZACwQV8RrafE5vkKx9d8giFVX1sXrKd4blnn9+OliVdirF7oAp4fTBIeGFGn2Jwp+/77If2wilp+WXC66A0MAIKA5ydeg2HV8X8+lHNWzKwbTz4ZmDEDmDs3NvXzYNd7xYbHVuO8P6wLmaHom4+FRM/RmTMRlMayt3UMBLSeqe2Kf8Vfh/6Nq7kGOXvx32Ous91N5fORdt4qCsF4PPNGGiqVtUqooiK1h2r//tFe2laUlwPnnit6OHjASZ2exztT9fOHack0UHBpv2k7zxVvyaLMQ8gwErpZKETsKJlthYdPN3gVSzpzb8AXVIfK1ZuHJMXYy9vbOukdAMWzVR+FSXPnGqcNIJKHjAwxOsTq1c7rYAzFWYcMLweXKfLaeKQQLudU5KQknAYhL028En5fJHx63Qkr0bzAQN4jrfmUY11uoBYdS7cbN2CVg0tiSNU3GNjgW/PO2h0DzzxTjBZjZqQW9u7K2h9dv87ndZyDS2ctz6DjNcZYVF5dsn+ILcLyFcgO1GFE9Vf465B7AYgeVie0e93Ag0s6V1wMrFplv0GpTjkEYLt2+uXChjUJegD6Vm7R9WwXwuqX+rgmiRNcowxjLAOicus+QRAeBQBBEH4VBCEoCEIIwF8ghiAEgJ8BKE36GkvnjM6rEAThdkEQegmC0KtCJw8KYYAg4Kf5Z1uXYyz+yWaPO050yT72WPX5qiqVq7ZMaSlwwQWii7SC7EAdbh50v34bjImxjZU0a6a2GpTayvSJruTtin+1letCbkeHeLg/96z4ERf2fgKAKOSKRa4vIvEoPbiCnO7eVoyr+Qy1J4iLCFlRwzvhS4ngbQk2Bw2y0z1PUAonVZbEJSXAxImqsozBQMElRKzd9Tj99OjyFjw1/kbU5O2yLFdf0fsOXUXUCgQwtPob56HUAgHTV8ynUQyF+1+evd+67rIyNMjdF3n2EpUQ/corVVaUMcvjVFwMjBkjenMnihjE2Q//5l/NPhfn9/yXeNLJBkoZ3sUXAubNA3JzZW/tPjoGAma/1QntXsX0ZsbegDkBZ++ESsGVbsJ8Rd7VnMz4WXkajjGMiaGGvaZRI8/ehexAHXpX/sC1Fsn06YfNisrBZeP1MffgsghLtGaN+D0YCZI5PLi07aed0tcJc+aYX8/OVh2+PfVStCzcoQ6VGx7bNCEKuVi9Wvxd16yJulSdu9teXQSRCHw+5wLPmhrLQVQ1HoZCcg4mp/Rv8B1+P+5064JJiDKntCGcv8XQ6m9U9/h9gvGcIP1GjfN24fXJ3hichGlWsBOvTbnC0zrRooV+tBhAlNNJfDtnA85QhJ+VkT5veJxvU/QLupX9FF2OByFadmG0lxevmYdFJLynMPMwjm8nhrCWv3HG8N8J1+CEdq/K5eTfY82aSKQPB8j7WGVoWuXzUF0tdUwjH44jpp7tRMywXO0xxhiAOwB8IQjC1YrzyidyGoBPpb+fADCHMZbFGGsOoDWAdwC8C6A1Y6w5YywTwBypLOEFNsPlxZWBA4ErrogMNDw0aGDsZWa0SdEu7nSUZ+NrPlHFrObCaJGj+s5ji/Y39bNQzHJ9EYlF6cHlpSt/OHyAvOjj3exPnAjMmGHPun3hQpu9c0/YKkxYvoIv9Kjiva6TBMpm+xm/LwS0bq06xysw1n53fp7NVT1BN1y2mxFVJ/66U3Yedwqaazxle5T/KHsvMAiylWfD3L3WFY4YAfTpEwkxligFV0GBKlxvWsen79dPXINYWQmGDaoaNDAv17u3/KcPAs7q9gy2zD3b2W85YgQwdy5OaPcqVrV/WX4ZlJ7mWsx+q+XtXsX67k8bXs9xqPT1sZCceDytnpR4RTPQQV7T6T03ylDDiRojeOAQAHYr/wnX9o8OE5jpV8yBNoW6ZqWV477uXqhLF+Cqq8Q8prqVW/dFO7fE0/MvaRkwIBJKUw9pfA1vm/SU9/LYpnLr4lyntmsn/q46Id56ru6LoyesAmbP5quLIFKJ6mrgrLP4ytrw4Bpe/SWKMw+46FhysqnnE9i9+GSusrbtlqTxyvC2/v0BiD/DgIbfu2zMAV55jEyapFortyzcoZ7TNYTH9q9mn4fmhTujrh8NcuQL1FFwATD8TEeDEc/3xvVYyeBWka3HnUPvsSyjnM9HNf4SNw/6P3w9+xyxT24fdWmNrPUGDGgjBqxcKe7ZTjnFZYPe4zPJWUe4hycz+0AACwF8whj7SDq3HsBcxlg3iOP4FgArAEAQhM8YYw8C+BxAHYA1giAEAYAxthbAswD8AO4UBEEnhhDhiGT3v/XyJTaqq3HjyN+zZwNNm0YVeWr8je7aM7IUgQDceCPw1VfA7fabsIvfF6JNdRpg9guKHlyRyTvbfxRl2Qe8eZd69hQts3gIBIAhQxASOBIYJyPKsdHgXd5xOF88ZSK+9esIlvMCRxx1qVfFD3hr6mVgt99mXbge4mpskxROWos9xgySz+oQfg6KMg9h8z61JzljEL0XIHlwVYj5JLksQnNzgeOPjxwncN4O1pcEzH6/6EVuxYknAk89BRxzjHm5448H+0hcuvqYgEx/UMxFEGxsfp8egQAwbBj+cs87gK+7fPpw0HhpbvZbGSY2l8h26MGlfGvSylulpCRhTWeHlY1WCqwUV3DlBmpxUucXcPKbauWC9jlWPVcWQlizeVqZ28vwXTF10Q0LKPmfc1qLS2RlGV8z+M5DqnlI51k3yBet68Vn9LuOGoWMoUNd5aAjiKSjRPI+PvZYcS1hZ29o4VUvLF+BYIjhH9/3wvwXTtAtk3TG1Jxk+IJ80XsYsx9OT/oNdA3sLrwwKpeVCqO5nlOhExfOOw/44ANg7Fj96xwhCvVomLsX/xp7IyY9u9a4UDjUKuea6LBkKHZw6VrH0QsIfZa0fQNLX15kWsan8cjO8IXQuug36ZrLsWPQIOCzzxB8XP28ReWBKy8HTtAfvxKNae5rwjWWI7cgCK8JgsAEQegiCEI36d9TgiAsFAShs3R+siAI2xX3XCwIQktBENoKgvC04vxTgiC0ka6ZJ7og7BFHb6KEY2TR16sXMHw4sG6daBlthlU4DZ62FYkRGZMs+Vu1clavTfxMoKExTVGGKFRu/u8dfhc2z13vun5BYGLOOpuL5HDYLG7ivAgvyDisf8FIiaDoXzg0jqnwWEf4kukPyiFPzaB31R5GAkOuJ6pLF6BFC/0Npl1PAYvi2nCFtjHb7MaYoEEusXpLZSWweHF0cm0tjMmCUtWY4CaJcZ8+4vpFom3xr6jJ+0PMX6bB6Ld6cNRt6Fq61bQZpx5cjAmR0G3p/KjE8cPJAhcrYY3f5rwbazSh5pzw+3GnRp2zoySS3wGdvCAZCgteRwJYSfBr1h8KUajA5pyq/a7ChiglWQcwoIHk0VBeHilQUQFccQXaFZvkqOGBlFtEmtFuXDMxr2JYCcyT1iMst5g82TKXo98npF9IYiWLF5tfD4VU+977RvwV67o+a36P5BmsO/MoxzU9ahOkhLETXam6WozqohxPzdZN0rXSLHNPQMaAiU0/MS5w4oliuHNAtWZiMDZcnNbsQzw6+hbXyq22Rb+4uj9d2dTzCYxq9LnhdVmBo/N85AZspofRkpUFnHhiRAEtPQMBFkwur6hp0wwvkQdXbKEYZ2mIWXz6tCYQEBVXZskww9iJxa4cgJTChlWr5M1+rAWE2jGQQhQmN7NavIef5kUnluRBGaJQKQwIsJCYMN3lhOh0fJjZ4n0MaviNdcFIQ47acUqU90KzZuL/HKGIwu+vmUAsyvVd4sgJJhZnhCNcWcQHAsCZZ3oSc131PBjkbPMxAW9MuczZ415WBpx6KnD++Y776BRliMKY5eBKc7Q5LbziqXE34MvZ5wI+Hy7u/RjGNI4EOzD6rWa2+CCS6FyHGwbcj/tG3OGoP4LAVAo4ALim/4OO6koWdF9XQZBzVcaanPAG32gtGo5A0LVrXPrDjVJYYUMh2K8yEo6pPJsz7JWUJ+atqZdGh8Q57zxdwZzSgpcxACNHcvcRgOjd3qePdTkFaa301RAOMSTDEeECgPwlqTwi8vJkAfofi07FyEZfAvPnA23aqO8tLCQvOYJQcPAgsOkCpjK0xfLl5vlsiooi3gz5+ZFQ2SaYKe9T3jDKauBu316l4BrV6EsMbPCtftlwRJSmTYFzz3VmYGdiJPX7caciwyCfpe12wkydKoZp3riRr7yT9rKz8eO8szC31bvu2igtjbSjCBNu1n52oA7Tmn/kqtkPpl+Evwz5m6s6Ug3eFArn9nxS9sgyRec982o2jw5RmGRKo3HjgKVLdS/5bESVIexDEvJ0IZnDmHhFeCAoK3Nflx0Fl1KppRyMGjSQExozvetaPExyKCq4aGBMVooyD6Fx/m7LcnoKlfCGQkxUqyjr0WbC6VNzx9C/4aWJV+HsbsY5XlSEFc1Nmjhs0R4ZWgXU2rWiwnvePP0bwu/qkiXyuyQrRXQWZHohCnlJayvIGBD1W0rYscjXjo927q2TFs2q4VznmQgLU/s3+D7qGjdt27pKsuuUehOiMAaEx2jV8+HGg0tDdqAOuYFaICcH67s/jTkt35OvRf1WGgtBI8OXAQ2/Q03+Lued6tIFOO88+bOf3Pl553UlAbrPvCBEhziJEbIFq1JAqeTkk8X1pV0FTayYO1f9P2BLs/Pm1MvQNH+H4fXwczWk6uuo+vtWbsGStm/IuSRCAjO0Oj+72zM4vu1rACQL2VmzuPso3uQDjj/e1pxdnzy4TAVaZvsfKdfdLZ8PEY+zs4GNG6O/uyFDdG+vT98xQViRk6Pj3FteDqxebXzTmjV8Xl6AHF3AbIgPpLNhVMeOwOLFKgVXgAX1x6GuXdXKwkaNoopwrbHrDBRYgoDy7AP6OQrd0LOnGKbZrZe4WX86dULN2A7wLV1s7jFox0qke3d1vkevvg+pD4MbfiMbcBVkHK5Xc88vC06PeFJLTGzyMT6cfqF83LroV/lvs3WS/L011oRv79fPEwNUAKjT5KlPyjGpoEB9XFMDgPbdsYYUXETqsGGDmOjcyq2cBzsKLmXCby2CteeHjFXYRBMYBJWVjY8JpOBKYtx4RCgn7GObf4A5Ld8BoJi4nZgLn3GG/GeLwt/t388iSrdL+jzGd8+yZcD48eYbLg9Z0uYNvDDxqsiJggIxZKlRrPnworhfPwQLigGow7ZpcbMY0S6Q6c01p0HuPnw/x104TjchCr/a3VD+e0bz98MViv9LYWjntXobM1u8L1rCAqLnWAqhDlGYhJuCJCaQ6UObcNiS1q3F/3v08K6BGTNEhZIkEFAm4I6aW8aNA/r1kw9jti5golIhXZT1WQ7DNdphUMNvMLnpR7rXijMPAevXR29+w+Tmis+AnbVqLBk2DLj+eqB//8g5m2PewTqTtbTEy5OusixTmGkQjhjAyEZfYlOvfwFwN8/aEcDQWpyDpk2BGTOwr1Zajw0fDpSWcn93T467Ec9OuDZ2/SOIdMArYb8krzAT7vt9IXFeSDH8ir30RzMuxLCqr6ILjRgB5OWpFFx+X0hf0tO1q6zAD6P93vzacGR6kYaMFFwSDXL2oiJ7r/VvzKvE9CoHaWWl6GHVvn30NcbEHLj9+pmvZTp3NrwU5VHEjA1cvKBv5Wac3Pl57F18IloVOZCXuOSyPo84jgBkRFHmQeRy5AxvkLsvak4uzDyEbuVi+PP3p1+Er2efK1/rUGIcOlgAxJQx2t9KEDC35buY2ORj7v4bERWi0JdkIQr16NIFZ3R5Fuf2eDL5+5rCJMnOiXBNfcjBVVMjunoaWbzaQbMYMSUQEENIXXihYREu7xq3A1lNjRxruzp3t/3kp0TcKM46yFVO75EozDyMEdVfAgB6VvyI+0eKYaUqcvaJBZwouFq1AkaMgLB8BQY1/M7+/U4oKhJDIHi1iLYgO1CH4dVfWxcMo0iI3qL4DwDR7u5eof3FSKFggSCgeeHOqNN2hlDbOeMUDKmSQnEWF2NI1TdomLMn4iW9ejXQrRvuG3En2hb/CixZIoZUWptaoSr7VG7B/434KwB33on1Ed+qFfhqzQ1iXoA//Qk47TRvBT1jxojW1pJlrfJZtlK08wqMV7R/Wd5Ef3LsJqzq8JJ8rTjTOIScV5aXiSZTz0tUMbeWZe3HK5OucNXGpX3+iSv6PhLdzPIVYl6IcBjCVCE8Z4aNtQy8bYxY0PodzG/1tu61gF5YHIPIFNkWysmwwVm8LGTrk4V3FDqTcstCAy+vMWMiHnrSfbzjVeui39C3cnPkhNYqnCCIKITlK0wF22VZ++W/N89dj87hPJ6SR7rZCJqqoa3leaFhQ3Qt24rZLd8zzPGnXHvl2cgbFL3n05xZuRKYMEGdl8tig/PO1Evx6cwLjAusWwcMHCjuu8249lrgyiu9y0uYkQFcfLG4HnbK7Nm6OWdXd3gJfxt+l+4t7Yu3oXPpz3xGQJwyv+PbviavUQoyxfcm3iGIG+XtRkXOfuuCNvj5yf/h/3RClC9s/WbUuahnVzpzcqfn0L5YnY9sbccXcdQgrHdI8ImKXO1zHQrhzG7P4l/jbuL/AAbcM+xu/GvsjXIbRtFfkgrGcHm/R3Fmt2dJwRVDSEKeLqgUXCSsMiTsit2li+gNNns2331VVbLLvgrZg4sDFwOZcnEkLF+B0uyDUa65APD8MVc7boPwjmw/Z6xsHTL8ITw/8RrVuZ/nr0Pfyi3iQSISPmif3WRPOjFpkvG1uXPFsEWKxX15jijQlRVcMf58pFCIPad2eQ4buj8lH9sZfhvl7ZZDMpzY6UVsX7gu8kzk5ak8ZlBWJio49KwXk5iALyTHxc/xu0z4W99o1kzc0HfsKAr927SJzUZFqlOt4NIRKilCvxgJjOWzUk6nAAuhKPMQAKBN0a8ozxY31LUnrELPih/l+woyDqGfImRJuqwvs/TmaMW4n5dxBIOrDPJt1HdmzwZuvtl2uPCr+z+Ev4+4UzyQ8teGyfTrCCZ0vNtenXw5TuvyX6723DyrdjwVyYMrwr4lJ+Kqfg8bXm+lUX45Vg6WlDq7jyDSGZ11iDw+6exrvp+7AfcOE8fkZgU7I7KGggKgSxfTcdDPQsm/F9TBz0LAOefI89fKDq/gi1nn65YNr71enXw5Ar4Q97ygLRelDCwsBKZMEdeRK1eKMiaLcPoNcvehMmzoqkfLlqK3lGZujSInx9hz3Ck+n7WiyWyNnJUle4ev7/YUXpSisRzX5k1xn6Jz73vTL8HrUy7n69/FF1uXYQx/Hfo32VspTPVwgzzeHvH65Mtw86D7AIhKZqf5yh4dfQseHHVb9IVJk5A3qr9uHvF7h98NAGiYs0f2ZNSGOQ+PCdcMeEg0zALkZ5UxiLnhAdEob9kysd5hd2JtxxcdfQ47dC//CRObfiIfJ10OLitSqa8pRmrF1CGMScFFRkK49lrxu/L7DRP/2cLnw1+H3IuhVV8DGGQ+WHmh4FLUoedtMqKRjqs9EXd6lv/g/Gad56Q6b0/kwOm77ibUkfZeD/PNeE7btsDEicbXDTwtupf9iAY5e8UDve/Ywfs7vdkHUnXqe5PFgysvcBgH6iw2Q4nA4Lu2I7Cc1PRjTGr6MS7+cIJlvXp0K98KCEWRE2ma5/KD6RehU+nPABYkuiuEFmkcUim49N6Bnj1FT/Nbb7X2sFKEmPNLG1Nl3qmAL5Lfc3j1l3hBNraYL7afJsp53RCFinDUmbwJ3U34cX8pGpgJpFIZN3k7srNVYZMBjeVtOG/WjBnAoUPARx/Jl+x4oLvJW2p2p/YdTI83wgMYQ37GEV1BWhh5LSTNxUEbykFlSUlPTxCEEp29i6xE1ln/FmYejgitoQhdzRiwZg2Eh+4xbCpVDfV8TBA9QHdZ5yTNzxC9eMLzDq9CXvvNmO5duncX/xmh3X+nqlCcQwF25PjVCPhC8jrT7JPmhp9bq++jcWM+Dy6DelqfMhFC9xfBRgy3rsMBpdkHZO/AZgVi5BKevW7fyu/x/d5y/H64UKwn6wD2HDVIyQDj/LwA0KdyMx4fe4tUTiuv0OmL9rc8+eSIkefvv2PhY49Frmm/1+bNgXclJZ7HsuukzMGl/fyp+v6mGOTBlS6QgouPzExVaDLXMIbj270e8zi9svWPYmDsXv4TxjT+LKbt1jeiYj07QFi+QmVRYobuIiZWk5+b0J6ppOByIngTBHww42LkZRyVj5UsbvOG7SrbF2/DI2NuAwoKrMNVJIj9S0/SDw0VJ3YtOln/QgzyzjAI9t8t5XNg9HeK0738p4gFHpFcSF6mx7d7Xbay9uv9Vj6fKCBZt87QwphBEDf5incg/JePCSphVbiOFzSexEB0UudURTdE4YwZsqd+WLDlhunNPiTvHj1WrYoKMScrFNesAQYNEv8uKBDL2iSs2NJVBnNi6rmgeQfTJS+dFR1KtrmuQ6uAP1ynCJNVau6VFV4vH1q6xixiPEHUX3TWpiHBWMEFqJUxdZqcNmZL3ZT24AK4ZEFX938I383ZIB/zftxoDy4X31Oy5OF0y5gx4v8jRxoWyfQHVftjrr2y1b6Od99n9D0z5r3HmwI/ExytVN6aehlOV3izZ/qDUfPr17PP4QoH3LboV/lvbR26BrnK72rdOnUEE+337feLRscDB4qeX8NjoChMpRxcSlKprylGmoyaBDp1ki1A3FgtEjbh0Mz3rtiMZ8Zf50opoKfgqszZh2cnXK8uqAi5OKP5+3hv2sWeJHKsDwjLV6Bb2VbrgrHGSkHj1JNk2DBgwAAxZ4xdtM+1RTLchOJkwWCxa7lr2D2265UX5hUV1uEqEkgiZ4virEP6F6R34PXJl+H4tq/Jp91Z5Lt8LtLUg4tIYrKygLVrUZZ9AAvbiHkBTIX2LVuaP+dXXin/6WOCymtG+bfZW3Y0lOGJIUii0Q1RWFICnCnmJVNatTtBWL4C2YE6HHWRCzCtUApEdOZbWeGYY2yBbBc3sgM7Hly7jtjI6ZuinNL5OXw2c1O0cFLnSzb72rVroeHVX+GuoXeLB5s2Gd+oUIhm+evSRuZLEF7z2czzcVa3p+VjKwVXO0VeHa0BS3g9ISxfga9nn4P3p1+Ef465GUBy7WPsIO/NcnPF/fC6dWI+LB3yM46gReEO+Zh3H3E4qM5v5Uouly6DXYsWwPXXRzy0tWiez009n0Cnkp+t67Wa6HmNXvXqCStuHChyBzb4Fr8tPM2yXIAFMa3ZR7hFClMI8D9np3X5L/YsPgmA+D4q59dWhb+iddFvCm9p9XMUzs23a9HJ+HPff0batmuw07Kl+ljve5w0SQyfOXSo5VrQDUnpwaWFlFpxIU1GTQKNGonCayK+cCw8upf9hLE1n7tSCnB7fEgDZ/OC3/Hw6NvRs+LHhOXM6Fr2U0LadUNx1kHvKnOaQN5KEWoVX9uIjAxg0SJVvhZutBNyMntweaHg4l10mbRl9s7S8kaBXu6qBWK4vAENv0eFyxBfV/Z7KHLgxoNLKXht0UL8X5kgmiBiQefOqkOn3p+/HipUbfQzfEExp8TyFQCAEzu9gOeOET22osIfa5J/J7Ngq03RL/hi1rmW5eRwtFqkMcKrz6j0UJnY5GMcWrrGk3pThlatxP+VihEdYwHD3wMALrpIzJvLydGgGH3fVQ4uk1la68H1168GOW6Hl9zAETTN32FdMEb4WEhcO06eDADIzzjMJbzTov1FsgN1WNz2TdF7SxEiNIqzzpIty0k+RBDGdCjZjlLFXtZUWL5gATqXbpPXAXWCtEYIe3ApirYu+g09yn/C1Gb/AyCNg6nswQWIY5pWQG8C76c9pFFwuYrakS4hCgFzrznNuuDcnk8iOyDJzczkZ1YKLLN5xaR9DBzoyIM8TIYviIqc/ZblAr4QCjMPY2WHV+RzvK+V3yegMPOwVE8QHUu2oTp3FzJ8dWha8IeqrNKD69TO/8Xvx4m5o4uzDkWezzZtop5x3dCGZt+5HYWsV4ajUpsp4cGl7F+y9zWFIQVXOiFYx6wlPKa6WlQcVFWJxzqDlV7+LLvIC7JevcT/O3aUQ+mI14P65RHtbhwPOpb8jI9mXBT3dt3yyOhbsX3BGdYFeeCwGtK16grH4u7RIyqMD5YuFZPTJgJlDOtkVnA1aGD/Hh4Fl97727GjYZXyex8KRW0wQ2DOFZUek9D5omlTYPny6POdOiEcg0hpTeakr6d1eU6618EG0+cTE0B37QqMGhU5X1wMXHWVucU5QcQAXc8jBeGh6/s56zGj+fvy+fYl21XlAhohfX7GEYxs9CUA4ECtRggRDi0D4ImxN+GJsTcDCxbg2zkbcErn5+x+hJiS5a9Du+JfTcsIy1cYe2hJG2W7Y83T46/XPX80FEl17GehiMCmvrBmDXDCCcCUKZE1q47xz1+G/A3fz1mvX0dFBbB6NTB3LleT4Zx1Wit6O5hZMWs9uD6ecQHO6/Evx23xMLz6K2yZt8G6YIzwQRC9HSRhIYMgCu9s7mvO7PosrhvwQPQay6qejAyE/JyCSoKor0jvlTK3XUgTdlDF4MGqQ60HV1AvJHFAnNPMjEBO6/If7FtyIk+P445umGdJ0K6bmzPMeeep5oWTOj1vaLByz7C7xcg9Em7C5aaVgssMIyVWu3aiEb+WQYPEvVlZmf59K1eKMroFnPmFa2oif48aJd4XVsjFUJEb8AWBU08V971z5wIXX4zsBkV4aeKV0WVZECOqv0TdCSujrlXl7kGb4t/w84Kz8OvCM/C45Gmp58GV6a8Tc5hpDUwLC6NCGermo+3UCWjTBhg7NvqanefT7fc6YIC4H5cMATNM8n8mDaTgigsB6yJEqkEhCuNIdjZw+eURCxEdpQZjgphUccgQx834fdJv2qePOGE3bAjs2QPcfjuE5Ssw87/L8fDmnpHyimcgyho7DiTLkN2j/Ad8sEMtTCnP3ocdh/XjKRdlHkaRZA2j5cyuz2BUoy8w+qlTPO+nihkzxIVDx47i5HfXXcAHH4jX+vaNbdtmXHaZs/CG8WLjRuCtt0RXeLvwhDDQW4gsXaoK+6UqHt7Q6Czg6kK+iLI6wSR0tujd2zj5r/SbOM5hM3Ys8OyzDjsmkZdnnAA6P99d3Ymma1fgf6IlruEGkUgqXp98Gfo12GxaJqxMb164E03zIxac2hwQhqFfxo/HnvuNw8RNahoOedwDLQt3xGVD2bP8B/Rv8D1u/Mw6dr/rECWSMEk374AJ42r086EqQxSq1uanxHgdkSzk5orjPACcfz5w5IjumF+QeQQFmSZ5zxgDioqs21u9GsFLHgEAFGYahMDlwDREoeZdal64E+f3+jc2fcC39nhx4lUY/m973k+J9pqUFeKyZ4c0LyvXThzCqo6l29GxdDsgjLfdh0TsZQgiFZEVU61bY0T1l9JYWGF+U00NHh19K3YdzQUgeqXqGgmcfDJwszTXGrzzfiYgL+A+j2Us0FU2SZ/jjiH3SnP5UvX1CROA6mp53Lu492NY2PotQ4OVmvxdqs/vyoOrb1/gww8jx+kqFM/LUx83bQqcfbbx51240Lw+o72bEZWVotFiYWH0GsWGImbr/DPR+L7LRMWVwhBdyQW9HsfC1m+j+f2XiGvztm3Ff2EyMzG0+puo++4dfhdmt3wPvnWniwbQmzcD114re2CGKdGJRhTSMxbt0AF49FHx7+7dgdmzUXheJGTpixOvQvfyH0UP+o+ltf+cOeL+9zSDNYwdA+iASzXEcceJ/+8Qvdv7Vm4BWAd3dcYa5ZrJSc54ggtaLaYhlNQ6zuTmRgZpPQ8uCMBZZwG5ubhp4P9hebtXospYofICq6kRvcbKy+WcW0GNhZbSQknXAivGJIuS9f3pl6iOt8w9G1Oa/s9RXW2KfkUHjRW8KRYLounNPlAJIGUyMkTvrawsUXG6dCkwfjywIXHWuwDEvrRpI/7dpEli+6JHTQ0wc6Yzz6hweNfwYph3MZuXp/bsUaDc0Ghrq7OZl6Uo08PQmUpikezVDhwbNUe5swBg+vSIZ62N9gCIC/fmzfW9y9KF448H1q4FzjtP/EckPQMafm8pKFFevbD34/hpnphTSikg37v4RCxo/bY6xObGjcC4ccAxx6Bd8S9oUfC7eWc4ktB7xeyW7+GGgQ9wlW1d9JvhtcENv8H+JRZGGrKCi++DFWUeRH6GvlEMIIaoXtbuVfXJqVNFq+T6ht9vbNAQxuyB4nnYunZFXYkoyC3PPmCjc9qmnIUf5mFY9de279EqqONBfsZhWXCmVbDJ+wqlUDLGwpqCzCNomLMnpm0QREoje3BJ72d+Pp475ho8OvpW6/VvRQV6V/6AMY2/kE8tbfs6Hgt7ggDAJZfIxl1m46CPhcAYogTvyYCuB5f0vWX7a1GmN29oQqmt7/40avJ3cbU3sMG3WNr2ddv9lOneHThXEXY5w7lnclKTmQn8+c+R44KC+CvzGja0XqMYcG3/f2D34pPQKG83AOC5nztER+GRKM06iGYFO/HkuBtQka0Thv+EE3SVYxm+oPjelZWJso727cVQimZI76vSQEQAxHxoBQpj75UrgcJCPDr6Vnw3R5Q3dS79WTT6XrVKNHC+5hpruUE4sk11tXGZ8ePF59qtLIkx+V/tCatwepf/uKsvhrQr3o4XJl6lPkkKrphBCq4042/D78TFvR9PdDcIBfL87PdjdceXMUqxeOTFakN9df+H8OyEawEAzx1zDf4x8i/ihVatcMvg+3D/iL/YbtMNRuHATuvyH/Qo/yGufVHStOAPVx4r3ML29u0BQYCwfAUaGGzIHxlzG18i+4wMUSCWDEqlZctES7bVqxPdE2+ZOFG0SlwqWe3pCdJyjL0a9JDf2T59ooRltSE/t2TYz4LYvdietf9nM8/HjQPv1732yqQr8M3sjfhm9sao0Bd3DLkHS9u+hprC3Zja7EPd++OG9P24EusxjcUa72apTRvRKMFsgZ7qZGWJYR2qq83j4hOJ55xzHN2WG6hF4/zdANRriILMI+KroFRw1dQA06YBGRl4bOzN+HzW+eJ5I69hrSeHQ3gEYO2L+QxLXp18Oe4edrfh9YAviLyMo+aVSBvOHLNQRRI3D7oPP8w7G78uPN2wTHHWIdw+5O8AksezPWXhtAxuUrgbfSu/d9WU2bzz1m/NHder9Axc1eElvDDxKvSpMPfK1N4XL5TGktqQprJ1+qxZkZPSu8MVDjgspA2HlA7najMhKxDE9oXrrOsmiPqKtKZXhsYNy4ANWb8e6NdPHQJW2u8UZB7BlGYKo1CFt3+d4EvKHFw3DrwfXUqNc4DrenBpcwFpP5e0VnLycR8ZfSuWtX/N/o1KlHsR3pxSqUhJSeTvZPJU4/jhM/11hhGAlJzY83VMafoRAGBCk0/1P2bjxsDZZ+Pg0rW4sFdEputjghj2Wfk9ma2LRo4U320AhRkaj/asLN17y7IPoEXhDnQp/QkFYeMtn08MS8ij/GvcWFSErzcIOQ2IMq2VK737jX0+BHyiUj2pnhuJwoxDmNbsIwwPGzfNmiXmM02SVBXpCCm40owFrd9Gp9Jtie4GoUDemDIGjBvnLhazFmlR1qxgp2x1NbLRl5FnoEsXtCzcgfFNPvWuTQ6M5pc/9/knupUZLzzjgW7CzDAdOojxfHVgjHNxW1kJnHSSfPjV7HNx97C77HUyWSksFHNpKBdX6YDfLyolwxsHvR96/nzu6kY3+hwnd3peXIiOGKF64+8f8RfcNEhf+aSHE2vx5gU7kG0goB1c9S1aFf2OVkW/R72oS9u9gTuG/g0/nnQ1/jnmVu72hOUr0DhPxxtRh6fHX4/pzT7gqFRScKnCKtj8LhS/o67VJkGkAo0bc3tbluqEJgGgPx7MmSN6Ep15pup0hi8k5voaPDgSAsSAWIu3Di5di4lNP+Eq2zBnr8poZGP3J/Ha5MvlY65tL2P45NhNuGf4XcDcuXhn6iWGwrJVHV5BUeZhMZcBT9XhbyuZc1gmGjPhRNga2iKsTUHmEbw19TJX3TBT3B6uc25BH1Dky21d+BuGV3+Nt6f9GRf3fgz/HHMzHh6lP+86Cb0pLF+BwQ2jwxzxUpolejL4WAh9KyUlHGPoU7FZzNd32mnq9XJuLtCli3ne35kzRWFteDw78URR0DNvnnWHyNqZIMwpLwdatsS4mk8xvkYzbxqNrU2bAkuWiPu7FSvEqBQdzMN8PTP+OlzW59FIVA8N8rp95kx8euz5OLfHv+1+Eses6fgSbht8H24edJ/udTMPrqjjjRtFwx/JS6ZF4Q7ufoS/bk/CODMmjp2zZqWvB1eYsBK1U6fE9sMmBRn6ITn/N+MC5AUiiq/rRv1LNjwzJTMTOYHaiJIJ0hqySxd1OW0kBqXhquJ5mdT0Y/ww7yypHonSUlH2ocnFBwD/O/YiZPodPrtlZfF9TrV56pKM3YtPxsW9H4ucGDkSOOaYhPWnPkA5uAgixqiWlNOmYcpTq/DetIvR658ehJzTCkqUVkjLlomh7h59NO6Ww0aCaD8LmYZ+iQcNcvYaXGgghuwysTrhygHg96u0YUWZh9GphJTOKc2qVUC3btzFbxl8H1oW7gDazI9aeM1p9Z74h6CTNFcH20od2NtQ6QryOBaLC1u/iU/+aISPdoqehbyhccfVfIZHN0uhIM2EmR55iIQRBYskICNSFE7T4a5lW7Fn8Umqc/uX/Enfc6mqyjwXVKtWlsoEu+FW7aJUWGX46lAbMu6PNoxaWfYBtCn6VT7m8oJhLGIgFAqhd+UPrkPSRaqW6iGrTWPM5p6qKtGb0crAxgOvgqNB4+fajbGE0hNKOf2t7/604T2PjbkZvSu2WNbdqeRnfLqrERrm7JE9nZyGrH909C2yUiu4bJXq2ltTw2GkNEpExoA1a1Dx3KXGFY8apQ7rXF7OL+jJzQUOOc+rRhBpj88HrFuHQStW4KnxNwJQ5CDi8Wzo0UP8Z8HYms/FP/r0wbZnPsYvtz+Bj3bWYOnLiwBI487GjUDjxuj40EP4U+4L2HUkFzd8NsKy7i6lP+HjP2qs+2pCvwab0aviB6x+Ldow0cyDq2GuJB8Iy1ZqasR/En0qt9gOu+hZnlKDcPhpx1lnAd98Yy9/VqzRevhp+G7OBjQr2Kl7rUvZz+oQw7wGToEAMGcOVgUfwqhGX6DTw+frr0XHjQMOHAB69hSf1ZNPBq6+OqoYY0ATbVhNxsTyqY5y3ZiEHlxJ2KW0J7lVnoQ9ktBVnIj2wAj4QuhZ8aM3lWt/86wsoGVL0fqqV6+EWTVoP3NYsMSYdwJrXtZ3ewrruz0lH1/Q6wlsX3BGdMH8fFMLUQbBnqBr6lT5z54VPyK4bCX/vURiEQSc0eVZVOdKi0Gz90hn3A0ovTZhnM/j1cmXo9JI4eoC7oT0Rp/LwnoTAK7t/yBGVH8lHx81ETxrORzkKCv1bUT1l2gtCaltLxIV8c/9TKBVJpG6VFgkiA8zdCgKMw/L+TkBWIflM8LsfZGEPrUxVnApOXrCGtPrWsVDpq9OlQ/Udh4jaWznVRK8OPEqtaV6ixbRhXr1AoYMsdeP+oTVGN24cXQy+hhwOBixPn5/+kW4YUDE63pc489s1cUQeS6VczNv2MFjmnyC6rxIqOs5Ld/RDUH8ycwL8M3sjXhnWkTBZOpNJfHtnGhjuxaFO1RtKtfGViHPeldskUOme8ry5eK4c4bO+p0gCHOceFT07m1+3edD1dgu6F7+E4Yr9gPNCnaK76o0UJRnH8D1A/9h2dxfh9yLlyZFC+e9xMhA4dDSNRjY8DvxwEgJoTfwGQyGYeNEbXhXwoLCQlFZk+ReOUpaFO7Qlw/16QNAM9fX1Ymfj4fhw5HpD6Jj6XZk+WvRUc9YOiNDjMbQujV3f20ZzqbCvpm8uwkNqTN6ENaQgispyfTVcZcd3ehznNjpef7Km+vkAjjjDDHshwInXiBuUE6Hfx9+B16ddEXC+nJxn8dxZrdn5eNMfzBipaWHwXvEmICa/F3YMvdsADDMrSXToQNwVSShpFdW4ER8uLzfo8gNcAiGdZ4X2WJPWqAbKXUHNfwO/5txId6eamzx7MT6z/V6dPJklYLWso1hw3CgNpLH6d/jbsCSNuqkysWZB2TLRy6vD2kzPrHpJ/h69rkWhQ2YPRsYMECszisrSoJIBMOGifkPzeLaA+JG97zzuEMamqI3F7ZuLYYfqa4Grr8eR03e5U4lP2NVh5fc9aF9e+6iWsvsTL967cWYICbAbtwYOP5444pKSsRwtVIeEl6jnGHVX6MmXwrVWlEhhnBT9o8Jomd9OufQcIsXYW082Asdqov8RhXZ++W1gLB8BUY1/pK7nhM7PY+6ZWLO0juH3oPHxtwiX+MNO6hUih3X+k3cNPB+TG76P92yrYp+R43CSttIOXvb4L/LireWOmG35DZnzAAuuEDXItwIxiCHTPeUZs1ErxCOfF0EQWgoKrJ/z9KlEQ+Prl3F/w3G6PCwe2DpWqzq8LL9tmBPXmJFWNYwpOprOczwXUPvxjFN9EMeZwcUbRt57GzYEJ2PuW1b/falPT/tPdIAQcBNA/8PFdlq2dGEmk8iHn0nnigq5yR6V2wW35nzz0dFzn5VXVi2DDjhBPGY01Pt8PFr0WqZB+t6ACUGocwBANOnq4+vucaTNmOKUiCR7Ao5Wv/HBVJwEUQMWdbuVSxs/RZX2U4lP2Nlh1dw3YAH+RvIzgZuvDFyHDatNBngCzIOYVGbN/jbcIDSaros+4AqzNAV/R7B65Pd5Ufgpl07AEBh5mF8P2c9/r+9O4+Tojr3P/59elYYBhj2QYYdQRBkU0GFACK4gAsKroDgLipuUVzBuPyMGpNoEhOTeNUbE5NobhKNiZrExOQmmrhdjRrXaJS4xIgLLiDM+f1xqnuqu6uXmemZnh4+79eL13RXVVdVD9PVp85zzvOotjavl5014b60ZfHf6JDad9V43An611Hn6uOVp+hX+3xVPSs/atow3DDu1s3X5EJpCe7UXvygf4tenhixl0izFyEIfg3o+oEGdE0Pln5wtA9St/TmKCqQfENqTvqGhuiAc3W171DPsf/tat7zTwYO1OBu76ouqNkxvd/Lqg2K7T666DJJLXgftbXSwoVJi57eUN/8fQSN9fLY1o7f8AUyKS/39Q+HDMm+XSzmg09m0rp16etb2/l/1lm+w7u8XKqq0uYsszGXjHhEX57+48h1M+uf1wWT7olcl+T00/Ouf5g+g2uruoRqj8XkfCfERRclRtZGuuIKf1MfXC9um/Nd/Wqfr6ZvN3p0WorHxIy2AQPS0jsWtP5qZzNjhg9cbJdf6t6sChHgCs3g6l75SV4zoaKUW6Ni5vTtmbfq6O3/pDnbNc1yyHemdfhr65bZN6tX9cdZA8thqQGuLmU+UHf8Dn/QESP/qoWDowNlCePH+/TdpNUESo+Z/y67+uqWDR6Ixfwgk699zadql3xa0fnzpcMPT9o0PhCka/lnsl6hNLLNCI5Xlm1NqlNYCHfu9U1dMvUuSdLRo/8cXTMzdbZQpu+QhgYfnIi78sqmmlEpupX7mkxl1phW5xSl5+Rxv08aPCKF+rp22MEPngp8ZfoP9aVpd/gn9fX6w8Kr9c8j1uiZxWt9bW4zPzvyssv8zOR8jBzpaze10iuHn6fV47MMpJ8/P7muV2pAtyMKz+DqaDP/wg24+npp2rTincs2pIP9FQCl74tflL4w9WeSpBtnfk/jer2R1+seXXS5Fg17vPkHzKPRGr6+Tui1XjfPuqX5x2mGcKd5mTUm3WT3rv5Iuw14WXfM/aZ6VGYZRVIIobROw7r/J6+aP5J0zbQ701YnRmYHm8bMqUv5Z5rf8ExidO/6I8/x08/DLrkk8zHnzcvxBlAULWggnb7jr/XnA3xtisQNWra/t9AxoraqrYzfHPnP0q79XlZDzbsRW3rnT7xHjxx0eWI0WVSH3IljH/QPhg71o8emTk3clD4WBKKaTsrUUPOuzppwnzYsPz1p1X6Dn1Rtxadava5O//7hb6UZM/TQgVfq6cXr/FsLBbgn93lNvao2amxd03UwsTZXwGnBguzrm4FRlNjm1Nf7ovGSNCeofdHazn+zpMBNthSFMbmMM7bPGP9rXbbzz7Ie6td3BoH/mTPTC2tHSKQgDNK/VMS2qqZis54/9CJ/PvnOoo7Fkt7j+F7/StQceeqQS/TPI9boi7vc6YONY8b47/igrZH2+wil02MWdxZHHeWzDxSic6IAAa5+XT5Uj8qPtXHFqepR+am2NmY5rywp8+JBrGPH/G/a111ranllCyxLSgQKU+vGTuv/cqKN8L05N+nne38j8uX8pQKdQEWFr10XmlnS4v2EL2CLFqUNgku6Zlx6adPjPFPKrptyl+YPelq1lZuaXecqm6rYFjXmqp+9667Jz7P9vsLfL1nqQZbFnNzxJ/hfW1S6YpSODG2KxKCleEAo2G71+N9qRv2Lic9M/64fqqHbBu1ww2nJqQT79s2/zZNvuybT3+7220vyg7QrOlvazPDvsCOnK1y3jsFC7YQAV2fC6PQO4ZxzpHN2ui+5FkMeWtX5MWuWn60wcWLk6kydTEO6vaNlo/6sO+Z+M23drbNuih61nEE4x7BJ0uzZmlX/nHbq/XraTbYkHTw8ezCvR+XH6l6Ru6B0mW2NrGVw1MiImXMZGghHjHy4aV3ENh+uOE2zBz6f8Rzi729gzfvpubsjGi8LB/+ftGJF+lRwdAz1fqbQQwf+P31n5q3Zt3VOnx6zStdO/7Gm9fdF2VNzrkfW4MqzURv/237owC9qfK/1Gbfboe7NpNp+GTuey8ul887zo8fMNLH3a9qxbr0m9fEpPHTUUf5nZaX+ueqLumbanepZlfw5vHvvr6ss5lQ2f676LJkjxWLqWfWJ+lT7NAxVKanBXj78At2zz/Xp55LPd9b++0uShtX+W6eM+13u7TMco4IZXNgWTZ7sR28vWeKfFziVddYAV5Y2TaJjYMkSPbvkYp067rdp2+w5M2KkdRaJdsCIEZKa0h2N6vF28vp8RXQUlMe2qqHbBp1zWfemGaYDBiTSOKWlXz3zzMTDvGsjouj+sPBqvXjYhYn6dVlncI0cmTElaLYgVrk1+s9nXH2OGcqhWYeje76ln+x1Q+ZtzzpLGj487/pxqRJtlmzfmXmk2rlo8t16tg2yFQLIQyFmxOZj6tTk+5wWzBZbO+XutHuNbMb3el1njr8/fcXAgdK55yYuXZVlW3NfB4cMka65Rjr5ZGmffRLZX1rs5JNb93p0LEG7OfVe3sz57/6DDvILcvXptCa4kW/bvb5eWr5cOvvs5OUnneRnZHdGpZSiEO2CAFdnMmhQsc8AgaqyLYkp8fnK1BlUm0eQR4cf7juxunZNX7d4cdLT+A335Tv/VC8cdpFumX1zZLCpZ9Un+dUgkvSNPW7ThuVnqDpIf+IkqbZWDyy8Vv26fKgt4dGvQeeTlKHjP/DYosv1pQzpjcK2HHeyXjj0Iv1+4TWJZYNq3tV/z/kv/yScTqCx0Td+U9w256amJxGjP7pVbMp+DuFOrUzFaQOXTv2ZHzVbW8sXcUe1887SEUdo136v6Jgx/5tz86qyLUn/leWxrdL06Ym/pVc39kp+wdln5x3gMpOvvaP00dhhvas2Jj0fGEp7OKDL+zpuzB/8k5Qg+B/3v9oXpW9o8NNPZ8zwK2Ixn4qsGeI1RVJnS/Wo/NSnBenvUz5m+9yn2W8/afp0vXz4herX5cNmnY+k5AAXsC3q3r3puyZTbYkoeVyjsgW48grolJVpTM+3VJPyHVvWgjRFZeakq65KdAR0SUlF1OxBRGPHps0iTcwS22uv5A7+4He1JXWmz6BB0okntuz4aJnUWfQt0Kv6Y/Wpbko9nbNuZIbOp8g6W0Ha6pg5n35z7lz/Xbtunf++yyT0eYyZ00HDnsi8bXW1dO65aR27O0YVqY8671ijrw3SPyJN87Jl/ryj7jdS7Nb/5Vb3FQNopnPP9RlCCpDSLC/HHitX3b6pzGYPfE5fmn5H9MrhwxMDBipjW/IL9NfW+ppJBx6Y/d48nzbUTjvlHrCAkjas9t/a+/jBvu5tfJbibrslp6OM/x2tWOH76fKczRipOW333XZLnikm+e/rqVPze32BB8K1ufJy3yZZvrzYZ5IuyyxPtB0CXJ1Jnz7+wnr55cU+E7Qgx2qmWVYfrDg9vy+bTA2yuXNlQwYnnlbGtkhLl+r8Sb9smqacIYd0rkZhPCVZddkWda/8VJ8cc6qkHJ0BZ56ZCMZmGxVbHtuqZaMe0h/3vyrrOUjS8O7vaFSPtxLPkzrWwl/osZh0/vm+Mz9V/PcXBBOiTyo6LczW8O9p+vSs55r4f84RCEMRmUmf+1yLX15ujdLRRyeeP70hZRTlqFFJnVXZPmfh68KWDAGu1488V3s3PN20YMgQ7T/k//TRylMkSTfMuE03zvyef0/LloV2bupS/pnvCD7xRKlnz+QdV1UlHj635CLVd30v43kGu9PfDlmXNoMt4Ygjsr4+o1amrRpXt97/fggoY1vXnELzedSsPHDoE76YdoSYuaR6nGGJj2IwonXT1uQR32mf1Ayf3XN2uld/PegKScH3fvD+/rD/VZo/6OmkbZtdA8ssrQ5gmTX6zqsM57fFRbd9DhvxFx016uHmHR8ts+OO/mcBIytJgcsc7fuu5Zu0cYVvC0d+FwaDTJzk67QuXtwUSDLTj+d+S0Nr35GkpvbvpZfm/v5assR/vy9blhhcEx4U8+GK03RtfNBYuF28fLmOGPmw9h/yRGJRdVnQJog65u67+7ShOWxYfnpyuwRA+xg+XDr44Iz3rAVnlr2bIkN2mUi9euXeRrm/z2Pm9N7Rq2UmfRpuX6xcmf+5RBkc9Kek3i+h84rP4AotevnwC3XS+RF/q926pS+bNi1nXeucWhMca654n2Aeg1g6jJkzfWCvo+nf39dZO++8Yp/JNoUAV2czfHhycUAUx5FH+pQ1xx4bXeg9cPyYB/X4Ip+rOuu9a3NGbkSI19k5eezvdNqOD/gvgRUrmjaIT68OKbPGnIW143V1UoNzvauTZ5NM6L1ehw7/q39SXp4YwZqtQVxujaos26rdB7wUuT5mjTp8xF/8KOu0dSk7Xr3afy5OPtmnTgiOH2nGjPSp3XEZGsaJTq0DD/T/UoXT0CRe1PpRxmgnedZuk6Sder+W1qk1uc+r6a8L5WQvL8v8QbDQMVJnB4zv9bo2LD9d29W85ze5+mo/42DVKpkpUUw5cSP4uc8lBa2SZPowBh1Z2/d8O2MQPixrzcHBgxOzGZqllQGuvy3+gr7QzBm1QKc0apR0yCE+hVkmxx7rZ5XkESA4evSf9cCC6CLyMXMZWxD9u3zgjzFypKTMA3wSFi+O7FBqqHlXU4Lra2IPjY3aY8BLKosl77PFM6hCQa4ya4xOPxSkZGqMSu3WpYt+sOd3tdcgcrW1i8MO80GeEwpXxyXRxtt556TBK1HKrFE1FZt18tjf6dARf/V1NiLa2JlmMh8y/DF1CbIhJNq//frl11m9++7+XyA8eKZbxaamtomZbytMmyYNHKjb5tykGQNelCQ9s3ithnd/J/excmhOujEApS3rd/gxx/hZzxEm9v5ncs2tTPcoKarLc6cw7lH5qSSpZ7ze98CB6fW2mqtnT+nKK5PrjKFzC+5Bp/T5Z44N1er71TSrV/v6WUuXFna/2Rx9tB+sfc457XfMzmzKFF/7HO2GABfQFiorpR128DfDWaapD+/+jkZ0/3fu/bXyCzM+Wejre/xAC4c86fcXHoUakUu/zBpzF2aVdMfcb2rJiEcSz9cfeY7u2OtbSdt0q9ik2+d+p2lB0JmeabSzlGHka8jeg57W9/f8buJ5uKsgLTXS2LF+ZmNEoVdTyrZmUt++emzRZbp615T0B1OmSF//uu9AGDYssThRgHzMmOgClytXptdoIMDVOaR8Np84+LK0jtRf7nN9er2MyZN9+swrrtB23d7XC4demLw+GIVu5hJpPVNThppccidS96AuTMosjcT5ZOsgyxTgOuIIn+pEBZgAVV0tTZqUCLjnvcPWXP+YtQU0MfMdTUHB6Ug77+wDSi347PTv8r7eXX6GJH/dKa+M6Z1lZ+q7M2/RPg1PSZI2rjhVu/R7JSl98ropdyUG+/jXpnwv9+0rXXaZduv/onqF0rGa+X9f2/0Hqo2nOcxwLcs0myynBQsS6V4ypl3s1k06+ujoLr7Ro32nWrwOGtpWdbVvoxVw9HFiln5FRc7PRUO3DZJ8e3tMz7ekyy6T5s9v2qCxUSfu8HvNG/RM805i4ULfQRuehS1p8fBHdO++X4l8ScY2/OzZfn+hgW7x7+Ud6t5s3nkB2OaVZ0srHPSJjOz+VtqM76T7pfjs2xweOehyXTjpnrzPbeGQJ/XJylV5b59TXV1eNQjRSQQDsW6c+T39fcnF7XvssWP9gLT2THXXu7cPcpFmEyWKABfQ3k47LfEwZk5JY5yrq32B01SHHtqqQ9ZWbdaP534rfcWee0oTJkTWpYqZS/QT7bXdM/r1fl/W84delLbdwcMfT8wUUc+eGljzvh81lUdaxePG/DEpLUpYamM5PqJVks6feI8unnK3fxJ0NoSPlnOkdujcKsuC40yalLTJpD6vaVDNhogTK/cdDGvWJNLYbWrMMbK2okIaOVKXTf2plm7/kF9Gw6F0ZPtbjkpHkKJflw81uNu7yQvNfJqgIBXAyB4pge66Ot251zf1/Tnf9aO3167V92bflPQZTOpni/gMN20XnH+2FAeZZomatSgVR9ro9CuuSASqPr/Tfbpi5//Jf2eFGhEXFXwG0CrhwFHMnOqqPg4eN0qDBql39UdaOeZPmt7/ZUlSTUUoUB9cW2srN2lin9eT9hPlj/tfrR/PvbHp2ME3/6pxv4t+TSjY3+wUhRHKsg28mT5dO/d9NXrQzMqV7VcPBa2Xkuo93xpcn59wr/64/9Xp68Nf1lu26IYZ39fAmvfTt4sSf22PHtLatUkztCRpdI+3NC/D7MBbZ/+X7pj7TY3v1fTZ0jXXJNXCbdN6GxEz1wB0PlVluQdtvnDYxWmzYBJXxoYG6ZRT8krfP6XvP5PbEfK1tz89JjqIZSZVlzOoFC00YIC0dq1i5lTf9X3VlH+aeduOXL+qS/vWyQOKhQAX0N7GjUsULo9ZY3KXyzXXpNe9WL487Ya2ucx82pM0S5ZIq1ZFjkiNmUukKLxvv69qz+3+rlE93s5+oHB6vqgv+fhxgjy51+9+u67Y+aeRuwrP4Nq44lQtGPJk4vnp43+jXfu94p9MmCBde626VzQ1OPJJRfTFXe6UFNQkO/jgyM6n/l0/yL6T4P00upjKso1eC1ww+Zca3G2DdMYZ0XXA0DFlC7CMHetna+aQV5HjFIuGPa5ZA5/3f2cDB6pX9cdJn8FEh21DQ8b8zj+a+y3NGficTw2YLRgX1MKJFPVZjgrEZ7J8eVKdv6l9X9V5k36V/41AoQJchU4dASBJ+Ls3Jpf0Gd/aGPH5i7gGrJtyV3TaQzOZJV9LI5Mghvd54YWJ0bdZg1O5BPvMFSTbu+FpNR5/UsuPg44hntJakhYuTEsPnCb4++hd/VEiwJtRHgMtMif3TBefMRZll36v6ODhj+vJQ4LZkfPnp99jxAeJFbpfbtw4ae+9C7xTAB3RwG4f6MlDLsm5XWot4cQAmW7d/LUozxSFOvdcqbxc39jjNt025zu6edYtPsgWv75mm6XeHlpZWgIdTDCItHvlp9q4cnXm7erq/N9xhtr2RTV+fHqJEqATaqfqkwCixFJvYysq0u8y27OwZEjMGrUly8wkU6N08cXS/ff7BmnPnsk1OyZOlO6+WxoyRPrPf6SNG5tmgkyYIF1yibR2bcY0heHRYDUVm5NmhCSCX6tX+2PGYqqpjckdf4Lsxm/lDnCZ6ZyJ92lTY7nqKj+WdpqTHOQLHs8e+LzeWpqhHleK6rLc+cATClj8HO0gW2CkosLX28tR7yOffPEDu27Qvz6OSEOQITBl5nxw69RT09NlVFdLn36qxfHAdsoMxYTDDpM++CD7LK3Ua9KyZfkXc12wIPO2+d4Ajh0r/eY3LSvqHP6/I8AFtKlwACh1QExSTc+gtl+8dlXYvEHPaFr/f6Qtj9sa6iDb6swHI94J1QwKX6+6d/epEM9RM0IGmbW4jhdKz047SdddJ1VVac8br9bPX90pZ3rC/l1SBkXNmdP0+KSTpPfekzYnzzzIKcv33jvLzswdUAtbtCh9WfCetuaRkjwvkydLjz3m69kC2DY0Nmp8r3/l3ixlsF9a7a5jjpG+/OWkRY8uukyL7jtRr24M1ZgfPlwaO1YnbXkw+fXxdv7ChU3pai8O0srlU8ewUEaMkN56y7dP0Pl07x69vLxcuv76jpkxJBbzA06BTo4AF1BEZn40yOOLLm3qoG7r6c2hgulh29VsULfyTXru/QGSpLLU9ImSD1oFqsu2+M6pcMHtDaGRpA0NvhBrba30+uvSnXdKhx/etH6AP07UyNjG407w99zr1kl//7t0++1JTeDK2BZpjz18x3dc6PeWqJMRUXNLUuKG/qLJ8Rzec6K3k08vJ0k6OyLQFYw0m97/JZ/O0GjIdkr5BEYuvVS6KD2FZ9z4Xv/SS4ddEL0y+Ntdf9QaHf/gUfr232f4ZVdcIW3alHF2lUnS5z8fPeJx1SrpS1/Kfd6pteGynF/iRnTgwPSOvj339EGotJMsQLfyuHH+fbYkrWc48EeAC2hT8dpZW4870QeD3ODEukQ9oHHjpCOP9I/r6nyb5K67JEn/PGJNdGpgKTRjuumaEpNLvz727Zv13FokOHaXPAYqoBMJvltn1L+oxw6+XFL2bAp9qoP6cFdckT6CO95+vidL7ZigU2zmgBea/s5Dac1T9a7+qOnJ6NFZzy2j4Htxc3hA2zHHtGxfkq8tumFDxxzBDqBt5FlXOjWQnvg2j7fV6+ulc87Rlb//iR7412jd+/o4Te7zmvp3+VCvbuwjd3xoMGFUf0m/fv5nbW16QL89A1yHHCL16tXqDDzoQEaPlp57Tho0SDr22MzbRQzcAtB+6O0BiihmjdK6dZr4uR6+A1dKb7AVooM4PFMiSI+Y6vUj12jpqIeSzi0trZpzunXWTerf5X2N6/Wv9HNLLepdV+cblEOH+iKZEXWCUtMVSKHd1tdHNmArYlulpUuTF4beY8ycH6UyfXraa5MPkOF5quHDE0Xmk8yfL02YoD8dcJV+NPfbHTv3MpqvVy//c/Dg7NtJ/qYqniYwQ8284d3fiVwe/rtJPIqnOAh/ZlauTHqZmcv8t7v99oUbQZ3PNWjJkvzzey9e7APg+d74mfk0Yy2ZzRqL+c/pvHmFuZYCSBL+VMVnOMXM+TpG4RSF8fZEaidTqE3S0G1D5o9psCK+fvseb2pG/Yu+o6G+viml3JQp/hpzQfKAgr7x4ENLOKfNx56kbhWb8tue9ESdU6Y2nnN6d/kZ2m/wU/55tg6u+GzqqNTGs2ZJgwbpWzNv03OHrvUzw6Pqa555ZvLzCy/0nW4tEcwQO3jYYzpm9B99bdBddmnZviT/nUtwC9i2zJ3rf2aqNRlcO9NmcJnz167Fi5OWnzvxXk3p82ri+c/mf0MvH3Z+8j7rUjJeTJ2aPJA2VXvOqqmp8YN34veRKH2nny5ddZUfzEoddaDDYgYXUERl5vyXZJYRmgXplM0z8BJOIVRmTqN7vtm08vzzpV/8Qku3f1j7D/0/f+52cfIOqqqkNWuaNVOiIpajdlVw7uEUhZGvCb1Hk/OdXJl+d7l+p/mef02NnymTIz1ds/aJjuPSS306odTAbSZDh0o33ND8/2uz/D6ju+4q/eUviVScY3q8Kdl2zTtWSwSfl9p4nbvWXpPmzm26GW4PUWmZABTcPz4MZk8NHepT8yxY4K+Jkk8H3BrBdTU+Q/u5Q9f65fX1frZ3nFny9eWzz/TqEWvUr/pDSXu1+PAVzanhledodpSYLIHLRKpAs+z1Luvr/ezqqHZF166+8yxXm3L0aH/fcN11/nmmmq4HH+yzJ8RfE6W2Vjr7bO14zTX6zuf+W9LU7McGgFQHHeTvuzMNCAyunakzuGLmfIA+4r4i3CcxIKom9oEHSh9+KD3+uH++fHl6uvawjpg2DqUjFpN69Cj2WQDIgQAXUESRKXOc028XfEmfbKnU25/USlaAm81co4kTI6uaGp5l1qgR3d/x6QB69vS1tILtelRm6egeNqxZpzax9+u6a/7XtPDeU7JuZ6HaF5H960mzYHJ0wOf6fbR0enm2/RLgKj3l5c1PaZHr/3mffdKXnX56Ws75XEGkD44+zdepy3Z92JojeJyv4IbxNwu+rE9GTpCGHBW9HbMWgG3LqlXSV29MPB3f63X/YOed/c+JE6Vrr5XOPFNnTPi1Fg55UlL/3PutqkofnR2Y2vdVLR315/zPccAADe62oXXpiZo7O5sAV+eUz3fc9dfnbgdkC4AV0rx5fkbF00/7Wd2ZhDMUMNMZQHPFYn5gSybB/Uh4BlfPyo80vd/LklLKCcTrAkaUMEhSUyOdeKL0xhs+nXum4NaKFT7QnzJLDADQ+dDjChRRLLW4qiQ5p9kDn9e+g/+mo0f/uTA3m/F0IxMmRK+PSB0QM9d0kx4fadoGKfhi5rRgyFPpK+I33MGIq3jwbfn2f4reUejcGp1l/72lpm5LHdVVXZ1cqyzf/4NsAYV3MqSnw7Zj3jzpgAPSl48Z42dISprc55+qjOWu81JbuUmVZTkCWP3z6EjOx/Tp0tixqj9uoYavXdrymZEAOpcJE2QjR0iS3jzqbD15yKXS8cdLc0J1LWtqpLVrVRFr1A51b0bvJ16TK+7aa6NHW0+dqrqqj3Xr7JvzP8faWl8PNJ+ahJnk2/aJ1yRtTQ0jdFyZ0vCG/z4KWX+jEN+pZWW+7Z+hlicAtLmIwa9vLztbXzrvnYzXudTZXgmheuCS/KzYbMG1adN8armWpnEFAJQMAlxAEeWaiSSpMDN/5s/3NbCOOy56fUTqgDJrlM4913e+x1/XFueWom/1B75GwamnBgt8yqMu5ZslSTfPuiX6hcG57NL3H9q34W/ZDzJmjHTJJU3PozrSMtQqy+qzLIGJsWObvz90LvX1OTusThr7oDYdm302Y9723NMH1Naubd1+Kiqk1aulmTOzb3fKKf7zetZZrTsegJITr7+lsWPT2wbhOkJR7YaZM307JS7TbKtMbZhc6urap4N/+nTpW9+i7kZnc+KJvmZW1ACVYqGQPYBS0bOndNVVSZliYnLRNbOC+6SFQ57Unts9K02e3LRu/nw/I6u5GIAHANsEUhQCxRB08ESmKExViEZZLJY9PUmmGVxDh0pnnNH642cydqz0zDOJpxdPvlvnTfylNGqRT1EU3+aww3T9p7fr4sm/yLyv4Pf08EFXBs8zFLqN69ev6XGuQF2+/wfZUiANHOjzjNPxte3Klrs79W8w37+5bDnlKyqkfffNbz+FMGqUdNllwZPX2++4AIoukUY407Xr4IOlu+4qbJCgvWr5kX512zZpkv+XSRtkN8hp1Chfl7OZacFzKsZ7AdD59eihJcMf0YefVemXr41vGhSTKmhDzBr4vGYNfF5SKMC1++7MRgUAZESACyiiHpWf5N6oPUYdde8uKTnAVZahPlhBnXaaHxkbGNXjbVWXp9SuMJNmz1av229Xr+osReqnT5cefDD/Y4cDCrlqc+QKgC1YIL30UnIdgyiZCoGjczv1VP/3kW0WX2oHaj6f++uu6/ijEjv6+QEoiMQnPdNnft48aa+9Mq9vbhCpV6/2q6kxcqT0yivJA2OAuLb6nss2gMVMWrmyfY8JAK1w8PDHdfDwx7NvlO0alG2gIABgm0eACyiGXXfVi4ddoGGzI0ZepgaR2qODuKZGWrNGjQc+n1gUObKq0AGu0Hv7aOUp6lL2WdryvC1Z4msO/fjH+b+mrk765JPMdRXq6qQNG3xqmmzC9bqAVDvu6P9l09Dg/732Wv77jc9yBIAiiX9dJ9oM2QaEZPtu37Il87oobZAiOaP99/fpV1NrfwBtqRjBJgJcANrDfvtFL09Nvzptmv8O3ryZ2VsAgKyowQUUQ58+GnHzxYodF1GIvFjpQYYNU2PTGGz1rtqYvk0bBt+6ln/WtLtcI7mXLk1fVlEhjR/fvHO7/HJfeD7TtmvWSMuW+ZHnQFuKxaQLLsi9HemDAHRApuDalGtGdCY77+x/jhlTmBMqpKoqadYsX0cESFXo7+UxY3y7dMSIwu43m3i6z/ZK+wlg27Xnnj5oFSUc4Lr0UmmnnXwN4yFD2ufcAAAlixlcQLFkmn2ReqPcjrUf4sVf3fEnRG/QrVv7nMjIkZnXLVok7bFH9LrwiO58RqHm2qZnT5/vG2gP4UBrXV30Nlu3ts+5FAopCoFtgpmTTjih5Z/5ESOkK6/MPwUR1xZ0FPPmSf/7v9I++xRmf6ef7r/rWxosbonFi6WDDmrfYwLYNmXLQBG+N+/bt+3PBQDQadCKBTqarl2Tnw8Y0G6H3upydBgtWSJt2iQ9+aR/XogUQd26SRuD2WLnn+/3ma1WVbab73AwkM4vlKLPf1569FE/ujHKkCHS3/8u1da273k1kxOfP2BbYI0+6B6TkyZPzrF1DpkC+2E77CA9+2zrjwUUyoAB0g03FC5tpllxAk0EtwAUm5l00kl+wC/38gCAZqAlC3Q0M2ZIL73kO3FGjWrXlDjbdX0v+wbdu0urVvlR2lJhbobPOEO6+24/MyufAu7ZGruZamkBpWLkyOwzGBcs8NeEDl4LhkyKwDYimFXabv1QJ57oA1zhlMRAsbVnTTgA6Mw6+D0OAKBjIsAFdDQVFdJxxxXl0GdNuF8njf29fzJ0aO4XFKLY66BBvsMqX9k6Ebp39/vq3r315wV0RJWV0pw5xT6LnLY6OvuAbcIRR0gXS3b08vY5XnW1NGlS+xwLAAAUFjOzAABtgAAXgISymFNt5SZfA+OMMzJveO21Ph1gRxyxSscXUHQEuIBtQ8XwBs2YIVXtNqXYpwIAADq6jth/AAAoeQS4AKTbYYfss7NqatrvXFIx6gvo8HLW8wPQKZhJDz5Y7LMAAAAlYcSIYp8BAKATIsAFoLSUlRX7DADksKWRzykAAAAASVdcIa1f7wfSAgBQYMwPBpCuI6YOiDeGd9yxuOcBIKfN8QAXMy4BAACAbVvv3tKECcU+CwBAJ8UMLgClYfVqafNmqaqq2GcCIIfNW2leAAAAAAAAoG11wGkaAIquI866MCO4BZSIzY0EuAAAAAAAANC2CHABaDJokP85cWJRTwNAafuMGlwAAAAAAABoYwyxBtDknHOkt96SGhqKfSYASthmAlwAAAAAAABoYwS4ADSpqpIGDy72WQAocdTgAgAAAAAAQFujBwoAABTUkhGPqEflJ8U+DQAAAAAAAHRi1OACAAAFddqOD+gX+3yt2KcBAAAAAACATixngMvMGszsATN7xsyeNrPVwfJeZna/mb0Q/KwLlpuZXWdmL5rZk2Y2ObSv5cH2L5jZ8rZ7WwAAAAAAAAAAAOis8pnBtUXSWc65sZKmSVplZmMlrZH0G+fcKEm/CZ5L0j6SRgX/jpd0g+QDYpLWStpV0i6S1saDYgAAoBNqbCz2GQAAAAAAAKCTyhngcs694Zx7LHj8oaRnJW0n6QBJtwSb3SLpwODxAZJudd5DknqaWb2k+ZLud86965zbIOl+SXsX8s0AAIAOZOvWYp8BAAAAAAAAOqlm1eAys6GSJkl6WFJ/59wbwao3JfUPHm8n6bXQy14PlmVannqM483sETN75N///ndzTg8AAHQkzOACAAAAAABAG8k7wGVm3STdKel059wH4XXOOSfJFeKEnHM3OuemOuem9u3btxC7BAAAxcAMLgAAAAAAALSRvAJcZlYhH9y6zTn3k2DxW0HqQQU/3w6Wr5fUEHr5oGBZpuUAAKAzIsAFAAAAAACANpIzwGVmJum7kp51zl0bWvVzScuDx8sl/Sy0fJl50yS9H6QyvFfSPDOrM7M6SfOCZQAAoDPZf3+ppkbaa69inwkAAAAAAAA6qfI8ttld0lJJT5nZE8Gy8yVdKelHZnaMpFclLQnW3SNpX0kvSvpY0gpJcs69a2aXSvprsN0XnHPvFuJNAACADmS//aR995XMin0mAAAAAAAA6KTMl8/qmKZOneoeeeSRYp8GAAAAAAAAAAAA2pmZPeqcmxq1Lq8aXAAAAAAAAAAAAEBHQYALAAAAAAAAAAAAJYUAFwAAAAAAAAAAAEoKAS4AAAAAAAAAAACUFAJcAAAAAAAAAAAAKCkEuAAAAAAAAAAAAFBSCHABAAAAAAAAAACgpBDgAgAAAAAAAAAAQEkhwAUAAAAAAAAAAICSQoALAAAAAAAAAAAAJYUAFwAAAAAAAAAAAEoKAS4AAAAAAAAAAACUFAJcAAAAAAAAAAAAKCkEuAAAAAAAAAAAAFBSCHABAAAAAAAAAACgpBDgAgAAAAAAAAAAQEkhwAUAAAAAAAAAAICSYs65Yp9DRmb2b0mvFvs8SkwfSe8U+yQAbLO4BgEoJq5BAIqN6xCAYuIaBKCYuAahrQxxzvWNWtGhA1xoPjN7xDk3tdjnAWDbxDUIQDFxDQJQbFyHABQT1yAAxcQ1CMVAikIAAAAAAAAAAACUFAJcAAAAAAAAAAAAKCkEuDqfG4t9AgC2aVyDABQT1yAAxcZ1CEAxcQ0CUExcg9DuqMEFAAAAAAAAAACAksIMLgAAAAAAAAAAAJQUAlydhJntbWbPmdmLZram2OcDoPMws1fM7Ckze8LMHgmW9TKz+83sheBnXbDczOy64Fr0pJlNDu1nebD9C2a2vFjvB0DHZ2Y3mdnbZva30LKCXXfMbEpwXXsxeK217zsE0JFluAatM7P1QXvoCTPbN7TuvOB68pyZzQ8tj7xHM7NhZvZwsPyHZlbZfu8OQEdnZg1m9oCZPWNmT5vZ6mA5bSEAbS7LNYi2EDokAlydgJmVSfq6pH0kjZV0uJmNLe5ZAehkZjvnJjrnpgbP10j6jXNulKTfBM8lfx0aFfw7XtINkr8Zk7RW0q6SdpG0Nn5DBgARbpa0d8qyQl53bpB0XOh1qccCsG27WdHXhS8H7aGJzrl7JCm47zpM0rjgNd8ws7Ic92hfDPY1UtIGSce06bsBUGq2SDrLOTdW0jRJq4LrB20hAO0h0zVIoi2EDogAV+ewi6QXnXMvO+c2S7pd0gFFPicAndsBkm4JHt8i6cDQ8lud95CknmZWL2m+pPudc+865zZIul/cRAHIwDn3oKR3UxYX5LoTrOvunHvI+WK0t4b2BQCZrkGZHCDpdufcJufcPyS9KH9/FnmPFsySmCPpjuD14esZAMg594Zz7rHg8YeSnpW0nWgLAWgHWa5BmdAWQlER4OoctpP0Wuj568p+4QGA5nCS7jOzR83s+GBZf+fcG8HjNyX1Dx5nuh5xnQLQWoW67mwXPE5dDgC5nBKk/7opNAuiudeg3pLec85tSVkOAGnMbKikSZIeFm0hAO0s5Rok0RZCB0SACwCQyx7Oucny08pXmdnM8Mpg1J8rypkB2CZx3QFQBDdIGiFpoqQ3JH2pqGcDoNMzs26S7pR0unPug/A62kIA2lrENYi2EDokAlydw3pJDaHng4JlANBqzrn1wc+3Jf2P/DTzt4LUFgp+vh1snul6xHUKQGsV6rqzPnicuhwAMnLOveWc2+qca5T0bfn2kNT8a9B/5NOHlacsB4AEM6uQ71i+zTn3k2AxbSEA7SLqGkRbCB0VAa7O4a+SRpnZMDOrlC/s9/MinxOATsDMasysNv5Y0jxJf5O/xiwPNlsu6WfB459LWmbeNEnvB2k07pU0z8zqgmns84JlAJCvglx3gnUfmNm0IP/7stC+ACBSvFM5cJB8e0jy16DDzKzKzIZJGiXpL8pwjxbMunhA0iHB68PXMwBQ0D75rqRnnXPXhlbRFgLQ5jJdg2gLoaMqz70JOjrn3BYzO0W+8VIm6Sbn3NNFPi0AnUN/Sf/j2zcql/R959yvzOyvkn5kZsdIelXSkmD7eyTtK19U9GNJKyTJOfeumV0q38CRpC845/It3g5gG2NmP5A0S1IfM3td0lpJV6pw152TJd0sqYukXwb/AEBSxmvQLDObKJ8S7BVJJ0iSc+5pM/uRpGckbZG0yjm3NdhPpnu0cyXdbmaXSXpcvhMJAOJ2l7RU0lNm9kSw7HzRFgLQPjJdgw6nLYSOyHzQFAAAAAAAAAAAACgNpCgEAAAAAAAAAABASSHABQAAAAAAAAAAgJJCgAsAAAAAAAAAAAAlhQAXAAAAAAAAAAAASgoBLgAAAAAAAAAAAJQUAlwAAAAA0Axm1tvMngj+vWlm64PHG83sG2143Flmtltb7R8AAAAASkl5sU8AAAAAAEqJc+4/kiZKkpmtk7TROXdNOxx6lqSNkv7UDscCAAAAgA6NGVwAAAAAUADBDKu7g8frzOwWM/uDmb1qZovM7Coze8rMfmVmFcF2U8zs92b2qJnda2b1wfLTzOwZM3vSzG43s6GSTpR0RjBbbIaZLTSzh83scTP7tZn1b+axXwkt/4uZjSzKLw4AAAAAWoAAFwAAAAC0jRGS5kjaX9L3JD3gnBsv6RNJ+wWBpuslHeKcmyLpJkmXB69dI2mSc26CpBOdc69I+qakLzvnJjrn/iDpj5KmOecmSbpd0jn5Hju03fvB8q9J+kqB3z8AAAAAtBlSFAIAAABA2/ilc+4zM3tKUpmkXwXLn5I0VNJoSTtKut/MFGzzRrDNk5JuM7OfSvpphv0PkvTDYNZXpaR/NOPYcT8I/fxys98hAAAAABQJM7gAAAAAoG1skiTnXKOkz5xzLljeKD/Y0CQ9HczImuicG++cmxdss5+kr0uaLOmvZhY1OPF6SV8LZmCdIKm6GceOcxkeAwAAAECHRoALAAAAAIrjOUl9zWy6JJlZhZmNM7OYpAbn3AOSzpXUQ1I3SR9Kqg29voek9cHj5S08h0NDP//cwn0AAAAAQLsjRSEAAAAAFIFzbrOZHSLpOjPrIX9/9hVJz0v6XrDMJF3nnHvPzO6SdIeZHSDpVEnrJP3YzDZI+q2kYS04jToze1J+xtfhrX1PAAAAANBerClTBQAAAABgW2Fmr0ia6px7p9jnAgAAAADNRYpCAAAAAAAAAAAAlBRmcAEAAAAAAAAAAKCkMIMLAAAAAAAAAAAAJYUAFwAAAAAAAAAAAEoKAS4AAAAAAAAAAACUFAJcAAAAAAAAAAAAKCkEuAAAAAAAAAAAAFBSCHABAAAAAAAAAACgpPx/Taa0BNrWmiUAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(30,8))\n", + "plt.plot(Y, color = 'red', linewidth=2.0, alpha = 0.6)\n", + "plt.plot(Y_pred, color = 'blue', linewidth=1)\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AcN7pMYXVGTK", + "outputId": "7e1c2161-47ce-496c-9d86-7ad9ae0df770" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAPE: 2.0572089029888656 %\n" + ] + } + ], + "source": [ + "print('MAPE: ', mape(Y_pred, Y)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "Recurrent_Neural_Networks.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + }, + "coopTranslator": { + "original_hash": "f8f3967282314d3995245835bdaa8418", + "translation_date": "2025-12-19T17:36:12+00:00", + "source_file": "7-TimeSeries/3-SVR/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/3-SVR/working/notebook.ipynb b/translations/kn/7-TimeSeries/3-SVR/working/notebook.ipynb new file mode 100644 index 000000000..4c787208e --- /dev/null +++ b/translations/kn/7-TimeSeries/3-SVR/working/notebook.ipynb @@ -0,0 +1,711 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "fv9OoQsMFk5A" + }, + "source": [ + "# ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ರೆಗ್ರೆಸರ್ ಬಳಸಿ ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ, ನಾವು ಹೇಗೆ ಮಾಡುವುದು ಎಂದು ತೋರಿಸುತ್ತೇವೆ:\n", + "\n", + "- 2D ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು SVM ರೆಗ್ರೆಸರ್ ಮಾದರಿಗಾಗಿ ತರಬೇತಿಗೆ ಸಿದ್ಧಪಡಿಸುವುದು\n", + "- RBF ಕರ್ಣಲ್ ಬಳಸಿ SVR ಅನ್ನು ಜಾರಿಗೆ ತರುವುದು\n", + "- ಪ್ಲಾಟ್‌ಗಳು ಮತ್ತು MAPE ಬಳಸಿ ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ಮೋಡ್ಯೂಲ್‌ಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append('../../')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "M687KNlQFp0-" + }, + "outputs": [], + "source": [ + "import os\n", + "import warnings\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import datetime as dt\n", + "import math\n", + "\n", + "from sklearn.svm import SVR\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "from common.utils import load_data, mape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Cj-kfVdMGjWP" + }, + "source": [ + "## ಡೇಟಾ ಸಿದ್ಧತೆ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8fywSjC6GsRz" + }, + "source": [ + "### ಡೇಟಾ ಲೋಡ್ ಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "aBDkEB11Fumg", + "outputId": "99cf7987-0509-4b73-8cc2-75d7da0d2740" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2012-01-01 00:00:002698.0
2012-01-01 01:00:002558.0
2012-01-01 02:00:002444.0
2012-01-01 03:00:002402.0
2012-01-01 04:00:002403.0
\n", + "
" + ], + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2698.0\n", + "2012-01-01 01:00:00 2558.0\n", + "2012-01-01 02:00:00 2444.0\n", + "2012-01-01 03:00:00 2402.0\n", + "2012-01-01 04:00:00 2403.0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "energy = load_data('../../data')[['load']]\n", + "energy.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "O0BWP13rGnh4" + }, + "source": [ + "### ಡೇಟಾವನ್ನು ಚಿತ್ರಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 486 + }, + "id": "hGaNPKu_Gidk", + "outputId": "7f89b326-9057-4f49-efbe-cb100ebdf76d" + }, + "outputs": [], + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IPuNor4eGwYY" + }, + "source": [ + "### ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾ ರಚಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ysvsNyONGt0Q" + }, + "outputs": [], + "source": [ + "train_start_dt = '2014-11-01 00:00:00'\n", + "test_start_dt = '2014-12-30 00:00:00'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 548 + }, + "id": "SsfdLoPyGy9w", + "outputId": "d6d6c25b-b1f4-47e5-91d1-707e043237d7" + }, + "outputs": [], + "source": [ + "energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \\\n", + " .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \\\n", + " .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XbFTqBw6G1Ch" + }, + "source": [ + "### ತರಬೇತಿಗಾಗಿ ಡೇಟಾ ಸಿದ್ಧಪಡಿಸುವುದು\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಈಗ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ತರಬೇತಿಗಾಗಿ ತಯಾರಿಸಲು ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ಸ್ಕೇಲಿಂಗ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cYivRdQpHDj3", + "outputId": "a138f746-461c-4fd6-bfa6-0cee094c4aa1" + }, + "outputs": [], + "source": [ + "train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]\n", + "test = energy.copy()[energy.index >= test_start_dt][['load']]\n", + "\n", + "print('Training data shape: ', train.shape)\n", + "print('Test data shape: ', test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಡೇಟಾವನ್ನು (0, 1) ಶ್ರೇಣಿಯಲ್ಲಿ ಮಾಪಿಸಿ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "3DNntGQnZX8G", + "outputId": "210046bc-7a66-4ccd-d70d-aa4a7309949c" + }, + "outputs": [], + "source": [ + "scaler = MinMaxScaler()\n", + "train['load'] = scaler.fit_transform(train)\n", + "train.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "26Yht-rzZexe", + "outputId": "20326077-a38a-4e78-cc5b-6fd7af95d301" + }, + "outputs": [], + "source": [ + "test['load'] = scaler.transform(test)\n", + "test.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x0n6jqxOQ41Z" + }, + "source": [ + "### ಕಾಲಚರಣಗಳೊಂದಿಗೆ ಡೇಟಾ ರಚನೆ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fdmxTZtOQ8xs" + }, + "source": [ + "ನಮ್ಮ SVR ಗಾಗಿ, ನಾವು ಇನ್‌ಪುಟ್ ಡೇಟಾವನ್ನು `[batch, timesteps]` ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸುತ್ತೇವೆ. ಆದ್ದರಿಂದ, ನಾವು ಇತ್ತೀಚಿನ `train_data` ಮತ್ತು `test_data` ಅನ್ನು ಪುನರ್‌ರೂಪಗೊಳಿಸುತ್ತೇವೆ ಹಾಗಾಗಿ ಒಂದು ಹೊಸ ಆಯಾಮವು timesteps ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ. ನಮ್ಮ ಉದಾಹರಣೆಗೆ, ನಾವು `timesteps = 5` ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ. ಆದ್ದರಿಂದ, ಮಾದರಿಯ ಇನ್‌ಪುಟ್‌ಗಳು ಮೊದಲ 4 timesteps ಗಾಗಿ ಡೇಟಾಗಳಾಗಿದ್ದು, ಔಟ್‌ಪುಟ್ 5ನೇ timestep ಗಾಗಿ ಡೇಟಾಗಿರುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Rpju-Sc2HFm0" + }, + "outputs": [], + "source": [ + "# Converting to numpy arrays\n", + "\n", + "train_data = train.values\n", + "test_data = test.values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Selecting the timesteps\n", + "\n", + "timesteps=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "O-JrsrsVJhUQ", + "outputId": "c90dbe71-bacc-4ec4-b452-f82fe5aefaef" + }, + "outputs": [], + "source": [ + "# Converting data to 2D tensor\n", + "\n", + "train_data_timesteps=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "exJD8AI7KE4g", + "outputId": "ce90260c-f327-427d-80f2-77307b5a6318" + }, + "outputs": [], + "source": [ + "# Converting test data to 2D tensor\n", + "\n", + "test_data_timesteps=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2u0R2sIsLuq5" + }, + "outputs": [], + "source": [ + "x_train, y_train = None\n", + "x_test, y_test = None\n", + "\n", + "print(x_train.shape, y_train.shape)\n", + "print(x_test.shape, y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8wIPOtAGLZlh" + }, + "source": [ + "## SVR ಮಾದರಿ ರಚನೆ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EhA403BEPEiD" + }, + "outputs": [], + "source": [ + "# Create model using RBF kernel\n", + "\n", + "model = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GS0UA3csMbqp", + "outputId": "d86b6f05-5742-4c1d-c2db-c40510bd4f0d" + }, + "outputs": [], + "source": [ + "# Fit model on training data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Rz_x8S3UrlcF" + }, + "source": [ + "### ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XR0gnt3MnuYS", + "outputId": "157e40ab-9a23-4b66-a885-0d52a24b2364" + }, + "outputs": [], + "source": [ + "# Making predictions\n", + "\n", + "y_train_pred = None\n", + "y_test_pred = None" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_2epncg-SGzr" + }, + "source": [ + "## ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ವಿಶ್ಲೇಷಣೆ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Scaling the predictions\n", + "\n", + "y_train_pred = scaler.inverse_transform(y_train_pred)\n", + "y_test_pred = scaler.inverse_transform(y_test_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xmm_YLXhq7gV", + "outputId": "18392f64-4029-49ac-c71a-a4e2411152a1" + }, + "outputs": [], + "source": [ + "# Scaling the original values\n", + "\n", + "y_train = scaler.inverse_transform(y_train)\n", + "y_test = scaler.inverse_transform(y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "u3LBj93coHEi", + "outputId": "d4fd49e8-8c6e-4bb0-8ef9-ca0b26d725b4" + }, + "outputs": [], + "source": [ + "# Extract the timesteps for x-axis\n", + "\n", + "train_timestamps = None\n", + "test_timestamps = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(25,6))\n", + "# plot original output\n", + "# plot predicted output\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.title(\"Training data prediction\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LnhzcnYtXHCm", + "outputId": "f5f0d711-f18b-4788-ad21-d4470ea2c02b" + }, + "outputs": [], + "source": [ + "print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 225 + }, + "id": "53Q02FoqQH4V", + "outputId": "53e2d59b-5075-4765-ad9e-aed56c966583" + }, + "outputs": [], + "source": [ + "plt.figure(figsize=(10,3))\n", + "# plot original output\n", + "# plot predicted output\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "clOAUH-SXCJG", + "outputId": "a3aa85ff-126a-4a4a-cd9e-90b9cc465ef5" + }, + "outputs": [], + "source": [ + "print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DHlKvVCId5ue" + }, + "source": [ + "## ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್ ಭವಿಷ್ಯವಾಣಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cOFJ45vreO0N", + "outputId": "35628e33-ecf9-4966-8036-f7ea86db6f16" + }, + "outputs": [], + "source": [ + "# Extracting load values as numpy array\n", + "data = None\n", + "\n", + "# Scaling\n", + "data = None\n", + "\n", + "# Transforming to 2D tensor as per model input requirement\n", + "data_timesteps=None\n", + "\n", + "# Selecting inputs and outputs from data\n", + "X, Y = None, None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ESSAdQgwexIi" + }, + "outputs": [], + "source": [ + "# Make model predictions\n", + "\n", + "# Inverse scale and reshape\n", + "Y_pred = None\n", + "Y = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 328 + }, + "id": "M_qhihN0RVVX", + "outputId": "a89cb23e-1d35-437f-9d63-8b8907e12f80" + }, + "outputs": [], + "source": [ + "plt.figure(figsize=(30,8))\n", + "# plot original output\n", + "# plot predicted output\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AcN7pMYXVGTK", + "outputId": "7e1c2161-47ce-496c-9d86-7ad9ae0df770" + }, + "outputs": [], + "source": [ + "print('MAPE: ', mape(Y_pred, Y)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "Recurrent_Neural_Networks.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + }, + "coopTranslator": { + "original_hash": "e86ce102239a14c44585623b9b924a74", + "translation_date": "2025-12-19T17:34:36+00:00", + "source_file": "7-TimeSeries/3-SVR/working/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/README.md b/translations/kn/7-TimeSeries/README.md new file mode 100644 index 000000000..ec75649f8 --- /dev/null +++ b/translations/kn/7-TimeSeries/README.md @@ -0,0 +1,39 @@ + +# ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿ ಪರಿಚಯ + +ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿ ಎಂದರೆ ಏನು? ಇದು ಭೂತಕಾಲದ ಪ್ರವೃತ್ತಿಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಭವಿಷ್ಯದ ಘಟನೆಗಳನ್ನು ಊಹಿಸುವುದಾಗಿದೆ. + +## ಪ್ರಾದೇಶಿಕ ವಿಷಯ: ವಿಶ್ವದ ವಿದ್ಯುತ್ ಬಳಕೆ ✨ + +ಈ ಎರಡು ಪಾಠಗಳಲ್ಲಿ, ನೀವು ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿಗೆ ಪರಿಚಿತರಾಗುತ್ತೀರಿ, ಇದು ಯಂತ್ರ ಅಧ್ಯಯನದ ಒಂದು ಸ್ವಲ್ಪ ಕಡಿಮೆ ಪರಿಚಿತ ಕ್ಷೇತ್ರವಾಗಿದ್ದು, ಕೈಗಾರಿಕೆ ಮತ್ತು ವ್ಯವಹಾರ ಅನ್ವಯಿಕೆಗಳ ಸೇರಿದಂತೆ ಇತರ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಅತ್ಯಂತ ಮೌಲ್ಯವಂತವಾಗಿದೆ. ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಈ ಮಾದರಿಗಳ ಉಪಯುಕ್ತತೆಯನ್ನು ಹೆಚ್ಚಿಸಲು ಬಳಸಬಹುದು, ಆದರೆ ನಾವು ಇವುಗಳನ್ನು ಶ್ರೇಣೀಕೃತ ಯಂತ್ರ ಅಧ್ಯಯನದ ಸಂದರ್ಭದಲ್ಲಿ ಅಧ್ಯಯನ ಮಾಡುತ್ತೇವೆ ಏಕೆಂದರೆ ಮಾದರಿಗಳು ಭೂತಕಾಲದ ಆಧಾರದ ಮೇಲೆ ಭವಿಷ್ಯದ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಊಹಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ. + +ನಮ್ಮ ಪ್ರಾದೇಶಿಕ ಗಮನವು ವಿಶ್ವದ ವಿದ್ಯುತ್ ಬಳಕೆಯ ಮೇಲೆ ಇದೆ, ಇದು ಭೂತಕಾಲದ ಲೋಡ್ ಮಾದರಿಗಳ ಆಧಾರದ ಮೇಲೆ ಭವಿಷ್ಯದ ವಿದ್ಯುತ್ ಬಳಕೆಯನ್ನು ಊಹಿಸುವುದನ್ನು ಕಲಿಯಲು ಆಸಕ್ತಿದಾಯಕ ಡೇಟಾಸೆಟ್ ಆಗಿದೆ. ಈ ರೀತಿಯ ಭವಿಷ್ಯವಾಣಿ ವ್ಯವಹಾರ ಪರಿಸರದಲ್ಲಿ ಅತ್ಯಂತ ಸಹಾಯಕವಾಗಬಹುದು ಎಂದು ನೀವು ನೋಡಬಹುದು. + +![electric grid](../../../translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.kn.jpg) + +ರಾಜಸ್ಥಾನದಲ್ಲಿ ರಸ್ತೆಯ ಮೇಲೆ ವಿದ್ಯುತ್ ಕಂಬಗಳ ಫೋಟೋವನ್ನು [Peddi Sai hrithik](https://unsplash.com/@shutter_log?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) ಅವರು [Unsplash](https://unsplash.com/s/photos/electric-india?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) ನಲ್ಲಿ ತೆಗೆದಿದ್ದಾರೆ + +## ಪಾಠಗಳು + +1. [ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿಗೆ ಪರಿಚಯ](1-Introduction/README.md) +2. [ARIMA ಕಾಲ ಸರಣಿ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವುದು](2-ARIMA/README.md) +3. [ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಗೆ Support Vector Regressor ನಿರ್ಮಿಸುವುದು](3-SVR/README.md) + +## ಕ್ರೆಡಿಟ್ಸ್ + +"ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿ ಪರಿಚಯ" ಅನ್ನು ⚡️ [Francesca Lazzeri](https://twitter.com/frlazzeri) ಮತ್ತು [Jen Looper](https://twitter.com/jenlooper) ರವರು ಬರೆಯಲಾಗಿದೆ. ಈ ನೋಟ್ಬುಕ್‌ಗಳು ಮೊದಲು ಆನ್ಲೈನ್‌ನಲ್ಲಿ [Azure "Deep Learning For Time Series" ರೆಪೊ](https://github.com/Azure/DeepLearningForTimeSeriesForecasting) ನಲ್ಲಿ ಪ್ರಕಟವಾಗಿದ್ದು, ಮೂಲತಃ Francesca Lazzeri ಅವರು ಬರೆದಿದ್ದಾರೆ. SVR ಪಾಠವನ್ನು [Anirban Mukherjee](https://github.com/AnirbanMukherjeeXD) ಅವರು ಬರೆದಿದ್ದಾರೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/README.md b/translations/kn/8-Reinforcement/1-QLearning/README.md new file mode 100644 index 000000000..5ce5c1a96 --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/README.md @@ -0,0 +1,336 @@ + +# ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ ಮತ್ತು ಕ್ಯೂ-ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ + +![ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಬಲವರ್ಧನೆಯ ಸಾರಾಂಶವನ್ನು ಸ್ಕೆಚ್‌ನೋಟ್‌ನಲ್ಲಿ](../../../../translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.kn.png) +> ಸ್ಕೆಚ್‌ನೋಟ್: [ಟೊಮೊಮಿ ಇಮುರಾ](https://www.twitter.com/girlie_mac) + +ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವು ಮೂರು ಪ್ರಮುಖ ಕಲ್ಪನೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ: ಏಜೆಂಟ್, ಕೆಲವು ಸ್ಥಿತಿಗಳು ಮತ್ತು ಪ್ರತಿ ಸ್ಥಿತಿಗೆ ಕ್ರಿಯೆಗಳ ಒಂದು ಸೆಟ್. ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಯಲ್ಲಿ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸುವ ಮೂಲಕ, ಏಜೆಂಟ್‌ಗೆ ಬಹುಮಾನ ನೀಡಲಾಗುತ್ತದೆ. ಮತ್ತೆ ಕಂಪ್ಯೂಟರ್ ಆಟ ಸೂಪರ್ ಮಾರಿಯೋವನ್ನು ಕಲ್ಪಿಸಿ. ನೀವು ಮಾರಿಯೋ, ನೀವು ಆಟದ ಮಟ್ಟದಲ್ಲಿ ಇದ್ದೀರಿ, ಒಂದು ಹಿಮ್ಮುಖದ ಬದಿಯ ಬಳಿ ನಿಂತಿದ್ದೀರಿ. ನಿಮ್ಮ ಮೇಲಿರುವುದು ನಾಣ್ಯ. ನೀವು ಮಾರಿಯೋ ಆಗಿದ್ದೀರಿ, ಆಟದ ಮಟ್ಟದಲ್ಲಿ, ನಿರ್ದಿಷ್ಟ ಸ್ಥಾನದಲ್ಲಿ ... ಅದು ನಿಮ್ಮ ಸ್ಥಿತಿ. ಬಲಕ್ಕೆ ಒಂದು ಹೆಜ್ಜೆ ಸಾಗುವುದು (ಒಂದು ಕ್ರಿಯೆ) ನಿಮ್ಮನ್ನು ಬದಿಯ ಮೇಲೆ ಕಳುಹಿಸುತ್ತದೆ, ಮತ್ತು ಅದರಿಂದ ನಿಮಗೆ ಕಡಿಮೆ ಸಂಖ್ಯಾತ್ಮಕ ಅಂಕ ಸಿಗುತ್ತದೆ. ಆದರೆ, ಜಂಪ್ ಬಟನ್ ಒತ್ತಿದರೆ ನೀವು ಒಂದು ಅಂಕ ಪಡೆಯುತ್ತೀರಿ ಮತ್ತು ಜೀವಂತವಾಗಿರುತ್ತೀರಿ. ಅದು ಧನಾತ್ಮಕ ಫಲಿತಾಂಶ ಮತ್ತು ಅದಕ್ಕೆ ಧನಾತ್ಮಕ ಸಂಖ್ಯಾತ್ಮಕ ಅಂಕ ನೀಡಬೇಕು. + +ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ ಮತ್ತು ಸಿಮ್ಯುಲೇಟರ್ (ಆಟ) ಬಳಸಿ, ನೀವು ಆಟವನ್ನು ಹೇಗೆ ಆಡಬೇಕು ಎಂದು ಕಲಿಯಬಹುದು, ಬಹುಮಾನವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸುವುದು ಎಂದರೆ ಜೀವಂತವಾಗಿದ್ದು ಸಾಧ್ಯವಾದಷ್ಟು ಅಂಕಗಳನ್ನು ಪಡೆಯುವುದು. + +[![ಬಲವರ್ಧಿತ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಡ್ಮಿಟ್ರಿ ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವನ್ನು ಚರ್ಚಿಸುವುದನ್ನು ಕೇಳಿ + +## [ಪೂರ್ವ-ವ್ಯಾಖ್ಯಾನ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ಪೂರ್ವಾಪೇಕ್ಷೆಗಳು ಮತ್ತು ಸೆಟಪ್ + +ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಪೈಥಾನ್‌ನಲ್ಲಿ ಕೆಲವು ಕೋಡ್‌ಗಳೊಂದಿಗೆ ಪ್ರಯೋಗ ಮಾಡಲಿದ್ದೇವೆ. ನೀವು ಈ ಪಾಠದ ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್ ಕೋಡ್ ಅನ್ನು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಅಥವಾ ಕ್ಲೌಡ್‌ನಲ್ಲಿ ಎಲ್ಲಿ ಬೇಕಾದರೂ ಚಾಲನೆ ಮಾಡಬಲ್ಲಿರಿ. + +ನೀವು [ಪಾಠ ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) ತೆರೆಯಬಹುದು ಮತ್ತು ಈ ಪಾಠವನ್ನು ಅನುಸರಿಸಬಹುದು. + +> **ಗಮನಿಸಿ:** ನೀವು ಈ ಕೋಡ್ ಅನ್ನು ಕ್ಲೌಡ್‌ನಿಂದ ತೆರೆಯುತ್ತಿದ್ದರೆ, ನೀವು [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ಫೈಲ್ ಅನ್ನು ಕೂಡ ಪಡೆಯಬೇಕು, ಇದು ನೋಟ್ಬುಕ್ ಕೋಡ್‌ನಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ. ಅದನ್ನು ನೋಟ್ಬುಕ್ ಇರುವ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಸೇರಿಸಿ. + +## ಪರಿಚಯ + +ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ರಷ್ಯನ್ ಸಂಗೀತ ರಚಯಿತೃ [ಸೆರ್ಗೇ ಪ್ರೊಕೊಫಿಯೆವ್](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ಅವರ ಸಂಗೀತ ಕಥೆಯ ಪ್ರೇರಣೆಯಿಂದ **[ಪೀಟರ್ ಮತ್ತು ವೋಲ್ಫ್](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** ಜಗತ್ತನ್ನು ಅನ್ವೇಷಿಸುವೆವು. ನಾವು **ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ** ಬಳಸಿ ಪೀಟರ್ ತನ್ನ ಪರಿಸರವನ್ನು ಅನ್ವೇಷಿಸಿ, ರುಚಿಕರ ಆಪಲ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಿ ಮತ್ತು ನರಿ ಭೇಟಿಯಾಗುವುದನ್ನು ತಪ್ಪಿಸುವಂತೆ ಮಾಡುತ್ತೇವೆ. + +**ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ** (RL) ಒಂದು ಅಧ್ಯಯನ ತಂತ್ರಜ್ಞಾನ, ಇದು ನಮಗೆ ಒಂದು **ಪರಿಸರ**ದಲ್ಲಿ **ಏಜೆಂಟ್**ನ ಅತ್ಯುತ್ತಮ ವರ್ತನೆಯನ್ನು ಅನೇಕ ಪ್ರಯೋಗಗಳನ್ನು ನಡೆಸಿ ಕಲಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಈ ಪರಿಸರದಲ್ಲಿ ಏಜೆಂಟ್‌ಗೆ ಕೆಲವು **ಗುರಿ** ಇರಬೇಕು, ಅದು **ಬಹುಮಾನ ಕಾರ್ಯ** ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುತ್ತದೆ. + +## ಪರಿಸರ + +ಸರಳತೆಗೆ, ಪೀಟರ್‌ನ ಜಗತ್ತನ್ನು `width` x `height` ಗಾತ್ರದ ಚದರ ಫಲಕ ಎಂದು ಪರಿಗಣಿಸೋಣ, ಹೀಗೆ: + +![ಪೀಟರ್‌ನ ಪರಿಸರ](../../../../translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.kn.png) + +ಈ ಫಲಕದ ಪ್ರತಿ ಸೆಲ್ ಇವುಗಳಲ್ಲಿ ಒಂದಾಗಿರಬಹುದು: + +* **ಭೂಮಿ**, ಇದರಲ್ಲಿ ಪೀಟರ್ ಮತ್ತು ಇತರ ಜೀವಿಗಳು ನಡೆಯಬಹುದು. +* **ನೀರು**, ಇದರಲ್ಲಿ ನೀವು ಸ್ಪಷ್ಟವಾಗಿ ನಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ. +* **ಮರ** ಅಥವಾ **ಹುಲ್ಲು**, ವಿಶ್ರಾಂತಿ ಪಡೆಯಲು ಸ್ಥಳ. +* **ಆಪಲ್**, ಇದು ಪೀಟರ್ ತನ್ನ ಆಹಾರಕ್ಕಾಗಿ ಹುಡುಕಲು ಇಚ್ಛಿಸುವ ವಸ್ತು. +* **ನರಿ**, ಇದು ಅಪಾಯಕಾರಿಯಾಗಿದ್ದು ತಪ್ಪಿಸಿಕೊಳ್ಳಬೇಕು. + +ಈ ಪರಿಸರದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು Python ನಲ್ಲಿ ಪ್ರತ್ಯೇಕ ಮಾಯಾಜಾಲ [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ಇದೆ. ಈ ಕೋಡ್ ನಮ್ಮ ಕಲ್ಪನೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮುಖ್ಯವಲ್ಲದ ಕಾರಣ, ನಾವು ಈ ಮಾಯಾಜಾಲವನ್ನು ಆಮದುಮಾಡಿ ಮಾದರಿ ಫಲಕವನ್ನು ರಚಿಸಲು ಬಳಸುತ್ತೇವೆ (ಕೋಡ್ ಬ್ಲಾಕ್ 1): + +```python +from rlboard import * + +width, height = 8,8 +m = Board(width,height) +m.randomize(seed=13) +m.plot() +``` + +ಈ ಕೋಡ್ ಮೇಲಿನ ಪರಿಸರದ ಚಿತ್ರವನ್ನು ಮುದ್ರಣ ಮಾಡಬೇಕು. + +## ಕ್ರಿಯೆಗಳು ಮತ್ತು ನೀತಿ + +ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ಪೀಟರ್‌ನ ಗುರಿ ಆಪಲ್ ಹುಡುಕುವುದು, ನರಿ ಮತ್ತು ಇತರ ಅಡ್ಡಿ ಅಡ್ಡಿಗಳನ್ನು ತಪ್ಪಿಸುವುದು. ಇದಕ್ಕಾಗಿ, ಅವನು ಸುತ್ತಾಡಿ ಆಪಲ್ ಕಂಡುಹಿಡಿಯಬಹುದು. + +ಆದ್ದರಿಂದ, ಯಾವುದೇ ಸ್ಥಾನದಲ್ಲಿ ಅವನು ಕೆಳಗಿನ ಕ್ರಿಯೆಗಳೊಂದನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು: ಮೇಲಕ್ಕೆ, ಕೆಳಗೆ, ಎಡಕ್ಕೆ ಮತ್ತು ಬಲಕ್ಕೆ. + +ನಾವು ಆ ಕ್ರಿಯೆಗಳನ್ನು ಡಿಕ್ಷನರಿಯಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಿ, ಅವುಗಳನ್ನು ಸಂಬಂಧಿತ ಸಂಯೋಜನೆ ಬದಲಾವಣೆಗಳ ಜೋಡಿಗೆ ನಕ್ಷೆ ಮಾಡುತ್ತೇವೆ. ಉದಾಹರಣೆಗೆ, ಬಲಕ್ಕೆ ಸಾಗುವುದು (`R`) ಜೋಡಿ `(1,0)`ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. (ಕೋಡ್ ಬ್ಲಾಕ್ 2): + +```python +actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) } +action_idx = { a : i for i,a in enumerate(actions.keys()) } +``` + +ಸಾರಾಂಶವಾಗಿ, ಈ ದೃಶ್ಯದ ತಂತ್ರ ಮತ್ತು ಗುರಿ ಹೀಗಿವೆ: + +- **ತಂತ್ರ**, ನಮ್ಮ ಏಜೆಂಟ್ (ಪೀಟರ್) ಗೆ ಸಂಬಂಧಿಸಿದಂತೆ, ಅದನ್ನು **ನೀತಿ** ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ನೀತಿ ಎಂದರೆ ಯಾವುದೇ ಸ್ಥಿತಿಯಲ್ಲಿ ಕ್ರಿಯೆಯನ್ನು ನೀಡುವ ಕಾರ್ಯ. ನಮ್ಮಲ್ಲಿ, ಸಮಸ್ಯೆಯ ಸ್ಥಿತಿ ಫಲಕದಿಂದ ಮತ್ತು ಆಟಗಾರನ ಪ್ರಸ್ತುತ ಸ್ಥಾನದಿಂದ ಪ್ರತಿನಿಧಿಸಲಾಗಿದೆ. + +- **ಗುರಿ**, ಬಲವರ್ಧಿತ ಅಧ್ಯಯನದ ಗುರಿ ಉತ್ತಮ ನೀತಿಯನ್ನು ಕಲಿಯುವುದು, ಇದು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಪರಿಹರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಮೂಲಭೂತವಾಗಿ, ನಾವು ಸರಳ ನೀತಿ ಎಂದರೆ **ಯಾದೃಚ್ಛಿಕ ನಡೆ** ಅನ್ನು ಪರಿಗಣಿಸೋಣ. + +## ಯಾದೃಚ್ಛಿಕ ನಡೆ + +ಮೊದಲು, ನಾವು ಯಾದೃಚ್ಛಿಕ ನಡೆ ತಂತ್ರವನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ ನಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸೋಣ. ಯಾದೃಚ್ಛಿಕ ನಡೆ ಮೂಲಕ, ನಾವು ಅನುಮತಿಸಲಾದ ಕ್ರಿಯೆಗಳಲ್ಲಿಂದ ಯಾದೃಚ್ಛಿಕವಾಗಿ ಮುಂದಿನ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತೇವೆ, ಆಪಲ್ ತಲುಪುವವರೆಗೆ (ಕೋಡ್ ಬ್ಲಾಕ್ 3). + +1. ಕೆಳಗಿನ ಕೋಡ್ ಬಳಸಿ ಯಾದೃಚ್ಛಿಕ ನಡೆ ಅನುಷ್ಠಾನಗೊಳಿಸಿ: + + ```python + def random_policy(m): + return random.choice(list(actions)) + + def walk(m,policy,start_position=None): + n = 0 # ಹೆಜ್ಜೆಗಳ ಸಂಖ್ಯೆ + # ಪ್ರಾರಂಭಿಕ ಸ್ಥಾನವನ್ನು ಹೊಂದಿಸಿ + if start_position: + m.human = start_position + else: + m.random_start() + while True: + if m.at() == Board.Cell.apple: + return n # ಯಶಸ್ಸು! + if m.at() in [Board.Cell.wolf, Board.Cell.water]: + return -1 # ನರಿ ತಿಂದ ಅಥವಾ ಮುಳುಗಿದ + while True: + a = actions[policy(m)] + new_pos = m.move_pos(m.human,a) + if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water: + m.move(a) # ನಿಜವಾದ ಚಲನೆ ಮಾಡಿ + break + n+=1 + + walk(m,random_policy) + ``` + + `walk` ಕರೆ ಸಂಬಂಧಿತ ಮಾರ್ಗದ ಉದ್ದವನ್ನು ಹಿಂತಿರುಗಿಸಬೇಕು, ಇದು ಪ್ರತಿ ಓಟದಲ್ಲಿ ಬದಲಾಗಬಹುದು. + +1. ಯಾದೃಚ್ಛಿಕ ನಡೆ ಪ್ರಯೋಗವನ್ನು ಹಲವಾರು ಬಾರಿ (ಹೇಳಿ, 100) ನಡೆಸಿ, ಫಲಿತಾಂಶದ ಅಂಕಿಅಂಶಗಳನ್ನು ಮುದ್ರಿಸಿ (ಕೋಡ್ ಬ್ಲಾಕ್ 4): + + ```python + def print_statistics(policy): + s,w,n = 0,0,0 + for _ in range(100): + z = walk(m,policy) + if z<0: + w+=1 + else: + s += z + n += 1 + print(f"Average path length = {s/n}, eaten by wolf: {w} times") + + print_statistics(random_policy) + ``` + + ಗಮನಿಸಿ, ಮಾರ್ಗದ ಸರಾಸರಿ ಉದ್ದವು ಸುಮಾರು 30-40 ಹೆಜ್ಜೆಗಳಷ್ಟಿದೆ, ಇದು ಬಹಳಷ್ಟು, ಏಕೆಂದರೆ ಸಮೀಪದ ಆಪಲ್‌ಗೆ ಸರಾಸರಿ ದೂರವು ಸುಮಾರು 5-6 ಹೆಜ್ಜೆಗಳಷ್ಟಿದೆ. + + ನೀವು ಪೀಟರ್‌ನ ಚಲನವಲನವನ್ನು ಯಾದೃಚ್ಛಿಕ ನಡೆ ಸಮಯದಲ್ಲಿ ಹೇಗಿದೆ ಎಂದು ಕೂಡ ನೋಡಬಹುದು: + + ![ಪೀಟರ್‌ನ ಯಾದೃಚ್ಛಿಕ ನಡೆ](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + +## ಬಹುಮಾನ ಕಾರ್ಯ + +ನಮ್ಮ ನೀತಿಯನ್ನು ಹೆಚ್ಚು ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ ಮಾಡಲು, ಯಾವ ಚಲನೆಗಳು "ಮೇಲ್ಮಟ್ಟ" ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. ಇದಕ್ಕಾಗಿ, ನಾವು ನಮ್ಮ ಗುರಿಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬೇಕು. + +ಗುರಿಯನ್ನು **ಬಹುಮಾನ ಕಾರ್ಯ** ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು, ಇದು ಪ್ರತಿ ಸ್ಥಿತಿಗೆ ಕೆಲವು ಅಂಕ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಸಂಖ್ಯೆ ಹೆಚ್ಚು ಇದ್ದರೆ, ಬಹುಮಾನ ಕಾರ್ಯ ಉತ್ತಮ. (ಕೋಡ್ ಬ್ಲಾಕ್ 5) + +```python +move_reward = -0.1 +goal_reward = 10 +end_reward = -10 + +def reward(m,pos=None): + pos = pos or m.human + if not m.is_valid(pos): + return end_reward + x = m.at(pos) + if x==Board.Cell.water or x == Board.Cell.wolf: + return end_reward + if x==Board.Cell.apple: + return goal_reward + return move_reward +``` + +ಬಹುಮಾನ ಕಾರ್ಯಗಳ ಬಗ್ಗೆ ಆಸಕ್ತಿದಾಯಕ ವಿಷಯವೆಂದರೆ, ಬಹುತೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ, *ನಾವು ಆಟದ ಕೊನೆಯಲ್ಲಿ ಮಾತ್ರ ಮಹತ್ವದ ಬಹುಮಾನವನ್ನು ಪಡೆಯುತ್ತೇವೆ*. ಇದರರ್ಥ ನಮ್ಮ ಅಲ್ಗೋರಿದಮ್ "ಚೆನ್ನಾದ" ಹೆಜ್ಜೆಗಳನ್ನು ನೆನಪಿಡಬೇಕು, ಅವು ಕೊನೆಯಲ್ಲಿ ಧನಾತ್ಮಕ ಬಹುಮಾನಕ್ಕೆ ಕಾರಣವಾಗುತ್ತವೆ ಮತ್ತು ಅವುಗಳ ಮಹತ್ವವನ್ನು ಹೆಚ್ಚಿಸಬೇಕು. ಹಾಗೆಯೇ, ಕೆಟ್ಟ ಫಲಿತಾಂಶಗಳಿಗೆ ಕಾರಣವಾಗುವ ಎಲ್ಲಾ ಚಲನೆಯನ್ನು ತಡೆಯಬೇಕು. + +## ಕ್ಯೂ-ಅಧ್ಯಯನ + +ನಾವು ಇಲ್ಲಿ ಚರ್ಚಿಸುವ ಅಲ್ಗೋರಿದಮ್ ಅನ್ನು **ಕ್ಯೂ-ಅಧ್ಯಯನ** ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಈ ಅಲ್ಗೋರಿದಮ್‌ನಲ್ಲಿ, ನೀತಿ ಒಂದು ಕಾರ್ಯ (ಅಥವಾ ಡೇಟಾ ರಚನೆ) ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುತ್ತದೆ, ಅದನ್ನು **ಕ್ಯೂ-ಟೇಬಲ್** ಎಂದು ಕರೆಯುತ್ತಾರೆ. ಇದು ನೀಡಲಾದ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ರತಿ ಕ್ರಿಯೆಯ "ಚೆನ್ನಾಗಿರುವಿಕೆ" ಅನ್ನು ದಾಖಲಿಸುತ್ತದೆ. + +ಇದನ್ನು ಕ್ಯೂ-ಟೇಬಲ್ ಎಂದು ಕರೆಯುತ್ತಾರೆ ಏಕೆಂದರೆ ಅದನ್ನು ಟೇಬಲ್ ಅಥವಾ ಬಹು-ಮಾನದ ಅರೇ ಆಗಿ ಪ್ರತಿನಿಧಿಸುವುದು ಅನುಕೂಲಕರ. ನಮ್ಮ ಫಲಕವು `width` x `height` ಆಯಾಮಗಳಿದ್ದು, ನಾವು ಕ್ಯೂ-ಟೇಬಲ್ ಅನ್ನು numpy ಅರೇ ಆಗಿ `width` x `height` x `len(actions)` ಆಕಾರದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸಬಹುದು: (ಕೋಡ್ ಬ್ಲಾಕ್ 6) + +```python +Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) +``` + +ನಾವು ಕ್ಯೂ-ಟೇಬಲ್‌ನ ಎಲ್ಲಾ ಮೌಲ್ಯಗಳನ್ನು ಸಮಾನ ಮೌಲ್ಯದಿಂದ ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ, ನಮ್ಮಲ್ಲಿ - 0.25. ಇದು "ಯಾದೃಚ್ಛಿಕ ನಡೆ" ನೀತಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಪ್ರತಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಎಲ್ಲಾ ಚಲನೆಗಳು ಸಮಾನವಾಗಿ ಉತ್ತಮ. ನಾವು `plot` ಕಾರ್ಯಕ್ಕೆ ಕ್ಯೂ-ಟೇಬಲ್ ಅನ್ನು ಪಾಸ್ ಮಾಡಿ ಫಲಕದಲ್ಲಿ ಟೇಬಲ್ ಅನ್ನು ದೃಶ್ಯೀಕರಿಸಬಹುದು: `m.plot(Q)`. + +![ಪೀಟರ್‌ನ ಪರಿಸರ](../../../../translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.kn.png) + +ಪ್ರತಿ ಸೆಲ್‌ನ ಮಧ್ಯದಲ್ಲಿ ಚಲನೆಯ ಇಚ್ಛಿತ ದಿಕ್ಕನ್ನು ಸೂಚಿಸುವ "ಬಾಣ" ಇದೆ. ಎಲ್ಲಾ ದಿಕ್ಕುಗಳು ಸಮಾನವಾಗಿರುವುದರಿಂದ, ಬಿಂದು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ. + +ಈಗ ನಾವು ಸಿಮ್ಯುಲೇಶನ್ ನಡೆಸಿ, ನಮ್ಮ ಪರಿಸರವನ್ನು ಅನ್ವೇಷಿಸಿ, ಮತ್ತು ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳ ಉತ್ತಮ ವಿತರಣೆ ಕಲಿಯಬೇಕು, ಇದು ಆಪಲ್‌ಗೆ ದಾರಿಯನ್ನು ಹೆಚ್ಚು ವೇಗವಾಗಿ ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +## ಕ್ಯೂ-ಅಧ್ಯಯನದ ಸಾರಾಂಶ: ಬೆಲ್ಮನ್ ಸಮೀಕರಣ + +ನಾವು ಚಲಿಸಲು ಪ್ರಾರಂಭಿಸಿದಾಗ, ಪ್ರತಿ ಕ್ರಿಯೆಗೆ ಸಂಬಂಧಿಸಿದ ಬಹುಮಾನ ಇರುತ್ತದೆ, ಅಂದರೆ ನಾವು ತಕ್ಷಣದ ಬಹುಮಾನ ಆಧರಿಸಿ ಮುಂದಿನ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು. ಆದರೆ, ಬಹುತೇಕ ಸ್ಥಿತಿಗಳಲ್ಲಿ, ಚಲನೆ ನಮ್ಮ ಗುರಿ ಆಪಲ್ ತಲುಪುವುದನ್ನು ಸಾಧಿಸುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಯಾವ ದಿಕ್ಕು ಉತ್ತಮ ಎಂದು ತಕ್ಷಣ ನಿರ್ಧರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. + +> ತಕ್ಷಣದ ಫಲಿತಾಂಶವೇ ಮುಖ್ಯವಲ್ಲ, ಆದರೆ ಸಿಮ್ಯುಲೇಶನ್ ಕೊನೆಯಲ್ಲಿ ಪಡೆಯುವ ಅಂತಿಮ ಫಲಿತಾಂಶವೇ ಮುಖ್ಯ. + +ಈ ವಿಳಂಬಿತ ಬಹುಮಾನವನ್ನು ಪರಿಗಣಿಸಲು, ನಾವು **[ಡೈನಾಮಿಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್](https://en.wikipedia.org/wiki/Dynamic_programming)** ತತ್ವಗಳನ್ನು ಬಳಸಬೇಕು, ಇದು ನಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು ಪುನರಾವರ್ತಿತವಾಗಿ ಯೋಚಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +ನಾವು ಈಗ ಸ್ಥಿತಿ *s* ನಲ್ಲಿ ಇದ್ದೇವೆಂದು ಕಲ್ಪಿಸೋಣ, ಮತ್ತು ಮುಂದಿನ ಸ್ಥಿತಿ *s'* ಗೆ ಸಾಗಲು ಬಯಸುತ್ತೇವೆ. ಇದರಿಂದ, ನಾವು ತಕ್ಷಣದ ಬಹುಮಾನ *r(s,a)* ಪಡೆಯುತ್ತೇವೆ, ಇದು ಬಹುಮಾನ ಕಾರ್ಯದಿಂದ ವ್ಯಾಖ್ಯಾನಿತ, ಜೊತೆಗೆ ಕೆಲವು ಭವಿಷ್ಯ ಬಹುಮಾನ. ನಮ್ಮ ಕ್ಯೂ-ಟೇಬಲ್ ಪ್ರತಿ ಕ್ರಿಯೆಯ "ಆಕರ್ಷಕತೆ" ಅನ್ನು ಸರಿಯಾಗಿ ಪ್ರತಿಬಿಂಬಿಸುವುದಾಗಿ ಊಹಿಸಿದರೆ, ಸ್ಥಿತಿ *s'* ನಲ್ಲಿ ನಾವು ಕ್ರಿಯೆ *a'* ಆಯ್ಕೆಮಾಡುತ್ತೇವೆ, ಅದು ಗರಿಷ್ಠ ಮೌಲ್ಯದ *Q(s',a')* ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ, ಸ್ಥಿತಿ *s* ನಲ್ಲಿ ನಾವು ಪಡೆಯಬಹುದಾದ ಅತ್ಯುತ್ತಮ ಭವಿಷ್ಯ ಬಹುಮಾನವನ್ನು `max`a'*Q(s',a')* ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು (ಇಲ್ಲಿ ಗರಿಷ್ಠವು ಎಲ್ಲಾ ಸಾಧ್ಯ ಕ್ರಿಯೆಗಳ ಮೇಲೆ ಲೆಕ್ಕಿಸಲಾಗುತ್ತದೆ). + +ಇದು ಸ್ಥಿತಿ *s* ನಲ್ಲಿ ಕ್ರಿಯೆ *a* ಗೆ ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯವನ್ನು ಲೆಕ್ಕಿಸುವ **ಬೆಲ್ಮನ್ ಸೂತ್ರ** ನೀಡುತ್ತದೆ: + + + +ಇಲ್ಲಿ γ ಅನ್ನು **ಡಿಸ್ಕೌಂಟ್ ಫ್ಯಾಕ್ಟರ್** ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಇದು ನೀವು ಪ್ರಸ್ತುತ ಬಹುಮಾನವನ್ನು ಭವಿಷ್ಯ ಬಹುಮಾನಕ್ಕಿಂತ ಎಷ್ಟು ಪ್ರಾಧಾನ್ಯತೆ ನೀಡಬೇಕು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. + +## ಅಧ್ಯಯನ ಅಲ್ಗೋರಿದಮ್ + +ಮೇಲಿನ ಸಮೀಕರಣವನ್ನು ಆಧರಿಸಿ, ನಾವು ಈಗ ನಮ್ಮ ಅಧ್ಯಯನ ಅಲ್ಗೋರಿದಮ್‌ಗೆ ಪ್ಸ್ಯೂಡೋ-ಕೋಡ್ ಬರೆಯಬಹುದು: + +* ಎಲ್ಲಾ ಸ್ಥಿತಿಗಳು ಮತ್ತು ಕ್ರಿಯೆಗಳಿಗಾಗಿ ಸಮಾನ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ ಕ್ಯೂ-ಟೇಬಲ್ Q ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ +* ಅಧ್ಯಯನ ದರ α ← 1 ಸೆಟ್ ಮಾಡಿ +* ಅನೇಕ ಬಾರಿ ಸಿಮ್ಯುಲೇಶನ್ ಪುನರಾವರ್ತಿಸಿ + 1. ಯಾದೃಚ್ಛಿಕ ಸ್ಥಾನದಿಂದ ಪ್ರಾರಂಭಿಸಿ + 1. ಪುನರಾವರ್ತಿಸಿ + 1. ಸ್ಥಿತಿ *s* ನಲ್ಲಿ ಕ್ರಿಯೆ *a* ಆಯ್ಕೆಮಾಡಿ + 2. ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಿ ಮತ್ತು ಹೊಸ ಸ್ಥಿತಿ *s'* ಗೆ ಸಾಗಿರಿ + 3. ಆಟದ ಅಂತ್ಯ ಅಥವಾ ಒಟ್ಟು ಬಹುಮಾನ ತುಂಬಾ ಕಡಿಮೆ ಇದ್ದರೆ ಸಿಮ್ಯುಲೇಶನ್ ನಿಲ್ಲಿಸಿ + 4. ಹೊಸ ಸ್ಥಿತಿಯಲ್ಲಿ ಬಹುಮಾನ *r* ಲೆಕ್ಕಿಸಿ + 5. ಬೆಲ್ಮನ್ ಸಮೀಕರಣದ ಪ್ರಕಾರ ಕ್ಯೂ-ಕಾರ್ಯವನ್ನು ನವೀಕರಿಸಿ: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. ಒಟ್ಟು ಬಹುಮಾನವನ್ನು ನವೀಕರಿಸಿ ಮತ್ತು α ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿ. + +## ಅನ್ವೇಷಣೆ ಮತ್ತು ಉಪಯೋಗ + +ಮೇಲಿನ ಅಲ್ಗೋರಿದಮ್‌ನಲ್ಲಿ, ನಾವು 2.1 ಹಂತದಲ್ಲಿ ಕ್ರಿಯೆಯನ್ನು ಹೇಗೆ ಆಯ್ಕೆ ಮಾಡಬೇಕು ಎಂದು ಸ್ಪಷ್ಟಪಡಿಸಿಲ್ಲ. ನಾವು ಕ್ರಿಯೆಯನ್ನು ಯಾದೃಚ್ಛಿಕವಾಗಿ ಆಯ್ಕೆ ಮಾಡಿದರೆ, ನಾವು ಪರಿಸರವನ್ನು ಯಾದೃಚ್ಛಿಕವಾಗಿ **ಅನ್ವೇಷಿಸುತ್ತೇವೆ**, ಮತ್ತು ನಾವು ಬಹುಶಃ ಹೆಚ್ಚು ಸಾರಿ ಸಾಯಬಹುದು ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ಹೋಗದ ಪ್ರದೇಶಗಳನ್ನು ಅನ್ವೇಷಿಸಬಹುದು. ಪರ್ಯಾಯವಾಗಿ, ನಾವು ಈಗಾಗಲೇ ತಿಳಿದಿರುವ ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳನ್ನು **ಉಪಯೋಗಿಸಿ**, ಸ್ಥಿತಿ *s* ನಲ್ಲಿ ಅತ್ಯುತ್ತಮ ಕ್ರಿಯೆಯನ್ನು (ಹೆಚ್ಚಿನ ಕ್ಯೂ-ಮೌಲ್ಯ) ಆಯ್ಕೆ ಮಾಡಬಹುದು. ಆದರೆ ಇದು ಇತರ ಸ್ಥಿತಿಗಳನ್ನು ಅನ್ವೇಷಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ ಮತ್ತು ನಾವು ಅತ್ಯುತ್ತಮ ಪರಿಹಾರವನ್ನು ಕಂಡುಹಿಡಿಯದಿರಬಹುದು. + +ಆದ್ದರಿಂದ, ಉತ್ತಮ ವಿಧಾನವು ಅನ್ವೇಷಣೆ ಮತ್ತು ಉಪಯೋಗದ ನಡುವೆ ಸಮತೋಲನ ಸಾಧಿಸುವುದು. ಇದು ಸ್ಥಿತಿ *s* ನಲ್ಲಿ ಕ್ರಿಯೆಯನ್ನು ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳಿಗೆ ಅನುಪಾತಿಕ ಪ್ರಾಬಬಿಲಿಟಿಗಳೊಂದಿಗೆ ಆಯ್ಕೆಮಾಡುವ ಮೂಲಕ ಮಾಡಬಹುದು. ಆರಂಭದಲ್ಲಿ, ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳು ಎಲ್ಲವೂ ಸಮಾನವಾಗಿರುವಾಗ, ಇದು ಯಾದೃಚ್ಛಿಕ ಆಯ್ಕೆ ಆಗಿರುತ್ತದೆ, ಆದರೆ ನಾವು ನಮ್ಮ ಪರಿಸರವನ್ನು ಹೆಚ್ಚು ಕಲಿತಂತೆ, ನಾವು ಅತ್ಯುತ್ತಮ ಮಾರ್ಗವನ್ನು ಅನುಸರಿಸುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚಾಗುತ್ತದೆ ಮತ್ತು ಏಜೆಂಟ್‌ಗಿಗೆ ಕೆಲವೊಮ್ಮೆ ಅನ್ವೇಷಿಸದ ಮಾರ್ಗವನ್ನು ಆಯ್ಕೆಮಾಡಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ. + +## ಪೈಥಾನ್ ಅನುಷ್ಠಾನ + +ನಾವು ಈಗ ಅಧ್ಯಯನ ಅಲ್ಗೋರಿದಮ್ ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೇವೆ. ಅದಕ್ಕೆ ಮುಂಚೆ, ನಾವು ಕ್ಯೂ-ಟೇಬಲ್‌ನ任意 ಸಂಖ್ಯೆಗಳನ್ನೂ ಸಂಬಂಧಿತ ಕ್ರಿಯೆಗಳ ಪ್ರಾಬಬಿಲಿಟಿಗಳ ವೆಕ್ಟರ್‌ಗೆ ಪರಿವರ್ತಿಸುವ ಕಾರ್ಯ ಬೇಕಾಗುತ್ತದೆ. + +1. `probs()` ಎಂಬ ಕಾರ್ಯವನ್ನು ರಚಿಸಿ: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + ನಾವು ಮೂಲ ವೆಕ್ಟರ್‌ಗೆ ಕೆಲವು `eps` ಸೇರಿಸುತ್ತೇವೆ, ಆರಂಭಿಕ ಸ್ಥಿತಿಯಲ್ಲಿ ಎಲ್ಲ ಘಟಕಗಳೂ ಸಮಾನವಾಗಿರುವಾಗ ಶೂನ್ಯದಿಂದ ಭಾಗಿಸುವುದನ್ನು ತಪ್ಪಿಸಲು. + +5000 ಪ್ರಯೋಗಗಳ ಮೂಲಕ ಅಧ್ಯಯನ ಅಲ್ಗೋರಿದಮ್ ಅನ್ನು ನಡೆಸಿ, ಇದನ್ನು **ಎಪೋಕ್ಸ್** ಎಂದು ಕರೆಯುತ್ತಾರೆ: (ಕೋಡ್ ಬ್ಲಾಕ್ 8) +```python + for epoch in range(5000): + + # ಪ್ರಾರಂಭಿಕ ಬಿಂದುವನ್ನು ಆಯ್ಕೆಮಾಡಿ + m.random_start() + + # ಪ್ರಯಾಣವನ್ನು ಪ್ರಾರಂಭಿಸಿ + n=0 + cum_reward = 0 + while True: + x,y = m.human + v = probs(Q[x,y]) + a = random.choices(list(actions),weights=v)[0] + dpos = actions[a] + m.move(dpos,check_correctness=False) # ನಾವು ಆಟಗಾರನಿಗೆ ಫಲಕದ ಹೊರಗೆ ಚಲಿಸಲು ಅನುಮತಿಸುತ್ತೇವೆ, ಇದು ಎಪಿಸೋಡ್ ಅನ್ನು ಮುಕ್ತಾಯಗೊಳಿಸುತ್ತದೆ + r = reward(m) + cum_reward += r + if r==end_reward or cum_reward < -1000: + lpath.append(n) + break + alpha = np.exp(-n / 10e5) + gamma = 0.5 + ai = action_idx[a] + Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max()) + n+=1 +``` + +ಈ ಅಲ್ಗೋರಿದಮ್ ಅನ್ನು ನಿರ್ವಹಿಸಿದ ನಂತರ, ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳು ನವೀಕರಿಸಲಾಗುತ್ತದೆ, ಅವು ಪ್ರತಿ ಹೆಜ್ಜೆಯಲ್ಲಿ ವಿಭಿನ್ನ ಕ್ರಿಯೆಗಳ ಆಕರ್ಷಕತೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತವೆ. ನಾವು ಕ್ಯೂ-ಟೇಬಲ್ ಅನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಪ್ರಯತ್ನಿಸಬಹುದು, ಪ್ರತಿ ಸೆಲ್‌ನಲ್ಲಿ ಒಂದು ವೆಕ್ಟರ್ ಅನ್ನು ಚಿತ್ರಿಸಿ ಅದು ಚಲನೆಯ ಇಚ್ಛಿತ ದಿಕ್ಕನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಸರಳತೆಗೆ, ನಾವು ಬಾಣದ ತಲೆ ಬದಲು ಸಣ್ಣ ವೃತ್ತವನ್ನು ಬಿಡುತ್ತೇವೆ. + + + +## ನೀತಿ ಪರಿಶೀಲನೆ + +ಕ್ಯೂ-ಟೇಬಲ್ ಪ್ರತಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ರತಿ ಕ್ರಿಯೆಯ "ಆಕರ್ಷಕತೆ" ಅನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದನ್ನು ಬಳಸಿ ನಮ್ಮ ಜಗತ್ತಿನಲ್ಲಿ ಪರಿಣಾಮಕಾರಿ ನ್ಯಾವಿಗೇಶನ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು ಸುಲಭ. ಸರಳ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು ಗರಿಷ್ಠ ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು: (ಕೋಡ್ ಬ್ಲಾಕ್ 9) + +```python +def qpolicy_strict(m): + x,y = m.human + v = probs(Q[x,y]) + a = list(actions)[np.argmax(v)] + return a + +walk(m,qpolicy_strict) +``` + +> ನೀವು ಮೇಲಿನ ಕೋಡ್ ಅನ್ನು ಹಲವಾರು ಬಾರಿ ಪ್ರಯತ್ನಿಸಿದರೆ, ಕೆಲವೊಮ್ಮೆ ಅದು "ಹ್ಯಾಂಗ್" ಆಗುತ್ತದೆ ಎಂದು ನೀವು ಗಮನಿಸಬಹುದು, ಮತ್ತು ಅದನ್ನು ಮಧ್ಯಂತರಗೊಳಿಸಲು ನೀವು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ STOP ಬಟನ್ ಒತ್ತಬೇಕಾಗುತ್ತದೆ. ಇದು ಸಂಭವಿಸುವುದು ಏಕೆಂದರೆ ಎರಡು ಸ್ಥಿತಿಗಳು ಪರಸ್ಪರ ಅತ್ಯುತ್ತಮ Q-ಮೌಲ್ಯದ ದೃಷ್ಟಿಯಿಂದ "ಸೂಚಿಸುವ" ಸಂದರ್ಭಗಳು ಇರಬಹುದು, ಇಂತಹ ಸಂದರ್ಭದಲ್ಲಿ ಏಜೆಂಟ್ ಆ ಸ್ಥಿತಿಗಳ ನಡುವೆ ಅನಂತಕಾಲ ಚಲಿಸುತ್ತಿರುತ್ತದೆ. + +## 🚀ಸವಾಲು + +> **ಕಾರ್ಯ 1:** `walk` ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಮಾರ್ಗದ ಗರಿಷ್ಠ ಉದ್ದವನ್ನು ನಿರ್ದಿಷ್ಟ ಹೆಜ್ಜೆಗಳ ಸಂಖ್ಯೆಯಿಂದ (ಹೇಳಿ, 100) ಮಿತಿಗೊಳಿಸಿ, ಮತ್ತು ಮೇಲಿನ ಕೋಡ್ ಈ ಮೌಲ್ಯವನ್ನು ಸಮಯಕಾಲಕ್ಕೆ ಹಿಂತಿರುಗಿಸುವುದನ್ನು ಗಮನಿಸಿ. + +> **ಕಾರ್ಯ 2:** `walk` ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಅದು ಈಗಾಗಲೇ ಹೋಗಿದ್ದ ಸ್ಥಳಗಳಿಗೆ ಹಿಂದಿರುಗದಂತೆ ಮಾಡಿ. ಇದರಿಂದ `walk` ಲೂಪ್ ಆಗುವುದನ್ನು ತಡೆಯಬಹುದು, ಆದರೆ ಏಜೆಂಟ್ ಇನ್ನೂ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲದ ಸ್ಥಳದಲ್ಲಿ "ಹುಡುಗಲ್ಪಟ್ಟ" ಸ್ಥಿತಿಯಲ್ಲಿ ಇರಬಹುದು. + +## ನ್ಯಾವಿಗೇಶನ್ + +ಮುಂಬರುವ ನ್ಯಾವಿಗೇಶನ್ ನೀತಿ ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ನಾವು ಬಳಸಿದ ನೀತಿಯೇ ಉತ್ತಮವಾಗಿರುತ್ತದೆ, ಅದು ಅನ್ವೇಷಣೆ ಮತ್ತು ಉಪಯೋಗವನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ. ಈ ನೀತಿಯಲ್ಲಿ, ನಾವು Q-ಟೇಬಲ್‌ನ ಮೌಲ್ಯಗಳಿಗೆ ಅನುಪಾತವಾಗಿ ಪ್ರತಿ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ದಿಷ್ಟ ಸಾಧ್ಯತೆಯಿಂದ ಆಯ್ಕೆಮಾಡುತ್ತೇವೆ. ಈ ತಂತ್ರವು ಏಜೆಂಟ್ ಈಗಾಗಲೇ ಅನ್ವೇಷಿಸಿದ ಸ್ಥಾನಕ್ಕೆ ಹಿಂತಿರುಗುವ ಸಾಧ್ಯತೆಯನ್ನು ಇನ್ನೂ ಹೊಂದಿರಬಹುದು, ಆದರೆ ಕೆಳಗಿನ ಕೋಡ್‌ನಿಂದ ನೀವು ನೋಡಬಹುದು, ಇದು ಗುರಿ ಸ್ಥಳಕ್ಕೆ ತುಂಬಾ ಚಿಕ್ಕ ಸರಾಸರಿ ಮಾರ್ಗವನ್ನು ನೀಡುತ್ತದೆ (`print_statistics` 100 ಬಾರಿ ಸಿಮ್ಯುಲೇಶನ್ ನಡೆಸುತ್ತದೆ): (ಕೋಡ್ ಬ್ಲಾಕ್ 10) + +```python +def qpolicy(m): + x,y = m.human + v = probs(Q[x,y]) + a = random.choices(list(actions),weights=v)[0] + return a + +print_statistics(qpolicy) +``` + +ಈ ಕೋಡ್ ಅನ್ನು ಚಲಾಯಿಸಿದ ನಂತರ, ನೀವು ಹಿಂದಿನದಿಗಿಂತ ಬಹಳ ಕಡಿಮೆ ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದವನ್ನು 3-6 ರ ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಪಡೆಯಬೇಕು. + +## ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪರಿಶೀಲಿಸುವುದು + +ನಾವು ಉಲ್ಲೇಖಿಸಿದಂತೆ, ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆ ಅನ್ವೇಷಣೆ ಮತ್ತು ಸಮಸ್ಯಾ ಸ್ಥಳದ ರಚನೆಯ ಬಗ್ಗೆ ಪಡೆದ ಜ್ಞಾನವನ್ನು ಅನ್ವೇಷಿಸುವ ನಡುವಿನ ಸಮತೋಲನವಾಗಿದೆ. ಕಲಿಕೆಯ ಫಲಿತಾಂಶಗಳು (ಏಜೆಂಟ್ ಗುರಿ ತಲುಪಲು ಚಿಕ್ಕ ಮಾರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯುವ ಸಾಮರ್ಥ್ಯ) ಸುಧಾರಿತವಾಗಿದೆ, ಆದರೆ ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯ ಸಮಯದಲ್ಲಿ ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದ ಹೇಗೆ ವರ್ತಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಗಮನಿಸುವುದು ಸಹ ಆಸಕ್ತಿದಾಯಕವಾಗಿದೆ: + + + +ಕಲಿಕೆಗಳನ್ನು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಹೇಳುವುದಾದರೆ: + +- **ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದ ಹೆಚ್ಚಾಗುತ್ತದೆ**. ಇಲ್ಲಿ ನಾವು ನೋಡುತ್ತಿರುವುದು ಪ್ರಾರಂಭದಲ್ಲಿ ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದ ಹೆಚ್ಚಾಗುತ್ತದೆ. ಇದು ಬಹುಶಃ ಪರಿಸರದ ಬಗ್ಗೆ ಏನೂ ತಿಳಿಯದಿರುವಾಗ, ನಾವು ಕೆಟ್ಟ ಸ್ಥಿತಿಗಳಲ್ಲಿ, ನೀರು ಅಥವಾ ನರಿ ಬಳಿ ಸಿಕ್ಕಿಬಿದ್ದಿರಬಹುದು ಎಂಬುದರಿಂದ ಆಗುತ್ತದೆ. ನಾವು ಹೆಚ್ಚು ಕಲಿತಂತೆ ಮತ್ತು ಈ ಜ್ಞಾನವನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿದಂತೆ, ನಾವು ಪರಿಸರವನ್ನು ಹೆಚ್ಚು ಅನ್ವೇಷಿಸಬಹುದು, ಆದರೆ ಆಪಲ್ಗಳು ಎಲ್ಲಿವೆ ಎಂಬುದನ್ನು ಇನ್ನೂ ಚೆನ್ನಾಗಿ ತಿಳಿಯದು. + +- **ಕಲಿತಂತೆ ಮಾರ್ಗದ ಉದ್ದ ಕಡಿಮೆಯಾಗುತ್ತದೆ**. ನಾವು ಸಾಕಷ್ಟು ಕಲಿತ ನಂತರ, ಏಜೆಂಟ್ ಗುರಿಯನ್ನು ಸಾಧಿಸುವುದು ಸುಲಭವಾಗುತ್ತದೆ, ಮತ್ತು ಮಾರ್ಗದ ಉದ್ದ ಕಡಿಮೆಯಾಗಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ನಾವು ಇನ್ನೂ ಅನ್ವೇಷಣೆಗೆ ತೆರೆಯಲಾಗಿದ್ದು, ನಾವು ಉತ್ತಮ ಮಾರ್ಗದಿಂದ ದೂರ ಹೋಗಿ ಹೊಸ ಆಯ್ಕೆಗಳನ್ನು ಅನ್ವೇಷಿಸುವುದರಿಂದ ಮಾರ್ಗವು ಅತ್ಯುತ್ತಮಕ್ಕಿಂತ ಹೆಚ್ಚು ಉದ್ದವಾಗಬಹುದು. + +- **ಉದ್ದವು ಅಕಸ್ಮಾತ್ ಹೆಚ್ಚಾಗುತ್ತದೆ**. ಈ ಗ್ರಾಫ್‌ನಲ್ಲಿ ನಾವು ಮತ್ತೊಂದು ಗಮನಿಸುವುದು, ಕೆಲ ಸಮಯದಲ್ಲಿ ಉದ್ದವು ಅಕಸ್ಮಾತ್ ಹೆಚ್ಚಾಗಿದೆ. ಇದು ಪ್ರಕ್ರಿಯೆಯ ಸಾಂಖ್ಯಿಕ ಸ್ವಭಾವವನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಮತ್ತು ನಾವು ಕೆಲ ಸಮಯದಲ್ಲಿ Q-ಟೇಬಲ್ ಗುಣಾಂಕಗಳನ್ನು ಹೊಸ ಮೌಲ್ಯಗಳಿಂದ ಮರುಬರೆಯುವ ಮೂಲಕ "ಹಾಳು" ಮಾಡಬಹುದು. ಇದನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಕಲಿಕೆಯ ದರವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು (ಉದಾಹರಣೆಗೆ, ತರಬೇತಿಯ ಕೊನೆಯಲ್ಲಿ, ನಾವು Q-ಟೇಬಲ್ ಮೌಲ್ಯಗಳನ್ನು ಸಣ್ಣ ಮೌಲ್ಯದಿಂದ ಮಾತ್ರ ಸರಿಪಡಿಸುತ್ತೇವೆ) ಸೂಕ್ತ. + +ಒಟ್ಟಾರೆ, ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯ ಯಶಸ್ಸು ಮತ್ತು ಗುಣಮಟ್ಟವು ಕಲಿಕೆಯ ದರ, ಕಲಿಕೆಯ ದರ ಕುಸಿತ, ಮತ್ತು ಡಿಸ್ಕೌಂಟ್ ಫ್ಯಾಕ್ಟರ್ ಮುಂತಾದ ಪರಿಮಾಣಗಳ ಮೇಲೆ ಬಹುಮಟ್ಟಿಗೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಅವುಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ **ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು** ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಮತ್ತು ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ನಾವು ಸುಧಾರಿಸುವ **ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು** (ಉದಾಹರಣೆಗೆ, Q-ಟೇಬಲ್ ಗುಣಾಂಕಗಳು) ಇಂದ ವಿಭಿನ್ನವಾಗಿವೆ. ಉತ್ತಮ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್ ಮೌಲ್ಯಗಳನ್ನು ಹುಡುಕುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು **ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್ ಆಪ್ಟಿಮೈಜೆಷನ್** ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಮತ್ತು ಇದು ಪ್ರತ್ಯೇಕ ವಿಷಯಕ್ಕೆ ಅರ್ಹವಾಗಿದೆ. + +## [ಪೋಸ್ಟ್-ಲೆಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ಅಸೈನ್‌ಮೆಂಟ್ +[ಹೆಚ್ಚು ವಾಸ್ತವಿಕ ಜಗತ್ತು](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/assignment.md b/translations/kn/8-Reinforcement/1-QLearning/assignment.md new file mode 100644 index 000000000..b78fc8619 --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/assignment.md @@ -0,0 +1,41 @@ + +# ಹೆಚ್ಚು ವಾಸ್ತವಿಕ ಜಗತ್ತು + +ನಮ್ಮ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ, ಪೀಟರ್ ಬಹಳಷ್ಟು ದಣಿವಾಗದೆ ಅಥವಾ ಹಸಿವಾಗದೆ ಸುತ್ತಾಡಲು ಸಾಧ್ಯವಾಯಿತು. ಹೆಚ್ಚು ವಾಸ್ತವಿಕ ಜಗತ್ತಿನಲ್ಲಿ, ನಾವು ಸಮಯಕಾಲಕ್ಕೆ ಕುಳಿತು ವಿಶ್ರಾಂತಿ ಪಡೆಯಬೇಕಾಗುತ್ತದೆ, ಮತ್ತು ತಾನೇ ಆಹಾರ ಸೇವಿಸಬೇಕಾಗುತ್ತದೆ. ಕೆಳಗಿನ ನಿಯಮಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಮೂಲಕ ನಮ್ಮ ಜಗತ್ತನ್ನು ಹೆಚ್ಚು ವಾಸ್ತವಿಕವಾಗಿಸೋಣ: + +1. ಒಂದು ಸ್ಥಳದಿಂದ ಮತ್ತೊಂದು ಸ್ಥಳಕ್ಕೆ ಚಲಿಸುವ ಮೂಲಕ, ಪೀಟರ್ **ಶಕ್ತಿ** ಕಳೆದುಕೊಳ್ಳುತ್ತಾನೆ ಮತ್ತು ಕೆಲವು **ದಣಿವು** ಗಳಿಸುತ್ತಾನೆ. +2. ಪೀಟರ್ ಸೇಬುಗಳನ್ನು ತಿಂದರೆ ಹೆಚ್ಚು ಶಕ್ತಿ ಗಳಿಸಬಹುದು. +3. ಪೀಟರ್ ಮರದ ಕೆಳಗೆ ಅಥವಾ ಹುಲ್ಲಿನ ಮೇಲೆ ವಿಶ್ರಾಂತಿ ತೆಗೆದುಕೊಂಡರೆ (ಅಂದರೆ ಮರ ಅಥವಾ ಹುಲ್ಲು ಇರುವ ಬೋರ್ಡ್ ಸ್ಥಳಕ್ಕೆ ನಡೆಯುವ ಮೂಲಕ) ದಣಿವು ಕಡಿಮೆಯಾಗುತ್ತದೆ. +4. ಪೀಟರ್ ನಾಯಿ ಹತ್ಯೆ ಮಾಡಬೇಕಾಗಿದೆ. +5. ನಾಯಿ ಹತ್ಯೆ ಮಾಡಲು, ಪೀಟರ್ ಗೆ ನಿರ್ದಿಷ್ಟ ಮಟ್ಟದ ಶಕ್ತಿ ಮತ್ತು ದಣಿವು ಇರಬೇಕು, ಇಲ್ಲದಿದ್ದರೆ ಅವನು ಯುದ್ಧವನ್ನು ಸೋಲುತ್ತಾನೆ. +## ಸೂಚನೆಗಳು + +ನಿಮ್ಮ ಪರಿಹಾರಕ್ಕಾಗಿ ಮೂಲ [notebook.ipynb](notebook.ipynb) ನೋಟ್ಬುಕ್ ಅನ್ನು ಪ್ರಾರಂಭಿಕ ಬಿಂದುವಾಗಿ ಬಳಸಿ. + +ಮೇಲಿನ ಆಟದ ನಿಯಮಗಳ ಪ್ರಕಾರ ಬಹುಮಾನ ಕಾರ್ಯವನ್ನು ತಿದ್ದುಪಡಿ ಮಾಡಿ, reinforcement learning ಆಲ್ಗಾರಿದಮ್ ಅನ್ನು ಚಲಾಯಿಸಿ ಆಟವನ್ನು ಗೆಲ್ಲಲು ಉತ್ತಮ ತಂತ್ರವನ್ನು ಕಲಿಯಿರಿ, ಮತ್ತು ಯಾದೃಚ್ಛಿಕ ನಡಿಗೆ ಮತ್ತು ನಿಮ್ಮ ಆಲ್ಗಾರಿದಮ್ ಫಲಿತಾಂಶಗಳನ್ನು ಗೆಲುವಿನ ಮತ್ತು ಸೋಲಿನ ಆಟಗಳ ಸಂಖ್ಯೆಯ ದೃಷ್ಟಿಯಿಂದ ಹೋಲಿಸಿ. + +> **ಗಮನಿಸಿ**: ನಿಮ್ಮ ಹೊಸ ಜಗತ್ತಿನಲ್ಲಿ, ಸ್ಥಿತಿ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದೆ, ಮತ್ತು ಮಾನವ ಸ್ಥಾನಕ್ಕೆ ಜೊತೆಗೆ ದಣಿವು ಮತ್ತು ಶಕ್ತಿ ಮಟ್ಟಗಳೂ ಸೇರಿವೆ. ನೀವು ಸ್ಥಿತಿಯನ್ನು (Board,energy,fatigue) ಎಂಬ ಟ್ಯೂಪಲ್ ಆಗಿ ಪ್ರತಿನಿಧಿಸಬಹುದು, ಅಥವಾ ಸ್ಥಿತಿಗಾಗಿ ಒಂದು ವರ್ಗವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು (ನೀವು ಅದನ್ನು `Board` ನಿಂದ ವಂಶಪಾರಂಪರ್ಯವಾಗಿ ಪಡೆಯಬಹುದು), ಅಥವಾ ಮೂಲ `Board` ವರ್ಗವನ್ನು [rlboard.py](../../../../8-Reinforcement/1-QLearning/rlboard.py) ಒಳಗೆ ತಿದ್ದುಪಡಿ ಮಾಡಬಹುದು. + +ನಿಮ್ಮ ಪರಿಹಾರದಲ್ಲಿ, ದಯವಿಟ್ಟು ಯಾದೃಚ್ಛಿಕ ನಡಿಗೆ ತಂತ್ರಕ್ಕಾಗಿ ಜವಾಬ್ದಾರಿಯಿರುವ ಕೋಡ್ ಅನ್ನು ಉಳಿಸಿ, ಮತ್ತು ಕೊನೆಯಲ್ಲಿ ನಿಮ್ಮ ಆಲ್ಗಾರಿದಮ್ ಫಲಿತಾಂಶಗಳನ್ನು ಯಾದೃಚ್ಛಿಕ ನಡಿಗೆಯೊಂದಿಗೆ ಹೋಲಿಸಿ. + +> **ಗಮನಿಸಿ**: ಇದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನೀವು ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಹೊಂದಿಸಬೇಕಾಗಬಹುದು, ವಿಶೇಷವಾಗಿ ಎಪೋಕ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು. ಯಾಕಂದರೆ ಆಟದ ಯಶಸ್ಸು (ನಾಯಿಯನ್ನು ಹೋರಾಡುವುದು) ಅಪರೂಪದ ಘಟನೆ, ನೀವು ಬಹಳ ಹೆಚ್ಚು ತರಬೇತಿ ಸಮಯವನ್ನು ನಿರೀಕ್ಷಿಸಬಹುದು. +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| | ಹೊಸ ಜಗತ್ತಿನ ನಿಯಮಗಳ ವ್ಯಾಖ್ಯಾನ, Q-ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿದಮ್ ಮತ್ತು ಕೆಲವು ಪಠ್ಯ ವಿವರಣೆಗಳೊಂದಿಗೆ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ. Q-ಲರ್ನಿಂಗ್ ಯಾದೃಚ್ಛಿಕ ನಡಿಗೆಯೊಂದಿಗೆ ಹೋಲಿಸಿದಾಗ ಫಲಿತಾಂಶಗಳನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸುತ್ತದೆ. | ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ, Q-ಲರ್ನಿಂಗ್ ಅನುಷ್ಠಾನಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಯಾದೃಚ್ಛಿಕ ನಡಿಗೆಯೊಂದಿಗೆ ಹೋಲಿಸಿದಾಗ ಫಲಿತಾಂಶಗಳನ್ನು ಸುಧಾರಿಸುತ್ತದೆ, ಆದರೆ ಗಮನಾರ್ಹವಾಗಿ ಅಲ್ಲ; ಅಥವಾ ನೋಟ್ಬುಕ್ ಕಡಿಮೆ ದಾಖಲೆಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಕೋಡ್ ಚೆನ್ನಾಗಿ ರಚಿಸಲ್ಪಟ್ಟಿಲ್ಲ | ಜಗತ್ತಿನ ನಿಯಮಗಳನ್ನು ಮರು ವ್ಯಾಖ್ಯಾನಿಸಲು ಕೆಲವು ಪ್ರಯತ್ನಗಳು ಮಾಡಲಾಗಿದೆ, ಆದರೆ Q-ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿದಮ್ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ, ಅಥವಾ ಬಹುಮಾನ ಕಾರ್ಯ ಸಂಪೂರ್ಣವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲ್ಪಟ್ಟಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/notebook.ipynb b/translations/kn/8-Reinforcement/1-QLearning/notebook.ipynb new file mode 100644 index 000000000..34c61fce1 --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/notebook.ipynb @@ -0,0 +1,413 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "17e5a668646eabf5aabd0e9bfcf17876", + "translation_date": "2025-12-19T17:26:52+00:00", + "source_file": "8-Reinforcement/1-QLearning/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ಪೀಟರ್ ಮತ್ತು ನರಿ: ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ ಪ್ರಾಥಮಿಕ\n", + "\n", + "ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಮಾರ್ಗ ಹುಡುಕುವ ಸಮಸ್ಯೆಗೆ ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವನ್ನು ಹೇಗೆ ಅನ್ವಯಿಸಬೇಕೆಂದು ಕಲಿಯೋಣ. ಈ ಸನ್ನಿವೇಶವು ರಷ್ಯನ್ ಸಂಗೀತಕಾರ [ಸರ್ಗೇಯಿ ಪ್ರೊಕೊಫಿಯೆವ್](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ರಚಿಸಿದ [ಪೀಟರ್ ಮತ್ತು ನರಿ](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) ಸಂಗೀತ ಪರಿಕಥೆಯಿಂದ ಪ್ರೇರಿತವಾಗಿದೆ. ಇದು ಯುವ ಪಯನಿಯರ್ ಪೀಟರ್ ಬಗ್ಗೆ ಕಥೆ, ಅವನು ಧೈರ್ಯವಾಗಿ ತನ್ನ ಮನೆಯಿಂದ ಕಾಡಿನ ತೆರೆಯ ಕಡೆಗೆ ಹೋಗಿ ನರಿಯನ್ನು ಹಿಂಬಾಲಿಸುತ್ತಾನೆ. ನಾವು ಪೀಟರ್‌ಗೆ ಸುತ್ತಲೂ ಇರುವ ಪ್ರದೇಶವನ್ನು ಅನ್ವೇಷಿಸಲು ಮತ್ತು ಅತ್ಯುತ್ತಮ ನ್ಯಾವಿಗೇಶನ್ ನಕ್ಷೆಯನ್ನು ನಿರ್ಮಿಸಲು ಸಹಾಯ ಮಾಡುವ ಯಂತ್ರ ಅಧ್ಯಯನ ಆಲ್ಗಾರಿದಮ್ಗಳನ್ನು ತರಬೇತಿಮಾಡುತ್ತೇವೆ.\n", + "\n", + "ಮೊದಲು, ಕೆಲವು ಉಪಯುಕ್ತ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import random\n", + "import math" + ] + }, + { + "source": [ + "## ಬಲವರ್ಧಿತ ಅಧ್ಯಯನದ ಅವಲೋಕನ\n", + "\n", + "**ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ** (RL) ಎಂಬುದು ನಾವು ಅನೇಕ ಪ್ರಯೋಗಗಳನ್ನು ನಡೆಸುವ ಮೂಲಕ ಕೆಲವು **ಪರಿಸರ**ದಲ್ಲಿ **ಏಜೆಂಟ್**ನ ಅತ್ಯುತ್ತಮ ವರ್ತನೆಯನ್ನು ಕಲಿಯಲು ಅನುಮತಿಸುವ ಅಧ್ಯಯನ ತಂತ್ರವಾಗಿದೆ. ಈ ಪರಿಸರದಲ್ಲಿರುವ ಏಜೆಂಟ್‌ಗೆ ಕೆಲವು **ಗುರಿ** ಇರಬೇಕು, ಅದು **ಪ್ರಶಸ್ತಿ ಕಾರ್ಯ** ಮೂಲಕ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ.\n", + "\n", + "## ಪರಿಸರ\n", + "\n", + "ಸರಳತೆಗೆ, ಪೀಟರ್‌ನ ಜಗತ್ತನ್ನು `width` x `height` ಗಾತ್ರದ ಚದರ ಫಲಕ ಎಂದು ಪರಿಗಣಿಸೋಣ. ಈ ಫಲಕದ ಪ್ರತಿ ಸೆಲ್ ಇವುಗಳಲ್ಲಿ ಒಂದಾಗಿರಬಹುದು:\n", + "* **ಭೂಮಿ**, ಇದರಲ್ಲಿ ಪೀಟರ್ ಮತ್ತು ಇತರ ಜೀವಿಗಳು ನಡೆಯಬಹುದು\n", + "* **ನೀರು**, ಇದರಲ್ಲಿ ನೀವು ಸ್ಪಷ್ಟವಾಗಿ ನಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ\n", + "* **ಮರ** ಅಥವಾ **ಹುಲ್ಲು** - ನೀವು ವಿಶ್ರಾಂತಿ ಪಡೆಯಬಹುದಾದ ಸ್ಥಳ\n", + "* **ಸೇಬು**, ಇದು ಪೀಟರ್ ತನ್ನನ್ನು ತಾನು ಆಹಾರ ನೀಡಲು ಕಂಡು ಸಂತೋಷ ಪಡುವುದನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ\n", + "* **ನರಿ**, ಇದು ಅಪಾಯಕಾರಿಯಾಗಿದ್ದು ತಪ್ಪಿಸಿಕೊಳ್ಳಬೇಕು\n", + "\n", + "ಪರಿಸರದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು, ನಾವು `Board` ಎಂಬ ವರ್ಗವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವೆವು. ಈ ನೋಟ್ಬುಕ್ ತುಂಬಾ ಗೊಂದಲವಾಗದಂತೆ, ಫಲಕದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಎಲ್ಲಾ ಕೋಡ್ ಅನ್ನು ಪ್ರತ್ಯೇಕ `rlboard` ಮೋಡ್ಯೂಲ್‌ಗೆ ಸ್ಥಳಾಂತರಿಸಿದ್ದೇವೆ, ಅದನ್ನು ಈಗ ನಾವು ಆಮದು ಮಾಡಿಕೊಳ್ಳುತ್ತೇವೆ. ಅನುಷ್ಠಾನದ ಒಳಗಿನ ವಿವರಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಲು ನೀವು ಈ ಮೋಡ್ಯೂಲ್ ಅನ್ನು ನೋಡಬಹುದು.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "ನಾವು ಈಗ ಒಂದು ಯಾದೃಚ್ಛಿಕ ಫಲಕವನ್ನು ರಚಿಸಿ ಅದು ಹೇಗಿದೆ ಎಂದು ನೋಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 1" + ] + }, + { + "source": [ + "## ಕ್ರಿಯೆಗಳು ಮತ್ತು ನೀತಿ\n", + "\n", + "ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ಪೀಟರ್ ಗುರಿ ಒಂದು ಸೇಬು ಹುಡುಕುವುದು, ನರಿ ಮತ್ತು ಇತರ ಅಡ್ಡಿಗಳನ್ನು ತಪ್ಪಿಸುವುದು. ಆ ಕ್ರಿಯೆಗಳನ್ನು ಡಿಕ್ಷನರಿಯಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಿ, ಮತ್ತು ಅವುಗಳನ್ನು ಸಂಬಂಧಿಸಿದ ಸಂಯೋಜನೆ ಬದಲಾವಣೆಗಳ ಜೋಡಿಗಳೊಂದಿಗೆ ನಕ್ಷೆ ಮಾಡಿ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 2" + ] + }, + { + "source": [ + "ನಮ್ಮ ಏಜೆಂಟ್ (ಪೀಟರ್) ನ ತಂತ್ರವನ್ನು **ನೀತಿ** ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಸರಳವಾದ ನೀತಿಯನ್ನು **ಯಾದೃಚ್ಛಿಕ ನಡೆ** ಎಂದು ಪರಿಗಣಿಸೋಣ.\n", + "\n", + "## ಯಾದೃಚ್ಛಿಕ ನಡೆ\n", + "\n", + "ಮೊದಲು ನಾವು ಯಾದೃಚ್ಛಿಕ ನಡೆ ತಂತ್ರವನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಮೂಲಕ ನಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "# Let's run a random walk experiment several times and see the average number of steps taken: code block 3" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 4" + ] + }, + { + "source": [ + "## ಬಹುಮಾನ ಕಾರ್ಯ\n", + "\n", + "ನಮ್ಮ ನೀತಿಯನ್ನು ಹೆಚ್ಚು ಬುದ್ಧಿವಂತವಾಗಿಸಲು, ಯಾವ ಚಲನೆಗಳು ಇತರರಿಗಿಂತ \"ಉತ್ತಮ\" ಎಂಬುದನ್ನು ನಾವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾಗಿದೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 5" + ] + }, + { + "source": [ + "## Q-ಲರ್ನಿಂಗ್\n", + "\n", + "Q-ಟೇಬಲ್ ಅಥವಾ ಬಹು-ಆಯಾಮದ ಅರೆ ಅನ್ನು ನಿರ್ಮಿಸಿ. ನಮ್ಮ ಬೋರ್ಡ್‌ನ ಆಯಾಮಗಳು `width` x `height` ಇದ್ದುದರಿಂದ, ನಾವು Q-ಟೇಬಲ್ ಅನ್ನು numpy ಅರೆ ಮೂಲಕ `width` x `height` x `len(actions)` ಆಕಾರದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 6" + ] + }, + { + "source": [ + "Q-ಟೇಬಲ್ ಅನ್ನು ಬೋರ್ಡ್ ಮೇಲೆ ಟೇಬಲ್ ಅನ್ನು ದೃಶ್ಯೀಕರಿಸಲು `plot` ಫಂಕ್ಷನ್‌ಗೆ ಪಾಸ್ ಮಾಡಿ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "error", + "ename": "NameError", + "evalue": "name 'm' is not defined", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mQ\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'm' is not defined" + ] + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## Q-ಲರ್ನಿಂಗ್‌ನ ಸಾರಾಂಶ: ಬೆಲ್‌ಮನ್ ಸಮೀಕರಣ ಮತ್ತು ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್\n", + "\n", + "ನಮ್ಮ ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗೆ ಪ್ಸ್ಯೂಡೋ-ಕೋಡ್ ಬರೆಯಿರಿ:\n", + "\n", + "* ಎಲ್ಲಾ ಸ್ಥಿತಿಗಳು ಮತ್ತು ಕ್ರಿಯೆಗಳಿಗಾಗಿ ಸಮಾನ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ Q-ಟೇಬಲ್ Q ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ\n", + "* ಲರ್ನಿಂಗ್ ದರವನ್ನು $\\alpha\\leftarrow 1$ ಎಂದು ಸೆಟ್ ಮಾಡಿ\n", + "* ಅನೇಕ ಬಾರಿ ಸಿಮ್ಯುಲೇಶನ್ ಅನ್ನು ಪುನರಾವರ್ತಿಸಿ\n", + " 1. ಯಾದೃಚ್ಛಿಕ ಸ್ಥಾನದಿಂದ ಪ್ರಾರಂಭಿಸಿ\n", + " 1. ಪುನರಾವರ್ತಿಸಿ\n", + " 1. ಸ್ಥಿತಿ $s$ ನಲ್ಲಿ ಕ್ರಿಯೆ $a$ ಆಯ್ಕೆಮಾಡಿ\n", + " 2. ಹೊಸ ಸ್ಥಿತಿ $s'$ ಗೆ ಹೋಗಿ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಿ\n", + " 3. ನಾವು ಗೇಮ್ ಅಂತ್ಯದ ಸ್ಥಿತಿಯನ್ನು ಎದುರಿಸಿದರೆ, ಅಥವಾ ಒಟ್ಟು ಬಹುಮಾನ ತುಂಬಾ ಕಡಿಮೆ ಇದ್ದರೆ - ಸಿಮ್ಯುಲೇಶನ್ ನಿಂದ ನಿರ್ಗಮಿಸಿ \n", + " 4. ಹೊಸ ಸ್ಥಿತಿಯಲ್ಲಿ ಬಹುಮಾನ $r$ ಅನ್ನು ಲೆಕ್ಕಿಸಿ\n", + " 5. ಬೆಲ್‌ಮನ್ ಸಮೀಕರಣದ ಪ್ರಕಾರ Q-ಫಂಕ್ಷನ್ ಅನ್ನು ನವೀಕರಿಸಿ: $Q(s,a)\\leftarrow (1-\\alpha)Q(s,a)+\\alpha(r+\\gamma\\max_{a'}Q(s',a'))$\n", + " 6. $s\\leftarrow s'$\n", + " 7. ಒಟ್ಟು ಬಹುಮಾನವನ್ನು ನವೀಕರಿಸಿ ಮತ್ತು $\\alpha$ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿ.\n", + "\n", + "## ಅನ್ವೇಷಣೆ ವಿರುದ್ಧ ಶೋಷಣೆ\n", + "\n", + "ಅತ್ಯುತ್ತಮ ವಿಧಾನವು ಅನ್ವೇಷಣೆ ಮತ್ತು ಶೋಷಣೆಯ ನಡುವೆ ಸಮತೋಲನ ಸಾಧಿಸುವುದಾಗಿದೆ. ನಾವು ನಮ್ಮ ಪರಿಸರವನ್ನು ಹೆಚ್ಚು ತಿಳಿದುಕೊಳ್ಳುವಂತೆ, ನಾವು ಅತ್ಯುತ್ತಮ ಮಾರ್ಗವನ್ನು ಅನುಸರಿಸುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚಾಗುತ್ತದೆ, ಆದಾಗ್ಯೂ, ಕೆಲವೊಮ್ಮೆ ಅನ್ವೇಷಿಸಲ್ಪಟ್ಟಿಲ್ಲದ ಮಾರ್ಗವನ್ನು ಆಯ್ಕೆಮಾಡುವುದು.\n", + "\n", + "## ಪೈಥಾನ್ ಅನುಷ್ಠಾನ\n", + "\n", + "ಈಗ ನಾವು ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್ ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೇವೆ. ಅದಕ್ಕೆ ಮುಂಚೆ, Q-ಟೇಬಲ್‌ನ任意 ಸಂಖ್ಯೆಗಳನ್ನೂ ಸಂಬಂಧಿತ ಕ್ರಿಯೆಗಳ ಪ್ರಾಬಬಿಲಿಟಿಗಳ ವೆಕ್ಟರ್‌ಗೆ ಪರಿವರ್ತಿಸುವ ಕೆಲವು ಫಂಕ್ಷನ್ ಬೇಕಾಗುತ್ತದೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 7" + ] + }, + { + "source": [ + "ನಾವು ಮೂಲ ವೆಕ್ಟರ್‌ಗೆ ಸಣ್ಣ ಪ್ರಮಾಣದ `eps` ಅನ್ನು ಸೇರಿಸುತ್ತೇವೆ, ಇದರಿಂದ ಪ್ರಾರಂಭಿಕ ಸಂದರ್ಭದಲ್ಲಿ, ವೆಕ್ಟರ್‌ನ ಎಲ್ಲಾ ಘಟಕಗಳು ಒಂದೇ ಆಗಿದ್ದಾಗ 0 ರಿಂದ ಭಾಗಿಸುವುದನ್ನು ತಪ್ಪಿಸಬಹುದು.\n", + "\n", + "ನಾವು 5000 ಪ್ರಯೋಗಗಳಿಗಾಗಿ ನಡೆಸುವ ನಿಜವಾದ ಕಲಿಕೆ ಆಲ್ಗಾರಿಥಮ್, ಇದನ್ನು **epochs** ಎಂದೂ ಕರೆಯುತ್ತಾರೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "" + ] + } + ], + "source": [ + "\n", + "from IPython.display import clear_output\n", + "\n", + "lpath = []\n", + "\n", + "# code block 8" + ] + }, + { + "source": [ + "ಈ ಆಲ್ಗೋರಿದಮ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ಪ್ರತಿ ಹಂತದಲ್ಲಿ ವಿಭಿನ್ನ ಕ್ರಿಯೆಗಳ ಆಕರ್ಷಕತೆಯನ್ನು ನಿರ್ಧರಿಸುವ ಮೌಲ್ಯಗಳೊಂದಿಗೆ Q-ಟೇಬಲ್ ನವೀಕರಿಸಬೇಕು. ಟೇಬಲ್ ಅನ್ನು ಇಲ್ಲಿ ದೃಶ್ಯೀಕರಿಸಿ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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Tz9N/fr1mTRpEuecc47RkY4gpWTOnDmcd9553HHHHSxdupS8vLyIt6sKt6KcBCkl2dnZfPjhh8yaNYusrKyoK47BYJD9+/fz6KOPsnz5cnJzc42OdMqZPn069957L02bNmXKlCm8+eabjB8/Hl3XI9quKtyKcpK6dOlCVlYWVquVTp064ff7jY50hOzsbLp160b37t1ZuHAhV1111fG/SflbxowZw4wZM/jss8/YtGkTt956K5MnT474jShU4VaUkzBr1iwef/xxLr74Ylq3bs20adOYMWOG0bHKSSmZPXs2s2fPxuVyMWbMGAYNGsT8+fONjnbKGTVqFEVFRbjdbq699loyMjIi3qYq3LXEU089Rc+ePfH5fDXmRrCBQIDvvvuO9957j0AgEFVDEb1792bRokU0atSIzz//nOnTp9O7d2+jYx3h4osv5scff+Scc87h3nvvZcWKFVG9e2RNdcMNNzB48GDatWvH6NGjq2XjKlW4a4nx48fz2Wef0aNHD5544gl+/fVXgsGg0bEqJKWkZcuWfPfdd2RlZdGgQYOoGopo2bIlubm5TJw4EQCfz8fTTz/N/v37DU4WIoSgbdu2LFq0iIULF6LrOpmZmcyaNYuioiKj4ymVpAp3LVG2peovv/xC9+7dee2113j11Vf55ptvjI52VF9++SW33nord911Fw6HgyFDhvDpp58aHaucEIIff/yR22+/nauvvpoNGzYwbdo0XnvtNXbs2GF0PADq16/PunXrqF+/Pq+88grr16/niiuuYObMmZSWlhodT6kEVbhrocsuu4xXXnmFRo0a8ccffzBo0CB27txpdKwjxMfH43Q6sdlspKSk4HQ6mTp1qtGx/uLss8+mZ8+eADRu3JjBgwczc+ZM8vPzjQ12mAEDBtC4cehWsD179uTCCy/koYceiqqhJ+XvUQtwaikhBNdffz0ul4vrr7+ecePGsWPHDq655hruu+8+EhIS/nLT3urUo0cP7rzzTnRdp27duvznP//hnXfeoWPHjkyYMIHevXuTmJgYdYsxWrduzfjx4xk4cCDNmjXj5ZdfJjY21uhYR+jevTupqal06tSJ2267jREjRmCxqFJQGdX9c6h63LWcw+GgWbNmfPzxx6xfv55zzz2X/v37s3DhQtatW2dYLiEEW7dupX///rRt25asrCx69+7N+vXr2bJlCzff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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## ನೀತಿ ಪರಿಶೀಲನೆ\n", + "\n", + "ಪ್ರತಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ರತಿ ಕ್ರಿಯೆಯ \"ಆಕರ್ಷಕತೆ\" ಅನ್ನು Q-ಟೇಬಲ್ ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ನಮ್ಮ ಜಗತ್ತಿನಲ್ಲಿ ಪರಿಣಾಮಕಾರಿಯಾದ ನ್ಯಾವಿಗೇಶನ್ ಅನ್ನು ನಿರ್ಧರಿಸಲು ಇದನ್ನು ಬಳಸುವುದು ಬಹಳ ಸುಲಭವಾಗಿದೆ. ಸರಳವಾದ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು ಅತ್ಯುನ್ನತ Q-ಟೇಬಲ್ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "# code block 9" + ] + }, + { + "source": [ + "ನೀವು ಮೇಲಿನ ಕೋಡ್ ಅನ್ನು ಹಲವಾರು ಬಾರಿ ಪ್ರಯತ್ನಿಸಿದರೆ, ಕೆಲವೊಮ್ಮೆ ಅದು \"ಹ್ಯಾಂಗ್\" ಆಗುತ್ತದೆ ಎಂದು ಗಮನಿಸಬಹುದು, ಮತ್ತು ಅದನ್ನು ಮಧ್ಯಂತರಗೊಳಿಸಲು ನೀವು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ STOP ಬಟನ್ ಒತ್ತಬೇಕಾಗುತ್ತದೆ.\n", + "\n", + "> **ಕಾರ್ಯ 1:** `walk` ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಪಥದ ಗರಿಷ್ಠ ಉದ್ದವನ್ನು ನಿರ್ದಿಷ್ಟ ಹಂತಗಳ ಸಂಖ್ಯೆಯಿಂದ (ಹೇಳಿದಂತೆ, 100) ಮಿತಿಗೊಳಿಸಿ, ಮತ್ತು ಮೇಲಿನ ಕೋಡ್ ಈ ಮೌಲ್ಯವನ್ನು ಸಮಯಕಾಲಕ್ಕೆ ಹಿಂತಿರುಗಿಸುವುದನ್ನು ಗಮನಿಸಿ.\n", + "\n", + "> **ಕಾರ್ಯ 2:** `walk` ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಅದು ಈಗಾಗಲೇ ಹೋಗಿದ್ದ ಸ್ಥಳಗಳಿಗೆ ಹಿಂದಿರುಗದಂತೆ ಮಾಡಿ. ಇದರಿಂದ `walk` ಲೂಪ್ ಆಗುವುದನ್ನು ತಡೆಯುತ್ತದೆ, ಆದಾಗ್ಯೂ, ಏಜೆಂಟ್ ಇನ್ನೂ \"ಬಂದಿ\" ಆಗಿ ಹೊರಬರಲು ಸಾಧ್ಯವಿಲ್ಲದ ಸ್ಥಳದಲ್ಲಿ ಸಿಲುಕಬಹುದು.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average path length = 5.31, eaten by wolf: 0 times\n" + ] + } + ], + "source": [ + "\n", + "# code block 10" + ] + }, + { + "source": [ + "## ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪರಿಶೀಲಿಸುವುದು\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 57 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(lpath)" + ] + }, + { + "source": [ + "## ವ್ಯಾಯಾಮ\n", + "## ಇನ್ನಷ್ಟು ವಾಸ್ತವಿಕ ಪೀಟರ್ ಮತ್ತು ವುಲ್ಫ್ ಜಗತ್ತು\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/solution/Julia/README.md b/translations/kn/8-Reinforcement/1-QLearning/solution/Julia/README.md new file mode 100644 index 000000000..0730e5aaa --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/solution/R/README.md b/translations/kn/8-Reinforcement/1-QLearning/solution/R/README.md new file mode 100644 index 000000000..ed7da4d3e --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb b/translations/kn/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb new file mode 100644 index 000000000..f280adbb2 --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb @@ -0,0 +1,426 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "eadbd20d2a075efb602615ad90b1e97a", + "translation_date": "2025-12-19T17:29:33+00:00", + "source_file": "8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ಪೀಟರ್ ಮತ್ತು ನರಿ: ವಾಸ್ತವಿಕ ಪರಿಸರ\n", + "\n", + "ನಮ್ಮ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ, ಪೀಟರ್ ಬಹಳಷ್ಟು ದಣಿವಾಗದೆ ಅಥವಾ ಹಸಿವಾಗದೆ ಸುತ್ತಾಡಲು ಸಾಧ್ಯವಾಯಿತು. ಹೆಚ್ಚು ವಾಸ್ತವಿಕ ಜಗತ್ತಿನಲ್ಲಿ, ನಾವು ಸಮಯಕಾಲಕ್ಕೆ ಕುಳಿತು ವಿಶ್ರಾಂತಿ ಪಡೆಯಬೇಕು ಮತ್ತು ತಿನ್ನಬೇಕು. ನಮ್ಮ ಜಗತ್ತನ್ನು ಹೆಚ್ಚು ವಾಸ್ತವಿಕವಾಗಿಸಲು, ಕೆಳಗಿನ ನಿಯಮಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸೋಣ:\n", + "\n", + "1. ಒಂದು ಸ್ಥಳದಿಂದ ಮತ್ತೊಂದು ಸ್ಥಳಕ್ಕೆ ಚಲಿಸುವಾಗ, ಪೀಟರ್ **ಶಕ್ತಿ** ಕಳೆದುಕೊಳ್ಳುತ್ತಾನೆ ಮತ್ತು ಕೆಲವು **ದಣಿವು** ಪಡೆಯುತ್ತಾನೆ.\n", + "2. ಪೀಟರ್ ಸೇಬುಗಳನ್ನು ತಿಂದರೆ ಹೆಚ್ಚು ಶಕ್ತಿ ಪಡೆಯಬಹುದು.\n", + "3. ಪೀಟರ್ ಮರದ ಕೆಳಗೆ ಅಥವಾ ಹುಲ್ಲಿನ ಮೇಲೆ ವಿಶ್ರಾಂತಿ ತೆಗೆದುಕೊಂಡರೆ ದಣಿವಿನಿಂದ ಮುಕ್ತನಾಗಬಹುದು (ಅಂದರೆ ಮರ ಅಥವಾ ಹುಲ್ಲು ಇರುವ ಬೋರ್ಡ್ ಸ್ಥಳಕ್ಕೆ ನಡೆಯುವುದು - ಹಸಿರು ಮೈದಾನ)\n", + "4. ಪೀಟರ್ ನರನ್ನು ಹುಡುಕಿ ಕೊಲ್ಲಬೇಕು\n", + "5. ನರನ್ನು ಕೊಲ್ಲಲು, ಪೀಟರ್‌ಗೆ ನಿರ್ದಿಷ್ಟ ಮಟ್ಟದ ಶಕ್ತಿ ಮತ್ತು ದಣಿವು ಬೇಕಾಗುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ ಅವನು ಯುದ್ಧವನ್ನು ಸೋಲುತ್ತಾನೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import random\n", + "import math\n", + "from rlboard import *" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "width, height = 8,8\n", + "m = Board(width,height)\n", + "m.randomize(seed=13)\n", + "m.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "actions = { \"U\" : (0,-1), \"D\" : (0,1), \"L\" : (-1,0), \"R\" : (1,0) }\n", + "action_idx = { a : i for i,a in enumerate(actions.keys()) }" + ] + }, + { + "source": [ + "## ಸ್ಥಿತಿಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು\n", + "\n", + "ನಮ್ಮ ಹೊಸ ಆಟದ ನಿಯಮಗಳಲ್ಲಿ, ನಾವು ಪ್ರತಿ ಬೋರ್ಡ್ ಸ್ಥಿತಿಯಲ್ಲಿ ಶಕ್ತಿ ಮತ್ತು ದಣಿವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ ನಾವು `state` ಎಂಬ ವಸ್ತುವನ್ನು ರಚಿಸುವೆವು, ಇದು ಪ್ರಸ್ತುತ ಸಮಸ್ಯೆಯ ಸ್ಥಿತಿಯ ಬಗ್ಗೆ ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಮಾಹಿತಿಯನ್ನು ಹೊತ್ತುಕೊಳ್ಳುತ್ತದೆ, ಇದರಲ್ಲಿ ಬೋರ್ಡಿನ ಸ್ಥಿತಿ, ಪ್ರಸ್ತುತ ಶಕ್ತಿ ಮತ್ತು ದಣಿವಿನ ಮಟ್ಟಗಳು, ಮತ್ತು ನಾವು ಟರ್ಮಿನಲ್ ಸ್ಥಿತಿಯಲ್ಲಿ ನರಿ ಗೆಲ್ಲಬಹುದೇ ಎಂಬುದೂ ಸೇರಿದೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "class state:\n", + " def __init__(self,board,energy=10,fatigue=0,init=True):\n", + " self.board = board\n", + " self.energy = energy\n", + " self.fatigue = fatigue\n", + " self.dead = False\n", + " if init:\n", + " self.board.random_start()\n", + " self.update()\n", + "\n", + " def at(self):\n", + " return self.board.at()\n", + "\n", + " def update(self):\n", + " if self.at() == Board.Cell.water:\n", + " self.dead = True\n", + " return\n", + " if self.at() == Board.Cell.tree:\n", + " self.fatigue = 0\n", + " if self.at() == Board.Cell.apple:\n", + " self.energy = 10\n", + "\n", + " def move(self,a):\n", + " self.board.move(a)\n", + " self.energy -= 1\n", + " self.fatigue += 1\n", + " self.update()\n", + "\n", + " def is_winning(self):\n", + " return self.energy > self.fatigue" + ] + }, + { + "source": [ + "ನಾವು ಸಮಸ್ಯೆಯನ್ನು ರ್ಯಾಂಡಮ್ ವಾಕ್ ಬಳಸಿ ಪರಿಹರಿಸಲು ಪ್ರಯತ್ನಿಸೋಣ ಮತ್ತು ನಾವು ಯಶಸ್ವಿಯಾಗುತ್ತೇವೋ ನೋಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "def random_policy(state):\n", + " return random.choice(list(actions))\n", + "\n", + "def walk(board,policy):\n", + " n = 0 # number of steps\n", + " s = state(board)\n", + " while True:\n", + " if s.at() == Board.Cell.wolf:\n", + " if s.is_winning():\n", + " return n # success!\n", + " else:\n", + " return -n # failure!\n", + " if s.at() == Board.Cell.water:\n", + " return 0 # died\n", + " a = actions[policy(m)]\n", + " s.move(a)\n", + " n+=1\n", + "\n", + "walk(m,random_policy)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Killed by wolf = 5, won: 1 times, drown: 94 times\n" + ] + } + ], + "source": [ + "def print_statistics(policy):\n", + " s,w,n = 0,0,0\n", + " for _ in range(100):\n", + " z = walk(m,policy)\n", + " if z<0:\n", + " w+=1\n", + " elif z==0:\n", + " n+=1\n", + " else:\n", + " s+=1\n", + " print(f\"Killed by wolf = {w}, won: {s} times, drown: {n} times\")\n", + "\n", + "print_statistics(random_policy)" + ] + }, + { + "source": [ + "## ಬಹುಮಾನ ಕಾರ್ಯ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def reward(s):\n", + " r = s.energy-s.fatigue\n", + " if s.at()==Board.Cell.wolf:\n", + " return 100 if s.is_winning() else -100\n", + " if s.at()==Board.Cell.water:\n", + " return -100\n", + " return r" + ] + }, + { + "source": [ + "## Q-ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್\n", + "\n", + "ವಾಸ್ತವಿಕ ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್ ಬಹುಮಟ್ಟಿಗೆ ಬದಲಾಗದೆ ಇರುತ್ತದೆ, ನಾವು ಕೇವಲ ಬೋರ್ಡ್ ಸ್ಥಾನ ಬದಲು `state` ಅನ್ನು ಬಳಸುತ್ತೇವೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def probs(v,eps=1e-4):\n", + " v = v-v.min()+eps\n", + " v = v/v.sum()\n", + " return v" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "" + ] + } + ], + "source": [ + "\n", + "from IPython.display import clear_output\n", + "\n", + "lpath = []\n", + "\n", + "for epoch in range(10000):\n", + " clear_output(wait=True)\n", + " print(f\"Epoch = {epoch}\",end='')\n", + "\n", + " # Pick initial point\n", + " s = state(m)\n", + " \n", + " # Start travelling\n", + " n=0\n", + " cum_reward = 0\n", + " while True:\n", + " x,y = s.board.human\n", + " v = probs(Q[x,y])\n", + " while True:\n", + " a = random.choices(list(actions),weights=v)[0]\n", + " dpos = actions[a]\n", + " if s.board.is_valid(s.board.move_pos(s.board.human,dpos)):\n", + " break \n", + " s.move(dpos)\n", + " r = reward(s)\n", + " if abs(r)==100: # end of game\n", + " print(f\" {n} steps\",end='\\r')\n", + " lpath.append(n)\n", + " break\n", + " alpha = np.exp(-n / 3000)\n", + " gamma = 0.5\n", + " ai = action_idx[a]\n", + " Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())\n", + " n+=1" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(lpath)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/solution/notebook.ipynb b/translations/kn/8-Reinforcement/1-QLearning/solution/notebook.ipynb new file mode 100644 index 000000000..31d928bbb --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/solution/notebook.ipynb @@ -0,0 +1,579 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "488431336543f71f14d4aaf0399e3381", + "translation_date": "2025-12-19T17:33:00+00:00", + "source_file": "8-Reinforcement/1-QLearning/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ಪೀಟರ್ ಮತ್ತು ನರಿ: ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ ಪ್ರಾಥಮಿಕ\n", + "\n", + "ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಮಾರ್ಗ ಹುಡುಕುವ ಸಮಸ್ಯೆಗೆ ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವನ್ನು ಹೇಗೆ ಅನ್ವಯಿಸಬೇಕೆಂದು ಕಲಿಯೋಣ. ಈ ಸನ್ನಿವೇಶವು ರಷ್ಯನ್ ಸಂಗೀತಕಾರ [ಸರ್ಗೇಯಿ ಪ್ರೊಕೊಫಿಯೆವ್](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ರಚಿಸಿದ [ಪೀಟರ್ ಮತ್ತು ನರಿ](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) ಸಂಗೀತ ಪರಿಕಥೆಯಿಂದ ಪ್ರೇರಿತವಾಗಿದೆ. ಇದು ಯುವ ಪಯನಿಯರ್ ಪೀಟರ್ ಬಗ್ಗೆ ಕಥೆ, ಅವನು ಧೈರ್ಯವಾಗಿ ತನ್ನ ಮನೆಯಿಂದ ಕಾಡಿನ ತೆರೆಯ ಕಡೆಗೆ ಹೋಗಿ ನರಿಯನ್ನು ಹಿಂಬಾಲಿಸುತ್ತಾನೆ. ನಾವು ಪೀಟರ್‌ಗೆ ಸುತ್ತಲೂ ಇರುವ ಪ್ರದೇಶವನ್ನು ಅನ್ವೇಷಿಸಲು ಮತ್ತು ಅತ್ಯುತ್ತಮ ನ್ಯಾವಿಗೇಶನ್ ನಕ್ಷೆಯನ್ನು ನಿರ್ಮಿಸಲು ಸಹಾಯ ಮಾಡುವ ಯಂತ್ರ ಅಧ್ಯಯನ ಆಲ್ಗಾರಿದಮ್ಗಳನ್ನು ತರಬೇತುಗೊಳಿಸುವೆವು.\n", + "\n", + "ಮೊದಲು, ಕೆಲವು ಉಪಯುಕ್ತ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import random\n", + "import math" + ] + }, + { + "source": [ + "## ಬಲವರ್ಧಿತ ಅಧ್ಯಯನದ ಅವಲೋಕನ\n", + "\n", + "**ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ** (RL) ಎಂಬುದು ನಾವು ಅನೇಕ ಪ್ರಯೋಗಗಳನ್ನು ನಡೆಸುವ ಮೂಲಕ ಕೆಲವು **ಪರಿಸರ**ದಲ್ಲಿ **ಏಜೆಂಟ್**ನ ಅತ್ಯುತ್ತಮ ವರ್ತನೆಯನ್ನು ಕಲಿಯಲು ಅನುಮತಿಸುವ ಅಧ್ಯಯನ ತಂತ್ರವಾಗಿದೆ. ಈ ಪರಿಸರದಲ್ಲಿರುವ ಏಜೆಂಟ್‌ಗೆ ಕೆಲವು **ಗುರಿ** ಇರಬೇಕು, ಅದು **ಪ್ರಶಸ್ತಿ ಕಾರ್ಯ** ಮೂಲಕ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ.\n", + "\n", + "## ಪರಿಸರ\n", + "\n", + "ಸರಳತೆಗೆ, ಪೀಟರ್‌ನ ಜಗತ್ತನ್ನು `width` x `height` ಗಾತ್ರದ ಚದರ ಫಲಕ ಎಂದು ಪರಿಗಣಿಸೋಣ. ಈ ಫಲಕದ ಪ್ರತಿ ಸೆಲ್ ಇವುಗಳಲ್ಲಿ ಒಂದಾಗಿರಬಹುದು:\n", + "* **ಭೂಮಿ**, ಇದರಲ್ಲಿ ಪೀಟರ್ ಮತ್ತು ಇತರ ಜೀವಿಗಳು ನಡೆಯಬಹುದು\n", + "* **ನೀರು**, ಇದರಲ್ಲಿ ನೀವು ಸ್ಪಷ್ಟವಾಗಿ ನಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ\n", + "* **ಮರ** ಅಥವಾ **ಹುಲ್ಲು** - ನೀವು ವಿಶ್ರಾಂತಿ ಪಡೆಯಬಹುದಾದ ಸ್ಥಳ\n", + "* **ಸೇಬು**, ಇದು ಪೀಟರ್ ತನ್ನನ್ನು ತಾನು ಆಹಾರ ನೀಡಲು ಕಂಡು ಸಂತೋಷ ಪಡುವುದನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ\n", + "* **ನರಿ**, ಇದು ಅಪಾಯಕಾರಿಯಾಗಿದ್ದು ತಪ್ಪಿಸಿಕೊಳ್ಳಬೇಕು\n", + "\n", + "ಪರಿಸರದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು, ನಾವು `Board` ಎಂಬ ವರ್ಗವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವೆವು. ಈ ನೋಟ್ಬುಕ್ ತುಂಬಾ ಗೊಂದಲವಾಗದಂತೆ, ಫಲಕದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಎಲ್ಲಾ ಕೋಡ್ ಅನ್ನು ಪ್ರತ್ಯೇಕ `rlboard` ಮೋಡ್ಯೂಲ್‌ಗೆ ಸ್ಥಳಾಂತರಿಸಿದ್ದೇವೆ, ಅದನ್ನು ಈಗ ನಾವು ಆಮದು ಮಾಡಿಕೊಳ್ಳುತ್ತೇವೆ. ಅನುಷ್ಠಾನದ ಒಳಗಿನ ವಿವರಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಲು ನೀವು ಈ ಮೋಡ್ಯೂಲ್ ಅನ್ನು ನೋಡಬಹುದು.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from rlboard import *" + ] + }, + { + "source": [ + "ನಾವು ಈಗ ಒಂದು ಯಾದೃಚ್ಛಿಕ ಫಲಕವನ್ನು ರಚಿಸಿ ಅದು ಹೇಗಿದೆ ಎಂದು ನೋಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "width, height = 8,8\n", + "m = Board(width,height)\n", + "m.randomize(seed=13)\n", + "m.plot()" + ] + }, + { + "source": [ + "## ಕ್ರಿಯೆಗಳು ಮತ್ತು ನೀತಿ\n", + "\n", + "ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ಪೀಟರ್ ಗುರಿ ಒಂದು ಸೇಬು ಹುಡುಕುವುದು, ನರಿ ಮತ್ತು ಇತರ ಅಡ್ಡಿಗಳನ್ನು ತಪ್ಪಿಸುವುದು. ಇದಕ್ಕಾಗಿ, ಅವನು ಮೂಲತಃ ಸುತ್ತಾಡಬಹುದು ಮತ್ತು ಸೇಬು ಕಂಡುಹಿಡಿಯಬಹುದು. ಆದ್ದರಿಂದ, ಯಾವುದೇ ಸ್ಥಾನದಲ್ಲಿ ಅವನು ಕೆಳಗಿನ ಕ್ರಿಯೆಗಳಲ್ಲೊಂದು ಆಯ್ಕೆಮಾಡಬಹುದು: ಮೇಲಕ್ಕೆ, ಕೆಳಗೆ, ಎಡಕ್ಕೆ ಮತ್ತು ಬಲಕ್ಕೆ. ನಾವು ಆ ಕ್ರಿಯೆಗಳನ್ನು ಡಿಕ್ಷನರಿಯಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಿ, ಅವುಗಳನ್ನು ಸಂಬಂಧಿತ ಸಂಯೋಜನೆ ಬದಲಾವಣೆಗಳ ಜೋಡಿಗಳೊಂದಿಗೆ ನಕ್ಷೆ ಮಾಡುತ್ತೇವೆ. ಉದಾಹರಣೆಗೆ, ಬಲಕ್ಕೆ ಸಾಗುವುದು (`R`) ಜೋಡಿ `(1,0)` ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "actions = { \"U\" : (0,-1), \"D\" : (0,1), \"L\" : (-1,0), \"R\" : (1,0) }\n", + "action_idx = { a : i for i,a in enumerate(actions.keys()) }" + ] + }, + { + "source": [ + "ನಮ್ಮ ಏಜೆಂಟ್ (ಪೀಟರ್) ನ ತಂತ್ರವನ್ನು **ನೀತಿ** ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಸರಳವಾದ ನೀತಿಯನ್ನು **ಯಾದೃಚ್ಛಿಕ ನಡೆ** ಎಂದು ಪರಿಗಣಿಸೋಣ.\n", + "\n", + "## ಯಾದೃಚ್ಛಿಕ ನಡೆ\n", + "\n", + "ಮೊದಲು ನಾವು ಯಾದೃಚ್ಛಿಕ ನಡೆ ತಂತ್ರವನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಮೂಲಕ ನಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "18" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "def random_policy(m):\n", + " return random.choice(list(actions))\n", + "\n", + "def walk(m,policy,start_position=None):\n", + " n = 0 # number of steps\n", + " # set initial position\n", + " if start_position:\n", + " m.human = start_position \n", + " else:\n", + " m.random_start()\n", + " while True:\n", + " if m.at() == Board.Cell.apple:\n", + " return n # success!\n", + " if m.at() in [Board.Cell.wolf, Board.Cell.water]:\n", + " return -1 # eaten by wolf or drowned\n", + " while True:\n", + " a = actions[policy(m)]\n", + " new_pos = m.move_pos(m.human,a)\n", + " if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:\n", + " m.move(a) # do the actual move\n", + " break\n", + " n+=1\n", + "\n", + "walk(m,random_policy)" + ] + }, + { + "source": [ + "ನಾವು ಯಾದೃಚ್ಛಿಕ ನಡೆ ಪ್ರಯೋಗವನ್ನು ಹಲವಾರು ಬಾರಿ ನಡೆಸಿ ತೆಗೆದುಕೊಂಡ ಸರಾಸರಿ ಹೆಜ್ಜೆಗಳ ಸಂಖ್ಯೆಯನ್ನು ನೋಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average path length = 32.87096774193548, eaten by wolf: 7 times\n" + ] + } + ], + "source": [ + "def print_statistics(policy):\n", + " s,w,n = 0,0,0\n", + " for _ in range(100):\n", + " z = walk(m,policy)\n", + " if z<0:\n", + " w+=1\n", + " else:\n", + " s += z\n", + " n += 1\n", + " print(f\"Average path length = {s/n}, eaten by wolf: {w} times\")\n", + "\n", + "print_statistics(random_policy)" + ] + }, + { + "source": [ + "## ಬಹುಮಾನ ಕಾರ್ಯ\n", + "\n", + "ನಮ್ಮ ನೀತಿಯನ್ನು ಹೆಚ್ಚು ಬುದ್ಧಿವಂತವಾಗಿಸಲು, ಯಾವ ಚಲನೆಗಳು ಇತರರಿಗಿಂತ \"ಉತ್ತಮ\" ಎಂಬುದನ್ನು ನಾವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "move_reward = -0.1\n", + "goal_reward = 10\n", + "end_reward = -10\n", + "\n", + "def reward(m,pos=None):\n", + " pos = pos or m.human\n", + " if not m.is_valid(pos):\n", + " return end_reward\n", + " x = m.at(pos)\n", + " if x==Board.Cell.water or x == Board.Cell.wolf:\n", + " return end_reward\n", + " if x==Board.Cell.apple:\n", + " return goal_reward\n", + " return move_reward" + ] + }, + { + "source": [ + "## Q-ಲರ್ನಿಂಗ್\n", + "\n", + "Q-ಟೇಬಲ್ ಅಥವಾ ಬಹು-ಆಯಾಮದ ಅರೆ ಅನ್ನು ನಿರ್ಮಿಸಿ. ನಮ್ಮ ಬೋರ್ಡ್‌ನ ಆಯಾಮಗಳು `width` x `height` ಇದ್ದುದರಿಂದ, ನಾವು Q-ಟೇಬಲ್ ಅನ್ನು numpy ಅರೆ ಮೂಲಕ `width` x `height` x `len(actions)` ಆಕಾರದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)" + ] + }, + { + "source": [ + "Q-ಟೇಬಲ್ ಅನ್ನು ಪ್ಲಾಟ್ ಫಂಕ್ಷನ್‌ಗೆ ಪಾಸ್ ಮಾಡಿ ಟೇಬಲ್ ಅನ್ನು ಬೋರ್ಡ್ ಮೇಲೆ ದೃಶ್ಯೀಕರಿಸಲು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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1fB4PKxatYoRI0bw4YcfMn/+fDp27Mj69eutjlZjx44d2O12rrrqKv71r3+xcOFCCgoKOHDggNXRanz66acMGjSIDh064Ha7efHFF1m0aFFY/QX42muv8bvf/Q6n08mll17Kn/70J1577bVGXacUtzhC586d2b59O/369aNNmzZs2bKF7Oxsq2PVkp2dzY8//kj//v1JTU3l+++/p0uXLlbHqhEVFUXr1q1RStG/f38CgQCHDh2iVatWVkerkZaWhmmatGnThvPOO4+ioiKSkpKIj4+3OlqNdu3asWfPHs4//3zOPPNMtm/fTufOneudj/Fky87OJjc3l/79+9OiRQs2btzY6O8XKW5xhO7du1NQUMD8+fN57733eP/99znvvPOsjlXLeeedx5dffsn69eu55557yMvLo3v37lbHquFwOOjcuTNvvvkmLpeLoUOHopQiKyvL6mg1MjIySElJYebMmXi9XiZNmkRWVhaJiYlWR6vRsWNHXC4Xf/vb31i7di0vv/wy55xzTlgVd69evdi4cSPLly/nmWeeYc2aNY0+dBcms7yLcPPFF1/w3Xff8cMPP4TdmCJAcnIyubm5vPfee1x99dVhVdrV+vfvz9atW8nJyWHlypVhtSVb7b777uPee+9lypQpfP/991bHOaq3336bwsJClixZwrZt26yOcwSbzcaWLVv4/PPPUUoxY8aMRl+nFLeoU7du3ejWrZvVMeo1ZMgQqyMc09SpU62OUC+lFH/5y1+sjlGvVq1aceedd1odo14XX3zxSVuXDJUIIUSEkeIWQogII8UthBARRopbCCEijBS3EEJEGCluIYSIMMcsbqXU6Uqpz5RS3yulvlNK/SG0PF0p9YlSKjf0OS20XCmlnldK7VBKbVJKndvY/wghhDiVHM8WdxC4T2vdFbgA+L1SqivwELBCa90JWBH6GuBXQKfQx3jgxQZPLYQQp7BjFrfWulBr/Z/Q7UrgByALuA6YF3rYPOD60O3rgPm6yv8BqUqp8LlAgxBCRLifNcatlGoHnAOsBVporQtDd+0HWoRuZwE/Hva0vaFlP32t8Uqp9Uqp9YGA52fGFkKIU9dxF7dSKhFYBEzSWte6ar2uumr4z7pyuNZ6tta6t9a6t8MR93OeKoQQp7TjKm6llIOq0l6otX4/tLioeggk9Ln6Ir4FwOmHPb11aJkQQogG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1r+LXq+XioqKsM5Y3/tEhcObKD09Xd9///1Wx6iTy+Xi4MGDtGvXzuoodSosLCQmJob09HSro9Rp27ZttG/fPqyHUTZu3MjZZ59tdYw6BQIBvv56F4cONf7F+n+p2NhSzjnHR6tGmv2oIeTl5ZGZmdnoM9WciGeeeYbS0tKj7yTSWlv+kZmZqcNZbm6unj17ttUx6vXBBx/o1atXWx2jXo8//rguLS21OkadTNPUEyZMsDpGvUpKSnSvXjm66pJg4fnRsuXXevHixVZ/q+o1a9YsnZuba3WMeoV68aidKWPcQggRYaS4hRAiwkhxCyFEhJHiFkKICCPFLYQQEUaKWwghIowUtxBCRBgpbiGEiDBS3EIIEWGkuIUQIsJIcQshRISR4hZCiAgjxS2EEBFGilsIISKMFLcQQkQYKW4hhIgwTba4V69eHdZTZAWDQdatW2d1jHqVlJSQm5trdYx67dixg5KSEqtj1Oubb74hGAxaHSOiuVwuNm/ebHWMeu3du5eCgoKTsq4wmXOy4axfv54PPviA2NhY/vWvf3HxxRdz2WWXWR2rlnfffZeNGzcSHR3NkiVLGD16NGeeeabVsWp55plnqKiowGazEQgEeOSRR4iLi7M6Vg2Px8O0adNwOByYpklSUhKTJ0+2OlYtO3bsYO7cucTExLBkyRKys7MZNmyY1bEizssvv8zu3btxOBy89dZbTJo0iebNm1sdq4Zpmjz22GM1G4pKKf70pz9hszXednGT2uLWWrNhwwZM0+QPf/gDLVu25PPPPw+rLW+tNf/85z/p3r07d999N0VFRezatSvsMs6bN48bbriB3/72t3zyySe43W6rY9Xi9Xr597//zejRo7nxxhuZP39+2H0Pd+3axf79+5kwYQJnn302H374YVhljARaaxYuXMill17K+PHj2bhxI8XFxWH1fTRNk7fffpvhw4dz8803884772CaZqOus0kVd35+Pps2baKyspJf/epXjB49mtjYWFavXm11tBrvv/8+F1xwAXPnzmXy5MlMmzaNhQsXUlFRYXW0GlOnTiUnJ4fbbruN5cuX88YbbzB+/HirY9Uybtw4Jk2axI033ojP5+P5559nypQpVseqUVlZyfz588nKymLw4MEMHjyYiy66iEWLFlkdLaL87W9/48477+Shhx7ixRdf5B//+AdTp05t9GL8OcaP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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## Q-ಲರ್ನಿಂಗ್‌ನ ಸಾರಾಂಶ: ಬೆಲ್‌ಮನ್ ಸಮೀಕರಣ ಮತ್ತು ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್\n", + "\n", + "ನಮ್ಮ ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗೆ ಪ್ಸ್ಯೂಡೋ-ಕೋಡ್ ಬರೆಯಿರಿ:\n", + "\n", + "* ಎಲ್ಲಾ ಸ್ಥಿತಿಗಳು ಮತ್ತು ಕ್ರಿಯೆಗಳಿಗಾಗಿ ಸಮಾನ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ Q-ಟೇಬಲ್ Q ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ\n", + "* ಲರ್ನಿಂಗ್ ದರವನ್ನು $\\alpha\\leftarrow 1$ ಎಂದು ಸೆಟ್ ಮಾಡಿ\n", + "* ಅನೇಕ ಬಾರಿ ಸಿಮ್ಯುಲೇಶನ್ ಅನ್ನು ಪುನರಾವರ್ತಿಸಿ\n", + " 1. ಯಾದೃಚ್ಛಿಕ ಸ್ಥಾನದಿಂದ ಪ್ರಾರಂಭಿಸಿ\n", + " 1. ಪುನರಾವರ್ತಿಸಿ\n", + " 1. ಸ್ಥಿತಿ $s$ ನಲ್ಲಿ ಕ್ರಿಯೆ $a$ ಆಯ್ಕೆಮಾಡಿ\n", + " 2. ಹೊಸ ಸ್ಥಿತಿಗೆ $s'$ ಹೋಗಿ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಿ\n", + " 3. ನಾವು ಆಟದ ಅಂತ್ಯದ ಸ್ಥಿತಿಯನ್ನು ಎದುರಿಸಿದರೆ, ಅಥವಾ ಒಟ್ಟು ಬಹುಮಾನ ತುಂಬಾ ಕಡಿಮೆ ಇದ್ದರೆ - ಸಿಮ್ಯುಲೇಶನ್ ನಿಂದ ನಿರ್ಗಮಿಸಿ \n", + " 4. ಹೊಸ ಸ್ಥಿತಿಯಲ್ಲಿ ಬಹುಮಾನ $r$ ಅನ್ನು ಲೆಕ್ಕಿಸಿ\n", + " 5. ಬೆಲ್‌ಮನ್ ಸಮೀಕರಣದ ಪ್ರಕಾರ Q-ಫಂಕ್ಷನ್ ಅನ್ನು ನವೀಕರಿಸಿ: $Q(s,a)\\leftarrow (1-\\alpha)Q(s,a)+\\alpha(r+\\gamma\\max_{a'}Q(s',a'))$\n", + " 6. $s\\leftarrow s'$\n", + " 7. ಒಟ್ಟು ಬಹುಮಾನವನ್ನು ನವೀಕರಿಸಿ ಮತ್ತು $\\alpha$ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿ.\n", + "\n", + "## ಅನ್ವೇಷಣೆ ವಿರುದ್ಧ ಉಪಯೋಗ\n", + "\n", + "ಅತ್ಯುತ್ತಮ ವಿಧಾನವು ಅನ್ವೇಷಣೆ ಮತ್ತು ಉಪಯೋಗದ ನಡುವೆ ಸಮತೋಲನ ಸಾಧಿಸುವುದಾಗಿದೆ. ನಾವು ನಮ್ಮ ಪರಿಸರವನ್ನು ಹೆಚ್ಚು ತಿಳಿದುಕೊಳ್ಳುವಂತೆ, ನಾವು ಅತ್ಯುತ್ತಮ ಮಾರ್ಗವನ್ನು ಅನುಸರಿಸುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚಾಗುತ್ತದೆ, ಆದಾಗ್ಯೂ, ಕೆಲವೊಮ್ಮೆ ಅನ್ವೇಷಿಸಲ್ಪಟ್ಟಿಲ್ಲದ ಮಾರ್ಗವನ್ನು ಆಯ್ಕೆಮಾಡುವುದು.\n", + "\n", + "## ಪೈಥಾನ್ ಅನುಷ್ಠಾನ\n", + "\n", + "ಈಗ ನಾವು ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್ ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೇವೆ. ಅದಕ್ಕೆ ಮುಂಚೆ, Q-ಟೇಬಲ್‌ನ任意 ಸಂಖ್ಯೆಗಳನ್ನೂ ಸಂಬಂಧಿತ ಕ್ರಿಯೆಗಳ ಪ್ರಾಬಬಿಲಿಟಿಗಳ ವೆಕ್ಟರ್‌ಗೆ ಪರಿವರ್ತಿಸುವ ಕೆಲವು ಫಂಕ್ಷನ್ ಬೇಕಾಗುತ್ತದೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def probs(v,eps=1e-4):\n", + " v = v-v.min()+eps\n", + " v = v/v.sum()\n", + " return v" + ] + }, + { + "source": [ + "ನಾವು ಮೂಲ ವೆಕ್ಟರ್‌ಗೆ ಸಣ್ಣ ಪ್ರಮಾಣದ `eps` ಅನ್ನು ಸೇರಿಸುತ್ತೇವೆ, ಇದರಿಂದ ಪ್ರಾರಂಭಿಕ ಸಂದರ್ಭದಲ್ಲಿ, ವೆಕ್ಟರ್‌ನ ಎಲ್ಲಾ ಘಟಕಗಳು ಒಂದೇ ಆಗಿದ್ದಾಗ 0 ರಿಂದ ಭಾಗಿಸುವುದನ್ನು ತಪ್ಪಿಸಬಹುದು.\n", + "\n", + "ನಾವು 5000 ಪ್ರಯೋಗಗಳಿಗಾಗಿ ನಡೆಸುವ ನಿಜವಾದ ಕಲಿಕೆ ಆಲ್ಗಾರಿಥಮ್, ಇದನ್ನು **epochs** ಎಂದೂ ಕರೆಯುತ್ತಾರೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "" + ] + } + ], + "source": [ + "\n", + "from IPython.display import clear_output\n", + "\n", + "lpath = []\n", + "\n", + "for epoch in range(10000):\n", + " clear_output(wait=True)\n", + " print(f\"Epoch = {epoch}\",end='')\n", + "\n", + " # Pick initial point\n", + " m.random_start()\n", + " \n", + " # Start travelling\n", + " n=0\n", + " cum_reward = 0\n", + " while True:\n", + " x,y = m.human\n", + " v = probs(Q[x,y])\n", + " a = random.choices(list(actions),weights=v)[0]\n", + " dpos = actions[a]\n", + " m.move(dpos,check_correctness=False) # we allow player to move outside the board, which terminates episode\n", + " r = reward(m)\n", + " cum_reward += r\n", + " if r==end_reward or cum_reward < -1000:\n", + " print(f\" {n} steps\",end='\\r')\n", + " lpath.append(n)\n", + " break\n", + " alpha = np.exp(-n / 3000)\n", + " gamma = 0.5\n", + " ai = action_idx[a]\n", + " Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())\n", + " n+=1" + ] + }, + { + "source": [ + "ಈ ಆಲ್ಗೋರಿದಮ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ಪ್ರತಿ ಹಂತದಲ್ಲಿ ವಿಭಿನ್ನ ಕ್ರಿಯೆಗಳ ಆಕರ್ಷಕತೆಯನ್ನು ನಿರ್ಧರಿಸುವ ಮೌಲ್ಯಗಳೊಂದಿಗೆ Q-ಟೇಬಲ್ ನವೀಕರಿಸಬೇಕು. ಟೇಬಲ್ ಅನ್ನು ಇಲ್ಲಿ ದೃಶ್ಯೀಕರಿಸಿ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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DBhgaPG22+307NmTbt26hQv1W2+9xWuvvUbv3r0544wzDP/lEqvUr7UIevPNN7n55ptPuWhX8Xg8XHPNNaxcuTJCyequZcuWMWHCBGbMmMFzzz3HE088YXSkOkkIgc1mw2w289RTT7Fs2TKWLl164r9YCywWS/h2dtdddx2apjFv3jw+/vhjo6PFLFW4I2TBggXcddddR/VnCyFwOBwnbDUIIUhISDhq27Zt27j55pv57rvvopK3LiguLmbt2rUsWLCAl19+mcTERFq0aMHatWuNjlbnTZkyhT179sTkxcCxY8fy9NNPs3v3bj744AOj48QkVbhrSNM03n77bSZPnkxZWdlR32vVqhWzZ88+YX+d1WplyZIlpKSkHDVJZ/v27Vx55ZXs2LGjQY42SU5O5qyzzmLZsmWMGzeOyy67jBdffJFdu3ZRVlbWIF+TSLHb7XTp0oWcnJxqRzwZyW63M3bsWDZv3szKlStj/t+6trt0VOGuASklK1eu5Prrr6ekpCS8vXHjxvTv359vv/2WzMzMk/pHPfvss/n111+55557jmp95+bm0q9fP/Lz86PyHGKZxWKhdevWLF68mBUrVjBnzhzuv/9+9u/fz7XXXsvy5cvZs2eP0THrrAsvvJDmzZvz5ptvxmTxdjgcPPjggyxZsiTmuw1r+xeLKtw1oOs6f//734/q027atCnTpk3jk08+oVGjRid9rKrp8ZMmTeK22247agnQiooK5s6dG/Otjmg477zzWLZsGX6/n48//pg777yTKVOm8N5777FmzRreeOMNHnnkEbxer9FRj+nLL7/kvPPOi8klXYUQjBkzBiEE//d//2d0nGMSQvDMM8+wZs2amOzWqZKZmUnLli354YcfauV8qnDXgBCCVq1ahdcZsVqtTJ8+nVGjRpGcnPy73z4JIcjIyOC+++5j/Pjx4e12u73WR1IkJCQwatSomFnf4qabbjpqpl9cXBwPP/wwo0eP5txzz+XKK6/kiSeeCA91ixUrVqzgvPPOIy4uzugo1frLX/5Cy5YtefLJJ2PqtasihOCuu+7il19+4ZNPPonJjFWFe9OmTbVyPlW4a0AIwfTp05k8eTJt27Zl/fr1jB49+jcXGn/vf7S0tDRmzJjByy+/TJs2bZg9e3a4ZVRbqropYr0rok2bNgwaNIi33nqLjh070r17d7766isOHDhg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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## ನೀತಿ ಪರಿಶೀಲನೆ\n", + "\n", + "ಪ್ರತಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ರತಿ ಕ್ರಿಯೆಯ \"ಆಕರ್ಷಕತೆ\" ಅನ್ನು Q-ಟೇಬಲ್ ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ನಮ್ಮ ಜಗತ್ತಿನಲ್ಲಿ ಪರಿಣಾಮಕಾರಿಯಾದ ನ್ಯಾವಿಗೇಶನ್ ಅನ್ನು ನಿರ್ಧರಿಸಲು ಇದನ್ನು ಬಳಸುವುದು ಬಹಳ ಸುಲಭವಾಗಿದೆ. ಸರಳವಾದ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು ಅತ್ಯುನ್ನತ Q-ಟೇಬಲ್ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಕೊಂಡಿರುವ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "def qpolicy_strict(m):\n", + " x,y = m.human\n", + " v = probs(Q[x,y])\n", + " a = list(actions)[np.argmax(v)]\n", + " return a\n", + "\n", + "walk(m,qpolicy_strict)" + ] + }, + { + "source": [ + "ನೀವು ಮೇಲಿನ ಕೋಡ್ ಅನ್ನು ಹಲವಾರು ಬಾರಿ ಪ್ರಯತ್ನಿಸಿದರೆ, ಕೆಲವೊಮ್ಮೆ ಅದು \"ಹ್ಯಾಂಗ್\" ಆಗುತ್ತದೆ ಎಂದು ಗಮನಿಸಬಹುದು, ಮತ್ತು ಅದನ್ನು ಮಧ್ಯಂತರಗೊಳಿಸಲು ನೀವು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ STOP ಬಟನ್ ಒತ್ತಬೇಕಾಗುತ್ತದೆ.\n", + "\n", + "> **ಕಾರ್ಯ 1:** `walk` ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಪಥದ ಗರಿಷ್ಠ ಉದ್ದವನ್ನು ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯ ಹೆಜ್ಜೆಗಳ ಮೂಲಕ (ಹೇಳಿದಂತೆ, 100) ಮಿತಿಗೊಳಿಸಿ, ಮತ್ತು ಮೇಲಿನ ಕೋಡ್ ಈ ಮೌಲ್ಯವನ್ನು ಸಮಯಕಾಲಕ್ಕೆ ಹಿಂತಿರುಗಿಸುವುದನ್ನು ಗಮನಿಸಿ.\n", + "\n", + "> **ಕಾರ್ಯ 2:** `walk` ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಅದು ಈಗಾಗಲೇ ಹೋಗಿದ್ದ ಸ್ಥಳಗಳಿಗೆ ಹಿಂದಿರುಗದಂತೆ ಮಾಡಿ. ಇದರಿಂದ `walk` ಲೂಪ್ ಆಗುವುದನ್ನು ತಡೆಯುತ್ತದೆ, ಆದರೂ ಏಜೆಂಟ್ ಇನ್ನೂ \"ಬಂದಿ\" ಆಗಿ ಹೊರಬರಲು ಸಾಧ್ಯವಿಲ್ಲದ ಸ್ಥಳದಲ್ಲಿ ಸಿಲುಕಬಹುದು.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average path length = 3.45, eaten by wolf: 0 times\n" + ] + } + ], + "source": [ + "\n", + "def qpolicy(m):\n", + " x,y = m.human\n", + " v = probs(Q[x,y])\n", + " a = random.choices(list(actions),weights=v)[0]\n", + " return a\n", + "\n", + "print_statistics(qpolicy)" + ] + }, + { + "source": [ + "## ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪರಿಶೀಲಿಸುವುದು\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 15 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(lpath)" + ] + }, + { + "source": [ + "ನಾವು ಇಲ್ಲಿ ನೋಡುತ್ತಿರುವುದು ಪ್ರಾರಂಭದಲ್ಲಿ ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದವು ಹೆಚ್ಚಾಗಿದೆ. ಇದು ಬಹುಶಃ ಪರಿಸರದ ಬಗ್ಗೆ ನಮಗೆ ಏನೂ ತಿಳಿದಿಲ್ಲದಿರುವ ಕಾರಣದಿಂದಾಗಿದ್ದು - ನಾವು ಕೆಟ್ಟ ಸ್ಥಿತಿಗಳಾದ ನೀರು ಅಥವಾ ನರಿ ಒಳಗೆ ಸಿಕ್ಕಿಕೊಳ್ಳುವ ಸಾಧ್ಯತೆ ಇದೆ. ನಾವು ಹೆಚ್ಚು ಕಲಿತಂತೆ ಮತ್ತು ಈ ಜ್ಞಾನವನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿದಂತೆ, ನಾವು ಪರಿಸರವನ್ನು ಹೆಚ್ಚು ಕಾಲ ಅನ್ವೇಷಿಸಬಹುದು, ಆದರೆ ನಾವು ಇನ್ನೂ ಸೇಬುಗಳು ಎಲ್ಲಿವೆ ಎಂಬುದನ್ನು ಚೆನ್ನಾಗಿ ತಿಳಿಯುವುದಿಲ್ಲ.\n", + "\n", + "ನಾವು ಸಾಕಷ್ಟು ಕಲಿತ ನಂತರ, ಏಜೆಂಟ್ ಗುರಿಯನ್ನು ಸಾಧಿಸುವುದು ಸುಲಭವಾಗುತ್ತದೆ, ಮತ್ತು ಮಾರ್ಗದ ಉದ್ದವು ಕಡಿಮೆಯಾಗಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ನಾವು ಇನ್ನೂ ಅನ್ವೇಷಣೆಗೆ ತೆರೆಯಲಾಗಿದ್ದು, ನಾವು ಬಹುಶಃ ಉತ್ತಮ ಮಾರ್ಗದಿಂದ ದೂರ ಸರಿದು, ಹೊಸ ಆಯ್ಕೆಗಳನ್ನು ಅನ್ವೇಷಿಸುತ್ತೇವೆ, ಇದರಿಂದ ಮಾರ್ಗವು ಆದರ್ಶಕ್ಕಿಂತ ಹೆಚ್ಚು ಉದ್ದವಾಗುತ್ತದೆ.\n", + "\n", + "ನಾವು ಈ ಗ್ರಾಫ್‌ನಲ್ಲಿ ಇನ್ನೂ ಗಮನಿಸುವುದು ಏನೆಂದರೆ, ಕೆಲವು ಸಮಯದಲ್ಲಿ ಉದ್ದವು ತೀವ್ರವಾಗಿ ಹೆಚ್ಚಾಗಿದೆ. ಇದು ಪ್ರಕ್ರಿಯೆಯ ಅಸ್ಪಷ್ಟ ಸ್ವಭಾವವನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಮತ್ತು ನಾವು ಕೆಲವು ಸಮಯದಲ್ಲಿ Q-ಟೇಬಲ್ ಗುಣಾಂಕಗಳನ್ನು \"ಹಾಳು\" ಮಾಡಬಹುದು, ಅವುಗಳನ್ನು ಹೊಸ ಮೌಲ್ಯಗಳಿಂದ ಮರುಬರೆಯುವ ಮೂಲಕ. ಇದನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಕಲಿಕೆಯ ದರವನ್ನು ಕಡಿಮೆ ಮಾಡಬೇಕು (ಅಂದರೆ ತರಬೇತಿಯ ಕೊನೆಯಲ್ಲಿ ನಾವು Q-ಟೇಬಲ್ ಮೌಲ್ಯಗಳನ್ನು ಸಣ್ಣ ಮೌಲ್ಯದಿಂದ ಮಾತ್ರ ಸರಿಪಡಿಸುತ್ತೇವೆ).\n", + "\n", + "ಒಟ್ಟಾರೆ, ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯ ಯಶಸ್ಸು ಮತ್ತು ಗುಣಮಟ್ಟವು ಕಲಿಕೆಯ ದರ, ಕಲಿಕೆಯ ದರ ಕುಸಿತ ಮತ್ತು ಡಿಸ್ಕೌಂಟ್ ಫ್ಯಾಕ್ಟರ್ ಮುಂತಾದ ಪರಿಮಾಣಗಳ ಮೇಲೆ ಬಹಳ ಅವಲಂಬಿತವಾಗಿದೆ ಎಂಬುದನ್ನು ನೆನಪಿಡುವುದು ಮುಖ್ಯ. ಅವುಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ **ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು** ಎಂದು ಕರೆಯುತ್ತಾರೆ, ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ನಾವು ಆಪ್ಟಿಮೈಸ್ ಮಾಡುವ **ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು** (ಉದಾ. Q-ಟೇಬಲ್ ಗುಣಾಂಕಗಳು) ಇಂದ ವಿಭಿನ್ನವಾಗಿಸಲು. ಉತ್ತಮ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್ ಮೌಲ್ಯಗಳನ್ನು ಹುಡುಕುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು **ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್ ಆಪ್ಟಿಮೈಜೆಷನ್** ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಮತ್ತು ಇದು ಪ್ರತ್ಯೇಕ ವಿಷಯಕ್ಕೆ ಅರ್ಹವಾಗಿದೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "## ವ್ಯಾಯಾಮ\n", + "#### ಇನ್ನಷ್ಟು ವಾಸ್ತವಿಕ ಪೀಟರ್ ಮತ್ತು ನರಿ ಲೋಕ\n", + "\n", + "ನಮ್ಮ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ, ಪೀಟರ್ ಬಹಳಷ್ಟು ದಣಿವಾಗದೆ ಅಥವಾ ಹಸಿವಾಗದೆ ಸುತ್ತಾಡಲು ಸಾಧ್ಯವಾಯಿತು. ಇನ್ನಷ್ಟು ವಾಸ್ತವಿಕ ಲೋಕದಲ್ಲಿ, ಅವನು ಸಮಯಕಾಲಕ್ಕೆ ಕುಳಿತು ವಿಶ್ರಾಂತಿ ಪಡೆಯಬೇಕು ಮತ್ತು ತಾನೇ ಆಹಾರ ಸೇವಿಸಬೇಕು. ಕೆಳಗಿನ ನಿಯಮಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಮೂಲಕ ನಮ್ಮ ಲೋಕವನ್ನು ಇನ್ನಷ್ಟು ವಾಸ್ತವಿಕವಾಗಿಸೋಣ:\n", + "\n", + "1. ಒಂದು ಸ್ಥಳದಿಂದ ಮತ್ತೊಂದು ಸ್ಥಳಕ್ಕೆ ಚಲಿಸುವ ಮೂಲಕ, ಪೀಟರ್ **ಶಕ್ತಿ** ಕಳೆದುಕೊಳ್ಳುತ್ತಾನೆ ಮತ್ತು ಕೆಲವು **ದಣಿವು** ಗಳಿಸುತ್ತಾನೆ.\n", + "2. ಪೀಟರ್ ಸೇಬುಗಳನ್ನು ತಿಂದರೆ ಹೆಚ್ಚು ಶಕ್ತಿ ಗಳಿಸಬಹುದು.\n", + "3. ಪೀಟರ್ ಮರದ ಕೆಳಗೆ ಅಥವಾ ಹುಲ್ಲಿನ ಮೇಲೆ (ಅಂದರೆ ಹಸಿರು ಮೈದಾನದಲ್ಲಿ ಮರ ಅಥವಾ ಹುಲ್ಲು ಇರುವ ಬೋರ್ಡ್ ಸ್ಥಳಕ್ಕೆ ನಡೆಯುವ ಮೂಲಕ) ವಿಶ್ರಾಂತಿ ಪಡೆದು ದಣಿವಿನಿಂದ ಮುಕ್ತನಾಗಬಹುದು.\n", + "4. ಪೀಟರ್ ನರನ್ನು ಹುಡುಕಿ ಕೊಲ್ಲಬೇಕು.\n", + "5. ನರನ್ನು ಕೊಲ್ಲಲು, ಪೀಟರ್‌ಗೆ ನಿರ್ದಿಷ್ಟ ಮಟ್ಟದ ಶಕ್ತಿ ಮತ್ತು ದಣಿವು ಬೇಕಾಗುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ ಅವನು ಯುದ್ಧವನ್ನು ಸೋಲುತ್ತಾನೆ.\n", + "\n", + "ಮೇಲಿನ ಬಹುಮಾನ ಕಾರ್ಯವನ್ನು ಆಟದ ನಿಯಮಗಳ ಪ್ರಕಾರ ಬದಲಿಸಿ, reinforcement learning ಆಲ್ಗಾರಿದಮ್ ಅನ್ನು ಚಲಿಸಿ ಆಟವನ್ನು ಗೆಲ್ಲಲು ಉತ್ತಮ ತಂತ್ರವನ್ನು ಕಲಿಯಿರಿ, ಮತ್ತು ನಿಮ್ಮ ಆಲ್ಗಾರಿದಮ್‌ನೊಂದಿಗೆ ಯಾದೃಚ್ಛಿಕ ನಡಿಗೆ ಫಲಿತಾಂಶಗಳನ್ನು ಗೆಲುವಿನ ಮತ್ತು ಸೋಲಿನ ಆಟಗಳ ಸಂಖ್ಯೆಯ ದೃಷ್ಟಿಯಿಂದ ಹೋಲಿಸಿ.\n", + "\n", + "> **ಗಮನಿಸಿ**: ಇದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು, ವಿಶೇಷವಾಗಿ epochs ಸಂಖ್ಯೆಯನ್ನು ಹೊಂದಿಕೊಳಬೇಕಾಗಬಹುದು. ಯಾಕಂದರೆ ಆಟದ ಯಶಸ್ಸು (ನರನೊಂದಿಗೆ ಹೋರಾಟ) ಅಪರೂಪದ ಘಟನೆ, ನೀವು ಬಹಳ ಹೆಚ್ಚು ತರಬೇತಿ ಸಮಯವನ್ನು ನಿರೀಕ್ಷಿಸಬಹುದು.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/2-Gym/README.md b/translations/kn/8-Reinforcement/2-Gym/README.md new file mode 100644 index 000000000..8f26604bd --- /dev/null +++ b/translations/kn/8-Reinforcement/2-Gym/README.md @@ -0,0 +1,356 @@ + +# ಕಾರ್ಟ್‌ಪೋಲ್ ಸ್ಕೇಟಿಂಗ್ + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ನಾವು ಪರಿಹರಿಸುತ್ತಿದ್ದ ಸಮಸ್ಯೆ ಆಟದ ಸಮಸ್ಯೆಯಂತೆ ಕಾಣಬಹುದು, ನಿಜವಾದ ಜೀವನದ ಸಂದರ್ಭಗಳಿಗೆ ಅನ್ವಯಿಸುವುದಿಲ್ಲ ಎಂದು ಭಾಸವಾಗಬಹುದು. ಆದರೆ ಇದು ಸತ್ಯವಲ್ಲ, ಏಕೆಂದರೆ ಅನೇಕ ನಿಜವಾದ ಜಗತ್ತಿನ ಸಮಸ್ಯೆಗಳು ಕೂಡ ಈ ದೃಶ್ಯವನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತವೆ - ಚೆಸ್ ಅಥವಾ ಗೋ ಆಟವನ್ನೂ ಸೇರಿಸಿ. ಅವುಗಳು ಸಮಾನವಾಗಿವೆ, ಏಕೆಂದರೆ ನಮಗೂ ನಿಯಮಗಳೊಂದಿಗೆ ಒಂದು ಬೋರ್ಡ್ ಇದೆ ಮತ್ತು **ವಿಭಜಿತ ಸ್ಥಿತಿ** ಇದೆ. + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ಪರಿಚಯ + +ಈ ಪಾಠದಲ್ಲಿ ನಾವು Q-ಲರ್ನಿಂಗ್‌ನ ಅದೇ ತತ್ವಗಳನ್ನು **ನಿರಂತರ ಸ್ಥಿತಿ** ಹೊಂದಿರುವ ಸಮಸ್ಯೆಗೆ ಅನ್ವಯಿಸುವೆವು, ಅಂದರೆ ಒಂದು ಅಥವಾ ಹೆಚ್ಚು ನಿಜವಾದ ಸಂಖ್ಯೆಗಳ ಮೂಲಕ ನೀಡಲ್ಪಡುವ ಸ್ಥಿತಿ. ನಾವು ಕೆಳಗಿನ ಸಮಸ್ಯೆಯನ್ನು ಎದುರಿಸುವೆವು: + +> **ಸಮಸ್ಯೆ**: ಪೀಟರ್ ನಾಯಿ ಹಂದಿಯಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು, ಅವನು ವೇಗವಾಗಿ ಚಲಿಸಲು ಸಾಧ್ಯವಾಗಬೇಕು. ನಾವು ನೋಡೋಣ ಪೀಟರ್ ಹೇಗೆ ಸ್ಕೇಟ್ ಮಾಡುವುದು ಕಲಿಯಬಹುದು, ವಿಶೇಷವಾಗಿ, ಸಮತೋಲನವನ್ನು ಕಾಯ್ದುಕೊಳ್ಳಲು, Q-ಲರ್ನಿಂಗ್ ಬಳಸಿ. + +![ದ ಗ್ರೇಟ್ ಎಸ್ಕೇಪ್!](../../../../translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.kn.png) + +> ಪೀಟರ್ ಮತ್ತು ಅವನ ಸ್ನೇಹಿತರು ನಾಯಿ ಹಂದಿಯಿಂದ ತಪ್ಪಿಸಲು ಸೃಜನಶೀಲರಾಗುತ್ತಾರೆ! ಚಿತ್ರ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ + +ನಾವು ಸಮತೋಲನದ ಸರಳೀಕೃತ ಆವೃತ್ತಿಯನ್ನು ಬಳಸುತ್ತೇವೆ, ಇದನ್ನು **ಕಾರ್ಟ್‌ಪೋಲ್** ಸಮಸ್ಯೆ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಕಾರ್ಟ್‌ಪೋಲ್ ಜಗತ್ತಿನಲ್ಲಿ, ನಮಗೆ ಎಡಕ್ಕೆ ಅಥವಾ ಬಲಕ್ಕೆ ಚಲಿಸುವ ಹೋರಿಜಾಂಟಲ್ ಸ್ಲೈಡರ್ ಇದೆ, ಮತ್ತು ಗುರಿ ಸ್ಲೈಡರ್ ಮೇಲಿನ ಲಂಬ ಕಂಬವನ್ನು ಸಮತೋಲನದಲ್ಲಿಡುವುದು. + +a cartpole + +## ಪೂರ್ವಾಪೇಕ್ಷಿತಗಳು + +ಈ ಪಾಠದಲ್ಲಿ, ನಾವು **OpenAI Gym** ಎಂಬ ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸುತ್ತೇವೆ ವಿವಿಧ **ಪರಿಸರಗಳನ್ನು** ಅನುಕರಿಸಲು. ನೀವು ಈ ಪಾಠದ ಕೋಡ್ ಅನ್ನು ಸ್ಥಳೀಯವಾಗಿ (ಉದಾ. Visual Studio Code ನಿಂದ) ಚಾಲನೆ ಮಾಡಬಹುದು, ಆ ಸಂದರ್ಭದಲ್ಲಿ ಅನುಕರಣ ಹೊಸ ವಿಂಡೋದಲ್ಲಿ ತೆರೆಯುತ್ತದೆ. ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ ಕೋಡ್ ಚಾಲನೆ ಮಾಡುವಾಗ, ನೀವು ಕೆಲವು ತಿದ್ದುಪಡಿ ಮಾಡಬೇಕಾಗಬಹುದು, ಇದನ್ನು ಇಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ [ಇಲ್ಲಿ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). + +## OpenAI Gym + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ಆಟದ ನಿಯಮಗಳು ಮತ್ತು ಸ್ಥಿತಿಯನ್ನು ನಾವು ಸ್ವತಃ ವ್ಯಾಖ್ಯಾನಿಸಿದ `Board` ವರ್ಗದಿಂದ ನೀಡಲಾಗಿತ್ತು. ಇಲ್ಲಿ ನಾವು ಸಮತೋಲನದ ಕಂಬದ ಭೌತಶಾಸ್ತ್ರವನ್ನು ಅನುಕರಿಸುವ ವಿಶೇಷ **ಅನುಕರಣ ಪರಿಸರ** ಅನ್ನು ಬಳಸುತ್ತೇವೆ. ಬಲವರ್ಧನೆ ಕಲಿಕೆ ಆಲ್ಗಾರಿದಮ್ಗಳ ತರಬೇತಿಗೆ ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಅನುಕರಣ ಪರಿಸರಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ [Gym](https://gym.openai.com/), ಇದು [OpenAI](https://openai.com/) ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ. ಈ ಜಿಮ್ ಬಳಸಿ ನಾವು ಕಾರ್ಟ್‌ಪೋಲ್ ಅನುಕರಣದಿಂದ ಅಟಾರಿ ಆಟಗಳವರೆಗೆ ವಿಭಿನ್ನ **ಪರಿಸರಗಳನ್ನು** ರಚಿಸಬಹುದು. + +> **ಗಮನಿಸಿ**: OpenAI Gym ನಿಂದ ಲಭ್ಯವಿರುವ ಇತರ ಪರಿಸರಗಳನ್ನು ನೀವು [ಇಲ್ಲಿ](https://gym.openai.com/envs/#classic_control) ನೋಡಬಹುದು. + +ಮೊದಲು, ಜಿಮ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ ಮತ್ತು ಅಗತ್ಯ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳೋಣ (ಕೋಡ್ ಬ್ಲಾಕ್ 1): + +```python +import sys +!{sys.executable} -m pip install gym + +import gym +import matplotlib.pyplot as plt +import numpy as np +import random +``` + +## ಅಭ್ಯಾಸ - ಕಾರ್ಟ್‌ಪೋಲ್ ಪರಿಸರವನ್ನು ಪ್ರಾರಂಭಿಸಿ + +ಕಾರ್ಟ್‌ಪೋಲ್ ಸಮತೋಲನ ಸಮಸ್ಯೆಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು, ನಾವು ಸಂಬಂಧಿಸಿದ ಪರಿಸರವನ್ನು ಪ್ರಾರಂಭಿಸಬೇಕು. ಪ್ರತಿ ಪರಿಸರವು ಕೆಳಗಿನೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದೆ: + +- **ನಿರೀಕ್ಷಣಾ ಸ್ಥಳ** ಇದು ಪರಿಸರದಿಂದ ನಾವು ಪಡೆಯುವ ಮಾಹಿತಿಯ ರಚನೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಕಾರ್ಟ್‌ಪೋಲ್ ಸಮಸ್ಯೆಗೆ, ನಾವು ಕಂಬದ ಸ್ಥಾನ, ವೇಗ ಮತ್ತು ಕೆಲವು ಇತರ ಮೌಲ್ಯಗಳನ್ನು ಪಡೆಯುತ್ತೇವೆ. + +- **ಕ್ರಿಯೆ ಸ್ಥಳ** ಇದು ಸಾಧ್ಯವಾದ ಕ್ರಿಯೆಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ ಕ್ರಿಯೆ ಸ್ಥಳವು ವಿಭಜಿತವಾಗಿದೆ, ಮತ್ತು ಎರಡು ಕ್ರಿಯೆಗಳಿವೆ - **ಎಡ** ಮತ್ತು **ಬಲ**. (ಕೋಡ್ ಬ್ಲಾಕ್ 2) + +1. ಪ್ರಾರಂಭಿಸಲು, ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ಟೈಪ್ ಮಾಡಿ: + + ```python + env = gym.make("CartPole-v1") + print(env.action_space) + print(env.observation_space) + print(env.action_space.sample()) + ``` + +ಪರಿಸರ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನೋಡಲು, 100 ಹಂತಗಳ ಸಣ್ಣ ಅನುಕರಣವನ್ನು ನಡೆಸೋಣ. ಪ್ರತಿ ಹಂತದಲ್ಲಿ, ನಾವು ತೆಗೆದುಕೊಳ್ಳಬೇಕಾದ ಕ್ರಿಯೆಯೊಂದನ್ನು ನೀಡುತ್ತೇವೆ - ಈ ಅನುಕರಣದಲ್ಲಿ ನಾವು `action_space` ನಿಂದ ಯಾದೃಚ್ಛಿಕವಾಗಿ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತೇವೆ. + +1. ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ಚಾಲನೆ ಮಾಡಿ ಮತ್ತು ಅದು ಏನಾಗುತ್ತದೆ ನೋಡಿ. + + ✅ ನೆನಪಿಡಿ, ಈ ಕೋಡ್ ಅನ್ನು ಸ್ಥಳೀಯ Python ಸ್ಥಾಪನೆಯಲ್ಲಿ ಚಾಲನೆ ಮಾಡುವುದು ಆದ್ಯತೆ! (ಕೋಡ್ ಬ್ಲಾಕ್ 3) + + ```python + env.reset() + + for i in range(100): + env.render() + env.step(env.action_space.sample()) + env.close() + ``` + + ನೀವು ಈ ಚಿತ್ರಕ್ಕೆ ಸಮಾನವಾದುದನ್ನು ನೋಡಬಹುದು: + + ![ನಾನ್-ಬ್ಯಾಲನ್ಸಿಂಗ್ ಕಾರ್ಟ್‌ಪೋಲ್](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + +1. ಅನುಕರಣದ ಸಮಯದಲ್ಲಿ, ನಾವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸಬೇಕೆಂದು ನಿರ್ಧರಿಸಲು ನಿರೀಕ್ಷಣೆಗಳನ್ನು ಪಡೆಯಬೇಕಾಗುತ್ತದೆ. ವಾಸ್ತವದಲ್ಲಿ, ಸ್ಟೆಪ್ ಫಂಕ್ಷನ್ ಪ್ರಸ್ತುತ ನಿರೀಕ್ಷಣೆಗಳನ್ನು, ಬಹುಮಾನ ಕಾರ್ಯವನ್ನು ಮತ್ತು ಅನುಕರಣವನ್ನು ಮುಂದುವರಿಸಲು ಅರ್ಥವಿರುವುದೇ ಇಲ್ಲವೇ ಎಂಬುದನ್ನು ಸೂಚಿಸುವ ಡನ್ ಫ್ಲಾಗ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ: (ಕೋಡ್ ಬ್ಲಾಕ್ 4) + + ```python + env.reset() + + done = False + while not done: + env.render() + obs, rew, done, info = env.step(env.action_space.sample()) + print(f"{obs} -> {rew}") + env.close() + ``` + + ನೀವು ನೋಟ್ಬುಕ್ ಔಟ್‌ಪುಟ್‌ನಲ್ಲಿ ಈ ರೀತಿಯುದನ್ನು ನೋಡುತ್ತೀರಿ: + + ```text + [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 + [ 0.02917248 -0.04828055 0.03248977 0.00543839] -> 1.0 + [ 0.02820687 0.14636075 0.03259854 -0.27681916] -> 1.0 + [ 0.03113408 0.34100283 0.02706215 -0.55904489] -> 1.0 + [ 0.03795414 0.53573468 0.01588125 -0.84308041] -> 1.0 + ... + [ 0.17299878 0.15868546 -0.20754175 -0.55975453] -> 1.0 + [ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0 + ``` + + ಅನುಕರಣದ ಪ್ರತಿ ಹಂತದಲ್ಲಿ ಹಿಂತಿರುಗಿಸುವ ನಿರೀಕ್ಷಣಾ ವೆಕ್ಟರ್ ಕೆಳಗಿನ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿದೆ: + - ಕಾರ್ಟ್‌ನ ಸ್ಥಾನ + - ಕಾರ್ಟ್‌ನ ವೇಗ + - ಕಂಬದ ಕೋನ + - ಕಂಬದ ತಿರುಗುವ ದರ + +1. ಆ ಸಂಖ್ಯೆಗಳ ಕನಿಷ್ಠ ಮತ್ತು ಗರಿಷ್ಠ ಮೌಲ್ಯಗಳನ್ನು ಪಡೆಯಿರಿ: (ಕೋಡ್ ಬ್ಲಾಕ್ 5) + + ```python + print(env.observation_space.low) + print(env.observation_space.high) + ``` + + ನೀವು ಗಮನಿಸಬಹುದು ಪ್ರತಿ ಅನುಕರಣ ಹಂತದಲ್ಲಿ ಬಹುಮಾನ ಮೌಲ್ಯವು ಸದಾ 1 ಆಗಿರುತ್ತದೆ. ಇದಕ್ಕೆ ಕಾರಣ ನಮ್ಮ ಗುರಿ ಸಾಧ್ಯವಾದಷ್ಟು ದೀರ್ಘಕಾಲ ಜೀವಿಸುವುದು, ಅಂದರೆ ಕಂಬವನ್ನು ಸಮತೋಲನದಲ್ಲಿಡುವುದು. + + ✅ ವಾಸ್ತವದಲ್ಲಿ, ಕಾರ್ಟ್‌ಪೋಲ್ ಅನುಕರಣವನ್ನು 100連続 ಪ್ರಯೋಗಗಳಲ್ಲಿ ಸರಾಸರಿ 195 ಬಹುಮಾನವನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾದರೆ ಅದು ಪರಿಹರಿಸಲಾಗಿದೆ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. + +## ಸ್ಥಿತಿ ವಿಭಜನೆ + +Q-ಲರ್ನಿಂಗ್‌ನಲ್ಲಿ, ನಾವು ಪ್ರತಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಏನು ಮಾಡಬೇಕೆಂದು ವ್ಯಾಖ್ಯಾನಿಸುವ Q-ಟೇಬಲ್ ನಿರ್ಮಿಸಬೇಕಾಗುತ್ತದೆ. ಇದನ್ನು ಮಾಡಲು, ಸ್ಥಿತಿಯು **ವಿಭಜಿತ** ಆಗಿರಬೇಕು, ಅಂದರೆ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯ ವಿಭಜಿತ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿರಬೇಕು. ಆದ್ದರಿಂದ, ನಾವು ನಮ್ಮ ನಿರೀಕ್ಷಣೆಗಳನ್ನು ಹೇಗೆಂದರೆ **ವಿಭಜಿಸಬೇಕು**, ಅವುಗಳನ್ನು ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಗಳ ಸಮೂಹಕ್ಕೆ ನಕ್ಷೆ ಮಾಡಬೇಕು. + +ಇದಕ್ಕೆ ಕೆಲವು ವಿಧಾನಗಳಿವೆ: + +- **ಬಿನ್‌ಗಳಿಗೆ ವಿಭಜನೆ**. ನಾವು ಒಂದು ಮೌಲ್ಯದ ಅಂತರವನ್ನು ತಿಳಿದಿದ್ದರೆ, ಆ ಅಂತರವನ್ನು ಹಲವಾರು **ಬಿನ್‌ಗಳಾಗಿ** ವಿಭಜಿಸಬಹುದು, ನಂತರ ಮೌಲ್ಯವನ್ನು ಅದು ಸೇರಿದ ಬಿನ್ ಸಂಖ್ಯೆಯಿಂದ ಬದಲಾಯಿಸಬಹುದು. ಇದನ್ನು numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) ವಿಧಾನ ಬಳಸಿ ಮಾಡಬಹುದು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು ನಿಖರವಾಗಿ ಸ್ಥಿತಿಯ ಗಾತ್ರವನ್ನು ತಿಳಿದುಕೊಳ್ಳುತ್ತೇವೆ, ಏಕೆಂದರೆ ಅದು ನಾವು ಆಯ್ಕೆಮಾಡಿದ ಬಿನ್‌ಗಳ ಸಂಖ್ಯೆಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ. + +✅ ನಾವು ರೇಖೀಯ ಇಂಟರ್‌ಪೋಲೇಶನ್ ಬಳಸಿ ಮೌಲ್ಯಗಳನ್ನು ಕೆಲವು ನಿರ್ದಿಷ್ಟ ಅಂತರಕ್ಕೆ (ಉದಾ. -20 ರಿಂದ 20) ತಂದು, ನಂತರ ಸಂಖ್ಯೆಗಳನ್ನೂ ಸುತ್ತುವರಿದಂತೆ ಪೂರ್ಣಾಂಕಗಳಿಗೆ ಪರಿವರ್ತಿಸಬಹುದು. ಇದು ಸ್ಥಿತಿಯ ಗಾತ್ರದ ಮೇಲೆ ಸ್ವಲ್ಪ ಕಡಿಮೆ ನಿಯಂತ್ರಣ ನೀಡುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ನಮಗೆ ಇನ್‌ಪುಟ್ ಮೌಲ್ಯಗಳ ನಿಖರ ಶ್ರೇಣಿಗಳು ತಿಳಿದಿಲ್ಲದಿದ್ದರೆ. ಉದಾಹರಣೆಗೆ, ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ 4 ಮೌಲ್ಯಗಳಲ್ಲಿ 2 ಕ್ಕೆ ಮೇಲ್ಭಾಗ/ಕೆಳಭಾಗ ಮಿತಿ ಇಲ್ಲ, ಇದು ಅನಂತ ಸಂಖ್ಯೆಯ ಸ್ಥಿತಿಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು. + +ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಾವು ಎರಡನೇ ವಿಧಾನವನ್ನು ಅನುಸರಿಸುವೆವು. ನೀವು ನಂತರ ಗಮನಿಸಬಹುದು, ನಿರ್ದಿಷ್ಟ ಮೇಲ್ಭಾಗ/ಕೆಳಭಾಗ ಮಿತಿಗಳಿಲ್ಲದಿದ್ದರೂ, ಆ ಮೌಲ್ಯಗಳು ಅಪರೂಪವಾಗಿ ನಿರ್ದಿಷ್ಟ ನಿರ್ದಿಷ್ಟ ಅಂತರದ ಹೊರಗೆ ಹೋಗುತ್ತವೆ, ಆದ್ದರಿಂದ ಅತಿ ಮಿತಿಯ ಸ್ಥಿತಿಗಳು ಬಹಳ ಅಪರೂಪವಾಗಿರುತ್ತವೆ. + +1. ಇಲ್ಲಿ ನಮ್ಮ ಮಾದರಿಯಿಂದ ನಿರೀಕ್ಷಣೆಯನ್ನು ತೆಗೆದು 4 ಪೂರ್ಣಾಂಕ ಮೌಲ್ಯಗಳ ಟ್ಯೂಪಲ್ ಅನ್ನು ಉತ್ಪಾದಿಸುವ ಫಂಕ್ಷನ್ ಇದೆ: (ಕೋಡ್ ಬ್ಲಾಕ್ 6) + + ```python + def discretize(x): + return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) + ``` + +1. ಇನ್ನೊಂದು ವಿಭಜನೆ ವಿಧಾನವನ್ನು ಬಿನ್‌ಗಳ ಬಳಕೆ ಮೂಲಕ ಅನ್ವೇಷಿಸೋಣ: (ಕೋಡ್ ಬ್ಲಾಕ್ 7) + + ```python + def create_bins(i,num): + return np.arange(num+1)*(i[1]-i[0])/num+i[0] + + print("Sample bins for interval (-5,5) with 10 bins\n",create_bins((-5,5),10)) + + ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # ಪ್ರತಿ ಪರಿಮಾಣದ ಮೌಲ್ಯಗಳ ಮಧ್ಯಂತರಗಳು + nbins = [20,20,10,10] # ಪ್ರತಿ ಪರಿಮಾಣದ ಬಿನ್‌ಗಳ ಸಂಖ್ಯೆ + bins = [create_bins(ints[i],nbins[i]) for i in range(4)] + + def discretize_bins(x): + return tuple(np.digitize(x[i],bins[i]) for i in range(4)) + ``` + +1. ಈಗ ಸಣ್ಣ ಅನುಕರಣವನ್ನು ನಡೆಸಿ ಆ ವಿಭಜಿತ ಪರಿಸರ ಮೌಲ್ಯಗಳನ್ನು ಗಮನಿಸೋಣ. ನೀವು `discretize` ಮತ್ತು `discretize_bins` ಎರಡನ್ನೂ ಪ್ರಯತ್ನಿಸಿ ವ್ಯತ್ಯಾಸವಿದೆಯೇ ಎಂದು ನೋಡಿ. + + ✅ `discretize_bins` ಬಿನ್ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಇದು 0-ಆಧಾರಿತವಾಗಿದೆ. ಆದ್ದರಿಂದ ಇನ್‌ಪುಟ್ ಮೌಲ್ಯದ ಸುತ್ತಲೂ 0 ಇರುವ ಮೌಲ್ಯಗಳಿಗೆ ಇದು ಅಂತರದ ಮಧ್ಯಭಾಗದ ಸಂಖ್ಯೆಯನ್ನು (10) ಹಿಂತಿರುಗಿಸುತ್ತದೆ. `discretize` ನಲ್ಲಿ, ನಾವು ಔಟ್‌ಪುಟ್ ಮೌಲ್ಯಗಳ ಶ್ರೇಣಿಯನ್ನು ಪರಿಗಣಿಸಿಲ್ಲ, ಅವು ನೆಗೆಟಿವ್ ಆಗಿರಬಹುದು, ಆದ್ದರಿಂದ ಸ್ಥಿತಿ ಮೌಲ್ಯಗಳು ಸರಿದೂಗಿಲ್ಲ, ಮತ್ತು 0 0 ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. (ಕೋಡ್ ಬ್ಲಾಕ್ 8) + + ```python + env.reset() + + done = False + while not done: + #env.render() + obs, rew, done, info = env.step(env.action_space.sample()) + #print(discretize_bins(obs)) + print(discretize(obs)) + env.close() + ``` + + ✅ ನೀವು ಪರಿಸರ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನೋಡಲು `env.render` ಆರಂಭವಾಗುವ ಸಾಲನ್ನು ಅನ್ಕಮೆಂಟ್ ಮಾಡಬಹುದು. ಇಲ್ಲದಿದ್ದರೆ ನೀವು ಅದನ್ನು ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು, ಇದು ವೇಗವಾಗಿದೆ. ನಾವು ನಮ್ಮ Q-ಲರ್ನಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಈ "ಅದೃಶ್ಯ" ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಬಳಸುತ್ತೇವೆ. + +## Q-ಟೇಬಲ್ ರಚನೆ + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ಸ್ಥಿತಿ 0 ರಿಂದ 8 ರವರೆಗೆ ಸರಳ ಸಂಖ್ಯೆಗಳ ಜೋಡಿ ಆಗಿತ್ತು, ಆದ್ದರಿಂದ Q-ಟೇಬಲ್ ಅನ್ನು 8x8x2 ಆಕಾರದ numpy ಟೆನ್ಸರ್ ಮೂಲಕ ಪ್ರತಿನಿಧಿಸುವುದು ಅನುಕೂಲಕರವಾಗಿತ್ತು. ನಾವು ಬಿನ್‌ಗಳ ವಿಭಜನೆ ಬಳಸಿದರೆ, ಸ್ಥಿತಿ ವೆಕ್ಟರ್ ಗಾತ್ರವೂ ತಿಳಿದಿರುತ್ತದೆ, ಆದ್ದರಿಂದ ನಾವು ಅದೇ ವಿಧಾನವನ್ನು ಬಳಸಬಹುದು ಮತ್ತು ಸ್ಥಿತಿಯನ್ನು 20x20x10x10x2 ಆಕಾರದ ಅರೇ ಮೂಲಕ ಪ್ರತಿನಿಧಿಸಬಹುದು (ಇಲ್ಲಿ 2 ಕ್ರಿಯೆ ಸ್ಥಳದ ಆಯಾಮ, ಮತ್ತು ಮೊದಲ ಆಯಾಮಗಳು ನಿರೀಕ್ಷಣಾ ಸ್ಥಳದ ಪ್ರತಿ ಪರಿಮಾಣಕ್ಕೆ ನಾವು ಆಯ್ಕೆಮಾಡಿದ ಬಿನ್‌ಗಳ ಸಂಖ್ಯೆಗೆ ಹೊಂದಿಕೆಯಾಗಿವೆ). + +ಆದರೆ, ಕೆಲವೊಮ್ಮೆ ನಿರೀಕ್ಷಣಾ ಸ್ಥಳದ ನಿಖರ ಆಯಾಮಗಳು ತಿಳಿದಿರಲಾರವು. `discretize` ಫಂಕ್ಷನ್‌ನ ಸಂದರ್ಭದಲ್ಲಿ, ನಮ್ಮ ಸ್ಥಿತಿ ನಿರ್ದಿಷ್ಟ ಮಿತಿಗಳೊಳಗಿರುತ್ತದೆ ಎಂದು ನಾವು ಎಂದಿಗೂ ಖಚಿತವಾಗಿರಲಾರವು, ಏಕೆಂದರೆ ಕೆಲವು ಮೂಲ ಮೌಲ್ಯಗಳಿಗೆ ಮಿತಿ ಇಲ್ಲ. ಆದ್ದರಿಂದ, ನಾವು ಸ್ವಲ್ಪ ವಿಭಿನ್ನ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತೇವೆ ಮತ್ತು Q-ಟೇಬಲ್ ಅನ್ನು ಡಿಕ್ಷನರಿ ಮೂಲಕ ಪ್ರತಿನಿಧಿಸುತ್ತೇವೆ. + +1. *(ಸ್ಥಿತಿ, ಕ್ರಿಯೆ)* ಜೋಡಿಯನ್ನು ಡಿಕ್ಷನರಿ ಕೀ ಆಗಿ ಬಳಸಿ, ಮತ್ತು ಮೌಲ್ಯವು Q-ಟೇಬಲ್ ಎಂಟ್ರಿ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. (ಕೋಡ್ ಬ್ಲಾಕ್ 9) + + ```python + Q = {} + actions = (0,1) + + def qvalues(state): + return [Q.get((state,a),0) for a in actions] + ``` + + ಇಲ್ಲಿ ನಾವು `qvalues()` ಎಂಬ ಫಂಕ್ಷನ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತೇವೆ, ಇದು ನೀಡಲಾದ ಸ್ಥಿತಿಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಸಾಧ್ಯ ಕ್ರಿಯೆಗಳಿಗಾಗಿ Q-ಟೇಬಲ್ ಮೌಲ್ಯಗಳ ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಎಂಟ್ರಿ Q-ಟೇಬಲ್‌ನಲ್ಲಿ ಇಲ್ಲದಿದ್ದರೆ, ನಾವು ಡೀಫಾಲ್ಟ್ ಆಗಿ 0 ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತೇವೆ. + +## Q-ಲರ್ನಿಂಗ್ ಪ್ರಾರಂಭಿಸೋಣ + +ಈಗ ನಾವು ಪೀಟರ್‌ಗೆ ಸಮತೋಲನ ಕಲಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೇವೆ! + +1. ಮೊದಲು, ಕೆಲವು ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಸೆಟ್ ಮಾಡೋಣ: (ಕೋಡ್ ಬ್ಲಾಕ್ 10) + + ```python + # ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು + alpha = 0.3 + gamma = 0.9 + epsilon = 0.90 + ``` + + ಇಲ್ಲಿ, `alpha` ಎಂಬುದು **ಕಲಿಕೆಯ ದರ** ಆಗಿದ್ದು, ಪ್ರತಿ ಹಂತದಲ್ಲಿ Q-ಟೇಬಲ್‌ನ ಪ್ರಸ್ತುತ ಮೌಲ್ಯಗಳನ್ನು ಎಷ್ಟು ಮಟ್ಟಿಗೆ ಸರಿಪಡಿಸಬೇಕೆಂದು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ನಾವು 1 ರಿಂದ ಪ್ರಾರಂಭಿಸಿ, ನಂತರ ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ `alpha` ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿದ್ದೇವೆ. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ ಸರಳತೆಗೆ ನಾವು ಅದನ್ನು ಸ್ಥಿರವಾಗಿರಿಸುವೆವು, ಮತ್ತು ನೀವು ನಂತರ `alpha` ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿಸಲು ಪ್ರಯೋಗ ಮಾಡಬಹುದು. + + `gamma` ಎಂಬುದು **ರಿಯಾಯಿತಿ ಕಡಿತಾಂಶ** ಆಗಿದ್ದು, ಭವಿಷ್ಯದ ಬಹುಮಾನವನ್ನು ಪ್ರಸ್ತುತ ಬಹುಮಾನಕ್ಕಿಂತ ಎಷ್ಟು ಆದ್ಯತೆ ನೀಡಬೇಕೆಂದು ತೋರಿಸುತ್ತದೆ. + + `epsilon` ಎಂಬುದು **ಅನ್ವೇಷಣೆ/ಶೋಷಣೆ ಅಂಶ** ಆಗಿದ್ದು, ನಾವು ಅನ್ವೇಷಣೆಗೆ ಆದ್ಯತೆ ನೀಡಬೇಕೇ ಅಥವಾ ಶೋಷಣೆಗೆ ನೀಡಬೇಕೇ ಎಂದು ನಿರ್ಧರಿಸುತ್ತದೆ. ನಮ್ಮ ಆಲ್ಗಾರಿದಮ್ನಲ್ಲಿ, ನಾವು `epsilon` ಶೇಕಡಾವಾರು ಸಂದರ್ಭಗಳಲ್ಲಿ Q-ಟೇಬಲ್ ಮೌಲ್ಯಗಳ ಪ್ರಕಾರ ಮುಂದಿನ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತೇವೆ, ಉಳಿದ ಸಂದರ್ಭಗಳಲ್ಲಿ ಯಾದೃಚ್ಛಿಕ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತೇವೆ. ಇದು ನಮಗೆ ಹಿಂದೆ ನೋಡದ ಹುಡುಕಾಟ ಪ್ರದೇಶಗಳನ್ನು ಅನ್ವೇಷಿಸಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ. + + ✅ ಸಮತೋಲನದ ದೃಷ್ಟಿಯಿಂದ - ಯಾದೃಚ್ಛಿಕ ಕ್ರಿಯೆ ಆಯ್ಕೆಮಾಡುವುದು (ಅನ್ವೇಷಣೆ) ತಪ್ಪು ದಿಕ್ಕಿನಲ್ಲಿ ಯಾದೃಚ್ಛಿಕ ಹೊಡೆತದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಮತ್ತು ಕಂಬವು ಆ "ತಪ್ಪುಗಳಿಂದ" ಸಮತೋಲನವನ್ನು ಹೇಗೆ ಮರುಸ್ಥಾಪಿಸಿಕೊಳ್ಳಬೇಕೆಂದು ಕಲಿಯಬೇಕು. + +### ಆಲ್ಗಾರಿದಮ್ನ ಸುಧಾರಣೆ + +ಹಿಂದಿನ ಪಾಠದಿಂದ ನಮ್ಮ ಆಲ್ಗಾರಿದಮ್ನಲ್ಲಿ ಎರಡು ಸುಧಾರಣೆಗಳನ್ನು ಮಾಡಬಹುದು: + +- **ಸರಾಸರಿ ಸಂಗ್ರಹಿತ ಬಹುಮಾನವನ್ನು ಲೆಕ್ಕಿಸು**, ಹಲವಾರು ಅನುಕರಣಗಳ ಮೇಲೆ. ನಾವು ಪ್ರಗತಿಯನ್ನು ಪ್ರತಿ 5000 ಪುನರಾವೃತ್ತಿಗಳಲ್ಲಿ ಮುದ್ರಿಸುವೆವು, ಮತ್ತು ಆ ಅವಧಿಯಲ್ಲಿ ನಮ್ಮ ಸಂಗ್ರಹಿತ ಬಹುಮಾನವನ್ನು ಸರಾಸರಿ ಮಾಡುತ್ತೇವೆ. ಅಂದರೆ, ನಾವು 195 ಕ್ಕಿಂತ ಹೆಚ್ಚು ಅಂಕಗಳನ್ನು ಪಡೆಯುತ್ತಿದ್ದರೆ - ನಾವು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲಾಗಿದೆ ಎಂದು ಪರಿಗಣಿಸಬಹುದು, ಅಗತ್ಯಕ್ಕಿಂತಲೂ ಉತ್ತಮ ಗುಣಮಟ್ಟದೊಂದಿಗೆ. + +- **ಗರಿಷ್ಠ ಸರಾಸರಿ ಸಂಗ್ರಹಿತ ಫಲಿತಾಂಶ** `Qmax` ಅನ್ನು ಲೆಕ್ಕಿಸು, ಮತ್ತು ಆ ಫಲಿತಾಂಶಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವ Q-ಟೇಬಲ್ ಅನ್ನು ಸಂಗ್ರಹಿಸೋಣ. ತರಬೇತಿ ನಡೆಸುವಾಗ ನೀವು ಗಮನಿಸುವಿರಿ ಕೆಲವೊಮ್ಮೆ ಸರಾಸರಿ ಸಂಗ್ರಹಿತ ಫಲಿತಾಂಶ ಕುಸಿಯಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಮತ್ತು ನಾವು ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ಗಮನಿಸಿದ ಅತ್ಯುತ್ತಮ ಮಾದರಿಯ Q-ಟೇಬಲ್ ಮೌಲ್ಯಗಳನ್ನು ಕಾಯ್ದುಕೊಳ್ಳಲು ಬಯಸುತ್ತೇವೆ. + +1. ಮುಂದಿನ ಚಿತ್ರಣಕ್ಕಾಗಿ ಪ್ರತಿ ಅನುಕರಣದಲ್ಲಿ ಎಲ್ಲಾ ಸಂಗ್ರಹಿತ ಬಹುಮಾನಗಳನ್ನು `rewards` ವೆಕ್ಟರ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸೋಣ. (ಕೋಡ್ ಬ್ಲಾಕ್ 11) + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + + Qmax = 0 + cum_rewards = [] + rewards = [] + for epoch in range(100000): + obs = env.reset() + done = False + cum_reward=0 + # == ಅನುಕರಣೆ ನಡೆಸಿ == + while not done: + s = discretize(obs) + if random.random() Qmax: + Qmax = np.average(cum_rewards) + Qbest = Q + cum_rewards=[] + ``` + +ನೀವು ಆ ಫಲಿತಾಂಶಗಳಿಂದ ಗಮನಿಸಬಹುದಾದವು: + +- **ನಮ್ಮ ಗುರಿಗೆ ಹತ್ತಿರ**. ನಾವು 100+連続 ಅನುಕರಣಗಳಲ್ಲಿ 195 ಸಂಗ್ರಹಿತ ಬಹುಮಾನಗಳನ್ನು ಪಡೆಯುವ ಗುರಿಗೆ ಬಹಳ ಹತ್ತಿರವಿದ್ದೇವೆ, ಅಥವಾ ನಾವು ಅದನ್ನು ನಿಜವಾಗಿಯೂ ಸಾಧಿಸಿದ್ದೇವೆ! ಕಡಿಮೆ ಅಂಕಗಳನ್ನು ಪಡೆದರೂ, ನಾವು ಖಚಿತವಾಗಿಲ್ಲ, ಏಕೆಂದರೆ ನಾವು 5000 ಪ್ರಯೋಗಗಳ ಸರಾಸರಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ, ಮತ್ತು ಅಧಿಕೃತ ಮಾನದಂಡದಲ್ಲಿ ಕೇವಲ 100 ಪ್ರಯೋಗಗಳು ಬೇಕಾಗಿವೆ. + +- **ಬಹುಮಾನ ಕುಸಿಯಲು ಪ್ರಾರಂಭ**. ಕೆಲವೊಮ್ಮೆ ಬಹುಮಾನ ಕುಸಿಯಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಅಂದರೆ ನಾವು ಈಗಾಗಲೇ ಕಲಿತ ಮೌಲ್ಯಗಳನ್ನು Q-ಟೇಬಲ್‌ನಲ್ಲಿ ಹಾಳುಮಾಡಬಹುದು, ಅದು ಪರಿಸ್ಥಿತಿಯನ್ನು ಕೆಟ್ಟದಾಗಿಸುತ್ತದೆ. + +ಈ ಗಮನಿಕೆ ತರಬೇತಿ ಪ್ರಗತಿಯನ್ನು ಚಿತ್ರಿಸುವಾಗ ಸ್ಪಷ್ಟವಾಗಿ ಕಾಣುತ್ತದೆ. + +## ತರಬೇತಿ ಪ್ರಗತಿ ಚಿತ್ರಣ + +ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ, ನಾವು ಪ್ರತಿ ಪುನರಾವೃತ್ತಿಯಲ್ಲಿ ಸಂಗ್ರಹಿತ ಬಹುಮಾನ ಮೌಲ್ಯವನ್ನು `rewards` ವೆಕ್ಟರ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿದ್ದೇವೆ. ಇದನ್ನು ಪುನರಾವೃತ್ತಿ ಸಂಖ್ಯೆಯ ವಿರುದ್ಧ ಚಿತ್ರಿಸಿದಾಗ ಇದು ಹೀಗೆ ಕಾಣುತ್ತದೆ: + +```python +plt.plot(rewards) +``` + +![ಕಚ್ಚಾ ಪ್ರಗತಿ](../../../../translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.kn.png) + +ಈ ಗ್ರಾಫ್‌ನಿಂದ ಏನನ್ನೂ ಹೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಸಾಂಖ್ಯಿಕ ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆಯ ಸ್ವಭಾವದಿಂದ ತರಬೇತಿ ಅವಧಿಗಳ ಉದ್ದ ಬಹಳ ಬದಲಾಗುತ್ತದೆ. ಈ ಗ್ರಾಫ್‌ಗೆ ಹೆಚ್ಚು ಅರ್ಥ ನೀಡಲು, ನಾವು ಸರಣಿಯ 100 ಪ್ರಯೋಗಗಳ ಮೇಲೆ **ಚಲಿಸುವ ಸರಾಸರಿ** ಲೆಕ್ಕಿಸಬಹುದು. ಇದನ್ನು `np.convolve` ಬಳಸಿ ಸುಲಭವಾಗಿ ಮಾಡಬಹುದು: (ಕೋಡ್ ಬ್ಲಾಕ್ 12) + +```python +def running_average(x,window): + return np.convolve(x,np.ones(window)/window,mode='valid') + +plt.plot(running_average(rewards,100)) +``` + +![ತರಬೇತಿ ಪ್ರಗತಿ](../../../../translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.kn.png) + +## ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಬದಲಾವಣೆ + +ಕಲಿಕೆಯನ್ನು ಹೆಚ್ಚು ಸ್ಥಿರಗೊಳಿಸಲು, ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ಕೆಲವು ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಹೊಂದಿಸುವುದು ಅರ್ಥಪೂರ್ಣ. ವಿಶೇಷವಾಗಿ: + +- **ಕಲಿಕೆಯ ದರ** `alpha` ಗೆ, ನಾವು 1 ಗೆ ಹತ್ತಿರದ ಮೌಲ್ಯಗಳಿಂದ ಪ್ರಾರಂಭಿಸಿ, ನಂತರ ಆ ಪರಿಮಾಣವನ್ನು ನಿಧಾನವಾಗಿ ಕಡಿಮೆ ಮಾಡಬಹುದು. ಸಮಯದೊಂದಿಗೆ, ನಾವು Q-ಟೇಬಲ್‌ನಲ್ಲಿ ಉತ್ತಮ ಪ್ರಾಬಬಿಲಿಟಿ ಮೌಲ್ಯಗಳನ್ನು ಪಡೆಯುತ್ತೇವೆ, ಆದ್ದರಿಂದ ಅವುಗಳನ್ನು ಸ್ವಲ್ಪ ಸರಿಪಡಿಸಬೇಕು, ಸಂಪೂರ್ಣವಾಗಿ ಹೊಸ ಮೌಲ್ಯಗಳಿಂದ ಮರುಬರೆಯಬಾರದು. + +- **ಎಪ್ಸಿಲಾನ್ ಹೆಚ್ಚಿಸಿ**. ನಾವು `epsilon` ಅನ್ನು ನಿಧಾನವಾಗಿ ಹೆಚ್ಚಿಸಲು ಬಯಸಬಹುದು, ಅನ್ವೇಷಣೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಿ ಶೋಷಣೆಯನ್ನು ಹೆಚ್ಚು ಮಾಡಲು. ಇದು ಕಡಿಮೆ ಮೌಲ್ಯದಿಂದ ಪ್ರಾರಂಭಿಸಿ 1 ರವರೆಗೆ ಹಾದುಹೋಗುವುದು ಅರ್ಥಪೂರ್ಣ. + +> **ಕಾರ್ಯ 1**: ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಆಟವಾಡಿ ಮತ್ತು ನೀವು ಹೆಚ್ಚು ಸಂಗ್ರಹಿತ ಬಹುಮಾನವನ್ನು ಸಾಧಿಸಬಹುದೇ ಎಂದು ನೋಡಿ. ನೀವು 195 ಕ್ಕಿಂತ ಮೇಲಾಗುತ್ತೀರಾ? +> **ಕಾರ್ಯ 2**: ಸಮಸ್ಯೆಯನ್ನು ಅಧಿಕೃತವಾಗಿ ಪರಿಹರಿಸಲು, ನೀವು 100連続 ರನ್‌ಗಳಲ್ಲಿ ಸರಾಸರಿ 195 ಬಹುಮಾನವನ್ನು ಪಡೆಯಬೇಕು. ತರಬೇತಿ ಸಮಯದಲ್ಲಿ ಅದನ್ನು ಅಳೆಯಿರಿ ಮತ್ತು ನೀವು ಅಧಿಕೃತವಾಗಿ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ! + +## ಪರಿಣಾಮವನ್ನು ಕ್ರಿಯೆಯಲ್ಲಿ ನೋಡುವುದು + +ತರಬೇತಿಗೊಂಡ ಮಾದರಿ ಹೇಗೆ ವರ್ತಿಸುತ್ತದೆ ಎಂದು ವಾಸ್ತವವಾಗಿ ನೋಡುವುದು ಆಸಕ್ತಿದಾಯಕವಾಗಿರುತ್ತದೆ. ಸಿಮ್ಯುಲೇಶನ್ ಅನ್ನು ನಡೆಸಿ ಮತ್ತು ತರಬೇತಿ ಸಮಯದಲ್ಲಿ ಬಳಸಿದಂತೆ ಕ್ರಿಯೆ ಆಯ್ಕೆ ತಂತ್ರವನ್ನು ಅನುಸರಿಸಿ, Q-ಟೇಬಲ್‌ನ ಪ್ರಾಬಬಿಲಿಟಿ ವಿತರಣೆ ಪ್ರಕಾರ ಮಾದರಿಯನ್ನು ಸ್ಯಾಂಪಲ್ ಮಾಡಿ: (ಕೋಡ್ ಬ್ಲಾಕ್ 13) + +```python +obs = env.reset() +done = False +while not done: + s = discretize(obs) + env.render() + v = probs(np.array(qvalues(s))) + a = random.choices(actions,weights=v)[0] + obs,_,done,_ = env.step(a) +env.close() +``` + +ನೀವು ಈ ರೀತಿಯ ಏನಾದರೂ ನೋಡಬಹುದು: + +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) + +--- + +## 🚀ಸವಾಲು + +> **ಕಾರ್ಯ 3**: ಇಲ್ಲಿ, ನಾವು Q-ಟೇಬಲ್‌ನ ಅಂತಿಮ ನಕಲನ್ನು ಬಳಸುತ್ತಿದ್ದೇವೆ, ಅದು ಅತ್ಯುತ್ತಮವಾಗಿರದಿರಬಹುದು. ನಾವು ಅತ್ಯುತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯ Q-ಟೇಬಲ್ ಅನ್ನು `Qbest` ವ್ಯತ್ಯಯದಲ್ಲಿ ಸಂಗ್ರಹಿಸಿದ್ದೇವೆ ಎಂದು ನೆನಪಿಡಿ! `Qbest` ಅನ್ನು `Q` ಗೆ ನಕಲಿಸಿ ಅದೇ ಉದಾಹರಣೆಯನ್ನು ಪ್ರಯತ್ನಿಸಿ ಮತ್ತು ವ್ಯತ್ಯಾಸವನ್ನು ಗಮನಿಸಿ. + +> **ಕಾರ್ಯ 4**: ಇಲ್ಲಿ ನಾವು ಪ್ರತಿ ಹಂತದಲ್ಲಿಯೂ ಅತ್ಯುತ್ತಮ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತಿರಲಿಲ್ಲ, ಬದಲಿಗೆ ಸಂಬಂಧಿತ ಪ್ರಾಬಬಿಲಿಟಿ ವಿತರಣೆ ಪ್ರಕಾರ ಸ್ಯಾಂಪಲ್ ಮಾಡುತ್ತಿದ್ದೇವೆ. ಯಾವಾಗಲೂ ಅತ್ಯುತ್ತಮ Q-ಟೇಬಲ್ ಮೌಲ್ಯ ಹೊಂದಿರುವ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ಹೆಚ್ಚು ಅರ್ಥಪೂರ್ಣವಾಗುತ್ತದೆಯೇ? ಇದನ್ನು `np.argmax` ಫಂಕ್ಷನ್ ಬಳಸಿ ಅತ್ಯಧಿಕ Q-ಟೇಬಲ್ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿರುವ ಕ್ರಿಯೆ ಸಂಖ್ಯೆಯನ್ನು ಕಂಡುಹಿಡಿಯಬಹುದು. ಈ ತಂತ್ರವನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ ಮತ್ತು ಅದು ಸಮತೋಲನವನ್ನು ಸುಧಾರಿಸುತ್ತದೆಯೇ ಎಂದು ನೋಡಿ. + +## [ಪೋಸ್ಟ್-ಲೆಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ನಿಯೋಜನೆ +[ಮೌಂಟನ್ ಕಾರ್ ತರಬೇತಿ](assignment.md) + +## ಸಮಾರೋಪ + +ನಾವು ಈಗಾಗಲೇ ಏಜೆಂಟ್‌ಗಳನ್ನು ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ಸಾಧಿಸಲು ತರಬೇತಿಗೊಳಿಸುವುದನ್ನು ಕಲಿತಿದ್ದೇವೆ, ಅದು ಆಟದ ಇಚ್ಛಿತ ಸ್ಥಿತಿಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಬಹುಮಾನ ಕಾರ್ಯವನ್ನು ಒದಗಿಸುವ ಮೂಲಕ ಮತ್ತು ಹುಡುಕಾಟ ಸ್ಥಳವನ್ನು ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ ಅನ್ವೇಷಿಸಲು ಅವಕಾಶ ನೀಡುವ ಮೂಲಕ. ನಾವು ಡಿಸ್ಕ್ರೀಟ್ ಮತ್ತು ನಿರಂತರ ಪರಿಸರಗಳ ಪ್ರಕರಣಗಳಲ್ಲಿ Q-ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅನ್ವಯಿಸಿದ್ದೇವೆ, ಆದರೆ ಡಿಸ್ಕ್ರೀಟ್ ಕ್ರಿಯೆಗಳೊಂದಿಗೆ. + +ಕ್ರಿಯಾ ಸ್ಥಿತಿಯೂ ನಿರಂತರವಾಗಿರುವ ಮತ್ತು ಅವಲೋಕನ ಸ್ಥಳವು ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿರುವ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಅಧ್ಯಯನ ಮಾಡುವುದು ಕೂಡ ಮುಖ್ಯ, ಉದಾಹರಣೆಗೆ ಅಟಾರಿ ಆಟದ ಪರದೆ ಚಿತ್ರ. ಆ ಸಮಸ್ಯೆಗಳಲ್ಲಿ ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ಸಾಧಿಸಲು ನಾವು ಸಾಮಾನ್ಯವಾಗಿ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳಂತಹ ಶಕ್ತಿಶಾಲಿ ಯಂತ್ರ ಕಲಿಕೆ ತಂತ್ರಗಳನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ. ಆ ಹೆಚ್ಚು ಪ್ರಗತಿಶೀಲ ವಿಷಯಗಳು ನಮ್ಮ ಮುಂದಿನ ಹೆಚ್ಚಿನ ಪ್ರಗತಿಶೀಲ AI ಕೋರ್ಸ್‌ನ ವಿಷಯವಾಗಿವೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/2-Gym/assignment.md b/translations/kn/8-Reinforcement/2-Gym/assignment.md new file mode 100644 index 000000000..d9587c2a1 --- /dev/null +++ b/translations/kn/8-Reinforcement/2-Gym/assignment.md @@ -0,0 +1,61 @@ + +# ಪರ್ವತ ಕಾರ್ ತರಬೇತಿ + +[OpenAI Gym](http://gym.openai.com) ಅನ್ನು ಎಲ್ಲಾ ಪರಿಸರಗಳು ಒಂದೇ API ಒದಗಿಸುವಂತೆ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ - ಅಂದರೆ ಒಂದೇ ವಿಧಾನಗಳು `reset`, `step` ಮತ್ತು `render`, ಮತ್ತು **ಕ್ರಿಯೆ ಸ್ಥಳ** ಮತ್ತು **ನಿರೀಕ್ಷಣಾ ಸ್ಥಳ** ಎಂಬ ಒಂದೇ ಅವಧಾರಣೆಗಳು. ಆದ್ದರಿಂದ, ಕಡಿಮೆ ಕೋಡ್ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ ವಿಭಿನ್ನ ಪರಿಸರಗಳಿಗೆ ಒಂದೇ ಬಲವರ್ಧಿತ ಕಲಿಕೆ ಆಲ್ಗಾರಿದಮ್ಗಳನ್ನು ಹೊಂದಿಸಲು ಸಾಧ್ಯವಾಗಬೇಕು. + +## ಪರ್ವತ ಕಾರ್ ಪರಿಸರ + +[ಪರ್ವತ ಕಾರ್ ಪರಿಸರ](https://gym.openai.com/envs/MountainCar-v0/) ಒಂದು ಕಣಿವೆಗೆ ಸಿಲುಕಿದ ಕಾರನ್ನು ಹೊಂದಿದೆ: + + + +ಗುರಿ ಕಾರ್ ಅನ್ನು ಕಣಿವೆಯಿಂದ ಹೊರತೆಗೆದು ಧ್ವಜವನ್ನು ಹಿಡಿಯುವುದು, ಪ್ರತಿ ಹಂತದಲ್ಲಿ ಕೆಳಗಿನ ಕ್ರಿಯೆಗಳಲ್ಲಿ ಒಂದನ್ನು ಮಾಡುವುದು: + +| ಮೌಲ್ಯ | ಅರ್ಥ | +|---|---| +| 0 | ಎಡಕ್ಕೆ ವೇಗ ಹೆಚ್ಚಿಸು | +| 1 | ವೇಗ ಹೆಚ್ಚಿಸಬೇಡಿ | +| 2 | ಬಲಕ್ಕೆ ವೇಗ ಹೆಚ್ಚಿಸು | + +ಈ ಸಮಸ್ಯೆಯ ಮುಖ್ಯ ತಂತ್ರವೆಂದರೆ, ಕಾರಿನ ಎಂಜಿನ್ ಪರ್ವತವನ್ನು ಒಂದೇ ಬಾರಿ ಏರುವಷ್ಟು ಶಕ್ತಿಶಾಲಿ ಅಲ್ಲ. ಆದ್ದರಿಂದ, ಯಶಸ್ವಿಯಾಗಲು ಏಕಮಾರ್ಗದಲ್ಲಿ ಹೋದರೆ ಆಗುವುದಿಲ್ಲ, ಬದಲಾಗಿ ಹಿಂದಕ್ಕೆ ಮುಂದೆ ಚಲಿಸಿ ವೇಗವನ್ನು ಸಂಗ್ರಹಿಸಬೇಕು. + +ನಿರೀಕ್ಷಣಾ ಸ್ಥಳದಲ್ಲಿ ಕೇವಲ ಎರಡು ಮೌಲ್ಯಗಳಿವೆ: + +| ಸಂಖ್ಯೆ | ನಿರೀಕ್ಷಣೆ | ಕನಿಷ್ಠ | ಗರಿಷ್ಠ | +|-----|--------------|-----|-----| +| 0 | ಕಾರ್ ಸ್ಥಾನ | -1.2| 0.6 | +| 1 | ಕಾರ್ ವೇಗ | -0.07 | 0.07 | + +ಪರ್ವತ ಕಾರ್ ಗೆ ಬಹುಶಃ ಕಷ್ಟಕರವಾದ ಬಹುಮಾನ ವ್ಯವಸ್ಥೆ ಇದೆ: + + * ಕಾರ್ ಪರ್ವತದ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಧ್ವಜವನ್ನು ತಲುಪಿದರೆ (ಸ್ಥಾನ = 0.5) 0 ಬಹುಮಾನ ನೀಡಲಾಗುತ್ತದೆ. + * ಕಾರ್ ಸ್ಥಾನ 0.5 ಕಿಂತ ಕಡಿಮೆ ಇದ್ದರೆ -1 ಬಹುಮಾನ ನೀಡಲಾಗುತ್ತದೆ. + +ಕಾರ್ ಸ್ಥಾನ 0.5 ಕ್ಕಿಂತ ಹೆಚ್ಚು ಅಥವಾ ಎಪಿಸೋಡ್ ಉದ್ದ 200 ಕ್ಕಿಂತ ಹೆಚ್ಚು ಆಗಿದ್ರೆ ಎಪಿಸೋಡ್ ಮುಗಿಯುತ್ತದೆ. + +## ಸೂಚನೆಗಳು + +ನಮ್ಮ ಬಲವರ್ಧಿತ ಕಲಿಕೆ ಆಲ್ಗಾರಿದಮ್ನ್ನು ಪರ್ವತ ಕಾರ್ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಹೊಂದಿಸಿ. ಇತ್ತೀಚಿನ [notebook.ipynb](notebook.ipynb) ಕೋಡ್ ನಿಂದ ಪ್ರಾರಂಭಿಸಿ, ಹೊಸ ಪರಿಸರವನ್ನು ಬದಲಿಸಿ, ಸ್ಥಿತಿ ವಿಭಜನೆ ಕಾರ್ಯಗಳನ್ನು ಬದಲಿಸಿ, ಮತ್ತು ಕಡಿಮೆ ಕೋಡ್ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ ಅಲ್ಗಾರಿದಮ್ನ್ನು ತರಬೇತಿಗೆ ಪ್ರಯತ್ನಿಸಿ. ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಹೊಂದಿಸಿ ಫಲಿತಾಂಶವನ್ನು ಉತ್ತಮಗೊಳಿಸಿ. + +> **ಗಮನಿಸಿ**: ಅಲ್ಗಾರಿದಮ್ನ್ನು ಸಮನ್ವಯಗೊಳಿಸಲು ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಹೊಂದಾಣಿಕೆ ಅಗತ್ಯವಾಗಬಹುದು. + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡ | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆ ಅಗತ್ಯವಿದೆ | +| -------- | --------- | -------- | ----------------- | +| | Q-ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿದಮ್ನ್ನು CartPole ಉದಾಹರಣೆಯಿಂದ ಯಶಸ್ವಿಯಾಗಿ ಹೊಂದಿಸಲಾಗಿದೆ, ಕಡಿಮೆ ಕೋಡ್ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ, 200 ಹಂತಗಳೊಳಗೆ ಧ್ವಜ ಹಿಡಿಯುವ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಸಾಧ್ಯವಾಗಿದೆ. | ಇಂಟರ್ನೆಟ್‌ನಿಂದ ಹೊಸ Q-ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿದಮ್ನ್ನು ಸ್ವೀಕರಿಸಲಾಗಿದೆ, ಆದರೆ ಚೆನ್ನಾಗಿ ದಾಖಲೆ ಮಾಡಲಾಗಿದೆ; ಅಥವಾ ಇತ್ತೀಚಿನ ಆಲ್ಗಾರಿದಮ್ನ್ನು ಸ್ವೀಕರಿಸಲಾಗಿದೆ, ಆದರೆ ಬಯಸಿದ ಫಲಿತಾಂಶಗಳನ್ನು ತಲುಪಲಿಲ್ಲ | ವಿದ್ಯಾರ್ಥಿ ಯಾವುದೇ ಆಲ್ಗಾರಿದಮ್ನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಹೊಂದಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ, ಆದರೆ ಪರಿಹಾರಕ್ಕೆ ಪ್ರಮುಖ ಹಂತಗಳನ್ನು ಕೈಗೊಂಡಿದ್ದಾರೆ (ಸ್ಥಿತಿ ವಿಭಜನೆ, Q-ಟೇಬಲ್ ಡೇಟಾ ರಚನೆ ಇತ್ಯಾದಿ ಅನುಷ್ಠಾನಗೊಳಿಸಲಾಗಿದೆ) | + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/2-Gym/notebook.ipynb b/translations/kn/8-Reinforcement/2-Gym/notebook.ipynb new file mode 100644 index 000000000..c6a7832ff --- /dev/null +++ b/translations/kn/8-Reinforcement/2-Gym/notebook.ipynb @@ -0,0 +1,400 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + }, + "orig_nbformat": 4, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.4 64-bit ('base': conda)" + }, + "interpreter": { + "hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5" + }, + "coopTranslator": { + "original_hash": "f22f8f3daed4b6d34648d1254763105b", + "translation_date": "2025-12-19T17:24:15+00:00", + "source_file": "8-Reinforcement/2-Gym/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "## ಕಾರ್ಟ್‌ಪೋಲ್ ಸ್ಕೇಟಿಂಗ್\n", + "\n", + "> **ಸಮಸ್ಯೆ**: ಪೀಟರ್ ನಾಯಿ ಹಕ್ಕಿಯಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು, ಅವನು ಅವನಿಗಿಂತ ವೇಗವಾಗಿ ಚಲಿಸಲು ಸಾಧ್ಯವಾಗಬೇಕು. ನಾವು ಪೀಟರ್ ಹೇಗೆ ಸ್ಕೇಟ್ ಮಾಡುವುದು, ವಿಶೇಷವಾಗಿ ಸಮತೋಲನವನ್ನು ಕಾಯ್ದುಕೊಳ್ಳುವುದು, Q-ಲರ್ನಿಂಗ್ ಬಳಸಿ ಕಲಿಯಬಹುದು ಎಂದು ನೋಡೋಣ.\n", + "\n", + "ಮೊದಲು, ಜಿಮ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ ಮತ್ತು ಅಗತ್ಯವಿರುವ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 1" + ] + }, + { + "source": [ + "## ಕಾರ್ಟ್‌ಪೋಲ್ ಪರಿಸರವನ್ನು ರಚಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "#code block 2" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "source": [ + "ಪರಿಸರವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನೋಡಲು, 100 ಹಂತಗಳಿಗಾಗಿ ಒಂದು ಚಿಕ್ಕ ಅನುಕರಣೆ ನಡೆಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "#code block 3" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "source": [ + "ಸಿಮ್ಯುಲೇಶನ್ ಸಮಯದಲ್ಲಿ, ನಾವು ಹೇಗೆ ನಡೆದುಕೊಳ್ಳಬೇಕೆಂದು ನಿರ್ಧರಿಸಲು ಅವಲೋಕನಗಳನ್ನು ಪಡೆಯಬೇಕಾಗುತ್ತದೆ. ವಾಸ್ತವದಲ್ಲಿ, `step` ಫಂಕ್ಷನ್ ನಮಗೆ ಪ್ರಸ್ತುತ ಅವಲೋಕನಗಳು, ಬಹುಮಾನ ಫಂಕ್ಷನ್ ಮತ್ತು ಸಿಮ್ಯುಲೇಶನ್ ಮುಂದುವರೆಯಬೇಕೇ ಇಲ್ಲವೇ ಎಂಬುದನ್ನು ಸೂಚಿಸುವ `done` ಧ್ವಜವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "#code block 4" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "source": [ + "ನಾವು ಆ ಸಂಖ್ಯೆಗಳ ಕನಿಷ್ಠ ಮತ್ತು ಗರಿಷ್ಠ ಮೌಲ್ಯವನ್ನು ಪಡೆಯಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38]\n[4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38]\n" + ] + } + ], + "source": [ + "#code block 5" + ] + }, + { + "source": [ + "## ರಾಜ್ಯ ಡಿಸ್ಕ್ರೀಟೈಜೆಷನ್\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 6" + ] + }, + { + "source": [ + "ನಾವು ಬಿನ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಇನ್ನೊಂದು ಡಿಸ್ಕ್ರೀಟೈಜೆಷನ್ ವಿಧಾನವನ್ನು ಕೂಡ ಅನ್ವೇಷಿಸೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Sample bins for interval (-5,5) with 10 bins\n [-5. -4. -3. -2. -1. 0. 1. 2. 3. 4. 5.]\n" + ] + } + ], + "source": [ + "#code block 7" + ] + }, + { + "source": [ + "ನಾವು ಈಗ ಒಂದು ಚಿಕ್ಕ ಅನುಕರಣೆ ನಡೆಸಿ ಆ ವಿಭಿನ್ನ ಪರಿಸರ ಮೌಲ್ಯಗಳನ್ನು ಗಮನಿಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(0, 0, -2, -2)\n(0, 1, -2, -5)\n(0, 2, -3, -8)\n(0, 3, -5, -11)\n(0, 3, -7, -14)\n(0, 4, -10, -17)\n(0, 3, -14, -15)\n(0, 3, -17, -12)\n(0, 3, -20, -16)\n(0, 4, -23, -19)\n" + ] + } + ], + "source": [ + "#code block 8" + ] + }, + { + "source": [ + "## Q-ಟೇಬಲ್ ರಚನೆ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 9" + ] + }, + { + "source": [ + "## ನಾವು Q-ಲರ್ನಿಂಗ್ ಪ್ರಾರಂಭಿಸೋಣ!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 10" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "0: 22.0, alpha=0.3, epsilon=0.9\n", + "5000: 70.1384, alpha=0.3, epsilon=0.9\n", + "10000: 121.8586, alpha=0.3, epsilon=0.9\n", + "15000: 149.6368, alpha=0.3, epsilon=0.9\n", + "20000: 168.2782, alpha=0.3, epsilon=0.9\n", + "25000: 196.7356, alpha=0.3, epsilon=0.9\n", + "30000: 220.7614, alpha=0.3, epsilon=0.9\n", + "35000: 233.2138, alpha=0.3, epsilon=0.9\n", + "40000: 248.22, alpha=0.3, epsilon=0.9\n", + "45000: 264.636, alpha=0.3, epsilon=0.9\n", + "50000: 276.926, alpha=0.3, epsilon=0.9\n", + "55000: 277.9438, alpha=0.3, epsilon=0.9\n", + "60000: 248.881, alpha=0.3, epsilon=0.9\n", + "65000: 272.529, alpha=0.3, epsilon=0.9\n", + "70000: 281.7972, alpha=0.3, epsilon=0.9\n", + "75000: 284.2844, alpha=0.3, epsilon=0.9\n", + "80000: 269.667, alpha=0.3, epsilon=0.9\n", + "85000: 273.8652, alpha=0.3, epsilon=0.9\n", + "90000: 278.2466, alpha=0.3, epsilon=0.9\n", + "95000: 269.1736, alpha=0.3, epsilon=0.9\n" + ] + } + ], + "source": [ + "#code block 11" + ] + }, + { + "source": [ + "## ತರಬೇತಿ ಪ್ರಗತಿಯನ್ನು ಚಿತ್ರಿಸುವುದು\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 20 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(rewards)" + ] + }, + { + "source": [ + "ಈ ಗ್ರಾಫ್‌ನಿಂದ ಏನೂ ಹೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಸ್ಟೋಚಾಸ್ಟಿಕ್ ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆಯ ಸ್ವಭಾವದಿಂದ ತರಬೇತಿ ಸೆಷನ್‌ಗಳ ಉದ್ದವು ಬಹಳ ವ್ಯತ್ಯಾಸವಾಗುತ್ತದೆ. ಈ ಗ್ರಾಫ್‌ನ ಅರ್ಥವನ್ನು ಹೆಚ್ಚು ಸ್ಪಷ್ಟಗೊಳಿಸಲು, ನಾವು ಪ್ರಯೋಗಗಳ ಸರಣಿಯ ಮೇಲೆ **ಚಲಿಸುವ ಸರಾಸರಿ** ಲೆಕ್ಕಹಾಕಬಹುದು, ಉದಾಹರಣೆಗೆ 100. ಇದನ್ನು ಸುಲಭವಾಗಿ `np.convolve` ಬಳಸಿ ಮಾಡಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 22 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAD4CAYAAAANbUbJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO2dd3gVZfbHvycdAiGUAKEZelGqkY4gICDo4rr6U3dVVKxrWdeKde2ylnXX1bWiYu8FpYmAKCol9AABAgQIBAglQALp7++PO3Mzd+70O7fk3vN5njyZeeedmXfu3HvmzHlPISEEGIZhmOgmLtwDYBiGYYIPC3uGYZgYgIU9wzBMDMDCnmEYJgZgYc8wDBMDJIR7AADQokULkZWVFe5hMAzD1CtWrVp1SAiRYaVvRAj7rKws5OTkhHsYDMMw9Qoi2mW1L5txGIZhYgAW9gzDMDEAC3uGYZgYgIU9wzBMDMDCnmEYJgZgYc8wDBMDsLBnGIaJAUyFPRGlENEKIlpHRBuJ6DGp/V0i2klEa6W/flI7EdFLRJRPROuJaECwL4JhwoUQAp/n7EFldW24h8IwhlgJqqoAMFoIUUpEiQCWEtFcads9QogvVP3PA9BV+hsE4FXpP8NEHXNz9+OeL9aj4HAZ7hnfI9zDYRhdTDV74aFUWk2U/owqnkwG8J603zIA6USUGfhQGSbyOHaqCgBw6ERlmEfCMMZYstkTUTwRrQVwEMACIcRyadNTkqnmRSJKltraAtij2L1QalMf8wYiyiGinOLi4gAugWHCB4V7AAxjEUvCXghRI4ToB6AdgIFEdAaA+wH0AHAWgGYA7pO6a33//d4EhBBvCCGyhRDZGRmW8vgwDMMwDrHljSOEKAHwE4AJQogiyVRTAeAdAAOlboUA2it2awdgnwtjZRiGYRxixRsng4jSpeUGAMYCyJPt8EREAC4EkCvtMgvAVZJXzmAAx4QQRUEZPcOEmVrpnVUYTmPFBt+v34dVu46GexiMDlY0+0wAi4loPYCV8NjsvwfwIRFtALABQAsAT0r95wDYASAfwJsA/ur6qBkmQnjn150AgFnr+OX11o/W4E+v/hbuYTA6mLpeCiHWA+iv0T5ap78AcEvgQ2OYyGfbQY+jWnmVr599eVUNVhYcwYiuPB/FRAYcQcswQeDRWRtx5YwVyNt/PNxDYRgALOyZKOPD5bvw2co95h2DjKzxnyivDtk5K6pr8I9vc1FVw9G8jD8s7Jmo4sGvc3Hvl+tt7fPBsl3YeajM1XHIE5Wh9MO/94v1mPn7Lpz97OIQnpWpL7CwZ2KSkpOVKD5RASEEHvomFxe+8mtAx5twemvNdgqhtP9l2yEAQNGxchwqrbC0z9wNRciaNtsbCcxELyzsmZhkwBMLcNZTP3pdJwMVdh2aN9Rs31tSHtBx7XCkrC5lw/8WbzfsW3yiAmUV1XhtiaffzkNluPWj1fh4xe6gjpEJHyzsmZjE6x8vAvOPv3poFgCgVVqK5vZtB04EdHynmD28znrqR5z/36UorfDMKdQKge/XF+H+rzb49T1cWoGsabOxcPMBS+cuq3A2T3Gqsiak8w3Xv5cTUw83FvZMTBNoKJRsptETrtW14Qm2+s6C3//OQ2XYXuyZqyg1mEjeVOTxKHrn1wJL5z79H/ORf9D+Q67nI/PQ9cG55h1dYsGmA5oPt2Bj1cTmNizsmZimNkDN/rf8wwCAlxZu09xeFaY895U2NeSftribjHDjPnsup1v2h+cNKNQs33EY2U/+iHm5oU8qwMKeiXpeXrQNd362VnNbgLIeW0zMNG5r9vtKTiFr2mx8u3avq8dtmZbsXe720FzNCetgpoQ4WRk6F1XA13zn5C3EKTmSl9a6wmMhO6cMC3sm6nn+h634arW5cHzw6w2ue6XY1bDNeG7+FgDA3z7Rfng5JbNJ3ZxDZXUt1u4p8a6T5ED6a/5h3dw3gc591ITY3KU83dh//YwCl11v9ZAfag0S40NyPiUs7JmoJGvabNz3hbm/vdKM8+Hy3brmGKe4bcZJSdT/yd43wXmlrMR4a6JAby5ALazJps9pqOc21Oa7/cdD4zU1e73HfPP1GnffzKzAwp6JWj7N8Y2k3V5c6tdHrZAGatZR47YMS06o0wgHPf0j8vYfR8GhMmRNm42PVuxyfNz4OGvCOU5HiKuFtcXDeQl11K/64ZSU4FwU7iguxUPfbECthZtdcPgkAGD/sdC55MqwsGdihjEvLPFrU/88F2856Oo50xsmunq8FMXr/4HjFXjz550Y9fxPAIA9R045Pq6eEAeA2RvqJhP1uqmFNdmMHS456dx8tufISaxTmJ2soH6ot0hN1u5ogZs+WIUPlu3GVhPbf/GJCnTKSAUAnKqqcXw+p7CwZ2Ia9eu8kfWhsroWk176Bb/mH7J8/GqXNdZklQYaqDeRTFqKdgLcE+VVPr7oeh9PpcpcdeSkvZq8pQ598wFgxLOLMdlmBLRbnxsAlFV4BHd1jf4xtx44gbOe+hE7ikMzN6AFC3sm5thz5KR3Wf2bH9lNPyXxvpJT2LjvuC3f7CqX7TjJicER9o00hP2O4lJMfTfHp03vYaiM3gX0Hx56lIdY01V/biWnnBeM31vieaP6YlWhbp/cvaH3vlHDwp6JOUYoEoXd+tFqn21G5gdZPOxWPCzMqDHQ9pyg9uLQe5b8aUA7W8fVemaMfmEJVhQc8WnTM/esUZlRGibZE/bqCeK1e0rwyLe5ul4+xSc8Ub2L8qxF9cpU1dTio+W7/Wz26jcTJ5yq1H9gac0XhRoW9kxMIycPk3n7151+Oej3HDmJDQ79oqtq3fbG8RX2esLQonONl2cll04zCo9qzwscV7ms2nXFVNv8L3zlV7z3+y6/ojAysqZ8rerNw4zXl2zHA19vwOc5vlp4WoPA51aM5me27GdhzzARx6SXlvqsj3h2MS54ealO7zpOf2SenznCyI7rBPVEpJ4Zx6p3jczPW61F0Cona5WotdpaIXD9eznIUb0Z6KGnWS/bcdjS/laRbeay6UXG7n06dqoKX632fWAcLtM3BVVUh35CVg0LeybieG5+HuZv3B+047dpop20TMZKgI+W5lpWWYN3fyvwaat2WbP/RFWYRe/wahu6kkADoLR4YcFWn/XiExVYsOkArn/PXPP+bt0+fLNW23//pI5ppOCw/0RnTa3Aw9/k+szJKDl4vBxfSf7tB1R+9XbnPvo+9gPu/GwdNu6re+NTH1NJhc7DbF/JqaDcDy1Y2DMRxyuLt+PG91f5tdfUCld+GOkNkxztpzy3nvfI9Ll5PutVLmv2TVTmBr0UBvM36tuyQyFb5DQSRy24VN728RpsLtLOpaPnovjYd5v82tbsPor3l+3C3z/Vji6+Q9HevplvSuqaWoH8g6XImjYby228TWzcWzfuHq0b6/ar0LiO938vwNDpi3Drx2ssny8QWNgz9YbOD8zBzR+sNu9owiYdwWIHPWHfv0O6z7rbrpcNk6xN0KrZUHgMD3/jmfB0w4PnyhnLMeCJBbrbW0spnxPsRlepsOOPLkft1kjX98rifOQfrLOV/7a9TojLkawyNULgmTmbAQCv/7xD9xzPzN2MborMnD9trYvLGNalhe5+WuUpP1qxR3MswcJU2BNRChGtIKJ1RLSRiB6T2jsS0XIi2kZEnxJRktSeLK3nS9uzgnsJTCwxL0DzTiBeF0rBeqqyRtNdsEtGI591ZWRpba0wfNW3NgZfQW1Vbl/y+m94f9kulFZUY6mNOAE9ftl2CEfKKnVt0bLg7dgiNaDznLKRIE1+rtTWCuwrOYXn5m/BJa/9ptlXbbOvqRVYmOcR3Ivy9APrXl+ywyff0dDOdQLeaJ5kh0buncY23VMDxYpmXwFgtBCiL4B+ACYQ0WAA/wTwohCiK4CjAKZK/acCOCqE6ALgRakfw0QE3wSQk0QpaEe/sASXvv67Rh/fdeXE3yuL8zHo6YW6NmUr2H1Y1dQKHC+v8nq1LNx8EFe/s9Lx+dVco3Msed7DKDLXCqcqrV+vLGxrhMDlby7z7C89kI+ZmJOcJmLLaFwXeWv3EFbSK7iJqbAXHuR3oUTpTwAYDeALqX0mgAul5cnSOqTtY8huViQmavlpy0EUn3CneMPGfcfw8iJ7ics+DKAykVogrCs85memUNvQlRO0SySPl0CSbvnbwI0FxqSXfkGfR3/wrt+hY892itI0okR+MDr55Zcoom+bNUqyLBTlB0tNLbBLykEjP59HPm9chN2p4FW+WdUKgRlLd+K5+Xn6OyjI0ckgGiws2eyJKJ6I1gI4CGABgO0ASoQQ8jtWIYC20nJbAHsAQNp+DEBzjWPeQEQ5RJRTXOxu4QQmMhFC4Op3VuKyN/w1Yidc8N+leP6HrYZ91JpwUYn1/DGnKmt8smC+9ctOvz5+9m/VqnKCVv5xV+j4jjvBzIyTF6aiIAelB7qT9ABK09fD3+Si0wNzLAljWdgfVXgiyZ+PWe6d71R28xcXbLVUhvGmDxSOBAJ44vtNeMWk/m+4sCTshRA1Qoh+ANoBGAigp1Y36b/Ws9zvTgkh3hBCZAshsjMy9EPUmehB/r1q2S9lRktJvewczwi1Nn7QxltFz0fm4V8Kl8IvV/uHw6vH0CzV19NHy/UykND8Sb0zHe/rFupJ5x83+QvFuZI/vlk+fy3ziVbZPjmD6c9bi5E1bbbmseT9lG9OAsJSKoZftvkqnP9ZuA1TZ3rcRn/NP4SsabNNJ9vdzLcTDGx54wghSgD8BGAwgHQikmcY2gGQHWULAbQHAGl7EwDWIiuYqMb7am/Qx+hBoIeRO6bd4KJAGdTJ9yVWK1gnkPS2Qzr7vSSHnNtUroLXafjSWw1SeusXf8+XCf/+xa/tsCTI//dTvu6xrnp7hV9bVY2wlD5Zzw8eAP7y1nIAwAfLjFNIq1NLRBpWvHEyiChdWm4AYCyAzQAWA7hY6jYFwLfS8ixpHdL2RSJUUQNMRFNnx3VXAMvfLq2vmVNty2nZP2WQDaBdlGOrSSlDNXn7j+OdXz0mJPXRwvHDmptr7hE1tIvnoWRUkWnBpgN4Zq41+7b8nXFiWtebV1BiZR5pywHjlAdHDQLZjLhueEdH+9nFiu9PJoCZRBQPz8PhMyHE90S0CcAnRPQkgDUAZkj9ZwB4n4jy4dHoLwvCuJl6iMvBpF4Kj57CjkOl2FfirzEfL3eWJ/3Vn5zZXZXeGYDH5FFRXYN4xQPOivBRImu61wzr6Gekj1Q9qpmUH753uya6faxE18pU1wg8Omujo7eitTZz3euR1sBYXOq9zew+bOx91ad9uuF2tzAV9kKI9QD6a7TvgMd+r24vB3CJK6NjogorZhw91HZXZaTq6Bd+QnWtwMCsZv47OpSFTic2m6uKYFTXCnR/aB7OPK2pt00vmZgVIkGzt4a7I3t/2S5NW74V1u62J+yzmjf0VpRSYpbBVK94ydnPGXsCZSu+G8GEI2iZkBHIBNYuxY/vVGUNXltSp3nLppKaCNRyZW1Pr1C3HY6drLKl2RYdc/5QCRR54nXFTnfs2E4FPQD8bjOZml49XrM6uQePOxtjqBzTWdgzISOQGBKl//oJHdOMlmdHuMW/m7VVNxYdw3u/+04SGj3fLvivvepNbmImGJduCzyKN1jojd0sqZ3Te223hKNTWNgzIcOJfVkIgQWbDvjYQ4+d0hb2WrbZUCv7ZRXVPuMwE3p6ZE2b7edi+MrifNw6uovlYwSiDQfKGoXppEDDw+qKGctDORxbqEs/ymjlt1GiDnjL23/c0kR/qBzGQpucgYlpnMi9GUt34snZmzFU4XJ47os/W95/9e7QRine9fk6n3Ut3+zz+xj7yiv91pVFU37NP+xXNtHtZ9nbV2fbLgiixU6FgB/1/E946fL+OHSiAteGyPMkGHyrk4ZZDy0XUk1Y2DPRhmyzlwXUF6sKMbxLC7Q2yC//5GxPJkK7Hiwyf/0w8CyZgaBVg9aozi3g67depkoE5nISTT9G92gVlOPeLvnmbztYig6q9MKRhtIcGIr8NWzGYaIOWdjLybnu/nxdRL/Ou4GWZm9nolrd1T/rpfvCKJjeIR+v2I1/zrPmW+8WRoF1fTVcQ5XC/sUfjdNx6GHnIREqMw4Le8YV9L7cQghvoJGydJ1snlDmG49GtD4WI+28TJUnXy3MQ6FpntFW3ze+PmKU0fLu8d392pR1g79Y5Z8iwwr/WWg9QV+o8kSysGcCZs6GInR6YI5m6t73ft+FSS8txW/5h/Dh8rqMk3IIuhJ19Gm0onYRnbOhCFnTZuO6mSv9hItSTt00srPfHMRelc9+kt1K4xo8MLEnLh/YPuDjuMnoHi2Dclx1MRjA15/eaaUxW8Le0Rnsw8KeCZj7vlwPAPhcQwvK2++pCrXzcJmpa5q60He0otbW5XmFHzcfRO5e3wee0uX0tSXbsXiLb8Ku3YoH7PIHxmDj4+NxaXZggjopIQ4jutpPTtiiUbJ5J4cESyAmJ/gLe6UHlds1hLXQ8y5zGxb2TMDILmk/aFSRypVqdC7bcSTkbpCRipFZQZ2Qy+wzi1MYfFulpSAxPk63Lm2wCaY1wqkLqxmZGs4BynkRvYLnbtKicfAekkpY2DOuoZViYIOkqS42KPWmh7KIRTRhJOzV+ffNkqZZqVyVZrH8nbKEoLqwuRXcKkqjRbA07OYabyNK000gZSz1yGru643EZhwmIjlUWoGsabPx3bp9OF5ehSe/3+Td1qJRku5+aSkJttMl9Htcv6B1faZWCNTUCgx5ZqFfmcRyVU1X2fU0EBIs2vHH9apzuxwaAamUlVRVh+5txWmJQquo8+4EWrrRKizsGVtskbT36XPz8MycPLy1tK56U28DL47z+7aJWjPOZzcOsdW/tLwaldW1KDpW7p3vkLFSaMMuWsLkvDNa+7UpTUiRVkk0GLni9dIvh8JOr4Rz4zARyQGpCtDeklPe/N1yHdbzemfins/XadaF/WHj/rDZkoON3QIpLy3K934Wai2y3IWShWkpviYYLcVeK9mX+s2rbXqDgMcSyXRt1UizPdiafbhgYc/oIoTw8xzZXHTcuyxPmsn/5+Xux+erCjXrwhYcPomhnVtonqf/4z/gjk/WaG6rDxxxULSi1yPzAfhPPBpVTDJiYu86TT1O9fDR0uzj4wjjT/eNllULuQYabolGhLgoWMDozTEEazJYD9bsmbDT+9EfcI6qJux36+oKM/+oKshcWmGcKEqtccocPVmFb2zmHXGbu8d1c7yvmxPJLR16ZijNLuoHtJawv/Ss9pg6vJNPmzrRl16qXz3s9jdjapDz6Dx/SV/N9mCbG9VzW2yzZ8JGaUU1sqbNRmlFtd9k0sET+vnU1bnLlfbnsT1bRrQZZ4jOW4cVurdu7No4lmwtNu+kgZHASIj33fbjnWdjcKfmGNixGWZMyfa2b1NFMyfpZH/Uw+lbiR7BNKe0SkvGsC6ee948Vd+xIBh8fP1g/H1snXLB3jhM2DjjH/N1tyl/fyO66gvI8qoa9Hh4nnd9cKfmPtkcI4U2kp91IIXJu7RshC9vHurWkByhHL16cjVBdW2dM+ps1crUCEoTHQAkxYfXLuM0VYEVFtw50rusNnsFkxFdW6Brq8b429iu3jZOl8BEPOkNPRqRlqDUCg5atsN9jwqnvHbFAKx8cKz3XSM+gB9cw6QEDOgQmjqiehjJq8Nllbhy8GnedaVwaZWmn3HULH97sLGS5O2/l/tVTLWE0qQYaHyAnYLh708d5F1u38wzAc6aPVNvsPK6LSBw48hOpv1CxYiuGchonOy1z8bZ+CXcf14Pv7Zwuyoanb/kZBUenNTT9jG3mAR0BZvINfoBtymKyDx0fi9Hx/j8xqF47YoBIXuzYGHP4EhZJY7rlPpzyk9b/CNmX9Dw0gkWPTPTDLfLNm55HsHOJNmNIzujkyLaNBIwG32lg0T46RpRtI0tRuO6QSA1i43o0lLb5RKw7hlz1zj/bJl2ad0kBRPOMC5k4yamwp6I2hPRYiLaTEQbiehvUvujRLSXiNZKfxMV+9xPRPlEtIWIxgfzApjAGfDEAvR59Afb+2nlapf52ydrfdZnLN2JvSXuFsD+6e5RutvMfrPqH7WVH/n401uhhzQZG2la51drjMvfNUryCOnbbJQ1/EPfNn5tTtIoOMXK/OzI7vYTtv2osNeridbAP8CaZl8N4C4hRE8AgwHcQkTye8uLQoh+0t8cAJC2XQbgdAATAPyPiOw57DJhxWjiVcncXP/EZ3ocOO5+3pQsA+3a6oSrnOjKimb/+pXZmHfH2dYGF2TsCt24OELB9Em2NNLxp3t895VvMWYxBdcN74ibRna2NTYtRvdoaclmn5aSiB1Pe/VM3DyqMz5Q2MXVPOTAnBUtmAp7IUSREGK1tHwCwGYAbQ12mQzgEyFEhRBiJ4B8AAPdGCzjLsdOVaGi2j88f3An37woe46c9EbORhp6KRrMZL0s2+VJSLtm02BUiLLD97cNd/2Y6jmVoV1a4Pf7R/t4rsjLKYnaouOh83uhUbI13U7P5XFsz1Z4++qz0L6ptfKFSpv39+v3GZp/AvG6knnnmrP82sxKTQLASw4nk93Cls2eiLIA9AcgV564lYjWE9HbRCTXMmsLYI9it0IYPxyYMNH3sR9w0f9+865nTZuNmb8V+PUb8exiDHp6YQhHZh09bwyt6M9hXeoeYuq6n+GeYLVLexfruA7q2AyAtsDKbNLAR0C2TW+AgumTsPyBsbqBaLLw7WpgGwf0I3RrpNw0vTVKBpqx58gpNG2o7zfvxl0epfE5vXlVXbyC3ptxqs2IZLexLOyJqBGALwHcIYQ4DuBVAJ0B9ANQBOAFuavG7n6PWiK6gYhyiCinuNhZIAnjnG2Sp8XGfb6+1f+YtTEcw3FMok7gT8Mk/4nEBIXLjSy/5PS/ekLg+hHBjeIMBKMso3aQg67s5P9q0iARt47u6tP2x/4enU42iZlNsOoVs1Gn4bBD4+QEpFp8s3CKlmKgDEB79A+na+53tgXtP5hYEvZElAiPoP9QCPEVAAghDgghaoQQtQDeRJ2pphCAslROOwB+sfBCiDeEENlCiOyMjPB+CLFIcWnwco87wUwL1EPrrXxsz5Z4WMMdTlkFSv7BJkuZD/Vs9r3bafvPy/t/fpO9jJdu4pYlSb72QLM9pjf0zCPEe4W9cX+9eRzZlVcvvYYR8fFkrNkH8Q1umuSSm9E4GZec2c5nW9v0Bq6nk7CLFW8cAjADwGYhxL8U7UqfoT8CyJWWZwG4jIiSiagjgK4AVrg3ZMYNjL54Rn7z/YMUPETkzJ6qtc9bU87yKxABAGWVdUFC8l7HpZJwejKgfVPjzI+h9E5R888/9XHlOHKErdF9//624XjtigGGx5Ft8LIZx+zhcUZbbfdYWaN/aFJPPGLRh13O0NmuaQOkN0zE+X0yNR/EWt/fyf38vY6ccOPZnbDj6YlIS0nEMxf19tlmN/VEMLAygmEArgQwWuVm+SwRbSCi9QDOAfB3ABBCbATwGYBNAOYBuEUIEfzaXowtWjXWj5w0ErqntzH2X7fCoxf0woWqH1gcEZo5yFGSoVP3VEuDG9WtpWK7578c6aun2evVVd15qMyvrbVBNGowOPO0puadLBAvmbeMhP0ZbZtY9gk/Q/qO9G9vPL42TbQfpLXSOFKTE3CtxehUeXK5b7t0EBFe/vMAnJXVzKdPzkNj0UfjTe2JC8+wdA4ziMj7oFMXjFGnrAgHVrxxlgohSAjRR+lmKYS4UgjRW2r/gxCiSLHPU0KIzkKI7kKIucG9BMYJRknJ9IT920t3ouRk4MFXU4ZmITXZ16ZeUV3ryMPFzmv5PEWNXHm/RtI4GupMniXreJ3IKGMH/jKog+WxuIHepdsVK3KQUdMAE4LJz4pBnZpj+QNjfNIua6FV/xUAaix+D/oqJnDJGySnzZJ7Ruk+uPXMRaMc+PDrYbVaWDAJ/wiYoCGEwKK8A5rBT0a/Jz0l5PHvN+H79UXaG21ARLhYZdOsrK7VtPEqPWiCid5Dw8yMfbKi7qX15lGB+5e7gd1H5l3juuH9qQP9NGG7KD25jHLuyOgJdavZLpVxFrKicEqnQLiTNMLPumQmA/yTzIUDFvZRRnVNLW7/eA027TuOV5dsx7Xv5uAJRZ1YGSNPCbVbYjDo38H3Fb9FoyTU1Aq/4tjn9vQtsBEIsouhFnoPuETJU2WgjiBUCqxQa29W71Oyib04MT4OI7oGrsUeVgVcDeroeVC/8mdtW79aB5FNHVZ81gHf5HVyLd+vdSKJzfLPTOrtb6IKdDJX77rDBQv7KGPHoTLMWrcPE1/6Bc/O2wIAmPn7LszLLUKZorjI+sJjeocIC/FxhFoh8CeVxq/8kVqN7NXjuhH6idi0BOel2e3RvFEyCqZPwmc6XjdWA4jcpGD6JM+CjixSm8OSwmRCaJqahILpkzCpT6amSadG9dok55dXpmA2QvnduELK6qlnSjMzmb94aT+seHCM3z5P/7G34wC2SX1Cl/fGCizsowy97/RNH6zGtK82eNeX79RPNzw3N3BTjV2ICEJ4XrevHprl0y5z7bCO+G3aaEfHv/+8HprauSwYSeOXcG4v/bcK2QunV6Z54I+ebdpNOiiCrNQvbZP7u+NtYkYPgyIu3Vt5Jm1lU9fAjs1QXeM70LvGdcODE3viAo2cPEr+fWk/AHXzLYDHx/+tq7LxmI6Pu555RyYpIQ4tVU4L8XGEPw/q4JPzvz7Dwj7KMHrz3H2kruqU0WTo6t0luttG92ipuy0QjpRVorSiGodKK5CSWKctKzWyuDhCG40i2B9ep58LRaZVWophGmOtj23fMf3EbfKErpXJxFJFXninWSO1JpCV9/rZi/Xty+eFKLOiUVKyW0d3wZc3D8V9E3rgzauy8f7UgX5BU8kJ8bj+7E5+DgK3j/EN3jq/TybuHtcN94yvy/NDRBjbq5WuKa2Rg8/9pMkDor7Bwj7qMJD2CsFkZQJN+xDByQkjuzJ+u3afz+u9cmJN71Vcfv0HgDeuPFP3HHYn6YwmCmWBVGthMvGEwnw2pJP2hLPaD1vtpy3nAFIH68go507BDLIAAB5KSURBVGDUIwpVJoi2Gg9imfg48rqKnturFZIT4i1PxGarXEwT4uNw6+iufh5dRlg1ZXXKqJv0VR5f+WCRuXxgB812La4ZlmWpXzBhYR9lGP2wjygKYzv10Q5iWVAvyrwvPpq9wcWdJgVR6b1yt0pLMfxstCbjurbUN0skeAOH7H0getegFkbqdXm/sxSTzMojpSrSQ6ifx6EoaD2sS3NcMeg0844K1MJezx1YmWbgkxsG2x8crJcenHVrnX1emcvmNI0gvWcu6o1bzrGWMtrouxQqWNhHGUZf6T1H6swSTos5Oy2IbQel0FAKLiOZNfOagbh9TFdN+/hzF/fBkM7NbQs9I/kgexPp+efroTeERJN6r17ThuLzUNqse2TWCZN+qijRUCj2fxrQznbFJav+9ACw4oEx+PLmoX4ZWa1iteyk8jNVmpMCVXL0ooVDSejKzjAhwaq72M/bIjf5nFJoLMqrq3hl5GqY1SIVd56rnYUxo7EnmMaugmv0WT5zUW9cMyzLtjlMT76ZuW2SV9YLRRvhg6mD8P6yAiQn1D10/tC3DVo1Tsalbyzz9gsWk/pkYvb6Ikdup2qFw+j+tkxLQcsAIpSdpOJQfm5OzZf5T52HgsMnDatjhQrW7KOI4+VVun7GMq8t2Q4AeOfXghCMKHDi4wj92ns0VacR57JA1hImsneIli+6kYxMSYzXDL03Q8scAAAX9PH1QFGfW09YDe/aAq9fme3XrpzIDmbuffnYTu6NOuulUVR3oITClKVFQnxcRAh6gDX7qMJKacHpc/NcqSQUKpQTl04LM8sapNbut47u6peq13u+IAiIjhrVtQZ0SEc7VcK1MT1bIS0lAcclTx5ZMFo1JyhTAARzmkWeS3fyWQWrxqwWgeamkYeqVaqxvsCaPeMKcnpbtyk8esorrALNJWXFnKFMtbxi5+HATqg5Bv+27q3T/K6tSYNEzL59hHf913zPWL5b55ctXJMmivsRTJlaG4Bm73TeyAlOFYVogoV9PWb5jsPImjYbBRoZGENF89QkbHlyQtBCw1ftOqpYc/aDlQWs2e99zcPn+nhjHCo1rrdqh/sm9ECvzDS0VmR6bCNNJv+hbxvNB5GWgDqh8Nm3SqVBYfhAkeW1k3kBdVCV1UnUYBMsxSXcsBkngjlwvBylFdW64ePfrPVoeb9uP2RYfDuYpCTGIzkh3kcMd2jW0CeAyy2cygLZVm8mkNRZH7cXlzo7oQY3j+rsnR8474zWmHBGa0zuV1etM2+/f6IsrdE6sWuv31NiOd+MXWQvIidmEqXb6gMTe0SMbXvtI+PCPYSgwMI+gpHrvnpzoahIkn5oVdXB09zMGCj5fSsF6ZmnNdUV9p0znD+UQq33bZVKN7rNq1f4B35pmVq0nk25e+1nT3QaQGeFJy48A+2aNsCo7vYjq5U2+xvOjux5pLQGHlHZKk07TXJ9gIV9PaZK0ozCWWJQjvRUCiYj7w+tdAdK1JWfOrZIDdjobJQmwYhQBsLIV9gzMw3T5c/Upcfb6J7BSXEBeIq7PDjJWjUpNS0b1x/BeU73lvjX//WNuORmdmCbfT1mzgZPwrJXFm8P2xjkPDZKsbS5SF8jNpuUO3bKtziK0uUwmP7iWgQrD5AW8gNySKfm6Bugq6kavaId4SZbSkx3ncVqVOGEiHDRgHY+8Qz1DRb29Ri5apS6xJ8dPphqnkTMCsrJxC0G5g8zd7uemZ5Iw2uHeQRAIAU1ZN95py8GoawbKrwTnYpGDWFvZ/Lwrauy8anD9AKhxEnAE2MfFvZRQEJ8nKWEXDJZ02Z7l4cHmCNexurP1UzwPj7Zk6L2ppGd0LRhok+6Y7s4qWmrxKzoh1WsJOHScmFs1rBu/PIEq53Sh2N7tcIgh+kFooV7xnc3TL0cS7Cwr8dcdlZ7AJ6MiP/7KT9o51ELXPm8SqxaWJSavVYmQNkdr2VaCtY8Mg7dFT9Uu5GgRcfKAQB7j+qnKjYiOdH5K/tfR3X2ZuDsoBM1q6QulqDug1SmIHj9yjPx0fWDcPc4a1kWGQ+3nNMF8+44O9zDiAh4grYekxAvuxQCz/+wNWjnaZPu682hLNwtY2RP3/T4eCzZUoybP1ztEwGqFU2qDqEH6kxEdmNwZBfQds2MJ4X1cKLZt01vgN5tm+DeCT0AeEwpfdqbF7/wPgT1iogTMLSzO29hkUboQqtiGxb2UUKz1CQcKXMvCEhJlSr4peRkFR6c2NNH6zZS7BsmJXiTWCknaLX20cqEKAfb2I24TEmMk87jzCbsRNj/qqqkNdag2pUdIiXgyE2i74oiG9NvMxG1J6LFRLSZiDYS0d+k9mZEtICItkn/m0rtREQvEVE+Ea0nosiquhtFyHKxvKomaIIe0M59f/3ZnXzyjJt5yshavFwrFAC+X+9f/vBsjcLX8gSeXWEve3uo3TmtEsoJWjPClcgrmLSV8gEp6xcwwcOKZl8N4C4hxGoiagxgFREtAHA1gIVCiOlENA3ANAD3ATgPQFfpbxCAV6X/jENOVlajYZL/rZJF39Nz8oJ6/gwL/tC5e40LmDeTik8r2bTPP0BIyzPj6Yt64+VF+bYLrjx6wem4emgWWjusAevWBK0bRGNul0m9M9HsuiQM6Rzbk8ihwvTbLIQoEkKslpZPANgMoC2AyQBmSt1mArhQWp4M4D3hYRmAdCKqv5EILiGEcJxqttcj83WOGciIrJNoISpJq/jGvRO64zmD2qhWldXOGY3w4qX9bGvaSQlx6NbKuSdGUnz99amuDxARhnZpEfL4iVjF1q+HiLIA9AewHEArIUQR4HkgAJAjUNoC2KPYrVBqUx/rBiLKIaKc4uLILaThFh3vn4O7PlsX8HFeX7IdP0gTpBVVdQWRz8pyVmbQCu2aNsDFOrVPZZR1YGW6t2qMS7L9PXdkjjtI6gUA/7msH2ZM8c/h7jaJCaETQt55BZ6tZIKEZWFPRI0AfAngDiGEUYIO7fxN6gYh3hBCZAshsjMygpOkKdL4yqSwiBHHpACqZ+bm4Yb3V/kdzzc7pDWmDDGvGdqjdWPExZGhhg5om1+ClcJ2cr+2GNPTnYlP7eN7gtQymzjz4nECK7dMsLEk7IkoER5B/6EQ4iup+YBsnpH+y/XjCgEo1bl2AKwl4Y5S7AQ86fHb9kM+6+8v2+V7DgensFLPU37FNnvV1hL2ai8eM+6T3BXDzX8u64+C6ZMcT+w6Qf74QlnQg4ktrHjjEIAZADYLIf6l2DQLwBRpeQqAbxXtV0leOYMBHJPNPbHKzsOB55tX1/h8+JvcgI95pgXTz+Yi/5c4rYhE2TWwqSKcv1xhZtIiSxVs9OeB1qNDo41mqZ5JcHWa5Wcu6o2+7cz99BnGDCveOMMAXAlgAxGtldoeADAdwGdENBXAbgCXSNvmAJgIIB/ASQDXuDriesjyHUcCPsb+4+V+2n2gNE4211wzNTxZtLR42TVQqZdWmKRevnNcd9z+8RrveiS5Ooaai/q3hRACF/b3nd66fGAHXB7DD0HGPUyFvRBiKfTjH8Zo9BcAbglwXFGFVlSomoMnypHRKNlrLlHb4P+7cBsOnnA3lXGDJHNvk/SG/vllxvVq7dcmW3mUJqvKamPNvqzCd4JWy6MnVoiLI8PJbIYJlNhVpUKIme03d+8xDHxqIT7PKfS2qQtnuCXo7SYH03IXvW10F782cqDZK/OZF0yf5GeqYhjGPfjXFQIqdDTcrGmzkTVtNj5cvhsAsKKgztwTjBzkfx/bDRdKpfCmnWdtMnScRri/VoBPqvSWoJxkNRP2IzSiZRmGCQ6cGycEmAm9j1d4hH2ipNl+tnIPdh1xPqk7Y0o2ps7M8WufOqIjGibG465x3ZCabH7rVz98LtIteqQkxMd5I2QfkiaP9R5yMpzHnGFCBwt7FymvqsHGfcf9wvorqqzViJWLNt/75fqAxqH0QR/ZLQNLtnqC1uLIo5VbEfRA4Pngza5blvWRlJaAYaIV/pW5yKOzNuJPr/6GXZKr5Wc5e5B/sNRUw5UJhqL77jVneZfdqmlqFbO5CiLCfRN6YNatw0M0IoaJXVizd5FNkk96yckqnNYcuPeL9UhOiMP1Izp5++wrOaVbdNvNHCEfXz8YLdOSfY7ptPC2Xc48rSlW7TqKszqalxS8eVTnEIyIYRgW9i6yvtCT+fFwWYU3VUBFda2PZp9g4F7oZhpbrUyCdo7fVueBZIUGUoUnKy6noeaFS/oikc1GTAzCwj4IrCw4iiGd6hKDKSdodxSXoWXjFM2UwMEOlQ+VEUf2l49EYf8nk4RuDBOtsIoTBI6dqsI9X9RluFSmDZCXH9JId/DubwX4dOVuW+d6aFJPy31DVQDjkQtOx9ndMnweeAzDhBfW7IPAR8t9BbZSs1+ytRiz1u7TzQh535cbbJ1rytAsPDl7s6W+ZgUwWqelYP9xT5FurefCm1dlW8rJ37FFKt67dqClMTEMExpY2IcApQviO78WAACSXIoWVdcm/UPfNo6PpXwWaAn7c12qp8owTOhhM04AlFVU47n5eag0CZoqq/Qv0lHpkj1bra2/eGk/x8dSeu6E2k2TYZjgwsI+AK6bmYNXFm/HN2uNi5L8ss3dbJVGaEWlWk0wdk4PZQFx14bEMEwEwMI+AH7fcRgAsGZ3ScjPTQTT6lEyP/x9JF68tK9pv39ccDoW3TUSDZPiMS1CCokwDOMObLN3gd0B5LExY94dIzDh37/4tV8x6DTLKXE7tkhFxxaputu/u3U45m/cj8T4OHTKaIRNj09wPF6GYSIT1uxdoE2TBkGrt9o8VTv75Ucr7LloGtG7XRPcPb67a8djGCbyYGHvAkO7NMftn6wx7+gAoarV3q99OoDgFfNmGCY6YWHvAmUVNZi9PjhldlMSfatJrd0T+vkBhmHqPyzsXeDRWRuDduyGiealA7+8eUjQzs8wTHTAwl6DaV+uxyWv/Wa5f3UQTSpWSvWVW8yXzzBM7MLeOBp8snKP4facgiO4+LXfvetxBITThB6MEoYMw0QXpmojEb1NRAeJKFfR9igR7SWitdLfRMW2+4kon4i2ENH4YA08nCgFPRCe8nqt0uoEfLdWjUJ+foZh6hdWNPt3AbwM4D1V+4tCiOeVDUTUC8BlAE4H0AbAj0TUTQhhrVRThPPIt7nomZnm1x7kzMSa3DWuzlXSzaInDMNEJ6bCXgjxMxFlWTzeZACfCCEqAOwkonwAAwH8brxbZLLrcBlOa14XjPTe77s0+wXTZq9HUUl5yM/JMEz9JZAJ2luJaL1k5pErbLcFoDR4F0ptfhDRDUSUQ0Q5xcXFAQwjeIx87iesL4xMV8fOLfUjYhmGYdQ4FfavAugMoB+AIgAvSO1a9gRNtVcI8YYQIlsIkZ2RkaHVJSLYfeSkX1v/Duk+6/dOCH30aeHRUz7rvds24XquDMPo4kjYCyEOCCFqhBC1AN6Ex1QDeDR5ZcKWdgD2BTbEyEOd+OyLnEJHx9kcQA6aU5W+0yDf3TYc93HyMoZhdHAk7IkoU7H6RwCyp84sAJcRUTIRdQTQFcCKwIYYXuS87ifKq3T77DjkLBFag6S6gKl5d4zwLmc09njaZDVvqLuv3IdhGMYKphO0RPQxgFEAWhBRIYB/ABhFRP3gMdEUALgRAIQQG4noMwCbAFQDuKW+e+I8Oz8Pk/pk4vI3l7l63LvHdfNZ79G6zstn5YNjTfcf2rm5q+NhGCa6seKNc7lG8wyD/k8BeCqQQUUSuw6fRL/Hf0DJSX3N3gm3ju7q1/bhdYOQf7DUrz37tKbI2XUUo3u0xKK8gwCAZAtpFBiGYWQ4XYIF3Bb0rdNSNNuHdWmBKUOz/Npfv/JMNE9Nwp3n1r0NWK0+xTAMA3C6BC+HSyuwcd9xnN0t+J5BN43s5F3u2z4dI7q0MOzfvFEyVj18rk9bYhw/pxmGsQ4Le4m/vLUceftPIPcxdzI8/HjnSGQ2ScGO4jJc8PJSn23tm9VNvH57yzBHx09MYGHPMIx1WGJIbDlwAgDw1OzNrhyvY4tUpCYnoHe7Jt422bumVxv/lAt2SWFhzzCMDVizB5C3/7g3v82+klPGnS2ilRxt0V2jcOxUFZqmJjk+7tpHzsX+4+WWUh8zDMPIsLAH8MmKugwPp6qC5ykaF0cBCXoASG+YhPSGgR2DYZjYI+aF/UPfbMAHy+qKd6/YeSSMo2EYhgkOMW8LUAp6hmGYaCXmhT3DMEwsENPCvromsNqt7107EL/ce45f+9y/jdDozTAMEz5i2mb/yKyNAe2vF4ClVc2KYRgmnMS0Zj9nQ5HjfXu3rfOfb8kZKBmGiXBiWrMPpHbsjKuzvctL7jkHOw6VYtJLS/GPC3r59f3qr0NRXROGQrUMwzASMS3sA6Fl47pkZg2S4nF6myYomD5Js++ADk012xmGYUJFTJtxGIZhYoWYFvbCoR1nbM+WLo+EYRgmuMS0sHfCiK4t8MaV2eYdGYZhIoiYFvZ6ev3401vp7pPVPBVxGknOGIZhIpmYFvYnyqs12+dvPKC7zxCu/cowTD0k5oR9Ta3A/mPleOTbXL9tZlWqLj6zHSb2zgzW0BiGYYJGzLle/nNeHt74eYfmtkbJxkW8OygqTDEMw9QnTDV7InqbiA4SUa6irRkRLSCibdL/plI7EdFLRJRPROuJaEAwB2+XlQVHdAU9ACSZFATp3yHd7SExDMOEBCtmnHcBTFC1TQOwUAjRFcBCaR0AzgPQVfq7AcCr7gzTHS557XfD7ftKyr3Lc24fgXeuPguXD+zgbRtuUhicYRgmUjEV9kKInwGoK3pMBjBTWp4J4EJF+3vCwzIA6URUb4zcKwrqLrNXmzSc06MlhnWpm5AlYi8chmHqJ04naFsJIYoAQPovRxm1BbBH0a9QavODiG4gohwiyikuLnY4DPdY8cAYzfZmXAKQYZgowG1vHC3VV9OdXQjxhhAiWwiRnZFh7AUTCL9tP4SPlu9GZbVx7vqWaSma7a2baLczDMPUJ5wK+wOyeUb6f1BqLwTQXtGvHYB9zocXOH9+czke+HoDKi0UKpHTFr91VV2EbAanL2YYJgpwKuxnAZgiLU8B8K2i/SrJK2cwgGOyuSfcHCmt1N3WOSMVABAvRcY2Ta0z3TROSQzuwBiGYUKAFdfLjwH8DqA7ERUS0VQA0wGcS0TbAJwrrQPAHAA7AOQDeBPAX4MyagekJOlfavfWjQEAXVs2AgA0aeAv4FulsYbPMEz9xTSoSghxuc4mvxlN4UkjeUuggwoGRsVD+rbz+M8/ceEZmNyvLbpIQl9GL089wzBMfSGq0yUcKq3wLg+dvki33/UjOgEAUhLjMbwr+9IzDBN9RLWwv+Kt5Zb6cRZLhmGinagW9nn7T4R7CAzDMBFBVAt7K2x8bHy4h8AwDBN0olbYV1vwq7+wXxukJsdc4k+GYWKQqBX2XR6ca9qndzvOYskwTGwQtcLeCuVVNeEeAsMwTEiIaWE/4YzW4R4CwzBMSIhpYS/046wYhmGiipgS9lufPM9nPS2FJ2cZhokNokra1dQKfLJyN/4vu71Pe3JCHH6+9xwkJcThgYk90CApAWN6tNRNa8wwDBNtRJWw/2LVHjz4dS5KTlZ52+4/rwduHNnZu37D2Z21dmUYholqosqMU1rh8a5Zs7sEAHDjyE4+gp5hGCZWiSphXyUFUv24+QAAYN2eknAOh2EYJmKIKmE/fW6ez3r+wbIwjYRhGCayiCphr0aZ4phhGCaWiWphzzAMw3iIamGf89DYcA+BYRgmIohqYd+iEdeNZRiGAaJY2PeQiogzDMMwUSzs371mYLiHwDAMEzEEFEFLRAUATgCoAVAthMgmomYAPgWQBaAAwP8JIY4GNkxz5HTF7Zs1wPSL+qB1E06FwDAMI+OGZn+OEKKfECJbWp8GYKEQoiuAhdJ60Bn+z0UAgPQGSRjWpUUoTskwDFNvCIYZZzKAmdLyTAAXBuEcfhwqrQQAbNh7LBSnYxiGqVcEKuwFgB+IaBUR3SC1tRJCFAGA9L9lgOewxcTeXJCEYRhGTaBZL4cJIfYRUUsAC4goz3QPCenhcAMAdOjQIcBh1PHipf1cOxbDMEy0EJBmL4TYJ/0/COBrAAMBHCCiTACQ/h/U2fcNIUS2ECI7IyMjkGEAAAZ08BQPT06ID/hYDMMw0YZjYU9EqUTUWF4GMA5ALoBZAKZI3aYA+DbQQVqhY4tGaM3FSBiGYTQJxIzTCsDXRCQf5yMhxDwiWgngMyKaCmA3gEsCH6YxczYU4cvVhcE+DcMwTL3FsbAXQuwA0Fej/TCAMYEMyi5//XB1KE/HMAxT74jaCFqGYRimDhb2DMMwMUC9F/alFdXhHgLDMEzEU++F/Wcr94R7CAzDMBFPvRf2S7YWe5ffuirboCfDMEzsEmgEbdhp3igJAPDtLcPQt316mEfDMAwTmdRrzf5kZTW+Wr0XANC+WcMwj4ZhGCZyqdfC/pFvN3qXGyXX+5cUhmGYoFGvhf1pCm0+KaFeXwrDMExQqdfq8G1juiI1OQF7S06FeygMwzARTb0W9gBw7fCO4R4CwzBMxMO2D4ZhmBiAhT3DMEwMwMKeYRgmBmBhzzAMEwOwsGcYhokBWNgzDMPEACzsGYZhYgAW9gzDMDEACSHCPQYQUTGAXQ53bwHgkIvDqQ/wNccGfM2xQSDXfJoQIsNKx4gQ9oFARDlCiJhKZM/XHBvwNccGobpmNuMwDMPEACzsGYZhYoBoEPZvhHsAYYCvOTbga44NQnLN9d5mzzAMw5gTDZo9wzAMYwILe4ZhmBigXgt7IppARFuIKJ+IpoV7PHYgovZEtJiINhPRRiL6m9TejIgWENE26X9TqZ2I6CXpWtcT0QDFsaZI/bcR0RRF+5lEtEHa5yUiotBfqT9EFE9Ea4joe2m9IxEtl8b/KRElSe3J0nq+tD1LcYz7pfYtRDRe0R5x3wkiSieiL4goT7rfQ6L9PhPR36XvdS4RfUxEKdF2n4nobSI6SES5irag31e9c5gihKiXfwDiAWwH0AlAEoB1AHqFe1w2xp8JYIC03BjAVgC9ADwLYJrUPg3AP6XliQDmAiAAgwEsl9qbAdgh/W8qLTeVtq0AMETaZy6A88J93dK47gTwEYDvpfXPAFwmLb8G4GZp+a8AXpOWLwPwqbTcS7rfyQA6St+D+Ej9TgCYCeA6aTkJQHo032cAbQHsBNBAcX+vjrb7DOBsAAMA5Cragn5f9c5hOt5w/xAC+KCHAJivWL8fwP3hHlcA1/MtgHMBbAGQKbVlAtgiLb8O4HJF/y3S9ssBvK5of11qywSQp2j36RfG62wHYCGA0QC+l77IhwAkqO8rgPkAhkjLCVI/Ut9ruV8kficApEmCj1TtUXuf4RH2eyQBliDd5/HReJ8BZMFX2Af9vuqdw+yvPptx5C+UTKHUVu+QXlv7A1gOoJUQoggApP8tpW5612vUXqjRHm7+DeBeALXSenMAJUKIamldOU7vtUnbj0n97X4W4aQTgGIA70imq7eIKBVRfJ+FEHsBPA9gN4AieO7bKkT3fZYJxX3VO4ch9VnYa9kl650fKRE1AvAlgDuEEMeNumq0CQftYYOIzgdwUAixStms0VWYbKs31wyPpjoAwKtCiP4AyuB59daj3l+zZEOeDI/ppQ2AVADnaXSNpvtsRtivsT4L+0IA7RXr7QDsC9NYHEFEifAI+g+FEF9JzQeIKFPangngoNSud71G7e002sPJMAB/IKICAJ/AY8r5N4B0IkqQ+ijH6b02aXsTAEdg/7MIJ4UACoUQy6X1L+AR/tF8n8cC2CmEKBZCVAH4CsBQRPd9lgnFfdU7hyH1WdivBNBVmuFPgmdiZ1aYx2QZaWZ9BoDNQoh/KTbNAiDPyE+Bx5Yvt18lzeoPBnBMeoWbD2AcETWVNKpx8NgziwCcIKLB0rmuUhwrLAgh7hdCtBNCZMFzvxYJIf4CYDGAi6Vu6muWP4uLpf5Car9M8uLoCKArPJNZEfedEELsB7CHiLpLTWMAbEIU32d4zDeDiaihNCb5mqP2PisIxX3VO4cx4ZzIcWFyZCI8XizbATwY7vHYHPtweF7L1gNYK/1NhMdWuRDANul/M6k/AXhFutYNALIVx7oWQL70d42iPRtArrTPy1BNEob5+kehzhunEzw/4nwAnwNIltpTpPV8aXsnxf4PSte1BQrvk0j8TgDoByBHutffwON1EdX3GcBjAPKkcb0Pj0dNVN1nAB/DMydRBY8mPjUU91XvHGZ/nC6BYRgmBqjPZhyGYRjGIizsGYZhYgAW9gzDMDEAC3uGYZgYgIU9wzBMDMDCnmEYJgZgYc8wDBMD/D9pwksMstgtRgAAAABJRU5ErkJggg==\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "#code block 12" + ] + }, + { + "source": [ + "## ಪರಿವರ್ತನಶೀಲ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಮತ್ತು ಕ್ರಿಯೆಯಲ್ಲಿ ಫಲಿತಾಂಶವನ್ನು ನೋಡುವುದು\n", + "\n", + "ಈಗ ತರಬೇತಿಗೊಂಡ ಮಾದರಿ ಹೇಗೆ ವರ್ತಿಸುತ್ತದೆ ಎಂದು ವಾಸ್ತವವಾಗಿ ನೋಡುವುದು ಆಸಕ್ತಿದಾಯಕವಾಗಿರುತ್ತದೆ. ಸಿಮ್ಯುಲೇಶನ್ ಅನ್ನು ನಡೆಸೋಣ, ಮತ್ತು ನಾವು ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ಅನುಸರಿಸಿದ ಅದೇ ಕ್ರಿಯೆ ಆಯ್ಕೆ ತಂತ್ರವನ್ನು ಅನುಸರಿಸುವೆವು: Q-ಟೇಬಲ್‌ನ ಪ್ರಾಬಬಿಲಿಟಿ ವಿತರಣೆಯ ಪ್ರಕಾರ ಸ್ಯಾಂಪ್ಲಿಂಗ್ ಮಾಡುವುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 13" + ] + }, + { + "source": [ + "## ಫಲಿತಾಂಶವನ್ನು ಅನಿಮೇಟೆಡ್ GIF ಗೆ ಉಳಿಸುವುದು\n", + "\n", + "ನೀವು ನಿಮ್ಮ ಸ್ನೇಹಿತರನ್ನು ಪ್ರಭಾವಿತಗೊಳಿಸಲು ಬಯಸಿದರೆ, ನೀವು ಸಮತೋಲನ ಕಂಬದ ಅನಿಮೇಟೆಡ್ GIF ಚಿತ್ರವನ್ನು ಅವರಿಗೆ ಕಳುಹಿಸಲು ಬಯಸಬಹುದು. ಇದನ್ನು ಮಾಡಲು, ನಾವು `env.render` ಅನ್ನು ಕರೆಸಿ ಚಿತ್ರ ಫ್ರೇಮ್ ಅನ್ನು ಉತ್ಪಾದಿಸಬಹುದು, ಮತ್ತು ನಂತರ ಅವುಗಳನ್ನು PIL ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸಿ ಅನಿಮೇಟೆಡ್ GIF ಗೆ ಉಳಿಸಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "360\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "obs = env.reset()\n", + "done = False\n", + "i=0\n", + "ims = []\n", + "while not done:\n", + " s = discretize(obs)\n", + " img=env.render(mode='rgb_array')\n", + " ims.append(Image.fromarray(img))\n", + " v = probs(np.array([Qbest.get((s,a),0) for a in actions]))\n", + " a = random.choices(actions,weights=v)[0]\n", + " obs,_,done,_ = env.step(a)\n", + " i+=1\n", + "env.close()\n", + "ims[0].save('images/cartpole-balance.gif',save_all=True,append_images=ims[1::2],loop=0,duration=5)\n", + "print(i)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/2-Gym/solution/Julia/README.md b/translations/kn/8-Reinforcement/2-Gym/solution/Julia/README.md new file mode 100644 index 000000000..0f03fd809 --- /dev/null +++ b/translations/kn/8-Reinforcement/2-Gym/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/2-Gym/solution/R/README.md b/translations/kn/8-Reinforcement/2-Gym/solution/R/README.md new file mode 100644 index 000000000..fec8a42e1 --- /dev/null +++ b/translations/kn/8-Reinforcement/2-Gym/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/2-Gym/solution/notebook.ipynb b/translations/kn/8-Reinforcement/2-Gym/solution/notebook.ipynb new file mode 100644 index 000000000..77992541f --- /dev/null +++ b/translations/kn/8-Reinforcement/2-Gym/solution/notebook.ipynb @@ -0,0 +1,532 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 4, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "5c0e485e58d63c506f1791c4dbf990ce", + "translation_date": "2025-12-19T17:28:27+00:00", + "source_file": "8-Reinforcement/2-Gym/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "## ಕಾರ್ಟ್‌ಪೋಲ್ ಸ್ಕೇಟಿಂಗ್\n", + "\n", + "> **ಸಮಸ್ಯೆ**: ಪೀಟರ್ ನಾಯಿ ಹಕ್ಕಿಯಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು, ಅವನು ಅವನಿಗಿಂತ ವೇಗವಾಗಿ ಚಲಿಸಲು ಸಾಧ್ಯವಾಗಬೇಕು. ನಾವು ಪೀಟರ್ ಹೇಗೆ ಸ್ಕೇಟ್ ಮಾಡುವುದು, ವಿಶೇಷವಾಗಿ ಸಮತೋಲನವನ್ನು ಕಾಯ್ದುಕೊಳ್ಳುವುದು, Q-ಲರ್ನಿಂಗ್ ಬಳಸಿ ಕಲಿಯಬಹುದು ಎಂದು ನೋಡೋಣ.\n", + "\n", + "ಮೊದಲು, ಜಿಮ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ ಮತ್ತು ಅಗತ್ಯವಿರುವ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: gym in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.18.3)\n", + "Requirement already satisfied: Pillow<=8.2.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from gym) (7.0.0)\n", + "Requirement already satisfied: scipy in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from gym) (1.4.1)\n", + "Requirement already satisfied: numpy>=1.10.4 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from gym) (1.19.2)\n", + "Requirement already satisfied: cloudpickle<1.7.0,>=1.2.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from gym) (1.6.0)\n", + "Requirement already satisfied: pyglet<=1.5.15,>=1.4.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from gym) (1.5.15)\n", + "\u001b[33mWARNING: You are using pip version 20.2.3; however, version 21.1.2 is available.\n", + "You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 -m pip install --upgrade pip' command.\u001b[0m\n" + ] + } + ], + "source": [ + "import sys\n", + "!pip install gym \n", + "\n", + "import gym\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import random" + ] + }, + { + "source": [ + "## ಕಾರ್ಟ್‌ಪೋಲ್ ಪರಿಸರವನ್ನು ರಚಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "env = gym.make(\"CartPole-v1\")\n", + "print(env.action_space)\n", + "print(env.observation_space)\n", + "print(env.action_space.sample())" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Discrete(2)\nBox(-3.4028234663852886e+38, 3.4028234663852886e+38, (4,), float32)\n0\n" + ] + } + ] + }, + { + "source": [ + "ಪರಿಸರವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನೋಡಲು, 100 ಹಂತಗಳಿಗಾಗಿ ಒಂದು ಚಿಕ್ಕ ಅನುಕರಣೆ ನಡೆಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "env.reset()\n", + "\n", + "for i in range(100):\n", + " env.render()\n", + " env.step(env.action_space.sample())\n", + "env.close()" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/gym/logger.py:30: UserWarning: \u001b[33mWARN: You are calling 'step()' even though this environment has already returned done = True. You should always call 'reset()' once you receive 'done = True' -- any further steps are undefined behavior.\u001b[0m\n warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))\n" + ] + } + ] + }, + { + "source": [ + "ಸಿಮ್ಯುಲೇಶನ್ ಸಮಯದಲ್ಲಿ, ನಾವು ಹೇಗೆ ನಡೆದುಕೊಳ್ಳಬೇಕೆಂದು ನಿರ್ಧರಿಸಲು ಗಮನಾರ್ಹ ಮಾಹಿತಿಗಳನ್ನು ಪಡೆಯಬೇಕಾಗುತ್ತದೆ. ವಾಸ್ತವದಲ್ಲಿ, `step` ಫಂಕ್ಷನ್ ನಮಗೆ ಪ್ರಸ್ತುತ ಗಮನಾರ್ಹ ಮಾಹಿತಿಗಳು, ಬಹುಮಾನ ಫಂಕ್ಷನ್ ಮತ್ತು ಸಿಮ್ಯುಲೇಶನ್ ಮುಂದುವರೆಯಬೇಕೇ ಇಲ್ಲವೇ ಎಂಬುದನ್ನು ಸೂಚಿಸುವ `done` ಧ್ವಜವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "env.reset()\n", + "\n", + "done = False\n", + "while not done:\n", + " env.render()\n", + " obs, rew, done, info = env.step(env.action_space.sample())\n", + " print(f\"{obs} -> {rew}\")\n", + "env.close()" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[ 0.03044442 -0.19543914 -0.04496216 0.28125618] -> 1.0\n", + "[ 0.02653564 -0.38989186 -0.03933704 0.55942606] -> 1.0\n", + "[ 0.0187378 -0.19424049 -0.02814852 0.25461393] -> 1.0\n", + "[ 0.01485299 -0.38894946 -0.02305624 0.53828712] -> 1.0\n", + "[ 0.007074 -0.19351108 -0.0122905 0.23842953] -> 1.0\n", + "[ 0.00320378 0.00178427 -0.00752191 -0.05810469] -> 1.0\n", + "[ 0.00323946 0.19701326 -0.008684 -0.35315131] -> 1.0\n", + "[ 0.00717973 0.00201587 -0.01574703 -0.06321931] -> 1.0\n", + "[ 0.00722005 0.19736001 -0.01701141 -0.36082863] -> 1.0\n", + "[ 0.01116725 0.39271958 -0.02422798 -0.65882671] -> 1.0\n", + "[ 0.01902164 0.19794307 -0.03740452 -0.37387001] -> 1.0\n", + "[ 0.0229805 0.39357584 -0.04488192 -0.67810827] -> 1.0\n", + "[ 0.03085202 0.58929164 -0.05844408 -0.98457719] -> 1.0\n", + "[ 0.04263785 0.78514572 -0.07813563 -1.2950295 ] -> 1.0\n", + "[ 0.05834076 0.98116859 -0.10403622 -1.61111521] -> 1.0\n", + "[ 0.07796413 0.78741784 -0.13625852 -1.35259196] -> 1.0\n", + "[ 0.09371249 0.98396202 -0.16331036 -1.68461179] -> 1.0\n", + "[ 0.11339173 0.79106371 -0.1970026 -1.44691436] -> 1.0\n", + "[ 0.12921301 0.59883361 -0.22594088 -1.22169133] -> 1.0\n" + ] + } + ] + }, + { + "source": [ + "ನಾವು ಆ ಸಂಖ್ಯೆಗಳ ಕನಿಷ್ಠ ಮತ್ತು ಗರಿಷ್ಠ ಮೌಲ್ಯವನ್ನು ಪಡೆಯಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38]\n[4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38]\n" + ] + } + ], + "source": [ + "print(env.observation_space.low)\n", + "print(env.observation_space.high)" + ] + }, + { + "source": [ + "## ರಾಜ್ಯ ಡಿಸ್ಕ್ರೀಟೈಜೆಷನ್\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def discretize(x):\n", + " return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))" + ] + }, + { + "source": [ + "ನಾವು ಬಿನ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಇನ್ನೊಂದು ಡಿಸ್ಕ್ರೀಟೈಜೆಷನ್ ವಿಧಾನವನ್ನು ಕೂಡ ಅನ್ವೇಷಿಸೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Sample bins for interval (-5,5) with 10 bins\n [-5. -4. -3. -2. -1. 0. 1. 2. 3. 4. 5.]\n" + ] + } + ], + "source": [ + "def create_bins(i,num):\n", + " return np.arange(num+1)*(i[1]-i[0])/num+i[0]\n", + "\n", + "print(\"Sample bins for interval (-5,5) with 10 bins\\n\",create_bins((-5,5),10))\n", + "\n", + "ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # intervals of values for each parameter\n", + "nbins = [20,20,10,10] # number of bins for each parameter\n", + "bins = [create_bins(ints[i],nbins[i]) for i in range(4)]\n", + "\n", + "def discretize_bins(x):\n", + " return tuple(np.digitize(x[i],bins[i]) for i in range(4))" + ] + }, + { + "source": [ + "ನಾವು ಈಗ ಒಂದು ಚಿಕ್ಕ ಅನುಕರಣೆ ನಡೆಸಿ ಆ ವಿಭಿನ್ನ ಪರಿಸರ ಮೌಲ್ಯಗಳನ್ನು ಗಮನಿಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(0, 0, -1, -3)\n(0, 0, -2, 0)\n(0, 0, -2, -3)\n(0, 1, -3, -6)\n(0, 2, -4, -9)\n(0, 3, -6, -12)\n(0, 2, -8, -9)\n(0, 3, -10, -13)\n(0, 4, -13, -16)\n(0, 4, -16, -19)\n(0, 4, -20, -17)\n(0, 4, -24, -20)\n" + ] + } + ], + "source": [ + "env.reset()\n", + "\n", + "done = False\n", + "while not done:\n", + " #env.render()\n", + " obs, rew, done, info = env.step(env.action_space.sample())\n", + " #print(discretize_bins(obs))\n", + " print(discretize(obs))\n", + "env.close()" + ] + }, + { + "source": [ + "## ಕ್ಯೂ-ಟೇಬಲ್ ರಚನೆ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "Q = {}\n", + "actions = (0,1)\n", + "\n", + "def qvalues(state):\n", + " return [Q.get((state,a),0) for a in actions]" + ] + }, + { + "source": [ + "## ನಾವು Q-ಲರ್ನಿಂಗ್ ಪ್ರಾರಂಭಿಸೋಣ!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# hyperparameters\n", + "alpha = 0.3\n", + "gamma = 0.9\n", + "epsilon = 0.90" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "0: 108.0, alpha=0.3, epsilon=0.9\n" + ] + } + ], + "source": [ + "def probs(v,eps=1e-4):\n", + " v = v-v.min()+eps\n", + " v = v/v.sum()\n", + " return v\n", + "\n", + "Qmax = 0\n", + "cum_rewards = []\n", + "rewards = []\n", + "for epoch in range(100000):\n", + " obs = env.reset()\n", + " done = False\n", + " cum_reward=0\n", + " # == do the simulation ==\n", + " while not done:\n", + " s = discretize(obs)\n", + " if random.random() Qmax:\n", + " Qmax = np.average(cum_rewards)\n", + " Qbest = Q\n", + " cum_rewards=[]" + ] + }, + { + "source": [ + "## ತರಬೇತಿ ಪ್ರಗತಿಯನ್ನು ಚಿತ್ರಿಸುವುದು\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 20 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3deXxU9b3/8dcnCSTsa8CQgAEJIKIIBGSXTUWiYqu0Lq2o3MvV6nWhVlGrtbdasddq9dqfy9W2tr22WpdKXYu4W0VBRVBAQFACCEF2kCXk+/tjvkkm+yTMZCZn3s/HI4+c853vzPmenMl7vud7zpxjzjlERCS4UuLdABERiS0FvYhIwCnoRUQCTkEvIhJwCnoRkYBLi3cDADp37uxyc3Pj3QwRkSZl0aJFW5xzmXXVS4igz83NZeHChfFuhohIk2JmX0ZST0M3IiIBp6AXEQk4Bb2ISMAp6EVEAk5BLyIScBEFvZmtNbMlZvaxmS30ZR3NbJ6ZrfS/O/hyM7N7zWyVmX1iZoNjuQIiIlK7+vToxzvnjnfO5fv52cB851weMN/PA5wK5PmfmcD90WqsiIjU3+GcRz8VGOenHwVeB67z5X90oesfv2dm7c0syzm38XAa2pjWbd3Lj/+2mG7tMvjpaf3p3DqdbXsO8K/V31BwXBbOOf7+8XpO6NmJj77azsSjuzD5N2/yo3G9eXbxev484wTumb+S/lltOaJdBobxwBureePzIpbccjJmBsCLSzby+ooiphyXxYl9Kn7nYUnhDv7+8Xq6tk1n5tijyso/XredtBRjQHY7nHM8uaiQCf26cOvzy+jYqjnLNu7kX6u/4d5zB5HdvgWri3bz3UHZpKWm8PKnX3NMt7bc/sJybig4mpPueoNHpg+leZrxwdptzHlxOU9dOoIN2/dx+sBuPLbgK254Zglt0tO4cFQu//PqKm46rT+/eO4zlv9iMjf9fSl/W1RIn66tGdazI51apXPP/JX87PT+9OzcivfXbGXJ+h28tXJLg7fFJScexQNvrKZ3l9as2ry7rNwMUs0oLonfZbbbZKSxa19xxPVHHtWJpet3sHNfMcdmt2PJ+h306tyKL7bsAeDu7w/k6scXx6q53HJ6f7buPcgTH6zj6537YraccENzO/DB2m38YHgP1m/7luZpKbz86aZ6vcb5J/TgolG5TLrrzXov/4qJeaSacfcrn9da79YzB/DlN3v437fW8B9je/Hgm19UqfPdwdk8/eH6Gl9jcI/2PHXpSNZs2cOEX78RUftyOrTglVknktEsNaL6DWWRXI/ezNYA2wAHPOice8jMtjvn2ofV2eac62BmzwFznHNv+/L5wHXOuYWVXnMmoR4/PXr0GPLllxGd998ocmc/Xzad06EFb183ge8/+C4L1mzlvesnsm7bXqY98G5ZnYn9ujB/+eay+cqhFO73Fw1lfN8u7Nx3kONu+WdZ+do5BTW2Ifyx0vK1cwp4aelGLvnzh3Wuz7WT+3LxqJ70u+mlOuuWKv0HrUnz1BQOHCqJ+PVEksFvzxvMZY/V/T8Z7ofDj+QXZw5o0PLMbFHYKEuNIu3Rj3LObTCzLsA8M1te27KrKavyaeKcewh4CCA/Pz9h735SuO1bANZvD/0+eKiE3fsr9uLWbdtbYb6mkAfKeoDFhw5/lXd+G1lvcuvuA5TU8wYztYU8oJAXqcaufQfr/ZyiXftj0JKKIhqjd85t8L83A88Aw4BNZpYF4H+XdmkLge5hT88BNkSrwUGVO/t5LvnTong3Q0QCqM6gN7NWZtamdBo4GVgKzAWm+2rTgWf99FzgAn/2zXBgR1Man4+nlz79Ot5NEJEAimTopivwjD+AmAY85px7ycw+AJ4wsxnAV8A0X/8FYAqwCtgLXBT1VouIBETR7tgP3dQZ9M65L4CB1ZR/A0ysptwBl0WldQG0/+Ah5i7ewKijOjXaMuN4YoqI1OHLb/bWXekwJcRlipPJr15eQdGu/dxzzvGNtkyr7vC4iETdI2+viXcTqqVLIHhffrOHRV/WfqZJNJQeYd/5bf2PzotIYltZyxl38aQevXfif78OVD2fXUQklrY0whi9evRRYNV+dSBxOJf4bRSR2FHQi4gEnIZuoqAhBzsb80SY372zhjYZ2tQiyUo9+giMv/P1CvNNcRDknvkr490EEYkTBX0E1virC4qINEUK+nqq57XBouqv738Vv4WLSJOloI9QInzpaPbTS+LdBBFpghT0IiIBp6AH9h6o+7ru0R6yiecQkIgkFwU9sOCLrXXWKb0BSayHcL49cCi2CxCRpKOgr2TfwbqDNpad8UPq6otIlCnoK9l/sHFukVfbnkFjXPtCRJKHgr6eHv9gXUzv8bh19wHyb30lZq8vIslHQV9P9722it+/szZmr79174EqZbmzn+eQ7h4iIg2koAdcPUfdDxQf/gHTmobiP9uws9ryg4caZ0hJRIJHQd8Aq4sO/5IIroakX7l512G/tohIOAV9gvmwhrtcrdyUmHeuEZHEp6CvpL7DONG2uHBHteWn3/d2I7dERIJCQR8nlggXzxGRpKCgFxEJOAU98bnuTE0HY0VEok1BHwUahhGRRKagr8Sa5I0CRURqpqCvpCFn3SzbWP2XnEREEoGCnviM0Wu4R0Qai4JeRCTgFPTE9vryNS5TZ92ISCNR0MfJLf/4LN5NEJEkEXHQm1mqmX1kZs/5+Z5mtsDMVprZ42bW3Jen+/lV/vHc2DQ9etS7FpEgq0+P/kpgWdj8HcDdzrk8YBsww5fPALY553oDd/t6Ce3xD9bFuwn11uenL/L655vj3QwRaQIiCnozywEKgIf9vAETgCd9lUeBM/30VD+Pf3yiJfgpJis3l18Zsql07g8Ul/DCkq/j3QwRaQIi7dH/BrgWKL37RSdgu3Ou2M8XAtl+OhtYB+Af3+HrV2BmM81soZktLCoqamDzRUSkLnUGvZmdBmx2zi0KL66mqovgsfIC5x5yzuU75/IzMzMjamysxPvSxCIisZQWQZ1RwBlmNgXIANoS6uG3N7M032vPATb4+oVAd6DQzNKAdsDWqLc8SkpKHCVhd+lL7EEmEZH6q7NH75y73jmX45zLBc4BXnXOnQ+8Bpztq00HnvXTc/08/vFXXQKf1nLqPW+xfvu38W6GiEjMHM559NcBs8xsFaEx+Ed8+SNAJ18+C5h9eE2MrRWbdI9WEQm2SIZuyjjnXgde99NfAMOqqbMPmBaFtsVF4u57iIg0jL4ZKyIScAp6EZGAU9CLiARcvcbog+JAcQl9fvoiV0zoHe+miIjEXFL26PcVHwLg9++sjW9DREQaQVIGvYhIMlHQV6KzK0UkaBT0legKCCISNAp6EZGAU9CLiAScgr4SjdGLSNAo6CuZ95nu2iQiwZLUQb9rf3GVsi27D8ShJSIisZPUQS8ikgwU9JX8+p8r4t0EEZGoUtBXUqKjsSISMEkX9J9v2sW0+9+NdzNERBpN0gX9L19YptsHikhSSbqgFxFJNgp6EZGAU9CLiAScgl5EJOAU9CIiAaegFxEJuKQLet1YRESSTdIFvYhIslHQi4gEnIJeRCTgFPQiIgGnoBcRCbikC3oznXcjIsmlzqA3swwze9/MFpvZp2b2c1/e08wWmNlKM3vczJr78nQ/v8o/nhvbVRARkdpE0qPfD0xwzg0Ejgcmm9lw4A7gbudcHrANmOHrzwC2Oed6A3f7eglD/XkRSTZ1Br0L2e1nm/kfB0wAnvTljwJn+umpfh7/+ETTeImISNxENEZvZqlm9jGwGZgHrAa2O+eKfZVCINtPZwPrAPzjO4BO0Wy0iIhELqKgd84dcs4dD+QAw4Cjq6vmf1fXe69yJ1Yzm2lmC81sYVFRUaTtFRGReqrXWTfOue3A68BwoL2ZpfmHcoANfroQ6A7gH28HbK3mtR5yzuU75/IzMzMb1voG0CCSiCSbSM66yTSz9n66BTAJWAa8Bpztq00HnvXTc/08/vFXnXNVevQiItI40uquQhbwqJmlEvpgeMI595yZfQb81cxuBT4CHvH1HwH+ZGarCPXkz4lBu0VEJEJ1Br1z7hNgUDXlXxAar69cvg+YFpXWiYjIYUuKb8YeKnHcMvdTNmz/Nt5NERFpdJEM3TR576/Zyh/+tZbPN+2iZfPUeDdHRKRRJUWP3vmzO0t0TFhEklBSBH1FOr9SRJJLEga9iEhyUdCLiARcUgW9huhFJBklRdBb2Li8LoEgIskm0KdXOudYXbQn3s0QEYmrQPfoH3l7DZPueoPFhdvLyg6VaPxGRJJLoIP+o3WhgF+3dW9Z2avLN8erOSIicRHooBcRkSQLeg3aiEgySoqg15k2IpLMgh306sKLiAQ86D3T9W1EJIkF9jz63NnPl00/vnBdHFsiIhJfSdGjP1BcEu8miIjETVIEfRmN2YtIEgpU0O/eX8zU377D55t2xbspIiIJI1BB/69VW1i8bju/emlFvJsiIpIwAhX0dXl/7dZ4N0FEpNElVdCLiCSjQAW9jrWKiFQVqKAvpUseiIiUC2TQi4hIuUAFve4JKyJSVaCCvpRGbkREygUy6EVEpFzAgl5jNyIilQUs6EN01o2ISLlABr2IiJSrM+jNrLuZvWZmy8zsUzO70pd3NLN5ZrbS/+7gy83M7jWzVWb2iZkNjvVKlNJZNyIiVUXSoy8GfuycOxoYDlxmZv2B2cB851weMN/PA5wK5PmfmcD9UW91HXRHKRGRcnUGvXNuo3PuQz+9C1gGZANTgUd9tUeBM/30VOCPLuQ9oL2ZZUW95dXYrxuMiIhUUa8xejPLBQYBC4CuzrmNEPowALr4atlA+L37Cn1Z5deaaWYLzWxhUVFR/Vtejase/zgqryMiEiQRB72ZtQaeAq5yzu2srWo1ZVVGz51zDznn8p1z+ZmZmZE2IyI660ZEpFxEQW9mzQiF/P855572xZtKh2T8782+vBDoHvb0HGBDdJorIiL1FclZNwY8Aixzzt0V9tBcYLqfng48G1Z+gT/7Zjiwo3SIR0REGl9aBHVGAT8ElphZ6SD4DcAc4AkzmwF8BUzzj70ATAFWAXuBi6La4gho6EZEpFydQe+ce5uarxM2sZr6DrjsMNslIiJRom/GiogEXCCDXl+YEhEpF8igFxGRcgp6EZGAC2TQry7aHe8miIgkjEAG/fKvd8W7CSIiCSOQQS8iIuUU9CIiAaegFxEJOAW9iEjAKehFRAJOQS8iEnAKehGRgFPQi4gEnIJeRCTgFPQiIgGnoBcRCTgFvYhIwCnoRUQCTkEvIhJwCnoRkYBT0IuIBFxggr5w2954N0FEJCEFIujfXf0No+94Ld7NEBFJSIEI+uVf74x3E0REElYggt65eLdARCRxBSPo490AEZEEFoigFxGRmgUi6J3GbkREahSIoBcRkZo1+aDfd/AQtz6/LN7NEBFJWHUGvZn9zsw2m9nSsLKOZjbPzFb63x18uZnZvWa2ysw+MbPBsWw8wINvfBHrRYiINGmR9Oj/AEyuVDYbmO+cywPm+3mAU4E8/zMTuD86zazZ3oPFsV6EiEiTVmfQO+feBLZWKp4KPOqnHwXODCv/owt5D2hvZlnRamz1DYzpq4uINHkNHaPv6pzbCOB/d/Hl2cC6sHqFvqwKM5tpZgvNbGFRUVEDmwH/WLyhwc8VEUkG0T4Ya9WUVdvnds495JzLd87lZ2ZmNniBG3bsa/BzRUSSQUODflPpkIz/vdmXFwLdw+rlAOpyi4jEUUODfi4w3U9PB54NK7/An30zHNhROsQjIiLxkVZXBTP7CzAO6GxmhcDPgDnAE2Y2A/gKmOarvwBMAVYBe4GLYtBmERGphzqD3jl3bg0PTaymrgMuO9xGiYhI9DT5b8aKiEjtFPQiIgHXpIP+/TWVv8clIiKVNemg/8HDC+LdBBGRhNekg/7AoZJ4N0FEJOE16aAXEZG6KehFRAJOQS8iEnAKehGRgFPQi4gEnIJeRCTgFPQiInHUPC32MaygFxGJo7OH5MR8GQp6EZE4Om9Yj5gvQ0EvIhJHA7LbxXwZCnoRkTjp3aV1oyxHQS8iEidj8zIbZTkKehGROLnmlD6NshwFvYhInLRsXufdXKNCQS8iEnAKeklIfbo2zkEqaTzpjfDFIKme/vKSkJyLdwsk2sbkdY53E5KWgl6kEfzyO8dGXPfYRjivuql69OJhUX29Fs1So/p63Tu2iOrrRYuCXqSBxveNzalxd04bGPUAasq+Oyi7bPrEPuV/87F9av/7FxyXVedr5+d2qHd7Tu7ftcJ8r8xWjIvReyFaFPRS5vwTYv9V7Ibo27VNteV/nnFClbJOrZrHtC3nDO1eNn36wG4AXDDiSNbOKaj1ec1SrV7LuXh0br3bVpe1cwq45uTGOZ0vmobkdqBV86offJUDd3CP9hXmczrU3btOT0vh0nFHlQ0rRXKBsXF9u1SYP2twDtntQ8tqlpqYkZqYrZKo6pXZKqJ6t9VjeKHyP1ldLh/fO+K6o3tXHMt9+eqxVercd94gRsdhzLe095bZJp0zBnbjigm9+ckpfWt9zohenfhOWK80El3bZgBUG3CljvB1EtWpA4447Nd49rJRnDesBwtunMTim08GKgb43y4Zwc2n9WfBDRN57N+H07LS36tTq+ZMOrrm9+pPTunHdZNDPwBnDc7m/RsncvGonmV1hlbq9We2Secfl48um+/SJp3Zp/bjigm9Oe3YmvcirpjQm/wj678HEQ0K+iZkUKUeS6T+3/mDK7xxo2FafndunHI0AMNyO9ZZ/5pKYTiqd6da6885K/Sh819Tj6n28dOO6xZJMyOWF/ZV9PvOG8S8aj5cSv3homF8cOMk0lJTmHVyX9pkNAPgwpG5NK+mR/eXmcNJS03hhin9uHBkbll5Zpt0js5qW+0y+vi9mP+aOqDC3kL3ji147ZpxADzxHyPKyksD5KcFR5eVfS+/6lURv5ffvcK6Ho7OrdOrLX/1xyfy4pVjKqxruJqWX10IDuzeHjOjdXoa7VqG/s5XTepT9jpDczty8eiedG2bQUazVF798ThOCuuELLrpJB6enl82f+e0gfz7mPL/hTYZofPYB2S345Hp+fzs9GPo0iajQs/+4QuGcsvp/cvmT+rflWNz2vHFL6fwwA+GcPaQHNpkNGPWyX0Z2L3m/9ExfTI55ZjyD7+nLh1RY91oU9AniLp2Gbu0SeepS0Y26LWz2rXg5tP7c1xO+UG+W88cUOtzurWrvbc4rm8mk32P7ZJxvSJqx2XjjyqbPmdo7cNEQ47syNo5BVwwIheAD26cVGub75w2kGd+NLLsHzcSFjaaMm/WiRSE9cbyahguqs0tZxzD57edWuPjM8cexS1nlH9wDc3twItXjikbAgo3vFcn3r5uPGf5S9iWhvbLV42lZ+dWrJ1TQI9OLcvq//b8wVxzch9mjC4Psdu+cyzvXT+xwut2aZvBvFkncvNp/XllVs0fZvURvmdxZKeW9MpsXeMHWG2evDSy9/dZg7N569rxnNCramfhiHYZDO5R9QOjTXoak47uwtlDcrixoD9PXjKCn5zSl27ty/cOJh7dlQx/bCR8CLBdy2ZcOKon78yewJrbp5SVp6QYkwccgYW9kSaG7T3MOqkPr10zjldmjeXqSX3IP7JD2V7oHy4aypAj6+4gRYuCPgZKd+XrMx561/cG1vr4+zdOIiXFuOec4+vVlrVzCmjXItQTmnv5aOZ8N9RT7ndE7UFWenbDhSNzeSSsRwSw5vYpNEtNoXvHlqydU8CEflV3jR/4wZAqZT85pR9r5xSwdk5BhXBb/ovJQGg4qH9WW2af2q/KczPbpJeFeAffswt39pAcBvXoUHYlwNJeY/hxh/Drfg/s3p41txfwyqyxvHjlmBr+CiGDe7RniO9tRnMM9r/PDm3z/zl3EGvnFPC3S0YwMKcduZ1DAZ7ToTzIf3X2QNbOKajxm5Rd22Zw+YQ8zKys09AsNYUj2mUw7+qxvHRVxXW8eHRPenWuX8++8tlAE/t1oW/XNtz2ndAH8IhenXiyls5Ih5ah8ByTl1n2Plg7p4B7zjm+wvBKm/TaP6zNjO4dW9b4+FmDs8nr0pofDj+yrGzJz0/h4elDy+bzcztyWS3DiWP6hAK5Z+fyYc/s9i0qhHpNXrpqDPOuHssVE/Po2bkVvbu04cpJoW1zdFZb1s4pqDLOH2uN8/3bAMjr0pqnfjSS4275Z511Z4zuya59xfzbmF7c+c/PAUhLMYpLKp4cfnL/rvTLasuQIzsw6qjqhzLeu34i7cOC7YyB3fh80y4y0lJplpbCWYNzuP2FZTz90XpG9e7ElRP70KVNOu+s3sJx2VV3I78/tDsjj+pMj04tueOsY8nr2oY9+4tZun4nEOoZp1ioR/v2dePJateC1JSKb+7q3uxzLx/FkvU7uPGZpQBMHnAE/bPa8tnGndUeNAX4xZkDGNS9PRnNUnn3+gl0apVe655NwbFZLP96F5ecWL5n8OAPh1QYLik9KHbd5H4s/HIbV07MY8/+Yv7+8QbunDaQJxcVAnD/+YMB6N2l5g+8966fSIdWzUhPS2XvgWLunb+K8yI4YD0mrzOL123nzWvHY1T9Ww3IbsvufcW0qhRoQ3M78mzY2G8k/jRjGDu/La5Q9tx/juatlVvK5mvaOyndjOP6ZnJS/65l2y6rXQYbd+yjR8eWfLV1LwA/P+MYpo/MJXf287RJT2PX/mLyurbmjrOPA+Cta8eT3b4FKWHvlaP8h+2IXp1494tv6N+tLW9PGl/l2MLU47OZenzoGMaHN51Es1TjpLveJDuCg6nVKd1rORyl262+B9EB+h1R/72ZWDOXAN9Myc/PdwsXLqz380bcPp+NO/bV+3nXTu5L6/Q0bn72U1o0S+XpH40kNcW455WVPL9kIytvO5UHXl/Nr+eFQvrm0/pzsd8lds5x07NLuXBkLt978D227jnA9/JzSE1J4cqJeXz5zZ4Ku5TTf/c+Zw7qxstLN/HSp1+z+pdTqgRnuE8Kt3PGfe9w7rDuXDAiN6Jd4H0HD/H6is1MHlD36WSH465/rmDX/mJ+dnr14+YAS9fvoEXzVI7KbM3WPQf4dMMOxjTSFfoADhSXMH/Zpiq71KWeWlTIc59s4PcXVT0fe8XXu7jssQ956tKRZXtBySR39vMAvH/DRFYV7eaYrHZ8+NU29hwoZsqArLIQd87xwpKvmTzgiFrfy6VKShwvLo28fiLYX3yIs+7/Fz8t6M/waoaIEoWZLXLO5ddZLxZBb2aTgXuAVOBh59yc2uo3NOiLD5XwzEfr2VdcQtuMNIbmdqR5WgqpZlz+lw+57cxjSU0x9heXRHTd5/3Fh9iy+wDZ7VtQUuJYt20vR3aK7IyVSF77m90HKowJ1uTLb/bQo2PLiHYTRaJlz/5i9uwvpkuCn80j5eIW9GaWCnwOnAQUAh8A5zrnPqvpOQ0NehGRZBZp0MfiYOwwYJVz7gvn3AHgr8DUGCxHREQiEIugzwbWhc0X+rIKzGymmS00s4VFRUUxaIaIiEBsgr66geUq40POuYecc/nOufzMzMS+ToSISFMWi6AvBLqHzecAG2KwHBERiUAsgv4DIM/MeppZc+AcYG4MliMiIhGI+hemnHPFZnY58DKh0yt/55z7NNrLERGRyMTkm7HOuReAF2Lx2iIiUj+61o2ISMAlxCUQzKwI+LKBT+8MbKmzVrBonZOD1jk5HM46H+mcq/O0xYQI+sNhZgsj+WZYkGidk4PWOTk0xjpr6EZEJOAU9CIiAReEoH8o3g2IA61zctA6J4eYr3OTH6MXEZHaBaFHLyIitVDQi4gEXJMOejObbGYrzGyVmc2Od3vqw8y6m9lrZrbMzD41syt9eUczm2dmK/3vDr7czOxev66fmNngsNea7uuvNLPpYeVDzGyJf869liC3rDKzVDP7yMye8/M9zWyBb//j/hpJmFm6n1/lH88Ne43rffkKMzslrDzh3hNm1t7MnjSz5X57jwj6djazq/37eqmZ/cXMMoK2nc3sd2a22cyWhpXFfLvWtIxaOeea5A+h6+isBnoBzYHFQP94t6se7c8CBvvpNoTuytUf+BUw25fPBu7w01OAFwldBno4sMCXdwS+8L87+OkO/rH3gRH+OS8Cp8Z7vX27ZgGPAc/5+SeAc/z0A8ClfvpHwAN++hzgcT/d32/vdKCnfx+kJup7AngU+Dc/3RxoH+TtTOj+E2uAFmHb98KgbWdgLDAYWBpWFvPtWtMyam1rvP8JDuOPPAJ4OWz+euD6eLfrMNbnWUK3X1wBZPmyLGCFn36Q0C0ZS+uv8I+fCzwYVv6gL8sCloeVV6gXx/XMAeYDE4Dn/Jt4C5BWebsSujDeCD+d5utZ5W1dWi8R3xNAWx96Vqk8sNuZ8psPdfTb7TnglCBuZyCXikEf8+1a0zJq+2nKQzcR3cmqKfC7qoOABUBX59xGAP+7i69W0/rWVl5YTXm8/Qa4Fijx852A7c65Yj8f3s6ydfOP7/D16/u3iKdeQBHwez9c9bCZtSLA29k5tx64E/gK2Ehouy0i2Nu5VGNs15qWUaOmHPQR3ckq0ZlZa+Ap4Crn3M7aqlZT5hpQHjdmdhqw2Tm3KLy4mqqujseazDoT6qEOBu53zg0C9hDa3a5Jk19nP2Y8ldBwSzegFXBqNVWDtJ3rEtd1bMpB3+TvZGVmzQiF/P855572xZvMLMs/ngVs9uU1rW9t5TnVlMfTKOAMM1tL6KbxEwj18NubWekls8PbWbZu/vF2wFbq/7eIp0Kg0Dm3wM8/SSj4g7ydJwFrnHNFzrmDwNPASIK9nUs1xnataRk1aspB36TvZOWPoD8CLHPO3RX20Fyg9Mj7dEJj96XlF/ij98OBHX637WXgZDPr4HtSJxMav9wI7DKz4X5ZF4S9Vlw45653zuU453IJba9XnXPnA68BZ/tqlde59G9xtq/vfPk5/myNnkAeoQNXCfeecM59Dawzs76+aCLwGQHezoSGbIabWUvfptJ1Dux2DtMY27WmZdQsngdtonAgZAqhs1VWAzfGuz31bPtoQrtinwAf+58phMYm5wMr/e+Ovr4Bv9wf3t8AAACjSURBVPXrugTID3uti4FV/ueisPJ8YKl/zn1UOiAY5/UfR/lZN70I/QOvAv4GpPvyDD+/yj/eK+z5N/r1WkHYWSaJ+J4AjgcW+m39d0JnVwR6OwM/B5b7dv2J0JkzgdrOwF8IHYM4SKgHPqMxtmtNy6jtR5dAEBEJuKY8dCMiIhFQ0IuIBJyCXkQk4BT0IiIBp6AXEQk4Bb2ISMAp6EVEAu7/A6SijxMjKxrLAAAAAElFTkSuQmCC\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(rewards)" + ] + }, + { + "source": [ + "ಈ ಗ್ರಾಫ್‌ನಿಂದ ಏನೂ ಹೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಸ್ಟೋಚಾಸ್ಟಿಕ್ ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆಯ ಸ್ವಭಾವದಿಂದ ತರಬೇತಿ ಸೆಷನ್‌ಗಳ ಉದ್ದವು ಬಹಳ ವ್ಯತ್ಯಾಸವಾಗುತ್ತದೆ. ಈ ಗ್ರಾಫ್‌ನ ಅರ್ಥವನ್ನು ಹೆಚ್ಚು ಸ್ಪಷ್ಟಗೊಳಿಸಲು, ನಾವು ಪ್ರಯೋಗಗಳ ಸರಣಿಯ ಮೇಲೆ **ಚಲಿಸುವ ಸರಾಸರಿ** ಲೆಕ್ಕಹಾಕಬಹುದು, ಉದಾಹರಣೆಗೆ 100. ಇದನ್ನು ಸುಲಭವಾಗಿ `np.convolve` ಬಳಸಿ ಮಾಡಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 22 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "def running_average(x,window):\n", + " return np.convolve(x,np.ones(window)/window,mode='valid')\n", + "\n", + "plt.plot(running_average(rewards,100))" + ] + }, + { + "source": [ + "## ಪರಿವರ್ತನಶೀಲ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಮತ್ತು ಕ್ರಿಯೆಯಲ್ಲಿ ಫಲಿತಾಂಶವನ್ನು ನೋಡುವುದು\n", + "\n", + "ಈಗ ತರಬೇತಿಗೊಂಡ ಮಾದರಿ ಹೇಗೆ ವರ್ತಿಸುತ್ತದೆ ಎಂದು ವಾಸ್ತವವಾಗಿ ನೋಡುವುದು ಆಸಕ್ತಿದಾಯಕವಾಗಿರುತ್ತದೆ. ಸಿಮ್ಯುಲೇಶನ್ ಅನ್ನು ನಡೆಸೋಣ, ಮತ್ತು ನಾವು ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ಅನುಸರಿಸಿದ ಅದೇ ಕ್ರಿಯೆ ಆಯ್ಕೆ ತಂತ್ರವನ್ನು ಅನುಸರಿಸುವೆವು: Q-ಟೇಬಲ್‌ನ ಪ್ರಾಬಬಿಲಿಟಿ ವಿತರಣೆಯ ಪ್ರಕಾರ ಸ್ಯಾಂಪ್ಲಿಂಗ್ ಮಾಡುವುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "obs = env.reset()\n", + "done = False\n", + "while not done:\n", + " s = discretize(obs)\n", + " env.render()\n", + " v = probs(np.array(qvalues(s)))\n", + " a = random.choices(actions,weights=v)[0]\n", + " obs,_,done,_ = env.step(a)\n", + "env.close()" + ] + }, + { + "source": [ + "## ಫಲಿತಾಂಶವನ್ನು ಅನಿಮೇಟೆಡ್ GIF ಗೆ ಉಳಿಸುವುದು\n", + "\n", + "ನೀವು ನಿಮ್ಮ ಸ್ನೇಹಿತರನ್ನು ಪ್ರಭಾವಿತಗೊಳಿಸಲು ಬಯಸಿದರೆ, ನೀವು ಸಮತೋಲನ ಕಂಬದ ಅನಿಮೇಟೆಡ್ GIF ಚಿತ್ರವನ್ನು ಅವರಿಗೆ ಕಳುಹಿಸಲು ಬಯಸಬಹುದು. ಇದನ್ನು ಮಾಡಲು, ನಾವು `env.render` ಅನ್ನು ಕರೆಸಿ ಚಿತ್ರ ಫ್ರೇಮ್ ಅನ್ನು ಉತ್ಪಾದಿಸಬಹುದು, ಮತ್ತು ನಂತರ ಅವುಗಳನ್ನು PIL ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸಿ ಅನಿಮೇಟೆಡ್ GIF ಗೆ ಉಳಿಸಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "360\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "obs = env.reset()\n", + "done = False\n", + "i=0\n", + "ims = []\n", + "while not done:\n", + " s = discretize(obs)\n", + " img=env.render(mode='rgb_array')\n", + " ims.append(Image.fromarray(img))\n", + " v = probs(np.array([Qbest.get((s,a),0) for a in actions]))\n", + " a = random.choices(actions,weights=v)[0]\n", + " obs,_,done,_ = env.step(a)\n", + " i+=1\n", + "env.close()\n", + "ims[0].save('images/cartpole-balance.gif',save_all=True,append_images=ims[1::2],loop=0,duration=5)\n", + "print(i)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/README.md b/translations/kn/8-Reinforcement/README.md new file mode 100644 index 000000000..75e658809 --- /dev/null +++ b/translations/kn/8-Reinforcement/README.md @@ -0,0 +1,69 @@ + +# ಬಲವರ್ಧಿತ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ + +ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ, RL, ಮೇಲ್ವಿಚಾರಿತ ಅಧ್ಯಯನ ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆಯಿಲ್ಲದ ಅಧ್ಯಯನದ ಪಕ್ಕದಲ್ಲಿ ಮೂಲ ಯಂತ್ರ ಅಧ್ಯಯನ ಪರಿಕಲ್ಪನೆಗಳಲ್ಲಿ ಒಂದಾಗಿ ಪರಿಗಣಿಸಲಾಗಿದೆ. RL ಎಲ್ಲವೂ ನಿರ್ಧಾರಗಳ ಬಗ್ಗೆ: ಸರಿಯಾದ ನಿರ್ಧಾರಗಳನ್ನು ನೀಡುವುದು ಅಥವಾ ಕನಿಷ್ಠ ಅವುಗಳಿಂದ ಕಲಿಯುವುದು. + +ನೀವು ಷೇರು ಮಾರುಕಟ್ಟೆಂತಹ ಅನುಕರಿಸಿದ ಪರಿಸರವನ್ನು ಹೊಂದಿದ್ದೀರಿ ಎಂದು ಕಲ್ಪಿಸಿ. ನೀವು ನೀಡಿದ ನಿಯಮವನ್ನು ಜಾರಿಗೆ ತಂದರೆ ಏನಾಗುತ್ತದೆ? ಅದು ಧನಾತ್ಮಕ ಅಥವಾ ಋಣಾತ್ಮಕ ಪರಿಣಾಮ ಹೊಂದಿದೆಯೇ? ಏನಾದರೂ ಋಣಾತ್ಮಕವಾದುದು ಸಂಭವಿಸಿದರೆ, ನೀವು ಈ _ಋಣಾತ್ಮಕ ಬಲವರ್ಧನೆ_ ತೆಗೆದುಕೊಳ್ಳಬೇಕು, ಅದರಿಂದ ಕಲಿಯಬೇಕು ಮತ್ತು ದಿಕ್ಕು ಬದಲಾಯಿಸಬೇಕು. ಅದು ಧನಾತ್ಮಕ ಫಲಿತಾಂಶವಾದರೆ, ನೀವು ಆ _ಧನಾತ್ಮಕ ಬಲವರ್ಧನೆ_ ಮೇಲೆ ನಿರ್ಮಿಸಬೇಕು. + +![peter and the wolf](../../../translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.kn.png) + +> ಪೀಟರ್ ಮತ್ತು ಅವನ ಸ್ನೇಹಿತರು ಹಸಿವಿನ ನರಿ ತಪ್ಪಿಸಿಕೊಳ್ಳಬೇಕಾಗಿದೆ! ಚಿತ್ರವನ್ನು [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ನೀಡಿದ್ದಾರೆ + +## ಪ್ರಾದೇಶಿಕ ವಿಷಯ: ಪೀಟರ್ ಮತ್ತು ನರಿ (ರಷ್ಯಾ) + +[ಪೀಟರ್ ಮತ್ತು ನರಿ](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) ರಷ್ಯಾದ ಸಂಗೀತ ರಚನೆಗಾರ [ಸೆರ್ಗೇ ಪ್ರೊಕೊಫಿಯೆವ್](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ರಚಿಸಿದ ಸಂಗೀತ ಕಥೆ. ಇದು ಯುವ ಪಯನಿಯರ್ ಪೀಟರ್ ಬಗ್ಗೆ ಕಥೆ, ಅವನು ಧೈರ್ಯವಾಗಿ ತನ್ನ ಮನೆಯಿಂದ ಕಾಡಿನ ತೆರೆಯ ಕಡೆಗೆ ಹೋಗಿ ನರಿಯನ್ನು ಹಿಂಬಾಲಿಸುತ್ತಾನೆ. ಈ ವಿಭಾಗದಲ್ಲಿ, ನಾವು ಪೀಟರ್‌ಗೆ ಸಹಾಯ ಮಾಡುವ ಯಂತ್ರ ಅಧ್ಯಯನ ಆಲ್ಗಾರಿದಮ್ಗಳನ್ನು ತರಬೇತಿಮಾಡುತ್ತೇವೆ: + +- **ಸುತ್ತಲೂ ಇರುವ ಪ್ರದೇಶವನ್ನು ಅನ್ವೇಷಿಸಿ** ಮತ್ತು ಅತ್ಯುತ್ತಮ ನ್ಯಾವಿಗೇಶನ್ ನಕ್ಷೆಯನ್ನು ನಿರ್ಮಿಸಿ +- **ಸ್ಕೇಟ್ಬೋರ್ಡ್ ಬಳಸುವುದು ಮತ್ತು ಅದರಲ್ಲಿ ಸಮತೋಲನ ಸಾಧಿಸುವುದನ್ನು ಕಲಿಯಿರಿ**, ವೇಗವಾಗಿ ಸುತ್ತಾಡಲು. + +[![Peter and the Wolf](https://img.youtube.com/vi/Fmi5zHg4QSM/0.jpg)](https://www.youtube.com/watch?v=Fmi5zHg4QSM) + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಪ್ರೊಕೊಫಿಯೆವ್ ಅವರ ಪೀಟರ್ ಮತ್ತು ನರಿ ಕೇಳಿ + +## ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ + +ಹಿಂದಿನ ವಿಭಾಗಗಳಲ್ಲಿ, ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನ ಸಮಸ್ಯೆಗಳ ಎರಡು ಉದಾಹರಣೆಗಳನ್ನು ನೋಡಿದ್ದೀರಿ: + +- **ಮೇಲ್ವಿಚಾರಿತ**, ಇಲ್ಲಿ ನಾವು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಮಾದರಿ ಪರಿಹಾರಗಳನ್ನು ಸೂಚಿಸುವ ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ. [ವರ್ಗೀಕರಣ](../4-Classification/README.md) ಮತ್ತು [ರಿಗ್ರೆಶನ್](../2-Regression/README.md) ಮೇಲ್ವಿಚಾರಿತ ಅಧ್ಯಯನ ಕಾರ್ಯಗಳಾಗಿವೆ. +- **ಮೇಲ್ವಿಚಾರಣೆಯಿಲ್ಲದ**, ಇಲ್ಲಿ ನಮಗೆ ಲೇಬಲ್ ಮಾಡಲಾದ ತರಬೇತಿ ಡೇಟಾ ಇಲ್ಲ. ಮೇಲ್ವಿಚಾರಣೆಯಿಲ್ಲದ ಅಧ್ಯಯನದ ಮುಖ್ಯ ಉದಾಹರಣೆ [ಗುಚ್ಛೀಕರಣ](../5-Clustering/README.md). + +ಈ ವಿಭಾಗದಲ್ಲಿ, ನಾವು ಲೇಬಲ್ ಮಾಡಲಾದ ತರಬೇತಿ ಡೇಟಾ ಅಗತ್ಯವಿಲ್ಲದ ಹೊಸ ತರದ ಅಧ್ಯಯನ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಚಯಿಸುವೆವು. ಇಂತಹ ಸಮಸ್ಯೆಗಳ ಹಲವು ವಿಧಗಳಿವೆ: + +- **[ಅರ್ಧ-ಮೇಲ್ವಿಚಾರಿತ ಅಧ್ಯಯನ](https://wikipedia.org/wiki/Semi-supervised_learning)**, ಇಲ್ಲಿ ನಮಗೆ ಪೂರ್ವ-ತರಬೇತಿಗಾಗಿ ಬಳಸಬಹುದಾದ ಅನೇಕ ಲೇಬಲ್ ಮಾಡದ ಡೇಟಾ ಇರುತ್ತದೆ. +- **[ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ](https://wikipedia.org/wiki/Reinforcement_learning)**, ಇದರಲ್ಲಿ ಏಜೆಂಟ್ ಕೆಲವು ಅನುಕರಿಸಿದ ಪರಿಸರದಲ್ಲಿ ಪ್ರಯೋಗಗಳನ್ನು ನಡೆಸಿ ಹೇಗೆ ವರ್ತಿಸಬೇಕೆಂದು ಕಲಿಯುತ್ತಾನೆ. + +### ಉದಾಹರಣೆ - ಕಂಪ್ಯೂಟರ್ ಆಟ + +ನೀವು ಕಂಪ್ಯೂಟರ್‌ಗೆ ಚೆಸ್ ಅಥವಾ [ಸೂಪರ್ ಮಾರಿಯೋ](https://wikipedia.org/wiki/Super_Mario) ಆಟವನ್ನು ಆಡಿಸಲು ಕಲಿಸಲು ಬಯಸಿದರೆ. ಕಂಪ್ಯೂಟರ್ ಆಟ ಆಡಲು, ನಾವು ಪ್ರತಿ ಆಟದ ಸ್ಥಿತಿಯಲ್ಲಿ ಯಾವ ಚಲನೆ ಮಾಡಬೇಕೆಂದು ಊಹಿಸಬೇಕಾಗುತ್ತದೆ. ಇದು ವರ್ಗೀಕರಣ ಸಮಸ್ಯೆಯಂತೆ ತೋರುತ್ತದೆ, ಆದರೆ ಅಲ್ಲ - ಏಕೆಂದರೆ ನಮಗೆ ಸ್ಥಿತಿಗಳು ಮತ್ತು ಸಂಬಂಧಿತ ಕ್ರಿಯೆಗಳ ಡೇಟಾಸೆಟ್ ಇಲ್ಲ. ನಾವು ಕೆಲವು ಡೇಟಾ ಹೊಂದಿದ್ದರೂ, ಉದಾಹರಣೆಗೆ ಇತ್ತೀಚಿನ ಚೆಸ್ ಪಂದ್ಯಗಳು ಅಥವಾ ಸೂಪರ್ ಮಾರಿಯೋ ಆಟಗಾರರ ರೆಕಾರ್ಡಿಂಗ್, ಆ ಡೇಟಾ ಸಾಕಷ್ಟು ದೊಡ್ಡ ಸಂಖ್ಯೆಯ ಸಾಧ್ಯ ಸ್ಥಿತಿಗಳನ್ನು ಒಳಗೊಂಡಿರಲಾರದು. + +ಇದಕ್ಕೆ ಬದಲಾಗಿ, **ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ** (RL) ಆಲೋಚನೆ ಆಧಾರಿತವಾಗಿದೆ *ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಅನೇಕ ಬಾರಿ ಆಟ ಆಡಿಸುವುದು ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಗಮನಿಸುವುದು*. ಆದ್ದರಿಂದ, ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವನ್ನು ಅನ್ವಯಿಸಲು, ನಮಗೆ ಎರಡು ವಸ್ತುಗಳು ಬೇಕಾಗಿವೆ: + +- **ಒಂದು ಪರಿಸರ** ಮತ್ತು **ಒಂದು ಅನುಕರಣೆ**, ಇದು ನಮಗೆ ಆಟವನ್ನು ಅನೇಕ ಬಾರಿ ಆಡಲು ಅನುಮತಿಸುತ್ತದೆ. ಈ ಅನುಕರಣೆ ಎಲ್ಲಾ ಆಟದ ನಿಯಮಗಳು ಮತ್ತು ಸಾಧ್ಯ ಸ್ಥಿತಿಗಳು ಮತ್ತು ಕ್ರಿಯೆಗಳನ್ನೂ ನಿರ್ಧರಿಸುತ್ತದೆ. + +- **ಒಂದು ಬಹುಮಾನ ಕಾರ್ಯ**, ಇದು ಪ್ರತಿ ಚಲನೆ ಅಥವಾ ಆಟದ ಸಮಯದಲ್ಲಿ ನಾವು ಎಷ್ಟು ಚೆನ್ನಾಗಿ ಮಾಡಿದ್ದೇವೆ ಎಂದು ಹೇಳುತ್ತದೆ. + +ಇತರ ಯಂತ್ರ ಅಧ್ಯಯನ ವಿಧಗಳಿಗಿಂತ RL ಮುಖ್ಯ ವ್ಯತ್ಯಾಸವೆಂದರೆ, RL ನಲ್ಲಿ ನಾವು ಆಟ ಮುಗಿಯುವವರೆಗೆ ನಾವು ಗೆಲುವು ಅಥವಾ ಸೋಲು ತಿಳಿಯುವುದಿಲ್ಲ. ಆದ್ದರಿಂದ, ಒಂದು ನಿರ್ದಿಷ್ಟ ಚಲನೆ ಒಳ್ಳೆಯದೋ ಇಲ್ಲವೋ ಹೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ - ನಾವು ಆಟದ ಕೊನೆಯಲ್ಲಿ ಮಾತ್ರ ಬಹುಮಾನ ಪಡೆಯುತ್ತೇವೆ. ಮತ್ತು ನಮ್ಮ ಗುರಿ ಅಸ್ಪಷ್ಟ ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಆಲ್ಗಾರಿದಮ್ಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವುದು. ನಾವು **Q-ಅಧ್ಯಯನ** ಎಂಬ ಒಂದು RL ಆಲ್ಗಾರಿದಮ್ನ ಬಗ್ಗೆ ಕಲಿಯುತ್ತೇವೆ. + +## ಪಾಠಗಳು + +1. [ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ ಮತ್ತು Q-ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ](1-QLearning/README.md) +2. [ಜಿಮ್ ಅನುಕರಣೆ ಪರಿಸರವನ್ನು ಬಳಸುವುದು](2-Gym/README.md) + +## ಕ್ರೆಡಿಟ್ಸ್ + +"ಬಲವರ್ಧಿತ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ" ಅನ್ನು ♥️ ಸಹಿತ [ಡ್ಮಿತ್ರಿ ಸೋಶ್ನಿಕೋವ್](http://soshnikov.com) ರಚಿಸಿದ್ದಾರೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/9-Real-World/1-Applications/README.md b/translations/kn/9-Real-World/1-Applications/README.md new file mode 100644 index 000000000..fca417ea1 --- /dev/null +++ b/translations/kn/9-Real-World/1-Applications/README.md @@ -0,0 +1,161 @@ + +# ಪೋಸ್ಟ್‌ಸ್ಕ್ರಿಪ್ಟ್: ನೈಜ ಜಗತ್ತಿನಲ್ಲಿ ಯಂತ್ರ ಅಧ್ಯಯನ + +![ನೈಜ ಜಗತ್ತಿನಲ್ಲಿ ಯಂತ್ರ ಅಧ್ಯಯನದ ಸಾರಾಂಶವನ್ನು ಸ್ಕೆಚ್‌ನೋಟ್‌ನಲ್ಲಿ](../../../../translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.kn.png) +> ಸ್ಕೆಚ್‌ನೋಟ್: [ಟೊಮೊಮಿ ಇಮುರು](https://www.twitter.com/girlie_mac) + +ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ, ನೀವು ತರಬೇತಿಗಾಗಿ ಡೇಟಾವನ್ನು ಸಿದ್ಧಪಡಿಸುವ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ರಚಿಸುವ ಅನೇಕ ವಿಧಾನಗಳನ್ನು ಕಲಿತಿದ್ದೀರಿ. ನೀವು ಶ್ರೇಣೀಕರಣ, ಗುಂಪುಬದ್ಧತೆ, ವರ್ಗೀಕರಣ, ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ಕಾಲ ಸರಣಿ ಮಾದರಿಗಳ ಸರಣಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ. ಅಭಿನಂದನೆಗಳು! ಈಗ, ನೀವು ಇದಕ್ಕೆ ಏನು ಉಪಯೋಗವಿದೆ ಎಂದು ಆಶ್ಚರ್ಯಪಡಬಹುದು... ಈ ಮಾದರಿಗಳ ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳು ಯಾವುವು? + +ಕಂಪನಿಗಳಲ್ಲಿ ಹೆಚ್ಚಿನ ಆಸಕ್ತಿ ಆಕರ್ಷಿಸಿರುವುದು ಸಾಮಾನ್ಯವಾಗಿ ಡೀಪ್ ಲರ್ನಿಂಗ್ ಬಳಸುವ AI ಆಗಿದ್ದರೂ, ಶ್ರೇಣೀಕರಣ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳಿಗೆ ಇನ್ನೂ ಮೌಲ್ಯಯುತ ಅನ್ವಯಿಕೆಗಳಿವೆ. ನೀವು ಇವುಗಳಲ್ಲಿ ಕೆಲವು ಅನ್ವಯಿಕೆಗಳನ್ನು ಇಂದೇ ಬಳಸಬಹುದು! ಈ ಪಾಠದಲ್ಲಿ, ಎಂಟು ವಿಭಿನ್ನ ಕೈಗಾರಿಕೆಗಳು ಮತ್ತು ವಿಷಯ ಕ್ಷೇತ್ರಗಳು ಈ ಮಾದರಿಗಳನ್ನು ತಮ್ಮ ಅನ್ವಯಿಕೆಗಳನ್ನು ಹೆಚ್ಚು ಕಾರ್ಯಕ್ಷಮ, ನಂಬಿಕಯೋಗ್ಯ, ಬುದ್ಧಿವಂತ ಮತ್ತು ಬಳಕೆದಾರರಿಗೆ ಮೌಲ್ಯಯುತವಾಗಿಸಲು ಹೇಗೆ ಬಳಸುತ್ತವೆ ಎಂಬುದನ್ನು ನೀವು ಅನ್ವೇಷಿಸುವಿರಿ. + +## [ಪೂರ್ವ-ಪಾಠ ಪರೀಕ್ಷೆ](https://ff-quizzes.netlify.app/en/ml/) + +## 💰 ಹಣಕಾಸು + +ಹಣಕಾಸು ಕ್ಷೇತ್ರವು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಅನೇಕ ಅವಕಾಶಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈ ಕ್ಷೇತ್ರದ ಅನೇಕ ಸಮಸ್ಯೆಗಳು ಯಂತ್ರ ಅಧ್ಯಯನ ಬಳಸಿ ಮಾದರೀಕರಿಸಿ ಪರಿಹರಿಸಬಹುದಾಗಿದೆ. + +### ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮೋಸ ಪತ್ತೆ + +ನಾವು ಈ ಕೋರ್ಸ್‌ನಲ್ಲಿ ಮೊದಲು [ಕೆ-ಮೀನ್ಸ್ ಗುಂಪುಬದ್ಧತೆ](../../5-Clustering/2-K-Means/README.md) ಬಗ್ಗೆ ಕಲಿತಿದ್ದೇವೆ, ಆದರೆ ಇದನ್ನು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮೋಸ ಸಂಬಂಧಿತ ಸಮಸ್ಯೆಗಳನ್ನು ಹೇಗೆ ಪರಿಹರಿಸಲು ಬಳಸಬಹುದು? + +ಕೆ-ಮೀನ್ಸ್ ಗುಂಪುಬದ್ಧತೆ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮೋಸ ಪತ್ತೆ ತಂತ್ರದಲ್ಲಿ **ಔಟ್‌ಲೈಯರ್ ಪತ್ತೆ** ಎಂದು ಕರೆಯಲ್ಪಡುವ ತಂತ್ರದಲ್ಲಿ ಸಹಾಯಕವಾಗುತ್ತದೆ. ಔಟ್‌ಲೈಯರ್‌ಗಳು ಅಥವಾ ಡೇಟಾ ಸೆಟ್‌ನ ವೀಕ್ಷಣೆಗಳಲ್ಲಿ ವ್ಯತ್ಯಾಸಗಳು, ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸಲಾಗುತ್ತಿದೆಯೇ ಅಥವಾ ಏನಾದರೂ ಅಸಾಮಾನ್ಯವಾಗುತ್ತಿದೆಯೇ ಎಂದು ತಿಳಿಸುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡುತ್ತವೆ. ಕೆಳಗಿನ ಕಾಗದದಲ್ಲಿ ತೋರಿಸಿದಂತೆ, ನೀವು ಕೆ-ಮೀನ್ಸ್ ಗುಂಪುಬದ್ಧತೆ ಆಲ್ಗಾರಿದಮ್ ಬಳಸಿ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸಿ, ಪ್ರತಿ ವ್ಯವಹಾರವನ್ನು ಅದು ಎಷ್ಟು ಔಟ್‌ಲೈಯರ್ ಆಗಿದೆ ಎಂಬುದರ ಆಧಾರದ ಮೇಲೆ ಗುಂಪಿಗೆ ನಿಯೋಜಿಸಬಹುದು. ನಂತರ, ಮೋಸ ಮತ್ತು ಕಾನೂನುಬದ್ಧ ವ್ಯವಹಾರಗಳಿಗಾಗಿ ಅತಿ ಅಪಾಯಕಾರಿಯಾದ ಗುಂಪುಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು. +[ಉಲ್ಲೇಖ](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf) + +### ಸಂಪತ್ತು ನಿರ್ವಹಣೆ + +ಸಂಪತ್ತು ನಿರ್ವಹಣೆಯಲ್ಲಿ, ವ್ಯಕ್ತಿ ಅಥವಾ ಸಂಸ್ಥೆ ತಮ್ಮ ಗ್ರಾಹಕರ ಪರವಾಗಿ ಹೂಡಿಕೆಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತಾರೆ. ಅವರ ಕೆಲಸವು ದೀರ್ಘಕಾಲಿಕವಾಗಿ ಸಂಪತ್ತನ್ನು ಉಳಿಸಿ ಬೆಳೆಯಿಸುವುದಾಗಿದೆ, ಆದ್ದರಿಂದ ಉತ್ತಮ ಪ್ರದರ್ಶನ ನೀಡುವ ಹೂಡಿಕೆಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ಅತ್ಯಾವಶ್ಯಕ. + +ನಿರ್ದಿಷ್ಟ ಹೂಡಿಕೆಯು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅಂದಾಜಿಸಲು ಒಂದು ವಿಧಾನವು ಸಾಂಖ್ಯಿಕ ಶ್ರೇಣೀಕರಣ. [ರೇಖೀಯ ಶ್ರೇಣೀಕರಣ](../../2-Regression/1-Tools/README.md) ಒಂದು ಉಪಯುಕ್ತ ಸಾಧನವಾಗಿದೆ, ಇದು ನಿಧಿಯು ಕೆಲವು ಮಾನದಂಡದ ಹೋಲಿಕೆಯಲ್ಲಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ನಾವು ಶ್ರೇಣೀಕರಣದ ಫಲಿತಾಂಶಗಳು ಸಾಂಖ್ಯಿಕವಾಗಿ ಮಹತ್ವಪೂರ್ಣವೋ ಅಥವಾ ಗ್ರಾಹಕರ ಹೂಡಿಕೆಗಳಿಗೆ ಎಷ್ಟು ಪರಿಣಾಮ ಬೀರುತ್ತವೋ ಎಂದು ನಿರ್ಧರಿಸಬಹುದು. ನೀವು ಬಹುಶ್ರೇಣೀಕರಣ ಬಳಸಿ ನಿಮ್ಮ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಇನ್ನಷ್ಟು ವಿಸ್ತರಿಸಬಹುದು, ಅಲ್ಲಿ ಹೆಚ್ಚುವರಿ ಅಪಾಯ ಅಂಶಗಳನ್ನು ಪರಿಗಣಿಸಬಹುದು. ನಿರ್ದಿಷ್ಟ ನಿಧಿಗೆ ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬ ಉದಾಹರಣೆಗೆ, ಕೆಳಗಿನ ಕಾಗದವನ್ನು ನೋಡಿ, ಇದು ಶ್ರೇಣೀಕರಣ ಬಳಸಿ ನಿಧಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತದೆ. +[ಉಲ್ಲೇಖ](http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/) + +## 🎓 ಶಿಕ್ಷಣ + +ಶಿಕ್ಷಣ ಕ್ಷೇತ್ರವೂ ಯಂತ್ರ ಅಧ್ಯಯನ ಅನ್ವಯಿಸಲು ಬಹಳ ಆಸಕ್ತಿದಾಯಕ ಕ್ಷೇತ್ರವಾಗಿದೆ. ಪರೀಕ್ಷೆಗಳಲ್ಲಿ ಅಥವಾ ಪ್ರಬಂಧಗಳಲ್ಲಿ ನಕಲಿ ಪತ್ತೆ ಮಾಡುವುದು ಅಥವಾ ತಿದ್ದುಪಡಿ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಅನೈಚ್ಛಿಕ ಅಥವಾ ಉದ್ದೇಶಿತ ಪಕ್ಷಪಾತವನ್ನು ನಿರ್ವಹಿಸುವಂತಹ ಸಮಸ್ಯೆಗಳು ಇವೆ. + +### ವಿದ್ಯಾರ್ಥಿ ವರ್ತನೆ ಭವಿಷ್ಯವಾಣಿ + +[ಕೋರ್ಸೆರಾ](https://coursera.com), ಒಂದು ಆನ್‌ಲೈನ್ ಮುಕ್ತ ಕೋರ್ಸ್ ಪೂರೈಕೆದಾರ, ತಮ್ಮ ತಂತ್ರಜ್ಞಾನ ಬ್ಲಾಗ್‌ನಲ್ಲಿ ಅನೇಕ ಎಂಜಿನಿಯರಿಂಗ್ ನಿರ್ಧಾರಗಳನ್ನು ಚರ್ಚಿಸುತ್ತಾರೆ. ಈ ಪ್ರಕರಣ ಅಧ್ಯಯನದಲ್ಲಿ, ಅವರು ಕಡಿಮೆ NPS (ನೆಟ್ ಪ್ರೊಮೋಟರ್ ಸ್ಕೋರ್) ರೇಟಿಂಗ್ ಮತ್ತು ಕೋರ್ಸ್ ಉಳಿಸುವಿಕೆ ಅಥವಾ ಬಿಟ್ಟುಹೋಗುವಿಕೆಗೆ ಯಾವುದೇ ಸಂಬಂಧವಿದೆಯೇ ಎಂದು ಅನ್ವೇಷಿಸಲು ಶ್ರೇಣೀಕರಣ ರೇಖೆಯನ್ನು ಚಿತ್ರಿಸಿದ್ದಾರೆ. +[ಉಲ್ಲೇಖ](https://medium.com/coursera-engineering/controlled-regression-quantifying-the-impact-of-course-quality-on-learner-retention-31f956bd592a) + +### ಪಕ್ಷಪಾತ ಕಡಿಮೆ ಮಾಡುವುದು + +[ಗ್ರಾಮ್ಮರ್ಲಿ](https://grammarly.com), ಒಂದು ಬರವಣಿಗೆ ಸಹಾಯಕ, ತನ್ನ ಉತ್ಪನ್ನಗಳಲ್ಲಿ ಸುಧಾರಿತ [ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ವ್ಯವಸ್ಥೆಗಳನ್ನು](../../6-NLP/README.md) ಬಳಸುತ್ತದೆ. ಅವರು ತಮ್ಮ ತಂತ್ರಜ್ಞಾನ ಬ್ಲಾಗ್‌ನಲ್ಲಿ ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಲಿಂಗ ಪಕ್ಷಪಾತವನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸಿದರೋ ಎಂಬುದರ ಬಗ್ಗೆ ಆಸಕ್ತಿದಾಯಕ ಪ್ರಕರಣ ಅಧ್ಯಯನವನ್ನು ಪ್ರಕಟಿಸಿದ್ದಾರೆ, ಇದು ನಮ್ಮ [ಪರಿಚಯಾತ್ಮಕ ನ್ಯಾಯತೆಯ ಪಾಠದಲ್ಲಿ](../../1-Introduction/3-fairness/README.md) ನೀವು ಕಲಿತಿದ್ದೀರಿ. +[ಉಲ್ಲೇಖ](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/) + +## 👜 ಚಿಲ್ಲರೆ ವ್ಯಾಪಾರ + +ಚಿಲ್ಲರೆ ವ್ಯಾಪಾರ ಕ್ಷೇತ್ರವು ಯಂತ್ರ ಅಧ್ಯಯನದಿಂದ ಬಹುಮಾನ ಪಡೆಯಬಹುದು, ಉತ್ತಮ ಗ್ರಾಹಕ ಪ್ರಯಾಣವನ್ನು ರಚಿಸುವುದರಿಂದ ಹಿಡಿದು ಸರಕಿನ ಸಂಗ್ರಹಣೆಯನ್ನು ಸೂಕ್ತ ರೀತಿಯಲ್ಲಿ ನಿರ್ವಹಿಸುವವರೆಗೆ. + +### ಗ್ರಾಹಕ ಪ್ರಯಾಣ ವೈಯಕ್ತೀಕರಣ + +ವೇಫೇರ್‌ನಲ್ಲಿ, ಮನೆ ಸಾಮಗ್ರಿಗಳನ್ನು ಮಾರುವ ಕಂಪನಿಯಲ್ಲಿ, ಗ್ರಾಹಕರಿಗೆ ಅವರ ರುಚಿ ಮತ್ತು ಅಗತ್ಯಗಳಿಗೆ ತಕ್ಕ ಸರಿಯಾದ ಉತ್ಪನ್ನಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡುವುದು ಅತ್ಯಂತ ಮುಖ್ಯ. ಈ ಲೇಖನದಲ್ಲಿ, ಕಂಪನಿಯ ಎಂಜಿನಿಯರ್‌ಗಳು ಯಂತ್ರ ಅಧ್ಯಯನ ಮತ್ತು NLP ಅನ್ನು "ಗ್ರಾಹಕರಿಗೆ ಸರಿಯಾದ ಫಲಿತಾಂಶಗಳನ್ನು ತಲುಪಿಸಲು" ಹೇಗೆ ಬಳಸುತ್ತಾರೆ ಎಂದು ವಿವರಿಸಿದ್ದಾರೆ. ವಿಶೇಷವಾಗಿ, ಅವರ ಕ್ವೇರಿ ಇಂಟೆಂಟ್ ಎಂಜಿನ್ ಎಂಟಿಟಿ ಎಕ್ಸ್ಟ್ರಾಕ್ಷನ್, ವರ್ಗೀಕರಣ ತರಬೇತಿ, ಆಸ್ತಿ ಮತ್ತು ಅಭಿಪ್ರಾಯ ಎಕ್ಸ್ಟ್ರಾಕ್ಷನ್, ಮತ್ತು ಗ್ರಾಹಕ ವಿಮರ್ಶೆಗಳಲ್ಲಿ ಭಾವನೆ ಟ್ಯಾಗಿಂಗ್ ಅನ್ನು ಬಳಸುವಂತೆ ನಿರ್ಮಿಸಲಾಗಿದೆ. ಇದು ಆನ್‌ಲೈನ್ ಚಿಲ್ಲರೆ ವ್ಯಾಪಾರದಲ್ಲಿ NLP ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬ ಕ್ಲಾಸಿಕ್ ಉದಾಹರಣೆ. +[ಉಲ್ಲೇಖ](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search) + +### ಸರಕಿನ ನಿರ್ವಹಣೆ + +[ಸ್ಟಿಚ್ಫಿಕ್ಸ್](https://stitchfix.com) ಎಂಬ, ಗ್ರಾಹಕರಿಗೆ ಬಟ್ಟೆಗಳನ್ನು ಕಳುಹಿಸುವ ಬಾಕ್ಸ್ ಸೇವೆ, ಶಿಫಾರಸುಗಳು ಮತ್ತು ಸರಕಿನ ನಿರ್ವಹಣೆಗೆ ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಬಹಳಷ್ಟು ಅವಲಂಬಿಸಿದೆ. ಅವರ ಶೈಲಿಯ ತಂಡಗಳು ಮಾರಾಟ ತಂಡಗಳೊಂದಿಗೆ ಸಹಕರಿಸುತ್ತವೆ: "ನಮ್ಮ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳಲ್ಲಿ ಒಬ್ಬರು ಜನ್ಯ ಆಲ್ಗಾರಿದಮ್‌ನೊಂದಿಗೆ ಪ್ರಯೋಗ ಮಾಡಿ, ಇಂದಿನ ದಿನದಲ್ಲಿ ಇಲ್ಲದ ಯಶಸ್ವಿ ಬಟ್ಟೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಅದನ್ನು ಬಟ್ಟೆಗಳಿಗೆ ಅನ್ವಯಿಸಿದರು. ನಾವು ಅದನ್ನು ಮಾರಾಟ ತಂಡಕ್ಕೆ ತಂದುಕೊಟ್ಟಿದ್ದೇವೆ ಮತ್ತು ಈಗ ಅವರು ಅದನ್ನು ಉಪಕರಣವಾಗಿ ಬಳಸಬಹುದು." +[ಉಲ್ಲೇಖ](https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/) + +## 🏥 ಆರೋಗ್ಯ ಸೇವೆ + +ಆರೋಗ್ಯ ಸೇವೆ ಕ್ಷೇತ್ರವು ಸಂಶೋಧನಾ ಕಾರ್ಯಗಳನ್ನು ಮತ್ತು ರೋಗಿಗಳನ್ನು ಮರುಪ್ರವೇಶಿಸುವಂತಹ ಲಾಜಿಸ್ಟಿಕ್ ಸಮಸ್ಯೆಗಳನ್ನು ಸುಧಾರಿಸಲು ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಬಳಸಬಹುದು. + +### ಕ್ಲಿನಿಕಲ್ ಟ್ರಯಲ್‌ಗಳ ನಿರ್ವಹಣೆ + +ಕ್ಲಿನಿಕಲ್ ಟ್ರಯಲ್‌ಗಳಲ್ಲಿ ವಿಷಕಾರಕತೆ ಔಷಧಿ ತಯಾರಕರಿಗೆ ಪ್ರಮುಖ ಚಿಂತೆ. ಎಷ್ಟು ವಿಷಕಾರಕತೆ ಸಹಿಸಬಹುದೆ? ಈ ಅಧ್ಯಯನದಲ್ಲಿ, ವಿವಿಧ ಕ್ಲಿನಿಕಲ್ ಟ್ರಯಲ್ ವಿಧಾನಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ, ಕ್ಲಿನಿಕಲ್ ಟ್ರಯಲ್ ಫಲಿತಾಂಶಗಳ ಸಾಧ್ಯತೆಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಹೊಸ ವಿಧಾನವನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ. ವಿಶೇಷವಾಗಿ, ಅವರು ರ್ಯಾಂಡಮ್ ಫಾರೆಸ್ಟ್ ಬಳಸಿ [ವರ್ಗೀಕರಣ](../../4-Classification/README.md) ಮಾಡಬಹುದಾದ ಮಾದರಿಯನ್ನು ರಚಿಸಿದ್ದಾರೆ, ಇದು ಔಷಧಿ ಗುಂಪುಗಳನ್ನು ವಿಭಜಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. +[ಉಲ್ಲೇಖ](https://www.sciencedirect.com/science/article/pii/S2451945616302914) + +### ಆಸ್ಪತ್ರೆ ಮರುಪ್ರವೇಶ ನಿರ್ವಹಣೆ + +ಆಸ್ಪತ್ರೆ ಸೇವೆ ದುಬಾರಿ, ವಿಶೇಷವಾಗಿ ರೋಗಿಗಳನ್ನು ಮರುಪ್ರವೇಶಿಸಬೇಕಾದಾಗ. ಈ ಕಾಗದವು ಯಂತ್ರ ಅಧ್ಯಯನ ಬಳಸಿ ಮರುಪ್ರವೇಶ ಸಾಧ್ಯತೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವ ಕಂಪನಿಯ ಬಗ್ಗೆ ಚರ್ಚಿಸುತ್ತದೆ, [ಗುಂಪುಬದ್ಧತೆ](../../5-Clustering/README.md) ಆಲ್ಗಾರಿದಮ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು. ಈ ಗುಂಪುಗಳು ವಿಶ್ಲೇಷಕರಿಗೆ "ಸಾಮಾನ್ಯ ಕಾರಣವನ್ನು ಹಂಚಿಕೊಳ್ಳಬಹುದಾದ ಮರುಪ್ರವೇಶ ಗುಂಪುಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು" ಸಹಾಯ ಮಾಡುತ್ತವೆ. +[ಉಲ್ಲೇಖ](https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning) + +### ರೋಗ ನಿರ್ವಹಣೆ + +ಇತ್ತೀಚಿನ ಮಹಾಮಾರಿ ಯಂತ್ರ ಅಧ್ಯಯನವು ರೋಗ ಹರಡುವಿಕೆಯನ್ನು ತಡೆಯಲು ಹೇಗೆ ಸಹಾಯ ಮಾಡಬಹುದು ಎಂಬುದರ ಮೇಲೆ ಬೆಳಕು ಚೆಲ್ಲಿದೆ. ಈ ಲೇಖನದಲ್ಲಿ, ನೀವು ARIMA, ಲಾಜಿಸ್ಟಿಕ್ ವಕ್ರಗಳು, ರೇಖೀಯ ಶ್ರೇಣೀಕರಣ ಮತ್ತು SARIMA ಬಳಕೆಯನ್ನು ಗುರುತಿಸಬಹುದು. "ಈ ಕೆಲಸವು ಈ ವೈರಸ್ ಹರಡುವಿಕೆಯನ್ನು ಲೆಕ್ಕಹಾಕಲು ಮತ್ತು ಹೀಗಾಗಿ ಸಾವುಗಳು, ಗುಣಮುಖತೆಗಳು ಮತ್ತು ದೃಢೀಕೃತ ಪ್ರಕರಣಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಪ್ರಯತ್ನವಾಗಿದೆ, ಇದರಿಂದ ನಾವು ಉತ್ತಮವಾಗಿ ಸಿದ್ಧರಾಗಲು ಮತ್ತು ಬದುಕಲು ಸಹಾಯವಾಗುತ್ತದೆ." +[ಉಲ್ಲೇಖ](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/) + +## 🌲 ಪರಿಸರ ಮತ್ತು ಹಸಿರು ತಂತ್ರಜ್ಞಾನ + +ಪ್ರಕೃತಿ ಮತ್ತು ಪರಿಸರವು ಅನೇಕ ಸಂವೇದನಾಶೀಲ ವ್ಯವಸ್ಥೆಗಳನ್ನು ಒಳಗೊಂಡಿವೆ, ಅಲ್ಲಿ ಪ್ರಾಣಿಗಳು ಮತ್ತು ಪ್ರಕೃತಿಯ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆ ಮುಖ್ಯವಾಗುತ್ತದೆ. ಈ ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿಖರವಾಗಿ ಅಳೆಯುವುದು ಮತ್ತು ಏನಾದರೂ ಸಂಭವಿಸಿದರೆ, ಉದಾಹರಣೆಗೆ ಕಾಡು ಬೆಂಕಿ ಅಥವಾ ಪ್ರಾಣಿ ಜನಸಂಖ್ಯೆಯ ಕುಸಿತ, ಸೂಕ್ತವಾಗಿ ಕ್ರಮ ಕೈಗೊಳ್ಳುವುದು ಮುಖ್ಯ. + +### ಕಾಡು ನಿರ್ವಹಣೆ + +ನೀವು ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ [ರೀಇನ್ಫೋರ್ಸ್ಮೆಂಟ್ ಲರ್ನಿಂಗ್](../../8-Reinforcement/README.md) ಬಗ್ಗೆ ಕಲಿತಿದ್ದೀರಿ. ಇದು ಪ್ರಕೃತಿಯಲ್ಲಿ ಮಾದರಿಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಹಳ ಉಪಯುಕ್ತವಾಗಬಹುದು. ವಿಶೇಷವಾಗಿ, ಇದು ಕಾಡು ಬೆಂಕಿ ಮತ್ತು ಆಕ್ರಮಣಕಾರಿ ಪ್ರಭೇದಗಳ ಹರಡುವಿಕೆಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಬಳಸಬಹುದು. ಕೆನಡಾದಲ್ಲಿ, ಸಂಶೋಧಕರ ಗುಂಪು ರೀಇನ್ಫೋರ್ಸ್ಮೆಂಟ್ ಲರ್ನಿಂಗ್ ಬಳಸಿ ಉಪಗ್ರಹ ಚಿತ್ರಗಳಿಂದ ಕಾಡು ಬೆಂಕಿ ಗತಿಶೀಲತೆ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಿದ್ದಾರೆ. "ಸ್ಥಳೀಯವಾಗಿ ಹರಡುವ ಪ್ರಕ್ರಿಯೆ (SSP)" ಎಂಬ ನವೀನ ವಿಧಾನವನ್ನು ಬಳಸಿ, ಅವರು ಕಾಡು ಬೆಂಕಿಯನ್ನು "ಭೂದೃಶ್ಯದಲ್ಲಿ ಯಾವುದೇ ಸೆಲ್‌ನಲ್ಲಿ ಏಜೆಂಟ್" ಎಂದು ಕಲ್ಪಿಸಿದ್ದಾರೆ. "ಬೆಂಕಿ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಉತ್ತರ, ದಕ್ಷಿಣ, ಪೂರ್ವ ಅಥವಾ ಪಶ್ಚಿಮಕ್ಕೆ ಹರಡಬಹುದು ಅಥವಾ ಹರಡದಿರಬಹುದು." + +ಈ ವಿಧಾನವು ಸಾಮಾನ್ಯ RL ವ್ಯವಸ್ಥೆಯನ್ನು ತಿರುಗಿಸುತ್ತದೆ ಏಕೆಂದರೆ ಸಂಬಂಧಿತ ಮಾರ್ಕೋವ್ ನಿರ್ಧಾರ ಪ್ರಕ್ರಿಯೆಯ (MDP) ಗತಿಶೀಲತೆ ತಕ್ಷಣದ ಕಾಡು ಬೆಂಕಿ ಹರಡುವಿಕೆಗೆ ತಿಳಿದಿರುವ ಕಾರ್ಯವಾಗಿದೆ." ಈ ಗುಂಪು ಬಳಸಿದ ಕ್ಲಾಸಿಕ್ ಆಲ್ಗಾರಿದಮ್‌ಗಳ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ಕೆಳಗಿನ ಲಿಂಕ್ ನೋಡಿ. +[ಉಲ್ಲೇಖ](https://www.frontiersin.org/articles/10.3389/fict.2018.00006/full) + +### ಪ್ರಾಣಿಗಳ ಚಲನೆ ಸಂವೇದನೆ + +ಡೀಪ್ ಲರ್ನಿಂಗ್ ಪ್ರಾಣಿಗಳ ಚಲನೆಗಳನ್ನು ದೃಶ್ಯವಾಗಿ ಟ್ರ್ಯಾಕ್ ಮಾಡುವಲ್ಲಿ ಕ್ರಾಂತಿ ತಂದಿದ್ದರೂ (ನೀವು ನಿಮ್ಮದೇ [ಪೋಲರ್ ಬೆರ್ ಟ್ರ್ಯಾಕರ್](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott) ಅನ್ನು ಇಲ್ಲಿ ನಿರ್ಮಿಸಬಹುದು), ಕ್ಲಾಸಿಕ್ ಯಂತ್ರ ಅಧ್ಯಯನ ಈ ಕಾರ್ಯದಲ್ಲಿ ಇನ್ನೂ ಸ್ಥಾನ ಹೊಂದಿದೆ. + +ಕೃಷಿ ಪ್ರಾಣಿಗಳ ಚಲನೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಸೆನ್ಸಾರ್‌ಗಳು ಮತ್ತು IoT ಈ ರೀತಿಯ ದೃಶ್ಯ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಬಳಸುತ್ತವೆ, ಆದರೆ ಮೂಲಭೂತ ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರಗಳು ಡೇಟಾ ಪೂರ್ವಸಿದ್ಧತೆಗೆ ಉಪಯುಕ್ತವಾಗಿವೆ. ಉದಾಹರಣೆಗೆ, ಈ ಕಾಗದದಲ್ಲಿ ಕುರಿಗಳ ಸ್ಥಿತಿಗಳನ್ನು ವಿವಿಧ ವರ್ಗೀಕರಣ ಆಲ್ಗಾರಿದಮ್‌ಗಳ ಬಳಕೆಯಿಂದ ಮೇಲ್ವಿಚಾರಣೆ ಮತ್ತು ವಿಶ್ಲೇಷಣೆ ಮಾಡಲಾಗಿದೆ. ನೀವು ಪುಟ 335 ರಲ್ಲಿ ROC ವಕ್ರವನ್ನು ಗುರುತಿಸಬಹುದು. +[ಉಲ್ಲೇಖ](https://druckhaus-hofmann.de/gallery/31-wj-feb-2020.pdf) + +### ⚡️ ಶಕ್ತಿ ನಿರ್ವಹಣೆ + +ನಮ್ಮ [ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ](../../7-TimeSeries/README.md) ಪಾಠಗಳಲ್ಲಿ, ನಾವು ಸರಬರಾಜು ಮತ್ತು ಬೇಡಿಕೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡು ಪಟ್ಟಣಕ್ಕೆ ಆದಾಯ ತರುವ ಸ್ಮಾರ್ಟ್ ಪಾರ್ಕಿಂಗ್ ಮೀಟರ್‌ಗಳ ಕಲ್ಪನೆಯನ್ನು ಉಲ್ಲೇಖಿಸಿದ್ದೇವೆ. ಈ ಲೇಖನದಲ್ಲಿ, ಐರ್ಲೆಂಡ್‌ನಲ್ಲಿ ಸ್ಮಾರ್ಟ್ ಮೀಟರಿಂಗ್ ಆಧಾರಿತ ಭವಿಷ್ಯದ ಶಕ್ತಿ ಬಳಕೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಗುಂಪುಬದ್ಧತೆ, ಶ್ರೇಣೀಕರಣ ಮತ್ತು ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ ಹೇಗೆ ಸಂಯೋಜಿತವಾಗಿವೆ ಎಂಬುದನ್ನು ವಿವರಿಸಲಾಗಿದೆ. +[ಉಲ್ಲೇಖ](https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf) + +## 💼 ವಿಮೆ + +ವಿಮೆ ಕ್ಷೇತ್ರವು ಸಹ ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಬಳಸಿಕೊಂಡು ಆರ್ಥಿಕ ಮತ್ತು ಅಕ್ಟ್ಯೂರಿಯಲ್ ಮಾದರಿಗಳನ್ನು ರಚಿಸಿ ಸುಧಾರಿಸುತ್ತದೆ. + +### ಅಸ್ಥಿರತೆ ನಿರ್ವಹಣೆ + +ಮೆಟ್‌ಲೈಫ್, ಒಂದು ಜೀವ ವಿಮೆ ಪೂರೈಕೆದಾರ, ತಮ್ಮ ಆರ್ಥಿಕ ಮಾದರಿಗಳಲ್ಲಿನ ಅಸ್ಥಿರತೆಯನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಕಡಿಮೆ ಮಾಡುವ ವಿಧಾನವನ್ನು ಮುಕ್ತವಾಗಿ ಹಂಚಿಕೊಳ್ಳುತ್ತದೆ. ಈ ಲೇಖನದಲ್ಲಿ ನೀವು ದ್ವಿಮೂಲಕ ಮತ್ತು ಕ್ರಮಬದ್ಧ ವರ್ಗೀಕರಣದ ದೃಶ್ಯೀಕರಣಗಳನ್ನು ಗಮನಿಸಬಹುದು. ನೀವು ಭವಿಷ್ಯವಾಣಿ ದೃಶ್ಯೀಕರಣಗಳನ್ನು ಕೂಡ ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ. +[ಉಲ್ಲೇಖ](https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf) + +## 🎨 ಕಲೆ, ಸಂಸ್ಕೃತಿ ಮತ್ತು ಸಾಹಿತ್ಯ + +ಕಲೆಯಲ್ಲಿಯೂ, ಉದಾಹರಣೆಗೆ ಪತ್ರಿಕೋದ್ಯಮದಲ್ಲಿ, ಅನೇಕ ಆಸಕ್ತಿದಾಯಕ ಸಮಸ್ಯೆಗಳಿವೆ. ನಕಲಿ ಸುದ್ದಿಯನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು ದೊಡ್ಡ ಸಮಸ್ಯೆ, ಏಕೆಂದರೆ ಇದು ಜನರ ಅಭಿಪ್ರಾಯವನ್ನು ಪ್ರಭಾವಿತಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರಜಾಪ್ರಭುತ್ವಗಳನ್ನು ಕುಸಿತಗೊಳಿಸಬಹುದು. ಸಂಗ್ರಹಾಲಯಗಳು ಕೂಡ ವಸ್ತುಗಳ ನಡುವಿನ ಸಂಪರ್ಕಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದರಿಂದ ಸಂಪನ್ಮೂಲ ಯೋಜನೆಗೆ ಯಂತ್ರ ಅಧ್ಯಯನದಿಂದ ಲಾಭ ಪಡೆಯಬಹುದು. + +### ನಕಲಿ ಸುದ್ದಿ ಪತ್ತೆ + +ಇಂದಿನ ಮಾಧ್ಯಮದಲ್ಲಿ ನಕಲಿ ಸುದ್ದಿಯನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು ಬೆಕ್ಕು ಮತ್ತು ಇಲಿ ಆಟವಾಗಿದೆ. ಈ ಲೇಖನದಲ್ಲಿ, ಸಂಶೋಧಕರು ನಾವು ಕಲಿತ ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರಗಳನ್ನು ಸಂಯೋಜಿಸಿ ಪರೀಕ್ಷಿಸಿ ಉತ್ತಮ ಮಾದರಿಯನ್ನು ನಿಯೋಜಿಸಬಹುದು ಎಂದು ಸೂಚಿಸಿದ್ದಾರೆ: "ಈ ವ್ಯವಸ್ಥೆ ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ಆಧಾರಿತವಾಗಿದ್ದು, ಡೇಟಾದಿಂದ ಲಕ್ಷಣಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ ಮತ್ತು ನಂತರ ಈ ಲಕ್ಷಣಗಳನ್ನು ನೈವ್ ಬೇಯ್ಸ್, ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ಮಷೀನ್ (SVM), ರ್ಯಾಂಡಮ್ ಫಾರೆಸ್ಟ್ (RF), ಸ್ಟೋಚಾಸ್ಟಿಕ್ ಗ್ರೇಡಿಯಂಟ್ ಡಿಸೆಂಟ್ (SGD), ಮತ್ತು ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಷನ್ (LR) ಮುಂತಾದ ಯಂತ್ರ ಅಧ್ಯಯನ ವರ್ಗೀಕರಣಗಳ ತರಬೇತಿಗೆ ಬಳಸಲಾಗುತ್ತದೆ." +[ಉಲ್ಲೇಖ](https://www.irjet.net/archives/V7/i6/IRJET-V7I6688.pdf) + +ಈ ಲೇಖನವು ವಿಭಿನ್ನ ಯಂತ್ರ ಅಧ್ಯಯನ ಕ್ಷೇತ್ರಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಮೂಲಕ ನಕಲಿ ಸುದ್ದಿಯ ಹರಡುವಿಕೆಯನ್ನು ತಡೆಯಲು ಮತ್ತು ನಿಜವಾದ ಹಾನಿಯನ್ನು ತಡೆಯಲು ಸಹಾಯ ಮಾಡುವ ಆಸಕ್ತಿದಾಯಕ ಫಲಿತಾಂಶಗಳನ್ನು ತರುತ್ತದೆ; ಈ ಸಂದರ್ಭದಲ್ಲಿ, COVID ಚಿಕಿತ್ಸೆಗಳ ಬಗ್ಗೆ ಹರಡುವ ಗಾಸಿಪ್‌ಗಳು ಹಿಂಸಾಚಾರಕ್ಕೆ ಪ್ರೇರಣೆ ನೀಡಿದವು. + +### ಸಂಗ್ರಹಾಲಯ ಯಂತ್ರ ಅಧ್ಯಯನ + +ಸಂಗ್ರಹಾಲಯಗಳು AI ಕ್ರಾಂತಿಯ ಮುಂಭಾಗದಲ್ಲಿವೆ, ಅಲ್ಲಿ ಸಂಗ್ರಹಗಳನ್ನು ವರ್ಗೀಕರಿಸುವುದು ಮತ್ತು ಡಿಜಿಟೈಸ್ ಮಾಡುವುದರಿಂದ ವಸ್ತುಗಳ ನಡುವಿನ ಸಂಪರ್ಕಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ತಂತ್ರಜ್ಞಾನ ಅಭಿವೃದ್ಧಿಯೊಂದಿಗೆ ಸುಲಭವಾಗುತ್ತಿದೆ. [ಇನ್ ಕೋಡಿಸೆ ರೇಷಿಯೋ](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.) ಮುಂತಾದ ಯೋಜನೆಗಳು ವಾಟಿಕನ್ ಆರ್ಕೈವ್ಸ್ ಮುಂತಾದ ಅಪ್ರಾಪ್ಯ ಸಂಗ್ರಹಗಳ ರಹಸ್ಯಗಳನ್ನು ಅನಾವರಣಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತಿವೆ. ಆದರೆ, ಸಂಗ್ರಹಾಲಯಗಳ ವ್ಯಾಪಾರ ಭಾಗವೂ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳಿಂದ ಲಾಭ ಪಡೆಯುತ್ತಿದೆ. + +ಉದಾಹರಣೆಗೆ, ಚಿಕಾಗೋ ಆರ್ಟ್ ಇನ್ಸ್ಟಿಟ್ಯೂಟ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಿ ಪ್ರೇಕ್ಷಕರ ಆಸಕ್ತಿಯನ್ನು ಮತ್ತು ಅವರು ಪ್ರದರ್ಶನಗಳಿಗೆ ಯಾವಾಗ ಹಾಜರಾಗುತ್ತಾರೆ ಎಂಬುದನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ. ಗುರಿಯು ಪ್ರತಿ ಬಾರಿ ಬಳಕೆದಾರರು ಸಂಗ್ರಹಾಲಯಕ್ಕೆ ಭೇಟಿ ನೀಡುವಾಗ ವೈಯಕ್ತಿಕ ಮತ್ತು ಸುಧಾರಿತ ಭೇಟಿ ಅನುಭವಗಳನ್ನು ಸೃಷ್ಟಿಸುವುದು. "2017 ಹಣಕಾಸು ವರ್ಷದಲ್ಲಿ, ಮಾದರಿ ಹಾಜರಾತಿ ಮತ್ತು ಪ್ರವೇಶಗಳನ್ನು 1 ಶೇಕಡಾ ನಿಖರತೆಯೊಳಗೆ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿತು ಎಂದು ಆಂಡ್ರ್ಯೂ ಸಿಮ್ನಿಕ್, ಚಿಕಾಗೋ ಆರ್ಟ್ ಇನ್ಸ್ಟಿಟ್ಯೂಟ್‌ನ ಹಿರಿಯ ಉಪಾಧ್ಯಕ್ಷರು ಹೇಳಿದ್ದಾರೆ." +[ಉಲ್ಲೇಖ](https://www.chicagobusiness.com/article/20180518/ISSUE01/180519840/art-institute-of-chicago-uses-data-to-make-exhibit-choices) + +## 🏷 ಮಾರುಕಟ್ಟೆ + +### ಗ್ರಾಹಕ ವಿಭಾಗೀಕರಣ + +ಅತ್ಯಂತ ಪರಿಣಾಮಕಾರಿ ಮಾರುಕಟ್ಟೆ ತಂತ್ರಗಳು ವಿವಿಧ ಗುಂಪುಗಳ ಆಧಾರದ ಮೇಲೆ ಗ್ರಾಹಕರನ್ನು ವಿಭಿನ್ನ ರೀತಿಯಲ್ಲಿ ಗುರಿಯಾಗಿಸುತ್ತವೆ. ಈ ಲೇಖನದಲ್ಲಿ, ವಿಭಜಿತ ಮಾರುಕಟ್ಟೆಗೆ ಬೆಂಬಲ ನೀಡಲು ಗುಂಪುಬದ್ಧತೆ ಆಲ್ಗಾರಿದಮ್‌ಗಳ ಬಳಕೆಯನ್ನು ಚರ್ಚಿಸಲಾಗಿದೆ. ವಿಭಜಿತ ಮಾರುಕಟ್ಟೆ ಕಂಪನಿಗಳಿಗೆ ಬ್ರ್ಯಾಂಡ್ ಗುರುತನ್ನು ಸುಧಾರಿಸಲು, ಹೆಚ್ಚು ಗ್ರಾಹಕರಿಗೆ ತಲುಪಲು ಮತ್ತು ಹೆಚ್ಚು ಹಣ ಗಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. +[ಉಲ್ಲೇಖ](https://ai.inqline.com/machine-learning-for-marketing-customer-segmentation/) + +## 🚀 ಸವಾಲು + +ನೀವು ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಕಲಿತ ಕೆಲವು ತಂತ್ರಗಳನ್ನು ಉಪಯೋಗಿಸುವ ಮತ್ತೊಂದು ಕ್ಷೇತ್ರವನ್ನು ಗುರುತಿಸಿ, ಅದು ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಹೇಗೆ ಬಳಸುತ್ತದೆ ಎಂಬುದನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ. +## [ಪೋಸ್ಟ್-ಲೆಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ವೇಫೇರ್ ಡೇಟಾ ಸೈನ್ಸ್ ತಂಡವು ತಮ್ಮ ಕಂಪನಿಯಲ್ಲಿ ಎಂಎಲ್ ಅನ್ನು ಹೇಗೆ ಬಳಸುತ್ತಾರೆ ಎಂಬುದರ ಬಗ್ಗೆ ಹಲವಾರು ಆಸಕ್ತಿದಾಯಕ ವೀಡಿಯೊಗಳನ್ನು ಹೊಂದಿದೆ. ಅದನ್ನು [ನೋಡುವುದು](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos) ಮೌಲ್ಯವಿದೆ! + +## ನಿಯೋಜನೆ + +[ಎಂಎಲ್ ಸ್ಕ್ಯಾವೆಂಜರ್ ಹಂಟ್](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/9-Real-World/1-Applications/assignment.md b/translations/kn/9-Real-World/1-Applications/assignment.md new file mode 100644 index 000000000..da9d164e8 --- /dev/null +++ b/translations/kn/9-Real-World/1-Applications/assignment.md @@ -0,0 +1,29 @@ + +# ಎಂಎಲ್ ಸ್ಕ್ಯಾವೆಂಜರ್ ಹಂಟ್ + +## ಸೂಚನೆಗಳು + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಕ್ಲಾಸಿಕಲ್ ಎಂಎಲ್ ಬಳಸಿ ಪರಿಹರಿಸಲಾದ ಅನೇಕ ನೈಜ ಜೀವನದ ಬಳಕೆ ಪ್ರಕರಣಗಳ ಬಗ್ಗೆ ಕಲಿತಿದ್ದೀರಿ. ಆಳವಾದ ಕಲಿಕೆ, ಎಐಯಲ್ಲಿ ಹೊಸ ತಂತ್ರಗಳು ಮತ್ತು ಸಾಧನಗಳ ಬಳಕೆ, ಮತ್ತು ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಉಪಯೋಗಿಸುವುದರಿಂದ ಈ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಸಹಾಯ ಮಾಡುವ ಸಾಧನಗಳ ಉತ್ಪಾದನೆ ವೇಗವಾಗಿ ನಡೆಯುತ್ತಿದೆ, ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿನ ತಂತ್ರಗಳನ್ನು ಬಳಸುವ ಕ್ಲಾಸಿಕ್ ಎಂಎಲ್ ಇನ್ನೂ ಮಹತ್ವವನ್ನು ಹೊಂದಿದೆ. + +ಈ ನಿಯೋಜನೆಯಲ್ಲಿ, ನೀವು ಹ್ಯಾಕಾಥಾನ್‌ನಲ್ಲಿ ಭಾಗವಹಿಸುತ್ತಿದ್ದೀರಿ ಎಂದು ಕಲ್ಪಿಸಿ. ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಕಲಿತದ್ದನ್ನು ಬಳಸಿ ಕ್ಲಾಸಿಕ್ ಎಂಎಲ್ ಉಪಯೋಗಿಸಿ ಈ ಪಾಠದಲ್ಲಿ ಚರ್ಚಿಸಲಾದ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಒಂದರಲ್ಲಿ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಪರಿಹಾರವನ್ನು ಪ್ರಸ್ತಾಪಿಸಿ. ನಿಮ್ಮ ಆಲೋಚನೆಯನ್ನು ಹೇಗೆ ಅನುಷ್ಠಾನಗೊಳಿಸುವಿರಿ ಎಂಬುದನ್ನು ಚರ್ಚಿಸುವ ಪ್ರಸ್ತುತಿಯನ್ನು ರಚಿಸಿ. ನಿಮ್ಮ ಕಲ್ಪನೆಯನ್ನು ಬೆಂಬಲಿಸಲು ಮಾದರಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಿ ಎಂಎಲ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದರೆ ಹೆಚ್ಚುವರಿ ಅಂಕಗಳು! + +## ರೂಬ್ರಿಕ್ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆ ಅಗತ್ಯವಿದೆ | +| -------- | ------------------------------------------------------------------- | ------------------------------------------------- | ---------------------- | +| | ಪವರ್‌ಪಾಯಿಂಟ್ ಪ್ರಸ್ತುತಿ ನೀಡಲಾಗಿದೆ - ಮಾದರಿ ನಿರ್ಮಾಣಕ್ಕೆ ಹೆಚ್ಚುವರಿ ಅಂಕಗಳು | ನವೀನತೆ ಇಲ್ಲದ, ಮೂಲಭೂತ ಪ್ರಸ್ತುತಿ ನೀಡಲಾಗಿದೆ | ಕೆಲಸ ಅಪೂರ್ಣವಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/9-Real-World/2-Debugging-ML-Models/README.md b/translations/kn/9-Real-World/2-Debugging-ML-Models/README.md new file mode 100644 index 000000000..b84ec800f --- /dev/null +++ b/translations/kn/9-Real-World/2-Debugging-ML-Models/README.md @@ -0,0 +1,185 @@ + +# ಪೋಸ್ಟ್‌ಸ್ಕ್ರಿಪ್ಟ್: ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಘಟಕಗಳನ್ನು ಬಳಸಿ ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಮಾದರಿ ಡಿಬಗಿಂಗ್ + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ಪರಿಚಯ + +ಯಂತ್ರ ಅಧ್ಯಯನವು ನಮ್ಮ ದೈನಂದಿನ ಜೀವನವನ್ನು ಪ್ರಭಾವಿಸುತ್ತದೆ. AI ನಮ್ಮನ್ನು ವ್ಯಕ್ತಿಗಳಾಗಿ ಮತ್ತು ಸಮಾಜವಾಗಿ ಪ್ರಭಾವಿಸುವ ಆರೋಗ್ಯಸೇವೆ, ಹಣಕಾಸು, ಶಿಕ್ಷಣ ಮತ್ತು ಉದ್ಯೋಗದಂತಹ ಕೆಲವು ಅತ್ಯಂತ ಪ್ರಮುಖ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ತನ್ನ ಮಾರ್ಗವನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತಿದೆ. ಉದಾಹರಣೆಗೆ, ವ್ಯವಸ್ಥೆಗಳು ಮತ್ತು ಮಾದರಿಗಳು ದೈನಂದಿನ ನಿರ್ಧಾರ-ಮೇಕಿಂಗ್ ಕಾರ್ಯಗಳಲ್ಲಿ ಭಾಗವಹಿಸುತ್ತವೆ, ಉದಾಹರಣೆಗೆ ಆರೋಗ್ಯ ನಿರ್ಣಯಗಳು ಅಥವಾ ಮೋಸ ಪತ್ತೆ. ಪರಿಣಾಮವಾಗಿ, AI ಯಲ್ಲಿ ಪ್ರಗತಿಗಳು ಮತ್ತು ವೇಗವಾಗಿ ಸ್ವೀಕಾರವು ಬೆಳೆಯುತ್ತಿರುವ ಸಾಮಾಜಿಕ ನಿರೀಕ್ಷೆಗಳು ಮತ್ತು ನಿಯಂತ್ರಣಗಳೊಂದಿಗೆ ಎದುರಿಸುತ್ತಿವೆ. ನಾವು ನಿರಂತರವಾಗಿ AI ವ್ಯವಸ್ಥೆಗಳು ನಿರೀಕ್ಷೆಗಳನ್ನು ತಪ್ಪಿಸುತ್ತಿರುವ ಪ್ರದೇಶಗಳನ್ನು ನೋಡುತ್ತೇವೆ; ಅವು ಹೊಸ ಸವಾಲುಗಳನ್ನು ಹೊರತರುತ್ತವೆ; ಮತ್ತು ಸರ್ಕಾರಗಳು AI ಪರಿಹಾರಗಳನ್ನು ನಿಯಂತ್ರಿಸಲು ಪ್ರಾರಂಭಿಸುತ್ತಿವೆ. ಆದ್ದರಿಂದ, ಈ ಮಾದರಿಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಎಲ್ಲರಿಗೂ ನ್ಯಾಯಸಮ್ಮತ, ನಂಬಿಕಯೋಗ್ಯ, ಒಳಗೊಂಡ, ಪಾರದರ್ಶಕ ಮತ್ತು ಹೊಣೆಗಾರಿಕೆಯ ಫಲಿತಾಂಶಗಳನ್ನು ಒದಗಿಸುವುದು ಮುಖ್ಯ. + +ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ, ನಾವು ಮಾದರಿಯಲ್ಲಿ ಜವಾಬ್ದಾರಿಯುತ AI ಸಮಸ್ಯೆಗಳಿದ್ದರೆ ಅವುಗಳನ್ನು ಅಳೆಯಲು ಬಳಸಬಹುದಾದ ಪ್ರಾಯೋಗಿಕ ಸಾಧನಗಳನ್ನು ನೋಡುತ್ತೇವೆ. ಪರಂಪರাগত ಯಂತ್ರ ಅಧ್ಯಯನ ಡಿಬಗಿಂಗ್ ತಂತ್ರಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಸಂಗ್ರಹಿತ ಶುದ್ಧತೆ ಅಥವಾ ಸರಾಸರಿ ದೋಷ ನಷ್ಟದಂತಹ ಪ್ರಮಾಣಾತ್ಮಕ ಲೆಕ್ಕಾಚಾರಗಳ ಮೇಲೆ ಆಧಾರಿತವಾಗಿರುತ್ತವೆ. ನೀವು ಈ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಬಳಸುತ್ತಿರುವ ಡೇಟಾದಲ್ಲಿ ಜಾತಿ, ಲಿಂಗ, ರಾಜಕೀಯ ದೃಷ್ಟಿಕೋನ, ಧರ್ಮ ಅಥವಾ ಇಂತಹ ಜನಾಂಗಗಳನ್ನು ಅಸಮಾನವಾಗಿ ಪ್ರತಿನಿಧಿಸುವಂತಹ ಕೆಲವು ಜನಾಂಗಗಳು ಇಲ್ಲದಿದ್ದರೆ ಏನಾಗಬಹುದು ಎಂದು ಕಲ್ಪಿಸಿ ನೋಡಿ. ಮಾದರಿಯ ಔಟ್‌ಪುಟ್ ಕೆಲವು ಜನಾಂಗವನ್ನು ಪ್ರಾಧಾನ್ಯ ನೀಡುವಂತೆ ವ್ಯಾಖ್ಯಾನಿಸಿದರೆ? ಇದು ಈ ಸಂವೇದನಾಶೀಲ ಲಕ್ಷಣ ಗುಂಪುಗಳ ಅತಿವ್ಯಕ್ತ ಅಥವಾ ಅಲ್ಪಪ್ರತಿನಿಧಾನವನ್ನು ಪರಿಚಯಿಸಬಹುದು, ಇದರಿಂದ ಮಾದರಿಯಿಂದ ನ್ಯಾಯ, ಒಳಗೊಂಡಿಕೆ ಅಥವಾ ನಂಬಿಕಯೋಗ್ಯತೆ ಸಮಸ್ಯೆಗಳು ಉಂಟಾಗಬಹುದು. ಮತ್ತೊಂದು ಕಾರಣವೆಂದರೆ, ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ಕಪ್ಪು ಪೆಟ್ಟಿಗೆಗಳು ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ, ಇದು ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿ ಏಕೆ ಆಗುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ವಿವರಿಸಲು ಕಷ್ಟವಾಗುತ್ತದೆ. ಈ ಎಲ್ಲವುಗಳು ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು AI ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ಸಮರ್ಪಕ ಸಾಧನಗಳಿಲ್ಲದೆ ಮಾದರಿಯ ನ್ಯಾಯತೆ ಅಥವಾ ನಂಬಿಕಯೋಗ್ಯತೆಯನ್ನು ಡಿಬಗ್ ಮತ್ತು ಅಳೆಯುವಾಗ ಎದುರಿಸುವ ಸವಾಲುಗಳಾಗಿವೆ. + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ನಿಮ್ಮ ಮಾದರಿಗಳನ್ನು ಡಿಬಗ್ ಮಾಡಲು ಕಲಿಯುತ್ತೀರಿ: + +- **ದೋಷ ವಿಶ್ಲೇಷಣೆ**: ನಿಮ್ಮ ಡೇಟಾ ವಿತರಣದಲ್ಲಿ ಮಾದರಿಯು ಎಲ್ಲಿ ಹೆಚ್ಚಿನ ದೋಷ ದರಗಳನ್ನು ಹೊಂದಿದೆ ಎಂದು ಗುರುತಿಸಿ. +- **ಮಾದರಿ ಅವಲೋಕನ**: ವಿವಿಧ ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವೆ ಹೋಲಿಕೆ ವಿಶ್ಲೇಷಣೆ ಮಾಡಿ ನಿಮ್ಮ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆ ಅಳತೆಗಳಲ್ಲಿ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ. +- **ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ**: ನಿಮ್ಮ ಡೇಟಾದಲ್ಲಿ ಅತಿವ್ಯಕ್ತ ಅಥವಾ ಅಲ್ಪಪ್ರತಿನಿಧಾನ ಇರುವ ಸ್ಥಳಗಳನ್ನು ಪರಿಶೀಲಿಸಿ, ಇದು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಒಂದು ಡೇಟಾ ಜನಾಂಗವನ್ನು ಇತರರಿಗಿಂತ ಪ್ರಾಧಾನ್ಯ ನೀಡಲು ತಿರುಗಿಸಬಹುದು. +- **ಲಕ್ಷಣ ಮಹತ್ವ**: ಜಾಗತಿಕ ಮಟ್ಟದಲ್ಲಿ ಅಥವಾ ಸ್ಥಳೀಯ ಮಟ್ಟದಲ್ಲಿ ನಿಮ್ಮ ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಯಾವ ಲಕ್ಷಣಗಳು ಚಾಲನೆ ಮಾಡುತ್ತವೆ ಎಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ. + +## ಪೂರ್ವಾಪೇಕ್ಷಿತ + +ಪೂರ್ವಾಪೇಕ್ಷಿತವಾಗಿ, ದಯವಿಟ್ಟು [ಜವಾಬ್ದಾರಿಯುತ AI ಸಾಧನಗಳು ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರಿಗೆ](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) ಎಂಬ ವಿಮರ್ಶೆಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ + +> ![ಜವಾಬ್ದಾರಿಯುತ AI ಸಾಧನಗಳ ಗಿಫ್](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) + +## ದೋಷ ವಿಶ್ಲೇಷಣೆ + +ಸರಾಸರಿ ಶುದ್ಧತೆ ಅಥವಾ ತಪ್ಪು ಭವಿಷ್ಯವಾಣಿಗಳ ಮೇಲೆ ಆಧಾರಿತ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆ ಅಳತೆಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಸರಿಯಾದ ಮತ್ತು ತಪ್ಪಾದ ಭವಿಷ್ಯವಾಣಿಗಳ ಲೆಕ್ಕಾಚಾರಗಳಾಗಿವೆ. ಉದಾಹರಣೆಗೆ, 0.001 ದೋಷ ನಷ್ಟದೊಂದಿಗೆ 89% ಶುದ್ಧತೆ ಹೊಂದಿರುವ ಮಾದರಿಯನ್ನು ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆ ಎಂದು ಪರಿಗಣಿಸಬಹುದು. ದೋಷಗಳು ನಿಮ್ಮ ಮೂಲ ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ ಸಮಾನವಾಗಿ ವಿತರಿಸಲ್ಪಡುವುದಿಲ್ಲ. ನೀವು 89% ಮಾದರಿ ಶುದ್ಧತೆ ಅಂಕೆಯನ್ನು ಪಡೆಯಬಹುದು ಆದರೆ ಮಾದರಿ 42% ಸಮಯದಲ್ಲಿ ವಿಫಲವಾಗುತ್ತಿರುವ ಡೇಟಾದ ವಿಭಿನ್ನ ಪ್ರದೇಶಗಳನ್ನು ಕಂಡುಹಿಡಿಯಬಹುದು. ಈ ವಿಫಲತೆ ಮಾದರಿಯ ನ್ಯಾಯತೆ ಅಥವಾ ನಂಬಿಕಯೋಗ್ಯತೆ ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು. ಮಾದರಿ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿರುವ ಅಥವಾ ಇಲ್ಲದಿರುವ ಪ್ರದೇಶಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಅತ್ಯಾವಶ್ಯಕ. ನಿಮ್ಮ ಮಾದರಿಯಲ್ಲಿ ಹೆಚ್ಚಿನ ತಪ್ಪುಗಳಿರುವ ಡೇಟಾ ಪ್ರದೇಶವು ಪ್ರಮುಖ ಡೇಟಾ ಜನಾಂಗವಾಗಬಹುದು. + +![ಮಾದರಿ ದೋಷಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಮತ್ತು ಡಿಬಗ್ ಮಾಡಿ](../../../../translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.kn.png) + +RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ದೋಷ ವಿಶ್ಲೇಷಣೆ ಘಟಕವು ವಿವಿಧ ಗುಂಪುಗಳಲ್ಲಿ ಮಾದರಿ ವಿಫಲತೆ ಹೇಗೆ ವಿತರಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಮರದ ದೃಶ್ಯೀಕರಣದೊಂದಿಗೆ ತೋರಿಸುತ್ತದೆ. ಇದು ನಿಮ್ಮ ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ ಹೆಚ್ಚಿನ ದೋಷ ದರ ಇರುವ ಲಕ್ಷಣಗಳು ಅಥವಾ ಪ್ರದೇಶಗಳನ್ನು ಗುರುತಿಸಲು ಉಪಯುಕ್ತವಾಗಿದೆ. ಹೆಚ್ಚಿನ ದೋಷಗಳು ಎಲ್ಲಿಂದ ಬರುತ್ತಿವೆ ಎಂದು ನೋಡಿಕೊಂಡು, ನೀವು ಮೂಲ ಕಾರಣವನ್ನು ಪರಿಶೀಲಿಸಲು ಪ್ರಾರಂಭಿಸಬಹುದು. ನೀವು ವಿಶ್ಲೇಷಣೆ ಮಾಡಲು ಡೇಟಾ ಗುಂಪುಗಳನ್ನು ರಚಿಸಬಹುದು. ಈ ಡೇಟಾ ಗುಂಪುಗಳು ಡಿಬಗಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಸಹಾಯ ಮಾಡುತ್ತವೆ, ಏಕೆಂದರೆ ಒಂದು ಗುಂಪಿನಲ್ಲಿ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆ ಉತ್ತಮವಾಗಿದ್ದರೆ ಮತ್ತೊಂದರಲ್ಲಿ ತಪ್ಪುಗಳಾಗಿರುವುದನ್ನು ತಿಳಿಯಲು. + +![ದೋಷ ವಿಶ್ಲೇಷಣೆ](../../../../translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.kn.png) + +ಮರ ನಕ್ಷೆಯ ದೃಶ್ಯ ಸೂಚಕಗಳು ಸಮಸ್ಯೆ ಪ್ರದೇಶಗಳನ್ನು ವೇಗವಾಗಿ ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ. ಉದಾಹರಣೆಗೆ, ಮರದ ನೋಡ್‌ಗೆ ಹೆಚ್ಚು ಕಪ್ಪು ಕೆಂಪು ಬಣ್ಣ ಇದ್ದರೆ, ದೋಷ ದರ ಹೆಚ್ಚು ಇದೆ. + +ಹೀಟ್ ಮ್ಯಾಪ್ ಮತ್ತೊಂದು ದೃಶ್ಯೀಕರಣ ಕಾರ್ಯಕ್ಷಮತೆ, ಬಳಕೆದಾರರು ಒಂದು ಅಥವಾ ಎರಡು ಲಕ್ಷಣಗಳನ್ನು ಬಳಸಿ ದೋಷ ದರವನ್ನು ಪರಿಶೀಲಿಸಲು ಬಳಸಬಹುದು, ಇದು ಸಂಪೂರ್ಣ ಡೇಟಾ ಸೆಟ್ ಅಥವಾ ಗುಂಪುಗಳಲ್ಲಿ ಮಾದರಿ ದೋಷಗಳಿಗೆ ಕಾರಣವಾದ ಅಂಶವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +![ದೋಷ ವಿಶ್ಲೇಷಣೆ ಹೀಟ್‌ಮ್ಯಾಪ್](../../../../translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.kn.png) + +ನೀವು ದೋಷ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಬಳಸಬೇಕಾಗಿರುವಾಗ: + +* ಮಾದರಿ ವಿಫಲತೆಗಳು ಡೇಟಾ ಸೆಟ್ ಮತ್ತು ವಿವಿಧ ಇನ್‌ಪುಟ್ ಮತ್ತು ಲಕ್ಷಣ ಆಯಾಮಗಳಲ್ಲಿ ಹೇಗೆ ವಿತರಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಆಳವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ. +* ಸಂಗ್ರಹಿತ ಕಾರ್ಯಕ್ಷಮತೆ ಅಳತೆಗಳನ್ನು ವಿಭಜಿಸಿ ತಪ್ಪು ಗುಂಪುಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಂಡುಹಿಡಿದು ನಿಮ್ಮ ಗುರಿತಗೊಂಡ ಪರಿಹಾರ ಕ್ರಮಗಳನ್ನು ತಿಳಿಸಿ. + +## ಮಾದರಿ ಅವಲೋಕನ + +ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಅದರ ವರ್ತನೆಯನ್ನು ಸಮಗ್ರವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಅಗತ್ಯ. ಇದು ದೋಷ ದರ, ಶುದ್ಧತೆ, ರಿಕಾಲ್, ಪ್ರೆಸಿಷನ್ ಅಥವಾ MAE (ಸರಾಸರಿ ಪರಮಾಣು ದೋಷ) ಮುಂತಾದ metrics ಗಳನ್ನು ಪರಿಶೀಲಿಸುವ ಮೂಲಕ ಸಾಧ್ಯ. ಒಂದು ಕಾರ್ಯಕ್ಷಮತೆ ಅಳತೆ ಉತ್ತಮವಾಗಿದ್ದರೂ, ಮತ್ತೊಂದು ಅಳತೆಯಲ್ಲಿ ತಪ್ಪುಗಳು ಬಹಿರಂಗವಾಗಬಹುದು. ಜೊತೆಗೆ, ಸಂಪೂರ್ಣ ಡೇಟಾ ಸೆಟ್ ಅಥವಾ ಗುಂಪುಗಳಲ್ಲಿ metrics ಗಳ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಹೋಲಿಸುವುದು ಮಾದರಿ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿರುವ ಅಥವಾ ಇಲ್ಲದಿರುವ ಸ್ಥಳಗಳನ್ನು ಬೆಳಗಿಸುತ್ತದೆ. ಇದು ವಿಶೇಷವಾಗಿ ಸಂವೇದನಾಶೀಲ ಮತ್ತು ಅಸಂವೇದನಾಶೀಲ ಲಕ್ಷಣಗಳ (ಉದಾ: ರೋಗಿಯ ಜಾತಿ, ಲಿಂಗ ಅಥವಾ ವಯಸ್ಸು) ನಡುವೆ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ನೋಡಲು ಮುಖ್ಯ, ಏಕೆಂದರೆ ಇದು ಮಾದರಿಯ ಅನ್ಯಾಯವನ್ನು ಬಹಿರಂಗಪಡಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಸಂವೇದನಾಶೀಲ ಲಕ್ಷಣಗಳಿರುವ ಗುಂಪಿನಲ್ಲಿ ಮಾದರಿ ಹೆಚ್ಚು ತಪ್ಪುಗಳನ್ನು ಮಾಡುತ್ತಿರುವುದು ಕಂಡುಬಂದರೆ, ಇದು ಮಾದರಿಯ ಅನ್ಯಾಯವನ್ನು ಸೂಚಿಸುತ್ತದೆ. + +RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಮಾದರಿ ಅವಲೋಕನ ಘಟಕವು ಡೇಟಾ ಪ್ರತಿನಿಧಾನದ ಕಾರ್ಯಕ್ಷಮತೆ metrics ಗಳ ವಿಶ್ಲೇಷಣೆಯಲ್ಲಿ ಮಾತ್ರವಲ್ಲದೆ, ಬಳಕೆದಾರರಿಗೆ ವಿವಿಧ ಗುಂಪುಗಳ ನಡುವೆ ಮಾದರಿಯ ವರ್ತನೆಯನ್ನು ಹೋಲಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +![ಡೇಟಾ ಗುಂಪುಗಳು - RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ ಮಾದರಿ ಅವಲೋಕನ](../../../../translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.kn.png) + +ಘಟಕದ ಲಕ್ಷಣ ಆಧಾರಿತ ವಿಶ್ಲೇಷಣೆ ಕಾರ್ಯಕ್ಷಮತೆ ಬಳಕೆದಾರರಿಗೆ ನಿರ್ದಿಷ್ಟ ಲಕ್ಷಣದ ಒಳಗಿನ ಡೇಟಾ ಉಪಗುಂಪುಗಳನ್ನು ಸಣ್ಣ ಮಟ್ಟದಲ್ಲಿ ಅನಾಮಲಿಗಳನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಬಳಕೆದಾರರು ಆಯ್ಕೆಮಾಡಿದ ಲಕ್ಷಣಕ್ಕೆ (ಉದಾ: *"time_in_hospital < 3"* ಅಥವಾ *"time_in_hospital >= 7"*) ಗುಂಪುಗಳನ್ನು ರಚಿಸುತ್ತದೆ. ಇದು ಬಳಕೆದಾರರಿಗೆ ದೊಡ್ಡ ಡೇಟಾ ಗುಂಪಿನಿಂದ ನಿರ್ದಿಷ್ಟ ಲಕ್ಷಣವನ್ನು ವಿಭಜಿಸಿ, ಅದು ಮಾದರಿಯ ತಪ್ಪು ಫಲಿತಾಂಶಗಳಿಗೆ ಪ್ರಮುಖ ಕಾರಣವಾಗಿದೆಯೇ ಎಂದು ನೋಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +![ಲಕ್ಷಣ ಗುಂಪುಗಳು - RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ ಮಾದರಿ ಅವಲೋಕನ](../../../../translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.kn.png) + +ಮಾದರಿ ಅವಲೋಕನ ಘಟಕವು ಎರಡು ವರ್ಗದ ವ್ಯತ್ಯಾಸ metrics ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ: + +**ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯಲ್ಲಿ ವ್ಯತ್ಯಾಸ**: ಈ metrics ಗಳ ಸೆಟ್ ಆಯ್ಕೆಮಾಡಲಾದ ಕಾರ್ಯಕ್ಷಮತೆ ಅಳತೆಯ ಮೌಲ್ಯಗಳಲ್ಲಿ ಉಪಗುಂಪುಗಳ ನಡುವೆ ವ್ಯತ್ಯಾಸ (ತಾರತಮ್ಯ) ಲೆಕ್ಕಹಾಕುತ್ತದೆ. ಕೆಲವು ಉದಾಹರಣೆಗಳು: + +* ಶುದ್ಧತೆ ದರದಲ್ಲಿ ವ್ಯತ್ಯಾಸ +* ದೋಷ ದರದಲ್ಲಿ ವ್ಯತ್ಯಾಸ +* ಪ್ರೆಸಿಷನ್‌ನಲ್ಲಿ ವ್ಯತ್ಯಾಸ +* ರಿಕಾಲ್‌ನಲ್ಲಿ ವ್ಯತ್ಯಾಸ +* ಸರಾಸರಿ ಪರಮಾಣು ದೋಷ (MAE) ನಲ್ಲಿ ವ್ಯತ್ಯಾಸ + +**ಆಯ್ಕೆ ದರದಲ್ಲಿ ವ್ಯತ್ಯಾಸ**: ಈ metric ಉಪಗುಂಪುಗಳ ನಡುವೆ ಆಯ್ಕೆ ದರ (ಅನುಕೂಲ ಭವಿಷ್ಯವಾಣಿ) ಯ ವ್ಯತ್ಯಾಸವನ್ನು ಹೊಂದಿದೆ. ಉದಾಹರಣೆಗೆ ಸಾಲ ಮಂಜೂರಾತಿ ದರಗಳಲ್ಲಿ ವ್ಯತ್ಯಾಸ. ಆಯ್ಕೆ ದರ ಎಂದರೆ ಪ್ರತಿ ವರ್ಗದಲ್ಲಿ 1 (ದ್ವಿಪದ ವರ್ಗೀಕರಣದಲ್ಲಿ) ಎಂದು ವರ್ಗೀಕರಿಸಲ್ಪಟ್ಟ ಡೇಟಾ ಅಂಶಗಳ ಭಾಗ ಅಥವಾ ಭವಿಷ್ಯವಾಣಿ ಮೌಲ್ಯಗಳ ವಿತರಣೆ (ರೆಗ್ರೆಷನ್‌ನಲ್ಲಿ). + +## ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ + +> "ನೀವು ಡೇಟಾವನ್ನು ಸಾಕಷ್ಟು ಕಾಲ ಹಿಂಸಿಸಿದರೆ, ಅದು ಯಾವುದಕ್ಕೂ ಒಪ್ಪಿಕೊಳ್ಳುತ್ತದೆ" - ರೋನಾಲ್ಡ್ ಕೋಸ್ + +ಈ ಹೇಳಿಕೆ ತೀವ್ರವಾಗಿದ್ದರೂ, ಡೇಟಾವನ್ನು ಯಾವುದೇ ನಿರ್ಣಯವನ್ನು ಬೆಂಬಲಿಸಲು ಮರುರೂಪಗೊಳಿಸಬಹುದು ಎಂಬುದು ಸತ್ಯ. ಇಂತಹ ಮರುರೂಪಣೆಯು ಕೆಲವೊಮ್ಮೆ ಅನೈಚ್ಛಿಕವಾಗಿ ಸಂಭವಿಸಬಹುದು. ನಾವು ಮಾನವರಾಗಿ ಎಲ್ಲರೂ ಪೂರ್ವಗ್ರಹ ಹೊಂದಿದ್ದೇವೆ, ಮತ್ತು ನೀವು ಡೇಟಾದಲ್ಲಿ ಪೂರ್ವಗ್ರಹವನ್ನು ಪರಿಚಯಿಸುತ್ತಿದ್ದೀರಾ ಎಂದು ಜಾಗೃತಿಯಿಂದ ತಿಳಿದುಕೊಳ್ಳುವುದು ಕಷ್ಟ. AI ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ನ್ಯಾಯತೆಯನ್ನು ಖಚಿತಪಡಿಸುವುದು ಸಂಕೀರ್ಣ ಸವಾಲಾಗಿದೆ. + +ಡೇಟಾ ಪರಂಪರাগত ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆ metrics ಗಾಗಿ ದೊಡ್ಡ ಅಂಧ ಪ್ರದೇಶವಾಗಿದೆ. ನೀವು ಹೆಚ್ಚಿನ ಶುದ್ಧತೆ ಅಂಕಗಳನ್ನು ಹೊಂದಿರಬಹುದು, ಆದರೆ ಇದು ನಿಮ್ಮ ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ ಇರುವ ಅಡಗಿದ ಪೂರ್ವಗ್ರಹವನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವುದಿಲ್ಲ. ಉದಾಹರಣೆಗೆ, ಒಂದು ಕಂಪನಿಯ ಉದ್ಯೋಗಿಗಳ ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ 27% ಮಹಿಳೆಯರು ಕಾರ್ಯನಿರ್ವಹಣಾ ಹುದ್ದೆಗಳಲ್ಲಿ ಇದ್ದರೆ ಮತ್ತು 73% ಪುರುಷರು ಅದೇ ಹುದ್ದೆಯಲ್ಲಿ ಇದ್ದರೆ, ಈ ಡೇಟಾದ ಮೇಲೆ ತರಬೇತಿಗೊಂಡ ಉದ್ಯೋಗ ಜಾಹೀರಾತು AI ಮಾದರಿ ಹಿರಿಯ ಹುದ್ದೆಗಳಿಗಾಗಿ ಮುಖ್ಯವಾಗಿ ಪುರುಷರನ್ನು ಗುರಿಯಾಗಿಸಬಹುದು. ಈ ಅಸಮಾನತೆ ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಒಂದು ಲಿಂಗಕ್ಕೆ ಪ್ರಾಧಾನ್ಯ ನೀಡುವಂತೆ ತಿರುಗಿಸಿದೆ. ಇದು AI ಮಾದರಿಯಲ್ಲಿ ಲಿಂಗ ಪೂರ್ವಗ್ರಹದ ನ್ಯಾಯತೆ ಸಮಸ್ಯೆಯನ್ನು ಬಹಿರಂಗಪಡಿಸುತ್ತದೆ. + +RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ ಘಟಕವು ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ ಅತಿವ್ಯಕ್ತ ಮತ್ತು ಅಲ್ಪಪ್ರತಿನಿಧಾನ ಇರುವ ಪ್ರದೇಶಗಳನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದು ಬಳಕೆದಾರರಿಗೆ ದೋಷಗಳು ಮತ್ತು ನ್ಯಾಯತೆ ಸಮಸ್ಯೆಗಳ ಮೂಲ ಕಾರಣವನ್ನು ಡೇಟಾ ಅಸಮಾನತೆಗಳಿಂದ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಡೇಟಾ ಗುಂಪಿನ ಪ್ರತಿನಿಧಾನದ ಕೊರತೆಯಿಂದ ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದು ಭವಿಷ್ಯವಾಣಿ ಮತ್ತು ನಿಜವಾದ ಫಲಿತಾಂಶಗಳ ಆಧಾರದ ಮೇಲೆ, ದೋಷ ಗುಂಪುಗಳು ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಲಕ್ಷಣಗಳ ಆಧಾರದ ಮೇಲೆ ಡೇಟಾ ಸೆಟ್‌ಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಬಳಕೆದಾರರಿಗೆ ಸಾಮರ್ಥ್ಯ ನೀಡುತ್ತದೆ. ಕೆಲವೊಮ್ಮೆ ಅಲ್ಪಪ್ರತಿನಿಧಿತ ಡೇಟಾ ಗುಂಪನ್ನು ಕಂಡುಹಿಡಿಯುವುದರಿಂದ ಮಾದರಿ ಚೆನ್ನಾಗಿ ಕಲಿಯುತ್ತಿಲ್ಲ ಎಂದು ಬಹಿರಂಗವಾಗಬಹುದು, ಆದ್ದರಿಂದ ಹೆಚ್ಚಿನ ದೋಷಗಳು. ಡೇಟಾ ಪೂರ್ವಗ್ರಹ ಹೊಂದಿರುವ ಮಾದರಿ ಕೇವಲ ನ್ಯಾಯತೆ ಸಮಸ್ಯೆಯಲ್ಲ, ಅದು ಒಳಗೊಂಡ ಅಥವಾ ನಂಬಿಕಯೋಗ್ಯವಲ್ಲದ ಮಾದರಿಯನ್ನೂ ತೋರಿಸುತ್ತದೆ. + +![RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ ಘಟಕ](../../../../translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.kn.png) + +ನೀವು ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಬಳಸಬೇಕಾಗಿರುವಾಗ: + +* ವಿಭಿನ್ನ ಫಿಲ್ಟರ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ವಿಭಿನ್ನ ಆಯಾಮಗಳಲ್ಲಿ (ಗುಂಪುಗಳಾಗಿ) ವಿಭಜಿಸಿ ನಿಮ್ಮ ಡೇಟಾ ಅಂಕಿಅಂಶಗಳನ್ನು ಅನ್ವೇಷಿಸಿ. +* ವಿಭಿನ್ನ ಗುಂಪುಗಳು ಮತ್ತು ಲಕ್ಷಣ ಗುಂಪುಗಳ ಮೂಲಕ ನಿಮ್ಮ ಡೇಟಾ ವಿತರಣೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ. +* ನ್ಯಾಯತೆ, ದೋಷ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ಕಾರಣಾತ್ಮಕತೆ (ಇತರ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಘಟಕಗಳಿಂದ ಪಡೆದ) ಸಂಬಂಧಿತ ನಿಮ್ಮ ಕಂಡುಹಿಡಿತಗಳು ನಿಮ್ಮ ಡೇಟಾ ವಿತರಣೆಯ ಫಲಿತಾಂಶವಾಗಿದೆಯೇ ಎಂದು ನಿರ್ಧರಿಸಿ. +* ಪ್ರತಿನಿಧಾನ ಸಮಸ್ಯೆಗಳು, ಲೇಬಲ್ ಶಬ್ದ, ಲಕ್ಷಣ ಶಬ್ದ, ಲೇಬಲ್ ಪೂರ್ವಗ್ರಹ ಮತ್ತು ಇತರ ಕಾರಣಗಳಿಂದ ಉಂಟಾಗುವ ದೋಷಗಳನ್ನು ತಗ್ಗಿಸಲು ಹೆಚ್ಚಿನ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುವ ಪ್ರದೇಶಗಳನ್ನು ನಿರ್ಧರಿಸಿ. + +## ಮಾದರಿ ವಿವರಣೆ + +ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಕಪ್ಪು ಪೆಟ್ಟಿಗೆಗಳಾಗಿವೆ. ಯಾವ ಪ್ರಮುಖ ಡೇಟಾ ಲಕ್ಷಣಗಳು ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಚಾಲನೆ ಮಾಡುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಸವಾಲಾಗಿರುತ್ತದೆ. ಮಾದರಿ ಏಕೆ ನಿರ್ದಿಷ್ಟ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ಪಾರದರ್ಶಕತೆ ಒದಗಿಸುವುದು ಮುಖ್ಯ. ಉದಾಹರಣೆಗೆ, AI ವ್ಯವಸ್ಥೆ ಒಂದು ಮಧುಮೇಹ ರೋಗಿಯು 30 ದಿನಗಳಲ್ಲಿ ಆಸ್ಪತ್ರೆಗೆ ಮರುಪ್ರವೇಶಿಸುವ ಅಪಾಯದಲ್ಲಿದ್ದಾನೆ ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದರೆ, ಅದರ ಭವಿಷ್ಯವಾಣಿಗೆ ಕಾರಣವಾದ ಬೆಂಬಲಿಸುವ ಡೇಟಾವನ್ನು ಒದಗಿಸಬೇಕು. ಬೆಂಬಲಿಸುವ ಡೇಟಾ ಸೂಚಕಗಳು ಪಾರದರ್ಶಕತೆಯನ್ನು ತರಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ, ಇದರಿಂದ ವೈದ್ಯರು ಅಥವಾ ಆಸ್ಪತ್ರೆಗಳು ಚೆನ್ನಾಗಿ ತಿಳಿದ ನಿರ್ಧಾರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಜೊತೆಗೆ, ವ್ಯಕ್ತಿಗತ ರೋಗಿಗೆ ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಕಾರಣವನ್ನು ವಿವರಿಸುವುದು ಆರೋಗ್ಯ ನಿಯಮಾವಳಿಗಳೊಂದಿಗೆ ಹೊಣೆಗಾರಿಕೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಜನರ ಜೀವನವನ್ನು ಪ್ರಭಾವಿಸುವ ರೀತಿಯಲ್ಲಿ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ಬಳಸುವಾಗ, ಮಾದರಿಯ ವರ್ತನೆಯನ್ನು ಏನು ಪ್ರಭಾವಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ವಿವರಿಸುವುದು ಅತ್ಯಂತ ಮುಖ್ಯ. ಮಾದರಿ ವಿವರಣೆ ಮತ್ತು ವ್ಯಾಖ್ಯಾನವು ಕೆಳಗಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರ ನೀಡುತ್ತದೆ: + +* ಮಾದರಿ ಡಿಬಗಿಂಗ್: ನನ್ನ ಮಾದರಿ ಈ ತಪ್ಪು ಮಾಡಿದ್ದು ಏಕೆ? ನಾನು ನನ್ನ ಮಾದರಿಯನ್ನು ಹೇಗೆ ಸುಧಾರಿಸಬಹುದು? +* ಮಾನವ-AI ಸಹಕಾರ: ನಾನು ಮಾದರಿಯ ನಿರ್ಧಾರಗಳನ್ನು ಹೇಗೆ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ ಮತ್ತು ನಂಬಬಹುದು? +* ನಿಯಂತ್ರಣ ಅನುಕೂಲತೆ: ನನ್ನ ಮಾದರಿ ಕಾನೂನು ಅಗತ್ಯಗಳನ್ನು ಪೂರೈಸುತ್ತದೆಯೇ? + +RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಲಕ್ಷಣ ಮಹತ್ವ ಘಟಕವು ನಿಮ್ಮನ್ನು ಡಿಬಗ್ ಮಾಡಲು ಮತ್ತು ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಹೇಗೆ ಮಾಡುತ್ತದೆ ಎಂಬುದರ ಸಮಗ್ರ ಅರ್ಥವನ್ನು ಪಡೆಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದು ಯಂತ್ರ ಅಧ್ಯಯನ ವೃತ್ತಿಪರರು ಮತ್ತು ನಿರ್ಧಾರಗಾರರಿಗೆ ನಿಯಂತ್ರಣ ಅನುಕೂಲತೆಯಿಗಾಗಿ ಮಾದರಿಯ ವರ್ತನೆಯನ್ನು ಪ್ರಭಾವಿಸುವ ಲಕ್ಷಣಗಳನ್ನು ವಿವರಿಸಲು ಮತ್ತು ಸಾಕ್ಷ್ಯವನ್ನು ತೋರಿಸಲು ಉಪಯುಕ್ತ ಸಾಧನವಾಗಿದೆ. ನಂತರ, ಬಳಕೆದಾರರು ಜಾಗತಿಕ ಮತ್ತು ಸ್ಥಳೀಯ ವಿವರಣೆಗಳನ್ನು ಅನ್ವೇಷಿಸಿ ಯಾವ ಲಕ್ಷಣಗಳು ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಚಾಲನೆ ಮಾಡುತ್ತವೆ ಎಂದು ಪರಿಶೀಲಿಸಬಹುದು. ಜಾಗತಿಕ ವಿವರಣೆಗಳು ಮಾದರಿಯ ಒಟ್ಟು ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಪ್ರಭಾವಿಸಿದ ಪ್ರಮುಖ ಲಕ್ಷಣಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತವೆ. ಸ್ಥಳೀಯ ವಿವರಣೆಗಳು ವ್ಯಕ್ತಿಗತ ಪ್ರಕರಣಕ್ಕೆ ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಲಕ್ಷಣಗಳನ್ನು ತೋರಿಸುತ್ತವೆ. ಸ್ಥಳೀಯ ವಿವರಣೆಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು ನಿರ್ದಿಷ್ಟ ಪ್ರಕರಣವನ್ನು ಡಿಬಗ್ ಅಥವಾ ಪರಿಶೀಲಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಏಕೆಂದರೆ ಇದು ಮಾದರಿ ಸರಿಯಾದ ಅಥವಾ ತಪ್ಪು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಕಾರಣವನ್ನು ಉತ್ತಮವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +![RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಲಕ್ಷಣ ಮಹತ್ವ ಘಟಕ](../../../../translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.kn.png) + +* ಜಾಗತಿಕ ವಿವರಣೆಗಳು: ಉದಾಹರಣೆಗೆ, ಮಧುಮೇಹ ಆಸ್ಪತ್ರೆ ಮರುಪ್ರವೇಶ ಮಾದರಿಯ ಒಟ್ಟು ವರ್ತನೆಯನ್ನು ಯಾವ ಲಕ್ಷಣಗಳು ಪ್ರಭಾವಿಸುತ್ತವೆ? +* ಸ್ಥಳೀಯ ವಿವರಣೆಗಳು: ಉದಾಹರಣೆಗೆ, 60 ವರ್ಷಕ್ಕಿಂತ ಮೇಲ್ಪಟ್ಟ ಮಧುಮೇಹ ರೋಗಿಯು 30 ದಿನಗಳಲ್ಲಿ ಮರುಪ್ರವೇಶಿಸುವ ಅಥವಾ ಮರುಪ್ರವೇಶಿಸದಿರುವ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ್ದು ಏಕೆ? + +ವಿಭಿನ್ನ ಗುಂಪುಗಳಲ್ಲಿನ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪರಿಶೀಲಿಸುವ ಡಿಬಗಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ, ಲಕ್ಷಣ ಮಹತ್ವವು ಗುಂಪುಗಳಲ್ಲಿ ಲಕ್ಷಣದ ಪ್ರಭಾವದ ಮಟ್ಟವನ್ನು ತೋರಿಸುತ್ತದೆ. ಇದು ಮಾದರಿಯ ತಪ್ಪು ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಚಾಲನೆ ಮಾಡುವ ಲಕ್ಷಣದ ಪ್ರಭಾವದ ಮಟ್ಟವನ್ನು ಹೋಲಿಸುವಾಗ ಅನಾಮಲಿಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಲಕ್ಷಣ ಮಹತ್ವ ಘಟಕವು ಲಕ್ಷಣದ ಮೌಲ್ಯಗಳು ಮಾದರಿಯ ಫಲಿತಾಂಶವನ್ನು ಧನಾತ್ಮಕ ಅಥವಾ ಋಣಾತ್ಮಕವಾಗಿ ಪ್ರಭಾವಿಸಿದವು ಎಂದು ತೋರಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಮಾದರಿ ತಪ್ಪು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದರೆ, ಈ ಘಟಕವು ನೀವು ಆ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಚಾಲನೆ ಮಾಡಿದ ಲಕ್ಷಣಗಳು ಅಥವಾ ಲಕ್ಷಣ ಮೌಲ್ಯಗಳನ್ನು ವಿವರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಈ ಮಟ್ಟದ ವಿವರವು ಡಿಬಗಿಂಗ್ ಮಾತ್ರವಲ್ಲದೆ ಪರಿಶೀಲನೆ ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ ಪಾರದರ್ಶಕತೆ ಮತ್ತು ಹೊಣೆಗಾರಿಕೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಕೊನೆಗೆ, ಈ ಘಟಕವು ನ್ಯಾಯತೆ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಜಾತಿ ಅಥವಾ ಲಿಂಗದಂತಹ ಸಂವೇದನಾಶೀಲ ಲಕ್ಷಣವು ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಹೆಚ್ಚು ಪ್ರಭಾವಿಸಿದರೆ, ಇದು ಮಾದರಿಯಲ್ಲಿ ಜಾತಿ ಅಥವಾ ಲಿಂಗ ಪೂರ್ವಗ್ರಹದ ಸೂಚನೆ ಆಗಬಹುದು. + +![ಲಕ್ಷಣ ಮಹತ್ವ](../../../../translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.kn.png) + +ನೀವು ವಿವರಣಾತ್ಮಕತೆಯನ್ನು ಬಳಸಬೇಕಾಗಿರುವಾಗ: + +* ನಿಮ್ಮ AI ವ್ಯವಸ್ಥೆಯ ಭವಿಷ್ಯವಾಣಿಗಳು ಎಷ್ಟು ನಂಬಿಕಯೋಗ್ಯವೋ ತಿಳಿದುಕೊಳ್ಳಲು ಯಾವ ಲಕ್ಷಣಗಳು ಭವಿಷ್ಯವಾಣಿಗೆ ಅತ್ಯಂತ ಮುಖ್ಯವೋ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ. +* ಮೊದಲು ಅದನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಡಿಬಗ್ ಮಾಡಲು, ಮಾದರಿ ಆರೋಗ್ಯಕರ ಲಕ್ಷಣಗಳನ್ನು ಬಳಸುತ್ತಿದೆಯೇ ಅಥವಾ ತಪ್ಪು ಸಂಬಂಧಗಳನ್ನು ಮಾತ್ರ ಬಳಸುತ್ತಿದೆಯೇ ಎಂದು ಗುರುತಿಸಿ. +* ಸಂವೇದನಾಶೀಲ ಲಕ್ಷಣಗಳ ಮೇಲೆ ಅಥವಾ ಅವುಗಳಿಗೆ ಹೆಚ್ಚು ಸಂಬಂಧಿಸಿದ ಲಕ್ಷಣಗಳ ಮೇಲೆ ಆಧಾರಿತ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡುತ್ತಿರುವುದರಿಂದ ಅನ್ಯಾಯದ ಮೂಲಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಿ. +* ಸ್ಥಳೀಯ ವಿವರಣೆಗಳನ್ನು ರಚಿಸಿ ನಿಮ್ಮ ಮಾದರಿಯ ನಿರ್ಧಾರಗಳಲ್ಲಿ ಬಳಕೆದಾರರ ನಂಬಿಕೆಯನ್ನು ನಿರ್ಮಿಸಿ. +* AI ವ್ಯವಸ್ಥೆಯ ನಿಯಂತ್ರಣ ಪರಿಶೀಲನೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ, ಮಾದರಿಗಳನ್ನು ಮಾನವರ ಮೇಲೆ ಮಾದರಿ ನಿರ್ಧಾರಗಳ ಪ್ರಭಾವವನ್ನು ಪರಿಶೀಲಿಸಿ. + +## ಸಮಾರೋಪ + +ಎಲ್ಲಾ RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಘಟಕಗಳು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ಸಮಾಜಕ್ಕೆ ಕಡಿಮೆ ಹಾನಿಕರ ಮತ್ತು ಹೆಚ್ಚು ನಂಬಿಕಯೋಗ್ಯವಾಗುವಂತೆ ನಿರ್ಮಿಸಲು ಸಹಾಯ ಮಾಡುವ ಪ್ರಾಯೋಗಿಕ ಸಾಧನಗಳಾಗಿವೆ. ಇದು ಮಾನವ ಹಕ್ಕುಗಳಿಗೆ ಹಾನಿ ತಡೆಯಲು; ಕೆಲವು ಗುಂಪುಗಳನ್ನು ಜೀವನಾವಕಾಶಗಳಿಂದ ಭೇದಭಾವ ಅಥವಾ ಹೊರತುಪಡಿಸುವುದನ್ನು ತಡೆಯಲು; ಮತ್ತು ದೈಹಿಕ ಅಥವಾ ಮಾನಸಿಕ ಗಾಯದ ಅಪಾಯವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದು ಸ್ಥಳೀಯ ವಿವರಣೆಗಳನ್ನು ರಚಿಸಿ ನಿಮ್ಮ ಮಾದರಿಯ ನಿರ್ಧಾರಗಳಲ್ಲಿ ನಂಬಿಕೆಯನ್ನು ನಿರ್ಮಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಸಾಧ್ಯ ಹಾನಿಗಳನ್ನು ಈ ಕೆಳಗಿನಂತೆ ವರ್ಗೀಕರಿಸಬಹುದು: + +- **ಹಂಚಿಕೆ**, ಉದಾಹರಣೆಗೆ ಲಿಂಗ ಅಥವಾ ಜಾತಿ ಒಂದರಿಗಿಂತ ಮತ್ತೊಂದರಿಗಿಂತ ಪ್ರಾಧಾನ್ಯ ನೀಡಿದರೆ. +- **ಸೇವೆಯ ಗುಣಮಟ್ಟ**. ನೀವು ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಂದರ್ಭಕ್ಕಾಗಿ ಡೇಟಾವನ್ನು ತರಬೇತಿಗೊಳಿಸಿದರೆ ಆದರೆ ವಾಸ್ತವಿಕತೆ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದ್ದರೆ, ಅದು ದೌರ್ಬಲ್ಯಪೂರ್ಣ ಸೇವೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. +- **ಸ್ಟೀರಿಯೋಟೈಪಿಂಗ್**. ನಿರ್ದಿಷ್ಟ ಗುಂಪನ್ನು ಪೂರ್ವನಿಯೋಜಿತ ಗುಣಲಕ್ಷಣಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು. +- **ನಿಂದನೆ**. ಅನ್ಯಾಯವಾಗಿ ವಿಮರ್ಶೆ ಮಾಡುವುದು ಮತ್ತು ಏನಾದರೂ ಅಥವಾ ಯಾರಾದರೂ ಲೇಬಲ್ ಮಾಡುವುದು. +- **ಅತಿಯಾದ ಅಥವಾ ಕಡಿಮೆ ಪ್ರತಿನಿಧಾನ**. ಒಂದು ನಿರ್ದಿಷ್ಟ ಗುಂಪು ನಿರ್ದಿಷ್ಟ ವೃತ್ತಿಯಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುವುದಿಲ್ಲ ಎಂಬ ಕಲ್ಪನೆ, ಮತ್ತು ಅದನ್ನು ಪ್ರೋತ್ಸಾಹಿಸುವ ಯಾವುದೇ ಸೇವೆ ಅಥವಾ ಕಾರ್ಯವು ಹಾನಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ. + +### ಅಜೂರ್ RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ + +[ಅಜೂರ್ RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) ಮುಕ್ತ ಮೂಲ ಸಾಧನಗಳ ಮೇಲೆ ನಿರ್ಮಿಸಲಾಗಿದೆ, ಇದನ್ನು ಪ್ರಮುಖ ಶೈಕ್ಷಣಿಕ ಸಂಸ್ಥೆಗಳು ಮತ್ತು ಮೈಕ್ರೋಸಾಫ್ಟ್ ಸೇರಿದಂತೆ ಸಂಸ್ಥೆಗಳು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ್ದವು, ಮತ್ತು ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು AI ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ಮಾದರಿ ವರ್ತನೆಯನ್ನು ಉತ್ತಮವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, AI ಮಾದರಿಗಳಿಂದ ಅಕಾಮ್ಯ ಸಮಸ್ಯೆಗಳನ್ನು ಕಂಡುಹಿಡಿದು ನಿವಾರಿಸಲು ಸಹಾಯಕವಾಗಿವೆ. + +- RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ [ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) ಪರಿಶೀಲಿಸಿ ವಿಭಿನ್ನ ಘಟಕಗಳನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂದು ತಿಳಿಯಿರಿ. + +- ಅಜೂರ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ನಲ್ಲಿ ಹೆಚ್ಚು ಜವಾಬ್ದಾರಿಯುತ AI ದೃಶ್ಯಾವಳಿಗಳನ್ನು ಡಿಬಗ್ ಮಾಡಲು ಕೆಲವು RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ [ನಮೂನಾ ನೋಟ್ಬುಕ್‌ಗಳು](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) ಪರಿಶೀಲಿಸಿ. + +--- +## 🚀 ಸವಾಲು + +ಸಾಂಖ್ಯಿಕ ಅಥವಾ ಡೇಟಾ ಪಾಕ್ಷಿಕತೆಗಳನ್ನು ಮೊದಲಿನಿಂದಲೇ ಪರಿಹರಿಸಲು, ನಾವು: + +- ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡುವ ಜನರ ನಡುವೆ ವೈವಿಧ್ಯಮಯ ಹಿನ್ನೆಲೆ ಮತ್ತು ದೃಷ್ಟಿಕೋನಗಳನ್ನು ಹೊಂದಿರಬೇಕು +- ನಮ್ಮ ಸಮಾಜದ ವೈವಿಧ್ಯತೆಯನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ ಡೇಟಾಸೆಟ್‌ಗಳಲ್ಲಿ ಹೂಡಿಕೆ ಮಾಡಬೇಕು +- ಪಾಕ್ಷಿಕತೆ ಸಂಭವಿಸಿದಾಗ ಅದನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಮತ್ತು ಸರಿಪಡಿಸಲು ಉತ್ತಮ ವಿಧಾನಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಬೇಕು + +ಮಾದರಿ ನಿರ್ಮಾಣ ಮತ್ತು ಬಳಕೆಯಲ್ಲಿ ಅನ್ಯಾಯ ಸ್ಪಷ್ಟವಾಗಿರುವ ನೈಜ ಜೀವನದ ದೃಶ್ಯಾವಳಿಗಳನ್ನು ಯೋಚಿಸಿ. ಇನ್ನೇನು ಪರಿಗಣಿಸಬೇಕು? + +## [ಪಾಠೋತ್ತರ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಜವಾಬ್ದಾರಿಯುತ AI ಅನ್ನು ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ನಲ್ಲಿ ಸೇರಿಸುವ ಕೆಲವು ಪ್ರಾಯೋಗಿಕ ಸಾಧನಗಳನ್ನು ಕಲಿತಿದ್ದೀರಿ. + +ಈ ವಿಷಯಗಳಲ್ಲಿ ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ತಿಳಿಯಲು ಈ ಕಾರ್ಯಾಗಾರವನ್ನು ವೀಕ್ಷಿಸಿ: + +- ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್: Besmira Nushi ಮತ್ತು Mehrnoosh Sameki ಅವರಿಂದ RAI ಅನ್ನು ಪ್ರಾಯೋಗಿಕವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಒಟ್ಟು ಪರಿಹಾರ + +[![ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್: Besmira Nushi ಮತ್ತು Mehrnoosh Sameki ಅವರಿಂದ RAI ಅನ್ನು ಪ್ರಾಯೋಗಿಕವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಒಟ್ಟು ಪರಿಹಾರ](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್: Besmira Nushi ಮತ್ತು Mehrnoosh Sameki ಅವರಿಂದ RAI ಅನ್ನು ಪ್ರಾಯೋಗಿಕವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಒಟ್ಟು ಪರಿಹಾರ") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋ ನೋಡಲು: Besmira Nushi ಮತ್ತು Mehrnoosh Sameki ಅವರಿಂದ ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್: RAI ಅನ್ನು ಪ್ರಾಯೋಗಿಕವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಒಟ್ಟು ಪರಿಹಾರ + +ಜವಾಬ್ದಾರಿಯುತ AI ಮತ್ತು ಹೆಚ್ಚು ನಂಬಿಗಸ್ತ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿಯಲು ಕೆಳಗಿನ ವಸ್ತುಗಳನ್ನು ಉಲ್ಲೇಖಿಸಿ: + +- ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಸಾಧನಗಳು ML ಮಾದರಿಗಳನ್ನು ಡಿಬಗ್ ಮಾಡಲು: [Responsible AI tools resources](https://aka.ms/rai-dashboard) + +- ಜವಾಬ್ದಾರಿಯುತ AI ಟೂಲ್‌ಕಿಟ್ ಅನ್ವೇಷಿಸಿ: [Github](https://github.com/microsoft/responsible-ai-toolbox) + +- ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ RAI ಸಂಪನ್ಮೂಲ ಕೇಂದ್ರ: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) + +- ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ FATE ಸಂಶೋಧನಾ ಗುಂಪು: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) + +## ನಿಯೋಜನೆ + +[RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಅನ್ವೇಷಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/9-Real-World/2-Debugging-ML-Models/assignment.md b/translations/kn/9-Real-World/2-Debugging-ML-Models/assignment.md new file mode 100644 index 000000000..b00112775 --- /dev/null +++ b/translations/kn/9-Real-World/2-Debugging-ML-Models/assignment.md @@ -0,0 +1,27 @@ + +# ಜವಾಬ್ದಾರಿಯುತ AI (RAI) ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಅನ್ವೇಷಣೆ + +## ಸೂಚನೆಗಳು + +ಈ ಪಾಠದಲ್ಲಿ ನೀವು RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಬಗ್ಗೆ ಕಲಿತಿರಿ, ಇದು "ಮುಕ್ತ ಮೂಲ" ಸಾಧನಗಳ ಮೇಲೆ ನಿರ್ಮಿತ ಘಟಕಗಳ ಸರಣಿ ಆಗಿದ್ದು, ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳಿಗೆ AI ವ್ಯವಸ್ಥೆಗಳ ಮೇಲೆ ದೋಷ ವಿಶ್ಲೇಷಣೆ, ಡೇಟಾ ಅನ್ವೇಷಣೆ, ನ್ಯಾಯತೀರ್ಮಾನ ಮೌಲ್ಯಮಾಪನ, ಮಾದರಿ ವಿವರಣೆ, ಪ್ರತಿಕೂಲ/ಯಾವುದಾದರೂ-ಆಯ್ಕೆ ಮೌಲ್ಯಮಾಪನ ಮತ್ತು ಕಾರಣಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ ನಡೆಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ." ಈ ಕಾರ್ಯಕ್ಕಾಗಿ, RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಕೆಲವು ಮಾದರಿ [ನೋಟ್ಬುಕ್‌ಗಳು](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) ಅನ್ವೇಷಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಕಂಡುಹಿಡಿತಗಳನ್ನು ಒಂದು ಪತ್ರಿಕೆ ಅಥವಾ ಪ್ರಸ್ತುತಿಯಲ್ಲಿ ವರದಿ ಮಾಡಿ. + +## ಮೌಲ್ಯಮಾಪನ ಮಾನದಂಡ + +| ಮಾನದಂಡ | ಉದಾತ್ತ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | --------- | -------- | ----------------- | +| | RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಘಟಕಗಳು, ಚಾಲನೆಯಲ್ಲಿದ್ದ ನೋಟ್ಬುಕ್ ಮತ್ತು ಅದನ್ನು ಚಾಲನೆ ಮಾಡಿದ ನಂತರ ಪಡೆದ ನಿರ್ಣಯಗಳನ್ನು ಚರ್ಚಿಸುವ ಪತ್ರಿಕೆ ಅಥವಾ ಪವರ್‌ಪಾಯಿಂಟ್ ಪ್ರಸ್ತುತಿ ನೀಡಲಾಗಿದೆ | ನಿರ್ಣಯಗಳಿಲ್ಲದೆ ಪತ್ರಿಕೆ ನೀಡಲಾಗಿದೆ | ಯಾವುದೇ ಪತ್ರಿಕೆ ನೀಡಲಾಗಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/9-Real-World/README.md b/translations/kn/9-Real-World/README.md new file mode 100644 index 000000000..edbca8fc4 --- /dev/null +++ b/translations/kn/9-Real-World/README.md @@ -0,0 +1,34 @@ + +# ಪೋಸ್ಟ್‌ಸ್ಕ್ರಿಪ್ಟ್: ಕ್ಲಾಸಿಕ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ನ ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳು + +ಪಠ್ಯಕ್ರಮದ ಈ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ಶ್ರೇಷ್ಟ ML ನ ಕೆಲವು ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳನ್ನು ಪರಿಚಯಿಸಿಕೊಳ್ಳುತ್ತೀರಿ. ನಾವು ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಹುಡುಕಿ ಈ ತಂತ್ರಗಳನ್ನು ಬಳಸಿದ ಅನ್ವಯಿಕೆಗಳ ಬಗ್ಗೆ ಶ್ವೇತಪತ್ರಗಳು ಮತ್ತು ಲೇಖನಗಳನ್ನು ಕಂಡುಹಿಡಿದಿದ್ದೇವೆ, ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು, ಡೀಪ್ ಲರ್ನಿಂಗ್ ಮತ್ತು AI ಅನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ತಪ್ಪಿಸಿ. ವ್ಯವಹಾರ ವ್ಯವಸ್ಥೆಗಳು, ಪರಿಸರ ಅನ್ವಯಿಕೆಗಳು, ಹಣಕಾಸು, ಕಲೆ ಮತ್ತು ಸಂಸ್ಕೃತಿ ಮತ್ತು ಇನ್ನಷ್ಟು ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ML ಹೇಗೆ ಬಳಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ತಿಳಿಯಿರಿ. + +![chess](../../../translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.kn.jpg) + +> ಫೋಟೋ Alexis Fauvet ಅವರಿಂದ Unsplash ನಲ್ಲಿ + +## ಪಾಠ + +1. [ML ಗಾಗಿ ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳು](1-Applications/README.md) +2. [ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಘಟಕಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ನಲ್ಲಿ ಮಾದರಿ ಡಿಬಗಿಂಗ್](2-Debugging-ML-Models/README.md) + +## ಕ್ರೆಡಿಟ್‌ಗಳು + +"ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳು" ಅನ್ನು [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಮತ್ತು [ಒರ್ನೆಲ್ಲಾ ಅಲ್ಟುನ್ಯಾನ್](https://twitter.com/ornelladotcom) ಸೇರಿದಂತೆ ತಂಡದವರು ಬರೆಯಲಾಗಿದೆ. + +"ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಘಟಕಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ನಲ್ಲಿ ಮಾದರಿ ಡಿಬಗಿಂಗ್" ಅನ್ನು [ರೂತ್ ಯಾಕುಬು](https://twitter.com/ruthieyakubu) ಬರೆಯಲಾಗಿದೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/AGENTS.md b/translations/kn/AGENTS.md new file mode 100644 index 000000000..29da05998 --- /dev/null +++ b/translations/kn/AGENTS.md @@ -0,0 +1,347 @@ + +# AGENTS.md + +## Project Overview + +ಇದು **ಆರಂಭಿಕರಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನ**, ಪೈಥಾನ್ (ಮುಖ್ಯವಾಗಿ ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಬಳಸಿ) ಮತ್ತು R ಬಳಸಿ ಕ್ಲಾಸಿಕ್ ಯಂತ್ರ ಅಧ್ಯಯನ ತತ್ವಗಳನ್ನು ಒಳಗೊಂಡ 12 ವಾರಗಳ, 26 ಪಾಠಗಳ ಸಮಗ್ರ ಪಠ್ಯಕ್ರಮವಾಗಿದೆ. ಈ ರೆಪೊಸಿಟರಿ ಸ್ವಯಂ-ಗತಿಗತ ಅಧ್ಯಯನ ಸಂಪನ್ಮೂಲವಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, ಕೈಯಿಂದ ಮಾಡುವ ಯೋಜನೆಗಳು, ಪ್ರಶ್ನೋತ್ತರಗಳು ಮತ್ತು ನಿಯೋಜನೆಗಳೊಂದಿಗೆ. ಪ್ರತಿ ಪಾಠವು ವಿಶ್ವದ ವಿವಿಧ ಸಂಸ್ಕೃತಿಗಳು ಮತ್ತು ಪ್ರದೇಶಗಳಿಂದ ನೈಜ-ಜಗತ್ತಿನ ಡೇಟಾ ಮೂಲಕ ಯಂತ್ರ ಅಧ್ಯಯನ ತತ್ವಗಳನ್ನು ಅನ್ವೇಷಿಸುತ್ತದೆ. + +ಮುಖ್ಯ ಅಂಶಗಳು: +- **ಶೈಕ್ಷಣಿಕ ವಿಷಯ**: ಯಂತ್ರ ಅಧ್ಯಯನ ಪರಿಚಯ, ರಿಗ್ರೆಶನ್, ವರ್ಗೀಕರಣ, ಗುಂಪುಬದ್ಧತೆ, NLP, ಕಾಲ ಸರಣಿ, ಮತ್ತು ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವನ್ನು ಒಳಗೊಂಡ 26 ಪಾಠಗಳು +- **ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್**: ಪೂರ್ವ ಮತ್ತು ನಂತರದ ಪಾಠ ಮೌಲ್ಯಮಾಪನಗಳೊಂದಿಗೆ Vue.js ಆಧಾರಿತ ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್ +- **ಬಹುಭಾಷಾ ಬೆಂಬಲ**: GitHub Actions ಮೂಲಕ 40+ ಭಾಷೆಗಳಿಗೆ ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳು +- **ದ್ವಿಭಾಷಾ ಬೆಂಬಲ**: ಪಾಠಗಳು ಪೈಥಾನ್ (ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್‌ಗಳು) ಮತ್ತು R (R ಮಾರ್ಕ್‌ಡೌನ್ ಫೈಲ್‌ಗಳು) ಎರಡಲ್ಲಿಯೂ ಲಭ್ಯವಿವೆ +- **ಯೋಜನೆ ಆಧಾರಿತ ಅಧ್ಯಯನ**: ಪ್ರತಿ ವಿಷಯದಲ್ಲಿ ಪ್ರಾಯೋಗಿಕ ಯೋಜನೆಗಳು ಮತ್ತು ನಿಯೋಜನೆಗಳಿವೆ + +## Repository Structure + +``` +ML-For-Beginners/ +├── 1-Introduction/ # ML basics, history, fairness, techniques +├── 2-Regression/ # Regression models with Python/R +├── 3-Web-App/ # Flask web app for ML model deployment +├── 4-Classification/ # Classification algorithms +├── 5-Clustering/ # Clustering techniques +├── 6-NLP/ # Natural Language Processing +├── 7-TimeSeries/ # Time series forecasting +├── 8-Reinforcement/ # Reinforcement learning +├── 9-Real-World/ # Real-world ML applications +├── quiz-app/ # Vue.js quiz application +├── translations/ # Auto-generated translations +└── sketchnotes/ # Visual learning aids +``` + +ಪ್ರತಿ ಪಾಠ ಫೋಲ್ಡರ್ ಸಾಮಾನ್ಯವಾಗಿ ಒಳಗೊಂಡಿರುತ್ತದೆ: +- `README.md` - ಮುಖ್ಯ ಪಾಠ ವಿಷಯ +- `notebook.ipynb` - ಪೈಥಾನ್ ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್ +- `solution/` - ಪರಿಹಾರ ಕೋಡ್ (ಪೈಥಾನ್ ಮತ್ತು R ಆವೃತ್ತಿಗಳು) +- `assignment.md` - ಅಭ್ಯಾಸ ವ್ಯಾಯಾಮಗಳು +- `images/` - ದೃಶ್ಯ ಸಂಪನ್ಮೂಲಗಳು + +## Setup Commands + +### For Python Lessons + +ಬಹುತೇಕ ಪಾಠಗಳು ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಅಗತ್ಯವಿರುವ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ: + +```bash +# ಈಗಾಗಲೇ ಸ್ಥಾಪಿಸಲಾಗದಿದ್ದರೆ Python 3.8+ ಅನ್ನು ಸ್ಥಾಪಿಸಿ +python --version + +# Jupyter ಅನ್ನು ಸ್ಥಾಪಿಸಿ +pip install jupyter + +# ಸಾಮಾನ್ಯ ML ಗ್ರಂಥಾಲಯಗಳನ್ನು ಸ್ಥಾಪಿಸಿ +pip install scikit-learn pandas numpy matplotlib seaborn + +# ನಿರ್ದಿಷ್ಟ ಪಾಠಗಳಿಗೆ, ಪಾಠ-ನಿರ್ದಿಷ್ಟ ಅಗತ್ಯಗಳನ್ನು ಪರಿಶೀಲಿಸಿ +# ಉದಾಹರಣೆ: ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಪಾಠ +pip install flask +``` + +### For R Lessons + +R ಪಾಠಗಳು `solution/R/` ಫೋಲ್ಡರ್‌ಗಳಲ್ಲಿ `.rmd` ಅಥವಾ `.ipynb` ಫೈಲ್‌ಗಳಾಗಿ ಇರುತ್ತವೆ: + +```bash +# R ಮತ್ತು ಅಗತ್ಯ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಸ್ಥಾಪಿಸಿ +# R ಕಾನ್ಸೋಲ್‌ನಲ್ಲಿ: +install.packages(c("tidyverse", "tidymodels", "caret")) +``` + +### For Quiz Application + +ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್ `quiz-app/` ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಇರುವ Vue.js ಅಪ್ಲಿಕೇಶನ್ ಆಗಿದೆ: + +```bash +cd quiz-app +npm install +``` + +### For Documentation Site + +ದಾಖಲೆಗಳನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಚಾಲನೆ ಮಾಡಲು: + +```bash +# ಡಾಕ್ಸಿಫೈ ಅನ್ನು ಸ್ಥಾಪಿಸಿ +npm install -g docsify-cli + +# ರೆಪೊಸಿಟರಿ ರೂಟ್‌ನಿಂದ ಸೇವೆ ನೀಡಿ +docsify serve + +# http://localhost:3000 ನಲ್ಲಿ ಪ್ರವೇಶಿಸಿ +``` + +## Development Workflow + +### Working with Lesson Notebooks + +1. ಪಾಠ ಡೈರೆಕ್ಟರಿಗೆ ನಾವಿಗೇಟ್ ಮಾಡಿ (ಉದಾ: `2-Regression/1-Tools/`) +2. ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್ ತೆರೆಯಿರಿ: + ```bash + jupyter notebook notebook.ipynb + ``` +3. ಪಾಠ ವಿಷಯ ಮತ್ತು ವ್ಯಾಯಾಮಗಳನ್ನು ಮಾಡಿ +4. ಅಗತ್ಯವಿದ್ದರೆ `solution/` ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಪರಿಹಾರಗಳನ್ನು ಪರಿಶೀಲಿಸಿ + +### Python Development + +- ಪಾಠಗಳು ಸಾಮಾನ್ಯ ಪೈಥಾನ್ ಡೇಟಾ ಸೈನ್ಸ್ ಲೈಬ್ರರಿಗಳನ್ನು ಬಳಸುತ್ತವೆ +- ಸಂವಹನಾತ್ಮಕ ಅಧ್ಯಯನಕ್ಕಾಗಿ ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್‌ಗಳು +- ಪ್ರತಿ ಪಾಠದ `solution/` ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಪರಿಹಾರ ಕೋಡ್ ಲಭ್ಯವಿದೆ + +### R Development + +- R ಪಾಠಗಳು `.rmd` ಫಾರ್ಮ್ಯಾಟ್ (R ಮಾರ್ಕ್‌ಡೌನ್) +- ಪರಿಹಾರಗಳು `solution/R/` ಉಪಡೈರೆಕ್ಟರಿಗಳಲ್ಲಿ ಇರುತ್ತವೆ +- R ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಚಾಲನೆ ಮಾಡಲು RStudio ಅಥವಾ R ಕರ್ಣಲ್ ಹೊಂದಿರುವ ಜುಪಿಟರ್ ಬಳಸಿ + +### Quiz Application Development + +```bash +cd quiz-app + +# ಅಭಿವೃದ್ಧಿ ಸರ್ವರ್ ಪ್ರಾರಂಭಿಸಿ +npm run serve +# http://localhost:8080 ನಲ್ಲಿ ಪ್ರವೇಶಿಸಿ + +# ಉತ್ಪಾದನೆಗಾಗಿ ನಿರ್ಮಿಸಿ +npm run build + +# ಲಿಂಟ್ ಮಾಡಿ ಮತ್ತು ಫೈಲ್‌ಗಳನ್ನು ಸರಿಪಡಿಸಿ +npm run lint +``` + +## Testing Instructions + +### Quiz Application Testing + +```bash +cd quiz-app + +# ಕೋಡ್ ಲಿಂಟ್ ಮಾಡಿ +npm run lint + +# ದೋಷಗಳಿಲ್ಲದಿರುವುದನ್ನು ಪರಿಶೀಲಿಸಲು ನಿರ್ಮಿಸಿ +npm run build +``` + +**ಗಮನಿಸಿ**: ಇದು ಮುಖ್ಯವಾಗಿ ಶೈಕ್ಷಣಿಕ ಪಠ್ಯಕ್ರಮ ರೆಪೊಸಿಟರಿ. ಪಾಠ ವಿಷಯಕ್ಕೆ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆಗಳು ಇಲ್ಲ. ಮಾನ್ಯತೆ ಈ ಮೂಲಕ ಮಾಡಲಾಗುತ್ತದೆ: +- ಪಾಠ ವ್ಯಾಯಾಮಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸುವ ಮೂಲಕ +- ನೋಟ್ಬುಕ್ ಸೆಲ್‌ಗಳನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಚಾಲನೆ ಮಾಡುವ ಮೂಲಕ +- ಪರಿಹಾರಗಳಲ್ಲಿ ನಿರೀಕ್ಷಿತ ಫಲಿತಾಂಶಗಳೊಂದಿಗೆ ಔಟ್‌ಪುಟ್ ಪರಿಶೀಲಿಸುವ ಮೂಲಕ + +## Code Style Guidelines + +### Python Code +- PEP 8 ಶೈಲಿ ಮಾರ್ಗಸೂಚಿಗಳನ್ನು ಅನುಸರಿಸಿ +- ಸ್ಪಷ್ಟ, ವಿವರಣಾತ್ಮಕ ಚರ ನಾಮಗಳನ್ನು ಬಳಸಿ +- ಸಂಕೀರ್ಣ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸಿ +- ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್‌ಗಳಲ್ಲಿ ತತ್ವಗಳನ್ನು ವಿವರಿಸುವ ಮಾರ್ಕ್‌ಡೌನ್ ಸೆಲ್‌ಗಳು ಇರಬೇಕು + +### JavaScript/Vue.js (Quiz App) +- Vue.js ಶೈಲಿ ಮಾರ್ಗಸೂಚಿಯನ್ನು ಅನುಸರಿಸುತ್ತದೆ +- `quiz-app/package.json` ನಲ್ಲಿ ESLint ಸಂರಚನೆ +- ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಮತ್ತು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸರಿಪಡಿಸಲು `npm run lint` ಅನ್ನು ಚಾಲನೆ ಮಾಡಿ + +### Documentation +- ಮಾರ್ಕ್‌ಡೌನ್ ಫೈಲ್‌ಗಳು ಸ್ಪಷ್ಟ ಮತ್ತು ಚೆನ್ನಾಗಿ ರಚಿಸಲ್ಪಟ್ಟಿರಬೇಕು +- ಕೋಡ್ ಉದಾಹರಣೆಗಳನ್ನು ಫೆನ್ಸ್ಡ್ ಕೋಡ್ ಬ್ಲಾಕ್‌ಗಳಲ್ಲಿ ಸೇರಿಸಿ +- ಆಂತರಿಕ ಉಲ್ಲೇಖಗಳಿಗೆ ಸಂಬಂಧಿತ ಲಿಂಕ್‌ಗಳನ್ನು ಬಳಸಿ +- ಇತ್ತೀಚಿನ ಸ್ವರೂಪಣಾ ನಿಯಮಗಳನ್ನು ಅನುಸರಿಸಿ + +## Build and Deployment + +### Quiz Application Deployment + +ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು Azure Static Web Apps ಗೆ ನಿಯೋಜಿಸಬಹುದು: + +1. **ಪೂರ್ವಾಪೇಕ್ಷಿತಗಳು**: + - Azure ಖಾತೆ + - GitHub ರೆಪೊಸಿಟರಿ (ಹಾಗೂ ಫೋರ್ಕ್ ಮಾಡಲಾಗಿದೆ) + +2. **Azure ಗೆ ನಿಯೋಜಿಸಿ**: + - Azure Static Web App ಸಂಪನ್ಮೂಲವನ್ನು ರಚಿಸಿ + - GitHub ರೆಪೊಸಿಟರಿಯನ್ನು ಸಂಪರ್ಕಿಸಿ + - ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಳವನ್ನು ಸೆಟ್ ಮಾಡಿ: `/quiz-app` + - ಔಟ್‌ಪುಟ್ ಸ್ಥಳವನ್ನು ಸೆಟ್ ಮಾಡಿ: `dist` + - Azure ಸ್ವಯಂಚಾಲಿತವಾಗಿ GitHub Actions ವರ್ಕ್‌ಫ್ಲೋ ರಚಿಸುತ್ತದೆ + +3. **GitHub Actions Workflow**: + - `.github/workflows/azure-static-web-apps-*.yml` ನಲ್ಲಿ ವರ್ಕ್‌ಫ್ಲೋ ಫೈಲ್ ರಚಿಸಲಾಗಿದೆ + - ಮುಖ್ಯ ಶಾಖೆಗೆ ಪುಷ್ ಮಾಡಿದಾಗ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ಮಿಸಿ ನಿಯೋಜಿಸುತ್ತದೆ + +### Documentation PDF + +ದಾಖಲೆಗಳಿಂದ PDF ರಚಿಸಿ: + +```bash +npm install +npm run convert +``` + +## Translation Workflow + +**ಮುಖ್ಯ**: ಅನುವಾದಗಳು GitHub Actions ಮೂಲಕ Co-op Translator ಬಳಸಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿವೆ. + +- `main` ಶಾಖೆಗೆ ಬದಲಾವಣೆಗಳು ಪುಷ್ ಮಾಡಿದಾಗ ಅನುವಾದಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲಾಗುತ್ತವೆ +- **ವಿಷಯವನ್ನು ಕೈಯಿಂದ ಅನುವಾದಿಸಬೇಡಿ** - ವ್ಯವಸ್ಥೆ ಇದನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ +- `.github/workflows/co-op-translator.yml` ನಲ್ಲಿ ವರ್ಕ್‌ಫ್ಲೋ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ +- ಅನುವಾದಕ್ಕೆ Azure AI/OpenAI ಸೇವೆಗಳನ್ನು ಬಳಸುತ್ತದೆ +- 40+ ಭಾಷೆಗಳಿಗೆ ಬೆಂಬಲ ನೀಡುತ್ತದೆ + +## Contributing Guidelines + +### For Content Contributors + +1. **ರೆಪೊಸಿಟರಿಯನ್ನು ಫೋರ್ಕ್ ಮಾಡಿ** ಮತ್ತು ಫೀಚರ್ ಶಾಖೆಯನ್ನು ರಚಿಸಿ +2. **ಪಾಠ ವಿಷಯದಲ್ಲಿ ಬದಲಾವಣೆ ಮಾಡಿ** - ಹೊಸ ಪಾಠಗಳನ್ನು ಸೇರಿಸುವಾಗ ಅಥವಾ ನವೀಕರಿಸುವಾಗ +3. **ಅನುವಾದಿತ ಫೈಲ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಬೇಡಿ** - ಅವು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲ್ಪಟ್ಟಿವೆ +4. **ನಿಮ್ಮ ಕೋಡ್ ಪರೀಕ್ಷಿಸಿ** - ಎಲ್ಲಾ ನೋಟ್ಬುಕ್ ಸೆಲ್‌ಗಳು ಯಶಸ್ವಿಯಾಗಿ ಚಾಲನೆ ಆಗುತ್ತವೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ +5. **ಲಿಂಕ್‌ಗಳು ಮತ್ತು ಚಿತ್ರಗಳು ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತವೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ** +6. **ಸ್ಪಷ್ಟ ವಿವರಣೆಯೊಂದಿಗೆ ಪುಲ್ ರಿಕ್ವೆಸ್ಟ್ ಸಲ್ಲಿಸಿ** + +### Pull Request Guidelines + +- **ಶೀರ್ಷಿಕೆ ಸ್ವರೂಪ**: `[ವಿಭಾಗ] ಬದಲಾವಣೆಗಳ ಸಂಕ್ಷಿಪ್ತ ವಿವರಣೆ` + - ಉದಾ: `[Regression] ಪಾಠ 5 ರಲ್ಲಿ ಟೈಪೋ ಸರಿಪಡಿಸಿ` + - ಉದಾ: `[Quiz-App] ಅವಲಂಬನೆಗಳನ್ನು ನವೀಕರಿಸಿ` +- **ಸಲ್ಲಿಸುವ ಮೊದಲು**: + - ಎಲ್ಲಾ ನೋಟ್ಬುಕ್ ಸೆಲ್‌ಗಳು ದೋಷರಹಿತವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ + - ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್ ಬದಲಾಯಿಸಿದರೆ `npm run lint` ಅನ್ನು ಚಾಲನೆ ಮಾಡಿ + - ಮಾರ್ಕ್‌ಡೌನ್ ಸ್ವರೂಪಣೆಯನ್ನು ಪರಿಶೀಲಿಸಿ + - ಯಾವುದೇ ಹೊಸ ಕೋಡ್ ಉದಾಹರಣೆಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ +- **PR ನಲ್ಲಿ ಇರಬೇಕಾದವು**: + - ಬದಲಾವಣೆಗಳ ವಿವರಣೆ + - ಬದಲಾವಣೆಗಳ ಕಾರಣ + - UI ಬದಲಾವಣೆಗಳಿದ್ದರೆ ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ಗಳು +- **ನಡವಳಿಕೆ ನಿಯಮಾವಳಿ**: [Microsoft Open Source Code of Conduct](CODE_OF_CONDUCT.md) ಅನುಸರಿಸಿ +- **CLA**: ನೀವು ಕೊಡುಗೆದಾರರ ಪರವಾನಗಿ ಒಪ್ಪಂದವನ್ನು ಸಹಿ ಮಾಡಬೇಕಾಗುತ್ತದೆ + +## Lesson Structure + +ಪ್ರತಿ ಪಾಠವು ಸुसಂಯೋಜಿತ ಮಾದರಿಯನ್ನು ಅನುಸರಿಸುತ್ತದೆ: + +1. **ಪೂರ್ವ-ವಕ್ತೃತ್ವ ಪ್ರಶ್ನೋತ್ತರ** - ಮೂಲಭೂತ ಜ್ಞಾನವನ್ನು ಪರೀಕ್ಷಿಸಿ +2. **ಪಾಠ ವಿಷಯ** - ಬರಹದ ಸೂಚನೆಗಳು ಮತ್ತು ವಿವರಣೆಗಳು +3. **ಕೋಡ್ ಪ್ರದರ್ಶನಗಳು** - ನೋಟ್ಬುಕ್‌ಗಳಲ್ಲಿ ಕೈಯಿಂದ ಮಾಡುವ ಉದಾಹರಣೆಗಳು +4. **ಜ್ಞಾನ ಪರಿಶೀಲನೆಗಳು** - ಸಂಪೂರ್ಣವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಪರಿಶೀಲನೆ +5. **ಸವಾಲು** - ತತ್ವಗಳನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಅನ್ವಯಿಸಿ +6. **ನಿಯೋಜನೆ** - ವಿಸ್ತೃತ ಅಭ್ಯಾಸ +7. **ಪೋಸ್ಟ್-ವಕ್ತೃತ್ವ ಪ್ರಶ್ನೋತ್ತರ** - ಅಧ್ಯಯನ ಫಲಿತಾಂಶಗಳನ್ನು ಅಳೆಯಿರಿ + +## Common Commands Reference + +```bash +# ಪೈಥಾನ್/ಜುಪಿಟರ್ +jupyter notebook # ಜುಪಿಟರ್ ಸರ್ವರ್ ಪ್ರಾರಂಭಿಸಿ +jupyter notebook notebook.ipynb # ನಿರ್ದಿಷ್ಟ ನೋಟ್ಬುಕ್ ತೆರೆಯಿರಿ +pip install -r requirements.txt # ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ (ಲಭ್ಯವಿದ್ದಲ್ಲಿ) + +# ಕ್ವಿಜ್ ಅಪ್ಲಿಕೇಶನ್ +cd quiz-app +npm install # ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ +npm run serve # ಅಭಿವೃದ್ಧಿ ಸರ್ವರ್ +npm run build # ಉತ್ಪಾದನಾ ನಿರ್ಮಾಣ +npm run lint # ಲಿಂಟ್ ಮಾಡಿ ಮತ್ತು ಸರಿಪಡಿಸಿ + +# ಡಾಕ್ಯುಮೆಂಟೇಶನ್ +docsify serve # ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಅನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಸೇವೆ ಮಾಡಿ +npm run convert # PDF ರಚಿಸಿ + +# ಗಿಟ್ ವರ್ಕ್‌ಫ್ಲೋ +git checkout -b feature/my-change # ವೈಶಿಷ್ಟ್ಯ ಶಾಖೆಯನ್ನು ರಚಿಸಿ +git add . # ಬದಲಾವಣೆಗಳನ್ನು ಹಂತಗೊಳಿಸಿ +git commit -m "Description" # ಬದಲಾವಣೆಗಳನ್ನು ಕಮಿಟ್ ಮಾಡಿ +git push origin feature/my-change # ರಿಮೋಟ್‌ಗೆ ಪುಷ್ ಮಾಡಿ +``` + +## Additional Resources + +- **Microsoft Learn Collection**: [ML for Beginners modules](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +- **Quiz App**: [Online quizzes](https://ff-quizzes.netlify.app/en/ml/) +- **Discussion Board**: [GitHub Discussions](https://github.com/microsoft/ML-For-Beginners/discussions) +- **Video Walkthroughs**: [YouTube Playlist](https://aka.ms/ml-beginners-videos) + +## Key Technologies + +- **Python**: ಯಂತ್ರ ಅಧ್ಯಯನ ಪಾಠಗಳ ಪ್ರಮುಖ ಭಾಷೆ (ಸ್ಕಿಕಿಟ್-ಲರ್ನ್, ಪಾಂಡಾಸ್, ನಂಪೈ, ಮ್ಯಾಟ್‌ಪ್ಲಾಟ್‌ಲಿಬ್) +- **R**: tidyverse, tidymodels, caret ಬಳಸಿ ಪರ್ಯಾಯ ಅನುಷ್ಠಾನ +- **Jupyter**: ಪೈಥಾನ್ ಪಾಠಗಳಿಗಾಗಿ ಸಂವಹನಾತ್ಮಕ ನೋಟ್ಬುಕ್‌ಗಳು +- **R Markdown**: R ಪಾಠಗಳಿಗಾಗಿ ದಾಖಲೆಗಳು +- **Vue.js 3**: ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್ ಫ್ರೇಮ್ವರ್ಕ್ +- **Flask**: ಯಂತ್ರ ಮಾದರಿ ನಿಯೋಜನೆಗಾಗಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಫ್ರೇಮ್ವರ್ಕ್ +- **Docsify**: ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಸೈಟ್ ಜನರೇಟರ್ +- **GitHub Actions**: ಸಿಐ/ಸಿಡಿ ಮತ್ತು ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳು + +## Security Considerations + +- **ಕೋಡ್‌ನಲ್ಲಿ ಯಾವುದೇ ರಹಸ್ಯಗಳಿಲ್ಲ**: API ಕೀಗಳು ಅಥವಾ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಎಂದಿಗೂ ಕಮಿಟ್ ಮಾಡಬೇಡಿ +- **ಅವಲಂಬನೆಗಳು**: npm ಮತ್ತು pip ಪ್ಯಾಕೇಜುಗಳನ್ನು ನವೀಕರಿಸಿ ಇಡಿ +- **ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್**: Flask ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಉದಾಹರಣೆಗಳಲ್ಲಿ ಮೂಲಭೂತ ಇನ್‌ಪುಟ್ ಮಾನ್ಯತೆ ಇದೆ +- **ಸೂಕ್ಷ್ಮ ಡೇಟಾ**: ಉದಾಹರಣಾ ಡೇಟಾಸೆಟ್‌ಗಳು ಸಾರ್ವಜನಿಕ ಮತ್ತು ಸೂಕ್ಷ್ಮವಲ್ಲ + +## Troubleshooting + +### Jupyter Notebooks + +- **ಕರ್ಣಲ್ ಸಮಸ್ಯೆಗಳು**: ಸೆಲ್‌ಗಳು ಹ್ಯಾಂಗ್ ಆಗಿದ್ದರೆ ಕರ್ಣಲ್ ಮರುಪ್ರಾರಂಭಿಸಿ: Kernel → Restart +- **ಆಮದು ದೋಷಗಳು**: ಎಲ್ಲಾ ಅಗತ್ಯ ಪ್ಯಾಕೇಜುಗಳು pip ಮೂಲಕ ಸ್ಥಾಪಿತವಾಗಿವೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ +- **ಪಥ ಸಮಸ್ಯೆಗಳು**: ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಅವುಗಳ ಒಳಗೊಂಡಿರುವ ಡೈರೆಕ್ಟರಿಯಿಂದ ಚಾಲನೆ ಮಾಡಿ + +### Quiz Application + +- **npm install ವಿಫಲ**: npm ಕ್ಯಾಶೆ ತೆರವುಗೊಳಿಸಿ: `npm cache clean --force` +- **ಪೋರ್ಟ್ ಸಂಘರ್ಷಗಳು**: ಪೋರ್ಟ್ ಬದಲಾಯಿಸಲು: `npm run serve -- --port 8081` +- **ನಿರ್ಮಾಣ ದೋಷಗಳು**: `node_modules` ಅಳಿಸಿ ಮತ್ತು ಮರುಸ್ಥಾಪಿಸಿ: `rm -rf node_modules && npm install` + +### R Lessons + +- **ಪ್ಯಾಕೇಜ್ ಸಿಗಲಿಲ್ಲ**: ಸ್ಥಾಪಿಸಲು: `install.packages("package-name")` +- **RMarkdown ರೆಂಡರಿಂಗ್**: rmarkdown ಪ್ಯಾಕೇಜ್ ಸ್ಥಾಪಿತವಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ +- **ಕರ್ಣಲ್ ಸಮಸ್ಯೆಗಳು**: ಜುಪಿಟರ್‌ಗೆ IRkernel ಸ್ಥಾಪಿಸಬೇಕಾಗಬಹುದು + +## Project-Specific Notes + +- ಇದು ಮುಖ್ಯವಾಗಿ **ಅಧ್ಯಯನ ಪಠ್ಯಕ್ರಮ**, ಉತ್ಪಾದನಾ ಕೋಡ್ ಅಲ್ಲ +- ಕೈಯಿಂದ ಮಾಡುವ ಅಭ್ಯಾಸದ ಮೂಲಕ **ಯಂತ್ರ ಅಧ್ಯಯನ ತತ್ವಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ** ಮೇಲೆ ಗಮನ +- ಕೋಡ್ ಉದಾಹರಣೆಗಳು **ಸ್ಪಷ್ಟತೆಗಾಗಿ ಆದ್ಯತೆ ನೀಡಲಾಗಿದೆ** +- ಬಹುತೇಕ ಪಾಠಗಳು **ಸ್ವತಂತ್ರವಾಗಿವೆ** ಮತ್ತು ಸ್ವತಃ ಪೂರ್ಣಗೊಳ್ಳಬಹುದು +- **ಪರಿಹಾರಗಳು ಲಭ್ಯವಿವೆ**, ಆದರೆ ಕಲಿಯುವವರು ಮೊದಲು ವ್ಯಾಯಾಮಗಳನ್ನು ಪ್ರಯತ್ನಿಸಬೇಕು +- ರೆಪೊಸಿಟರಿ **Docsify** ಬಳಸಿ ವೆಬ್ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಹೊಂದಿದೆ, ನಿರ್ಮಾಣ ಹಂತವಿಲ್ಲದೆ +- **ಸ್ಕೆಚ್‌ನೋಟ್ಸ್** ತತ್ವಗಳ ದೃಶ್ಯ ಸಾರಾಂಶಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ +- **ಬಹುಭಾಷಾ ಬೆಂಬಲ** ವಿಷಯವನ್ನು ಜಾಗತಿಕವಾಗಿ ಲಭ್ಯವನ್ನಾಗಿಸುತ್ತದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/CODE_OF_CONDUCT.md b/translations/kn/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..ce0cbc92c --- /dev/null +++ b/translations/kn/CODE_OF_CONDUCT.md @@ -0,0 +1,25 @@ + +# ಮೈಕ್ರೋಸಾಫ್ಟ್ ಓಪನ್ ಸೋರ್ಸ್ ನಡವಳಿಕೆ ಸಂಹಿತೆ + +ಈ ಯೋಜನೆ [ಮೈಕ್ರೋಸಾಫ್ಟ್ ಓಪನ್ ಸೋರ್ಸ್ ನಡವಳಿಕೆ ಸಂಹಿತೆ](https://opensource.microsoft.com/codeofconduct/) ಅನ್ನು ಅಂಗೀಕರಿಸಿದೆ. + +ಸಂಪನ್ಮೂಲಗಳು: + +- [ಮೈಕ್ರೋಸಾಫ್ಟ್ ಓಪನ್ ಸೋರ್ಸ್ ನಡವಳಿಕೆ ಸಂಹಿತೆ](https://opensource.microsoft.com/codeofconduct/) +- [ಮೈಕ್ರೋಸಾಫ್ಟ್ ನಡವಳಿಕೆ ಸಂಹಿತೆ FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- ಪ್ರಶ್ನೆಗಳು ಅಥವಾ ಚಿಂತೆಗಳಿಗಾಗಿ [opencode@microsoft.com](mailto:opencode@microsoft.com) ಸಂಪರ್ಕಿಸಿ + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/CONTRIBUTING.md b/translations/kn/CONTRIBUTING.md new file mode 100644 index 000000000..a4780dbe2 --- /dev/null +++ b/translations/kn/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# ಕೊಡುಗೆ ನೀಡುವುದು + +ಈ ಯೋಜನೆ ಕೊಡುಗೆಗಳು ಮತ್ತು ಸಲಹೆಗಳನ್ನು ಸ್ವಾಗತಿಸುತ್ತದೆ. ಬಹುತೇಕ ಕೊಡುಗೆಗಳಿಗೆ ನೀವು ಒಪ್ಪಿಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ +ನೀವು ನಿಮ್ಮ ಕೊಡುಗೆಯನ್ನು ಬಳಸಲು ಹಕ್ಕು ಹೊಂದಿದ್ದೀರಿ ಮತ್ತು ನಿಜವಾಗಿಯೂ ಹಕ್ಕುಗಳನ್ನು ನಮಗೆ ನೀಡುತ್ತೀರಿ ಎಂದು ಘೋಷಿಸುವ ಕೊಡುಗೆದಾರರ ಪರವಾನಗಿ ಒಪ್ಪಂದ (CLA). ವಿವರಗಳಿಗೆ ಭೇಟಿ ನೀಡಿ +https://cla.microsoft.com. + +> ಮಹತ್ವದ ಮಾಹಿತಿ: ಈ ರೆಪೊದಲ್ಲಿ ಪಠ್ಯವನ್ನು ಅನುವಾದಿಸುವಾಗ, ದಯವಿಟ್ಟು ಯಂತ್ರ ಅನುವಾದವನ್ನು ಬಳಸಬೇಡಿ. ನಾವು ಸಮುದಾಯದ ಮೂಲಕ ಅನುವಾದಗಳನ್ನು ಪರಿಶೀಲಿಸುವುದರಿಂದ, ದಯವಿಟ್ಟು ನೀವು ಪರಿಣತಿ ಹೊಂದಿರುವ ಭಾಷೆಗಳಲ್ಲಿ ಮಾತ್ರ ಅನುವಾದಗಳಿಗೆ ಸ್ವಯಂಸೇವಕನಾಗಿ ಸೇರಿ. + +ನೀವು ಪುಲ್ ರಿಕ್ವೆಸ್ಟ್ ಸಲ್ಲಿಸಿದಾಗ, CLA-ಬಾಟ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನೀವು CLA ಒದಗಿಸಬೇಕೇ ಎಂದು ನಿರ್ಧರಿಸಿ PR ಅನ್ನು ಸೂಕ್ತವಾಗಿ ಅಲಂಕರಿಸುತ್ತದೆ (ಉದಾ: ಲೇಬಲ್, ಕಾಮೆಂಟ್). ಬಾಟ್ ನೀಡುವ ಸೂಚನೆಗಳನ್ನು ಅನುಸರಿಸಿ. ನಮ್ಮ CLA ಬಳಸುವ ಎಲ್ಲಾ ರೆಪೊಗಳಲ್ಲಿಯೂ ನೀವು ಇದನ್ನು ಒಂದೇ ಬಾರಿ ಮಾಡಬೇಕಾಗುತ್ತದೆ. + +ಈ ಯೋಜನೆ [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) ಅನ್ನು ಅಂಗೀಕರಿಸಿದೆ. +ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) ಅನ್ನು ನೋಡಿ +ಅಥವಾ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಪ್ರಶ್ನೆಗಳು ಅಥವಾ ಕಾಮೆಂಟ್‌ಗಳಿಗೆ [opencode@microsoft.com](mailto:opencode@microsoft.com) ಸಂಪರ್ಕಿಸಿ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/PyTorch_Fundamentals.ipynb b/translations/kn/PyTorch_Fundamentals.ipynb new file mode 100644 index 000000000..e2baf0fb9 --- /dev/null +++ b/translations/kn/PyTorch_Fundamentals.ipynb @@ -0,0 +1,2840 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "gpuType": "T4", + "authorship_tag": "ABX9TyOgv0AozH1FKQBD+RkgT2bV", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "accelerator": "GPU", + "coopTranslator": { + "original_hash": "0ca21b6ee62904d616f2e36dc1cf0da7", + "translation_date": "2025-12-19T16:17:17+00:00", + "source_file": "PyTorch_Fundamentals.ipynb", + "language_code": "kn" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"ಕೋಲಾಬ್‌ನಲ್ಲಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EHh5JllMh1rG", + "outputId": "f55755ad-c369-414c-85ec-6e9d4f061a02", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'2.2.1+cu121'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 1 + } + ], + "source": [ + "import torch\n", + "torch.__version__" + ] + }, + { + "cell_type": "code", + "source": [ + "print(\"I am excited to run this\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "UPlb-duwXAfz", + "outputId": "cfd687e4-1238-49f4-ab6b-ee1305b740d2" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "I am excited to run this\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import torch\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "print(torch.__version__)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "byWVlJ9wXDSk", + "outputId": "fd74a5c4-4d4a-41b2-ef3c-562ea3e4811f" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "2.2.1+cu121\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# **ಟೆನ್ಸರ್‌ಗಳಿಗೆ ಪರಿಚಯ**\n" + ], + "metadata": { + "id": "Osm80zoEYklS" + } + }, + { + "cell_type": "code", + "source": [ + "# scalar\n", + "scalar = torch.tensor(7)\n", + "scalar" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "-o8wvJ-VXZmI", + "outputId": "558816f5-1205-4de1-fe1f-2f96e9bd79e6" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(7)" + ] + }, + "metadata": {}, + "execution_count": 4 + } + ] + }, + { + "cell_type": "code", + "source": [ + "scalar.ndim" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mCZ2tXC4Y_Sg", + "outputId": "2d86dbdc-56e1-45c6-d3dd-14515f2a457a" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ] + }, + { + "cell_type": "code", + "source": [ + "scalar.item()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ssN00By0ZQgS", + "outputId": "490f40d1-5135-4969-a6d3-c8c902cdc473" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "7" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ] + }, + { + "cell_type": "code", + "source": [ + "# vector\n", + "vector = torch.tensor([7, 7])\n", + "vector\n", + "#vector.ndim\n", + "#vector.item()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Bws__5wlZnmF", + "outputId": "944e38f9-5ba1-4ddc-a9c6-cfb6a19bb488" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([7, 7])" + ] + }, + "metadata": {}, + "execution_count": 7 + } + ] + }, + { + "cell_type": "code", + "source": [ + "vector.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9pjCvnsZZzNG", + "outputId": "e030a4da-8f81-4858-fbce-86da2aaafe52" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.Size([2])" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ] + }, + { + "cell_type": "code", + "source": [ + "# Matrix\n", + "MATRIX = torch.tensor([[7, 8],[9, 10]])\n", + "MATRIX" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "a747hI9SaBGW", + "outputId": "af835ddb-81ff-4981-badb-441567194d15" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[ 7, 8],\n", + " [ 9, 10]])" + ] + }, + "metadata": {}, + "execution_count": 9 + } + ] + }, + { + "cell_type": "code", + "source": [ + "MATRIX.ndim" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XdTfFa7vaRUj", + "outputId": "0fbbab9c-8263-4cad-a380-0d2a16ca499e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2" + ] + }, + "metadata": {}, + "execution_count": 10 + } + ] + }, + { + "cell_type": "code", + "source": [ + "MATRIX[0]\n", + "MATRIX[1]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TFeD3jSDafm7", + "outputId": "69b44ab3-5ba7-451a-c6b2-f019a03d0c96" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 9, 10])" + ] + }, + "metadata": {}, + "execution_count": 11 + } + ] + }, + { + "cell_type": "code", + "source": [ + "# Tensor\n", + "TENSOR = torch.tensor([[[1, 2, 3],[3,6,9], [2,4,5]]])\n", + "TENSOR" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ic3cE47tah42", + "outputId": "f250e295-91de-43ec-9d80-588a6fe0abde" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[[1, 2, 3],\n", + " [3, 6, 9],\n", + " [2, 4, 5]]])" + ] + }, + "metadata": {}, + "execution_count": 12 + } + ] + }, + { + "cell_type": "code", + "source": [ + "TENSOR.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Wvjf5fczbAM1", + "outputId": "9c72b5b8-bafe-4ae7-9883-b051e209eada" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.Size([1, 3, 3])" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ] + }, + { + "cell_type": "code", + "source": [ + "TENSOR.ndim" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mwtXZwiMbN3m", + "outputId": "331a5e36-b1b0-4a5f-a9b8-e7049cbaa8f9" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3" + ] + }, + "metadata": {}, + "execution_count": 14 + } + ] + }, + { + "cell_type": "code", + "source": [ + "TENSOR[0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vzdZu_IfbP3J", + "outputId": "e24e7e71-e365-412d-ff50-fc094b56d2f3" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 2, 3],\n", + " [3, 6, 9],\n", + " [2, 4, 5]])" + ] + }, + "metadata": {}, + "execution_count": 15 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# ಯಾದೃಚ್ಛಿಕ ಟೆನ್ಸರ್\n" + ], + "metadata": { + "id": "A8OL9eWfcRrJ" + } + }, + { + "cell_type": "code", + "source": [ + "random_tensor = torch.rand(3,4)\n", + "random_tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hAqSDE1EcVS_", + "outputId": "946171c3-d054-400c-f893-79110356888c" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0.4414, 0.7681, 0.8385, 0.3166],\n", + " [0.0468, 0.5812, 0.0670, 0.9173],\n", + " [0.2959, 0.3276, 0.7411, 0.4643]])" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ] + }, + { + "cell_type": "code", + "source": [ + "random_tensor.ndim" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "g4fvPE5GcwzP", + "outputId": "8737f36b-6864-4059-eaed-6f9156c22306" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ] + }, + { + "cell_type": "code", + "source": [ + "random_tensor.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XsAg99QmdAU6", + "outputId": "35467c11-257c-4f16-99aa-eca930bcbc36" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.Size([3, 4])" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ] + }, + { + "cell_type": "code", + "source": [ + "random_tensor.size()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cii1pNdVdB68", + "outputId": "fc8d2de6-9215-43de-99f7-7b0d7f7d20fa" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.Size([3, 4])" + ] + }, + "metadata": {}, + "execution_count": 19 + } + ] + }, + { + "cell_type": "code", + "source": [ + "random_image_tensor = torch.rand(size=(3, 224, 224)) #color channels, height, width\n", + "random_image_tensor.ndim, random_image_tensor.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "aTKq2j0cdDjb", + "outputId": "6be42057-20b9-4faf-d79d-8b65c42cc27e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(3, torch.Size([3, 224, 224]))" + ] + }, + "metadata": {}, + "execution_count": 20 + } + ] + }, + { + "cell_type": "code", + "source": [ + "random_tensor_ofownsize = torch.rand(size=(5,10,10))\n", + "random_tensor_ofownsize.ndim, random_tensor_ofownsize.shape\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IyhDdj-Pd6nC", + "outputId": "43e5e334-6d4d-4b67-f87d-7d364c6d8c67" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(3, torch.Size([5, 10, 10]))" + ] + }, + "metadata": {}, + "execution_count": 21 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "ಶೂನ್ಯಗಳು ಮತ್ತು ಒಂದರ ಟೆನ್ಸರ್\n" + ], + "metadata": { + "id": "UOJW08uOert_" + } + }, + { + "cell_type": "code", + "source": [ + "zero = torch.zeros(size=(3, 4))\n", + "zero" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "uGvXtaXyefie", + "outputId": "d40d3e28-8667-4d2f-8b62-f0829c6162ad" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0., 0., 0., 0.],\n", + " [0., 0., 0., 0.],\n", + " [0., 0., 0., 0.]])" + ] + }, + "metadata": {}, + "execution_count": 22 + } + ] + }, + { + "cell_type": "code", + "source": [ + "zero*random_tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "OyUkUPkDe0uH", + "outputId": "26c2e4be-36ba-4c6c-9a90-2704ec135828" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0., 0., 0., 0.],\n", + " [0., 0., 0., 0.],\n", + " [0., 0., 0., 0.]])" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ] + }, + { + "cell_type": "code", + "source": [ + "ones = torch.ones(size=(3, 4))\n", + "ones\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "y_Ac62Aqe82G", + "outputId": "291de5d9-b9df-49de-c9d1-d098e3e9f4d8" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1., 1., 1., 1.],\n", + " [1., 1., 1., 1.],\n", + " [1., 1., 1., 1.]])" + ] + }, + "metadata": {}, + "execution_count": 24 + } + ] + }, + { + "cell_type": "code", + "source": [ + "ones.dtype" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TvGOA9odfIEO", + "outputId": "45949ef4-6649-4b6c-d6af-2d4bfb8de832" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.float32" + ] + }, + "metadata": {}, + "execution_count": 25 + } + ] + }, + { + "cell_type": "code", + "source": [ + "ones*zero" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "--pTyge-fI-8", + "outputId": "c4d9bb7e-829b-43db-e2db-b1a2d64e61f0" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0., 0., 0., 0.],\n", + " [0., 0., 0., 0.],\n", + " [0., 0., 0., 0.]])" + ] + }, + "metadata": {}, + "execution_count": 26 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "ಟೆನ್ಸರ್‌ಗಳ ವ್ಯಾಪ್ತಿ, ಟೆನ್ಸರ್-ಹೋಲುವದು\n" + ], + "metadata": { + "id": "qDcc7Z36fSJF" + } + }, + { + "cell_type": "code", + "source": [ + "one_to_ten = torch.arange(start = 1, end = 11, step = 1)\n", + "one_to_ten" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "w3CZB4zUfR1s", + "outputId": "197fcba1-da0a-4b4a-ed11-3974bd6c01aa" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])" + ] + }, + "metadata": {}, + "execution_count": 27 + } + ] + }, + { + "cell_type": "code", + "source": [ + "ten_zeros = torch.zeros_like(one_to_ten)\n", + "ten_zeros" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WZh99BwVfRy8", + "outputId": "51ef8bfb-6fa0-4099-ff66-b97d65b2ddea" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])" + ] + }, + "metadata": {}, + "execution_count": 28 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "ಟೆನ್ಸರ್ ಡೇಟಾಟೈಪ್ಸ್\n" + ], + "metadata": { + "id": "pGGhgsbUgqbW" + } + }, + { + "cell_type": "code", + "source": [ + "float_32_tensor = torch.tensor([3.0, 6.0,9.0], dtype = None, device = None, requires_grad = False)\n", + "float_32_tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "JORJl4XkfRsx", + "outputId": "71114171-0f49-481f-b6fc-6cb48e2fb895" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([3., 6., 9.])" + ] + }, + "metadata": {}, + "execution_count": 29 + } + ] + }, + { + "cell_type": "code", + "source": [ + "float_32_tensor.dtype" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "6wOPPwGyfRLn", + "outputId": "f23776a1-b682-404a-9f67-d5bcb0402666" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.float32" + ] + }, + "metadata": {}, + "execution_count": 30 + } + ] + }, + { + "cell_type": "code", + "source": [ + "float_16_tensor = float_32_tensor.type(torch.float16)\n", + "float_16_tensor.dtype" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tFsHCvmZfOYe", + "outputId": "d3aa305a-7591-47f5-97fd-61bff60b44bd" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.float16" + ] + }, + "metadata": {}, + "execution_count": 31 + } + ] + }, + { + "cell_type": "code", + "source": [ + "float_16_tensor*float_32_tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TQiCGTPuwq0q", + "outputId": "98750fce-1ca3-4889-e269-8b753efdea96" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 9., 36., 81.])" + ] + }, + "metadata": {}, + "execution_count": 32 + } + ] + }, + { + "cell_type": "code", + "source": [ + "int_32_tensor = torch.tensor([3, 6, 9], dtype = torch.int32)\n", + "int_32_tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5hlrLvGUw5D_", + "outputId": "41d890a0-9aee-446c-d906-631ce2ab0995" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([3, 6, 9], dtype=torch.int32)" + ] + }, + "metadata": {}, + "execution_count": 33 + } + ] + }, + { + "cell_type": "code", + "source": [ + "int_32_tensor*float_32_tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ihApD9u3xTNW", + "outputId": "d295eed0-6996-4e0f-8502-ff4b55cd1373" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 9., 36., 81.])" + ] + }, + "metadata": {}, + "execution_count": 34 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x = torch.arange(0,100,10)" + ], + "metadata": { + "id": "utKhlb_KxWDQ" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "x" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "p78D74E9Rj7Y", + "outputId": "781a1614-a900-41f5-9e5d-358f0b2390aa" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])" + ] + }, + "metadata": {}, + "execution_count": 36 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x.min()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4BcSs5NeRkcj", + "outputId": "3f24a8dc-58e9-4a5f-9834-e85856a34f9d" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0)" + ] + }, + "metadata": {}, + "execution_count": 37 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x.max()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hinqvXVLRm4q", + "outputId": "5c7d8a53-3913-4ac1-bba3-5ba8ff68250a" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(90)" + ] + }, + "metadata": {}, + "execution_count": 38 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.mean(x.type(torch.float32))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "k7okc0_vRpnB", + "outputId": "91e5494f-dc57-417c-ea4d-25dbc547c893" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(45.)" + ] + }, + "metadata": {}, + "execution_count": 39 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x.type(torch.float32).mean()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "29QcDTjHRq10", + "outputId": "62937c6c-78e0-49f2-dde3-1543ee8f7907" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(45.)" + ] + }, + "metadata": {}, + "execution_count": 40 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x.sum()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wlpY_G_sbdKF", + "outputId": "475d8258-af65-4011-a258-b93d4d8142d4" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(450)" + ] + }, + "metadata": {}, + "execution_count": 41 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x.argmax()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GT6HJzwhbk4n", + "outputId": "2e455c20-c322-4bcf-d07c-1259d3ccefc6" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(9)" + ] + }, + "metadata": {}, + "execution_count": 42 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x.argmin()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "egL3oi2Mb19P", + "outputId": "f71fb32f-6338-44a3-b377-75bea0a3ab54" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0)" + ] + }, + "metadata": {}, + "execution_count": 43 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "p2U8DZKib3DP", + "outputId": "b9f613b9-74e9-45f4-ed01-05babb6a6793" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0)" + ] + }, + "metadata": {}, + "execution_count": 44 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[9]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "24qBFlGYcABe", + "outputId": "5813cfcb-7f63-4bd7-ee46-f95ccbfda939" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(90)" + ] + }, + "metadata": {}, + "execution_count": 45 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x = torch.arange(1, 10)\n", + "x.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0GPOxEzkcBHO", + "outputId": "aefbd903-4f4c-4d2c-c90f-eccd682fe018" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.Size([9])" + ] + }, + "metadata": {}, + "execution_count": 46 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_reshaped = x.reshape(1,9)\n", + "x_reshaped, x_reshaped.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "spmRgQjwddgp", + "outputId": "85a7c55c-2909-4ea2-fc68-386dddc65742" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(tensor([[1, 2, 3, 4, 5, 6, 7, 8, 9]]), torch.Size([1, 9]))" + ] + }, + "metadata": {}, + "execution_count": 47 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_reshaped.view(1,9)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tH2ahWGydqqP", + "outputId": "65d92263-4fc4-434a-c06d-c5e08436f7fe" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 2, 3, 4, 5, 6, 7, 8, 9]])" + ] + }, + "metadata": {}, + "execution_count": 48 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_stacked = torch.stack([x, x, x, x], dim = 1)\n", + "x_stacked" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "jgCeJcaud_-1", + "outputId": "7f293a37-6ef1-43b6-aee5-9d6d91c94f9e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 1, 1, 1],\n", + " [2, 2, 2, 2],\n", + " [3, 3, 3, 3],\n", + " [4, 4, 4, 4],\n", + " [5, 5, 5, 5],\n", + " [6, 6, 6, 6],\n", + " [7, 7, 7, 7],\n", + " [8, 8, 8, 8],\n", + " [9, 9, 9, 9]])" + ] + }, + "metadata": {}, + "execution_count": 49 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_stacked.squeeze()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XhJHIK6cfPse", + "outputId": "06c47b89-3a9e-453e-bcc3-00cbcb0b8b49" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 1, 1, 1],\n", + " [2, 2, 2, 2],\n", + " [3, 3, 3, 3],\n", + " [4, 4, 4, 4],\n", + " [5, 5, 5, 5],\n", + " [6, 6, 6, 6],\n", + " [7, 7, 7, 7],\n", + " [8, 8, 8, 8],\n", + " [9, 9, 9, 9]])" + ] + }, + "metadata": {}, + "execution_count": 50 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_stacked.unsqueeze(dim=1)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ej2c3Xxzf0tq", + "outputId": "94024061-eb37-446d-c4a8-e4d16cb6de81" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[[1, 1, 1, 1]],\n", + "\n", + " [[2, 2, 2, 2]],\n", + "\n", + " [[3, 3, 3, 3]],\n", + "\n", + " [[4, 4, 4, 4]],\n", + "\n", + " [[5, 5, 5, 5]],\n", + "\n", + " [[6, 6, 6, 6]],\n", + "\n", + " [[7, 7, 7, 7]],\n", + "\n", + " [[8, 8, 8, 8]],\n", + "\n", + " [[9, 9, 9, 9]]])" + ] + }, + "metadata": {}, + "execution_count": 52 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_stacked.squeeze()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4DJYo1a0f5M0", + "outputId": "efca2b47-1b14-44de-9a9a-2c83629d153f" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 1, 1, 1],\n", + " [2, 2, 2, 2],\n", + " [3, 3, 3, 3],\n", + " [4, 4, 4, 4],\n", + " [5, 5, 5, 5],\n", + " [6, 6, 6, 6],\n", + " [7, 7, 7, 7],\n", + " [8, 8, 8, 8],\n", + " [9, 9, 9, 9]])" + ] + }, + "metadata": {}, + "execution_count": 53 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_stacked.unsqueeze(dim=-2)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "J4iEjn2ah2HL", + "outputId": "22395593-7c16-4162-beae-dd2bbe7bda35" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[[1, 1, 1, 1]],\n", + "\n", + " [[2, 2, 2, 2]],\n", + "\n", + " [[3, 3, 3, 3]],\n", + "\n", + " [[4, 4, 4, 4]],\n", + "\n", + " [[5, 5, 5, 5]],\n", + "\n", + " [[6, 6, 6, 6]],\n", + "\n", + " [[7, 7, 7, 7]],\n", + "\n", + " [[8, 8, 8, 8]],\n", + "\n", + " [[9, 9, 9, 9]]])" + ] + }, + "metadata": {}, + "execution_count": 55 + } + ] + }, + { + "cell_type": "code", + "source": [ + "import torch\n", + "tensor = torch.tensor([1, 2, 3])\n", + "tensor = tensor - 10\n", + "tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cFfiD7Nth7Z_", + "outputId": "1139e1f8-fc1a-46ca-d636-f2bc4fd2eef6" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([-9, -8, -7])" + ] + }, + "metadata": {}, + "execution_count": 7 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.mul(tensor, 10)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dyA7BM_GHhqE", + "outputId": "0e3b9671-d9e8-4a32-87bb-59bc05986142" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([-90, -80, -70])" + ] + }, + "metadata": {}, + "execution_count": 9 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.sub(tensor, 100)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "owtUsZ1KNegI", + "outputId": "189b7b23-0041-4e09-b991-cd209a48506a" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([-109, -108, -107])" + ] + }, + "metadata": {}, + "execution_count": 10 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.add(tensor, 100)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "K5STXlQONsyc", + "outputId": "00cbb79a-0a1d-4e21-86ec-5c91c37a2d01" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([91, 92, 93])" + ] + }, + "metadata": {}, + "execution_count": 11 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.divide(tensor, 2)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xqMGnzIUNvp0", + "outputId": "c894cf3e-f148-45f8-cfc8-d78740735306" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([-4.5000, -4.0000, -3.5000])" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.matmul(tensor, tensor)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ruGzKpV8NyBc", + "outputId": "fddb63bf-006f-48b6-ae28-287fbcda8bc5" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(194)" + ] + }, + "metadata": {}, + "execution_count": 15 + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor@tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8GS3r9yTeGfD", + "outputId": "c80b12ac-30b5-4f3d-c38c-9e41ba511b0e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(194)" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ] + }, + { + "cell_type": "code", + "source": [ + "%%time\n", + "tensor@tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "QmuYHqXTemC0", + "outputId": "402fe3ba-70b5-4bb2-c83b-254db84ff810" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "CPU times: user 622 µs, sys: 0 ns, total: 622 µs\n", + "Wall time: 516 µs\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(194)" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ] + }, + { + "cell_type": "code", + "source": [ + "%%time\n", + "torch.matmul(tensor,tensor)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dGr1fzdNepd8", + "outputId": "97bd6c91-bc25-4b38-cdf5-f22dcdef243e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "CPU times: user 424 µs, sys: 998 µs, total: 1.42 ms\n", + "Wall time: 1.43 ms\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(194)" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.rand(3,2)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "pGYDoK2gevfo", + "outputId": "2c8783d5-0453-47c5-c7ed-af10d25d6989" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0.5999, 0.0073],\n", + " [0.9321, 0.3026],\n", + " [0.3463, 0.3872]])" + ] + }, + "metadata": {}, + "execution_count": 20 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.matmul(torch.rand(3,2), torch.rand(2,3))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "KGBGQoB8e2DP", + "outputId": "4c2ef361-a2d0-41ee-c328-3992cbbc138d" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0.3528, 0.1893, 0.0714],\n", + " [1.2791, 0.7110, 0.2563],\n", + " [0.8812, 0.4553, 0.1803]])" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ] + }, + { + "cell_type": "code", + "source": [ + "import torch" + ], + "metadata": { + "id": "ib8DMtkBe_LJ" + }, + "execution_count": 1, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "x = torch.rand(2,9)" + ], + "metadata": { + "id": "nJo8ZBdrQY1b" + }, + "execution_count": 2, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "x" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wi6oRv4MQfgf", + "outputId": "55c99f55-31f6-4cf5-ba4e-19a47c3a0167" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0.5894, 0.4391, 0.2018, 0.5417, 0.3844, 0.3592, 0.9209, 0.9269, 0.0681],\n", + " [0.0746, 0.1740, 0.6821, 0.6890, 0.0999, 0.7444, 0.2391, 0.4625, 0.8302]])" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ] + }, + { + "cell_type": "code", + "source": [ + "y=torch.randn(2,3,5)\n", + "y" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Zpx8myAUQgoc", + "outputId": "07756d70-56bd-437c-c74e-9aecc1a77311" + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[[ 1.5552, -0.4877, 0.5175, -1.7958, -0.6187],\n", + " [-0.3359, -1.9710, 0.0112, -1.7578, -1.5295],\n", + " [ 0.0932, 1.4079, 0.9108, 0.3328, -0.6978]],\n", + "\n", + " [[-0.9406, -1.0809, -0.2595, 0.1282, 1.6605],\n", + " [ 1.1624, 1.0902, 1.7092, -0.2842, -1.3780],\n", + " [-0.1534, -1.2795, -0.5495, 0.9902, 0.1822]]])" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_original = torch.rand(size=(224,224,3))\n", + "x_original" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "s4U-X9bJQnWe", + "outputId": "657a7a76-962c-4b41-a76b-902d0482266c" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[[0.4549, 0.6809, 0.2118],\n", + " [0.4824, 0.9008, 0.8741],\n", + " [0.1715, 0.1757, 0.1845],\n", + " ...,\n", + " [0.8741, 0.6594, 0.2610],\n", + " [0.0092, 0.1984, 0.1955],\n", + " [0.4236, 0.4182, 0.0251]],\n", + "\n", + " [[0.9174, 0.1661, 0.5852],\n", + " [0.1837, 0.2351, 0.3810],\n", + " [0.3726, 0.4808, 0.8732],\n", + " ...,\n", + " [0.6794, 0.0554, 0.9202],\n", + " [0.0864, 0.8750, 0.3558],\n", + " [0.8445, 0.9759, 0.4934]],\n", + "\n", + " [[0.1600, 0.2635, 0.7194],\n", + " [0.9488, 0.3405, 0.3647],\n", + " [0.6683, 0.5168, 0.9592],\n", + " ...,\n", + " [0.0521, 0.0140, 0.2445],\n", + " [0.3596, 0.3999, 0.2730],\n", + " [0.5926, 0.9877, 0.7784]],\n", + "\n", + " ...,\n", + "\n", + " [[0.4794, 0.5635, 0.3764],\n", + " [0.9124, 0.6094, 0.5059],\n", + " [0.4528, 0.4447, 0.5021],\n", + " ...,\n", + " [0.0089, 0.4816, 0.8727],\n", + " [0.2173, 0.6296, 0.2347],\n", + " [0.2028, 0.9931, 0.7201]],\n", + "\n", + " [[0.3116, 0.6459, 0.4703],\n", + " [0.0148, 0.2345, 0.7149],\n", + " [0.8393, 0.5804, 0.6691],\n", + " ...,\n", + " [0.2105, 0.9460, 0.2696],\n", + " [0.5918, 0.9295, 0.2616],\n", + " [0.2537, 0.7819, 0.4700]],\n", + "\n", + " [[0.6654, 0.1200, 0.5841],\n", + " [0.9147, 0.5522, 0.6529],\n", + " [0.1799, 0.5276, 0.5415],\n", + " ...,\n", + " [0.7536, 0.4346, 0.8793],\n", + " [0.3793, 0.1750, 0.7792],\n", + " [0.9266, 0.8325, 0.9974]]])" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_permuted=x_original.permute(2, 0, 1)\n", + "print(x_original.shape)\n", + "print(x_permuted.shape)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DD19_zvbQzHo", + "outputId": "1d64ce1b-eb48-47e3-90b6-7f1340e7f2b2" + }, + "execution_count": 9, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "torch.Size([224, 224, 3])\n", + "torch.Size([3, 224, 224])\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_original[0,0,0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "NnPmMk4ZRF7w", + "outputId": "2cd5da7f-4a23-4a76-8c4a-bb982113f2a4" + }, + "execution_count": 10, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0.4549)" + ] + }, + "metadata": {}, + "execution_count": 10 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_permuted[0,0,0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Z0ylNoAARgTo", + "outputId": "ddca0298-cddf-4048-9b71-a791655e5bed" + }, + "execution_count": 11, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0.4549)" + ] + }, + "metadata": {}, + "execution_count": 11 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_original[0,0,0]=0.989" + ], + "metadata": { + "id": "RXw0xXsDRi4L" + }, + "execution_count": 13, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "x_original[0,0,0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1sFdV6wzRo3f", + "outputId": "1cf87d2c-6d88-453a-d136-0f625a2800f1" + }, + "execution_count": 14, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0.9890)" + ] + }, + "metadata": {}, + "execution_count": 14 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_permuted[0,0,0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xTX-hx2SR1wp", + "outputId": "0d4908c4-c3bc-44e3-8ec6-1487104cc209" + }, + "execution_count": 15, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0.9890)" + ] + }, + "metadata": {}, + "execution_count": 15 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x=torch.arange(1,10).reshape(1,3,3)\n", + "x, x.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mZomOe7gR4Q8", + "outputId": "0b3c922f-ec11-46de-b8a5-9f9533d866ad" + }, + "execution_count": 18, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(tensor([[[1, 2, 3],\n", + " [4, 5, 6],\n", + " [7, 8, 9]]]),\n", + " torch.Size([1, 3, 3]))" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "3y7v4SQvSBs1", + "outputId": "8c53307d-e628-404d-db66-56c6bdffab7c" + }, + "execution_count": 19, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 2, 3],\n", + " [4, 5, 6],\n", + " [7, 8, 9]])" + ] + }, + "metadata": {}, + "execution_count": 19 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0][0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hf9uG4xLSNya", + "outputId": "3075bc42-9ffa-426b-8a86-95628ffcd824" + }, + "execution_count": 21, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([1, 2, 3])" + ] + }, + "metadata": {}, + "execution_count": 21 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0][0][0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "zA4G2Se4SRB3", + "outputId": "324312d2-ed0a-49eb-f81f-e904e53992fe" + }, + "execution_count": 22, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(1)" + ] + }, + "metadata": {}, + "execution_count": 22 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0][2][2]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Mwy3zmKKSdbk", + "outputId": "d35172c3-b099-40a6-ddf1-a453c2adfa44" + }, + "execution_count": 23, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(9)" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[:,1,1]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "fE3nCM1KS7XT", + "outputId": "01f5d755-9737-4235-9f73-dce89ff6ba16" + }, + "execution_count": 24, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([5])" + ] + }, + "metadata": {}, + "execution_count": 24 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0,0,:]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "luNDINKNTTxp", + "outputId": "091195ef-2f71-4602-e95f-529a69193150" + }, + "execution_count": 25, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([1, 2, 3])" + ] + }, + "metadata": {}, + "execution_count": 25 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0,:,2]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "KG8A4xbfThCL", + "outputId": "5866bc41-9241-4619-be7b-e9206b3f80ab" + }, + "execution_count": 26, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([3, 6, 9])" + ] + }, + "metadata": {}, + "execution_count": 26 + } + ] + }, + { + "cell_type": "code", + "source": [ + "import numpy as np" + ], + "metadata": { + "id": "CZ3PX0qlTwHJ" + }, + "execution_count": 27, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "array = np.arange(1.0, 8.0)" + ], + "metadata": { + "id": "UOBeTumiT3Lf" + }, + "execution_count": 28, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "array" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "RzcO32E9UCQl", + "outputId": "430def24-c42c-461f-e5e7-398544c695d3" + }, + "execution_count": 29, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([1., 2., 3., 4., 5., 6., 7.])" + ] + }, + "metadata": {}, + "execution_count": 29 + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor = torch.from_numpy(array)\n", + "tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "JJIL0q1DUC6O", + "outputId": "8a3b1d7c-4482-4d32-f34f-9212d9d3a177" + }, + "execution_count": 32, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([1., 2., 3., 4., 5., 6., 7.], dtype=torch.float64)" + ] + }, + "metadata": {}, + "execution_count": 32 + } + ] + }, + { + "cell_type": "code", + "source": [ + "array[3]=11.0" + ], + "metadata": { + "id": "j3Ce6q3DUIEK" + }, + "execution_count": 33, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "array" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dc_BCVdjUsCc", + "outputId": "65537325-8b11-4f36-fc73-e56f30d6a036" + }, + "execution_count": 34, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([ 1., 2., 3., 11., 5., 6., 7.])" + ] + }, + "metadata": {}, + "execution_count": 34 + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VG1e_eITUta2", + "outputId": "a26c5198-23b6-4a6d-d73a-ba20cd9782b8" + }, + "execution_count": 35, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 1., 2., 3., 11., 5., 6., 7.], dtype=torch.float64)" + ] + }, + "metadata": {}, + "execution_count": 35 + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor = torch.ones(7)\n", + "tensor, tensor.dtype\n", + "numpy_tensor = tensor.numpy()\n", + "numpy_tensor, numpy_tensor.dtype" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Swt8JF8vUuev", + "outputId": "c9e5bf6a-6d2c-41d6-8327-366867ffdd2d" + }, + "execution_count": 37, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(array([1., 1., 1., 1., 1., 1., 1.], dtype=float32), dtype('float32'))" + ] + }, + "metadata": {}, + "execution_count": 37 + } + ] + }, + { + "cell_type": "code", + "source": [ + "import torch\n", + "random_tensor_A = torch.rand(3,4)\n", + "random_tensor_B = torch.rand(3,4)\n", + "print(random_tensor_A)\n", + "print(random_tensor_B)\n", + "print(random_tensor_A == random_tensor_B)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "uGcagTteVFTD", + "outputId": "49405790-08e7-4210-b7f1-f00b904c7eb9" + }, + "execution_count": 38, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "tensor([[0.9870, 0.6636, 0.6873, 0.8863],\n", + " [0.8386, 0.4169, 0.3587, 0.0265],\n", + " [0.2981, 0.6025, 0.5652, 0.5840]])\n", + "tensor([[0.9821, 0.3481, 0.0913, 0.4940],\n", + " [0.7495, 0.4387, 0.9582, 0.8659],\n", + " [0.5064, 0.6919, 0.0809, 0.9771]])\n", + "tensor([[False, False, False, False],\n", + " [False, False, False, False],\n", + " [False, False, False, False]])\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "RANDOM_SEED = 42\n", + "torch.manual_seed(RANDOM_SEED)\n", + "random_tensor_C = torch.rand(3,4)\n", + "torch.manual_seed(RANDOM_SEED)\n", + "random_tensor_D = torch.rand(3,4)\n", + "print(random_tensor_C)\n", + "print(random_tensor_D)\n", + "print(random_tensor_C == random_tensor_D)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "HznyXyEaWjLM", + "outputId": "25956434-01b6-4059-9054-c9978884ddc1" + }, + "execution_count": 46, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "tensor([[0.8823, 0.9150, 0.3829, 0.9593],\n", + " [0.3904, 0.6009, 0.2566, 0.7936],\n", + " [0.9408, 0.1332, 0.9346, 0.5936]])\n", + "tensor([[0.8823, 0.9150, 0.3829, 0.9593],\n", + " [0.3904, 0.6009, 0.2566, 0.7936],\n", + " [0.9408, 0.1332, 0.9346, 0.5936]])\n", + "tensor([[True, True, True, True],\n", + " [True, True, True, True],\n", + " [True, True, True, True]])\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "!nvidia-smi" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vltPTh0YXJSt", + "outputId": "807af6dc-a9ca-4301-ec32-b688dbde8be8" + }, + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Thu May 23 02:57:59 2024 \n", + "+---------------------------------------------------------------------------------------+\n", + "| NVIDIA-SMI 535.104.05 Driver Version: 535.104.05 CUDA Version: 12.2 |\n", + "|-----------------------------------------+----------------------+----------------------+\n", + "| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |\n", + "| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |\n", + "| | | MIG M. |\n", + "|=========================================+======================+======================|\n", + "| 0 Tesla T4 Off | 00000000:00:04.0 Off | 0 |\n", + "| N/A 60C P8 11W / 70W | 0MiB / 15360MiB | 0% Default |\n", + "| | | N/A |\n", + "+-----------------------------------------+----------------------+----------------------+\n", + " \n", + "+---------------------------------------------------------------------------------------+\n", + "| Processes: |\n", + "| GPU GI CI PID Type Process name GPU Memory |\n", + "| ID ID Usage |\n", + "|=======================================================================================|\n", + "| No running processes found |\n", + "+---------------------------------------------------------------------------------------+\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import torch\n", + "torch.cuda.is_available()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "L6mMyPDyYh1j", + "outputId": "279c5dd8-c2a8-4fbd-f321-2f5d7c6e90e6" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ] + }, + { + "cell_type": "code", + "source": [ + "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", + "device" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "id": "oOdiYa7ZYytx", + "outputId": "d73b04fc-8963-4826-9722-08d118d5ab91" + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'cuda'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 5 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.cuda.device_count()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vOdsazLqZFM5", + "outputId": "8189cd6a-9017-4663-a652-3e15c517d9c3" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor = torch.tensor([1,2,3], device = \"cpu\")\n", + "print(tensor, tensor.device)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cdik9Vw3ZMv0", + "outputId": "044a68fd-83a1-409d-8e3b-655142ca0270" + }, + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "tensor([1, 2, 3]) cpu\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor_on_gpu = tensor.to(device)\n", + "tensor_on_gpu" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Zmp835rrZp-z", + "outputId": "37fa3413-18a3-47bf-ae51-5b36ff85a3ef" + }, + "execution_count": 8, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([1, 2, 3], device='cuda:0')" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor_on_gpu.numpy()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 159 + }, + "id": "jhriaa8uZ1yM", + "outputId": "bc5a3226-1a12-4fea-8769-a44f21cdc323" + }, + "execution_count": 10, + "outputs": [ + { + "output_type": "error", + "ename": "TypeError", + "evalue": "can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtensor_on_gpu\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m: can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first." + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor_on_cpu = tensor_on_gpu.cpu().numpy()" + ], + "metadata": { + "id": "LHGXK3GgaOzL" + }, + "execution_count": 12, + "outputs": [] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "j-El4LlCajfq" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕಾರ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/README.md b/translations/kn/README.md new file mode 100644 index 000000000..d5820282a --- /dev/null +++ b/translations/kn/README.md @@ -0,0 +1,223 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) + +### 🌐 ಬಹುಭಾಷಾ ಬೆಂಬಲ + +#### GitHub ಕ್ರಿಯೆಯಿಂದ ಬೆಂಬಲಿಸಲಾಗಿದೆ (ಸ್ವಯಂಚಾಲಿತ ಮತ್ತು ಸದಾ ನವೀಕರಿಸಲಾಗುತ್ತದೆ) + + +[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](./README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + + +#### ನಮ್ಮ ಸಮುದಾಯದಲ್ಲಿ ಸೇರಿ + +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) + +ನಾವು ಡಿಸ್ಕಾರ್ಡ್‌ನಲ್ಲಿ AI ಸರಣಿಯನ್ನು ನಡೆಸುತ್ತಿದ್ದೇವೆ, ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ಮತ್ತು ಸೇರಲು [Learn with AI Series](https://aka.ms/learnwithai/discord) ಗೆ 18 - 30 ಸೆಪ್ಟೆಂಬರ್, 2025 ರಂದು ಭೇಟಿ ನೀಡಿ. ನೀವು GitHub Copilot ಅನ್ನು ಡೇಟಾ ಸೈನ್ಸ್‌ಗಾಗಿ ಬಳಸುವ ಸಲಹೆಗಳು ಮತ್ತು ತಂತ್ರಗಳನ್ನು ಪಡೆಯುತ್ತೀರಿ. + +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.kn.png) + +# ಆರಂಭಿಕರಿಗಾಗಿ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ - ಒಂದು ಪಠ್ಯಕ್ರಮ + +> 🌍 ವಿಶ್ವದ ಸಾಂಸ್ಕೃತಿಕಗಳ ಮೂಲಕ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಅನ್ನು ಅನ್ವೇಷಿಸುವಾಗ ಜಗತ್ತನ್ನು ಸುತ್ತಿ ಪ್ರಯಾಣ ಮಾಡಿ 🌍 + +Microsoft ನ ಕ್ಲೌಡ್ ಅಡ್ವೊಕೇಟ್ಸ್ 12 ವಾರಗಳ, 26 ಪಾಠಗಳ ಪಠ್ಯಕ್ರಮವನ್ನು **ಮೆಷಿನ್ ಲರ್ನಿಂಗ್** ಬಗ್ಗೆ ನೀಡಲು ಸಂತೋಷಪಡುತ್ತಾರೆ. ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ನೀವು ಕೆಲವೊಮ್ಮೆ **ಕ್ಲಾಸಿಕ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್** ಎಂದು ಕರೆಯಲ್ಪಡುವುದನ್ನು ಕಲಿಯುತ್ತೀರಿ, ಮುಖ್ಯವಾಗಿ Scikit-learn ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸಿಕೊಂಡು ಮತ್ತು ಡೀಪ್ ಲರ್ನಿಂಗ್ ಅನ್ನು ತಪ್ಪಿಸಿ, ಅದು ನಮ್ಮ [AI for Beginners' curriculum](https://aka.ms/ai4beginners) ನಲ್ಲಿ ಒಳಗೊಂಡಿದೆ. ಈ ಪಾಠಗಳನ್ನು ನಮ್ಮ ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) ಜೊತೆಗೆ ಜೋಡಿಸಬಹುದು. + +ನಮ್ಮೊಂದಿಗೆ ಜಗತ್ತಿನ ವಿವಿಧ ಭಾಗಗಳ ಡೇಟಾಗೆ ಈ ಕ್ಲಾಸಿಕ್ ತಂತ್ರಗಳನ್ನು ಅನ್ವಯಿಸಿ ಪ್ರಯಾಣ ಮಾಡಿ. ಪ್ರತಿ ಪಾಠದಲ್ಲಿ ಪೂರ್ವ ಮತ್ತು ನಂತರದ ಪ್ರಶ್ನೋತ್ತರಗಳು, ಪಾಠವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಬರಹದ ಸೂಚನೆಗಳು, ಪರಿಹಾರ, ನಿಯೋಜನೆ ಮತ್ತು ಇನ್ನಷ್ಟು ಒಳಗೊಂಡಿವೆ. ನಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ ಆಧಾರಿತ ಪಾಠಶೈಲಿ ನಿಮಗೆ ಕಲಿಯುವಾಗ ನಿರ್ಮಿಸುವ ಅವಕಾಶ ನೀಡುತ್ತದೆ, ಇದು ಹೊಸ ಕೌಶಲ್ಯಗಳನ್ನು 'ಸ್ಥಿರ'ಗೊಳಿಸುವುದಕ್ಕೆ ಸಾಬೀತಾದ ವಿಧಾನವಾಗಿದೆ. + +**✍️ ನಮ್ಮ ಲೇಖಕರಿಗೆ ಹೃತ್ಪೂರ್ವಕ ಧನ್ಯವಾದಗಳು** ಜೆನ್ ಲೂಪರ್, ಸ್ಟೀಫನ್ ಹೌವೆಲ್, ಫ್ರಾನ್ಸೆಸ್ಕಾ ಲಾಜ್ಜೇರಿ, ಟೊಮೊಮಿ ಇಮುರಾ, ಕ್ಯಾಸ್ ಬ್ರೇವಿಯು, ಡ್ಮಿತ್ರಿ ಸೋಶ್ನಿಕೋವ್, ಕ್ರಿಸ್ ನೋರಿಂಗ್, ಅನಿರ್ಬಾನ್ ಮುಖರ್ಜಿ, ಓರ್ನೆಲ್ಲಾ ಅಲ್ಟುನ್ಯಾನ್, ರೂತ್ ಯಾಕುಬು ಮತ್ತು ಎಮಿ ಬಾಯ್ಡ್ + +**🎨 ನಮ್ಮ ಚಿತ್ರಕಾರರಿಗೆ ಸಹ ಧನ್ಯವಾದಗಳು** ಟೊಮೊಮಿ ಇಮುರಾ, ದಾಸನಿ ಮಡಿಪಳ್ಳಿ, ಮತ್ತು ಜೆನ್ ಲೂಪರ್ + +**🙏 ವಿಶೇಷ ಧನ್ಯವಾದಗಳು 🙏 ನಮ್ಮ Microsoft ವಿದ್ಯಾರ್ಥಿ ಅಂಬಾಸಿಡರ್ ಲೇಖಕರು, ವಿಮರ್ಶಕರು ಮತ್ತು ವಿಷಯದ ಸಹಾಯಕರಿಗೆ**, ವಿಶೇಷವಾಗಿ ರಿಷಿತ್ ದಾಗ್ಲಿ, ಮುಹಮ್ಮದ್ ಸಕಿಬ್ ಖಾನ್ ಇನಾನ್, ರೋಹನ್ ರಾಜ್, ಅಲೆಕ್ಸಾಂಡ್ರು ಪೆಟ್ರೆಸ್ಕು, ಅಭಿಷೇಕ್ ಜೈಸ್ವಾಲ್, ನವ್ರಿನ್ ತಬಸ್ಸುಮ್, ಇವಾನ್ ಸಮುಯಿಲಾ, ಮತ್ತು ಸ್ನಿಗ್ಧಾ ಅಗರ್ವಾಲ್ + +**🤩 Microsoft ವಿದ್ಯಾರ್ಥಿ ಅಂಬಾಸಿಡರ್‌ಗಳು ಎರಿಕ್ ವಾಂಜೌ, ಜಸ್ಲೀನ್ ಸೊಂಡಿ, ಮತ್ತು ವಿದ್ಯುಷಿ ಗುಪ್ತ ಅವರಿಗೆ ನಮ್ಮ R ಪಾಠಗಳಿಗೆ ಹೆಚ್ಚುವರಿ ಕೃತಜ್ಞತೆ!** + +# ಪ್ರಾರಂಭಿಸುವುದು + +ಈ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿ: +1. **ರಿಪೊಸಿಟರಿಯನ್ನು ಫೋರ್ಕ್ ಮಾಡಿ**: ಈ ಪುಟದ ಮೇಲ್ಭಾಗದ ಬಲಭಾಗದಲ್ಲಿರುವ "Fork" ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ. +2. **ರಿಪೊಸಿಟರಿಯನ್ನು ಕ್ಲೋನ್ ಮಾಡಿ**: `git clone https://github.com/microsoft/ML-For-Beginners.git` + +> [ಈ ಕೋರ್ಸ್‌ಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಮ್ಮ Microsoft Learn ಸಂಗ್ರಹದಲ್ಲಿ ಕಂಡುಹಿಡಿಯಿರಿ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +> 🔧 **ಸಹಾಯ ಬೇಕೇ?** ಸ್ಥಾಪನೆ, ಸೆಟಪ್ ಮತ್ತು ಪಾಠಗಳನ್ನು ನಡೆಸುವ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳ ಪರಿಹಾರಕ್ಕಾಗಿ ನಮ್ಮ [Troubleshooting Guide](TROUBLESHOOTING.md) ಅನ್ನು ಪರಿಶೀಲಿಸಿ. + + +**[ವಿದ್ಯಾರ್ಥಿಗಳು](https://aka.ms/student-page)**, ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ಬಳಸಲು, ಸಂಪೂರ್ಣ ರಿಪೊಸಿಟರಿಯನ್ನು ನಿಮ್ಮ GitHub ಖಾತೆಗೆ ಫೋರ್ಕ್ ಮಾಡಿ ಮತ್ತು ಸ್ವತಃ ಅಥವಾ ಗುಂಪಿನಲ್ಲಿ ವ್ಯಾಯಾಮಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ: + +- ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರದಿಂದ ಪ್ರಾರಂಭಿಸಿ. +- ಪಾಠವನ್ನು ಓದಿ ಮತ್ತು ಚಟುವಟಿಕೆಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ, ಪ್ರತಿ ಜ್ಞಾನ ಪರಿಶೀಲನೆಯಲ್ಲಿ ನಿಲ್ಲಿಸಿ ಮತ್ತು ಪರಿಗಣಿಸಿ. +- ಪರಿಹಾರ ಕೋಡ್ ಅನ್ನು ನಡಿಸುವುದಕ್ಕಿಂತ ಪಾಠಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡು ಪ್ರಾಜೆಕ್ಟ್‌ಗಳನ್ನು ರಚಿಸಲು ಪ್ರಯತ್ನಿಸಿ; ಆದಾಗ್ಯೂ ಆ ಕೋಡ್ ಪ್ರತಿ ಪ್ರಾಜೆಕ್ಟ್-ಆಧಾರಿತ ಪಾಠದ `/solution` ಫೋಲ್ಡರ್‌ಗಳಲ್ಲಿ ಲಭ್ಯವಿದೆ. +- ಪಾಠದ ನಂತರದ ಪ್ರಶ್ನೋತ್ತರವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. +- ಸವಾಲನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ. +- ನಿಯೋಜನೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ. +- ಪಾಠ ಗುಂಪನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ ನಂತರ, [ಚರ್ಚಾ ಮಂಡಳಿ](https://github.com/microsoft/ML-For-Beginners/discussions) ಗೆ ಭೇಟಿ ನೀಡಿ ಮತ್ತು ಸೂಕ್ತ PAT ರೂಬ್ರಿಕ್ ಅನ್ನು ಭರ್ತಿ ಮಾಡಿ "ಮೌನವಾಗಿ ಕಲಿಯಿರಿ". 'PAT' ಎಂದರೆ ಪ್ರಗತಿ ಮೌಲ್ಯಮಾಪನ ಸಾಧನ, ಇದು ನಿಮ್ಮ ಕಲಿಕೆಯನ್ನು ಮುಂದುವರಿಸಲು ನೀವು ಭರ್ತಿ ಮಾಡುವ ರೂಬ್ರಿಕ್ ಆಗಿದೆ. ನೀವು ಇತರ PAT ಗಳಿಗೆ ಪ್ರತಿಕ್ರಿಯೆ ನೀಡಬಹುದು, ಹೀಗೆ ನಾವು ಒಟ್ಟಿಗೆ ಕಲಿಯಬಹುದು. + +> ಹೆಚ್ಚಿನ ಅಧ್ಯಯನಕ್ಕಾಗಿ, ಈ [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) ಮಾಯಾಜಾಲಗಳು ಮತ್ತು ಕಲಿಕೆ ಮಾರ್ಗಗಳನ್ನು ಅನುಸರಿಸುವುದನ್ನು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ. + +**ಶಿಕ್ಷಕರು**, ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದರ ಬಗ್ಗೆ ನಾವು [ಕೆಲವು ಸಲಹೆಗಳನ್ನು](for-teachers.md) ಸೇರಿಸಿದ್ದೇವೆ. + +--- + +## ವೀಡಿಯೋ ವಾಕ್ತ್ರೂಗಳು + +ಕೆಲವು ಪಾಠಗಳು ಚಿಕ್ಕ ವೀಡಿಯೋ ರೂಪದಲ್ಲಿ ಲಭ್ಯವಿವೆ. ನೀವು ಈ ಎಲ್ಲವನ್ನು ಪಾಠಗಳಲ್ಲಿ ನೇರವಾಗಿ ಅಥವಾ [Microsoft Developer YouTube ಚಾನೆಲ್‌ನ ML for Beginners ಪ್ಲೇಲಿಸ್ಟ್](https://aka.ms/ml-beginners-videos) ನಲ್ಲಿ ಕೆಳಗಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ನೋಡಬಹುದು. + +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.kn.png)](https://aka.ms/ml-beginners-videos) + +--- + +## ತಂಡವನ್ನು ಪರಿಚಯಿಸಿ + +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) + +**ಗಿಫ್** [ಮೊಹಿತ್ ಜೈಸಾಲ್](https://linkedin.com/in/mohitjaisal) + +> 🎥 ಯೋಜನೆ ಮತ್ತು ಅದನ್ನು ರಚಿಸಿದ ಜನರ ಬಗ್ಗೆ ವೀಡಿಯೋಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ! + +--- + +## ಪಾಠಶೈಲಿ + +ನಾವು ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ರಚಿಸುವಾಗ ಎರಡು ಪಾಠಶೈಲಿ ತತ್ವಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿದ್ದೇವೆ: ಕೈಯಲ್ಲಿ ಮಾಡಬಹುದಾದ **ಪ್ರಾಜೆಕ್ಟ್ ಆಧಾರಿತ** ಮತ್ತು **ನಿರಂತರ ಪ್ರಶ್ನೋತ್ತರಗಳು**. ಜೊತೆಗೆ, ಈ ಪಠ್ಯಕ್ರಮಕ್ಕೆ ಸಾಮಾನ್ಯ **ಥೀಮ್** ಇದೆ, ಇದು ಅದಕ್ಕೆ ಸಮ್ಮಿಲನ ನೀಡುತ್ತದೆ. + +ವಿಷಯವು ಪ್ರಾಜೆಕ್ಟ್‌ಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುವಂತೆ ನೋಡಿಕೊಳ್ಳುವುದರಿಂದ, ವಿದ್ಯಾರ್ಥಿಗಳಿಗೆ ಪ್ರಕ್ರಿಯೆ ಹೆಚ್ಚು ಆಕರ್ಷಕವಾಗುತ್ತದೆ ಮತ್ತು ಕಲಿಕೆಯ ಅರ್ಥಗಳು ಹೆಚ್ಚು ನೆನಪಿನಲ್ಲಿ ಉಳಿಯುತ್ತವೆ. ತರಗತಿಯ ಮುಂಚೆ ಕಡಿಮೆ ಒತ್ತಡದ ಪ್ರಶ್ನೋತ್ತರವು ವಿದ್ಯಾರ್ಥಿಯ ಕಲಿಕೆಯ ಉದ್ದೇಶವನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ, ಮತ್ತು ತರಗತಿಯ ನಂತರದ ಪ್ರಶ್ನೋತ್ತರವು ಇನ್ನಷ್ಟು ನೆನಪನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ಲವಚಿಕ ಮತ್ತು ಮನರಂಜನೀಯವಾಗಿರಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಸಂಪೂರ್ಣವಾಗಿ ಅಥವಾ ಭಾಗವಾಗಿ ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಪ್ರಾಜೆಕ್ಟ್‌ಗಳು ಸಣ್ಣದಾಗಿ ಪ್ರಾರಂಭಿಸಿ 12 ವಾರಗಳ ಅವಧಿಯ ಕೊನೆಯಲ್ಲಿ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗುತ್ತವೆ. ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ML ನ ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳ ಬಗ್ಗೆ ಒಂದು ಪೋಷಕ ಲೇಖನವೂ ಇದೆ, ಇದನ್ನು ಹೆಚ್ಚುವರಿ ಕ್ರೆಡಿಟ್ ಅಥವಾ ಚರ್ಚೆಯ ಆಧಾರವಾಗಿ ಬಳಸಬಹುದು. + +> ನಮ್ಮ [ನಡವಳಿಕೆ ಸಂಹಿತೆ](CODE_OF_CONDUCT.md), [ಸಹಾಯ](CONTRIBUTING.md), [ಅನುವಾದ](TRANSLATIONS.md), ಮತ್ತು [ಸಮಸ್ಯೆ ಪರಿಹಾರ](TROUBLESHOOTING.md) ಮಾರ್ಗಸೂಚಿಗಳನ್ನು ನೋಡಿ. ನಿಮ್ಮ ರಚನಾತ್ಮಕ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನಾವು ಸ್ವಾಗತಿಸುತ್ತೇವೆ! + +## ಪ್ರತಿ ಪಾಠದಲ್ಲಿ ಒಳಗೊಂಡಿದೆ + +- ಐಚ್ಛಿಕ ಸ್ಕೆಚ್ ನೋಟ್ +- ಐಚ್ಛಿಕ ಪೂರಕ ವೀಡಿಯೋ +- ವೀಡಿಯೋ ವಾಕ್ತ್ರೂ (ಕೆಲವು ಪಾಠಗಳಿಗೆ ಮಾತ್ರ) +- [ಪೂರ್ವ-ಪಾಠ ತಯಾರಿ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) +- ಬರಹದ ಪಾಠ +- ಪ್ರಾಜೆಕ್ಟ್ ಆಧಾರಿತ ಪಾಠಗಳಿಗೆ, ಪ್ರಾಜೆಕ್ಟ್ ನಿರ್ಮಿಸುವ ಹಂತ-ಹಂತದ ಮಾರ್ಗದರ್ಶಿಗಳು +- ಜ್ಞಾನ ಪರಿಶೀಲನೆಗಳು +- ಸವಾಲು +- ಪೂರಕ ಓದು +- ನಿಯೋಜನೆ +- [ಪೋಸ್ಟ್-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +> **ಭಾಷೆಗಳ ಬಗ್ಗೆ ಟಿಪ್ಪಣಿ**: ಈ ಪಾಠಗಳು ಮುಖ್ಯವಾಗಿ Python ನಲ್ಲಿ ಬರೆಯಲ್ಪಟ್ಟಿವೆ, ಆದರೆ ಅನೇಕವು R ನಲ್ಲಿ ಸಹ ಲಭ್ಯವಿವೆ. R ಪಾಠವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು, `/solution` ಫೋಲ್ಡರ್‌ಗೆ ಹೋಗಿ R ಪಾಠಗಳನ್ನು ಹುಡುಕಿ. ಅವು .rmd ವಿಸ್ತರಣೆ ಹೊಂದಿವೆ, ಇದು **R Markdown** ಫೈಲ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಇದು `code chunks` (R ಅಥವಾ ಇತರ ಭಾಷೆಗಳ) ಮತ್ತು `YAML header` (PDF ಮುಂತಾದ ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಹೇಗೆ ರೂಪಿಸಬೇಕೆಂದು ಮಾರ್ಗದರ್ಶನ ನೀಡುತ್ತದೆ) ಅನ್ನು Markdown ಡಾಕ್ಯುಮೆಂಟ್‌ನಲ್ಲಿ ಸಂಯೋಜಿಸುವುದಾಗಿದೆ. ಇದರಿಂದ ನೀವು ನಿಮ್ಮ ಕೋಡ್, ಅದರ ಔಟ್‌ಪುಟ್ ಮತ್ತು ನಿಮ್ಮ ಆಲೋಚನೆಗಳನ್ನು Markdown ನಲ್ಲಿ ಬರೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಜೊತೆಗೆ, R Markdown ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳನ್ನು PDF, HTML ಅಥವಾ Word ಮುಂತಾದ ಔಟ್‌ಪುಟ್‌ಗಳಿಗೆ ರೆಂಡರ್ ಮಾಡಬಹುದು. + +> **ಪ್ರಶ್ನೋತ್ತರಗಳ ಬಗ್ಗೆ ಟಿಪ್ಪಣಿ**: ಎಲ್ಲಾ ಪ್ರಶ್ನೋತ್ತರಗಳು [Quiz App ಫೋಲ್ಡರ್](../../quiz-app) ನಲ್ಲಿ ಇವೆ, ಒಟ್ಟು 52 ಪ್ರಶ್ನೋತ್ತರಗಳಿವೆ, ಪ್ರತಿ ಒಂದು ಮೂರು ಪ್ರಶ್ನೆಗಳೊಂದಿಗೆ. ಅವು ಪಾಠಗಳಲ್ಲಿ ಲಿಂಕ್ ಮಾಡಲ್ಪಟ್ಟಿವೆ ಆದರೆ ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸ್ಥಳೀಯವಾಗಿ ನಡೆಸಬಹುದು; ಸ್ಥಳೀಯವಾಗಿ ಹೋಸ್ಟ್ ಮಾಡಲು ಅಥವಾ Azure ಗೆ ನಿಯೋಜಿಸಲು `quiz-app` ಫೋಲ್ಡರ್‌ನ ಸೂಚನೆಗಳನ್ನು ಅನುಸರಿಸಿ. + +| ಪಾಠ ಸಂಖ್ಯೆ | ವಿಷಯ | ಪಾಠ ಗುಂಪು | ಕಲಿಕೆಯ ಉದ್ದೇಶಗಳು | ಲಿಂಕ್ ಮಾಡಲಾದ ಪಾಠ | ಲೇಖಕ | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ | [Introduction](1-Introduction/README.md) | ಯಂತ್ರ ಅಧ್ಯಯನದ ಮೂಲಭೂತ ತತ್ವಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಿ | [Lesson](1-Introduction/1-intro-to-ML/README.md) | ಮುಹಮ್ಮದ್ | +| 02 | ಯಂತ್ರ ಅಧ್ಯಯನದ ಇತಿಹಾಸ | [Introduction](1-Introduction/README.md) | ಈ ಕ್ಷೇತ್ರದ ಇತಿಹಾಸವನ್ನು ತಿಳಿದುಕೊಳ್ಳಿ | [Lesson](1-Introduction/2-history-of-ML/README.md) | ಜೆನ್ ಮತ್ತು ಎಮಿ | +| 03 | ನ್ಯಾಯ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ | [Introduction](1-Introduction/README.md) | ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ ಮತ್ತು ಅನ್ವಯಿಸುವಾಗ ವಿದ್ಯಾರ್ಥಿಗಳು ಪರಿಗಣಿಸಬೇಕಾದ ನ್ಯಾಯದ ಪ್ರಮುಖ ತತ್ವಶಾಸ್ತ್ರೀಯ ವಿಷಯಗಳು ಯಾವುವು? | [Lesson](1-Introduction/3-fairness/README.md) | ಟೊಮೊಮಿ | +| 04 | ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರಗಳು | [Introduction](1-Introduction/README.md) | ಯಂತ್ರ ಅಧ್ಯಯನ ಸಂಶೋಧಕರು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಯಾವ ತಂತ್ರಗಳನ್ನು ಬಳಸುತ್ತಾರೆ? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | ಕ್ರಿಸ್ ಮತ್ತು ಜೆನ್ | +| 05 | ರಿಗ್ರೆಶನ್‌ಗೆ ಪರಿಚಯ | [Regression](2-Regression/README.md) | ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳಿಗಾಗಿ ಪೈಥಾನ್ ಮತ್ತು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಬಳಸಿ ಪ್ರಾರಂಭಿಸಿ | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | ಜೆನ್ • ಎರಿಕ್ ವಾಂಜೌ | +| 06 | ಉತ್ತರ ಅಮೆರಿಕದ ಕಂಬಳಿಯ ಬೆಲೆಗಳು 🎃 | [Regression](2-Regression/README.md) | ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಸಿದ್ಧತೆಗಾಗಿ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಿ ಮತ್ತು ಸ್ವಚ್ಛಗೊಳಿಸಿ | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | ಜೆನ್ • ಎರಿಕ್ ವಾಂಜೌ | +| 07 | ಉತ್ತರ ಅಮೆರಿಕದ ಕಂಬಳಿಯ ಬೆಲೆಗಳು 🎃 | [Regression](2-Regression/README.md) | ರೇಖೀಯ ಮತ್ತು ಬಹುಪದ ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಿ | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | ಜೆನ್ ಮತ್ತು ಡ್ಮಿಟ್ರಿ • ಎರಿಕ್ ವಾಂಜೌ | +| 08 | ಉತ್ತರ ಅಮೆರಿಕದ ಕಂಬಳಿಯ ಬೆಲೆಗಳು 🎃 | [Regression](2-Regression/README.md) | ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | ಜೆನ್ • ಎರಿಕ್ ವಾಂಜೌ | +| 09 | ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ 🔌 | [Web App](3-Web-App/README.md) | ನಿಮ್ಮ ತರಬೇತುಗೊಂಡ ಮಾದರಿಯನ್ನು ಬಳಸಲು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ | [Python](3-Web-App/1-Web-App/README.md) | ಜೆನ್ | +| 10 | ವರ್ಗೀಕರಣಕ್ಕೆ ಪರಿಚಯ | [Classification](4-Classification/README.md) | ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ, ಸಿದ್ಧಪಡಿಸಿ ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಿ; ವರ್ಗೀಕರಣಕ್ಕೆ ಪರಿಚಯ | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | ಜೆನ್ ಮತ್ತು ಕ್ಯಾಶಿ • ಎರಿಕ್ ವಾಂಜೌ | +| 11 | ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು 🍜 | [Classification](4-Classification/README.md) | ವರ್ಗೀಕರಣಗಳ ಪರಿಚಯ | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | ಜೆನ್ ಮತ್ತು ಕ್ಯಾಶಿ • ಎರಿಕ್ ವಾಂಜೌ | +| 12 | ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು 🍜 | [Classification](4-Classification/README.md) | ಇನ್ನಷ್ಟು ವರ್ಗೀಕರಣಗಳು | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | ಜೆನ್ ಮತ್ತು ಕ್ಯಾಶಿ • ಎರಿಕ್ ವಾಂಜೌ | +| 13 | ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು 🍜 | [Classification](4-Classification/README.md) | ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಬಳಸಿ ಶಿಫಾರಸು ಮಾಡುವ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ | [Python](4-Classification/4-Applied/README.md) | ಜೆನ್ | +| 14 | ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಪರಿಚಯ | [Clustering](5-Clustering/README.md) | ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ, ಸಿದ್ಧಪಡಿಸಿ ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಿ; ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಪರಿಚಯ | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | ಜೆನ್ • ಎರಿಕ್ ವಾಂಜೌ | +| 15 | ನೈಜೀರಿಯನ್ ಸಂಗೀತ ರುಚಿಗಳನ್ನು ಅನ್ವೇಷಣೆ 🎧 | [Clustering](5-Clustering/README.md) | ಕೆ-ಮೀನ್ಸ್ ಕ್ಲಸ್ಟರಿಂಗ್ ವಿಧಾನವನ್ನು ಅನ್ವೇಷಿಸಿ | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | ಜೆನ್ • ಎರಿಕ್ ವಾಂಜೌ | +| 16 | ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆಗೆ ಪರಿಚಯ ☕️ | [Natural language processing](6-NLP/README.md) | ಸರಳ ಬಾಟ್ ನಿರ್ಮಿಸುವ ಮೂಲಕ NLP ಮೂಲಭೂತಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಿ | [Python](6-NLP/1-Introduction-to-NLP/README.md) | ಸ್ಟೀಫನ್ | +| 17 | ಸಾಮಾನ್ಯ NLP ಕಾರ್ಯಗಳು ☕️ | [Natural language processing](6-NLP/README.md) | ಭಾಷಾ ರಚನೆಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ ಅಗತ್ಯವಿರುವ ಸಾಮಾನ್ಯ ಕಾರ್ಯಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ ನಿಮ್ಮ NLP ಜ್ಞಾನವನ್ನು ಗಾಢಗೊಳಿಸಿ | [Python](6-NLP/2-Tasks/README.md) | ಸ್ಟೀಫನ್ | +| 18 | ಅನುವಾದ ಮತ್ತು ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ ♥️ | [Natural language processing](6-NLP/README.md) | ಜೆನ್ ಆಸ್ಟಿನ್ ಅವರೊಂದಿಗೆ ಅನುವಾದ ಮತ್ತು ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ | [Python](6-NLP/3-Translation-Sentiment/README.md) | ಸ್ಟೀಫನ್ | +| 19 | ಯುರೋಪಿನ ರೋಮ್ಯಾಂಟಿಕ್ ಹೋಟೆಲ್ಗಳು ♥️ | [Natural language processing](6-NLP/README.md) | ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳೊಂದಿಗೆ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | ಸ್ಟೀಫನ್ | +| 20 | ಯುರೋಪಿನ ರೋಮ್ಯಾಂಟಿಕ್ ಹೋಟೆಲ್ಗಳು ♥️ | [Natural language processing](6-NLP/README.md) | ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳೊಂದಿಗೆ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | ಸ್ಟೀಫನ್ | +| 21 | ಕಾಲ ಸರಣಿಯ ಪೂರ್ವಾನುಮಾನಕ್ಕೆ ಪರಿಚಯ | [Time series](7-TimeSeries/README.md) | ಕಾಲ ಸರಣಿಯ ಪೂರ್ವಾನುಮಾನಕ್ಕೆ ಪರಿಚಯ | [Python](7-TimeSeries/1-Introduction/README.md) | ಫ್ರಾನ್ಸೆಸ್ಕಾ | +| 22 | ⚡️ ವಿಶ್ವ ವಿದ್ಯುತ್ ಬಳಕೆ ⚡️ - ARIMA ಬಳಸಿ ಕಾಲ ಸರಣಿ ಪೂರ್ವಾನುಮಾನ | [Time series](7-TimeSeries/README.md) | ARIMA ಬಳಸಿ ಕಾಲ ಸರಣಿ ಪೂರ್ವಾನುಮಾನ | [Python](7-TimeSeries/2-ARIMA/README.md) | ಫ್ರಾನ್ಸೆಸ್ಕಾ | +| 23 | ⚡️ ವಿಶ್ವ ವಿದ್ಯುತ್ ಬಳಕೆ ⚡️ - SVR ಬಳಸಿ ಕಾಲ ಸರಣಿ ಪೂರ್ವಾನುಮಾನ | [Time series](7-TimeSeries/README.md) | ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ರಿಗ್ರೆಶರ್ ಬಳಸಿ ಕಾಲ ಸರಣಿ ಪೂರ್ವಾನುಮಾನ | [Python](7-TimeSeries/3-SVR/README.md) | ಅನಿರ್ಬಾನ್ | +| 24 | ಬಲವರ್ಧನೆ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ | [Reinforcement learning](8-Reinforcement/README.md) | Q-ಲರ್ನಿಂಗ್ ಬಳಸಿ ಬಲವರ್ಧನೆ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ | [Python](8-Reinforcement/1-QLearning/README.md) | ಡ್ಮಿಟ್ರಿ | +| 25 | ಪೀಟರ್‌ನ್ನು ನರಿ ತಪ್ಪಿಸಲು ಸಹಾಯ ಮಾಡಿ! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | ಬಲವರ್ಧನೆ ಅಧ್ಯಯನ ಜಿಮ್ | [Python](8-Reinforcement/2-Gym/README.md) | ಡ್ಮಿಟ್ರಿ | +| Postscript | ನೈಜ ಜಗತ್ತಿನ ಯಂತ್ರ ಅಧ್ಯಯನ ದೃಶ್ಯಗಳು ಮತ್ತು ಅನ್ವಯಿಕೆಗಳು | [ML in the Wild](9-Real-World/README.md) | ಶ್ರೇಷ್ಟ ಯಂತ್ರ ಅಧ್ಯಯನದ ಆಸಕ್ತಿದಾಯಕ ಮತ್ತು ಬಹಿರಂಗ ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳು | [Lesson](9-Real-World/1-Applications/README.md) | ತಂಡ | +| Postscript | RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಬಳಸಿ ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಮಾದರಿ ಡಿಬಗಿಂಗ್ | [ML in the Wild](9-Real-World/README.md) | ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಘಟಕಗಳನ್ನು ಬಳಸಿ ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಮಾದರಿ ಡಿಬಗಿಂಗ್ | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | ರುತ್ ಯಾಕುಬು | + +> [ಈ ಕೋರ್ಸ್‌ಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಮ್ಮ Microsoft Learn ಸಂಗ್ರಹದಲ್ಲಿ ಹುಡುಕಿ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +## ಆಫ್‌ಲೈನ್ ಪ್ರವೇಶ + +ನೀವು [Docsify](https://docsify.js.org/#/) ಬಳಸಿ ಈ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಅನ್ನು ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿ ಓಡಿಸಬಹುದು. ಈ ರೆಪೊವನ್ನು ಫೋರ್ಕ್ ಮಾಡಿ, ನಿಮ್ಮ ಸ್ಥಳೀಯ ಯಂತ್ರದಲ್ಲಿ [Docsify ಅನ್ನು ಸ್ಥಾಪಿಸಿ](https://docsify.js.org/#/quickstart), ನಂತರ ಈ ರೆಪೊನ ರೂಟ್ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ `docsify serve` ಟೈಪ್ ಮಾಡಿ. ವೆಬ್‌ಸೈಟ್ ನಿಮ್ಮ ಲೋಕಲ್‌ಹೋಸ್ಟ್‌ನಲ್ಲಿ 3000 ಪೋರ್ಟ್‌ನಲ್ಲಿ ಸರ್ವ್ ಆಗುತ್ತದೆ: `localhost:3000`. + +## PDF ಗಳು + +ಲಿಂಕ್‌ಗಳೊಂದಿಗೆ ಪಠ್ಯಕ್ರಮದ PDF ಅನ್ನು [ಇಲ್ಲಿ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) ಹುಡುಕಿ. + + +## 🎒 ಇತರೆ ಕೋರ್ಸ್‌ಗಳು + +ನಮ್ಮ ತಂಡ ಇತರೆ ಕೋರ್ಸ್‌ಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ! ಪರಿಶೀಲಿಸಿ: + + +### ಲಾಂಗ್‌ಚೈನ್ +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + +### ಅಜೂರ್ / ಎಡ್ಜ್ / MCP / ಏಜೆಂಟ್ಸ್ +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + +### ಜನರೇಟಿವ್ AI ಸರಣಿ +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![ಜನರೇಟಿವ್ AI (ಜಾವಾ)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![ಜನರೇಟಿವ್ AI (ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) + +--- + +### ಮೂಲ ಅಧ್ಯಯನ +[![ಆರಂಭಿಕರಿಗಾಗಿ ಎಂಎಲ್](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![ಆರಂಭಿಕರಿಗಾಗಿ ಡೇಟಾ ಸೈನ್ಸ್](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![ಆರಂಭಿಕರಿಗಾಗಿ AI](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![ಆರಂಭಿಕರಿಗಾಗಿ ಸೈಬರ್‌ಸುರಕ್ಷತೆ](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![ಆರಂಭಿಕರಿಗಾಗಿ ವೆಬ್ ಡೆವ್](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![ಆರಂಭಿಕರಿಗಾಗಿ ಐಒಟಿ](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![ಆರಂಭಿಕರಿಗಾಗಿ XR ಅಭಿವೃದ್ಧಿ](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + +### ಕೋಪೈಲಟ್ ಸರಣಿ +[![AI ಜೋಡಣೆಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ಗಾಗಿ ಕೋಪೈಲಟ್](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![C#/.NETಗಾಗಿ ಕೋಪೈಲಟ್](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![ಕೋಪೈಲಟ್ ಸಾಹಸ](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + + +## ಸಹಾಯ ಪಡೆಯುವುದು + +ನೀವು ಅಡಚಣೆಗೆ ಸಿಲುಕಿದರೆ ಅಥವಾ AI ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವ ಬಗ್ಗೆ ಯಾವುದೇ ಪ್ರಶ್ನೆಗಳಿದ್ದರೆ. MCP ಬಗ್ಗೆ ಚರ್ಚೆಗಳಲ್ಲಿ ಸಹಪಾಠಿಗಳು ಮತ್ತು ಅನುಭವಜ್ಞ ಡೆವಲಪರ್‌ಗಳೊಂದಿಗೆ ಸೇರಿ. ಇದು ಪ್ರಶ್ನೆಗಳಿಗೆ ಸ್ವಾಗತ ನೀಡುವ ಮತ್ತು ಜ್ಞಾನವನ್ನು ಮುಕ್ತವಾಗಿ ಹಂಚಿಕೊಳ್ಳುವ ಬೆಂಬಲದ ಸಮುದಾಯವಾಗಿದೆ. + +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) + +ನೀವು ಉತ್ಪನ್ನ ಪ್ರತಿಕ್ರಿಯೆ ಅಥವಾ ನಿರ್ಮಾಣದ ವೇಳೆ ದೋಷಗಳನ್ನು ಹೊಂದಿದ್ದರೆ ಭೇಟಿ ನೀಡಿ: + +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/SECURITY.md b/translations/kn/SECURITY.md new file mode 100644 index 000000000..32d35d101 --- /dev/null +++ b/translations/kn/SECURITY.md @@ -0,0 +1,53 @@ + +## ಭದ್ರತೆ + +ಮೈಕ್ರೋಸಾಫ್ಟ್ ನಮ್ಮ ಸಾಫ್ಟ್‌ವೇರ್ ಉತ್ಪನ್ನಗಳು ಮತ್ತು ಸೇವೆಗಳ ಭದ್ರತೆಯನ್ನು ಗಂಭೀರವಾಗಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಇದರಲ್ಲಿ ನಮ್ಮ GitHub ಸಂಸ್ಥೆಗಳ ಮೂಲಕ ನಿರ್ವಹಿಸಲಾದ ಎಲ್ಲಾ ಮೂಲ ಕೋಡ್ ಸಂಗ್ರಹಣೆಗಳು ಸೇರಿವೆ, ಅವುಗಳಲ್ಲಿ [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), ಮತ್ತು [ನಮ್ಮ GitHub ಸಂಸ್ಥೆಗಳು](https://opensource.microsoft.com/) ಸೇರಿವೆ. + +ನೀವು ಯಾವುದೇ ಮೈಕ್ರೋಸಾಫ್ಟ್-ಸ್ವಂತ ಸಂಗ್ರಹಣೆಯಲ್ಲಿ [ಮೈಕ್ರೋಸಾಫ್ಟ್ ಭದ್ರತಾ ದುರ್ಬಲತೆಯ ವ್ಯಾಖ್ಯಾನ](https://docs.microsoft.com/previous-versions/tn-archive/cc751383(v=technet.10)?WT.mc_id=academic-77952-leestott) ಪೂರೈಸುವ ಭದ್ರತಾ ದುರ್ಬಲತೆಯನ್ನು ಕಂಡುಹಿಡಿದಿದ್ದೀರಿ ಎಂದು ನಂಬಿದರೆ, ದಯವಿಟ್ಟು ಕೆಳಗಿನಂತೆ ನಮಗೆ ವರದಿ ಮಾಡಿ. + +## ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳ ವರದಿ + +**ದಯವಿಟ್ಟು ಸಾರ್ವಜನಿಕ GitHub ಸಮಸ್ಯೆಗಳ ಮೂಲಕ ಭದ್ರತಾ ದುರ್ಬಲತೆಗಳನ್ನು ವರದಿ ಮಾಡಬೇಡಿ.** + +ಬದಲಿಗೆ, ದಯವಿಟ್ಟು ಅವುಗಳನ್ನು ಮೈಕ್ರೋಸಾಫ್ಟ್ ಭದ್ರತಾ ಪ್ರತಿಕ್ರಿಯಾ ಕೇಂದ್ರಕ್ಕೆ (MSRC) [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report) ನಲ್ಲಿ ವರದಿ ಮಾಡಿ. + +ನೀವು ಲಾಗಿನ್ ಮಾಡದೆ ಸಲ್ಲಿಸಲು ಇಚ್ಛಿಸಿದರೆ, [secure@microsoft.com](mailto:secure@microsoft.com) ಗೆ ಇಮೇಲ್ ಕಳುಹಿಸಿ. ಸಾಧ್ಯವಾದರೆ, ನಮ್ಮ PGP ಕೀ ಬಳಸಿ ನಿಮ್ಮ ಸಂದೇಶವನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿ; ದಯವಿಟ್ಟು ಅದನ್ನು [Microsoft Security Response Center PGP Key ಪುಟ](https://www.microsoft.com/en-us/msrc/pgp-key-msrc) ನಿಂದ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ. + +ನೀವು 24 ಗಂಟೆಗಳ ಒಳಗೆ ಪ್ರತಿಕ್ರಿಯೆ ಪಡೆಯಬೇಕು. ಯಾವುದೋ ಕಾರಣಕ್ಕಾಗಿ ನೀವು ಪಡೆಯದಿದ್ದರೆ, ದಯವಿಟ್ಟು ನಿಮ್ಮ ಮೂಲ ಸಂದೇಶವನ್ನು ನಾವು ಪಡೆದಿದ್ದೇವೆ ಎಂದು ಖಚಿತಪಡಿಸಲು ಇಮೇಲ್ ಮೂಲಕ ಅನುಸರಿಸಿ. ಹೆಚ್ಚಿನ ಮಾಹಿತಿಯನ್ನು [microsoft.com/msrc](https://www.microsoft.com/msrc) ನಲ್ಲಿ ಕಾಣಬಹುದು. + +ದಯವಿಟ್ಟು ಕೆಳಗಿನ ವಿನಂತಿಸಿದ ಮಾಹಿತಿಯನ್ನು (ನೀವು ನೀಡಬಹುದಾದಷ್ಟು) ಸೇರಿಸಿ, ಇದರಿಂದ ನಾವು ಸಾಧ್ಯವಾದ ಸಮಸ್ಯೆಯ ಸ್ವಭಾವ ಮತ್ತು ವ್ಯಾಪ್ತಿಯನ್ನು ಉತ್ತಮವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯವಾಗುತ್ತದೆ: + + * ಸಮಸ್ಯೆಯ ಪ್ರಕಾರ (ಉದಾ. ಬಫರ್ ಓವರ್‌ಫ್ಲೋ, SQL ಇಂಜೆಕ್ಷನ್, ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್, ಇತ್ಯಾದಿ) + * ಸಮಸ್ಯೆಯ ಪ್ರತ್ಯಕ್ಷತೆಯೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದ ಮೂಲ ಫೈಲ್‌ಗಳ ಸಂಪೂರ್ಣ ಮಾರ್ಗಗಳು + * ಪ್ರಭಾವಿತ ಮೂಲ ಕೋಡ್‌ನ ಸ್ಥಳ (ಟ್ಯಾಗ್/ಬ್ರಾಂಚ್/ಕಮಿಟ್ ಅಥವಾ ನೇರ URL) + * ಸಮಸ್ಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸಲು ಅಗತ್ಯವಿರುವ ಯಾವುದೇ ವಿಶೇಷ ಸಂರಚನೆ + * ಸಮಸ್ಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸಲು ಹಂತ ಹಂತದ ಸೂಚನೆಗಳು + * ಸಾಬೀತು-ಆಫ್-ಕಾನ್ಸೆಪ್ಟ್ ಅಥವಾ ಎಕ್ಸ್‌ಪ್ಲಾಯಿಟ್ ಕೋಡ್ (ಸಾಧ್ಯವಾದರೆ) + * ಸಮಸ್ಯೆಯ ಪ್ರಭಾವ, ಮತ್ತು ಹೇಗೆ ಹ್ಯಾಕರ್ ಅದನ್ನು ದುರುಪಯೋಗ ಮಾಡಬಹುದು ಎಂಬುದು + +ಈ ಮಾಹಿತಿ ನಿಮ್ಮ ವರದಿಯನ್ನು ವೇಗವಾಗಿ ಪರಿಶೀಲಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +ನೀವು ಬಗ್ ಬೌಂಟಿಗಾಗಿ ವರದಿ ಮಾಡುತ್ತಿದ್ದರೆ, ಹೆಚ್ಚಿನ ಸಂಪೂರ್ಣ ವರದಿಗಳು ಹೆಚ್ಚಿನ ಬೌಂಟಿ ಬಹುಮಾನಕ್ಕೆ ಸಹಾಯ ಮಾಡಬಹುದು. ದಯವಿಟ್ಟು ನಮ್ಮ [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) ಪುಟವನ್ನು ನಮ್ಮ ಸಕ್ರಿಯ ಕಾರ್ಯಕ್ರಮಗಳ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ವಿವರಗಳಿಗೆ ಭೇಟಿ ನೀಡಿ. + +## ಇಚ್ಛಿತ ಭಾಷೆಗಳು + +ನಾವು ಎಲ್ಲಾ ಸಂವಹನಗಳು ಇಂಗ್ಲಿಷ್‌ನಲ್ಲಿ ಇರಬೇಕೆಂದು ಇಚ್ಛಿಸುತ್ತೇವೆ. + +## ನೀತಿ + +ಮೈಕ್ರೋಸಾಫ್ಟ್ [ಸಂಯೋಜಿತ ದುರ್ಬಲತೆ ಬಹಿರಂಗಪಡಿಸುವಿಕೆ](https://www.microsoft.com/en-us/msrc/cvd) ತತ್ವವನ್ನು ಅನುಸರಿಸುತ್ತದೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/SUPPORT.md b/translations/kn/SUPPORT.md new file mode 100644 index 000000000..d37aeae77 --- /dev/null +++ b/translations/kn/SUPPORT.md @@ -0,0 +1,31 @@ + +# ಬೆಂಬಲ +## ಸಮಸ್ಯೆಗಳನ್ನು ದಾಖಲಿಸುವುದು ಮತ್ತು ಸಹಾಯ ಪಡೆಯುವುದು ಹೇಗೆ + +ಸಮಸ್ಯೆಯನ್ನು ದಾಖಲಿಸುವ ಮೊದಲು, ದಯವಿಟ್ಟು ನಮ್ಮ [ತೊಂದರೆ ಪರಿಹಾರ ಮಾರ್ಗದರ್ಶಿ](TROUBLESHOOTING.md) ಅನ್ನು ಪರಿಶೀಲಿಸಿ, ಸ್ಥಾಪನೆ, ಸೆಟ್‌ಅಪ್ ಮತ್ತು ಪಾಠಗಳನ್ನು ನಡೆಸುವ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳ ಪರಿಹಾರಗಳಿಗಾಗಿ. + +ಈ ಯೋಜನೆ ಬಗ್‌ಗಳು ಮತ್ತು ವೈಶಿಷ್ಟ್ಯ ವಿನಂತಿಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು GitHub Issues ಅನ್ನು ಬಳಸುತ್ತದೆ. ನಕಲು ಸಮಸ್ಯೆಗಳನ್ನು ತಪ್ಪಿಸಲು ದಯವಿಟ್ಟು ಹೊಸ ಸಮಸ್ಯೆಗಳನ್ನು ದಾಖಲಿಸುವ ಮೊದಲು ಇತ್ತೀಚಿನ ಸಮಸ್ಯೆಗಳನ್ನು ಹುಡುಕಿ. ಹೊಸ ಸಮಸ್ಯೆಗಳಿಗೆ, ನಿಮ್ಮ ಬಗ್ ಅಥವಾ ವೈಶಿಷ್ಟ್ಯ ವಿನಂತಿಯನ್ನು ಹೊಸ ಸಮಸ್ಯೆಯಾಗಿ ದಾಖಲಿಸಿ. + +ಈ ಯೋಜನೆಯನ್ನು ಬಳಸುವ ಬಗ್ಗೆ ಸಹಾಯ ಮತ್ತು ಪ್ರಶ್ನೆಗಳಿಗಾಗಿ, ನೀವು ಕೂಡಾ: +- [ತೊಂದರೆ ಪರಿಹಾರ ಮಾರ್ಗದರ್ಶಿ](TROUBLESHOOTING.md) ಅನ್ನು ಪರಿಶೀಲಿಸಬಹುದು +- ನಮ್ಮ [Discord ಚರ್ಚೆಗಳು #ml-for-beginners ಚಾನೆಲ್](https://aka.ms/foundry/discord) ಗೆ ಭೇಟಿ ನೀಡಿ +- ಸಮಸ್ಯೆಯನ್ನು ದಾಖಲಿಸಿ + +## ಮೈಕ್ರೋಸಾಫ್ಟ್ ಬೆಂಬಲ ನೀತಿ + +ಈ ಸಂಗ್ರಹಣೆಗೆ ಬೆಂಬಲವು ಮೇಲ್ಕಂಡ ಸಂಪನ್ಮೂಲಗಳಿಗೆ ಮಾತ್ರ ಸೀಮಿತವಾಗಿದೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/TROUBLESHOOTING.md b/translations/kn/TROUBLESHOOTING.md new file mode 100644 index 000000000..f735d345c --- /dev/null +++ b/translations/kn/TROUBLESHOOTING.md @@ -0,0 +1,612 @@ + +# ಸಮಸ್ಯೆ ಪರಿಹಾರ ಮಾರ್ಗದರ್ಶಿ + +ಈ ಮಾರ್ಗದರ್ಶಿ ಯಂತ್ರ ಅಧ್ಯಯನ ಆರಂಭಿಕರ ಪಠ್ಯಕ್ರಮದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ನೀವು ಇಲ್ಲಿ ಪರಿಹಾರವನ್ನು ಕಂಡುಕೊಳ್ಳದಿದ್ದರೆ, ದಯವಿಟ್ಟು ನಮ್ಮ [Discord ಚರ್ಚೆಗಳು](https://aka.ms/foundry/discord) ಅನ್ನು ಪರಿಶೀಲಿಸಿ ಅಥವಾ [ಒಂದು ಸಮಸ್ಯೆಯನ್ನು ತೆರೆಯಿರಿ](https://github.com/microsoft/ML-For-Beginners/issues). + +## ವಿಷಯಗಳ ಪಟ್ಟಿಕೆ + +- [ಸ್ಥಾಪನೆ ಸಮಸ್ಯೆಗಳು](../..) +- [ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್ ಸಮಸ್ಯೆಗಳು](../..) +- [ಪೈಥಾನ್ ಪ್ಯಾಕೇಜ್ ಸಮಸ್ಯೆಗಳು](../..) +- [R ಪರಿಸರ ಸಮಸ್ಯೆಗಳು](../..) +- [ಕ್ವಿಜ್ ಅಪ್ಲಿಕೇಶನ್ ಸಮಸ್ಯೆಗಳು](../..) +- [ಡೇಟಾ ಮತ್ತು ಫೈಲ್ ಪಥ ಸಮಸ್ಯೆಗಳು](../..) +- [ಸಾಮಾನ್ಯ ದೋಷ ಸಂದೇಶಗಳು](../..) +- [ಕಾರ್ಯಕ್ಷಮತೆ ಸಮಸ್ಯೆಗಳು](../..) +- [ಪರಿಸರ ಮತ್ತು ಸಂರಚನೆ](../..) + +--- + +## ಸ್ಥಾಪನೆ ಸಮಸ್ಯೆಗಳು + +### ಪೈಥಾನ್ ಸ್ಥಾಪನೆ + +**ಸಮಸ್ಯೆ**: `python: command not found` + +**ಪರಿಹಾರ**: +1. [python.org](https://www.python.org/downloads/) ನಿಂದ Python 3.8 ಅಥವಾ ಹೆಚ್ಚಿನ ಆವೃತ್ತಿಯನ್ನು ಸ್ಥಾಪಿಸಿ +2. ಸ್ಥಾಪನೆ ಪರಿಶೀಲಿಸಿ: `python --version` ಅಥವಾ `python3 --version` +3. macOS/Linux ನಲ್ಲಿ, `python` ಬದಲು `python3` ಬಳಸಬೇಕಾಗಬಹುದು + +**ಸಮಸ್ಯೆ**: ಬಹು ಪೈಥಾನ್ ಆವೃತ್ತಿಗಳು ಸಂಘರ್ಷ ಉಂಟುಮಾಡುತ್ತಿವೆ + +**ಪರಿಹಾರ**: +```bash +# ಪ್ರಾಜೆಕ್ಟ್‌ಗಳನ್ನು ವಿಭಜಿಸಲು ವರ್ಚುವಲ್ ಪರಿಸರಗಳನ್ನು ಬಳಸಿ +python -m venv ml-env + +# ವರ್ಚುವಲ್ ಪರಿಸರವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ +# ವಿಂಡೋಸ್‌ನಲ್ಲಿ: +ml-env\Scripts\activate +# ಮ್ಯಾಕ್‌ಒಎಸ್/ಲಿನಕ್ಸ್ನಲ್ಲಿ: +source ml-env/bin/activate +``` + +### ಜುಪೈಟರ್ ಸ್ಥಾಪನೆ + +**ಸಮಸ್ಯೆ**: `jupyter: command not found` + +**ಪರಿಹಾರ**: +```bash +# ಜುಪೈಟರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ +pip install jupyter + +# ಅಥವಾ pip3 ಬಳಸಿ +pip3 install jupyter + +# ಸ್ಥಾಪನೆಯನ್ನು ಪರಿಶೀಲಿಸಿ +jupyter --version +``` + +**ಸಮಸ್ಯೆ**: ಜುಪೈಟರ್ ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಪ್ರಾರಂಭವಾಗುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```bash +# ಬ್ರೌಸರ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಪ್ರಯತ್ನಿಸಿ +jupyter notebook --browser=chrome + +# ಅಥವಾ ಟರ್ಮಿನಲ್‌ನಿಂದ ಟೋಕನ್ ಹೊಂದಿರುವ URL ಅನ್ನು ನಕಲಿಸಿ ಮತ್ತು ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಕೈಯಿಂದ ಅಂಟಿಸಿ +# ಹುಡುಕಿ: http://localhost:8888/?token=... +``` + +### R ಸ್ಥಾಪನೆ + +**ಸಮಸ್ಯೆ**: R ಪ್ಯಾಕೇಜ್‌ಗಳು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```r +# ನೀವು ಇತ್ತೀಚಿನ R ಆವೃತ್ತಿಯನ್ನು ಹೊಂದಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ +# ಅವಲಂಬನೆಗಳೊಂದಿಗೆ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಸ್ಥಾಪಿಸಿ +install.packages(c("tidyverse", "tidymodels", "caret"), dependencies = TRUE) + +# ಸಂಯೋಜನೆ ವಿಫಲವಾದರೆ, ಬೈನರಿ ಆವೃತ್ತಿಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಪ್ರಯತ್ನಿಸಿ +install.packages("package-name", type = "binary") +``` + +**ಸಮಸ್ಯೆ**: IRkernel ಜುಪೈಟರ್‌ನಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲ + +**ಪರಿಹಾರ**: +```r +# R ಕಾನ್ಸೋಲ್‌ನಲ್ಲಿ +install.packages('IRkernel') +IRkernel::installspec(user = TRUE) +``` + +--- + +## ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್ ಸಮಸ್ಯೆಗಳು + +### ಕರ್ಣಲ್ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: ಕರ್ಣಲ್ ನಿರಂತರವಾಗಿ ಸಾಯುತ್ತಿದೆ ಅಥವಾ ಮರುಪ್ರಾರಂಭವಾಗುತ್ತಿದೆ + +**ಪರಿಹಾರ**: +1. ಕರ್ಣಲ್ ಮರುಪ್ರಾರಂಭಿಸಿ: `Kernel → Restart` +2. ಔಟ್‌ಪುಟ್ ತೆರವುಗೊಳಿಸಿ ಮತ್ತು ಮರುಪ್ರಾರಂಭಿಸಿ: `Kernel → Restart & Clear Output` +3. ಮೆಮೊರಿ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ([ಕಾರ್ಯಕ್ಷಮತೆ ಸಮಸ್ಯೆಗಳು](../..) ನೋಡಿ) +4. ಸಮಸ್ಯೆ ಇರುವ ಕೋಡ್ ಗುರುತಿಸಲು ಸೆಲ್‌ಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಚಾಲನೆ ಮಾಡಿ + +**ಸಮಸ್ಯೆ**: ತಪ್ಪು ಪೈಥಾನ್ ಕರ್ಣಲ್ ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ + +**ಪರಿಹಾರ**: +1. ಪ್ರಸ್ತುತ ಕರ್ಣಲ್ ಪರಿಶೀಲಿಸಿ: `Kernel → Change Kernel` +2. ಸರಿಯಾದ ಪೈಥಾನ್ ಆವೃತ್ತಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ +3. ಕರ್ಣಲ್ ಇಲ್ಲದಿದ್ದರೆ, ಅದನ್ನು ರಚಿಸಿ: +```bash +python -m ipykernel install --user --name=ml-env +``` + +**ಸಮಸ್ಯೆ**: ಕರ್ಣಲ್ ಪ್ರಾರಂಭವಾಗುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```bash +# ipykernel ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಿ +pip uninstall ipykernel +pip install ipykernel + +# ಕರ್ಣಲ್ ಅನ್ನು ಮತ್ತೆ ನೋಂದಣಿ ಮಾಡಿ +python -m ipykernel install --user +``` + +### ನೋಟ್ಬುಕ್ ಸೆಲ್ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: ಸೆಲ್‌ಗಳು ಚಾಲನೆ ಆಗುತ್ತಿವೆ ಆದರೆ ಔಟ್‌ಪುಟ್ ತೋರಿಸುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +1. ಸೆಲ್ ಇನ್ನೂ ಚಾಲನೆ ಆಗುತ್ತಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ (`[*]` ಸೂಚಕ ನೋಡಿ) +2. ಕರ್ಣಲ್ ಮರುಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಎಲ್ಲಾ ಸೆಲ್‌ಗಳನ್ನು ಚಾಲನೆ ಮಾಡಿ: `Kernel → Restart & Run All` +3. ಬ್ರೌಸರ್ ಕಾನ್ಸೋಲ್‌ನಲ್ಲಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ದೋಷಗಳನ್ನು ಪರಿಶೀಲಿಸಿ (F12) + +**ಸಮಸ್ಯೆ**: ಸೆಲ್‌ಗಳನ್ನು ಚಾಲನೆ ಮಾಡಲಾಗುತ್ತಿಲ್ಲ - "Run" ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಪ್ರತಿಕ್ರಿಯೆ ಇಲ್ಲ + +**ಪರಿಹಾರ**: +1. ಟರ್ಮಿನಲ್‌ನಲ್ಲಿ ಜುಪೈಟರ್ ಸರ್ವರ್ ಇನ್ನೂ ಚಾಲನೆ ಆಗುತ್ತಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ +2. ಬ್ರೌಸರ್ ಪುಟವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಿ +3. ನೋಟ್ಬುಕ್ ಅನ್ನು ಮುಚ್ಚಿ ಮತ್ತೆ ತೆರೆಯಿರಿ +4. ಜುಪೈಟರ್ ಸರ್ವರ್ ಮರುಪ್ರಾರಂಭಿಸಿ + +--- + +## ಪೈಥಾನ್ ಪ್ಯಾಕೇಜ್ ಸಮಸ್ಯೆಗಳು + +### ಆಮದು ದೋಷಗಳು + +**ಸಮಸ್ಯೆ**: `ModuleNotFoundError: No module named 'sklearn'` + +**ಪರಿಹಾರ**: +```bash +pip install scikit-learn + +# ಈ ಕೋರ್ಸ್‌ಗೆ ಸಾಮಾನ್ಯ ML ಪ್ಯಾಕೇಜುಗಳು +pip install scikit-learn pandas numpy matplotlib seaborn +``` + +**ಸಮಸ್ಯೆ**: `ImportError: cannot import name 'X' from 'sklearn'` + +**ಪರಿಹಾರ**: +```bash +# scikit-learn ಅನ್ನು ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಗೆ ನವೀಕರಿಸಿ +pip install --upgrade scikit-learn + +# ಆವೃತ್ತಿಯನ್ನು ಪರಿಶೀಲಿಸಿ +python -c "import sklearn; print(sklearn.__version__)" +``` + +### ಆವೃತ್ತಿ ಸಂಘರ್ಷಗಳು + +**ಸಮಸ್ಯೆ**: ಪ್ಯಾಕೇಜ್ ಆವೃತ್ತಿ ಅಸಂಗತ ದೋಷಗಳು + +**ಪರಿಹಾರ**: +```bash +# ಹೊಸ ವರ್ಚುವಲ್ ಪರಿಸರವನ್ನು ರಚಿಸಿ +python -m venv fresh-env +source fresh-env/bin/activate # ಅಥವಾ Windows ನಲ್ಲಿ fresh-env\Scripts\activate + +# ಪ್ಯಾಕೇಜುಗಳನ್ನು ಹೊಸದಾಗಿ ಸ್ಥಾಪಿಸಿ +pip install jupyter scikit-learn pandas numpy matplotlib seaborn + +# ನಿರ್ದಿಷ್ಟ ಆವೃತ್ತಿ ಬೇಕಾದರೆ +pip install scikit-learn==1.3.0 +``` + +**ಸಮಸ್ಯೆ**: `pip install` ಅನುಮತಿ ದೋಷಗಳೊಂದಿಗೆ ವಿಫಲವಾಗಿದೆ + +**ಪರಿಹಾರ**: +```bash +# ಪ್ರಸ್ತುತ ಬಳಕೆದಾರನಿಗಾಗಿ ಮಾತ್ರ ಸ್ಥಾಪಿಸಿ +pip install --user package-name + +# ಅಥವಾ ವರ್ಚುವಲ್ ಪರಿಸರವನ್ನು ಬಳಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ) +python -m venv venv +source venv/bin/activate +pip install package-name +``` + +### ಡೇಟಾ ಲೋಡಿಂಗ್ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: CSV ಫೈಲ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡುವಾಗ `FileNotFoundError` + +**ಪರಿಹಾರ**: +```python +import os +# ಪ್ರಸ್ತುತ ಕಾರ್ಯನಿರ್ವಹಣಾ ಡೈರೆಕ್ಟರಿಯನ್ನು ಪರಿಶೀಲಿಸಿ +print(os.getcwd()) + +# ನೋಟ್ಬುಕ್ ಸ್ಥಳದಿಂದ ಸಂಬಂಧಿತ ಮಾರ್ಗಗಳನ್ನು ಬಳಸಿ +df = pd.read_csv('../../data/filename.csv') + +# ಅಥವಾ ಪೂರ್ಣ ಮಾರ್ಗಗಳನ್ನು ಬಳಸಿ +df = pd.read_csv('/full/path/to/data/filename.csv') +``` + +--- + +## R ಪರಿಸರ ಸಮಸ್ಯೆಗಳು + +### ಪ್ಯಾಕೇಜ್ ಸ್ಥಾಪನೆ + +**ಸಮಸ್ಯೆ**: ಸಂಯೋಜನೆ ದೋಷಗಳೊಂದಿಗೆ ಪ್ಯಾಕೇಜ್ ಸ್ಥಾಪನೆ ವಿಫಲವಾಗಿದೆ + +**ಪರಿಹಾರ**: +```r +# ಬೈನರಿ ಆವೃತ್ತಿಯನ್ನು ಸ್ಥಾಪಿಸಿ (Windows/macOS) +install.packages("package-name", type = "binary") + +# ಪ್ಯಾಕೇಜುಗಳು ಅಗತ್ಯವಿದ್ದರೆ R ಅನ್ನು ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಗೆ ನವೀಕರಿಸಿ +# R ಆವೃತ್ತಿಯನ್ನು ಪರಿಶೀಲಿಸಿ +R.version.string + +# ಸಿಸ್ಟಮ್ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ (Linux) +# Ubuntu/Debian ಗಾಗಿ, ಟರ್ಮಿನಲ್‌ನಲ್ಲಿ: +# sudo apt-get install r-base-dev +``` + +**ಸಮಸ್ಯೆ**: `tidyverse` ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```r +# ಮೊದಲು ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ +install.packages(c("rlang", "vctrs", "pillar")) + +# ನಂತರ tidyverse ಅನ್ನು ಸ್ಥಾಪಿಸಿ +install.packages("tidyverse") + +# ಅಥವಾ ಘಟಕಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಸ್ಥಾಪಿಸಿ +install.packages(c("dplyr", "ggplot2", "tidyr", "readr")) +``` + +### RMarkdown ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: RMarkdown ರೆಂಡರ್ ಆಗುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```r +# rmarkdown ಅನ್ನು ಸ್ಥಾಪಿಸಿ/ನವೀಕರಿಸಿ +install.packages("rmarkdown") + +# ಅಗತ್ಯವಿದ್ದರೆ pandoc ಅನ್ನು ಸ್ಥಾಪಿಸಿ +install.packages("pandoc") + +# PDF ಔಟ್‌ಪುಟ್‌ಗಾಗಿ, tinytex ಅನ್ನು ಸ್ಥಾಪಿಸಿ +install.packages("tinytex") +tinytex::install_tinytex() +``` + +--- + +## ಕ್ವಿಜ್ ಅಪ್ಲಿಕೇಶನ್ ಸಮಸ್ಯೆಗಳು + +### ನಿರ್ಮಾಣ ಮತ್ತು ಸ್ಥಾಪನೆ + +**ಸಮಸ್ಯೆ**: `npm install` ವಿಫಲವಾಗಿದೆ + +**ಪರಿಹಾರ**: +```bash +# npm ಕ್ಯಾಶೆ ತೆರವುಗೊಳಿಸಿ +npm cache clean --force + +# node_modules ಮತ್ತು package-lock.json ತೆಗೆದುಹಾಕಿ +rm -rf node_modules package-lock.json + +# ಮರುಸ್ಥಾಪಿಸಿ +npm install + +# ಇನ್ನೂ ವಿಫಲವಾದರೆ, legacy peer deps ಜೊತೆಗೆ ಪ್ರಯತ್ನಿಸಿ +npm install --legacy-peer-deps +``` + +**ಸಮಸ್ಯೆ**: ಪೋರ್ಟ್ 8080 ಈಗಾಗಲೇ ಬಳಕೆಯಲ್ಲಿದೆ + +**ಪರಿಹಾರ**: +```bash +# ವಿಭಿನ್ನ ಪೋರ್ಟ್ ಬಳಸಿ +npm run serve -- --port 8081 + +# ಅಥವಾ ಪೋರ್ಟ್ 8080 ಬಳಸುತ್ತಿರುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಹುಡುಕಿ ಮತ್ತು ಕೊಲ್ಲಿರಿ +# ಲಿನಕ್ಸ್ನಲ್ಲಿ/ಮ್ಯಾಕ್‌ಒಎಸ್‌ನಲ್ಲಿ: +lsof -ti:8080 | xargs kill -9 + +# ವಿಂಡೋಸ್‌ನಲ್ಲಿ: +netstat -ano | findstr :8080 +taskkill /PID /F +``` + +### ನಿರ್ಮಾಣ ದೋಷಗಳು + +**ಸಮಸ್ಯೆ**: `npm run build` ವಿಫಲವಾಗಿದೆ + +**ಪರಿಹಾರ**: +```bash +# ನೋಡ್.js ಆವೃತ್ತಿಯನ್ನು ಪರಿಶೀಲಿಸಿ (14+ ಆಗಿರಬೇಕು) +node --version + +# ಅಗತ್ಯವಿದ್ದರೆ ನೋಡ್.js ಅನ್ನು ನವೀಕರಿಸಿ +# ನಂತರ ಸ್ವಚ್ಛ ಸ್ಥಾಪನೆ ಮಾಡಿ +rm -rf node_modules package-lock.json +npm install +npm run build +``` + +**ಸಮಸ್ಯೆ**: ಲಿಂಟಿಂಗ್ ದೋಷಗಳು ನಿರ್ಮಾಣವನ್ನು ತಡೆಯುತ್ತಿವೆ + +**ಪರಿಹಾರ**: +```bash +# ಸ್ವಯಂ ಸರಿಪಡಿಸಬಹುದಾದ ಸಮಸ್ಯೆಗಳನ್ನು ಸರಿಪಡಿಸಿ +npm run lint -- --fix + +# ಅಥವಾ ತಾತ್ಕಾಲಿಕವಾಗಿ ನಿರ್ಮಾಣದಲ್ಲಿ ಲಿಂಟಿಂಗ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ +# (ಉತ್ಪಾದನೆಗಾಗಿ ಶಿಫಾರಸು ಮಾಡಲಾಗುವುದಿಲ್ಲ) +``` + +--- + +## ಡೇಟಾ ಮತ್ತು ಫೈಲ್ ಪಥ ಸಮಸ್ಯೆಗಳು + +### ಪಥ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಚಾಲನೆ ಮಾಡುವಾಗ ಡೇಟಾ ಫೈಲ್‌ಗಳು ಕಂಡುಬರುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +1. **ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಯಾವ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿದ್ದರೂ ಅದರಿಂದಲೇ ಚಾಲನೆ ಮಾಡಿರಿ** + ```bash + cd /path/to/lesson/folder + jupyter notebook + ``` + +2. **ಕೋಡ್‌ನಲ್ಲಿ ಸಂಬಂಧಿತ ಪಥಗಳನ್ನು ಪರಿಶೀಲಿಸಿ** + ```python + # ನೋಟ್ಬುಕ್ ಸ್ಥಳದಿಂದ ಸರಿಯಾದ ಮಾರ್ಗ + df = pd.read_csv('../data/filename.csv') + + # ನಿಮ್ಮ ಟರ್ಮಿನಲ್ ಸ್ಥಳದಿಂದ ಅಲ್ಲ + ``` + +3. **ಅವಶ್ಯಕತೆ ಇದ್ದರೆ ಪೂರ್ಣ ಪಥಗಳನ್ನು ಬಳಸಿ** + ```python + import os + base_path = os.path.dirname(os.path.abspath(__file__)) + data_path = os.path.join(base_path, 'data', 'filename.csv') + ``` + +### ಡೇಟಾ ಫೈಲ್‌ಗಳು ಕಾಣೆಯಾದವು + +**ಸಮಸ್ಯೆ**: ಡೇಟಾಸೆಟ್ ಫೈಲ್‌ಗಳು ಕಾಣೆಯಾಗಿದೆ + +**ಪರಿಹಾರ**: +1. ಡೇಟಾ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಇರಬೇಕೇ ಎಂದು ಪರಿಶೀಲಿಸಿ - ಬಹುತೇಕ ಡೇಟಾಸೆಟ್‌ಗಳು ಸೇರಿವೆ +2. ಕೆಲವು ಪಾಠಗಳಿಗೆ ಡೇಟಾ ಡೌನ್‌ಲೋಡ್ ಅಗತ್ಯವಿರಬಹುದು - ಪಾಠ README ಪರಿಶೀಲಿಸಿ +3. ನೀವು ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿಕೊಂಡಿದ್ದೀರಾ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ: + ```bash + git pull origin main + ``` + +--- + +## ಸಾಮಾನ್ಯ ದೋಷ ಸಂದೇಶಗಳು + +### ಮೆಮೊರಿ ದೋಷಗಳು + +**ದೋಷ**: `MemoryError` ಅಥವಾ ಡೇಟಾ ಪ್ರಕ್ರಿಯೆ ಮಾಡುವಾಗ ಕರ್ಣಲ್ ಸಾಯುತ್ತದೆ + +**ಪರಿಹಾರ**: +```python +# ಡೇಟಾವನ್ನು ತುಂಡುಗಳಾಗಿ ಲೋಡ್ ಮಾಡಿ +for chunk in pd.read_csv('large_file.csv', chunksize=10000): + process(chunk) + +# ಅಥವಾ ಅಗತ್ಯವಿರುವ ಕಾಲಮ್‌ಗಳನ್ನು ಮಾತ್ರ ಓದಿ +df = pd.read_csv('file.csv', usecols=['col1', 'col2']) + +# ಮುಗಿದ ಮೇಲೆ ಮೆಮೊರಿಯನ್ನು ಮುಕ್ತಗೊಳಿಸಿ +del large_dataframe +import gc +gc.collect() +``` + +### ಸಮಾಗಮ ಎಚ್ಚರಿಕೆಗಳು + +**ಎಚ್ಚರಿಕೆ**: `ConvergenceWarning: Maximum number of iterations reached` + +**ಪರಿಹಾರ**: +```python +from sklearn.linear_model import LogisticRegression + +# ಗರಿಷ್ಠ ಪುನರಾವೃತ್ತಿಗಳನ್ನು ಹೆಚ್ಚಿಸಿ +model = LogisticRegression(max_iter=1000) + +# ಅಥವಾ ಮೊದಲು ನಿಮ್ಮ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮಾಪನ ಮಾಡಿ +from sklearn.preprocessing import StandardScaler +scaler = StandardScaler() +X_scaled = scaler.fit_transform(X) +``` + +### ಚಿತ್ರಣ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: ಜುಪೈಟರ್‌ನಲ್ಲಿ ಚಿತ್ರಣಗಳು ತೋರಿಸುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```python +# ಇನ್‌ಲೈನ್ ಪ್ಲಾಟಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ +%matplotlib inline + +# ಪೈಪ್ಲಾಟ್ ಅನ್ನು ಆಮದುಮಾಡಿ +import matplotlib.pyplot as plt + +# ಪ್ಲಾಟ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ತೋರಿಸಿ +plt.plot(data) +plt.show() +``` + +**ಸಮಸ್ಯೆ**: ಸೀಬೋನ್ ಚಿತ್ರಣಗಳು ವಿಭಿನ್ನವಾಗಿ ಕಾಣುತ್ತಿವೆ ಅಥವಾ ದೋಷಗಳನ್ನು ತೋರಿಸುತ್ತಿವೆ + +**ಪರಿಹಾರ**: +```python +import warnings +warnings.filterwarnings('ignore', category=UserWarning) + +# ಹೊಂದಾಣಿಕೆಯ ಆವೃತ್ತಿಗೆ ನವೀಕರಿಸಿ +# pip install --upgrade seaborn matplotlib +``` + +### ಯುನಿಕೋಡ್/ಎನ್‌ಕೋಡಿಂಗ್ ದೋಷಗಳು + +**ಸಮಸ್ಯೆ**: ಫೈಲ್ ಓದುವಾಗ `UnicodeDecodeError` + +**ಪರಿಹಾರ**: +```python +# ಎನ್‌ಕೋಡಿಂಗ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಸೂಚಿಸಿ +df = pd.read_csv('file.csv', encoding='utf-8') + +# ಅಥವಾ ವಿಭಿನ್ನ ಎನ್‌ಕೋಡಿಂಗ್ ಪ್ರಯತ್ನಿಸಿ +df = pd.read_csv('file.csv', encoding='latin-1') + +# ಸಮಸ್ಯೆಯಾದ ಅಕ್ಷರಗಳನ್ನು ತಪ್ಪಿಸಲು errors='ignore' ಬಳಸಿರಿ +df = pd.read_csv('file.csv', encoding='utf-8', errors='ignore') +``` + +--- + +## ಕಾರ್ಯಕ್ಷಮತೆ ಸಮಸ್ಯೆಗಳು + +### ನಿಧಾನ ನೋಟ್ಬುಕ್ ಚಾಲನೆ + +**ಸಮಸ್ಯೆ**: ನೋಟ್ಬುಕ್‌ಗಳು ಬಹಳ ನಿಧಾನವಾಗಿ ಚಾಲನೆ ಆಗುತ್ತಿವೆ + +**ಪರಿಹಾರ**: +1. **ಮೆಮೊರಿ ಮುಕ್ತಗೊಳಿಸಲು ಕರ್ಣಲ್ ಮರುಪ್ರಾರಂಭಿಸಿ**: `Kernel → Restart` +2. **ಬಳಸದ ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಮುಚ್ಚಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಮುಕ್ತಗೊಳಿಸಿ** +3. **ಪರೀಕ್ಷೆಗಾಗಿ ಸಣ್ಣ ಡೇಟಾ ಮಾದರಿಗಳನ್ನು ಬಳಸಿ**: + ```python + # ಅಭಿವೃದ್ಧಿಯ ಸಮಯದಲ್ಲಿ ಉಪಸಮೂಹದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿ + df_sample = df.sample(n=1000) + ``` +4. **ನಿಮ್ಮ ಕೋಡ್‌ನ ಬಾಟಲ್‌ನೆಕ್‌ಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಪ್ರೊಫೈಲ್ ಮಾಡಿ**: + ```python + %time operation() # ಸಮಯ ಏಕೈಕ ಕಾರ್ಯಾಚರಣೆ + %timeit operation() # ಬಹು ಬಾರಿ ಚಾಲನೆಗಳೊಂದಿಗೆ ಸಮಯ + ``` + +### ಹೆಚ್ಚಿನ ಮೆಮೊರಿ ಬಳಕೆ + +**ಸಮಸ್ಯೆ**: ಸಿಸ್ಟಮ್ ಮೆಮೊರಿ ಮುಗಿಯುತ್ತಿದೆ + +**ಪರಿಹಾರ**: +```python +# ಮೆಮೊರಿ ಬಳಕೆಯನ್ನು ಪರಿಶೀಲಿಸಿ +df.info(memory_usage='deep') + +# ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ಸುಧಾರಿಸಿ +df['column'] = df['column'].astype('int32') # int64 ಬದಲು + +# ಅನಾವಶ್ಯಕ ಕಾಲಮ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ +df = df[['col1', 'col2']] # ಅಗತ್ಯವಿರುವ ಕಾಲಮ್ಗಳನ್ನು ಮಾತ್ರ ಇಡಿ + +# ಬ್ಯಾಚ್‌ಗಳಲ್ಲಿ ಪ್ರಕ್ರಿಯೆ ಮಾಡಿ +for batch in np.array_split(df, 10): + process(batch) +``` + +--- + +## ಪರಿಸರ ಮತ್ತು ಸಂರಚನೆ + +### ವರ್ಚುವಲ್ ಪರಿಸರ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: ವರ್ಚುವಲ್ ಪರಿಸರ ಸಕ್ರಿಯವಾಗುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```bash +# ವಿಂಡೋಸ್ +python -m venv venv +venv\Scripts\activate.bat + +# ಮ್ಯಾಕ್‌ಒಎಸ್/ಲಿನಕ್ಸ +python3 -m venv venv +source venv/bin/activate + +# ಸಕ್ರಿಯಗೊಂಡಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ (ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿ venv ಹೆಸರು ತೋರಿಸಬೇಕು) +which python # venv ಪೈಥಾನ್‌ಗೆ ಸೂಚಿಸಬೇಕು +``` + +**ಸಮಸ್ಯೆ**: ಪ್ಯಾಕೇಜ್‌ಗಳು ಸ್ಥಾಪಿಸಲಾಗಿದೆ ಆದರೆ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಕಂಡುಬರುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```bash +# ನೋಟ್ಬುಕ್ ಸರಿಯಾದ ಕರ್ಣಲ್ ಬಳಸುತ್ತಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ +# ನಿಮ್ಮ ವಿ.ಎನ್.ಇ.ವಿ.ನಲ್ಲಿ ipykernel ಅನ್ನು ಸ್ಥಾಪಿಸಿ +pip install ipykernel +python -m ipykernel install --user --name=ml-env --display-name="Python (ml-env)" + +# ಜುಪಿಟರ್‌ನಲ್ಲಿ: ಕರ್ಣಲ್ → ಕರ್ಣಲ್ ಬದಲಿಸಿ → ಪೈಥಾನ್ (ml-env) +``` + +### ಗಿಟ್ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳನ್ನು ಪುಲ್ ಮಾಡಲಾಗುತ್ತಿಲ್ಲ - ಮರ್ಜ್ ಸಂಘರ್ಷಗಳು + +**ಪರಿಹಾರ**: +```bash +# ನಿಮ್ಮ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ಟ್ಯಾಶ್ ಮಾಡಿ +git stash + +# ಇತ್ತೀಚಿನದನ್ನು ಪುಲ್ ಮಾಡಿ +git pull origin main + +# ನಿಮ್ಮ ಬದಲಾವಣೆಗಳನ್ನು ಮರು ಅನ್ವಯಿಸಿ +git stash pop + +# ಸಂಘರ್ಷಗಳಿದ್ದರೆ, ಕೈಯಿಂದ ಪರಿಹರಿಸಿ ಅಥವಾ: +git checkout --theirs path/to/file # ರಿಮೋಟ್ ಆವೃತ್ತಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ +git checkout --ours path/to/file # ನಿಮ್ಮ ಆವೃತ್ತಿಯನ್ನು ಉಳಿಸಿ +``` + +### VS ಕೋಡ್ ಏಕೀಕರಣ + +**ಸಮಸ್ಯೆ**: ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್‌ಗಳು VS ಕೋಡ್‌ನಲ್ಲಿ ತೆರೆಯುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +1. VS ಕೋಡ್‌ನಲ್ಲಿ ಪೈಥಾನ್ ವಿಸ್ತರಣೆ ಸ್ಥಾಪಿಸಿ +2. VS ಕೋಡ್‌ನಲ್ಲಿ ಜುಪೈಟರ್ ವಿಸ್ತರಣೆ ಸ್ಥಾಪಿಸಿ +3. ಸರಿಯಾದ ಪೈಥಾನ್ ಇಂಟರ್ಪ್ರೀಟರ್ ಆಯ್ಕೆಮಾಡಿ: `Ctrl+Shift+P` → "Python: Select Interpreter" +4. VS ಕೋಡ್ ಮರುಪ್ರಾರಂಭಿಸಿ + +--- + +## ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳು + +- **Discord ಚರ್ಚೆಗಳು**: [#ml-for-beginners ಚಾನೆಲ್‌ನಲ್ಲಿ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಿ ಮತ್ತು ಪರಿಹಾರಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಿ](https://aka.ms/foundry/discord) +- **Microsoft Learn**: [ML for Beginners ಘಟಕಗಳು](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +- **ವೀಡಿಯೊ ಪಾಠಗಳು**: [YouTube ಪ್ಲೇಲಿಸ್ಟ್](https://aka.ms/ml-beginners-videos) +- **ಸಮಸ್ಯೆ ಟ್ರ್ಯಾಕರ್**: [ದೋಷಗಳನ್ನು ವರದಿ ಮಾಡಿ](https://github.com/microsoft/ML-For-Beginners/issues) + +--- + +## ಇನ್ನೂ ಸಮಸ್ಯೆಗಳಿವೆಯೇ? + +ಮೇಲಿನ ಪರಿಹಾರಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿದರೂ ಸಮಸ್ಯೆಗಳು ಮುಂದುವರೆದರೆ: + +1. **ಇದೀಗಿರುವ ಸಮಸ್ಯೆಗಳನ್ನು ಹುಡುಕಿ**: [GitHub Issues](https://github.com/microsoft/ML-For-Beginners/issues) +2. **Discord ಚರ್ಚೆಗಳನ್ನು ಪರಿಶೀಲಿಸಿ**: [Discord Discussions](https://aka.ms/foundry/discord) +3. **ಹೊಸ ಸಮಸ್ಯೆಯನ್ನು ತೆರೆಯಿರಿ**: ಒಳಗೊಂಡಿರಲಿ: + - ನಿಮ್ಮ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಮತ್ತು ಆವೃತ್ತಿ + - ಪೈಥಾನ್/R ಆವೃತ್ತಿ + - ದೋಷ ಸಂದೇಶ (ಪೂರ್ಣ ಟ್ರೇಸ್‌ಬ್ಯಾಕ್) + - ಸಮಸ್ಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸುವ ಹಂತಗಳು + - ನೀವು ಈಗಾಗಲೇ ಪ್ರಯತ್ನಿಸಿದವು + +ನಾವು ಸಹಾಯ ಮಾಡಲು ಇಲ್ಲಿ ಇದ್ದೇವೆ! 🚀 + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/docs/_sidebar.md b/translations/kn/docs/_sidebar.md new file mode 100644 index 000000000..7291ebf05 --- /dev/null +++ b/translations/kn/docs/_sidebar.md @@ -0,0 +1,59 @@ + +- ಪರಿಚಯ + - [ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ](../1-Introduction/1-intro-to-ML/README.md) + - [ಯಂತ್ರ ಅಧ್ಯಯನದ ಇತಿಹಾಸ](../1-Introduction/2-history-of-ML/README.md) + - [ಯಂತ್ರ ಅಧ್ಯಯನ ಮತ್ತು ನ್ಯಾಯತತೆ](../1-Introduction/3-fairness/README.md) + - [ಯಂತ್ರ ಅಧ್ಯಯನದ ತಂತ್ರಗಳು](../1-Introduction/4-techniques-of-ML/README.md) + +- ರಿಗ್ರೆಶನ್ + - [ವ್ಯವಹಾರದ ಸಾಧನಗಳು](../2-Regression/1-Tools/README.md) + - [ಡೇಟಾ](../2-Regression/2-Data/README.md) + - [ರೇಖೀಯ ರಿಗ್ರೆಶನ್](../2-Regression/3-Linear/README.md) + - [ಲಾಗಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್](../2-Regression/4-Logistic/README.md) + +- ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ + - [ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್](../3-Web-App/1-Web-App/README.md) + +- ವರ್ಗೀಕರಣ + - [ವರ್ಗೀಕರಣಕ್ಕೆ ಪರಿಚಯ](../4-Classification/1-Introduction/README.md) + - [ವರ್ಗೀಕರಣಗಳು 1](../4-Classification/2-Classifiers-1/README.md) + - [ವರ್ಗೀಕರಣಗಳು 2](../4-Classification/3-Classifiers-2/README.md) + - [ಅನ್ವಯಿಸಿದ ಯಂತ್ರ ಅಧ್ಯಯನ](../4-Classification/4-Applied/README.md) + +- ಗುಂಪುಮಾಡುವಿಕೆ + - [ನಿಮ್ಮ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಿ](../5-Clustering/1-Visualize/README.md) + - [ಕೆ-ಮೀನ್ಸ್](../5-Clustering/2-K-Means/README.md) + +- ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ + - [ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆಗೆ ಪರಿಚಯ](../6-NLP/1-Introduction-to-NLP/README.md) + - [ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆಯ ಕಾರ್ಯಗಳು](../6-NLP/2-Tasks/README.md) + - [ಅನುವಾದ ಮತ್ತು ಭಾವನೆ](../6-NLP/3-Translation-Sentiment/README.md) + - [ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳು 1](../6-NLP/4-Hotel-Reviews-1/README.md) + - [ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳು 2](../6-NLP/5-Hotel-Reviews-2/README.md) + +- ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ + - [ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಗೆ ಪರಿಚಯ](../7-TimeSeries/1-Introduction/README.md) + - [ಎರಿಮಾ](../7-TimeSeries/2-ARIMA/README.md) + - [ಎಸ್‌ವಿಆರ್](../7-TimeSeries/3-SVR/README.md) + +- ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ + - [ಕ್ಯೂ-ಅಧ್ಯಯನ](../8-Reinforcement/1-QLearning/README.md) + - [ಜಿಮ್](../8-Reinforcement/2-Gym/README.md) + +- ನೈಜ ಜಗತ್ತಿನ ಯಂತ್ರ ಅಧ್ಯಯನ + - [ಅನ್ವಯಗಳು](../9-Real-World/1-Applications/README.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/for-teachers.md b/translations/kn/for-teachers.md new file mode 100644 index 000000000..bbce2552e --- /dev/null +++ b/translations/kn/for-teachers.md @@ -0,0 +1,39 @@ + +## ಶಿಕ್ಷಕರಿಗಾಗಿ + +ನೀವು ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ನಿಮ್ಮ ತರಗತಿಯಲ್ಲಿ ಬಳಸಲು ಇಚ್ಛಿಸುತ್ತೀರಾ? ದಯವಿಟ್ಟು ಮುಕ್ತವಾಗಿ ಬಳಸಿಕೊಳ್ಳಿ! + +ವಾಸ್ತವದಲ್ಲಿ, ನೀವು GitHub Classroom ಬಳಸಿ GitHub ನೊಳಗೆ ಇದನ್ನು ಬಳಸಬಹುದು. + +ಅದಕ್ಕಾಗಿ, ಈ ರೆಪೊವನ್ನು ಫೋರ್ಕ್ ಮಾಡಿ. ಪ್ರತಿಯೊಂದು ಪಾಠಕ್ಕಾಗಿ ನೀವು ಒಂದು ರೆಪೊ ಸೃಷ್ಟಿಸಬೇಕಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಪ್ರತಿಯೊಂದು ಫೋಲ್ಡರ್ ಅನ್ನು ಪ್ರತ್ಯೇಕ ರೆಪೊಗೆ ಹೊರತೆಗೆಯಬೇಕಾಗುತ್ತದೆ. ಆ ರೀತಿಯಲ್ಲಿ, [GitHub Classroom](https://classroom.github.com/classrooms) ಪ್ರತಿ ಪಾಠವನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಹಿಡಿಯಬಹುದು. + +ಈ [ಪೂರ್ಣ ಸೂಚನೆಗಳು](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) ನಿಮ್ಮ ತರಗತಿಯನ್ನು ಹೇಗೆ ಸೆಟ್ ಅಪ್ ಮಾಡಬೇಕೆಂದು ನಿಮಗೆ ತಿಳಿಸುವುದು. + +## ರೆಪೊವನ್ನು ಹಾಗೆ ಬಳಸುವುದು + +ನೀವು GitHub Classroom ಬಳಸದೆ ಈ ರೆಪೊವನ್ನು ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯಲ್ಲಿ ಬಳಸಲು ಇಚ್ಛಿಸಿದರೆ, ಅದು ಸಹ ಸಾಧ್ಯ. ನೀವು ನಿಮ್ಮ ವಿದ್ಯಾರ್ಥಿಗಳೊಂದಿಗೆ ಯಾವ ಪಾಠವನ್ನು ಒಟ್ಟಿಗೆ ಕೆಲಸ ಮಾಡಬೇಕೆಂದು ಸಂವಹನ ಮಾಡಬೇಕಾಗುತ್ತದೆ. + +ಆನ್ಲೈನ್ ಫಾರ್ಮ್ಯಾಟ್ (Zoom, Teams, ಅಥವಾ ಇತರೆ) ನಲ್ಲಿ ನೀವು ಕ್ವಿಜ್‌ಗಳಿಗಾಗಿ ಬ್ರೇಕ್‌ಔಟ್ ರೂಮ್ಗಳನ್ನು ರೂಪಿಸಬಹುದು ಮತ್ತು ವಿದ್ಯಾರ್ಥಿಗಳನ್ನು ಕಲಿಯಲು ಸಿದ್ಧರಾಗಲು ಮಾರ್ಗದರ್ಶನ ಮಾಡಬಹುದು. ನಂತರ ವಿದ್ಯಾರ್ಥಿಗಳನ್ನು ಕ್ವಿಜ್‌ಗಳಿಗೆ ಆಹ್ವಾನಿಸಿ, ನಿರ್ದಿಷ್ಟ ಸಮಯದಲ್ಲಿ 'issues' ಆಗಿ ಉತ್ತರಗಳನ್ನು ಸಲ್ಲಿಸಲು ಹೇಳಬಹುದು. ನೀವು ಬಯಸಿದರೆ, ವಿದ್ಯಾರ್ಥಿಗಳು ಸಹಕಾರದಿಂದ ಹೊರಗೆ ಕೆಲಸ ಮಾಡಲು, ಅಸೈನ್ಮೆಂಟ್‌ಗಳಿಗೂ ಇದೇ ರೀತಿಯ ವ್ಯವಸ್ಥೆ ಮಾಡಬಹುದು. + +ನೀವು ಹೆಚ್ಚು ಖಾಸಗಿ ಫಾರ್ಮ್ಯಾಟ್ ಇಚ್ಛಿಸಿದರೆ, ವಿದ್ಯಾರ್ಥಿಗಳನ್ನು ಪಠ್ಯಕ್ರಮವನ್ನು ಪಾಠದ ಮೂಲಕ ಫೋರ್ಕ್ ಮಾಡಿ ತಮ್ಮ ಸ್ವಂತ GitHub ರೆಪೊಗಳಲ್ಲಿ ಖಾಸಗಿ ರೆಪೊಗಳಾಗಿ ಇಟ್ಟುಕೊಳ್ಳಲು ಹೇಳಿ, ಮತ್ತು ನಿಮಗೆ ಪ್ರವೇಶ ನೀಡಲು ಹೇಳಿ. ನಂತರ ಅವರು ಖಾಸಗಿ ರೀತಿಯಲ್ಲಿ ಕ್ವಿಜ್‌ಗಳು ಮತ್ತು ಅಸೈನ್ಮೆಂಟ್‌ಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ, ನಿಮ್ಮ ತರಗತಿ ರೆಪೊದಲ್ಲಿ issues ಮೂಲಕ ನಿಮಗೆ ಸಲ್ಲಿಸಬಹುದು. + +ಆನ್ಲೈನ್ ತರಗತಿ ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿ ಇದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಅನೇಕ ಮಾರ್ಗಗಳಿವೆ. ದಯವಿಟ್ಟು ನಿಮಗೆ ಯಾವುದು ಉತ್ತಮವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ನಮಗೆ ತಿಳಿಸಿ! + +## ದಯವಿಟ್ಟು ನಿಮ್ಮ ಅಭಿಪ್ರಾಯವನ್ನು ನೀಡಿ! + +ನಾವು ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ನಿಮಗೂ ನಿಮ್ಮ ವಿದ್ಯಾರ್ಥಿಗಳಿಗೂ ಉಪಯುಕ್ತವಾಗಿಸಲು ಬಯಸುತ್ತೇವೆ. ದಯವಿಟ್ಟು ನಮಗೆ [ಪ್ರತಿಕ್ರಿಯೆ](https://forms.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR2humCsRZhxNuI79cm6n0hRUQzRVVU9VVlU5UlFLWTRLWlkyQUxORTg5WS4u) ನೀಡಿ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/quiz-app/README.md b/translations/kn/quiz-app/README.md new file mode 100644 index 000000000..93349597a --- /dev/null +++ b/translations/kn/quiz-app/README.md @@ -0,0 +1,128 @@ + +# ಪ್ರಶ್ನೋತ್ತರಗಳು + +ಈ ಪ್ರಶ್ನೋತ್ತರಗಳು https://aka.ms/ml-beginners ನಲ್ಲಿ ML ಪಠ್ಯಕ್ರಮದ ಪೂರ್ವ ಮತ್ತು ನಂತರದ ಪ್ರಶ್ನೋತ್ತರಗಳಾಗಿವೆ + +## ಪ್ರಾಜೆಕ್ಟ್ ಸೆಟಪ್ + +``` +npm install +``` + +### ಅಭಿವೃದ್ಧಿಗಾಗಿ ಸಂಯೋಜನೆ ಮತ್ತು ಹಾಟ್-ರಿಲೋಡ್ + +``` +npm run serve +``` + +### ಉತ್ಪಾದನೆಗಾಗಿ ಸಂಯೋಜನೆ ಮತ್ತು ಮಿನಿಫೈ + +``` +npm run build +``` + +### ಫೈಲ್‌ಗಳನ್ನು ಲಿಂಟ್ ಮಾಡಿ ಮತ್ತು ಸರಿಪಡಿಸಿ + +``` +npm run lint +``` + +### ಸಂರಚನೆಯನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ + +[Configuration Reference](https://cli.vuejs.org/config/) ಅನ್ನು ನೋಡಿ. + +ಕ್ರೆಡಿಟ್ಸ್: ಈ ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್‌ನ ಮೂಲ ಆವೃತ್ತಿಗೆ ಧನ್ಯವಾದಗಳು: https://github.com/arpan45/simple-quiz-vue + +## ಅಜೂರ್‌ಗೆ ನಿಯೋಜನೆ + +ನಿಮಗೆ ಪ್ರಾರಂಭಿಸಲು ಸಹಾಯ ಮಾಡುವ ಹಂತ ಹಂತದ ಮಾರ್ಗದರ್ಶಿ ಇಲ್ಲಿದೆ: + +1. GitHub ರೆಪೊಸಿಟರಿಯನ್ನು ಫೋರ್ಕ್ ಮಾಡಿ +ನಿಮ್ಮ ಸ್ಥಿರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಕೋಡ್ ನಿಮ್ಮ GitHub ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಇರಬೇಕು. ಈ ರೆಪೊಸಿಟರಿಯನ್ನು ಫೋರ್ಕ್ ಮಾಡಿ. + +2. ಅಜೂರ್ ಸ್ಥಿರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ರಚಿಸಿ +- [ಅಜೂರ್ ಖಾತೆ](http://azure.microsoft.com) ರಚಿಸಿ +- [ಅಜೂರ್ ಪೋರ್ಟಲ್](https://portal.azure.com) ಗೆ ಹೋಗಿ +- "Create a resource" ಕ್ಲಿಕ್ ಮಾಡಿ ಮತ್ತು "Static Web App" ಅನ್ನು ಹುಡುಕಿ. +- "Create" ಕ್ಲಿಕ್ ಮಾಡಿ. + +3. ಸ್ಥಿರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸಂರಚಿಸಿ +- ಮೂಲಭೂತಗಳು: ಸಬ್ಸ್ಕ್ರಿಪ್ಷನ್: ನಿಮ್ಮ ಅಜೂರ್ ಸಬ್ಸ್ಕ್ರಿಪ್ಷನ್ ಆಯ್ಕೆಮಾಡಿ. +- ರಿಸೋರ್ಸ್ ಗ್ರೂಪ್: ಹೊಸ ರಿಸೋರ್ಸ್ ಗ್ರೂಪ್ ರಚಿಸಿ ಅಥವಾ ಇತ್ತೀಚಿನದನ್ನು ಬಳಸಿ. +- ಹೆಸರು: ನಿಮ್ಮ ಸ್ಥಿರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಹೆಸರು ನೀಡಿ. +- ಪ್ರದೇಶ: ನಿಮ್ಮ ಬಳಕೆದಾರರಿಗೆ ಸಮೀಪದ ಪ್ರದೇಶವನ್ನು ಆಯ್ಕೆಮಾಡಿ. + +- #### ನಿಯೋಜನೆ ವಿವರಗಳು: +- ಮೂಲ: "GitHub" ಆಯ್ಕೆಮಾಡಿ. +- GitHub ಖಾತೆ: ಅಜೂರ್‌ಗೆ ನಿಮ್ಮ GitHub ಖಾತೆಗೆ ಪ್ರವೇಶ ನೀಡಿರಿ. +- ಸಂಸ್ಥೆ: ನಿಮ್ಮ GitHub ಸಂಸ್ಥೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ. +- ರೆಪೊಸಿಟರಿ: ನಿಮ್ಮ ಸ್ಥಿರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಹೊಂದಿರುವ ರೆಪೊಸಿಟರಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ. +- ಶಾಖೆ: ನೀವು ನಿಯೋಜಿಸಲು ಬಯಸುವ ಶಾಖೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ. + +- #### ನಿರ್ಮಾಣ ವಿವರಗಳು: +- ನಿರ್ಮಾಣ ಪೂರ್ವನಿಯೋಜನೆಗಳು: ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿತವಾಗಿರುವ ಫ್ರೇಮ್ವರ್ಕ್ ಆಯ್ಕೆಮಾಡಿ (ಉದಾ: React, Angular, Vue, ಇತ್ಯಾದಿ). +- ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಳ: ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಕೋಡ್ ಇರುವ ಫೋಲ್ಡರ್ ಸೂಚಿಸಿ (ಉದಾ: / ಮೂಲದಲ್ಲಿ ಇದ್ದರೆ). +- API ಸ್ಥಳ: ನೀವು API ಹೊಂದಿದ್ದರೆ, ಅದರ ಸ್ಥಳವನ್ನು ಸೂಚಿಸಿ (ಐಚ್ಛಿಕ). +- ಔಟ್‌ಪುಟ್ ಸ್ಥಳ: ನಿರ್ಮಾಣ ಔಟ್‌ಪುಟ್ ಉತ್ಪಾದನೆಯಾಗುವ ಫೋಲ್ಡರ್ ಸೂಚಿಸಿ (ಉದಾ: build ಅಥವಾ dist). + +4. ಪರಿಶೀಲಿಸಿ ಮತ್ತು ರಚಿಸಿ +ನಿಮ್ಮ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು "Create" ಕ್ಲಿಕ್ ಮಾಡಿ. ಅಜೂರ್ ಅಗತ್ಯವಿರುವ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ ಮತ್ತು ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ GitHub Actions ವರ್ಕ್‌ಫ್ಲೋವನ್ನು ರಚಿಸುತ್ತದೆ. + +5. GitHub Actions ವರ್ಕ್‌ಫ್ಲೋ +ಅಜೂರ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ GitHub Actions ವರ್ಕ್‌ಫ್ಲೋ ಫೈಲ್ (.github/workflows/azure-static-web-apps-.yml) ರಚಿಸುತ್ತದೆ. ಈ ವರ್ಕ್‌ಫ್ಲೋ ನಿರ್ಮಾಣ ಮತ್ತು ನಿಯೋಜನೆ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. + +6. ನಿಯೋಜನೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಿ +ನಿಮ್ಮ GitHub ರೆಪೊಸಿಟರಿಯ "Actions" ಟ್ಯಾಬ್‌ಗೆ ಹೋಗಿ. +ನೀವು ಒಂದು ವರ್ಕ್‌ಫ್ಲೋ ಚಲಿಸುತ್ತಿರುವುದನ್ನು ನೋಡಬಹುದು. ಈ ವರ್ಕ್‌ಫ್ಲೋ ನಿಮ್ಮ ಸ್ಥಿರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅಜೂರ್‌ಗೆ ನಿರ್ಮಿಸಿ ನಿಯೋಜಿಸುತ್ತದೆ. +ವರ್ಕ್‌ಫ್ಲೋ ಪೂರ್ಣಗೊಂಡ ನಂತರ, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ನೀಡಲಾದ ಅಜೂರ್ URL ನಲ್ಲಿ ಲೈವ್ ಆಗಿರುತ್ತದೆ. + +### ಉದಾಹರಣೆಯ ವರ್ಕ್‌ಫ್ಲೋ ಫೈಲ್ + +GitHub Actions ವರ್ಕ್‌ಫ್ಲೋ ಫೈಲ್ ಹೇಗಿರಬಹುದು ಎಂಬ ಉದಾಹರಣೆ ಇಲ್ಲಿದೆ: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "/quiz-app" # App source code path + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳು +- [Azure Static Web Apps Documentation](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions Documentation](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/sketchnotes/LICENSE.md b/translations/kn/sketchnotes/LICENSE.md new file mode 100644 index 000000000..b9b9d2def --- /dev/null +++ b/translations/kn/sketchnotes/LICENSE.md @@ -0,0 +1,247 @@ + +ಅಟ್ರಿಬ್ಯೂಷನ್-ಶೇರ್ ಅಲೈಕ್ 4.0 ಇಂಟರ್‌ನ್ಯಾಷನಲ್ + +======================================================================= + +ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಕಾರ್ಪೊರೇಶನ್ ("ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್") ಒಂದು ಕಾನೂನು ಸಂಸ್ಥೆ ಅಲ್ಲ ಮತ್ತು +ಕಾನೂನು ಸೇವೆಗಳು ಅಥವಾ ಕಾನೂನು ಸಲಹೆಗಳನ್ನು ನೀಡುವುದಿಲ್ಲ. ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳನ್ನು ಹಂಚಿಕೆ ಮಾಡುವುದು ವಕೀಲ-ಗ್ರಾಹಕ ಅಥವಾ +ಇತರ ಸಂಬಂಧವನ್ನು ಸೃಷ್ಟಿಸುವುದಿಲ್ಲ. ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ತನ್ನ ಪರವಾನಗಿಗಳನ್ನು ಮತ್ತು ಸಂಬಂಧಿತ +ಮಾಹಿತಿಯನ್ನು "ಹಾಗೇ ಇದೆ" ಆಧಾರದ ಮೇಲೆ ಲಭ್ಯವಿದೆ. ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ತನ್ನ ಪರವಾನಗಿಗಳ ಬಗ್ಗೆ ಯಾವುದೇ +ಹೆಚ್ಚುವರಿ ಭರವಸೆಗಳನ್ನು ನೀಡುವುದಿಲ್ಲ, ಅವುಗಳ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಯಾವುದೇ ವಸ್ತುಗಳ ಬಗ್ಗೆ ಅಥವಾ ಯಾವುದೇ ಸಂಬಂಧಿತ ಮಾಹಿತಿಯ ಬಗ್ಗೆ. ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ +ಅವುಗಳ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಹಾನಿಗಳ ಬಗ್ಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಜವಾಬ್ದಾರಿಯನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ. + +ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳನ್ನು ಬಳಸುವುದು + +ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳು ಸೃಷ್ಟಿಕರ್ತರು ಮತ್ತು ಇತರ ಹಕ್ಕುಧಾರಕರು ಮೂಲ +ರಚನೆಗಳ ಮತ್ತು ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಕೆಳಗಿನ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಕೆಲವು ಇತರ ಹಕ್ಕುಗಳಿಗೆ ಒಳಪಟ್ಟ ವಸ್ತುಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಬಳಸಬಹುದಾದ +ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳ ಸಾಮಾನ್ಯ ಸೆಟ್ ಅನ್ನು ಒದಗಿಸುತ್ತವೆ. ಕೆಳಗಿನ ಪರಿಗಣನೆಗಳು ಮಾಹಿತಿ ಉದ್ದೇಶಕ್ಕಾಗಿ ಮಾತ್ರ, ಸಂಪೂರ್ಣವಲ್ಲ, ಮತ್ತು ನಮ್ಮ ಪರವಾನಗಿಗಳ ಭಾಗವಲ್ಲ. + + ಪರವಾನಗಿ ನೀಡುವವರ ಪರಿಗಣನೆಗಳು: ನಮ್ಮ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳು + ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಕೆಲವು ಇತರ ಹಕ್ಕುಗಳಿಂದ ನಿಯಂತ್ರಿತವಾಗಿರುವ + ವಸ್ತುಗಳನ್ನು ಸಾರ್ವಜನಿಕರಿಗೆ ಬಳಸಲು ಅನುಮತಿ ನೀಡಲು ಅಧಿಕಾರ ಹೊಂದಿರುವವರ ಬಳಕೆಗಾಗಿ ಉದ್ದೇಶಿಸಲಾಗಿದೆ. + ನಮ್ಮ ಪರವಾನಗಿಗಳು ರದ್ದುಗೊಳಿಸಲಾಗದವು. ಪರವಾನಗಿ ನೀಡುವವರು ಆಯ್ಕೆಮಾಡಿದ ಪರವಾನಗಿ + ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು ಓದಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. + ಪರವಾನಗಿ ನೀಡುವವರು ಸಾರ್ವಜನಿಕರು ನಿರೀಕ್ಷಿಸುವಂತೆ ವಸ್ತುವನ್ನು ಮರುಬಳಕೆ ಮಾಡಿಕೊಳ್ಳಲು ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಹಕ್ಕುಗಳನ್ನು + ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು. ಪರವಾನಗಿ ಅನ್ವಯಿಸದ ಯಾವುದೇ ವಸ್ತುಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಗುರುತಿಸಬೇಕು. + ಇದರಲ್ಲಿ ಇತರ CC-ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುಗಳು ಅಥವಾ ಪ್ರತಿಕೃತಿ ಹಕ್ಕಿಗೆ ಹೊರತಾಗಿಯೂ + ವಿನಾಯಿತಿ ಅಥವಾ ಮಿತಿಯಡಿ ಬಳಸಲಾಗುವ ವಸ್ತುಗಳು ಸೇರಿವೆ. ಪರವಾನಗಿ ನೀಡುವವರ ಹೆಚ್ಚಿನ ಪರಿಗಣನೆಗಳು: + wiki.creativecommons.org/Considerations_for_licensors + + ಸಾರ್ವಜನಿಕರ ಪರಿಗಣನೆಗಳು: ನಮ್ಮ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳಲ್ಲಿ ಒಂದನ್ನು ಬಳಸುವ ಮೂಲಕ, + ಪರವಾನಗಿ ನೀಡುವವರು ಸಾರ್ವಜನಿಕರಿಗೆ ನಿರ್ದಿಷ್ಟ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಬಳಸಲು ಅನುಮತಿ ನೀಡುತ್ತಾರೆ. + ಪರವಾನಗಿ ನೀಡುವವರ ಅನುಮತಿ ಯಾವುದೇ ಕಾರಣಕ್ಕಾಗಿ ಅಗತ್ಯವಿಲ್ಲದಿದ್ದರೆ—for + ಉದಾಹರಣೆಗೆ, ಯಾವುದೇ ಅನ್ವಯಿಸುವ ವಿನಾಯಿತಿ ಅಥವಾ ಮಿತಿಯ ಕಾರಣದಿಂದ—ಆ ಬಳಕೆ ಪರವಾನಗಿಯಿಂದ ನಿಯಂತ್ರಿತವಾಗುವುದಿಲ್ಲ. + ನಮ್ಮ ಪರವಾನಗಿಗಳು ಪರವಾನಗಿ ನೀಡುವವರಿಗೆ ನೀಡಲು ಅಧಿಕಾರವಿರುವ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಕೆಲವು ಇತರ ಹಕ್ಕುಗಳ ಅಡಿಯಲ್ಲಿ ಮಾತ್ರ ಅನುಮತಿಗಳನ್ನು ನೀಡುತ್ತವೆ. + ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಬಳಕೆ ಇನ್ನೂ ಇತರ ಕಾರಣಗಳಿಂದ ನಿಯಂತ್ರಿತವಾಗಿರಬಹುದು, ಉದಾಹರಣೆಗೆ ಇತರರಿಗೆ ಆ ವಸ್ತುವಿನ ಮೇಲೆ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಅಥವಾ ಇತರ ಹಕ್ಕುಗಳಿದ್ದರೆ. + ಪರವಾನಗಿ ನೀಡುವವರು ವಿಶೇಷ ವಿನಂತಿಗಳನ್ನು ಮಾಡಬಹುದು, ಉದಾಹರಣೆಗೆ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ಗುರುತಿಸಲು ಅಥವಾ ವರ್ಣಿಸಲು ಕೇಳಬಹುದು. + ನಮ್ಮ ಪರವಾನಗಿಗಳಿಂದ ಅವಶ್ಯಕವಿಲ್ಲದಿದ್ದರೂ, ನೀವು ಆ ವಿನಂತಿಗಳನ್ನು ಯುಕ್ತಿಯುತವಾಗಿದ್ದಲ್ಲಿ ಗೌರವಿಸುವಂತೆ ಪ್ರೋತ್ಸಾಹಿಸಲಾಗುತ್ತದೆ. + ಸಾರ್ವಜನಿಕರ ಹೆಚ್ಚಿನ ಪರಿಗಣನೆಗಳು: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಅಟ್ರಿಬ್ಯೂಷನ್-ಶೇರ್ ಅಲೈಕ್ 4.0 ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ + +ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು (ಕೆಳಗಿನಂತೆ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ) ಬಳಸುವ ಮೂಲಕ, ನೀವು ಈ ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ +ಅಟ್ರಿಬ್ಯೂಷನ್-ಶೇರ್ ಅಲೈಕ್ 4.0 ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ("ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ") ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳಿಗೆ ಬದ್ಧರಾಗಲು ಒಪ್ಪಿಕೊಳ್ಳುತ್ತೀರಿ. +ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಒಪ್ಪಂದವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲ್ಪಟ್ಟರೆ, ನೀವು ಈ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳನ್ನು ಒಪ್ಪಿಕೊಂಡಿರುವುದಕ್ಕಾಗಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಪಡೆಯುತ್ತೀರಿ, +ಮತ್ತು ಪರವಾನಗಿ ನೀಡುವವರು ಈ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಲಭ್ಯವಿರುವ ಮೂಲಕ ಲಾಭಗಳನ್ನು ಪಡೆಯುತ್ತಾರೆ. + + +ಅಧ್ಯಾಯ 1 -- ವ್ಯಾಖ್ಯಾನಗಳು. + + a. ಹೊಂದಿಸಿದ ವಸ್ತು ಎಂದರೆ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನಿಂದ ಉತ್ಪನ್ನವಾಗಿರುವ ಅಥವಾ ಆಧಾರಿತವಾಗಿರುವ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳಿಗೆ ಒಳಪಟ್ಟ ವಸ್ತು, + ಮತ್ತು ಅದರಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಅನುವಾದಿಸಲಾಗುತ್ತದೆ, ಬದಲಿಸಲಾಗುತ್ತದೆ, + ವ್ಯವಸ್ಥಿತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ಇತರ ರೀತಿಯಲ್ಲಿ ಪರವಾನಗಿ ನೀಡುವವರ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳ ಅಡಿಯಲ್ಲಿ ಅನುಮತಿ ಅಗತ್ಯವಿರುವ ರೀತಿಯಲ್ಲಿ ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ. + ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಾಗಿ, ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತು ಸಂಗೀತ ಕೃತಿ, ಪ್ರದರ್ಶನ ಅಥವಾ ಧ್ವನಿ ದಾಖಲೆಯಾದರೆ, + ಹೊಂದಿಸಿದ ವಸ್ತು ಎಂದರೆ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತು ಚಲಿಸುವ ಚಿತ್ರದೊಂದಿಗೆ ಕಾಲಮಾನದಲ್ಲಿ ಸಿಂಕ್ ಮಾಡಲ್ಪಟ್ಟಾಗ ಮಾತ್ರ ಉತ್ಪನ್ನವಾಗುತ್ತದೆ. + + b. ಹೊಂದಿಸುವವರ ಪರವಾನಗಿ ಎಂದರೆ ನೀವು ಹೊಂದಿಸಿದ ವಸ್ತುಗಳಿಗೆ ನಿಮ್ಮ ಕೊಡುಗೆಗಳಲ್ಲಿ ನಿಮ್ಮ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳಿಗೆ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳ ಪ್ರಕಾರ ನೀವು ಅನ್ವಯಿಸುವ ಪರವಾನಗಿ. + + c. BY-SA ಹೊಂದಾಣಿಕೆಯ ಪರವಾನಗಿ ಎಂದರೆ creativecommons.org/compatiblelicenses ನಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾದ, ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಸಮಾನವಾದ ಪರವಾನಗಿ ಎಂದು ಅಂಗೀಕರಿಸಿದ ಪರವಾನಗಿ. + + d. ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳು ಎಂದರೆ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು/ಅಥವಾ ಪ್ರತಿಕೃತಿ ಹಕ್ಕಿಗೆ ಹತ್ತಿರದ ಹಕ್ಕುಗಳು, ಉದಾಹರಣೆಗೆ ಪ್ರದರ್ಶನ, ಪ್ರಸಾರ, ಧ್ವನಿ ದಾಖಲೆ ಮತ್ತು ಸುವಿ ಜನೆರಿಸ್ ಡೇಟಾಬೇಸ್ ಹಕ್ಕುಗಳು, ಹಕ್ಕುಗಳನ್ನು ಹೇಗೆ ಲೇಬಲ್ ಮಾಡಲಾಗಿದೆ ಅಥವಾ ವರ್ಗೀಕರಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಪರಿಗಣಿಸದೆ. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಾಗಿ, ಅಧ್ಯಾಯ 2(b)(1)-(2) ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಹಕ್ಕುಗಳು ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳಲ್ಲ. + + e. ಪರಿಣಾಮಕಾರಿ ತಂತ್ರಜ್ಞಾನ ಕ್ರಮಗಳು ಎಂದರೆ ಸರಿಯಾದ ಅಧಿಕಾರವಿಲ್ಲದೆ ತಿರಸ್ಕರಿಸಲಾಗದ ಕ್ರಮಗಳು, 1996 ಡಿಸೆಂಬರ್ 20 ರಂದು ಅಂಗೀಕೃತ WIPO ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಒಪ್ಪಂದದ ಕಲಂ 11 ಅಡಿಯಲ್ಲಿ ಕಾನೂನುಗಳು ಪೂರ್ಣಗೊಳಿಸುವ ಬಾಧ್ಯತೆಗಳನ್ನು ಹೊಂದಿವೆ ಮತ್ತು/ಅಥವಾ ಸಮಾನ ಅಂತಾರಾಷ್ಟ್ರೀಯ ಒಪ್ಪಂದಗಳು. + + f. ವಿನಾಯಿತಿಗಳು ಮತ್ತು ಮಿತಿಗಳು ಎಂದರೆ ನ್ಯಾಯಸಮ್ಮತ ಬಳಕೆ, ನ್ಯಾಯಸಮ್ಮತ ವ್ಯವಹಾರ ಮತ್ತು/ಅಥವಾ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳಿಗೆ ಅನ್ವಯಿಸುವ ಯಾವುದೇ ಇತರ ವಿನಾಯಿತಿ ಅಥವಾ ಮಿತಿ, ಇದು ನಿಮ್ಮ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಬಳಕೆಗೆ ಅನ್ವಯಿಸುತ್ತದೆ. + + g. ಪರವಾನಗಿ ಅಂಶಗಳು ಎಂದರೆ ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಹೆಸರಿನಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾದ ಪರವಾನಗಿ ಗುಣಲಕ್ಷಣಗಳು. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಪರವಾನಗಿ ಅಂಶಗಳು ಅಟ್ರಿಬ್ಯೂಷನ್ ಮತ್ತು ಶೇರ್ ಅಲೈಕ್. + + h. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತು ಎಂದರೆ ಕಲಾತ್ಮಕ ಅಥವಾ ಸಾಹಿತ್ಯ ಕೃತಿ, ಡೇಟಾಬೇಸ್ ಅಥವಾ ಇತರ ವಸ್ತು, ಇದಕ್ಕೆ ಪರವಾನಗಿ ನೀಡುವವರು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯನ್ನು ಅನ್ವಯಿಸಿದ್ದಾರೆ. + + i. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳು ಎಂದರೆ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳಿಗೆ ಒಳಪಟ್ಟ ನಿಮ್ಮ ಬಳಕೆಗೆ ಅನ್ವಯಿಸುವ ಎಲ್ಲಾ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳು, ಮತ್ತು ಪರವಾನಗಿ ನೀಡುವವರಿಗೆ ಪರವಾನಗಿ ನೀಡಲು ಅಧಿಕಾರವಿರುವ ಹಕ್ಕುಗಳು. + + j. ಪರವಾನಗಿ ನೀಡುವವರು ಎಂದರೆ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಅಡಿಯಲ್ಲಿ ಹಕ್ಕುಗಳನ್ನು ನೀಡುವ ವ್ಯಕ್ತಿಗಳು ಅಥವಾ ಸಂಸ್ಥೆಗಳು. + + k. ಹಂಚಿಕೆ ಎಂದರೆ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳ ಅಡಿಯಲ್ಲಿ ಅನುಮತಿ ಅಗತ್ಯವಿರುವ ಯಾವುದೇ ವಿಧಾನ ಅಥವಾ ಪ್ರಕ್ರಿಯೆಯಿಂದ ಸಾರ್ವಜನಿಕರಿಗೆ ವಸ್ತು ಒದಗಿಸುವುದು, ಉದಾಹರಣೆಗೆ ಪುನರುತ್ಪಾದನೆ, ಸಾರ್ವಜನಿಕ ಪ್ರದರ್ಶನ, ಸಾರ್ವಜನಿಕ ಪ್ರದರ್ಶನ, ವಿತರಣೆ, ಪ್ರಸಾರ, ಸಂವಹನ ಅಥವಾ ಆಮದು, ಮತ್ತು ಸಾರ್ವಜನಿಕರಿಗೆ ವಸ್ತುವನ್ನು ಲಭ್ಯವಿರುವಂತೆ ಮಾಡುವುದು, ಇದರಲ್ಲಿ ಸಾರ್ವಜನಿಕ ಸದಸ್ಯರು ತಮ್ಮ ಆಯ್ಕೆಮಾಡಿದ ಸ್ಥಳ ಮತ್ತು ಸಮಯದಲ್ಲಿ ವಸ್ತುವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. + + l. ಸುವಿ ಜನೆರಿಸ್ ಡೇಟಾಬೇಸ್ ಹಕ್ಕುಗಳು ಎಂದರೆ 1996 ಮಾರ್ಚ್ 11 ರಂದು ಯುರೋಪಿಯನ್ ಸಂಸತ್ತು ಮತ್ತು ಕೌನ್ಸಿಲ್‌ನ ನಿರ್ದೇಶನ 96/9/EC ಅಡಿಯಲ್ಲಿ ಡೇಟಾಬೇಸ್‌ಗಳ ಕಾನೂನು ರಕ್ಷಣೆಯ ಕುರಿತು ಹಕ್ಕುಗಳು, ತಿದ್ದುಪಡಿ ಮತ್ತು/ಅಥವಾ ಮುಂದುವರಿದ, ಮತ್ತು ಜಾಗತಿಕವಾಗಿ ಸಮಾನ ಹಕ್ಕುಗಳು. + + m. ನೀವು ಎಂದರೆ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸುವ ವ್ಯಕ್ತಿ ಅಥವಾ ಸಂಸ್ಥೆ. ನಿಮ್ಮಿಗೆ ಹೊಂದುವ ಅರ್ಥವಿದೆ. + + +ಅಧ್ಯಾಯ 2 -- ವ್ಯಾಪ್ತಿ. + + a. ಪರವಾನಗಿ ನೀಡುವುದು. + + 1. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳಿಗೆ ಒಳಪಟ್ಟಂತೆ, + ಪರವಾನಗಿ ನೀಡುವವರು ನಿಮಗೆ ಜಾಗತಿಕ, ರಾಯಲ್ಟಿ-ರಹಿತ, + ಉಪಪರವಾನಗಿ ನೀಡಲಾಗದ, ಅನನ್ಯವಲ್ಲದ, ರದ್ದುಗೊಳಿಸಲಾಗದ ಪರವಾನಗಿಯನ್ನು ನೀಡುತ್ತಾರೆ + ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಲು: + + a. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಸಂಪೂರ್ಣ ಅಥವಾ ಭಾಗಶಃ ಪುನರುತ್ಪಾದನೆ ಮತ್ತು ಹಂಚಿಕೆ ಮಾಡುವುದು; ಮತ್ತು + + b. ಹೊಂದಿಸಿದ ವಸ್ತುವನ್ನು ಉತ್ಪಾದನೆ, ಪುನರುತ್ಪಾದನೆ ಮತ್ತು ಹಂಚಿಕೆ ಮಾಡುವುದು. + + 2. ವಿನಾಯಿತಿಗಳು ಮತ್ತು ಮಿತಿಗಳು. ಸ್ಪಷ್ಟತೆಗಾಗಿ, ನಿಮ್ಮ ಬಳಕೆಗೆ ವಿನಾಯಿತಿಗಳು ಮತ್ತು ಮಿತಿಗಳು ಅನ್ವಯಿಸಿದಲ್ಲಿ, + ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಅನ್ವಯಿಸುವುದಿಲ್ಲ, ಮತ್ತು ನೀವು ಅದರ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳನ್ನು ಪಾಲಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. + + 3. ಅವಧಿ. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಅವಧಿ ಅಧ್ಯಾಯ 6(a) ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ. + + 4. ಮಾಧ್ಯಮಗಳು ಮತ್ತು ಸ್ವರೂಪಗಳು; ತಾಂತ್ರಿಕ ಬದಲಾವಣೆಗಳಿಗೆ ಅನುಮತಿ. ಪರವಾನಗಿ ನೀಡುವವರು ನಿಮಗೆ ಎಲ್ಲಾ ಮಾಧ್ಯಮಗಳು ಮತ್ತು ಸ್ವರೂಪಗಳಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಲು ಅಧಿಕಾರ ನೀಡುತ್ತಾರೆ, + ಈಗ ತಿಳಿದಿರುವ ಅಥವಾ ಭವಿಷ್ಯದಲ್ಲಿ ಸೃಷ್ಟಿಯಾಗುವ, ಮತ್ತು ಅದನ್ನು ಮಾಡಲು ಅಗತ್ಯವಿರುವ ತಾಂತ್ರಿಕ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು ಅನುಮತಿಸುತ್ತಾರೆ. + ಪರವಾನಗಿ ನೀಡುವವರು ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಲು ಅಗತ್ಯವಿರುವ ತಾಂತ್ರಿಕ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು ನಿಮ್ಮನ್ನು ನಿಷೇಧಿಸುವ ಯಾವುದೇ ಹಕ್ಕು ಅಥವಾ ಅಧಿಕಾರವನ್ನು ತಿರಸ್ಕರಿಸುತ್ತಾರೆ ಮತ್ತು/ಅಥವಾ ಒಪ್ಪಿಕೊಳ್ಳುತ್ತಾರೆ. + ಪರಿಣಾಮಕಾರಿ ತಂತ್ರಜ್ಞಾನ ಕ್ರಮಗಳನ್ನು ತಿರಸ್ಕರಿಸಲು ಅಗತ್ಯವಿರುವ ತಾಂತ್ರಿಕ ಬದಲಾವಣೆಗಳನ್ನು ಸಹ ಸೇರಿವೆ. + ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಉದ್ದೇಶಕ್ಕಾಗಿ, ಈ ಅಧ್ಯಾಯ 2(a)(4) ರಲ್ಲಿ ಅನುಮತಿಸಲಾದ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡುವುದು ಎಂದಿಗೂ ಹೊಂದಿಸಿದ ವಸ್ತುವನ್ನು ಉತ್ಪಾದಿಸುವುದಿಲ್ಲ. + + 5. ಕೆಳಮಟ್ಟದ ಸ್ವೀಕರಿಸುವವರು. + + a. ಪರವಾನಗಿ ನೀಡುವವರಿಂದ ಆಫರ್ -- ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತು. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಪ್ರತಿಯೊಂದು ಸ್ವೀಕರಿಸುವವರು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಲು ಪರವಾನಗಿ ನೀಡುವವರಿಂದ ಆಫರ್ ಪಡೆಯುತ್ತಾರೆ. + + b. ಪರವಾನಗಿ ನೀಡುವವರಿಂದ ಹೆಚ್ಚುವರಿ ಆಫರ್ -- ಹೊಂದಿಸಿದ ವಸ್ತು. ನಿಮ್ಮಿಂದ ಹೊಂದಿಸಿದ ವಸ್ತುವಿನ ಪ್ರತಿಯೊಂದು ಸ್ವೀಕರಿಸುವವರು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪರವಾನಗಿ ನೀಡುವವರಿಂದ ಹೊಂದಿಸಿದ ವಸ್ತುವಿನಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಲು ಆಫರ್ ಪಡೆಯುತ್ತಾರೆ, ನೀವು ಅನ್ವಯಿಸುವ ಹೊಂದಿಸುವವರ ಪರವಾನಗಿಯ ಷರತ್ತುಗಳ ಅಡಿಯಲ್ಲಿ. + + c. ಕೆಳಮಟ್ಟದ ನಿರ್ಬಂಧಗಳಿಲ್ಲ. ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಯಾವುದೇ ಸ್ವೀಕರಿಸುವವರ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳ ಬಳಕೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಅಥವಾ ವಿಭಿನ್ನ ನಿಯಮಗಳು ಅಥವಾ ಷರತ್ತುಗಳನ್ನು ನೀಡಲು ಅಥವಾ ಪರಿಣಾಮಕಾರಿ ತಂತ್ರಜ್ಞಾನ ಕ್ರಮಗಳನ್ನು ಅನ್ವಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. + + 6. ಯಾವುದೇ ಅನುಮೋದನೆ ಇಲ್ಲ. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯಲ್ಲಿ ಯಾವುದೂ ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಬಳಕೆ ಪರವಾನಗಿ ನೀಡುವವರು ಅಥವಾ ಇತರರು, ಅಧ್ಯಾಯ 3(a)(1)(A)(i) ನಲ್ಲಿ ನೀಡಲಾದ ಅಟ್ರಿಬ್ಯೂಷನ್ ಪಡೆಯುವವರಾಗಿ, ಸಂಪರ್ಕ ಹೊಂದಿರುವುದು, ಪ್ರಾಯೋಜಿತ ಅಥವಾ ಅಧಿಕೃತ ಸ್ಥಾನಮಾನ ಪಡೆದಿರುವುದು ಎಂದು ಹೇಳಲು ಅಥವಾ ಸೂಚಿಸಲು ಪರವಾನತಿ ನೀಡುವುದಿಲ್ಲ. + + b. ಇತರ ಹಕ್ಕುಗಳು. + + 1. ನೈತಿಕ ಹಕ್ಕುಗಳು, ಉದಾಹರಣೆಗೆ ಅಖಂಡತೆ ಹಕ್ಕು, ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲ್ಪಟ್ಟಿಲ್ಲ, ಹಾಗೆಯೇ ಪ್ರಸಿದ್ಧಿ, ಗೌಪ್ಯತೆ ಮತ್ತು/ಅಥವಾ ಇತರ ಸಮಾನ ವ್ಯಕ್ತಿತ್ವ ಹಕ್ಕುಗಳು; ಆದಾಗ್ಯೂ, ಸಾಧ್ಯವಾದಷ್ಟು, ಪರವಾನಗಿ ನೀಡುವವರು ಈ ಹಕ್ಕುಗಳನ್ನು ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಲು ಅವಕಾಶ ನೀಡಲು ಅಗತ್ಯವಿರುವ ಮಟ್ಟಿಗೆ ತಿರಸ್ಕರಿಸುತ್ತಾರೆ ಮತ್ತು/ಅಥವಾ ಒಪ್ಪಿಕೊಳ್ಳುತ್ತಾರೆ, ಆದರೆ ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಅಲ್ಲ. + + 2. ಪೇಟೆಂಟ್ ಮತ್ತು ಟ್ರೇಡ್‌ಮಾರ್ಕ್ ಹಕ್ಕುಗಳು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲ್ಪಟ್ಟಿಲ್ಲ. + + 3. ಸಾಧ್ಯವಾದಷ್ಟು, ಪರವಾನಗಿ ನೀಡುವವರು ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಿದಕ್ಕಾಗಿ ನೇರವಾಗಿ ಅಥವಾ ಸ್ವಯಂಸೇವಕ ಸಂಘದ ಮೂಲಕ ಯಾವುದೇ ಸ್ವಯಂಸೇವಕ ಅಥವಾ ತ್ಯಜಿಸಬಹುದಾದ ಕಾನೂನು ಅಥವಾ ಬಾಧ್ಯ ಪರವಾನಗಿ ಯೋಜನೆಯಡಿ ರಾಯಲ್ಟಿಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಹಕ್ಕನ್ನು ತಿರಸ್ಕರಿಸುತ್ತಾರೆ. ಇತರ ಎಲ್ಲಾ ಪ್ರಕರಣಗಳಲ್ಲಿ ಪರವಾನಗಿ ನೀಡುವವರು ಸ್ಪಷ್ಟವಾಗಿ ಆ ರಾಯಲ್ಟಿಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಹಕ್ಕನ್ನು ಕಾಯ್ದಿರಿಸುತ್ತಾರೆ. + + +ಅಧ್ಯಾಯ 3 -- ಪರವಾನಗಿ ಷರತ್ತುಗಳು. + +ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸುವುದು ಕೆಳಗಿನ ಷರತ್ತುಗಳಿಗೆ ಸ್ಪಷ್ಟವಾಗಿ ಒಳಪಟ್ಟಿದೆ. + + a. ಅಟ್ರಿಬ್ಯೂಷನ್. + + 1. ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಹಂಚಿದರೆ (ಬದಲಿಸಿದ ರೂಪದಲ್ಲಿಯೂ ಸೇರಿ), ನೀವು: + + a. ಪರವಾನಗಿ ನೀಡುವವರು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನೊಂದಿಗೆ ಒದಗಿಸಿದ ಕೆಳಗಿನವುಗಳನ್ನು ಉಳಿಸಬೇಕು: + + i. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಸೃಷ್ಟಿಕರ್ತ(ಗಳು) ಮತ್ತು ಅಟ್ರಿಬ್ಯೂಷನ್ ಪಡೆಯಲು ನಿಯೋಜಿಸಲಾದ ಇತರರ ಗುರುತಿನ ಮಾಹಿತಿ, ಪರವಾನಗಿ ನೀಡುವವರು ಕೇಳಿದ ಯಾವುದೇ ಯುಕ್ತಿಯುತ ರೀತಿಯಲ್ಲಿ (ನಾಮವಾಚಕ ಬಳಕೆ ಸಹ ಸೇರಿ); + + ii. ಪ್ರತಿಕೃತಿ ಸೂಚನೆ; + + iii. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗೆ ಉಲ್ಲೇಖಿಸುವ ಸೂಚನೆ; + + iv. ಭರವಸೆಗಳ ನಿರಾಕರಣೆಯ ಸೂಚನೆ; + + v. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿಗೆ ಯುಆರ್‌ಐ ಅಥವಾ ಹೈಪರ್‌ಲಿಂಕ್, ಯುಕ್ತಿಯುತವಾಗಿ ಸಾಧ್ಯವಾದಷ್ಟು; + + b. ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಬದಲಿಸಿದರೆ ಸೂಚಿಸಬೇಕು ಮತ್ತು ಯಾವುದೇ ಹಿಂದಿನ ಬದಲಾವಣೆಗಳ ಸೂಚನೆಯನ್ನು ಉಳಿಸಬೇಕು; ಮತ್ತು + + c. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲ್ಪಟ್ಟಿದೆ ಎಂದು ಸೂಚಿಸಿ, ಮತ್ತು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಪಠ್ಯ ಅಥವಾ ಯುಆರ್‌ಐ ಅಥವಾ ಹೈಪರ್‌ಲಿಂಕ್ ಅನ್ನು ಸೇರಿಸಬೇಕು. + + 2. ನೀವು ಅಧ್ಯಾಯ 3(a)(1) ರ ಷರತ್ತುಗಳನ್ನು ಯಾವುದೇ ಯುಕ್ತಿಯುತ ರೀತಿಯಲ್ಲಿ ಪೂರೈಸಬಹುದು, ಮಾಧ್ಯಮ, ವಿಧಾನ ಮತ್ತು ಸನ್ನಿವೇಶವನ್ನು ಆಧರಿಸಿ, ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಹಂಚುವಾಗ. ಉದಾಹರಣೆಗೆ, ಅಗತ್ಯ ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಿರುವ ಸಂಪನ್ಮೂಲಕ್ಕೆ ಯುಆರ್‌ಐ ಅಥವಾ ಹೈಪರ್‌ಲಿಂಕ್ ಒದಗಿಸುವ ಮೂಲಕ ಷರತ್ತುಗಳನ್ನು ಪೂರೈಸಬಹುದು. + + 3. ಪರವಾನಗಿ ನೀಡುವವರ ವಿನಂತಿಯಿಂದ, ನೀವು ಅಧ್ಯಾಯ 3(a)(1)(A) ರಲ್ಲಿ ಅಗತ್ಯವಿರುವ ಯಾವುದೇ ಮಾಹಿತಿಯನ್ನು ಯುಕ್ತಿಯುತವಾಗಿ ಸಾಧ್ಯವಾದಷ್ಟು ತೆಗೆದುಹಾಕಬೇಕು. + + b. ಶೇರ್ ಅಲೈಕ್. + + ಅಧ್ಯಾಯ 3(a) ರ ಷರತ್ತುಗಳಿಗೆ ಹೆಚ್ಚುವರಿ, ನೀವು ಹೊಂದಿಸಿದ ವಸ್ತುವನ್ನು ಹಂಚಿದರೆ, ಕೆಳಗಿನ ಷರತ್ತುಗಳು ಅನ್ವಯಿಸುತ್ತವೆ. + + 1. ನೀವು ಅನ್ವಯಿಸುವ ಹೊಂದಿಸುವವರ ಪರವಾನಗಿ ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಪರವಾನಗಿ ಆಗಿರಬೇಕು, ಅದೇ ಪರವಾನಗಿ ಅಂಶಗಳೊಂದಿಗೆ, ಈ ಆವೃತ್ತಿ ಅಥವಾ ನಂತರದ ಆವೃತ್ತಿ, ಅಥವಾ BY-SA ಹೊಂದಾಣಿಕೆಯ ಪರವಾನಗಿ. + + 2. ನೀವು ಅನ್ವಯಿಸುವ ಹೊಂದಿಸುವವರ ಪರವಾನಗಿಯ ಪಠ್ಯ ಅಥವಾ ಯುಆರ್‌ಐ ಅಥವಾ ಹೈಪರ್‌ಲಿಂಕ್ ಅನ್ನು ಸೇರಿಸಬೇಕು. ನೀವು ಈ ಷರತ್ತನ್ನು ಯಾವುದೇ ಯುಕ್ತಿಯುತ ರೀತಿಯಲ್ಲಿ ಪೂರೈಸಬಹುದು, ಮಾಧ್ಯಮ, ವಿಧಾನ ಮತ್ತು ಸನ್ನಿವೇಶವನ್ನು ಆಧರಿಸಿ ನೀವು ಹೊಂದಿಸಿದ ವಸ್ತುವನ್ನು ಹಂಚುವಾಗ. + + 3. ನೀವು ಹೊಂದಿಸಿದ ವಸ್ತುವಿನ ಮೇಲೆ ನೀವು ಅನ್ವಯಿಸುವ ಹೊಂದಿಸುವವರ ಪರವಾನಗಿಯ ಅಡಿಯಲ್ಲಿ ನೀಡಲಾದ ಹಕ್ಕುಗಳ ಬಳಕೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಅಥವಾ ವಿಭಿನ್ನ ನಿಯಮಗಳು ಅಥವಾ ಪರಿಣಾಮಕಾರಿ ತಂತ್ರಜ್ಞಾನ ಕ್ರಮಗಳನ್ನು ಅನ್ವಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. + + +ಅಧ್ಯಾಯ 4 -- ಸುವಿ ಜನೆರಿಸ್ ಡೇಟಾಬೇಸ್ ಹಕ್ಕುಗಳು. + +ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳಲ್ಲಿ ನಿಮ್ಮ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಬಳಕೆಗೆ ಅನ್ವಯಿಸುವ ಸುವಿ ಜನೆರಿಸ್ ಡೇಟಾಬೇಸ್ ಹಕ್ಕುಗಳು ಇದ್ದಲ್ಲಿ: + + a. ಸ್ಪಷ್ಟತೆಗಾಗಿ, ಅಧ್ಯಾಯ 2(a)(1) ನಿಮಗೆ ಡೇಟಾಬೇಸ್‌ನ ಎಲ್ಲಾ ಅಥವಾ ಪ್ರಮುಖ ಭಾಗದ ವಿಷಯವನ್ನು ಹೊರತೆಗೆಯಲು, ಮರುಬಳಕೆ ಮಾಡಲು, ಪುನರುತ್ಪಾದನೆ ಮಾಡಲು ಮತ್ತು ಹಂಚಿಕೆ ಮಾಡಲು ಹಕ್ಕು ನೀಡುತ್ತದೆ; + + b. ನೀವು ಡೇಟಾಬೇಸ್‌ನ ಎಲ್ಲಾ ಅಥವಾ ಪ್ರಮುಖ ಭಾಗವನ್ನು ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಸೇರಿಸಿದರೆ, ನೀವು ಸುವಿ ಜನೆರಿಸ್ ಡೇಟಾಬೇಸ್ + ಹಕ್ಕುಗಳು, ನಂತರ ನೀವು ಹೊಂದಿರುವ ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ Sui Generis ಡೇಟಾಬೇಸ್ + ಹಕ್ಕುಗಳು (ಆದರೆ ಅದರ ವೈಯಕ್ತಿಕ ವಿಷಯಗಳು ಅಲ್ಲ) ಹೊಂದಿರುವ ಅಡಾಪ್ಟೆಡ್ ಮೆಟೀರಿಯಲ್, + + ಸೆಕ್ಷನ್ 3(b) ಉದ್ದೇಶಗಳಿಗಾಗಿ ಸಹ ಸೇರಿದೆ; ಮತ್ತು + c. ನೀವು ಡೇಟಾಬೇಸ್‌ನ ಎಲ್ಲಾ ಅಥವಾ ಪ್ರಮುಖ ಭಾಗವನ್ನು ಹಂಚಿಕೊಳ್ಳುವಾಗ ಸೆಕ್ಷನ್ 3(a) ರಲ್ಲಿ ನೀಡಲಾದ ಶರತ್ತುಗಳನ್ನು ನೀವು ಪಾಲಿಸಬೇಕು. + +ಸಂದೇಹ ನಿವಾರಣೆಗೆ, ಈ ಸೆಕ್ಷನ್ 4 ನಿಮ್ಮ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ಇರುವ ಬಾಧ್ಯತೆಗಳನ್ನು ಪೂರಕವಾಗಿದ್ದು, ಪರವಾನಗಿಯ ಹಕ್ಕುಗಳು ಇತರ ಕಾಪಿರೈಟ್ ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳನ್ನು ಒಳಗೊಂಡಿದ್ದಲ್ಲಿ ಅವುಗಳನ್ನು ಬದಲಿಸುವುದಿಲ್ಲ. + + +ಸೆಕ್ಷನ್ 5 -- ಜವಾಬ್ದಾರಿಗಳ ನಿರಾಕರಣೆ ಮತ್ತು ಹೊಣೆಗಾರಿಕೆಯ ಮಿತಿ. + + a. ಪರವಾನಗಿ ನೀಡುವವರು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಪ್ರತ್ಯೇಕವಾಗಿ ಒಪ್ಪಿಕೊಂಡಿಲ್ಲದಿದ್ದರೆ, ಸಾಧ್ಯವಾದಷ್ಟು, ಪರವಾನಗಿ ನೀಡುವವರು ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವನ್ನು ಹಾಗೆಯೇ ಮತ್ತು ಲಭ್ಯವಿರುವಂತೆ ನೀಡುತ್ತಾರೆ ಮತ್ತು ಯಾವುದೇ ರೀತಿಯ ಪ್ರತಿನಿಧಾನಗಳು ಅಥವಾ ಜವಾಬ್ದಾರಿಗಳನ್ನು ನೀಡುವುದಿಲ್ಲ, ಸ್ಪಷ್ಟ, ಅರ್ಥೈಸಿದ, ಕಾನೂನಾತ್ಮಕ ಅಥವಾ ಇತರ. ಇದರಲ್ಲಿ, ಯಾವುದೇ ಮಿತಿ ಇಲ್ಲದೆ, ಶೀರ್ಷಿಕೆ, ವ್ಯಾಪಾರಿಕತೆ, ನಿರ್ದಿಷ್ಟ ಉದ್ದೇಶಕ್ಕೆ ಹೊಂದಿಕೊಳ್ಳುವಿಕೆ, ಉಲ್ಲಂಘನೆ ಇಲ್ಲದಿರುವಿಕೆ, ಅಡಗಿದ ಅಥವಾ ಇತರ ದೋಷಗಳ ಇಲ್ಲದಿರುವಿಕೆ, ನಿಖರತೆ, ಅಥವಾ ದೋಷಗಳ ಇರುವಿಕೆ ಅಥವಾ ಇಲ್ಲದಿರುವಿಕೆ, ತಿಳಿದಿರುವ ಅಥವಾ ಕಂಡುಹಿಡಿಯಬಹುದಾದುದೇ ಆಗಿರಲಿ, ಜವಾಬ್ದಾರಿಗಳು ಸೇರಿವೆ. ಜವಾಬ್ದಾರಿಗಳ ನಿರಾಕರಣೆಗಳು ಸಂಪೂರ್ಣ ಅಥವಾ ಭಾಗಶಃ ಅನುಮತಿಸಲಾಗದಿದ್ದಲ್ಲಿ, ಈ ನಿರಾಕರಣೆ ನಿಮ್ಮ ಮೇಲೆ ಅನ್ವಯಿಸದಿರಬಹುದು. + + b. ಸಾಧ್ಯವಾದಷ್ಟು, ಯಾವುದೇ ಕಾನೂನಾತ್ಮಕ ಸಿದ್ಧಾಂತದ (ಮೂಲತಃ, ನಿರ್ಲಕ್ಷ್ಯ ಸೇರಿದಂತೆ) ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿ ನೀಡುವವರು ನಿಮಗೆ ಯಾವುದೇ ನೇರ, ವಿಶೇಷ, ಪರೋಕ್ಷ, ಅನೈಚ್ಛಿಕ, ಪರಿಣಾಮಕಾರಿ, ಶಿಕ್ಷಾತ್ಮಕ, ಉದಾಹರಣಾತ್ಮಕ ಅಥವಾ ಇತರ ನಷ್ಟಗಳು, ವೆಚ್ಚಗಳು, ಖರ್ಚುಗಳು ಅಥವಾ ಹಾನಿಗಳಿಗಾಗಿ ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ, ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಅಥವಾ ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವಿನ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವವು, ಪರವಾನಗಿ ನೀಡುವವರು ಇಂತಹ ನಷ್ಟಗಳು, ವೆಚ್ಚಗಳು, ಖರ್ಚುಗಳು ಅಥವಾ ಹಾನಿಗಳ ಸಾಧ್ಯತೆಯನ್ನು ತಿಳಿಸಿದ್ದರೂ ಸಹ. ಹೊಣೆಗಾರಿಕೆಯ ಮಿತಿ ಸಂಪೂರ್ಣ ಅಥವಾ ಭಾಗಶಃ ಅನುಮತಿಸಲಾಗದಿದ್ದಲ್ಲಿ, ಈ ಮಿತಿ ನಿಮ್ಮ ಮೇಲೆ ಅನ್ವಯಿಸದಿರಬಹುದು. + + c. ಮೇಲ್ಕಂಡ ಜವಾಬ್ದಾರಿಗಳ ನಿರಾಕರಣೆ ಮತ್ತು ಹೊಣೆಗಾರಿಕೆಯ ಮಿತಿಯನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು, ಸಂಪೂರ್ಣ ನಿರಾಕರಣೆ ಮತ್ತು ಎಲ್ಲಾ ಹೊಣೆಗಾರಿಕೆಗಳ ತ್ಯಾಗದಂತೆ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. + + +ಸೆಕ್ಷನ್ 6 -- ಅವಧಿ ಮತ್ತು ರದ್ದುಪಡಿಸುವಿಕೆ. + + a. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಇಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಿದ ಕಾಪಿರೈಟ್ ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳ ಅವಧಿಗೆ ಅನ್ವಯಿಸುತ್ತದೆ. ಆದರೆ, ನೀವು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯನ್ನು ಪಾಲಿಸದಿದ್ದರೆ, ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ನಿಮ್ಮ ಹಕ್ಕುಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರದ್ದುಪಡಿಸಲಾಗುತ್ತದೆ. + + b. ಸೆಕ್ಷನ್ 6(a) ಅಡಿಯಲ್ಲಿ ನಿಮ್ಮ ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವಿನ ಬಳಕೆಯ ಹಕ್ಕು ರದ್ದುಪಡಿಸಿದಾಗ, ಅದು ಪುನಃಸ್ಥಾಪಿತವಾಗುತ್ತದೆ: + + 1. ಉಲ್ಲಂಘನೆ ಪರಿಹಾರವಾದ ದಿನಾಂಕದಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ, ಅದು ನಿಮ್ಮ ಉಲ್ಲಂಘನೆಯನ್ನು ಕಂಡುಹಿಡಿದ 30 ದಿನಗಳ ಒಳಗೆ ಪರಿಹಾರವಾದರೆ; ಅಥವಾ + + 2. ಪರವಾನಗಿ ನೀಡುವವರ ಸ್ಪಷ್ಟ ಪುನಃಸ್ಥಾಪನೆಯ ಮೂಲಕ. + + ಸಂದೇಹ ನಿವಾರಣೆಗೆ, ಈ ಸೆಕ್ಷನ್ 6(b) ನಿಮ್ಮ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಉಲ್ಲಂಘನೆಗಳಿಗೆ ಪರಿಹಾರಗಳನ್ನು ಹುಡುಕಲು ಪರವಾನಗಿ ನೀಡುವವರ ಹಕ್ಕನ್ನು ಪ್ರಭಾವಿತಗೊಳಿಸುವುದಿಲ್ಲ. + + c. ಸಂದೇಹ ನಿವಾರಣೆಗೆ, ಪರವಾನಗಿ ನೀಡುವವರು ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವನ್ನು ವಿಭಿನ್ನ ಶರತ್ತುಗಳು ಅಥವಾ ನಿಯಮಗಳ ಅಡಿಯಲ್ಲಿ ನೀಡಬಹುದು ಅಥವಾ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ವಿತರಣೆ ನಿಲ್ಲಿಸಬಹುದು; ಆದರೆ, ಇದರಿಂದ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ರದ್ದುಪಡಿಸುವುದಿಲ್ಲ. + + d. ಸೆಕ್ಷನ್ 1, 5, 6, 7, ಮತ್ತು 8 ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ರದ್ದುಪಡಿಸಿದ ನಂತರವೂ ಜಾರಿಯಲ್ಲಿರುತ್ತವೆ. + + +ಸೆಕ್ಷನ್ 7 -- ಇತರ ಶರತ್ತುಗಳು ಮತ್ತು ನಿಯಮಗಳು. + + a. ನೀವು ಸ್ಪಷ್ಟವಾಗಿ ಒಪ್ಪಿಕೊಳ್ಳದಿದ್ದರೆ, ಪರವಾನಗಿ ನೀಡುವವರು ನಿಮ್ಮಿಂದ ಸಂವಹನಗೊಂಡ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಅಥವಾ ವಿಭಿನ್ನ ಶರತ್ತುಗಳು ಅಥವಾ ನಿಯಮಗಳಿಗೆ ಬದ್ಧರಾಗುವುದಿಲ್ಲ. + + b. ಇಲ್ಲಿ ಹೇಳದಿರುವ ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವಿನ ಬಗ್ಗೆ ಯಾವುದೇ ವ್ಯವಸ್ಥೆಗಳು, ಅರ್ಥಮಾಡಿಕೆಗಳು ಅಥವಾ ಒಪ್ಪಂದಗಳು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ನಿಯಮಗಳು ಮತ್ತು ಶರತ್ತುಗಳಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿದ್ದು ಸ್ವತಂತ್ರವಾಗಿವೆ. + + +ಸೆಕ್ಷನ್ 8 -- ವ್ಯಾಖ್ಯಾನ. + + a. ಸಂದೇಹ ನಿವಾರಣೆಗೆ, ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವಿನ ಯಾವುದೇ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು, ಮಿತಿ ಹಾಕುವುದು, ನಿಯಮಗಳನ್ನು ವಿಧಿಸುವುದು ಅಥವಾ ನಿಯಂತ್ರಿಸುವುದಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಾರದು, ಅದು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ಅನುಮತಿಸದ ಬಳಕೆಯಾಗಿರಬಹುದು. + + b. ಸಾಧ್ಯವಾದಷ್ಟು, ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಯಾವುದೇ ವಿಧಿ ಅನ್ವಯಿಸದಿದ್ದರೆ, ಅದನ್ನು ಕನಿಷ್ಠ ಅಗತ್ಯವಿರುವ ಮಟ್ಟಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರುರೂಪಗೊಳಿಸಲಾಗುತ್ತದೆ. ಮರುರೂಪಗೊಳಿಸಲಾಗದಿದ್ದರೆ, ಅದನ್ನು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯಿಂದ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ, ಉಳಿದ ನಿಯಮಗಳು ಮತ್ತು ಶರತ್ತುಗಳ ಅನ್ವಯತೆಯನ್ನು ಪ್ರಭಾವಿತಗೊಳಿಸುವುದಿಲ್ಲ. + + c. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಯಾವುದೇ ನಿಯಮ ಅಥವಾ ಶರತ್ತು ತ್ಯಜಿಸಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಅನುಸರಿಸಲು ವಿಫಲವಾದುದಕ್ಕೆ ಒಪ್ಪಿಗೆಯಿಲ್ಲದಿದ್ದರೆ ಮಾತ್ರ ಪರವಾನಗಿ ನೀಡುವವರ ಸ್ಪಷ್ಟ ಒಪ್ಪಿಗೆಯಿದ್ದಾಗ ಮಾತ್ರ ಅನುಮತಿಸಲಾಗುತ್ತದೆ. + + d. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಯಾವುದೇ ರೀತಿಯಲ್ಲಿ ಪರವಾನಗಿ ನೀಡುವವರ ಅಥವಾ ನಿಮ್ಮ ಮೇಲೆ ಅನ್ವಯಿಸುವ ಯಾವುದೇ ವಿಶೇಷ ಹಕ್ಕುಗಳು ಮತ್ತು ರಕ್ಷಣೆಗಳನ್ನು ಮಿತಿಗೊಳಿಸುವುದಾಗಿ ಅಥವಾ ತ್ಯಜಿಸುವುದಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಾರದು, ಇದರಲ್ಲಿ ಯಾವುದೇ ನ್ಯಾಯಾಂಗ ಅಥವಾ ಅಧಿಕಾರಿಗಳ ಕಾನೂನಾತ್ಮಕ ಪ್ರಕ್ರಿಯೆಗಳು ಸೇರಿವೆ. + + +======================================================================= + +ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ತನ್ನ ಸಾರ್ವಜನಿಕ +ಪರವಾನಗಿಗಳ ಪಕ್ಷವಲ್ಲ. ಆದಾಗ್ಯೂ, ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ತನ್ನ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳಲ್ಲಿ ಒಂದನ್ನು ತನ್ನ ಪ್ರಕಟಿಸುವ ವಸ್ತುಗಳಿಗೆ ಅನ್ವಯಿಸಲು ಆಯ್ಕೆಮಾಡಬಹುದು ಮತ್ತು ಆ ಸಂದರ್ಭಗಳಲ್ಲಿ "ಪರವಾನಗಿ ನೀಡುವವರು" ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳ ಪಠ್ಯವನ್ನು CC0 ಸಾರ್ವಜನಿಕ +ಡೊಮೇನ್ ಸಮರ್ಪಣೆಯಡಿ ಸಾರ್ವಜನಿಕ ಡೊಮೇನ್‌ಗೆ ಮೀಸಲಿಟ್ಟಿದೆ. ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ವಸ್ತು ಹಂಚಲಾಗಿದೆ ಎಂದು ಸೂಚಿಸುವ ಸೀಮಿತ ಉದ್ದೇಶವನ್ನು ಹೊರತುಪಡಿಸಿ ಅಥವಾcreativecommons.org/policies ನಲ್ಲಿ ಪ್ರಕಟಿಸಿರುವ ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ನೀತಿಗಳ ಪ್ರಕಾರ, ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ "ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್" ಎಂಬ ಟ್ರೇಡ್‌ಮಾರ್ಕ್ ಅಥವಾ ಯಾವುದೇ ಇತರ ಟ್ರೇಡ್‌ಮಾರ್ಕ್ ಅಥವಾ ಲೋಗೋವನ್ನು ತನ್ನ ಪೂರ್ವ ಲಿಖಿತ ಅನುಮತಿಯಿಲ್ಲದೆ ಬಳಸಲು ಅನುಮತಿಸುವುದಿಲ್ಲ, ಇದರಲ್ಲಿ ಯಾವುದೇ ಅನಧಿಕೃತ ಬದಲಾವಣೆಗಳು ಅಥವಾ ಯಾವುದೇ ಇತರ ವ್ಯವಸ್ಥೆಗಳು, ಅರ್ಥಮಾಡಿಕೆಗಳು ಅಥವಾ ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವಿನ ಬಳಕೆಯ ಬಗ್ಗೆ ಒಪ್ಪಂದಗಳು ಸೇರಿವೆ. ಸಂದೇಹ ನಿವಾರಣೆಗೆ, ಈ ಪ್ಯಾರಾಗ್ರಾಫ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳ ಭಾಗವಲ್ಲ. + +ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಅನ್ನು creativecommons.org ನಲ್ಲಿ ಸಂಪರ್ಕಿಸಬಹುದು. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/sketchnotes/README.md b/translations/kn/sketchnotes/README.md new file mode 100644 index 000000000..a26be0b86 --- /dev/null +++ b/translations/kn/sketchnotes/README.md @@ -0,0 +1,23 @@ + +ಎಲ್ಲಾ ಪಠ್ಯಕ್ರಮದ ಸ್ಕೆಚ್‌ನೋಟ್ಗಳನ್ನು ಇಲ್ಲಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು. + +🖨 ಉನ್ನತ-ರಿಜಲ್ಯೂಶನ್‌ನಲ್ಲಿ ಮುದ್ರಣಕ್ಕಾಗಿ, TIFF ಆವೃತ್ತಿಗಳು [ಈ ರೆಪೋ](https://github.com/girliemac/a-picture-is-worth-a-1000-words/tree/main/ml/tiff) ನಲ್ಲಿ ಲಭ್ಯವಿವೆ. + +🎨 ರಚಿಸಿದವರು: [Tomomi Imura](https://github.com/girliemac) (ಟ್ವಿಟ್ಟರ್: [@girlie_mac](https://twitter.com/girlie_mac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/ko/README.md b/translations/ko/README.md index cc5aa6a70..2368f0228 100644 --- a/translations/ko/README.md +++ b/translations/ko/README.md @@ -1,8 +1,8 @@ -[아랍어](../ar/README.md) | [벵골어](../bn/README.md) | [불가리아어](../bg/README.md) | [버마어 (미얀마)](../my/README.md) | [중국어 (간체)](../zh/README.md) | [중국어 (번체, 홍콩)](../hk/README.md) | [중국어 (번체, 마카오)](../mo/README.md) | [중국어 (번체, 대만)](../tw/README.md) | [크로아티아어](../hr/README.md) | [체코어](../cs/README.md) | [덴마크어](../da/README.md) | [네덜란드어](../nl/README.md) | [에스토니아어](../et/README.md) | [핀란드어](../fi/README.md) | [프랑스어](../fr/README.md) | [독일어](../de/README.md) | [그리스어](../el/README.md) | [히브리어](../he/README.md) | [힌디어](../hi/README.md) | [헝가리어](../hu/README.md) | [인도네시아어](../id/README.md) | [이탈리아어](../it/README.md) | [일본어](../ja/README.md) | [한국어](./README.md) | [리투아니아어](../lt/README.md) | [말레이어](../ms/README.md) | [마라티어](../mr/README.md) | [네팔어](../ne/README.md) | [나이지리아 피진어](../pcm/README.md) | [노르웨이어](../no/README.md) | [페르시아어 (파르시)](../fa/README.md) | [폴란드어](../pl/README.md) | [포르투갈어 (브라질)](../br/README.md) | [포르투갈어 (포르투갈)](../pt/README.md) | [펀자브어 (구르무키)](../pa/README.md) | [루마니아어](../ro/README.md) | [러시아어](../ru/README.md) | [세르비아어 (키릴)](../sr/README.md) | [슬로바키아어](../sk/README.md) | [슬로베니아어](../sl/README.md) | [스페인어](../es/README.md) | [스와힐리어](../sw/README.md) | [스웨덴어](../sv/README.md) | [타갈로그어 (필리핀)](../tl/README.md) | [타밀어](../ta/README.md) | [태국어](../th/README.md) | [터키어](../tr/README.md) | [우크라이나어](../uk/README.md) | [우르두어](../ur/README.md) | [베트남어](../vi/README.md) +[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](./README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) #### 커뮤니티에 참여하세요 [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -현재 Discord에서 AI 학습 시리즈가 진행 중입니다. [Learn with AI Series](https://aka.ms/learnwithai/discord)를 통해 2025년 9월 18일부터 30일까지 GitHub Copilot을 활용한 데이터 과학 팁과 트릭을 배울 수 있습니다. +우리는 Discord에서 AI와 함께 배우는 시리즈를 진행 중입니다. 2025년 9월 18일부터 30일까지 [Learn with AI Series](https://aka.ms/learnwithai/discord)에서 자세히 알아보고 참여하세요. GitHub Copilot을 데이터 과학에 활용하는 팁과 요령을 얻을 수 있습니다. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ko.png) # 초보자를 위한 머신러닝 - 커리큘럼 -> 🌍 세계 문화를 통해 머신러닝을 탐구하며 세계를 여행하세요 🌍 +> 🌍 세계 문화를 통해 머신러닝을 탐험하며 전 세계를 여행해 봅시다 🌍 -Microsoft의 클라우드 옹호자들이 **머신러닝**에 관한 12주, 26강의 커리큘럼을 제공합니다. 이 커리큘럼에서는 주로 Scikit-learn 라이브러리를 사용하여 **클래식 머신러닝**이라고 불리는 것을 배우며, 딥러닝은 [AI for Beginners' 커리큘럼](https://aka.ms/ai4beginners)에서 다룹니다. 이 강의는 ['Data Science for Beginners' 커리큘럼](https://aka.ms/ds4beginners)과 함께 학습할 수 있습니다. +Microsoft의 클라우드 옹호자들이 12주, 26강의로 구성된 **머신러닝**에 관한 커리큘럼을 제공합니다. 이 커리큘럼에서는 주로 Scikit-learn 라이브러리를 사용하여 때때로 **고전적 머신러닝**이라고 불리는 내용을 배우며, 딥러닝은 [AI for Beginners' 커리큘럼](https://aka.ms/ai4beginners)에서 다룹니다. 또한 이 강의들을 ['Data Science for Beginners' 커리큘럼](https://aka.ms/ds4beginners)과 함께 학습할 수 있습니다. -세계 각지의 데이터를 활용하여 이러한 클래식 기술을 적용하며 우리와 함께 여행하세요. 각 강의에는 강의 전후 퀴즈, 강의 완료를 위한 작성 지침, 솔루션, 과제 등이 포함되어 있습니다. 프로젝트 기반 학습 방법을 통해 새로운 기술을 효과적으로 익힐 수 있습니다. +전 세계를 여행하며 다양한 지역의 데이터를 대상으로 이러한 고전적 기법을 적용해 봅니다. 각 강의에는 사전 및 사후 퀴즈, 강의 완료를 위한 서면 지침, 해답, 과제 등이 포함되어 있습니다. 프로젝트 기반 교육법을 통해 학습하면서 직접 만들어 보는 경험을 제공하여 새로운 기술이 잘 습득되도록 돕습니다. -**✍️ 저자들에게 깊은 감사** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu, Amy Boyd +**✍️ 저자분들께 진심으로 감사드립니다** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu, Amy Boyd -**🎨 일러스트레이터들에게도 감사** Tomomi Imura, Dasani Madipalli, Jen Looper +**🎨 일러스트레이터분들께도 감사드립니다** Tomomi Imura, Dasani Madipalli, Jen Looper -**🙏 Microsoft Student Ambassador 저자, 리뷰어, 콘텐츠 기여자들에게 특별히 감사드립니다**, 특히 Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, Snigdha Agarwal +**🙏 특별 감사 🙏 Microsoft 학생 홍보대사 저자, 리뷰어, 콘텐츠 기여자분들께**, 특히 Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, Snigdha Agarwal -**🤩 Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, Vidushi Gupta에게 R 강의에 대한 추가 감사!** +**🤩 Microsoft 학생 홍보대사 Eric Wanjau, Jasleen Sondhi, Vidushi Gupta께 R 강의에 대한 특별 감사!** # 시작하기 @@ -55,29 +55,30 @@ Microsoft의 클라우드 옹호자들이 **머신러닝**에 관한 12주, 26 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) +> [이 과정에 대한 모든 추가 자료는 Microsoft Learn 컬렉션에서 확인하세요](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **도움이 필요하신가요?** 설치, 설정 및 강의 실행과 관련된 일반적인 문제에 대한 해결책은 [문제 해결 가이드](TROUBLESHOOTING.md)를 확인하세요. +> 🔧 **도움이 필요하신가요?** 설치, 설정, 강의 실행 관련 일반 문제 해결은 [문제 해결 가이드](TROUBLESHOOTING.md)를 확인하세요. -**[학생들](https://aka.ms/student-page)**, 이 커리큘럼을 사용하려면 전체 저장소를 자신의 GitHub 계정으로 포크하고 개인적으로 또는 그룹과 함께 연습을 완료하세요: -- 강의 전 퀴즈로 시작하세요. -- 강의를 읽고 활동을 완료하며 각 지식 확인에서 멈추고 반성하세요. -- 강의 내용을 이해하며 프로젝트를 만들어보세요. 솔루션 코드를 실행하지 않고도 가능합니다. 그러나 해당 코드는 각 프로젝트 기반 강의의 `/solution` 폴더에 있습니다. +**[학생 여러분](https://aka.ms/student-page)**, 이 커리큘럼을 사용하려면 전체 저장소를 자신의 GitHub 계정으로 포크한 후 혼자 또는 그룹과 함께 연습 문제를 완료하세요: + +- 강의 전 퀴즈부터 시작하세요. +- 강의를 읽고 각 지식 점검에서 멈추어 생각하며 활동을 완료하세요. +- 해답 코드를 실행하기보다는 강의를 이해하며 프로젝트를 직접 만들어 보세요; 다만 각 프로젝트 지향 강의의 `/solution` 폴더에 해답 코드가 있습니다. - 강의 후 퀴즈를 풀어보세요. - 도전을 완료하세요. - 과제를 완료하세요. -- 강의 그룹을 완료한 후 [토론 게시판](https://github.com/microsoft/ML-For-Beginners/discussions)을 방문하여 적절한 PAT 루브릭을 작성하며 "소리 내어 학습"하세요. 'PAT'는 학습을 심화하기 위해 작성하는 루브릭인 진행 평가 도구입니다. 다른 PAT에 반응하여 함께 학습할 수도 있습니다. +- 강의 그룹을 완료한 후 [토론 게시판](https://github.com/microsoft/ML-For-Beginners/discussions)을 방문하여 적절한 PAT 루브릭을 작성하며 '소리 내어 배우기'를 실천하세요. 'PAT'는 학습 진행 평가 도구로, 학습을 심화하기 위해 작성하는 루브릭입니다. 다른 PAT에 반응하여 함께 배울 수도 있습니다. -> 추가 학습을 위해 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 모듈과 학습 경로를 따르기를 권장합니다. +> 추가 학습을 위해 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 모듈과 학습 경로를 추천합니다. -**교사들**, 이 커리큘럼을 사용하는 방법에 대한 [몇 가지 제안](for-teachers.md)을 포함했습니다. +**교사분들께서는** 이 커리큘럼 활용법에 대한 [몇 가지 제안](for-teachers.md)을 참고하세요. --- -## 비디오 강의 +## 동영상 안내 -일부 강의는 짧은 형식의 비디오로 제공됩니다. 강의 내에서 또는 [Microsoft Developer YouTube 채널의 ML for Beginners 재생 목록](https://aka.ms/ml-beginners-videos)에서 모든 비디오를 확인할 수 있습니다. 아래 이미지를 클릭하세요. +일부 강의는 짧은 동영상으로 제공됩니다. 강의 내에서 직접 보거나 [Microsoft Developer YouTube 채널의 ML for Beginners 재생목록](https://aka.ms/ml-beginners-videos)에서 아래 이미지를 클릭해 보세요. [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ko.png)](https://aka.ms/ml-beginners-videos) @@ -89,79 +90,87 @@ Microsoft의 클라우드 옹호자들이 **머신러닝**에 관한 12주, 26 **Gif 제작자** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 위 이미지를 클릭하여 프로젝트와 제작자들에 대한 비디오를 확인하세요! +> 🎥 위 이미지를 클릭하면 프로젝트와 제작진에 관한 영상을 볼 수 있습니다! --- -## 교육 방법론 +## 교육 철학 -이 커리큘럼을 제작하면서 두 가지 교육적 원칙을 선택했습니다: **프로젝트 기반** 학습을 보장하고 **빈번한 퀴즈**를 포함하는 것입니다. 또한 이 커리큘럼은 공통 **테마**를 포함하여 일관성을 제공합니다. +이 커리큘럼을 만들면서 두 가지 교육 원칙을 선택했습니다: 실습 중심의 **프로젝트 기반** 학습과 **빈번한 퀴즈** 포함. 또한, 일관성을 위해 공통 **주제**를 설정했습니다. -프로젝트와 연계된 콘텐츠를 보장함으로써 학생들에게 더 흥미로운 학습 경험을 제공하며 개념의 유지력을 높일 수 있습니다. 또한, 수업 전 저위험 퀴즈는 학생이 주제를 학습할 의도를 설정하게 하고, 수업 후 두 번째 퀴즈는 추가적인 개념 유지력을 보장합니다. 이 커리큘럼은 유연하고 재미있게 설계되었으며 전체 또는 일부로 학습할 수 있습니다. 프로젝트는 작게 시작하여 12주 과정이 끝날 때 점점 복잡해집니다. 이 커리큘럼은 또한 ML의 실제 응용에 대한 후기를 포함하며, 추가 학점으로 사용하거나 토론의 기초로 사용할 수 있습니다. +내용이 프로젝트와 일치하도록 하여 학생들의 참여도를 높이고 개념의 이해와 기억을 강화합니다. 수업 전의 낮은 부담 퀴즈는 학생이 학습 주제에 집중하도록 돕고, 수업 후 퀴즈는 이해도를 높입니다. 이 커리큘럼은 유연하고 재미있게 설계되어 전체 또는 일부만 수강할 수 있습니다. 프로젝트는 작게 시작해 12주 과정이 끝날 때쯤 점점 복잡해집니다. 또한 실제 머신러닝 적용에 관한 후기를 포함하여 추가 학점이나 토론 자료로 활용할 수 있습니다. -> [행동 강령](CODE_OF_CONDUCT.md), [기여](CONTRIBUTING.md), [번역](TRANSLATIONS.md), [문제 해결](TROUBLESHOOTING.md) 지침을 확인하세요. 건설적인 피드백을 환영합니다! +> [행동 강령](CODE_OF_CONDUCT.md), [기여 가이드](CONTRIBUTING.md), [번역 가이드](TRANSLATIONS.md), [문제 해결 가이드](TROUBLESHOOTING.md)를 확인하세요. 건설적인 피드백을 환영합니다! ## 각 강의에는 다음이 포함됩니다 - 선택적 스케치노트 -- 선택적 보충 비디오 -- 비디오 강의 (일부 강의만 해당) +- 선택적 보조 동영상 +- 동영상 안내 (일부 강의만) - [강의 전 워밍업 퀴즈](https://ff-quizzes.netlify.app/en/ml/) -- 작성된 강의 -- 프로젝트 기반 강의의 경우, 프로젝트를 구축하는 단계별 가이드 -- 지식 확인 +- 서면 강의 +- 프로젝트 기반 강의의 경우, 프로젝트 구축 단계별 가이드 +- 지식 점검 - 도전 과제 -- 보충 읽기 자료 +- 보조 읽기 자료 - 과제 - [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/) -> **언어에 대한 참고 사항**: 이 강의는 주로 Python으로 작성되었지만 일부는 R로도 제공됩니다. R 강의를 완료하려면 `/solution` 폴더로 이동하여 R 강의를 찾으세요. 이 강의는 `.rmd` 확장자를 포함하며, 이는 **R Markdown** 파일을 나타냅니다. 이는 `코드 청크`(R 또는 다른 언어)와 `YAML 헤더`(PDF와 같은 출력 형식을 안내)를 `Markdown 문서`에 포함하는 것으로 간단히 정의할 수 있습니다. 따라서 데이터 과학을 위한 뛰어난 저작 프레임워크로 작용하며, 코드, 출력 및 생각을 Markdown에 작성할 수 있습니다. 또한 R Markdown 문서는 PDF, HTML 또는 Word와 같은 출력 형식으로 렌더링할 수 있습니다. +> **언어에 대한 참고**: 이 강의들은 주로 Python으로 작성되었지만, 많은 강의가 R로도 제공됩니다. R 강의를 완료하려면 `/solution` 폴더에서 R 강의를 찾으세요. .rmd 확장자는 **R 마크다운** 파일을 의미하며, 이는 `코드 청크`(R 또는 다른 언어)와 `YAML 헤더`(PDF 등 출력 형식 지정)를 `마크다운 문서`에 포함하는 형식입니다. 따라서 코드, 출력, 생각을 마크다운으로 작성하여 결합할 수 있어 데이터 과학에 적합한 저작 프레임워크입니다. 또한 R 마크다운 문서는 PDF, HTML, Word 등 다양한 출력 형식으로 렌더링할 수 있습니다. -> **퀴즈에 대한 참고 사항**: 모든 퀴즈는 [Quiz App 폴더](../../quiz-app)에 포함되어 있으며, 총 52개의 퀴즈가 각 3개의 질문으로 구성되어 있습니다. 강의 내에서 링크되어 있지만, 퀴즈 앱은 로컬에서 실행할 수 있습니다. `quiz-app` 폴더의 지침을 따라 로컬에서 호스팅하거나 Azure에 배포하세요. +> **퀴즈에 대한 참고**: 모든 퀴즈는 [Quiz App 폴더](../../quiz-app)에 있으며, 총 52개의 퀴즈가 각각 3문항으로 구성되어 있습니다. 강의 내에서 링크되어 있지만, 퀴즈 앱은 로컬에서 실행할 수 있습니다; `quiz-app` 폴더의 지침을 따라 로컬 호스팅 또는 Azure 배포가 가능합니다. -| 강의 번호 | 주제 | 강의 그룹 | 학습 목표 | 링크된 강의 | 저자 | +| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 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) | 학생들이 ML 모델을 구축하고 적용할 때 고려해야 할 공정성에 대한 중요한 철학적 문제는 무엇일까요? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | 머신러닝 기술 | [Introduction](1-Introduction/README.md) | ML 연구자들이 ML 모델을 구축하기 위해 사용하는 기술은 무엇일까요? | [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) | ML 준비를 위해 데이터를 시각화하고 정리해보세요 | [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-Learning을 활용한 강화 학습 소개 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | 피터가 늑대를 피하도록 도와주세요! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 강화 학습 Gym | [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) | Responsible 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) +| 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) | ML 모델을 구축하고 적용할 때 학생들이 고려해야 할 공정성에 관한 중요한 철학적 문제는 무엇인가? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | 머신러닝 기법 | [Introduction](1-Introduction/README.md) | ML 연구자들이 ML 모델을 구축할 때 사용하는 기법은 무엇인가? | [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) | ML 준비를 위한 데이터 시각화 및 정리 | [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-평균 군집화 방법 탐색 | [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) | 강화 학습 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| 후기 | 실제 ML 시나리오 및 응용 | [ML in the Wild](9-Real-World/README.md) | 고전 ML의 흥미롭고 유익한 실제 응용 | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| 후기 | 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`를 입력하세요. 웹사이트는 localhost의 포트 3000에서 제공됩니다: `localhost:3000`. +[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)에서 확인하세요. +링크가 포함된 커리큘럼 PDF는 [여기](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)에서 찾을 수 있습니다. + + +## 🎒 기타 과정 + +우리 팀은 다른 과정도 제작합니다! 확인해 보세요: -## 🎒 다른 과정들 + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) -우리 팀은 다른 과정들도 제작합니다! 확인해보세요: +--- ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -170,15 +179,15 @@ Microsoft의 클라우드 옹호자들이 **머신러닝**에 관한 12주, 26 [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### 생성형 AI 시리즈 + +### 생성 AI 시리즈 [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### 핵심 학습 [![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) [![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) @@ -189,8 +198,8 @@ Microsoft의 클라우드 옹호자들이 **머신러닝**에 관한 12주, 26 [![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Copilot 시리즈 + +### 코파일럿 시리즈 [![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) [![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) [![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) @@ -198,11 +207,11 @@ Microsoft의 클라우드 옹호자들이 **머신러닝**에 관한 12주, 26 ## 도움 받기 -AI 앱을 구축하다가 막히거나 질문이 있다면, MCP에 대해 논의하는 학습자 및 경험 많은 개발자들과 함께하세요. 질문을 환영하고 지식을 자유롭게 공유하는 지원적인 커뮤니티입니다. +AI 앱 개발 중 막히거나 질문이 있으면 MCP에 대해 배우는 동료 학습자 및 경험 많은 개발자들과 토론에 참여하세요. 질문이 환영받고 지식이 자유롭게 공유되는 지원 커뮤니티입니다. [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -제품 피드백이나 빌드 중 오류가 발생하면 다음을 방문하세요: +제품 피드백이나 빌드 중 오류가 있으면 다음을 방문하세요: [![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) @@ -210,5 +219,5 @@ AI 앱을 구축하다가 막히거나 질문이 있다면, MCP에 대해 논의 **면책 조항**: -이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다. +이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서의 원어 버전이 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우 전문적인 인간 번역을 권장합니다. 본 번역 사용으로 인한 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/lt/README.md b/translations/lt/README.md index cb08b0c98..0831a3b08 100644 --- a/translations/lt/README.md +++ b/translations/lt/README.md @@ -1,166 +1,176 @@ -[![GitHub licencija](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub bendradarbiai](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub problemos](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub užklausos](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub stebėtojai](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub šakės](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub žvaigždės](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Daugiakalbė parama -#### Palaikoma per GitHub Action (Automatizuota ir visada atnaujinta) +#### Palaikoma per GitHub Action (automatizuota ir visada atnaujinta) -[Arabų](../ar/README.md) | [Bengalų](../bn/README.md) | [Bulgarų](../bg/README.md) | [Birmos (Mianmaras)](../my/README.md) | [Kinų (supaprastinta)](../zh/README.md) | [Kinų (tradicinė, Honkongas)](../hk/README.md) | [Kinų (tradicinė, Makao)](../mo/README.md) | [Kinų (tradicinė, Taivanas)](../tw/README.md) | [Kroatų](../hr/README.md) | [Čekų](../cs/README.md) | [Danų](../da/README.md) | [Olandų](../nl/README.md) | [Estų](../et/README.md) | [Suomių](../fi/README.md) | [Prancūzų](../fr/README.md) | [Vokiečių](../de/README.md) | [Graikų](../el/README.md) | [Hebrajų](../he/README.md) | [Hindi](../hi/README.md) | [Vengrų](../hu/README.md) | [Indoneziečių](../id/README.md) | [Italų](../it/README.md) | [Japonų](../ja/README.md) | [Korėjiečių](../ko/README.md) | [Lietuvių](./README.md) | [Malajų](../ms/README.md) | [Maratų](../mr/README.md) | [Nepalų](../ne/README.md) | [Nigerijos pidžinas](../pcm/README.md) | [Norvegų](../no/README.md) | [Persų (farsi)](../fa/README.md) | [Lenkų](../pl/README.md) | [Portugalų (Brazilija)](../br/README.md) | [Portugalų (Portugalija)](../pt/README.md) | [Pandžabų (Gurmukhi)](../pa/README.md) | [Rumunų](../ro/README.md) | [Rusų](../ru/README.md) | [Serbų (kirilica)](../sr/README.md) | [Slovakų](../sk/README.md) | [Slovėnų](../sl/README.md) | [Ispanų](../es/README.md) | [Svahilių](../sw/README.md) | [Švedų](../sv/README.md) | [Tagalogų (filipiniečių)](../tl/README.md) | [Tamilų](../ta/README.md) | [Tajų](../th/README.md) | [Turkų](../tr/README.md) | [Ukrainiečių](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamiečių](../vi/README.md) + +[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](./README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + #### Prisijunkite prie mūsų bendruomenės [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Turime vykstantį Discord mokymų su AI ciklą, sužinokite daugiau ir prisijunkite prie mūsų [Mokymų su AI serijos](https://aka.ms/learnwithai/discord) nuo 2025 m. rugsėjo 18 iki 30 d. Sužinosite patarimų ir gudrybių, kaip naudoti GitHub Copilot duomenų mokslui. +Mes vykdome Discord mokymosi su DI seriją, sužinokite daugiau ir prisijunkite prie mūsų [Learn with AI Series](https://aka.ms/learnwithai/discord) nuo 2025 m. rugsėjo 18 iki 30 d. Jūs gausite patarimų ir gudrybių, kaip naudoti GitHub Copilot duomenų mokslui. -![Mokymų su AI serija](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.lt.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.lt.png) -# Mašininis mokymasis pradedantiesiems - Mokymo programa +# Mašininis mokymasis pradedantiesiems – mokymo programa > 🌍 Keliaukite po pasaulį, tyrinėdami mašininį mokymąsi per pasaulio kultūras 🌍 -Microsoft Cloud Advocates džiaugiasi galėdami pasiūlyti 12 savaičių, 26 pamokų mokymo programą apie **mašininį mokymąsi**. Šioje programoje sužinosite apie tai, kas kartais vadinama **klasikiniu mašininiu mokymusi**, daugiausia naudojant Scikit-learn biblioteką ir vengiant giluminio mokymosi, kuris aptariamas mūsų [AI pradedantiesiems mokymo programoje](https://aka.ms/ai4beginners). Taip pat derinkite šias pamokas su mūsų ['Duomenų mokslas pradedantiesiems' mokymo programa](https://aka.ms/ds4beginners)! +„Microsoft“ Cloud Advocates džiaugiasi galėdami pasiūlyti 12 savaičių, 26 pamokų mokymo programą, skirtą **mašininiam mokymuisi**. Šioje programoje sužinosite apie tai, ką kartais vadiname **klasikiniu mašininiu mokymusi**, daugiausia naudojant Scikit-learn biblioteką ir vengiant giluminio mokymosi, kuris aptariamas mūsų [DI pradedantiesiems mokymo programoje](https://aka.ms/ai4beginners). Taip pat derinkite šias pamokas su mūsų ['Duomenų mokslas pradedantiesiems' mokymo programa](https://aka.ms/ds4beginners). -Keliaukite su mumis po pasaulį, taikydami šiuos klasikinius metodus duomenims iš įvairių pasaulio vietų. Kiekviena pamoka apima prieš ir po pamokos testus, rašytines instrukcijas, kaip atlikti pamoką, sprendimą, užduotį ir dar daugiau. Mūsų projektinis mokymo metodas leidžia mokytis kuriant, o tai yra įrodytas būdas įtvirtinti naujus įgūdžius. +Keliaukite su mumis po pasaulį, taikydami šias klasikines technikas duomenims iš įvairių pasaulio vietų. Kiekviena pamoka apima priešpamokinius ir popamokinius testus, rašytines instrukcijas pamokos atlikimui, sprendimą, užduotį ir dar daugiau. Mūsų projektinė pedagogika leidžia mokytis statant, tai patikrintas būdas, kaip nauji įgūdžiai geriau įsimena. **✍️ Nuoširdus ačiū mūsų autoriams** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu ir Amy Boyd **🎨 Taip pat dėkojame mūsų iliustratoriams** Tomomi Imura, Dasani Madipalli ir Jen Looper -**🙏 Ypatinga padėka 🙏 mūsų Microsoft Studentų Ambasadoriams autoriams, recenzentams ir turinio kūrėjams**, ypač Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila ir Snigdha Agarwal +**🙏 Ypatingas ačiū 🙏 mūsų Microsoft Student Ambassador autoriams, recenzentams ir turinio bendradarbiams**, ypač Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila ir Snigdha Agarwal -**🤩 Papildoma padėka Microsoft Studentų Ambasadoriams Eric Wanjau, Jasleen Sondhi ir Vidushi Gupta už mūsų R pamokas!** +**🤩 Papildomas dėkingumas Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi ir Vidushi Gupta už mūsų R pamokas!** # Pradžia -Sekite šiuos žingsnius: -1. **Fork'inkite saugyklą**: Spustelėkite "Fork" mygtuką šio puslapio viršutiniame dešiniajame kampe. -2. **Klonuokite saugyklą**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Atlikite šiuos veiksmus: +1. **Padarykite šaką (Fork) sau**: spustelėkite mygtuką „Fork“ šio puslapio viršutiniame dešiniajame kampe. +2. **Klonuokite sau repozitoriją**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [Visus papildomus šio kurso išteklius rasite mūsų Microsoft Learn kolekcijoje](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [raskite visus papildomus šios kursų medžiagos išteklius mūsų Microsoft Learn kolekcijoje](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Reikia pagalbos?** Peržiūrėkite mūsų [Trikčių šalinimo vadovą](TROUBLESHOOTING.md), kuriame rasite sprendimus dažniausiai pasitaikančioms problemoms, susijusioms su diegimu, nustatymu ir pamokų vykdymu. +> 🔧 **Reikia pagalbos?** Peržiūrėkite mūsų [Trikčių šalinimo vadovą](TROUBLESHOOTING.md) dėl dažniausiai pasitaikančių problemų sprendimų diegiant, nustatant ir vykdant pamokas. -**[Studentai](https://aka.ms/student-page)**, norėdami naudoti šią mokymo programą, fork'inkite visą saugyklą į savo GitHub paskyrą ir atlikite pratimus savarankiškai arba grupėje: -- Pradėkite nuo prieš paskaitą esančio testo. +**[Studentai](https://aka.ms/student-page)**, norėdami naudoti šią mokymo programą, padarykite visos repozitorijos šaką į savo GitHub paskyrą ir atlikite pratimus savarankiškai arba grupėje: + +- Pradėkite nuo priešpaskaitinio testo. - Perskaitykite paskaitą ir atlikite veiklas, sustodami ir apmąstydami kiekvieną žinių patikrinimą. -- Stenkitės kurti projektus suprasdami pamokas, o ne tiesiog paleisdami sprendimo kodą; tačiau tas kodas yra prieinamas `/solution` aplankuose kiekvienoje projektinėje pamokoje. -- Atlikite po paskaitos esantį testą. -- Atlikite iššūkį. +- Stenkitės kurti projektus suprasdami pamokas, o ne tiesiog paleisdami sprendimo kodą; tačiau šis kodas yra prieinamas kiekvienos projektinės pamokos `/solution` aplankuose. +- Atlikite popaskaitinį testą. +- Įvykdykite iššūkį. - Atlikite užduotį. -- Baigę pamokų grupę, apsilankykite [Diskusijų lentoje](https://github.com/microsoft/ML-For-Beginners/discussions) ir "mokykitės garsiai", užpildydami atitinkamą PAT rubriką. 'PAT' yra pažangos vertinimo įrankis, kurį užpildote, kad gilintumėte savo mokymąsi. Taip pat galite reaguoti į kitų PAT, kad mokytumėmės kartu. +- Baigę pamokų grupę, apsilankykite [Diskusijų lentoje](https://github.com/microsoft/ML-For-Beginners/discussions) ir „mokykitės garsiai“, užpildydami atitinkamą PAT vertinimo lentelę. 'PAT' yra pažangos vertinimo įrankis, kurį užpildote, kad pagilintumėte mokymąsi. Taip pat galite reaguoti į kitų PAT, kad mokytumėmės kartu. > Tolimesniam mokymuisi rekomenduojame sekti šiuos [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modulius ir mokymosi kelius. -**Mokytojai**, mes [įtraukėme keletą pasiūlymų](for-teachers.md), kaip naudoti šią mokymo programą. +**Mokytojai**, mes pateikėme [keletą pasiūlymų](for-teachers.md), kaip naudoti šią mokymo programą. --- -## Vaizdo įrašų apžvalgos +## Vaizdo įrašų peržiūros -Kai kurios pamokos yra prieinamos kaip trumpi vaizdo įrašai. Visus juos galite rasti pamokose arba [ML pradedantiesiems grojaraštyje Microsoft Developer YouTube kanale](https://aka.ms/ml-beginners-videos), spustelėję žemiau esantį paveikslėlį. +Kai kurios pamokos yra prieinamos trumpų vaizdo įrašų forma. Visus juos rasite įterptus pamokose arba [ML pradedantiesiems grojaraštyje Microsoft Developer YouTube kanale](https://aka.ms/ml-beginners-videos), spustelėję žemiau esantį paveikslėlį. -[![ML pradedantiesiems baneris](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.lt.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.lt.png)](https://aka.ms/ml-beginners-videos) --- ## Susipažinkite su komanda -[![Reklaminis vaizdo įrašas](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **Gif sukūrė** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Spustelėkite aukščiau esantį paveikslėlį, kad pamatytumėte vaizdo įrašą apie projektą ir žmones, kurie jį sukūrė! +> 🎥 Spustelėkite aukščiau esantį paveikslėlį, kad pamatytumėte vaizdo įrašą apie projektą ir jį sukūrusius žmones! --- ## Pedagogika -Kuriant šią mokymo programą, pasirinkome du pedagoginius principus: užtikrinti, kad ji būtų praktiška **projektinė** ir kad joje būtų **dažni testai**. Be to, ši mokymo programa turi bendrą **temą**, kuri suteikia jai vientisumo. +Kuriant šią mokymo programą pasirinkome du pedagoginius principus: užtikrinti, kad ji būtų praktinė, **projektinė**, ir kad joje būtų **dažni testai**. Be to, ši programa turi bendrą **temą**, suteikiančią jai vientisumą. -Užtikrinant, kad turinys atitiktų projektus, procesas tampa įdomesnis studentams, o koncepcijų įsisavinimas sustiprėja. Be to, mažos rizikos testas prieš pamoką nukreipia studento dėmesį į temos mokymąsi, o antrasis testas po pamokos užtikrina tolesnį įsisavinimą. Ši mokymo programa buvo sukurta taip, kad būtų lanksti ir smagi, ir ją galima naudoti visą arba dalimis. Projektai prasideda nuo mažų ir tampa vis sudėtingesni iki 12 savaičių ciklo pabaigos. Ši mokymo programa taip pat apima priedą apie realaus pasaulio ML taikymus, kuris gali būti naudojamas kaip papildomas kreditas arba diskusijų pagrindas. +Užtikrinant, kad turinys atitiktų projektus, procesas tampa įdomesnis studentams, o koncepcijų įsisavinimas pagerėja. Be to, mažos rizikos testas prieš paskaitą nukreipia studentą į mokymąsi, o antras testas po paskaitos užtikrina dar geresnį įsisavinimą. Ši programa sukurta būti lanksti ir smagi, ją galima atlikti visą arba dalimis. Projektai prasideda nuo paprastų ir tampa vis sudėtingesni per 12 savaičių ciklą. Programa taip pat apima poskriptumą apie realaus pasaulio ML taikymus, kurį galima naudoti kaip papildomą kreditą arba diskusijų pagrindą. -> Raskite mūsų [Elgesio kodeksą](CODE_OF_CONDUCT.md), [Prisidėjimo](CONTRIBUTING.md), [Vertimo](TRANSLATIONS.md) ir [Trikčių šalinimo](TROUBLESHOOTING.md) gaires. Laukiame jūsų konstruktyvios grįžtamosios informacijos! +> Raskite mūsų [Elgesio kodeksą](CODE_OF_CONDUCT.md), [Indėlio taisykles](CONTRIBUTING.md), [Vertimo gaires](TRANSLATIONS.md) ir [Trikčių šalinimo](TROUBLESHOOTING.md) instrukcijas. Laukiame jūsų konstruktyvios grįžtamosios informacijos! ## Kiekviena pamoka apima -- pasirenkamą eskizą +- pasirenkamą eskizo užrašą - pasirenkamą papildomą vaizdo įrašą -- vaizdo įrašo apžvalgą (kai kuriose pamokose) -- [prieš paskaitą esantį testą](https://ff-quizzes.netlify.app/en/ml/) +- vaizdo įrašo peržiūrą (tik kai kurios pamokos) +- [priešpaskaitinį apšilimo testą](https://ff-quizzes.netlify.app/en/ml/) - rašytinę pamoką -- projektinėms pamokoms - žingsnis po žingsnio gaires, kaip sukurti projektą +- projektinėms pamokoms – žingsnis po žingsnio gaires, kaip sukurti projektą - žinių patikrinimus - iššūkį - papildomą skaitymą - užduotį -- [po paskaitos esantį testą](https://ff-quizzes.netlify.app/en/ml/) +- [popaskaitinį testą](https://ff-quizzes.netlify.app/en/ml/) -> **Pastaba apie kalbas**: Šios pamokos daugiausia parašytos Python kalba, tačiau daugelis jų taip pat prieinamos R kalba. Norėdami atlikti R pamoką, eikite į `/solution` aplanką ir ieškokite R pamokų. Jos turi .rmd plėtinį, kuris reiškia **R Markdown** failą, kurį galima paprastai apibrėžti kaip `kodo fragmentų` (R ar kitų kalbų) ir `YAML antraštės` (kuri nurodo, kaip formatuoti išvestis, pvz., PDF) įterpimą į `Markdown dokumentą`. Todėl tai yra puikus autorystės pagrindas duomenų mokslui, nes leidžia sujungti jūsų kodą, jo išvestį ir jūsų mintis, leidžiant jas užrašyti Markdown formatu. Be to, R Markdown dokumentai gali būti pateikiami kaip PDF, HTML ar Word formatai. +> **Pastaba apie kalbas**: Šios pamokos daugiausia parašytos Python kalba, tačiau daugelis jų taip pat prieinamos R kalba. Norėdami atlikti R pamoką, eikite į `/solution` aplanką ir ieškokite R pamokų. Jos turi .rmd plėtinį, kuris reiškia **R Markdown** failą, kurį galima apibrėžti kaip `kodo blokų` (R ar kitų kalbų) ir `YAML antraštės` (nurodančios, kaip formatuoti išvestis, pvz., PDF) įterpimą į `Markdown` dokumentą. Tai puikus duomenų mokslo rašymo įrankis, leidžiantis derinti kodą, jo išvestį ir mintis, rašant jas Markdown formatu. Be to, R Markdown dokumentus galima konvertuoti į PDF, HTML ar Word formatus. -> **Pastaba apie testus**: Visi testai yra [Testų programėlės aplanke](../../quiz-app), iš viso 52 testai po tris klausimus kiekviename. Jie yra susieti iš pamokų, tačiau testų programėlę galima paleisti lokaliai; sekite instrukcijas `quiz-app` aplanke, kad paleistumėte lokaliai arba įdiegtumėte Azure. +> **Pastaba apie testus**: Visi testai yra [Quiz App aplanke](../../quiz-app), iš viso 52 testai po tris klausimus. Jie susieti pamokose, bet testų programėlę galima paleisti vietoje; vadovaukitės `quiz-app` aplanko instrukcijomis, kaip ją paleisti vietoje arba diegti į Azure. -| Pamokos numeris | Tema | Pamokų grupavimas | Mokymosi tikslai | Susieta pamoka | Autorius | +| Pamokos numeris | Tema | Pamokų grupė | Mokymosi tikslai | Susieta pamoka | Autorius | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Įvadas į mašininį mokymąsi | [Įvadas](1-Introduction/README.md) | Sužinokite pagrindines mašininio mokymosi sąvokas | [Pamoka](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Mašininio mokymosi istorija | [Įvadas](1-Introduction/README.md) | Sužinokite šios srities istoriją | [Pamoka](1-Introduction/2-history-of-ML/README.md) | Jen ir Amy | -| 03 | Teisingumas ir mašininis mokymasis | [Įvadas](1-Introduction/README.md) | Kokie svarbūs filosofiniai klausimai apie teisingumą, kuriuos studentai turėtų apsvarstyti kurdami ir taikydami ML modelius? | [Pamoka](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Mašininio mokymosi technikos | [Įvadas](1-Introduction/README.md) | Kokias technikas ML tyrėjai naudoja kurdami ML modelius? | [Pamoka](1-Introduction/4-techniques-of-ML/README.md) | Chris ir Jen | -| 05 | Įvadas į regresiją | [Regresija](2-Regression/README.md) | Pradėkite naudoti Python ir Scikit-learn regresijos modeliams | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Šiaurės Amerikos moliūgų kainos 🎃 | [Regresija](2-Regression/README.md) | Vizualizuokite ir išvalykite duomenis pasiruošimui ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Šiaurės Amerikos moliūgų kainos 🎃 | [Regresija](2-Regression/README.md) | Sukurkite linijinius ir polinominius regresijos modelius | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen ir Dmitry • Eric Wanjau | -| 08 | Šiaurės Amerikos moliūgų kainos 🎃 | [Regresija](2-Regression/README.md) | Sukurkite logistinės regresijos modelį | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Internetinė programėlė 🔌 | [Internetinė programėlė](3-Web-App/README.md) | Sukurkite internetinę programėlę, kad galėtumėte naudoti savo apmokytą modelį | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Įvadas į klasifikaciją | [Klasifikacija](4-Classification/README.md) | Išvalykite, paruoškite ir vizualizuokite savo duomenis; įvadas į klasifikaciją | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen ir Cassie • Eric Wanjau | -| 11 | Skani Azijos ir Indijos virtuvė 🍜 | [Klasifikacija](4-Classification/README.md) | Įvadas į klasifikatorius | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen ir Cassie • Eric Wanjau | -| 12 | Skani Azijos ir Indijos virtuvė 🍜 | [Klasifikacija](4-Classification/README.md) | Daugiau klasifikatorių | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen ir Cassie • Eric Wanjau | -| 13 | Skani Azijos ir Indijos virtuvė 🍜 | [Klasifikacija](4-Classification/README.md) | Sukurkite rekomendacijų internetinę programėlę naudodami savo modelį | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Įvadas į klasterizaciją | [Klasterizacija](5-Clustering/README.md) | Išvalykite, paruoškite ir vizualizuokite savo duomenis; įvadas į klasterizaciją | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Nigerijos muzikos skonių tyrinėjimas 🎧 | [Klasterizacija](5-Clustering/README.md) | Tyrinėkite K-Means klasterizacijos metodą | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Įvadas į natūralios kalbos apdorojimą ☕️ | [Natūralios kalbos apdorojimas](6-NLP/README.md) | Sužinokite pagrindus apie NLP kurdami paprastą botą | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Dažnos NLP užduotys ☕️ | [Natūralios kalbos apdorojimas](6-NLP/README.md) | Gilinkite savo NLP žinias suprasdami dažnas užduotis, susijusias su kalbos struktūromis | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Vertimas ir nuotaikų analizė ♥️ | [Natūralios kalbos apdorojimas](6-NLP/README.md) | Vertimas ir nuotaikų analizė su Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantiški Europos viešbučiai ♥️ | [Natūralios kalbos apdorojimas](6-NLP/README.md) | Nuotaikų analizė su viešbučių apžvalgomis 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantiški Europos viešbučiai ♥️ | [Natūralios kalbos apdorojimas](6-NLP/README.md) | Nuotaikų analizė su viešbučių apžvalgomis 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Įvadas į laiko eilučių prognozavimą | [Laiko eilutės](7-TimeSeries/README.md) | Įvadas į laiko eilučių prognozavimą | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Pasaulio energijos naudojimas ⚡️ - laiko eilučių prognozavimas su ARIMA | [Laiko eilutės](7-TimeSeries/README.md) | Laiko eilučių prognozavimas su ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Pasaulio energijos naudojimas ⚡️ - laiko eilučių prognozavimas su SVR | [Laiko eilutės](7-TimeSeries/README.md) | Laiko eilučių prognozavimas su Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Įvadas į stiprinamąjį mokymą | [Stiprinamasis mokymasis](8-Reinforcement/README.md)| Įvadas į stiprinamąjį mokymą su Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Padėkite Peteriui išvengti vilko! 🐺 | [Stiprinamasis mokymasis](8-Reinforcement/README.md)| Stiprinamasis mokymasis su Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Tikrojo pasaulio ML scenarijai ir taikymas | [ML realiame pasaulyje](9-Real-World/README.md)| Įdomūs ir atskleidžiantys tikrojo pasaulio klasikinio ML taikymai | [Pamoka](9-Real-World/1-Applications/README.md) | Komanda | -| Postscript | Modelio derinimas ML naudojant RAI prietaisų skydelį | [ML realiame pasaulyje](9-Real-World/README.md)| Modelio derinimas mašininio mokymosi srityje naudojant atsakingo AI prietaisų skydelio komponentus | [Pamoka](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +| 01 | Mašininio mokymosi įvadas | [Introduction](1-Introduction/README.md) | Sužinokite pagrindines mašininio mokymosi sąvokas | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Mašininio mokymosi istorija | [Introduction](1-Introduction/README.md) | Sužinokite šios srities istoriją | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Teisingumas ir mašininis mokymasis | [Introduction](1-Introduction/README.md) | Kokie svarbūs filosofiniai klausimai apie teisingumą, kuriuos studentai turėtų apsvarstyti kurdami ir taikydami ML modelius? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Mašininio mokymosi technikos | [Introduction](1-Introduction/README.md) | Kokias technikas ML tyrėjai naudoja kurdami ML modelius? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Regresijos įvadas | [Regression](2-Regression/README.md) | Pradėkite naudotis Python ir Scikit-learn regresijos modeliams | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Šiaurės Amerikos moliūgų kainos 🎃 | [Regression](2-Regression/README.md) | Vizualizuokite ir išvalykite duomenis pasiruošimui ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Šiaurės Amerikos moliūgų kainos 🎃 | [Regression](2-Regression/README.md) | Kurkite tiesinės ir polininės regresijos modelius | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Šiaurės Amerikos moliūgų kainos 🎃 | [Regression](2-Regression/README.md) | Kurkite logistinės regresijos modelį | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Interneto programa 🔌 | [Web App](3-Web-App/README.md) | Sukurkite interneto programą, kad naudotumėte savo apmokytą modelį | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Klasifikacijos įvadas | [Classification](4-Classification/README.md) | Išvalykite, paruoškite ir vizualizuokite savo duomenis; klasifikacijos įvadas | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Skani Azijos ir Indijos virtuvė 🍜 | [Classification](4-Classification/README.md) | Klasifikatorių įvadas | [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 | Skani Azijos ir Indijos virtuvė 🍜 | [Classification](4-Classification/README.md) | Daugiau klasifikatorių | [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 | Skani Azijos ir Indijos virtuvė 🍜 | [Classification](4-Classification/README.md) | Sukurkite rekomendacinę interneto programą naudodami savo modelį | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Klasterizacijos įvadas | [Clustering](5-Clustering/README.md) | Išvalykite, paruoškite ir vizualizuokite savo duomenis; klasterizacijos įvadas | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Nigerijos muzikos skonių tyrinėjimas 🎧 | [Clustering](5-Clustering/README.md) | Tyrinėkite K-Means klasterizacijos metodą | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Natūralios kalbos apdorojimo įvadas ☕️ | [Natural language processing](6-NLP/README.md) | Sužinokite NLP pagrindus kurdami paprastą botą | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Dažnos NLP užduotys ☕️ | [Natural language processing](6-NLP/README.md) | Gilinkite savo NLP žinias suprasdami dažnas užduotis, reikalingas dirbant su kalbos struktūromis | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Vertimas ir nuotaikų analizė ♥️ | [Natural language processing](6-NLP/README.md) | Vertimas ir nuotaikų analizė su Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantiški Europos viešbučiai ♥️ | [Natural language processing](6-NLP/README.md) | Nuotaikų analizė su viešbučių atsiliepimais 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantiški Europos viešbučiai ♥️ | [Natural language processing](6-NLP/README.md) | Nuotaikų analizė su viešbučių atsiliepimais 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Laiko eilučių prognozavimo įvadas | [Time series](7-TimeSeries/README.md) | Laiko eilučių prognozavimo įvadas | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Pasaulio elektros suvartojimas ⚡️ - laiko eilučių prognozavimas su ARIMA | [Time series](7-TimeSeries/README.md) | Laiko eilučių prognozavimas su ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Pasaulio elektros suvartojimas ⚡️ - laiko eilučių prognozavimas su SVR | [Time series](7-TimeSeries/README.md) | Laiko eilučių prognozavimas su paramos vektorių regresoriumi | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Pastiprinamojo mokymosi įvadas | [Reinforcement learning](8-Reinforcement/README.md) | Pastiprinamojo mokymosi įvadas su Q-mokymusi | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Padėkite Petrui išvengti vilko! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Pastiprinamojo mokymosi treniruoklis | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Tikro pasaulio ML scenarijai ir taikymai | [ML in the Wild](9-Real-World/README.md) | Įdomios ir atskleidžiančios tikro pasaulio klasikinio ML taikymo situacijos | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | ML modelių derinimas naudojant RAI informacijos suvestinę | [ML in the Wild](9-Real-World/README.md) | ML modelių derinimas naudojant atsakingos AI informacijos suvestinės komponentus | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [raskite visus papildomus šio kurso išteklius mūsų Microsoft Learn kolekcijoje](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -## Prieiga neprisijungus +## Offline prieiga -Šią dokumentaciją galite naudoti neprisijungus naudodami [Docsify](https://docsify.js.org/#/). Fork'inkite šį repo, [įdiekite Docsify](https://docsify.js.org/#/quickstart) savo vietiniame kompiuteryje, o tada šio repo pagrindiniame aplanke įveskite `docsify serve`. Svetainė bus pasiekiama 3000 prievade jūsų localhost: `localhost:3000`. +Šią dokumentaciją galite naudoti neprisijungę naudodami [Docsify](https://docsify.js.org/#/). Šakinkite šį repozitoriją, [įdiekite Docsify](https://docsify.js.org/#/quickstart) savo vietiniame kompiuteryje, tada šio repozitorijos šakniniame aplanke įveskite `docsify serve`. Svetainė bus pasiekiama per 3000 prievadą jūsų localhost: `localhost:3000`. ## PDF failai Raskite mokymo programos PDF su nuorodomis [čia](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Kiti kursai +## 🎒 Kiti kursai + +Mūsų komanda kuria ir kitus kursus! Pažiūrėkite: -Mūsų komanda kuria kitus kursus! Peržiūrėkite: + +### LangChain +[![LangChain4j pradedantiesiems](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js pradedantiesiems](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agentai [![AZD pradedantiesiems](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -169,44 +179,45 @@ Mūsų komanda kuria kitus kursus! Peržiūrėkite: [![AI agentai pradedantiesiems](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Generatyvus AI serija -[![Generatyvus AI pradedantiesiems](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generatyvus AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generatyvus AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generatyvus AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) + +### Generatyvinio AI serija +[![Generatyvinis AI pradedantiesiems](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generatyvinis AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generatyvioji DI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generatyvioji DI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### Pagrindinis mokymasis -[![ML pradedantiesiems](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Duomenų mokslas pradedantiesiems](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![Dirbtinis intelektas pradedantiesiems](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Kibernetinis saugumas pradedantiesiems](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Tinklalapių kūrimas pradedantiesiems](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![Daiktų internetas pradedantiesiems](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR kūrimas pradedantiesiems](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML pradedantiesiems](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Duomenų mokslas pradedantiesiems](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![DI pradedantiesiems](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Kibernetinis saugumas pradedantiesiems](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Tinklalapių kūrimas pradedantiesiems](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT pradedantiesiems](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR kūrimas pradedantiesiems](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Copilot serija +[![Copilot DI poriniam programavimui](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot nuotykiai](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot serija -[![Copilot AI poriniam programavimui](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot nuotykiai](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +## Pagalbos gavimas -## Pagalba +Jei įstringate arba turite klausimų apie DI programėlių kūrimą. Prisijunkite prie kitų besimokančiųjų ir patyrusių kūrėjų diskusijose apie MCP. Tai palaikanti bendruomenė, kurioje klausimai yra laukiami, o žinios dalijamos laisvai. -Jei susiduriate su sunkumais ar turite klausimų apie AI programų kūrimą, prisijunkite prie kitų mokinių ir patyrusių kūrėjų diskusijose apie MCP. Tai palaikanti bendruomenė, kurioje laukiami klausimai ir laisvai dalijamasi žiniomis. - -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Jei turite atsiliepimų apie produktą ar susiduriate su klaidomis kurdami, apsilankykite: +Jei turite produkto atsiliepimų arba susiduriate su klaidomis kūrimo metu, apsilankykite: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Atsakomybės apribojimas**: -Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, atkreipkite dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Dėl svarbios informacijos rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus aiškinimus, kylančius dėl šio vertimo naudojimo. +**Atsakomybės apribojimas**: +Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors stengiamės užtikrinti tikslumą, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojamas profesionalus žmogaus vertimas. Mes neatsakome už bet kokius nesusipratimus ar neteisingus aiškinimus, kylančius dėl šio vertimo naudojimo. \ No newline at end of file diff --git a/translations/ml/1-Introduction/1-intro-to-ML/README.md b/translations/ml/1-Introduction/1-intro-to-ML/README.md new file mode 100644 index 000000000..306b2b045 --- /dev/null +++ b/translations/ml/1-Introduction/1-intro-to-ML/README.md @@ -0,0 +1,161 @@ + +# മെഷീൻ ലേണിങ്ങിലേക്ക് പരിചയം + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +--- + +[![ML for beginners - Introduction to Machine Learning for Beginners](https://img.youtube.com/vi/6mSx_KJxcHI/0.jpg)](https://youtu.be/6mSx_KJxcHI "ML for beginners - Introduction to Machine Learning for Beginners") + +> 🎥 ഈ പാഠം വിശദീകരിക്കുന്ന ഒരു ചെറിയ വീഡിയോക്കായി മുകളിൽ കാണുന്ന ചിത്രം ക്ലിക്ക് ചെയ്യുക. + +മെഷീൻ ലേണിങ്ങിന്റെ ക്ലാസിക്കൽ കോഴ്സിലേക്ക് സ്വാഗതം! നിങ്ങൾ ഈ വിഷയത്തിൽ പൂർണ്ണമായും പുതുതായി ആണോ, അല്ലെങ്കിൽ ഒരു പരിചയസമ്പന്നനായ ML പ്രാക്ടീഷണറായിട്ടുണ്ടോ, ഞങ്ങൾ നിങ്ങളെ ഇവിടെ കാണാൻ സന്തോഷിക്കുന്നു! നിങ്ങളുടെ ML പഠനത്തിന് സൗഹൃദപരമായ ഒരു തുടക്കമിടാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു, കൂടാതെ നിങ്ങളുടെ [പ്രതികരണങ്ങൾ](https://github.com/microsoft/ML-For-Beginners/discussions) വിലയിരുത്താനും, മറുപടി നൽകാനും, ഉൾപ്പെടുത്താനും ഞങ്ങൾ ആഗ്രഹിക്കുന്നു. + +[![Introduction to ML](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Introduction to ML") + +> 🎥 മുകളിൽ കാണുന്ന ചിത്രം ക്ലിക്ക് ചെയ്യുക: MIT-യുടെ ജോൺ ഗുട്ടാഗ് മെഷീൻ ലേണിങ്ങിനെ പരിചയപ്പെടുത്തുന്നു + +--- +## മെഷീൻ ലേണിങ്ങ് ആരംഭിക്കുന്നത് + +ഈ പാഠ്യപദ്ധതിയുമായി തുടങ്ങുന്നതിന് മുമ്പ്, നിങ്ങളുടെ കമ്പ്യൂട്ടർ സജ്ജമാക്കി, ലോക്കലായി നോട്ട്‌ബുക്കുകൾ പ്രവർത്തിപ്പിക്കാൻ തയ്യാറാക്കേണ്ടതാണ്. + +- **ഈ വീഡിയോകൾ ഉപയോഗിച്ച് നിങ്ങളുടെ മെഷീൻ ക്രമീകരിക്കുക**. നിങ്ങളുടെ സിസ്റ്റത്തിൽ [Python ഇൻസ്റ്റാൾ ചെയ്യുന്നത്](https://youtu.be/CXZYvNRIAKM) എങ്ങനെ എന്നതും, വികസനത്തിനായി [ടെക്സ്റ്റ് എഡിറ്റർ സജ്ജമാക്കുന്നത്](https://youtu.be/EU8eayHWoZg) എങ്ങനെ എന്നതും പഠിക്കാൻ താഴെ കൊടുത്ത ലിങ്കുകൾ ഉപയോഗിക്കുക. +- **Python പഠിക്കുക**. ഈ കോഴ്സിൽ ഉപയോഗിക്കുന്ന, ഡാറ്റാ സയന്റിസ്റ്റുകൾക്ക് ഉപകാരപ്രദമായ പ്രോഗ്രാമിംഗ് ഭാഷയായ [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) അടിസ്ഥാനമായി അറിയുന്നത് ശുപാർശ ചെയ്യുന്നു. +- **Node.js, JavaScript പഠിക്കുക**. വെബ് ആപ്പുകൾ നിർമ്മിക്കുമ്പോൾ ഈ കോഴ്സിൽ JavaScript ചിലപ്പോൾ ഉപയോഗിക്കുന്നു, അതിനാൽ [node](https://nodejs.org)യും [npm](https://www.npmjs.com/)യും ഇൻസ്റ്റാൾ ചെയ്തിരിക്കണം, കൂടാതെ Python, JavaScript വികസനത്തിനായി [Visual Studio Code](https://code.visualstudio.com/) ലഭ്യമാകണം. +- **GitHub അക്കൗണ്ട് സൃഷ്ടിക്കുക**. നിങ്ങൾ ഇവിടെ [GitHub](https://github.com) വഴി എത്തിയതിനാൽ, നിങ്ങൾക്ക് അക്കൗണ്ട് ഉണ്ടാകാം, ഇല്ലെങ്കിൽ ഒരു അക്കൗണ്ട് സൃഷ്ടിച്ച് ഈ പാഠ്യപദ്ധതി ഫോർക്ക് ചെയ്ത് നിങ്ങളുടെ സ്വന്തം ഉപയോഗത്തിനായി ഉപയോഗിക്കുക. (നമുക്ക് ഒരു സ്റ്റാർ നൽകാനും മടിക്കേണ്ട 😊) +- **Scikit-learn പരിചയപ്പെടുക**. ഈ പാഠങ്ങളിൽ പരാമർശിക്കുന്ന ML ലൈബ്രറികളായ [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) പരിചയപ്പെടുക. + +--- +## മെഷീൻ ലേണിങ്ങ് എന്താണ്? + +'മെഷീൻ ലേണിങ്' എന്ന പദം ഇന്നത്തെ ഏറ്റവും ജനപ്രിയവും വ്യാപകമായി ഉപയോഗിക്കുന്ന പദങ്ങളിലൊന്നാണ്. നിങ്ങൾക്ക് സാങ്കേതികവിദ്യയിൽ ഏതെങ്കിലും പരിചയം ഉണ്ടെങ്കിൽ, ഈ പദം ഒരിക്കൽക്കെങ്കിലും കേട്ടിട്ടുണ്ടാകാനുള്ള സാധ്യത വളരെ കൂടുതലാണ്, നിങ്ങൾ ഏത് മേഖലയിലായാലും. എന്നാൽ മെഷീൻ ലേണിങ്ങിന്റെ യന്ത്രശാസ്ത്രം പലർക്കും രഹസ്യമാണ്. ഒരു മെഷീൻ ലേണിങ് തുടക്കക്കാരനായി, വിഷയം ചിലപ്പോൾ ഭീതിജനകമായിരിക്കാം. അതിനാൽ, മെഷീൻ ലേണിങ് എന്താണെന്ന് മനസ്സിലാക്കുകയും, പ്രായോഗിക ഉദാഹരണങ്ങളിലൂടെ ഘട്ടം ഘട്ടമായി പഠിക്കുകയും ചെയ്യുന്നത് പ്രധാനമാണ്. + +--- +## ഹൈപ്പ് കർവ് + +![ml hype curve](../../../../translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.ml.png) + +> 'machine learning' എന്ന പദത്തിന്റെ പുതിയ 'ഹൈപ്പ് കർവ്' Google ട്രെൻഡ്സ് കാണിക്കുന്നു + +--- +## ഒരു രഹസ്യമായ ബ്രഹ്മാണ്ഡം + +നാം രഹസ്യങ്ങളാൽ നിറഞ്ഞ ഒരു ബ്രഹ്മാണ്ഡത്തിൽ ജീവിക്കുന്നു. സ്റ്റീഫൻ ഹോക്കിംഗ്, ആൽബർട്ട് ഐൻസ്റ്റൈൻ തുടങ്ങിയ മഹാനായ ശാസ്ത്രജ്ഞർ ലോകത്തെ ചുറ്റിപ്പറ്റിയിരിക്കുന്ന രഹസ്യങ്ങൾ കണ്ടെത്താൻ അവരുടെ ജീവിതം സമർപ്പിച്ചിട്ടുണ്ട്. ഇത് മനുഷ്യന്റെ പഠനാവസ്ഥയാണ്: ഒരു മനുഷ്യശിശു പുതിയ കാര്യങ്ങൾ പഠിച്ച്, വളർന്ന് മുതിർന്നവനാകുമ്പോൾ അവരുടെ ലോകത്തിന്റെ ഘടന കണ്ടെത്തുന്നു. + +--- +## കുട്ടിയുടെ മസ്തിഷ്കം + +ഒരു കുട്ടിയുടെ മസ്തിഷ്കവും ഇന്ദ്രിയങ്ങളും അവരുടെ ചുറ്റുപാടുകളിലെ വാസ്തവങ്ങൾ ഗ്രഹിച്ച്, ജീവിതത്തിലെ മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ പഠിച്ച്, പഠിച്ച മാതൃകകൾ തിരിച്ചറിയാൻ തർക്കസഹിതമായ നിയമങ്ങൾ രൂപപ്പെടുത്താൻ സഹായിക്കുന്നു. മനുഷ്യ മസ്തിഷ്കത്തിന്റെ പഠന പ്രക്രിയ മനുഷ്യരെ ഈ ലോകത്തിലെ ഏറ്റവും സങ്കീർണ്ണമായ ജീവികളാക്കുന്നു. മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ കണ്ടെത്തി തുടർച്ചയായി പഠിക്കുകയും, ആ മാതൃകകളിൽ നവീകരണം നടത്തുകയും ചെയ്യുന്നത് ജീവിതകാലം മുഴുവൻ നമ്മെ മെച്ചപ്പെടുത്താൻ സഹായിക്കുന്നു. ഈ പഠന ശേഷിയും വികസന ശേഷിയും [ബ്രെയിൻ പ്ലാസ്റ്റിസിറ്റി](https://www.simplypsychology.org/brain-plasticity.html) എന്ന ആശയവുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു. ഉപരിതലമായി, മനുഷ്യ മസ്തിഷ്കത്തിന്റെ പഠന പ്രക്രിയക്കും മെഷീൻ ലേണിങ്ങിന്റെ ആശയങ്ങൾക്കും ചില പ്രചോദനാത്മക സാമ്യമുണ്ട്. + +--- +## മനുഷ്യ മസ്തിഷ്കം + +[മനുഷ്യ മസ്തിഷ്കം](https://www.livescience.com/29365-human-brain.html) യഥാർത്ഥ ലോകത്തിൽ നിന്നുള്ള കാര്യങ്ങൾ ഗ്രഹിച്ച്, ഗ്രഹിച്ച വിവരങ്ങൾ പ്രോസസ്സ് ചെയ്ത്, യുക്തിപരമായ തീരുമാനങ്ങൾ എടുക്കുകയും, സാഹചര്യങ്ങൾ അനുസരിച്ച് ചില പ്രവർത്തനങ്ങൾ നടത്തുകയും ചെയ്യുന്നു. ഇതാണ് നാം ബുദ്ധിമുട്ടോടെ പെരുമാറുന്നത് എന്ന് വിളിക്കുന്നത്. ബുദ്ധിമുട്ടോടെ പെരുമാറുന്ന പ്രക്രിയയുടെ ഒരു പകർപ്പ് യന്ത്രത്തിൽ പ്രോഗ്രാം ചെയ്യുമ്പോൾ, അതിനെ കൃത്രിമ ബുദ്ധിമുട്ട് (AI) എന്ന് വിളിക്കുന്നു. + +--- +## ചില പദങ്ങൾ + +പദങ്ങൾ ചിലപ്പോൾ ആശയക്കുഴപ്പമുണ്ടാക്കാം, എന്നാൽ മെഷീൻ ലേണിങ് (ML) കൃത്രിമ ബുദ്ധിമുട്ടിന്റെ ഒരു പ്രധാന ഉപവിഭാഗമാണ്. **ML പ്രത്യേക ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് ഗ്രഹിച്ച ഡാറ്റയിൽ നിന്ന് അർത്ഥപൂർണമായ വിവരങ്ങൾ കണ്ടെത്തുകയും മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ കണ്ടെത്തി യുക്തിപരമായ തീരുമാനമെടുക്കൽ പ്രക്രിയയെ സഹായിക്കുകയും ചെയ്യുന്നതാണ്**. + +--- +## AI, ML, ഡീപ് ലേണിങ് + +![AI, ML, deep learning, data science](../../../../translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.ml.png) + +> AI, ML, ഡീപ് ലേണിങ്, ഡാറ്റാ സയൻസ് എന്നിവയുടെ ബന്ധം കാണിക്കുന്ന ഒരു രേഖാചിത്രം. [Jen Looper](https://twitter.com/jenlooper) ഒരുക്കിയ ഇൻഫോഗ്രാഫിക്, [ഈ ഗ്രാഫിക്](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) പ്രചോദനമായി. + +--- +## പഠിക്കേണ്ട ആശയങ്ങൾ + +ഈ പാഠ്യപദ്ധതിയിൽ, ഒരു തുടക്കക്കാരൻ അറിയേണ്ട മെഷീൻ ലേണിങ്ങിന്റെ പ്രധാന ആശയങ്ങൾ മാത്രമേ ഉൾക്കൊള്ളൂ. നാം 'ക്ലാസിക്കൽ മെഷീൻ ലേണിങ്' എന്ന് വിളിക്കുന്നതിൽ പ്രധാനമായും Scikit-learn ഉപയോഗിക്കുന്നു, ഇത് അടിസ്ഥാനങ്ങൾ പഠിക്കാൻ വിദ്യാർത്ഥികൾക്ക് മികച്ച ലൈബ്രറിയാണ്. കൃത്രിമ ബുദ്ധിമുട്ട് അല്ലെങ്കിൽ ഡീപ് ലേണിങ്ങിന്റെ വ്യാപക ആശയങ്ങൾ മനസ്സിലാക്കാൻ, മെഷീൻ ലേണിങ്ങിന്റെ ശക്തമായ അടിസ്ഥാന അറിവ് അനിവാര്യമാണ്, അതിനാൽ ഞങ്ങൾ അത് ഇവിടെ നൽകാൻ ആഗ്രഹിക്കുന്നു. + +--- +## ഈ കോഴ്സിൽ നിങ്ങൾ പഠിക്കേണ്ടത്: + +- മെഷീൻ ലേണിങ്ങിന്റെ പ്രധാന ആശയങ്ങൾ +- ML-ന്റെ ചരിത്രം +- ML-നും നീതിക്കും +- റെഗ്രഷൻ ML സാങ്കേതികവിദ്യകൾ +- ക്ലാസിഫിക്കേഷൻ ML സാങ്കേതികവിദ്യകൾ +- ക്ലസ്റ്ററിംഗ് ML സാങ്കേതികവിദ്യകൾ +- നാച്ചുറൽ ലാംഗ്വേജ് പ്രോസസ്സിംഗ് ML സാങ്കേതികവിദ്യകൾ +- ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ് ML സാങ്കേതികവിദ്യകൾ +- റീ ഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിങ് +- ML-ന്റെ യഥാർത്ഥ ലോക പ്രയോഗങ്ങൾ + +--- +## നാം ഉൾക്കൊള്ളാത്തത് + +- ഡീപ് ലേണിങ് +- ന്യൂറൽ നെറ്റ്വർക്കുകൾ +- AI + +മികച്ച പഠനാനുഭവത്തിനായി, ന്യൂറൽ നെറ്റ്വർക്കുകൾ, 'ഡീപ് ലേണിങ്' - ന്യൂറൽ നെറ്റ്വർക്കുകൾ ഉപയോഗിച്ച് പലതവണ മodel നിർമ്മാണം - എന്നിവയുടെ സങ്കീർണ്ണതകൾ ഒഴിവാക്കും, AI-യും മറ്റൊരു പാഠ്യപദ്ധതിയിൽ ചർച്ച ചെയ്യും. ഈ വലിയ മേഖലയിലെ മറ്റൊരു ഭാഗമായ ഡാറ്റാ സയൻസ് പാഠ്യപദ്ധതി വരാനിരിക്കുകയാണ്. + +--- +## മെഷീൻ ലേണിങ് പഠിക്കേണ്ടത് എന്തുകൊണ്ട്? + +സിസ്റ്റംസ് കാഴ്ചപ്പാടിൽ, മെഷീൻ ലേണിങ് എന്നത് ഡാറ്റയിൽ നിന്ന് മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ പഠിച്ച് ബുദ്ധിമുട്ടുള്ള തീരുമാനങ്ങൾ എടുക്കാൻ സഹായിക്കുന്ന സ്വയം പ്രവർത്തിക്കുന്ന സിസ്റ്റങ്ങൾ സൃഷ്ടിക്കലായി നിർവചിക്കപ്പെടുന്നു. + +ഈ പ്രചോദനം മനുഷ്യ മസ്തിഷ്കം പുറത്തുള്ള ലോകത്തിൽ നിന്നുള്ള ഡാറ്റയിൽ നിന്ന് ചില കാര്യങ്ങൾ എങ്ങനെ പഠിക്കുന്നു എന്നതിൽ നിന്നാണ് സ്വതന്ത്രമായി പ്രചോദനം ലഭിക്കുന്നത്. + +✅ ഒരു ബിസിനസ്സ് മെഷീൻ ലേണിങ് തന്ത്രങ്ങൾ ഉപയോഗിക്കാൻ ആഗ്രഹിക്കുന്നതിന്റെ കാരണം എന്തെന്ന് ഒരു നിമിഷം ചിന്തിക്കുക, ഹാർഡ്-കോഡഡ് നിയമങ്ങൾ അടിസ്ഥാനമാക്കിയുള്ള എഞ്ചിൻ സൃഷ്ടിക്കുന്നതിനേക്കാൾ. + +--- +## മെഷീൻ ലേണിങ്ങിന്റെ പ്രയോഗങ്ങൾ + +ഇപ്പോൾ മെഷീൻ ലേണിങ്ങിന്റെ പ്രയോഗങ്ങൾ എല്ലായിടത്തും കാണപ്പെടുന്നു, നമ്മുടെ സമൂഹങ്ങളിൽ സ്മാർട്ട് ഫോണുകൾ, കണക്ടഡ് ഉപകരണങ്ങൾ, മറ്റ് സിസ്റ്റങ്ങൾ എന്നിവ വഴി സൃഷ്ടിക്കപ്പെടുന്ന ഡാറ്റ പോലെ വ്യാപകമാണ്. അത്യാധുനിക മെഷീൻ ലേണിങ് ആൽഗോരിതങ്ങളുടെ വലിയ സാധ്യത പരിഗണിച്ച്, ഗവേഷകർ ബഹുമാനമായ, ബഹുമുഖ, ബഹുവിഭാഗീയ യഥാർത്ഥ ജീവിത പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ അവരുടെ കഴിവ് പരിശോധിച്ചു. + +--- +## പ്രയോഗിച്ച ML-ന്റെ ഉദാഹരണങ്ങൾ + +**മെഷീൻ ലേണിങ് പലവിധത്തിൽ ഉപയോഗിക്കാം**: + +- രോഗിയുടെ മെഡിക്കൽ ചരിത്രം അല്ലെങ്കിൽ റിപ്പോർട്ടുകളിൽ നിന്നുള്ള രോഗ സാധ്യത പ്രവചിക്കാൻ. +- കാലാവസ്ഥാ ഡാറ്റ ഉപയോഗിച്ച് കാലാവസ്ഥാ സംഭവങ്ങൾ പ്രവചിക്കാൻ. +- ഒരു എഴുത്തിന്റെ മനോഭാവം മനസ്സിലാക്കാൻ. +- പ്രചാരണം തടയാൻ വ്യാജ വാർത്തകൾ കണ്ടെത്താൻ. + +ഫിനാൻസ്, സാമ്പത്തികം, ഭൂമിശാസ്ത്രം, ബഹിരാകാശ ഗവേഷണം, ബയോമെഡിക്കൽ എഞ്ചിനീയറിംഗ്, കോഗ്നിറ്റീവ് സയൻസ്, മനുഷ്യശാസ്ത്രം തുടങ്ങിയ മേഖലകൾ അവരുടെ കഠിനമായ, ഡാറ്റാ പ്രോസസ്സിംഗ് ഭാരമുള്ള പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ മെഷീൻ ലേണിങ് സ്വീകരിച്ചിട്ടുണ്ട്. + +--- +## സമാപനം + +മെഷീൻ ലേണിങ് യഥാർത്ഥ ലോകം അല്ലെങ്കിൽ സൃഷ്ടിച്ച ഡാറ്റയിൽ നിന്ന് അർത്ഥപൂർണമായ洞察ങ്ങൾ കണ്ടെത്തി മാതൃകകൾ കണ്ടെത്തുന്ന പ്രക്രിയ സ്വയം പ്രവർത്തിപ്പിക്കുന്നു. ബിസിനസ്സ്, ആരോഗ്യ, സാമ്പത്തിക പ്രയോഗങ്ങളിൽ അതിന്റെ മൂല്യം തെളിയിച്ചിട്ടുണ്ട്. + +സമീപഭാവിയിൽ, മെഷീൻ ലേണിങ്ങിന്റെ അടിസ്ഥാനങ്ങൾ മനസ്സിലാക്കുന്നത് ഏത് മേഖലയിലുള്ളവർക്കും അനിവാര്യമായിരിക്കും, അതിന്റെ വ്യാപകമായ സ്വീകരണത്തെ തുടർന്ന്. + +--- +# 🚀 ചലഞ്ച് + +കാഗിതത്തിൽ അല്ലെങ്കിൽ [Excalidraw](https://excalidraw.com/) പോലുള്ള ഓൺലൈൻ ആപ്പ് ഉപയോഗിച്ച് AI, ML, ഡീപ് ലേണിങ്, ഡാറ്റാ സയൻസ് എന്നിവയുടെ വ്യത്യാസങ്ങൾ നിങ്ങൾ എങ്ങനെ മനസ്സിലാക്കുന്നു എന്ന് രേഖപ്പെടുത്തുക. ഓരോ സാങ്കേതികവിദ്യയും പരിഹരിക്കാൻ നല്ല പ്രശ്നങ്ങളുടെ ചില ആശയങ്ങളും ചേർക്കുക. + +# [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +--- +# അവലോകനം & സ്വയം പഠനം + +ക്ലൗഡിൽ ML ആൽഗോരിതങ്ങളുമായി എങ്ങനെ പ്രവർത്തിക്കാമെന്ന് കൂടുതൽ അറിയാൻ, ഈ [Learning Path](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott) പിന്തുടരുക. + +ML അടിസ്ഥാനങ്ങളെക്കുറിച്ച് പഠിക്കാൻ ഒരു [Learning Path](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-77952-leestott) സ്വീകരിക്കുക. + +--- +# അസൈൻമെന്റ് + +[Get up and running](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ പ്രാമാണികമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/1-intro-to-ML/assignment.md b/translations/ml/1-Introduction/1-intro-to-ML/assignment.md new file mode 100644 index 000000000..c737e7b15 --- /dev/null +++ b/translations/ml/1-Introduction/1-intro-to-ML/assignment.md @@ -0,0 +1,25 @@ + +# ആരംഭിച്ച് പ്രവർത്തിക്കുക + +## നിർദ്ദേശങ്ങൾ + +ഈ ഗ്രേഡ് ഇല്ലാത്ത അസൈൻമെന്റിൽ, നിങ്ങൾ പൈത്തൺ പുനഃപരിശോധിച്ച് നിങ്ങളുടെ പരിസ്ഥിതി പ്രവർത്തനക്ഷമമാക്കി നോട്ട്‌ബുക്കുകൾ ഓടിക്കാൻ കഴിയുന്ന നിലയിൽ എത്തിക്കണം. + +ഈ [Python Learning Path](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) സ്വീകരിച്ച്, തുടർന്ന് ഈ പരിചയപരമായ വീഡിയോകൾ വഴി നിങ്ങളുടെ സിസ്റ്റങ്ങൾ സജ്ജമാക്കുക: + +https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/2-history-of-ML/README.md b/translations/ml/1-Introduction/2-history-of-ML/README.md new file mode 100644 index 000000000..dcb5f9873 --- /dev/null +++ b/translations/ml/1-Introduction/2-history-of-ML/README.md @@ -0,0 +1,167 @@ + +# മെഷീൻ ലേണിങ്ങിന്റെ ചരിത്രം + +![മെഷീൻ ലേണിങ്ങിന്റെ ചരിത്രത്തിന്റെ സംഗ്രഹം ഒരു സ്കെച്ച്നോട്ടിൽ](../../../../translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.ml.png) +> സ്കെച്ച്നോട്ട്: [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +--- + +[![ML for beginners - History of Machine Learning](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "ML for beginners - History of Machine Learning") + +> 🎥 ഈ പാഠം വിശദീകരിക്കുന്ന ഒരു ചെറിയ വീഡിയോയ്ക്ക് മുകളിൽ കാണുന്ന ചിത്രം ക്ലിക്ക് ചെയ്യുക. + +ഈ പാഠത്തിൽ, മെഷീൻ ലേണിങ്ങിന്റെയും കൃത്രിമ ബുദ്ധിമുട്ടിന്റെയും ചരിത്രത്തിലെ പ്രധാന മൈൽസ്റ്റോണുകൾ നാം പരിശോധിക്കും. + +കൃത്രിമ ബുദ്ധിമുട്ട് (AI) എന്ന മേഖലയുടെയും മെഷീൻ ലേണിങ്ങിന്റെയും ചരിത്രം പരസ്പരം ബന്ധപ്പെട്ടിരിക്കുന്നു, കാരണം ML-നെ അടിസ്ഥാനമാക്കിയുള്ള ആൽഗോരിതങ്ങളും കംപ്യൂട്ടേഷണൽ പുരോഗതികളും AI-യുടെ വികസനത്തിന് സഹായകമായിട്ടുണ്ട്. ഈ മേഖലകൾ 1950-കളിൽ വ്യക്തമായ അന്വേഷണ മേഖലകളായി രൂപപ്പെട്ടെങ്കിലും, [ആൽഗോരിത്മിക്, സാങ്കേതിക, ഗണിത, കംപ്യൂട്ടേഷണൽ, സാങ്കേതിക കണ്ടെത്തലുകൾ](https://wikipedia.org/wiki/Timeline_of_machine_learning) ഈ കാലഘട്ടത്തിന് മുമ്പും അതിനിടയിലും ഉണ്ടായിരുന്നുവെന്ന് ഓർക്കുന്നത് പ്രയോജനകരമാണ്. വാസ്തവത്തിൽ, ഈ ചോദ്യങ്ങളെക്കുറിച്ച് ആളുകൾ [നൂറുകണക്കിന് വർഷങ്ങളായി](https://wikipedia.org/wiki/History_of_artificial_intelligence) ചിന്തിച്ചുവരുന്നു: ഈ ലേഖനം 'ചിന്തിക്കുന്ന യന്ത്രം' എന്ന ആശയത്തിന്റെ ചരിത്ര ബൗദ്ധിക അടിസ്ഥാനങ്ങളെക്കുറിച്ചാണ്. + +--- +## ശ്രദ്ധേയമായ കണ്ടെത്തലുകൾ + +- 1763, 1812 [ബേസ് തിയറിം](https://wikipedia.org/wiki/Bayes%27_theorem)യും അതിന്റെ മുൻപുള്ളവയും. ഈ തിയറിവും അതിന്റെ പ്രയോഗങ്ങളും മുൻ അറിവിന്റെ അടിസ്ഥാനത്തിൽ ഒരു സംഭവത്തിന്റെ സംഭവിക്കാനുള്ള സാധ്യത വിവരിക്കുന്നു. +- 1805 ഫ്രഞ്ച് ഗണിതജ്ഞൻ Adrien-Marie Legendre നിർമിച്ച [ലീസ്റ്റ് സ്ക്വയർ തിയറി](https://wikipedia.org/wiki/Least_squares). ഈ തിയറി, ഞങ്ങളുടെ Regression യൂണിറ്റിൽ പഠിക്കപ്പെടും, ഡാറ്റ ഫിറ്റിംഗിൽ സഹായിക്കുന്നു. +- 1913 റഷ്യൻ ഗണിതജ്ഞൻ Andrey Markov-ന്റെ പേരിലുള്ള [മാർക്കോവ് ചെയിൻസ്](https://wikipedia.org/wiki/Markov_chain), മുൻസ്ഥിതിയുടെ അടിസ്ഥാനത്തിൽ സംഭവങ്ങളുടെ സീക്വൻസ് വിവരിക്കാൻ ഉപയോഗിക്കുന്നു. +- 1957 അമേരിക്കൻ മനശാസ്ത്രജ്ഞൻ Frank Rosenblatt കണ്ടുപിടിച്ച [പേഴ്സെപ്ട്രോൺ](https://wikipedia.org/wiki/Perceptron) എന്ന ലീനിയർ ക്ലാസിഫയർ, ഡീപ്പ് ലേണിങ്ങിലെ പുരോഗതിക്ക് അടിസ്ഥാനം. + +--- + +- 1967 [നീറസ്റ്റ് നെബർ](https://wikipedia.org/wiki/Nearest_neighbor) ഒരു ആൽഗോരിതം, ആദ്യം റൂട്ടുകൾ മാപ്പ് ചെയ്യാൻ രൂപകൽപ്പന ചെയ്തതായിരുന്നു. ML-ൽ ഇത് പാറ്റേണുകൾ കണ്ടെത്താൻ ഉപയോഗിക്കുന്നു. +- 1970 [ബാക്ക്‌പ്രൊപ്പഗേഷൻ](https://wikipedia.org/wiki/Backpropagation) [ഫീഡ്‌ഫോർവേഡ് ന്യൂറൽ നെറ്റ്വർക്കുകൾ](https://wikipedia.org/wiki/Feedforward_neural_network) പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്നു. +- 1982 [റികറന്റ് ന്യൂറൽ നെറ്റ്വർക്കുകൾ](https://wikipedia.org/wiki/Recurrent_neural_network) ഫീഡ്‌ഫോർവേഡ് ന്യൂറൽ നെറ്റ്വർക്കുകളിൽ നിന്നുള്ള കൃത്രിമ ന്യൂറൽ നെറ്റ്വർക്കുകൾ ആണ്, അവ താൽക്കാലിക ഗ്രാഫുകൾ സൃഷ്ടിക്കുന്നു. + +✅ ചെറിയൊരു ഗവേഷണം നടത്തുക. ML-നും AI-നും ചരിത്രത്തിൽ മറ്റേതെങ്കിലും നിർണായക തീയതികൾ എന്തെല്ലാമാണ്? + +--- +## 1950: ചിന്തിക്കുന്ന യന്ത്രങ്ങൾ + +അലൻ ട്യൂറിംഗ്, 2019-ൽ [പൊതുജനങ്ങൾ വോട്ടെഴുതിയ](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 20-ആം നൂറ്റാണ്ടിലെ ഏറ്റവും വലിയ ശാസ്ത്രജ്ഞനായി തിരഞ്ഞെടുക്കപ്പെട്ട ഒരു അത്ഭുതകരനായ വ്യക്തി, 'ചിന്തിക്കാൻ കഴിയുന്ന യന്ത്രം' എന്ന ആശയത്തിന് അടിസ്ഥാനം ഒരുക്കുന്നതിൽ സഹായിച്ചതായി കണക്കാക്കപ്പെടുന്നു. ഈ ആശയത്തിന് empirical തെളിവ് ആവശ്യമായതിനാൽ അദ്ദേഹം [ട്യൂറിംഗ് ടെസ്റ്റ്](https://www.bbc.com/news/technology-18475646) സൃഷ്ടിച്ചു, ഇത് ഞങ്ങളുടെ NLP പാഠങ്ങളിൽ നിങ്ങൾ പരിശോധിക്കും. + +--- +## 1956: ഡാർട്മൗത്ത് സമ്മർ റിസർച്ച് പ്രോജക്ട് + +"കൃത്രിമ ബുദ്ധിമുട്ട് എന്ന മേഖലയായി ഡാർട്മൗത്ത് സമ്മർ റിസർച്ച് പ്രോജക്ട് ഒരു സുപ്രധാന സംഭവമായിരുന്നു," ഇവിടെ 'കൃത്രിമ ബുദ്ധിമുട്ട്' എന്ന പദം ആദ്യമായി ഉപയോഗിക്കപ്പെട്ടു ([സ്രോതസ്സ്](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). + +> പഠനത്തിന്റെ എല്ലാ ഘടകങ്ങളും ബുദ്ധിമുട്ടിന്റെ മറ്റ് എല്ലാ സവിശേഷതകളും യന്ത്രം അനുകരിക്കാൻ കഴിയുന്ന വിധം കൃത്യമായി വിവരണം ചെയ്യാവുന്നതാണ്. + +--- + +മുൻനിര ഗവേഷകൻ, ഗണിതശാസ്ത്ര പ്രൊഫസർ ജോൺ മക്കാർത്തി, "പഠനത്തിന്റെ എല്ലാ ഘടകങ്ങളും ബുദ്ധിമുട്ടിന്റെ മറ്റ് സവിശേഷതകളും യന്ത്രം അനുകരിക്കാൻ കഴിയുന്ന വിധം കൃത്യമായി വിവരണം ചെയ്യാവുന്നതാണ്" എന്ന കണക്കുകൂട്ടലിന്റെ അടിസ്ഥാനത്തിൽ മുന്നോട്ട് പോകാൻ ആഗ്രഹിച്ചു. ഈ സമ്മേളനത്തിൽ Marvin Minsky എന്ന മറ്റൊരു പ്രമുഖനും പങ്കെടുത്തു. + +ഈ വർക്ക്‌ഷോപ്പ് "സിംബോളിക് രീതികളുടെ ഉയർച്ച, പരിമിത മേഖലകളിൽ കേന്ദ്രീകൃത സിസ്റ്റങ്ങൾ (ആദ്യ വിദഗ്ധ സിസ്റ്റങ്ങൾ), ഡെഡക്ടീവ് സിസ്റ്റങ്ങൾ എതിരായ ഇൻഡക്ടീവ് സിസ്റ്റങ്ങൾ" തുടങ്ങിയ ചർച്ചകൾ ആരംഭിക്കുകയും പ്രോത്സാഹിപ്പിക്കുകയും ചെയ്തതായി കണക്കാക്കപ്പെടുന്നു ([സ്രോതസ്സ്](https://wikipedia.org/wiki/Dartmouth_workshop)). + +--- +## 1956 - 1974: "സ്വർണകാലം" + +1950-കളിൽ നിന്ന് 1970-കളുടെ മധ്യകാലം വരെ, AI പല പ്രശ്നങ്ങളും പരിഹരിക്കുമെന്ന് വലിയ പ്രതീക്ഷ ഉണ്ടായിരുന്നു. 1967-ൽ Marvin Minsky ആത്മവിശ്വാസത്തോടെ പറഞ്ഞു: "ഒരു തലമുറക്കുള്ളിൽ ... 'കൃത്രിമ ബുദ്ധിമുട്ട്' സൃഷ്ടിക്കുന്ന പ്രശ്നം പ്രധാനമായും പരിഹരിക്കപ്പെടും." (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) + +പ്രകൃതിഭാഷാ പ്രോസസ്സിംഗ് ഗവേഷണം വളർന്നു, തിരച്ചിൽ മെച്ചപ്പെടുത്തി ശക്തിപ്പെടുത്തി, 'മൈക്രോ-വേൾഡ്' എന്ന ആശയം സൃഷ്ടിച്ചു, എളുപ്പം plain language നിർദ്ദേശങ്ങൾ ഉപയോഗിച്ച് ലളിതമായ പ്രവർത്തനങ്ങൾ പൂർത്തിയാക്കാൻ. + +--- + +ഗവൺമെന്റ് ഏജൻസികൾ ഗവേഷണത്തിന് ധനസഹായം നൽകി, കംപ്യൂട്ടേഷൻ, ആൽഗോരിതങ്ങളിൽ പുരോഗതി ഉണ്ടായി, ബുദ്ധിമുട്ടുള്ള യന്ത്രങ്ങളുടെ പ്രോട്ടോടൈപ്പുകൾ നിർമ്മിച്ചു. ചില യന്ത്രങ്ങൾ: + +* [ഷേക്കി ദി റോബോട്ട്](https://wikipedia.org/wiki/Shakey_the_robot), 'ബുദ്ധിമുട്ടോടെ' പ്രവർത്തനങ്ങൾ നിർവഹിക്കാൻ കഴിവുള്ളത്. + + ![ഷേക്കി, ഒരു ബുദ്ധിമുട്ടുള്ള റോബോട്ട്](../../../../translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.ml.jpg) + > 1972-ലെ ഷേക്കി + +--- + +* എലൈസ, ഒരു പ്രാരംഭ 'ചാറ്റർബോട്ട്', ആളുകളുമായി സംവദിക്കുകയും പ്രാഥമിക 'തെറാപ്പിസ്റ്റ്' ആയി പ്രവർത്തിക്കുകയും ചെയ്തു. NLP പാഠങ്ങളിൽ എലൈസയെക്കുറിച്ച് കൂടുതൽ പഠിക്കും. + + ![എലൈസ, ഒരു ബോട്ട്](../../../../translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.ml.png) + > എലൈസയുടെ ഒരു പതിപ്പ്, ഒരു ചാറ്റ്ബോട്ട് + +--- + +* "ബ്ലോക്ക്സ് വേൾഡ്" ഒരു മൈക്രോ-വേൾഡ് ഉദാഹരണമായിരുന്നു, ഇവിടെ ബ്ലോക്കുകൾ തട്ടി ക്രമീകരിക്കാനും യന്ത്രങ്ങളെ തീരുമാനമെടുക്കാൻ പഠിപ്പിക്കാനും പരീക്ഷണങ്ങൾ നടത്താമായിരുന്നു. [SHRDLU](https://wikipedia.org/wiki/SHRDLU) പോലുള്ള ലൈബ്രറികൾ ഉപയോഗിച്ച് ഭാഷാ പ്രോസസ്സിംഗ് മുന്നോട്ട് കൊണ്ടുപോയി. + + [![SHRDLU ഉപയോഗിച്ചുള്ള ബ്ലോക്ക്സ് വേൾഡ്](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "blocks world with SHRDLU") + + > 🎥 മുകളിൽ കാണുന്ന ചിത്രം ക്ലിക്ക് ചെയ്ത് വീഡിയോ കാണുക: SHRDLU ഉപയോഗിച്ചുള്ള ബ്ലോക്ക്സ് വേൾഡ് + +--- +## 1974 - 1980: "AI ശീതകാലം" + +1970-കളുടെ മധ്യത്തിൽ, 'ബുദ്ധിമുട്ടുള്ള യന്ത്രങ്ങൾ' നിർമ്മിക്കുന്നതിന്റെ സങ്കീർണ്ണത കുറവായി കണക്കാക്കിയതും, ലഭ്യമായ കംപ്യൂട്ട് ശക്തി പരിഗണിച്ചാൽ വാഗ്ദാനം അത്ര വലിയതല്ലെന്ന് വ്യക്തമായിരുന്നു. ധനസഹായം കുറഞ്ഞു, മേഖലയിലെ ആത്മവിശ്വാസം മന്ദഗതിയിലായി. ആത്മവിശ്വാസത്തെ ബാധിച്ച ചില പ്രശ്നങ്ങൾ: + +--- +- **പരിമിതികൾ**. കംപ്യൂട്ട് ശക്തി വളരെ പരിമിതമായിരുന്നു. +- **കമ്പിനേറ്റോറിയൽ എക്സ്പ്ലോഷൻ**. കംപ്യൂട്ടറുകളിൽ കൂടുതൽ ആവശ്യങ്ങൾ വന്നപ്പോൾ പരിശീലിക്കേണ്ട പാരാമീറ്ററുകളുടെ എണ്ണം വൻപരിധിയിലേയ്ക്ക് വളർന്നു, കംപ്യൂട്ട് ശക്തിയും കഴിവും അതുപോലെ വളർന്നില്ല. +- **ഡാറ്റയുടെ കുറവ്**. പരീക്ഷണങ്ങൾ, വികസനം, ആൽഗോരിതം മെച്ചപ്പെടുത്തൽ എന്നിവയ്ക്ക് ആവശ്യമായ ഡാറ്റ കുറവായിരുന്നു. +- **നാം ശരിയായ ചോദ്യങ്ങൾ ചോദിക്കുന്നുണ്ടോ?**. ചോദിക്കുന്ന ചോദ്യങ്ങൾ തന്നെ സംശയാസ്പദമായി മാറി. ഗവേഷകർക്ക് അവരുടെ സമീപനങ്ങളെക്കുറിച്ച് വിമർശനങ്ങൾ നേരിടേണ്ടി വന്നു: + - ട്യൂറിംഗ് ടെസ്റ്റുകൾ 'ചൈനീസ് റൂം തിയറി' പോലുള്ള ആശയങ്ങളാൽ ചോദ്യം ചെയ്യപ്പെട്ടു, ഇതിൽ "ഡിജിറ്റൽ കംപ്യൂട്ടർ പ്രോഗ്രാമിംഗ് ഭാഷ മനസ്സിലാക്കുന്ന പോലെ തോന്നിക്കാമെങ്കിലും യഥാർത്ഥ മനസ്സിലാക്കൽ ഉണ്ടാകില്ല" എന്ന് വാദിച്ചു. ([സ്രോതസ്സ്](https://plato.stanford.edu/entries/chinese-room/)) + - "തെറാപ്പിസ്റ്റ്" എലൈസ പോലുള്ള കൃത്രിമ ബുദ്ധിമുട്ടുകൾ സമൂഹത്തിൽ പരിചയപ്പെടുത്തുന്നതിന്റെ നൈതികത ചോദ്യം ചെയ്യപ്പെട്ടു. + +--- + +അതേസമയം, വിവിധ AI ചിന്താശാഖകൾ രൂപപ്പെട്ടു. ["സ്ക്രഫി" vs. "നീറ്റ് AI"](https://wikipedia.org/wiki/Neats_and_scruffies) എന്ന വ്യത്യാസം സ്ഥാപിച്ചു. _സ്ക്രഫി_ ലാബുകൾ മണിക്കൂറുകൾക്കായി പ്രോഗ്രാമുകൾ തിരുത്തി ആവശ്യമായ ഫലങ്ങൾ നേടാൻ ശ്രമിച്ചു. _നീറ്റ്_ ലാബുകൾ "ലോജിക്, ഔപചാരിക പ്രശ്നപരിഹാരത്തിൽ" കേന്ദ്രീകരിച്ചു. എലൈസയും SHRDLUയും പ്രശസ്തമായ _സ്ക്രഫി_ സിസ്റ്റങ്ങളായിരുന്നു. 1980-കളിൽ ML സിസ്റ്റങ്ങൾ പുനരുത്പാദനയോഗ്യമാക്കേണ്ട ആവശ്യം ഉയർന്നപ്പോൾ, _നീറ്റ്_ സമീപനം മുൻപന്തിയിലായി, കാരണം അതിന്റെ ഫലങ്ങൾ കൂടുതൽ വിശദീകരിക്കാവുന്നതായിരുന്നു. + +--- +## 1980-കൾ വിദഗ്ധ സിസ്റ്റങ്ങൾ + +മേഖല വളർന്നതോടെ, ബിസിനസിന് ഇതിന്റെ പ്രയോജനം വ്യക്തമായി, 1980-കളിൽ 'വിദഗ്ധ സിസ്റ്റങ്ങൾ' വ്യാപിച്ചു. "വിദഗ്ധ സിസ്റ്റങ്ങൾ കൃത്രിമ ബുദ്ധിമുട്ടിന്റെ ആദ്യത്തെ വിജയകരമായ സോഫ്റ്റ്‌വെയർ രൂപങ്ങളിലൊന്നായിരുന്നു." ([സ്രോതസ്സ്](https://wikipedia.org/wiki/Expert_system)). + +ഈ സിസ്റ്റങ്ങൾ ഭാഗികമായി നിയമങ്ങൾ നിർവചിക്കുന്ന ഒരു റൂൾസ് എഞ്ചിനും, പുതിയ വസ്തുതകൾ കണ്ടെത്താൻ റൂൾസ് സിസ്റ്റം ഉപയോഗിക്കുന്ന ഇൻഫറൻസ് എഞ്ചിനും ചേർന്ന _ഹൈബ്രിഡ്_ ആണ്. + +ഈ കാലഘട്ടത്തിൽ ന്യൂറൽ നെറ്റ്വർക്കുകൾക്ക് കൂടുതൽ ശ്രദ്ധ ലഭിച്ചു. + +--- +## 1987 - 1993: AI 'ചില്ല്' + +വിദഗ്ധ സിസ്റ്റങ്ങൾക്കായുള്ള പ്രത്യേക ഹാർഡ്‌വെയർ വളരെ പ്രത്യേകതയുള്ളതായതിനാൽ അതിന്റെ വ്യാപനം കുറവായി. പേഴ്സണൽ കംപ്യൂട്ടറുകളുടെ ഉയർച്ചയും ഈ വലിയ, പ്രത്യേക, കേന്ദ്രകൃത സിസ്റ്റങ്ങളുമായി മത്സരം നടത്തി. കംപ്യൂട്ടിങ്ങിന്റെ ജനാധിപത്യവൽക്കരണം ആരംഭിച്ചു, ഇത് പിന്നീട് ബിഗ് ഡാറ്റയുടെ ആധുനിക പൊട്ടിപ്പുറത്തലിന് വഴിതെളിച്ചു. + +--- +## 1993 - 2011 + +ഈ കാലഘട്ടം ML-നും AI-നും മുമ്പ് ഡാറ്റയും കംപ്യൂട്ട് ശക്തിയും കുറവായതിനാൽ ഉണ്ടായ പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ പുതിയ കാലഘട്ടമായി. ഡാറ്റയുടെ അളവ് വേഗത്തിൽ വർദ്ധിച്ചു, പ്രത്യേകിച്ച് 2007-ൽ സ്മാർട്ട്ഫോൺ വന്നതോടെ കൂടുതൽ ലഭ്യമായി. കംപ്യൂട്ട് ശക്തി വൻപരിധിയിലേയ്ക്ക് വളർന്നു, ആൽഗോരിതങ്ങളും അതിനൊപ്പം വികസിച്ചു. ഈ മേഖല വളർച്ചയുടെ പാതയിൽ കടന്നു, മുൻകാല സ്വതന്ത്രമായ കാലങ്ങൾ ഒരു സത്യമായ ശാസ്ത്രശാഖയായി രൂപപ്പെട്ടു. + +--- +## ഇപ്പോൾ + +ഇന്ന് മെഷീൻ ലേണിങ്ങും AI-യും നമ്മുടെ ജീവിതത്തിന്റെ എല്ലാ ഭാഗത്തും സ്പർശിക്കുന്നു. ഈ കാലഘട്ടം ഈ ആൽഗോരിതങ്ങൾ മനുഷ്യജീവിതങ്ങളിൽ ഉണ്ടാക്കുന്ന അപകടങ്ങളും സാധ്യതകളും സൂക്ഷ്മമായി മനസ്സിലാക്കേണ്ടതാണ്. മൈക്രോസോഫ്റ്റിന്റെ ബ്രാഡ് സ്മിത്ത് പറഞ്ഞതുപോലെ, "ഇൻഫർമേഷൻ ടെക്നോളജി സ്വകാര്യതയും അഭിപ്രായ സ്വാതന്ത്ര്യവും പോലുള്ള അടിസ്ഥാന മനുഷ്യാവകാശ സംരക്ഷണങ്ങളുടെ ഹൃദയത്തെ ബാധിക്കുന്ന പ്രശ്നങ്ങൾ ഉയർത്തുന്നു. ഈ ഉൽപ്പന്നങ്ങൾ സൃഷ്ടിക്കുന്ന ടെക് കമ്പനികൾക്ക് കൂടുതൽ ഉത്തരവാദിത്വം ഉണ്ട്. ഞങ്ങളുടെ കാഴ്ചപ്പാടിൽ, ഇത് ചിന്താപൂർവ്വകമായ സർക്കാർ നിയന്ത്രണവും അംഗീകരിക്കാവുന്ന ഉപയോഗങ്ങൾക്കുള്ള മാനദണ്ഡങ്ങളുടെ വികസനവും ആവശ്യമാണ്" ([സ്രോതസ്സ്](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). + +--- + +ഭാവി എന്ത് കൊണ്ടുവരുമെന്ന് കാണേണ്ടതാണ്, എന്നാൽ ഈ കംപ്യൂട്ടർ സിസ്റ്റങ്ങളും അവ പ്രവർത്തിപ്പിക്കുന്ന സോഫ്റ്റ്‌വെയറും ആൽഗോരിതങ്ങളും മനസ്സിലാക്കുന്നത് പ്രധാനമാണ്. നിങ്ങൾക്ക് മികച്ച മനസ്സിലാക്കൽ നേടാൻ ഈ പാഠ്യപദ്ധതി സഹായിക്കുമെന്ന് ഞങ്ങൾ പ്രതീക്ഷിക്കുന്നു. + +[![ഡീപ്പ് ലേണിങ്ങിന്റെ ചരിത്രം](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "The history of deep learning") +> 🎥 മുകളിൽ കാണുന്ന ചിത്രം ക്ലിക്ക് ചെയ്ത് വീഡിയോ കാണുക: ഈ ലെക്ചറിൽ Yann LeCun ഡീപ്പ് ലേണിങ്ങിന്റെ ചരിത്രം വിശദീകരിക്കുന്നു + +--- +## 🚀ചലഞ്ച് + +ഈ ചരിത്രപരമായ ഒരു ഘട്ടത്തിൽ കൂടുതൽ പഠിച്ച് അവയുടെ പിന്നിലെ ആളുകളെക്കുറിച്ച് അറിയുക. അത്ഭുതകരമായ കഥാപാത്രങ്ങളുണ്ട്, ശാസ്ത്രീയ കണ്ടെത്തലുകൾ സാംസ്കാരിക ശൂന്യതയിൽ സൃഷ്ടിക്കപ്പെട്ടിട്ടില്ല. നിങ്ങൾ എന്ത് കണ്ടെത്തുന്നു? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +--- +## അവലോകനം & സ്വയം പഠനം + +കാണാനും കേൾക്കാനും ഉള്ളവ: + +[AI-യുടെ വികാസത്തെക്കുറിച്ച് Amy Boyd സംസാരിക്കുന്ന പോഡ്കാസ്റ്റ്](http://runasradio.com/Shows/Show/739) + +[![Amy Boyd-യുടെ AI ചരിത്രം](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "The history of AI by Amy Boyd") + +--- + +## അസൈൻമെന്റ് + +[ടൈംലൈൻ സൃഷ്ടിക്കുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/2-history-of-ML/assignment.md b/translations/ml/1-Introduction/2-history-of-ML/assignment.md new file mode 100644 index 000000000..1a6caa3f0 --- /dev/null +++ b/translations/ml/1-Introduction/2-history-of-ML/assignment.md @@ -0,0 +1,27 @@ + +# ഒരു ടൈംലൈൻ സൃഷ്ടിക്കുക + +## നിർദ്ദേശങ്ങൾ + +[ഈ റിപോ](https://github.com/Digital-Humanities-Toolkit/timeline-builder) ഉപയോഗിച്ച് ആൽഗോരിതങ്ങൾ, ഗണിതം, സ്ഥിതിവിവരശാസ്ത്രം, എഐ, അല്ലെങ്കിൽ എംഎൽ എന്നിവയുടെ ചരിത്രത്തിലെ ഏതെങ്കിലും ഒരു വശത്തിന്റെ ടൈംലൈൻ സൃഷ്ടിക്കുക, അല്ലെങ്കിൽ ഇവയുടെ സംയോജനം. നിങ്ങൾക്ക് ഒരു വ്യക്തിയെയോ, ഒരു ആശയത്തെയോ, അല്ലെങ്കിൽ ദീർഘകാല ചിന്താവിഷയത്തെയോ കേന്ദ്രീകരിക്കാം. മൾട്ടിമീഡിയ ഘടകങ്ങൾ ചേർക്കാൻ ശ്രദ്ധിക്കുക. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണാർത്ഥം | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- | +| | GitHub പേജായി വിന്യസിച്ച ടൈംലൈൻ അവതരിപ്പിച്ചിരിക്കുന്നു | കോഡ് അപൂർണ്ണമാണ്, വിന്യസിച്ചിട്ടില്ല | ടൈംലൈൻ അപൂർണ്ണമാണ്, നന്നായി ഗവേഷണം ചെയ്തിട്ടില്ല, വിന്യസിച്ചിട്ടില്ല | + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/3-fairness/README.md b/translations/ml/1-Introduction/3-fairness/README.md new file mode 100644 index 000000000..de9a998d9 --- /dev/null +++ b/translations/ml/1-Introduction/3-fairness/README.md @@ -0,0 +1,172 @@ + +# ഉത്തരവാദിത്വമുള്ള AI ഉപയോഗിച്ച് മെഷീൻ ലേണിംഗ് പരിഹാരങ്ങൾ നിർമ്മിക്കൽ + +![Summary of responsible AI in Machine Learning in a sketchnote](../../../../translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.ml.png) +> സ്കെച്ച്നോട്ട്: [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## പരിചയം + +ഈ പാഠ്യപദ്ധതിയിൽ, മെഷീൻ ലേണിംഗ് എങ്ങനെ നമ്മുടെ ദൈനംദിന ജീവിതത്തെ ബാധിക്കുന്നു എന്ന് നിങ്ങൾ കണ്ടെത്താൻ തുടങ്ങും. ഇപ്പോഴും, ആരോഗ്യപരിശോധനകൾ, വായ്പാ അംഗീകാരം, തട്ടിപ്പ് കണ്ടെത്തൽ തുടങ്ങിയ ദൈനംദിന തീരുമാനങ്ങളിൽ സിസ്റ്റങ്ങളും മോഡലുകളും പങ്കാളികളാണ്. അതിനാൽ, ഈ മോഡലുകൾ വിശ്വസനീയമായ ഫലങ്ങൾ നൽകാൻ നല്ല രീതിയിൽ പ്രവർത്തിക്കണം. ഏതൊരു സോഫ്റ്റ്‌വെയർ ആപ്ലിക്കേഷനുപോലെ, AI സിസ്റ്റങ്ങൾ പ്രതീക്ഷകൾ പാലിക്കാതിരിക്കുകയോ അനിഷ്ടഫലങ്ങൾ ഉണ്ടാകുകയോ ചെയ്യാം. അതുകൊണ്ടുതന്നെ AI മോഡലിന്റെ പെരുമാറ്റം മനസ്സിലാക്കാനും വിശദീകരിക്കാനും കഴിയുന്നത് അനിവാര്യമാണ്. + +നിങ്ങൾ ഈ മോഡലുകൾ നിർമ്മിക്കാൻ ഉപയോഗിക്കുന്ന ഡാറ്റയിൽ ജാതി, ലിംഗം, രാഷ്ട്രീയ കാഴ്ചപ്പാട്, മതം പോലുള്ള ചില ജനസംഖ്യാ വിഭാഗങ്ങൾ ഇല്ലാതിരുന്നാൽ എന്ത് സംഭവിക്കും എന്ന് കണക്കാക്കുക. മോഡലിന്റെ ഫലം ചില ജനസംഖ്യാ വിഭാഗങ്ങളെ അനുകൂലിക്കുന്നതായി വ്യാഖ്യാനിക്കപ്പെടുമ്പോൾ എന്ത് സംഭവിക്കും? ആപ്ലിക്കേഷനിൽ അതിന്റെ പ്രത്യാഘാതം എന്താകും? കൂടാതെ, മോഡലിന് അനിഷ്ടഫലം ഉണ്ടാകുകയും അത് ആളുകൾക്ക് ഹാനികരമായിരിക്കുകയുമെങ്കിൽ എന്ത് സംഭവിക്കും? AI സിസ്റ്റത്തിന്റെ പെരുമാറ്റത്തിന് ആരാണ് ഉത്തരവാദി? ഈ പാഠ്യപദ്ധതിയിൽ നാം ഈ ചോദ്യങ്ങൾ പരിശോധിക്കും. + +ഈ പാഠത്തിൽ നിങ്ങൾ: + +- മെഷീൻ ലേണിംഗിൽ നീതിയുടെ പ്രാധാന്യവും നീതിയുമായി ബന്ധപ്പെട്ട ഹാനികരമായ കാര്യങ്ങളും മനസ്സിലാക്കും. +- വിശ്വാസ്യതയും സുരക്ഷയും ഉറപ്പാക്കാൻ അസാധാരണ സാഹചര്യങ്ങളും ഔട്ട്‌ലൈയർമാരും പരിശോധിക്കുന്ന പ്രക്രിയയെ പരിചയപ്പെടും. +- ഉൾക്കൊള്ളുന്ന സിസ്റ്റങ്ങൾ രൂപകൽപ്പന ചെയ്ത് എല്ലാവരെയും ശക്തിപ്പെടുത്തേണ്ടതിന്റെ ആവശ്യകത മനസ്സിലാക്കും. +- ഡാറ്റയുടെയും ആളുകളുടെയും സ്വകാര്യതയും സുരക്ഷയും സംരക്ഷിക്കുന്നതിന്റെ പ്രാധാന്യം അന്വേഷിക്കും. +- AI മോഡലുകളുടെ പെരുമാറ്റം വിശദീകരിക്കാൻ ഗ്ലാസ് ബോക്സ് സമീപനത്തിന്റെ പ്രാധാന്യം കാണും. +- AI സിസ്റ്റങ്ങളിൽ വിശ്വാസം സൃഷ്ടിക്കാൻ ഉത്തരവാദിത്വം അനിവാര്യമാണെന്ന് ശ്രദ്ധിക്കും. + +## മുൻകൂട്ടി അറിയേണ്ടത് + +മുൻകൂട്ടി, "ഉത്തരവാദിത്വമുള്ള AI സിദ്ധാന്തങ്ങൾ" എന്ന ലേണിംഗ് പാത പിന്തുടർന്ന് താഴെ കൊടുത്തിരിക്കുന്ന വീഡിയോ കാണുക: + +ഉത്തരവാദിത്വമുള്ള AIയെക്കുറിച്ച് കൂടുതൽ അറിയാൻ ഈ [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) പിന്തുടരുക + +[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") + +> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: Microsoft's Approach to Responsible AI + +## നീതി + +AI സിസ്റ്റങ്ങൾ എല്ലാവരോടും നീതിപൂർവ്വം പെരുമാറണം, സമാനമായ ജനസംഖ്യാ വിഭാഗങ്ങളെ വ്യത്യസ്തമായി ബാധിക്കരുത്. ഉദാഹരണത്തിന്, മെഡിക്കൽ ചികിത്സ, വായ്പാ അപേക്ഷകൾ, തൊഴിൽ സംബന്ധിച്ച നിർദ്ദേശങ്ങൾ നൽകുമ്പോൾ, സമാന ലക്ഷണങ്ങൾ, സാമ്പത്തിക സാഹചര്യങ്ങൾ, പ്രൊഫഷണൽ യോഗ്യതകൾ ഉള്ള എല്ലാവർക്കും ഒരേ നിർദ്ദേശങ്ങൾ നൽകണം. ഓരോ മനുഷ്യനും അവന്റെ തീരുമാനങ്ങളിലും പ്രവർത്തനങ്ങളിലും സ്വാധീനം ചെലുത്തുന്ന പാരമ്പര്യ പൂർവ്വഗതമായ മുൻഗണനകൾ (ബയാസുകൾ) ഉണ്ട്. ഈ ബയാസുകൾ AI സിസ്റ്റങ്ങൾ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ഡാറ്റയിൽ പ്രത്യക്ഷപ്പെടാം. ചിലപ്പോൾ ഇത് അനായാസം സംഭവിക്കാം. ഡാറ്റയിൽ ബയാസ് ചേർക്കുമ്പോൾ അത് മനസ്സിലാക്കുക പ്രയാസമാണ്. + +**“അനീതിയുള്ളത്”** എന്നത് ഒരു ജനസംഖ്യാ വിഭാഗത്തിന് (ജാതി, ലിംഗം, പ്രായം, അശക്തി നില തുടങ്ങിയ അടിസ്ഥാനത്തിൽ) ഉണ്ടാകുന്ന നെഗറ്റീവ് പ്രഭാവങ്ങളെയോ “ഹാനികളെയോ” ഉൾക്കൊള്ളുന്നു. പ്രധാന നീതി സംബന്ധമായ ഹാനികൾ താഴെപ്പറയുന്നവയായി വർഗ്ഗീകരിക്കാം: + +- **വിതരണം**: ഉദാഹരണത്തിന്, ഒരു ലിംഗം അല്ലെങ്കിൽ ജാതി മറ്റൊരാളേക്കാൾ മുൻഗണന ലഭിക്കുന്നത്. +- **സേവന ഗുണമേന്മ**: ഒരു പ്രത്യേക സാഹചര്യത്തിനായി ഡാറ്റ പരിശീലിപ്പിച്ചാൽ, യാഥാർത്ഥ്യം കൂടുതൽ സങ്കീർണ്ണമായിരിക്കുമ്പോൾ, സേവനം മോശമായി പ്രവർത്തിക്കും. ഉദാഹരണത്തിന്, കറുത്ത ത്വക്കുള്ള ആളുകളെ തിരിച്ചറിയാൻ കഴിയാത്ത കൈ സോപ്പ് ഡിസ്പെൻസർ. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **അവമാനനം**: അനീതിയായി വിമർശിക്കുകയും ലേബൽ ചെയ്യുകയും ചെയ്യുക. ഉദാഹരണത്തിന്, കറുത്ത ത്വക്കുള്ള ആളുകളുടെ ചിത്രങ്ങളെ ഗൊറില്ലകളായി തെറ്റായി ലേബൽ ചെയ്ത ചിത്രം തിരിച്ചറിയൽ സാങ്കേതികവിദ്യ. +- **അധികം അല്ലെങ്കിൽ കുറവ് പ്രതിനിധാനം**: ഒരു പ്രത്യേക വിഭാഗം ഒരു തൊഴിൽ മേഖലയിൽ കാണപ്പെടാത്തത്, അതുപോലെ സേവനങ്ങൾ അതിനെ പ്രോത്സാഹിപ്പിക്കുന്നത് ഹാനികരമാണ്. +- **സ്റ്റീരിയോടൈപ്പിംഗ്**: ഒരു വിഭാഗത്തെ മുൻകൂട്ടി നിശ്ചയിച്ച ഗുണങ്ങളുമായി ബന്ധിപ്പിക്കൽ. ഉദാഹരണത്തിന്, ഇംഗ്ലീഷ്-ടർക്കിഷ് ഭാഷാ പരിഭാഷാ സിസ്റ്റത്തിൽ ലിംഗത്തോട് ബന്ധപ്പെട്ട സ്റ്റീരിയോടൈപ്പിക്കൽ വാക്കുകൾ മൂലം തെറ്റുകൾ ഉണ്ടാകാം. + +![translation to Turkish](../../../../translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.ml.png) +> ടർക്കിഷിലേക്ക് വിവർത്തനം + +![translation back to English](../../../../translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.ml.png) +> ഇംഗ്ലീഷിലേക്ക് തിരിച്ചുവിവർത്തനം + +AI സിസ്റ്റങ്ങൾ രൂപകൽപ്പന ചെയ്യുമ്പോഴും പരീക്ഷിക്കുമ്പോഴും, AI നീതിപൂർവ്വം പ്രവർത്തിക്കുന്നതും ബയാസോ വിവേചനപരമായ തീരുമാനങ്ങൾ എടുക്കാതിരിക്കുകയുമാണ് ഉറപ്പാക്കേണ്ടത്, മനുഷ്യർക്കും ഇത് ചെയ്യാൻ അനുവദനീയമല്ല. AI-യിലും മെഷീൻ ലേണിംഗിലും നീതി ഉറപ്പാക്കൽ ഒരു സങ്കീർണ്ണമായ സാമൂഹ്യ സാങ്കേതിക വെല്ലുവിളിയാണ്. + +### വിശ്വാസ്യതയും സുരക്ഷയും + +വിശ്വാസം സൃഷ്ടിക്കാൻ, AI സിസ്റ്റങ്ങൾ സാധാരണവും അപ്രതീക്ഷിതവുമായ സാഹചര്യങ്ങളിൽ വിശ്വസനീയവും സുരക്ഷിതവുമായിരിക്കണം. AI സിസ്റ്റുകൾ വ്യത്യസ്ത സാഹചര്യങ്ങളിൽ എങ്ങനെ പെരുമാറും എന്ന് അറിയുന്നത് പ്രധാനമാണ്, പ്രത്യേകിച്ച് അവ ഔട്ട്‌ലൈയർമാരായപ്പോൾ. AI പരിഹാരങ്ങൾ നിർമ്മിക്കുമ്പോൾ, AI പരിഹാരങ്ങൾ നേരിടുന്ന വ്യത്യസ്ത സാഹചര്യങ്ങളെ കൈകാര്യം ചെയ്യുന്നതിൽ വലിയ ശ്രദ്ധ വേണം. ഉദാഹരണത്തിന്, സ്വയം ഓടുന്ന കാറിന് ആളുകളുടെ സുരക്ഷ മുൻഗണനയായി വേണം. അതിനാൽ, കാറിന്റെ AI എല്ലാ സാധ്യതയുള്ള സാഹചര്യങ്ങളും പരിഗണിക്കണം: രാത്രി, മിന്നൽമേഘങ്ങൾ, മഞ്ഞുവീഴ്ച, കുട്ടികൾ റോഡിൽ ഓടുന്നത്, മൃഗങ്ങൾ, റോഡ് നിർമ്മാണം തുടങ്ങിയവ. ഒരു AI സിസ്റ്റം എത്രത്തോളം വിശ്വസനീയവും സുരക്ഷിതവുമായും വ്യത്യസ്ത സാഹചര്യങ്ങൾ കൈകാര്യം ചെയ്യുന്നു എന്നത് ഡാറ്റ സയന്റിസ്റ്റും AI ഡെവലപ്പറും ഡിസൈൻ അല്ലെങ്കിൽ ടെസ്റ്റിംഗിൽ എത്രത്തോളം മുൻകൂട്ടി കണക്കാക്കിയതിന്റെ സൂചകമാണ്. + +> [🎥 വീഡിയോക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) + +### ഉൾക്കൊള്ളൽ + +AI സിസ്റ്റങ്ങൾ എല്ലാവരെയും ഉൾക്കൊള്ളുകയും ശക്തിപ്പെടുത്തുകയും ചെയ്യുന്നതായി രൂപകൽപ്പന ചെയ്യണം. AI സിസ്റ്റങ്ങൾ രൂപകൽപ്പന ചെയ്യുമ്പോൾ, ഡാറ്റ സയന്റിസ്റ്റുകളും AI ഡെവലപ്പർമാരും അനായാസം ആളുകളെ ഒഴിവാക്കാൻ ഇടയുണ്ടാകുന്ന തടസ്സങ്ങൾ കണ്ടെത്തി പരിഹരിക്കും. ഉദാഹരണത്തിന്, ലോകത്ത് 1 ബില്യൺ അശക്തരുണ്ട്. AI പുരോഗമനത്തോടെ, അവർക്ക് അവരുടെ ദൈനംദിന ജീവിതത്തിൽ കൂടുതൽ എളുപ്പത്തിൽ വിവരങ്ങളും അവസരങ്ങളും ലഭിക്കും. തടസ്സങ്ങൾ പരിഹരിക്കുന്നത് എല്ലാവർക്കും ഗുണകരമായ മികച്ച അനുഭവങ്ങളുള്ള AI ഉൽപ്പന്നങ്ങൾ വികസിപ്പിക്കാൻ അവസരം സൃഷ്ടിക്കുന്നു. + +> [🎥 വീഡിയോക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക: inclusiveness in AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) + +### സുരക്ഷയും സ്വകാര്യതയും + +AI സിസ്റ്റങ്ങൾ സുരക്ഷിതവും ആളുകളുടെ സ്വകാര്യത മാനിക്കുന്നതുമായിരിക്കണം. ആളുകൾ അവരുടെ സ്വകാര്യത, വിവരങ്ങൾ, ജീവൻ അപകടത്തിലാക്കുന്ന സിസ്റ്റങ്ങളിൽ കുറവ് വിശ്വാസം കാണിക്കുന്നു. മെഷീൻ ലേണിംഗ് മോഡലുകൾ പരിശീലിപ്പിക്കുമ്പോൾ, മികച്ച ഫലങ്ങൾ ലഭിക്കാൻ ഡാറ്റയിൽ ആശ്രയിക്കുന്നു. അതിനാൽ, ഡാറ്റയുടെ ഉറവിടവും അഖണ്ഡതയും പരിഗണിക്കണം. ഉദാഹരണത്തിന്, ഡാറ്റ ഉപയോക്താവ് സമർപ്പിച്ചതാണോ പൊതുവായി ലഭ്യമായതാണോ? തുടർന്ന്, ഡാറ്റ ഉപയോഗിക്കുമ്പോൾ, രഹസ്യ വിവരങ്ങൾ സംരക്ഷിക്കുകയും ആക്രമണങ്ങൾ പ്രതിരോധിക്കുകയും ചെയ്യുന്ന AI സിസ്റ്റങ്ങൾ വികസിപ്പിക്കുന്നത് അനിവാര്യമാണ്. AI വ്യാപകമാകുമ്പോൾ, സ്വകാര്യത സംരക്ഷിക്കുകയും വ്യക്തിഗതവും ബിസിനസ്സ് വിവരങ്ങളും സുരക്ഷിതമാക്കുകയും ചെയ്യുന്നത് കൂടുതൽ പ്രധാനവും സങ്കീർണ്ണവുമാണ്. AI-യ്ക്ക് ഡാറ്റ ലഭ്യമാകുന്നത് കൃത്യമായ പ്രവചനങ്ങളും തീരുമാനങ്ങളും എടുക്കാൻ അനിവാര്യമായതിനാൽ, സ്വകാര്യതയും ഡാറ്റ സുരക്ഷയും പ്രത്യേക ശ്രദ്ധ ആവശ്യമാണ്. + +> [🎥 വീഡിയോക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക: security in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) + +- വ്യവസായമായി, GDPR പോലുള്ള നിയമങ്ങൾ മൂലം സ്വകാര്യതയും സുരക്ഷയും മേഖലയിൽ വലിയ പുരോഗതി ഉണ്ടായി. +- AI സിസ്റ്റങ്ങളിൽ, വ്യക്തിഗത ഡാറ്റ കൂടുതൽ ആവശ്യമായതിനും സ്വകാര്യതയ്ക്കും ഇടയിലുള്ള സംഘർഷം അംഗീകരിക്കണം. +- ഇന്റർനെറ്റുമായി കണക്ടഡ് കമ്പ്യൂട്ടറുകളുടെ ഉദയം പോലെ, AI-യുമായി ബന്ധപ്പെട്ട സുരക്ഷാ പ്രശ്നങ്ങളും വർധിക്കുന്നു. +- അതേസമയം, സുരക്ഷ മെച്ചപ്പെടുത്താൻ AI ഉപയോഗിക്കുന്നതും കാണുന്നു. ഉദാഹരണത്തിന്, ഇന്ന് മിക്ക ആധുനിക ആന്റി-വൈറസ് സ്കാനറുകളും AI ഹ്യൂറിസ്റ്റിക്സിൽ പ്രവർത്തിക്കുന്നു. +- ഡാറ്റ സയൻസ് പ്രക്രിയകൾ ഏറ്റവും പുതിയ സ്വകാര്യതയും സുരക്ഷാ പ്രാക്ടീസുകളും ചേർന്ന് പ്രവർത്തിക്കണം. + +### പാരദർശിത്വം + +AI സിസ്റ്റങ്ങൾ മനസ്സിലാക്കാവുന്നതായിരിക്കണം. പാരദർശിത്വത്തിന്റെ പ്രധാന ഭാഗം AI സിസ്റ്റങ്ങളുടെ പെരുമാറ്റവും അവയുടെ ഘടകങ്ങളും വിശദീകരിക്കലാണ്. AI സിസ്റ്റങ്ങൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു, എന്തുകൊണ്ട് പ്രവർത്തിക്കുന്നു എന്ന് പങ്കാളികൾ മനസ്സിലാക്കണം, അതിലൂടെ പ്രകടന പ്രശ്നങ്ങൾ, സുരക്ഷാ, സ്വകാര്യതാ ആശങ്കകൾ, ബയാസുകൾ, ഒഴിവാക്കൽ പ്രക്രിയകൾ, അനിഷ്ടഫലങ്ങൾ തിരിച്ചറിയാൻ കഴിയും. AI സിസ്റ്റങ്ങൾ ഉപയോഗിക്കുന്നവർ അവ എപ്പോൾ, എന്തുകൊണ്ട്, എങ്ങനെ ഉപയോഗിക്കുന്നു എന്ന് സത്യസന്ധമായി അറിയിക്കണം. ഉപയോഗിക്കുന്ന സിസ്റ്റങ്ങളുടെ പരിമിതികളും വ്യക്തമാക്കണം. ഉദാഹരണത്തിന്, ഒരു ബാങ്ക് ഉപഭോക്തൃ വായ്പാ തീരുമാനങ്ങൾക്ക് AI സിസ്റ്റം ഉപയോഗിക്കുമ്പോൾ, ഫലങ്ങൾ പരിശോധിച്ച് ഏത് ഡാറ്റ സിസ്റ്റത്തിന്റെ നിർദ്ദേശങ്ങളെ സ്വാധീനിക്കുന്നു എന്ന് മനസ്സിലാക്കണം. സർക്കാർ വ്യവസായങ്ങളിൽ AI നിയന്ത്രിക്കാൻ തുടങ്ങുന്നു, അതിനാൽ ഡാറ്റ സയന്റിസ്റ്റുകളും സംഘടനകളും AI സിസ്റ്റം നിയമാനുസൃതമാണോ എന്ന് വിശദീകരിക്കണം, പ്രത്യേകിച്ച് അനിഷ്ടഫലം ഉണ്ടാകുമ്പോൾ. + +> [🎥 വീഡിയോക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക: transparency in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) + +- AI സിസ്റ്റങ്ങൾ വളരെ സങ്കീർണ്ണമായതിനാൽ അവ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് മനസ്സിലാക്കാനും ഫലങ്ങൾ വ്യാഖ്യാനിക്കാനും ബുദ്ധിമുട്ടാണ്. +- ഈ മനസ്സിലാക്കൽക്കുറവ് സിസ്റ്റങ്ങൾ എങ്ങനെ നിയന്ത്രിക്കപ്പെടുന്നു, പ്രവർത്തിപ്പിക്കുന്നു, രേഖപ്പെടുത്തുന്നു എന്നതിനെ ബാധിക്കുന്നു. +- ഏറ്റവും പ്രധാനമായി, ഈ മനസ്സിലാക്കൽക്കുറവ് സിസ്റ്റങ്ങൾ ഉൽപ്പാദിപ്പിക്കുന്ന ഫലങ്ങൾ ഉപയോഗിച്ച് എടുക്കുന്ന തീരുമാനങ്ങളെ ബാധിക്കുന്നു. + +### ഉത്തരവാദിത്വം + +AI സിസ്റ്റങ്ങൾ രൂപകൽപ്പന ചെയ്ത് വിനിയോഗിക്കുന്നവർ അവരുടെ സിസ്റ്റങ്ങൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിന് ഉത്തരവാദിത്വം വഹിക്കണം. മുഖം തിരിച്ചറിയൽ പോലുള്ള സങ്കീർണ്ണ സാങ്കേതികവിദ്യകളിൽ ഉത്തരവാദിത്വം പ്രത്യേകിച്ച് പ്രധാനമാണ്. അടുത്തിടെ, മുഖം തിരിച്ചറിയൽ സാങ്കേതികവിദ്യക്ക് വളരെയധികം ആവശ്യകതയുണ്ട്, പ്രത്യേകിച്ച് കാണാതായ കുട്ടികളെ കണ്ടെത്തുന്നതിൽ നിയമപ്രവർത്തക സംഘടനകൾക്ക് ഇത് സഹായകരമെന്ന് കാണുന്നു. എന്നാൽ, ഈ സാങ്കേതികവിദ്യകൾ സർക്കാർ അവരുടെ പൗരന്മാരുടെ അടിസ്ഥാന സ്വാതന്ത്ര്യങ്ങളെ അപകടത്തിലാക്കാൻ ഉപയോഗിക്കാമെന്ന ഭീഷണി ഉണ്ട്, ഉദാഹരണത്തിന്, ചില വ്യക്തികളുടെ നിരന്തര നിരീക്ഷണം സാധ്യമാക്കുക. അതിനാൽ, ഡാറ്റ സയന്റിസ്റ്റുകളും സംഘടനകളും അവരുടെ AI സിസ്റ്റം വ്യക്തികളെയും സമൂഹത്തെയും എങ്ങനെ ബാധിക്കുന്നു എന്നതിന് ഉത്തരവാദിത്വം വഹിക്കണം. + +[![Leading AI Researcher Warns of Mass Surveillance Through Facial Recognition](../../../../translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.ml.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") + +> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: മുഖം തിരിച്ചറിയൽ വഴി വ്യാപക നിരീക്ഷണത്തിന്റെ മുന്നറിയിപ്പുകൾ + +അവസാനമായി, AI സമൂഹത്തിലേക്ക് കൊണ്ടുവരുന്ന ആദ്യ തലമുറയായ നമ്മുടെ തലമുറയ്ക്ക് ഏറ്റവും വലിയ ചോദ്യങ്ങളിൽ ഒന്നാണ്, കമ്പ്യൂട്ടറുകൾ ആളുകൾക്ക് ഉത്തരവാദിത്വം വഹിക്കുമോ, കമ്പ്യൂട്ടറുകൾ രൂപകൽപ്പന ചെയ്യുന്നവർ എല്ലാവർക്കും ഉത്തരവാദിത്വം വഹിക്കുമോ എന്നത് എങ്ങനെ ഉറപ്പാക്കാം എന്നത്. + +## പ്രഭാവം വിലയിരുത്തൽ + +മെഷീൻ ലേണിംഗ് മോഡൽ പരിശീലിപ്പിക്കുന്നതിന് മുമ്പ്, AI സിസ്റ്റത്തിന്റെ ഉദ്ദേശ്യം, ഉപയോഗം, വിനിയോഗ സ്ഥലം, സിസ്റ്റം ഉപയോഗിക്കുന്നവർ എന്നിവ മനസ്സിലാക്കാൻ പ്രഭാവം വിലയിരുത്തൽ നടത്തുന്നത് പ്രധാനമാണ്. ഇത് സിസ്റ്റം വിലയിരുത്തുന്നവർക്കും ടെസ്റ്റർമാർക്കും സാധ്യതയുള്ള അപകടങ്ങളും പ്രതീക്ഷിക്കുന്ന ഫലങ്ങളും തിരിച്ചറിയാൻ സഹായിക്കും. + +പ്രഭാവം വിലയിരുത്തുമ്പോൾ ശ്രദ്ധിക്കേണ്ട മേഖലകൾ: + +* **വ്യക്തികൾക്ക് ഹാനികരമായ പ്രഭാവം**: സിസ്റ്റത്തിന്റെ പ്രകടനം തടയുന്ന നിയന്ത്രണങ്ങൾ, ആവശ്യങ്ങൾ, അനധികൃത ഉപയോഗം, പരിചിതമായ പരിമിതികൾ എന്നിവ അറിയുക, വ്യക്തികൾക്ക് ഹാനി ഉണ്ടാകാതിരിക്കാനുള്ള ഉറപ്പാക്കൽ. +* **ഡാറ്റ ആവശ്യകതകൾ**: സിസ്റ്റം എങ്ങനെ എവിടെ ഡാറ്റ ഉപയോഗിക്കും എന്ന് മനസ്സിലാക്കുക, അവലോകനക്കാർക്ക് GDPR, HIPAA പോലുള്ള ഡാറ്റ നിയമങ്ങൾ പരിഗണിക്കാൻ സഹായിക്കും. കൂടാതെ, പരിശീലനത്തിന് ഡാറ്റയുടെ ഉറവിടം, അളവ് മതിയായതാണോ എന്ന് പരിശോധിക്കുക. +* **പ്രഭാവത്തിന്റെ സംക്ഷേപം**: സിസ്റ്റം ഉപയോഗിച്ച് ഉണ്ടാകാവുന്ന ഹാനികളുടെ പട്ടിക ശേഖരിക്കുക. ML ജീവിതചക്രത്തിൽ കണ്ടെത്തിയ പ്രശ്നങ്ങൾ പരിഹരിക്കപ്പെട്ടിട്ടുണ്ടോ എന്ന് നിരീക്ഷിക്കുക. +* **ആവശ്യമായ ലക്ഷ്യങ്ങൾ**: ആറ് പ്രധാന സിദ്ധാന്തങ്ങളിൽ ഓരോന്നിനും ലക്ഷ്യങ്ങൾ പാലിക്കപ്പെട്ടിട്ടുണ്ടോ, ഇടവേളകളുണ്ടോ എന്ന് വിലയിരുത്തുക. + +## ഉത്തരവാദിത്വമുള്ള AI ഉപയോഗിച്ച് ഡീബഗ്ഗിംഗ് + +സോഫ്റ്റ്‌വെയർ ആപ്ലിക്കേഷൻ ഡീബഗ്ഗിംഗിനുപോലെ, AI സിസ്റ്റം ഡീബഗ്ഗിംഗ് സിസ്റ്റത്തിലെ പ്രശ്നങ്ങൾ കണ്ടെത്തി പരിഹരിക്കുന്ന അനിവാര്യ പ്രക്രിയയാണ്. മോഡൽ പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കാത്തതിനു പല കാരണങ്ങൾ ഉണ്ടാകാം. പരമ്പരാഗത മോഡൽ പ്രകടന സൂചകങ്ങൾ ഒരു മോഡലിന്റെ പ്രകടനത്തിന്റെ കണക്കുകൂട്ടലുകളാണ്, എന്നാൽ അവ ഉത്തരവാദിത്വമുള്ള AI സിദ്ധാന്തങ്ങൾ ലംഘിക്കുന്ന വിധം വിശകലനം ചെയ്യാൻ പോരാ. കൂടാതെ, മെഷീൻ ലേണിംഗ് മോഡൽ ഒരു ബ്ലാക്ക് ബോക്സാണ്, അതിന്റെ ഫലം എന്തുകൊണ്ട് ഉണ്ടാകുന്നു എന്ന് മനസ്സിലാക്കാനും തെറ്റുകൾ സംഭവിച്ചപ്പോൾ വിശദീകരിക്കാനും ബുദ്ധിമുട്ടാണ്. ഈ കോഴ്സിന്റെ പിന്നീട് ഭാഗങ്ങളിൽ, AI സിസ്റ്റങ്ങൾ ഡീബഗ് ചെയ്യാൻ ഉത്തരവാദിത്വമുള്ള AI ഡാഷ്ബോർഡ് ഉപയോഗിക്കുന്നത് പഠിക്കും. ഡാഷ്ബോർഡ് ഡാറ്റ സയന്റിസ്റ്റുകൾക്കും AI ഡെവലപ്പർമാർക്കും താഴെപ്പറയുന്നവ ചെയ്യാൻ സഹായിക്കുന്ന സമഗ്ര ഉപകരണമാണ്: + +* **പിശക് വിശകലനം**: സിസ്റ്റത്തിന്റെ നീതിയിലും വിശ്വാസ്യതയിലും ബാധിക്കുന്ന മോഡലിന്റെ പിശക് വിതരണങ്ങൾ തിരിച്ചറിയാൻ. +* **മോഡൽ അവലോകനം**: ഡാറ്റ കോഹോർട്ടുകളിൽ മോഡലിന്റെ പ്രകടന വ്യത്യാസങ്ങൾ കണ്ടെത്താൻ. +* **ഡാറ്റ വിശകലനം**: ഡാറ്റയുടെ വിതരണവും ബയാസുകൾ തിരിച്ചറിയാനും, നീതി, ഉൾക്കൊള്ളൽ, വിശ്വാസ്യത പ്രശ്നങ്ങൾ കണ്ടെത്താനും. +* **മോഡൽ വ്യാഖ്യാനം**: മോഡലിന്റെ പ്രവചനങ്ങളെ സ്വാധീനിക്കുന്ന ഘടകങ്ങൾ മനസ്സിലാക്കാൻ. ഇത് പാരദർശിത്വത്തിനും ഉത്തരവാദിത്വത്തിനും പ്രധാനമാണ്. + +## 🚀 ചലഞ്ച് + +ഹാനികൾ ആദ്യഘട്ടത്തിൽ തന്നെ ഉണ്ടാകാതിരിക്കാൻ, നാം: + +- സിസ്റ്റങ്ങളിൽ ജോലി ചെയ്യുന്നവരിൽ വ്യത്യസ്ത പശ്ചാത്തലങ്ങളും കാഴ്ചപ്പാടുകളും ഉണ്ടായിരിക്കണം +- നമ്മുടെ സമൂഹത്തിന്റെ വൈവിധ്യം പ്രതിഫലിപ്പിക്കുന്ന ഡാറ്റാസെറ്റുകളിൽ നിക്ഷേപം നടത്തണം +- ഉത്തരവാദിത്വമുള്ള AI കണ്ടെത്താനും ശരിയാക്കാനും മെഷീൻ ലേണിംഗ് ജീവിതചക്രത്തിൽ മികച്ച രീതികൾ വികസിപ്പിക്കണം + +മോഡൽ നിർമ്മാണത്തിലും ഉപയോഗത്തിലും മോഡലിന്റെ വിശ്വസനീയത ഇല്ലായ്മ വ്യക്തമായ യാഥാർത്ഥ്യ സാഹചര്യങ്ങളെക്കുറിച്ച് ചിന്തിക്കുക. മറ്റെന്തെല്ലാം പരിഗണിക്കണം? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) +## അവലോകനം & സ്വയം പഠനം + +ഈ പാഠത്തിൽ, മെഷീൻ ലേണിങ്ങിൽ നീതിയും അനീതിയും എന്ന ആശയങ്ങളുടെ ചില അടിസ്ഥാനങ്ങൾ നിങ്ങൾ പഠിച്ചു. + +ഈ വിഷയങ്ങളിൽ കൂടുതൽ ആഴത്തിൽ പ്രവേശിക്കാൻ ഈ വർക്ക്‌ഷോപ്പ് കാണുക: + +- ഉത്തരവാദിത്വമുള്ള AI ന്റെ പിന്തുടർച്ചയിൽ: Besmira Nushi, Mehrnoosh Sameki, Amit Sharma എന്നിവരാൽ സിദ്ധാന്തങ്ങളെ പ്രായോഗികതയിലേക്ക് കൊണ്ടുവരുന്നു + +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") + +> 🎥 വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: Besmira Nushi, Mehrnoosh Sameki, Amit Sharma എന്നിവരാൽ RAI Toolbox: An open-source framework for building responsible AI + +ഇതും വായിക്കുക: + +- Microsoft ന്റെ RAI റിസോഴ്‌സ് സെന്റർ: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) + +- Microsoft ന്റെ FATE ഗവേഷണ സംഘം: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) + +RAI Toolbox: + +- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox) + +നീതിയുണ്ടാക്കാൻ Azure Machine Learning ന്റെ ഉപകരണങ്ങളെക്കുറിച്ച് വായിക്കുക: + +- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) + +## അസൈൻമെന്റ് + +[RAI Toolbox പരിശോധിക്കുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/3-fairness/assignment.md b/translations/ml/1-Introduction/3-fairness/assignment.md new file mode 100644 index 000000000..ec8231851 --- /dev/null +++ b/translations/ml/1-Introduction/3-fairness/assignment.md @@ -0,0 +1,27 @@ + +# ഉത്തരവാദിത്വമുള്ള AI ടൂൾബോക്സ് അന്വേഷിക്കുക + +## നിർദ്ദേശങ്ങൾ + +ഈ പാഠത്തിൽ നിങ്ങൾ ഉത്തരവാദിത്വമുള്ള AI ടൂൾബോക്സ് എന്നതിനെക്കുറിച്ച് പഠിച്ചു, ഇത് "ഡാറ്റാ സയന്റിസ്റ്റുകൾക്ക് AI സിസ്റ്റങ്ങൾ വിശകലനം ചെയ്ത് മെച്ചപ്പെടുത്താൻ സഹായിക്കുന്ന ഒരു ഓപ്പൺ-സോഴ്‌സ്, കമ്മ്യൂണിറ്റി-നയിച്ച പ്രോജക്ട്" ആണ്. ഈ അസൈൻമെന്റിനായി, RAI Toolbox-ന്റെ [നോട്ട്ബുക്കുകളിൽ](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) ഒന്നിനെ അന്വേഷിച്ച്, അതിൽ നിന്നുള്ള കണ്ടെത്തലുകൾ ഒരു പേപ്പറിൽ അല്ലെങ്കിൽ പ്രეზന്റേഷനിൽ റിപ്പോർട്ട് ചെയ്യുക. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണമായത് | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | --------- | -------- | ----------------- | +| | Fairlearn-ന്റെ സിസ്റ്റങ്ങൾ, പ്രവർത്തിപ്പിച്ച നോട്ട്ബുക്ക്, പ്രവർത്തിപ്പിച്ചതിൽ നിന്നുള്ള നിഗമനങ്ങൾ ചർച്ച ചെയ്യുന്ന ഒരു പേപ്പർ അല്ലെങ്കിൽ പവർപോയിന്റ് പ്രეზന്റേഷൻ അവതരിപ്പിക്കുന്നു | നിഗമനങ്ങളില്ലാതെ ഒരു പേപ്പർ അവതരിപ്പിക്കുന്നു | ഒരു പേപ്പർ അവതരിപ്പിക്കുന്നില്ല | + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/4-techniques-of-ML/README.md b/translations/ml/1-Introduction/4-techniques-of-ML/README.md new file mode 100644 index 000000000..c37083c15 --- /dev/null +++ b/translations/ml/1-Introduction/4-techniques-of-ML/README.md @@ -0,0 +1,134 @@ + +# മെഷീൻ ലേണിങ്ങിന്റെ സാങ്കേതിക വിദ്യകൾ + +മെഷീൻ ലേണിംഗ് മോഡലുകൾ നിർമ്മിക്കുന്നതും ഉപയോഗിക്കുന്നതും പരിപാലിക്കുന്നതും, അവ ഉപയോഗിക്കുന്ന ഡാറ്റയും, മറ്റ് പല വികസന പ്രവൃത്തികളിൽ നിന്നുള്ളവയിൽ നിന്ന് വളരെ വ്യത്യസ്തമായ പ്രക്രിയയാണ്. ഈ പാഠത്തിൽ, നാം ഈ പ്രക്രിയയെ വിശദീകരിക്കുകയും നിങ്ങൾ അറിയേണ്ട പ്രധാന സാങ്കേതിക വിദ്യകൾ രേഖപ്പെടുത്തുകയും ചെയ്യും. നിങ്ങൾക്ക്: + +- മെഷീൻ ലേണിംഗിന്റെ അടിസ്ഥാന പ്രക്രിയകൾ ഉയർന്ന തലത്തിൽ മനസ്സിലാക്കാം. +- 'മോഡലുകൾ', 'ഭാവനകൾ', 'പരിശീലന ഡാറ്റ' പോലുള്ള അടിസ്ഥാന ആശയങ്ങൾ അന്വേഷിക്കാം. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") + +> 🎥 ഈ പാഠം വിശദീകരിക്കുന്ന ഒരു ചെറിയ വീഡിയോ കാണാൻ മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +## പരിചയം + +ഉയർന്ന തലത്തിൽ, മെഷീൻ ലേണിംഗ് (ML) പ്രക്രിയകൾ സൃഷ്ടിക്കുന്ന കലയിൽ പല ഘട്ടങ്ങൾ ഉൾപ്പെടുന്നു: + +1. **ചോദ്യമൊരുക്കുക**. മിക്ക ML പ്രക്രിയകളും ഒരു ലളിതമായ നിബന്ധനാപരമായ പ്രോഗ്രാമോ നിയമങ്ങൾ അടിസ്ഥാനമാക്കിയ എഞ്ചിനോ മറുപടി നൽകാൻ കഴിയാത്ത ഒരു ചോദ്യമൊരുക്കുന്നതിൽ ആരംഭിക്കുന്നു. ഈ ചോദ്യങ്ങൾ സാധാരണയായി ഡാറ്റാ ശേഖരണത്തെ അടിസ്ഥാനമാക്കിയുള്ള പ്രവചനങ്ങളുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു. +2. **ഡാറ്റ ശേഖരിക്കുകയും തയ്യാറാക്കുകയും ചെയ്യുക**. നിങ്ങളുടെ ചോദ്യത്തിന് മറുപടി നൽകാൻ, നിങ്ങൾക്ക് ഡാറ്റ ആവശ്യമുണ്ട്. നിങ്ങളുടെ ഡാറ്റയുടെ ഗുണമേന്മയും, ചിലപ്പോൾ, അളവും, നിങ്ങളുടെ പ്രാഥമിക ചോദ്യത്തിന് എത്രത്തോളം നല്ല മറുപടി നൽകാമെന്ന് നിർണ്ണയിക്കും. ഡാറ്റ ദൃശ്യവൽക്കരണം ഈ ഘട്ടത്തിന്റെ ഒരു പ്രധാന ഭാഗമാണ്. ഈ ഘട്ടത്തിൽ ഡാറ്റയെ പരിശീലനവും പരിശോധനയും എന്നിങ്ങനെ വിഭജിച്ച് മോഡൽ നിർമ്മിക്കാനും ഉൾപ്പെടുന്നു. +3. **പരിശീലന രീതി തിരഞ്ഞെടുക്കുക**. നിങ്ങളുടെ ചോദ്യത്തിനും ഡാറ്റയുടെ സ്വഭാവത്തിനും അനുസരിച്ച്, ഡാറ്റയെ മികച്ച രീതിയിൽ പ്രതിഫലിപ്പിക്കുകയും അതിനെതിരെ കൃത്യമായ പ്രവചനങ്ങൾ നടത്തുകയും ചെയ്യാൻ മോഡൽ പരിശീലിപ്പിക്കാൻ നിങ്ങൾ എങ്ങനെ പരിശീലനം നൽകണമെന്ന് തിരഞ്ഞെടുക്കണം. ഇത് നിങ്ങളുടെ ML പ്രക്രിയയിലെ പ്രത്യേക വിദഗ്ധത ആവശ്യമായ ഭാഗമാണ്, കൂടാതെ പലപ്പോഴും വലിയ പരീക്ഷണങ്ങൾ നടത്തേണ്ടതും. +4. **മോഡൽ പരിശീലിപ്പിക്കുക**. നിങ്ങളുടെ പരിശീലന ഡാറ്റ ഉപയോഗിച്ച്, ഡാറ്റയിലെ മാതൃകകൾ തിരിച്ചറിയാൻ വിവിധ ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് മോഡൽ പരിശീലിപ്പിക്കും. മോഡൽ ചില ഭാഗങ്ങളിൽ കൂടുതൽ പ്രാധാന്യം നൽകാൻ ക്രമീകരിക്കാവുന്ന ആന്തരിക ഭാരങ്ങൾ ഉപയോഗിക്കാം. +5. **മോഡൽ വിലയിരുത്തുക**. നിങ്ങൾ ശേഖരിച്ച ഡാറ്റയിൽ നിന്ന് മുമ്പ് കാണാത്ത ഡാറ്റ (പരിശോധന ഡാറ്റ) ഉപയോഗിച്ച് മോഡൽ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് പരിശോധിക്കും. +6. **പരാമീറ്റർ ട്യൂണിംഗ്**. മോഡലിന്റെ പ്രകടനത്തെ അടിസ്ഥാനമാക്കി, മോഡൽ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ആൽഗോരിതങ്ങളുടെ പെരുമാറ്റം നിയന്ത്രിക്കുന്ന വ്യത്യസ്ത പരാമീറ്ററുകൾ ഉപയോഗിച്ച് പ്രക്രിയ വീണ്ടും നടത്താം. +7. **പ്രവചനം നടത്തുക**. പുതിയ ഇൻപുട്ടുകൾ ഉപയോഗിച്ച് മോഡലിന്റെ കൃത്യത പരിശോധിക്കുക. + +## ഏത് ചോദ്യമാണ് ചോദിക്കേണ്ടത് + +കമ്പ്യൂട്ടറുകൾ ഡാറ്റയിൽ മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ കണ്ടെത്തുന്നതിൽ പ്രത്യേകമായി നൈപുണ്യമുള്ളവയാണ്. നിബന്ധനാപരമായ നിയമങ്ങൾ അടിസ്ഥാനമാക്കിയ എഞ്ചിൻ സൃഷ്ടിച്ച് എളുപ്പത്തിൽ മറുപടി നൽകാൻ കഴിയാത്ത ഒരു ഡൊമെയ്ൻ സംബന്ധിച്ച ചോദ്യങ്ങൾ ഗവേഷകർക്ക് ഇത് വളരെ സഹായകരമാണ്. ഉദാഹരണത്തിന്, ഒരു ആക്ച്വറിയൽ ജോലി നൽകിയാൽ, ഒരു ഡാറ്റാ സയന്റിസ്റ്റ് പുകവലി ചെയ്യുന്നവരും പുകവലി ചെയ്യാത്തവരും മരണനിരക്കുകൾക്കായി കൈകൊണ്ട നിയമങ്ങൾ നിർമ്മിക്കാൻ കഴിയും. + +എന്നാൽ, പല മറ്റ് വ്യത്യസ്ത ഘടകങ്ങൾ പരിഗണിക്കുമ്പോൾ, ഒരു ML മോഡൽ മുൻകാല ആരോഗ്യ ചരിത്രത്തെ അടിസ്ഥാനമാക്കി ഭാവിയിലെ മരണനിരക്കുകൾ പ്രവചിക്കാൻ കൂടുതൽ കാര്യക്ഷമമാകാം. ഒരു സന്തോഷകരമായ ഉദാഹരണം, ഒരു നിശ്ചിത സ്ഥലത്ത് ഏപ്രിൽ മാസത്തെ കാലാവസ്ഥ പ്രവചനങ്ങൾ latitude, longitude, കാലാവസ്ഥ മാറ്റം, സമുദ്രത്തിന് സമീപം, ജെറ്റ് സ്ട്രീം മാതൃകകൾ എന്നിവ ഉൾപ്പെടുന്ന ഡാറ്റയുടെ അടിസ്ഥാനത്തിൽ നിർമിക്കുന്നത് ആകാം. + +✅ കാലാവസ്ഥ മോഡലുകളെക്കുറിച്ചുള്ള ഈ [സ്ലൈഡ് ഡെക്ക്](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) കാലാവസ്ഥ വിശകലനത്തിൽ ML ഉപയോഗിക്കുന്നതിനുള്ള ചരിത്രപരമായ കാഴ്ചപ്പാട് നൽകുന്നു. + +## നിർമ്മാണത്തിന് മുമ്പുള്ള പ്രവർത്തനങ്ങൾ + +നിങ്ങളുടെ മോഡൽ നിർമ്മിക്കാൻ തുടങ്ങുന്നതിന് മുമ്പ്, നിങ്ങൾ പൂർത്തിയാക്കേണ്ട നിരവധി പ്രവർത്തനങ്ങൾ ഉണ്ട്. നിങ്ങളുടെ ചോദ്യത്തെ പരീക്ഷിക്കുകയും മോഡലിന്റെ പ്രവചനങ്ങളെ അടിസ്ഥാനമാക്കി ഒരു ഹിപോത്തസിസ് രൂപപ്പെടുത്തുകയും ചെയ്യാൻ, നിങ്ങൾക്ക് പല ഘടകങ്ങളും തിരിച്ചറിയുകയും ക്രമീകരിക്കുകയും വേണം. + +### ഡാറ്റ + +നിങ്ങളുടെ ചോദ്യത്തിന് ഏതെങ്കിലും ഉറപ്പോടെ മറുപടി നൽകാൻ, ശരിയായ തരം ഡാറ്റയുടെ നല്ല അളവ് ആവശ്യമാണ്. ഈ ഘട്ടത്തിൽ നിങ്ങൾ ചെയ്യേണ്ട രണ്ട് കാര്യങ്ങളുണ്ട്: + +- **ഡാറ്റ ശേഖരിക്കുക**. മുമ്പത്തെ പാഠത്തിൽ ഡാറ്റ വിശകലനത്തിൽ നീതിയുള്ളതിനെക്കുറിച്ച് പഠിച്ചതു ഓർക്കുക, ശ്രദ്ധയോടെ ഡാറ്റ ശേഖരിക്കുക. ഈ ഡാറ്റയുടെ ഉറവിടങ്ങളെക്കുറിച്ച്, അതിൽ ഉള്ള സ്വാഭാവിക പാകങ്ങൾക്കുറിച്ച് ജാഗ്രത പുലർത്തുക, അതിന്റെ ഉറവിടം രേഖപ്പെടുത്തുക. +- **ഡാറ്റ തയ്യാറാക്കുക**. ഡാറ്റ തയ്യാറാക്കൽ പ്രക്രിയയിൽ പല ഘട്ടങ്ങളുണ്ട്. വ്യത്യസ്ത ഉറവിടങ്ങളിൽ നിന്നുള്ള ഡാറ്റ സംയോജിപ്പിക്കുകയും സാധാരണവത്കരിക്കുകയും ചെയ്യേണ്ടതുണ്ടാകാം. ഡാറ്റയുടെ ഗുണമേന്മയും അളവും മെച്ചപ്പെടുത്താൻ സ്ട്രിംഗുകൾ നമ്പറുകളായി മാറ്റൽ പോലുള്ള വിവിധ രീതികൾ ഉപയോഗിക്കാം ([Clustering](../../5-Clustering/1-Visualize/README.md) പാഠത്തിൽ ചെയ്തതുപോലെ). നിങ്ങൾക്ക് പുതിയ ഡാറ്റ സൃഷ്ടിക്കേണ്ടതും ഉണ്ടാകാം, മൗലിക ഡാറ്റയെ അടിസ്ഥാനമാക്കി ([Classification](../../4-Classification/1-Introduction/README.md) പാഠത്തിൽ ചെയ്തതുപോലെ). ഡാറ്റ ശുദ്ധീകരിക്കുകയും തിരുത്തുകയും ചെയ്യാം ([Web App](../../3-Web-App/README.md) പാഠത്തിന് മുമ്പ് ചെയ്യുന്നതുപോലെ). അവസാനം, നിങ്ങളുടെ പരിശീലന സാങ്കേതിക വിദ്യകൾ അനുസരിച്ച് ഡാറ്റയെ യാദൃച്ഛികമാക്കുകയും ഷഫിൾ ചെയ്യുകയും ചെയ്യേണ്ടതുണ്ടാകാം. + +✅ ഡാറ്റ ശേഖരിക്കുകയും പ്രോസസ്സ് ചെയ്യുകയും ചെയ്ത ശേഷം, അതിന്റെ രൂപം നിങ്ങളുടെ ഉദ്ദേശിച്ച ചോദ്യത്തിന് മറുപടി നൽകാൻ അനുയോജ്യമാണോ എന്ന് പരിശോധിക്കാൻ ഒരു നിമിഷം എടുത്തു നോക്കുക. നിങ്ങളുടെ നൽകിയ ജോലിയിൽ ഡാറ്റ നല്ല പ്രകടനം കാണിക്കില്ലായിരുന്നോ എന്ന് ഞങ്ങൾ [Clustering](../../5-Clustering/1-Visualize/README.md) പാഠങ്ങളിൽ കണ്ടെത്തുന്നു! + +### ഫീച്ചറുകളും ലക്ഷ്യവും + +ഒരു [ഫീച്ചർ](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) നിങ്ങളുടെ ഡാറ്റയുടെ അളക്കാവുന്ന സ്വഭാവമാണ്. പല ഡാറ്റാസെറ്റുകളിലും ഇത് 'തീയതി', 'വലിപ്പം', 'നിറം' പോലുള്ള കോളം തലക്കെട്ടായി പ്രകടിപ്പിക്കപ്പെടുന്നു. നിങ്ങളുടെ ഫീച്ചർ വേരിയബിൾ, സാധാരണയായി കോഡിൽ `X` ആയി പ്രതിനിധീകരിക്കപ്പെടുന്നു, മോഡൽ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ഇൻപുട്ട് വേരിയബിൾ ആണ്. + +ലക്ഷ്യം നിങ്ങൾ പ്രവചിക്കാൻ ശ്രമിക്കുന്ന വസ്തുവാണ്. ലക്ഷ്യം സാധാരണയായി കോഡിൽ `y` ആയി പ്രതിനിധീകരിക്കപ്പെടുന്നു, ഇത് നിങ്ങളുടെ ഡാറ്റയിൽ നിന്നുള്ള ചോദ്യത്തിന് നിങ്ങൾ ചോദിക്കുന്ന മറുപടിയാണ്: ഡിസംബർ മാസത്തിൽ, ഏത് **നിറത്തിലുള്ള** പംപ്കിനുകൾ ഏറ്റവും വിലകുറഞ്ഞവ ആയിരിക്കും? സാൻ ഫ്രാൻസിസ്കോയിൽ, ഏത് പ്രദേശങ്ങളിൽ മികച്ച റിയൽ എസ്റ്റേറ്റ് **വില** ഉണ്ടാകും? ചിലപ്പോൾ ലക്ഷ്യം ലേബൽ ആട്രിബ്യൂട്ട് എന്നും വിളിക്കുന്നു. + +### നിങ്ങളുടെ ഫീച്ചർ വേരിയബിൾ തിരഞ്ഞെടുക്കൽ + +🎓 **ഫീച്ചർ സെലക്ഷനും ഫീച്ചർ എക്സ്ട്രാക്ഷനും** മോഡൽ നിർമ്മിക്കുമ്പോൾ ഏത് വേരിയബിൾ തിരഞ്ഞെടുക്കണമെന്ന് നിങ്ങൾ എങ്ങനെ അറിയും? ഏറ്റവും മികച്ച പ്രകടനം നൽകുന്ന മോഡലിനായി ശരിയായ വേരിയബിളുകൾ തിരഞ്ഞെടുക്കാൻ നിങ്ങൾ ഫീച്ചർ സെലക്ഷൻ അല്ലെങ്കിൽ ഫീച്ചർ എക്സ്ട്രാക്ഷൻ പ്രക്രിയയിലൂടെ പോകും. ഇവ ഒരേ കാര്യമല്ല: "ഫീച്ചർ എക്സ്ട്രാക്ഷൻ മൗലിക ഫീച്ചറുകളുടെ ഫംഗ്ഷനുകളിൽ നിന്നുള്ള പുതിയ ഫീച്ചറുകൾ സൃഷ്ടിക്കുന്നു, എന്നാൽ ഫീച്ചർ സെലക്ഷൻ ഫീച്ചറുകളുടെ ഒരു ഉപസമൂഹം തിരികെ നൽകുന്നു." ([സ്രോതസ്സ്](https://wikipedia.org/wiki/Feature_selection)) + +### നിങ്ങളുടെ ഡാറ്റ ദൃശ്യവൽക്കരിക്കുക + +ഡാറ്റാ സയന്റിസ്റ്റിന്റെ ഉപകരണസഞ്ചിയിൽ ഒരു പ്രധാന ഘടകം സീബോൺ അല്ലെങ്കിൽ മാട്പ്ലോട്ട്‌ലിബ് പോലുള്ള മികച്ച ലൈബ്രറികൾ ഉപയോഗിച്ച് ഡാറ്റ ദൃശ്യവൽക്കരിക്കുന്ന ശേഷിയാണ്. നിങ്ങളുടെ ഡാറ്റ ദൃശ്യമായി പ്രതിനിധീകരിക്കുന്നത് മറഞ്ഞിരിക്കുന്ന ബന്ധങ്ങൾ കണ്ടെത്താൻ സഹായിക്കാം. നിങ്ങളുടെ ദൃശ്യവൽക്കരണങ്ങൾ പാകം അല്ലാത്തതോ അസമതുലിതമായ ഡാറ്റയോ കണ്ടെത്താൻ സഹായിക്കാം ([Classification](../../4-Classification/2-Classifiers-1/README.md) പാഠത്തിൽ കണ്ടെത്തുന്നതുപോലെ). + +### നിങ്ങളുടെ ഡാറ്റാസെറ്റ് വിഭജിക്കുക + +പരിശീലനത്തിന് മുമ്പ്, നിങ്ങളുടെ ഡാറ്റാസെറ്റ് രണ്ട് അല്ലെങ്കിൽ അതിലധികം അസമാനമായ വലുപ്പമുള്ള ഭാഗങ്ങളായി വിഭജിക്കണം, എന്നാൽ ഡാറ്റയെ നന്നായി പ്രതിനിധീകരിക്കണം. + +- **പരിശീലനം**. ഡാറ്റാസെറ്റിന്റെ ഈ ഭാഗം മോഡലിന് അനുയോജ്യമായ രീതിയിൽ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്നു. ഇത് മൗലിക ഡാറ്റാസെറ്റിന്റെ ഭൂരിഭാഗമാണ്. +- **പരിശോധന**. ഒരു ടെസ്റ്റ് ഡാറ്റാസെറ്റ് സ്വതന്ത്രമായ ഡാറ്റാ ഗ്രൂപ്പാണ്, സാധാരണയായി മൗലിക ഡാറ്റയിൽ നിന്നാണ് ശേഖരിക്കുന്നത്, ഇത് നിർമ്മിച്ച മോഡലിന്റെ പ്രകടനം സ്ഥിരീകരിക്കാൻ ഉപയോഗിക്കുന്നു. +- **സാധൂകരിക്കൽ**. സാധൂകരിക്കൽ സെറ്റ് ഒരു ചെറിയ സ്വതന്ത്ര ഉദാഹരണ ഗ്രൂപ്പാണ്, ഇത് മോഡലിന്റെ ഹൈപ്പർപാരാമീറ്ററുകൾ അല്ലെങ്കിൽ ഘടന മെച്ചപ്പെടുത്താൻ ഉപയോഗിക്കുന്നു. നിങ്ങളുടെ ഡാറ്റയുടെ വലുപ്പത്തിനും ചോദിക്കുന്ന ചോദ്യത്തിനും അനുസരിച്ച്, ഈ മൂന്നാം സെറ്റ് നിർമ്മിക്കേണ്ടതില്ലായിരിക്കാം ([Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md) പാഠത്തിൽ ഞങ്ങൾ കാണിക്കുന്നു). + +## മോഡൽ നിർമ്മിക്കൽ + +നിങ്ങളുടെ പരിശീലന ഡാറ്റ ഉപയോഗിച്ച്, നിങ്ങളുടെ ലക്ഷ്യം മോഡൽ നിർമ്മിക്കുകയോ, അല്ലെങ്കിൽ നിങ്ങളുടെ ഡാറ്റയുടെ സാംഖ്യിക പ്രതിനിധാനം സൃഷ്ടിക്കുകയോ ചെയ്യുകയാണ്, വിവിധ ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് അതിനെ **പരിശീലിപ്പിക്കുക**. മോഡൽ പരിശീലിപ്പിക്കുന്നത് ഡാറ്റയ്ക്ക് പരിചയപ്പെടാൻ അനുവദിക്കുകയും കണ്ടെത്തിയ മാതൃകകളെക്കുറിച്ച് അനുമാനങ്ങൾ നടത്തുകയും, അവ സ്ഥിരീകരിക്കുകയും, അംഗീകരിക്കുകയും അല്ലെങ്കിൽ നിരസിക്കുകയും ചെയ്യാൻ സഹായിക്കുന്നു. + +### പരിശീലന രീതി തീരുമാനിക്കുക + +നിങ്ങളുടെ ചോദ്യത്തിനും ഡാറ്റയുടെ സ്വഭാവത്തിനും അനുസരിച്ച്, നിങ്ങൾ അത് പരിശീലിപ്പിക്കാൻ ഒരു രീതി തിരഞ്ഞെടുക്കും. ഈ കോഴ്സിൽ ഉപയോഗിക്കുന്ന [Scikit-learn ന്റെ ഡോക്യുമെന്റേഷൻ](https://scikit-learn.org/stable/user_guide.html) വഴി നിങ്ങൾ മോഡൽ പരിശീലിപ്പിക്കാൻ നിരവധി മാർഗങ്ങൾ അന്വേഷിക്കാം. നിങ്ങളുടെ അനുഭവം അനുസരിച്ച്, മികച്ച മോഡൽ നിർമ്മിക്കാൻ നിങ്ങൾക്ക് പല വ്യത്യസ്ത രീതി പരീക്ഷിക്കേണ്ടിവരും. ഡാറ്റാ സയന്റിസ്റ്റുകൾ ഒരു മോഡലിന്റെ പ്രകടനം വിലയിരുത്താൻ മുമ്പ് കാണാത്ത ഡാറ്റ നൽകുകയും കൃത്യത, പാകം, മറ്റ് ഗുണനിലവാര കുറയ്ക്കുന്ന പ്രശ്നങ്ങൾ പരിശോധിക്കുകയും, ജോലിക്ക് ഏറ്റവും അനുയോജ്യമായ പരിശീലന രീതി തിരഞ്ഞെടുക്കുകയും ചെയ്യുന്ന പ്രക്രിയയിലൂടെ നിങ്ങൾ കടന്നുപോകും. + +### മോഡൽ പരിശീലിപ്പിക്കുക + +നിങ്ങളുടെ പരിശീലന ഡാറ്റ ഉപയോഗിച്ച്, മോഡൽ സൃഷ്ടിക്കാൻ 'ഫിറ്റ്' ചെയ്യാൻ തയ്യാറാകുക. പല ML ലൈബ്രറികളിലും 'model.fit' എന്ന കോഡ് കാണും - ഈ സമയത്ത് നിങ്ങൾ നിങ്ങളുടെ ഫീച്ചർ വേരിയബിൾ മൂല്യങ്ങളുടെ ഒരു അറേ (സാധാരണയായി 'X')യും ലക്ഷ്യ വേരിയബിൾ (സാധാരണയായി 'y')യും അയയ്ക്കും. + +### മോഡൽ വിലയിരുത്തുക + +പരിശീലന പ്രക്രിയ പൂർത്തിയായ ശേഷം (വലിയ മോഡൽ പരിശീലിപ്പിക്കാൻ പല ആവർത്തനങ്ങൾ അല്ലെങ്കിൽ 'എപ്പോക്കുകൾ' ആവാം), ടെസ്റ്റ് ഡാറ്റ ഉപയോഗിച്ച് മോഡലിന്റെ ഗുണമേന്മ വിലയിരുത്താൻ കഴിയും. ഈ ഡാറ്റ മോഡൽ മുമ്പ് വിശകലനം ചെയ്തിട്ടില്ലാത്ത മൗലിക ഡാറ്റയുടെ ഒരു ഉപസമൂഹമാണ്. മോഡലിന്റെ ഗുണമേന്മയെക്കുറിച്ചുള്ള മെട്രിക്‌സ് പട്ടിക പ്രിന്റ് ചെയ്യാം. + +🎓 **മോഡൽ ഫിറ്റിംഗ്** + +മെഷീൻ ലേണിംഗിന്റെ സാന്ദർഭ്യത്തിൽ, മോഡൽ ഫിറ്റിംഗ് എന്നത് മോഡലിന്റെ അടിസ്ഥാന ഫംഗ്ഷന്റെ കൃത്യതയെ സൂചിപ്പിക്കുന്നു, അത് പരിചയമില്ലാത്ത ഡാറ്റ വിശകലനം ചെയ്യാൻ ശ്രമിക്കുമ്പോൾ. + +🎓 **അണ്ടർഫിറ്റിംഗ്** (കുറഞ്ഞ ഫിറ്റ്)യും **ഓവർഫിറ്റിംഗ്** (അധിക ഫിറ്റ്)യും മോഡലിന്റെ ഗുണമേന്മ കുറയ്ക്കുന്ന സാധാരണ പ്രശ്നങ്ങളാണ്, മോഡൽ ശരിയായി ഫിറ്റ് ചെയ്യാത്തതോ വളരെ അധികം ഫിറ്റ് ചെയ്തതോ ആയിരിക്കുമ്പോൾ. ഇത് മോഡൽ പരിശീലന ഡാറ്റയുമായി വളരെ അടുത്തോ വളരെ ദൂരമായോ പ്രവചനങ്ങൾ നടത്താൻ കാരണമാകും. ഒരു ഓവർഫിറ്റ് മോഡൽ പരിശീലന ഡാറ്റ വളരെ നന്നായി പ്രവചിക്കുന്നു, കാരണം അത് ഡാറ്റയുടെ വിശദാംശങ്ങളും ശബ്ദവും വളരെ നന്നായി പഠിച്ചിട്ടുണ്ട്. ഒരു അണ്ടർഫിറ്റ് മോഡൽ കൃത്യമായില്ല, കാരണം അത് പരിശീലന ഡാറ്റയും മുമ്പ് 'കണ്ടിട്ടില്ലാത്ത' ഡാറ്റയും കൃത്യമായി വിശകലനം ചെയ്യാൻ കഴിയുന്നില്ല. + +![overfitting model](../../../../translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.ml.png) +> ഇൻഫോഗ്രാഫിക് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) tarafından + +## പരാമീറ്റർ ട്യൂണിംഗ് + +നിങ്ങളുടെ പ്രാഥമിക പരിശീലനം പൂർത്തിയായ ശേഷം, മോഡലിന്റെ ഗുണമേന്മ നിരീക്ഷിച്ച് അതിന്റെ 'ഹൈപ്പർപാരാമീറ്ററുകൾ' ക്രമീകരിച്ച് മെച്ചപ്പെടുത്താൻ പരിഗണിക്കുക. പ്രക്രിയയെക്കുറിച്ച് കൂടുതൽ വായിക്കുക [ഡോക്യുമെന്റേഷനിൽ](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). + +## പ്രവചനം + +ഇത് നിങ്ങൾക്ക് പൂർണ്ണമായും പുതിയ ഡാറ്റ ഉപയോഗിച്ച് മോഡലിന്റെ കൃത്യത പരിശോധിക്കാനുള്ള നിമിഷമാണ്. 'പ്രയോഗത്തിൽ' ഉള്ള ML സജ്ജീകരണത്തിൽ, നിങ്ങൾ മോഡൽ പ്രൊഡക്ഷനിൽ ഉപയോഗിക്കാൻ വെബ് ആസറ്റുകൾ നിർമ്മിക്കുമ്പോൾ, ഈ പ്രക്രിയയിൽ ഉപയോക്തൃ ഇൻപുട്ട് (ഉദാഹരണത്തിന് ബട്ടൺ അമർത്തൽ) ശേഖരിച്ച് ഒരു വേരിയബിൾ സജ്ജമാക്കി മോഡലിലേക്ക് ഇൻഫറൻസ് അല്ലെങ്കിൽ വിലയിരുത്തലിനായി അയയ്ക്കുന്നതും ഉൾപ്പെടാം. + +ഈ പാഠങ്ങളിൽ, നിങ്ങൾ ഈ ഘട്ടങ്ങൾ ഉപയോഗിച്ച് ഡാറ്റാ സയന്റിസ്റ്റിന്റെ എല്ലാ പ്രവർത്തനങ്ങളും, കൂടാതെ കൂടുതൽ, തയ്യാറാക്കാനും, നിർമ്മിക്കാനും, പരീക്ഷിക്കാനും, വിലയിരുത്താനും, പ്രവചിക്കാനും പഠിക്കും, 'ഫുൾ സ്റ്റാക്ക്' ML എഞ്ചിനീയറായി നിങ്ങളുടെ യാത്രയിൽ മുന്നേറുമ്പോൾ. + +--- + +## 🚀ചലഞ്ച് + +ഒരു ML പ്രാക്ടീഷണറുടെ ഘട്ടങ്ങൾ പ്രതിഫലിപ്പിക്കുന്ന ഒരു ഫ്ലോ ചാർട്ട് വരയ്ക്കുക. നിങ്ങൾ ഇപ്പോൾ പ്രക്രിയയിൽ എവിടെയാണ്? നിങ്ങൾക്ക് എവിടെ ബുദ്ധിമുട്ട് ഉണ്ടാകുമെന്ന് പ്രവചിക്കുന്നു? നിങ്ങൾക്ക് എവിടെ എളുപ്പമാണ്? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ഡാറ്റാ സയന്റിസ്റ്റുകൾ അവരുടെ ദൈനംദിന ജോലി ചർച്ച ചെയ്യുന്ന അഭിമുഖങ്ങൾ ഓൺലൈനിൽ തിരയുക. ഇതാ [ഒരു ഉദാഹരണം](https://www.youtube.com/watch?v=Z3IjgbbCEfs). + +## അസൈൻമെന്റ് + +[ഒരു ഡാറ്റാ സയന്റിസ്റ്റിനെ അഭിമുഖം ചെയ്യുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/4-techniques-of-ML/assignment.md b/translations/ml/1-Introduction/4-techniques-of-ML/assignment.md new file mode 100644 index 000000000..d893cedf6 --- /dev/null +++ b/translations/ml/1-Introduction/4-techniques-of-ML/assignment.md @@ -0,0 +1,27 @@ + +# ഒരു ഡാറ്റ സയന്റിസ്റ്റിനെ അഭിമുഖം + +## നിർദ്ദേശങ്ങൾ + +നിങ്ങളുടെ കമ്പനിയിലോ, ഒരു ഉപയോക്തൃ ഗ്രൂപ്പിലോ, അല്ലെങ്കിൽ നിങ്ങളുടെ സുഹൃത്തുക്കളിലോ സഹപാഠികളിലോ ഡാറ്റ സയന്റിസ്റ്റായി പ്രൊഫഷണലായി ജോലി ചെയ്യുന്ന ആരെയെങ്കിലും സംസാരിക്കുക. അവരുടെ ദൈനംദിന ജോലികൾക്കുറിച്ച് ഒരു ചെറിയ പ്രബന്ധം (500 വാക്കുകൾ) എഴുതുക. അവർ വിദഗ്ധരാണോ, അല്ലെങ്കിൽ 'ഫുൾ സ്റ്റാക്ക്' ആയി പ്രവർത്തിക്കുന്നവരാണോ? + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണപരമായത് | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | --------------------- | +| | ശരിയായ നീളമുള്ള, ഉറവിടങ്ങൾ വ്യക്തമാക്കിയ പ്രബന്ധം .doc ഫയലായി സമർപ്പിച്ചിരിക്കുന്നു | പ്രബന്ധം ഉറവിടങ്ങൾ വ്യക്തമാക്കാത്തതോ ആവശ്യമായ നീളത്തിൽ കുറവായതോ ആണ് | പ്രബന്ധം സമർപ്പിച്ചിട്ടില്ല | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/README.md b/translations/ml/1-Introduction/README.md new file mode 100644 index 000000000..622554c47 --- /dev/null +++ b/translations/ml/1-Introduction/README.md @@ -0,0 +1,38 @@ + +# മെഷീൻ ലേണിങ്ങിലേക്ക് പരിചയം + +പാഠ്യപദ്ധതിയുടെ ഈ ഭാഗത്തിൽ, മെഷീൻ ലേണിങ്ങ് എന്ന മേഖലയെ അടിസ്ഥാനമാക്കിയുള്ള ആശയങ്ങൾ, അതെന്താണെന്ന്, അതിന്റെ ചരിത്രം, ഗവേഷകർ അതുമായി പ്രവർത്തിക്കാൻ ഉപയോഗിക്കുന്ന സാങ്കേതിക വിദ്യകൾ എന്നിവയെക്കുറിച്ച് നിങ്ങൾക്ക് പരിചയപ്പെടുത്തും. ഈ പുതിയ ML ലോകത്തെ നമുക്ക് ഒരുമിച്ച് അന്വേഷിക്കാം! + +![globe](../../../translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.ml.jpg) +> ഫോട്ടോ ബിൽ ഓക്സ്ഫോർഡ് എന്നവരിൽ നിന്നാണ് അൺസ്പ്ലാഷിൽ + +### പാഠങ്ങൾ + +1. [മെഷീൻ ലേണിങ്ങിലേക്ക് പരിചയം](1-intro-to-ML/README.md) +1. [മെഷീൻ ലേണിങ്ങിന്റെയും AI യുടെയും ചരിത്രം](2-history-of-ML/README.md) +1. [ന്യായത്വവും മെഷീൻ ലേണിങ്ങും](3-fairness/README.md) +1. [മെഷീൻ ലേണിങ്ങിന്റെ സാങ്കേതിക വിദ്യകൾ](4-techniques-of-ML/README.md) +### ക്രെഡിറ്റുകൾ + +"Introduction to Machine Learning" എന്നത് ♥️ ഉള്ളടക്കത്തോടെ [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) എന്നിവരടങ്ങിയ സംഘത്താൽ എഴുതപ്പെട്ടതാണ്. + +"The History of Machine Learning" ♥️ ഉള്ളടക്കത്തോടെ [Jen Looper](https://twitter.com/jenlooper)യും [Amy Boyd](https://twitter.com/AmyKateNicho)യും ചേർന്ന് എഴുതിയതാണ്. + +"Fairness and Machine Learning" ♥️ ഉള്ളടക്കത്തോടെ [Tomomi Imura](https://twitter.com/girliemac) എഴുതിയതാണ്. + +"Techniques of Machine Learning" ♥️ ഉള്ളടക്കത്തോടെ [Jen Looper](https://twitter.com/jenlooper)യും [Chris Noring](https://twitter.com/softchris)യും ചേർന്ന് എഴുതിയതാണ്. + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/1-Tools/README.md b/translations/ml/2-Regression/1-Tools/README.md new file mode 100644 index 000000000..cb2e5eba7 --- /dev/null +++ b/translations/ml/2-Regression/1-Tools/README.md @@ -0,0 +1,241 @@ + +# Python ഉം Scikit-learn ഉം ഉപയോഗിച്ച് regression മോഡലുകൾ ആരംഭിക്കുക + +![Summary of regressions in a sketchnote](../../../../translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.ml.png) + +> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ഈ പാഠം R-ൽ ലഭ്യമാണ്!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) + +## പരിചയം + +ഈ നാല് പാഠങ്ങളിൽ, നിങ്ങൾ regression മോഡലുകൾ എങ്ങനെ നിർമ്മിക്കാമെന്ന് കണ്ടെത്തും. ഇവ എന്തിനാണെന്ന് നമുക്ക് ഉടൻ ചർച്ച ചെയ്യാം. എന്നാൽ എന്തെങ്കിലും ചെയ്യുന്നതിന് മുമ്പ്, പ്രക്രിയ ആരംഭിക്കാൻ ആവശ്യമായ ശരിയായ ഉപകരണങ്ങൾ നിങ്ങൾക്കുണ്ടെന്ന് ഉറപ്പാക്കുക! + +ഈ പാഠത്തിൽ, നിങ്ങൾ പഠിക്കാനിരിക്കുന്നതെന്തെന്നാൽ: + +- ലൊക്കൽ മെഷീൻ ലേണിംഗ് ടാസ്കുകൾക്കായി നിങ്ങളുടെ കമ്പ്യൂട്ടർ ക്രമീകരിക്കുക. +- Jupyter നോട്ട്‌ബുക്കുകളുമായി പ്രവർത്തിക്കുക. +- Scikit-learn ഉപയോഗിക്കുക, ഇൻസ്റ്റാളേഷൻ ഉൾപ്പെടെ. +- ലീനിയർ regression ഒരു ഹാൻഡ്‌സ്-ഓൺ വ്യായാമത്തോടെ പരിശോധിക്കുക. + +## ഇൻസ്റ്റാളേഷനുകളും ക്രമീകരണങ്ങളും + +[![ML for beginners - Setup your tools ready to build Machine Learning models](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML for beginners -Setup your tools ready to build Machine Learning models") + +> 🎥 ML ക്രമീകരണത്തിനായി നിങ്ങളുടെ കമ്പ്യൂട്ടർ ക്രമീകരിക്കുന്നതിനുള്ള ഒരു ചെറിയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +1. **Python ഇൻസ്റ്റാൾ ചെയ്യുക**. നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ [Python](https://www.python.org/downloads/) ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക. ഡാറ്റാ സയൻസ്, മെഷീൻ ലേണിംഗ് ടാസ്കുകൾക്കായി Python ഉപയോഗിക്കും. പല കമ്പ്യൂട്ടർ സിസ്റ്റങ്ങളിലുമുണ്ട് Python ഇൻസ്റ്റാളേഷൻ. ചില ഉപയോക്താക്കൾക്ക് ക്രമീകരണം എളുപ്പമാക്കാൻ ഉപയോഗപ്രദമായ [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) ലഭ്യമാണ്. + + Python-ന്റെ ചില ഉപയോഗങ്ങൾ ഒരു സോഫ്റ്റ്‌വെയറിന്റെ ഒരു വേർഷൻ ആവശ്യപ്പെടുമ്പോൾ, മറ്റുള്ളവയ്ക്ക് വ്യത്യസ്ത വേർഷൻ ആവശ്യമായേക്കാം. അതിനാൽ, [virtual environment](https://docs.python.org/3/library/venv.html) ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നത് ഉപകാരപ്രദമാണ്. + +2. **Visual Studio Code ഇൻസ്റ്റാൾ ചെയ്യുക**. നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ Visual Studio Code ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക. അടിസ്ഥാന ഇൻസ്റ്റാളേഷനായി [Visual Studio Code ഇൻസ്റ്റാൾ ചെയ്യാനുള്ള നിർദ്ദേശങ്ങൾ](https://code.visualstudio.com/) പിന്തുടരുക. ഈ കോഴ്സിൽ Python Visual Studio Code-ൽ ഉപയോഗിക്കും, അതിനാൽ Python ഡെവലപ്പ്മെന്റിനായി [Visual Studio Code ക്രമീകരിക്കുന്നതെങ്ങനെ](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) എന്നത് അറിയാൻ നിങ്ങൾ ആഗ്രഹിക്കാം. + + > Python-നൊപ്പം പരിചയപ്പെടാൻ ഈ [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) ശേഖരം വഴി പ്രവർത്തിക്കുക + > + > [![Setup Python with Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Setup Python with Visual Studio Code") + > + > 🎥 VS Code-ൽ Python ഉപയോഗിക്കുന്നതിനുള്ള വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +3. **Scikit-learn ഇൻസ്റ്റാൾ ചെയ്യുക**, [ഈ നിർദ്ദേശങ്ങൾ](https://scikit-learn.org/stable/install.html) പിന്തുടർന്ന്. Python 3 ഉപയോഗിക്കുന്നതെന്ന് ഉറപ്പാക്കേണ്ടതിനാൽ, virtual environment ഉപയോഗിക്കുന്നത് ശുപാർശ ചെയ്യുന്നു. M1 Mac-ൽ ഈ ലൈബ്രറി ഇൻസ്റ്റാൾ ചെയ്യുമ്പോൾ പ്രത്യേക നിർദ്ദേശങ്ങൾ ഉണ്ട്, മുകളിൽ നൽകിയ ലിങ്കിൽ കാണാം. + +1. **Jupyter Notebook ഇൻസ്റ്റാൾ ചെയ്യുക**. [Jupyter പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതുണ്ട്](https://pypi.org/project/jupyter/). + +## നിങ്ങളുടെ ML എഴുത്ത് പരിസ്ഥിതി + +Python കോഡ് വികസിപ്പിക്കുകയും മെഷീൻ ലേണിംഗ് മോഡലുകൾ സൃഷ്ടിക്കുകയും ചെയ്യാൻ നിങ്ങൾ **നോട്ട്‌ബുക്കുകൾ** ഉപയോഗിക്കും. ഈ തരത്തിലുള്ള ഫയൽ ഡാറ്റാ സയന്റിസ്റ്റുകൾക്കുള്ള സാധാരണ ഉപകരണമാണ്, അവയുടെ സഫിക്സ് അല്ലെങ്കിൽ എക്സ്റ്റൻഷൻ `.ipynb` ആണ്. + +നോട്ട്‌ബുക്കുകൾ ഒരു ഇന്ററാക്ടീവ് പരിസ്ഥിതിയാണ്, ഡെവലപ്പർക്ക് കോഡ് ചെയ്യാനും കുറിപ്പുകൾ ചേർക്കാനും, കോഡിന്റെ ചുറ്റുപാടിൽ ഡോക്യുമെന്റേഷൻ എഴുതാനും അനുവദിക്കുന്നു, ഇത് പരീക്ഷണാത്മക അല്ലെങ്കിൽ ഗവേഷണ-കേന്ദ്രിത പദ്ധതികൾക്ക് വളരെ സഹായകരമാണ്. + +[![ML for beginners - Set up Jupyter Notebooks to start building regression models](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML for beginners - Set up Jupyter Notebooks to start building regression models") + +> 🎥 ഈ വ്യായാമം ചെയ്യുന്നതിനുള്ള ചെറിയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +### വ്യായാമം - ഒരു നോട്ട്‌ബുക്കുമായി പ്രവർത്തിക്കുക + +ഈ ഫോൾഡറിൽ, നിങ്ങൾക്ക് _notebook.ipynb_ ഫയൽ കാണാം. + +1. Visual Studio Code-ൽ _notebook.ipynb_ തുറക്കുക. + + Python 3+ ഉപയോഗിച്ച് Jupyter സെർവർ ആരംഭിക്കും. നോട്ട്‌ബുക്കിന്റെ ഭാഗങ്ങൾ `run` ചെയ്യാവുന്നതാണ്, കോഡ് ഭാഗങ്ങൾ. പ്ലേ ബട്ടൺ പോലുള്ള ഐക്കൺ തിരഞ്ഞെടുക്കുന്നതിലൂടെ കോഡ് ബ്ലോക്ക് റൺ ചെയ്യാം. + +1. `md` ഐക്കൺ തിരഞ്ഞെടുക്കുക, കുറച്ച് markdown ചേർക്കുക, താഴെ കാണുന്ന വാചകം **# Welcome to your notebook** ചേർക്കുക. + + തുടർന്ന്, Python കോഡ് ചേർക്കുക. + +1. കോഡ് ബ്ലോക്കിൽ **print('hello notebook')** ടൈപ്പ് ചെയ്യുക. +1. കോഡ് റൺ ചെയ്യാൻ അമ്പ് ഐക്കൺ തിരഞ്ഞെടുക്കുക. + + നിങ്ങൾക്ക് പ്രിന്റ് ചെയ്ത പ്രസ്താവന കാണാം: + + ```output + hello notebook + ``` + +![VS Code with a notebook open](../../../../translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.ml.jpg) + +നിങ്ങളുടെ കോഡിനൊപ്പം കുറിപ്പുകൾ ചേർത്ത് നോട്ട്‌ബുക്ക് സ്വയം ഡോക്യുമെന്റ് ചെയ്യാം. + +✅ വെബ് ഡെവലപ്പറുടെ പ്രവർത്തന പരിസ്ഥിതിയും ഡാറ്റാ സയന്റിസ്റ്റിന്റെ പ്രവർത്തന പരിസ്ഥിതിയും എത്ര വ്യത്യസ്തമാണെന്ന് ഒരു നിമിഷം ചിന്തിക്കുക. + +## Scikit-learn ഉപയോഗിച്ച് പ്രവർത്തനം ആരംഭിക്കുക + +ഇപ്പോൾ Python നിങ്ങളുടെ ലൊക്കൽ പരിസ്ഥിതിയിൽ ക്രമീകരിച്ചിരിക്കുന്നു, Jupyter നോട്ട്‌ബുക്കുകളുമായി നിങ്ങൾ പരിചിതരാണ്, Scikit-learn-നോടും സമാനമായി പരിചിതരാകാം (`sci` എന്ന് ഉച്ചരിക്കാം, `science` പോലെ). Scikit-learn ML ടാസ്കുകൾ ചെയ്യാൻ സഹായിക്കുന്ന [വ്യാപകമായ API](https://scikit-learn.org/stable/modules/classes.html#api-ref) നൽകുന്നു. + +അവരുടെ [വെബ്സൈറ്റ്](https://scikit-learn.org/stable/getting_started.html) പ്രകാരം, "Scikit-learn ഒരു ഓപ്പൺ സോഴ്‌സ് മെഷീൻ ലേണിംഗ് ലൈബ്രറിയാണ്, ഇത് supervised, unsupervised ലേണിംഗ് പിന്തുണയ്ക്കുന്നു. മോഡൽ ഫിറ്റിംഗ്, ഡാറ്റ പ്രീപ്രോസസ്സിംഗ്, മോഡൽ സെലക്ഷൻ, മൂല്യനിർണ്ണയം, മറ്റ് പല ഉപകരണങ്ങളും ഇത് നൽകുന്നു." + +ഈ കോഴ്സിൽ, നിങ്ങൾ Scikit-learn ഉൾപ്പെടെയുള്ള ഉപകരണങ്ങൾ ഉപയോഗിച്ച് 'പരമ്പരാഗത മെഷീൻ ലേണിംഗ്' ടാസ്കുകൾ നിർവഹിക്കുന്ന മോഡലുകൾ നിർമ്മിക്കും. നാം ന്യുറൽ നെറ്റ്വർക്കുകളും ഡീപ്പ് ലേണിംഗും ഒഴിവാക്കിയിട്ടുണ്ട്, കാരണം അവ 'AI for Beginners' പാഠ്യപദ്ധതിയിൽ കൂടുതൽ വിശദമായി ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. + +Scikit-learn മോഡലുകൾ നിർമ്മിക്കുകയും അവ വിലയിരുത്തുകയും ചെയ്യാൻ എളുപ്പമാണ്. ഇത് പ്രധാനമായും സംഖ്യാത്മക ഡാറ്റ ഉപയോഗിക്കുന്നതിനാണ്, പഠന ഉപകരണങ്ങളായി ഉപയോഗിക്കാൻ നിരവധി റെഡി-മെയ്ഡ് ഡാറ്റാസെറ്റുകൾ ഉൾക്കൊള്ളുന്നു. വിദ്യാർത്ഥികൾക്ക് പരീക്ഷിക്കാൻ മുൻകൂട്ടി നിർമ്മിച്ച മോഡലുകളും ഇതിൽ ഉൾപ്പെടുന്നു. ആദ്യം, പാക്കേജ് ചെയ്ത ഡാറ്റ ലോഡ് ചെയ്യുകയും Scikit-learn-ന്റെ ബിൽറ്റ്-ഇൻ എസ്റ്റിമേറ്റർ ഉപയോഗിച്ച് അടിസ്ഥാന ML മോഡൽ നിർമ്മിക്കലും പരിശോധിക്കാം. + +## വ്യായാമം - നിങ്ങളുടെ ആദ്യ Scikit-learn നോട്ട്‌ബുക്ക് + +> ഈ ട്യൂട്ടോറിയൽ Scikit-learn വെബ്സൈറ്റിലെ [linear regression ഉദാഹരണത്തിൽ](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) നിന്നാണ് പ്രചോദനം ലഭിച്ചത്. + + +[![ML for beginners - Your First Linear Regression Project in Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML for beginners - Your First Linear Regression Project in Python") + +> 🎥 ഈ വ്യായാമം ചെയ്യുന്നതിനുള്ള ചെറിയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +ഈ പാഠവുമായി ബന്ധപ്പെട്ട _notebook.ipynb_ ഫയലിൽ, എല്ലാ സെല്ലുകളും 'trash can' ഐക്കൺ അമർത്തി ക്ലിയർ ചെയ്യുക. + +ഈ വിഭാഗത്തിൽ, Scikit-learn-ൽ പഠനത്തിനായി ഉൾപ്പെടുത്തിയ ചെറിയ ഡയബറ്റീസ് ഡാറ്റാസെറ്റ് ഉപയോഗിച്ച് പ്രവർത്തിക്കും. ഡയബറ്റിക് രോഗികൾക്കായി ഒരു ചികിത്സ പരീക്ഷിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നതായി കരുതുക. മെഷീൻ ലേണിംഗ് മോഡലുകൾ, വ്യത്യസ്ത വേരിയബിളുകളുടെ സംയോജനങ്ങളുടെ അടിസ്ഥാനത്തിൽ, ഏത് രോഗികൾ ചികിത്സയ്ക്ക് മികച്ച പ്രതികരണം നൽകുമെന്ന് നിർണ്ണയിക്കാൻ സഹായിക്കാം. വളരെ അടിസ്ഥാന regression മോഡൽ പോലും, ദൃശ്യവൽക്കരിച്ചാൽ, സിദ്ധാന്തപരമായ ക്ലിനിക്കൽ ട്രയലുകൾ ക്രമീകരിക്കാൻ സഹായിക്കുന്ന വേരിയബിളുകളെക്കുറിച്ച് വിവരങ്ങൾ കാണിക്കാം. + +✅ regression രീതികളുടെ പല തരങ്ങളും ഉണ്ട്, നിങ്ങൾ തിരഞ്ഞെടുക്കുന്നത് നിങ്ങൾ അന്വേഷിക്കുന്ന ഉത്തരത്തിന്റെ അടിസ്ഥാനത്തിലാണ്. ഒരു വ്യക്തിയുടെ പ്രായം നൽകിയാൽ അവന്റെ സാധ്യതയുള്ള ഉയരം പ്രവചിക്കാൻ linear regression ഉപയോഗിക്കും, കാരണം നിങ്ങൾ **സംഖ്യാത്മക മൂല്യം** തേടുകയാണ്. ഒരു ഭക്ഷണരീതിയെ വെഗൻ ആണോ അല്ലയോ എന്ന് കണ്ടെത്താൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, നിങ്ങൾ **വർഗ്ഗം നിശ്ചയിക്കൽ** അന്വേഷിക്കുന്നതാണ്, അതിനാൽ logistic regression ഉപയോഗിക്കും. logistic regression പിന്നീട് പഠിക്കും. ഡാറ്റയിൽ നിന്ന് ചോദിക്കാവുന്ന ചില ചോദ്യങ്ങളെ കുറിച്ച് ചിന്തിക്കുക, ഏത് രീതികൾ കൂടുതൽ അനുയോജ്യമാണ് എന്ന്. + +ഈ ടാസ്ക് ആരംഭിക്കാം. + +### ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക + +ഈ ടാസ്കിനായി ചില ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യാം: + +- **matplotlib**. ഇത് ഒരു ഉപകാരപ്രദമായ [ഗ്രാഫിംഗ് ടൂൾ](https://matplotlib.org/) ആണ്, ലൈന്പ്ലോട്ട് സൃഷ്ടിക്കാൻ ഉപയോഗിക്കും. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) Python-ൽ സംഖ്യാത്മക ഡാറ്റ കൈകാര്യം ചെയ്യാൻ സഹായിക്കുന്ന ലൈബ്രറിയാണ്. +- **sklearn**. ഇത് [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) ലൈബ്രറിയാണ്. + +നിങ്ങളുടെ ടാസ്കുകൾക്ക് സഹായം നൽകാൻ ചില ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക. + +1. താഴെ കാണുന്ന കോഡ് ടൈപ്പ് ചെയ്ത് ഇറക്കുമതി ചേർക്കുക: + + ```python + import matplotlib.pyplot as plt + import numpy as np + from sklearn import datasets, linear_model, model_selection + ``` + + മുകളിൽ നിങ്ങൾ `matplotlib`, `numpy` ഇറക്കുമതി ചെയ്യുന്നു, കൂടാതെ `sklearn`-ൽ നിന്ന് `datasets`, `linear_model`, `model_selection` ഇറക്കുമതി ചെയ്യുന്നു. `model_selection` ഡാറ്റ പരിശീലനവും ടെസ്റ്റ് സെറ്റുകളിലായി വിഭജിക്കാൻ ഉപയോഗിക്കുന്നു. + +### ഡയബറ്റീസ് ഡാറ്റാസെറ്റ് + +ഇൻബിൽറ്റ് [ഡയബറ്റീസ് ഡാറ്റാസെറ്റ്](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 സാമ്പിളുകൾ ഉൾക്കൊള്ളുന്നു, 10 ഫീച്ചർ വേരിയബിളുകളോടെ, ചിലത്: + +- പ്രായം: വയസ്സിൽ +- bmi: ബോഡി മാസ്സ് ഇൻഡക്സ് +- bp: ശരാശരി രക്തസമ്മർദ്ദം +- s1 tc: ടി-സെല്ലുകൾ (വെളുത്ത രക്തകോശങ്ങളുടെ ഒരു തരം) + +✅ ഈ ഡാറ്റാസെറ്റിൽ 'sex' എന്ന binary ക്ലാസിഫിക്കേഷൻ ഫീച്ചർ വേരിയബിൾ ഉൾക്കൊള്ളുന്നു, ഡയബറ്റീസ് ഗവേഷണത്തിന് പ്രധാനമാണ്. പല മെഡിക്കൽ ഡാറ്റാസെറ്റുകളും ഇത്തരത്തിലുള്ള binary ക്ലാസിഫിക്കേഷൻ ഉൾക്കൊള്ളുന്നു. ഇത്തരത്തിലുള്ള വർഗ്ഗീകരണങ്ങൾ ജനസംഖ്യയുടെ ചില ഭാഗങ്ങളെ ചികിത്സകളിൽ നിന്ന് ഒഴിവാക്കാമെന്ന് ചിന്തിക്കുക. + +ഇപ്പോൾ, X, y ഡാറ്റ ലോഡ് ചെയ്യുക. + +> 🎓 ഓർമ്മിക്കുക, ഇത് supervised learning ആണ്, അതിനാൽ 'y' എന്ന ലക്ഷ്യ വേരിയബിൾ ആവശ്യമാണ്. + +പുതിയ കോഡ് സെല്ലിൽ, `load_diabetes()` വിളിച്ച് ഡയബറ്റീസ് ഡാറ്റാസെറ്റ് ലോഡ് ചെയ്യുക. `return_X_y=True` നൽകുന്നത് `X` ഡാറ്റാ മാട്രിക്സ് ആകും, `y` regression ലക്ഷ്യം ആകും എന്ന് സൂചിപ്പിക്കുന്നു. + +1. ഡാറ്റാ മാട്രിക്സിന്റെ ആകൃതി (shape)യും ആദ്യ ഘടകവും പ്രിന്റ് ചെയ്യാൻ ചില print കമാൻഡുകൾ ചേർക്കുക: + + ```python + X, y = datasets.load_diabetes(return_X_y=True) + print(X.shape) + print(X[0]) + ``` + + നിങ്ങൾക്ക് ലഭിക്കുന്നത് ഒരു ട്യൂപ്പിൾ ആണ്. ട്യൂപ്പിളിന്റെ ആദ്യ രണ്ട് മൂല്യങ്ങൾ `X`ക്കും `y`ക്കും നിയോഗിക്കുന്നു. [ട്യൂപ്പിളുകൾക്കുറിച്ച് കൂടുതൽ](https://wikipedia.org/wiki/Tuple) പഠിക്കുക. + + ഈ ഡാറ്റ 442 ഇനങ്ങൾ 10 ഘടകങ്ങളുള്ള അറേകളായി രൂപപ്പെടുത്തിയിട്ടുണ്ട്: + + ```text + (442, 10) + [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 + -0.04340085 -0.00259226 0.01990842 -0.01764613] + ``` + + ✅ ഡാറ്റയും regression ലക്ഷ്യവും തമ്മിലുള്ള ബന്ധത്തെ കുറിച്ച് ചിന്തിക്കുക. ലീനിയർ regression ഫീച്ചർ X-നും ലക്ഷ്യ വേരിയബിൾ y-നും ഇടയിലുള്ള ബന്ധം പ്രവചിക്കുന്നു. ഡയബറ്റീസ് ഡാറ്റാസെറ്റിന്റെ [ലക്ഷ്യം](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ഡോക്യുമെന്റേഷനിൽ കണ്ടെത്താമോ? ഈ ഡാറ്റാസെറ്റ് എന്ത് പ്രദർശിപ്പിക്കുന്നു, ആ ലക്ഷ്യം പരിഗണിച്ച്? + +2. ഡാറ്റാസെറ്റിന്റെ 3-ആം കോളം തിരഞ്ഞെടുക്കുക, പ്ലോട്ട് ചെയ്യാൻ. എല്ലാ വരികളും തിരഞ്ഞെടുക്കാൻ `:` ഓപ്പറേറ്റർ ഉപയോഗിച്ച്, പിന്നീട് 3-ആം കോളം (ഇൻഡക്സ് 2) തിരഞ്ഞെടുക്കുക. പ്ലോട്ടിംഗിന് ആവശ്യമായ 2D അറേ ആയി രൂപപ്പെടുത്താൻ `reshape(n_rows, n_columns)` ഉപയോഗിക്കാം. ഒരു പാരാമീറ്റർ -1 ആണെങ്കിൽ, ആ ഡൈമെൻഷൻ സ്വയം കണക്കാക്കും. + + ```python + X = X[:, 2] + X = X.reshape((-1,1)) + ``` + + ✅ ഏപ്പോൾ വേണമെങ്കിലും ഡാറ്റയുടെ ആകൃതി പരിശോധിക്കാൻ പ്രിന്റ് ചെയ്യുക. + +3. ഇപ്പോൾ ഡാറ്റ പ്ലോട്ട് ചെയ്യാൻ തയ്യാറാണ്, ഈ ഡാറ്റാസെറ്റിലെ സംഖ്യകളിൽ ലജിക്കൽ സ്പ്ലിറ്റ് കണ്ടെത്താൻ മെഷീൻ സഹായിക്കുമോ എന്ന് നോക്കാം. അതിനായി, ഡാറ്റ (X)യും ലക്ഷ്യം (y) ടെസ്റ്റ്, പരിശീലന സെറ്റുകളായി വിഭജിക്കണം. Scikit-learn ഇതിന് എളുപ്പമുള്ള മാർഗം നൽകുന്നു; നിങ്ങൾക്ക് ടെസ്റ്റ് ഡാറ്റ ഒരു നിശ്ചിത പോയിന്റിൽ വിഭജിക്കാം. + + ```python + X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) + ``` + +4. ഇപ്പോൾ മോഡൽ പരിശീലിപ്പിക്കാൻ തയ്യാറാണ്! ലീനിയർ regression മോഡൽ ലോഡ് ചെയ്ത് `model.fit()` ഉപയോഗിച്ച് X, y പരിശീലന സെറ്റുകൾ ഉപയോഗിച്ച് പരിശീലിപ്പിക്കുക: + + ```python + model = linear_model.LinearRegression() + model.fit(X_train, y_train) + ``` + + ✅ `model.fit()` TensorFlow പോലുള്ള പല ML ലൈബ്രറികളിലും കാണുന്ന ഒരു ഫംഗ്ഷനാണ് + +5. തുടർന്ന്, ടെസ്റ്റ് ഡാറ്റ ഉപയോഗിച്ച് പ്രവചനം സൃഷ്ടിക്കാൻ `predict()` ഫംഗ്ഷൻ ഉപയോഗിക്കുക. ഇത് ഡാറ്റ ഗ്രൂപ്പുകൾക്കിടയിലെ വര വരയ്ക്കാൻ ഉപയോഗിക്കും + + ```python + y_pred = model.predict(X_test) + ``` + +6. ഇപ്പോൾ matplotlib ഉപയോഗിച്ച് ഡാറ്റ പ്ലോട്ട് ചെയ്യാം. matplotlib ഈ ടാസ്കിന് വളരെ ഉപകാരപ്രദമാണ്. X, y ടെസ്റ്റ് ഡാറ്റയുടെ സ്കാറ്റർപ്ലോട്ട് സൃഷ്ടിച്ച്, മോഡലിന്റെ ഡാറ്റ ഗ്രൂപ്പിംഗുകൾക്കിടയിൽ ഏറ്റവും അനുയോജ്യമായ സ്ഥലത്ത് prediction ഉപയോഗിച്ച് ഒരു വര വരയ്ക്കുക. + + ```python + plt.scatter(X_test, y_test, color='black') + plt.plot(X_test, y_pred, color='blue', linewidth=3) + plt.xlabel('Scaled BMIs') + plt.ylabel('Disease Progression') + plt.title('A Graph Plot Showing Diabetes Progression Against BMI') + plt.show() + ``` + + ![a scatterplot showing datapoints around diabetes](../../../../translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.ml.png) + ✅ ഇവിടെ എന്ത് നടക്കുകയാണ് എന്ന് കുറച്ച് ചിന്തിക്കുക. ഒരു നേരിയ രേഖ നിരവധി ചെറിയ ഡാറ്റാ പോയിന്റുകളിലൂടെ കടന്നുപോകുന്നു, പക്ഷേ അത് ശരിക്കും എന്ത് ചെയ്യുകയാണ്? ഈ രേഖ ഉപയോഗിച്ച് ഒരു പുതിയ, കാണാത്ത ഡാറ്റാ പോയിന്റ് പ്ലോട്ടിന്റെ y അക്ഷത്തോട് എങ്ങനെ പൊരുത്തപ്പെടണം എന്ന് പ്രവചിക്കാൻ കഴിയുമെന്ന് നിങ്ങൾക്ക് കാണാമോ? ഈ മോഡലിന്റെ പ്രായോഗിക ഉപയോഗം വാക്കുകളിൽ വെക്കാൻ ശ്രമിക്കുക. + +അഭിനന്ദനങ്ങൾ, നിങ്ങൾ നിങ്ങളുടെ ആദ്യ ലീനിയർ റെഗ്രഷൻ മോഡൽ നിർമ്മിച്ചു, അതുമായി ഒരു പ്രവചനം സൃഷ്ടിച്ചു, അത് ഒരു പ്ലോട്ടിൽ പ്രദർശിപ്പിച്ചു! + +--- +## 🚀ചലഞ്ച് + +ഈ ഡാറ്റാസെറ്റിൽ നിന്നുള്ള മറ്റൊരു വ്യത്യസ്ത വേരിയബിൾ പ്ലോട്ട് ചെയ്യുക. സൂചന: ഈ വരി എഡിറ്റ് ചെയ്യുക: `X = X[:,2]`. ഈ ഡാറ്റാസെറ്റിന്റെ ലക്ഷ്യം പരിഗണിച്ച്, ഡയബറ്റീസിന്റെ രോഗമായി പുരോഗതിയെക്കുറിച്ച് നിങ്ങൾ എന്ത് കണ്ടെത്താൻ കഴിയും? +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ഈ ട്യൂട്ടോറിയലിൽ, നിങ്ങൾ സിംപിൾ ലീനിയർ റെഗ്രഷനുമായി പ്രവർത്തിച്ചു, യൂണിവേറിയറ്റ് അല്ലെങ്കിൽ മൾട്ടിപ്പിൾ ലീനിയർ റെഗ്രഷൻ അല്ല. ഈ രീതികളുടെ വ്യത്യാസങ്ങളെ കുറിച്ച് കുറച്ച് വായിക്കുക, അല്ലെങ്കിൽ [ഈ വീഡിയോ](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) കാണുക. + +റെഗ്രഷൻ എന്ന ആശയത്തെക്കുറിച്ച് കൂടുതൽ വായിച്ച് ഈ സാങ്കേതിക വിദ്യ ഉപയോഗിച്ച് എങ്ങനെ ചോദ്യങ്ങൾക്ക് ഉത്തരം കണ്ടെത്താമെന്ന് ചിന്തിക്കുക. നിങ്ങളുടെ മനസ്സിലാക്കൽ കൂടുതൽ ആഴത്തിൽ ആക്കാൻ ഈ [ട്യൂട്ടോറിയൽ](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) സ്വീകരിക്കുക. + +## അസൈൻമെന്റ് + +[മറ്റൊരു ഡാറ്റാസെറ്റ്](assignment.md) + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ വ്യാഖ്യാനക്കേടുകൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/1-Tools/assignment.md b/translations/ml/2-Regression/1-Tools/assignment.md new file mode 100644 index 000000000..55f437dac --- /dev/null +++ b/translations/ml/2-Regression/1-Tools/assignment.md @@ -0,0 +1,29 @@ + +# Scikit-learn ഉപയോഗിച്ച് റിഗ്രഷൻ + +## നിർദ്ദേശങ്ങൾ + +Scikit-learn-ൽ ഉള്ള [Linnerud dataset](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) നോക്കുക. ഈ ഡാറ്റാസെറ്റിൽ നിരവധി [ലക്ഷ്യങ്ങൾ](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset) ഉണ്ട്: 'ഇത് ഒരു ഫിറ്റ്നസ് ക്ലബിൽ നിന്നുള്ള ഇരുപത് മധ്യവയസ്ക പുരുഷന്മാരിൽ നിന്നുള്ള മൂന്ന് വ്യായാമ (ഡാറ്റ) മൂല്യങ്ങളും മൂന്ന് ശാരീരിക (ലക്ഷ്യ) മൂല്യങ്ങളും ഉൾക്കൊള്ളുന്നു'. + +താങ്കളുടെ സ്വന്തം വാക്കുകളിൽ, വയസ്‌റ്റ്ലൈൻ (waistline) എത്ര സിറ്റപ്പുകൾ (situps) പൂർത്തിയാക്കിയതുമായി ബന്ധിപ്പിക്കുന്ന ഒരു Regression മോഡൽ എങ്ങനെ സൃഷ്ടിക്കാമെന്ന് വിവരിക്കുക. ഈ ഡാറ്റാസെറ്റിലെ മറ്റ് ഡാറ്റാപോയിന്റുകൾക്കും അതേ രീതിയിൽ ചെയ്യുക. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉത്തമം | മതിയായ | മെച്ചപ്പെടുത്തേണ്ടത് | +| ------------------------------ | ----------------------------------- | ----------------------------- | -------------------------- | +| വിവരണാത്മക പാരഗ്രാഫ് സമർപ്പിക്കുക | നന്നായി എഴുതിയ പാരഗ്രാഫ് സമർപ്പിച്ചിരിക്കുന്നു | കുറച്ച് വാക്യങ്ങൾ സമർപ്പിച്ചിരിക്കുന്നു | വിവരണം നൽകിയിട്ടില്ല | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ പ്രാമാണികമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/1-Tools/notebook.ipynb b/translations/ml/2-Regression/1-Tools/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/ml/2-Regression/1-Tools/solution/Julia/README.md b/translations/ml/2-Regression/1-Tools/solution/Julia/README.md new file mode 100644 index 000000000..ef1ff7111 --- /dev/null +++ b/translations/ml/2-Regression/1-Tools/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ഇത് താൽക്കാലിക പ്ലേസ്ഹോൾഡറാണ് + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb b/translations/ml/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb new file mode 100644 index 000000000..eb18d6c95 --- /dev/null +++ b/translations/ml/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb @@ -0,0 +1,454 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_1-R.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "c18d3bd0bd8ae3878597e89dcd1fa5c1", + "translation_date": "2025-12-19T16:30:34+00:00", + "source_file": "2-Regression/1-Tools/solution/R/lesson_1-R.ipynb", + "language_code": "ml" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ഒരു റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക: R ഉം Tidymodels ഉം ഉപയോഗിച്ച് റെഗ്രഷൻ മോഡലുകൾ ആരംഭിക്കുക\n" + ], + "metadata": { + "id": "YJUHCXqK57yz" + } + }, + { + "cell_type": "markdown", + "source": [ + "## റിഗ്രഷനിലേക്ക് പരിചയം - പാഠം 1\n", + "\n", + "#### പശ്ചാത്തലത്തിൽ വെക്കുക\n", + "\n", + "✅ റിഗ്രഷൻ രീതികളുടെ പല തരങ്ങളും ഉണ്ട്, നിങ്ങൾ തിരഞ്ഞെടുക്കുന്നത് നിങ്ങൾ അന്വേഷിക്കുന്ന ഉത്തരത്തിന്റെ അടിസ്ഥാനത്തിലാണ്. ഒരു വ്യക്തിയുടെ നിശ്ചിത പ്രായത്തിന് സാധ്യതയുള്ള ഉയരം പ്രവചിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, നിങ്ങൾ `linear regression` ഉപയോഗിക്കും, കാരണം നിങ്ങൾ ഒരു **സംഖ്യാത്മക മൂല്യം** അന്വേഷിക്കുന്നു. ഒരു ഭക്ഷണശൈലി വെഗൻ ആണോ അല്ലയോ എന്ന് കണ്ടെത്താൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, നിങ്ങൾ ഒരു **വർഗ്ഗനിർണ്ണയം** അന്വേഷിക്കുന്നു, അതിനാൽ നിങ്ങൾ `logistic regression` ഉപയോഗിക്കും. ലൊജിസ്റ്റിക് റിഗ്രഷൻ കുറച്ച് പിന്നീട് പഠിക്കും. ഡാറ്റയിൽ നിന്ന് നിങ്ങൾ ചോദിക്കാവുന്ന ചില ചോദ്യങ്ങളെ കുറിച്ച് ചിന്തിക്കുക, ഈ രീതികളിൽ ഏതാണ് കൂടുതൽ അനുയോജ്യം എന്ന്.\n", + "\n", + "ഈ വിഭാഗത്തിൽ, നിങ്ങൾ [ഷുഗർ രോഗത്തെക്കുറിച്ചുള്ള ചെറിയ ഡാറ്റാസെറ്റ്](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html) ഉപയോഗിച്ച് പ്രവർത്തിക്കും. ഡയബറ്റിക് രോഗികൾക്കുള്ള ഒരു ചികിത്സ പരീക്ഷിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നതായി تصور ചെയ്യുക. മെഷീൻ ലേണിംഗ് മോഡലുകൾ വ്യത്യസ്ത വേരിയബിളുകളുടെ സംയോജനങ്ങളുടെ അടിസ്ഥാനത്തിൽ ഏത് രോഗികൾ ചികിത്സയ്ക്ക് മികച്ച പ്രതികരണം നൽകുമെന്ന് നിർണ്ണയിക്കാൻ സഹായിക്കാം. വളരെ അടിസ്ഥാനപരമായ ഒരു റിഗ്രഷൻ മോഡലും, ദൃശ്യവൽക്കരിച്ചാൽ, നിങ്ങളുടെ സിദ്ധാന്തപരമായ ക്ലിനിക്കൽ പരീക്ഷണങ്ങൾ ക്രമീകരിക്കാൻ സഹായിക്കുന്ന വേരിയബിളുകളെക്കുറിച്ചുള്ള വിവരങ്ങൾ കാണിക്കാം.\n", + "\n", + "അങ്ങനെ, ഈ പ്രവർത്തനം ആരംഭിക്കാം!\n", + "\n", + "

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

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

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

@allison_horst രചിച്ച കലാസൃഷ്ടി
\n" + ], + "metadata": { + "id": "Pg5aexcOPqAZ" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 1. പംപ്കിൻസ് ഡാറ്റ ഇറക്കുമതി ചെയ്യുകയും ടിഡിവേഴ്സ് വിളിക്കുകയും ചെയ്യുക\n", + "\n", + "ഈ പാഠം കഷണങ്ങളാക്കി വിശകലനം ചെയ്യാൻ താഴെപ്പറയുന്ന പാക്കേജുകൾ ആവശ്യമാണ്:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) ഒരു [R പാക്കേജുകളുടെ സമാഹാരമാണ്](https://www.tidyverse.org/packages) ഇത് ഡാറ്റാ സയൻസ് വേഗത്തിലാക്കാനും, എളുപ്പമാക്കാനും, കൂടുതൽ രസകരമാക്കാനും രൂപകൽപ്പന ചെയ്തിരിക്കുന്നു!\n", + "\n", + "നിങ്ങൾക്ക് ഇവ ഇങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം:\n", + "\n", + "`install.packages(c(\"tidyverse\"))`\n", + "\n", + "താഴെ കൊടുത്തിരിക്കുന്ന സ്ക്രിപ്റ്റ് ഈ മോഡ്യൂൾ പൂർത്തിയാക്കാൻ ആവശ്യമായ പാക്കേജുകൾ നിങ്ങൾക്കുണ്ടോ എന്ന് പരിശോധിച്ച്, കുറവുണ്ടെങ്കിൽ അവ ഇൻസ്റ്റാൾ ചെയ്യുന്നു.\n" + ], + "metadata": { + "id": "dc5WhyVdXAjR" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n", + "pacman::p_load(tidyverse)" + ], + "outputs": [], + "metadata": { + "id": "GqPYUZgfXOBt" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഇപ്പോൾ, ചില പാക്കേജുകൾ പ്രവർത്തിപ്പിച്ച് ഈ പാഠത്തിനായി നൽകിയ [ഡാറ്റ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ലോഡ് ചെയ്യാം!\n" + ], + "metadata": { + "id": "kvjDTPDSXRr2" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load the core Tidyverse packages\n", + "library(tidyverse)\n", + "\n", + "# Import the pumpkins data\n", + "pumpkins <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/2-Regression/data/US-pumpkins.csv\")\n", + "\n", + "\n", + "# Get a glimpse and dimensions of the data\n", + "glimpse(pumpkins)\n", + "\n", + "\n", + "# Print the first 50 rows of the data set\n", + "pumpkins %>% \n", + " slice_head(n =50)" + ], + "outputs": [], + "metadata": { + "id": "VMri-t2zXqgD" + } + }, + { + "cell_type": "markdown", + "source": [ + "A quick `glimpse()` ഉടൻ കാണിക്കുന്നു that there are blanks and a mix of strings (`chr`) and numeric data (`dbl`). The `Date` is of type character and there's also a strange column called `Package` where the data is a mix between `sacks`, `bins` and other values. The data, in fact, is a bit of a mess 😤.\n", + "\n", + "In fact, it is not very common to be gifted a dataset that is completely ready to use to create a ML model out of the box. But worry not, in this lesson, you will learn how to prepare a raw dataset using standard R libraries 🧑‍🔧. You will also learn various techniques to visualize the data.📈📊\n", + "
\n", + "\n", + "> A refresher: The pipe operator (`%>%`) performs operations in logical sequence by passing an object forward into a function or call expression. You can think of the pipe operator as saying \"and then\" in your code.\n" + ], + "metadata": { + "id": "REWcIv9yX29v" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 2. നഷ്ടമായ ഡാറ്റ പരിശോധിക്കുക\n", + "\n", + "ഡാറ്റാ സയന്റിസ്റ്റുകൾ നേരിടേണ്ട ഏറ്റവും സാധാരണ പ്രശ്നങ്ങളിൽ ഒന്നാണ് അപൂർണ്ണമായ അല്ലെങ്കിൽ നഷ്ടമായ ഡാറ്റ. R നഷ്ടമായ അല്ലെങ്കിൽ അറിയപ്പെടാത്ത മൂല്യങ്ങളെ പ്രത്യേക സെന്റിനൽ മൂല്യമായ `NA` (Not Available) ഉപയോഗിച്ച് പ്രതിനിധീകരിക്കുന്നു.\n", + "\n", + "അപ്പോൾ ഡാറ്റാ ഫ്രെയിമിൽ നഷ്ടമായ മൂല്യങ്ങൾ ഉണ്ടെന്ന് എങ്ങനെ അറിയാം?\n", + "
\n", + "- ഒരു നേരിട്ടുള്ള മാർഗം ബേസ് R ഫംഗ്ഷൻ `anyNA` ഉപയോഗിക്കുകയാണ്, ഇത് ലജിക്കൽ ഒബ്ജക്റ്റുകൾ ആയ `TRUE` അല്ലെങ്കിൽ `FALSE` തിരികെ നൽകുന്നു.\n" + ], + "metadata": { + "id": "Zxfb3AM5YbUe" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "pumpkins %>% \n", + " anyNA()" + ], + "outputs": [], + "metadata": { + "id": "G--DQutAYltj" + } + }, + { + "cell_type": "markdown", + "source": [ + "ശ്രേഷ്ഠം, ചില ഡാറ്റ നഷ്ടപ്പെട്ടിട്ടുണ്ട് പോലെ തോന്നുന്നു! അത് ആരംഭിക്കാൻ നല്ല സ്ഥലം ആണ്.\n", + "\n", + "- മറ്റൊരു മാർഗം `is.na()` ഫംഗ്ഷൻ ഉപയോഗിക്കുകയാണ്, ഇത് ഏതൊക്കെ വ്യക്തിഗത കോളം ഘടകങ്ങൾ നഷ്ടപ്പെട്ടിട്ടുണ്ടെന്ന് ലജിക്കൽ `TRUE` ആയി സൂചിപ്പിക്കുന്നു.\n" + ], + "metadata": { + "id": "mU-7-SB6YokF" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "pumpkins %>% \n", + " is.na() %>% \n", + " head(n = 7)" + ], + "outputs": [], + "metadata": { + "id": "W-DxDOR4YxSW" + } + }, + { + "cell_type": "markdown", + "source": [ + "ശരി, ജോലി പൂർത്തിയായി, പക്ഷേ ഇതുപോലുള്ള വലിയ ഡാറ്റാ ഫ്രെയിമിനൊപ്പം, ഓരോ വരിയും കോളവും വ്യക്തിഗതമായി പരിശോധിക്കുന്നത് കാര്യക്ഷമമല്ലയും പ്രായോഗികമായി അസാധ്യവുമാകും😴.\n", + "\n", + "- കൂടുതൽ ബോധഗമ്യമായ ഒരു മാർഗം ഓരോ കോളത്തിന്റെയും നഷ്ടപ്പെട്ട മൂല്യങ്ങളുടെ മൊത്തം കണക്കാക്കുക എന്നതാണ്:\n" + ], + "metadata": { + "id": "xUWxipKYY0o7" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "pumpkins %>% \n", + " is.na() %>% \n", + " colSums()" + ], + "outputs": [], + "metadata": { + "id": "ZRBWV6P9ZArL" + } + }, + { + "cell_type": "markdown", + "source": [ + "കൂടുതൽ മെച്ചപ്പെട്ടത്! കുറച്ച് ഡാറ്റ നഷ്ടമായിട്ടുണ്ട്, പക്ഷേ ഇപ്പോഴത്തെ ജോലി ചെയ്യുന്നതിന് അതിന് വലിയ പ്രാധാന്യമുണ്ടാകില്ല. കൂടുതൽ വിശകലനം എന്ത് കണ്ടെത്തും എന്ന് നോക്കാം.\n", + "\n", + "> അതുല്യമായ പാക്കേജുകളും ഫംഗ്ഷനുകളും കൂടാതെ, R-ന് വളരെ നല്ല ഡോക്യുമെന്റേഷൻ ഉണ്ട്. ഉദാഹരണത്തിന്, ഫംഗ്ഷൻ കുറിച്ച് കൂടുതൽ അറിയാൻ `help(colSums)` അല്ലെങ്കിൽ `?colSums` ഉപയോഗിക്കുക.\n" + ], + "metadata": { + "id": "9gv-crB6ZD1Y" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 3. Dplyr: ഡാറ്റ മാനിപ്പുലേഷന്റെ ഒരു വ്യാകരണം\n", + "\n", + "\n", + "

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

@allison_horst എന്നവരുടെ കലാസൃഷ്ടി
\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "o4jLY5-VZO2C" + } + }, + { + "cell_type": "markdown", + "source": [ + "[`dplyr`](https://dplyr.tidyverse.org/), Tidyverse-ൽ ഉള്ള ഒരു പാക്കേജ്, ഡാറ്റ മാനിപ്പുലേഷന്റെ ഒരു വ്യാകരണം ആണ്, ഇത് സാധാരണയായി കാണപ്പെടുന്ന ഡാറ്റ മാനിപ്പുലേഷൻ പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ സഹായിക്കുന്ന സ്ഥിരമായ ക്രിയാപദങ്ങളുടെ ഒരു സെറ്റ് നൽകുന്നു. ഈ വിഭാഗത്തിൽ, നാം dplyr-ന്റെ ചില ക്രിയാപദങ്ങൾ പരിശോധിക്കാം! \n", + "
\n" + ], + "metadata": { + "id": "i5o33MQBZWWw" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::select()\n", + "\n", + "`select()` എന്നത് `dplyr` പാക്കേജിലുള്ള ഒരു ഫംഗ്ഷനാണ്, ഇത് നിങ്ങൾക്ക് സൂക്ഷിക്കാനോ ഒഴിവാക്കാനോ കോളങ്ങൾ തിരഞ്ഞെടുക്കാൻ സഹായിക്കുന്നു.\n", + "\n", + "നിങ്ങളുടെ ഡാറ്റാ ഫ്രെയിം ഉപയോഗിക്കാൻ എളുപ്പമാക്കാൻ, അതിലെ ചില കോളങ്ങൾ ഒഴിവാക്കുക, `select()` ഉപയോഗിച്ച്, നിങ്ങൾക്ക് ആവശ്യമായ കോളങ്ങൾ മാത്രം സൂക്ഷിക്കുക.\n", + "\n", + "ഉദാഹരണത്തിന്, ഈ അഭ്യാസത്തിൽ, നമ്മുടെ വിശകലനം `Package`, `Low Price`, `High Price` மற்றும் `Date` എന്ന കോളങ്ങൾ ഉൾപ്പെടും. ഈ കോളങ്ങൾ തിരഞ്ഞെടുക്കാം.\n" + ], + "metadata": { + "id": "x3VGMAGBZiUr" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Select desired columns\n", + "pumpkins <- pumpkins %>% \n", + " select(Package, `Low Price`, `High Price`, Date)\n", + "\n", + "\n", + "# Print data set\n", + "pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "F_FgxQnVZnM0" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::mutate()\n", + "\n", + "`mutate()` എന്നത് `dplyr` പാക്കേജിലുള്ള ഒരു ഫംഗ്ഷനാണ്, ഇത് നിലവിലുള്ള കോളങ്ങൾ നിലനിർത്തിക്കൊണ്ട് പുതിയ കോളങ്ങൾ സൃഷ്ടിക്കുകയോ മാറ്റം വരുത്തുകയോ ചെയ്യാൻ സഹായിക്കുന്നു.\n", + "\n", + "mutate ന്റെ പൊതുവായ ഘടന:\n", + "\n", + "`data %>% mutate(new_column_name = what_it_contains)`\n", + "\n", + "`Date` കോളം ഉപയോഗിച്ച് `mutate` പരീക്ഷിക്കാം, താഴെ പറയുന്ന പ്രവർത്തനങ്ങൾ ചെയ്യുക:\n", + "\n", + "1. തീയതികൾ (ഇപ്പോൾ character തരം) മാസ ഫോർമാറ്റിലേക്ക് മാറ്റുക (ഇവ US തീയതികളാണ്, അതിനാൽ ഫോർമാറ്റ് `MM/DD/YYYY` ആണ്).\n", + "\n", + "2. തീയതികളിൽ നിന്ന് മാസം പുതിയ കോളത്തിലേക്ക് എടുക്കുക.\n", + "\n", + "R ൽ, [lubridate](https://lubridate.tidyverse.org/) പാക്കേജ് Date-time ഡാറ്റ കൈകാര്യം ചെയ്യാൻ എളുപ്പമാക്കുന്നു. അതിനാൽ, `dplyr::mutate()`, `lubridate::mdy()`, `lubridate::month()` ഉപയോഗിച്ച് മുകളിൽ പറഞ്ഞ ലക്ഷ്യങ്ങൾ എങ്ങനെ നേടാമെന്ന് നോക്കാം. പിന്നീട് പ്രവർത്തനങ്ങളിൽ Date കോളം ആവശ്യമില്ലാത്തതിനാൽ അത് ഒഴിവാക്കാം.\n" + ], + "metadata": { + "id": "2KKo0Ed9Z1VB" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load lubridate\n", + "library(lubridate)\n", + "\n", + "pumpkins <- pumpkins %>% \n", + " # Convert the Date column to a date object\n", + " mutate(Date = mdy(Date)) %>% \n", + " # Extract month from Date\n", + " mutate(Month = month(Date)) %>% \n", + " # Drop Date column\n", + " select(-Date)\n", + "\n", + "# View the first few rows\n", + "pumpkins %>% \n", + " slice_head(n = 7)" + ], + "outputs": [], + "metadata": { + "id": "5joszIVSZ6xe" + } + }, + { + "cell_type": "markdown", + "source": [ + "വൂഹൂ! 🤩\n", + "\n", + "അടുത്തതായി, പംപ്കിന്റെ ശരാശരി വില പ്രതിനിധീകരിക്കുന്ന പുതിയ `Price` കോളം സൃഷ്ടിക്കാം. ഇപ്പോൾ, പുതിയ Price കോളം പൂരിപ്പിക്കാൻ `Low Price` ഉം `High Price` ഉം കോളങ്ങളിലെ ശരാശരി എടുക്കാം.\n", + "
\n" + ], + "metadata": { + "id": "nIgLjNMCZ-6Y" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Create a new column Price\n", + "pumpkins <- pumpkins %>% \n", + " mutate(Price = (`Low Price` + `High Price`)/2)\n", + "\n", + "# View the first few rows of the data\n", + "pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "Zo0BsqqtaJw2" + } + }, + { + "cell_type": "markdown", + "source": [ + "അതെ!💪\n", + "\n", + "\"എങ്കിലും കാത്തിരിക്കുക!\", നിങ്ങൾ `View(pumpkins)` ഉപയോഗിച്ച് മുഴുവൻ ഡാറ്റാ സെറ്റ് സ്കിം ചെയ്ത് നോക്കിയ ശേഷം പറയും, \"ഇവിടെ എന്തോ അസാധാരണമാണ്!\"🤔\n", + "\n", + "`Package` കോളം നോക്കിയാൽ, പംപ്കിനുകൾ പലവിധ കോൺഫിഗറേഷനുകളിൽ വിൽക്കപ്പെടുന്നു. ചിലത് `1 1/9 ബുഷെൽ` അളവിൽ, ചിലത് `1/2 ബുഷെൽ` അളവിൽ, ചിലത് ഓരോ പംപ്കിനും, ചിലത് ഓരോ പൗണ്ടിനും, ചിലത് വ്യത്യസ്ത വീതികളുള്ള വലിയ ബോക്സുകളിൽ വിൽക്കപ്പെടുന്നു.\n", + "\n", + "ഇത് പരിശോധിക്കാം:\n" + ], + "metadata": { + "id": "p77WZr-9aQAR" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Verify the distinct observations in Package column\n", + "pumpkins %>% \n", + " distinct(Package)" + ], + "outputs": [], + "metadata": { + "id": "XISGfh0IaUy6" + } + }, + { + "cell_type": "markdown", + "source": [ + "അദ്ഭുതം!👏\n", + "\n", + "പമ്പ്കിനുകൾ സ്ഥിരമായി തൂക്കാൻ വളരെ കഠിനമാണെന്ന് തോന്നുന്നു, അതിനാൽ `Package` കോളത്തിൽ *bushel* എന്ന സ്ട്രിംഗ് ഉള്ള പമ്പ്കിനുകൾ മാത്രം തിരഞ്ഞെടുക്കുകയും ഇത് ഒരു പുതിയ ഡാറ്റാ ഫ്രെയിം `new_pumpkins` ആയി വെക്കുകയും ചെയ്യാം.\n", + "
\n" + ], + "metadata": { + "id": "7sMjiVujaZxY" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::filter() and stringr::str_detect()\n", + "\n", + "[`dplyr::filter()`](https://dplyr.tidyverse.org/reference/filter.html): നിങ്ങളുടെ നിബന്ധനകൾ പാലിക്കുന്ന **പങ്കുകൾ** മാത്രം ഉൾക്കൊള്ളുന്ന ഡാറ്റയുടെ ഒരു ഉപസമൂഹം സൃഷ്ടിക്കുന്നു, ഈ കേസിൽ, `Package` കോളത്തിൽ *bushel* എന്ന സ്ട്രിംഗ് ഉള്ള പംപ്കിനുകൾ.\n", + "\n", + "[stringr::str_detect()](https://stringr.tidyverse.org/reference/str_detect.html): ഒരു സ്ട്രിംഗിൽ ഒരു പാറ്റേൺ ഉള്ളതോ ഇല്ലാതെയോ കണ്ടെത്തുന്നു.\n", + "\n", + "[`stringr`](https://github.com/tidyverse/stringr) പാക്കേജ് സാധാരണ സ്ട്രിംഗ് പ്രവർത്തനങ്ങൾക്ക് ലളിതമായ ഫംഗ്ഷനുകൾ നൽകുന്നു.\n" + ], + "metadata": { + "id": "L8Qfcs92ageF" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Retain only pumpkins with \"bushel\"\n", + "new_pumpkins <- pumpkins %>% \n", + " filter(str_detect(Package, \"bushel\"))\n", + "\n", + "# Get the dimensions of the new data\n", + "dim(new_pumpkins)\n", + "\n", + "# View a few rows of the new data\n", + "new_pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "hy_SGYREampd" + } + }, + { + "cell_type": "markdown", + "source": [ + "നാം ബഷെൽ പ്രകാരം പംപ്കിനുകൾ അടങ്ങിയ ഏകദേശം 415 വരി ഡാറ്റയിലേക്ക് ചുരുക്കിയതായി നിങ്ങൾക്ക് കാണാം.🤩\n", + "
\n" + ], + "metadata": { + "id": "VrDwF031avlR" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::case_when()\n", + "\n", + "**കാത്തിരിക്കുക! ചെയ്യേണ്ട മറ്റൊരു കാര്യം ഉണ്ട്**\n", + "\n", + "ബഷേൽ തുക ഓരോ വരിയിലും വ്യത്യസ്തമാണെന്ന് നിങ്ങൾ ശ്രദ്ധിച്ചോ? 1 1/9 അല്ലെങ്കിൽ 1/2 ബഷേൽക്ക് പകരം ബഷേൽക്ക് തുക കാണിക്കാൻ വില സാധാരണമാക്കേണ്ടതുണ്ട്. ഇത് സാധാരണമാക്കാൻ കുറച്ച് ഗണിതം ചെയ്യേണ്ട സമയം.\n", + "\n", + "നാം ചില നിബന്ധനകളുടെ അടിസ്ഥാനത്തിൽ വില കോളം *മ്യൂട്ടേറ്റ്* ചെയ്യാൻ [`case_when()`](https://dplyr.tidyverse.org/reference/case_when.html) ഫംഗ്ഷൻ ഉപയോഗിക്കും. `case_when` നിങ്ങൾക്ക് പല `if_else()` പ്രസ്താവനകളും വെക്ടറൈസ് ചെയ്യാൻ അനുവദിക്കുന്നു.\n" + ], + "metadata": { + "id": "mLpw2jH4a0tx" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Convert the price if the Package contains fractional bushel values\n", + "new_pumpkins <- new_pumpkins %>% \n", + " mutate(Price = case_when(\n", + " str_detect(Package, \"1 1/9\") ~ Price/(1 + 1/9),\n", + " str_detect(Package, \"1/2\") ~ Price/(1/2),\n", + " TRUE ~ Price))\n", + "\n", + "# View the first few rows of the data\n", + "new_pumpkins %>% \n", + " slice_head(n = 30)" + ], + "outputs": [], + "metadata": { + "id": "P68kLVQmbM6I" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഇപ്പോൾ, അവയുടെ ബഷെൽ അളവിന്റെ അടിസ്ഥാനത്തിൽ യൂണിറ്റ് വില വിശകലനം ചെയ്യാം. പക്ഷേ, പംപ്കിൻ ബഷെലുകളുടെ ഈ പഠനം, നിങ്ങളുടെ ഡാറ്റയുടെ സ്വഭാവം `അറിയുന്നത്` എത്രത്തോളം `പ്രധാനമാണ്` എന്ന് കാണിക്കുന്നു!\n", + "\n", + "> ✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) പ്രകാരം, ഒരു ബഷെലിന്റെ ഭാരം ഉൽപ്പന്നത്തിന്റെ തരം അനുസരിച്ച് വ്യത്യാസപ്പെടുന്നു, കാരണം ഇത് ഒരു വോളിയം അളവാണ്. \"ഉദാഹരണത്തിന്, ഒരു ബഷെൽ തക്കാളി 56 പൗണ്ട് ഭാരമുള്ളതായിരിക്കണം... ഇലകളും പച്ചക്കറികളും കുറവ് ഭാരത്തോടെ കൂടുതൽ സ്ഥലം പിടിക്കുന്നു, അതുകൊണ്ട് ഒരു ബഷെൽ സ്പിനാച്ച് വെറും 20 പൗണ്ട് മാത്രമാണ്.\" എല്ലാം വളരെ സങ്കീർണ്ണമാണ്! ബഷെൽ-ടു-പൗണ്ട് പരിവർത്തനം ചെയ്യാൻ ശ്രമിക്കാതെ, ബഷെൽ അടിസ്ഥാനമാക്കി വില നിശ്ചയിക്കാം. പംപ്കിൻ ബഷെലുകളുടെ ഈ പഠനം, നിങ്ങളുടെ ഡാറ്റയുടെ സ്വഭാവം അറിയുന്നത് എത്രത്തോളം പ്രധാനമാണെന്ന് കാണിക്കുന്നു!\n", + ">\n", + "> ✅ പംപ്കിനുകൾ അർദ്ധ-ബഷെൽ അടിസ്ഥാനത്തിൽ വിൽക്കുമ്പോൾ വളരെ വിലകൂടുതലാണെന്ന് നിങ്ങൾ ശ്രദ്ധിച്ചോ? എന്തുകൊണ്ടെന്ന് കണ്ടെത്താമോ? സൂചന: ചെറിയ പംപ്കിനുകൾ വലിയവയെക്കാൾ വളരെ വിലകൂടുതലാണ്, കാരണം ഒരു വലിയ പൊള്ളലുള്ള പൈ പംപ്കിൻ എടുത്തിടുന്ന ഉപയോഗിക്കാത്ത സ്ഥലത്തെ തുടർന്ന് ഒരു ബഷെലിൽ അവയുടെ എണ്ണം വളരെ കൂടുതലായിരിക്കും.\n", + "
\n" + ], + "metadata": { + "id": "pS2GNPagbSdb" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഇപ്പോൾ അവസാനം, സാഹസികതയ്ക്കായി 💁‍♀️, നമുക്ക് മാസത്തെ കോളം ആദ്യ സ്ഥാനത്തേക്ക് മാറ്റാം, അതായത് `Package` കോളത്തിന് മുമ്പ്.\n", + "\n", + "കോളം സ്ഥാനങ്ങൾ മാറ്റാൻ `dplyr::relocate()` ഉപയോഗിക്കുന്നു.\n" + ], + "metadata": { + "id": "qql1SowfbdnP" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Create a new data frame new_pumpkins\n", + "new_pumpkins <- new_pumpkins %>% \n", + " relocate(Month, .before = Package)\n", + "\n", + "new_pumpkins %>% \n", + " slice_head(n = 7)" + ], + "outputs": [], + "metadata": { + "id": "JJ1x6kw8bixF" + } + }, + { + "cell_type": "markdown", + "source": [ + "നല്ല ജോലി!👌 നിങ്ങൾക്ക് ഇപ്പോൾ ഒരു ശുചിത്വം പുലർത്തിയ, ക്രമീകരിച്ച ഡാറ്റാസെറ്റ് ലഭിച്ചു, അതിൽ നിങ്ങൾക്ക് നിങ്ങളുടെ പുതിയ റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കാം!\n", + "
\n" + ], + "metadata": { + "id": "y8TJ0Za_bn5Y" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 4. ggplot2 ഉപയോഗിച്ച് ഡാറ്റാ ദൃശ്യീകരണം\n", + "\n", + "

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

ഡസാനി മടിപള്ളി ഒരുക്കിയ ഇൻഫോഗ്രാഫിക്
\n", + "\n", + "\n", + "\n", + "\n", + "ഇങ്ങനെ ഒരു *ബുദ്ധിമുട്ടുള്ള* പ്രയോഗമുണ്ട്:\n", + "\n", + "> \"സാധാരണ ഗ്രാഫ് ഡാറ്റാ അനലിസ്റ്റിന്റെ മനസ്സിലേക്ക് മറ്റേതെങ്കിലും ഉപകരണത്തേക്കാൾ കൂടുതൽ വിവരങ്ങൾ കൊണ്ടുവന്നു.\" --- ജോൺ ടുക്കി\n", + "\n", + "ഡാറ്റാ സയന്റിസ്റ്റിന്റെ ഒരു ഭാഗം അവർ പ്രവർത്തിക്കുന്ന ഡാറ്റയുടെ ഗുണമേന്മയും സ്വഭാവവും പ്രദർശിപ്പിക്കുകയാണ്. ഇതിന്, അവർ പലപ്പോഴും രസകരമായ ദൃശ്യീകരണങ്ങൾ, അല്ലെങ്കിൽ പ്ലോട്ടുകൾ, ഗ്രാഫുകൾ, ചാർട്ടുകൾ സൃഷ്ടിക്കുന്നു, ഡാറ്റയുടെ വ്യത്യസ്ത വശങ്ങൾ കാണിക്കുന്ന. ഈ രീതിയിൽ, അവർ ദൃശ്യമായി ബന്ധങ്ങളും ഇടവേളകളും കാണിക്കാൻ കഴിയും, സാധാരണയായി കണ്ടെത്താൻ ബുദ്ധിമുട്ടുള്ളവ.\n", + "\n", + "ദൃശ്യീകരണങ്ങൾ ഡാറ്റയ്ക്ക് ഏറ്റവും അനുയോജ്യമായ മെഷീൻ ലേണിംഗ് സാങ്കേതിക വിദ്യ നിർണ്ണയിക്കുന്നതിനും സഹായിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു ലൈനിനെ പിന്തുടരുന്ന പോലെ തോന്നുന്ന സ്കാറ്റർപ്ലോട്ട്, ഡാറ്റ ലീനിയർ റെഗ്രഷൻ അഭ്യാസത്തിന് നല്ല സ്ഥാനാർത്ഥിയാണെന്ന് സൂചിപ്പിക്കുന്നു.\n", + "\n", + "R ഗ്രാഫുകൾ സൃഷ്ടിക്കാൻ നിരവധി സിസ്റ്റങ്ങൾ നൽകുന്നു, പക്ഷേ [`ggplot2`](https://ggplot2.tidyverse.org/index.html) ഏറ്റവും സുന്ദരവും ബഹുമുഖവുമാണ്. `ggplot2` നിങ്ങൾക്ക് **സ്വതന്ത്ര ഘടകങ്ങൾ സംയോജിപ്പിച്ച്** ഗ്രാഫുകൾ രൂപകൽപ്പന ചെയ്യാൻ അനുവദിക്കുന്നു.\n", + "\n", + "Price, Month കോളങ്ങളിലേക്കുള്ള ഒരു ലളിതമായ സ്കാറ്റർ പ്ലോട്ടിൽ നിന്ന് തുടങ്ങാം.\n", + "\n", + "ഇതിനായി, നാം [`ggplot()`](https://ggplot2.tidyverse.org/reference/ggplot.html) ഉപയോഗിച്ച് ഒരു ഡാറ്റാസെറ്റ്, എസ്റ്ററ്റിക് മാപ്പിംഗ് ( [`aes()`](https://ggplot2.tidyverse.org/reference/aes.html) ഉപയോഗിച്ച്) നൽകുകയും, സ്കാറ്റർ പ്ലോട്ടുകൾക്കായി [`geom_point()`](https://ggplot2.tidyverse.org/reference/geom_point.html) പോലുള്ള ലെയറുകൾ ചേർക്കുകയും ചെയ്യും.\n" + ], + "metadata": { + "id": "mYSH6-EtbvNa" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Set a theme for the plots\n", + "theme_set(theme_light())\n", + "\n", + "# Create a scatter plot\n", + "p <- ggplot(data = new_pumpkins, aes(x = Price, y = Month))\n", + "p + geom_point()" + ], + "outputs": [], + "metadata": { + "id": "g2YjnGeOcLo4" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഇത് ഒരു ഉപകാരപ്രദമായ പ്ലോട്ട് ആണോ 🤷? ഇതിൽ നിന്നു നിങ്ങൾക്ക് എന്തെങ്കിലും അത്ഭുതം ഉണ്ടോ?\n", + "\n", + "ഇത് പ്രത്യേകിച്ച് ഉപകാരപ്രദമല്ല, കാരണം ഇത് ചെയ്യുന്നത് നിങ്ങളുടെ ഡാറ്റ ഒരു നൽകിയ മാസത്തിലെ പോയിന്റുകളുടെ വ്യാപ്തിയായി പ്രദർശിപ്പിക്കുകയാണ്.\n", + "
\n" + ], + "metadata": { + "id": "Ml7SDCLQcPvE" + } + }, + { + "cell_type": "markdown", + "source": [ + "### **നാം ഇത് എങ്ങനെ പ്രയോജനപ്പെടുത്താം?**\n", + "\n", + "ചാർട്ടുകളിൽ പ്രയോജനകരമായ ഡാറ്റ പ്രദർശിപ്പിക്കാൻ, സാധാരണയായി ഡാറ്റയെ ഏതെങ്കിലും വിധത്തിൽ ഗ്രൂപ്പ് ചെയ്യേണ്ടതുണ്ട്. ഉദാഹരണത്തിന്, നമ്മുടെ കേസിൽ, ഓരോ മാസത്തിനും പംപ്കിൻസിന്റെ ശരാശരി വില കണ്ടെത്തുന്നത് നമ്മുടെ ഡാറ്റയിലെ അടിസ്ഥിത പാറ്റേണുകൾക്കു കൂടുതൽ洞察ങ്ങൾ നൽകും. ഇത് നമ്മെ മറ്റൊരു **dplyr** ഫ്ലൈബൈയിലേക്ക് നയിക്കുന്നു:\n", + "\n", + "#### `dplyr::group_by() %>% summarize()`\n", + "\n", + "R-ൽ ഗ്രൂപ്പ് ചെയ്ത ആഗ്രിഗേഷൻ എളുപ്പത്തിൽ കണക്കാക്കാൻ കഴിയും\n", + "\n", + "`dplyr::group_by() %>% summarize()`\n", + "\n", + "- `dplyr::group_by()` പൂർണ്ണ ഡാറ്റാസെറ്റിൽ നിന്നുള്ള വിശകലന യൂണിറ്റ് ഓരോ ഗ്രൂപ്പുകളിലേക്കു മാറ്റുന്നു, ഉദാഹരണത്തിന് ഓരോ മാസം.\n", + "\n", + "- `dplyr::summarize()` നിങ്ങൾ നിർദ്ദേശിച്ച സംഗ്രഹ സാങ്കേതികവിദ്യകൾക്കായി ഓരോ ഗ്രൂപ്പിംഗ് വേരിയബിളിനും ഒരു കോളവും ഓരോ സംഗ്രഹ സാങ്കേതികവിദ്യയ്ക്കും ഒരു കോളവും ഉള്ള പുതിയ ഡാറ്റാ ഫ്രെയിം സൃഷ്ടിക്കുന്നു.\n", + "\n", + "ഉദാഹരണത്തിന്, `dplyr::group_by() %>% summarize()` ഉപയോഗിച്ച് പംപ്കിൻസിനെ **മാസം** കോളം അടിസ്ഥാനമാക്കി ഗ്രൂപ്പാക്കി, ഓരോ മാസത്തിനും **ശരാശരി വില** കണ്ടെത്താം.\n" + ], + "metadata": { + "id": "jMakvJZIcVkh" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Find the average price of pumpkins per month\r\n", + "new_pumpkins %>%\r\n", + " group_by(Month) %>% \r\n", + " summarise(mean_price = mean(Price))" + ], + "outputs": [], + "metadata": { + "id": "6kVSUa2Bcilf" + } + }, + { + "cell_type": "markdown", + "source": [ + "സംക്ഷിപ്തം!✨\n", + "\n", + "മാസങ്ങൾ പോലുള്ള വർഗ്ഗീയ സവിശേഷതകൾ ബാർ പ്ലോട്ട് 📊 ഉപയോഗിച്ച് മികച്ച രീതിയിൽ പ്രതിനിധീകരിക്കാം. ബാർ ചാർട്ടുകൾക്ക് ഉത്തരവാദിയായ ലെയറുകൾ `geom_bar()` ഉം `geom_col()` ഉം ആണ്. കൂടുതൽ അറിയാൻ `?geom_bar` കാണുക.\n", + "\n", + "ഒന്ന് തയ്യാറാക്കാം!\n" + ], + "metadata": { + "id": "Kds48GUBcj3W" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Find the average price of pumpkins per month then plot a bar chart\r\n", + "new_pumpkins %>%\r\n", + " group_by(Month) %>% \r\n", + " summarise(mean_price = mean(Price)) %>% \r\n", + " ggplot(aes(x = Month, y = mean_price)) +\r\n", + " geom_col(fill = \"midnightblue\", alpha = 0.7) +\r\n", + " ylab(\"Pumpkin Price\")" + ], + "outputs": [], + "metadata": { + "id": "VNbU1S3BcrxO" + } + }, + { + "cell_type": "markdown", + "source": [ + "🤩🤩ഇത് കൂടുതൽ പ്രയോജനകരമായ ഡാറ്റാ ദൃശ്യീകരണമാണ്! പംപ്കിനുകളുടെ ഏറ്റവും ഉയർന്ന വില സെപ്റ്റംബർ, ഒക്ടോബർ മാസങ്ങളിൽ ഉണ്ടാകുമെന്ന് ഇത് സൂചിപ്പിക്കുന്ന 듯യുണ്ട്. ഇത് നിങ്ങളുടെ പ്രതീക്ഷയ്ക്ക് അനുയോജ്യമാണോ? എന്തുകൊണ്ട് അല്ലെങ്കിൽ എന്തുകൊണ്ട്?\n", + "\n", + "രണ്ടാം പാഠം പൂർത്തിയാക്കിയതിന് അഭിനന്ദനങ്ങൾ 👏! നിങ്ങൾ മോഡൽ നിർമ്മാണത്തിനായി നിങ്ങളുടെ ഡാറ്റ തയ്യാറാക്കി, പിന്നീട് ദൃശ്യീകരണങ്ങൾ ഉപയോഗിച്ച് കൂടുതൽ洞察ങ്ങൾ കണ്ടെത്തി!\n" + ], + "metadata": { + "id": "zDm0VOzzcuzR" + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/2-Regression/2-Data/solution/notebook.ipynb b/translations/ml/2-Regression/2-Data/solution/notebook.ipynb new file mode 100644 index 000000000..7b08e1273 --- /dev/null +++ b/translations/ml/2-Regression/2-Data/solution/notebook.ipynb @@ -0,0 +1,439 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## പമ്പ്കിനുകൾക്കുള്ള ലീനിയർ റെഗ്രഷൻ - പാഠം 2\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
70BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN9/24/1615.015.015.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
71BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN9/24/1618.018.018.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
72BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/1/1618.018.018.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
73BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/1/1617.017.017.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
74BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/8/1615.015.015.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

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

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

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

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

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

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

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

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

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

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

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

5 rows × 26 columns

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

415 rows × 4 columns

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

5 rows × 26 columns

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

5 rows × 26 columns

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

5 rows × 48 columns

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

5 rows × 49 columns

\n", + "
" + ], + "text/plain": [ + " ord__Item Size cat__City Name_ATLANTA cat__City Name_BALTIMORE \n", + "2 1.0 0.0 1.0 \\\n", + "3 1.0 0.0 1.0 \n", + "4 3.0 0.0 1.0 \n", + "5 3.0 0.0 1.0 \n", + "6 1.0 0.0 1.0 \n", + "\n", + " cat__City Name_BOSTON cat__City Name_CHICAGO cat__City Name_COLUMBIA \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__City Name_DALLAS cat__City Name_DETROIT cat__City Name_LOS ANGELES \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__City Name_MIAMI ... cat__Origin_NEW JERSEY cat__Origin_NEW YORK \n", + "2 0.0 ... 0.0 0.0 \\\n", + "3 0.0 ... 0.0 0.0 \n", + "4 0.0 ... 0.0 0.0 \n", + "5 0.0 ... 0.0 0.0 \n", + "6 0.0 ... 0.0 0.0 \n", + "\n", + " cat__Origin_NORTH CAROLINA cat__Origin_OHIO cat__Origin_PENNSYLVANIA \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__Origin_TENNESSEE cat__Origin_TEXAS cat__Origin_VERMONT \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__Origin_VIRGINIA Color \n", + "2 0.0 0 \n", + "3 1.0 0 \n", + "4 0.0 0 \n", + "5 0.0 0 \n", + "6 0.0 0 \n", + "\n", + "[5 rows x 49 columns]" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.preprocessing import LabelEncoder\n", + "# Encode the 'Color' column using label encoding\n", + "label_encoder = LabelEncoder()\n", + "encoded_label = label_encoder.fit_transform(pumpkins['Color'])\n", + "encoded_pumpkins = encoded_features.assign(Color=encoded_label)\n", + "encoded_pumpkins.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ORANGE', 'WHITE']" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Let's look at the mapping between the encoded values and the original values\n", + "list(label_encoder.inverse_transform([0, 1]))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ഫീച്ചറുകളും ലേബലും തമ്മിലുള്ള ബന്ധങ്ങൾ വിശകലനം ചെയ്യൽ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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drtdw4cPN7s0t/DII4+oZ8+eeuaZZzR06FBt27ZNixcv1uLFi8vdp4eHh373u99p0KBBGj58uPLz87V06VI9+OCDrndioFxeeeUVo1mzZoanp6fRtWtXY+vWrWaX5BYSEhIMSSW2UaNGmV3ar15p112SsWTJErNLcwtjxowxQkJCDE9PT6NRo0bGbbfdZnzxxRdml+XWIiMjjUmTJpldhlsYNmyYERgYaHh6ehpNmjQxhg0bZhw6dMjsstzKZ599ZrRv397w8vIyIiIijMWLF1e4z8zMTGPYsGFGw4YNjaCgIOPhhx828vLyXD6fdWIBAABgOUwnAAAAQJX74YcfXDrO1bm2jMQCAACgytntdscTuUqLn5f3FxcXu9QfI7EAAACoFuvWrVPDhg0lScePH9fQoUP11VdfSZLOnDmjvn37utwXIRYAAADVol27do6nnvr4+Mhmszme2pWZmVmmvlgnFgAAAJZDiAUAAECVq+zbsAixAAAAqHI2m+26+0o75moIsQDgBo4cOSKbzaaUlBSzSwHgppYtW6a6des63rdo0UI5OTmO9w0aNNCWLVtc7o8QCwDlMHr0aN11112O91FRUZo8ebJp9aSlpelPf/qTgoKC5O3traZNm2rw4ME6cOCAJCk4OFjp6ek8IhWAaYYOHSovL6+rttvtdnXt2tXl/lidAAAs7uLFi+rfv79at26tFStWKDAwUMePH9eqVat09uxZSZd+OAQEBJhbKABUIkZiAaCCRo8eraSkJL300kuy2Wyy2Ww6cuSIJGnPnj0aNGiQfHx81LhxY40cOVKnT592nBsVFaUJEyZo8uTJqlevnho3bqzXX39d586dU0xMjHx9fRUWFqZVq1Zd9fP37t2rw4cPa+HCherevbtCQkLUq1cvzZ49W927d5dUcjrB6NGjHbVeuSUmJkqSCgoKNHXqVDVp0kS1a9dWt27dHG0A8EtAiAWACnrppZfUo0cPjR07Vunp6UpPT1dwcLDOnj2rvn37qnPnzkpOTtbq1at18uRJDR061On8t956Sw0bNtS2bds0YcIEjRs3TkOGDFHPnj21c+dO3X777Ro5cqT++9//lvr5jRo1Uo0aNfThhx+qqKjI5Zov15qenq5JkybJ399fERERkqTx48dry5YtWr58ub799lsNGTJEAwcO1MGDByt2sQCgkvDYWQAoh9GjR+vs2bP6+OOPJV0aUe3UqZPmzZvnOGb27NnatGmT1qxZ49h3/PhxBQcHKzU1VeHh4YqKilJRUZE2bdokSSoqKpKfn5/uvvtuvf3225KkjIwMBQYGasuWLY6R1Z9bsGCBHnvsMdntdnXp0kV9+vTRiBEj1KJFC0mXRmKbN2+uXbt2qVOnTk7nrlixQiNGjNC6devUq1cvHT16VC1atNDRo0cVFBTkOK5fv37q2rWrnnnmmYpePgCoMEZiAaCKfPPNN0pISJCPj49juzzSefjwYcdxl59WI12au9qgQQPdcMMNjn2Xn25zrafZxMbGKiMjQ0uXLlWPHj30wQcfqF27dlq7du01a9y1a5dGjhyp+fPnq1evXpKk3bt3q6ioSOHh4U61JyUlOdUNAGbixi4AqCJ5eXmKjo7Ws88+W6ItMDDQ8bpmzZpObTabzWnf5XUTi4uLr/l5vr6+io6OVnR0tGbPnq0BAwZo9uzZ6t+/f6nHZ2Rk6M4779QDDzyg+++/36luu92uHTt2yG63O53j4+NzzRoAoLoQYgGgEnh6epaYj3rjjTfqo48+UmhoqDw8qvfbrc1mU0REhL766qtS2/Pz8zV48GBFREToxRdfdGrr3LmzioqKlJmZqVtvvbU6ygWAMmM6AQBUgtDQUH399dc6cuSITp8+reLiYsXGxurMmTMaPny4tm/frsOHD2vNmjWKiYlx+QYsV6SkpGjw4MH68MMPtW/fPh06dEjx8fF64403NHjw4FLPeeihh3Ts2DG9/PLLOnXqlDIyMpSRkaELFy4oPDxcI0aM0H333acVK1YoLS1N27ZtU1xcnP79739XWt0AUBGMxAJAJZg6dapGjRqltm3b6vz580pLS1NoaKg2b96sxx9/XLfffrsKCgoUEhKigQMHqkaNyhtDaNq0qUJDQzVr1izHUlqX3z/yyCOlnpOUlKT09HS1bdvWaX9CQoKioqK0ZMkSzZ49W3/5y1/0448/qmHDhurevbt+97vfVVrdAFARrE4AAAAAy2E6AQAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBwPswsAAADAr19MTIxLxy1ZssSl42yGYRgVKQgAAAC4nrvvvtvx+ty5c9qwYYOio6Md+woKCrRq1SoVFxe71B8hFgAAANUqLS1NHTp0UG5urmPfqVOnFBAQoKKiIpf6YE4sAAAAqlXNmjV18eJFp335+fny8HB9pishtpwMw1BOTo4YyAYAACiboKAgGYahdevWOfb95z//UbNmzVzugxu7yik3N1d+fn46efKk6tSpY3Y5bsUwDBUUFEiSvLy8ZLPZTK7IfXH9AQDlUaNGDY0YMULR0dEaMGCAzp8/r3Xr1mnmzJku98Gc2HLKycmRn5+fBgwYoJo1a5pdDmCKDz74QN7e3maXAQCwoPPnz2vWrFlav369PD09deedd+rRRx9VjRquTRRgJBYAAADVrlatWpozZ065zyfEVtCM/t+pvo/ZVbiXgkKbnlzdVpL09MB98vLgjwnV6UJRDT2xqo3ZZQAALCYpKcml4yIjI106jhBbQTVrFMvLgzmBZvHyMAix1c619fuAXxvm4wMV07dvXxmGcc3/dgzDcHmdWEJsBV0o4psYALiDgoICDRkyRBLzwYHy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I0NLly7VfffdV+rcUx8fH02aNElTp07Vrl27VFRUpLffflsvvPCCbr/9dqdj77rrLi1btkwPP/xwiX66du2qu+++W9OmTXPa37lzZ0VEROj555/X0KFDrzovtry8vLyu+R/NxIkT+VN2FbPb7ZowYYLmzZtXoo3rD6DKXfGjzdvbW97e3ubV4uZ40IG11atXTzabTd9884327Nmjd955RyNHjpS3t7diYmI0ffp0l/opc9KbP3++CgoKNGDAAG3cuFHHjh3T6tWr1b9/fzVp0kRPP/30Vc996KGH9N133+mjjz7S559/rqysLN1///1q376903bPPfdcdUqBJD399NPasGGDUlNTHftsNpuWLFmi1NRU9erVS59++qkOHjyoffv2adGiRTp16lSJkHP27FllZGQ4befOnSvrJVHDhg3Vt2/fMp+HsrvtttvUsGFDp31cfwAArKl9+/Z69tlnlZaWpiFDhrg8ZVQqR4ht1aqVkpOT1aJFCw0dOlQtW7bUgw8+qD59+mjLli2qX7/+Vc+tX7++7rvvPs2cOVPx8fHq169fqVMG7rnnHiUnJ+vbb78ttZ/w8HCNGTOmxJ2h3bt3144dO9S6dWvFxsaqbdu26tmzp5YtW6a5c+c6Le0lXVr2KzAw0Gm72o1D18KC+9Xr59eb6w8AgDV98803evTRRxUSEqKPP/64TD/Ty7xOrCSFhITozTffvOYxiYmJpe4v7WEHP9e1a1enm8dKu5Hstdde02uvvVZif3h4+HVru1qf5dGjR49S161F1fH399ctt9yiL7/8UrfccgvXH27lymlNV87RBH7tvLy89MEHHzhew7p++uknGYahG264QUePHtWQIUP04Ycfqnv37mXqp1whFv/zyCOPmF2CW3r88cdLPPQAcAdXzgVkWiDcyeXH2MO6nnvuOX300UdKTk5Wjx49NGbMGA0bNky/+c1vytUfIRYALOpCUQ1JxWaX4TYuFlXuDcOAu3nxxRc1cuRIvf322woPD69wf4RYALCoJ1aV/uAZAPglOn78uOMm+6ysLB08eFA2m01hYWGqV69emfvj10oAAABUObvdrrS0NP32t79Vw4YN1b17d3Xr1k0NGzbUb3/7W/3www9l6s9m8ADicsnJyZGfn5+ys7NVp04ds8sB4CYMw3B6BDaqz5XXvk6dOpW+Hjnwa3fy5EndeOON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dWulpKQoOztbH374oUaNGqWkpCSCbDU4duyYJk2apLVr18rb29vsctzOoEGDHK87dOigbt26KSQkRO+//z7TaapBcXGxunTpomeeeUaS1LlzZ+3Zs0eLFi3SqFGjXO4nJibmuscYhqE333zTpf4YiS2jhg0bym636+TJk077T548qYCAAJOqAqrP+PHj9fnnnyshIaFMf/ZBxXl6eiosLEw33XST4uLi1LFjR7300ktml+UWduzYoczMTN14443y8PCQh4eHkpKS9PLLL8vDw0NFRUVml+hW6tatq/DwcB06dMjsUtxCYGBgiV+W27RpU+YpHdnZ2Y7txIkT+te//uW0LzMzU2+//bbL/TESW0aenp666aabtH79escNRcXFxVq/fr3Gjx9vbnFAFTIMQxMmTNDKlSuVmJio5s2bm12S2ysuLlZBQYHZZbiF2267Tbt373baFxMTo4iICD3++OOy2+0mVeae8vLydPjwYY0cOdLsUtxCr169Siyp+N133ykkJKRM/axYscLxOi0tTR06dHDad+rUqTINCBJiy2HKlCkaNWqUunTpoq5du2revHk6d+6cS8PkqJi8vDyn37zT0tKUkpKi+vXrq1mzZiZW9usXGxurd999V5988ol8fX0dc8D9/PxUq1Ytk6v79Zs+fboGDRqkZs2aKTc3V++++64SExO1Zs0as0tzC76+viXmf9euXVsNGjRgXng1mDp1qqKjoxUSEqITJ05oxowZstvtGj58uNmluYVHHnlEPXv21DPPPKOhQ4dq27ZtWrx4sRYvXlzuPmvWrKmLFy867cvPzy/b0mkGyuWVV14xmjVrZnh6ehpdu3Y1tm7danZJbiEhIcGQVGIbNWqU2aX96pV23SUZS5YsMbs0tzBmzBgjJCTE8PT0NBo1amTcdtttxhdffGF2WW4tMjLSmDRpktlluIVhw4YZgYGBhqenp9GkSRNj2LBhxqFDh8wuy6189tlnRvv27Q0vLy8jIiLCWLx4cYX6KyoqMjw9PY21a9c69i1atMgICwtzuQ/WiQUAAEC1GzNmjJYtW6YBAwbo/PnzWrdunWbOnKm//vWvLp1PiAUAAEC1O3/+vGbNmqX169fL09NTd955px599FHVqOHaugOEWAAAAFgON3YBAACgyiUlJbl0XGRkpEvHMRILAACAKme322UYhmw2m2Nfae+Li4td6o+HHQAAAKBapKamKisrS1lZWdq1a5d8fHx05swZZWVl6bvvvnMKtNfDdAIAAABUizp16qhOnTqSJB8fHxmGIT8/P0mX1oktywQBRmIBAABgOYRYAAAAVLnKvg2LEAsAbuDIkSOy2WxKSUkxuxQAburn811r1qyp0NDQax5zLYRYACiH0aNH66677nK8j4qK0uTJk02rJy0tTX/6058UFBQkb29vNW3aVIMHD9aBAwckScHBwUpPT1f79u1NqxGAe9uyZYsaNGjgeB8cHKzdu3c73vv7+ys9Pd3l/rixCwAs7uLFi+rfv79at26tFStWKDAwUMePH9eqVat09uxZSZeWtgkICDC3UABurWvXrtc9xt/f3+X+GIkFgAoaPXq0kpKS9NJLL8lms8lms+nIkSOSpD179mjQoEHy8fFR48aNNXLkSJ0+fdpxblRUlCZMmKDJkyerXr16aty4sV5//XWdO3dOMTEx8vX1VVhYmFatWnXVz9+7d68OHz6shQsXqnv37goJCVGvXr00e/Zsde/eXVLJ6QSjR4921HrllpiYKEkqKCjQ1KlT1aRJE9WuXVvdunVztAHALwEhFgAq6KWXXlKPHj00duxYpaenKz09XcHBwTp79qz69u2rzp07Kzk5WatXr9bJkyc1dOhQp/PfeustNWzYUNu2bdOECRM0btw4DRkyRD179tTOnTt1++23a+TIkfrvf/9b6uc3atRINWrU0IcffqiioiKXa75ca3p6uiZNmiR/f39FRERIksaPH68tW7Zo+fLl+vbbbzVkyBANHDhQBw8erNjFAoBKwhO7AKAcRo8erbNnz+rjjz+WdGlEtVOnTpo3b57jmNmzZ2vTpk1as2aNY9/x48cVHBys1NRUhYeHKyoqSkVFRdq0aZMkqaioSH5+frr77rv19ttvS5IyMjIUGBioLVu2OEZWf27BggV67LHHZLfb1aVLF/Xp00cjRoxQixYtJF0aiW3evLl27dqlTp06OZ27YsUKjRgxQuvWrVOvXr109OhRtWjRQkePHlVQUJDjuH79+qlr16565plnKnr5AKDCGIkFgCryzTffKCEhQT4+Po7t8kjn4cOHHcd16NDB8dput6tBgwa64YYbHPsaN24sScrMzLzqZ8XGxiojI0NLly5Vjx499MEHH6hdu3Zau3btNWvctWuXRo4cqfnz56tX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69y5c2aX5haaNm2qOXPmaMeOHUpOTlbfvn01ePBg7d271+zS3M727dv12muvqUOHDmaX4lbatWun9PR0x/bll1+aXZLbyMrKUq9evVSzZk2tWrVK+/bt0wsvvKB69epV2mf8/ClgLj0VzECZde3a1YiNjXW8LyoqMoKCgoy4uDgTq3I/koyVK1eaXYbbyszMNCQZSUlJZpfiturVq2f885//NLsMt5Kbm2u0atXKWLt2rREZGWlMmjTJ7JLcwowZM4yOHTuaXYbbevzxx41bbrml0vpr06aNcfr0acf7rKwspwx19uxZY9CgQdfth5HYMrpw4YJ27Nihfv36OfbVqFFD/fr105YtW0ysDKhe2dnZkqT69eubXIn7KSoq0vLly3Xu3Dn16NHD7HLcSmxsrO644w6nnwGoHgcPHlRQUJBatGihESNG6OjRo2aX5DY+/fRTdenSRUOGDJG/v786d+6s119/vdz97du3Tw0aNHC8r1u3rqZNm+Z47+fnp//85z/X7YcQW0anT59WUVGR4466yxo3bqyMjAyTqgKqV3FxsSZPnqxevXqpffv2ZpfjNnbv3i0fHx95eXnp4Ycf1sqVK9W2bVuzy3Iby5cv186dOxUXF2d2KW6nW7duevPNN7V69Wq9+uqrSktL06233uq4mx1V6/vvv9err76qVq1aac2aNRo3bpwmTpyot956y9S6eNgBgDKLjY3Vnj17mJNWzVq3bq2UlBRlZ2frww8/1KhRo5SUlESQrQbHjh3TpEmTtHbtWnl7e5tdjtsZNGiQ43WHDh3UrVs3hYSE6P3339f9999vYmXuobi4WF26dNEzzzwjSercubP27NmjRYsWadSoUabVxUhsGTVs2FB2u10nT5502n/y5EkFBASYVBVQfcaPH6/PP/9cCQkJatq0qdnluBVPT0+FhYXppptuUlxcnDp27KiXXnrJ7LLcwo4dO5SZmakbb7xRHh4e8vDwUFJSkl5++WV5eHhcdz1LVK66desqPDxchw4dMrsUtxAYGFjil+U2bdqYPqWDEFtGnp6euummm7R+/XrHvuLiYq1fv565afhVMwxD48eP18qVK7VhwwY1b97c7JLcXnFxsQoKCswuwy3cdttt2r17t1JSUhxbly5dNGLECKWkpMhut5tdolvJy8vT4cOHFRgYaHYpbqFXr14lllT87rvvFBIS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0blz5zRy5Eh5enpaXffwww8rMTFRTz31VJntTJ8+XW3btrXqNTWZTFq0aJF69+6t8PBwTZ48Wa1bt9aVK1e0fv16nTp1Smaz2aqd8+fPKzs72+qYh4eH6tSpU97HAgAAABts2bJFnTt3LnX82qQBx48fV1xcnNasWXPDdso9JrZVq1ZKT09XQECAHn30UbVs2VJPPvmkoqKitGnTJsscsWWpX7++HnvsMU2dOlWJiYnq1atXqQArXQ2x6enp+uGHH8psJygoSCNGjNClS5esjnfr1k3btm1TcHCw4uPj1aZNG3Xv3l1LlizRW2+9VWp+2ri4OPn4+Fhts2fPLu8jAQAAgI3KCrDXfPjhh2rfvn2pjseymAwWgK6QvLw8eXp6auubfmpwO0vPwnkUFpk08V9tJUmvP7Bbbi78FgLncOmKSc/+++qv/U8//bTUVJMAKu7UqVMaNWqUvvnmG73xxht64oknbnpPuYcTwNqVkhoqLLr5dcBvRWGRqczPwG/dlZL//8fLW5l3HHB2v159taioSO+++67atWunnTt3ys/Pz6Z2CLG36OU1QapZs6a9ywDs4sVVbexdAgDAwXz55ZdW+0VFRTp37pwGDRpkc4CVCLEAAACoRt9//32pY1999ZWeeOIJff7550pMTFSLFi1u2g5jYivo2pjYkydPMmcsnIphGCosLJR0df5k/lkVzohf+0DlO3v2rEaNGqVVq1bptdde0x//+McbXk+IraBrITY3N5cQCwAAUEk++eQTxcfH69y5cze8rkLLzgIA4GwMw9ClS5d06dIlm5dfB1B+/fv3v+E0XNcQYgEAsEFhYaEGDx6swYMHW4bUAKh8Fy9e1Nq1a296HSEWAAAb/HKBnV8vtgOg+hFiAQAA4HCYYgsAABuUlJSU+RlA+ZjN5koZV06IBQDABvn5+Vaf69evb8dqAMe1cuXKG57Pzc1VbGzsTdup8uEECxYskIeHh4qK/n9t1oKCAtWsWVORkZFW16akpMhkMunw4cPy9/fXrFmzSrU3depUdezYscx9f39/mUym627Dhw+XpOueX7p0aSX/9AAAAPilBx988IZbnz59bGqnyntio6KiVFBQoPT0dHXr1k2StGHDBnl7e2vLli26dOmSatWqJUlKTk5W8+bN1bJlywp919atW1VcXCxJ+u677/Twww9r//79lnlca9eubbl20aJF6tu3r9X9devWrdD3AgAAwDZXrlxRzZo1b7mdKu+JDQ4Olo+Pj1JSUizHUlJSNGDAALVo0UKbN2+2Oh4VFVXh72rYsKG8vb3l7e1t+WeeRo0aWY55enparq1bt67l+LXtWpgGAABA1WjSpInGjx+vnTt3lnnebDbL39//pu1Uy+wEUVFRSk5OtuwnJycrMjJSERERluMXL17Uli1bbinEAgAA4H/bpEmTlJaWptDQUHXt2lXvvvuu1ZhzLy8v/fjjjzdtp9pC7MaNG1VUVKT8/Hxt375dERER6tGjh6WHdtOmTSosLLQKsc8//7zc3d2tthkzZlRKTdHR0aXaPnr06HWvLywsVF5entUGAACA8nnmmWf03XffKTU1Vdu2bdO8efPk7e2t2NhYpaam2txOtYTYyMhIXbhwQVu3btWGDRsUFBSkhg0bKiIiwjIuNiUlRQEBAWrevLnlvmeffVYZGRlW21NPPVUpNb311lul2vb19b3u9QkJCfL09LRszZo1q5Q6AAAAnFG9evVkMpm0Y8cObdmyRd7e3ho2bJiCgoKUkJBw0/urJcQGBgaqadOmSk5OVnJysiIiIiRJvr6+atasmb777jslJyerZ8+eVvc1aNBAgYGBVltlTWni7e1dqm0Xl+u/5zZ58mTl5uZatmPHjlVKHQAAAM6uXbt2eu2115SZmanBgwfrL3/5y03vqbZ5YqOiopSSkqJz587p2WeftRzv0aOHkpKSlJaWptGjR1dXOeXm5uYmNzc3e5cBAADwm7Njxw599NFHWrJkiTw9PfXaa6/d9J5qDbHx8fG6cuWKpSdWkiIiIjRmzBhdvny5Wl/qOn/+vLKzs62OeXh4qE6dOtVWAwAAgLM6c+aMDMPQHXfcoaNHj2rw4MFavny5ZUrWm6nWEHvx4kWFhISocePGluMRERHKz8+3TMVVXeLi4kodS0hI0KRJk6qtBgAAAGfzt7/9TStWrFB6errCwsI0YsQIDRkyRLfddlu52jEZlbF4rRPKy8uTp6encnNzLYspAAB+u86ePWtZCnPx4sUsOwtUkI+Pjx577DGNHDlSQUFBFW6n2npiAQBwZDVq1CjzM4DyOX78uMxm8y23Q4gFAABAtfnoo49suu7av3xcDyEWAAAA1WbEiBGqU6fODac2NQyDEAsAQGWoVatWmZ8BlN+GDRvUoUOHW2qDEFtB196HY/lZAHAOhmEoMTFR0tWlyC9fvmznigD78PDwkMlksncZhNiKOnPmjCSx/CwAAHAqOTk5atiwob3LIMRW1LWpVY4ePSpPT087V+N88vLy1KxZMx07dowpzuyA529fPH/74dnbF8/fvq49f1dXV3uXIokQW2HXplfx9PTkfyQ7uv3223n+dsTzty+ev/3w7O2L529ftzqUoGXLlnJzc7vlOgixAAAAqDYHDhyolHYIsQAAAKg2cXFxNl23aNGiG55nyZEKcnNz05QpUyqlOxzlx/O3L56/ffH87Ydnb188f/uqrOf/4YcfKicnR7m5ucrNzdWJEyf00UcfWfZzcnK0ePHim7ZjMq7NFQUAAABUMbPZrBMnTqhx48aSpMzMTLVv3175+fmSpFOnTsnb21vFxcU3bIeeWAAAANjNr/tTDcModawshFgAAAA4HEIsAAAA7OrX03bZMo0XIRYAAADVJjg4WC4u/z9BVv369fXCCy9Y9t3c3NSnT5+btkOIraC5c+fK399ftWrVUteuXZWWlmbvkpzC+vXr1b9/f/n6+spkMumLL76wd0lOIyEhQXfddZc8PDzUqFEjDRw4UPv377d3WU5j/vz5at++vWWS97CwMCUlJdm7LKc1c+ZMmUwmjR8/3t6lOIWpU6fKZDJZbSEhIfYuy6n8/PPPGjp0qLy8vFS7dm3dcccdSk9Pr1Bbe/bskZeXl2W/bt26mjRpkmXf09NT//nPf27aDiG2ApYtW6ZnnnlGU6ZM0ffff68OHTqoT58+ysnJsXdpv3kXLlxQhw4dNHfuXHuX4nRSU1MVHx+vzZs3a82aNbpy5Yruu+8+Xbhwwd6lOYWmTZtq5syZ2rZtm9LT09WzZ08NGDBAu3fvtndpTmfr1q1699131b59e3uX4lTatm2rrKwsy/btt9/auySnce7cOYWHh6tmzZpKSkrSnj179MYbb6hevXp2rYsptiqga9euuuuuuzRnzhxJUklJiZo1a6axY8da/U0CVctkMmnlypUaOHCgvUtxSqdOnVKjRo2UmpqqHj162Lscp1S/fn397W9/08iRI+1ditMoKChQp06dNG/ePE2bNk0dO3bUrFmz7F3Wb97UqVP1xRdfKCMjw96lOKVJkyZp48aN2rBhg71LsUJPbDldvnxZ27ZtU69evSzHatSooV69emnTpk12rAyoXrm5uZKuBilUr+LiYi1dulQXLlxQWFiYvctxKvHx8br//vut/gxA9Th48KB8fX0VEBCgmJgYHT161N4lOY1//vOf6ty5swYPHqxGjRopNDRU7733nr3LIsSW1+nTp1VcXGyZoPeaxo0bKzs7205VAdWrpKRE48ePV3h4uNq1a2fvcpzGzp075e7uLjc3Nz311FNauXKl2rRpY++ynMbSpUv1/fffKyEhwd6lOJ2uXbvqgw8+0KpVqzR//nxlZmbqnnvusUyOj6r1448/av78+WrVqpVWr16t0aNH6+mnn7ZpVa2q5HLzSwDAWnx8vHbt2sWYtGoWHBysjIwM5ebmavny5YqNjVVqaipBthocO3ZM48aN05o1a1SrVi17l+N0+vXrZ/ncvn17de3aVX5+fvr0008ZTlMNSkpK1LlzZ82YMUOSFBoaql27dmnBggWKjY21W130xJZTgwYNZDabdfLkSavjJ0+elLe3t52qAqrPmDFj9K9//UvJyclq2rSpvctxKq6urgoMDNSdd96phIQEdejQQW+//ba9y3IK27ZtU05Ojjp16iQXFxe5uLgoNTVV77zzjlxcXG66PCYqV926dRUUFKRDhw7ZuxSn4OPjU+ovy61bt7b7kA5CbDm5urrqzjvv1Nq1ay3HSkpKtHbtWsam4TfNMAyNGTNGK1eu1Lp169SiRQt7l+T0SkpKVFhYaO8ynMK9996rnTt3KiMjw7J17txZMTExysjIkNlstneJTqWgoECHDx+Wj4+PvUtxCuHh4aWmVDxw4ID8/PzsVNFVDCeogGeeeUaxsbHq3LmzunTpolmzZunChQuKi4uzd2m/eQUFBVZ/887MzFRGRobq16+v5s2b27Gy3774+Hh98skn+vLLL+Xh4WEZA+7p6anatWvbubrfvsmTJ6tfv35q3ry58vPz9cknnyglJUWrV6+2d2lOwcPDo9T47zp16sjLy4tx4dVg4sSJ6t+/v/z8/HTixAlNmTJFZrNZ0dHR9i7NKUyYMEHdu3fXjBkz9OijjyotLU0LFy7UwoUL7VuYgQqZPXu20bx5c8PV1dXo0qWLsXnzZnuX5BSSk5MNSaW22NhYe5f2m1fWc5dkLFq0yN6lOYURI0YYfn5+hqurq9GwYUPj3nvvNb7++mt7l+XUIiIijHHjxtm7DKcwZMgQw8fHx3B1dTWaNGliDBkyxDh06JC9y3IqX331ldGuXTvDzc3NCAkJMRYuXGjvkgzmiQUAAIDDYUwsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAwyHEAgAAwOEQYgEAAOBwCLEAAABwOIRYAHACR44ckclkUkZGhr1LAYBKQYgFgAoYPny4Bg4caNmPjIzU+PHj7VZPZmam/vCHP8jX11e1atVS06ZNNWDAAO3bt0+S1KxZM2VlZbFEKoDfDBd7FwAAuDVXrlxR7969FRwcrM8//1w+Pj46fvy4kpKSdP78eUmS2WyWt7e3fQsFgEpETywA3KLhw4crNTVVb7/9tkwmk0wmk44cOSJJ2rVrl/r16yd3d3c1btxYw4YN0+nTpy33RkZGauzYsRo/frzq1aunxo0b67333tOFCxcUFxcnDw8PBQYGKikp6brfv3v3bh0+fFjz5s1Tt27d5Ofnp/DwcE2bNk3dunWTVHo4wfDhwy21/nJLSUmRJBUWFmrixIlq0qSJ6tSpo65du1rOAcD/AkIsANyit99+W2FhYXriiSeUlZWlrKwsNWvWTOfPn1fPnj0VGhqq9PR0rVq1SidPntSjjz5qdf/ixYvVoEEDpaWlaezYsRo9erQGDx6s7t276/vvv9d9992nYcOG6b///W+Z39+wYUPVqFFDy5cvV3Fxsc01X6s1KytL48aNU6NGjRQSEiJJGjNmjDZt2qSlS5fqhx9+0ODBg9W3b18dPHjw1h4WAFQSk2EYhr2LAABHM3z4cJ0/f15ffPGFpKs9qh07dtSsWbMs10ybNk0bNmzQ6tWrLceOHz+uZs2aaf/+/QoKClJkZKSKi4u1YcMGSVJxcbE8PT01aNAgffjhh5Kk7Oxs+fj4aNOmTZae1V+bO3eunnvuOZnNZnXu3FlRUVGKiYlRQECApKs9sS1atND27dvVsWNHq3s///xzxcTE6JtvvlF4eLiOHj2qgIAAHT16VL6+vpbrevXqpS5dumjGjBm3+vgA4JbREwsAVWTHjh1KTk6Wu7u7ZbvW03n48GHLde3bt7d8NpvN8vLy0h133GE51rhxY0lSTk7Odb8rPj5e2dnZ+vjjjxUWFqbPPvtMbdu21Zo1a25Y4/bt2zVs2DDNmTNH4eHhkqSdO3equLhYQUFBVrWnpqZa1Q0A9sSLXQBQRQoKCtS/f3+99tprpc75+PhYPtesWdPqnMlksjpmMpkkSSUlJTf8Pg8PD/Xv31/9+/fXtGnT1KdPH02bNk29e/cu8/rs7Gw9+OCDevzxxzVy5Eirus1ms7Zt2yaz2Wx1j7u7+w1rAIDqQogFgErg6upaajxqp06dtGLFCvn7+8vFpXp/uzWZTAoJCdF3331X5vlLly5pwIABCgkJ0Ztvvml1LjQ0VMXFxcrJydE999xTHeUCQLkxnAAAKoG/v7+2bNmiI0eO6PTp0yopKVF8fLzOnj2r6Ohobd26VYcPH9bq1asVFxdn8wtYtsjIyNCAAQO0fPly7dmzR4cOHVJiYqLef/99DRgwoMx7Ro0apWPHjumdd97RqVOnlJ2drezsbF2+fFlBQUGKiYnRY489ps8//1yZmZlKS0tTQkKC/v3vf1da3QBwK+iJBYBKMHHiRMXGxqpNmza6ePGiMjMz5e/vr40bN+r555/Xfffdp8LCQvn5+alv376qUaPy+hCaNm0qf39/vfzyy5aptK7tT5gwocx7UlNTlZWVpTZt2lgdT05OVmRkpBYtWqRp06bpT3/6k37++Wc1aNBA3bp10wMPPFBpdQPArWB2AgAAADgchhMAAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAwyHEAgAAwOEQYgEAAOBwCLEAAABwOIRYAAAAOBxCLAAAABwOIRYAAAAOhxALAAAAh0OIBQAAgMMhxAIAAMDhEGIBAADgcAixAAAAcDiEWAAAADgcQiwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAwyHEAgAAwOEQYgEAAOBwCLEAAABwOIRYAAAAOBxCLAAAABwOIRYAAAAOhxALAAAAh0OIBQAAgMMhxAIAAMDhEGIBAADgcAixAAAAcDiEWAAAADgcQiwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAwyHEAgAAwOEQYgEAAOBwCLEAAABwOIRYAAAAOBxCLAAAABwOIRYAAAAOhxALAAAAh0OIBQAAgMMhxAIAAMDhEGIBAADgcAixAAAAcDiEWAAAADgcQiwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAw3GxdwEAAAD47YuLi7PpukWLFtl0nckwDONWCgIAAABuxmw2q2/fvnJzc5MkXbhwQevWrVP//v0lSYWFhUpKSlJJSYlN7RFiAQAAUOXMZrNOnDihxo0bS5IyMzPVvn175efnS5JOnTqlxo0b2xxiGRMLAACAavfrftTy9qsSYgEAAFDlPDw8dO7cOcv+uXPndOHCBRUUFEiSsrOzVb9+fZvbI8QCAACgyoWEhGj27NkqKSlRSUmJ5s2bJ19fX02cOFEbN27Uiy++qLvuusvm9hgTCwAAgCr3xRdf6JFHHlGdOnVUUlKiOnXqaNWqVfr973+vgwcPqlmzZvrqq690xx132NQeIRYAAADVYv369frqq69Uu3ZtPfHEE2rWrJkk6cyZM/Ly8ipXW4RYAAAAOBzGxAIAAMDhsGIXAAAAqpzZbLZpGi1b54klxAIAAKBavPXWW2rRokWltMWY2AoyDEP5+fny8PCQyWSydzkAAAD/08xms77//nt16NChUtpjTGwF5efny9PT07JUGgDgt80wDF26dEmXLl0q98pCACofIRYAABsUFhZq8ODBGjx4sAoLC+1dDuD0CLEAANjg0qVLZX4GYB+82AUAAIAqt2HDBrVq1UqSdO7cOeXl5ZV5nZ+fn03tEWIBAABQ5cLCwvTaa6/pzTff1OnTp0udN5lMMgyDKbYAAKhMv/yD1dY/ZAH8v3nz5unNN9/UCy+8oDvvvFOenp631B4hFgAAG/xyNpr8/HzVr1/fjtUAjue9997TrFmz9Ic//KFS2qvQi13Hjh3TiBEj5OvrK1dXV/n5+WncuHE6c+aM5ZrIyEiZTCaZTCbVqlVLQUFBSkhIKHNakk2bNslsNuv+++8vde7IkSMymUxq1KhRqemsOnbsqKlTp1odO3TokEaMGKHmzZvLzc1NTZo00b333quPP/5YRUVFluuu1fbrbenSpRV5JAAAALiBw4cPq1u3bpXWXrlD7I8//qjOnTvr4MGDWrJkiQ4dOqQFCxZo7dq1CgsL09mzZy3XPvHEE8rKytL+/fs1efJkvfTSS1qwYEGpNhMTEzV27FitX79eJ06cKPN78/Pz9frrr9+wtrS0NHXq1El79+7V3LlztWvXLqWkpOjxxx/X/PnztXv3bqvrFy1apKysLKtt4MCB5X0kAAAAuIn69euXORa2osodYuPj4+Xq6qqvv/5aERERat68ufr166dvvvlGP//8s1588UXLtbfddpu8vb3l5+enuLg4tW/fXmvWrLFqr6CgQMuWLdPo0aN1//3364MPPijze8eOHas333xTOTk5ZZ43DEPDhw9XUFCQNm7cqP79+6tVq1Zq1aqVoqOj9e2336p9+/ZW99StW1fe3t5WW61atcr7SAAAAHAT4eHhevXVV687K0F5lSvEnj17VqtXr9Yf//hH1a5d2+qct7e3YmJitGzZslJDBgzD0IYNG7Rv3z65urpanfv0008VEhKi4OBgDR06VO+//36ZQw6io6MVGBioV155pczaMjIytHfvXk2cOFE1apT9Y93K8rCFhYXKy8uz2gAAAGCbmTNnau/evWrSpIlCQ0MVFRVV5marcoXYgwcPyjAMtW7duszzrVu31rlz53Tq1ClJV99Cc3d3l5ubm3r06KGSkhI9/fTTVvckJiZq6NChkqS+ffsqNzdXqamppdo2mUyaOXOmFi5cqMOHD5c6f+DAAUlScHCw5VhOTo7c3d0t27x586zuiY6Otjrv7u6uo0ePlvmzJSQkyNPT07I1a9bseo8JAAAAv9K8eXPt3r1bCxcu1MCBAxUaGlrmZqsKzU5g65rRMTExevHFF3Xu3DlNmTJF3bt3V/fu3S3n9+/fr7S0NK1cufJqMS4uGjJkiBITExUZGVmqvT59+ujuu+/WX/7yF33yySc3/X4vLy9lZGRIuvqi2eXLl63Ov/XWW+rVq5fVMV9f3zLbmjx5sp555hnLfl5eHkEWAACgHNzc3BQdHV0pbZUrxAYGBspkMmnv3r166KGHSp3fu3ev6tWrp4YNG0qSPD09FRgYKOnqsIHAwEB169bNEhwTExNVVFRkFRwNw5Cbm5vmzJlT5vxhM2fOVFhYmJ599lmr49dWgNi/f78lxZvNZsv3u7iU/lG9vb0t52/Gzc1Nbm5uNl0LAACAqlWu4QReXl7q3bu35s2bp4sXL1qdy87O1scff6whQ4aUOfbU3d1d48aN08SJE2UYhoqKivThhx/qjTfeUEZGhmXbsWOHfH19tWTJkjJr6NKliwYNGqRJkyZZHQ8NDVVISIhef/11JqEGAAD4H9OiRYubbv7+/ja3V+7hBHPmzFH37t3Vp08fTZs2TS1atNDu3bv17LPPqkmTJpo+ffp17x01apReffVVrVixQi4uLjp37pxGjhxZqsf14YcfVmJiop566qky25k+fbratm1r1btqMpm0aNEi9e7dW+Hh4Zo8ebJat26tK1euaP369Tp16pTMZrNVO+fPn1d2drbVMQ8PD9WpU6e8jwUAAAA3cPToUb3yyivy8PCQJJ0+fVp/+9vf9Nprr0m6OmPVn//8Z9sbNCrgyJEjRmxsrNG4cWOjZs2aRrNmzYyxY8cap0+ftlwTERFhjBs3rtS9o0aNMtq2bWs88MADxu9+97sy29+yZYshydixY4eRmZlpSDK2b99udc2TTz5pSDKmTJlidXz//v1GbGys0bRpU8PFxcXw9PQ0evToYbz77rvGlStXLNdJKnNLSEiw6Rnk5uYakozc3FybrgcAOLYjR44YDzzwgPHAAw8YR44csXc5gMOpUaOGkZ2dbdk/fPiw4e7ubtk/efKkYTKZbG7PZBg2vqUFK3l5efL09FRubq5uv/12e5cDAKhiZ8+eVWxsrCRp8eLFLDsLlJPZbNaJEyfUuHFjSVcX0OrQoYNlRdacnBx5e3vbPCy0QsvOAgDgbH45B/n15iMHUH34vxAAAAB28evJAMqzMBUhFgAAG/xyWXKWKAfKb9SoUbrtttss+02aNFFSUpJl38PDQwkJCTa3x5jYCmJMLAA4F8MwVFhYKOnq3OG3spQ5gFtXoRW7AABwNiaTiR5Y4H8IwwkAAADgcAixAAAAcDiEWAAAANidYRj66aefbL6eEAsAAAC7O3XqlFq0aGHz9YRYAAAA/E9gnlgAAAA4nPLM/FrlU2wtWLBAzz77rM6dOycXl6tfV1BQoHr16ik8PFwpKSmWa1NSUhQVFaVDhw7p3nvv1fjx4zV+/Hir9qZOnaovvvhCGRkZpfb9/f1vOJYiNjZWH3zwwXVT/pIlS/T73//+ln5eAAAAlPbyyy/f8HxBQUG52qvyEBsVFaWCggKlp6erW7dukqQNGzbI29tbW7Zs0aVLlyzz7iUnJ6t58+Zq2bJlhb5r69atKi4uliR99913evjhh7V//37LYgS1a9e2XLto0SL17dvX6v66detW6HsBAABwY19++eUNzxcVFZWrvSoPscHBwfLx8VFKSoolxKakpGjAgAFat26dNm/erMjISMvxqKioCn9Xw4YNLZ/r168vSWrUqFGZ4bRu3bry9vau8HcBAADAdt9///0Nz586dUqNGze2ub1qGRMbFRWl5ORky35ycrIiIyMVERFhOX7x4kVt2bLllkJsVSosLFReXp7VBgAAgMpRnvGwUjWG2I0bN6qoqEj5+fnavn27IiIi1KNHD8uY2E2bNqmwsNAqxD7//PNyd3e32mbMmFEpNUVHR5dq++jRo9e9PiEhQZ6enpatWbNmlVIHAAAArirP7ARVPpxAkiIjI3XhwgVt3bpV586dU1BQkBo2bKiIiAjFxcXp0qVLSklJUUBAgJo3b26579lnn9Xw4cOt2nrnnXe0fv36W67prbfeUq9evayO+fr6Xvf6yZMn65lnnrHs5+XlEWQBAAAqiaen501f/vqlagmxgYGBatq0qZKTk3Xu3DlFRERIuhoamzVrpu+++07Jycnq2bOn1X0NGjRQYGCg1bFrY11vlbe3d6m2b8TNzU1ubm6V8t0AAAD4f6dPn9ZTTz2lVatW6c9//rNN91TbPLFRUVFKSUlRSkqK5UUuSerRo4eSkpKUlpb2PzseFgAAAFXjyy+/VLt27XTy5En98MMPNt9XLT2x0tUQGx8frytXrlh6YiUpIiJCY8aM0eXLl6s1xJ4/f17Z2dlWxzw8PFSnTp1qqwEAAMBZ/Hou/6KiIr366qv67LPP9Oqrr1oN27RFtYbYixcvKiQkxGr6hIiICOXn51um4qoucXFxpY4lJCRo0qRJ1VYDAACAswgICJBhGDKZTJb/mkwmrVq1qtR7SrYwGeWdzwCSrr7Y5enpqdzcXMtiCgAAACjbr4cKFBUVafr06UpOTtabb75Z6mX+myHEVhAhFgAA4NZ99NFHevrppxUWFqb33nvvhrNF/VK1vdgFAAAA/NrQoUO1a9cuFRUVqV27djbfV21jYgEAAICy+Pr6avXq1Zo3b57N9zCcoIIYTgAAAGA/9MRW0LXsn5eXZ+dKAAAAqo+Hh0e5loe95trsBDdiGIaOHDliU3uE2Ao6c+aMJLH0LAAAcCo5OTlq2LBhue8bP3685fPp06f1t7/9Ta+99prlWEFBgc2rdUkMJ6iw8+fPq169ejp69Kg8PT3tXY7TycvLU7NmzXTs2DGGc9gBz9++eP72w7O3L56/fV17/ufPn7/l7PPjjz+qQ4cOys/PtxzLycmRt7e3SkpKbGqDntgKqlHj6sQOnp6e/I9kR7fffjvP3454/vbF87cfnr198fztqyJDCX7N3d1dly5d0uXLl+Xq6irpaki+7bbbbG6DKbYAAABQrRo1aiQPDw+98cYbkqTi4mK9/vrrCg4OtrkNemIBAABQ7V544QU9//zz+utf/6orV67o4sWLWrZsmc33E2IryM3NTVOmTJGbm5u9S3FKPH/74vnbF8/ffnj29sXzt6/Kfv4TJ05Uu3bttHbtWrm6uqp///7q1q2bzffzYhcAAAAcDj2xAAAAqHIvv/yyTddNmTLFpuvoiQUAAECVM5vNatu2rVxcrvahXr58Wfv27VP79u0lSUVFRdq1a5fNU2wRYgEAAFDlzGazTpw4ocaNG0uSMjMz1b59e8tcsadOnZK3t7eKi4ttao8ptgAAAFDtft2PahjGTZel/SVCbAXNnTtX/v7+qlWrlrp27aq0tDR7l+QU1q9fr/79+8vX11cmk0lffPGFvUtyGgkJCbrrrrvk4eGhRo0aaeDAgdq/f7+9y3Ia8+fPV/v27S2TvIeFhSkpKcneZTmtmTNnymQyWS2jiaozdepUmUwmqy0kJMTeZTmVn3/+WUOHDpWXl5dq166tO+64Q+np6XatiRBbAcuWLdMzzzyjKVOm6Pvvv1eHDh3Up08f5eTk2Lu037wLFy6oQ4cOmjt3rr1LcTqpqamKj4/X5s2btWbNGl25ckX33XefLly4YO/SnELTpk01c+ZMbdu2Tenp6erZs6cGDBig3bt327s0p7N161a9++67lnF8qB5t27ZVVlaWZfv222/tXZLTOHfunMLDw1WzZk0lJSVpz549euONN1SvXr1ytVNWL+strf5loNy6dOlixMfHW/aLi4sNX19fIyEhwY5VOR9JxsqVK+1dhtPKyckxJBmpqan2LsVp1atXz/j73/9u7zKcSn5+vtGqVStjzZo1RkREhDFu3Dh7l+QUpkyZYnTo0MHeZTit559/3rj77rtvuZ3atWsbJ0+etOyfOnXKGD16tGX/zJkzRuvWrW1uj57Ycrp8+bK2bdumXr16WY7VqFFDvXr10qZNm+xYGVC9cnNzJUn169e3cyXOp7i4WEuXLtWFCxcUFhZm73KcSnx8vO6//36rPwNQPQ4ePChfX18FBAQoJiZGR48etXdJTuOf//ynOnfurMGDB6tRo0YKDQ3Ve++9V+52/vvf/6pRo0aW/QYNGmjevHmW/fr162vPnj02t0eILafTp0+ruLjY8mbdNY0bN1Z2dradqgKqV0lJicaPH6/w8HC1a9fO3uU4jZ07d8rd3V1ubm566qmntHLlSrVp08beZTmNpUuX6vvvv1dCQoK9S3E6Xbt21QcffKBVq1Zp/vz5yszM1D333GN5qx1V68cff9T8+fPVqlUrrV69WqNHj9bTTz+txYsX27UuFjsAUG7x8fHatWsXY9KqWXBwsDIyMpSbm6vly5crNjZWqampBNlqcOzYMY0bN05r1qxRrVq17F2O0+nXr5/lc/v27dW1a1f5+fnp008/1ciRI+1YmXMoKSlR586dNWPGDElSaGiodu3apQULFig2NtZuddETW04NGjSQ2WzWyZMnrY6fPHlS3t7edqoKqD5jxozRv/71LyUnJ6tp06b2LsepuLq6KjAwUHfeeacSEhLUoUMHvf322/Yuyyls27ZNOTk56tSpk1xcXOTi4qLU1FS98847cnFxsXleS1SOunXrKigoSIcOHbJ3KU7Bx8en1F+WW7dubfchHYTYcnJ1ddWdd96ptWvXWo6VlJRo7dq1jE3Db5phGBozZoxWrlypdevWqUWLFvYuyemVlJSosLDQ3mU4hXvvvVc7d+5URkaGZevcubNiYmKUkZEhs9ls7xKdSkFBgQ4fPiwfHx97l+IUwsPDS02peODAAfn5+dmpoqsYTlABzzzzjGJjY9W5c2d16dJFs2bN0oULFxQXF2fv0n7zCgoKrP7mnZmZqYyMDNWvX1/Nmze3Y2W/ffHx8frkk0/05ZdfysPDwzIG3NPTU7Vr17Zzdb99kydPVr9+/dS8eXPl5+frk08+UUpKilavXm3v0pyCh4dHqfHfderUkZeXF+PCq8HEiRPVv39/+fn56cSJE5oyZYrMZrOio6PtXZpTmDBhgrp3764ZM2bo0UcfVVpamhYuXKiFCxfat7Bbni/BSc2ePdto3ry54erqanTp0sXYvHmzvUtyCsnJyYakUltsbKy9S/vNK+u5SzIWLVpk79KcwogRIww/Pz/D1dXVaNiwoXHvvfcaX3/9tb3LcmpMsVV9hgwZYvj4+Biurq5GkyZNjCFDhhiHDh2yd1lO5auvvjLatWtnuLm5GSEhIcbChQvtXZJhMoxyrO8FAAAA/A9gTCwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAcAJHjhyRyWRSRkaGvUsBgEpBiAWAChg+fLgGDhxo2Y+MjNT48ePtVk9mZqb+8Ic/yNfXV7Vq1VLTpk01YMAA7du3T5LUrFkzZWVlsUQqgN8MF3sXAAC4NVeuXFHv3r0VHByszz//XD4+Pjp+/LiSkpJ0/vx5SZLZbJa3t7d9CwWASkRPLADcouHDhys1NVVvv/22TCaTTCaTjhw5IknatWuX+vXrJ3d3dzVu3FjDhg3T6dOnLfdGRkZq7NixGj9+vOrVq6fGjRvrvffe04ULFxQXFycPDw8FBgYqKSnput+/e/duHT58WPPmzVO3bt3k5+en8PBwTZs2Td26dZNUejjB8OHDLbX+cktJSZEkFRYWauLEiWrSpInq1Kmjrl27Ws4BwP8CQiwA3KK3335bYWFheuKJJ5SVlaWsrCw1a9ZM58+fV8+ePRUaGqr09HStWrVKJ0+e1KOPPmp1/+LFi9WgQQOlpaVp7NixGj16tAYPHqzu3bvr+++/13333adhw4bpv//9b5nf37BhQ9WoUUPLly9XcXGxzTVfqzUrK0vjxo1To0aNFBISIkkaM2aMNm3apKVLl+qHH37Q4MGD1bdvXx08ePDWHhYAVBKTYRiGvYsAAEczfPhwnT9/Xl988YWkqz2qHTt21KxZsyzXTJs2TRs2bNDq1astx44fP65mzZpp//79CgoKUmRkpIqLi7VhwwZJUnFxsTw9PTVo0CB9+OGHkqTs7Gz5+Pho06ZNlp7VX5s7d66ee+45mc1mde7cWVFRUYqJiVFAQICkqz2xLVq00Pbt29WxY0erez///HPFxMTom2++UXh4uI4ePaqAgAAdPXpUvr6+lut69eqlLl26aMaMGbf6+ADgltETCwBVZMeOHUpOTpa7u7tlu9bTefjwYct17du3t3w2m83y8vLSHXfcYTnWuHFjSVJOTs51vys+Pl7Z2dn6+OOPFRYWps8++0xt27bVmjVrbljj9u3bNWzYMM2ZM0fh4eGSpJ07d6q4uFhBQUFWtaemplrVDQD2xItdAFBFCgoK1L9/f7322mulzvn4+Fg+16xZ0+qcyWSyOmYymSRJJSUlN/w+Dw8P9e/fX/3799e0adPUp08fTZs2Tb179y7z+uzsbD344IN6/PHHNXLkSKu6zWaztm3bJrPZbHWPu7v7DWsAgOpCiAWASuDq6lpqPGqnTp20YsUK+fv7y8Wlen+7NZlMCgkJ0XfffVfm+UuXLmnAgAEKCQnRm2++aXUuNDRUxcXFysnJ0T333FMd5QJAuTGcAAAqgb+/v7Zs2aIjR47o9OnTKikpUXx8vM6ePavo6Ght3bpVhw8f1urVqxUXF2fzC1i2yMjI0IABA7R8+XLt2bNHhw4dUmJiot5//30NGDCgzHtGjRqlY8eO6Z133tGpU6eUnZ2t7OxsXb58WUFBQYqJidFjjz2mzz//XJmZmUpLS1NCQoL+/e9/V1rdAHAr6IkFgEowceJExcbGqk2bNrp48aIyMzPl7++vjRs36vnnn9d9992nwsJC+fn5qW/fvqpRo/L6EJo2bSp/f3+9/PLLlqm0ru1PmDChzHtSU1OVlZWlNm3aWB1PTk5WZGSkFi1apGnTpulPf/qTfv75ZzVo0EDdunXTAw88UGl1A8CtYHYCAAAAOByGEwAAAMDhEGIBAADgcAixAAAAcDiEWAAAADgcQiwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAwyHEAgAAwOEQYgEAAOBwCLEAAABwOIRYAAAAOBxCLAAAABwOIRYAAAAOhxALAAAAh0OIBQAAgMMhxAIAAMDhEGIBAADgcAixAAAAcDiEWAAAADgcQiwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACHQ4gFAACAwyHEAgAAwOEQYgEAAOBwCLEAAABwOIRYAAAAOBxCLAAAABwOIRYAAAAOhxALAAAAh0OIBQAAgMMhxAIAAMDhEGIBAADgcAixAAAAcDiEWAAAADgcQiwAAAAcDiEWAAAADocQCwAAAIdDiAUAAIDDIcQCAADA4RBiAQAA4HAIsQAAAHA4hFgAAAA4HEIsAAAAHA4hFgAAAA6HEAsAAACH42LvAgAAAPDbFxcXZ9N1ixYtsuk6QiwAAACqXG5urtX+zz//rB07duh3v/tdhdojxAIAAKDKff7555bPx44dU2RkpK5cuaKgoCDNnDmz3O0xJhYAAADV5vjx44qMjFSTJk20du1azZ8/X3/961/L3Q49sQAAAKgWJ06cUFRUlHx9fZWUlKQ6deroyy+/1P3336/69evr8ccft7ktQiwAAACqXFZWliIjI9W4cWOtWrVKderUkSRFRkZqyZIlGjJkiOrWratHHnnEpvZMhmEYVVkwAAAAEBISIi8vL61evVru7u6lzn/44YcaNWqULl68aFN79MQCAACgynl5eWnVqlVlBlhJeuyxx3TmzBmb26MnFgAAAFWuoKDgugG2IgixAAAAqHK2LHZgGIY++OADm9ojxAIAAKDKDRo06LrniouL9c033+jixYsqKSmxqT3GxAIAAKDK/XKxg1/68ssv9cILL6hWrVqaMmWKze2x2AEAAACq3YYNG9S9e3dFR0frgQce0I8//qjnnnvO5vsJsQAAAKg2u3btUv/+/XXvvfeqbdu2OnTokF577TV5enqWqx1CLAAAAKrcTz/9pNjYWHXs2FEuLi7auXOn3nvvPfn6+laoPV7sAgAAQJWrVauWatSooaefflphYWHXvW7AgAE2tUeIBQAAQJVzcXHRzWKnYRg2z05AiAUAAIDDYUwsAAAAHA7zxAIAAKDa7NmzR/v371deXl6Z52NjY21qh+EEAAAAqHJ5eXl69NFHtWbNGrm4uKhOnTqlrjEMQ+fOnbOpPXpiAQAAUOWmTJminJwcbdu2TR07drzl9uiJBQAAQJULCgrSggUL1LNnz0ppjxe7AAAAUOVOnDihgICASmuPEAsAAIAq17RpU+3bt6/S2mNMLAAAAKrcoEGDNGHCBLm6uurOO++Up6fnLbXHmFgAAABUuf/+97964okntHTp0huu3MWKXQAAAPifk5WVpQMHDig3N7fM8w8++KBN7RBiK8gwDOXn58vDw0Mmk8ne5QAAADgVxsRWUH5+vjw9PZWbm6vbb7/d3uUAAAA4hLS0NH3yySc6cOCATCaTAgMDFRMToy5dupSrHWYnAADABoZh6NKlS7p06dINx/MBuL5JkyYpLCxMixYtUlZWlk6cOKEPPvhA3bp104svvliutgixAADYoLCwUIMHD9bgwYNVWFho73IAh7N8+XK9+eabmjVrls6ePavt27dr+/btOnv2rN555x399a9/1YoVK2xujxAL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "palette = {\n", + " 'ORANGE': 'orange',\n", + " 'WHITE': 'wheat',\n", + "}\n", + "# We need the encoded Item Size column to use it as the x-axis values in the plot\n", + "pumpkins['Item Size'] = encoded_pumpkins['ord__Item Size']\n", + "\n", + "g = sns.catplot(\n", + " data=pumpkins,\n", + " x=\"Item Size\", y=\"Color\", row='Variety',\n", + " kind=\"box\", orient=\"h\",\n", + " sharex=False, margin_titles=True,\n", + " height=1.8, aspect=4, palette=palette,\n", + ")\n", + "# Defining axis labels \n", + "g.set(xlabel=\"Item Size\", ylabel=\"\").set(xlim=(0,6))\n", + "g.set_titles(row_template=\"{row_name}\")\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഇപ്പോൾ നമുക്ക് ഒരു പ്രത്യേക ബന്ധത്തെക്കുറിച്ച് ശ്രദ്ധിക്കാം: ഇനം വലിപ്പവും നിറവും!\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings(action='ignore', category=UserWarning, module='seaborn')" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGwCAYAAACHJU4LAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB9+0lEQVR4nO3deXQc1Z33/3dV9aatZcnaF1tesTEYL3gLdmzAxDAOkEDCPgES8jwTiJMZMkxgzu8MhFmAMUlIgkOWYSDJQIAwLE54MAEvbLHBbGFzAjZeZFuLV+1qqZffH1dSd6m7Zcu2UBs+r3N0wP3tunVv1e263666V7JisVgMERERkQxkD3cFRERERNJRoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLM9wV+BoRKNRdu/eTV5eHpZlDXd1RERE5DDEYjFaWlqoqKjAtge+Z3JcJyq7d++murp6uKshIiIiR6C2tpaqqqoB33NcJyp5eXmAaWgwGBzm2oiIiMjhaG5uprq6um8cH8hxnaj0Pu4JBoNKVERERI4zhzNtQ5NpRUREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjDXsv0J/165dfPe73+Xpp5+mvb2d8ePHc99993HqqacOd9U+2SIhqP1fOPg25E2E0ZeAJzseb3wR6laBNwg1l0N2wh+Nat0G238L4Tao/DwUzY3HultNrHULFMyA6i+C7TWxWBR2r4I9L0KgDMZcAf6R8W0Pvge1j5r/r/4SjJgSj4X2wbYHoKMOihdAxdlg9eTZ0W6ofRwOvAG542D0peDNjW+7dwPs+gN4ckwstyYea99pyu1uhvKzoWRBPBZuh+0PQ8tfYcRUqL4QHH9PW2JQ/xw0rAF/sWlLoGSwZ0FERA7BisViseHa+YEDB5g+fTqnn3463/jGNyguLubDDz9k3LhxjBs37pDbNzc3k5+fT1NTk/7Wz2B07oXVi6DpvfhrOTWweB1kj4JXroGP/jses31w2sNQ/QXY9hCs/1uIhePxCdfBrLuhZTM8twg6dsVjBdPhzNXg5MAL55vkp5c3HxY9DcXzYNOd8OYN7npO+0848QaTaKw9G7qb4rHyJfDZlRBph9VnmiSlV1YlnLkWghPgtWXwwd3xmOWBeb+Gmkth55Pw0kUQ7YrHx14Nc+6F9h2mLW3b4rH8KaZcXwG89GXY+UQ85smBhX+A0kUpD7mIiMQNZvwe1kTlxhtv5OWXX+bFF188ou2VqByhjd+ED1ckvz7qyzDmKnh+aXLMPxKWboKV4yDckhw/cx1sWg67n0qOTb7BJEKvXZccy58CC38Pvx9v7rgksmw4dzM8f647qep16gqTSGxanhyrWGr2u3pRcsyTB+dtgacmmzs1/S18CrbeDzt+lxybcB2MnAUbrkqO5Y6Fcz+M3+kREZGUBjN+D+sVdeXKlZx66ql8+ctfpqSkhOnTp/PLX/4y7ftDoRDNzc2uHzkCiXcCXK8/CbueTB0L7YMP70mdpIB5jFT3dPr97UxTbtN7sOW/k5MUMK9tvjd1knKocuuehh3/mzoWbjFtSZWk9JW7Mk3s8fT7bP0IDr6TOiYiIkdkWBOVjz76iHvuuYcJEybwzDPP8I1vfINvfetb/OpXv0r5/ttuu438/Py+n+rq6o+5xp8QvfMs+rP95iftdtkDxAJgedPH0u0TwMlKH/McYp/pyrW84AkMsO0hyrV9g4/BwMdPREQGbVgTlWg0yowZM/iP//gPpk+fzv/5P/+Hr3/96/zsZz9L+f6bbrqJpqamvp/a2tqPucafEDWXp3n9MvOTSk4NTPymmQSbxDJljroo9bajL0u/z+IFMP7rJgHoz/abWPGC5Nihyh11EdRcYerWX6DMtCWnJvW2NQOUW3N5+ljBDMiflDomIiJHZFgTlfLyck488UTXa5MnT2bHjh0p3+/3+wkGg64fOQJT/hkqPu9+rXgBTLvDrOCZdkd8pQ6YgX3+I+YOxYJHwV8Uj9k+mHkXFJwCM38II+e4y62+ECZdD6MvhonLcCUOeRNg3v0QKIbPPGAmpPby5JjXAsXmPXkTEwq1TKJRc4kpu/pL7n2OnGPqUjAVZv7IfQfEXwTzf2faMv937sTL8sC023uOwe3JCVLFUnPsqs6Fyf/knouSU2PqKyIix9SwTqa97LLLqK2tdU2m/Yd/+AdeeeUV/vSnPx1ye02mPUr73+hZnnyCWXmTqKPOLL/1BqH8HHASBvtIJ+x+2ixPLv9c8rLcxpegdbO5w1Aw1R1r2QJ7XoKscihb7B7su5tNuQAV55h994pFTX066qB4PuT1WxV24O348uSSfglGZyPU/dEkPxXnuO/eRLrMSqTuJlOfrHL3tnvWx5cnF85wx1q3QePzpv1lZ4E97Kv9RUSOC8fNqp+NGzfymc98hu9973tcdNFFvPrqq3z961/nF7/4BZdfnub2egIlKiIiIsef42bVz6xZs3j88cf57W9/y0knncS//uu/ctdddx1WkiIiIiKffMN6R+Vo6Y6KiIjI8ee4uaMiIiIiMhAlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsz3Du/JZbbuF73/ue67UTTjiBv/zlL8NUo34e9ANd8X9f3AHbH4Gm9yB/Coy+CJxAPN6wFuqeBX8h1FwOWeXxWMsW2P4QRDqh+gtQODMe626GbQ9C2zYYORsqzwO759TEorDrKdj7MmRVwZjLwVcQ3/bAn6H2MbAcGH0xBE+IxzobYev/QGgPlJ4OZWeBZZlYJAS1/wsH34a8iTD6EvBkx7dtfBHqVoE3aNqSXRWPtW6D7b+FcBtUfh6K5ia0pdXEWrdAwQyo/iLY3nhbdq+CPS9CoAzGXAH+kfFtD74HtY+a/6/+EoyYEo+F9sG2B6CjDooXQMXZYPXk2dFuqH0cDrwBueNg9KXgzY1vu3cD7PoDeHJMLLcmHmvfacrtbobys6FkQTwWboftD0PLX2HEVKi+EBx/T1tiUP8cNKwBf7FpS6Akvm3zX822sQhUXwAFp8RjXQdg6wPQsROKPmOOYV9bwrBrJex7FXJqoOYycw567X8dap8w9Rh9KeSNi8c66kxbQvuh/CxzzntFOo9d3930X7D9Z/H4uO/AnDv5pIt07CXSsRfL8eLJqcTyxI9ftLuNSNtuYrEonuxSbP+Ivlgs2k24dTexcDu2fwROdilWz/mOxWJEOhqJdu7H8gRMuY4vXm6omXB7HRYWTk4Fti/er2OREOHWXcQiIZxAEXZWEVbP5zsWixBpqyfa1YztzcHJqcSynXhbOvcRad+DZXtwciuxPVkJbWk3bYmGcbJLcQLx600sGibSuotouB3bl4+TU+ZqS7SjkUjnfizHjye3yt2WrhYibXUAODnl2L68hLZ09bSlEydQiJ1VktCWaE9bmrA92Ti5lVh2fOiKdB4g0t5g2pJTge2NX8ei4Q4irbt62lKME4hfb2LRCJG23US7W7F9wZ62OPG2dPaebz+e3Eqs3s8+EO1qNceIGJ7scmx//DMai3QRbttFLNyJ7S/oOd8JbWlvIBo6iOXJxpNbgdV7fQSioYOE2xuwsHFyK7C9OfFyw52m3Eg3TlYRTlZRv7bUEe1uwfbm4eSUu8738c6KxWKx4dr5LbfcwqOPPspzzz3X95rH46GoqGiAreKam5vJz8+nqamJYDB46A0G40Hr0O/JmwBnroOsMvjTFWaA7uVkwYLHzIC65T549etm0Oo1+Z9g+h1mcF5zJnQ2xGMj58IZfwTLA+v+BhrXxWP+kXD6H6FwBrxzK7xzc0KFLDj1JzDxOmhYB8+fC+HWeLjqfJj/KHQdhNWLzKDVK6cGFq+D7FHwyjXw0X/HY7YPTnvYDFLbHoL1fwuxcDw+4TqYdTe0bIbnFkHHrnisYDqcuRqcHHjhfJP89PLmw6KnoXgebLoT3rzBfXyn/SeceINJNNaeDd1N8Vj5EvjsSoi0w+ozTZLSK6sSzlwLwQnw2jL44O6EQ+SBeb+Gmkth55Pw0kUQTUhGx14Nc+6F9h2mLW3b4rH8KaZcXwG89GXY+UQ85smBhX+A0kXwwU/htW8CCR+tk2+Bk2+G/W/C2rNM4tWrZKE5DrEIrDkL9m2IxwIlcMYak7S9dSO8f0dCW2yY/UsY91XY/Qy8+EWIdMTjoy+Bzzxg+tZzC6Hlw3jsaPpuKp6RcNHegd9znIrFYnTteZNI2+74i5aNv+RUnOwSwi21dO19m8Tz7ckfh69wMtGuFjrrN5gvBj1s/wj8ZXMBi1DDq0Q7E/qC7SVQNhfbn0/3gQ/oPviBqy7ekSfhDdYQ6dhLqGGj67w42aX4SmZCNExn3Xpi3S3x6nqy8JfNw/Jk0bX3bSKttQml2vhKZuDJKSPcuouuPW+525I3Gl/RyUS72wjVrScW6YyX6wsSKJsLtodQw0aiHXsSivXgL52DEyigu2kL3fs3udtSMBnviHFEOg8QanjFJOm9m2YV4y+dBdEInfUbiHXFP/uWE8BfPhfbm0vXvncJN29LKNXCVzwNT24l4bZ6uhrfAKLxY5Rbja9oKrFwB6H69cTC8c+L5c0jUD4XbC9dja8TaU+4JlsO/tJZOFlFdDdvo3vfu+62jJiIt2Ai0VCTOd/R7nhbAoX4S+cAMUL1G4iGDiYcIx+B8nnYvjy69m8i3LTFVa6vaCqevFFE2hsJNb5mvuz1tiWnAl/xdIiEzPkOt8Wr68nBXz4POyGZzjSDGb+HPVF54okneOutt45o+yFLVH4/HVoOs05jr4KKpWbg6i+rAs5+E1aONt9G+1uy0QzOiYlIr5NvMYNf/8EboHAWzLsfnpqSHLO9cN5WeO6z0PpRcnzu/bBvI3y4Ijk26ssw5ip4fmlyzD8Slm6CleMg3JIcP3MdbFoOu59Kjk2+wSRCr12XHMufAgt/D78f7/oQAmYgPnezSbgSk6pep64wicSm5cmxiqVmv6sXJcc8eXDeFnhqsjth6LXwKdh6P+z4XXJswnUwchZsuCo5ljsWFr8AK8e4LlR9lr4H66+C/RuTY9OXmztU79ySHCtZZOLPzEqOOQE4bzusmg4du5Pj839nzslH9yfHjqbvpnLZsF1KhlS4bXfPgOdmOX78FQvo3Lkmue8C/or5dO/f5E5EenhHTATbSRq8AWxfPr7iaXTuej5FbSwCVWf0DLLtSVFf0SnmW3nL9qSYk1OOJ7fKJDhJO/USqFpEZ+1a95eQ3raUzaO7aQvRjsakmCd/LJYnO2nwBjP4+0tnmWOUQqDqDEING11JVS/vyJOIhdsJNyVfx+ysErz54wjVr08u1PIQqDqdzl3rUn4O/aWzCLfu7Lu742pL3mhs/wi69v45RbHZ+Mvm9bQlua8HKhfStectoglJVV9bCidDNJKUeALYgZF4CycT2v1SirbY5hjtfpFYQrLby1cyg0h7I5HWnUkxJ7cKf/G05DIzxGDG72F99APw4YcfUlFRQSAQYN68edx2222MGjUq5XtDoRChUPxkNTc3D02lDjdJAXMbPtWgBGbg+PCe9Bf67b9NnaSA+bbuyUkd278Rtv4mdSzaDZt/kTpJ6S13X4oLFZg7DImPlRKF9pm2pEpSwDxGqns6/T5zxqSONb0HW+5NeaEnFoXN96ZOUnrLbUu+IAOmLjljU8fCLaYtqZKU3nJ3rkwTezx1QgDmmG/+Rfr+sPXXqZMUMI+uEu+GJGpcZx69pBLphM33pK9T7ePpz8vR9N1PkUhbQ8rXY5GQSQhS9V0g0ro7ZZICEG6v73vM0F+0q4lwioGnZ6+EW7anTFIAIu31REPJAyWYdiQ+ZnDvtNvcmUiRpACE2+pSJil95SY8bnHVtruFcMuO1PsEwi07UiYpptx6Ymk+E9GORsKe1PskFibcsi1t3w63N7jvliTus70+ZUJgim0n3LqDVEkKQLh1Z8okBXrakuauZLRzH+HWXSljxKLmGKWpU6StnkjiXazEWJo2Ho+GdTLtnDlzuP/++1m1ahX33HMPW7duZcGCBbS0pO64t912G/n5+X0/1dXVH3ONU3D8YPvTx9MlGwBOtplbkoo9ULmW2TbtPgeI2f74PItB7ZOB9+kEwEpzEXQC6fd5qHIHastA5VpeGOi256HaYvsGH4ND1DcHSPNIcaByLcc8jkm7z4H62EBtOcT59g5Q7qeJlf4yaVkDfNezbNKdb8uyByw37XXhkPt00pd7iH0esi0DlGsdYVsYYB6FmWNxpG0Z6PjZA5Q7wPEDLAZoy0DtHPAYWQPWd+ByD3G+PyGGtSXnnHMOX/7yl5k6dSpLlizh//2//8fBgwd55JFHUr7/pptuoqmpqe+ntrY25fuO2ui/O/z31lxuflIJTjLzRXyFyTHLhjFfMfNGBltu+edg3NVmvkV/nlwY/3dmIutgy625zPykklMDE79pJsEmsUyZoy5Kve3oy9Lvs3gBjP+6e2JnL9tvYsULkmOHKnfURVBzBSkHikCZaUtOTeptawYod6DjVzDDHHtPbnLM8phzVr5k8OVWnQ9jr0x94fEVwIRrITh58OUequ9OSNN3P2U8uZUpX7e8uXiCNfHJ4v23y6vCyS5NGXNyKtOWa2cV48mrJmXftRw8+aOxfPmpy82txElTrie3AicnTVs8WTjBmrSJvze3CienPGXMk1uZtlzbX4g3OCp137VsvHmjsP2p+5iTU5H2GDk55XjzqlLGcPw4wTFYntTJ/UDHfqDjZ/ny8eSPTpM4WHjyqrGzilNuO9AxcrJLe853CrYXb7AGy5vimtJTridNuelePx5lVMo1YsQIJk6cyObNm1PG/X4/wWDQ9TMkTrvn8N5Xthim3gplZ5g5JYkdOLsKTnsIPFkw/xH3IxXbD7N+biZ7nrrCTDhNVHO5GXzGXg3jrsF1wcqfYiZQZleZ+SaJ37S9QbNPX76ZRJn4uMWyzZyNqnNhyj9Dxefd+yxeANPuMCt4pt3hvvgGykwbPAFY8Cj4EyY72z6YeZdZ1TLzhzByjrvc6gth0vVmRdLEZe625E0wc20Cxaa+iXcGPDnmtUCxeU/exIRCLZNo1Fxiyq7+knufI+eYuhRMhZk/ct9R8BeZeRuegPlvYuJleWDa7T3H4PbkBKliqTl2VeeaydCJF9+cGlNfX76ZeJy4UsfJgrn3mXM2+xfmHCa2Zdw15lxPuLYnuUpQMM30kbzxps8k3gHxFfS0Jduc98SVWZYDJ91s+ubUW01fTXSkfTfdHaHyNEnqJ4CTVWTmlCS03XIC+ItnYNkO/pKZ7s+LZeMrmortzcU38iQsn/s65eRU4gnW4ORW4+S6ByjLm2e29WThKz7F3ccsD/6SGVi2F3/xdKx+d+88+WPxZJfizR+PnVXiitn+QryFk3ECBXgLJrnaguPHVzITu68tiXfgbLyFU7D9QXyFU1yrmQCc7DKz39wKk7QltsWTg6/4FCzHbyZ9JvYxy8FXPL0ndgpWv7t3nmCNGYTzx+JkuxMk2z/C1MUXxFs4BdcwZvvw97TFVzKzX+Jl4S2YZI5B4aSkBMnMexmPJ7sUT/44V8zyZJljbnvxl8xwf0m0bHzFp5hzVjQVy5vn2rb3PHuCNUnJiuUL4ht5ErY3B1/RVPf5tr34S2b29LEZWK4vcxaeERNM3yyYiB1wL0CxA+b1T4phnUzbX2trK6NGjeKWW27hW9/61iHfP6SrfgBeuBJ2/tr8f9YY+OJHsPdVaH4fgidC0Wz3+9t3Qv0as8SzfIn74hVuh91Pm2f+FWe7l+XGYtD4vJkYWjjLvSwXzFLXvRvMAFJ6RnyJMZilrrtXmeXM5ee4l+VGw1D/rFmmXLLQvSwXYP8bPcuTTzArbxJ11Jnlt96gKTdhmSGRTtOWcJu5uxNwXxRpfAlaN5s7DAVT3bGWLbDnJbP8tWyx+4PZ3WzKBag4xz3Yx6KmPh11UDzfvSwX4MDb8eXJJf0SjM5GqPujSX4qznHfvYl0mZVI3U2mPln9vjXuWR9fnlzY7y5V6zZz3gIlZul3wpJJulvN3JBo2JzvxME+FjPLmttroWiee0k5QNP78eXJJQvd5zu0z5xvJ2DakjhYRbuh7hmzPLnsDHfiAse27yauivuETqLtLxruINqxD8vxYmcVu27lx6IRIh2NEIvgZJW4luWapa77iIU7sP0jXMtywSx1jYYOYHmysAMj+5ayglnqGunYA5Zlyk3oY7FYlGjHXmKREHZgpGtZLkA01ES0qxnLm+taYgxmqWukYy/YHpzskgHaUuxalgsQ6dxPrLsN25+P3S8Ji3a3maXWTsC1XNqU202k3cyncLKLXfNlzNLmvcQindiBQteyXHOMmomGmrC82a4lxuYYhXqOkdNzjJyEcqNE2hshGsbJKnItKTdtOUCsZ3my7XffpYp2txPt3Ifl+HvakniMwj3HKNZzjNKd7wLXknLTlpae5cnpzndj2rZEO/YQi3RjZ410LSkHiIQOEOtqxfLl4vjTzDXMIMfNqp9//Md/5Nxzz2X06NHs3r2bm2++mbfeeov333+f4uLUt9ASDXmiIiIiIsfccbPqZ+fOnVx66aXs27eP4uJi5s+fz4YNGw4rSREREZFPvmFNVB56KM2SSxEREREybDKtiIiISCIlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsz3BXINHtt9/OTTfdxLe//W3uuuuu4a4OPGi5/31xB2x/BJreg/wpMPoicALxeMNaqHsW/IVQczlklcdjLVtg+0MQ6YTqL0DhzHisuxm2PQht22DkbKg8D+yeUxOLwq6nYO/LkFUFYy4HX0F82wN/htrHwHJg9MUQPCEe62yErf8DoT1QejqUnQVWT5siIaj9Xzj4NuRNhNGXgCc7vm3ji1C3CrxB05bsqnisdRts/y2E26Dy81A0N6EtrSbWugUKZkD1F8H2xtuyexXseRECZTDmCvCPjG978D2ofdT8f/WXYMSUeCy0D7Y9AB11ULwAKs4GqyfPjnZD7eNw4A3IHQejLwVvbnzbvRtg1x/Ak2NiuTXxWPtOU253M5SfDSUL4rFwO2x/GFr+CiOmQvWF4Ph72hKD+uegYQ34i01bAiXxbZv/araNRaD6Aig4JR7rOgBbH4COnVD0GXMM+9oShl0rYd+rkFMDNZeZc9Br/+tQ+4Spx+hLIW9cPNZRZ9oS2g/lZ5lz3ivSeez67qolwL54nHK4bDcyeLFYjEhHI9HO/VieAJ6cSizH1xePhpoJt9dhYeHkVGD74v06FgkRbt1FLBLCCRRhZxVh9Xy+Y7EIkbZ6ol3N2N4cnJxKLNvp2zbSuY9I+x4s24OTW4ntyYrvs7udSNtuYtEwTnYpTiB+vYlFw0RadxENt2P78nFyyrB6+m4sFiPa0Uikcz+W48eTW+VuS1cLkbY6AJyccmxfXkJbunra0okTKMTOKkloS7SnLU3Ynmyc3EosOz50RToPEGlvMG3JqcD2xq9j0XAHkdZdPW0pxgnErzexaIRI226i3a3YvmBPW5x4Wzr3EunY29OWSqzezz4Q7Wo1x4gYnuxybH/8MxqLdBFu20Us3IntL8DJLnW3pb2BaOgglicbT24FVu/1EYiGDhJub8DCxsmtwPbmpOw3nzZWLBaLDXclADZu3MhFF11EMBjk9NNPP6xEpbm5mfz8fJqamggGg4d8/6D0T1JSyZsAZ66DrDL40xVmgO7lZMGCx8yAuuU+ePXrZtDqNfmfYPodZnBecyZ0NsRjI+fCGX8EywPr/gYa18Vj/pFw+h+hcAa8cyu8c3NChSw49Scw8TpoWAfPnwvh1ni46nyY/yh0HYTVi8yg1SunBhavg+xR8Mo18NF/x2O2D0572AxS2x6C9X8LsXA8PuE6mHU3tGyG5xZBx654rGA6nLkanBx44XyT/PTy5sOip6F4Hmy6E968wX18p/0nnHiDSTTWng3dTfFY+RL47EqItMPqM02S0iurEs5cC8EJ8Noy+ODuhEPkgXm/hppLYeeT8NJFEO2Kx8deDXPuhfYdpi1t2+Kx/CmmXF8BvPRl2PlEPObJgYV/gNJF8MFP4bVvAgkfrZNvgZNvhv1vwtqzTOLVq2ShOQ6xCKw5C/ZtiMcCJXDGGpO0vXUjvH9HQltsmP1LGPdV2P0MvPhFiHTE46Mvgc88YPrWcwuh5cN47Gj6bjqXZcSl5LgRi0YINbxKtDOhL9heAmVzsf35dB/4gO6DH7i28Y48CW+whkjHXkING13nxckuxVcyE6JhOuvWE+tu6YtZniz8ZfOwPFl07X2bSGttQqk2vpIZeHLKCLfuomvPWyT2XU/eaHxFJxPtbiNUt55YpDNeri9IoGwu2B5CDRuJduxJKNaDv3QOTqCA7qYtdO/f5G5LwWS8I8YR6TxAqOEVk6T3bppVjL90FkQjdNZvINYV/+xbTgB/+Vxsby5d+94l3LwtoVQLX/E0PLmVhNvq6Wp8A4jGj1FuNb6iqcTCHYTq1xMLxz8vljePQPlcsL10Nb5OpD3hmmw5+Etn4WQV0d28je5977rbMmIi3oKJRENNdNZvMF+eetsSKMRfOgeIEarfQDR0MOEY+QiUz8P25dG1fxPhpi2ucn1FU/HkjeKTaDDjd0YkKq2trcyYMYOf/vSn/Nu//RvTpk0b3kTlcJKUXmOvgoqlZuDqL6sCzn4TVo4230b7W7LRDM6JiUivk28xg1//wRugcBbMux+empIcs71w3lZ47rPQ+lFyfO79sG8jfLgiOTbqyzDmKnh+aXLMPxKWboKV4yDckhw/cx1sWg67n0qOTb7BJEKvXZccy58CC38Pvx9v7rgksmw4d7NJuBKTql6nrjCJxKblybGKpWa/qxclxzx5cN4WeGqyO2HotfAp2Ho/7PhdcmzCdTByFmy4KjmWOxYWvwArx7guVH2Wvgfrr4L9G5Nj05ebO1Tv3JIcK1lk4s/MSo45AThvO6yaDh0p7mrM/505Jx/dnxw7mr6bihKVQUk1eAPYvnx8xdPo3PV8iq0sAlVn9Ayy7UlRX9Ep5lt5y/akmJNTjie3yiQ4STv1EqhaRGftWveXkB7+snl0N20h2tGYFPPkj8XyZCcN3mAGf3/pLDp3rknRFkxbGja6kqpe3pEnEQu3E25Kvo7ZWSV488cRql+fXKjlIVB1Op271qX8HPpLZxFu3dl3d8fVlrzR2P4RdO39c4pis/GXzetpS3JfD1QupGvPW0QTkqq+thROhmgkKfEEsAMj8RZOJrT7pRRtscmqXuy6M/VJMZjxOyMe/Vx33XUsXbqUxYsX82//9m9p3xcKhQiFQn3/bm5u/jiqN7DaJ1IPSmAGjg/vSX+h3/7b1EkKmG/rnjS3/fZvhK2/SR2LdsPmX6ROUnrL3ZfiQgXmDkPiY6VEoX2mLamSFDCPkeqeTr/PnDGpY03vwZZ7k5MUMK9tvjd1ktJbblvyBRkwdckZmzoWbjFtSZWk9Ja7c2Wa2OOpEwIwx3zzL9L3h62/SZ2kgHl0lXg3JFHjOvPoJZVIp2lLujrVPp7+vBxN35WjFmmrT/l6tKuJcOvONFvFCLfuSJmkAETa64mGkgdKs78G12MG9067zZ2JFEkKQLitLmWS0lduwuMWV227Wwi37Ei9TyDcsiNlkmLKrSeW5jMR7Wgk7Em9T2Jhwi3b0vbtcHuD+25J4j7b64lFQiljsXB7T1tSJ+Th1p0pkxToaUuau5LRzn1EWtN8fmNRIh178ORWpo5/Sgx7ovLQQw/xxhtvsHFjmgt4gttuu43vfe97H0OtBsHxg+1PH0+XbAA42WZuSaoObA9UrmW2HajcdGx/fJ7FoPZ5iHKdAFheiKX4kDuB9Ps8VLnpLkaHKtfygieQOnaofToB87grmqYt9gDfbg55XixSXuicQPrHK5YD9gBtGbCPDVDfo+m7cvSsAdYyWE760AAxLCd9uZY94D4ta4DhoHfbVF8oLLtvnkraOqVjD9BO2yEWOdK2DHT8bMw6klRtGeD49dQpfXCgmI1FLE2KYx2iL2jNy7AegdraWr797W/zwAMPEAgMcCHucdNNN9HU1NT3U1tbe8htjszIQ7+lV83l5ieV4CQzX8RXmByzbBjzFTNvZLDlln8Oxl1t5lv058mFCX9nJrIOttyay8xPKjk1MPGbZhJsEsuUOeqi1NuOviz9PosXwPivuyd29rL9Jla8IDl2qHJHXQQ1V5i69RcoM23JqUm9bc0A5Q50/ApmmGPvyU2OWR5zzsqXDL7cqvNh3FWpL1i+Aph4LQQnD77cI+27ckyk+5ZsZxXjyasmZd+1HDzB0Vi+/JTbOrmVOGnK9eRW4OSkjlmeLJxgTdrE35tbhZNTnjLmya1MW67tL8QbHJW671o23rxR2P7UfczJqUh7jJyccrx5VSljOH6c4BishAnC7m0r05c7wPGzfPl4gqPTJCQWnrxq7KzilNsOdIyc7NKe852C7cXJKkkd+xQZ1kTl9ddfp7GxkRkzZuDxePB4PDz//PP8+Mc/xuPxEIm4v2H6/X6CwaDrZ0hctvfw3le2GKbeCmVnmDkliR04uwpOewg8WTD/EfcjFdsPs35uJnueusJMOE1UczlMuNZM7Bx3Da4LVv4UM4Eyu8rMN3ESPozeoNmnL99Mokx83GLZZs5G1bkw5Z+h4vPufRYvgGl3mBU80+6Ir9QBM7DPf8TcoVjwKPiLEtrig5l3mVUtM38II+e4y62+ECZdb1YkTVzmbkveBDPXJlBs6pv4Dd6TY14LFJv35E1MKNQyiUbNJabs6i+59zlyjqlLwVSY+SP3HQV/kZm34QmY/yYmXpYHpt3ecwxuT06QKpaaY1d1rpkMnXjxzakx9fXlm4nHiSt1nCyYe585Z7N/Yc5hYlvGXWPO9YRre5KrBAXTTB/JG2/6TOIdEF9BT1uyzXlPXJllOXDSzaZvTr3V9NVER9p300o9KEh6Tm41Tq57gLK8efiKpmJ7svAVn+LuY5YHf8kMLNuLv3g6Vr+7jZ78sXiyS/Hmj8fuN7jZ/kK8hZNxAgV4Cybh+hw6fnwlM7FtB3/JzH534Gy8hVOw/UF8hVOw/SPcbcguM/vNrcATrHG3xZODr/gULMePr3i6u49ZDr7i6T2xU7D6rW7xBGvw5FbiyR+Lk+1OkGz/CFMXXxBv4RRcw5jtw9/TFl/JzH6Jl4W3YJI5BoWTkhIkM+9lPJ7sUjz541wxy5NljrntxV8yw/0l0bLxFZ9izlnRVCxvnmvb3vPsCdYkJSuWL4hv5EnY3hx8RVPd59v24i+ZOfBdnE+JYZ1M29LSwvbt7jkGV199NZMmTeK73/0uJ5100oDbD+mqH4AHg0DC89PLYrD3VWh+H4InQtFs9/vbd0L9GrPEs3yJe7APt8Pup80z/4qz3ctyYzFofN5MDC2c5V6WC2ap694NZgApPSO+xBjMUtfdq8xy5vJz3Mtyo2Gof9YsUy5Z6F6WC7D/jZ7lySeYlTeJOurM8ltv0JSbOJkr0mnaEm4zd3cC/TL+xpegdbO5w1Aw1R1r2QJ7XjLLX8sWuz+Y3c2mXICKc9yDfSxq6tNRB8Xz3ctyAQ68HV+eXNIvwehshLo/muSn4hz33ZtIl1mJ1N1k6pPV71vjnvXx5cmF/e5StW4z5y1QYpZ+JyyZpLvVzA2Jhs35ThzsYzGzrLm9FormuZeUAzS9H1+eXLLQfb5D+8z5dgKmLYmDVbQb6p4xy5PLznAnLnBs+27ihHNNoj0q0a5WoqEDWJ4s7MDIvqWsYJa6Rjr2gGXhZJW4luXGYlGiHXuJRULYgZGuZbkA0VAT0a5mLG+ua4kxQCzcSaRjL9genOwS16ObWDRCpKMRYhGcrGLXslyASOd+Yt1t2P58bJ/7uhvtbjNLrZ2Aa7m0KbebSLtZFeRkF7vmy5ilzXuJRTqxA4VJy3KjXc1EQ01Y3mzXEmNzjEI9x8jpOUZOQrlRIu2NEA3jZBVh9XscHOk8QKxnebLtd9+lina3E+3ch+X4e9qSeIzCPcco1nOM4tdHs7R5H7FwB7a/wLWk3LSlpWd5crrz3ZiyLZ80x92qn0SLFi0a/lU/IiIiMmQGM35rlo6IiIhkrGFf9dPfunXrhrsKIiIikiGO6I7KwYMH+a//+i9uuukm9u/fD8Abb7zBrl27DrGliIiIyOEb9B2Vt99+m8WLF5Ofn8+2bdv4+te/TmFhIY899hg7duzg17/+9VDUU0RERD6FBn1H5frrr+eqq67iww8/dP3uk7/5m7/hhRdeOKaVExERkU+3QScqGzdu5P/+3/+b9HplZSX19al/JbSIiIjIkRh0ouL3+1P+jZ0PPviA4uLUv5VPRERE5EgMOlE577zzuPXWW+nuNn/wybIsduzYwXe/+10uvPDCY15BERER+fQadKLy/e9/n9bWVkpKSujo6GDhwoWMHz+evLw8/v3f/30o6igiIiKfUoNe9ZOfn8+zzz7LSy+9xNtvv01rayszZsxg8eLFh95YREREZBAGnajs2LGD0tJS5s+fz/z58/tej8Vi1NbWMmrUqGNaQREREfn0GvSjn5qaGmbMmMGWLVtcrzc2NjJmzJg0W4mIiIgM3hH9ZtrJkycze/ZsVq9e7Xo9w/6+oYiIiBznBp2oWJbFT3/6U/6//+//Y+nSpfz4xz92xURERESOlUHPUem9a/IP//APTJo0iUsvvZR33nmHf/mXfznmlRMREZFPt6P668nnnHMOf/rTnzjvvPN49dVXj1WdRERERIAjSFQWLlyIz+fr+/eJJ57IK6+8wgUXXKA5KiIiIocpEon0/fLUTyKfz4dtH9FUWBcrdhxnF83NzeTn59PU1EQwGBzu6oiIiBxSLBajvr6egwcPDndVhpRt24wZM8Z1c6PXYMbvw7qj0tzc3FdQqr/zk0gJg4iISHq9SUpJSQnZ2dmfyIUo0WiU3bt3U1dXx6hRo46qjYeVqBQUFFBXV0dJSQkjRoxIucNYLIZlWUQikSOujIiIyCdZJBLpS1JGjhw53NUZUsXFxezevZtwOIzX6z3icg4rUVmzZg2FhYUArF279oh3JiIi8mnWOyclOzt7mGsy9Hof+UQikaFPVBYuXJjy/0VERGTwPomPe/o7Vm087Om4e/fuZfv27a7X3nvvPa6++mouuugiHnzwwWNSIREREZFeh52oLFu2zPVbaBsbG1mwYAEbN24kFApx1VVX8Zvf/GZIKikiIiKfToedqGzYsIHzzjuv79+//vWvKSws5K233uLJJ5/kP/7jP1ixYsWQVFJERESOzi233MK0adOGuxqDdtiJSn19PTU1NX3/XrNmDRdccAEej5nmct555/Hhhx8e8wqKiIiIGYeXLVvG2LFj8fv9VFdXc+655yb9geBPmsNOVILBoOuX07z66qvMmTOn79+WZREKhY5p5URERAS2bdvGzJkzWbNmDcuXL+edd95h1apVnH766Vx33XUfWz2G4zfpHnaiMnfuXH784x8TjUZ59NFHaWlp4YwzzuiLf/DBB1RXVw9JJUVERD7Nrr32WizL4tVXX+XCCy9k4sSJTJkyheuvv54NGzYAsGPHDs4//3xyc3MJBoNcdNFFNDQ0pC0zGo1y6623UlVVhd/vZ9q0aaxataovvm3bNizL4uGHH2bhwoUEAgEeeOCBIW9rf4edqPzrv/4rK1euJCsri4svvph/+qd/oqCgoC/+0EMPaemyiIjIMbZ//35WrVrFddddR05OTlJ8xIgRRKNRzj//fPbv38/zzz/Ps88+y0cffcTFF1+cttwf/ehHfP/73+fOO+/k7bffZsmSJSmncdx44418+9vfZtOmTSxZsuSYt+9QDvuPEk6dOpVNmzbx8ssvU1ZW5nrsA3DJJZdw4oknHvMKioiIfJpt3ryZWCzGpEmT0r5n9erVvPPOO2zdurXv6cavf/1rpkyZwsaNG5k1a1bSNnfeeSff/e53ueSSSwC44447WLt2LXfddZdrcczf//3fc8EFFxzjVh2+Qf315KKiIs4///yUsaVLlx6TComIiEjc4fzt4E2bNlFdXe2agnHiiScyYsQINm3alJSoNDc3s3v3bk477TTX66eddhp//vOfXa+deuqpR1H7o3f0f39ZREREhsyECROwLIu//OUvw7L/VI+bPk5KVERERDJYYWEhS5YsYcWKFbS1tSXFDx48yOTJk6mtraW2trbv9ffff5+DBw+mnJYRDAapqKjg5Zdfdr3+8ssvZ9w0jkE9+hEREZGP34oVKzjttNOYPXs2t956K1OnTiUcDvPss89yzz338P7773PyySdz+eWXc9dddxEOh7n22mtZuHBh2kc3N9xwAzfffDPjxo1j2rRp3Hfffbz11lvDsrJnIEpUREREMtzYsWN54403+Pd//3e+853vUFdXR3FxMTNnzuSee+7BsiyefPJJli1bxmc/+1ls2+bss8/mJz/5Sdoyv/Wtb9HU1MR3vvMdGhsbOfHEE1m5ciUTJkz4GFt2aFbscGbppNDY2EhjYyPRaNT1+tSpU49JxQ5Hc3Mz+fn5NDU1EQwGP7b9ioiIHInOzk62bt3KmDFjCAQCw12dITVQWwczfg/6jsrrr7/OlVdeyaZNm/pmIluWRSwWw7IsIpHIYIsUERERSWnQicpXv/pVJk6cyL333ktpaSmWZQ1FvUREREQGn6h89NFH/O///i/jx48fivqIiIiI9Bn08uQzzzwz6ZfBiIiIiAyFQd9R+a//+i+uvPJK3n33XU466SS8Xq8rft555x2zyomIiMin26ATlfXr1/Pyyy/z9NNPJ8U0mVZERESOpUE/+lm2bBlXXHEFdXV1RKNR14+SFBERETmWBp2o7Nu3j3/4h3+gtLR0KOojIiIi0mfQicoFF1zA2rVrh6IuIiIiIi6DnqMyceJEbrrpJl566SVOPvnkpMm03/rWt45Z5UREROTT7YhW/eTm5vL888/z/PPPu2KWZSlRERER+ThEI7DnReiog6xyKF4AtjPku12xYgXLly+nvr6eU045hZ/85CfMnj17yPY36ERl69atx2zn99xzD/fccw/btm0DYMqUKfzLv/wL55xzzjHbx1F5sN9v3b24A7Y/Ak3vQf4UGH0ROAl/v6BhLdQ9C/5CqLncdJxeLVtg+0MQ6YTqL0DhzHisuxm2PQht22DkbKg8D+yeUxOLwq6nYO/LkFUFYy4HX0F82wN/htrHwHJg9MUQPCEe62yErf8DoT1QejqUnQW9v0k4EoLa/4WDb0PeRBh9CXiy49s2vgh1q8AbNG3JrorHWrfB9t9CuA0qPw9FcxPa0mpirVugYAZUfxFsb7wtu1eZD1agDMZcAf6R8W0Pvge1j5r/r/4SjJgSj4X2wbYHzAeyeAFUnA1Wz5PLaDfUPg4H3oDccTD6UvDmxrfduwF2/QE8OSaWWxOPte805XY3Q/nZULIgHgu3w/aHoeWvMGIqVF8Ijr+nLTGofw4a1oC/2LQlUBLftvmvZttYBKovgIJT4rGuA7D1AejYCUWfMcewry1h2LUS9r0KOTVQc5k5B732vw61T5h6jL4U8sbFYx11pi2h/VB+ljnnvSKdx67vrur/l1i9cFkXcvyIdO4j0r4Hy/bg5FZie7L6YtHudiJtu4lFwzjZpTiB+PUmFg0Tad1FNNyO7cvHySnD6um7sViMaEcjkc79WI4fT24VluOLl9vVQqStDgAnpxzblxcvN9JFuHUXsUgnTqAQO6uk77eex2JRIm31RLuasD3ZOLmVWHZ86Ip0HiDS3mDaklOB7Y1fx6LhDiKtu3raUowTiF9vYtEIkbbdRLtbsX3BnrY48bZ07iXSsbenLZVYvZ/9TFH7GLz+bXMN65VdBTN/ZK45Q+Thhx/m+uuv52c/+xlz5szhrrvuYsmSJfz1r3+lpKTk0AUcgSP+o4RdXV1s3bqVcePG4fEc2R9h/v3vf4/jOEyYMIFYLMavfvUrli9fzptvvsmUKVMOuf2Q/lHC/klKKnkT4Mx1kFUGf7rCDNC9nCxY8JgZULfcB69+3QxavSb/E0y/wwzOa86EzoZ4bORcOOOPYHlg3d9A47p4zD8STv8jFM6Ad26Fd25OqJAFp/4EJl4HDevg+XMh3BoPV50P8x+FroOwepEZtHrl1MDidZA9Cl65Bj7673jM9sFpD5tBattDsP5vIRaOxydcB7PuhpbN8Nwi6NgVjxVMhzNXg5MDL5xvkp9e3nxY9DQUz4NNd8KbN7iP77T/hBNvMInG2rOhuykeK18Cn10JkXZYfaZJUnplVcKZayE4AV5bBh/cnXCIPDDv11BzKex8El66CKIJg+zYq2HOvdC+w7SlbVs8lj/FlOsrgJe+DDufiMc8ObDwD1C6CD74Kbz2TSDho3XyLXDyzbD/TVh7lkm8epUsNMchFoE1Z8G+DfFYoATOWGOStrduhPfvSGiLDbN/CeO+CrufgRe/CJGOeHz0JfCZB0zfem4htHwYjx1N303nsiO6lMjHKBaL0bX3bSKttQmv2vhKZuDJKSPcuouuPW+R2Hc9eaPxFZ1MtLuNUN16YpHOvpjlCxIomwu2h1DDRqIdexKK9eAvnYMTKKC7aQvd+ze56uItmIx3xDginQcINbxikvTeTbOK8ZfOgmiEzvoNxLrin33LCeAvn4vtzaVr37uEm7cllGrhK56GJ7eScFs9XY1vAPE/nOvkVuMrmkos3EGofj2xcPzzYnnzCJTPBdtLV+PrRNoTrsmWg790Fk5W0WEe6fSOyR8lrH0MXvwSrmsMAD3j1oJHhyxZmTNnDrNmzeLuu811NRqNUl1dzbJly7jxxhtd7z1Wf5Rw0IlKe3s7y5Yt41e/+hUAH3zwAWPHjmXZsmVUVlYmVXSwCgsLWb58OV/72tcO+d4hS1QOJ0npNfYqqFhqBq7+sirg7Ddh5WjzbbS/JRvN4JyYiPQ6+RYz+PUfvAEKZ8G8++GpFMmc7YXztsJzn4XWj5Ljc++HfRvhwxXJsVFfhjFXwfNLk2P+kbB0E6wcB+GW5PiZ62DTctj9VHJs8g0mEXrtuuRY/hRY+Hv4/XhzxyWRZcO5m03ClZhU9Tp1hUkkNi1PjlUsNftdvSg55smD87bAU5PdCUOvhU/B1vthx++SYxOug5GzYMNVybHcsbD4BVg5xtzl6W/pe7D+Kti/MTk2fbm5Q/XOLcmxkkUm/sys5JgTgPO2w6rp0LE7OT7/d+acfHR/cuxo+m4qSlQyXqS9gVBDiv5newlULaKzdq37S0gPf9k8upu2EO1oTIp58sdiebLp3vduUszy5uEvnUXnzjUp6xOoOoNQw0Zi3cnXFO/Ik4iF2wk3JV/H7KwSvPnjCNWvTy7U8hCoOp3OXetSfg79pbMIt+7su7vjakveaGz/CLr2Jv/2dcuTTaDq9KP++3ZHnahEI7Cyxn0nxcUyd1bO23rMHwN1dXWRnZ3No48+yhe+8IW+16+88koOHjzIk08+6Xr/sP315Jtuuok///nPrFu3jrPPPrvv9cWLF3PLLbcccaISiUT43e9+R1tbG/PmzUv5nlAoRCgU6vt3c3PzEe3rmKp9IvWgBGbg+PCe9Bf67Q+lTlLAfFv35KSO7d8IW3+TOhbths2/SJ2k9Ja7L8WFCswdhsTHSolC+0xbUiUpYB4j1SX/EsC+feaMSR1reg+23JucpIB5bfO9qZOU3nLbtqeO1T1tHgOlEm4xbUmVpPSWu3NlmtjjqRMCMMd88y/S94etv06dpIB5dJV4NyRR4zrTV1KJdJq2pKtT7ePpz8vR9F05LrnuEiSKdps7EymSFIBwe13KJAUg0taAlfC4JVGsu4Vwy4609Qm37EiZpJhy64ml+UxEOxoJe1Lvk1iYcMu2tH073N6Q9jhE2uuJRUIpY7FwO7GuFiz/Mb57P1h7XhwgSQGIQXuteV/pomO667179xKJRJJ+PUlpaSl/+ctfjum+Eg06UXniiSd4+OGHmTt3riuznDJlClu2bBl0Bd555x3mzZtHZ2cnubm5PP7445x44okp33vbbbfxve99b9D7GFKOH+wBnl160yQbYG6xW07q2+r2QOVa4KT5kMLAMdsfn2cxqH0eolwnAJYXYik+5E4g/T4PVW66i9GhyrW8R75PJ2Aed0XTtMX2Jb/ea8D65mBuzaa48+AE0j9esRzTV9Luc6A+NkB9D9V3BypXjk9W+t9IYVnphwML22yb6guFZffNU0m98QDf6geIWbZDLJKmXMs+RFsGKNeyMb+ZI1VbnAHLHTD2celIvhN0VO87Dgz6qO/ZsyflhJm2trYjuiV2wgkn8NZbb/HKK6/wjW98gyuvvJL3338/5Xtvuukmmpqa+n5qa2tTvu9jVXO5+UklOMk8KvAVJscsG8Z8xcwbGWy55Z+DcVeb+Rb9eXJhwt+ZiayDLbfmMvOTSk4NTPymmQSbxDJljroo9bajL0u/z+IFMP7r7omdvWy/iRUvSI4dqtxRF0HNFfQ9s00UKDNtyalJvW3NAOUOdPwKZsD4vzPnoD/LY85Z+ZLBl1t1Poy9MvVF0lcAE6+F4OTBl3uovjsxTd+V45aTU5nydcuThROsSZvce3KrcHLK08Qq05Zr+wvxBkel7ruWjTc4Ctufuo85ORV4clOX6+SU482rShnD8eMEx2B5Uif3Tk5l+nJzK3HSxCxfPrYvxWf745aV+jwc8fsGoaioCMdxaGhw35FqaGigrCzV2HBsDDpROfXUU3nqqfg8hN7k5L/+67/SPrIZiM/nY/z48cycOZPbbruNU045hR/96Ecp3+v3+wkGg66fIXG4z9rLFsPUW6HsDDOnJDGLz66C0x4CTxbMf8T9SMX2w6yfm8mep64wE04T1VwOE641EzvHXYNrsM2fYiZQZleZ+SaJ37S9QbNPX76ZRJn4uMWyzZyNqnNhyj9Dxefd+yxeANPuMCt4pt0RX6kDZmCf/wh4AmaSlj9hQpntg5l3mVUtM38II+e4y62+ECZdb1YkTVzmbkveBDPXJlBs6pv4Dd6TY14LFJv35E1MKNQyiUbNJabs6i+59zlyjqlLwVQzAz7xjoK/yMzb8ATMfxMTL8sD027vOQa3JydIFUvNsas610yGTrz45tSY+vryzcTjxJU6ThbMvc+cs9m/MOcwsS3jrjHnesK1PclVgoJppo/kjTd9JvEOiK+gpy3Z5rwnrsyyHDjpZtM3p95q+mqiI+27clxzAgV4Cybh+hw6fnwlM7FtB3/JzH534Gy8hVOw/UF8hVOw/SPc5WWX4ckfiye3Ak+wxhWzPDn4ik/Bcvz4iqe7+5jl4Cue3hM7BavfnWdPsAZPbiWe/LE42e4B1/aPMHXxBfEWTsE1jNk+/D1t8ZXM7Jd4WXgLJpljUDgpKUEy817G48kuxZPvfmxsebLwF/e7Tg+X4gU9n/V0NwYsyK5O/wXvKPh8PmbOnMnq1av7XotGo6xevfqIxv/DNejJtC+99BLnnHMOV1xxBffffz//9//+X95//33+9Kc/8fzzzzNz5sxDFzKAM844g1GjRnH//fcf8r1DuuoHkifVXhaDva9C8/sQPBGK+q0bb98J9WvMEs/yJe7BPtwOu582z/wrznYvy43FoPF5MzG0cJZ7WS6Ypa57N5jOWXpGfIkxmKWuu1eZ5czl57iX5UbDUP+sWaZcstC9LBdg/xs9y5NPMCtvEnXUmeW33qApN2GZIZFO05Zwm7m7E+h3h63xJWjdbO4wFEx1x1q2wJ6XTLZfttg92Hc3m3IBKs5xD/axqKlPRx0Uz3cvywU48HZ8eXJJvw9oZyPU/dEkPxXnuO/eRLrMSqTuJlOf/t9C9qyPL08u7HeXqnWbOW+BErP0O2HJJN2tZm5INGzOd+JgH4uZZc3ttVA0z72kHKDp/fjy5JKF7vMd2mfOtxMwbUl81BTthrpnzPLksjPciQsc276b+NnQJNrjTizcSaRjL9genOwS16ObWDRCpKMRYhGcrOKkZbmRzv3Eutuw/fnYPvd1N9rdRrRzP5YTwM4qct1lj0W7ibSbVUFOdjFWQh8zS5v3Eot0YgcKsfslLtGuZqKhJixvtmuJMUAsEiLSsQcsByerBCthAmksFiXS3gjRME5WEZbHfec20nmAWM/yZNuf368t7UQ792E5/p62HJvHPsd21Q+4HyUP/aqfhx9+mCuvvJKf//znzJ49m7vuuotHHnmEv/zlL0lzV4Zt1Q/Ali1buP322/nzn/9Ma2srM2bM4Lvf/S4nn3zyoMq56aabOOeccxg1ahQtLS08+OCD3HHHHTzzzDOcddZZh9x+yBMVERGRY+iYJCqQ5veoVJs73EP4e1QA7r777r5f+DZt2jR+/OMfM2fOnKT3DWuicqx87WtfY/Xq1dTV1ZGfn8/UqVP57ne/e1hJCihRERGR48sxS1Rg2H4z7eEatuXJjuNQV1eXNKF23759lJSUEIkcxi+G6nHvvfcOdvciIiICJik5xkuQM9GgH7qluwETCoXw+QZYtikiIiIySId9R+XHP/4xYFb59P5hwl6RSIQXXniBSZMmHfsaioiIyKfWYScqP/zhDwFzR+VnP/sZjhN/Dubz+aipqeFnP/vZsa+hiIiIfGoddqLS+1eTTz/9dB577DEKCvS7FURERGRoDXoy7dq1a4eiHiIiIiJJDjtRuf766w/rfT/4wQ+OuDIiIiIiiQ47UXnzzTcP+Z6j/fPXIiIiIokOO1HRIx8RERH5uA3Z36wOBoN89NFHQ1W8iIiIfAoMWaIyjL+ZX0RE5BMvFosR6dhLuHUXkY69Qz7uvvDCC5x77rlUVFRgWRZPPPHEkO6v16BX/YiIiMjwCrfV0b3vPWKRzr7XLCeAd+QUPDnlA2x55Nra2jjllFP46le/ygUXDO0fPkykREVEROQ4Em6ro6vx9aTXY5FO83rJzCFJVs455xzOOeecY17uoQzZox8RERE5tmKxGN373hvwPd373vtETb9QoiIiInKciHbucz3uSSUW6STaue9jqtHQU6IiIiJynIhFQsf0fceDIUtUOjo66OjoGKriRUREPnUsx39M33c8GLJEJSsri6ysrKEqXkRE5FPHDozEcgIDvsdyAtiBkR9TjYaeVv2IiIgcJyzLwjtySspVP728I6cMyZ+0aW1tZfPmzX3/3rp1K2+99RaFhYWMGjXqmO+vlxIVERGR44gnpxxKZn7sv0fltdde4/TTT+/7d+8fK77yyiu5//77h2SfoERFRETkuOPJKcfJLutZBRTCcvzmsdAQ/nHgRYsWDcuy5yFLVPSXlEVERIaOZVk4WUXDXY0hp7/1IyIiIhlryBKVp59+msrKyqEqXkRERD4FDuvRT++EmcPxgx/8AID58+cfWY1EREREehxWovLmm2+6/v3GG28QDoc54YQTAPjggw9wHIeZM2ce+xqKiIh8wkSj0eGuwpA7VlNADitRWbt2bd///+AHPyAvL49f/epXFBQUAHDgwAGuvvpqFixYcEwqJSIi8knk8/mwbZvdu3dTXFyMz+f7RC4+icVi7Nmzx/zeF6/3qMqyYoNMeSorK/njH//IlClTXK+/++67fO5zn2P37t1HVaHBaG5uJj8/n6amJoLB4Me2XxERkSPV1dVFXV0d7e3tw12VIWVZFlVVVeTm5ibFBjN+D3p5cnNzM3v27El6fc+ePbS0tAy2OBERkU8Vn8/HqFGjCIfDRCKR4a7OkPF6vTiOc9TlDDpR+eIXv8jVV1/N97//fWbPng3AK6+8wg033MAFF1xw1BUSERH5pOt9JHK0j0U+DQadqPzsZz/jH//xH7nsssvo7u42hXg8fO1rX2P58uXHvIIiIiLy6TWoOSqRSISXX36Zk08+GZ/Px5YtWwAYN24cOTk5Q1bJdDRHRURE5PgzZHNUHMfhc5/7HJs2bWLMmDFMnTr1qCoqIiIiMpBB/2bak046iY8++mgo6iIiIiLiMuhE5d/+7d/4x3/8R/7whz9QV1dHc3Oz60dERETkWBn071Gx7Xhuk/hLamKxGJZlfaxLrTRHRURE5PgzpL9HJfG31IqIiIgMpUEnKgsXLhyKeoiIiIgkGXSiAnDw4EHuvfdeNm3aBMCUKVP46le/Sn5+/jGtnIiIiHy6DXoy7Wuvvca4ceP44Q9/yP79+9m/fz8/+MEPGDduHG+88cZQ1FFEREQ+pQY9mXbBggWMHz+eX/7yl3g85oZMOBzmmmuu4aOPPuKFF14Ykoqmosm0IiIix5/BjN+DTlSysrJ48803mTRpkuv1999/n1NPPfVj/WuQSlRERESOP4MZvwf96CcYDLJjx46k12tra8nLyxtscSIiIiJpDTpRufjii/na177Gww8/TG1tLbW1tTz00ENcc801XHrppUNRRxEREfmUGvSqnzvvvBPLsvjKV75COBwGwOv18o1vfIPbb7/9mFdQREREPr0GPUelV3t7u+uvJ2dnZx/Tih0OzVERERE5/gzpb6btlZ2dzcknn3ykmwNw22238dhjj/GXv/yFrKwsPvOZz3DHHXdwwgknHFW5x8yDlvvfF3fA9keg6T3InwKjLwInEI83rIW6Z8FfCDWXQ1Z5PNayBbY/BJFOqP4CFM6Mx7qbYduD0LYNRs6GyvPA7jk1sSjsegr2vgxZVTDmcvAVxLc98GeofQwsB0ZfDMGEY9fZCFv/B0J7oPR0KDsLev/sQSQEtf8LB9+GvIkw+hLwJCSbjS9C3SrwBk1bsqvisdZtsP23EG6Dys9D0dyEtrSaWOsWKJgB1V8E2xtvy+5VsOdFCJTBmCvAPzK+7cH3oPZR8//VX4IRU+Kx0D7Y9gB01EHxAqg4G6yeJ5fRbqh9HA68AbnjYPSl4M2Nb7t3A+z6A3hyTCy3Jh5r32nK7W6G8rOhZEE8Fm6H7Q9Dy19hxFSovhAcf09bYlD/HDSsAX+xaUugJL5t81/NtrEIVF8ABafEY10HYOsD0LETij5jjmFfW8KwayXsexVyaqDmMnMOeu1/HWqfMPUYfSnkjYvHOupMW0L7ofwsc857RTqPXd9941ZoXBmPV1wKix5EMkcsFiHSVk+0qxnbm4OTU4llO33xSOc+Iu17sGwPTm4ltierLxbtbifStptYNIyTXYoTiF9vYtEwkdZdRMPt2L58nJwyrJ6+G4vFiHY0Euncj+X48eRWYTm+eLldLUTa6gBwcsqxffE5jbFIF+HWXcQinTiBQuyskr4/0RKLRXva0oTtycbJrcSy40NXpPMAkfYG05acCmxv/DoWDXcQad3V05ZinED8ehOLRoi07Sba3YrtC/a0xYm3pXMvkY69PW2pxOr97MvH7ojvqBwLZ599NpdccgmzZs0iHA7zz//8z7z77ru8//775OTkHHL7Ib2j0j9JSSVvApy5DrLK4E9XmAG6l5MFCx4zA+qW++DVr5tBq9fkf4Lpd5jBec2Z0NkQj42cC2f8ESwPrPsbaFwXj/lHwul/hMIZ8M6t8M7NCRWy4NSfwMTroGEdPH8uhFvj4arzYf6j0HUQVi8yg1avnBpYvA6yR8Er18BH/x2P2T447WEzSG17CNb/LcTC8fiE62DW3dCyGZ5bBB274rGC6XDmanBy4IXzTfLTy5sPi56G4nmw6U548wb38Z32n3DiDSbRWHs2dDfFY+VL4LMrIdIOq880SUqvrEo4cy0EJ8Bry+CDuxMOkQfm/RpqLoWdT8JLF0G0Kx4fezXMuRfad5i2tG2Lx/KnmHJ9BfDSl2HnE/GYJwcW/gFKF8EHP4XXvgkkfLROvgVOvhn2vwlrzzKJV6+SheY4xCKw5izYtyEeC5TAGWtM0vbWjfD+HQltsWH2L2HcV2H3M/DiFyHSEY+PvgQ+84DpW88thJYP47Gj6bsp+eGyzkO8Rz4OsUgXnXXriXW39L1mebLwl83D8mTRtfdtIq21CVvY+Epm4MkpI9y6i649b5HYdz15o/EVnUy0u41Q3Xpikfh5tnxBAmVzwfYQathItGNPQrEe/KVzcAIFdDdtoXv/Jlc9vQWT8Y4YR6TzAKGGV0yS3rtpVjH+0lkQjdBZv4FYV/yzbzkB/OVzsb25dO17l3DztoRSLXzF0/DkVhJuq6er8Q0g2hd1cqvxFU0lFu4gVL+eWDj+ebG8eQTK54LtpavxdSLtCddky8FfOgsnq+hQh18O05AuTx5Ke/bsoaSkhOeff57Pfvazh3z/kCUqv6uA7rrDe+/Yq6BiqRm4+suqgLPfhJWjzbfR/pZsNINzYiLS6+RbzODXf/AGKJwF8+6Hp6Ykx2wvnLcVnvsstH6UHJ97P+zbCB+uSI6N+jKMuQqeX5oc84+EpZtg5TgItyTHz1wHm5bD7qeSY5NvMInQa9clx/KnwMLfw+/HmzsuiSwbzt1sEq7EpKrXqStMIrFpeXKsYqnZ7+pFyTFPHpy3BZ6a7E4Yei18CrbeDzt+lxybcB2MnAUbrkqO5Y6FxS/AyjHmLk9/S9+D9VfB/o3JsenLzR2qd25JjpUsMvFnZiXHnACctx1WTYeO3cnx+b8z5+Sj+5NjR9N3U7ksYy4ln2pde98h3LI96XUnpxxPbhWhhhT9z/YSqFxE58617i8hPfxl8+hu2kK0ozEp5skfi+XJpnvfu0kxy5uHv3QWnTvXpKxroOoMQg0bXUlVL+/Ik4iF2wk3JV/H7KwSvPnjCNWvTy7U8hCoPp3OnetSfg79pbMIt+7su7vjakveaGz/CLr2/jlFsdkEqk53/TFeOXIfy6OfodDUZLLmwsLClPFQKEQoFOr7d3Nz89BU5HCTFDC34VMNSmAGjg/vSX+h3/5Q6iQFzLd1T5q7Svs3wtbfpI5Fu2HzL1InKb3l7ktxoQJzhyHxsVKi0D7TllRJCpjHSHVPp99nzpjUsab3YMt/JycpYF7bcm/qJKW33LbkCzJg6pIzNnUs3GLakipJ6S1358o0scdTJwRgjvnmX6TvD1t/kzpJAfPoKvFuSKLGdaavpBLpNG1JV6fax9Ofl6Ppu5KxXHcCEl9va8DqfQzbX7TbJDcpkhSAcHtdyiSlr1xv6jmKse4Wwi3Jv86ir9yWHSmTFFNuPbE0n4loRyPhNPskFibcvD1t3w63N6Q/Ru31xCKhlLFYuJ1YVwuWX/MhP26DXp48VKLRKH//93/PaaedxkknnZTyPbfddhv5+fl9P9XV1R9zLVNw/GAP8OwyXbIB5ha75aSO2QOVa4EzwORlzwAx2x+fZzGofTLwPp0AWGkugk4g/T7BHIcj3We6ci0veAKpY4dTru0bfOyQ5WYDab6NDVSu5YA9QFsG7GMDteUo+q5kLivNZd2y08egb65JyhgDbGvZA26b9hp3iJiZUzPAPgcYvqyByrXsAcp1BjxGA8ZkyGTMUb/uuut49913eeihNN8cgZtuuommpqa+n9ra2rTvPSrFKR59pFNzuflJJTjJzBfxpbhDZNkw5itm3shgyy3/HIy72sy36M+TC+P/zkxkHWy5NZeZn1RyamDiN80k2CSWKXPURam3HX1Z+n0WL4DxX3dP7Oxl+02seEFy7FDljroIaq4gZWIQKDNtyalJvW3NAOUOdPwKZsCEvzPnoD/LY85Z+ZLBl1t1Poy7KvVF0lcAE6+F4OTBl3ukfVcympNbmfJ1T24FTk7qmOXJwgmOSZv4e3KrcHLK08Qq05Zr+wvxBkel7ruWjTc4Ctufuo85ORV40rTFySnHk1eVMobjxwnWYHlSfwFycirTl5tbmfb4Wb58bF+Kz7YMuYxIVL75zW/yhz/8gbVr11JVlabzAX6/n2Aw6PoZEmf94fDeV7YYpt4KZWeYOSWJWXx2FZz2EHiyYP4j7kcqth9m/dxM9jx1hZlwmqjmcphwrZnYOe4aXINt/hQzgTK7ysw3Sbwb4Q2affryzSTKxMctlm3mbFSdC1P+GSo+795n8QKYdodZwTPtjvhKHTAD+/xHzB2KBY+CP2FCme2DmXeZVS0zfwgj57jLrb4QJl1vViRNXOZuS94EM9cmUGzqm/gN3pNjXgsUm/fkTUwo1DKJRs0lpuzqL7n3OXKOqUvBVJj5I/cdBX+RmbfhCZj/JiZelgem3d5zDG5PTpAqlppjV3WumQydePHNqTH19eWbiceJK3WcLJh7nzlns39hzmFiW8ZdY871hGt7kqsEBdNMH8kbb/pM4h0QX0FPW7LNeU9cmWU5cNLNpm9OvdX01URH2nfTKZh/6PfIx8KbPx47q8T1mu0vxFs4GSdQgLdgEq7PoePHVzIT23bwl8zsdwfOxls4BdsfxFc4Bds/wlWuk12GJ38sntwKPMEaV8zy5OArPgXL8eMrnu7uY5aDr3h6T+wULK/77p0nWIMntxJP/licbHeCZPtHmLr4gngLp+Aaxmwf/p62+Epm9ku8LLwFk8wxKJyUlCCZeS/j8WSX4skf54pZniz8xf2u0/KxGdbJtLFYjGXLlvH444+zbt06JkyYMKjth/z3qKw6A/avNf9vBeHSJtj7KjS/D8EToWi2+/3tO6F+jVniWb7EPdiH22H30+aZf8XZ7mW5sRg0Pm8mhhbOci/LBbPUde8GM4CUnhFfYgxmqevuVWY5c/k57mW50TDUP2uWKZcsdC/LBdj/Rs/y5BPMyptEHXVm+a03aMpNWGZIpNO0Jdxm7u4E3BdFGl+C1s3mDkPBVHesZQvsecksfy1b7B7su5tNuQAV57gH+1jU1KejDornu5flAhx4O748uaRfgtHZCHV/NMlPxTnuuzeRLrMSqbvJ1Cer37fGPevjy5ML+92lat1mzlugxCz9TlgySXermRsSDZvznTjYx2JmWXN7LRTNcy8pB2h6P748uWSh+3yH9pnz7QRMWxIf80W7oe4Zszy57Ax34gLHtu8mrorTJNqMFA01Ee1qxvLmupYYA8TCnUQ69oLtwckucT26iUUjRDoaIRbBySpOWpYb6dxPrLsN25+P7XNfd6PdbUQ792M5AeysItfE01i0m0i7WRXkZBe75suYpc17iUU6sQOF2P0Sl2hXM9FQE5Y327XEGCAWCRHp2AOWg5NV4lqGHYtFibQ3QjSMk1WE1e9xcKTzALGe5cm2P79fW9qJdu7Dcvw9bcmI7/WfGMfNqp9rr72WBx98kCeffNL1u1Py8/PJyhpg3kIP/cI3ERGR489xk6ikW+Z13333cdVVVx1yeyUqIiIix5/jZnlyBv0KFxEREclAeugmIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhnLM5w7f+GFF1i+fDmvv/46dXV1PP7443zhC18Yziq5PWi5/31xB2x/BJreg/wpMPoicALxeMNaqHsW/IVQczlklcdjLVtg+0MQ6YTqL0DhzHisuxm2PQht22DkbKg8D+yeUxOLwq6nYO/LkFUFYy4HX0F82wN/htrHwHJg9MUQPCEe62yErf8DoT1QejqUnQVWT5siIaj9Xzj4NuRNhNGXgCc7vm3ji1C3CrxB05bsqnisdRts/y2E26Dy81A0N6EtrSbWugUKZkD1F8H2xtuyexXseRECZTDmCvCPjG978D2ofdT8f/WXYMSUeCy0D7Y9AB11ULwAKs4GqyfPjnZD7eNw4A3IHQejLwVvbnzbvRtg1x/Ak2NiuTXxWPtOU253M5SfDSUL4rFwO2x/GFr+CiOmQvWF4Ph72hKD+uegYQ34i01bAiXxbZv/araNRaD6Aig4JR7rOgBbH4COnVD0GXMM+9oShl0rYd+rkFMDNZeZc9Br/+tQ+4Spx+hLIW9cPNZRZ9oS2g/lZ5lz3ivSeez67qqlQEM8TjVctgP55ItFw0RadxENt2P78nFyyrB6+m4sFiPa0Uikcz+W48eTW4Xl+Pq2jXa1EGmrA8DJKcf25cXLjXQRbt1FLNKJEyjEzirB6rlWxWJRIm31RLuasD3ZOLmVWHZ86Ip0HiDS3oBle3ByKrC98etYNNxBpHUXsWgYJ7sYJ5BwvZHjhhWLxWLDtfOnn36al19+mZkzZ3LBBRcMOlFpbm4mPz+fpqYmgsHgoTcYjP5JSip5E+DMdZBVBn+6wgzQvZwsWPCYGVC33Aevft0MWr0m/xNMv8MMzmvOhM6EC//IuXDGH8HywLq/gcZ18Zh/JJz+RyicAe/cCu/cnFAhC079CUy8DhrWwfPnQrg1Hq46H+Y/Cl0HYfUiM2j1yqmBxesgexS8cg189N/xmO2D0x42g9S2h2D930IsHI9PuA5m3Q0tm+G5RdCxKx4rmA5nrgYnB1443yQ/vbz5sOhpKJ4Hm+6EN29wH99p/wkn3mASjbVnQ3dTPFa+BD67EiLtsPpMk6T0yqqEM9dCcAK8tgw+uDvhEHlg3q+h5lLY+SS8dBFEu+LxsVfDnHuhfYdpS9u2eCx/iinXVwAvfRl2PhGPeXJg4R+gdBF88FN47ZtAwkfr5Fvg5Jth/5uw9iyTePUqWWiOQywCa86CfRvisUAJnLHGJG1v3Qjv35HQFhtm/xLGfRV2PwMvfhEiHfH46EvgMw+YvvXcQmj5MB47mr6bzmXDdimRj0G0u41Q3Xpikc6+1yxfkEDZXLA9hBo2Eu3YE9/A9uAvnYMTKKC7aQvd+ze5yvMWTMY7YhyRzgOEGl4xSXrvplnF+EtnQTRCZ/0GYl3xz77lBPCXz8X25tK1713CzdsSSrXwFU/Dk1tJuK2ersY3gGhf1Mmtxlc0tS8JkuEzmPF7WBOVRJZlZU6icjhJSq+xV0HFUjNw9ZdVAWe/CStHm2+j/S3ZaAbnxESk18m3mMGv/+ANUDgL5t0PT01JjtleOG8rPPdZaP0oOT73fti3ET5ckRwb9WUYcxU8vzQ55h8JSzfBynEQbkmOn7kONi2H3U8lxybfYBKh165LjuVPgYW/h9+PN3dcElk2nLvZJFyJSVWvU1eYRGLT8uRYxVKz39WLkmOePDhvCzw12Z0w9Fr4FGy9H3b8Ljk24ToYOQs2XJUcyx0Li1+AlWPMXZ7+lr4H66+C/RuTY9OXmztU79ySHCtZZOLPzEqOOQE4bzusmg4du5Pj839nzslH9yfHjqbvpqJE5ROts/5Voh2NSa978sdiebLp3vduUszy5uEvnUXnzjUpywxUnUGoYSOx7uRrinfkScTC7YSbkq9jdlYJ3vxxhOrXJxdqeQhUnU7nrnUpP4f+0lk42aUp6yMfn8GM38P66GewQqEQoVCo79/Nzc3DWJsetU+kHpTADBwf3pP+Qr/9odRJCphv656c1LH9G2Hrb1LHot2w+Repk5TecvelGCjB3GFIfKyUKLTPtCVVkgLmMVLd0+n3mTMmdazpPdhyb3KSAua1zfemTlJ6y23bnjpW97R5DJRKuMW0JVWS0lvuzpVpYo+nTgjAHPPNv0jfH7b+JnWSAubRVeLdkESN60xfSSXSCZvvSV+n2sfTn5ej6bvyqRKLRVMmKQCRtgashMctru26Wwi3pH8sGG7ZkTJJMeXWE0vzmYh2NBJOs09iYcIt29L27XB7gxKV48xxNZn2tttuIz8/v++nurp6uKtk5grY/vRxb5pkA8wtdstJHbMHKtcCJ82HFAaO2f74PItB7fMQ5ToBsLzpY+n2eahyPYfYZ7pyLe+R79MJmMddg40dstxsIM3duoHKtRywA6ljkD6hPVS5h+q7A5Urnz5WmuHCsvvmqaSOp7nGAdjpY5btkHaIsmysAYYva4B9DlhXyUjH1Rm76aabaGpq6vupra0doj0NItuuudz8pBKcZB4V+AqTY5YNY75i5o0Mttzyz8G4q818i/48uTDh78xE1sGWW3OZ+UklpwYmftNMgk1imTJHXZR629GXpd9n8QIY/3X3xM5ett/Eihckxw5V7qiLoOYKUiYGgTLTlpya1NvWDFDuQMevYIY59p7c5JjlMeesfMngy606H8ZdlXqg8BXAhGshOHnw5R6q705M03flU8eybJyc8pQxT24lTk5lypjtL8QbHJW671o23rxR2P7UfczJqcCTm7pcJ6ccT15VyhiOHyc4BsuTlWbb1GVK5jquEhW/308wGHT9DInL6g/vfWWLYeqtUHaGmVOSmMVnV8FpD4EnC+Y/4n6kYvth1s/NZM9TV5gJp4lqLjeDz9irYdw1uAbb/ClmAmV2lZlv4iR8GL1Bs09fvplEmfi4xbLNnI2qc2HKP0PF5937LF4A0+4wK3im3RFfqQNmYJ//CHgCsOBR8BcltMUHM+8yq1pm/hBGznGXW30hTLrerEiauMzdlrwJZq5NoNjUN/EbvCfHvBYoNu/Jm5hQqGUSjZpLTNnVX3Lvc+QcU5eCqTDzR+47Cv4iM2/DEzD/TUy8LA9Mu73nGNyenCBVLDXHrupcMxk68eKbU2Pq68s3E48TV+o4WTD3PnPOZv/CnMPEtoy7xpzrCdf2JFcJCqaZPpI33vSZxDsgvoKetmSb8564Msty4KSbTd+ceqvpq4mOtO+mlXfot8hxzVc4Bds/wvWak12GJ38sntwKPMEaV8zy5OArPgXL8eMrnu7uY5aDr3h6T+wUrH53nj3BGjy5lXjyx+JkuxMk2z/C1MUXxFs4BdcwZvvwl8zEth18JTP73VW18BZMwgkcTn+WTKLJtAN5sBA4EP/3ZTHY+yo0vw/BE6Fotvv97Tuhfo1Z4lm+xD3Yh9th99PmmX/F2e5lubEYND5vJoYWznIvywWz1HXvBjOAlJ4RX2IMZqnr7lVmOXP5Oe5ludEw1D9rlimXLHQvywXY/0bP8uQTzMqbRB11ZvmtN2jKTVhmSKTTtCXcZu7uJC7LBWh8CVo3mzsMBVPdsZYtsOcls/y1bLF7sO9uNuUCVJzjHuxjUVOfjjoonu9elgtw4O348uSSfglGZyPU/dEkPxXnuO/eRLrMSqTuJlOfrH7fGvesjy9PLux3l6p1mzlvgRKz9DthySTdrWZuSDRsznfiYB+LmWXN7bVQNM+9pByg6f348uSShe7zHdpnzrcTMG1JfDQW7Ya6Z8zy5LIz3IkLHNu+mzjhXJNoP1UinfuJdbdh+/Oxfe7rbrS7jWjnfiwngJ1V5FpdE4t2E2k3q4Kc7GKshD5mljbvJRbpxA4UYvdLXKJdzURDTVje7KQlxrFIiEjHHrAcnKySnkdGveVGibQ3QjSMk1WE5RngEap8rI6bVT+tra1s3rwZgOnTp/ODH/yA008/ncLCQkaNGnXI7Yc8UREREZFj7rhZ9fPaa69x+unxX0p1/fXXA3DllVdy//33D1OtREREJFMMa6KyaNEiMuTJk4iIiGSg42oyrYiIiHy6KFERERGRjKVERURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjKVERURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjKVERURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVE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txPt3Ifl+HvakniMwj3HKNZzjNKd7wLXknLTlpae5cnpzndj2rZEO/YQi3RjZ410LSkHjmnfTVwVd6wn0fY6rlb9PPzww1x55ZX8/Oc/Z/bs2dx111088sgj/OUvf0mau9LfkCcqIiIicswdN6t+AC6++GL27NnDv/zLv1BfX8+0adNYtWrVIZMUERER+eQb9jsqR0N3VERERI4/gxm/j6tVPyIiIvLpokRFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjDXsv0L/aPT+Ut3m5uZhromIiIgcrt5x+3B+Of5xnai0tLQAUF1dfYh3ioiISKZpaWkhPz9/wPcc13/rJxqNsnv3bvLy8lx/Kls+mZqbm6murqa2tlZ/20nkE0af70+XWCxGS0sLFRUV2PbAs1CO6zsqtm1TVVU13NWQj1kwGNSFTOQTSp/vT49D3Unppcm0IiIikrGUqIiIiEjGUqIixw2/38/NN9+M3+8f7qqIyDGmz7ekc1xPphUREZFPNt1RERERkYylREVEREQylhIVERERyVhKVERERCRjKVGR48aKFSuoqakhEAgwZ84cXn311eGukogcpRdeeIFzzz2XiooKLMviiSeeGO4qSYZRoiLHhYcffpjrr7+em2++mTfeeINTTjmFJUuW0NjYONxVE5Gj0NbWximnnMKKFSuGuyqSobQ8WY4Lc+bMYdasWdx9992A+TtP1dXVLFu2jBtvvHGYaycix4JlWTz++ON84QtfGO6qSAbRHRXJeF1dXbz++ussXry47zXbtlm8eDHr168fxpqJiMhQU6IiGW/v3r1EIhFKS0tdr5eWllJfXz9MtRIRkY+DEhURERHJWEpUJOMVFRXhOA4NDQ2u1xsaGigrKxumWomIyMdBiYpkPJ/Px8yZM1m9enXfa9FolNWrVzNv3rxhrJmIiAw1z3BXQORwXH/99Vx55ZWceuqpzJ49m7vuuou2tjauvvrq4a6aiByF1tZWNm/e3PfvrVu38tZbb1FYWMioUaOGsWaSKbQ8WY4bd999N8uXL6e+vp5p06bx4x//mDlz5gx3tUTkKKxbt47TTz896fUrr7yS+++//+OvkGQcJSoiIiKSsTRHRURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEMtott9zCtGnThrsaIjJMlKiIyJCqr69n2bJljB07Fr/fT3V1Neeee67rj0yKiKSjP0ooIkNm27ZtnHbaaYwYMYLly5dz8skn093dzTPPPMN1113HX/7yl4+lHt3d3Xi93o9lXyJybOmOiogMmWuvvRbLsnj11Ve58MILmThxIlOmTOH6669nw4YNAOzYsYPzzz+f3NxcgsEgF110EQ0NDWnLjEaj3HrrrVRVVeH3+5k2bRqrVq3qi2/btg3Lsnj44YdZuHAhgUCABx54YMjbKiJDQ4mKiAyJ/fv3s2rVKq677jpycnKS4iNGjCAajXL++eezf/9+nn/+eZ599lk++ugjLr744rTl/uhHP+L73/8+d955J2+//TZLlizhvPPO48MPP3S978Ybb+Tb3/42mzZtYsmSJce8fSLy8dCjHxEZEps3byYWizFp0qS071m9ejXvvPMOW7dupbq6GoBf//rXTJkyhY0bNzJr1qykbe68806++93vcskllwBwxx13sHbtWu666y5WrFjR976///u/54ILLjjGrRKRj5vuqIjIkIjFYod8z6ZNm6iuru5LUgBOPPFERowYwaZNm5Le39zczO7duznttNNcr5922mlJ7z/11FOPsOYikkmUqIjIkJgwYQKWZX1sE2b7S/W4SUSOP0pURGRIFBYWsmTJElasWEFbW1tS/ODBg0yePJna2lpqa2v7Xn///fc5ePAgJ554YtI2wWCQiooKXn75ZdfrL7/8csr3i8jxT3NURGTIrFixgtNOO43Zs2dz6623MnXqVMLhMM8++yz33HMP77//PieffDKXX345d911F+FwmGuvvZaFCxemfXRzww03cPPNNzNu3DimTZvGfffdx1tvvaWVPSKfUEpURGTIjB07ljfeeIN///d/5zvf+Q51dXUUFxczc+ZM7rnnHizL4sknn2TZsmV89rOfxbZtzj77bH7yk5+kLfNb3/oWTU1NfOc736GxsZETTzyRlStXMmHChI+xZSLycbFihzPjTURERGQYaI6KiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMb6/wHCnL2DXQSZ/gAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Suppressing warning message claiming that a portion of points cannot be placed into the plot due to the high number of data points\n", + "import warnings\n", + "warnings.filterwarnings(action='ignore', category=UserWarning, module='seaborn')\n", + "\n", + "palette = {\n", + " 0: 'orange',\n", + " 1: 'wheat'\n", + "}\n", + "sns.swarmplot(x=\"Color\", y=\"ord__Item Size\", hue=\"Color\", data=encoded_pumpkins, palette=palette)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**ശ്രദ്ധിക്കുക**: മുന്നറിയിപ്പുകൾ അവഗണിക്കുന്നത് മികച്ച പ്രാക്ടീസ് അല്ല, സാധ്യമായിടത്തോളം ഒഴിവാക്കണം. മുന്നറിയിപ്പുകൾ പലപ്പോഴും നമ്മുടെ കോഡ് മെച്ചപ്പെടുത്താനും പ്രശ്നം പരിഹരിക്കാനും സഹായിക്കുന്ന ഉപകാരപ്രദമായ സന്ദേശങ്ങൾ അടങ്ങിയിരിക്കുന്നു. \n", + "നാം ഈ പ്രത്യേക മുന്നറിയിപ്പ് അവഗണിക്കുന്നത് പ്ലോട്ടിന്റെ വായനാസൗകര്യം ഉറപ്പാക്കുന്നതിനാണ്. പെയ്ലറ്റ് നിറവുമായി സുസ്ഥിരത പാലിച്ചുകൊണ്ട് കുറച്ചുകുറഞ്ഞ മാർക്കർ വലുപ്പത്തിൽ എല്ലാ ഡാറ്റാ പോയിന്റുകളും പ്ലോട്ട് ചെയ്യുന്നത് अस्पഷ്ടമായ ദൃശ്യവത്കരണം സൃഷ്ടിക്കുന്നു.\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# നിങ്ങളുടെ മോഡൽ നിർമ്മിക്കുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "# X is the encoded features\n", + "X = encoded_pumpkins[encoded_pumpkins.columns.difference(['Color'])]\n", + "# y is the encoded label\n", + "y = encoded_pumpkins['Color']\n", + "\n", + "# Split the data into training and test sets\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.94 0.98 0.96 166\n", + " 1 0.85 0.67 0.75 33\n", + "\n", + " accuracy 0.92 199\n", + " macro avg 0.89 0.82 0.85 199\n", + "weighted avg 0.92 0.92 0.92 199\n", + "\n", + "Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0\n", + " 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0\n", + " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0\n", + " 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1\n", + " 0 0 0 1 0 0 0 0 0 0 0 0 1 1]\n", + "F1-score: 0.7457627118644068\n" + ] + } + ], + "source": [ + "from sklearn.metrics import f1_score, classification_report \n", + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "# Train a logistic regression model on the pumpkin dataset\n", + "model = LogisticRegression()\n", + "model.fit(X_train, y_train)\n", + "predictions = model.predict(X_test)\n", + "\n", + "# Evaluate the model and print the results\n", + "print(classification_report(y_test, predictions))\n", + "print('Predicted labels: ', predictions)\n", + "print('F1-score: ', f1_score(y_test, predictions))" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[162, 4],\n", + " [ 11, 22]])" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.metrics import confusion_matrix\n", + "confusion_matrix(y_test, predictions)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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EBoaii1btkAul78xCtOzZ0+cOHECYWFhb2z//PlzZGVlafSaRKaAV/IkMgHZV/I8ffq0+hBJtm3btqFHjx5Yvnw5hgwZAuDVYQYfHx/89ttvaNmyJbp37w5ra2scPXoUGzduRPXq1REREZHjSp4qlQpffPEFNmzYgPr166uv5BkXF4edO3fi1KlTOH78OJo0aZJnzidPnqBdu3Y4d+4cvLy80KZNG9ja2uKff/7Bli1bEBsbi/T0dACvzjqpWbMm6tSpg/79++Px48dYsWIFSpYsicTERPUpuHfu3EGFChUwf/78HAXldZs2bcLnn38Oe3t7uLm5qU+ZzZaSkoIWLVrg/Pnz+OKLL9CgQQMkJyfjwoUL2LZtG+7cuZPjkAoRgVfyJDIFeV1oSwghlEqlqFSpkqhUqVKOi2QplUrxyy+/iGbNmgkHBwehUCjExx9/LGbMmCFevnyZ52tt27ZNtGvXThQrVkxYWFiI0qVLCx8fHxEVFZWvrCkpKWLBggXik08+EXZ2dkIul4vKlSuLkSNHihs3buRYd+PGjaJixYpCLpeLunXrirCwsLdeaCsviYmJwtraWgAQGzduzHWdpKQkMWnSJPHRRx8JuVwunJycRNOmTcWCBQtERkZGvt4bkSnhCAYRERFpHedgEBERkdaxYBAREZHWsWAQERGR1rFgEBERkdaxYBAREZHWsWAQERGR1pncvUhUKhUePXoEe3t7yGQyqeMQEREZDCEEkpKSUKZMGZiZvX2MwuQKxqNHj+Ds7Cx1DCIiIoN1//59lCtX7q3rmFzByL699P3799W3hyYiIqJ3S0xMhLOzs/p36duYXMHIPizi4ODAgkFERFQA+ZliwEmeREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1khaMw4cPw8vLC2XKlIFMJsPOnTvfuU1UVBTq168PKysrfPTRRwgODtZ5TiIiItKMpAUjOTkZderUQVBQUL7Wv337Njp27IhWrVohJiYGX331FQYMGICwsDAdJyUiIiJNWEj54u3bt0f79u3zvf6KFStQoUIFLFy4EABQvXp1HD16FIsXL4aHh4euYhoVIQSi7z3Dk6R0qaMQEVEh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isTERGRlZSEtLQ0pKSmwsbF543kCAgIwYMAAbNiwQT3MX6lSJQCvDp+cP38emzZtUq8vhIBKpcLt27dRvXr1XLO9ePECdnZ2UKlUSEtLQ/PmzbF69WokJibi0aNHaNasWY71mzVrhnPnzgF4dXijbdu2qFq1Kjw9PdGpUye0a9fuvfZV3759MXDgQCxbtgxWVlbYtGkTevXqBTMzM/X7PHbsWI4RC6VS+db9BgBVq1bFrl27kJaWho0bNyImJgYjR47MsU5QUBDWrl2Le/fuITU1FRkZGahbt+5b8547dw43btyAvb19juVpaWm4efNmAfYAkf5hwSDSU7a2tvjoo49yLLtz5w46deqEoUOH4ttvv0WxYsVw9OhR9O/fHxkZGbn+opw+fTr69OmDPXv2YN++fQgMDMSWLVvQtWtXvHz5EoMHD8aoUaPe2K58+fJ5ZrO3t0d0dDTMzMxQunRpWFtbAwASExPf+b7q16+P27dvY9++fQgPD0fPnj3h7u6Obdu2vXPbvHh5eUEIgT179uCTTz7BkSNHsHjxYvXXX758iRkzZqBbt25vbKtQKPJ8Xrlcrv5/MG/ePHTs2BEzZszArFmzAABbtmzBuHHjsHDhQjRp0gT29vaYP38+/vrrr7fmffnyJRo0aJCj2GXTl4m8RO+LBYPIgJw5cwYqlQoLFy5U/3Wefbz/bapUqYIqVapgzJgx6N27N3755Rd07doV9evXx+XLl98oMu9iZmaW6zYODg4oU6YMjh07BldXV/XyY8eOoVGjRjnW8/HxgY+PDz777DN4enri6dOnKFasWI7ny57voFQq35pHoVCgW7du2LRpE27cuIGqVauifv366q/Xr18f165d0/h9/teUKVPQunVrDB06VP0+mzZtimHDhqnX+e8IhFwufyN//fr1ERISghIlSsDBweG9MhHpK07yJDIgH330ETIzM7F06VLcunULGzZswIoVK/JcPzU1FSNGjEBUVBTu3r2LY8eO4fTp0+pDHxMmTMDx48cxYsQIxMTE4J9//sHvv/+u8STP13399df47rvvEBISgmvXrmHixImIiYnB6NGjAQCLFi3Cr7/+iqtXr+L69evYunUrSpUqlevFwUqUKAFra2vs378f8fHxePHiRZ6v27dvX+zZswdr165VT+7MNm3aNKxfvx4zZszApUuXcOXKFWzZsgVTpkzR6L01adIEtWvXxpw5cwAAlStXxt9//42wsDBcv34dU6dOxenTp3Ns4+LigvPnz+PatWtISEhAZmYm+vbtCycnJ3Tp0gVHjhzB7du3ERUVhVGjRuHBgwcaZSLSW1JPAiGiN+U2MTDbokWLROnSpYW1tbXw8PAQ69evFwDEs2fPhBA5J2Gmp6eLXr16CWdnZyGXy0WZMmXEiBEjckzgPHXqlGjbtq2ws7MTtra2onbt2m9M0nzdfyd5/pdSqRTTp08XZcuWFZaWlqJOnTpi37596q+vXLlS1K1bV9ja2goHBwfRpk0bER0drf46XpvkKYQQq1atEs7OzsLMzEy4urrmuX+USqUoXbq0ACBu3rz5Rq79+/eLpk2bCmtra+Hg4CAaNWokVq5cmef7CAwMFHXq1Hlj+a+//iqsrKzEvXv3RFpamvjiiy+Eo6OjKFKkiBg6dKiYOHFiju0eP36s3r8ARGRkpBBCiNjYWOHr6yucnJyElZWVqFixohg4cKB48eJFnpmIDIlMCCGkrThERERkbHiIhIiIiLSOBYOIiIi0jgWDiIiItI4Fg4iIiLSOBYOIiIi0jgWDiIiItI4Fg4iIiLSOBYOIiIi0jgWDiIiItI4Fg4iIiLSOBYOIiIi07v8A1k+hWenkwRsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.metrics import roc_curve, roc_auc_score\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "y_scores = model.predict_proba(X_test)\n", + "# calculate ROC curve\n", + "fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1])\n", + "\n", + "# plot ROC curve\n", + "fig = plt.figure(figsize=(6, 6))\n", + "# Plot the diagonal 50% line\n", + "plt.plot([0, 1], [0, 1], 'k--')\n", + "# Plot the FPR and TPR achieved by our model\n", + "plt.plot(fpr, tpr)\n", + "plt.xlabel('False Positive Rate')\n", + "plt.ylabel('True Positive Rate')\n", + "plt.title('ROC Curve')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9749908725812341\n" + ] + } + ], + "source": [ + "# Calculate AUC score\n", + "auc = roc_auc_score(y_test,y_scores[:,1])\n", + "print(auc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.16" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "vscode": { + "interpreter": { + "hash": "949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1" + } + }, + "coopTranslator": { + "original_hash": "ef50cc584e0b79412610cc7da15e1f86", + "translation_date": "2025-12-19T16:37:10+00:00", + "source_file": "2-Regression/4-Logistic/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/ml/2-Regression/README.md b/translations/ml/2-Regression/README.md new file mode 100644 index 000000000..ede636387 --- /dev/null +++ b/translations/ml/2-Regression/README.md @@ -0,0 +1,56 @@ + +# മെഷീൻ ലേണിംഗിനുള്ള റെഗ്രഷൻ മോഡലുകൾ +## പ്രാദേശിക വിഷയം: നോർത്ത് അമേരിക്കയിലെ പംപ്കിൻ വിലകൾക്കുള്ള റെഗ്രഷൻ മോഡലുകൾ 🎃 + +നോർത്ത് അമേരിക്കയിൽ, ഹാലോവീൻക്കായി പംപ്കിനുകൾ ഭയങ്കരമായ മുഖങ്ങളായി മുറിക്കുന്നു. ഈ ആകർഷകമായ പച്ചക്കറികളെ കുറിച്ച് കൂടുതൽ കണ്ടെത്താം! + +![jack-o-lanterns](../../../translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.ml.jpg) +> ഫോട്ടോ ബെത്ത് ട്യൂട്ഷ്മാൻ അൺസ്പ്ലാഷിൽ + +## നിങ്ങൾ പഠിക്കാനിരിക്കുന്നതെന്ത് + +[![Regression പരിചയം](https://img.youtube.com/vi/5QnJtDad4iQ/0.jpg)](https://youtu.be/5QnJtDad4iQ "Regression Introduction video - Click to Watch!") +> 🎥 ഈ പാഠത്തിന് ഒരു വേഗത്തിലുള്ള പരിചയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക + +ഈ വിഭാഗത്തിലെ പാഠങ്ങൾ മെഷീൻ ലേണിംഗിന്റെ സാന്ദർഭ്യത്തിൽ റെഗ്രഷൻ തരംകുറിപ്പുകൾ ഉൾക്കൊള്ളുന്നു. റെഗ്രഷൻ മോഡലുകൾ വ്യത്യസ്ത വേരിയബിളുകൾ തമ്മിലുള്ള _ബന്ധം_ കണ്ടെത്താൻ സഹായിക്കുന്നു. ഈ മോഡൽ തരം നീളം, താപനില, പ്രായം പോലുള്ള മൂല്യങ്ങൾ പ്രവചിക്കാൻ കഴിയും, അതിലൂടെ ഡാറ്റാ പോയിന്റുകൾ വിശകലനം ചെയ്ത് വേരിയബിളുകൾ തമ്മിലുള്ള ബന്ധങ്ങൾ കണ്ടെത്തുന്നു. + +ഈ പാഠമാലയിൽ, ലീനിയർ റെഗ്രഷനും ലോജിസ്റ്റിക് റെഗ്രഷനും തമ്മിലുള്ള വ്യത്യാസങ്ങൾ നിങ്ങൾ കണ്ടെത്തും, കൂടാതെ ഒരുപാട് ഒരുപാട് തിരഞ്ഞെടുക്കേണ്ട സമയവും അറിയും. + +[![മെഷീൻ ലേണിംഗിനുള്ള റെഗ്രഷൻ മോഡലുകളുടെ പരിചയം - തുടക്കക്കാർക്ക്](https://img.youtube.com/vi/XA3OaoW86R8/0.jpg)](https://youtu.be/XA3OaoW86R8 "ML for beginners - Introduction to Regression models for Machine Learning") + +> 🎥 റെഗ്രഷൻ മോഡലുകൾ പരിചയപ്പെടുത്തുന്ന ഒരു ചെറിയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +ഈ പാഠസമൂഹത്തിൽ, നിങ്ങൾ മെഷീൻ ലേണിംഗ് പ്രവർത്തനങ്ങൾ ആരംഭിക്കാൻ സജ്ജമാകും, ഇതിൽ ഡാറ്റാ സയന്റിസ്റ്റുകൾക്കുള്ള സാധാരണ പരിസ്ഥിതി ആയ നോട്ട്‌ബുക്കുകൾ കൈകാര്യം ചെയ്യാൻ വിസ്വൽ സ്റ്റുഡിയോ കോഡ് ക്രമീകരിക്കുന്നതും ഉൾപ്പെടുന്നു. നിങ്ങൾ മെഷീൻ ലേണിംഗിനുള്ള ലൈബ്രറി ആയ Scikit-learn കണ്ടെത്തും, ഈ അധ്യായത്തിൽ റെഗ്രഷൻ മോഡലുകൾക്ക് കേന്ദ്രീകരിച്ച് നിങ്ങളുടെ ആദ്യ മോഡലുകൾ നിർമ്മിക്കും. + +> റെഗ്രഷൻ മോഡലുകളുമായി പ്രവർത്തിക്കുന്നത് പഠിക്കാൻ സഹായിക്കുന്ന കുറച്ച് ലൊ-കോഡ് ഉപകരണങ്ങൾ ഉണ്ട്. ഈ പ്രവർത്തനത്തിന് [Azure ML പരീക്ഷിക്കുക](https://docs.microsoft.com/learn/modules/create-regression-model-azure-machine-learning-designer/?WT.mc_id=academic-77952-leestott) + +### പാഠങ്ങൾ + +1. [വ്യാപാര ഉപകരണങ്ങൾ](1-Tools/README.md) +2. [ഡാറ്റാ മാനേജ്മെന്റ്](2-Data/README.md) +3. [ലീനിയർ, പോളിനോമിയൽ റെഗ്രഷൻ](3-Linear/README.md) +4. [ലോജിസ്റ്റിക് റെഗ്രഷൻ](4-Logistic/README.md) + +--- +### ക്രെഡിറ്റുകൾ + +"ML with regression" ♥️ കൊണ്ട് എഴുതിയത് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) + +♥️ ക്വിസ് സംഭാവകർ: [മുഹമ്മദ് സകിബ് ഖാൻ ഇനാൻ](https://twitter.com/Sakibinan) & [ഓർനെല്ല അൾടുന്യൻ](https://twitter.com/ornelladotcom) + +പംപ്കിൻ ഡാറ്റാസെറ്റ് [കാഗിൾ上的 ഈ പ്രോജക്ട്](https://www.kaggle.com/usda/a-year-of-pumpkin-prices) നിർദ്ദേശിച്ചതാണ്, അതിന്റെ ഡാറ്റ [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) എന്ന യുഎസ് ഡിപ്പാർട്ട്മെന്റ് ഓഫ് അഗ്രിക്കൾച്ചർ വിതരണം ചെയ്യുന്ന റിപ്പോർട്ടുകളിൽ നിന്നാണ്. വിതരണത്തെ സാധാരണമാക്കാൻ വർണ്ണം അടിസ്ഥാനമാക്കി ചില പോയിന്റുകൾ ചേർത്തിട്ടുണ്ട്. ഈ ഡാറ്റ പബ്ലിക് ഡൊമെയ്‌നിലാണ്. + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/3-Web-App/1-Web-App/README.md b/translations/ml/3-Web-App/1-Web-App/README.md new file mode 100644 index 000000000..fed25d0dc --- /dev/null +++ b/translations/ml/3-Web-App/1-Web-App/README.md @@ -0,0 +1,361 @@ + +# ML മോഡൽ ഉപയോഗിച്ച് ഒരു വെബ് ആപ്പ് നിർമ്മിക്കുക + +ഈ പാഠത്തിൽ, നിങ്ങൾ ഒരു ഡാറ്റാ സെറ്റിൽ ML മോഡൽ പരിശീലിപ്പിക്കും, അത് ഈ ലോകത്തിന് പുറത്തുള്ളതാണ്: _കഴിഞ്ഞ നൂറ്റാണ്ടിലെ UFO ദൃശ്യങ്ങൾ_, NUFORC-യുടെ ഡാറ്റാബേസിൽ നിന്നുള്ളത്. + +നിങ്ങൾ പഠിക്കാനിരിക്കുന്നവ: + +- പരിശീലിപ്പിച്ച മോഡൽ 'pickle' ചെയ്യുന്നത് എങ്ങനെ +- ആ മോഡൽ Flask ആപ്പിൽ എങ്ങനെ ഉപയോഗിക്കാം + +ഡാറ്റ ശുദ്ധീകരണത്തിനും മോഡൽ പരിശീലനത്തിനും നോട്ട്ബുക്കുകൾ ഉപയോഗിക്കുന്നതിനെ തുടരും, പക്ഷേ നിങ്ങൾക്ക് ഒരു മോഡൽ 'വൈൽഡിൽ' ഉപയോഗിക്കുന്നതിനെക്കുറിച്ച് അന്വേഷിച്ച് ഒരു പടി മുന്നോട്ട് പോകാം: വെബ് ആപ്പിൽ. + +ഇത് ചെയ്യാൻ, Flask ഉപയോഗിച്ച് ഒരു വെബ് ആപ്പ് നിർമ്മിക്കേണ്ടതാണ്. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## ആപ്പ് നിർമ്മിക്കൽ + +മെഷീൻ ലേണിംഗ് മോഡലുകൾ ഉപയോഗിക്കുന്ന വെബ് ആപ്പുകൾ നിർമ്മിക്കാൻ പല വഴികളുണ്ട്. നിങ്ങളുടെ വെബ് ആർക്കിടെക്ചർ മോഡൽ പരിശീലന രീതിയെ ബാധിക്കാം. ഡാറ്റ സയൻസ് ഗ്രൂപ്പ് ഒരു മോഡൽ പരിശീലിപ്പിച്ച് ആ മോഡൽ ആപ്പിൽ ഉപയോഗിക്കാൻ നിങ്ങൾക്ക് നൽകുന്ന ഒരു ബിസിനസ്സിൽ നിങ്ങൾ ജോലി ചെയ്യുന്നു എന്ന് കരുതുക. + +### പരിഗണനകൾ + +നിങ്ങൾ ചോദിക്കേണ്ട നിരവധി ചോദ്യങ്ങളുണ്ട്: + +- **ഇത് വെബ് ആപ്പാണോ മൊബൈൽ ആപ്പാണോ?** നിങ്ങൾ മൊബൈൽ ആപ്പ് നിർമ്മിക്കുന്നുവെങ്കിൽ അല്ലെങ്കിൽ മോഡൽ IoT സാഹചര്യത്തിൽ ഉപയോഗിക്കേണ്ടതുണ്ടെങ്കിൽ, [TensorFlow Lite](https://www.tensorflow.org/lite/) ഉപയോഗിച്ച് ആൻഡ്രോയിഡ് അല്ലെങ്കിൽ iOS ആപ്പിൽ മോഡൽ ഉപയോഗിക്കാം. +- **മോഡൽ എവിടെ നിലനിൽക്കും?** ക്ലൗഡിലോ ലോക്കലിലോ? +- **ഓഫ്ലൈൻ പിന്തുണ.** ആപ്പ് ഓഫ്ലൈനിലും പ്രവർത്തിക്കേണ്ടതുണ്ടോ? +- **മോഡൽ പരിശീലിപ്പിക്കാൻ ഉപയോഗിച്ച സാങ്കേതികവിദ്യ എന്ത്?** തിരഞ്ഞെടുക്കപ്പെട്ട സാങ്കേതികവിദ്യ ഉപയോഗിക്കുന്ന ടൂളുകൾ വ്യത്യസ്തമായിരിക്കും. + - **TensorFlow ഉപയോഗിക്കുന്നത്.** ഉദാഹരണത്തിന് TensorFlow ഉപയോഗിച്ച് മോഡൽ പരിശീലിപ്പിക്കുന്നുവെങ്കിൽ, ആ ഇക്കോസിസ്റ്റം [TensorFlow.js](https://www.tensorflow.org/js/) ഉപയോഗിച്ച് വെബ് ആപ്പിൽ ഉപയോഗിക്കാൻ മോഡൽ മാറ്റാൻ കഴിയും. + - **PyTorch ഉപയോഗിക്കുന്നത്.** [PyTorch](https://pytorch.org/) പോലുള്ള ലൈബ്രറി ഉപയോഗിച്ച് മോഡൽ നിർമ്മിക്കുന്നുവെങ്കിൽ, അത് [ONNX](https://onnx.ai/) (Open Neural Network Exchange) ഫോർമാറ്റിൽ എക്സ്പോർട്ട് ചെയ്ത് ജാവാസ്ക്രിപ്റ്റ് വെബ് ആപ്പുകളിൽ ഉപയോഗിക്കാൻ [Onnx Runtime](https://www.onnxruntime.ai/) ഉപയോഗിക്കാം. ഈ ഓപ്ഷൻ Scikit-learn-ൽ പരിശീലിപ്പിച്ച മോഡലിനായി ഭാവിയിലെ പാഠത്തിൽ പരിശോധിക്കും. + - **Lobe.ai അല്ലെങ്കിൽ Azure Custom Vision ഉപയോഗിക്കുന്നത്.** [Lobe.ai](https://lobe.ai/) അല്ലെങ്കിൽ [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77952-leestott) പോലുള്ള ML SaaS (Software as a Service) സിസ്റ്റം ഉപയോഗിച്ച് മോഡൽ പരിശീലിപ്പിക്കുന്നുവെങ്കിൽ, ഈ സോഫ്റ്റ്‌വെയർ പല പ്ലാറ്റ്ഫോമുകൾക്കായി മോഡൽ എക്സ്പോർട്ട് ചെയ്യാനുള്ള മാർഗങ്ങൾ നൽകുന്നു, കൂടാതെ ക്ലൗഡിൽ ഓൺലൈൻ ആപ്ലിക്കേഷനിലൂടെ ചോദിക്കാവുന്ന ഒരു കസ്റ്റം API നിർമ്മിക്കാനും കഴിയും. + +നിങ്ങൾക്ക് ഒരു മുഴുവൻ Flask വെബ് ആപ്പ് നിർമ്മിച്ച് ബ്രൗസറിൽ തന്നെ മോഡൽ പരിശീലിപ്പിക്കാൻ അവസരമുണ്ട്. ഇത് TensorFlow.js ഉപയോഗിച്ച് ജാവാസ്ക്രിപ്റ്റ് സാഹചര്യത്തിലും ചെയ്യാം. + +നമ്മുടെ ആവശ്യങ്ങൾക്ക്, Python അടിസ്ഥാനമാക്കിയുള്ള നോട്ട്ബുക്കുകൾ ഉപയോഗിച്ചുകൊണ്ടുള്ളതിനാൽ, ഒരു പരിശീലിപ്പിച്ച മോഡൽ Python-ൽ നിർമ്മിച്ച വെബ് ആപ്പിൽ വായിക്കാൻ കഴിയുന്ന ഫോർമാറ്റിലേക്ക് എങ്ങനെ എക്സ്പോർട്ട് ചെയ്യാമെന്ന് പരിശോധിക്കാം. + +## ടൂൾ + +ഈ ടാസ്കിനായി നിങ്ങൾക്ക് രണ്ട് ടൂളുകൾ വേണം: Flask, Pickle, രണ്ടും Python-ൽ പ്രവർത്തിക്കുന്നു. + +✅ [Flask](https://palletsprojects.com/p/flask/) എന്താണ്? അതിന്റെ സ്രഷ്ടാക്കൾ 'മൈക്രോ-ഫ്രെയിംവർക്ക്' എന്ന് നിർവചിച്ചിരിക്കുന്ന Flask, Python ഉപയോഗിച്ച് വെബ് ഫ്രെയിംവർക്ക് അടിസ്ഥാന സവിശേഷതകളും വെബ് പേജുകൾ നിർമ്മിക്കാൻ ടെംപ്ലേറ്റിംഗ് എഞ്ചിൻ നൽകുന്നു. Flask ഉപയോഗിച്ച് നിർമ്മാണം അഭ്യസിക്കാൻ [ഈ Learn മോഡ്യൂൾ](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-77952-leestott) കാണുക. + +✅ [Pickle](https://docs.python.org/3/library/pickle.html) എന്താണ്? Pickle 🥒 Python ഒബ്ജക്റ്റ് ഘടന സീരിയലൈസ് ചെയ്യാനും ഡീ-സീരിയലൈസ് ചെയ്യാനും ഉപയോഗിക്കുന്ന Python മോഡ്യൂളാണ്. മോഡൽ 'pickle' ചെയ്യുമ്പോൾ, അതിന്റെ ഘടന വെബിൽ ഉപയോഗിക്കാൻ സീരിയലൈസ് അല്ലെങ്കിൽ ഫ്ലാറ്റൻ ചെയ്യുന്നു. ശ്രദ്ധിക്കുക: pickle സ്വാഭാവികമായി സുരക്ഷിതമല്ല, അതിനാൽ ഒരു ഫയൽ 'un-pickle' ചെയ്യാൻ ആവശ്യപ്പെട്ടാൽ ജാഗ്രത പാലിക്കുക. ഒരു pickle ചെയ്ത ഫയലിന് `.pkl` എന്ന സഫിക്സ് ഉണ്ട്. + +## അഭ്യാസം - നിങ്ങളുടെ ഡാറ്റ ശുദ്ധീകരിക്കുക + +ഈ പാഠത്തിൽ നിങ്ങൾ 80,000 UFO ദൃശ്യങ്ങളുടെ ഡാറ്റ ഉപയോഗിക്കും, [NUFORC](https://nuforc.org) (The National UFO Reporting Center) ശേഖരിച്ചിരിക്കുന്നു. ഈ ഡാറ്റയിൽ UFO ദൃശ്യങ്ങളുടെ ചില രസകരമായ വിവരണങ്ങളുണ്ട്, ഉദാഹരണത്തിന്: + +- **വലിയ ഉദാഹരണ വിവരണം.** "ഒരു മനുഷ്യൻ രാത്രി ഒരു പുല്ല് നിറഞ്ഞ മൈതാനത്തിൽ പ്രകാശിക്കുന്ന ഒരു ലൈറ്റ് ബീമിൽ നിന്ന് പുറത്തുവരുന്നു, അവൻ ടെക്സാസ് ഇൻസ്ട്രുമെന്റ്സ് പാർക്കിംഗ് ലോട്ടിലേക്ക് ഓടുന്നു". +- **ചെറിയ ഉദാഹരണ വിവരണം.** "ലൈറ്റുകൾ ഞങ്ങളെ പിന്തുടർന്നു". + +[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) സ്പ്രെഡ്‌ഷീറ്റിൽ `city`, `state`, `country` എന്നിവയുടെ കോളങ്ങൾ ഉൾപ്പെടുന്നു, ദൃശ്യമായ വസ്തുവിന്റെ `shape` കൂടാതെ അതിന്റെ `latitude`യും `longitude`യും. + +ഈ പാഠത്തിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ശൂന്യമായ [നോട്ട്ബുക്ക്](notebook.ipynb) ൽ: + +1. മുൻപത്തെ പാഠങ്ങളിൽ ചെയ്തതുപോലെ `pandas`, `matplotlib`, `numpy` ഇറക്കുമതി ചെയ്ത് ufos സ്പ്രെഡ്‌ഷീറ്റ് ഇറക്കുമതി ചെയ്യുക. ഒരു സാമ്പിൾ ഡാറ്റാ സെറ്റ് കാണാം: + + ```python + import pandas as pd + import numpy as np + + ufos = pd.read_csv('./data/ufos.csv') + ufos.head() + ``` + +1. ufos ഡാറ്റ ഒരു ചെറിയ ഡാറ്റാഫ്രെയിമിലേക്ക് പുതിയ തലക്കെട്ടുകളോടെ മാറ്റുക. `Country` ഫീൽഡിലെ വ്യത്യസ്ത മൂല്യങ്ങൾ പരിശോധിക്കുക. + + ```python + ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']}) + + ufos.Country.unique() + ``` + +1. ഇപ്പോൾ, നാം കൈകാര്യം ചെയ്യേണ്ട ഡാറ്റയുടെ അളവ് കുറയ്ക്കാൻ, ഏതെങ്കിലും നൾ മൂല്യങ്ങൾ ഒഴിവാക്കി 1-60 സെക്കൻഡ് ഇടയിലുള്ള ദൃശ്യങ്ങൾ മാത്രം ഇറക്കുമതി ചെയ്യുക: + + ```python + ufos.dropna(inplace=True) + + ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds'] <= 60)] + + ufos.info() + ``` + +1. രാജ്യങ്ങളുടെ ടെക്സ്റ്റ് മൂല്യങ്ങൾ സംഖ്യയാക്കി മാറ്റാൻ Scikit-learn-ന്റെ `LabelEncoder` ലൈബ്രറി ഇറക്കുമതി ചെയ്യുക: + + ✅ LabelEncoder ഡാറ്റ അക്ഷരമാലാനുസരിച്ച് എൻകോഡ് ചെയ്യുന്നു + + ```python + from sklearn.preprocessing import LabelEncoder + + ufos['Country'] = LabelEncoder().fit_transform(ufos['Country']) + + ufos.head() + ``` + + നിങ്ങളുടെ ഡാറ്റ ഇങ്ങനെ കാണണം: + + ```output + Seconds Country Latitude Longitude + 2 20.0 3 53.200000 -2.916667 + 3 20.0 4 28.978333 -96.645833 + 14 30.0 4 35.823889 -80.253611 + 23 60.0 4 45.582778 -122.352222 + 24 3.0 3 51.783333 -0.783333 + ``` + +## അഭ്യാസം - നിങ്ങളുടെ മോഡൽ നിർമ്മിക്കുക + +ഇപ്പോൾ, ഡാറ്റ പരിശീലനവും പരിശോധനയും ഗ്രൂപ്പുകളായി വിഭജിച്ച് മോഡൽ പരിശീലിപ്പിക്കാൻ തയ്യാറാകാം. + +1. നിങ്ങൾ പരിശീലിപ്പിക്കാൻ ആഗ്രഹിക്കുന്ന മൂന്ന് ഫീച്ചറുകൾ X വെക്ടറായി തിരഞ്ഞെടുക്കുക, y വെക്ടർ `Country` ആയിരിക്കും. നിങ്ങൾക്ക് `Seconds`, `Latitude`, `Longitude` നൽകുമ്പോൾ ഒരു രാജ്യ ഐഡി ലഭിക്കണം. + + ```python + from sklearn.model_selection import train_test_split + + Selected_features = ['Seconds','Latitude','Longitude'] + + X = ufos[Selected_features] + y = ufos['Country'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + ``` + +1. ലോജിസ്റ്റിക് റെഗ്രഷൻ ഉപയോഗിച്ച് മോഡൽ പരിശീലിപ്പിക്കുക: + + ```python + from sklearn.metrics import accuracy_score, classification_report + from sklearn.linear_model import LogisticRegression + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('Accuracy: ', accuracy_score(y_test, predictions)) + ``` + +ശ്രദ്ധേയമായും, കൃത്യത **(ഏകദേശം 95%)** മോശമല്ല, കാരണം `Country`യും `Latitude/Longitude`യും തമ്മിൽ ബന്ധമുണ്ട്. + +നിങ്ങൾ സൃഷ്ടിച്ച മോഡൽ അത്ര വിപ്ലവകരമല്ല, കാരണം `Latitude`യും `Longitude`യും ഉപയോഗിച്ച് ഒരു `Country` നിശ്ചയിക്കാനാകും, പക്ഷേ ഇത് ശുദ്ധീകരിച്ച, എക്സ്പോർട്ട് ചെയ്ത, പിന്നീട് വെബ് ആപ്പിൽ ഉപയോഗിക്കുന്ന മോഡൽ പരിശീലിപ്പിക്കാൻ നല്ല അഭ്യാസമാണ്. + +## അഭ്യാസം - മോഡൽ 'pickle' ചെയ്യുക + +ഇപ്പോൾ, നിങ്ങളുടെ മോഡൽ _pickle_ ചെയ്യാനുള്ള സമയം! ഇത് കുറച്ച് കോഡ് വരികളിൽ ചെയ്യാം. _pickle_ ചെയ്ത ശേഷം, നിങ്ങളുടെ pickle ചെയ്ത മോഡൽ ലോഡ് ചെയ്ത് സെക്കൻഡ്, latitude, longitude മൂല്യങ്ങൾ അടങ്ങിയ ഒരു സാമ്പിൾ ഡാറ്റാ അറേയിൽ പരീക്ഷിക്കുക, + +```python +import pickle +model_filename = 'ufo-model.pkl' +pickle.dump(model, open(model_filename,'wb')) + +model = pickle.load(open('ufo-model.pkl','rb')) +print(model.predict([[50,44,-12]])) +``` + +മോഡൽ **'3'** എന്ന ഫലം നൽകുന്നു, ഇത് യുകെയുടെ രാജ്യ കോഡാണ്. അത്ഭുതം! 👽 + +## അഭ്യാസം - Flask ആപ്പ് നിർമ്മിക്കുക + +ഇപ്പോൾ, നിങ്ങളുടെ മോഡൽ വിളിച്ച് സമാന ഫലങ്ങൾ തിരികെ നൽകുന്ന ഒരു Flask ആപ്പ് നിർമ്മിക്കാം, പക്ഷേ കൂടുതൽ ദൃശ്യപരമായി. + +1. _notebook.ipynb_ ഫയലിന് സമീപം **web-app** എന്ന ഫോൾഡർ സൃഷ്ടിക്കുക, അവിടെ നിങ്ങളുടെ _ufo-model.pkl_ ഫയൽ നിലനിൽക്കും. + +1. ആ ഫോൾഡറിൽ മൂന്ന് ഫോൾഡറുകൾ കൂടി സൃഷ്ടിക്കുക: **static**, അതിനുള്ളിൽ **css** ഫോൾഡർ, കൂടാതെ **templates**. ഇപ്പോൾ നിങ്ങൾക്കുണ്ടാകേണ്ട ഫയലുകളും ഡയറക്ടറികളും: + + ```output + web-app/ + static/ + css/ + templates/ + notebook.ipynb + ufo-model.pkl + ``` + + ✅ പൂർത്തിയായ ആപ്പിന്റെ ദൃശ്യത്തിനായി സൊല്യൂഷൻ ഫോൾഡർ കാണുക + +1. _web-app_ ഫോൾഡറിൽ ആദ്യമായി സൃഷ്ടിക്കേണ്ട ഫയൽ **requirements.txt** ആണ്. ജാവാസ്ക്രിപ്റ്റ് ആപ്പിലെ _package.json_ പോലെയാണ് ഇത്, ആപ്പിന് ആവശ്യമായ ഡിപ്പൻഡൻസികൾ പട്ടികപ്പെടുത്തുന്നു. **requirements.txt** ൽ ഈ വരികൾ ചേർക്കുക: + + ```text + scikit-learn + pandas + numpy + flask + ``` + +1. ഇപ്പോൾ, _web-app_ ലേക്ക് നാവിഗേറ്റ് ചെയ്ത് ഈ ഫയൽ പ്രവർത്തിപ്പിക്കുക: + + ```bash + cd web-app + ``` + +1. നിങ്ങളുടെ ടെർമിനലിൽ `pip install` ടൈപ്പ് ചെയ്ത് _requirements.txt_ ലിസ്റ്റ് ചെയ്ത ലൈബ്രറികൾ ഇൻസ്റ്റാൾ ചെയ്യുക: + + ```bash + pip install -r requirements.txt + ``` + +1. ഇപ്പോൾ, ആപ്പ് പൂർത്തിയാക്കാൻ മൂന്ന് ഫയലുകൾ കൂടി സൃഷ്ടിക്കാൻ തയ്യാറാകൂ: + + 1. റൂട്ടിൽ **app.py** സൃഷ്ടിക്കുക. + 2. _templates_ ഡയറക്ടറിയിൽ **index.html** സൃഷ്ടിക്കുക. + 3. _static/css_ ഡയറക്ടറിയിൽ **styles.css** സൃഷ്ടിക്കുക. + +1. _styles.css_ ഫയൽ കുറച്ച് സ്റ്റൈലുകളോടെ നിർമ്മിക്കുക: + + ```css + body { + width: 100%; + height: 100%; + font-family: 'Helvetica'; + background: black; + color: #fff; + text-align: center; + letter-spacing: 1.4px; + font-size: 30px; + } + + input { + min-width: 150px; + } + + .grid { + width: 300px; + border: 1px solid #2d2d2d; + display: grid; + justify-content: center; + margin: 20px auto; + } + + .box { + color: #fff; + background: #2d2d2d; + padding: 12px; + display: inline-block; + } + ``` + +1. തുടർന്ന്, _index.html_ ഫയൽ നിർമ്മിക്കുക: + + ```html + + + + + 🛸 UFO Appearance Prediction! 👽 + + + + +
+ +
+ +

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

+ +
+ + + + +
+ +

{{ prediction_text }}

+ +
+ +
+ + + + ``` + + ഈ ഫയലിലെ ടെംപ്ലേറ്റിംഗ് നോക്കുക. ആപ്പ് നൽകുന്ന വേരിയബിളുകൾ ചുറ്റിപ്പറ്റിയുള്ള 'മസ്റ്റാഷ്' സിന്റാക്സ് `{{}}` ശ്രദ്ധിക്കുക, ഉദാഹരണത്തിന് പ്രവചന ടെക്സ്റ്റ്. `/predict` റൂട്ടിലേക്ക് ഒരു ഫോർം പോസ്റ്റ് ചെയ്യുന്നതും കാണാം. + + അവസാനം, മോഡൽ ഉപയോഗിച്ച് പ്രവചനങ്ങൾ പ്രദർശിപ്പിക്കുന്ന പൈത്തൺ ഫയൽ നിർമ്മിക്കാൻ തയ്യാറാകൂ: + +1. `app.py` ൽ ചേർക്കുക: + + ```python + import numpy as np + from flask import Flask, request, render_template + import pickle + + app = Flask(__name__) + + model = pickle.load(open("./ufo-model.pkl", "rb")) + + + @app.route("/") + def home(): + return render_template("index.html") + + + @app.route("/predict", methods=["POST"]) + def predict(): + + int_features = [int(x) for x in request.form.values()] + final_features = [np.array(int_features)] + prediction = model.predict(final_features) + + output = prediction[0] + + countries = ["Australia", "Canada", "Germany", "UK", "US"] + + return render_template( + "index.html", prediction_text="Likely country: {}".format(countries[output]) + ) + + + if __name__ == "__main__": + app.run(debug=True) + ``` + + > 💡 ടിപ്പ്: Flask ഉപയോഗിച്ച് വെബ് ആപ്പ് ഓടിക്കുമ്പോൾ [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode) ചേർക്കുമ്പോൾ, ആപ്പിൽ ചെയ്ത മാറ്റങ്ങൾ ഉടൻ പ്രതിഫലിക്കും, സെർവർ റീസ്റ്റാർട്ട് ചെയ്യേണ്ടതില്ല. ശ്രദ്ധിക്കുക! പ്രൊഡക്ഷൻ ആപ്പിൽ ഇത് ഉപയോഗിക്കരുത്. + +`python app.py` അല്ലെങ്കിൽ `python3 app.py` ഓടിച്ചാൽ നിങ്ങളുടെ വെബ് സെർവർ ലോക്കലായി ആരംഭിക്കും, നിങ്ങൾക്ക് ഒരു ചെറിയ ഫോർം പൂരിപ്പിച്ച് UFO ദൃശ്യങ്ങൾ എവിടെ കണ്ടുവെന്ന് അറിയാം! + +അതിനുമുമ്പ്, `app.py` ഭാഗങ്ങൾ നോക്കാം: + +1. ആദ്യം, ഡിപ്പൻഡൻസികൾ ലോഡ് ചെയ്ത് ആപ്പ് ആരംഭിക്കുന്നു. +1. തുടർന്ന്, മോഡൽ ഇറക്കുമതി ചെയ്യുന്നു. +1. പിന്നീട്, ഹോം റൂട്ടിൽ index.html റെൻഡർ ചെയ്യുന്നു. + +`/predict` റൂട്ടിൽ, ഫോർം പോസ്റ്റ് ചെയ്തപ്പോൾ പല കാര്യങ്ങളും നടക്കുന്നു: + +1. ഫോർം വേരിയബിളുകൾ ശേഖരിച്ച് numpy അറേ ആയി മാറ്റുന്നു. മോഡലിലേക്ക് അയച്ച് പ്രവചന ഫലം ലഭിക്കുന്നു. +2. പ്രവചിച്ച രാജ്യ കോഡിൽ നിന്നുള്ള രാജ്യങ്ങൾ വായിക്കാൻ കഴിയുന്ന ടെക്സ്റ്റായി മാറ്റി index.html-ലേക്ക് അയക്കുന്നു, ടെംപ്ലേറ്റിൽ പ്രദർശിപ്പിക്കാൻ. + +Flask-ഉം pickle ചെയ്ത മോഡലും ഉപയോഗിച്ച് മോഡൽ ഇങ്ങനെ ഉപയോഗിക്കുന്നത് സാദാരണമാണ്. ഏറ്റവും ബുദ്ധിമുട്ടുള്ളത് മോഡലിന് അയയ്ക്കേണ്ട ഡാറ്റയുടെ രൂപം മനസ്സിലാക്കലാണ്. മോഡൽ എങ്ങനെ പരിശീലിപ്പിച്ചതിനനുസരിച്ച് ഇത് വ്യത്യാസപ്പെടും. ഈ മോഡലിന് പ്രവചനത്തിന് മൂന്ന് ഡാറ്റ പോയിന്റുകൾ നൽകണം. + +പ്രൊഫഷണൽ സാഹചര്യത്തിൽ, മോഡൽ പരിശീലിപ്പിക്കുന്നവരും വെബ് അല്ലെങ്കിൽ മൊബൈൽ ആപ്പ് ഉപയോഗിക്കുന്നവരും നല്ല ആശയവിനിമയം വേണം. നമ്മുടെ കേസിൽ, അത് നിങ്ങൾ മാത്രം! + +--- + +## 🚀 ചലഞ്ച് + +നോട്ട്ബുക്കിൽ പ്രവർത്തിക്കാതെ, മോഡൽ Flask ആപ്പിൽ തന്നെ പരിശീലിപ്പിക്കാൻ ശ്രമിക്കൂ! നിങ്ങളുടെ Python കോഡ് നോട്ട്ബുക്കിൽ നിന്ന് മാറ്റി, ഡാറ്റ ശുദ്ധീകരിച്ചതിന് ശേഷം, `train` എന്ന റൂട്ടിൽ ആപ്പിനുള്ളിൽ മോഡൽ പരിശീലിപ്പിക്കുക. ഈ രീതിയുടെ ഗുണങ്ങളും ദോഷങ്ങളും എന്തെല്ലാമാണ്? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ML മോഡലുകൾ ഉപയോഗിക്കുന്ന വെബ് ആപ്പുകൾ നിർമ്മിക്കാൻ പല വഴികളുണ്ട്. ജാവാസ്ക്രിപ്റ്റ് അല്ലെങ്കിൽ Python ഉപയോഗിച്ച് ML ലെവറേജ് ചെയ്യാൻ നിങ്ങൾക്ക് കഴിയുന്ന വഴികളുടെ പട്ടിക തയ്യാറാക്കുക. ആർക്കിടെക്ചർ പരിഗണിക്കുക: മോഡൽ ആപ്പിൽ തന്നെ നിലനിൽക്കണോ, ക്ലൗഡിൽ ആയിരിക്കണോ? പിന്നീട് എങ്ങനെ ആക്‌സസ് ചെയ്യും? പ്രയോഗിച്ച ML വെബ് പരിഹാരത്തിനുള്ള ഒരു ആർക്കിടെക്ചറൽ മോഡൽ വരച്ചുകാണിക്കുക. + +## അസൈൻമെന്റ് + +[മറ്റൊരു മോഡൽ പരീക്ഷിക്കുക](assignment.md) + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/3-Web-App/1-Web-App/assignment.md b/translations/ml/3-Web-App/1-Web-App/assignment.md new file mode 100644 index 000000000..294dd4d7d --- /dev/null +++ b/translations/ml/3-Web-App/1-Web-App/assignment.md @@ -0,0 +1,27 @@ + +# വ്യത്യസ്തമായ ഒരു മോഡൽ പരീക്ഷിക്കുക + +## നിർദ്ദേശങ്ങൾ + +നിങ്ങൾ ഒരു പരിശീലിത Regression മോഡൽ ഉപയോഗിച്ച് ഒരു വെബ് ആപ്പ് നിർമ്മിച്ചിട്ടുണ്ടെങ്കിൽ, മുൻപ് Regression പാഠത്തിൽ നിന്നുള്ള ഒരു മോഡൽ ഉപയോഗിച്ച് ഈ വെബ് ആപ്പ് വീണ്ടും നിർമ്മിക്കുക. പംപ്കിൻ ഡാറ്റയെ പ്രതിഫലിപ്പിക്കാൻ നിങ്ങൾക്ക് സ്റ്റൈൽ നിലനിർത്താമോ അല്ലെങ്കിൽ വ്യത്യസ്തമായി രൂപകൽപ്പന ചെയ്യാമോ. നിങ്ങളുടെ മോഡലിന്റെ പരിശീലന രീതിയെ പ്രതിഫലിപ്പിക്കാൻ ഇൻപുട്ടുകൾ മാറ്റാൻ ശ്രദ്ധിക്കുക. + +## റൂബ്രിക് + +| മാനദണ്ഡങ്ങൾ | ഉദാഹരണപരമായത് | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | -------------------------------------- | +| | വെബ് ആപ്പ് പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുകയും ക്ലൗഡിൽ വിന്യസിക്കപ്പെടുകയും ചെയ്യുന്നു | വെബ് ആപ്പിൽ പിഴവുകൾ ഉണ്ടോ അല്ലെങ്കിൽ അപ്രതീക്ഷിത ഫലങ്ങൾ കാണിക്കുന്നു | വെബ് ആപ്പ് ശരിയായി പ്രവർത്തിക്കുന്നില്ല | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/3-Web-App/1-Web-App/notebook.ipynb b/translations/ml/3-Web-App/1-Web-App/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/ml/3-Web-App/1-Web-App/solution/notebook.ipynb b/translations/ml/3-Web-App/1-Web-App/solution/notebook.ipynb new file mode 100644 index 000000000..56fa3d86a --- /dev/null +++ b/translations/ml/3-Web-App/1-Web-App/solution/notebook.ipynb @@ -0,0 +1,269 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "5fa2e8f4584c78250ca9729b46562ceb", + "translation_date": "2025-12-19T16:48:19+00:00", + "source_file": "3-Web-App/1-Web-App/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "## യു.എഫ്.ഒ. ദൃശ്യാനുഭവങ്ങളെക്കുറിച്ച് പഠിക്കാൻ റെഗ്രഷൻ മോഡൽ ഉപയോഗിച്ച് വെബ് ആപ്പ് നിർമ്മിക്കുക\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " datetime city state country shape \\\n", + "0 10/10/1949 20:30 san marcos tx us cylinder \n", + "1 10/10/1949 21:00 lackland afb tx NaN light \n", + "2 10/10/1955 17:00 chester (uk/england) NaN gb circle \n", + "3 10/10/1956 21:00 edna tx us circle \n", + "4 10/10/1960 20:00 kaneohe hi us light \n", + "\n", + " duration (seconds) duration (hours/min) \\\n", + "0 2700.0 45 minutes \n", + "1 7200.0 1-2 hrs \n", + "2 20.0 20 seconds \n", + "3 20.0 1/2 hour \n", + "4 900.0 15 minutes \n", + "\n", + " comments date posted latitude \\\n", + "0 This event took place in early fall around 194... 4/27/2004 29.883056 \n", + "1 1949 Lackland AFB, TX. Lights racing acros... 12/16/2005 29.384210 \n", + "2 Green/Orange circular disc over Chester, En... 1/21/2008 53.200000 \n", + "3 My older brother and twin sister were leaving ... 1/17/2004 28.978333 \n", + "4 AS a Marine 1st Lt. flying an FJ4B fighter/att... 1/22/2004 21.418056 \n", + "\n", + " longitude \n", + "0 -97.941111 \n", + "1 -98.581082 \n", + "2 -2.916667 \n", + "3 -96.645833 \n", + "4 -157.803611 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimecitystatecountryshapeduration (seconds)duration (hours/min)commentsdate postedlatitudelongitude
010/10/1949 20:30san marcostxuscylinder2700.045 minutesThis event took place in early fall around 194...4/27/200429.883056-97.941111
110/10/1949 21:00lackland afbtxNaNlight7200.01-2 hrs1949 Lackland AFB&#44 TX. Lights racing acros...12/16/200529.384210-98.581082
210/10/1955 17:00chester (uk/england)NaNgbcircle20.020 secondsGreen/Orange circular disc over Chester&#44 En...1/21/200853.200000-2.916667
310/10/1956 21:00ednatxuscircle20.01/2 hourMy older brother and twin sister were leaving ...1/17/200428.978333-96.645833
410/10/1960 20:00kaneohehiuslight900.015 minutesAS a Marine 1st Lt. flying an FJ4B fighter/att...1/22/200421.418056-157.803611
\n
" + }, + "metadata": {}, + "execution_count": 23 + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "ufos = pd.read_csv('../data/ufos.csv')\n", + "ufos.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array(['us', nan, 'gb', 'ca', 'au', 'de'], dtype=object)" + ] + }, + "metadata": {}, + "execution_count": 24 + } + ], + "source": [ + "\n", + "ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']})\n", + "\n", + "ufos.Country.unique()\n", + "\n", + "# 0 au, 1 ca, 2 de, 3 gb, 4 us" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\nInt64Index: 25863 entries, 2 to 80330\nData columns (total 4 columns):\n # Column Non-Null Count Dtype \n--- ------ -------------- ----- \n 0 Seconds 25863 non-null float64\n 1 Country 25863 non-null object \n 2 Latitude 25863 non-null float64\n 3 Longitude 25863 non-null float64\ndtypes: float64(3), object(1)\nmemory usage: 1010.3+ KB\n" + ] + } + ], + "source": [ + "ufos.dropna(inplace=True)\n", + "\n", + "ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds'] <= 60)]\n", + "\n", + "ufos.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Seconds Country Latitude Longitude\n", + "2 20.0 3 53.200000 -2.916667\n", + "3 20.0 4 28.978333 -96.645833\n", + "14 30.0 4 35.823889 -80.253611\n", + "23 60.0 4 45.582778 -122.352222\n", + "24 3.0 3 51.783333 -0.783333" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
SecondsCountryLatitudeLongitude
220.0353.200000-2.916667
320.0428.978333-96.645833
1430.0435.823889-80.253611
2360.0445.582778-122.352222
243.0351.783333-0.783333
\n
" + }, + "metadata": {}, + "execution_count": 26 + } + ], + "source": [ + "from sklearn.preprocessing import LabelEncoder\n", + "\n", + "ufos['Country'] = LabelEncoder().fit_transform(ufos['Country'])\n", + "\n", + "ufos.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "\n", + "Selected_features = ['Seconds','Latitude','Longitude']\n", + "\n", + "X = ufos[Selected_features]\n", + "y = ufos['Country']\n", + "\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", + " FutureWarning)\n", + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:469: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n", + " \"this warning.\", FutureWarning)\n", + " precision recall f1-score support\n", + "\n", + " 0 1.00 1.00 1.00 41\n", + " 1 1.00 0.02 0.05 250\n", + " 2 0.00 0.00 0.00 8\n", + " 3 0.94 1.00 0.97 131\n", + " 4 0.95 1.00 0.97 4743\n", + "\n", + " accuracy 0.95 5173\n", + " macro avg 0.78 0.60 0.60 5173\n", + "weighted avg 0.95 0.95 0.93 5173\n", + "\n", + "Predicted labels: [4 4 4 ... 3 4 4]\n", + "Accuracy: 0.9512855209742895\n", + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.\n", + " 'precision', 'predicted', average, warn_for)\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import accuracy_score, classification_report \n", + "from sklearn.linear_model import LogisticRegression\n", + "model = LogisticRegression()\n", + "model.fit(X_train, y_train)\n", + "predictions = model.predict(X_test)\n", + "\n", + "print(classification_report(y_test, predictions))\n", + "print('Predicted labels: ', predictions)\n", + "print('Accuracy: ', accuracy_score(y_test, predictions))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[3]\n" + ] + } + ], + "source": [ + "import pickle\n", + "model_filename = 'ufo-model.pkl'\n", + "pickle.dump(model, open(model_filename,'wb'))\n", + "\n", + "model = pickle.load(open('ufo-model.pkl','rb'))\n", + "print(model.predict([[50,44,-12]]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/3-Web-App/README.md b/translations/ml/3-Web-App/README.md new file mode 100644 index 000000000..b34fc25b8 --- /dev/null +++ b/translations/ml/3-Web-App/README.md @@ -0,0 +1,37 @@ + +# നിങ്ങളുടെ ML മോഡൽ ഉപയോഗിക്കാൻ ഒരു വെബ് ആപ്പ് നിർമ്മിക്കുക + +പാഠ്യപദ്ധതിയുടെ ഈ ഭാഗത്തിൽ, നിങ്ങൾക്ക് പ്രയോഗാത്മകമായ ഒരു ML വിഷയം പരിചയപ്പെടുത്തും: നിങ്ങളുടെ Scikit-learn മോഡൽ ഫയലായി സേവ് ചെയ്യുന്നത്, അത് വെബ് ആപ്ലിക്കേഷനിൽ പ്രവചനങ്ങൾ നടത്താൻ ഉപയോഗിക്കാവുന്നതാണ്. മോഡൽ സേവ് ചെയ്ത ശേഷം, Flask-ൽ നിർമ്മിച്ച ഒരു വെബ് ആപ്പിൽ അത് എങ്ങനെ ഉപയോഗിക്കാമെന്ന് നിങ്ങൾ പഠിക്കും. ആദ്യം, UFO കാണപ്പെട്ടതുമായി ബന്ധപ്പെട്ട ചില ഡാറ്റ ഉപയോഗിച്ച് ഒരു മോഡൽ നിങ്ങൾ സൃഷ്ടിക്കും! പിന്നീട്, ഒരു വെബ് ആപ്പ് നിർമ്മിക്കും, അതിലൂടെ നിങ്ങൾ സെക്കൻഡുകളുടെ എണ്ണം, അക്ഷാംശവും രേഖാംശവും നൽകുമ്പോൾ ഏത് രാജ്യമാണ് UFO കണ്ടതായി റിപ്പോർട്ട് ചെയ്തതെന്ന് പ്രവചിക്കാനാകും. + +![UFO Parking](../../../translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.ml.jpg) + +ഫോട്ടോ Michael Herren എന്നവരിൽ നിന്നാണ് Unsplash + +## പാഠങ്ങൾ + +1. [Build a Web App](1-Web-App/README.md) + +## ക്രെഡിറ്റുകൾ + +"Build a Web App" ♥️ ഉപയോഗിച്ച് എഴുതിയത് [Jen Looper](https://twitter.com/jenlooper) ആണ്. + +♥️ ക്വിസുകൾ എഴുതിയത് Rohan Raj ആണ്. + +ഡാറ്റാസെറ്റ് [Kaggle](https://www.kaggle.com/NUFORC/ufo-sightings) നിന്നാണ് ലഭിച്ചത്. + +വെബ് ആപ്പ് ആർക്കിടെക്ചർ ഭാഗികമായി [ഈ ലേഖനം](https://towardsdatascience.com/how-to-easily-deploy-machine-learning-models-using-flask-b95af8fe34d4) ഉം [ഈ റിപോ](https://github.com/abhinavsagar/machine-learning-deployment) ഉം Abhinav Sagar നിർദ്ദേശിച്ചവയാണ്. + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/4-Classification/1-Introduction/README.md b/translations/ml/4-Classification/1-Introduction/README.md new file mode 100644 index 000000000..6b29f1633 --- /dev/null +++ b/translations/ml/4-Classification/1-Introduction/README.md @@ -0,0 +1,315 @@ + +# വർഗ്ഗീകരണത്തിന് പരിചയം + +ഈ നാല് പാഠങ്ങളിൽ, നിങ്ങൾ ക്ലാസിക് മെഷീൻ ലേണിങ്ങിന്റെ ഒരു അടിസ്ഥാന ശ്രദ്ധാകേന്ദ്രമായ _വർഗ്ഗീകരണം_ അന്വേഷിക്കും. ഏഷ്യയും ഇന്ത്യയും ഉൾപ്പെടുന്ന എല്ലാ പ്രശസ്തമായ പാചകശാലകളെക്കുറിച്ചുള്ള ഒരു ഡാറ്റാസെറ്റുമായി വിവിധ വർഗ്ഗീകരണ ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് നാം നടക്കും. നിങ്ങൾക്ക് വിശക്കുമെന്നാണ് പ്രതീക്ഷ! + +![just a pinch!](../../../../translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.ml.png) + +> ഈ പാഠങ്ങളിൽ പാൻ-ഏഷ്യൻ പാചകശാലകളെ ആഘോഷിക്കൂ! ചിത്രം [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) നൽകിയത് + +വർഗ്ഗീകരണം [സൂപ്പർവൈസ്ഡ് ലേണിങ്ങിന്റെ](https://wikipedia.org/wiki/Supervised_learning) ഒരു രൂപമാണ്, ഇത് റെഗ്രഷൻ സാങ്കേതികവിദ്യകളുമായി വളരെ സാമ്യമുണ്ട്. മെഷീൻ ലേണിങ്ങ് ഡാറ്റാസെറ്റുകൾ ഉപയോഗിച്ച് വസ്തുക്കളുടെ മൂല്യങ്ങൾ അല്ലെങ്കിൽ പേരുകൾ പ്രവചിക്കുന്നതിനെക്കുറിച്ചാണെങ്കിൽ, വർഗ്ഗീകരണം സാധാരണയായി രണ്ട് വിഭാഗങ്ങളിലായി വിഭജിക്കപ്പെടുന്നു: _ബൈനറി വർഗ്ഗീകരണം_യും _മൾട്ടിക്ലാസ് വർഗ്ഗീകരണം_യും. + +[![Introduction to classification](https://img.youtube.com/vi/eg8DJYwdMyg/0.jpg)](https://youtu.be/eg8DJYwdMyg "Introduction to classification") + +> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: MIT-യുടെ ജോൺ ഗുട്ടാഗ് വർഗ്ഗീകരണം പരിചയപ്പെടുത്തുന്നു + +ഓർമ്മിക്കുക: + +- **ലീനിയർ റെഗ്രഷൻ** നിങ്ങൾക്ക് വ്യത്യസ്ത വേരിയബിളുകൾ തമ്മിലുള്ള ബന്ധം പ്രവചിക്കാൻ സഹായിച്ചു, ഒരു പുതിയ ഡാറ്റാപോയിന്റ് ആ വരിയോട് എവിടെ പൊരുത്തപ്പെടും എന്ന് കൃത്യമായി പ്രവചിക്കാൻ. ഉദാഹരണത്തിന്, _സെപ്റ്റംബർ മാസത്തിലെ പംപ്കിന്റെ വില ഡിസംബർ മാസത്തേക്കാൾ എത്രയാകും_ എന്ന് പ്രവചിക്കാം. +- **ലോജിസ്റ്റിക് റെഗ്രഷൻ** നിങ്ങൾക്ക് "ബൈനറി വിഭാഗങ്ങൾ" കണ്ടെത്താൻ സഹായിച്ചു: ഈ വിലയിൽ, _ഈ പംപ്കിൻ ഓറഞ്ച് ആണോ അല്ലയോ_? + +വർഗ്ഗീകരണം ഡാറ്റാപോയിന്റിന്റെ ലേബൽ അല്ലെങ്കിൽ ക്ലാസ് നിർണയിക്കാൻ വിവിധ ആൽഗോരിതങ്ങൾ ഉപയോഗിക്കുന്നു. ഒരു കൂട്ടം ഘടകങ്ങൾ നിരീക്ഷിച്ച്, അതിന്റെ പാചകശാലയുടെ ഉത്ഭവം നമുക്ക് നിർണയിക്കാമോ എന്ന് നോക്കാം. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ഈ പാഠം R-ൽ ലഭ്യമാണ്!](../../../../4-Classification/1-Introduction/solution/R/lesson_10.html) + +### പരിചയം + +വർഗ്ഗീകരണം മെഷീൻ ലേണിംഗ് ഗവേഷകനും ഡാറ്റാ സയന്റിസ്റ്റും നടത്തുന്ന അടിസ്ഥാന പ്രവർത്തനങ്ങളിൽ ഒന്നാണ്. ഒരു ബൈനറി മൂല്യത്തിന്റെ അടിസ്ഥാന വർഗ്ഗീകരണത്തിൽ നിന്ന് ("ഈ ഇമെയിൽ സ്പാം ആണോ അല്ലയോ?") മുതൽ കമ്പ്യൂട്ടർ വിഷൻ ഉപയോഗിച്ച് സങ്കീർണ്ണമായ ഇമേജ് വർഗ്ഗീകരണവും സെഗ്മെന്റേഷനും വരെ, ഡാറ്റയെ ക്ലാസുകളായി തിരിച്ച് അതിൽ നിന്ന് ചോദ്യങ്ങൾ ചോദിക്കാൻ ഇത് എപ്പോഴും ഉപകാരപ്രദമാണ്. + +പ്രക്രിയയെ കൂടുതൽ ശാസ്ത്രീയമായി പറയുമ്പോൾ, നിങ്ങളുടെ വർഗ്ഗീകരണ രീതി ഇൻപുട്ട് വേരിയബിളുകളും ഔട്ട്പുട്ട് വേരിയബിളുകളും തമ്മിലുള്ള ബന്ധം മാപ്പ് ചെയ്യാൻ സഹായിക്കുന്ന പ്രവചന മോഡൽ സൃഷ്ടിക്കുന്നു. + +![binary vs. multiclass classification](../../../../translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.ml.png) + +> ബൈനറി vs. മൾട്ടിക്ലാസ് പ്രശ്നങ്ങൾ വർഗ്ഗീകരണ ആൽഗോരിതങ്ങൾ കൈകാര്യം ചെയ്യേണ്ടത്. ഇൻഫോഗ്രാഫിക് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) നൽകിയത് + +ഡാറ്റ ശുദ്ധീകരണം, ദൃശ്യവൽക്കരണം, ML ടാസ്കുകൾക്കായി തയ്യാറാക്കൽ തുടങ്ങിയ പ്രക്രിയ ആരംഭിക്കുന്നതിന് മുമ്പ്, മെഷീൻ ലേണിംഗ് ഡാറ്റ വർഗ്ഗീകരിക്കാൻ ഉപയോഗിക്കാവുന്ന വിവിധ മാർഗങ്ങൾ കുറച്ച് പഠിക്കാം. + +[സ്റ്റാറ്റിസ്റ്റിക്സിൽ നിന്നാണ്](https://wikipedia.org/wiki/Statistical_classification) ഉത്ഭവം, ക്ലാസിക് മെഷീൻ ലേണിംഗ് ഉപയോഗിച്ചുള്ള വർഗ്ഗീകരണം `smoker`, `weight`, `age` പോലുള്ള ഫീച്ചറുകൾ ഉപയോഗിച്ച് _X രോഗം ഉണ്ടാകാനുള്ള സാധ്യത_ നിർണയിക്കുന്നു. നിങ്ങൾ മുമ്പ് ചെയ്ത റെഗ്രഷൻ അഭ്യാസങ്ങളോട് സമാനമായ ഒരു സൂപ്പർവൈസ്ഡ് ലേണിംഗ് സാങ്കേതികവിദ്യയായി, നിങ്ങളുടെ ഡാറ്റ ലേബൽ ചെയ്തിരിക്കുന്നു, ML ആൽഗോരിതങ്ങൾ ആ ലേബലുകൾ ഉപയോഗിച്ച് ഡാറ്റാസെറ്റിന്റെ ക്ലാസുകൾ (അഥവാ 'ഫീച്ചറുകൾ') വർഗ്ഗീകരിക്കുകയും പ്രവചിക്കുകയും ചെയ്യുന്നു, അവ ഒരു ഗ്രൂപ്പിലോ ഫലത്തിലോ നിയോഗിക്കുന്നു. + +✅ ഒരു പാചകശാലകളെക്കുറിച്ചുള്ള ഡാറ്റാസെറ്റ് കണക്കിലെടുക്കൂ. മൾട്ടിക്ലാസ് മോഡൽ എന്ത് ചോദിക്കാനാകും? ബൈനറി മോഡൽ എന്ത് ചോദിക്കാനാകും? ഒരു പാചകശാല ഫെനുഗ്രീക് ഉപയോഗിക്കുമോ എന്ന് നിർണയിക്കാൻ നിങ്ങൾ ആഗ്രഹിച്ചാൽ? സ്റ്റാർ അനീസ്, ആർട്ടിച്ചോക്ക്, കോളിഫ്ലവർ, ഹോർസ്റഡിഷ് നിറഞ്ഞ ഒരു ഗ്രോസറി ബാഗ് നൽകിയാൽ, ഒരു സാധാരണ ഇന്ത്യൻ വിഭവം സൃഷ്ടിക്കാമോ എന്ന് നിങ്ങൾ കാണാൻ ആഗ്രഹിച്ചാൽ? + +[![Crazy mystery baskets](https://img.youtube.com/vi/GuTeDbaNoEU/0.jpg)](https://youtu.be/GuTeDbaNoEU "Crazy mystery baskets") + +> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. 'ചോപ്പ്ഡ്' എന്ന ഷോയുടെ മുഴുവൻ ആശയം 'മിസ്റ്ററി ബാസ്കറ്റ്' ആണ്, ഇവിടെ ഷെഫുകൾക്ക് ഒരു യാദൃച്ഛിക ഘടകങ്ങൾ തിരഞ്ഞെടുക്കലിൽ നിന്ന് ഒരു വിഭവം ഉണ്ടാക്കണം. തീർച്ചയായും ഒരു ML മോഡൽ സഹായിച്ചേനെ! + +## ഹലോ 'ക്ലാസിഫയർ' + +ഈ പാചകശാല ഡാറ്റാസെറ്റിൽ നമുക്ക് ചോദിക്കാനാഗ്രഹിക്കുന്ന ചോദ്യം **മൾട്ടിക്ലാസ് ചോദ്യം** ആണ്, കാരണം നമുക്ക് നിരവധി ദേശീയ പാചകശാലകൾ ഉണ്ട്. ഒരു ഘടകങ്ങളുടെ ബാച്ച് നൽകിയാൽ, ഈ പല ക്ലാസുകളിൽ ഏതാണ് ഡാറ്റ പൊരുത്തപ്പെടുന്നത്? + +Scikit-learn വിവിധ പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ ഉപയോഗിക്കാവുന്ന വിവിധ ആൽഗോരിതങ്ങൾ നൽകുന്നു. അടുത്ത രണ്ട് പാഠങ്ങളിൽ, നിങ്ങൾ ഈ ആൽഗോരിതങ്ങളിൽ ചിലതിനെക്കുറിച്ച് പഠിക്കും. + +## അഭ്യാസം - നിങ്ങളുടെ ഡാറ്റ ശുദ്ധീകരിക്കുകയും ബാലൻസ് ചെയ്യുകയും ചെയ്യുക + +ഈ പ്രോജക്ട് ആരംഭിക്കുന്നതിന് മുമ്പ്, ആദ്യത്തെ ജോലി നിങ്ങളുടെ ഡാറ്റ ശുദ്ധീകരിക്കുകയും **ബാലൻസ്** ചെയ്യുകയും ചെയ്യുക, മികച്ച ഫലങ്ങൾ നേടാൻ. ഈ ഫോൾഡറിന്റെ റൂട്ടിൽ ഉള്ള ശൂന്യമായ _notebook.ipynb_ ഫയൽ ഉപയോഗിച്ച് തുടങ്ങുക. + +ആദ്യമായി ഇൻസ്റ്റാൾ ചെയ്യേണ്ടത് [imblearn](https://imbalanced-learn.org/stable/) ആണ്. ഇത് Scikit-learn പാക്കേജ് ആണ്, ഡാറ്റയെ മികച്ച രീതിയിൽ ബാലൻസ് ചെയ്യാൻ സഹായിക്കും (ഈ ടാസ്ക് കുറച്ച് നേരം കൊണ്ട് നിങ്ങൾക്ക് പഠിക്കാം). + +1. `imblearn` ഇൻസ്റ്റാൾ ചെയ്യാൻ, `pip install` ഓടിക്കുക, ഇങ്ങനെ: + + ```python + pip install imblearn + ``` + +1. നിങ്ങളുടെ ഡാറ്റ ഇറക്കുമതി ചെയ്യാനും ദൃശ്യവൽക്കരിക്കാനും ആവശ്യമായ പാക്കേജുകൾ ഇറക്കുമതി ചെയ്യുക, കൂടാതെ `imblearn`-ൽ നിന്നുള്ള `SMOTE`-യും ഇറക്കുമതി ചെയ്യുക. + + ```python + import pandas as pd + import matplotlib.pyplot as plt + import matplotlib as mpl + import numpy as np + from imblearn.over_sampling import SMOTE + ``` + + ഇനി നിങ്ങൾക്ക് ഡാറ്റ ഇറക്കുമതി ചെയ്യാൻ സജ്ജമാണ്. + +1. അടുത്ത ടാസ്ക് ഡാറ്റ ഇറക്കുമതി ചെയ്യുക: + + ```python + df = pd.read_csv('../data/cuisines.csv') + ``` + + `read_csv()` ഉപയോഗിച്ച് _cusines.csv_ ഫയലിന്റെ ഉള്ളടക്കം വായിച്ച് `df` എന്ന വേരിയബിളിൽ സൂക്ഷിക്കും. + +1. ഡാറ്റയുടെ ആകൃതി പരിശോധിക്കുക: + + ```python + df.head() + ``` + + ആദ്യത്തെ അഞ്ച് വരികൾ ഇങ്ങനെ കാണപ്പെടും: + + ```output + | | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini | + | --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- | + | 0 | 65 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 1 | 66 | indian | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 2 | 67 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 3 | 68 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 4 | 69 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | + ``` + +1. ഈ ഡാറ്റയെക്കുറിച്ച് `info()` വിളിച്ച് വിവരങ്ങൾ നേടുക: + + ```python + df.info() + ``` + + നിങ്ങളുടെ ഔട്ട്പുട്ട് ഇങ്ങനെ കാണപ്പെടും: + + ```output + + RangeIndex: 2448 entries, 0 to 2447 + Columns: 385 entries, Unnamed: 0 to zucchini + dtypes: int64(384), object(1) + memory usage: 7.2+ MB + ``` + +## അഭ്യാസം - പാചകശാലകളെക്കുറിച്ച് പഠിക്കുക + +ഇപ്പോൾ ജോലി കൂടുതൽ രസകരമാകുന്നു. ഓരോ പാചകശാലയ്ക്കും ഡാറ്റയുടെ വിതരണം കണ്ടെത്താം + +1. `barh()` വിളിച്ച് ഡാറ്റ ബാറുകളായി പ്ലോട്ട് ചെയ്യുക: + + ```python + df.cuisine.value_counts().plot.barh() + ``` + + ![cuisine data distribution](../../../../translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.ml.png) + + പാചകശാലകളുടെ എണ്ണം പരിമിതമാണ്, പക്ഷേ ഡാറ്റയുടെ വിതരണം അസമമാണ്. നിങ്ങൾ അത് ശരിയാക്കാം! അതിന് മുമ്പ്, കുറച്ച് കൂടുതൽ അന്വേഷിക്കൂ. + +1. ഓരോ പാചകശാലയ്ക്കും ലഭ്യമായ ഡാറ്റയുടെ അളവ് കണ്ടെത്തി പ്രിന്റ് ചെയ്യുക: + + ```python + thai_df = df[(df.cuisine == "thai")] + japanese_df = df[(df.cuisine == "japanese")] + chinese_df = df[(df.cuisine == "chinese")] + indian_df = df[(df.cuisine == "indian")] + korean_df = df[(df.cuisine == "korean")] + + print(f'thai df: {thai_df.shape}') + print(f'japanese df: {japanese_df.shape}') + print(f'chinese df: {chinese_df.shape}') + print(f'indian df: {indian_df.shape}') + print(f'korean df: {korean_df.shape}') + ``` + + ഔട്ട്പുട്ട് ഇങ്ങനെ കാണപ്പെടും: + + ```output + thai df: (289, 385) + japanese df: (320, 385) + chinese df: (442, 385) + indian df: (598, 385) + korean df: (799, 385) + ``` + +## ഘടകങ്ങൾ കണ്ടെത്തൽ + +ഇപ്പോൾ നിങ്ങൾക്ക് ഡാറ്റയിൽ കൂടുതൽ ആഴത്തിൽ കയറി ഓരോ പാചകശാലയ്ക്കും സാധാരണ ഘടകങ്ങൾ എന്തൊക്കെയാണെന്ന് പഠിക്കാം. പാചകശാലകളിൽ ആശയക്കുഴപ്പം സൃഷ്ടിക്കുന്ന ആവർത്തിക്കുന്ന ഡാറ്റ നീക്കം ചെയ്യണം, അതിനാൽ ഈ പ്രശ്നത്തെക്കുറിച്ച് പഠിക്കാം. + +1. Python-ൽ `create_ingredient()` എന്ന ഫംഗ്ഷൻ സൃഷ്ടിക്കുക, ഇത് ഒരു ഘടക ഡാറ്റാഫ്രെയിം സൃഷ്ടിക്കും. ഈ ഫംഗ്ഷൻ ഒരു ഉപകാരമില്ലാത്ത കോളം ഒഴിവാക്കി, ഘടകങ്ങളെ അവരുടെ എണ്ണത്തിന്റെ അടിസ്ഥാനത്തിൽ ക്രമീകരിക്കും: + + ```python + def create_ingredient_df(df): + ingredient_df = df.T.drop(['cuisine','Unnamed: 0']).sum(axis=1).to_frame('value') + ingredient_df = ingredient_df[(ingredient_df.T != 0).any()] + ingredient_df = ingredient_df.sort_values(by='value', ascending=False, + inplace=False) + return ingredient_df + ``` + + ഇപ്പോൾ ഈ ഫംഗ്ഷൻ ഉപയോഗിച്ച് ഓരോ പാചകശാലയിലും ഏറ്റവും ജനപ്രിയമായ പത്ത് ഘടകങ്ങൾ കണ്ടെത്താം. + +1. `create_ingredient()` വിളിച്ച് `barh()` ഉപയോഗിച്ച് പ്ലോട്ട് ചെയ്യുക: + + ```python + thai_ingredient_df = create_ingredient_df(thai_df) + thai_ingredient_df.head(10).plot.barh() + ``` + + ![thai](../../../../translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.ml.png) + +1. ജാപ്പനീസ് ഡാറ്റയ്ക്കും അതേപോലെ ചെയ്യുക: + + ```python + japanese_ingredient_df = create_ingredient_df(japanese_df) + japanese_ingredient_df.head(10).plot.barh() + ``` + + ![japanese](../../../../translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.ml.png) + +1. ചൈനീസ് ഘടകങ്ങൾക്കായി: + + ```python + chinese_ingredient_df = create_ingredient_df(chinese_df) + chinese_ingredient_df.head(10).plot.barh() + ``` + + ![chinese](../../../../translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.ml.png) + +1. ഇന്ത്യൻ ഘടകങ്ങൾ പ്ലോട്ട് ചെയ്യുക: + + ```python + indian_ingredient_df = create_ingredient_df(indian_df) + indian_ingredient_df.head(10).plot.barh() + ``` + + ![indian](../../../../translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.ml.png) + +1. അവസാനം കൊറിയൻ ഘടകങ്ങൾ: + + ```python + korean_ingredient_df = create_ingredient_df(korean_df) + korean_ingredient_df.head(10).plot.barh() + ``` + + ![korean](../../../../translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.ml.png) + +1. ഇപ്പോൾ, വ്യത്യസ്ത പാചകശാലകളിൽ ആശയക്കുഴപ്പം സൃഷ്ടിക്കുന്ന ഏറ്റവും സാധാരണ ഘടകങ്ങൾ `drop()` വിളിച്ച് ഒഴിവാക്കുക: + + എല്ലാവർക്കും അരി, വെളുത്തുള്ളി, ഇഞ്ചി ഇഷ്ടമാണ്! + + ```python + feature_df= df.drop(['cuisine','Unnamed: 0','rice','garlic','ginger'], axis=1) + labels_df = df.cuisine #.unique() + feature_df.head() + ``` + +## ഡാറ്റാസെറ്റ് ബാലൻസ് ചെയ്യുക + +ഇപ്പോൾ നിങ്ങൾ ഡാറ്റ ശുദ്ധീകരിച്ചിരിക്കുന്നു, [SMOTE](https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html) - "സിന്തറ്റിക് മൈനോറിറ്റി ഓവർ-സാമ്പ്ലിംഗ് ടെക്നിക്" - ഉപയോഗിച്ച് അത് ബാലൻസ് ചെയ്യുക. + +1. `fit_resample()` വിളിക്കുക, ഈ തന്ത്രം ഇന്റർപൊളേഷൻ വഴി പുതിയ സാമ്പിളുകൾ സൃഷ്ടിക്കുന്നു. + + ```python + oversample = SMOTE() + transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df) + ``` + + നിങ്ങളുടെ ഡാറ്റ ബാലൻസ് ചെയ്താൽ, വർഗ്ഗീകരണത്തിൽ മികച്ച ഫലങ്ങൾ ലഭിക്കും. ഒരു ബൈനറി വർഗ്ഗീകരണം പരിഗണിക്കൂ. നിങ്ങളുടെ ഡാറ്റയുടെ ഭൂരിഭാഗം ഒരു ക്ലാസ്സിൽ ആണെങ്കിൽ, ML മോഡൽ ആ ക്ലാസ് കൂടുതൽ പ്രവചിക്കും, കാരണം അതിനുള്ള ഡാറ്റ കൂടുതലാണ്. ഡാറ്റ ബാലൻസ് ചെയ്യുന്നത് ഈ അസമത്വം നീക്കം ചെയ്യാൻ സഹായിക്കുന്നു. + +1. ഇപ്പോൾ ഓരോ ഘടകത്തിനും ലേബലുകളുടെ എണ്ണം പരിശോധിക്കാം: + + ```python + print(f'new label count: {transformed_label_df.value_counts()}') + print(f'old label count: {df.cuisine.value_counts()}') + ``` + + നിങ്ങളുടെ ഔട്ട്പുട്ട് ഇങ്ങനെ കാണപ്പെടും: + + ```output + new label count: korean 799 + chinese 799 + indian 799 + japanese 799 + thai 799 + Name: cuisine, dtype: int64 + old label count: korean 799 + indian 598 + chinese 442 + japanese 320 + thai 289 + Name: cuisine, dtype: int64 + ``` + + ഡാറ്റ നല്ലതും ശുദ്ധവും ബാലൻസും കൂടിയതും, വളരെ രുചികരവുമാണ്! + +1. അവസാന ഘട്ടം, ലേബലുകളും ഫീച്ചറുകളും ഉൾപ്പെടുന്ന ബാലൻസ്ഡ് ഡാറ്റ ഒരു പുതിയ ഡാറ്റാഫ്രെയിമിൽ സേവ് ചെയ്യുക, ഇത് ഫയലായി എക്സ്പോർട്ട് ചെയ്യാവുന്നതാണ്: + + ```python + transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer') + ``` + +1. `transformed_df.head()`യും `transformed_df.info()`യും ഉപയോഗിച്ച് ഡാറ്റ വീണ്ടും പരിശോധിക്കാം. ഈ ഡാറ്റയുടെ ഒരു പകർപ്പ് ഭാവിയിലെ പാഠങ്ങൾക്കായി സേവ് ചെയ്യുക: + + ```python + transformed_df.head() + transformed_df.info() + transformed_df.to_csv("../data/cleaned_cuisines.csv") + ``` + + ഈ പുതിയ CSV ഫയൽ ഇപ്പോൾ റൂട്ടിലെ ഡാറ്റ ഫോൾഡറിൽ ലഭ്യമാണ്. + +--- + +## 🚀ചലഞ്ച് + +ഈ പാഠ്യപദ്ധതിയിൽ പല രസകരമായ ഡാറ്റാസെറ്റുകളും ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. `data` ഫോൾഡറുകൾ പരിശോധിച്ച്, ബൈനറി അല്ലെങ്കിൽ മൾട്ടി-ക്ലാസ് വർഗ്ഗീകരണത്തിന് അനുയോജ്യമായ ഡാറ്റാസെറ്റുകൾ ഉണ്ടോ എന്ന് നോക്കൂ. ഈ ഡാറ്റാസെറ്റിൽ നിങ്ങൾ എന്ത് ചോദ്യങ്ങൾ ചോദിക്കുമെന്നു ചിന്തിക്കൂ. + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +SMOTE-യുടെ API പരിശോധിക്കുക. ഏത് ഉപയോഗകേസുകൾക്കാണ് ഇത് ഏറ്റവും അനുയോജ്യം? ഇത് എവിടെ പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നു? + +## അസൈൻമെന്റ് + +[വർഗ്ഗീകരണ രീതികൾ അന്വേഷിക്കുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ പ്രാമാണികമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/4-Classification/1-Introduction/assignment.md b/translations/ml/4-Classification/1-Introduction/assignment.md new file mode 100644 index 000000000..c842eea24 --- /dev/null +++ b/translations/ml/4-Classification/1-Introduction/assignment.md @@ -0,0 +1,27 @@ + +# വർഗ്ഗീകരണ രീതികൾ അന്വേഷിക്കുക + +## നിർദ്ദേശങ്ങൾ + +[Scikit-learn ഡോക്യുമെന്റേഷനിൽ](https://scikit-learn.org/stable/supervised_learning.html) നിങ്ങൾക്ക് ഡാറ്റ വർഗ്ഗീകരിക്കുന്ന നിരവധി മാർഗങ്ങൾ കണ്ടെത്താം. ഈ ഡോക്യുമെന്റുകളിൽ ചെറിയൊരു തിരച്ചിൽ നടത്തുക: നിങ്ങളുടെ ലക്ഷ്യം വർഗ്ഗീകരണ രീതികൾ അന്വേഷിച്ച് ഈ പാഠ്യപദ്ധതിയിലെ ഒരു ഡാറ്റാസെറ്റിനും, അതിൽ ചോദിക്കാവുന്ന ഒരു ചോദ്യത്തിനും, ഒരു വർഗ്ഗീകരണ സാങ്കേതിക വിദ്യയ്ക്കും പൊരുത്തപ്പെടുന്ന രീതികൾ കണ്ടെത്തുക. ഒരു സ്പ്രെഡ്‌ഷീറ്റ് അല്ലെങ്കിൽ .doc ഫയലിൽ ഒരു പട്ടിക സൃഷ്ടിച്ച് ഡാറ്റാസെറ്റ് ആ വർഗ്ഗീകരണ ആൽഗോരിതവുമായി എങ്ങനെ പ്രവർത്തിക്കുമെന്ന് വിശദീകരിക്കുക. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണാർത്ഥം | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| | 5 ആൽഗോരിതങ്ങൾ ഒരു വർഗ്ഗീകരണ സാങ്കേതിക വിദ്യയോടൊപ്പം അവലോകനം ചെയ്യുന്ന ഒരു ഡോക്യുമെന്റ് സമർപ്പിച്ചിരിക്കുന്നു. അവലോകനം നന്നായി വിശദീകരിച്ചും വിശദവുമാണ്. | 3 ആൽഗോരിതങ്ങൾ ഒരു വർഗ്ഗീകരണ സാങ്കേതിക വിദ്യയോടൊപ്പം അവലോകനം ചെയ്യുന്ന ഒരു ഡോക്യുമെന്റ് സമർപ്പിച്ചിരിക്കുന്നു. അവലോകനം നന്നായി വിശദീകരിച്ചും വിശദവുമാണ്. | 3-ൽ കുറവായ ആൽഗോരിതങ്ങൾ ഒരു വർഗ്ഗീകരണ സാങ്കേതിക വിദ്യയോടൊപ്പം അവലോകനം ചെയ്യുന്ന ഒരു ഡോക്യുമെന്റ് സമർപ്പിച്ചിരിക്കുന്നു, അവലോകനം നന്നായി വിശദീകരിച്ചോ വിശദവുമായിരുന്നില്ല. | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ പ്രാമാണികമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/4-Classification/1-Introduction/notebook.ipynb b/translations/ml/4-Classification/1-Introduction/notebook.ipynb new file mode 100644 index 000000000..276f1f744 --- /dev/null +++ b/translations/ml/4-Classification/1-Introduction/notebook.ipynb @@ -0,0 +1,41 @@ +{ + "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": "d544ef384b7ba73757d830a72372a7f2", + "translation_date": "2025-12-19T17:02:31+00:00", + "source_file": "4-Classification/1-Introduction/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# രുചികരമായ ഏഷ്യൻ மற்றும் ഇന്ത്യൻ വിഭവങ്ങൾ\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/ml/4-Classification/1-Introduction/solution/Julia/README.md b/translations/ml/4-Classification/1-Introduction/solution/Julia/README.md new file mode 100644 index 000000000..670acc96c --- /dev/null +++ b/translations/ml/4-Classification/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/ml/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb b/translations/ml/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb new file mode 100644 index 000000000..77d4c41eb --- /dev/null +++ b/translations/ml/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb @@ -0,0 +1,731 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_10-R.ipynb", + "provenance": [], + "collapsed_sections": [] + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "2621e24705e8100893c9bf84e0fc8aef", + "translation_date": "2025-12-19T17:07:27+00:00", + "source_file": "4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb", + "language_code": "ml" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ഒരു വർഗ്ഗീകരണ മോഡൽ നിർമ്മിക്കുക: രുചികരമായ ഏഷ്യൻ மற்றும் ഇന്ത്യൻ ഭക്ഷണങ്ങൾ\n" + ], + "metadata": { + "id": "ItETB4tSFprR" + } + }, + { + "cell_type": "markdown", + "source": [ + "## ക്ലാസിഫിക്കേഷനിലേക്ക് പരിചയം: നിങ്ങളുടെ ഡാറ്റ ശുദ്ധീകരിക്കുക, തയ്യാറാക്കുക, ദൃശ്യവത്കരിക്കുക\n", + "\n", + "ഈ നാല് പാഠങ്ങളിൽ, നിങ്ങൾ ക്ലാസിക് മെഷീൻ ലേണിങ്ങിന്റെ ഒരു അടിസ്ഥാന ശ്രദ്ധാകേന്ദ്രമായ *ക്ലാസിഫിക്കേഷൻ* അന്വേഷിക്കും. ഏഷ്യയും ഇന്ത്യയും ഉൾപ്പെടുന്ന എല്ലാ പ്രശസ്തമായ പാചകശാലകളെക്കുറിച്ചുള്ള ഒരു ഡാറ്റാസെറ്റുമായി വിവിധ ക്ലാസിഫിക്കേഷൻ ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് നാം നടക്കും. നിങ്ങൾക്ക് വിശക്കുമെന്ന് പ്രതീക്ഷിക്കുന്നു!\n", + "\n", + "

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

ഈ പാഠങ്ങളിൽ പാൻ-ഏഷ്യൻ പാചകശാലകൾ ആഘോഷിക്കൂ! ചിത്രം: ജെൻ ലൂപ്പർ
\n", + "\n", + "\n", + "\n", + "\n", + "ക്ലാസിഫിക്കേഷൻ [സൂപ്പർവൈസ്ഡ് ലേണിങ്ങിന്റെ](https://wikipedia.org/wiki/Supervised_learning) ഒരു രൂപമാണ്, ഇത് റെഗ്രഷൻ സാങ്കേതികവിദ്യകളുമായി വളരെ സാമ്യമുണ്ട്. ക്ലാസിഫിക്കേഷനിൽ, ഒരു മോഡൽ ഒരു ഇനത്തിന് ഏത് `വിഭാഗം` ആണെന്ന് പ്രവചിക്കാൻ പരിശീലിപ്പിക്കുന്നു. മെഷീൻ ലേണിങ്ങ് ഡാറ്റാസെറ്റുകൾ ഉപയോഗിച്ച് വസ്തുക്കളുടെ മൂല്യങ്ങൾ അല്ലെങ്കിൽ പേരുകൾ പ്രവചിക്കുന്നതിനെക്കുറിച്ചാണെങ്കിൽ, ക്ലാസിഫിക്കേഷൻ സാധാരണയായി രണ്ട് വിഭാഗങ്ങളിലായി വിഭജിക്കപ്പെടുന്നു: *ബൈനറി ക്ലാസിഫിക്കേഷൻ*യും *മൾട്ടിക്ലാസ് ക്ലാസിഫിക്കേഷൻ*യും.\n", + "\n", + "ഓർമ്മിക്കുക:\n", + "\n", + "- **ലീനിയർ റെഗ്രഷൻ** വ്യത്യസ്ത വേരിയബിളുകൾ തമ്മിലുള്ള ബന്ധം പ്രവചിക്കാൻ സഹായിച്ചു, ഒരു പുതിയ ഡാറ്റാപോയിന്റ് ആ വരിയോട് എവിടെ പൊരുത്തപ്പെടും എന്ന് കൃത്യമായി പ്രവചിക്കാൻ. ഉദാഹരണത്തിന്, *സെപ്റ്റംബർ മാസത്തിൽ ഒരു പംപ്കിൻ വില എത്രയായിരിക്കും, ഡിസംബർ മാസത്തേക്കാൾ* എന്നിങ്ങനെ സംഖ്യാത്മക മൂല്യങ്ങൾ പ്രവചിക്കാമായിരുന്നു.\n", + "\n", + "- **ലോജിസ്റ്റിക് റെഗ്രഷൻ** \"ബൈനറി വിഭാഗങ്ങൾ\" കണ്ടെത്താൻ സഹായിച്ചു: ഈ വിലയിൽ, *ഈ പംപ്കിൻ ഓറഞ്ച് ആണോ അല്ലയോ*?\n", + "\n", + "ക്ലാസിഫിക്കേഷൻ ഡാറ്റാപോയിന്റിന്റെ ലേബൽ അല്ലെങ്കിൽ ക്ലാസ് നിർണയിക്കാൻ വിവിധ ആൽഗോരിതങ്ങൾ ഉപയോഗിക്കുന്നു. ഒരു പാചകശാല ഡാറ്റ ഉപയോഗിച്ച്, ഒരു ഘടകങ്ങളുടെ കൂട്ടം നിരീക്ഷിച്ച് അതിന്റെ പാചകശാലയുടെ ഉത്ഭവം നമുക്ക് നിർണയിക്കാമോ എന്ന് നോക്കാം.\n", + "\n", + "### [**പാഠം മുൻകൂർ ക്വിസ്**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/19/)\n", + "\n", + "### **പരിചയം**\n", + "\n", + "ക്ലാസിഫിക്കേഷൻ മെഷീൻ ലേണിങ്ങ് ഗവേഷകനും ഡാറ്റാ സയന്റിസ്റ്റും നടത്തുന്ന അടിസ്ഥാന പ്രവർത്തനങ്ങളിൽ ഒന്നാണ്. ഒരു ബൈനറി മൂല്യത്തിന്റെ അടിസ്ഥാന ക്ലാസിഫിക്കേഷനിൽ നിന്ന് (\"ഈ ഇമെയിൽ സ്പാം ആണോ അല്ലയോ?\"), കമ്പ്യൂട്ടർ വിഷൻ ഉപയോഗിച്ച് സങ്കീർണ്ണമായ ഇമേജ് ക്ലാസിഫിക്കേഷൻ, സെഗ്മെന്റേഷൻ വരെ, ഡാറ്റ ക്ലാസുകളായി തിരിച്ച് അതിൽ ചോദ്യങ്ങൾ ചോദിക്കാൻ എപ്പോഴും ഉപകാരപ്രദമാണ്.\n", + "\n", + "പ്രക്രിയ ശാസ്ത്രീയമായി പറയുമ്പോൾ, നിങ്ങളുടെ ക്ലാസിഫിക്കേഷൻ രീതി ഇൻപുട്ട് വേരിയബിളുകളും ഔട്ട്പുട്ട് വേരിയബിളുകളും തമ്മിലുള്ള ബന്ധം മാപ്പ് ചെയ്യാൻ സഹായിക്കുന്ന പ്രവചന മോഡൽ സൃഷ്ടിക്കുന്നു.\n", + "\n", + "

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

ക്ലാസിഫിക്കേഷൻ ആൽഗോരിതങ്ങൾ കൈകാര്യം ചെയ്യേണ്ട ബൈനറി vs. മൾട്ടിക്ലാസ് പ്രശ്നങ്ങൾ. ഇൻഫോഗ്രാഫിക്: ജെൻ ലൂപ്പർ
\n", + "\n", + "\n", + "\n", + "ഡാറ്റ ശുദ്ധീകരണം, ദൃശ്യവത്കരണം, ML പ്രവർത്തനങ്ങൾക്ക് തയ്യാറാക്കൽ തുടങ്ങിയ പ്രക്രിയ ആരംഭിക്കുന്നതിന് മുമ്പ്, മെഷീൻ ലേണിങ്ങ് ഡാറ്റ ക്ലാസിഫൈ ചെയ്യാൻ ഉപയോഗിക്കാവുന്ന വിവിധ മാർഗങ്ങൾ കുറച്ച് പഠിക്കാം.\n", + "\n", + "[സ്റ്റാറ്റിസ്റ്റിക്സിൽ നിന്നുള്ള](https://wikipedia.org/wiki/Statistical_classification) പ്രചോദനം ലഭിച്ച ക്ലാസിഫിക്കേഷൻ, ക്ലാസിക് മെഷീൻ ലേണിങ്ങ് ഉപയോഗിച്ച് `smoker`, `weight`, `age` പോലുള്ള ഫീച്ചറുകൾ ഉപയോഗിച്ച് *X രോഗം ഉണ്ടാകാനുള്ള സാധ്യത* നിർണയിക്കുന്നു. നിങ്ങൾ മുമ്പ് ചെയ്ത റെഗ്രഷൻ അഭ്യാസങ്ങളോട് സമാനമായ ഒരു സൂപ്പർവൈസ്ഡ് ലേണിങ്ങ് സാങ്കേതികവിദ്യയായി, നിങ്ങളുടെ ഡാറ്റ ലേബൽ ചെയ്തിരിക്കുന്നു, ML ആൽഗോരിതങ്ങൾ ആ ലേബലുകൾ ഉപയോഗിച്ച് ഡാറ്റാസെറ്റിന്റെ ക്ലാസുകൾ (അഥവാ 'ഫീച്ചറുകൾ') ക്ലാസിഫൈ ചെയ്ത് ഒരു ഗ്രൂപ്പിലോ ഫലത്തിലോ നിയോഗിക്കുന്നു.\n", + "\n", + "✅ ഒരു പാചകശാല ഡാറ്റാസെറ്റ് കണക്കിലെടുക്കുക. ഒരു മൾട്ടിക്ലാസ് മോഡൽ എന്ത് ചോദിക്കാനാകും? ഒരു ബൈനറി മോഡൽ എന്ത് ചോദിക്കാനാകും? ഒരു നൽകിയ പാചകശാല ഫേനുഗ്രീക് ഉപയോഗിക്കുമോ എന്ന് നിർണയിക്കാൻ നിങ്ങൾ ആഗ്രഹിച്ചാൽ? ഒരു ഗ്രോസറി ബാഗിൽ സ്റ്റാർ അനീസ്, ആർട്ടിച്ചോക്ക്, കോളിഫ്ലവർ, ഹോർസ്റഡിഷ് എന്നിവ ഉണ്ടെങ്കിൽ, ഒരു സാധാരണ ഇന്ത്യൻ വിഭവം സൃഷ്ടിക്കാമോ എന്ന് നിങ്ങൾ കാണാൻ ആഗ്രഹിച്ചാൽ?\n", + "\n", + "### **ഹലോ 'ക്ലാസിഫയർ'**\n", + "\n", + "ഈ പാചകശാല ഡാറ്റാസെറ്റിൽ നിന്ന് നമുക്ക് ചോദിക്കാനാഗ്രഹിക്കുന്ന ചോദ്യം യഥാർത്ഥത്തിൽ **മൾട്ടിക്ലാസ് ചോദ്യം** ആണ്, കാരണം നമുക്ക് പ്രവർത്തിക്കാനുള്ള നിരവധി ദേശീയ പാചകശാലകൾ ഉണ്ട്. ഒരു ഘടകങ്ങളുടെ ബാച്ച് നൽകിയാൽ, ഈ പല ക്ലാസുകളിൽ ഏതാണ് ഡാറ്റ പൊരുത്തപ്പെടുന്നത്?\n", + "\n", + "ടിഡിമോഡൽസ് ഡാറ്റ ക്ലാസിഫൈ ചെയ്യാൻ വിവിധ ആൽഗോരിതങ്ങൾ നൽകുന്നു, നിങ്ങൾ പരിഹരിക്കാൻ ആഗ്രഹിക്കുന്ന പ്രശ്നത്തിന്റെ തരം അനുസരിച്ച്. അടുത്ത രണ്ട് പാഠങ്ങളിൽ, നിങ്ങൾ ഈ ആൽഗോരിതങ്ങളിൽ ചിലതിനെക്കുറിച്ച് പഠിക്കും.\n", + "\n", + "#### **ആവശ്യമായ പാക്കേജുകൾ**\n", + "\n", + "ഈ പാഠത്തിനായി, നമുക്ക് ഡാറ്റ ശുദ്ധീകരിക്കാൻ, തയ്യാറാക്കാൻ, ദൃശ്യവത്കരിക്കാൻ താഴെപ്പറയുന്ന പാക്കേജുകൾ ആവശ്യമാണ്:\n", + "\n", + "- `tidyverse`: [ടിഡിവേഴ്സ്](https://www.tidyverse.org/) ഡാറ്റാ സയൻസ് വേഗത്തിൽ, എളുപ്പത്തിൽ, രസകരമായി നടത്താൻ രൂപകൽപ്പന ചെയ്ത [R പാക്കേജുകളുടെ സമാഹാരം](https://www.tidyverse.org/packages)!\n", + "\n", + "- `tidymodels`: [ടിഡിമോഡൽസ്](https://www.tidymodels.org/) ഫ്രെയിംവർക്ക് മോഡലിംഗ്, മെഷീൻ ലേണിങ്ങിനുള്ള [പാക്കേജുകളുടെ സമാഹാരമാണ്](https://www.tidymodels.org/packages/) .\n", + "\n", + "- `DataExplorer`: [DataExplorer പാക്കേജ്](https://cran.r-project.org/web/packages/DataExplorer/vignettes/dataexplorer-intro.html) EDA പ്രക്രിയയും റിപ്പോർട്ട് സൃഷ്ടിയും ലളിതമാക്കാനും ഓട്ടോമേറ്റുചെയ്യാനുമുള്ളതാണ്.\n", + "\n", + "- `themis`: [themis പാക്കേജ്](https://themis.tidymodels.org/) അസമതുലിത ഡാറ്റ കൈകാര്യം ചെയ്യുന്നതിനുള്ള അധിക റെസിപ്പി ഘട്ടങ്ങൾ നൽകുന്നു.\n", + "\n", + "ഇവ ഇൻസ്റ്റാൾ ചെയ്യാൻ:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"DataExplorer\", \"here\"))`\n", + "\n", + "അല്ലെങ്കിൽ, താഴെ കൊടുത്തിരിക്കുന്ന സ്ക്രിപ്റ്റ് ഈ മോഡ്യൂൾ പൂർത്തിയാക്കാൻ ആവശ്യമായ പാക്കേജുകൾ നിങ്ങൾക്കുണ്ടോ എന്ന് പരിശോധിച്ച്, ഇല്ലെങ്കിൽ ഇൻസ്റ്റാൾ ചെയ്യും.\n" + ], + "metadata": { + "id": "ri5bQxZ-Fz_0" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\r\n", + "\r\n", + "pacman::p_load(tidyverse, tidymodels, DataExplorer, themis, here)" + ], + "outputs": [], + "metadata": { + "id": "KIPxa4elGAPI" + } + }, + { + "cell_type": "markdown", + "source": [ + "നാം പിന്നീട് ഈ അത്ഭുതകരമായ പാക്കേജുകൾ ലോഡ് ചെയ്ത് നമ്മുടെ നിലവിലെ R സെഷനിൽ ലഭ്യമാക്കും. (ഇത് വെറും ഉദാഹരണത്തിന് ആണ്, `pacman::p_load()` ഇതിനകം തന്നെ അത് ചെയ്തിട്ടുണ്ട്)\n" + ], + "metadata": { + "id": "YkKAxOJvGD4C" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Exercise - നിങ്ങളുടെ ഡാറ്റ ശുദ്ധീകരിക്കുകയും സമതുല്യപ്പെടുത്തുകയും ചെയ്യുക\n", + "\n", + "ഈ പ്രോജക്ട് ആരംഭിക്കുന്നതിന് മുമ്പ് ചെയ്യേണ്ട ആദ്യത്തെ ജോലി, മികച്ച ഫലങ്ങൾ നേടാൻ നിങ്ങളുടെ ഡാറ്റ ശുദ്ധീകരിക്കുകയും **സമതുല്യപ്പെടുത്തുകയും** ചെയ്യുക എന്നതാണ്\n", + "\n", + "ഡാറ്റയെ പരിചയപ്പെടാം!🕵️\n" + ], + "metadata": { + "id": "PFkQDlk0GN5O" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Import data\r\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/4-Classification/data/cuisines.csv\")\r\n", + "\r\n", + "# View the first 5 rows\r\n", + "df %>% \r\n", + " slice_head(n = 5)\r\n" + ], + "outputs": [], + "metadata": { + "id": "Qccw7okxGT0S" + } + }, + { + "cell_type": "markdown", + "source": [ + "രസകരം! കാണുന്നത് പോലെ, ആദ്യ കോളം ഒരു തരത്തിലുള്ള `id` കോളമാണ്. ഡാറ്റയെക്കുറിച്ച് കുറച്ച് കൂടുതൽ വിവരങ്ങൾ നേടാം.\n" + ], + "metadata": { + "id": "XrWnlgSrGVmR" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Basic information about the data\r\n", + "df %>%\r\n", + " introduce()\r\n", + "\r\n", + "# Visualize basic information above\r\n", + "df %>% \r\n", + " plot_intro(ggtheme = theme_light())" + ], + "outputs": [], + "metadata": { + "id": "4UcGmxRxGieA" + } + }, + { + "cell_type": "markdown", + "source": [ + "From the output, we can immediately see that we have `2448` rows and `385` columns and `0` missing values. We also have 1 discrete column, *cuisine*.\n", + "\n", + "## Exercise - learning about cuisines\n", + "\n", + "ഇപ്പോൾ ജോലി കൂടുതൽ രസകരമാകാൻ തുടങ്ങുന്നു. ഓരോ ക്യൂസിനിയുടെയും ഡാറ്റയുടെ വിതരണത്തെ നാം കണ്ടെത്താം.\n" + ], + "metadata": { + "id": "AaPubl__GmH5" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Count observations per cuisine\r\n", + "df %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(n)\r\n", + "\r\n", + "# Plot the distribution\r\n", + "theme_set(theme_light())\r\n", + "df %>% \r\n", + " count(cuisine) %>% \r\n", + " ggplot(mapping = aes(x = n, y = reorder(cuisine, -n))) +\r\n", + " geom_col(fill = \"midnightblue\", alpha = 0.7) +\r\n", + " ylab(\"cuisine\")" + ], + "outputs": [], + "metadata": { + "id": "FRsBVy5eGrrv" + } + }, + { + "cell_type": "markdown", + "source": [ + "സമാപ്തമായ ഒരു സംഖ്യയിലുള്ള വിഭവശൈലികൾ ഉണ്ട്, പക്ഷേ ഡാറ്റയുടെ വിതരണം അസമതുല്യമാണ്. നിങ്ങൾ അത് ശരിയാക്കാം! അതിന് മുമ്പ്, കുറച്ച് കൂടുതൽ അന്വേഷിക്കാം.\n", + "\n", + "അടുത്തതായി, ഓരോ വിഭവശൈലിയും അതിന്റെ വ്യക്തിഗത ടിബിളിലേക്ക് നിയോഗിച്ച്, ഓരോ വിഭവശൈലിക്കും ലഭ്യമായ ഡാറ്റ എത്രയാണെന്ന് (പങ്കുകൾ, കോളങ്ങൾ) കണ്ടെത്താം.\n", + "\n", + "> ഒരു [ടിബിള്](https://tibble.tidyverse.org/) ഒരു ആധുനിക ഡാറ്റാ ഫ്രെയിം ആണ്.\n", + "\n", + "

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

Artwork by @allison_horst
\n" + ], + "metadata": { + "id": "vVvyDb1kG2in" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Create individual tibble for the cuisines\r\n", + "thai_df <- df %>% \r\n", + " filter(cuisine == \"thai\")\r\n", + "japanese_df <- df %>% \r\n", + " filter(cuisine == \"japanese\")\r\n", + "chinese_df <- df %>% \r\n", + " filter(cuisine == \"chinese\")\r\n", + "indian_df <- df %>% \r\n", + " filter(cuisine == \"indian\")\r\n", + "korean_df <- df %>% \r\n", + " filter(cuisine == \"korean\")\r\n", + "\r\n", + "\r\n", + "# Find out how much data is available per cuisine\r\n", + "cat(\" thai df:\", dim(thai_df), \"\\n\",\r\n", + " \"japanese df:\", dim(japanese_df), \"\\n\",\r\n", + " \"chinese_df:\", dim(chinese_df), \"\\n\",\r\n", + " \"indian_df:\", dim(indian_df), \"\\n\",\r\n", + " \"korean_df:\", dim(korean_df))" + ], + "outputs": [], + "metadata": { + "id": "0TvXUxD3G8Bk" + } + }, + { + "cell_type": "markdown", + "source": [ + "Perfect!😋\n", + "\n", + "## **അഭ്യാസം - dplyr ഉപയോഗിച്ച് വിഭവശൈലികൾ അനുസരിച്ച് പ്രധാന ഘടകങ്ങൾ കണ്ടെത്തൽ**\n", + "\n", + "ഇപ്പോൾ നിങ്ങൾക്ക് ഡാറ്റയിൽ കൂടുതൽ ആഴത്തിൽ കയറി ഓരോ വിഭവശൈലിക്കും സാധാരണമായ ഘടകങ്ങൾ എന്തൊക്കെയാണെന്ന് പഠിക്കാം. വിഭവശൈലികൾ തമ്മിൽ ആശയക്കുഴപ്പം സൃഷ്ടിക്കുന്ന ആവർത്തിക്കുന്ന ഡാറ്റ നീക്കം ചെയ്യേണ്ടതുണ്ട്, അതിനാൽ ഈ പ്രശ്നത്തെക്കുറിച്ച് പഠിക്കാം.\n", + "\n", + "R-ൽ ഒരു ഘടക ഡാറ്റാഫ്രെയിം തിരികെ നൽകുന്ന `create_ingredient()` എന്ന ഫംഗ്ഷൻ സൃഷ്ടിക്കുക. ഈ ഫംഗ്ഷൻ സഹായമില്ലാത്ത ഒരു കോളം ഒഴിവാക്കി ഘടകങ്ങളെ അവയുടെ എണ്ണത്തിന്റെ അടിസ്ഥാനത്തിൽ ക്രമീകരിച്ച് തുടങ്ങും.\n", + "\n", + "R-ൽ ഒരു ഫംഗ്ഷന്റെ അടിസ്ഥാന ഘടന:\n", + "\n", + "`myFunction <- function(arglist){`\n", + "\n", + "**`...`**\n", + "\n", + "**`return`**`(value)`\n", + "\n", + "`}`\n", + "\n", + "R ഫംഗ്ഷനുകളുടെ ഒരു ക്രമീകരിച്ച പരിചയം [ഇവിടെ](https://skirmer.github.io/presentations/functions_with_r.html#1) കാണാം.\n", + "\n", + "നേരെ തുടങ്ങാം! നാം മുമ്പത്തെ പാഠങ്ങളിൽ പഠിച്ച [dplyr ക്രിയാപദങ്ങൾ](https://dplyr.tidyverse.org/) ഉപയോഗിക്കും. ഒരു സംക്ഷേപമായി:\n", + "\n", + "- `dplyr::select()`: നിങ്ങൾക്ക് ഏത് **കോളങ്ങൾ** സൂക്ഷിക്കാനോ ഒഴിവാക്കാനോ സഹായിക്കുന്നു.\n", + "\n", + "- `dplyr::pivot_longer()`: ഡാറ്റ \"നീളമാക്കാൻ\" സഹായിക്കുന്നു, വരികളുടെ എണ്ണം വർദ്ധിപ്പിച്ച് കോളങ്ങളുടെ എണ്ണം കുറയ്ക്കുന്നു.\n", + "\n", + "- `dplyr::group_by()` and `dplyr::summarise()`: വ്യത്യസ്ത ഗ്രൂപ്പുകൾക്കായി സംഗ്രഹ സ്ഥിതിവിവരങ്ങൾ കണ്ടെത്താനും അവ ഒരു നല്ല പട്ടികയിലാക്കാനും സഹായിക്കുന്നു.\n", + "\n", + "- `dplyr::filter()`: നിങ്ങളുടെ നിബന്ധനകൾ പാലിക്കുന്ന വരികൾ മാത്രം ഉൾക്കൊള്ളുന്ന ഡാറ്റയുടെ ഉപസമൂഹം സൃഷ്ടിക്കുന്നു.\n", + "\n", + "- `dplyr::mutate()`: കോളങ്ങൾ സൃഷ്ടിക്കാനും മാറ്റാനും സഹായിക്കുന്നു.\n", + "\n", + "Allison Horst ഒരുക്കിയ ഈ [*കലാപരമായ* learnr ട്യൂട്ടോറിയൽ](https://allisonhorst.shinyapps.io/dplyr-learnr/#section-welcome) നോക്കൂ, dplyr-ൽ ചില ഉപകാരപ്രദമായ ഡാറ്റ കൈകാര്യം ചെയ്യൽ ഫംഗ്ഷനുകൾ പരിചയപ്പെടുത്തുന്നു *(Tidyverse-ന്റെ ഭാഗം)*\n" + ], + "metadata": { + "id": "K3RF5bSCHC76" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Creates a functions that returns the top ingredients by class\r\n", + "\r\n", + "create_ingredient <- function(df){\r\n", + " \r\n", + " # Drop the id column which is the first colum\r\n", + " ingredient_df = df %>% select(-1) %>% \r\n", + " # Transpose data to a long format\r\n", + " pivot_longer(!cuisine, names_to = \"ingredients\", values_to = \"count\") %>% \r\n", + " # Find the top most ingredients for a particular cuisine\r\n", + " group_by(ingredients) %>% \r\n", + " summarise(n_instances = sum(count)) %>% \r\n", + " filter(n_instances != 0) %>% \r\n", + " # Arrange by descending order\r\n", + " arrange(desc(n_instances)) %>% \r\n", + " mutate(ingredients = factor(ingredients) %>% fct_inorder())\r\n", + " \r\n", + " \r\n", + " return(ingredient_df)\r\n", + "} # End of function" + ], + "outputs": [], + "metadata": { + "id": "uB_0JR82HTPa" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഇപ്പോൾ നാം ഈ ഫംഗ്ഷൻ ഉപയോഗിച്ച് ഓരോ ക്യൂസിനിയുടെയും ഏറ്റവും ജനപ്രിയമായ പത്ത് ഘടകങ്ങളുടെ ഒരു ആശയം നേടാം. `thai_df` ഉപയോഗിച്ച് ഇത് പരീക്ഷിക്കാം.\n" + ], + "metadata": { + "id": "h9794WF8HWmc" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Call create_ingredient and display popular ingredients\r\n", + "thai_ingredient_df <- create_ingredient(df = thai_df)\r\n", + "\r\n", + "thai_ingredient_df %>% \r\n", + " slice_head(n = 10)" + ], + "outputs": [], + "metadata": { + "id": "agQ-1HrcHaEA" + } + }, + { + "cell_type": "markdown", + "source": [ + "മുൻവകുപ്പിൽ, നാം `geom_col()` ഉപയോഗിച്ചു, ഇനി `geom_bar` ഉപയോഗിച്ച് ബാർ ചാർട്ടുകൾ എങ്ങനെ സൃഷ്ടിക്കാമെന്ന് നോക്കാം. കൂടുതൽ വായനയ്ക്കായി `?geom_bar` ഉപയോഗിക്കുക.\n" + ], + "metadata": { + "id": "kHu9ffGjHdcX" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make a bar chart for popular thai cuisines\r\n", + "thai_ingredient_df %>% \r\n", + " slice_head(n = 10) %>% \r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"steelblue\") +\r\n", + " xlab(\"\") + ylab(\"\")" + ], + "outputs": [], + "metadata": { + "id": "fb3Bx_3DHj6e" + } + }, + { + "cell_type": "markdown", + "source": [ + "ജാപ്പനീസ് ഡാറ്റയ്ക്കും അതേപോലെ ചെയ്യാം\n" + ], + "metadata": { + "id": "RHP_xgdkHnvM" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Get popular ingredients for Japanese cuisines and make bar chart\r\n", + "create_ingredient(df = japanese_df) %>% \r\n", + " slice_head(n = 10) %>%\r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"darkorange\", alpha = 0.8) +\r\n", + " xlab(\"\") + ylab(\"\")\r\n" + ], + "outputs": [], + "metadata": { + "id": "019v8F0XHrRU" + } + }, + { + "cell_type": "markdown", + "source": [ + "ചൈനീസ് ഭക്ഷണശൈലികൾ എന്താണ്?\n" + ], + "metadata": { + "id": "iIGM7vO8Hu3v" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Get popular ingredients for Chinese cuisines and make bar chart\r\n", + "create_ingredient(df = chinese_df) %>% \r\n", + " slice_head(n = 10) %>%\r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"cyan4\", alpha = 0.8) +\r\n", + " xlab(\"\") + ylab(\"\")" + ], + "outputs": [], + "metadata": { + "id": "lHd9_gd2HyzU" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഇന്ത്യൻ ഭക്ഷണശൈലികൾക്ക് ഒരു നോക്കാം 🌶️.\n" + ], + "metadata": { + "id": "ir8qyQbNH1c7" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Get popular ingredients for Indian cuisines and make bar chart\r\n", + "create_ingredient(df = indian_df) %>% \r\n", + " slice_head(n = 10) %>%\r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"#041E42FF\", alpha = 0.8) +\r\n", + " xlab(\"\") + ylab(\"\")" + ], + "outputs": [], + "metadata": { + "id": "ApukQtKjH5FO" + } + }, + { + "cell_type": "markdown", + "source": [ + "അവസാനമായി, കൊറിയൻ ഘടകങ്ങൾ പ്ലോട്ട് ചെയ്യുക.\n" + ], + "metadata": { + "id": "qv30cwY1H-FM" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Get popular ingredients for Korean cuisines and make bar chart\r\n", + "create_ingredient(df = korean_df) %>% \r\n", + " slice_head(n = 10) %>%\r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"#852419FF\", alpha = 0.8) +\r\n", + " xlab(\"\") + ylab(\"\")" + ], + "outputs": [], + "metadata": { + "id": "lumgk9cHIBie" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഡാറ്റാ ദൃശ്യീകരണങ്ങളിൽ നിന്ന്, വ്യത്യസ്ത പാചകശൈലികൾ തമ്മിൽ ആശയക്കുഴപ്പം സൃഷ്ടിക്കുന്ന ഏറ്റവും സാധാരണമായ ഘടകങ്ങൾ `dplyr::select()` ഉപയോഗിച്ച് ഇനി ഒഴിവാക്കാം.\n", + "\n", + "എല്ലാവർക്കും അരി, വെളുത്തുള്ളി, ഇഞ്ചി ഇഷ്ടമാണ്!\n" + ], + "metadata": { + "id": "iO4veMXuIEta" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Drop id column, rice, garlic and ginger from our original data set\r\n", + "df_select <- df %>% \r\n", + " select(-c(1, rice, garlic, ginger))\r\n", + "\r\n", + "# Display new data set\r\n", + "df_select %>% \r\n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "iHJPiG6rIUcK" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Preprocessing data using recipes 👩‍🍳👨‍🍳 - Dealing with imbalanced data ⚖️\n", + "\n", + "

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

Artwork by @allison_horst
\n", + "\n", + "ഈ പാഠം വിഭവശൈലികളെക്കുറിച്ചാണ് എന്നതിനാൽ, `recipes` നെ സാന്ദർഭ്യത്തിൽ വെക്കേണ്ടതുണ്ട്.\n", + "\n", + "Tidymodels മറ്റൊരു മനോഹരമായ പാക്കേജ് നൽകുന്നു: `recipes` - ഡാറ്റ പ്രീപ്രോസസ്സിംഗിനുള്ള ഒരു പാക്കേജ്.\n" + ], + "metadata": { + "id": "kkFd-JxdIaL6" + } + }, + { + "cell_type": "markdown", + "source": [ + "നമ്മുടെ ഭക്ഷണശൈലികളുടെ വിതരണം വീണ്ടും നോക്കാം.\n" + ], + "metadata": { + "id": "6l2ubtTPJAhY" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Distribution of cuisines\r\n", + "old_label_count <- df_select %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(desc(n))\r\n", + "\r\n", + "old_label_count" + ], + "outputs": [], + "metadata": { + "id": "1e-E9cb7JDVi" + } + }, + { + "cell_type": "markdown", + "source": [ + "നിങ്ങൾക്ക് കാണാമല്ലോ, വിഭവങ്ങളുടെ എണ്ണം വളരെ അസമമായ വിതരണമാണ് ഉള്ളത്. കൊറിയൻ വിഭവങ്ങൾ തായ് വിഭവങ്ങളേക്കാൾ ഏകദേശം 3 മടങ്ങ് കൂടുതലാണ്. അസമത്വമുള്ള ഡാറ്റ മോഡൽ പ്രകടനത്തിൽ നെഗറ്റീവ് ഫലങ്ങൾ ഉണ്ടാക്കാറുണ്ട്. ഒരു ബൈനറി ക്ലാസിഫിക്കേഷൻ പരിഗണിക്കൂ. നിങ്ങളുടെ ഡാറ്റയുടെ ഭൂരിഭാഗവും ഒരു ക്ലാസ്സിൽ ആണെങ്കിൽ, ഒരു ML മോഡൽ ആ ക്ലാസ്സ് കൂടുതൽ പ്രവചിക്കും, കാരണം അതിനുള്ള ഡാറ്റ കൂടുതലാണ്. ഡാറ്റ ബാലൻസ് ചെയ്യുന്നത് ഏതെങ്കിലും വക്രമായ ഡാറ്റ എടുത്ത് ഈ അസമത്വം നീക്കം ചെയ്യാൻ സഹായിക്കുന്നു. നിരീക്ഷണങ്ങളുടെ എണ്ണം സമമാണ് എങ്കിൽ പല മോഡലുകളും മികച്ച പ്രകടനം കാണിക്കുന്നു, അതിനാൽ അസമത്വമുള്ള ഡാറ്റയുമായി അവർ ബുദ്ധിമുട്ടുന്നു.\n", + "\n", + "അസമത്വമുള്ള ഡാറ്റ സെറ്റുകളെ കൈകാര്യം ചെയ്യാനുള്ള പ്രധാനമായ രണ്ട് മാർഗ്ഗങ്ങൾ ഉണ്ട്:\n", + "\n", + "- ന്യൂനപക്ഷ ക്ലാസ്സിൽ നിരീക്ഷണങ്ങൾ ചേർക്കൽ: `Over-sampling` ഉദാഹരണത്തിന് SMOTE ആൽഗോരിതം ഉപയോഗിച്ച്\n", + "\n", + "- ഭൂരിപക്ഷ ക്ലാസ്സിൽ നിന്നുള്ള നിരീക്ഷണങ്ങൾ നീക്കം ചെയ്യൽ: `Under-sampling`\n", + "\n", + "ഇപ്പോൾ `recipe` ഉപയോഗിച്ച് അസമത്വമുള്ള ഡാറ്റ സെറ്റുകളെ എങ്ങനെ കൈകാര്യം ചെയ്യാമെന്ന് കാണിക്കാം. ഒരു recipe ഒരു ബ്ലൂപ്രിന്റ് പോലെ കരുതാം, അത് ഒരു ഡാറ്റ സെറ്റിൽ ഏത് ഘട്ടങ്ങൾ പ്രയോഗിക്കണം എന്ന് വിവരിക്കുന്നു, ഡാറ്റ വിശകലനത്തിന് തയ്യാറാക്കാൻ.\n" + ], + "metadata": { + "id": "soAw6826JKx9" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load themis package for dealing with imbalanced data\r\n", + "library(themis)\r\n", + "\r\n", + "# Create a recipe for preprocessing data\r\n", + "cuisines_recipe <- recipe(cuisine ~ ., data = df_select) %>% \r\n", + " step_smote(cuisine)\r\n", + "\r\n", + "cuisines_recipe" + ], + "outputs": [], + "metadata": { + "id": "HS41brUIJVJy" + } + }, + { + "cell_type": "markdown", + "source": [ + "നമ്മുടെ പ്രീപ്രോസസ്സിംഗ് ഘട്ടങ്ങൾ വിഭജിക്കാം.\n", + "\n", + "- ഒരു ഫോർമുലയോടുകൂടിയ `recipe()` കോളിന് `df_select` ഡാറ്റയെ റഫറൻസായി ഉപയോഗിച്ച് വേരിയബിളുകളുടെ *പങ്കുകൾ* റെസിപ്പിക്ക് അറിയിക്കുന്നു. ഉദാഹരണത്തിന്, `cuisine` കോളത്തിന് `outcome` പങ്ക് നൽകപ്പെട്ടിട്ടുള്ളപ്പോൾ ബാക്കി കോളങ്ങൾക്ക് `predictor` പങ്ക് നൽകപ്പെട്ടിരിക്കുന്നു.\n", + "\n", + "- [`step_smote(cuisine)`](https://themis.tidymodels.org/reference/step_smote.html) ഒരു റെസിപ്പി ഘട്ടത്തിന്റെ *സ്പെസിഫിക്കേഷൻ* സൃഷ്ടിക്കുന്നു, ഇത് ന്യൂനപക്ഷ ക്ലാസ്സിന്റെ പുതിയ ഉദാഹരണങ്ങൾ സിന്തറ്റിക്കായി ഈ കേസുകളുടെ അടുത്തുള്ള അയൽക്കാരെ ഉപയോഗിച്ച് സൃഷ്ടിക്കുന്നു.\n", + "\n", + "ഇപ്പോൾ, നമുക്ക് പ്രീപ്രോസസ്സുചെയ്ത ഡാറ്റ കാണണമെങ്കിൽ, നമുക്ക് [**`prep()`**](https://recipes.tidymodels.org/reference/prep.html)യും [**`bake()`**](https://recipes.tidymodels.org/reference/bake.html)യും നമ്മുടെ റെസിപ്പിയിൽ ചെയ്യേണ്ടതുണ്ട്.\n", + "\n", + "`prep()`: പരിശീലന സെറ്റിൽ നിന്നുള്ള ആവശ്യമായ പാരാമീറ്ററുകൾ കണക്കാക്കുന്നു, പിന്നീട് മറ്റ് ഡാറ്റാ സെറ്റുകളിൽ പ്രയോഗിക്കാവുന്നതാണ്.\n", + "\n", + "`bake()`: പ്രീപ് ചെയ്ത റെസിപ്പി എടുത്ത് പ്രവർത്തനങ്ങൾ ഏതെങ്കിലും ഡാറ്റാ സെറ്റിൽ പ്രയോഗിക്കുന്നു.\n" + ], + "metadata": { + "id": "Yb-7t7XcJaC8" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Prep and bake the recipe\r\n", + "preprocessed_df <- cuisines_recipe %>% \r\n", + " prep() %>% \r\n", + " bake(new_data = NULL) %>% \r\n", + " relocate(cuisine)\r\n", + "\r\n", + "# Display data\r\n", + "preprocessed_df %>% \r\n", + " slice_head(n = 5)\r\n", + "\r\n", + "# Quick summary stats\r\n", + "preprocessed_df %>% \r\n", + " introduce()" + ], + "outputs": [], + "metadata": { + "id": "9QhSgdpxJl44" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഇപ്പോൾ നമുക്ക് നമ്മുടെ ഭക്ഷണശൈലികളുടെ വിതരണവും അവയെ അസമതുല്യ ഡാറ്റയുമായി താരതമ്യം ചെയ്യലും പരിശോധിക്കാം.\n" + ], + "metadata": { + "id": "dmidELh_LdV7" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Distribution of cuisines\r\n", + "new_label_count <- preprocessed_df %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(desc(n))\r\n", + "\r\n", + "list(new_label_count = new_label_count,\r\n", + " old_label_count = old_label_count)" + ], + "outputs": [], + "metadata": { + "id": "aSh23klBLwDz" + } + }, + { + "cell_type": "markdown", + "source": [ + "യം! ഡാറ്റ സുഖകരവും ശുദ്ധവുമാണ്, സമതുലിതവും വളരെ രുചികരവുമാണ് 😋!\n", + "\n", + "> സാധാരണയായി, ഒരു റെസിപ്പി മോഡലിംഗിനായി പ്രീപ്രോസസറായാണ് ഉപയോഗിക്കുന്നത്, അതായത് മോഡലിംഗിനായി ഡാറ്റ സെറ്റിൽ ഏത് ഘട്ടങ്ങൾ പ്രയോഗിക്കണമെന്ന് നിർവചിക്കുന്നു. അത്തരത്തിൽ, ഒരു `workflow()` സാധാരണയായി ഉപയോഗിക്കുന്നു (മുൻപത്തെ പാഠങ്ങളിൽ നാം ഇതിനകം കണ്ടതുപോലെ) റെസിപ്പി മാനുവലായി കണക്കാക്കുന്നതിന് പകരം\n", + ">\n", + "> അതിനാൽ, tidymodels ഉപയോഗിക്കുമ്പോൾ സാധാരണയായി **`prep()`** ഉം **`bake()`** ഉം റെസിപ്പികൾക്ക് ആവശ്യമില്ല, പക്ഷേ നമ്മുടെ കേസിൽ പോലെ റെസിപ്പികൾ നിങ്ങൾ പ്രതീക്ഷിക്കുന്നതുപോലെ പ്രവർത്തിക്കുന്നുണ്ടെന്ന് സ്ഥിരീകരിക്കാൻ ഇവ ഉപകാരപ്രദമായ ഫംഗ്ഷനുകളാണ്.\n", + ">\n", + "> നിങ്ങൾ **`bake()`** ചെയ്തപ്പോൾ പ്രീപ്രോപ്പുചെയ്ത റെസിപ്പി **`new_data = NULL`** ഉപയോഗിച്ച്, നിങ്ങൾ റെസിപ്പി നിർവചിക്കുമ്പോൾ നൽകിയ ഡാറ്റ തന്നെ തിരികെ ലഭിക്കും, എന്നാൽ പ്രീപ്രോസസിംഗ് ഘട്ടങ്ങൾ കടന്നുപോയിരിക്കും.\n", + "\n", + "ഇപ്പോൾ ഈ ഡാറ്റയുടെ ഒരു പകർപ്പ് ഭാവിയിലെ പാഠങ്ങളിൽ ഉപയോഗിക്കാൻ സംരക്ഷിക്കാം:\n" + ], + "metadata": { + "id": "HEu80HZ8L7ae" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Save preprocessed data\r\n", + "write_csv(preprocessed_df, \"../../../data/cleaned_cuisines_R.csv\")" + ], + "outputs": [], + "metadata": { + "id": "cBmCbIgrMOI6" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഈ പുതിയ CSV ഇപ്പോൾ റൂട്ട് ഡാറ്റ ഫോൾഡറിൽ കണ്ടെത്താം.\n", + "\n", + "**🚀ചലഞ്ച്**\n", + "\n", + "ഈ പാഠ്യപദ്ധതിയിൽ പല രസകരമായ ഡാറ്റാസെറ്റുകളും ഉൾക്കൊള്ളുന്നു. `data` ഫോൾഡറുകൾ പരിശോധിച്ച് ബൈനറി അല്ലെങ്കിൽ മൾട്ടി-ക്ലാസ് ക്ലാസിഫിക്കേഷനായി അനുയോജ്യമായ ഡാറ്റാസെറ്റുകൾ ഉണ്ടോ എന്ന് നോക്കൂ? ഈ ഡാറ്റാസെറ്റിൽ നിന്നു നിങ്ങൾ ഏത് ചോദ്യങ്ങൾ ചോദിക്കുമായിരുന്നു?\n", + "\n", + "## [**പോസ്റ്റ്-ലെക്ചർ ക്വിസ്**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/20/)\n", + "\n", + "## **പരിശോധന & സ്വയം പഠനം**\n", + "\n", + "- [package themis](https://github.com/tidymodels/themis) പരിശോധിക്കുക. അസമതുല്യമായ ഡാറ്റ കൈകാര്യം ചെയ്യാൻ മറ്റേതെന്തെല്ലാം സാങ്കേതിക വിദ്യകൾ ഉപയോഗിക്കാമെന്ന് നോക്കൂ?\n", + "\n", + "- ടിഡി മോഡലുകൾ [റഫറൻസ് വെബ്സൈറ്റ്](https://www.tidymodels.org/start/).\n", + "\n", + "- H. Wickham and G. Grolemund, [*R for Data Science: Visualize, Model, Transform, Tidy, and Import Data*](https://r4ds.had.co.nz/).\n", + "\n", + "#### നന്ദി അറിയിക്കുന്നു:\n", + "\n", + "[`Allison Horst`](https://twitter.com/allison_horst/) R-നെ കൂടുതൽ സ്വാഗതം ചെയ്യുന്നതും ആകർഷകവുമാക്കുന്ന അത്ഭുതകരമായ ചിത്രങ്ങൾ സൃഷ്ടിച്ചതിന്. അവളുടെ കൂടുതൽ ചിത്രങ്ങൾ അവളുടെ [ഗാലറി](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM)യിൽ കാണാം.\n", + "\n", + "[Cassie Breviu](https://www.twitter.com/cassieview) and [Jen Looper](https://www.twitter.com/jenlooper) ഈ മോഡ്യൂളിന്റെ ഒറിജിനൽ പൈതൺ പതിപ്പ് സൃഷ്ടിച്ചതിന് ♥️\n", + "\n", + "

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

Artwork by @allison_horst
\n" + ], + "metadata": { + "id": "WQs5621pMGwf" + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/4-Classification/1-Introduction/solution/notebook.ipynb b/translations/ml/4-Classification/1-Introduction/solution/notebook.ipynb new file mode 100644 index 000000000..5077557d7 --- /dev/null +++ b/translations/ml/4-Classification/1-Introduction/solution/notebook.ipynb @@ -0,0 +1,677 @@ +{ + "cells": [ + { + "source": [ + "# രുചികരമായ ഏഷ്യൻ, ഇന്ത്യൻ വിഭവങ്ങൾ \n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "SMOTE സജ്ജമാക്കാൻ Imblearn ഇൻസ്റ്റാൾ ചെയ്യുക. ഇത് ക്ലാസിഫിക്കേഷൻ നടത്തുമ്പോൾ അസമതുല്യമായ ഡാറ്റ കൈകാര്യം ചെയ്യാൻ സഹായിക്കുന്ന Scikit-learn പാക്കേജാണ്. (https://imbalanced-learn.org/stable/)\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: imblearn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imblearn) (0.8.0)\n", + "Requirement already satisfied: numpy>=1.13.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imbalanced-learn->imblearn) (1.19.2)\n", + "Requirement already satisfied: scipy>=0.19.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imbalanced-learn->imblearn) (1.4.1)\n", + "Requirement already satisfied: scikit-learn>=0.24 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imbalanced-learn->imblearn) (0.24.2)\n", + "Requirement already satisfied: joblib>=0.11 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imbalanced-learn->imblearn) (0.16.0)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from scikit-learn>=0.24->imbalanced-learn->imblearn) (2.1.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib as mpl\n", + "import numpy as np\n", + "from imblearn.over_sampling import SMOTE" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('../../data/cuisines.csv')" + ] + }, + { + "source": [ + "ഈ ഡാറ്റാസെറ്റിൽ നൽകിയിരിക്കുന്ന വിവിധ പാചകശൈലികളിൽ ഉള്ള എല്ലാ തരത്തിലുള്ള ഘടകങ്ങളെ സൂചിപ്പിക്കുന്ന 385 കോളങ്ങൾ ഉൾപ്പെടുന്നു.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 65 indian 0 0 0 0 0 \n", + "1 66 indian 1 0 0 0 0 \n", + "2 67 indian 0 0 0 0 0 \n", + "3 68 indian 0 0 0 0 0 \n", + "4 69 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 385 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
065indian00000000...0000000000
166indian10000000...0000000000
267indian00000000...0000000000
368indian00000000...0000000000
469indian00000000...0000000010
\n

5 rows × 385 columns

\n
" + }, + "metadata": {}, + "execution_count": 4 + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\nRangeIndex: 2448 entries, 0 to 2447\nColumns: 385 entries, Unnamed: 0 to zucchini\ndtypes: int64(384), object(1)\nmemory usage: 7.2+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "korean 799\n", + "indian 598\n", + "chinese 442\n", + "japanese 320\n", + "thai 289\n", + "Name: cuisine, dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ], + "source": [ + "df.cuisine.value_counts()" + ] + }, + { + "source": [ + "ബാർ ഗ്രാഫിൽ ഭക്ഷണശൈലികൾ കാണിക്കുക\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 7 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "df.cuisine.value_counts().plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "thai df: (289, 385)\njapanese df: (320, 385)\nchinese df: (442, 385)\nindian df: (598, 385)\nkorean df: (799, 385)\n" + ] + } + ], + "source": [ + "\n", + "thai_df = df[(df.cuisine == \"thai\")]\n", + "japanese_df = df[(df.cuisine == \"japanese\")]\n", + "chinese_df = df[(df.cuisine == \"chinese\")]\n", + "indian_df = df[(df.cuisine == \"indian\")]\n", + "korean_df = df[(df.cuisine == \"korean\")]\n", + "\n", + "print(f'thai df: {thai_df.shape}')\n", + "print(f'japanese df: {japanese_df.shape}')\n", + "print(f'chinese df: {chinese_df.shape}')\n", + "print(f'indian df: {indian_df.shape}')\n", + "print(f'korean df: {korean_df.shape}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ക്ലാസ്സുപ്രകാരം മുകളിൽ വരുന്ന ഘടകങ്ങൾ എന്തെല്ലാം ആണ്?\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def create_ingredient_df(df):\n", + " # transpose df, drop cuisine and unnamed rows, sum the row to get total for ingredient and add value header to new df\n", + " ingredient_df = df.T.drop(['cuisine','Unnamed: 0']).sum(axis=1).to_frame('value')\n", + " # drop ingredients that have a 0 sum\n", + " ingredient_df = ingredient_df[(ingredient_df.T != 0).any()]\n", + " # sort df\n", + " ingredient_df = ingredient_df.sort_values(by='value', ascending=False, inplace=False)\n", + " return ingredient_df\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 10 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaYAAAD4CAYAAACngkIwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAeAklEQVR4nO3de7RVdb338fcHRFAhTPBCeNnogzckQJcdb11ES01QSxGLUtNHjl1EM2twhmbUo+PY5dhN07DHII+nuKSPFKe0FPEasTcCG1TUEk8QCmjuJIRg+33+WL+ti82+AWvvORfr8xpjjT3Xb/7mnN85x2J/+M0595qKCMzMzPKiW9YFmJmZlXIwmZlZrjiYzMwsVxxMZmaWKw4mMzPLlV2yLmBn0L9//6ipqcm6DDOzitG/f3/uv//++yPi9ObzHExlUFNTQ21tbdZlmJlVFEn9W2r3qTwzM8sVB5OZmeWKg8nMzHLF15jMzLrApk2bWLFiBRs2bMi6lC7Xq1cv9t9/f3r06NGh/g6mMqhf2UDNxNlZl2G2Q5bfdGbWJezUVqxYQZ8+faipqUFS1uV0mYjg1VdfZcWKFQwaNKhDy/hUnplZF9iwYQP9+vWrqlACkES/fv22aaRYEcEkaYqk81pof4+kme0su7y1WxLNzLpStYVSk23d74o+lRcRfwW2CiwzM6tcuQwmSRcC1wABLAYagQ9IuhrYD/hKRMyUVAP8OiKOktQd+CZwOvAWcEdE/LBknbsB9wD3RMQdkj4FTAB2BeYBn4uIRknrgO8Do4A3gbMj4pWu2G8zqx7lvi5d7muEvXv3Zt26dWVdZ0fl7lSepCHAdcDIiBgGXJlmDQBOohgYN7Ww6HigBhgeEe8F7i6Z1xv4FfDzFEpHAGOBEyNiOMXgG5f67gH8IW37EeCyVuocL6lWUm3j+obt3l8zM9tS7oIJGAnMiIi1ABHxWmr/fxHxVkQ8DezbwnKnAj+OiM3NlgO4D/hpRPwsvT8FOAaYL2lhen9wmvdP4Ndpuo5i2G0lIiZHRCEiCt1377sdu2lm1nUmTpzIrbfe+vb7SZMmccMNN3DKKadw9NFHM3ToUO67776tlnv44YcZNWrU2++/8IUvMGXKFADq6ur44Ac/yDHHHMNpp53GqlWrylJrHoOpNRtLprf1CuLjwOl65wqcgKkRMTy9DouISWnepnjnefON5PR0p5nZthg7dizTp09/+/306dO56KKLuPfee1mwYAFz5szhS1/6Eu/8+mvbpk2buOKKK5g5cyZ1dXVccsklXHvttWWpNY+/dB8C7pV0c0S8KmmvDi73O+BfJc2JiM2S9ioZNV2fXrcCnwMeBO6T9N2IWJ220SciXir3zpiZ5cGIESNYvXo1f/3rX1mzZg3vfve72W+//fjiF7/II488Qrdu3Vi5ciWvvPIK++23X7vrW7ZsGUuWLOHDH/4wAI2NjQwYMKAsteYumCJiqaQbgbmSGoGnOrjoT4BDgcWSNgF3ALeUzL8SuFPStyLiK5KuAx6Q1A3YBHwecDCZ2U5rzJgxzJw5k5dffpmxY8dy9913s2bNGurq6ujRowc1NTVb/b3RLrvswltvvfX2+6b5EcGQIUN48skny15n7oIJICKmAlPbmN87/VwOHJWmNwNXp1dp35qSt58paZ8GTGtt3Wl6JtDm30mZmVWKsWPHctlll7F27Vrmzp3L9OnT2WeffejRowdz5szhpZe2/r/5QQcdxNNPP83GjRt58803efDBBznppJM47LDDWLNmDU8++STHH388mzZt4rnnnmPIkCE7XGcug6nSDB3Yl1p/nYuZbYMsvgJqyJAhvPHGGwwcOJABAwYwbtw4Ro8ezdChQykUChx++OFbLXPAAQdw/vnnc9RRRzFo0CBGjBgBwK677srMmTOZMGECDQ0NbN68mauuuqoswaSOXuiy1hUKhfCDAs2sLc888wxHHHFE1mVkpqX9l1QXEYXmfSvprjwzM6sCDiYzM8sVB5OZWRep1ksn27rfDiYzsy7Qq1cvXn311aoLp6bnMfXq1avDy/iuPDOzLrD//vuzYsUK1qxZk3UpXa7pCbYd5WAyM+sCPXr06PATXKudT+WZmVmuOJjMzCxXHExmZpYrvsZUBvUrG8r+NEqzvMriq3SsunjEZGZmuVJ1wSTpvyXtmXUdZmbWsqo6lZeeYDsqIt5qt7OZmWVipx8xSaqRtEzSz4AlQKOk/mnehZIWS1ok6a7UtrekX0qan14nZlm/mVm1qZYR02Dgooj4g6TlAJKGANcBJ0TE2pJHuH8f+G5EPCbpQOB+YKvvqpc0HhgP0P1de3fBLpiZVYdqCaaXIuIPzdpGAjMiYi1ARLyW2k8Fjiye9QPgXZJ6R8S60oUjYjIwGaDngMHV9eVXZmadqFqC6R/b0LcbcFxEbGi3p5mZld1Of42pDQ8BYyT1Ayg5lfcAcEVTJ0nDM6jNzKxqVW0wRcRS4EZgrqRFwM1p1gSgkG6KeBq4PKsazcyqkart2SCdoVAoRG1tbdZlmJlVFEl1EVFo3l61IyYzM8snB5OZmeWKg8nMzHLFwWRmZrniYDIzs1xxMJmZWa44mMzMLFccTGZmlisOJjMzyxUHk5mZ5Uq1fLt4p6pf2UDNxNlZl2GWmeU3nZl1CbYT8YjJzMxyxcFkZma5UjHBJOksSRPLtK5Jkq4px7rMzKy8KuIak6RdImIWMCvD7W/OYttmZtWmy0dMki5MD+FbJOkuSTWSHkptD0o6MPWbIul2SfOAb0m6WNItad5oSfMkPSXp95L2Te2TJN0p6WFJf5Y0oWS710p6TtJjwGEl7YdI+q2kOkmPSjq8pe134SEyM6tqXTpikjQEuA44ISLWpseZTwWmRsRUSZcAPwDOSYvsn/o2Srq4ZFWPAcdFREj638BXgC+leYcDJwN9gGWSbgPeC1wADKe4zwuAutR/MnB5RDwv6V+AHwEjm2+/hX0ZD4wH6P6uvXfksJiZWYmuPpU3EpgREWsBIuI1SccDH0/z72LL0cmMlkKBYmBMkzQA2BV4sWTe7IjYCGyUtBrYF3g/cG9ErAeQNCv97A2cAMyQ1LR8zw5sn4iYTDHU6DlgsB8DbGZWJnm/xvSPVtp/CNwcEbMkfQiYVDJvY8l0I23vYzfg9YgYvo3bNzOzTtLV15geAsZI6geQTuU9QfE0G8A44NEOrKcvsDJNX9SB/o8A50jaTVIfYDRARPwdeFHSmFSPJA3r6M6YmVn5demIKSKWSroRmCupEXgKuAL4qaQvA2uAz3RgVZMonn77G8WwG9TOdhdImgYsAlYD80tmjwNuk3Qd0AP4RepnZmYZUIQvj+yoQqEQtbW1WZdhZlZRJNVFRKF5e8X8ga2ZmVUHB5OZmeWKg8nMzHLFwWRmZrniYDIzs1xxMJmZWa44mMzMLFccTGZmlisOJjMzyxUHk5mZ5Urev128ItSvbKBm4uysyzDL3PKbzsy6BNsJeMRkZma54mAyM7NcyTSYJJ0j6cgO9Jsi6bwW2j8k6ddlrKcg6Qdp+mJJt5Rr3WZm1jFZj5jOAdoNpq4SEbURMSHrOszMqlmbwSTpJkmfL3k/SdI1kr4sab6kxZK+XjL/q5KWSXpM0s8lXZPaD5H0W0l1kh6VdLikE4CzgG9LWpj6XJbWu0jSLyXtXlLOqZJqJT0naVQLte4h6U5Jf5T0lKSz29ivXpJ+Kqk+9T05tXd4BCZpfKqntnF9Q0cWMTOzDmhvxDQNOL/k/fkUnzI7GHgfMBw4RtIHJB0LnAsMA84ASh/+NBm4IiKOAa4BfhQRTwCzgC9HxPCI+BNwT0QcGxHDgGeAS0vWUZO2eSZwu6RezWq9FngoIt4HnEwx8PZoZb8+D0REDAU+AUxtYX1tiojJEVGIiEL33ftuy6JmZtaGNm8Xj4inJO0j6T3A3sDfgKHARyg+Fh2gN8Wg6gPcFxEbgA2SfgUgqTdwAsVHoTetumcrmzxK0g3Anmm995fMmx4RbwHPS/ozcHizZT8CnNU0SgN6AQdSDLjmTgJ+mPbxWUkvAYe2dSzMzKxrdOTvmGYA5wH7URxBHQT8e0T8uLSTpKtaWb4b8HpEDO/AtqYA50TEIkkXAx8qmdf8GfDN3ws4NyKWdWA7ZmaWUx25+WEacAHFcJpBcRRzSRoJIWmgpH2Ax4HR6fpNb2AUQET8HXhR0pjUX5KGpXW/QXGk1aQPsEpSD2BcszrGSOom6RDgYKB5AN0PXKE0LJM0oo19erRp/ZIOpTiycqCZmeVAu8EUEUspBsbKiFgVEQ8A/wU8KakemAn0iYj5FK8ZLQZ+A9QDTXcFjAMulbQIWAo03ZjwC+DL6QaEQ4CvAvMohtyzzUr5H+CPad2Xp1OGpf4P0ANYLGlpet+aHwHdUv3TgIsjYmN7x8LMzDqfIpqfEduBlUm9I2JdupvuEWB8RCwo2wZyqlAoRG1tbdZlmJlVFEl1EVFo3l7u78qbnP5gthcwtRpCyczMyquswRQRnyzn+naUpNOAbzZrfjEiPpZFPWZm1r6d+tvFI+J+trzl3MzMci7rryQyMzPbgoPJzMxyxcFkZma54mAyM7NccTCZmVmuOJjMzCxXHExmZpYrO/XfMXWV+pUN1EycnXUZZhVh+U1nZl2C5ZxHTGZmlisOplZIGi7po1nXYWZWbRxMrRsOOJjMzLpY7oJJ0oWSFktaJOkuSTWSHkptD0o6MPXbV9K9qd8iSSek9qslLUmvq1JbjaRnJN0haamkByTtluY9LKmQpvtLWi5pV+AbwFhJCyWNzeZomJlVn1wFk6QhwHXAyIgYBlwJ/JDiIzTeC9wN/CB1/wEwN/U7Glgq6RjgM8C/AMcBl5U8yXYwcGtEDAFeB85trY6I+CdwPTAtIoZHxLQWah0vqVZSbeP6hq1XYmZm2yVXwQSMBGZExFqAiHgNOJ7iE3MB7gJOKul7W+rXGBENad69EfGPiFgH3AO8P/V/MSIWpuk6oGZHCo2IyRFRiIhC99377siqzMysRN6CqTOVPjq9kXduld/MO8ehV5dWZGZmW8lbMD0EjJHUD0DSXsATwAVp/jjg0TT9IPDZ1K+7pL5p3jmSdpe0B/Cxkv6tWQ4ck6bPK2l/A+izQ3tjZmbbLFfBFBFLgRuBuZIWATcDVwCfkbQY+DTF606knydLqqd4au7I9Cj3KcAfgXnATyLiqXY2+x3gs5KeAvqXtM8BjvTND2ZmXUsRkXUNFa/ngMEx4KLvZV2GWUXwNz9YE0l1EVFo3u6vJCqDoQP7Uut/bGZmZZGrU3lmZmYOJjMzyxUHk5mZ5YqDyczMcsXBZGZmueJgMjOzXHEwmZlZrjiYzMwsVxxMZmaWKw4mMzPLFX8lURnUr2ygZuLsrMswq2j+Dj1r4hGTmZnlSsUHk6RvSDo16zrMzKw8Kv5UXkRc39nbkNQ9Iho7eztmZlZhIyZJX5W0TNJjkn4u6RpJUySdl+Yvl/R1SQsk1Us6PLXvLel3kpZK+omklyT1T/M+JemP6YGAP5bUPbWvk/Qf6YGFx2e202ZmVaZigknSscC5wDDgDGCrh0slayPiaOA24JrU9jXgoYgYAswEDkzrPAIYC5wYEcOBRoqPbwfYA5gXEcMi4rEW6hkvqVZSbeP6hrLso5mZVdapvBOB+yJiA7BB0q9a6XdP+lkHfDxNnwR8DCAifivpb6n9FOAYYL4kgN2A1WleI/DL1oqJiMnAZCg+wXZ7dsjMzLZWScHUURvTz0ba3z8BUyPi31qYt8HXlczMul7FnMoDHgdGS+olqTcwahuXPR9A0keAd6f2B4HzJO2T5u0l6aAy1mxmZtuoYkZMETFf0ixgMfAKUA909OLO14GfS/o08CTwMvBGRKyVdB3wgKRuwCbg88BLZd8BMzPrEEVUzuURSb0jYp2k3YFHgPERsaADy/UEGiNis6TjgdvSzQ5lUSgUora2tlyrMzOrCpLqImKrG9kqZsSUTJZ0JNCL4rWhdkMpORCYnkZF/wQu66wCzcxsx1RUMEXEJ7dzueeBEWUux8zMOkEl3fxgZmZVwMFkZma54mAyM7NccTCZmVmuOJjMzCxXHExmZpYrDiYzM8sVB5OZmeVKRf2BbV7Vr2ygZuLsrMswqzrLbzoz6xKsE3jEZGZmueJgMjOzXKmIYJJ0uaQL0/QUSedt53qGS/poeaszM7NyqohrTBFxe5lWNRwoAP/dfIakXSJic5m2Y2Zm2ymXwZRGR9cAQfHBgH8C1kXEd5r1ux4YDewGPAH8a0SEpIeBecDJwJ7Apen9N4DdJJ0E/DtwBHAIcDDwP5I+A9xGMbw2A1dHxJzO3VszMyuVu1N5koYA1wEjI2IYcGUb3W+JiGMj4iiK4VT6uPVdIuJ9wFXA1yLin8D1wLSIGB4R01K/I4FTI+ITFJ9eGxExFPgEMFVSr1bqHC+pVlJt4/qOPkjXzMzak7tgAkYCMyJiLUBEvNZG35MlzZNUn5YbUjLvnvSzDqhpYx2zIuLNNH0S8J9pu89SfMT6oS0tFBGTI6IQEYXuu/dtZ5fMzKyjcnkqryPSSOZHQCEi/iJpEsUn2zbZmH420vZ+/qNzKjQzs+2RxxHTQ8AYSf0AJO3VSr+mEForqTfQkTv13gD6tDH/UWBc2u6hFB/JvqwjRZuZWXnkLpgiYilwIzBX0iLg5lb6vQ7cASwB7gfmd2D1c4AjJS2UNLaF+T8CuqVTg9OAiyNiYwv9zMyskygisq6h4hUKhaitrc26DDOziiKpLiIKzdtzN2IyM7Pq5mAyM7NccTCZmVmuOJjMzCxXHExmZpYrDiYzM8sVB5OZmeWKg8nMzHLFwWRmZrniYDIzs1yp2G8Xz5P6lQ3UTJyddRlm1omW33Rm1iVUDY+YzMwsVxxMZmaWKw4mMzPLlVwEk6QLJS2WtEjSXZJGp0emPyXp95L2ldRN0vOS9k7LdJP0gqS90+uXkuan14mpzyRJd0p6WNKfJU1I7TWSnpF0h6Slkh6QtFuad4ik30qqk/SopMOzOzJmZtUn82CSNAS4DhgZEcOAK4HHgOMiYgTwC+ArEfEW8J+kJ8wCpwKLImIN8H3guxFxLHAu8JOSTRwOnAa8D/iapB6pfTBwa0QMAV5PywFMBq6IiGOAayg+PLClusdLqpVU27i+YYePg5mZFeXhrryRwIyIWAsQEa9JGgpMkzQA2BV4MfW9E7gP+B5wCfDT1H4qxSfTNq3zXelx6wCz01NoN0paDeyb2l+MiIVpug6oScucAMwoWVfPloqOiMkUQ4yeAwb7aYtmZmWSh2BqyQ+BmyNilqQPAZMAIuIvkl6RNJLiCKhp9NSN4ghrQ+lKUriUPhq9kXf2uXn7bmk9r0fE8LLujZmZdVjmp/KAh4AxkvoBSNoL6AusTPMvatb/JxRP6c2IiMbU9gBwRVMHSdsVLBHxd+BFSWPSeiRp2Pasy8zMtk/mwRQRS4EbgbmSFgE3UxwhzZBUB6xttsgsoDfvnMYDmAAU0g0UTwOX70BJ44BLUy1LgbN3YF1mZraNFFFZl0ckFSje6PD+rGtp0nPA4Bhw0feyLsPMOpG/+aH8JNVFRKF5e16vMbVI0kTgs7xzbSkXhg7sS60/tGZmZZH5qbxtERE3RcRBEfFY1rWYmVnnqKhgMjOznZ+DyczMcsXBZGZmueJgMjOzXHEwmZlZrjiYzMwsVxxMZmaWKw4mMzPLFQeTmZnlSkV9JVFe1a9soGbi7KzLMLOdWDV9V59HTGZmlitVEUySJkh6RtLf0hfBttbvYkm3dGVtZma2pWo5lfc54NSIWJF1IWZm1radfsQk6XbgYOA3kr7YNCKSNEbSEkmLJD1Sssh7JP1W0vOSvpVJ0WZmVWynD6aIuBz4K3Ay8LeSWdcDp0XEMOCskvbhwFhgKDBW0gEtrVfSeEm1kmob1zd0TvFmZlVopw+mNjwOTJF0GdC9pP3BiGiIiA3A08BBLS0cEZMjohARhe679+2Ccs3MqkPVBlMaSV0HHADUSeqXZm0s6dZI9VyHMzPLhar9pSvpkIiYB8yTdAbFgDIzs4xV7YgJ+LakeklLgCeARVkXZGZmVTJiioiaNDklvYiIj7fQ9e35qc+oTi3MzMy2UhXB1NmGDuxLbRV9XYiZWWeq5lN5ZmaWQw4mMzPLFQeTmZnlioPJzMxyxcFkZma54mAyM7NccTCZmVmuOJjMzCxXHExmZpYr/uaHMqhf2UDNxNlZl2Fm1qWWd9I33njEZGZmueJgMjOzXKnaYJJ0saRb0vTlki7MuiYzM6vSa0ySttjviLg9q1rMzGxLFR1Mkr4KfApYA/wFqAMagPHArsALwKcjYr2kKcAGYATwOLC4ZD2TgHUR8R1J/wu4Hdib4qPVx0TEn7pqn8zMql3FnsqTdCxwLjAMOAMopFn3RMSxETEMeAa4tGSx/YETIuLqNlZ9N3BrWv4EYFUr2x8vqVZSbeP6hh3cGzMza1LJI6YTgfsiYgOwQdKvUvtRkm4A9gR6A/eXLDMjIhpbW6GkPsDAiLgXIK27RRExGZgM0HPA4NihPTEzs7dV7IipDVOAL0TEUODrQK+Sef/IpCIzM+uwSg6mx4HRknpJ6g2MSu19gFWSegDjtmWFEfEGsELSOQCSekravZxFm5lZ2yo2mCJiPjCL4k0MvwHqKd748FVgHsXgenY7Vv1pYIKkxcATwH5lKdjMzDpEEZV7eURS74hYl0Y1jwDjI2JBV9dRKBSitra2qzdrZlbRJNVFRKF5eyXf/AAwWdKRFK8jTc0ilMzMrLwqOpgi4pNZ12BmZuVVsdeYzMxs5+RgMjOzXHEwmZlZrlT0XXl5IekNYFnWdWyH/sDarIvYDq67a7nurlUtda8FiIjTm8+o6JsfcmRZS7c85p2kWtfddVx313LdXaucdftUnpmZ5YqDyczMcsXBVB6Tsy5gO7nuruW6u5br7lplq9s3P5iZWa54xGRmZrniYDIzs1xxMO0ASadLWibpBUkTs66nNZIOkDRH0tOSlkq6MrVPkrRS0sL0+mjWtTYnabmk+lRfbWrbS9LvJD2ffr476zpLSTqs5JgulPR3SVfl9XhLulPSaklLStpaPMYq+kH6zC+WdHTO6v62pGdTbfdK2jO110h6s+TY356zulv9bEj6t3S8l0k6LZuqW617WknNyyUtTO07drwjwq/teAHdgT8BBwO7AouAI7Ouq5VaBwBHp+k+wHPAkcAk4Jqs62un9uVA/2Zt3wImpumJwDezrrOdz8nLwEF5Pd7AB4CjgSXtHWPgoxSffybgOGBezur+CLBLmv5mSd01pf1yeLxb/Gykf6eLgJ7AoPQ7p3te6m42/z+A68txvD1i2n7vA16IiD9HxD+BXwBnZ1xTiyJiVaRHgkTxKb3PAAOzrWqHnA1MTdNTgXMyrKU9pwB/ioiXsi6kNRHxCPBas+bWjvHZwM+i6A/AnpIGdE2lW2qp7oh4ICI2p7d/APbv8sLa0crxbs3ZwC8iYmNEvAi8QPF3T5drq25JAs4Hfl6ObTmYtt9A4C8l71dQAb/sJdUAIyg+5RfgC+m0x515OyWWBPCApDpJ41PbvhGxKk2/DOybTWkdcgFb/mPN+/Fu0toxrqTP/SUUR3dNBkl6StJcSe/Pqqg2tPTZqJTj/X7glYh4vqRtu4+3g6mKSOoN/BK4KiL+DtwGHAIMB1ZRHIrnzUkRcTRwBvB5SR8onRnF8wa5/JsHSbsCZwEzUlMlHO+t5PkYt0bStcBm4O7UtAo4MCJGAFcD/yXpXVnV14KK/GyU+ARb/gdsh463g2n7rQQOKHm/f2rLJUk9KIbS3RFxD0BEvBIRjRHxFnAHGZ0iaEtErEw/VwP3UqzxlabTR+nn6uwqbNMZwIKIeAUq43iXaO0Y5/5zL+liYBQwLoUq6VTYq2m6juK1mkMzK7KZNj4blXC8dwE+DkxratvR4+1g2n7zgcGSBqX/GV8AzMq4phal87//F3gmIm4uaS+9NvAxYEnzZbMkaQ9JfZqmKV7YXkLxOF+Uul0E3JdNhe3a4n+ReT/ezbR2jGcBF6a7844DGkpO+WVO0unAV4CzImJ9Sfvekrqn6YOBwcCfs6lya218NmYBF0jqKWkQxbr/2NX1teNU4NmIWNHUsMPHO4u7O3aWF8U7lJ6j+L+Ba7Oup406T6J4KmYxsDC9PgrcBdSn9lnAgKxrbVb3wRTvSFoELG06xkA/4EHgeeD3wF5Z19pC7XsArwJ9S9pyebwphucqYBPFaxiXtnaMKd6Nd2v6zNcDhZzV/QLFazJNn/PbU99z02doIbAAGJ2zulv9bADXpuO9DDgjT3Wn9inA5c367tDx9lcSmZlZrvhUnpmZ5YqDyczMcsXBZGZmueJgMjOzXHEwmZlZrjiYzMwsVxxMZmaWK/8fnSxrKwF+wYgAAAAASUVORK5CYII=\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "thai_ingredient_df = create_ingredient_df(thai_df)\r\n", + "thai_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 11 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "japanese_ingredient_df = create_ingredient_df(japanese_df)\r\n", + "japanese_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 12 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaYAAAD4CAYAAACngkIwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAfeElEQVR4nO3deZwV1Z338c8XbCEKYlSMiEurISECsl1NULO5xD2aCYgT4hLzkkcn4pgEnyGPJoMTM+OSbTRGJRmFUUcF1GjCqHGUuBL1NggNKmgiPmGJ4tZiEILwmz/qtN603U033O5bl/6+X69+dd1Tp079Thfxl3Oqbh1FBGZmZnnRrdIBmJmZlXJiMjOzXHFiMjOzXHFiMjOzXHFiMjOzXNmm0gFsDXbZZZeora2tdBhmZlWlrq7u1Yjo27TciakMamtrKRaLlQ7DzKyqSHqpuXJP5ZmZWa44MZmZWa44MZmZWa74HpOZWSdYv349y5YtY+3atZUOpdP17NmTPfbYg5qamjbVd2Iqg/rlDdROmlXpMKyDLb30uEqHYFVs2bJl9O7dm9raWiRVOpxOExG89tprLFu2jH322adNx3gqz8ysE6xdu5add965SyUlAEnsvPPO7RopOjGZmXWSrpaUGrW3305MZmaWK7m4xyTpNGAiEMACYDpwEbAt8BowDlgFLAYOjohVkroBS4BRqZlrgb3S9vkR8Zikyals3/T7pxFxpaRa4B7gUeBgYDlwYkS8I2k/4GqgL7AGOCsinuu43ptZV1Tu+9Llvgfaq1cv3n777bK22VYVHzFJGkSWhA6LiKHAP5IljE9FxHDgVuD/RsRG4CayJAVwBDA/IlYB/w78JCIOBL4M/LLkFAOBo4CDgH+W1PhYyADg6ogYBLyZjgOYAkyIiJFkyfLnLcQ9XlJRUnHDmoYt/juYmVmm4okJOAyYERGvAkTE68AewH2S6oELgEGp7vXAaWn7TOCGtH0E8DNJTwN3AztI6pX2zYqIdan9V4CPpPIXI+LptF0H1KZjDgZmpLauA/o1F3RETImIQkQUum/XZwv/BGZmHWvSpElcffXV732ePHkyl1xyCYcffjgjRoxgyJAh3HXXXR847ne/+x3HH3/8e5/PPfdcpk6dCkBdXR2f/exnGTlyJEcddRQrV64sS6x5SEzNuQr4WUQMAf4P0BMgIv4EvCzpMLIR0D2pfjeyEdaw9NM/IhrHoOtK2t3A+9OXzZV3A94saWdYRHyiIzpoZtaZxo4dy/Tp09/7PH36dE4//XTuvPNO5s6dy+zZs/n2t79NRLSpvfXr1zNhwgRmzpxJXV0dZ555JhdeeGFZYs3DPaYHgTsl/TgiXpO0E9CH7L4PwOlN6v+SbErvxojYkMp+C0wArgCQNKxkNNRmEfGWpBcljYmIGcoeJTkgIuZvRr/MzHJj+PDhvPLKK6xYsYJVq1bx4Q9/mN12241vfvObPPzww3Tr1o3ly5fz8ssvs9tuu22yvcWLF7Nw4UKOPPJIADZs2EC/fs1OMLVbxRNTRCyS9APgIUkbgHnAZLLptDfIElfpt7LuJpvCu6Gk7DzgakkLyPr0MHD2ZoY0DrhG0kVADdk9LicmM6t6Y8aMYebMmfz5z39m7Nix3HzzzaxatYq6ujpqamqora39wPeNttlmGzZu3Pje58b9EcGgQYOYM2dO2eOseGICiIhpwLQmxR+c7MwMJXvo4b0n5dL9o7HNtDu5yefBJR8Hl5T/sGT7ReDotsZuZlYtxo4dy1lnncWrr77KQw89xPTp09l1112pqalh9uzZvPTSB1eh2HvvvXnmmWdYt24d77zzDg888ACHHnooH//4x1m1ahVz5sxh1KhRrF+/niVLljBo0KBmztw+uUhMbSVpEnAO7z+ZlwtD+veh6NfVmFk7VOIVV4MGDWL16tX079+ffv36MW7cOE444QSGDBlCoVBg4MCBHzhmzz335OSTT2bw4MHss88+DB8+HIBtt92WmTNnct5559HQ0MC7777L+eefX5bEpLbe6LKWFQqF8EKBZtaaZ599lk98ous+S9Vc/yXVRUShad28PpVnZmZdlBOTmZnlihOTmVkn6aq3TtrbbycmM7NO0LNnT1577bUul5wa12Pq2bNnm4+pqqfyzMyq1R577MGyZctYtWpVpUPpdI0r2LaVE5OZWSeoqalp8wquXZ2n8szMLFecmMzMLFecmMzMLFd8j6kM6pc3lH01SsuvSrxKxqwr8YjJzMxypcslJkn/LWnHSsdhZmbN61JTeWnhv+MjYuMmK5uZWUVs9SMmSbWSFkv6T2AhsEHSLmnfaZIWSJov6cZU1lfS7ZKeSj+HVDJ+M7OupquMmAYAp0fE7yUtBZA0CLgIODgiXk1LugP8O/CTiHhU0l7AfcAH3lUvaTwwHqD7Dn07oQtmZl1DV0lML0XE75uUHQbMSKvfEhGvp/IjgP2zWT8AdpDUKyLeLj04IqYAUwB69BvQtV5+ZWbWgbpKYvpLO+p2Az4VEWs3WdPMzMpuq7/H1IoHgTGSdgYomcr7LTChsZKkYRWIzcysy+qyiSkiFgE/AB6SNB/4cdp1HlBID0U8A5xdqRjNzLoidbW1QTpCoVCIYrFY6TDMzKqKpLqIKDQt77IjJjMzyycnJjMzyxUnJjMzyxUnJjMzyxUnJjMzyxUnJjMzyxUnJjMzyxUnJjMzyxUnJjMzyxUnJjMzy5Wu8nbxDlW/vIHaSbMqHYblxNJLj6t0CGZVzSMmMzPLFScmMzPLlapITJJ2lzSz0nGYmVnHq4rEFBErImJ0Jc4tyffhzMw6Ue4Sk6RLJX2j5PNkSRMlLUyfz5B0h6R7JT0v6fKSul+QNEfSXEkzJPVK5cdKek5SnaQrJf0mlR+U6s+T9Likj5ec425JDwIPdOofwMysi8tdYgJuA04u+Xwy8ESTOsOAscAQYKykPSXtAlwEHBERI4Ai8C1JPYHrgGMiYiTQt6Sd54BPR8Rw4HvAv5bsGwGMjojPNhekpPGSipKKG9Y0bG5fzcysidxNU0XEPEm7StqdLIm8AfypSbUHIqIBIC1/vjewI7A/8JgkgG2BOcBA4I8R8WI69hZgfNruA0yTNAAIoKbkHPdHxOutxDkFmALQo98ALwNsZlYmuUtMyQxgNLAb2QiqqXUl2xvI+iGyZPL3pRUlDWvlPN8HZkfElyTVAr8r2feXdkdtZmZbLI9TeZAlo1PIktOMNh7ze+AQSR8FkLS9pI8Bi4F9U+KBbAqwUR9gedo+Y8tCNjOzcshlYoqIRUBvYHlErGzjMavIksstkhaQpvEi4h3gH4B7JdUBq4HGm0KXA/8maR75HT2amXUpitj6b49I6hURbyu7+XQ18HxE/KRc7RcKhSgWi+VqzsysS5BUFxGFpuW5HDF1gLMkPQ0sIpu+u67C8ZiZWQu6xPRVGh2VbYRkZmYdp6uMmMzMrEo4MZmZWa44MZmZWa44MZmZWa44MZmZWa44MZmZWa44MZmZWa44MZmZWa50iS/YdrT65Q3UTppV6TDM2mTppcdVOgSzVnnEZGZmuVL1iUnS+ZK2K1Nbn2tcdt3MzCqj6hMTcD7QrsQkqXsHxWJmZluoqhJTWvxvlqT5khZK+mdgd2C2pNmpzjWSipIWSbq45Nilki6TNBcYI+mjkv4ntTVX0n6pai9JMyU9J+nmtFSGmZl1kmp7+OFoYEVEHAcgqQ/wNeDzEfFqqnNhRLyeRkUPSDogIhakfa9FxIh07BPApRFxp6SeZEl6T2A4MAhYATwGHAI82jQQSeOB8QDdd+jbMb01M+uCqmrEBNQDR6aRz6cjoqGZOienUdE8sgSzf8m+2wAk9Qb6R8SdABGxNiLWpDpPRsSyiNgIPA3UNhdIREyJiEJEFLpv16csnTMzsyobMUXEEkkjgGOBSyQ9ULpf0j7ARODAiHhD0lSgZ0mVv7ThNOtKtjdQZX8jM7NqV1UjJkm7A2si4ibgCmAEsBronarsQJZ8GiR9BDimuXYiYjWwTNJJqd0e5Xqyz8zMtky1jQaGAFdI2gisB84BRgH3SloREZ+XNA94DvgT2T2ilpwKXCfpX1JbYzo2dDMzawtFRKVjqHo9+g2Ifqf/tNJhmLWJ3/xgeSGpLiIKTcurbcSUS0P696Ho/7GbmZVFVd1jMjOzrZ8Tk5mZ5YoTk5mZ5YoTk5mZ5YoTk5mZ5YoTk5mZ5YoTk5mZ5YoTk5mZ5YoTk5mZ5YoTk5mZ5YpfSVQG9csbqJ00q9JhmLWL35lneeURk5mZ5YoTk5mZ5UpFE5OkkyTt34Z6UyWNbqb8c5J+U8Z4CpKuTNtnSPpZudo2M7O2qfSI6SRgk4mps0REMSLOq3QcZmZdWauJSdKlkr5R8nmypImSLpD0lKQFki4u2f9dSYslPSrpFkkTU/l+ku6VVCfpEUkDJR0MfJFsRdqnU52zUrvzJd3eZLnzIyQVJS2RdHwzsW4v6XpJT0qaJ+nEVvrVU9INkupT3c+n8jaPwCSNT/EUN6xpaMshZmbWBpsaMd0GnFzy+WRgFTAAOAgYBoyU9BlJBwJfBoYCxwClqxJOASZExEhgIvDziHgcuBu4ICKGRcQfgDsi4sCIGAo8C3y9pI3adM7jgGsl9WwS64XAgxFxEPB5soS3fQv9+gYQETEE+HtgWjPttSoipkREISIK3bfr055DzcysFa0+Lh4R8yTtKml3oC/wBjAE+AIwL1XrRZaoegN3RcRaYK2kXwNI6gUcDMyQ1Nh0jxZOOVjSJcCOqd37SvZNj4iNwPOS/ggMbHLsF4AvNo7SgJ7AXmQJrqlDgatSH5+T9BLwsdb+FmZm1jna8j2mGcBoYDeyEdTewL9FxHWllSSd38Lx3YA3I2JYG841FTgpIuZLOgP4XMm+aFK36WcBX46IxW04j5mZ5VRbHn64DTiFLDnNIBvFnJlGQkjqL2lX4DHghHT/phdwPEBEvAW8KGlMqi9JQ1Pbq8lGWo16Aysl1QDjmsQxRlI3SfsB+wJNE9B9wASlYZmk4a306ZHG9iV9jGxk5YRmZpYDm0xMEbGILGEsj4iVEfFb4L+AOZLqgZlA74h4iuye0QLgHqAeaHwqYBzwdUnzgUVA44MJtwIXpAcQ9gO+CzxBluSeaxLK/weeTG2fnaYMS30fqAEWSFqUPrfk50C3FP9twBkRsW5TfwszM+t4img6I7YFjUm9IuLt9DTdw8D4iJhbthPkVKFQiGKxWOkwzMyqiqS6iCg0LS/3u/KmpC/M9gSmdYWkZGZm5VXWxBQRXylne1tK0lHAZU2KX4yIL1UiHjMz27St+u3iEXEff/vIuZmZ5VylX0lkZmb2N5yYzMwsV5yYzMwsV5yYzMwsV5yYzMwsV5yYzMwsV5yYzMwsV7bq7zF1lvrlDdROmlXpMMw6xNJLj6t0CNbFeMRkZma54sRkZma54sTUhKSzJZ2WtqdKGl3pmMzMuhLfY2oiIq6tdAxmZl1ZWUdMkraXNEvSfEkLJY2VNFLSQ5LqJN0nqV+qe56kZyQtkHRrKjtI0py0cODjkj6eys+Q9CtJ90taKulcSd9K9X4vaadUbz9J96ZzPSJpYCux1kp6MJ3/AUl7pfLJkia2oa/jJRUlFTesadhUdTMza6NyT+UdDayIiKERMRi4F7gKGB0RI4HrgR+kupOA4RFxAHB2KnsO+HREDAe+B/xrSduDgb8DDkxtrEn15gCnpTpTgAnpXBPJVqptyVVka0YdANwMXNmejkbElIgoRESh+3Z92nOomZm1otxTefXAjyRdBvwGeIMsodwvCaA7sDLVXQDcLOlXwK9SWR9gmqQBQJAtld5odkSsBlZLagB+XXLOAyT1Ag4GZqRzAfRoJdZRZIkO4Ebg8vZ318zMyq3cCwUukTQCOBa4BHgQWBQRo5qpfhzwGeAE4EJJQ4DvkyWgL0mqBX5XUn9dyfbGks8byfrRDXgzIoaVrUNmZtbpyn2PaXeyKbabgCuATwJ9JY1K+2skDZLUDdgzImYD/0Q2UuqVfi9PzZ3RnnNHxFvAi5LGpHNJ0tBWDnkcOCVtjwMeac/5zMysY5R7Km8IcIWkjcB64BzgXeBKSX3S+X4KLAFuSmUCroyINyVdTjaVdxGwOa9SGAdck46vAW4F5rdQdwJwg6QLgFXA1zbjfAAM6d+Hor8db2ZWFoqISsdQ9QqFQhSLxUqHYWZWVSTVRUShabm/YGtmZrmy1X/BVtKFwJgmxTMi4gfN1Tczs8ra6hNTSkBOQmZmVcJTeWZmlitOTGZmlitOTGZmlitOTGZmlitOTGZmlitOTGZmlitb/ePinaF+eQO1kzbnDUpmtqWW+nVgWx2PmMzMLFecmMzMLFe2usSUlkxfmLY/J+k3afuLkiZVNjozM9uULnOPKSLuBu6udBxmZta63I2YJG0vaZak+ZIWShor6UBJj6eyJyX1TiOjRyTNTT8Hb6LdMyT9LG3XSnpQ0gJJD0jaK5VPlXRlOtcfJY3ujD6bmdn78jhiOhpYERHHAaTFBOcBYyPiKUk7AO8ArwBHRsRaSQOAW4APrOvRgquAaRExTdKZwJXASWlfP+BQYCDZCGtmcw1IGg+MB+i+Q9/299LMzJqVuxETUA8cKekySZ8G9gJWRsRTkC2hHhHvkq1Q+wtJ9cAMYP92nGMU8F9p+0ayRNToVxGxMSKeAT7SUgMRMSUiChFR6L5dn3ac2szMWpO7EVNELJE0AjgWuAR4sIWq3wReBoaSJdi1ZQphXcm2ytSmmZm1Ue5GTJJ2B9ZExE3AFcAngX6SDkz7e0vaBuhDNpLaCJwKdG/HaR4HTknb44BHyhW/mZltmdyNmIAhwBWSNgLrgXPIRi5XSfoQ2f2lI4CfA7dLOg24F/hLO84xAbhB0gXAKuBrZYzfzMy2gCKi0jFUvUKhEMVisdJhmJlVFUl1EfGBh9ZyN5VnZmZdmxOTmZnlihOTmZnlihOTmZnlihOTmZnlihOTmZnlihOTmZnlihOTmZnlihOTmZnlihOTmZnlSh7flVd16pc3UDtpVqXDMLMyWnrpcZUOocvyiMnMzHKlyyamJkutn53eUm5mZhXWJafy0npO74mIaysVi5mZ/a2qTkySvgt8lWxNpT8BdUADMB7YFngBODUi1kiaSrbK7XDgMWBBSTuTgbcj4oeSPgpcC/QFNgBjIuIPndUnM7Ourmqn8tKKtl8mW1r9GKBxTY87IuLAiBgKPAt8veSwPYCDI+JbrTR9M3B1Ov5gYGUL5x8vqSipuGFNwxb2xszMGlXziOkQ4K6IWAuslfTrVD5Y0iXAjkAv4L6SY2ZExIaWGpTUG+gfEXcCpLabFRFTgCkAPfoN8GqLZmZlUrUjplZMBc6NiCHAxUDPkn3tWX7dzMwqoJoT02PACZJ6SuoFHJ/KewMrJdUA49rTYESsBpZJOglAUg9J25UzaDMza13VJqaIeAq4m+whhnuAerIHH74LPEGWuJ7bjKZPBc6TtAB4HNitLAGbmVmbKKJ6b49I6hURb6dRzcPA+IiY29lx9Og3IPqd/tPOPq2ZdSC/+aHjSaqLiELT8mp++AFgiqT9ye4jTatEUgIY0r8PRf8jNjMri6pOTBHxlUrHYGZm5VW195jMzGzr5MRkZma54sRkZma54sRkZma54sRkZma54sRkZma54sRkZma54sRkZma54sRkZma5UtVvfsiL+uUN1E6aVekwzKwD+J15nc8jJjMzy5WqT0yS/kXSEZWOw8zMyqPqp/Ii4nsdfQ5J3Vtbkt3MzMqnqkZMkr4rabGkRyXdImmipKmSRqf9SyVdLGmupHpJA1N5X0n3S1ok6ZeSXpK0S9r3VUlPSnpa0nWSuqfytyX9SNJ8YFTFOm1m1sVUTWKSdCDwZWAocAzwgcWlklcjYgRwDTAxlf0z8GBEDAJmAnulNj8BjAUOiYhhwAbeX459e+CJiBgaEY82E894SUVJxQ1rGsrSRzMzq66pvEOAuyJiLbBW0q9bqHdH+l0H/F3aPhT4EkBE3CvpjVR+ODASeEoSwIeAV9K+DcDtLQUTEVOAKZCtYLs5HTIzsw+qpsTUVuvS7w1sun8iW/n2O83sW+v7SmZmna9qpvKAx4ATJPWU1As4vp3Hngwg6QvAh1P5A8BoSbumfTtJ2ruMMZuZWTtVzYgpIp6SdDewAHgZqAfaenPnYuAWSacCc4A/A6sj4lVJFwG/ldQNWA98A3ip7B0wM7M2qZrElPwwIiZL2g54GKiLiF807oyI2pLtIvC59LEBOCoi3pU0CjgwItalercBtzU9UUT06rBemJlZi6otMU2RtD/Qk+ze0Nw2HrcXMD2Niv4KnFXOoIb070PRry0xMyuLqkpMEfGVzTzueWB4mcMxM7MOUE0PP5iZWRfgxGRmZrnixGRmZrnixGRmZrnixGRmZrnixGRmZrnixGRmZrnixGRmZrlSVV+wzav65Q3UTppV6TDMzDrV0g56441HTGZmlitOTGZmlitOTGZmlitOTGZmlisdmpgkbS9plqT5khZKGivpcEnzJNVLul5SD0mHSfpVyXFHSrqzhTa7S5qa2quX9M1Ufpakp9K5bk9rNpHqji45/u2S7X9KbcyXdGkq20/SvZLqJD0iaWBH/X3MzOyDOnrEdDSwIiKGRsRg4F5gKjA2IoaQPRV4DjAbGCipbzrua8D1LbQ5DOgfEYNTGzek8jsi4sCIGAo8C3y9tcAkHQOcCHwyHXN52jUFmBARI4GJwM9bOH68pKKk4oY1bV1I18zMNqWjE1M9cKSkyyR9GqgFXoyIJWn/NOAzERHAjcBXJe0IjALuaaHNPwL7SrpK0tHAW6l8cBrh1APjgEGbiO0I4IaIWAMQEa9L6gUcDMyQ9DRwHdCvuYMjYkpEFCKi0H27Ppv6O5iZWRt16PeYImKJpBHAscAlwIOtVL8B+DWwFpgREe+20OYbkoYCRwFnAycDZ5KNxE6KiPmSzuD9ZdXfJSXgtILttq3E0A14MyKGtaV/ZmZWfh19j2l3YE1E3ARcQTYSqpX00VTlVOAhgIhYAawALuL96bnm2twF6BYRt6e6I9Ku3sBKSTVkI6ZGS4GRafuLQE3avh/4Wsm9qJ0i4i3gRUljUplSEjQzs07S0W9+GAJcIWkjsJ7sflIfsqmybYCngGtL6t8M9I2IZ1tpsz9wQxr9AHwn/f4u8ASwKv3uncp/AdwlaT7ZPa6/AETEvZKGAUVJfwX+G/h/ZEntGkkXkSWxW4H5m9l/MzNrJ2W3d/JB0s+AeRHxH5WOpT0KhUIUi8VKh2FmVlUk1UVEoWl5bt6VJ6mObDTz7UrHYmZmlZObxJQez/4bkp4AejQpPjUi6jsnKjMz62y5SUzNiYhPVjoGMzPrXH4lkZmZ5YoTk5mZ5UqunsqrVpJWA4srHUcZ7QK8Wukgysx9yr+trT+w9fWp3P3ZOyL6Ni3M9T2mKrK4uUceq5Wk4tbUH3CfqsHW1h/Y+vrUWf3xVJ6ZmeWKE5OZmeWKE1N5TKl0AGW2tfUH3KdqsLX1B7a+PnVKf/zwg5mZ5YpHTGZmlitOTGZmlitOTFtA0tGSFkt6QdKkSsezuSQtlVQv6WlJxVS2k6T7JT2ffn+40nG2RtL1kl6RtLCkrNk+pHW2rkzXbUFazDJXWujPZEnL03V6WtKxJfu+k/qzWNJRlYm6ZZL2lDRb0jOSFkn6x1RezdeopT5V83XqKelJSfNTny5O5ftIeiLFfpukbVN5j/T5hbS/tiyBRIR/NuMH6A78AdiXbFXc+cD+lY5rM/uyFNilSdnlwKS0PQm4rNJxbqIPnyFbNHLhpvpAtqLyPYCATwFPVDr+NvZnMjCxmbr7p39/PYB90r/L7pXuQ5MY+wEj0nZvYEmKu5qvUUt9qubrJKBX2q4hW9vuU8B04JRUfi1wTtr+B+DatH0KcFs54vCIafMdBLwQEX+MiL+SLSh4YoVjKqcTgWlpexpwUgVj2aSIeBh4vUlxS304EfjPyPwe2FFSv86JtG1a6E9LTgRujYh1EfEi8ALZv8/ciIiVETE3ba8GniVb9LOar1FLfWpJNVyniIi308ea9BPAYcDMVN70OjVev5nA4ZK0pXE4MW2+/sCfSj4vo/V/lHkWwG8l1Ukan8o+EhEr0/afgY9UJrQt0lIfqvnanZumtq4vmV6tqv6k6Z7hZP9vfKu4Rk36BFV8nSR1l/Q08ApwP9nI7s2IeDdVKY37vT6l/Q3AzlsagxOTARwaESOAY4BvSPpM6c7IxulV/b2CraEPwDXAfsAwYCXwo8qG036SegG3A+dHxFul+6r1GjXTp6q+ThGxISKGAXuQjegGdnYMTkybbzmwZ8nnPVJZ1YmI5en3K8CdZP8YX26cOkm/X6lchJutpT5U5bWLiJfTfzQ2Ar/g/WmgquiPpBqy/4DfHBF3pOKqvkbN9anar1OjiHgTmA2MIptKbXy3amnc7/Up7e8DvLal53Zi2nxPAQPS0yrbkt34u7vCMbWbpO0l9W7cBr4ALCTry+mp2unAXZWJcIu01Ie7gdPSk1+fAhpKppNyq8k9li+RXSfI+nNKekJqH2AA8GRnx9eadN/hP4BnI+LHJbuq9hq11Kcqv059Je2Ytj8EHEl272w2MDpVa3qdGq/faODBNPLdMpV+CqSaf8ieHFpCNgd7YaXj2cw+7Ev2pNB8YFFjP8jmiR8Angf+B9ip0rFuoh+3kE2brCebA/96S30ge/Lo6nTd6oFCpeNvY39uTPEuSP9B6FdS/8LUn8XAMZWOv5n+HEo2TbcAeDr9HFvl16ilPlXzdToAmJdiXwh8L5XvS5ZEXwBmAD1Sec/0+YW0f99yxOFXEpmZWa54Ks/MzHLFicnMzHLFicnMzHLFicnMzHLFicnMzHLFicnMzHLFicnMzHLlfwHH5sUVMquziAAAAABJRU5ErkJggg==\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "chinese_ingredient_df = create_ingredient_df(chinese_df)\r\n", + "chinese_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 13 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "indian_ingredient_df = create_ingredient_df(indian_df)\r\n", + "indian_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 14 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "korean_ingredient_df = create_ingredient_df(korean_df)\r\n", + "korean_ingredient_df.head(10).plot.barh()" + ] + }, + { + "source": [ + "എല്ലാ പാചകശൈലികളിലും സാധാരണയായി ഉപയോഗിക്കുന്ന സാധനങ്ങൾ ഒഴിവാക്കുക\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 15 + } + ], + "source": [ + "feature_df= df.drop(['cuisine','Unnamed: 0','rice','garlic','ginger'], axis=1)\n", + "labels_df = df.cuisine #.unique()\n", + "feature_df.head()\n" + ] + }, + { + "source": [ + "SMOTE ഓവർസാമ്പ്ലിംഗ് ഉപയോഗിച്ച് ഡാറ്റ ഏറ്റവും ഉയർന്ന ക്ലാസിലേക്ക് ബാലൻസ് ചെയ്യുക. കൂടുതൽ വായിക്കാൻ ഇവിടെ കാണുക: https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "oversample = SMOTE()\n", + "transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "new label count: korean 799\nchinese 799\njapanese 799\nindian 799\nthai 799\nName: cuisine, dtype: int64\nold label count: korean 799\nindian 598\nchinese 442\njapanese 320\nthai 289\nName: cuisine, dtype: int64\n" + ] + } + ], + "source": [ + "print(f'new label count: {transformed_label_df.value_counts()}')\r\n", + "print(f'old label count: {df.cuisine.value_counts()}')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 18 + } + ], + "source": [ + "transformed_feature_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " cuisine almond angelica anise anise_seed apple apple_brandy \\\n", + "0 indian 0 0 0 0 0 0 \n", + "1 indian 1 0 0 0 0 0 \n", + "2 indian 0 0 0 0 0 0 \n", + "3 indian 0 0 0 0 0 0 \n", + "4 indian 0 0 0 0 0 0 \n", + "... ... ... ... ... ... ... ... \n", + "3990 thai 0 0 0 0 0 0 \n", + "3991 thai 0 0 0 0 0 0 \n", + "3992 thai 0 0 0 0 0 0 \n", + "3993 thai 0 0 0 0 0 0 \n", + "3994 thai 0 0 0 0 0 0 \n", + "\n", + " apricot armagnac artemisia ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "... ... ... ... ... ... ... ... \n", + "3990 0 0 0 ... 0 0 0 \n", + "3991 0 0 0 ... 0 0 0 \n", + "3992 0 0 0 ... 0 0 0 \n", + "3993 0 0 0 ... 0 0 0 \n", + "3994 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "... ... ... ... ... ... ... ... \n", + "3990 0 0 0 0 0 0 0 \n", + "3991 0 0 0 0 0 0 0 \n", + "3992 0 0 0 0 0 0 0 \n", + "3993 0 0 0 0 0 0 0 \n", + "3994 0 0 0 0 0 0 0 \n", + "\n", + "[3995 rows x 381 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisia...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
0indian000000000...0000000000
1indian100000000...0000000000
2indian000000000...0000000000
3indian000000000...0000000000
4indian000000000...0000000010
..................................................................
3990thai000000000...0000000000
3991thai000000000...0000000000
3992thai000000000...0000000000
3993thai000000000...0000000000
3994thai000000000...0000000000
\n

3995 rows × 381 columns

\n
" + }, + "metadata": {}, + "execution_count": 19 + } + ], + "source": [ + "# export transformed data to new df for classification\n", + "transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer')\n", + "transformed_df" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\nRangeIndex: 3995 entries, 0 to 3994\nColumns: 381 entries, cuisine to zucchini\ndtypes: int64(380), object(1)\nmemory usage: 11.6+ MB\n" + ] + } + ], + "source": [ + "transformed_df.info()" + ] + }, + { + "source": [ + "ഫയൽ ഭാവിയിലെ ഉപയോഗത്തിനായി സംരക്ഷിക്കുക\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "transformed_df.to_csv(\"../../data/cleaned_cuisines.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ പ്രാമാണികമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "kernelspec": { + "name": "python3", + "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" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "1da12ed6d238756959b8de9cac2a35a2", + "translation_date": "2025-12-19T17:04:05+00:00", + "source_file": "4-Classification/1-Introduction/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/translations/ml/4-Classification/2-Classifiers-1/README.md b/translations/ml/4-Classification/2-Classifiers-1/README.md new file mode 100644 index 000000000..4ac531a9d --- /dev/null +++ b/translations/ml/4-Classification/2-Classifiers-1/README.md @@ -0,0 +1,257 @@ + +# ഭക്ഷണശൈലി ക്ലാസിഫയർമാർ 1 + +ഈ പാഠത്തിൽ, നിങ്ങൾ കഴിഞ്ഞ പാഠത്തിൽ നിന്ന് സംരക്ഷിച്ച, ഭക്ഷണശൈലികളെക്കുറിച്ചുള്ള സമതുലിതവും ശുദ്ധവുമായ ഡാറ്റയുള്ള ഡാറ്റാസെറ്റ് ഉപയോഗിക്കും. + +നിങ്ങൾ ഈ ഡാറ്റാസെറ്റ് വിവിധ ക്ലാസിഫയർമാരുമായി ഉപയോഗിച്ച് _ഒരു ഗ്രൂപ്പ് ഘടകങ്ങളുടെ അടിസ്ഥാനത്തിൽ ഒരു നാഷണൽ ഭക്ഷണശൈലി പ്രവചിക്കും_. ഇതു ചെയ്യുമ്പോൾ, ക്ലാസിഫിക്കേഷൻ ടാസ്കുകൾക്കായി ആൽഗോരിതങ്ങൾ എങ്ങനെ ഉപയോഗിക്കാമെന്ന് കുറച്ച് കൂടുതൽ പഠിക്കും. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) +# തയ്യാറെടുപ്പ് + +[പാഠം 1](../1-Introduction/README.md) പൂർത്തിയാക്കിയതായി കരുതുമ്പോൾ, ഈ നാല് പാഠങ്ങൾക്കായി റൂട്ട് `/data` ഫോൾഡറിൽ _cleaned_cuisines.csv_ ഫയൽ ഉണ്ടെന്ന് ഉറപ്പാക്കുക. + +## അഭ്യാസം - ഒരു നാഷണൽ ഭക്ഷണശൈലി പ്രവചിക്കുക + +1. ഈ പാഠത്തിലെ _notebook.ipynb_ ഫോൾഡറിൽ പ്രവർത്തിച്ച്, ആ ഫയലും Pandas ലൈബ്രറിയും ഇറക്കുമതി ചെയ്യുക: + + ```python + import pandas as pd + cuisines_df = pd.read_csv("../data/cleaned_cuisines.csv") + cuisines_df.head() + ``` + + ഡാറ്റ ഇങ്ങനെ കാണപ്പെടും: + +| | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini | +| --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- | +| 0 | 0 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 1 | 1 | indian | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 2 | 2 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 3 | 3 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | + + +1. ഇപ്പോൾ, കൂടുതൽ ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക: + + ```python + from sklearn.linear_model import LogisticRegression + from sklearn.model_selection import train_test_split, cross_val_score + from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve + from sklearn.svm import SVC + import numpy as np + ``` + +1. പരിശീലനത്തിനായി X, y കോർഡിനേറ്റുകൾ രണ്ട് ഡാറ്റാഫ്രെയിമുകളായി വിഭജിക്കുക. `cuisine` ലേബലുകളുടെ ഡാറ്റാഫ്രെയിം ആകാം: + + ```python + cuisines_label_df = cuisines_df['cuisine'] + cuisines_label_df.head() + ``` + + ഇത് ഇങ്ങനെ കാണപ്പെടും: + + ```output + 0 indian + 1 indian + 2 indian + 3 indian + 4 indian + Name: cuisine, dtype: object + ``` + +1. ആ `Unnamed: 0` കോളവും `cuisine` കോളവും `drop()` ഉപയോഗിച്ച് ഒഴിവാക്കുക. ബാക്കി ഡാറ്റ പരിശീലന ഫീച്ചറുകളായി സേവ് ചെയ്യുക: + + ```python + cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1) + cuisines_feature_df.head() + ``` + + നിങ്ങളുടെ ഫീച്ചറുകൾ ഇങ്ങനെ കാണപ്പെടും: + +| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini | +| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: | +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | + +ഇപ്പോൾ നിങ്ങൾ മോഡൽ പരിശീലിപ്പിക്കാൻ തയ്യാറാണ്! + +## നിങ്ങളുടെ ക്ലാസിഫയർ തിരഞ്ഞെടുക്കൽ + +ഇപ്പോൾ നിങ്ങളുടെ ഡാറ്റ ശുദ്ധവും പരിശീലനത്തിനും തയ്യാറുമാകുമ്പോൾ, ജോലിക്ക് ഏത് ആൽഗോരിതം ഉപയോഗിക്കണമെന്ന് തീരുമാനിക്കണം. + +Scikit-learn ക്ലാസിഫിക്കേഷൻ സൂപ്പർവൈസ്ഡ് ലേണിങ്ങിന്റെ കീഴിൽ ഗ്രൂപ്പ് ചെയ്യുന്നു, ആ വിഭാഗത്തിൽ നിങ്ങൾക്ക് ക്ലാസിഫൈ ചെയ്യാനുള്ള നിരവധി മാർഗങ്ങൾ കാണാം. [വിവിധത്വം](https://scikit-learn.org/stable/supervised_learning.html) ആദ്യ കാഴ്ചയിൽ തന്നെ ആശ്ചര്യപ്പെടുത്തുന്നതാണ്. താഴെപ്പറയുന്ന രീതികൾ എല്ലാം ക്ലാസിഫിക്കേഷൻ സാങ്കേതികതകൾ ഉൾക്കൊള്ളുന്നു: + +- ലീനിയർ മോഡലുകൾ +- സപ്പോർട്ട് വെക്ടർ മെഷീനുകൾ +- സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയന്റ് ഡിസെന്റ് +- അടുത്തുള്ള അയൽക്കാർ +- ഗൗസിയൻ പ്രോസസുകൾ +- ഡിസിഷൻ ട്രീകൾ +- എൻസംബിൾ രീതികൾ (വോട്ടിംഗ് ക്ലാസിഫയർ) +- മൾട്ടിക്ലാസ്, മൾട്ടി ഔട്ട്പുട്ട് ആൽഗോരിതങ്ങൾ (മൾട്ടിക്ലാസ്, മൾട്ടിലേബൽ ക്ലാസിഫിക്കേഷൻ, മൾട്ടിക്ലാസ്-മൾട്ടി ഔട്ട്പുട്ട് ക്ലാസിഫിക്കേഷൻ) + +> [ന്യൂറൽ നെറ്റ്വർക്കുകൾ](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification) ഡാറ്റ ക്ലാസിഫൈ ചെയ്യാൻ ഉപയോഗിക്കാം, പക്ഷേ അത് ഈ പാഠത്തിന്റെ പരിധിക്ക് പുറത്താണ്. + +### ഏത് ക്ലാസിഫയർ തിരഞ്ഞെടുക്കണം? + +അപ്പോൾ, ഏത് ക്ലാസിഫയർ തിരഞ്ഞെടുക്കണം? പലതും പരീക്ഷിച്ച് നല്ല ഫലം കാണുന്നത് പരീക്ഷിക്കാൻ ഒരു മാർഗമാണ്. Scikit-learn ഒരു [സൈഡ്-ബൈ-സൈഡ് താരതമ്യം](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) ഒരുക്കിയിട്ടുണ്ട്, KNeighbors, SVC രണ്ട് രീതികൾ, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB, QuadraticDiscrinationAnalysis എന്നിവയുടെ ഫലങ്ങൾ ദൃശ്യമായി കാണിക്കുന്നു: + +![ക്ലാസിഫയറുകളുടെ താരതമ്യം](../../../../translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.ml.png) +> Scikit-learn ഡോക്യുമെന്റേഷനിൽ നിന്നുള്ള പ്ലോട്ടുകൾ + +> AutoML ഈ പ്രശ്നം ക്ലൗഡിൽ ഈ താരതമ്യങ്ങൾ നടത്തിക്കൊണ്ട് സുതാര്യമായി പരിഹരിക്കുന്നു, നിങ്ങളുടെ ഡാറ്റയ്ക്ക് ഏറ്റവും അനുയോജ്യമായ ആൽഗോരിതം തിരഞ്ഞെടുക്കാൻ സഹായിക്കുന്നു. [ഇവിടെ](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott) പരീക്ഷിക്കുക + +### ഒരു മെച്ചപ്പെട്ട സമീപനം + +വളരെ അനുമാനിച്ച് തിരഞ്ഞെടുക്കുന്നതിന് പകരം, ഡൗൺലോഡ് ചെയ്യാവുന്ന [ML ചീറ്റ് ഷീറ്റ്](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) ൽ ഉള്ള ആശയങ്ങൾ പിന്തുടരുക. ഇവിടെ, നമ്മുടെ മൾട്ടിക്ലാസ് പ്രശ്നത്തിന് ചില തിരഞ്ഞെടുപ്പുകൾ കാണാം: + +![മൾട്ടിക്ലാസ് പ്രശ്നങ്ങൾക്ക് ചീറ്റ് ഷീറ്റ്](../../../../translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.ml.png) +> മൈക്രോസോഫ്റ്റിന്റെ ആൽഗോരിതം ചീറ്റ് ഷീറ്റിന്റെ ഒരു ഭാഗം, മൾട്ടിക്ലാസ് ക്ലാസിഫിക്കേഷൻ ഓപ്ഷനുകൾ വിശദീകരിക്കുന്നു + +✅ ഈ ചീറ്റ് ഷീറ്റ് ഡൗൺലോഡ് ചെയ്ത് പ്രിന്റ് ചെയ്ത് നിങ്ങളുടെ ഭിത്തിയിൽ തൂക്കുക! + +### കാരണവിവരണം + +നമുക്ക് നമുക്ക് ഉള്ള നിയന്ത്രണങ്ങൾ പരിഗണിച്ച് വ്യത്യസ്ത സമീപനങ്ങൾക്കായി കാരണവിവരണം നോക്കാം: + +- **ന്യൂറൽ നെറ്റ്വർക്കുകൾ വളരെ ഭാരമുള്ളവയാണ്**. നമ്മുടെ ശുദ്ധവും കുറഞ്ഞ ഡാറ്റാസെറ്റും, നോട്ട്ബുക്കുകൾ വഴി ലോക്കലായി പരിശീലനം നടത്തുന്നതും കണക്കിലെടുത്താൽ, ന്യൂറൽ നെറ്റ്വർക്കുകൾ ഈ ജോലിക്ക് ഭാരമുള്ളവയാണ്. +- **രണ്ട്-ക്ലാസ് ക്ലാസിഫയർ ഇല്ല**. രണ്ട്-ക്ലാസ് ക്ലാസിഫയർ ഉപയോഗിക്കാത്തതിനാൽ, ഒന്ന്-വേഴ്സ്-ആൾ (one-vs-all) ഒഴിവാക്കാം. +- **ഡിസിഷൻ ട്രീ അല്ലെങ്കിൽ ലോജിസ്റ്റിക് റെഗ്രഷൻ പ്രവർത്തിക്കാം**. ഒരു ഡിസിഷൻ ട്രീ പ്രവർത്തിക്കാം, അല്ലെങ്കിൽ മൾട്ടിക്ലാസ് ഡാറ്റയ്ക്ക് ലോജിസ്റ്റിക് റെഗ്രഷൻ. +- **മൾട്ടിക്ലാസ് ബൂസ്റ്റഡ് ഡിസിഷൻ ട്രീകൾ വ്യത്യസ്ത പ്രശ്നം പരിഹരിക്കുന്നു**. മൾട്ടിക്ലാസ് ബൂസ്റ്റഡ് ഡിസിഷൻ ട്രീ സാധാരണ റാങ്കിംഗ് നിർമ്മാണം പോലുള്ള നോൺപാരാമെട്രിക് ടാസ്കുകൾക്കാണ് അനുയോജ്യം, അതിനാൽ നമ്മുടെ ജോലിക്ക് ഉപയോഗപ്രദമല്ല. + +### Scikit-learn ഉപയോഗിച്ച് + +നാം Scikit-learn ഉപയോഗിച്ച് ഡാറ്റ വിശകലനം ചെയ്യും. എന്നാൽ, Scikit-learn-ൽ ലോജിസ്റ്റിക് റെഗ്രഷൻ ഉപയോഗിക്കുന്ന നിരവധി മാർഗങ്ങൾ ഉണ്ട്. [പാരാമീറ്ററുകൾ](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression) നോക്കുക. + +പ്രധാനമായും രണ്ട് പാരാമീറ്ററുകൾ - `multi_class` ഉം `solver` ഉം - നമുക്ക് നിർദ്ദേശിക്കേണ്ടതാണ്, Scikit-learn-ൽ ലോജിസ്റ്റിക് റെഗ്രഷൻ നടത്തുമ്പോൾ. `multi_class` ഒരു പ്രത്യേക പെരുമാറ്റം പ്രയോഗിക്കുന്നു. `solver` ആൽഗോരിതം തിരഞ്ഞെടുക്കുന്നു. എല്ലാ സോൾവറുകളും എല്ലാ `multi_class` മൂല്യങ്ങളോടും പൊരുത്തപ്പെടുന്നില്ല. + +ഡോക്യുമെന്റേഷനുസരിച്ച്, മൾട്ടിക്ലാസ് കേസിൽ, പരിശീലന ആൽഗോരിതം: + +- **`multi_class` ഓപ്ഷൻ `ovr` ആണെങ്കിൽ ഒന്ന്-വേഴ്സ്-റെസ്റ്റ് (OvR) സ്കീം ഉപയോഗിക്കുന്നു** +- **`multi_class` ഓപ്ഷൻ `multinomial` ആണെങ്കിൽ ക്രോസ്-എൻട്രോപി ലോസ് ഉപയോഗിക്കുന്നു**. (ഇപ്പോൾ `multinomial` ഓപ്ഷൻ ‘lbfgs’, ‘sag’, ‘saga’, ‘newton-cg’ സോൾവറുകൾക്ക് മാത്രമേ പിന്തുണയുള്ളൂ.)" + +> 🎓 ഇവിടെ 'സ്കീം' എന്നത് 'ovr' (ഒന്ന്-വേഴ്സ്-റെസ്റ്റ്) അല്ലെങ്കിൽ 'multinomial' ആകാം. ലോജിസ്റ്റിക് റെഗ്രഷൻ ബൈനറി ക്ലാസിഫിക്കേഷൻക്ക് രൂപകൽപ്പന ചെയ്തതിനാൽ, ഈ സ്കീമുകൾ മൾട്ടിക്ലാസ് ക്ലാസിഫിക്കേഷൻ ടാസ്കുകൾക്ക് മികച്ച പിന്തുണ നൽകുന്നു. [മൂലം](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/) + +> 🎓 'സോൾവർ' എന്നത് "ഓപ്റ്റിമൈസേഷൻ പ്രശ്നത്തിൽ ഉപയോഗിക്കുന്ന ആൽഗോരിതം" എന്നാണ് നിർവചിക്കുന്നത്. [മൂലം](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression). + +Scikit-learn ഈ പട്ടിക നൽകുന്നു, സോൾവറുകൾ വിവിധ ഡാറ്റാ ഘടനകളിൽ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് വിശദീകരിക്കാൻ: + +![സോൾവറുകൾ](../../../../translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.ml.png) + +## അഭ്യാസം - ഡാറ്റ വിഭജിക്കുക + +നിങ്ങൾ അടുത്ത പാഠത്തിൽ പഠിച്ച ലോജിസ്റ്റിക് റെഗ്രഷൻ ആദ്യ പരിശീലന ശ്രമമായി ഉപയോഗിക്കാം. +`train_test_split()` വിളിച്ച് നിങ്ങളുടെ ഡാറ്റ പരിശീലനവും പരിശോധനയും ഗ്രൂപ്പുകളായി വിഭജിക്കുക: + +```python +X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3) +``` + +## അഭ്യാസം - ലോജിസ്റ്റിക് റെഗ്രഷൻ പ്രയോഗിക്കുക + +നിങ്ങൾ മൾട്ടിക്ലാസ് കേസ് ഉപയോഗിക്കുന്നതിനാൽ, ഏത് _സ്കീം_ ഉപയോഗിക്കണമെന്ന്, ഏത് _സോൾവർ_ സെറ്റ് ചെയ്യണമെന്ന് തിരഞ്ഞെടുക്കണം. മൾട്ടിക്ലാസ് സെറ്റിങ്ങിൽ `multi_class` `ovr` ആയും സോൾവർ **liblinear** ആയും സെറ്റ് ചെയ്ത് LogisticRegression ഉപയോഗിച്ച് പരിശീലിപ്പിക്കുക. + +1. `multi_class` `ovr` ആയും സോൾവർ `liblinear` ആയും സെറ്റ് ചെയ്ത് ലോജിസ്റ്റിക് റെഗ്രഷൻ സൃഷ്ടിക്കുക: + + ```python + lr = LogisticRegression(multi_class='ovr',solver='liblinear') + model = lr.fit(X_train, np.ravel(y_train)) + + accuracy = model.score(X_test, y_test) + print ("Accuracy is {}".format(accuracy)) + ``` + + ✅ സാധാരണയായി ഡിഫോൾട്ട് ആയി സെറ്റ് ചെയ്യുന്ന `lbfgs` പോലുള്ള മറ്റൊരു സോൾവർ പരീക്ഷിക്കുക + + > ശ്രദ്ധിക്കുക, ആവശ്യമായപ്പോൾ Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) ഫംഗ്ഷൻ ഉപയോഗിച്ച് ഡാറ്റ ഫ്ലാറ്റൻ ചെയ്യുക. + + കൃത്യത **80%** ക്കും മുകളിൽ നല്ലതാണ്! + +1. ഡാറ്റയുടെ ഒരു വരി (#50) പരീക്ഷിച്ച് ഈ മോഡൽ പ്രവർത്തനം കാണാം: + + ```python + print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}') + print(f'cuisine: {y_test.iloc[50]}') + ``` + + ഫലം പ്രിന്റ് ചെയ്യും: + + ```output + ingredients: Index(['cilantro', 'onion', 'pea', 'potato', 'tomato', 'vegetable_oil'], dtype='object') + cuisine: indian + ``` + + ✅ വ്യത്യസ്തമായ ഒരു വരി നമ്പർ പരീക്ഷിച്ച് ഫലങ്ങൾ പരിശോധിക്കുക + +1. കൂടുതൽ ആഴത്തിൽ പരിശോധിക്കുമ്പോൾ, ഈ പ്രവചനത്തിന്റെ കൃത്യത പരിശോധിക്കാം: + + ```python + test= X_test.iloc[50].values.reshape(-1, 1).T + proba = model.predict_proba(test) + classes = model.classes_ + resultdf = pd.DataFrame(data=proba, columns=classes) + + topPrediction = resultdf.T.sort_values(by=[0], ascending = [False]) + topPrediction.head() + ``` + + ഫലം പ്രിന്റ് ചെയ്യുന്നു - ഇന്ത്യൻ ഭക്ഷണമാണ് ഏറ്റവും സാധ്യതയുള്ള പ്രവചനമായി: + + | | 0 | + | -------: | -------: | + | indian | 0.715851 | + | chinese | 0.229475 | + | japanese | 0.029763 | + | korean | 0.017277 | + | thai | 0.007634 | + + ✅ മോഡൽ ഈ ഭക്ഷണം ഇന്ത്യൻ ഭക്ഷണമാണെന്ന് എങ്ങനെ ഉറപ്പുള്ളതായി കാണിക്കുന്നു എന്ന് വിശദീകരിക്കാമോ? + +1. റെഗ്രഷൻ പാഠങ്ങളിൽ ചെയ്തതുപോലെ ക്ലാസിഫിക്കേഷൻ റിപ്പോർട്ട് പ്രിന്റ് ചെയ്ത് കൂടുതൽ വിശദാംശങ്ങൾ നേടുക: + + ```python + y_pred = model.predict(X_test) + print(classification_report(y_test,y_pred)) + ``` + + | | precision | recall | f1-score | support | + | ------------ | --------- | ------ | -------- | ------- | + | chinese | 0.73 | 0.71 | 0.72 | 229 | + | indian | 0.91 | 0.93 | 0.92 | 254 | + | japanese | 0.70 | 0.75 | 0.72 | 220 | + | korean | 0.86 | 0.76 | 0.81 | 242 | + | thai | 0.79 | 0.85 | 0.82 | 254 | + | accuracy | 0.80 | 1199 | | | + | macro avg | 0.80 | 0.80 | 0.80 | 1199 | + | weighted avg | 0.80 | 0.80 | 0.80 | 1199 | + +## 🚀ചലഞ്ച് + +ഈ പാഠത്തിൽ, നിങ്ങൾ ശുദ്ധീകരിച്ച ഡാറ്റ ഉപയോഗിച്ച് ഒരു യന്ത്രം പഠന മോഡൽ നിർമ്മിച്ചു, ഇത് ഒരു സീരീസ് ഘടകങ്ങളുടെ അടിസ്ഥാനത്തിൽ ഒരു ദേശീയ ഭക്ഷണം പ്രവചിക്കാനാകും. ഡാറ്റ ക്ലാസിഫൈ ചെയ്യാൻ Scikit-learn നൽകുന്ന നിരവധി ഓപ്ഷനുകൾ വായിക്കാൻ ചില സമയം ചെലവഴിക്കുക. 'solver' എന്ന ആശയം കൂടുതൽ ആഴത്തിൽ പഠിച്ച് പിന്നിലെ പ്രവർത്തനം മനസ്സിലാക്കുക. + +## [പാഠാനന്തര ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ലോജിസ്റ്റിക് റെഗ്രഷന്റെ പിന്നിലെ ഗണിതം കുറച്ച് കൂടുതൽ പഠിക്കുക [ഈ പാഠത്തിൽ](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf) +## അസൈൻമെന്റ് + +[സോൾവറുകൾ പഠിക്കുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/4-Classification/2-Classifiers-1/assignment.md b/translations/ml/4-Classification/2-Classifiers-1/assignment.md new file mode 100644 index 000000000..065cb2f2e --- /dev/null +++ b/translations/ml/4-Classification/2-Classifiers-1/assignment.md @@ -0,0 +1,25 @@ + +# സോൾവറുകൾ പഠിക്കുക +## നിർദ്ദേശങ്ങൾ + +ഈ പാഠത്തിൽ നിങ്ങൾക്ക് ആൽഗോരിതങ്ങൾ മെഷീൻ ലേണിംഗ് പ്രക്രിയയുമായി ചേർത്ത് കൃത്യമായ മോഡൽ സൃഷ്ടിക്കുന്ന വിവിധ സോൾവറുകളെക്കുറിച്ച് പഠിക്കാനായി. പാഠത്തിൽ നൽകിയ സോൾവറുകൾ വഴി കടന്നുപോകുകയും രണ്ട് സോൾവറുകൾ തിരഞ്ഞെടുക്കുകയും ചെയ്യുക. നിങ്ങളുടെ സ്വന്തം വാക്കുകളിൽ, ഈ രണ്ട് സോൾവറുകളെ താരതമ്യം ചെയ്ത് വ്യത്യാസങ്ങൾ വിശദീകരിക്കുക. അവ ഏത് തരത്തിലുള്ള പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നു? വിവിധ ഡാറ്റാ ഘടനകളുമായി അവ എങ്ങനെ പ്രവർത്തിക്കുന്നു? ഒരാളെ മറ്റൊരാളിനേക്കാൾ തിരഞ്ഞെടുക്കേണ്ടത് എന്തുകൊണ്ടാണ്? +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണാർത്ഥം | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------ | ---------------------------- | +| | രണ്ട് പാരഗ്രാഫുകളുള്ള ഒരു .doc ഫയൽ സമർപ്പിച്ചിരിക്കുന്നു, ഓരോ സോൾവറിനും ഒന്ന്, അവയെ ആലോചനാപൂർവ്വം താരതമ്യം ചെയ്യുന്നു. | ഒരു പാരഗ്രാഫ് മാത്രം ഉള്ള .doc ഫയൽ സമർപ്പിച്ചിരിക്കുന്നു | അസൈൻമെന്റ് അപൂർണ്ണമാണ് | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/4-Classification/2-Classifiers-1/notebook.ipynb b/translations/ml/4-Classification/2-Classifiers-1/notebook.ipynb new file mode 100644 index 000000000..893ea3f89 --- /dev/null +++ b/translations/ml/4-Classification/2-Classifiers-1/notebook.ipynb @@ -0,0 +1,41 @@ +{ + "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": "68829b06b4dcd512d3327849191f4d7f", + "translation_date": "2025-12-19T17:03:23+00:00", + "source_file": "4-Classification/2-Classifiers-1/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# വർഗ്ഗീകരണ മോഡലുകൾ നിർമ്മിക്കുക\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/ml/4-Classification/2-Classifiers-1/solution/Julia/README.md b/translations/ml/4-Classification/2-Classifiers-1/solution/Julia/README.md new file mode 100644 index 000000000..952f282a5 --- /dev/null +++ b/translations/ml/4-Classification/2-Classifiers-1/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ഇത് ഒരു താൽക്കാലിക പ്ലേസ്ഹോൾഡർ ആണ് + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb b/translations/ml/4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb new file mode 100644 index 000000000..a26a6a851 --- /dev/null +++ b/translations/ml/4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb @@ -0,0 +1,1302 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_11-R.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "6ea6a5171b1b99b7b5a55f7469c048d2", + "translation_date": "2025-12-19T17:21:14+00:00", + "source_file": "4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb", + "language_code": "ml" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ഒരു വർഗ്ഗീകരണ മോഡൽ നിർമ്മിക്കുക: രുചികരമായ ഏഷ്യൻ மற்றும் ഇന്ത്യൻ ഭക്ഷണങ്ങൾ\n" + ], + "metadata": { + "id": "zs2woWv_HoE8" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Cuisine classifiers 1\n", + "\n", + "ഈ പാഠത്തിൽ, നാം ഒരു ഗ്രൂപ്പ് ഘടകങ്ങളുടെ അടിസ്ഥാനത്തിൽ ഒരു നിശ്ചിത ദേശീയ ഭക്ഷണശൈലി പ്രവചിക്കാൻ വിവിധ ക്ലാസിഫയർസുകൾ പരിശോധിക്കും. ഇതു ചെയ്യുമ്പോൾ, ക്ലാസിഫിക്കേഷൻ പ്രവർത്തനങ്ങൾക്ക് ആൽഗോരിതങ്ങൾ എങ്ങനെ ഉപയോഗിക്കാമെന്ന് കുറച്ച് കൂടുതൽ പഠിക്കും.\n", + "\n", + "### [**പ്രീ-ലെക്ചർ ക്വിസ്**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/21/)\n", + "\n", + "### **തയാറെടുപ്പ്**\n", + "\n", + "ഈ പാഠം നമ്മുടെ [മുൻപത്തെ പാഠം](https://github.com/microsoft/ML-For-Beginners/blob/main/4-Classification/1-Introduction/solution/lesson_10-R.ipynb) അടിസ്ഥാനമാക്കി നിർമ്മിച്ചിരിക്കുന്നു, അവിടെ:\n", + "\n", + "- ഏഷ്യയും ഇന്ത്യയും ഉൾപ്പെടെയുള്ള എല്ലാ മനോഹരമായ ഭക്ഷണശൈലികളെക്കുറിച്ചുള്ള ഡാറ്റാസെറ്റിന്റെ സഹായത്തോടെ ക്ലാസിഫിക്കേഷനുകൾക്ക് ഒരു സൗമ്യമായ പരിചയം നൽകി 😋.\n", + "\n", + "- ഡാറ്റ തയ്യാറാക്കാനും ശുദ്ധീകരിക്കാനും ചില [dplyr ക്രിയകൾ](https://dplyr.tidyverse.org/) പരിശോധിച്ചു.\n", + "\n", + "- ggplot2 ഉപയോഗിച്ച് മനോഹരമായ ദൃശ്യവത്കരണങ്ങൾ നിർമ്മിച്ചു.\n", + "\n", + "- അസമതുലിത ഡാറ്റ കൈകാര്യം ചെയ്യുന്നതിന് [recipes](https://recipes.tidymodels.org/articles/Simple_Example.html) ഉപയോഗിച്ച് പ്രീപ്രോസസ്സിംഗ് എങ്ങനെ ചെയ്യാമെന്ന് കാണിച്ചു.\n", + "\n", + "- നമ്മുടെ റെസിപ്പി `prep` ചെയ്ത് `bake` ചെയ്യുന്നതിലൂടെ അത് ഉദ്ദേശിച്ച പോലെ പ്രവർത്തിക്കുന്നുണ്ടെന്ന് സ്ഥിരീകരിച്ചു.\n", + "\n", + "#### **ആവശ്യമായ മുൻപരിചയം**\n", + "\n", + "ഈ പാഠത്തിനായി, ഡാറ്റ ശുദ്ധീകരിക്കാനും, തയ്യാറാക്കാനും, ദൃശ്യവത്കരിക്കാനും താഴെപ്പറയുന്ന പാക്കേജുകൾ ആവശ്യമാണ്:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) ഒരു [R പാക്കേജുകളുടെ സമാഹാരമാണ്](https://www.tidyverse.org/packages) ഡാറ്റാ സയൻസ് വേഗത്തിലും എളുപ്പത്തിലും രസകരവുമാക്കാൻ!\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ഫ്രെയിംവർക്ക് മോഡലിംഗ്, മെഷീൻ ലേണിങ്ങിനുള്ള [പാക്കേജുകളുടെ സമാഹാരമാണ്](https://www.tidymodels.org/packages/).\n", + "\n", + "- `themis`: [themis പാക്കേജ്](https://themis.tidymodels.org/) അസമതുലിത ഡാറ്റ കൈകാര്യം ചെയ്യുന്നതിനുള്ള അധിക റെസിപ്പി ഘട്ടങ്ങൾ നൽകുന്നു.\n", + "\n", + "- `nnet`: [nnet പാക്കേജ്](https://cran.r-project.org/web/packages/nnet/nnet.pdf) ഒറ്റ ഹിഡൻ ലെയർ ഉള്ള ഫീഡ്-ഫോർവേഡ് ന്യൂറൽ നെറ്റ്വർക്കുകളും, മൾട്ടിനോമിയൽ ലോജിസ്റ്റിക് റെഗ്രഷൻ മോഡലുകളും കണക്കാക്കാൻ ഫംഗ്ഷനുകൾ നൽകുന്നു.\n", + "\n", + "നിങ്ങൾക്ക് ഇവ ഇന്സ്റ്റാൾ ചെയ്യാം:\n" + ], + "metadata": { + "id": "iDFOb3ebHwQC" + } + }, + { + "cell_type": "markdown", + "source": [ + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"DataExplorer\", \"here\"))`\n", + "\n", + "മറ്റൊരു വഴിയായി, താഴെ കൊടുത്തിരിക്കുന്ന സ്ക്രിപ്റ്റ് ഈ മോഡ്യൂൾ പൂർത്തിയാക്കാൻ ആവശ്യമായ പാക്കേജുകൾ നിങ്ങൾക്കുണ്ടോ എന്ന് പരിശോധിച്ച് അവ ഇല്ലെങ്കിൽ അവ ഇൻസ്റ്റാൾ ചെയ്യുന്നു.\n" + ], + "metadata": { + "id": "4V85BGCjII7F" + } + }, + { + "cell_type": "code", + "execution_count": 2, + "source": [ + "suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\r\n", + "\r\n", + "pacman::p_load(tidyverse, tidymodels, themis, here)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Loading required package: pacman\n", + "\n" + ] + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "an5NPyyKIKNR", + "outputId": "834d5e74-f4b8-49f9-8ab5-4c52ff2d7bc8" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഇപ്പോൾ, നമുക്ക് തുടക്കം കുറിക്കാം!\n", + "\n", + "## 1. ഡാറ്റയെ പരിശീലനവും പരിശോധനാ സെറ്റുകളായി വിഭജിക്കുക.\n", + "\n", + "നമ്മുടെ മുൻപത്തെ പാഠത്തിൽ നിന്നുള്ള ചില ഘട്ടങ്ങൾ തിരഞ്ഞെടുക്കുന്നതിലൂടെ നമുക്ക് തുടങ്ങാം.\n", + "\n", + "### വ്യത്യസ്ത പാചകശൈലികൾ തമ്മിൽ ആശയക്കുഴപ്പം സൃഷ്ടിക്കുന്ന ഏറ്റവും സാധാരണമായ ഘടകങ്ങൾ `dplyr::select()` ഉപയോഗിച്ച് ഒഴിവാക്കുക.\n", + "\n", + "എല്ലാവർക്കും അരി, വെളുത്തുള്ളി, ഇഞ്ചി ഇഷ്ടമാണ്!\n" + ], + "metadata": { + "id": "0ax9GQLBINVv" + } + }, + { + "cell_type": "code", + "execution_count": 3, + "source": [ + "# Load the original cuisines data\r\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/4-Classification/data/cuisines.csv\")\r\n", + "\r\n", + "# Drop id column, rice, garlic and ginger from our original data set\r\n", + "df_select <- df %>% \r\n", + " select(-c(1, rice, garlic, ginger)) %>%\r\n", + " # Encode cuisine column as categorical\r\n", + " mutate(cuisine = factor(cuisine))\r\n", + "\r\n", + "# Display new data set\r\n", + "df_select %>% \r\n", + " slice_head(n = 5)\r\n", + "\r\n", + "# Display distribution of cuisines\r\n", + "df_select %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(desc(n))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "New names:\n", + "* `` -> ...1\n", + "\n", + "\u001b[1m\u001b[1mRows: \u001b[1m\u001b[22m\u001b[34m\u001b[34m2448\u001b[34m\u001b[39m \u001b[1m\u001b[1mColumns: \u001b[1m\u001b[22m\u001b[34m\u001b[34m385\u001b[34m\u001b[39m\n", + "\n", + "\u001b[36m──\u001b[39m \u001b[1m\u001b[1mColumn specification\u001b[1m\u001b[22m \u001b[36m────────────────────────────────────────────────────────\u001b[39m\n", + "\u001b[1mDelimiter:\u001b[22m \",\"\n", + "\u001b[31mchr\u001b[39m (1): cuisine\n", + "\u001b[32mdbl\u001b[39m (384): ...1, almond, angelica, anise, anise_seed, apple, apple_brandy, a...\n", + "\n", + "\n", + "\u001b[36mℹ\u001b[39m Use \u001b[30m\u001b[47m\u001b[30m\u001b[47m`spec()`\u001b[47m\u001b[30m\u001b[49m\u001b[39m to retrieve the full column specification for this data.\n", + "\u001b[36mℹ\u001b[39m Specify the column types or set \u001b[30m\u001b[47m\u001b[30m\u001b[47m`show_col_types = FALSE`\u001b[47m\u001b[30m\u001b[49m\u001b[39m to quiet this message.\n", + "\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine almond angelica anise anise_seed apple apple_brandy apricot armagnac\n", + "1 indian 0 0 0 0 0 0 0 0 \n", + "2 indian 1 0 0 0 0 0 0 0 \n", + "3 indian 0 0 0 0 0 0 0 0 \n", + "4 indian 0 0 0 0 0 0 0 0 \n", + "5 indian 0 0 0 0 0 0 0 0 \n", + " artemisia ⋯ whiskey white_bread white_wine whole_grain_wheat_flour wine wood\n", + "1 0 ⋯ 0 0 0 0 0 0 \n", + "2 0 ⋯ 0 0 0 0 0 0 \n", + "3 0 ⋯ 0 0 0 0 0 0 \n", + "4 0 ⋯ 0 0 0 0 0 0 \n", + "5 0 ⋯ 0 0 0 0 0 0 \n", + " yam yeast yogurt zucchini\n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "5 0 0 1 0 " + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 381\n", + "\n", + "| cuisine <fct> | almond <dbl> | angelica <dbl> | anise <dbl> | anise_seed <dbl> | apple <dbl> | apple_brandy <dbl> | apricot <dbl> | armagnac <dbl> | artemisia <dbl> | ⋯ ⋯ | whiskey <dbl> | white_bread <dbl> | white_wine <dbl> | whole_grain_wheat_flour <dbl> | wine <dbl> | wood <dbl> | yam <dbl> | yeast <dbl> | yogurt <dbl> | zucchini <dbl> |\n", + "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", + "| indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| indian | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 381\n", + "\\begin{tabular}{lllllllllllllllllllll}\n", + " cuisine & almond & angelica & anise & anise\\_seed & apple & apple\\_brandy & apricot & armagnac & artemisia & ⋯ & whiskey & white\\_bread & white\\_wine & whole\\_grain\\_wheat\\_flour & wine & wood & yam & yeast & yogurt & zucchini\\\\\n", + " & & & & & & & & & & ⋯ & & & & & & & & & & \\\\\n", + "\\hline\n", + "\t indian & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t indian & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t indian & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t indian & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t indian & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 381
cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiawhiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
<fct><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
indian0000000000000000000
indian1000000000000000000
indian0000000000000000000
indian0000000000000000000
indian0000000000000000010
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine n \n", + "1 korean 799\n", + "2 indian 598\n", + "3 chinese 442\n", + "4 japanese 320\n", + "5 thai 289" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| cuisine <fct> | n <int> |\n", + "|---|---|\n", + "| korean | 799 |\n", + "| indian | 598 |\n", + "| chinese | 442 |\n", + "| japanese | 320 |\n", + "| thai | 289 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " cuisine & n\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t korean & 799\\\\\n", + "\t indian & 598\\\\\n", + "\t chinese & 442\\\\\n", + "\t japanese & 320\\\\\n", + "\t thai & 289\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
cuisinen
<fct><int>
korean 799
indian 598
chinese 442
japanese320
thai 289
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 735 + }, + "id": "jhCrrH22IWVR", + "outputId": "d444a85c-1d8b-485f-bc4f-8be2e8f8217c" + } + }, + { + "cell_type": "markdown", + "source": [ + "Perfect! ഇപ്പോൾ, ഡാറ്റ 70% പരിശീലനത്തിനും 30% പരിശോധനയ്ക്കും വിഭജിക്കാനുള്ള സമയം. പരിശീലനവും പരിശോധനാ ഡാറ്റാസെറ്റുകളിലും ഓരോ ക്യൂസിനിയുടെ അനുപാതം നിലനിർത്താൻ `stratification` സാങ്കേതിക വിദ്യയും ഉപയോഗിക്കും.\n", + "\n", + "[Tidymodels-ലെ ഒരു പാക്കേജ് ആയ rsample](https://rsample.tidymodels.org/) കാര്യക്ഷമമായ ഡാറ്റ വിഭജനം, റീസാമ്പ്ലിംഗ് എന്നിവയ്ക്കുള്ള അടിസ്ഥാനസൗകര്യം നൽകുന്നു:\n" + ], + "metadata": { + "id": "AYTjVyajIdny" + } + }, + { + "cell_type": "code", + "execution_count": 4, + "source": [ + "# Load the core Tidymodels packages into R session\r\n", + "library(tidymodels)\r\n", + "\r\n", + "# Create split specification\r\n", + "set.seed(2056)\r\n", + "cuisines_split <- initial_split(data = df_select,\r\n", + " strata = cuisine,\r\n", + " prop = 0.7)\r\n", + "\r\n", + "# Extract the data in each split\r\n", + "cuisines_train <- training(cuisines_split)\r\n", + "cuisines_test <- testing(cuisines_split)\r\n", + "\r\n", + "# Print the number of cases in each split\r\n", + "cat(\"Training cases: \", nrow(cuisines_train), \"\\n\",\r\n", + " \"Test cases: \", nrow(cuisines_test), sep = \"\")\r\n", + "\r\n", + "# Display the first few rows of the training set\r\n", + "cuisines_train %>% \r\n", + " slice_head(n = 5)\r\n", + "\r\n", + "\r\n", + "# Display distribution of cuisines in the training set\r\n", + "cuisines_train %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(desc(n))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Training cases: 1712\n", + "Test cases: 736" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine almond angelica anise anise_seed apple apple_brandy apricot armagnac\n", + "1 chinese 0 0 0 0 0 0 0 0 \n", + "2 chinese 0 0 0 0 0 0 0 0 \n", + "3 chinese 0 0 0 0 0 0 0 0 \n", + "4 chinese 0 0 0 0 0 0 0 0 \n", + "5 chinese 0 0 0 0 0 0 0 0 \n", + " artemisia ⋯ whiskey white_bread white_wine whole_grain_wheat_flour wine wood\n", + "1 0 ⋯ 0 0 0 0 1 0 \n", + "2 0 ⋯ 0 0 0 0 1 0 \n", + "3 0 ⋯ 0 0 0 0 0 0 \n", + "4 0 ⋯ 0 0 0 0 0 0 \n", + "5 0 ⋯ 0 0 0 0 0 0 \n", + " yam yeast yogurt zucchini\n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "5 0 0 0 0 " + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 381\n", + "\n", + "| cuisine <fct> | almond <dbl> | angelica <dbl> | anise <dbl> | anise_seed <dbl> | apple <dbl> | apple_brandy <dbl> | apricot <dbl> | armagnac <dbl> | artemisia <dbl> | ⋯ ⋯ | whiskey <dbl> | white_bread <dbl> | white_wine <dbl> | whole_grain_wheat_flour <dbl> | wine <dbl> | wood <dbl> | yam <dbl> | yeast <dbl> | yogurt <dbl> | zucchini <dbl> |\n", + "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 381\n", + "\\begin{tabular}{lllllllllllllllllllll}\n", + " cuisine & almond & angelica & anise & anise\\_seed & apple & apple\\_brandy & apricot & armagnac & artemisia & ⋯ & whiskey & white\\_bread & white\\_wine & whole\\_grain\\_wheat\\_flour & wine & wood & yam & yeast & yogurt & zucchini\\\\\n", + " & & & & & & & & & & ⋯ & & & & & & & & & & \\\\\n", + "\\hline\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 381
cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiawhiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
<fct><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
chinese0000000000000100000
chinese0000000000000100000
chinese0000000000000000000
chinese0000000000000000000
chinese0000000000000000000
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine n \n", + "1 korean 559\n", + "2 indian 418\n", + "3 chinese 309\n", + "4 japanese 224\n", + "5 thai 202" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| cuisine <fct> | n <int> |\n", + "|---|---|\n", + "| korean | 559 |\n", + "| indian | 418 |\n", + "| chinese | 309 |\n", + "| japanese | 224 |\n", + "| thai | 202 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " cuisine & n\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t korean & 559\\\\\n", + "\t indian & 418\\\\\n", + "\t chinese & 309\\\\\n", + "\t japanese & 224\\\\\n", + "\t thai & 202\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
cuisinen
<fct><int>
korean 559
indian 418
chinese 309
japanese224
thai 202
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 535 + }, + "id": "w5FWIkEiIjdN", + "outputId": "2e195fd9-1a8f-4b91-9573-cce5582242df" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 2. അസമതുല്യമായ ഡാറ്റ കൈകാര്യം ചെയ്യുക\n", + "\n", + "മൂല ഡാറ്റ സെറ്റിലും നമ്മുടെ പരിശീലന സെറ്റിലും നിങ്ങൾ ശ്രദ്ധിച്ചിരിക്കാം, വിഭവങ്ങളുടെ എണ്ണം വളരെ അസമതുല്യമായി വിതരണം ചെയ്തിരിക്കുന്നു. കൊറിയൻ വിഭവങ്ങൾ തായ് വിഭവങ്ങളേക്കാൾ *ഏകദേശം* 3 മടങ്ങ് കൂടുതലാണ്. അസമതുല്യമായ ഡാറ്റ മോഡൽ പ്രകടനത്തിൽ നെഗറ്റീവ് ഫലങ്ങൾ ഉണ്ടാക്കാറുണ്ട്. നിരീക്ഷണങ്ങളുടെ എണ്ണം സമമാണ് എങ്കിൽ പല മോഡലുകളും മികച്ച പ്രകടനം കാണിക്കുന്നു, അതിനാൽ അസമതുല്യമായ ഡാറ്റയുമായി അവർ ബുദ്ധിമുട്ടുന്നു.\n", + "\n", + "അസമതുല്യമായ ഡാറ്റ സെറ്റുകൾ കൈകാര്യം ചെയ്യാനുള്ള പ്രധാനമായ രണ്ട് മാർഗ്ഗങ്ങൾ ഉണ്ട്:\n", + "\n", + "- ന്യൂനപക്ഷ ക്ലാസ്സിൽ നിരീക്ഷണങ്ങൾ ചേർക്കൽ: `ഓവർ-സാമ്പ്ലിംഗ്` ഉദാഹരണത്തിന് SMOTE ആൽഗോരിതം ഉപയോഗിച്ച്, ഇത് ഈ കേസുകളുടെ അടുത്തുള്ള അയൽക്കാരെ ഉപയോഗിച്ച് ന്യൂനപക്ഷ ക്ലാസ്സിന്റെ പുതിയ ഉദാഹരണങ്ങൾ സിന്തറ്റിക്കായി സൃഷ്ടിക്കുന്നു.\n", + "\n", + "- ഭൂരിപക്ഷ ക്ലാസ്സിൽ നിന്നുള്ള നിരീക്ഷണങ്ങൾ നീക്കംചെയ്യൽ: `അണ്ടർ-സാമ്പ്ലിംഗ്`\n", + "\n", + "മുൻപത്തെ പാഠത്തിൽ, `recipe` ഉപയോഗിച്ച് അസമതുല്യമായ ഡാറ്റ സെറ്റുകൾ കൈകാര്യം ചെയ്യുന്നത് എങ്ങനെ എന്ന് ഞങ്ങൾ കാണിച്ചു. ഒരു recipe ഒരു ബ്ലൂപ്രിന്റ് പോലെ കരുതാം, അത് ഒരു ഡാറ്റ സെറ്റിൽ ഏത് ഘട്ടങ്ങൾ പ്രയോഗിക്കണമെന്ന് വിവരിക്കുന്നു, ഡാറ്റ വിശകലനത്തിന് തയ്യാറാക്കാൻ. നമ്മുടെ കേസിൽ, `training set`-ലുള്ള വിഭവങ്ങളുടെ എണ്ണം സമമായി വിതരണം ചെയ്യാൻ ആഗ്രഹിക്കുന്നു. നമുക്ക് ഉടൻ തന്നെ തുടങ്ങാം.\n" + ], + "metadata": { + "id": "daBi9qJNIwqW" + } + }, + { + "cell_type": "code", + "execution_count": 5, + "source": [ + "# Load themis package for dealing with imbalanced data\r\n", + "library(themis)\r\n", + "\r\n", + "# Create a recipe for preprocessing training data\r\n", + "cuisines_recipe <- recipe(cuisine ~ ., data = cuisines_train) %>% \r\n", + " step_smote(cuisine)\r\n", + "\r\n", + "# Print recipe\r\n", + "cuisines_recipe" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Data Recipe\n", + "\n", + "Inputs:\n", + "\n", + " role #variables\n", + " outcome 1\n", + " predictor 380\n", + "\n", + "Operations:\n", + "\n", + "SMOTE based on cuisine" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 200 + }, + "id": "Az6LFBGxI1X0", + "outputId": "29d71d85-64b0-4e62-871e-bcd5398573b6" + } + }, + { + "cell_type": "markdown", + "source": [ + "നിങ്ങൾക്ക് തീർച്ചയായും മുന്നോട്ട് പോയി സ്ഥിരീകരിക്കാം (prep+bake ഉപയോഗിച്ച്) റെസിപ്പി നിങ്ങൾ പ്രതീക്ഷിക്കുന്നതുപോലെ പ്രവർത്തിക്കും എന്ന് - എല്ലാ ക്യൂസീൻ ലേബലുകൾക്കും `559` നിരീക്ഷണങ്ങൾ ഉള്ളത്.\n", + "\n", + "നാം ഈ റെസിപ്പി മോഡലിംഗ് പ്രീപ്രോസസറായി ഉപയോഗിക്കാനിരിക്കുന്നതിനാൽ, ഒരു `workflow()` ഞങ്ങൾക്ക് എല്ലാ prep ഉം bake ഉം ചെയ്യും, അതിനാൽ നമുക്ക് റെസിപ്പി മാനുവലായി അളക്കേണ്ടതില്ല.\n", + "\n", + "ഇപ്പോൾ നാം ഒരു മോഡൽ പരിശീലിപ്പിക്കാൻ തയ്യാറാണ് 👩‍💻👨‍💻!\n", + "\n", + "## 3. നിങ്ങളുടെ ക്ലാസിഫയർ തിരഞ്ഞെടുക്കൽ\n", + "\n", + "

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

Artwork by @allison_horst
\n" + ], + "metadata": { + "id": "NBL3PqIWJBBB" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഇപ്പോൾ നമുക്ക് ജോലിക്ക് ഏത് ആൽഗോരിതം ഉപയോഗിക്കണമെന്ന് തീരുമാനിക്കണം 🤔.\n", + "\n", + "Tidymodels-ൽ, [`parsnip package`](https://parsnip.tidymodels.org/index.html) വിവിധ എഞ്ചിനുകളിലുടനീളം (പാക്കേജുകൾ) മോഡലുകളുമായി പ്രവർത്തിക്കാൻ സ്ഥിരമായ ഇന്റർഫേസ് നൽകുന്നു. ദയവായി parsnip ഡോക്യുമെന്റേഷൻ കാണുക [model types & engines](https://www.tidymodels.org/find/parsnip/#models) ഉം അവയുടെ അനുബന്ധ [model arguments](https://www.tidymodels.org/find/parsnip/#model-args) ഉം അന്വേഷിക്കാൻ. ആദ്യ കാഴ്ചയിൽ വൈവിധ്യം വളരെ ആശ്ചര്യപ്പെടുത്തുന്നതാണ്. ഉദാഹരണത്തിന്, താഴെപ്പറയുന്ന രീതികൾ എല്ലാം ക്ലാസിഫിക്കേഷൻ സാങ്കേതികവിദ്യകൾ ഉൾക്കൊള്ളുന്നു:\n", + "\n", + "- C5.0 Rule-Based Classification Models\n", + "\n", + "- Flexible Discriminant Models\n", + "\n", + "- Linear Discriminant Models\n", + "\n", + "- Regularized Discriminant Models\n", + "\n", + "- Logistic Regression Models\n", + "\n", + "- Multinomial Regression Models\n", + "\n", + "- Naive Bayes Models\n", + "\n", + "- Support Vector Machines\n", + "\n", + "- Nearest Neighbors\n", + "\n", + "- Decision Trees\n", + "\n", + "- Ensemble methods\n", + "\n", + "- Neural Networks\n", + "\n", + "പട്ടിക തുടരുന്നു!\n", + "\n", + "### **ഏത് ക്ലാസിഫയർ തിരഞ്ഞെടുക്കണം?**\n", + "\n", + "അപ്പോൾ, ഏത് ക്ലാസിഫയർ തിരഞ്ഞെടുക്കണം? പലതും പരീക്ഷിച്ച് നല്ല ഫലം കാണുന്നത് ഒരു പരീക്ഷണ മാർഗമാണ്.\n", + "\n", + "> AutoML ഈ പ്രശ്നം ക്ലൗഡിൽ ഈ താരതമ്യങ്ങൾ നടത്തിക്കൊണ്ട് സുതാര്യമായി പരിഹരിക്കുന്നു, നിങ്ങളുടെ ഡാറ്റയ്ക്ക് ഏറ്റവും അനുയോജ്യമായ ആൽഗോരിതം തിരഞ്ഞെടുക്കാൻ അനുവദിക്കുന്നു. ഇതു [ഇവിടെ](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott) പരീക്ഷിക്കുക\n", + "\n", + "ക്ലാസിഫയർ തിരഞ്ഞെടുപ്പ് നമ്മുടെ പ്രശ്നത്തെ ആശ്രയിച്ചിരിക്കുന്നു. ഉദാഹരണത്തിന്, ഫലം `രണ്ടിലധികം ക്ലാസുകളായി` വർഗ്ഗീകരിക്കാവുന്നപ്പോൾ, നമ്മുടെ കേസിൽപോലെ, നിങ്ങൾ `ബൈനറി ക്ലാസിഫിക്കേഷനിൽ` പകരം `മൾട്ടിക്ലാസ് ക്ലാസിഫിക്കേഷൻ ആൽഗോരിതം` ഉപയോഗിക്കണം.\n", + "\n", + "### **മികച്ച സമീപനം**\n", + "\n", + "വൈല്ഡ് ഗസ്സ് ചെയ്യുന്നതിന് പകരം, ഡൗൺലോഡ് ചെയ്യാവുന്ന [ML Cheat sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) ൽ ഉള്ള ആശയങ്ങൾ പിന്തുടരുക. ഇവിടെ, നമ്മുടെ മൾട്ടിക്ലാസ് പ്രശ്നത്തിന് ചില തിരഞ്ഞെടുപ്പുകൾ ഉണ്ട് എന്ന് കണ്ടെത്താം:\n", + "\n", + "

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

മൾട്ടിക്ലാസ് ക്ലാസിഫിക്കേഷൻ ഓപ്ഷനുകൾ വിശദീകരിക്കുന്ന മൈക്രോസോഫ്റ്റിന്റെ ആൽഗോരിതം ചീറ്റ് ഷീറ്റിന്റെ ഒരു ഭാഗം
\n" + ], + "metadata": { + "id": "a6DLAZ3vJZ14" + } + }, + { + "cell_type": "markdown", + "source": [ + "### **കാരണം**\n", + "\n", + "നമുക്ക് ഉള്ള നിയന്ത്രണങ്ങളെ അടിസ്ഥാനമാക്കി വ്യത്യസ്ത സമീപനങ്ങൾ വഴി നാം ചിന്തിക്കാമോ എന്ന് നോക്കാം:\n", + "\n", + "- **ഡീപ്പ് ന്യൂറൽ നെറ്റ്വർക്കുകൾ വളരെ ഭാരമുള്ളവയാണ്**. നമ്മുടെ ശുദ്ധവും കുറഞ്ഞ ഡാറ്റാസെറ്റും, നോട്ട്ബുക്കുകൾ വഴി ലോക്കലായി ട്രെയിനിംഗ് നടത്തുന്നതും പരിഗണിച്ചാൽ, ഡീപ്പ് ന്യൂറൽ നെറ്റ്വർക്കുകൾ ഈ ജോലിക്ക് വളരെ ഭാരമുള്ളവയാണ്.\n", + "\n", + "- **രണ്ടു-ക്ലാസ് ക്ലാസിഫയർ ഉപയോഗിക്കില്ല**. നാം രണ്ട്-ക്ലാസ് ക്ലാസിഫയർ ഉപയോഗിക്കുന്നില്ല, അതിനാൽ ഒന്ന്-വേഴ്സ്-ആൾൽ ഒഴിവാക്കാം.\n", + "\n", + "- **ഡിസിഷൻ ട്രീ അല്ലെങ്കിൽ ലോജിസ്റ്റിക് റെഗ്രഷൻ പ്രവർത്തിക്കാം**. ഒരു ഡിസിഷൻ ട്രീ പ്രവർത്തിക്കാം, അല്ലെങ്കിൽ മൾട്ടിനോമിയൽ റെഗ്രഷൻ/മൾട്ടിക്ലാസ് ലോജിസ്റ്റിക് റെഗ്രഷൻ മൾട്ടിക്ലാസ് ഡാറ്റയ്ക്ക്.\n", + "\n", + "- **മൾട്ടിക്ലാസ് ബൂസ്റ്റഡ് ഡിസിഷൻ ട്രീസ് വ്യത്യസ്ത പ്രശ്നം പരിഹരിക്കുന്നു**. മൾട്ടിക്ലാസ് ബൂസ്റ്റഡ് ഡിസിഷൻ ട്രീ സാധാരണയായി നോൺപാരാമെട്രിക് ടാസ്കുകൾക്ക് അനുയോജ്യമാണ്, ഉദാ: റാങ്കിംഗ് നിർമ്മിക്കാൻ രൂപകൽപ്പന ചെയ്ത ടാസ്കുകൾ, അതിനാൽ ഇത് നമുക്ക് ഉപയോഗപ്രദമല്ല.\n", + "\n", + "പലപ്പോഴും കൂടുതൽ സങ്കീർണ്ണമായ മെഷീൻ ലേണിംഗ് മോഡലുകൾ (ഉദാ: എൻസംബിൾ മെത്തഡുകൾ) ആരംഭിക്കുന്നതിന് മുമ്പ്, ഏറ്റവും ലളിതമായ മോഡൽ നിർമ്മിച്ച് അവസ്ഥ മനസ്സിലാക്കുന്നത് നല്ലതാണ്. അതിനാൽ ഈ പാഠത്തിനായി, നാം `മൾട്ടിനോമിയൽ റെഗ്രഷൻ` മോഡലിൽ നിന്ന് ആരംഭിക്കാം.\n", + "\n", + "> ലോജിസ്റ്റിക് റെഗ്രഷൻ ഫലം വർഗ്ഗീയമായ (അഥവാ നോമിനൽ) വേരിയബിൾ ആയപ്പോൾ ഉപയോഗിക്കുന്ന സാങ്കേതിക വിദ്യയാണ്. ബൈനറി ലോജിസ്റ്റിക് റെഗ്രഷനിൽ ഫലം വേരിയബിളുകളുടെ എണ്ണം രണ്ട് ആണ്, എന്നാൽ മൾട്ടിനോമിയൽ ലോജിസ്റ്റിക് റെഗ്രഷനിൽ ഫലം വേരിയബിളുകളുടെ എണ്ണം രണ്ട് കണക്കിന് കൂടുതലാണ്. കൂടുതൽ വായനയ്ക്ക് [Advanced Regression Methods](https://bookdown.org/chua/ber642_advanced_regression/multinomial-logistic-regression.html) കാണുക.\n", + "\n", + "## 4. മൾട്ടിനോമിയൽ ലോജിസ്റ്റിക് റെഗ്രഷൻ മോഡൽ ട്രെയിൻ ചെയ്ത് മൂല്യനിർണ്ണയം ചെയ്യുക.\n", + "\n", + "Tidymodels-ൽ, `parsnip::multinom_reg()` ഒരു മോഡൽ നിർവചിക്കുന്നു, ഇത് ലീനിയർ പ്രഡിക്ടറുകൾ ഉപയോഗിച്ച് മൾട്ടിക്ലാസ് ഡാറ്റ പ്രവചിക്കാൻ മൾട്ടിനോമിയൽ വിതരണത്തെ ഉപയോഗിക്കുന്നു. ഈ മോഡൽ ഫിറ്റ് ചെയ്യാൻ നിങ്ങൾക്ക് ഉപയോഗിക്കാവുന്ന വ്യത്യസ്ത മാർഗ്ഗങ്ങൾ/എഞ്ചിനുകൾ അറിയാൻ `?multinom_reg()` കാണുക.\n", + "\n", + "ഈ ഉദാഹരണത്തിന്, നാം ഡിഫോൾട്ട് [nnet](https://cran.r-project.org/web/packages/nnet/nnet.pdf) എഞ്ചിൻ വഴി മൾട്ടിനോമിയൽ റെഗ്രഷൻ മോഡൽ ഫിറ്റ് ചെയ്യും.\n", + "\n", + "> `penalty`-യ്ക്ക് ഞാൻ ഒരു മൂല്യം യാദൃച്ഛികമായി തിരഞ്ഞെടുത്തു. ഈ മൂല്യം തിരഞ്ഞെടുക്കാനുള്ള മികച്ച മാർഗ്ഗങ്ങൾ ഉണ്ട്, അതായത് `resampling` ഉപയോഗിച്ച് മോഡൽ `tuning` ചെയ്യുന്നതിലൂടെ, അത് പിന്നീട് ചർച്ച ചെയ്യും.\n", + ">\n", + "> മോഡൽ ഹൈപ്പർപാരാമീറ്ററുകൾ എങ്ങനെ ട്യൂൺ ചെയ്യാമെന്ന് കൂടുതൽ അറിയാൻ [Tidymodels: Get Started](https://www.tidymodels.org/start/tuning/) കാണുക.\n" + ], + "metadata": { + "id": "gWMsVcbBJemu" + } + }, + { + "cell_type": "code", + "execution_count": 6, + "source": [ + "# Create a multinomial regression model specification\r\n", + "mr_spec <- multinom_reg(penalty = 1) %>% \r\n", + " set_engine(\"nnet\", MaxNWts = 2086) %>% \r\n", + " set_mode(\"classification\")\r\n", + "\r\n", + "# Print model specification\r\n", + "mr_spec" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Multinomial Regression Model Specification (classification)\n", + "\n", + "Main Arguments:\n", + " penalty = 1\n", + "\n", + "Engine-Specific Arguments:\n", + " MaxNWts = 2086\n", + "\n", + "Computational engine: nnet \n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 166 + }, + "id": "Wq_fcyQiJvfG", + "outputId": "c30449c7-3864-4be7-f810-72a003743e2d" + } + }, + { + "cell_type": "markdown", + "source": [ + "ശ്രേഷ്ഠം ജോലി 🥳! ഇനി നമുക്ക് ഒരു റെസിപ്പിയും ഒരു മോഡൽ സ്പെസിഫിക്കേഷനും ഉണ്ടാകുമ്പോൾ, അവയെ ഒന്നിച്ച് ബണ്ടിൽ ചെയ്ത് ഒരു ഒബ്ജക്റ്റായി രൂപപ്പെടുത്തേണ്ടതുണ്ട്, അത് ആദ്യം ഡാറ്റ പ്രീപ്രോസസ് ചെയ്ത് പിന്നീട് പ്രീപ്രോസസ് ചെയ്ത ഡാറ്റയിൽ മോഡൽ ഫിറ്റ് ചെയ്യുകയും സാധ്യതയുള്ള പോസ്റ്റ്-പ്രോസസ്സിംഗ് പ്രവർത്തനങ്ങൾക്കും അനുവദിക്കുകയും ചെയ്യും. Tidymodels-ൽ, ഈ സൗകര്യപ്രദമായ ഒബ്ജക്റ്റ് [`workflow`](https://workflows.tidymodels.org/) എന്ന് വിളിക്കുന്നു, ഇത് നിങ്ങളുടെ മോഡലിംഗ് ഘടകങ്ങളെ സൗകര്യപ്രദമായി കൈവശം വയ്ക്കുന്നു! Python-ൽ ഇതിനെ *pipelines* എന്ന് വിളിക്കും.\n", + "\n", + "അപ്പോൾ എല്ലാം workflow-യിലേക്ക് ബണ്ടിൽ ചെയ്യാം!📦\n" + ], + "metadata": { + "id": "NlSbzDfgJ0zh" + } + }, + { + "cell_type": "code", + "execution_count": 7, + "source": [ + "# Bundle recipe and model specification\r\n", + "mr_wf <- workflow() %>% \r\n", + " add_recipe(cuisines_recipe) %>% \r\n", + " add_model(mr_spec)\r\n", + "\r\n", + "# Print out workflow\r\n", + "mr_wf" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "══ Workflow ════════════════════════════════════════════════════════════════════\n", + "\u001b[3mPreprocessor:\u001b[23m Recipe\n", + "\u001b[3mModel:\u001b[23m multinom_reg()\n", + "\n", + "── Preprocessor ────────────────────────────────────────────────────────────────\n", + "1 Recipe Step\n", + "\n", + "• step_smote()\n", + "\n", + "── Model ───────────────────────────────────────────────────────────────────────\n", + "Multinomial Regression Model Specification (classification)\n", + "\n", + "Main Arguments:\n", + " penalty = 1\n", + "\n", + "Engine-Specific Arguments:\n", + " MaxNWts = 2086\n", + "\n", + "Computational engine: nnet \n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 333 + }, + "id": "Sc1TfPA4Ke3_", + "outputId": "82c70013-e431-4e7e-cef6-9fcf8aad4a6c" + } + }, + { + "cell_type": "markdown", + "source": [ + "വർക്ക്ഫ്ലോകൾ 👌👌! ഒരു **`workflow()`** മോഡലിനെ പോലെ തന്നെ ഫിറ്റ് ചെയ്യാൻ കഴിയും. അതിനാൽ, ഒരു മോഡൽ ട്രെയിൻ ചെയ്യാനുള്ള സമയം!\n" + ], + "metadata": { + "id": "TNQ8i85aKf9L" + } + }, + { + "cell_type": "code", + "execution_count": 8, + "source": [ + "# Train a multinomial regression model\n", + "mr_fit <- fit(object = mr_wf, data = cuisines_train)\n", + "\n", + "mr_fit" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "══ Workflow [trained] ══════════════════════════════════════════════════════════\n", + "\u001b[3mPreprocessor:\u001b[23m Recipe\n", + "\u001b[3mModel:\u001b[23m multinom_reg()\n", + "\n", + "── Preprocessor ────────────────────────────────────────────────────────────────\n", + "1 Recipe Step\n", + "\n", + "• step_smote()\n", + "\n", + "── Model ───────────────────────────────────────────────────────────────────────\n", + "Call:\n", + "nnet::multinom(formula = ..y ~ ., data = data, decay = ~1, MaxNWts = ~2086, \n", + " trace = FALSE)\n", + "\n", + "Coefficients:\n", + " (Intercept) almond angelica anise anise_seed apple\n", + "indian 0.19723325 0.2409661 0 -5.004955e-05 -0.1657635 -0.05769734\n", + "japanese 0.13961959 -0.6262400 0 -1.169155e-04 -0.4893596 -0.08585717\n", + "korean 0.22377347 -0.1833485 0 -5.560395e-05 -0.2489401 -0.15657804\n", + "thai -0.04336577 -0.6106258 0 4.903828e-04 -0.5782866 0.63451105\n", + " apple_brandy apricot armagnac artemisia artichoke asparagus\n", + "indian 0 0.37042636 0 -0.09122797 0 -0.27181970\n", + "japanese 0 0.28895643 0 -0.12651100 0 0.14054037\n", + "korean 0 -0.07981259 0 0.55756709 0 -0.66979948\n", + "thai 0 -0.33160904 0 -0.10725182 0 -0.02602152\n", + " avocado bacon baked_potato balm banana barley\n", + "indian -0.46624197 0.16008055 0 0 -0.2838796 0.2230625\n", + "japanese 0.90341344 0.02932727 0 0 -0.4142787 2.0953906\n", + "korean -0.06925382 -0.35804134 0 0 -0.2686963 -0.7233404\n", + "thai -0.21473955 -0.75594439 0 0 0.6784880 -0.4363320\n", + " bartlett_pear basil bay bean beech\n", + "indian 0 -0.7128756 0.1011587 -0.8777275 -0.0004380795\n", + "japanese 0 0.1288697 0.9425626 -0.2380748 0.3373437611\n", + "korean 0 -0.2445193 -0.4744318 -0.8957870 -0.0048784496\n", + "thai 0 1.5365848 0.1333256 0.2196970 -0.0113078024\n", + " beef beef_broth beef_liver beer beet\n", + "indian -0.7985278 0.2430186 -0.035598065 -0.002173738 0.01005813\n", + "japanese 0.2241875 -0.3653020 -0.139551027 0.128905553 0.04923911\n", + "korean 0.5366515 -0.6153237 0.213455197 -0.010828645 0.27325423\n", + "thai 0.1570012 -0.9364154 -0.008032213 -0.035063746 -0.28279823\n", + " bell_pepper bergamot berry bitter_orange black_bean\n", + "indian 0.49074330 0 0.58947607 0.191256164 -0.1945233\n", + "japanese 0.09074167 0 -0.25917977 -0.118915977 -0.3442400\n", + "korean -0.57876763 0 -0.07874180 -0.007729435 -0.5220672\n", + "thai 0.92554006 0 -0.07210196 -0.002983296 -0.4614426\n", + " black_currant black_mustard_seed_oil black_pepper black_raspberry\n", + "indian 0 0.38935801 -0.4453495 0\n", + "japanese 0 -0.05452887 -0.5440869 0\n", + "korean 0 -0.03929970 0.8025454 0\n", + "thai 0 -0.21498372 -0.9854806 0\n", + " black_sesame_seed black_tea blackberry blackberry_brandy\n", + "indian -0.2759246 0.3079977 0.191256164 0\n", + "japanese -0.6101687 -0.1671913 -0.118915977 0\n", + "korean 1.5197674 -0.3036261 -0.007729435 0\n", + "thai -0.1755656 -0.1487033 -0.002983296 0\n", + " blue_cheese blueberry bone_oil bourbon_whiskey brandy\n", + "indian 0 0.216164294 -0.2276744 0 0.22427587\n", + "japanese 0 -0.119186087 0.3913019 0 -0.15595599\n", + "korean 0 -0.007821986 0.2854487 0 -0.02562342\n", + "thai 0 -0.004947048 -0.0253658 0 -0.05715244\n", + "\n", + "...\n", + "and 308 more lines." + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "GMbdfVmTKkJI", + "outputId": "adf9ebdf-d69d-4a64-e9fd-e06e5322292e" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഔട്ട്പുട്ട് മോഡൽ പരിശീലനത്തിനിടെ പഠിച്ച കോഫിഷ്യന്റുകൾ കാണിക്കുന്നു.\n", + "\n", + "### പരിശീലിച്ച മോഡൽ വിലയിരുത്തുക\n", + "\n", + "ടെസ്റ്റ് സെറ്റിൽ മോഡൽ എങ്ങനെ പ്രവർത്തിച്ചു എന്ന് കാണാനുള്ള സമയം 📏! ടെസ്റ്റ് സെറ്റിൽ പ്രവചനങ്ങൾ നടത്തുന്നതിലൂടെ തുടങ്ങാം.\n" + ], + "metadata": { + "id": "tt2BfOxrKmcJ" + } + }, + { + "cell_type": "code", + "execution_count": 9, + "source": [ + "# Make predictions on the test set\n", + "results <- cuisines_test %>% select(cuisine) %>% \n", + " bind_cols(mr_fit %>% predict(new_data = cuisines_test))\n", + "\n", + "# Print out results\n", + "results %>% \n", + " slice_head(n = 5)" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine .pred_class\n", + "1 indian thai \n", + "2 indian indian \n", + "3 indian indian \n", + "4 indian indian \n", + "5 indian indian " + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| cuisine <fct> | .pred_class <fct> |\n", + "|---|---|\n", + "| indian | thai |\n", + "| indian | indian |\n", + "| indian | indian |\n", + "| indian | indian |\n", + "| indian | indian |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " cuisine & .pred\\_class\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t indian & thai \\\\\n", + "\t indian & indian\\\\\n", + "\t indian & indian\\\\\n", + "\t indian & indian\\\\\n", + "\t indian & indian\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
cuisine.pred_class
<fct><fct>
indianthai
indianindian
indianindian
indianindian
indianindian
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "id": "CqtckvtsKqax", + "outputId": "e57fe557-6a68-4217-fe82-173328c5436d" + } + }, + { + "cell_type": "markdown", + "source": [ + "ശ്രേഷ്ഠമായ ജോലി! Tidymodels-ൽ, മോഡൽ പ്രകടനം വിലയിരുത്തുന്നത് [yardstick](https://yardstick.tidymodels.org/) ഉപയോഗിച്ച് ചെയ്യാം - പ്രകടന മെട്രിക്കുകൾ ഉപയോഗിച്ച് മോഡലുകളുടെ ഫലപ്രാപ്തി അളക്കാൻ ഉപയോഗിക്കുന്ന ഒരു പാക്കേജ്. നാം നമ്മുടെ ലോജിസ്റ്റിക് റെഗ്രഷൻ പാഠത്തിൽ ചെയ്തതുപോലെ, ഒരു കൺഫ്യൂഷൻ മാട്രിക്സ് കണക്കാക്കുന്നതിൽ നിന്ന് തുടങ്ങാം.\n" + ], + "metadata": { + "id": "8w5N6XsBKss7" + } + }, + { + "cell_type": "code", + "execution_count": 10, + "source": [ + "# Confusion matrix for categorical data\n", + "conf_mat(data = results, truth = cuisine, estimate = .pred_class)\n" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " Truth\n", + "Prediction chinese indian japanese korean thai\n", + " chinese 83 1 8 15 10\n", + " indian 4 163 1 2 6\n", + " japanese 21 5 73 25 1\n", + " korean 15 0 11 191 0\n", + " thai 10 11 3 7 70" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 133 + }, + "id": "YvODvsLkK0iG", + "outputId": "bb69da84-1266-47ad-b174-d43b88ca2988" + } + }, + { + "cell_type": "markdown", + "source": [ + "പല ക്ലാസുകളുമായി ഇടപഴകുമ്പോൾ, ഇത് ഒരു ഹീറ്റ് മാപ്പായി ദൃശ്യവൽക്കരിക്കുന്നത് സാധാരണയായി കൂടുതൽ ബോധഗമ്യമാണ്, ഇങ്ങനെ:\n" + ], + "metadata": { + "id": "c0HfPL16Lr6U" + } + }, + { + "cell_type": "code", + "execution_count": 11, + "source": [ + "update_geom_defaults(geom = \"tile\", new = list(color = \"black\", alpha = 0.7))\n", + "# Visualize confusion matrix\n", + "results %>% \n", + " conf_mat(cuisine, .pred_class) %>% \n", + " autoplot(type = \"heatmap\")" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "plot without title" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAADAFBMVEUAAAABAQECAgIDAwMEBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUWFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////isF19AAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3deWBU9b3//0+ibApWrbYuvYorXaxoaatWvVqpqG2HsCmLBAqoVXBDjCKbKMqOQUDFFVxKqyhVFLUqWKJsxg3Lz2IFGilLiEqptMX0hpzvnJkMCbx5/W5vz5k5Z+D5/OOc85nEz3w8Mw9mMjmo84gocC7qBRDtCQGJKISARBRCQCIKISARhRCQiEIISEQhBCSiEAISUQgBiSiEgEQUQkAiCiEgEYUQkIhCCEhEIQQkohACElEIAYkohIBEFEJAIgohIBGFEJCIQijHkLb+NUZVRb2Ahn26OeoVNCxWpyZWi/mbeGbnGNJl42PUmbNiVM+7nohRlz4ao/o/HqOuFc/sHEMasShGdfwsRt3+1qYYNXJ9jLq9MkZNE89sIMUkIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSbI+EVLQktatJvB8FpNGtv9LoqMteTx7d/f2vND6h5M3oIS07xT0XxjyhQJpx+sGNj79pbfCJgkJ6o7V72t/f4FKdFSmkRa3dnNTBgnYHNPneY7GCVPvB1ggg3ezaTZraq+C8RYvGF7a64cbW7rLIIU1sdmR8IE1ynX4957qC9pFDGtvsiDSkywsn+D0eJaRxycWkIC1pcdzYSecUzIwTpP+0YJBOONJ/CTqncP6iI49YsGjRwqMOjhrSS03GTY0PpJNaVia3P92nImJIc5vcWZqG1LVFoInCgPRCkzF3pyF1bLa8snLdd1pGC+nTOy8uvvdLr+iVEZ2KF/hv7WoTC0f07zvf8zaP79Vl8CrPe+2qzsX3Vu8YZgHS8cf624sKF5RdO84/+plbEDGk8oWfxQjSt7/pb7vu80ngmYJBWvTa+jpIPz0ickhLFlSmIa1vVuSPR7lXI4V0w9jN6wdM94qu+fCfj3XZ5v+MVDRwi/dKl23eoPFfVD/es3pj+/e3b7xudmaYDUjD3C+fmz+6aee64Zsnfz3QdOF82BAjSFPckOV/nrFfv+AzBf6woQ7SWa3Wr18dLaRkaUiL3FB/MMdNjhLS6sTG5KbcK3ra8zYmKlKQ5nrepsQnqxKbkz8zdStblVjtedu9zDD5zyxpn+wPIUJadFsz5wp7pz5i+P1vH2i372gg7dT9+yfPz/WVwScKC1Lrlh0PdAddvyYOkJ5zd/mDN9ywKCG92b42tS9anHwvl/g4BSl9WJZINbv2ng4ls9Z7mWHye9/4cbL3QoR0T/MzRt91SWHqI4bJzh0+KdBsex6kZw/4yYzfXL7PzfGB1LKw20P3F7mL4gDpSTfVHyxzN0YJaVH77WlIS+ohpQ+XJjJv4zbNG9mhrH64uwJBeuPwE/0Xo66FTya3L44f2ragF5AatPGo7/ovRlcULo0NpLff87dd3ZwYQHrOTfIHZW54lJDWJCo876MXdgNpbWJl8usbvZotyd30wZlhFiA97VJwJrjMLL9wDwGpvrfddf7uCXdPbCCle8IFmi8kSEvcLf7gqfQLU1SQvEEjKtddd+9uIHlDS6pqXuzy+at9Pq7dPGRKZpgVSD383Wg3+PkbHkyTugVI9ZW7/v7uEXdXbCCtXOlv73fjYgBpQ4uf+4MhrixSSFvu6NJz2rbdQdo8ruslJSu82ll9Ova6+++ZYRYgvdH8mDeSuw7usRcLT/WPLnGTgVTfxq+02pjc9Xa/jwukdwsv9AfnFbwRA0iVlzZ5p7Jy7bHfDjTXHnGt3UB32qgJFxe2XbSo2H332pLzC77zRsSQ5pWW9nADSkvfiQOkTXe6Hz/wxOWFRcFnCgbp2QkTurorJ0xYvL6Paztu1OmuX6DpgkGaO2lSN9d/0qRlle8dfPTQO37QaA6QFo06qWmjlleWLVr0Zkmrps2O7fFqoNlCgNQ7fS2ZezAWkDY9+P39Gp8wZH3wiYJB6ll3Vu5dv3ZM6xZNT5kYaLaAkHrVLWZ6ZeWiC1s0Pe2ZQLPtIZDCjau/ZVz9rQKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEiqmEDqOSJGnXJfjOpw+z0xqtOUGNU76rPRsMvEMzvHkEa+GqMuHBajznv8tRg1IOoFNGzgKzFqiHhm5xjSvZ/GqF/MjFHd3on6zWXD7ox6AQ27oypG3Sue2UCKSUCSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyhQTpraYHhzDLL/7zp/3YY9zg1MFDHQ7Z92sXz0ge3fTt5o2O6j0jWkjLTnHPhTFPGJDmt23e/OTSquAThQFpXcl/NW45bFPwiUKEVJN4f6fxpkTFrjdlGVLVmS5aSL0bH1wH6QeFF155puswc+b1BUf37HWi6xQppInNjowNpJcbtbx90jnuluAzhQEpsc9V0y9xJcEnChFS7Qdbd4W0601ZhjSp8bmRQhrWqPiyNKQS1y25/f43Z8z82qEPzJz58GEHRAnppSbjpsYG0o8O+ONnn1V9Z7+NgWcKAdJsd1ty+/Mzg78kZfGtXRLSv/29oUD6wwEll0YKadyomXWQftT0ofRND/e4zt+d7R6IEFL5ws/iA2nydH/bx/0p8EwhQOrSfF3wSVKF+9auNrFwRP++8z1v9aAuVy9Mv7WrGN6964gN3o4vZQ/SRSeujxZSsjpIh540c2aDH4tmnPDV/3TCkD5siA+kdOceGnyOECAdfW5VVWXwaapC/xmpaOAW75Uu22r7lW6rGpKGdGXptn+MKfEyX8oepIcK5n0aE0gzCs7t8/WC/S9KvQw9dNfw0/e5BkgNe9jdHnyS4JA2FfaadEzBQf0/iR+kuf5buk/+mNjoeUvSkLZ+6XmLO9RmvpT8xgVtkr0dNqQ/HdL307hAut8deuxVN15Y0Ma/qcS5Q274jyfcIyH9utlFsfjUrsId9b0Hnrqq8Gfxg7TY8zYnPi5rv93zPklDWj6kuLhboibzpeQ3lvdM9mHYkLoeviY2kB50zacndz9xtya3U6+/7LSCBJDqG7dPpw0hTBMc0l/cQWuSu8vcK7GDtCSlZX77Ws9bk4K0odPsam+pD2lJBtJuCg7pqYKHKyoquh1csS4GkGY2+6a/HeT61N3cPkUKSKmudIM+DWOeEH5GanGmv/2NuyvwTNmBtDxR6XllKUhlRTWe92j2IfVzdZ0fB0itDvO317orphQP948Gur5AqmtgQWkIs3wWCqQzjve3j7l7As+UHUjVPUq3rrs5BWllYsW/Fg5OVGUb0tsv+LU74IU34wCplytJbs8oHD+14Jv+p3ftUmMgJXvahfWJRQiQxrunk9su+7wVeKbsQPI+ur7z1e8k/uzfNKN7jylbB3bblGVI6aL9GWlonz5nu4v69Jkw86GWTdr3+6E7f+bMn7nju/c+veC4//QaoTAgzSst7eEGlJYGnyq4gcrjDipN9V7gqUKAtK71foPuLnKXB59pz7rWLmJIP657d3nVzJn3tv3KPocVJ/XM6H1046bfuGj6fzpnGJB6163rwcAzBYf0UeYt+GOBpwrjEqGP+3yt0XFj43WtXZC4+lvF1d8yrv62AUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAcl28S9jVKt2Mer4blGfjob9KOoFNOxnV8Soi8QzO8eQ7loVo7r/JUYNf/KNGDXkTzFq1PoYNU08s3MMafLaGNUz6rcJDbvtmWUxanhFjIrV+8z7xDMbSDEJSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIs/yBt6n1EoUsFpFwHJFn+Qbp437a9+6UCUq4Dkiz/IH312WwBAtL/FpBk+QdpvyogRRWQZPkH6ezXgRRVQJLlH6S3f7gYSBEFJFn+QTrzv9x+R6cCUq4Dkiz/IJ3dNhOQch2QZPkHKfsBSQUkWT5C+uyFBx56+Qsg5T4gyfIP0vZBjfzLGvYfD6ScByRZ/kEa7zo+/OIL91/gHgVSrgOSLP8gfeuG9P6K7wEp1wFJln+QmsxP7+c1A1KuA5Is/yDt/3x6/2xzIOU6IMnyD9JZP672d9vanQukXAckWf5Bmldw1JWjbr/8iMJXgZTrgCTLP0jeb7/pf/z93XnZcgQkGZBkeQjJ89a/VV6ZNUZA0gFJlpeQshyQVECS5RmkVqO9VjsCUq4DkizPIJ1W6p22IyDlOiDJ8gxSTgKSCkiy/IPU5sP0/ulvASnXAUmWf5BceWr3P7c1BlKuA5Is3yC5+rhoNecBSZZvkN6/2xWl/uuQl434C5ByHZBk+QbJ8y74U7YAAel/C0iy/IPkbZyS3FTdtglIOQ9IsvyDtPIw/1OGCnfYaiDlOiDJ8g9Sh+Pf8ncfHt8JSLkOSLL8g3ToI+n9/S2AlOuAJMs/SM2eSO9/tV9MIc07t3nzk8ZW+Ie/P9k9GT2kkvSvC86OGtJrmV9cjF+2bNoPvtL4xMFLo4T0/Dn773/SmDUVFdenV3Vm9JCWneKeC2OefwvSjy6o8Xdf/ODMzC01ifdjBOnZfY8eNuYsd2PycHSzI+IA6ZeFd/n9OmpIbw5JdX7Br5ZNKmx1402nuCsihPTbfY8eOvosN6iiom/hWL+ZkUOa2OzIHEJ6ueDYASNH9Dm08OXMLbUfbI0RpNNbvLt2bcW391uz9rdNRk2KA6TuBwSfI10Yb+1eP7TDsmXfOLJs2bJFRx8cIaTTWrxdUbHmW/utqri4RaCJQoP0UpNxU3MIyXuljf9CfHJc/4bs+Lv9bbFbvrbsd2tjAelnRwafI10YkC458NVliwdO9A9/7sqigzRusr/t6d6ruPDweEAqX/hZTiF53mcf/H8N/4vF/lu7iuHdu47Y4FUnXh7cr+9SLzOuTSwc0b/vfM/bPL5Xl8GrPO+1qzoX31u9Y5gFSOnOPiS1iwWks1tVVa0NPk1VKJCeLCzJHC5tfVigqcL4sOHsQyoqzjyxomJlDCAlyzGkXfIhXVm67R9jSpKH1/3Ve7XDlszYKxq4xXulyzZv0Pgvqh/vWb2x/fvbN143OzNM/sP/XJfsy7Ah3eeGxQfSKcd0PsgdNOgvsYB0/qFvpPZvzH34gn3HRg3pHje0ouLklkUHuoOu/WhvgrTbvyHrQ9qatLC4Q21N4jnP2971lczYK5rreZsSn6xKbE7+LNWtbFVidfLrXmaY/IcXtEn2dsiQZjZrVxEfSMcU9pj5UEf30+AzBYf0ZOGg9MFU5w4vDTZXcEiPNDt/TUVFy8JL7r8n4S7YmyDt9m/I+pCWDyku7paoqUksS95w1azM2CtanHxbl/i4LJFqdu09HUpmrfcyw+T3rrg52c4XSQSGNGqfotVr4wPp/RX+trubG3im4JC6Nn49ffC7icPPL/hFtJBu36f9x8ndknJ/cLF7ai+CtNuSkDZ0ml3tLfUh+f9fzCt+nRl7RUtSkJYmquu+edO8kR3K6oe7Kyikfu7aT9bGCFK637hRgecIDGnp13/UYNTXzYgSUl93zZ/rR4+6EUB6v6yoxvMe9SE97XnVnV/LjDOQ1iZWJr9xo1ezJbmbPjgzzAqkqwvG7jiOBaTVq/3tQ25i4JkCQ3rE3eLvXip5xN/d5YZGCGlAwZj0wYoV/vYeN3ovgrR/g3b8DdkkpJWJFf9aODhRVZMYUFE9q+PfMuMMJG9oSVXNi10+f7XPx7Wbh0zJDLMB6VduZP0gDpA+KLzI37UtWBI9pKvdr/zd7wq/tyS56+qmRgfp8cwr0LLCdv7u3ILX9yJIXZO1anRG5w6nFLS5ugEkb0b3HlO2Duy2IfHiTZ37lXuZ8aYMpM3jul5SssKrndWnY6+7/54ZZgHSmmMPHDvOb8naOePGXeJ+OW7cm9FCqurnzp8w+gx3efCZAkP6uft9at/bnXz9ze0KTloSGaRVxxw4JnVBw6KK3u680SN/6PoEmS4MSPNKS3u4AaWl7+QAUrLZJ23wdyu/ObchpB2H74g5/g8FgvR+5oKyB9deWnc0LWJIG8efckDTU0uDTxQc0tmF6f3Swa2aNjuu5+uBJgsE6d3M4/RAxeo7Tm7RtPW4QI7CgNQ788zJDaSTnkrv72tdd8P2jxI7PnWLHlLYcfW3jKu/Vf8WpMavpfezm9TdsLDDqFog5SQgyfIP0hGXpna1XQ8PTgZI/7eAJMs/SLe67147atSAb7nBQMp1QJLlH6TacYf7P5EdMrwGSLkOSLL8g5Sk9Mmypau3Z4sRkHRAkuUjpG1vzfnU+x8g5T4gyfIQ0sQWzi3xhvwia5SApAKSLP8gPeDaT09CenTf8UDKdUCS5R+kk6/0tiUhebecCKRcByRZ/kFq+moa0u8aASnXAUmWf5C+9nwa0lMHACnXAUmWf5B+cs4/fUifn9QOSLkOSLL8g/T6Psdf5/r2PqDRm0DKdUCS5R8k77VT/Ssbfvj7bDkCkgxIsjyE5Hmb3ntvc9YYAUkHJFn+QToje/+JVSD9LwFJln+QvjEJSFEFJFn+QXruW7/9F5CiCUiy/IN09ndd4yOO9gNSrgOSLP8gnXle27qAlOuAJMs/SNkPSCogyfIO0rZlb24BUkQBSZZvkCa3cK5R/y/FNwIpuwFJlmeQnnEtbxh2lrtafCOQshuQZHkG6eyW/v8utm+jvwEpioAkyzNIzYf727dc1i5YBdL/X0CS5Rkkd7+/3eBeFt8JpKwGJFm+QXrQ3250LwEpioAkAxKQ/v2AJMs3SLcsSTbPlfo7IOU6IMnyDVLDgJTrgCTLM0i3NgxIuQ5IsjyDlJOApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZOvQM0Yd/4sYdWq7TjHqB5fGqJ/2iVEXimd2jiFNWR+jij+PUaOWboxRiWkxanTUj03DYvKKBCQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiRbUEhvtHZP+/sbXKqzIodUduEBTdr8KoSJAkNa1No9s+tRFJBGHOWuSx1cf3zjxifcsPNtkUEK7XEKBVJN4p1oIY1tdkQa0uWFE/wejxrS2y2OmzD53IIngs8UFNK45Kl5ZpejKCB1a3xQGs2V7shLLj1s35sa3hYZpPAepz0C0twmd5amIXVtEWii0CB1bvbh559vOumY4DMFhPR8k9GT03zqj6KANKjRJT3TaA498K5p0ya0aNXwtsgghfc47RGQFr22vg7ST4+IBaSqZh393Wj3euCpAkJaPH9jHZ/6oygg3XrLtDSaMe4sf9y2YHz9bZFBCvFxCg1SzbCRNX8d36tzyYfe9sTv+k32No/v1WXwKs+rGN6964gNXm1i4Yj+fednBVKyOkhntVq/fnX0kJa54f5urpsaeKrgHzbU84kQUrI0mjvcef6gixtYf1tkkEJ8nEKDVFrypTfo1i1fPtz1b17RwFX/9AaN/6L68Z7V3pWl2/4xpsRL3rjFe6XLtuS3f74s2d+yAql1y44HuoOuXxMxpBfc3f5uiRsReKo9DdLU/Y7yB23cZTGAFOLjFBakJ/p/4a1OrPW86osXeEVPet6qxGbPq+1W5m390vMWd6j1iuZ63qbEJ8lvX9Am2dtZgdSysNtD9xe5iyKG9Iy7z9+9424KPNWeBmlawv33yNsuaOH6xgBSiI9TSJDGJv7geW+2r00O+v/GKyrzvLJEqtne8iHFxd0SNV7RYs/bnPcB240AABDoSURBVPg4+R2rpyRblxVIb7/nb7u6OdFCmucm+7vF7tbAU+1xkO4+r8C5b13qrowBpBAfp5Ag9RsxsKYO0lVPeEVLPG9pojr1tQ2dZlcnBzWpG9OQdlNYkNI94UZGC+ltN8zfzUn/gReoPQ7StGljS+5M/ow0LAaQQnycQoJUvrXPI94a/43bts7zU2bWJlYmv7LRKyuq8bxHcwVp5Up/e78bFy2kT1sk/N1wtzjwVHsgJL/v7jclBpBCfJxC+7BhRYd3vZKRX2y7r+c/Uma8oSVVNS92+XxlYsW/Fg5OVOUE0ruFF/qD8wreiBbS58VNln/++YZjvxN8pj0O0umHTp42bXDhORZX7iGF+DiF93ukx4u3VN3R89Lbkj/8pCBtHtf1kpIVnjeje48pWwd225RFSM9OmNDVXTlhwuL1fVzbcaNOd/0CTRcCpD98teXwMT9sNDf4TAEhzZ04sZu7auLEpQ2OooB0Q48ep7u2PXqMnHZFwQnFHZp/dWzD2yKDFN7jtEdca9czfYWdu3f92jGtWzQ9ZWKg2UK51m7ZRS2anvFcCBMFhFRcd2rua3AUBaSz6u69z7Rpfb7RqPlpd+58W1SQwnuc9ghIIcfV3zKu/lYByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSRUTSB2LY9SJfWJUm469Y1TLs2NUIurHpmEXimd2jiFNq4xRvaP+c79ht77zWYwatSlGXV8eo24Xz2wgxSQgyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSLagkBa1dnNSBwvaHdDke49FCym5mGd2PYoW0pz/PrjJSZM+DT5RcEh/cnXNjBbSgsw6JpSXzzq7eeOT7oo1pKIlOw1rEu9nBdK4ZkekIS1pcdzYSecUzIwSkr+YZ3Y5ihbSrMKTx0443Q2OA6R1d6UqKng9WkiLh6Y6v2BW+Zz9j7p56GkFE+MKafnHBlLtB1uzAemFJmPuTkPq2Gx5ZeW677SMENLzTUZPTvOpP4oYUsuj13322cbjD40DpHSrDy8OPkkIb+0WHtqxvPyCpi+Vly894RtxhXTbiwaSLBikJQsq05DWNyvyx6Pcq9FBWjx/Yx2f+qNoIVXe8YS/6+HWxQbSZQd/FHySECB1PXB++bKm5/uHg9wT8YQ0pH2n672iV0Z0Kl7geRXDu3cdsSFrb+0q6yAtckP9wRw3OTpIyer5xAJSuk9P+0bwSUKC9Gbh2BBmCQ5pduHN5eVPuwH+8XQ3Ip6QvH7+K9I1H/7zsS7bvCtLt/1jTEkdpPXPJKvKBqTn3F3+4A03DEg7tWH5y50bzQw+T0iQOhz+lxBmCQ6p3aGLyssfcMP846fc1XGG9LTnbUxUeFu/9LzFHWrTkBa0SfZ2NiA96ab6g2XuRiDt1DPOHfWbEOYJB9KbhXeGMU1gSLMLb0xup7nb/MGz7vI4Q1rseZsTH3vLhxQXd0vUZP8VaZI/KHPDgbRTH/1qaseCgcHnCQfS5Y1XhzFNYEjdGi9Mbh90Q/3BU+6aOENakoK0odPsam9pBtJuCgnSEneLP3gq/cIEpJ0a5F4NPEcokCqP+EkY0wSG9NbXz/R3c1x/f3dP+oUp3pDKimo879HsQ9rQ4uf+YIgrA1J9fxz3O3/3azc5HpBecpPCmCYwpBnpl6Jl+5/n7wa4p2IKqf/Df89AWplY8a+FgxNV2YZUeWmTdyor1x777UBz7WmQPio8syq5+6V7Jh6Qhrvgv4z1CwrpGjcrte/Q+Pny8kX/dUKgybIIaW7nPhlI3ozuPaZsHdhtQ3YgzZ00qZvrP2nSssr3Dj566B0/aDQnQkhzJ07s5q6aOHFpg6NoIX12nfvhqImdCr5fFQ9I3d2aMKYJDCnhFqb28w48csCgk/edHldI/5eCQepVd9nU9MrKRRe2aHraM4FmCwipuG4x9zU4ihjSp5NObrb/t66uCD5TKJAuKAxjluCQ/ruw7uDpc/Zvcup9wSbbIyCFHFd/y7j6WwUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkVUwgzXg8Rg2MegENGzY16hU07NqoF9CwWD1O08QzO8eQiPbMgEQUQkAiCiEgEYUQkIhCCEhEIQQkohACElEIAYkohIBEFEJAIgohIBGFEJCIQghIRCGUl5CmTY56BQ2ad+emqJdQ34d3Lo16CfV9eeesqJfQoBl3ZnX6vISUaBf1Chp0R5uPo15Cfa+2eTzqJdS3tc3VUS+hQb2/n9XpgRQ0IKmAFPeApAKSDEg2IKmAJAMSUfwDElEIAYkohPIDUtGS1K4m8X7ECzFL2JSoyPmqYnAaTDWJd6Jegq7u6ZMpK+cvryDVfrA14oWYJSQh5XxVMTgNpthCWv6xgZSV85dXkGJYElLUS4hFsYV024u5efrEHNKnd15cfO+XXtErIzoVL/Bfk2sTC0f07zvf8zaP79Vl8CrPe+2qzsX3Vu8YZruGS1g9qMvVC9Nv7SqGd+86YoO340vZXkPmDqsTLw/u13epZxaQ69PjQ6oZNrLmr+N7dS750Nue+F2/yTvuNadnZ+eGtO90febpk1nH3vjW7oaxm9cPmO4VXfPhPx/rss0/A0UDt3ivdNnmDRr/RfXjPas3tn9/+8brZmeGWV9QgyXU9ivdVjUkDenK0m3/GFPi7Vhd1tdQd4c1iev+6r3aYYtZQK5Pjw+ptORLb9CtW758uOvfkutY9c8d95rTs7NL/fxXpPTTp/6k7XWQVic2JjflXtHTnrcx/ZQtmuu/n/pkVWJz8s1ut7JVidWet93LDLO+ogZL+KO/uCXpVW390vMWd6jNfCn7a6i7w5rEc8l//a6v7LqAnJ+eJKQn+n+RfMDWel71xQu8oie9+nvN6dnZpRSk9NOn/qTtdZDebF+b2hctTr5ZSXycehanD8sSqWbX3tOhZNZ6LzPM+ooaLqH9ds/7JA1p+ZDi4m6JmsyXsr+GujusSSxL3nDVrF0XkPPTU5MYm/hD5gHr/xuvKIl2x73m9OzsUgpS3f3uOGl7HaRF/nPVS/+0mIGUPlyayLxP2TRvZIey+mGWa7CE+f6TZk0K0oZOs6u9pf5TZUluIGXusCaRfI54V/x61wXk/PTUJPqNGFhTB+mqJ1LryNxrbs/OLvV7ccfTp/6k7XWQ1vifiX30wm4grU2sTH59o1ezJbmbPjgzzHoNlrA8Uen/qetDKiuq8bxHcwgpc4c1ieS7lurOr+26gJyfnppE+dY+jyQfsOQbt22d56fWkbnX3J6dXWoAqf6k7XWQvEEjKtddd+9uIHlDS6pqXuzy+at9Pq7dPGRKZpj1BTVYQnWP0q3rbk5BWplY8a+FgxNVOYOUucOaxICK6lkd/2YWkOvT43/YsKLDu17JyC+23dfzH+lPnOvuNbdnZ5f6P/z3zP3Wn7S9D9KWO7r0nLZtd5A2j+t6SckKr3ZWn4697v57Zpj1Gi7ho+s7X/1O4s/+TTO695iydWC3TbmClLnDDYkXb+rcr9wzC8j16Un9Hunx4i1Vd/S89LZ1db+6ydxrTs/OLs3t3GfHA7bjpO19kGg3NfgTNba/B93rAlLetf0j/zPtdECKS0DKuxZ2GFWbOQZSXAISUQgBiSiEgEQUQkAiCiEgEYUQkPK3X7pMp+32622Pzu169uqAlL+9PnXq1Gtd5+TWXNb9nv+4AimHASm/e92V7u7mKUDKcUDK7+ognXn28984w2vd2j8u+qp3QfLtXhuv7XFrLmze/JLsX8lLQMr36iCdd/I373mhHtKfilz5h17blq1HP3tjwS+iXeFeEpDyuzpIbd2c5HYHJK+f23Hjj74W4fL2noCU32UgNf6XZyE19a/J61UY4fL2noCU32UgHeFvd4V0tD/sx0OcizjL+V0G0tH+FkjRxVnO73aCdOpJ/vY0IEUQZzm/2wnSeYckfyja1CwJ6TL3P0DKaZzl/G4nSJPdmMp3f/ydJKQR7rangZTLOMv53U6Qqm84sknr5we08Ly/nNqoFZByGWeZKISARBRCQCIKISARhRCQiEIISEQhBCSiEAISUQgBiSiEgEQUQkAiCiEgEYXQ/wMhANIDIZLX1QAAAABJRU5ErkJggg==" + }, + "metadata": { + "image/png": { + "width": 420, + "height": 420 + } + } + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 436 + }, + "id": "HsAtwukyLsvt", + "outputId": "3032a224-a2c8-4270-b4f2-7bb620317400" + } + }, + { + "cell_type": "markdown", + "source": [ + "കൺഫ്യൂഷൻ മാട്രിക്സ് പ്ലോട്ടിലെ ഇരുണ്ട ചതുരങ്ങൾ ഉയർന്ന കേസുകളുടെ എണ്ണം സൂചിപ്പിക്കുന്നു, പ്രവചിച്ച ലേബലും യഥാർത്ഥ ലേബലും ഒരുപോലെ ഉള്ള കേസുകൾ കാണിക്കുന്ന ഇരുണ്ട ചതുരങ്ങളുടെ ഡയഗണൽ വര കാണാൻ നിങ്ങൾക്ക് സാധിക്കുമെന്ന് പ്രതീക്ഷിക്കുന്നു.\n", + "\n", + "ഇപ്പോൾ കൺഫ്യൂഷൻ മാട്രിക്സിനുള്ള സംഗ്രഹ സ്ഥിതിവിവരക്കണക്കുകൾ കണക്കാക്കാം.\n" + ], + "metadata": { + "id": "oOJC87dkLwPr" + } + }, + { + "cell_type": "code", + "execution_count": 12, + "source": [ + "# Summary stats for confusion matrix\n", + "conf_mat(data = results, truth = cuisine, estimate = .pred_class) %>% \n", + "summary()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " .metric .estimator .estimate\n", + "1 accuracy multiclass 0.7880435\n", + "2 kap multiclass 0.7276583\n", + "3 sens macro 0.7780927\n", + "4 spec macro 0.9477598\n", + "5 ppv macro 0.7585583\n", + "6 npv macro 0.9460080\n", + "7 mcc multiclass 0.7292724\n", + "8 j_index macro 0.7258524\n", + "9 bal_accuracy macro 0.8629262\n", + "10 detection_prevalence macro 0.2000000\n", + "11 precision macro 0.7585583\n", + "12 recall macro 0.7780927\n", + "13 f_meas macro 0.7641862" + ], + "text/markdown": [ + "\n", + "A tibble: 13 × 3\n", + "\n", + "| .metric <chr> | .estimator <chr> | .estimate <dbl> |\n", + "|---|---|---|\n", + "| accuracy | multiclass | 0.7880435 |\n", + "| kap | multiclass | 0.7276583 |\n", + "| sens | macro | 0.7780927 |\n", + "| spec | macro | 0.9477598 |\n", + "| ppv | macro | 0.7585583 |\n", + "| npv | macro | 0.9460080 |\n", + "| mcc | multiclass | 0.7292724 |\n", + "| j_index | macro | 0.7258524 |\n", + "| bal_accuracy | macro | 0.8629262 |\n", + "| detection_prevalence | macro | 0.2000000 |\n", + "| precision | macro | 0.7585583 |\n", + "| recall | macro | 0.7780927 |\n", + "| f_meas | macro | 0.7641862 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 13 × 3\n", + "\\begin{tabular}{lll}\n", + " .metric & .estimator & .estimate\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t accuracy & multiclass & 0.7880435\\\\\n", + "\t kap & multiclass & 0.7276583\\\\\n", + "\t sens & macro & 0.7780927\\\\\n", + "\t spec & macro & 0.9477598\\\\\n", + "\t ppv & macro & 0.7585583\\\\\n", + "\t npv & macro & 0.9460080\\\\\n", + "\t mcc & multiclass & 0.7292724\\\\\n", + "\t j\\_index & macro & 0.7258524\\\\\n", + "\t bal\\_accuracy & macro & 0.8629262\\\\\n", + "\t detection\\_prevalence & macro & 0.2000000\\\\\n", + "\t precision & macro & 0.7585583\\\\\n", + "\t recall & macro & 0.7780927\\\\\n", + "\t f\\_meas & macro & 0.7641862\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 13 × 3
.metric.estimator.estimate
<chr><chr><dbl>
accuracy multiclass0.7880435
kap multiclass0.7276583
sens macro 0.7780927
spec macro 0.9477598
ppv macro 0.7585583
npv macro 0.9460080
mcc multiclass0.7292724
j_index macro 0.7258524
bal_accuracy macro 0.8629262
detection_prevalencemacro 0.2000000
precision macro 0.7585583
recall macro 0.7780927
f_meas macro 0.7641862
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 494 + }, + "id": "OYqetUyzL5Wz", + "outputId": "6a84d65e-113d-4281-dfc1-16e8b70f37e6" + } + }, + { + "cell_type": "markdown", + "source": [ + "നാം കൃത്യത, സെൻസിറ്റിവിറ്റി, പി.പി.വി പോലുള്ള ചില മെട്രിക്കുകൾക്ക് മാത്രം പരിധി കുറച്ചാൽ, തുടക്കത്തിന് മോശമല്ല 🥳!\n", + "\n", + "## 4. കൂടുതൽ ആഴത്തിൽ പരിശോധിക്കൽ\n", + "\n", + "ഒരു സൂക്ഷ്മമായ ചോദ്യം ചോദിക്കാം: പ്രവചിച്ച ഫലമായി ഒരു പ്രത്യേക ഭക്ഷണശൈലി തിരഞ്ഞെടുക്കാൻ ഉപയോഗിക്കുന്ന മാനദണ്ഡം എന്താണ്?\n", + "\n", + "ശരി, ലൊജിസ്റ്റിക് റെഗ്രഷൻ പോലുള്ള സ്റ്റാറ്റിസ്റ്റിക്കൽ മെഷീൻ ലേണിംഗ് ആൽഗോരിതങ്ങൾ `സാധ്യത` അടിസ്ഥാനമാക്കിയുള്ളതാണ്; അതിനാൽ ക്ലാസിഫയർ പ്രവചിക്കുന്നത് സാദ്ധ്യമായ ഫലങ്ങളുടെ ഒരു സാദ്ധ്യത വിതരണമാണ്. ഏറ്റവും ഉയർന്ന സാദ്ധ്യതയുള്ള ക്ലാസ് പിന്നീട് നൽകിയ നിരീക്ഷണങ്ങൾക്ക് ഏറ്റവും സാധ്യതയുള്ള ഫലമായി തിരഞ്ഞെടുക്കപ്പെടുന്നു.\n", + "\n", + "കഠിന ക്ലാസ് പ്രവചനങ്ങളും സാദ്ധ്യതകളും ഉണ്ടാക്കി ഇത് പ്രവർത്തനത്തിൽ കാണാം.\n" + ], + "metadata": { + "id": "43t7vz8vMJtW" + } + }, + { + "cell_type": "code", + "execution_count": 13, + "source": [ + "# Make hard class prediction and probabilities\n", + "results_prob <- cuisines_test %>%\n", + " select(cuisine) %>% \n", + " bind_cols(mr_fit %>% predict(new_data = cuisines_test)) %>% \n", + " bind_cols(mr_fit %>% predict(new_data = cuisines_test, type = \"prob\"))\n", + "\n", + "# Print out results\n", + "results_prob %>% \n", + " slice_head(n = 5)" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine .pred_class .pred_chinese .pred_indian .pred_japanese .pred_korean\n", + "1 indian thai 1.551259e-03 0.4587877 5.988039e-04 2.428503e-04\n", + "2 indian indian 2.637133e-05 0.9999488 6.648651e-07 2.259993e-05\n", + "3 indian indian 1.049433e-03 0.9909982 1.060937e-03 1.644947e-05\n", + "4 indian indian 6.237482e-02 0.4763035 9.136702e-02 3.660913e-01\n", + "5 indian indian 1.431745e-02 0.9418551 2.945239e-02 8.721782e-03\n", + " .pred_thai \n", + "1 5.388194e-01\n", + "2 1.577948e-06\n", + "3 6.874989e-03\n", + "4 3.863391e-03\n", + "5 5.653283e-03" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 7\n", + "\n", + "| cuisine <fct> | .pred_class <fct> | .pred_chinese <dbl> | .pred_indian <dbl> | .pred_japanese <dbl> | .pred_korean <dbl> | .pred_thai <dbl> |\n", + "|---|---|---|---|---|---|---|\n", + "| indian | thai | 1.551259e-03 | 0.4587877 | 5.988039e-04 | 2.428503e-04 | 5.388194e-01 |\n", + "| indian | indian | 2.637133e-05 | 0.9999488 | 6.648651e-07 | 2.259993e-05 | 1.577948e-06 |\n", + "| indian | indian | 1.049433e-03 | 0.9909982 | 1.060937e-03 | 1.644947e-05 | 6.874989e-03 |\n", + "| indian | indian | 6.237482e-02 | 0.4763035 | 9.136702e-02 | 3.660913e-01 | 3.863391e-03 |\n", + "| indian | indian | 1.431745e-02 | 0.9418551 | 2.945239e-02 | 8.721782e-03 | 5.653283e-03 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 7\n", + "\\begin{tabular}{lllllll}\n", + " cuisine & .pred\\_class & .pred\\_chinese & .pred\\_indian & .pred\\_japanese & .pred\\_korean & .pred\\_thai\\\\\n", + " & & & & & & \\\\\n", + "\\hline\n", + "\t indian & thai & 1.551259e-03 & 0.4587877 & 5.988039e-04 & 2.428503e-04 & 5.388194e-01\\\\\n", + "\t indian & indian & 2.637133e-05 & 0.9999488 & 6.648651e-07 & 2.259993e-05 & 1.577948e-06\\\\\n", + "\t indian & indian & 1.049433e-03 & 0.9909982 & 1.060937e-03 & 1.644947e-05 & 6.874989e-03\\\\\n", + "\t indian & indian & 6.237482e-02 & 0.4763035 & 9.136702e-02 & 3.660913e-01 & 3.863391e-03\\\\\n", + "\t indian & indian & 1.431745e-02 & 0.9418551 & 2.945239e-02 & 8.721782e-03 & 5.653283e-03\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 7
cuisine.pred_class.pred_chinese.pred_indian.pred_japanese.pred_korean.pred_thai
<fct><fct><dbl><dbl><dbl><dbl><dbl>
indianthai 1.551259e-030.45878775.988039e-042.428503e-045.388194e-01
indianindian2.637133e-050.99994886.648651e-072.259993e-051.577948e-06
indianindian1.049433e-030.99099821.060937e-031.644947e-056.874989e-03
indianindian6.237482e-020.47630359.136702e-023.660913e-013.863391e-03
indianindian1.431745e-020.94185512.945239e-028.721782e-035.653283e-03
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "id": "xdKNs-ZPMTJL", + "outputId": "68f6ac5a-725a-4eff-9ea6-481fef00e008" + } + }, + { + "cell_type": "markdown", + "source": [ + "മികച്ചത്!\n", + "\n", + "✅ മോഡൽ ആദ്യത്തെ നിരീക്ഷണം തായ് എന്ന് ഉറപ്പുള്ളതെന്തുകൊണ്ടെന്ന് വിശദീകരിക്കാമോ?\n", + "\n", + "## **🚀ചലഞ്ച്**\n", + "\n", + "ഈ പാഠത്തിൽ, നിങ്ങൾ ശുദ്ധീകരിച്ച ഡാറ്റ ഉപയോഗിച്ച് ഒരു മെഷീൻ ലേണിംഗ് മോഡൽ നിർമ്മിച്ചു, ഇത് ഒരു സീരീസ് ഘടകങ്ങളുടെ അടിസ്ഥാനത്തിൽ ഒരു ദേശീയ ഭക്ഷണശൈലി പ്രവചിക്കാനാകും. ഡാറ്റ ക്ലാസിഫൈ ചെയ്യാൻ Tidymodels നൽകുന്ന [വിവിധ ഓപ്ഷനുകൾ](https://www.tidymodels.org/find/parsnip/#models) വായിക്കാൻ ചില സമയം ചെലവഴിക്കൂ, കൂടാതെ മൾട്ടിനോമിയൽ റെഗ്രഷൻ ഫിറ്റ് ചെയ്യാനുള്ള [മറ്റു മാർഗങ്ങൾ](https://parsnip.tidymodels.org/articles/articles/Examples.html#multinom_reg-models) പരിശോധിക്കൂ.\n", + "\n", + "#### നന്ദി:\n", + "\n", + "[`Allison Horst`](https://twitter.com/allison_horst/) R-നെ കൂടുതൽ സ്വാഗതം ചെയ്യുന്നതും ആകർഷകവുമാക്കുന്ന അത്ഭുതകരമായ ചിത്രങ്ങൾ സൃഷ്ടിച്ചതിന്. അവളുടെ [ഗാലറി](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM) സന്ദർശിക്കൂ.\n", + "\n", + "[Cassie Breviu](https://www.twitter.com/cassieview)യും [Jen Looper](https://www.twitter.com/jenlooper)യും ഈ മോഡ്യൂളിന്റെ ഒറിജിനൽ പൈത്തൺ പതിപ്പ് സൃഷ്ടിച്ചതിന് ♥️\n", + "\n", + "
\n", + "ചിരിപ്പിക്കാൻ ചില തമാശകൾ ചേർക്കാമായിരുന്നു, പക്ഷേ ഞാൻ ഭക്ഷണ പണികൾ മനസ്സിലാക്കുന്നില്ല 😅.\n", + "\n", + "
\n", + "\n", + "സന്തോഷകരമായ പഠനം,\n", + "\n", + "[Eric](https://twitter.com/ericntay), ഗോൾഡ് മൈക്രോസോഫ്റ്റ് ലേൺ സ്റ്റുഡന്റ് അംബാസഡർ.\n" + ], + "metadata": { + "id": "2tWVHMeLMYdM" + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/4-Classification/2-Classifiers-1/solution/notebook.ipynb b/translations/ml/4-Classification/2-Classifiers-1/solution/notebook.ipynb new file mode 100644 index 000000000..00aedf9f5 --- /dev/null +++ b/translations/ml/4-Classification/2-Classifiers-1/solution/notebook.ipynb @@ -0,0 +1,281 @@ +{ + "cells": [ + { + "source": [ + "# വർഗ്ഗീകരണ മോഡലുകൾ നിർമ്മിക്കുക\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 1 + } + ], + "source": [ + "import pandas as pd\n", + "cuisines_df = pd.read_csv(\"../../data/cleaned_cuisines.csv\")\n", + "cuisines_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve\n", + "from sklearn.svm import SVC\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian\n", + "Name: cuisine, dtype: object" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ], + "source": [ + "cuisines_label_df = cuisines_df['cuisine']\n", + "cuisines_label_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 4 + } + ], + "source": [ + "cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)\n", + "cuisines_feature_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Accuracy is 0.8181818181818182\n" + ] + } + ], + "source": [ + "lr = LogisticRegression(multi_class='ovr',solver='liblinear')\n", + "model = lr.fit(X_train, np.ravel(y_train))\n", + "\n", + "accuracy = model.score(X_test, y_test)\n", + "print (\"Accuracy is {}\".format(accuracy))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "ingredients: Index(['artemisia', 'black_pepper', 'mushroom', 'shiitake', 'soy_sauce',\n 'vegetable_oil'],\n dtype='object')\ncuisine: korean\n" + ] + } + ], + "source": [ + "# test an item\n", + "print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')\n", + "print(f'cuisine: {y_test.iloc[50]}')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " 0\n", + "korean 0.392231\n", + "chinese 0.372872\n", + "japanese 0.218825\n", + "thai 0.013427\n", + "indian 0.002645" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
0
korean0.392231
chinese0.372872
japanese0.218825
thai0.013427
indian0.002645
\n
" + }, + "metadata": {}, + "execution_count": 8 + } + ], + "source": [ + "#rehsape to 2d array and transpose\n", + "test= X_test.iloc[50].values.reshape(-1, 1).T\n", + "# predict with score\n", + "proba = model.predict_proba(test)\n", + "classes = model.classes_\n", + "# create df with classes and scores\n", + "resultdf = pd.DataFrame(data=proba, columns=classes)\n", + "\n", + "# create df to show results\n", + "topPrediction = resultdf.T.sort_values(by=[0], ascending = [False])\n", + "topPrediction.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n\n chinese 0.75 0.73 0.74 223\n indian 0.93 0.88 0.90 255\n japanese 0.78 0.78 0.78 253\n korean 0.87 0.86 0.86 236\n thai 0.76 0.84 0.80 232\n\n accuracy 0.82 1199\n macro avg 0.82 0.82 0.82 1199\nweighted avg 0.82 0.82 0.82 1199\n\n" + ] + } + ], + "source": [ + "y_pred = model.predict(X_test)\r\n", + "print(classification_report(y_test,y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "kernelspec": { + "name": "python3", + "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" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "9408506dd864f2b6e334c62f80c0cfcc", + "translation_date": "2025-12-19T17:18:19+00:00", + "source_file": "4-Classification/2-Classifiers-1/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/translations/ml/4-Classification/3-Classifiers-2/README.md b/translations/ml/4-Classification/3-Classifiers-2/README.md new file mode 100644 index 000000000..382073030 --- /dev/null +++ b/translations/ml/4-Classification/3-Classifiers-2/README.md @@ -0,0 +1,251 @@ + +# ഭക്ഷണശൈലി വർഗ്ഗീകരണങ്ങൾ 2 + +ഈ രണ്ടാം വർഗ്ഗീകരണ പാഠത്തിൽ, നിങ്ങൾ സംഖ്യാത്മക ഡാറ്റ വർഗ്ഗീകരിക്കുന്ന കൂടുതൽ മാർഗങ്ങൾ അന്വേഷിക്കും. മറ്റൊരു വർഗ്ഗീകരണ ഉപാധി തിരഞ്ഞെടുക്കുന്നതിന്റെ ഫലങ്ങൾക്കുറിച്ചും നിങ്ങൾ പഠിക്കും. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +### മുൻകൂർ ആവശ്യകത + +നിങ്ങൾ മുമ്പത്തെ പാഠങ്ങൾ പൂർത്തിയാക്കിയിട്ടുണ്ട് എന്ന് ഞങ്ങൾ കരുതുന്നു, കൂടാതെ ഈ 4-പാഠ ഫോളഡറിന്റെ റൂട്ടിൽ ഉള്ള `data` ഫോൾഡറിൽ _cleaned_cuisines.csv_ എന്ന ശുദ്ധീകരിച്ച ഡാറ്റാസെറ്റ് ഉണ്ട്. + +### തയ്യാറെടുപ്പ് + +നിങ്ങളുടെ _notebook.ipynb_ ഫയലിൽ ശുദ്ധീകരിച്ച ഡാറ്റാസെറ്റ് ലോഡ് ചെയ്തിട്ടുണ്ട്, കൂടാതെ മോഡൽ നിർമ്മാണ പ്രക്രിയയ്ക്ക് തയ്യാറായി X, y ഡാറ്റാഫ്രെയിമുകളായി വിഭജിച്ചിട്ടുണ്ട്. + +## ഒരു വർഗ്ഗീകരണ മാപ്പ് + +മുൻപ്, മൈക്രോസോഫ്റ്റിന്റെ ചീറ്റ്ഷീറ്റിന്റെ സഹായത്തോടെ ഡാറ്റ വർഗ്ഗീകരിക്കുന്നതിനുള്ള വിവിധ ഓപ്ഷനുകൾ നിങ്ങൾ പഠിച്ചിരുന്നു. Scikit-learn സമാനമായ, എന്നാൽ കൂടുതൽ സൂക്ഷ്മമായ ഒരു ചീറ്റ്ഷീറ്റ് നൽകുന്നു, ഇത് നിങ്ങളുടെ എസ്റ്റിമേറ്റർമാരെ (വർഗ്ഗീകരണ ഉപാധികൾക്ക് മറ്റൊരു പദം) കൂടുതൽ കുറയ്ക്കാൻ സഹായിക്കും: + +![ML Map from Scikit-learn](../../../../translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.ml.png) +> ടിപ്പ്: [ഈ മാപ്പ് ഓൺലൈനിൽ സന്ദർശിക്കുക](https://scikit-learn.org/stable/tutorial/machine_learning_map/) കൂടാതെ പാതയിലൂടെ ക്ലിക്ക് ചെയ്ത് ഡോക്യുമെന്റേഷൻ വായിക്കുക. + +### പദ്ധതി + +നിങ്ങളുടെ ഡാറ്റയെക്കുറിച്ച് വ്യക്തമായ ധാരണയുണ്ടായാൽ ഈ മാപ്പ് വളരെ സഹായകരമാണ്, കാരണം നിങ്ങൾ അതിന്റെ പാതകളിലൂടെ 'നടക്കാം' ഒരു തീരുമാനം എടുക്കാൻ: + +- ഞങ്ങൾക്ക് >50 സാമ്പിളുകൾ ഉണ്ട് +- ഒരു വിഭാഗം പ്രവചിക്കണം +- ലേബൽ ചെയ്ത ഡാറ്റ ഉണ്ട് +- 100K സാമ്പിളുകൾക്കു താഴെയാണ് +- ✨ നാം ഒരു ലീനിയർ SVC തിരഞ്ഞെടുക്കാം +- അത് പ്രവർത്തിക്കാത്ത പക്ഷം, സംഖ്യാത്മക ഡാറ്റ ഉള്ളതിനാൽ + - നാം ✨ KNeighbors Classifier പരീക്ഷിക്കാം + - അത് പ്രവർത്തിക്കാത്ത പക്ഷം, ✨ SVC, ✨ Ensemble Classifiers പരീക്ഷിക്കുക + +ഇത് പിന്തുടരാൻ വളരെ സഹായകരമായ ഒരു പാതയാണ്. + +## അഭ്യാസം - ഡാറ്റ വിഭജിക്കുക + +ഈ പാത പിന്തുടർന്ന്, നാം ഉപയോഗിക്കാൻ ചില ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുന്നതിൽ നിന്ന് തുടങ്ങാം. + +1. ആവശ്യമായ ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക: + + ```python + from sklearn.neighbors import KNeighborsClassifier + from sklearn.linear_model import LogisticRegression + from sklearn.svm import SVC + from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier + from sklearn.model_selection import train_test_split, cross_val_score + from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve + import numpy as np + ``` + +1. നിങ്ങളുടെ പരിശീലനവും ടെസ്റ്റ് ഡാറ്റയും വിഭജിക്കുക: + + ```python + X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3) + ``` + +## ലീനിയർ SVC വർഗ്ഗീകരകൻ + +സപ്പോർട്ട്-വെക്ടർ ക്ലസ്റ്ററിംഗ് (SVC) ML സാങ്കേതികവിദ്യകളായ Support-Vector machines കുടുംബത്തിലെ ഒരു ശാഖയാണ് (താഴെ ഇതിനെക്കുറിച്ച് കൂടുതൽ പഠിക്കുക). ഈ രീതിയിൽ, ലേബലുകൾ എങ്ങനെ ക്ലസ്റ്റർ ചെയ്യാമെന്ന് തീരുമാനിക്കാൻ 'kernel' തിരഞ്ഞെടുക്കാം. 'C' പാരാമീറ്റർ 'regularization' നെ സൂചിപ്പിക്കുന്നു, ഇത് പാരാമീറ്ററുകളുടെ സ്വാധീനം നിയന്ത്രിക്കുന്നു. kernel [വിവിധങ്ങളിലൊന്നായിരിക്കാം](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); ഇവിടെ നാം 'linear' ആയി സജ്ജമാക്കി ലീനിയർ SVC പ്രയോജനപ്പെടുത്തുന്നു. Probability ഡിഫോൾട്ട് 'false' ആണ്; ഇവിടെ 'true' ആയി സജ്ജമാക്കി സാധ്യതാ അളവുകൾ ശേഖരിക്കുന്നു. ഡാറ്റ ഷഫിൾ ചെയ്യാൻ random state '0' ആയി സജ്ജമാക്കിയിട്ടുണ്ട്. + +### അഭ്യാസം - ലീനിയർ SVC പ്രയോഗിക്കുക + +വർഗ്ഗീകരകങ്ങളുടെ ഒരു അറേ സൃഷ്ടിച്ച് തുടങ്ങുക. പരീക്ഷണങ്ങൾ നടത്തുമ്പോൾ ഈ അറേയിൽ ക്രമാനുസൃതമായി ചേർക്കും. + +1. ലീനിയർ SVC ഉപയോഗിച്ച് തുടങ്ങുക: + + ```python + C = 10 + # വ്യത്യസ്ത ക്ലാസിഫയർസുകൾ സൃഷ്ടിക്കുക. + classifiers = { + 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0) + } + ``` + +2. ലീനിയർ SVC ഉപയോഗിച്ച് മോഡൽ പരിശീലിപ്പിച്ച് റിപ്പോർട്ട് പ്രിന്റ് ചെയ്യുക: + + ```python + n_classifiers = len(classifiers) + + for index, (name, classifier) in enumerate(classifiers.items()): + classifier.fit(X_train, np.ravel(y_train)) + + y_pred = classifier.predict(X_test) + accuracy = accuracy_score(y_test, y_pred) + print("Accuracy (train) for %s: %0.1f%% " % (name, accuracy * 100)) + print(classification_report(y_test,y_pred)) + ``` + + ഫലം വളരെ നല്ലതാണ്: + + ```output + Accuracy (train) for Linear SVC: 78.6% + precision recall f1-score support + + chinese 0.71 0.67 0.69 242 + indian 0.88 0.86 0.87 234 + japanese 0.79 0.74 0.76 254 + korean 0.85 0.81 0.83 242 + thai 0.71 0.86 0.78 227 + + accuracy 0.79 1199 + macro avg 0.79 0.79 0.79 1199 + weighted avg 0.79 0.79 0.79 1199 + ``` + +## K-Neighbors വർഗ്ഗീകരകൻ + +K-Neighbors ML രീതികളായ "neighbors" കുടുംബത്തിലെ ഒരു ഭാഗമാണ്, ഇത് സൂപ്പർവൈസ്ഡ്, അൺസൂപ്പർവൈസ്ഡ് പഠനത്തിനും ഉപയോഗിക്കാം. ഈ രീതിയിൽ, മുൻകൂട്ടി നിർവ്വചിച്ച പോയിന്റുകളുടെ എണ്ണം സൃഷ്ടിച്ച്, ഡാറ്റ ഈ പോയിന്റുകളുടെ ചുറ്റും ശേഖരിച്ച് പൊതുവായ ലേബലുകൾ പ്രവചിക്കാനാകും. + +### അഭ്യാസം - K-Neighbors വർഗ്ഗീകരകൻ പ്രയോഗിക്കുക + +മുൻ വർഗ്ഗീകരകൻ നല്ലതായിരുന്നു, ഡാറ്റയുമായി നന്നായി പ്രവർത്തിച്ചു, പക്ഷേ നാം കൂടുതൽ കൃത്യത നേടാമോ എന്ന് നോക്കാം. K-Neighbors വർഗ്ഗീകരകൻ പരീക്ഷിക്കുക. + +1. നിങ്ങളുടെ വർഗ്ഗീകരക അറേയിൽ ഒരു വരി ചേർക്കുക (ലീനിയർ SVC ഇനത്തിന് ശേഷം കോമ ചേർക്കുക): + + ```python + 'KNN classifier': KNeighborsClassifier(C), + ``` + + ഫലം കുറച്ച് മോശമാണ്: + + ```output + Accuracy (train) for KNN classifier: 73.8% + precision recall f1-score support + + chinese 0.64 0.67 0.66 242 + indian 0.86 0.78 0.82 234 + japanese 0.66 0.83 0.74 254 + korean 0.94 0.58 0.72 242 + thai 0.71 0.82 0.76 227 + + accuracy 0.74 1199 + macro avg 0.76 0.74 0.74 1199 + weighted avg 0.76 0.74 0.74 1199 + ``` + + ✅ [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors) കുറിച്ച് പഠിക്കുക + +## Support Vector Classifier + +Support-Vector വർഗ്ഗീകരകർ [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) ML രീതികളുടെ കുടുംബത്തിലെ ഭാഗമാണ്, വർഗ്ഗീകരണവും റെഗ്രഷനും വേണ്ടി ഉപയോഗിക്കുന്നു. SVMകൾ "പരിശീലന ഉദാഹരണങ്ങളെ ബിന്ദുക്കളായി മാപ്പ് ചെയ്യുന്നു" രണ്ട് വിഭാഗങ്ങൾക്കിടയിലെ ദൂരം പരമാവധി ആക്കാൻ. പിന്നീട് വരുന്ന ഡാറ്റ ഈ സ്ഥലത്ത് മാപ്പ് ചെയ്ത് അവരുടെ വിഭാഗം പ്രവചിക്കാം. + +### അഭ്യാസം - Support Vector Classifier പ്രയോഗിക്കുക + +കുറച്ച് കൂടുതൽ കൃത്യതക്കായി Support Vector Classifier പരീക്ഷിക്കാം. + +1. K-Neighbors ഇനത്തിന് ശേഷം കോമ ചേർക്കുക, പിന്നെ ഈ വരി ചേർക്കുക: + + ```python + 'SVC': SVC(), + ``` + + ഫലം വളരെ നല്ലതാണ്! + + ```output + Accuracy (train) for SVC: 83.2% + precision recall f1-score support + + chinese 0.79 0.74 0.76 242 + indian 0.88 0.90 0.89 234 + japanese 0.87 0.81 0.84 254 + korean 0.91 0.82 0.86 242 + thai 0.74 0.90 0.81 227 + + accuracy 0.83 1199 + macro avg 0.84 0.83 0.83 1199 + weighted avg 0.84 0.83 0.83 1199 + ``` + + ✅ [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm) കുറിച്ച് പഠിക്കുക + +## Ensemble Classifiers + +മുൻ പരീക്ഷണം വളരെ നല്ലതായിരുന്നു എങ്കിലും, പാതയുടെ അവസാനത്തേക്ക് പോകാം. 'Ensemble Classifiers', പ്രത്യേകിച്ച് Random Forest, AdaBoost പരീക്ഷിക്കാം: + +```python + 'RFST': RandomForestClassifier(n_estimators=100), + 'ADA': AdaBoostClassifier(n_estimators=100) +``` + +ഫലം വളരെ നല്ലതാണ്, പ്രത്യേകിച്ച് Random Forest: + +```output +Accuracy (train) for RFST: 84.5% + precision recall f1-score support + + chinese 0.80 0.77 0.78 242 + indian 0.89 0.92 0.90 234 + japanese 0.86 0.84 0.85 254 + korean 0.88 0.83 0.85 242 + thai 0.80 0.87 0.83 227 + + accuracy 0.84 1199 + macro avg 0.85 0.85 0.84 1199 +weighted avg 0.85 0.84 0.84 1199 + +Accuracy (train) for ADA: 72.4% + precision recall f1-score support + + chinese 0.64 0.49 0.56 242 + indian 0.91 0.83 0.87 234 + japanese 0.68 0.69 0.69 254 + korean 0.73 0.79 0.76 242 + thai 0.67 0.83 0.74 227 + + accuracy 0.72 1199 + macro avg 0.73 0.73 0.72 1199 +weighted avg 0.73 0.72 0.72 1199 +``` + +✅ [Ensemble Classifiers](https://scikit-learn.org/stable/modules/ensemble.html) കുറിച്ച് പഠിക്കുക + +ഈ മെഷീൻ ലേണിംഗ് രീതി "അനേകം അടിസ്ഥാന എസ്റ്റിമേറ്റർമാരുടെ പ്രവചനങ്ങൾ സംയോജിപ്പിക്കുന്നു" മോഡലിന്റെ ഗുണമേന്മ മെച്ചപ്പെടുത്താൻ. നമ്മുടെ ഉദാഹരണത്തിൽ, Random Trees, AdaBoost ഉപയോഗിച്ചു. + +- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), ഒരു ശരാശരി രീതി, 'decision trees' ന്റെ 'കാടുകൾ' നിർമ്മിക്കുന്നു, ഓവർഫിറ്റിംഗ് ഒഴിവാക്കാൻ റാൻഡംനസ് ചേർക്കുന്നു. n_estimators പാരാമീറ്റർ മരങ്ങളുടെ എണ്ണം സജ്ജമാക്കുന്നു. + +- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) ഒരു ക്ലാസിഫയർ ഡാറ്റാസെറ്റിൽ ഫിറ്റ് ചെയ്ത്, അതേ ക്ലാസിഫയറിന്റെ പകർപ്പുകൾ അതേ ഡാറ്റാസെറ്റിൽ ഫിറ്റ് ചെയ്യുന്നു. തെറ്റായി വർഗ്ഗീകരിച്ച വസ്തുക്കളുടെ ഭാരം ശ്രദ്ധിച്ച് അടുത്ത ക്ലാസിഫയറിന്റെ ഫിറ്റ് ശരിയാക്കുന്നു. + +--- + +## 🚀ചലഞ്ച് + +ഈ സാങ്കേതികവിദ്യകളിൽ ഓരോതിലും നിങ്ങൾ ക്രമീകരിക്കാവുന്ന നിരവധി പാരാമീറ്ററുകൾ ഉണ്ട്. ഓരോതിന്റെ ഡിഫോൾട്ട് പാരാമീറ്ററുകൾ ഗവേഷണം ചെയ്ത്, ഈ പാരാമീറ്ററുകൾ ക്രമീകരിക്കുന്നത് മോഡലിന്റെ ഗുണമേന്മയ്ക്ക് എന്ത് അർത്ഥമാക്കുമെന്ന് ചിന്തിക്കുക. + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ഈ പാഠങ്ങളിൽ ധാരാളം സാങ്കേതിക പദങ്ങൾ ഉണ്ട്, അതിനാൽ [ഈ പട്ടിക](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) ഉപയോഗിച്ച് ഒരു നിമിഷം അവലോകനം ചെയ്യുക! + +## അസൈൻമെന്റ് + +[പാരാമീറ്റർ കളി](assignment.md) + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/4-Classification/3-Classifiers-2/assignment.md b/translations/ml/4-Classification/3-Classifiers-2/assignment.md new file mode 100644 index 000000000..a83097baa --- /dev/null +++ b/translations/ml/4-Classification/3-Classifiers-2/assignment.md @@ -0,0 +1,27 @@ + +# പാരാമീറ്റർ പ്ലേ + +## നിർദ്ദേശങ്ങൾ + +ഈ ക്ലാസിഫയർസുമായി പ്രവർത്തിക്കുമ്പോൾ ഡിഫോൾട്ട് ആയി സജ്ജീകരിച്ചിരിക്കുന്ന നിരവധി പാരാമീറ്ററുകൾ ഉണ്ട്. VS കോഡിലെ ഇന്റലിസെൻസ് അവയെക്കുറിച്ച് കൂടുതൽ അറിയാൻ സഹായിക്കും. ഈ പാഠത്തിലെ ഒരു ML ക്ലാസിഫിക്കേഷൻ സാങ്കേതിക വിദ്യ സ്വീകരിച്ച് വിവിധ പാരാമീറ്റർ മൂല്യങ്ങൾ മാറ്റി മോഡലുകൾ പുനരുപയോഗിക്കുക. ചില മാറ്റങ്ങൾ മോഡൽ ഗുണനിലവാരം മെച്ചപ്പെടുത്തുന്നതെങ്ങനെ, മറ്റുള്ളവ അത് കുറയ്ക്കുന്നതെങ്ങനെ എന്ന കാരണങ്ങൾ വിശദീകരിക്കുന്ന ഒരു നോട്ട്‌ബുക്ക് നിർമ്മിക്കുക. നിങ്ങളുടെ ഉത്തരം വിശദമായിരിക്കണം. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണാർത്ഥം | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | ----------------------------- | +| | ഒരു ക്ലാസിഫയർ പൂർണ്ണമായി നിർമ്മിച്ചും അതിന്റെ പാരാമീറ്ററുകൾ മാറ്റി മാറ്റങ്ങൾ ടെക്സ്റ്റ് ബോക്സുകളിൽ വിശദീകരിച്ചും ഒരു നോട്ട്‌ബുക്ക് അവതരിപ്പിക്കുന്നു | ഒരു നോട്ട്‌ബുക്ക് ഭാഗികമായി അവതരിപ്പിച്ചോ അല്ലെങ്കിൽ മോശമായി വിശദീകരിച്ചോ ചെയ്തിരിക്കുന്നു | ഒരു നോട്ട്‌ബുക്ക് ബഗ്ഗിയുള്ളതോ പിഴവുള്ളതോ ആണ് | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/4-Classification/3-Classifiers-2/notebook.ipynb b/translations/ml/4-Classification/3-Classifiers-2/notebook.ipynb new file mode 100644 index 000000000..b07eb0d1b --- /dev/null +++ b/translations/ml/4-Classification/3-Classifiers-2/notebook.ipynb @@ -0,0 +1,165 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ക്ലാസിഫിക്കേഷൻ മോഡൽ നിർമ്മിക്കുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 9 + } + ], + "source": [ + "import pandas as pd\n", + "cuisines_df = pd.read_csv(\"../data/cleaned_cuisines.csv\")\n", + "cuisines_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian\n", + "Name: cuisine, dtype: object" + ] + }, + "metadata": {}, + "execution_count": 10 + } + ], + "source": [ + "cuisines_label_df = cuisines_df['cuisine']\n", + "cuisines_label_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 11 + } + ], + "source": [ + "cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)\n", + "cuisines_feature_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "kernelspec": { + "name": "python3", + "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" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "15a83277036572e0773229b5f21c1e12", + "translation_date": "2025-12-19T17:02:50+00:00", + "source_file": "4-Classification/3-Classifiers-2/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/translations/ml/4-Classification/3-Classifiers-2/solution/Julia/README.md b/translations/ml/4-Classification/3-Classifiers-2/solution/Julia/README.md new file mode 100644 index 000000000..cdb5dd2aa --- /dev/null +++ b/translations/ml/4-Classification/3-Classifiers-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/ml/4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb b/translations/ml/4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb new file mode 100644 index 000000000..c802a42c1 --- /dev/null +++ b/translations/ml/4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb @@ -0,0 +1,655 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "lesson_12-R.ipynb", + "provenance": [], + "collapsed_sections": [] + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "fab50046ca413a38939d579f8432274f", + "translation_date": "2025-12-19T17:12:00+00:00", + "source_file": "4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb", + "language_code": "ml" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "jsFutf_ygqSx" + }, + "source": [ + "# ഒരു വർഗ്ഗീകരണ മോഡൽ നിർമ്മിക്കുക: രുചികരമായ ഏഷ്യൻ மற்றும் ഇന്ത്യൻ ഭക്ഷണങ്ങൾ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HD54bEefgtNO" + }, + "source": [ + "## ഭക്ഷണശൈലി വർഗ്ഗീകരണങ്ങൾ 2\n", + "\n", + "ഈ രണ്ടാം വർഗ്ഗീകരണ പാഠത്തിൽ, നാം വർഗ്ഗീയ ഡാറ്റ വർഗ്ഗീകരിക്കാൻ `കൂടുതൽ മാർഗങ്ങൾ` അന്വേഷിക്കും. മറ്റൊരുവിധം ക്ലാസിഫയർ തിരഞ്ഞെടുക്കുന്നതിന്റെ ഫലങ്ങൾ കുറിച്ച് നാം പഠിക്കും.\n", + "\n", + "### [**പാഠം മുൻകൂർ ക്വിസ്**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/23/)\n", + "\n", + "### **ആവശ്യമായ മുൻപരിചയം**\n", + "\n", + "നാം മുമ്പത്തെ പാഠങ്ങൾ പൂർത്തിയാക്കിയതായി കരുതുന്നു, കാരണം നാം മുമ്പ് പഠിച്ച ചില ആശയങ്ങൾ തുടരും.\n", + "\n", + "ഈ പാഠത്തിനായി, താഴെപ്പറയുന്ന പാക്കേജുകൾ ആവശ്യമാണ്:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) ഒരു [R പാക്കേജുകളുടെ ശേഖരം](https://www.tidyverse.org/packages) ആണ്, ഡാറ്റാ സയൻസ് വേഗത്തിൽ, എളുപ്പത്തിൽ, കൂടുതൽ രസകരമായി നടത്താൻ രൂപകൽപ്പന ചെയ്തിരിക്കുന്നു!\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ഫ്രെയിംവർക്ക് മോഡലിംഗ്, മെഷീൻ ലേണിംഗിനുള്ള [പാക്കേജുകളുടെ ശേഖരം](https://www.tidymodels.org/packages/) ആണ്.\n", + "\n", + "- `themis`: [themis പാക്കേജ്](https://themis.tidymodels.org/) അസമതുല്യമായ ഡാറ്റ കൈകാര്യം ചെയ്യുന്നതിനുള്ള അധിക റെസിപ്പി ഘട്ടങ്ങൾ നൽകുന്നു.\n", + "\n", + "നിങ്ങൾക്ക് ഇവ ഇൻസ്റ്റാൾ ചെയ്യാം:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"kernlab\", \"themis\", \"ranger\", \"xgboost\", \"kknn\"))`\n", + "\n", + "അല്ലെങ്കിൽ, താഴെ കൊടുത്തിരിക്കുന്ന സ്ക്രിപ്റ്റ് ഈ മോഡ്യൂൾ പൂർത്തിയാക്കാൻ ആവശ്യമായ പാക്കേജുകൾ നിങ്ങൾക്കുണ്ടോ എന്ന് പരിശോധിച്ച്, ഇല്ലെങ്കിൽ അവ ഇൻസ്റ്റാൾ ചെയ്യും.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "vZ57IuUxgyQt" + }, + "source": [ + "suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\n", + "\n", + "pacman::p_load(tidyverse, tidymodels, themis, kernlab, ranger, xgboost, kknn)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "z22M-pj4g07x" + }, + "source": [ + "ഇപ്പോൾ, നമുക്ക് പ്രവർത്തനം ആരംഭിക്കാം!\n", + "\n", + "## **1. ഒരു വർഗ്ഗീകരണ മാപ്പ്**\n", + "\n", + "നമ്മുടെ [മുൻപത്തെ പാഠത്തിൽ](https://github.com/microsoft/ML-For-Beginners/tree/main/4-Classification/2-Classifiers-1), നാം ചോദ്യം പരിഹരിക്കാൻ ശ്രമിച്ചു: പല മോഡലുകൾക്കിടയിൽ എങ്ങനെ തിരഞ്ഞെടുക്കാം? വലിയ തോതിൽ, ഇത് ഡാറ്റയുടെ സവിശേഷതകളിലും നാം പരിഹരിക്കാൻ ആഗ്രഹിക്കുന്ന പ്രശ്നത്തിന്റെ തരം (ഉദാഹരണത്തിന്, വർഗ്ഗീകരണമോ റിഗ്രഷനോ?) ആശ്രയിച്ചിരിക്കുന്നു.\n", + "\n", + "മുൻപ്, മൈക്രോസോഫ്റ്റിന്റെ ചീറ്റ് ഷീറ്റ് ഉപയോഗിച്ച് ഡാറ്റ വർഗ്ഗീകരിക്കുമ്പോൾ നിങ്ങൾക്കുള്ള വിവിധ ഓപ്ഷനുകൾക്കുറിച്ച് നാം പഠിച്ചു. പൈത്തൺ മെഷീൻ ലേണിംഗ് ഫ്രെയിംവർക്ക്, സ്കൈകിറ്റ്-ലേൺ, സമാനമായെങ്കിലും കൂടുതൽ സൂക്ഷ്മമായ ഒരു ചീറ്റ് ഷീറ്റ് നൽകുന്നു, ഇത് നിങ്ങളുടെ എസ്റ്റിമേറ്ററുകൾ (വർഗ്ഗീകരണങ്ങളുടെ മറ്റൊരു പദം) കൂടുതൽ നിശ്ചയിക്കാൻ സഹായിക്കും:\n", + "\n", + "

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

\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "u1i3xRIVg7vG" + }, + "source": [ + "> ടിപ്പ്: [ഈ മാപ്പ് ഓൺലൈനിൽ സന്ദർശിക്കുക](https://scikit-learn.org/stable/tutorial/machine_learning_map/) കൂടാതെ പാതയിലൂടെ ക്ലിക്ക് ചെയ്ത് ഡോക്യുമെന്റേഷൻ വായിക്കാം.\n", + ">\n", + "> [Tidymodels റഫറൻസ് സൈറ്റ്](https://www.tidymodels.org/find/parsnip/#models) വിവിധ തരം മോഡലുകളെക്കുറിച്ചുള്ള മികച്ച ഡോക്യുമെന്റേഷൻ നൽകുന്നു.\n", + "\n", + "### **പ്ലാൻ** 🗺️\n", + "\n", + "നിങ്ങളുടെ ഡാറ്റയെക്കുറിച്ച് വ്യക്തമായ ധാരണ ഉണ്ടാകുമ്പോൾ ഈ മാപ്പ് വളരെ സഹായകരമാണ്, കാരണം നിങ്ങൾ അതിന്റെ പാതകളിലൂടെ 'നടക്കാൻ' കഴിയും ഒരു തീരുമാനത്തിലേക്ക്:\n", + "\n", + "- ഞങ്ങൾക്ക് \\>50 സാമ്പിളുകൾ ഉണ്ട്\n", + "\n", + "- ഞങ്ങൾ ഒരു വിഭാഗം പ്രവചിക്കണം\n", + "\n", + "- ഞങ്ങൾക്ക് ലേബൽ ചെയ്ത ഡാറ്റ ഉണ്ട്\n", + "\n", + "- ഞങ്ങൾക്ക് 100K സാമ്പിളുകളിൽ കുറവുണ്ട്\n", + "\n", + "- ✨ ഞങ്ങൾ ഒരു ലീനിയർ SVC തിരഞ്ഞെടുക്കാം\n", + "\n", + "- അത് പ്രവർത്തിക്കാത്ത പക്ഷം, ഞങ്ങൾക്ക് സംഖ്യാത്മക ഡാറ്റ ഉണ്ടാകുന്നതിനാൽ\n", + "\n", + " - ✨ KNeighbors ക്ലാസിഫയർ പരീക്ഷിക്കാം\n", + "\n", + " - അത് പ്രവർത്തിക്കാത്ത പക്ഷം, ✨ SVCയും ✨ എൻസംബിൾ ക്ലാസിഫയറുകളും പരീക്ഷിക്കുക\n", + "\n", + "ഇത് പിന്തുടരാൻ വളരെ സഹായകരമായ ഒരു പാതയാണ്. ഇപ്പോൾ, [tidymodels](https://www.tidymodels.org/) മോഡലിംഗ് ഫ്രെയിംവർക്ക് ഉപയോഗിച്ച് നേരിട്ട് തുടങ്ങാം: നല്ല സാങ്കേതിക ശാസ്ത്ര പ്രാക്ടീസ് പ്രോത്സാഹിപ്പിക്കാൻ വികസിപ്പിച്ചിട്ടുള്ള സ്ഥിരതയുള്ള, ലവച്ഛിതമായ R പാക്കേജുകളുടെ സമാഹാരം 😊.\n", + "\n", + "## 2. ഡാറ്റ വിഭജിച്ച് അസമതുല്യമായ ഡാറ്റ സെറ്റിനെ കൈകാര്യം ചെയ്യുക.\n", + "\n", + "മുൻപത്തെ പാഠങ്ങളിൽ നിന്ന്, നമ്മുടെ ക്യൂസിനികളിൽ പൊതുവായ ചില ഘടകങ്ങൾ ഉണ്ടെന്ന് പഠിച്ചു. കൂടാതെ, ക്യൂസിനികളുടെ എണ്ണം അസമതുല്യമായി വിതരണം ചെയ്തിരുന്നു.\n", + "\n", + "ഇവയെ കൈകാര്യം ചെയ്യുന്നതിന്\n", + "\n", + "- വ്യത്യസ്ത ക്യൂസിനികൾ തമ്മിൽ ആശയക്കുഴപ്പം സൃഷ്ടിക്കുന്ന ഏറ്റവും പൊതുവായ ഘടകങ്ങൾ `dplyr::select()` ഉപയോഗിച്ച് ഒഴിവാക്കുക.\n", + "\n", + "- മോഡലിംഗിന് തയ്യാറാക്കാൻ ഡാറ്റ പ്രീപ്രോസസ് ചെയ്യുന്ന ഒരു `recipe` ഉപയോഗിക്കുക, അതിൽ `over-sampling` ആൽഗോരിതം പ്രയോഗിക്കുക.\n", + "\n", + "മുൻപത്തെ പാഠത്തിൽ ഇതു നോക്കിയതിനാൽ ഇത് എളുപ്പം ആയിരിക്കണം 🥳!\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "6tj_rN00hClA" + }, + "source": [ + "# Load the core Tidyverse and Tidymodels packages\n", + "library(tidyverse)\n", + "library(tidymodels)\n", + "\n", + "# Load the original cuisines data\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/4-Classification/data/cuisines.csv\")\n", + "\n", + "# Drop id column, rice, garlic and ginger from our original data set\n", + "df_select <- df %>% \n", + " select(-c(1, rice, garlic, ginger)) %>%\n", + " # Encode cuisine column as categorical\n", + " mutate(cuisine = factor(cuisine))\n", + "\n", + "\n", + "# Create data split specification\n", + "set.seed(2056)\n", + "cuisines_split <- initial_split(data = df_select,\n", + " strata = cuisine,\n", + " prop = 0.7)\n", + "\n", + "# Extract the data in each split\n", + "cuisines_train <- training(cuisines_split)\n", + "cuisines_test <- testing(cuisines_split)\n", + "\n", + "# Display distribution of cuisines in the training set\n", + "cuisines_train %>% \n", + " count(cuisine) %>% \n", + " arrange(desc(n))" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zFin5yw3hHb1" + }, + "source": [ + "### അസമതുല്യമായ ഡാറ്റ കൈകാര്യം ചെയ്യുക\n", + "\n", + "അസമതുല്യമായ ഡാറ്റ മോഡൽ പ്രകടനത്തിൽ നെഗറ്റീവ് ഫലങ്ങൾ ഉണ്ടാക്കാറുണ്ട്. നിരീക്ഷണങ്ങളുടെ എണ്ണം സമമാണ് എങ്കിൽ പല മോഡലുകളും മികച്ച പ്രകടനം കാണിക്കുന്നു, അതിനാൽ അസമതുല്യമായ ഡാറ്റയുമായി അവർ ബുദ്ധിമുട്ടുന്നു.\n", + "\n", + "അസമതുല്യമായ ഡാറ്റ സെറ്റുകളെ കൈകാര്യം ചെയ്യാനുള്ള പ്രധാനമായ രണ്ട് മാർഗ്ഗങ്ങൾ ഉണ്ട്:\n", + "\n", + "- ന്യൂനപക്ഷ ക്ലാസിലേക്ക് നിരീക്ഷണങ്ങൾ ചേർക്കൽ: `ഓവർ-സാമ്പ്ലിംഗ്` ഉദാഹരണത്തിന് SMOTE ആൽഗോരിതം ഉപയോഗിച്ച്, ഇത് ഈ കേസുകളുടെ അടുത്തുള്ള അയൽക്കാരെ ഉപയോഗിച്ച് ന്യൂനപക്ഷ ക്ലാസിന്റെ പുതിയ ഉദാഹരണങ്ങൾ സിന്തറ്റിക്കായി സൃഷ്ടിക്കുന്നു.\n", + "\n", + "- ഭൂരിപക്ഷ ക്ലാസിൽ നിന്നുള്ള നിരീക്ഷണങ്ങൾ നീക്കംചെയ്യൽ: `അണ്ടർ-സാമ്പ്ലിംഗ്`\n", + "\n", + "മുൻപത്തെ പാഠത്തിൽ, `recipe` ഉപയോഗിച്ച് അസമതുല്യമായ ഡാറ്റ സെറ്റുകളെ എങ്ങനെ കൈകാര്യം ചെയ്യാമെന്ന് ഞങ്ങൾ കാണിച്ചു. ഒരു recipe ഒരു ബ്ലൂപ്രിന്റ് പോലെ കരുതാം, അത് ഒരു ഡാറ്റ സെറ്റിന് ഡാറ്റ വിശകലനത്തിന് തയ്യാറാക്കാൻ ഏത് ഘട്ടങ്ങൾ പ്രയോഗിക്കണമെന്ന് വിവരിക്കുന്നു. നമ്മുടെ കേസിൽ, `training set`-ലുള്ള നമ്മുടെ ക്യൂസിനികളുടെ എണ്ണം സമമായി വേണം. നമുക്ക് ഇതിലേക്ക് നേരിട്ട് പ്രവേശിക്കാം.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "cRzTnHolhLWd" + }, + "source": [ + "# Load themis package for dealing with imbalanced data\n", + "library(themis)\n", + "\n", + "# Create a recipe for preprocessing training data\n", + "cuisines_recipe <- recipe(cuisine ~ ., data = cuisines_train) %>%\n", + " step_smote(cuisine) \n", + "\n", + "# Print recipe\n", + "cuisines_recipe" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KxOQ2ORhhO81" + }, + "source": [ + "ഇപ്പോൾ നാം മോഡലുകൾ പരിശീലിപ്പിക്കാൻ തയ്യാറാണ് 👩‍💻👨‍💻!\n", + "\n", + "## 3. മൾട്ടിനോമിയൽ റെഗ്രഷൻ മോഡലുകൾക്കപ്പുറം\n", + "\n", + "മുൻപത്തെ പാഠത്തിൽ, നാം മൾട്ടിനോമിയൽ റെഗ്രഷൻ മോഡലുകൾ പരിശോധിച്ചു. ക്ലാസിഫിക്കേഷനിനായി കൂടുതൽ ലവചികമായ ചില മോഡലുകൾ പരിശോധിക്കാം.\n", + "\n", + "### സപ്പോർട്ട് വെക്ടർ മെഷീനുകൾ.\n", + "\n", + "ക്ലാസിഫിക്കേഷൻ സന്ധർഭത്തിൽ, `സപ്പോർട്ട് വെക്ടർ മെഷീനുകൾ` എന്നത് ഒരു മെഷീൻ ലേണിംഗ് സാങ്കേതിക വിദ്യയാണ്, ഇത് ക്ലാസുകൾ \"മികച്ച\" വിധത്തിൽ വേർതിരിക്കുന്ന ഒരു *ഹൈപ്പർപ്ലെയിൻ* കണ്ടെത്താൻ ശ്രമിക്കുന്നു. ഒരു ലളിതമായ ഉദാഹരണം നോക്കാം:\n", + "\n", + "

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

https://commons.wikimedia.org/w/index.php?curid=22877598
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "C4Wsd0vZhXYu" + }, + "source": [ + "H1~ ക്ലാസുകൾ വേർതിരിക്കുന്നില്ല. H2~ വേർതിരിക്കുന്നു, പക്ഷേ ചെറിയ മാർജിനോടെയാണ്. H3~ പരമാവധി മാർജിനോടെ അവ വേർതിരിക്കുന്നു.\n", + "\n", + "#### ലീനിയർ സപ്പോർട്ട് വെക്ടർ ക്ലാസിഫയർ\n", + "\n", + "സപ്പോർട്ട്-വെക്ടർ ക്ലസ്റ്ററിംഗ് (SVC) ML സാങ്കേതികവിദ്യകളായ സപ്പോർട്ട്-വെക്ടർ മെഷീനുകളുടെ കുടുംബത്തിലെ ഒരു ശാഖയാണ്. SVC-യിൽ, ഹൈപ്പർപ്ലെയിൻ പരിശീലന നിരീക്ഷണങ്ങളുടെ `മിക്കവാറും` ശരിയായി വേർതിരിക്കാൻ തിരഞ്ഞെടുക്കപ്പെടുന്നു, പക്ഷേ ചില നിരീക്ഷണങ്ങൾ `തെറ്റായി വർഗ്ഗീകരിക്കപ്പെടാം`. ചില പോയിന്റുകൾ തെറ്റായ വശത്ത് ഉണ്ടാകാൻ അനുവദിക്കുന്നതിലൂടെ, SVM ഔട്ട്ലയറുകളോട് കൂടുതൽ ദൃഢമാകുന്നു, അതിനാൽ പുതിയ ഡാറ്റയിലേക്ക് മികച്ച പൊതുവായ പ്രയോഗം സാധ്യമാകുന്നു. ഈ ലംഘനം നിയന്ത്രിക്കുന്ന പാരാമീറ്റർ `cost` എന്നറിയപ്പെടുന്നു, ഇതിന് ഡിഫോൾട്ട് മൂല്യം 1 ആണ് (`help(\"svm_poly\")` കാണുക).\n", + "\n", + "പോളിനോമിയൽ SVM മോഡലിൽ `degree = 1` സജ്ജമാക്കി ഒരു ലീനിയർ SVC സൃഷ്ടിക്കാം.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "vJpp6nuChlBz" + }, + "source": [ + "# Make a linear SVC specification\n", + "svc_linear_spec <- svm_poly(degree = 1) %>% \n", + " set_engine(\"kernlab\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle specification and recipe into a worklow\n", + "svc_linear_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(svc_linear_spec)\n", + "\n", + "# Print out workflow\n", + "svc_linear_wf" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rDs8cWNkhoqu" + }, + "source": [ + "ഇപ്പോൾ നാം പ്രീപ്രോസസ്സിംഗ് ഘട്ടങ്ങളും മോഡൽ സ്പെസിഫിക്കേഷനും ഒരു *workflow* ആയി പകർത്തിയതിനുശേഷം, നാം linear SVC ട്രെയിൻ ചെയ്ത് ഫലങ്ങൾ വിലയിരുത്താൻ മുന്നോട്ട് പോകാം. പ്രകടന മെട്രിക്‌സുകൾക്കായി, നാം വിലയിരുത്തുന്ന ഒരു മെട്രിക് സെറ്റ് സൃഷ്ടിക്കാം: `accuracy`, `sensitivity`, `Positive Predicted Value` എന്നിവയും `F Measure` ഉം.\n", + "\n", + "> `augment()` നൽകിയ ഡാറ്റയിൽ പ്രവചനങ്ങൾക്കായി കോളം(കൾ) ചേർക്കും.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "81wiqcwuhrnq" + }, + "source": [ + "# Train a linear SVC model\n", + "svc_linear_fit <- svc_linear_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "# Create a metric set\n", + "eval_metrics <- metric_set(ppv, sens, accuracy, f_meas)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "svc_linear_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0UFQvHf-huo3" + }, + "source": [ + "#### Support Vector Machine\n", + "\n", + "സപ്പോർട്ട് വെക്ടർ മെഷീൻ (SVM) ക്ലാസുകൾക്കിടയിലെ നോൺ-ലീനിയർ ബൗണ്ടറി സ്വീകരിക്കാൻ സപ്പോർട്ട് വെക്ടർ ക്ലാസിഫയറിന്റെ വിപുലീകരണമാണ്. സാരാംശത്തിൽ, SVMകൾ ക്ലാസുകൾക്കിടയിലെ നോൺലീനിയർ ബന്ധങ്ങൾക്കായി ഫീച്ചർ സ്പേസ് വലുതാക്കാൻ *kernel trick* ഉപയോഗിക്കുന്നു. SVMകൾ ഉപയോഗിക്കുന്ന ഒരു പ്രശസ്തവും അത്യന്തം ലവചികവുമായ kernel ഫംഗ്ഷൻ ആണ് *Radial basis function.* നമ്മുടെ ഡാറ്റയിൽ ഇത് എങ്ങനെ പ്രവർത്തിക്കും എന്ന് നോക്കാം.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-KX4S8mzhzmp" + }, + "source": [ + "set.seed(2056)\n", + "\n", + "# Make an RBF SVM specification\n", + "svm_rbf_spec <- svm_rbf() %>% \n", + " set_engine(\"kernlab\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle specification and recipe into a worklow\n", + "svm_rbf_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(svm_rbf_spec)\n", + "\n", + "\n", + "# Train an RBF model\n", + "svm_rbf_fit <- svm_rbf_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "svm_rbf_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QBFSa7WSh4HQ" + }, + "source": [ + "മികച്ചത് 🤩!\n", + "\n", + "> ✅ ദയവായി കാണുക:\n", + ">\n", + "> - [*Support Vector Machines*](https://bradleyboehmke.github.io/HOML/svm.html), R ഉപയോഗിച്ച് ഹാൻഡ്‌സ്-ഓൺ മെഷീൻ ലേണിംഗ്\n", + ">\n", + "> - [*Support Vector Machines*](https://www.statlearning.com/), R-ൽ ആപ്ലിക്കേഷനുകളോടുകൂടിയ സ്റ്റാറ്റിസ്റ്റിക്കൽ ലേണിംഗിലേക്ക് ഒരു പരിചയം\n", + ">\n", + "> കൂടുതൽ വായനയ്ക്കായി.\n", + "\n", + "### ഏറ്റവും അടുത്തുള്ള നെബർ ക്ലാസിഫയർസ്\n", + "\n", + "*K*-ഏറ്റവും അടുത്തുള്ള നെബർ (KNN) ഒരു ആൽഗോരിതമാണ്, ഇതിൽ ഓരോ നിരീക്ഷണവും മറ്റ് നിരീക്ഷണങ്ങളോടുള്ള അതിന്റെ *സാദൃശ്യത്തിന്റെ* അടിസ്ഥാനത്തിൽ പ്രവചിക്കപ്പെടുന്നു.\n", + "\n", + "നമ്മുടെ ഡാറ്റയിൽ ഒന്ന് ഫിറ്റ് ചെയ്യാം.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "k4BxxBcdh9Ka" + }, + "source": [ + "# Make a KNN specification\n", + "knn_spec <- nearest_neighbor() %>% \n", + " set_engine(\"kknn\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle recipe and model specification into a workflow\n", + "knn_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(knn_spec)\n", + "\n", + "# Train a boosted tree model\n", + "knn_wf_fit <- knn_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "knn_wf_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HaegQseriAcj" + }, + "source": [ + "ഈ മോഡൽ അത്ര നല്ല പ്രകടനം കാഴ്ചവയ്ക്കുന്നില്ലെന്ന് തോന്നുന്നു. മോഡലിന്റെ arguments മാറ്റുന്നത് (കാണുക `help(\"nearest_neighbor\")`) മോഡലിന്റെ പ്രകടനം മെച്ചപ്പെടുത്താൻ സഹായിക്കാം. അതു പരീക്ഷിക്കാൻ മറക്കരുത്.\n", + "\n", + "> ✅ ദയവായി കാണുക:\n", + ">\n", + "> - [Hands-on Machine Learning with R](https://bradleyboehmke.github.io/HOML/)\n", + ">\n", + "> - [An Introduction to Statistical Learning with Applications in R](https://www.statlearning.com/)\n", + ">\n", + "> *K*-Nearest Neighbors ക്ലാസിഫയർസിനെക്കുറിച്ച് കൂടുതൽ അറിയാൻ.\n", + "\n", + "### എൻസംബിൾ ക്ലാസിഫയർസ്\n", + "\n", + "എൻസംബിൾ ആൽഗോരിതങ്ങൾ പല ബേസ് എസ്റ്റിമേറ്ററുകളെ സംയോജിപ്പിച്ച് ഒരു മികച്ച മോഡൽ സൃഷ്ടിക്കുന്നതിലൂടെ പ്രവർത്തിക്കുന്നു, അതായത്:\n", + "\n", + "`bagging`: ബേസ് മോഡലുകളുടെ ഒരു ശേഖരത്തിൽ *ഔസത ഫംഗ്ഷൻ* പ്രയോഗിക്കുന്നത്\n", + "\n", + "`boosting`: പരസ്പരം ആശ്രയിച്ച് പ്രവർത്തിക്കുന്ന മോഡലുകളുടെ ഒരു ശ്രേണി നിർമ്മിച്ച് പ്രവചന പ്രകടനം മെച്ചപ്പെടുത്തുന്നത്.\n", + "\n", + "നമുക്ക് ആദ്യം ഒരു റാൻഡം ഫോറസ്റ്റ് മോഡൽ പരീക്ഷിക്കാം, ഇത് വലിയൊരു ഡിസിഷൻ ട്രീകളുടെ ശേഖരം നിർമ്മിച്ച് അവയ്ക്ക് ഒരു ഔസത ഫംഗ്ഷൻ പ്രയോഗിച്ച് മികച്ച മൊത്തം മോഡൽ സൃഷ്ടിക്കുന്നു.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "49DPoVs6iK1M" + }, + "source": [ + "# Make a random forest specification\n", + "rf_spec <- rand_forest() %>% \n", + " set_engine(\"ranger\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle recipe and model specification into a workflow\n", + "rf_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(rf_spec)\n", + "\n", + "# Train a random forest model\n", + "rf_wf_fit <- rf_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "rf_wf_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RGVYwC_aiUWc" + }, + "source": [ + "നല്ല ജോലി 👏!\n", + "\n", + "നാം ഒരു Boosted Tree മോഡലുമായി പരീക്ഷണം നടത്താം.\n", + "\n", + "Boosted Tree ഒരു എൻസംബിൾ രീതിയാണ്, ഇത് പരമ്പരാഗതമായ തീരുമാനമരങ്ങൾ സൃഷ്ടിക്കുന്നു, ഓരോ മരവും മുമ്പത്തെ മരങ്ങളുടെ ഫലങ്ങളിൽ ആശ്രയിച്ചിരിക്കുന്നു, പിഴവ് ക്രമാതീതമായി കുറയ്ക്കാൻ ശ്രമിക്കുന്നു. തെറ്റായി വർഗ്ഗീകരിച്ച വസ്തുക്കളുടെ ഭാരം ശ്രദ്ധിച്ച് അടുത്ത ക്ലാസിഫയറിന്റെ ഫിറ്റ് ശരിയാക്കുന്നു.\n", + "\n", + "ഈ മോഡൽ ഫിറ്റ് ചെയ്യാനുള്ള വിവിധ മാർഗ്ഗങ്ങൾ ഉണ്ട് (`help(\"boost_tree\")` കാണുക). ഈ ഉദാഹരണത്തിൽ, നാം `xgboost` എഞ്ചിൻ വഴി Boosted trees ഫിറ്റ് ചെയ്യും.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Py1YWo-micWs" + }, + "source": [ + "# Make a boosted tree specification\n", + "boost_spec <- boost_tree(trees = 200) %>% \n", + " set_engine(\"xgboost\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle recipe and model specification into a workflow\n", + "boost_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(boost_spec)\n", + "\n", + "# Train a boosted tree model\n", + "boost_wf_fit <- boost_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "boost_wf_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zNQnbuejigZM" + }, + "source": [ + "> ✅ ദയവായി കാണുക:\n", + ">\n", + "> - [സാമൂഹ്യ ശാസ്ത്രജ്ഞർക്കുള്ള മെഷീൻ ലേണിംഗ്](https://cimentadaj.github.io/ml_socsci/tree-based-methods.html#random-forests)\n", + ">\n", + "> - [R ഉപയോഗിച്ച് ഹാൻഡ്‌സ്-ഓൺ മെഷീൻ ലേണിംഗ്](https://bradleyboehmke.github.io/HOML/)\n", + ">\n", + "> - [R-ൽ അപ്ലിക്കേഷനുകളോടുകൂടിയ സ്റ്റാറ്റിസ്റ്റിക്കൽ ലേണിംഗിലേക്ക് ഒരു പരിചയം](https://www.statlearning.com/)\n", + ">\n", + "> - - xgboost-ന് നല്ല ഒരു പകരം ആയ AdaBoost മോഡൽ പരിശോധിക്കുന്നു.\n", + ">\n", + "> എൺസംബിൾ ക്ലാസിഫയർസിനെക്കുറിച്ച് കൂടുതൽ അറിയാൻ.\n", + "\n", + "## 4. അധികം - പല മോഡലുകളും താരതമ്യം ചെയ്യൽ\n", + "\n", + "ഈ ലാബിൽ നാം വളരെ മോഡലുകൾ ഫിറ്റ് ചെയ്തിട്ടുണ്ട് 🙌. വ്യത്യസ്ത സെറ്റുകളുടെ പ്രീപ്രോസസറുകളും/അഥവാ മോഡൽ സ്പെസിഫിക്കേഷനുകളും ഉപയോഗിച്ച് നിരവധി വർക്ക്‌ഫ്ലോകൾ സൃഷ്ടിച്ച് ഓരോന്നിന്റെയും പ്രകടന മെട്രിക്കുകൾ ഒറ്റത്തവണ കണക്കാക്കുന്നത് ക്ഷീണകരമോ ബുദ്ധിമുട്ടുള്ളതോ ആകാം.\n", + "\n", + "ട്രെയിനിംഗ് സെറ്റിൽ വർക്ക്‌ഫ്ലോകളുടെ ഒരു ലിസ്റ്റ് ഫിറ്റ് ചെയ്ത് ടെസ്റ്റ് സെറ്റിന്റെ അടിസ്ഥാനത്തിൽ പ്രകടന മെട്രിക്കുകൾ തിരികെ നൽകുന്ന ഒരു ഫംഗ്ഷൻ സൃഷ്ടിച്ച് ഇത് പരിഹരിക്കാമോ എന്ന് നോക്കാം. ലിസ്റ്റിലെ ഓരോ ഘടകത്തിലും ഫംഗ്ഷനുകൾ പ്രയോഗിക്കാൻ [purrr](https://purrr.tidyverse.org/) പാക്കേജിൽ നിന്നുള്ള `map()` ഉം `map_dfr()` ഉം ഉപയോഗിക്കാം.\n", + "\n", + "> [`map()`](https://purrr.tidyverse.org/reference/map.html) ഫംഗ്ഷനുകൾ കോഡ് കൂടുതൽ സംക്ഷിപ്തവും വായിക്കാൻ എളുപ്പവുമാക്കുന്ന നിരവധി for ലൂപ്പുകൾ മാറ്റാൻ അനുവദിക്കുന്നു. [`map()`](https://purrr.tidyverse.org/reference/map.html) ഫംഗ്ഷനുകൾക്കുറിച്ച് പഠിക്കാൻ ഏറ്റവും നല്ല സ്ഥലം R for data science-ലെ [iteration chapter](http://r4ds.had.co.nz/iteration.html) ആണ്.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Qzb7LyZnimd2" + }, + "source": [ + "set.seed(2056)\n", + "\n", + "# Create a metric set\n", + "eval_metrics <- metric_set(ppv, sens, accuracy, f_meas)\n", + "\n", + "# Define a function that returns performance metrics\n", + "compare_models <- function(workflow_list, train_set, test_set){\n", + " \n", + " suppressWarnings(\n", + " # Fit each model to the train_set\n", + " map(workflow_list, fit, data = train_set) %>% \n", + " # Make predictions on the test set\n", + " map_dfr(augment, new_data = test_set, .id = \"model\") %>%\n", + " # Select desired columns\n", + " select(model, cuisine, .pred_class) %>% \n", + " # Evaluate model performance\n", + " group_by(model) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class) %>% \n", + " ungroup()\n", + " )\n", + " \n", + "} # End of function" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Fwa712sNisDA" + }, + "source": [ + "നമുക്ക് നമ്മുടെ ഫംഗ്ഷൻ വിളിച്ച് മോഡലുകൾക്കിടയിലെ കൃത്യത താരതമ്യം ചെയ്യാം.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "3i4VJOi2iu-a" + }, + "source": [ + "# Make a list of workflows\n", + "workflow_list <- list(\n", + " \"svc\" = svc_linear_wf,\n", + " \"svm\" = svm_rbf_wf,\n", + " \"knn\" = knn_wf,\n", + " \"random_forest\" = rf_wf,\n", + " \"xgboost\" = boost_wf)\n", + "\n", + "# Call the function\n", + "set.seed(2056)\n", + "perf_metrics <- compare_models(workflow_list = workflow_list, train_set = cuisines_train, test_set = cuisines_test)\n", + "\n", + "# Print out performance metrics\n", + "perf_metrics %>% \n", + " group_by(.metric) %>% \n", + " arrange(desc(.estimate)) %>% \n", + " slice_head(n=7)\n", + "\n", + "# Compare accuracy\n", + "perf_metrics %>% \n", + " filter(.metric == \"accuracy\") %>% \n", + " arrange(desc(.estimate))\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KuWK_lEli4nW" + }, + "source": [ + "\n", + "[**workflowset**](https://workflowsets.tidymodels.org/) പാക്കേജ് ഉപയോക്താക്കൾക്ക് വലിയ തോതിൽ മോഡലുകൾ സൃഷ്ടിക്കുകയും എളുപ്പത്തിൽ ഫിറ്റ് ചെയ്യുകയും ചെയ്യാൻ അനുവദിക്കുന്നു, പക്ഷേ ഇത് പ്രധാനമായും `cross-validation` പോലുള്ള റിസാമ്പ്ലിംഗ് സാങ്കേതികവിദ്യകളുമായി പ്രവർത്തിക്കാൻ രൂപകൽപ്പന ചെയ്തതാണ്, ഇത് നാം ഇതുവരെ പഠിച്ചിട്ടില്ല.\n", + "\n", + "## **🚀ചലഞ്ച്**\n", + "\n", + "ഈ സാങ്കേതികവിദ്യകളിൽ ഓരോതിലും നിങ്ങൾ ക്രമീകരിക്കാവുന്ന നിരവധി പാരാമീറ്ററുകൾ ഉണ്ട്, ഉദാഹരണത്തിന് SVM-കളിലെ `cost`, KNN-യിലെ `neighbors`, Random Forest-യിലെ `mtry` (Randomly Selected Predictors).\n", + "\n", + "ഓരോ മോഡലിന്റെയും ഡിഫോൾട്ട് പാരാമീറ്ററുകൾ അന്വേഷിച്ച് ഈ പാരാമീറ്ററുകൾ ക്രമീകരിക്കുന്നത് മോഡലിന്റെ ഗുണമേന്മയ്ക്ക് എന്ത് അർത്ഥമാക്കുമെന്ന് ചിന്തിക്കുക.\n", + "\n", + "ഒരു പ്രത്യേക മോഡലിന്റെയും അതിന്റെ പാരാമീറ്ററുകളുടെയും കൂടുതൽ വിവരങ്ങൾ അറിയാൻ, ഉപയോഗിക്കുക: `help(\"model\")` ഉദാ: `help(\"rand_forest\")`\n", + "\n", + "> പ്രായോഗികമായി, നാം സാധാരണയായി ഈ മൂല്യങ്ങൾ *മികച്ച മൂല്യങ്ങൾ* എന്ന് *അനുമാനിക്കുന്നു* പല മോഡലുകളും ഒരു `സിമുലേറ്റഡ് ഡാറ്റാ സെറ്റ്`-ൽ പരിശീലിപ്പിച്ച് ഈ മോഡലുകൾ എത്രത്തോളം നല്ല പ്രകടനം കാണിക്കുന്നു എന്ന് അളക്കുന്നു. ഈ പ്രക്രിയയെ **ട്യൂണിംഗ്** എന്ന് വിളിക്കുന്നു.\n", + "\n", + "### [**പോസ്റ്റ്-ലെക്ചർ ക്വിസ്**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/24/)\n", + "\n", + "### **പരിശോധന & സ്വയം പഠനം**\n", + "\n", + "ഈ പാഠങ്ങളിൽ ധാരാളം സാങ്കേതിക പദങ്ങൾ ഉണ്ട്, അതിനാൽ [ഈ പട്ടിക](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) ഒരു നിമിഷം പരിശോധിക്കുക!\n", + "\n", + "#### നന്ദി:\n", + "\n", + "[`Allison Horst`](https://twitter.com/allison_horst/) R-നെ കൂടുതൽ സ്വാഗതം ചെയ്യുന്നതും ആകർഷകവുമാക്കുന്ന അത്ഭുതകരമായ ചിത്രങ്ങൾ സൃഷ്ടിച്ചതിന്. അവളുടെ കൂടുതൽ ചിത്രങ്ങൾ അവളുടെ [ഗാലറി](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM)യിൽ കാണാം.\n", + "\n", + "[Cassie Breviu](https://www.twitter.com/cassieview)യും [Jen Looper](https://www.twitter.com/jenlooper)യും ഈ മോഡ്യൂളിന്റെ ഒറിജിനൽ പൈതൺ പതിപ്പ് സൃഷ്ടിച്ചതിന് ♥️\n", + "\n", + "സന്തോഷകരമായ പഠനം,\n", + "\n", + "[Eric](https://twitter.com/ericntay), ഗോൾഡ് മൈക്രോസോഫ്റ്റ് ലേൺ സ്റ്റുഡന്റ് അംബാസഡർ.\n", + "\n", + "

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

@allison_horst എന്നവരുടെ കലാസൃഷ്ടി
\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/ml/4-Classification/3-Classifiers-2/solution/notebook.ipynb b/translations/ml/4-Classification/3-Classifiers-2/solution/notebook.ipynb new file mode 100644 index 000000000..5453e49de --- /dev/null +++ b/translations/ml/4-Classification/3-Classifiers-2/solution/notebook.ipynb @@ -0,0 +1,304 @@ +{ + "cells": [ + { + "source": [ + "# കൂടുതൽ വർഗ്ഗീകരണ മോഡലുകൾ നിർമ്മിക്കുക\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 1 + } + ], + "source": [ + "import pandas as pd\n", + "cuisines_df = pd.read_csv(\"../../data/cleaned_cuisines.csv\")\n", + "cuisines_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian\n", + "Name: cuisine, dtype: object" + ] + }, + "metadata": {}, + "execution_count": 2 + } + ], + "source": [ + "cuisines_label_df = cuisines_df['cuisine']\n", + "cuisines_label_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 3 + } + ], + "source": [ + "cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)\n", + "cuisines_feature_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# വ്യത്യസ്ത ക്ലാസിഫയറുകൾ പരീക്ഷിക്കുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.svm import SVC\n", + "from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier\n", + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "C = 10\n", + "# Create different classifiers.\n", + "classifiers = {\n", + " 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0),\n", + " 'KNN classifier': KNeighborsClassifier(C),\n", + " 'SVC': SVC(),\n", + " 'RFST': RandomForestClassifier(n_estimators=100),\n", + " 'ADA': AdaBoostClassifier(n_estimators=100)\n", + " \n", + "}\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Accuracy (train) for Linear SVC: 76.4% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.64 0.66 0.65 242\n", + " indian 0.91 0.86 0.89 236\n", + " japanese 0.72 0.73 0.73 245\n", + " korean 0.83 0.75 0.79 234\n", + " thai 0.75 0.82 0.78 242\n", + "\n", + " accuracy 0.76 1199\n", + " macro avg 0.77 0.76 0.77 1199\n", + "weighted avg 0.77 0.76 0.77 1199\n", + "\n", + "Accuracy (train) for KNN classifier: 70.7% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.65 0.63 0.64 242\n", + " indian 0.84 0.81 0.82 236\n", + " japanese 0.60 0.81 0.69 245\n", + " korean 0.89 0.53 0.67 234\n", + " thai 0.69 0.75 0.72 242\n", + "\n", + " accuracy 0.71 1199\n", + " macro avg 0.73 0.71 0.71 1199\n", + "weighted avg 0.73 0.71 0.71 1199\n", + "\n", + "Accuracy (train) for SVC: 80.1% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.71 0.69 0.70 242\n", + " indian 0.92 0.92 0.92 236\n", + " japanese 0.77 0.78 0.77 245\n", + " korean 0.87 0.77 0.82 234\n", + " thai 0.75 0.86 0.80 242\n", + "\n", + " accuracy 0.80 1199\n", + " macro avg 0.80 0.80 0.80 1199\n", + "weighted avg 0.80 0.80 0.80 1199\n", + "\n", + "Accuracy (train) for RFST: 82.8% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.80 0.75 0.77 242\n", + " indian 0.90 0.91 0.90 236\n", + " japanese 0.82 0.78 0.80 245\n", + " korean 0.85 0.82 0.83 234\n", + " thai 0.78 0.89 0.83 242\n", + "\n", + " accuracy 0.83 1199\n", + " macro avg 0.83 0.83 0.83 1199\n", + "weighted avg 0.83 0.83 0.83 1199\n", + "\n", + "Accuracy (train) for ADA: 71.1% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.60 0.57 0.58 242\n", + " indian 0.87 0.84 0.86 236\n", + " japanese 0.71 0.60 0.65 245\n", + " korean 0.68 0.78 0.72 234\n", + " thai 0.70 0.78 0.74 242\n", + "\n", + " accuracy 0.71 1199\n", + " macro avg 0.71 0.71 0.71 1199\n", + "weighted avg 0.71 0.71 0.71 1199\n", + "\n" + ] + } + ], + "source": [ + "n_classifiers = len(classifiers)\n", + "\n", + "for index, (name, classifier) in enumerate(classifiers.items()):\n", + " classifier.fit(X_train, np.ravel(y_train))\n", + "\n", + " y_pred = classifier.predict(X_test)\n", + " accuracy = accuracy_score(y_test, y_pred)\n", + " print(\"Accuracy (train) for %s: %0.1f%% \" % (name, accuracy * 100))\n", + " print(classification_report(y_test,y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "kernelspec": { + "name": "python3", + "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" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "7ea2b714669c823a596d986ba2d5739f", + "translation_date": "2025-12-19T17:09:10+00:00", + "source_file": "4-Classification/3-Classifiers-2/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/translations/ml/4-Classification/4-Applied/README.md b/translations/ml/4-Classification/4-Applied/README.md new file mode 100644 index 000000000..1cdb27b6d --- /dev/null +++ b/translations/ml/4-Classification/4-Applied/README.md @@ -0,0 +1,331 @@ + +# ഒരു ക്യൂസീൻ ശുപാർശ വെബ് ആപ്പ് നിർമ്മിക്കുക + +ഈ പാഠത്തിൽ, നിങ്ങൾ മുമ്പത്തെ പാഠങ്ങളിൽ പഠിച്ച ചില സാങ്കേതിക വിദ്യകൾ ഉപയോഗിച്ച് ക്ലാസിഫിക്കേഷൻ മോഡൽ നിർമ്മിക്കുകയും ഈ പരമ്പരയിൽ മുഴുവൻ ഉപയോഗിച്ച രുചികരമായ ക്യൂസീൻ ഡാറ്റാസെറ്റ് ഉപയോഗിച്ച് അത് നിർമിക്കുകയും ചെയ്യും. കൂടാതെ, Onnx-ന്റെ വെബ് റൺടൈം ഉപയോഗിച്ച് സേവ് ചെയ്ത മോഡൽ ഉപയോഗിക്കുന്ന ഒരു ചെറിയ വെബ് ആപ്പ് നിർമ്മിക്കും. + +മെഷീൻ ലേണിങ്ങിന്റെ ഏറ്റവും പ്രയോജനകരമായ പ്രായോഗിക ഉപയോഗങ്ങളിൽ ഒന്നാണ് ശുപാർശാ സംവിധാനങ്ങൾ നിർമ്മിക്കുന്നത്, ഇന്ന് നിങ്ങൾ ആ ദിശയിൽ ആദ്യപടി എടുക്കാം! + +[![ഈ വെബ് ആപ്പ് അവതരിപ്പിക്കുന്നു](https://img.youtube.com/vi/17wdM9AHMfg/0.jpg)](https://youtu.be/17wdM9AHMfg "Applied ML") + +> 🎥 വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: ജെൻ ലൂപ്പർ ക്ലാസിഫൈ ചെയ്ത ക്യൂസീൻ ഡാറ്റ ഉപയോഗിച്ച് വെബ് ആപ്പ് നിർമ്മിക്കുന്നു + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +ഈ പാഠത്തിൽ നിങ്ങൾ പഠിക്കാനിരിക്കുന്നത്: + +- മോഡൽ നിർമ്മിച്ച് Onnx മോഡലായി സേവ് ചെയ്യുന്നത് എങ്ങനെ +- മോഡൽ പരിശോധിക്കാൻ Netron എങ്ങനെ ഉപയോഗിക്കാം +- നിങ്ങളുടെ മോഡൽ വെബ് ആപ്പിൽ ഇൻഫറൻസിനായി എങ്ങനെ ഉപയോഗിക്കാം + +## നിങ്ങളുടെ മോഡൽ നിർമ്മിക്കുക + +പ്രായോഗിക ML സിസ്റ്റങ്ങൾ നിർമ്മിക്കുന്നത് ഈ സാങ്കേതിക വിദ്യകൾ നിങ്ങളുടെ ബിസിനസ് സിസ്റ്റങ്ങളിൽ പ്രയോജനപ്പെടുത്തുന്നതിന്റെ ഒരു പ്രധാന ഭാഗമാണ്. Onnx ഉപയോഗിച്ച് നിങ്ങൾക്ക് നിങ്ങളുടെ വെബ് ആപ്പുകളിൽ മോഡലുകൾ ഉപയോഗിക്കാം (ആവശ്യമായാൽ ഓഫ്‌ലൈൻ സാഹചര്യത്തിലും ഉപയോഗിക്കാം). + +[മുമ്പത്തെ പാഠത്തിൽ](../../3-Web-App/1-Web-App/README.md), നിങ്ങൾ UFO സൈറ്റിംഗുകളെക്കുറിച്ചുള്ള Regression മോഡൽ നിർമ്മിച്ച്, അത് "പിക്കിൾ" ചെയ്ത് Flask ആപ്പിൽ ഉപയോഗിച്ചിരുന്നു. ഈ ആർക്കിടെക്ചർ അറിയുന്നത് വളരെ പ്രയോജനകരമാണ്, പക്ഷേ അത് ഒരു ഫുൾ-സ്റ്റാക്ക് പൈത്തൺ ആപ്പാണ്, നിങ്ങളുടെ ആവശ്യങ്ങൾ ജാവാസ്ക്രിപ്റ്റ് ആപ്ലിക്കേഷൻ ഉപയോഗിക്കലും ഉൾക്കൊള്ളാം. + +ഈ പാഠത്തിൽ, നിങ്ങൾ അടിസ്ഥാന ജാവാസ്ക്രിപ്റ്റ് അടിസ്ഥാനമാക്കിയുള്ള ഇൻഫറൻസ് സിസ്റ്റം നിർമ്മിക്കാം. ആദ്യം, മോഡൽ പരിശീലിപ്പിച്ച് Onnx ഉപയോഗിക്കാൻ മാറ്റണം. + +## അഭ്യാസം - ക്ലാസിഫിക്കേഷൻ മോഡൽ പരിശീലിപ്പിക്കുക + +ആദ്യം, നാം ഉപയോഗിച്ച ക്ലീനായ ക്യൂസീൻ ഡാറ്റാസെറ്റ് ഉപയോഗിച്ച് ക്ലാസിഫിക്കേഷൻ മോഡൽ പരിശീലിപ്പിക്കുക. + +1. പ്രയോജനകരമായ ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക: + + ```python + !pip install skl2onnx + import pandas as pd + ``` + + നിങ്ങളുടെ Scikit-learn മോഡൽ Onnx ഫോർമാറ്റിലേക്ക് മാറ്റാൻ '[skl2onnx](https://onnx.ai/sklearn-onnx/)' ആവശ്യമാണ്. + +1. തുടർന്ന്, മുമ്പത്തെ പാഠങ്ങളിൽ ചെയ്തതുപോലെ `read_csv()` ഉപയോഗിച്ച് CSV ഫയൽ വായിച്ച് ഡാറ്റ കൈകാര്യം ചെയ്യുക: + + ```python + data = pd.read_csv('../data/cleaned_cuisines.csv') + data.head() + ``` + +1. ആദ്യ രണ്ട് അനാവശ്യ കോളങ്ങൾ നീക്കം ചെയ്ത് ശേഷിക്കുന്ന ഡാറ്റ 'X' ആയി സേവ് ചെയ്യുക: + + ```python + X = data.iloc[:,2:] + X.head() + ``` + +1. ലേബലുകൾ 'y' ആയി സേവ് ചെയ്യുക: + + ```python + y = data[['cuisine']] + y.head() + + ``` + +### പരിശീലന രീതി ആരംഭിക്കുക + +നല്ല കൃത്യതയുള്ള 'SVC' ലൈബ്രറി ഉപയോഗിക്കും. + +1. Scikit-learn-ൽ നിന്നുള്ള അനുയോജ്യമായ ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക: + + ```python + from sklearn.model_selection import train_test_split + from sklearn.svm import SVC + from sklearn.model_selection import cross_val_score + from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report + ``` + +1. പരിശീലനവും ടെസ്റ്റ് സെറ്റുകളും വേർതിരിക്കുക: + + ```python + X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3) + ``` + +1. മുമ്പത്തെ പാഠത്തിൽ ചെയ്തതുപോലെ SVC ക്ലാസിഫിക്കേഷൻ മോഡൽ നിർമ്മിക്കുക: + + ```python + model = SVC(kernel='linear', C=10, probability=True,random_state=0) + model.fit(X_train,y_train.values.ravel()) + ``` + +1. ഇപ്പോൾ, predict() വിളിച്ച് മോഡൽ പരീക്ഷിക്കുക: + + ```python + y_pred = model.predict(X_test) + ``` + +1. മോഡലിന്റെ ഗുണനിലവാരം പരിശോധിക്കാൻ ക്ലാസിഫിക്കേഷൻ റിപ്പോർട്ട് പ്രിന്റ് ചെയ്യുക: + + ```python + print(classification_report(y_test,y_pred)) + ``` + + മുമ്പ് കണ്ടതുപോലെ, കൃത്യത നല്ലതാണ്: + + ```output + precision recall f1-score support + + chinese 0.72 0.69 0.70 257 + indian 0.91 0.87 0.89 243 + japanese 0.79 0.77 0.78 239 + korean 0.83 0.79 0.81 236 + thai 0.72 0.84 0.78 224 + + accuracy 0.79 1199 + macro avg 0.79 0.79 0.79 1199 + weighted avg 0.79 0.79 0.79 1199 + ``` + +### നിങ്ങളുടെ മോഡൽ Onnx-ലേക്ക് മാറ്റുക + +ശരിയായ ടെൻസർ നമ്പർ ഉപയോഗിച്ച് മാറ്റം നടത്തുക. ഈ ഡാറ്റാസെറ്റിൽ 380 ഘടകങ്ങൾ ഉണ്ട്, അതിനാൽ `FloatTensorType`-ൽ ആ നമ്പർ രേഖപ്പെടുത്തണം: + +1. 380 എന്ന ടെൻസർ നമ്പർ ഉപയോഗിച്ച് മാറ്റുക. + + ```python + from skl2onnx import convert_sklearn + from skl2onnx.common.data_types import FloatTensorType + + initial_type = [('float_input', FloatTensorType([None, 380]))] + options = {id(model): {'nocl': True, 'zipmap': False}} + ``` + +1. onx സൃഷ്ടിച്ച് **model.onnx** എന്ന ഫയലായി സേവ് ചെയ്യുക: + + ```python + onx = convert_sklearn(model, initial_types=initial_type, options=options) + with open("./model.onnx", "wb") as f: + f.write(onx.SerializeToString()) + ``` + + > ശ്രദ്ധിക്കുക, നിങ്ങളുടെ മാറ്റം സ്ക്രിപ്റ്റിൽ [ഓപ്ഷനുകൾ](https://onnx.ai/sklearn-onnx/parameterized.html) നൽകാം. ഈ കേസിൽ, 'nocl' സത്യം ആക്കുകയും 'zipmap' തെറ്റായി സജ്ജമാക്കുകയും ചെയ്തു. ഇത് ക്ലാസിഫിക്കേഷൻ മോഡലായതിനാൽ ZipMap നീക്കം ചെയ്യാനുള്ള ഓപ്ഷൻ ഉണ്ട് (അവശ്യമായില്ല). `nocl` മോഡലിൽ ക്ലാസ് വിവരങ്ങൾ ഉൾപ്പെടുന്നതിനെ സൂചിപ്പിക്കുന്നു. `nocl` 'True' ആക്കി മോഡലിന്റെ വലിപ്പം കുറയ്ക്കാം. + +പൂർണ്ണ നോട്ട്ബുക്ക് റൺ ചെയ്താൽ Onnx മോഡൽ നിർമ്മിച്ച് ഈ ഫോൾഡറിൽ സേവ് ചെയ്യും. + +## നിങ്ങളുടെ മോഡൽ കാണുക + +Onnx മോഡലുകൾ Visual Studio കോഡിൽ വളരെ ദൃശ്യമായില്ല, പക്ഷേ മോഡൽ ശരിയായി നിർമ്മിച്ചതെന്ന് ഉറപ്പാക്കാൻ പല ഗവേഷകരും ഉപയോഗിക്കുന്ന നല്ല സൗജന്യ സോഫ്റ്റ്‌വെയർ ഉണ്ട്. [Netron](https://github.com/lutzroeder/Netron) ഡൗൺലോഡ് ചെയ്ത് model.onnx ഫയൽ തുറക്കുക. 380 ഇൻപുട്ടുകളും ക്ലാസിഫയർ ലിസ്റ്റും ഉള്ള ലളിതമായ മോഡൽ ദൃശ്യമായി കാണാം: + +![Netron visual](../../../../translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.ml.png) + +Netron നിങ്ങളുടെ മോഡലുകൾ കാണാൻ സഹായിക്കുന്ന ഉപകരണം ആണ്. + +ഇപ്പോൾ ഈ മനോഹരമായ മോഡൽ വെബ് ആപ്പിൽ ഉപയോഗിക്കാൻ തയ്യാറാണ്. നിങ്ങളുടെ ഫ്രിഡ്ജിൽ നോക്കി ബാക്കി ഉള്ള ഘടകങ്ങൾ ഉപയോഗിച്ച് ഏത് ക്യൂസീൻ പാചകം ചെയ്യാമെന്ന് കണ്ടെത്താൻ സഹായിക്കുന്ന ഒരു ആപ്പ് നിർമ്മിക്കാം, നിങ്ങളുടെ മോഡൽ നിർദ്ദേശിക്കുന്നതുപോലെ. + +## ശുപാർശാ വെബ് ആപ്പ് നിർമ്മിക്കുക + +നിങ്ങളുടെ മോഡൽ നേരിട്ട് വെബ് ആപ്പിൽ ഉപയോഗിക്കാം. ഈ ആർക്കിടെക്ചർ ലോക്കലായി പോലും ഓൺലൈൻ അല്ലാതെ പ്രവർത്തിക്കാൻ അനുവദിക്കുന്നു. `model.onnx` ഫയൽ സേവ് ചെയ്ത ഫോൾഡറിൽ `index.html` ഫയൽ സൃഷ്ടിച്ച് തുടങ്ങുക. + +1. ഈ _index.html_ ഫയലിൽ താഴെ കാണുന്ന മാർക്കപ്പ് ചേർക്കുക: + + ```html + + +
+ Cuisine Matcher +
+ + ... + + + ``` + +1. ഇപ്പോൾ, `body` ടാഗുകൾക്കുള്ളിൽ, ചില ഘടകങ്ങൾ പ്രതിഫലിപ്പിക്കുന്ന ചെക്ക്ബോക്സുകളുടെ ലിസ്റ്റ് കാണിക്കാൻ ചെറിയ മാർക്കപ്പ് ചേർക്കുക: + + ```html +

Check your refrigerator. What can you create?

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ +
+ ``` + + ഓരോ ചെക്ക്ബോക്സിനും ഒരു മൂല്യം നൽകിയിട്ടുണ്ട്. ഇത് ഡാറ്റാസെറ്റിൽ ഘടകം കണ്ടെത്തുന്ന ഇൻഡക്സ് പ്രതിഫലിപ്പിക്കുന്നു. ഉദാഹരണത്തിന്, ആപ്പിൾ ആൽഫബറ്റിക് ലിസ്റ്റിൽ അഞ്ചാം കോളത്തിൽ ആണ്, അതിനാൽ മൂല്യം '4' ആണ് (0 മുതൽ എണ്ണുന്നത്). ഒരു ഘടകത്തിന്റെ ഇൻഡക്സ് കണ്ടെത്താൻ [ingredients spreadsheet](../../../../4-Classification/data/ingredient_indexes.csv) കാണാം. + + index.html ഫയലിൽ തുടർന്നു, അവസാന ``-നു ശേഷം മോഡൽ വിളിക്കുന്ന ഒരു സ്ക്രിപ്റ്റ് ബ്ലോക്ക് ചേർക്കുക. + +1. ആദ്യം, [Onnx Runtime](https://www.onnxruntime.ai/) ഇറക്കുമതി ചെയ്യുക: + + ```html + + ``` + + > Onnx Runtime നിങ്ങളുടെ Onnx മോഡലുകൾ വിവിധ ഹാർഡ്‌വെയർ പ്ലാറ്റ്‌ഫോമുകളിൽ ഓടിക്കാൻ സഹായിക്കുന്നു, ഒപ്റ്റിമൈസേഷനുകളും API-യും ഉൾപ്പെടെ. + +1. റൺടൈം സജ്ജമാക്കിയ ശേഷം, അതിനെ വിളിക്കാം: + + ```html + + ``` + +ഈ കോഡിൽ പല കാര്യങ്ങളും നടക്കുന്നു: + +1. 380 സാധ്യതയുള്ള മൂല്യങ്ങളുടെ (1 അല്ലെങ്കിൽ 0) ഒരു അറേ സൃഷ്ടിച്ചു, ഘടകം ചെക്ക്ബോക്സ് പരിശോധിച്ചിട്ടുണ്ടോ എന്നതിനെ ആശ്രയിച്ച് മോഡലിന് ഇൻഫറൻസിനായി അയയ്ക്കാൻ. +2. ചെക്ക്ബോക്സുകളുടെ അറേയും, ആപ്പ്ലിക്കേഷൻ ആരംഭിക്കുമ്പോൾ വിളിക്കുന്ന `init` ഫംഗ്ഷനിൽ അവ പരിശോധിക്കുന്ന മാർഗവും സൃഷ്ടിച്ചു. ചെക്ക്ബോക്സ് പരിശോധിച്ചാൽ, `ingredients` അറേ തിരഞ്ഞെടുക്കപ്പെട്ട ഘടകം പ്രതിഫലിപ്പിക്കാൻ മാറ്റം വരുത്തും. +3. ഏതെങ്കിലും ചെക്ക്ബോക്സ് പരിശോധിച്ചിട്ടുണ്ടോ എന്ന് പരിശോധിക്കുന്ന `testCheckboxes` ഫംഗ്ഷൻ സൃഷ്ടിച്ചു. +4. ബട്ടൺ അമർത്തുമ്പോൾ `startInference` ഫംഗ്ഷൻ ഉപയോഗിച്ച്, ഏതെങ്കിലും ചെക്ക്ബോക്സ് പരിശോധിച്ചിട്ടുണ്ടെങ്കിൽ ഇൻഫറൻസ് ആരംഭിക്കുന്നു. +5. ഇൻഫറൻസ് രീതി ഉൾപ്പെടുന്നു: + 1. മോഡൽ അസിങ്ക്രോണസ് ആയി ലോഡ് ചെയ്യൽ + 2. മോഡലിന് അയയ്ക്കാനുള്ള Tensor ഘടന സൃഷ്ടിക്കൽ + 3. പരിശീലന സമയത്ത് സൃഷ്ടിച്ച `float_input` ഇൻപുട്ട് പ്രതിഫലിപ്പിക്കുന്ന 'feeds' സൃഷ്ടിക്കൽ (Netron ഉപയോഗിച്ച് ആ പേര് പരിശോധിക്കാം) + 4. ഈ 'feeds' മോഡലിലേക്ക് അയച്ച് പ്രതികരണം കാത്തിരിക്കുക + +## നിങ്ങളുടെ ആപ്പ് പരീക്ഷിക്കുക + +Visual Studio Code-ൽ index.html ഫയൽ ഉള്ള ഫോൾഡറിൽ ടെർമിനൽ സെഷൻ തുറക്കുക. [http-server](https://www.npmjs.com/package/http-server) ഗ്ലോബലായി ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക, പ്രോംപ്റ്റിൽ `http-server` ടൈപ്പ് ചെയ്യുക. ഒരു ലോക്കൽഹോസ്റ്റ് തുറക്കും, നിങ്ങളുടെ വെബ് ആപ്പ് കാണാം. വിവിധ ഘടകങ്ങൾ അടിസ്ഥാനമാക്കി ശുപാർശ ചെയ്യുന്ന ക്യൂസീൻ പരിശോധിക്കുക: + +![ingredient web app](../../../../translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.ml.png) + +അഭിനന്ദനങ്ങൾ, നിങ്ങൾ കുറച്ച് ഫീൽഡുകളുള്ള 'ശുപാർശ' വെബ് ആപ്പ് സൃഷ്ടിച്ചു. ഈ സിസ്റ്റം വികസിപ്പിക്കാൻ കുറച്ച് സമയം ചെലവഴിക്കൂ! + +## 🚀ചലഞ്ച് + +നിങ്ങളുടെ വെബ് ആപ്പ് വളരെ ലഘുവാണ്, അതിനാൽ [ingredient_indexes](../../../../4-Classification/data/ingredient_indexes.csv) ഡാറ്റയിൽ നിന്നുള്ള ഘടകങ്ങളും അവയുടെ ഇൻഡക്സ് ഉപയോഗിച്ച് ഇത് വികസിപ്പിക്കുക. ഒരു ദേശീയ വിഭവം സൃഷ്ടിക്കാൻ ഏത് രുചി സംയോജനങ്ങൾ പ്രവർത്തിക്കുന്നു? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ഈ പാഠം ഭക്ഷ്യ ഘടകങ്ങൾക്കുള്ള ശുപാർശാ സംവിധാനം സൃഷ്ടിക്കുന്നതിന്റെ പ്രയോജനത്തെ കുറിച്ച് ചെറിയൊരു പരിചയം മാത്രമാണ് നൽകിയിരിക്കുന്നത്, ML അപ്ലിക്കേഷനുകളിൽ ഈ മേഖല ഉദാഹരണങ്ങളിൽ സമൃദ്ധമാണ്. ഈ സംവിധാനങ്ങൾ എങ്ങനെ നിർമ്മിക്കപ്പെടുന്നു എന്ന് കുറച്ച് കൂടുതൽ വായിക്കുക: + +- https://www.sciencedirect.com/topics/computer-science/recommendation-engine +- https://www.technologyreview.com/2014/08/25/171547/the-ultimate-challenge-for-recommendation-engines/ +- https://www.technologyreview.com/2015/03/23/168831/everything-is-a-recommendation/ + +## അസൈൻമെന്റ് + +[പുതിയ ശുപാർശാ സംവിധാനം നിർമ്മിക്കുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/4-Classification/4-Applied/assignment.md b/translations/ml/4-Classification/4-Applied/assignment.md new file mode 100644 index 000000000..814fed4ba --- /dev/null +++ b/translations/ml/4-Classification/4-Applied/assignment.md @@ -0,0 +1,27 @@ + +# ഒരു ശുപാർശയിടുന്ന സംവിധാനം നിർമ്മിക്കുക + +## നിർദ്ദേശങ്ങൾ + +ഈ പാഠത്തിലെ നിങ്ങളുടെ വ്യായാമങ്ങൾ പരിഗണിച്ചാൽ, നിങ്ങൾക്ക് ഇപ്പോൾ Onnx Runtime ഉപയോഗിച്ച് ജാവാസ്ക്രിപ്റ്റ് അടിസ്ഥാനമാക്കിയ വെബ് ആപ്പ് നിർമ്മിക്കുന്നതും ഒരു മാറ്റിയെടുത്ത Onnx മോഡൽ ഉപയോഗിക്കുന്നതും അറിയാം. ഈ പാഠങ്ങളിൽ നിന്നോ മറ്റെവിടെയോ ലഭിക്കുന്ന ഡാറ്റ ഉപയോഗിച്ച് പുതിയ ശുപാർശയിടുന്ന സംവിധാനം നിർമ്മിക്കാൻ പരീക്ഷിക്കുക (ദയവായി ക്രെഡിറ്റ് നൽകുക). വ്യത്യസ്ത വ്യക്തിത്വ ഗുണങ്ങൾ അടിസ്ഥാനമാക്കി ഒരു മൃഗ ശുപാർശയിടുന്ന സംവിധാനം അല്ലെങ്കിൽ ഒരു വ്യക്തിയുടെ മനോഭാവം അടിസ്ഥാനമാക്കി സംഗീത ശൈലി ശുപാർശയിടുന്ന സംവിധാനം നിങ്ങൾ സൃഷ്ടിക്കാം. സൃഷ്ടിപരമായിരിക്കൂ! + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണാർത്ഥം | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ---------------------------------------------------------------------- | ------------------------------------- | --------------------------------- | +| | ഒരു വെബ് ആപ്പ് കൂടാതെ നോട്ട്ബുക്ക് സമർപ്പിച്ചിരിക്കുന്നു, രണ്ടും നന്നായി രേഖപ്പെടുത്തിയതും പ്രവർത്തിക്കുന്നതും | അവയിൽ ഒന്നോ അതിലധികമോ കാണാനില്ല അല്ലെങ്കിൽ പിഴവുള്ളതാണ് | രണ്ടും കാണാനില്ല അല്ലെങ്കിൽ പിഴവുള്ളതാണ് | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/4-Classification/4-Applied/notebook.ipynb b/translations/ml/4-Classification/4-Applied/notebook.ipynb new file mode 100644 index 000000000..417be37c8 --- /dev/null +++ b/translations/ml/4-Classification/4-Applied/notebook.ipynb @@ -0,0 +1,41 @@ +{ + "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": "2f3e0d9e9ac5c301558fb8bf733ac0cb", + "translation_date": "2025-12-19T17:03:06+00:00", + "source_file": "4-Classification/4-Applied/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ഒരു ഭക്ഷണ ശൈലി ശുപാർശക്കാർ നിർമ്മിക്കുക\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/ml/4-Classification/4-Applied/solution/notebook.ipynb b/translations/ml/4-Classification/4-Applied/solution/notebook.ipynb new file mode 100644 index 000000000..7ca7544b4 --- /dev/null +++ b/translations/ml/4-Classification/4-Applied/solution/notebook.ipynb @@ -0,0 +1,292 @@ +{ + "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')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "49325d6dd12a3628fc64fa7ccb1a80ff", + "translation_date": "2025-12-19T17:17:59+00:00", + "source_file": "4-Classification/4-Applied/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ഒരു ഭക്ഷണ ശൈലി ശുപാർശകനെ നിർമ്മിക്കുക\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: skl2onnx in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (1.8.0)\n", + "Requirement already satisfied: protobuf in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (3.8.0)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.19.2)\n", + "Requirement already satisfied: onnx>=1.2.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.9.0)\n", + "Requirement already satisfied: six in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from skl2onnx) (1.12.0)\n", + "Requirement already satisfied: onnxconverter-common<1.9,>=1.6.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.8.1)\n", + "Requirement already satisfied: scikit-learn>=0.19 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (0.24.2)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.4.1)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from protobuf->skl2onnx) (45.1.0)\n", + "Requirement already satisfied: typing-extensions>=3.6.2.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from onnx>=1.2.1->skl2onnx) (3.10.0.0)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from scikit-learn>=0.19->skl2onnx) (2.1.0)\n", + "Requirement already satisfied: joblib>=0.11 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from scikit-learn>=0.19->skl2onnx) (0.16.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "!pip install skl2onnx" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd \n" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 60 + } + ], + "source": [ + "data = pd.read_csv('../../data/cleaned_cuisines.csv')\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 61 + } + ], + "source": [ + "X = data.iloc[:,2:]\n", + "X.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " cuisine\n", + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
cuisine
0indian
1indian
2indian
3indian
4indian
\n
" + }, + "metadata": {}, + "execution_count": 62 + } + ], + "source": [ + "y = data[['cuisine']]\n", + "y.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.svm import SVC\n", + "from sklearn.model_selection import cross_val_score\n", + "from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "SVC(C=10, kernel='linear', probability=True, random_state=0)" + ] + }, + "metadata": {}, + "execution_count": 65 + } + ], + "source": [ + "model = SVC(kernel='linear', C=10, probability=True,random_state=0)\n", + "model.fit(X_train,y_train.values.ravel())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "y_pred = model.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n\n chinese 0.72 0.70 0.71 236\n indian 0.91 0.88 0.89 243\n japanese 0.80 0.75 0.77 240\n korean 0.80 0.81 0.81 230\n thai 0.76 0.85 0.80 250\n\n accuracy 0.80 1199\n macro avg 0.80 0.80 0.80 1199\nweighted avg 0.80 0.80 0.80 1199\n\n" + ] + } + ], + "source": [ + "print(classification_report(y_test,y_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "from skl2onnx import convert_sklearn\n", + "from skl2onnx.common.data_types import FloatTensorType\n", + "\n", + "initial_type = [('float_input', FloatTensorType([None, 380]))]\n", + "options = {id(model): {'nocl': True, 'zipmap': False}}\n", + "onx = convert_sklearn(model, initial_types=initial_type, options=options)\n", + "with open(\"./model.onnx\", \"wb\") as f:\n", + " f.write(onx.SerializeToString())\n", + "\n", + "\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/ml/4-Classification/README.md b/translations/ml/4-Classification/README.md new file mode 100644 index 000000000..bcc285ae7 --- /dev/null +++ b/translations/ml/4-Classification/README.md @@ -0,0 +1,43 @@ + +# വർഗ്ഗീകരണവുമായി ആരംഭിക്കുന്നത് + +## പ്രാദേശിക വിഷയം: രുചികരമായ ഏഷ്യൻ, ഇന്ത്യൻ ഭക്ഷണങ്ങൾ 🍜 + +ഏഷ്യയിലും ഇന്ത്യയിലും ഭക്ഷണപരമ്പരകൾ വളരെ വൈവിധ്യമാർന്നതും, വളരെ രുചികരവുമാണ്! അവയുടെ ഘടകങ്ങൾ മനസ്സിലാക്കാൻ പ്രാദേശിക ഭക്ഷണങ്ങളെക്കുറിച്ചുള്ള ഡാറ്റ നോക്കാം. + +![Thai food seller](../../../translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.ml.jpg) +> ഫോട്ടോ ലിഷെങ് ചാങ് അൺസ്പ്ലാഷിൽ + +## നിങ്ങൾ പഠിക്കാനിരിക്കുന്നതെന്ത് + +ഈ വിഭാഗത്തിൽ, നിങ്ങൾ മുമ്പ് പഠിച്ചിരുന്ന റെഗ്രഷൻ അടിസ്ഥാനമാക്കി, ഡാറ്റയെ കൂടുതൽ മനസ്സിലാക്കാൻ ഉപയോഗിക്കാവുന്ന മറ്റ് വർഗ്ഗീകരണ മോഡലുകൾക്കുറിച്ച് പഠിക്കും. + +> വർഗ്ഗീകരണ മോഡലുകളുമായി പ്രവർത്തിക്കാൻ സഹായിക്കുന്ന ലൊക്കോഡ് ഉപകരണങ്ങൾ ഉണ്ട്. ഈ ടാസ്കിനായി [Azure ML പരീക്ഷിക്കുക](https://docs.microsoft.com/learn/modules/create-classification-model-azure-machine-learning-designer/?WT.mc_id=academic-77952-leestott) + +## പാഠങ്ങൾ + +1. [വർഗ്ഗീകരണത്തിന് പരിചയം](1-Introduction/README.md) +2. [കൂടുതൽ വർഗ്ഗീകരണ മോഡലുകൾ](2-Classifiers-1/README.md) +3. [മറ്റു വർഗ്ഗീകരണ മോഡലുകൾ](3-Classifiers-2/README.md) +4. [പ്രയോഗം: വെബ് ആപ്പ് നിർമ്മാണം](4-Applied/README.md) + +## ക്രെഡിറ്റുകൾ + +"Getting started with classification" സ്നേഹത്തോടെ എഴുതിയത് [കാസ്സി ബ്രെവിയു](https://www.twitter.com/cassiebreviu)യും [ജെൻ ലൂപ്പർ](https://www.twitter.com/jenlooper)യും ആണ് + +രുചികരമായ ഭക്ഷണങ്ങളുടെ ഡാറ്റാസെറ്റ് [Kaggle](https://www.kaggle.com/hoandan/asian-and-indian-cuisines) നിന്നാണ് ലഭിച്ചത്. + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/5-Clustering/1-Visualize/README.md b/translations/ml/5-Clustering/1-Visualize/README.md new file mode 100644 index 000000000..71e685509 --- /dev/null +++ b/translations/ml/5-Clustering/1-Visualize/README.md @@ -0,0 +1,349 @@ + +# ക്ലസ്റ്ററിംഗിലേക്ക് പരിചയം + +ക്ലസ്റ്ററിംഗ് ഒരു തരത്തിലുള്ള [Unsupervised Learning](https://wikipedia.org/wiki/Unsupervised_learning) ആണ്, ഇത് ഒരു ഡാറ്റാസെറ്റ് ലേബൽ ചെയ്യപ്പെടാത്തതാണെന്ന് അല്ലെങ്കിൽ അതിന്റെ ഇൻപുട്ടുകൾ മുൻകൂട്ടി നിർവചിച്ച ഔട്ട്പുട്ടുകളുമായി പൊരുത്തപ്പെടാത്തതാണെന്ന് കരുതുന്നു. ഇത് ലേബൽ ചെയ്യപ്പെടാത്ത ഡാറ്റയിൽ നിന്നു വിവിധ ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് ഡാറ്റയിൽ കാണുന്ന പാറ്റേണുകൾ അനുസരിച്ച് ഗ്രൂപ്പുകൾ നൽകുന്നു. + +[![No One Like You by PSquare](https://img.youtube.com/vi/ty2advRiWJM/0.jpg)](https://youtu.be/ty2advRiWJM "No One Like You by PSquare") + +> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്ത് ഒരു വീഡിയോ കാണുക. നിങ്ങൾ ക്ലസ്റ്ററിംഗ് ഉപയോഗിച്ച് മെഷീൻ ലേണിംഗ് പഠിക്കുമ്പോൾ, നൈജീരിയൻ ഡാൻസ് ഹാൾ ട്രാക്കുകൾ ആസ്വദിക്കുക - ഇത് 2014-ലെ PSquare യുടെ വളരെ പ്രശംസിക്കപ്പെട്ട പാട്ടാണ്. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +### പരിചയം + +[ക്ലസ്റ്ററിംഗ്](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) ഡാറ്റാ എക്സ്പ്ലോറേഷനിൽ വളരെ ഉപകാരപ്രദമാണ്. നൈജീരിയൻ പ്രേക്ഷകർ സംഗീതം എങ്ങനെ ഉപഭോഗിക്കുന്നു എന്നതിൽ ട്രെൻഡുകളും പാറ്റേണുകളും കണ്ടെത്താൻ ഇത് സഹായിക്കുമോ എന്ന് നോക്കാം. + +✅ ക്ലസ്റ്ററിംഗിന്റെ ഉപയോഗങ്ങളെ കുറിച്ച് ഒരു മിനിറ്റ് ചിന്തിക്കുക. യാഥാർത്ഥ്യത്തിൽ, നിങ്ങൾക്ക് വസ്ത്രങ്ങൾ തൊട്ടു തരംതിരിക്കേണ്ടി വന്നപ്പോൾ ക്ലസ്റ്ററിംഗ് സംഭവിക്കുന്നു 🧦👕👖🩲. ഡാറ്റാ സയൻസിൽ, ഉപയോക്താവിന്റെ ഇഷ്ടങ്ങൾ വിശകലനം ചെയ്യുമ്പോഴും, ലേബൽ ചെയ്യപ്പെടാത്ത ഡാറ്റാസെറ്റിന്റെ സവിശേഷതകൾ നിർണയിക്കുമ്പോഴും ക്ലസ്റ്ററിംഗ് സംഭവിക്കുന്നു. ക്ലസ്റ്ററിംഗ് ഒരു വിധത്തിൽ അഴുക്കും കലക്കവും മനസ്സിലാക്കാൻ സഹായിക്കുന്നു, ഒരു സോക്ക് ഡ്രോയർ പോലെ. + +[![Introduction to ML](https://img.youtube.com/vi/esmzYhuFnds/0.jpg)](https://youtu.be/esmzYhuFnds "Introduction to Clustering") + +> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്ത് ഒരു വീഡിയോ കാണുക: MIT-യുടെ ജോൺ ഗുട്ടാഗ് ക്ലസ്റ്ററിംഗ് പരിചയപ്പെടുത്തുന്നു + +പ്രൊഫഷണൽ സാഹചര്യത്തിൽ, ക്ലസ്റ്ററിംഗ് മാർക്കറ്റ് സെഗ്മെന്റേഷൻ, ഉദാഹരണത്തിന് ഏത് പ്രായസംഘം ഏത് വസ്തുക്കൾ വാങ്ങുന്നു എന്നത് നിർണയിക്കാൻ ഉപയോഗിക്കാം. മറ്റൊരു ഉപയോഗം അനോമലി ഡിറ്റക്ഷൻ ആയിരിക്കും, ഉദാഹരണത്തിന് ക്രെഡിറ്റ് കാർഡ് ഇടപാടുകളുടെ ഡാറ്റാസെറ്റിൽ നിന്ന് തട്ടിപ്പ് കണ്ടെത്താൻ. അല്ലെങ്കിൽ മെഡിക്കൽ സ്കാനുകളുടെ ബാച്ചിൽ ട്യൂമറുകൾ കണ്ടെത്താൻ ക്ലസ്റ്ററിംഗ് ഉപയോഗിക്കാം. + +✅ ബാങ്കിംഗ്, ഇ-കൊമേഴ്സ്, ബിസിനസ് മേഖലകളിൽ നിങ്ങൾ എങ്ങനെ ക്ലസ്റ്ററിംഗ് നേരിട്ടു കാണാമെന്ന് ഒരു മിനിറ്റ് ചിന്തിക്കുക. + +> 🎓 രസകരമായി, ക്ലസ്റ്റർ വിശകലനം 1930-കളിൽ ആൻത്രോപോളജി, സൈക്കോളജി മേഖലകളിൽ ആരംഭിച്ചു. ഇത് എങ്ങനെ ഉപയോഗിച്ചിരിക്കാമെന്ന് നിങ്ങൾക്ക് കണക്കാക്കാമോ? + +അല്ലെങ്കിൽ, തിരയൽ ഫലങ്ങൾ ഗ്രൂപ്പുചെയ്യാൻ ഉപയോഗിക്കാം - ഷോപ്പിംഗ് ലിങ്കുകൾ, ചിത്രങ്ങൾ, റിവ്യൂകൾ എന്നിവയുടെ അടിസ്ഥാനത്തിൽ. വലിയ ഡാറ്റാസെറ്റുകൾ കുറയ്ക്കാനും കൂടുതൽ സൂക്ഷ്മമായ വിശകലനം നടത്താനും ക്ലസ്റ്ററിംഗ് സഹായിക്കുന്നു, അതിനാൽ മറ്റ് മോഡലുകൾ നിർമ്മിക്കുന്നതിന് മുമ്പ് ഡാറ്റയെ കുറിച്ച് പഠിക്കാൻ ഈ സാങ്കേതിക വിദ്യ ഉപയോഗിക്കാം. + +✅ നിങ്ങളുടെ ഡാറ്റ ക്ലസ്റ്ററുകളായി ക്രമീകരിച്ച ശേഷം, അതിന് ക്ലസ്റ്റർ ഐഡി നൽകുന്നു, ഇത് ഡാറ്റാസെറ്റിന്റെ സ്വകാര്യത സംരക്ഷിക്കാൻ സഹായകമാണ്; ഒരു ഡാറ്റാ പോയിന്റിനെ കൂടുതൽ വെളിപ്പെടുത്തുന്ന തിരിച്ചറിയൽ ഡാറ്റയിലൂടെ അല്ല, ക്ലസ്റ്റർ ഐഡി ഉപയോഗിച്ച് സൂചിപ്പിക്കാം. ക്ലസ്റ്റർ ഐഡി ഉപയോഗിക്കുന്നതിന് മറ്റെന്തെങ്കിലും കാരണങ്ങൾ നിങ്ങൾക്ക് തോന്നുന്നുണ്ടോ? + +ക്ലസ്റ്ററിംഗ് സാങ്കേതിക വിദ്യകളെ കുറിച്ച് കൂടുതൽ അറിയാൻ ഈ [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott) കാണുക + +## ക്ലസ്റ്ററിംഗ് ആരംഭിക്കുന്നത് + +[Scikit-learn വലിയൊരു ശ്രേണി](https://scikit-learn.org/stable/modules/clustering.html) ക്ലസ്റ്ററിംഗ് നടത്താനുള്ള രീതികൾ നൽകുന്നു. നിങ്ങൾ തിരഞ്ഞെടുക്കുന്ന തരം നിങ്ങളുടെ ഉപയോഗ കേസിനനുസരിച്ചിരിക്കും. ഡോക്യുമെന്റേഷനുസരിച്ച്, ഓരോ രീതിക്കും വിവിധ ഗുണങ്ങൾ ഉണ്ട്. Scikit-learn പിന്തുണക്കുന്ന രീതികളും അവയുടെ അനുയോജ്യമായ ഉപയോഗ കേസുകളും താഴെ ലളിതമായി കൊടുത്തിരിക്കുന്നു: + +| രീതി നാമം | ഉപയോഗ കേസ് | +| :--------------------------- | :----------------------------------------------------------------- | +| K-Means | പൊതുവായ ഉപയോഗം, ഇൻഡക്ടീവ് | +| Affinity propagation | നിരവധി, അസമതുല്യ ക്ലസ്റ്ററുകൾ, ഇൻഡക്ടീവ് | +| Mean-shift | നിരവധി, അസമതുല്യ ക്ലസ്റ്ററുകൾ, ഇൻഡക്ടീവ് | +| Spectral clustering | കുറച്ച്, സമതുല്യ ക്ലസ്റ്ററുകൾ, ട്രാൻസ്ഡക്ടീവ് | +| Ward hierarchical clustering | നിരവധി, നിയന്ത്രിത ക്ലസ്റ്ററുകൾ, ട്രാൻസ്ഡക്ടീവ് | +| Agglomerative clustering | നിരവധി, നിയന്ത്രിത, നോൺ യൂക്ലിഡിയൻ ദൂരം, ട്രാൻസ്ഡക്ടീവ് | +| DBSCAN | നോൺ-ഫ്ലാറ്റ് ജ്യാമിതീയ, അസമതുല്യ ക്ലസ്റ്ററുകൾ, ട്രാൻസ്ഡക്ടീവ് | +| OPTICS | നോൺ-ഫ്ലാറ്റ് ജ്യാമിതീയ, വ്യത്യസ്ത സാന്ദ്രതയുള്ള അസമതുല്യ ക്ലസ്റ്ററുകൾ, ട്രാൻസ്ഡക്ടീവ് | +| Gaussian mixtures | ഫ്ലാറ്റ് ജ്യാമിതീയ, ഇൻഡക്ടീവ് | +| BIRCH | വലിയ ഡാറ്റാസെറ്റ് ഔട്ട്‌ലൈയർമാരോടുകൂടി, ഇൻഡക്ടീവ് | + +> 🎓 ക്ലസ്റ്ററുകൾ സൃഷ്ടിക്കുന്ന വിധം, ഡാറ്റാ പോയിന്റുകൾ ഗ്രൂപ്പുകളായി എങ്ങനെ കൂട്ടിച്ചേർക്കുന്നു എന്നതുമായി ബന്ധപ്പെട്ടതാണ്. ചില പദങ്ങൾ വിശദീകരിക്കാം: +> +> 🎓 ['Transductive' vs. 'inductive'](https://wikipedia.org/wiki/Transduction_(machine_learning)) +> +> ട്രാൻസ്ഡക്ടീവ് ഇൻഫറൻസ് നിരീക്ഷിച്ച പരിശീലന കേസുകളിൽ നിന്നാണ് ഉത്ഭവിക്കുന്നത്, അവ പ്രത്യേക ടെസ്റ്റ് കേസുകളുമായി പൊരുത്തപ്പെടുന്നു. ഇൻഡക്ടീവ് ഇൻഫറൻസ് പരിശീലന കേസുകളിൽ നിന്നാണ് ഉത്ഭവിക്കുന്നത്, അവ പൊതുവായ നിയമങ്ങളിലേക്ക് മാപ്പ് ചെയ്യപ്പെടുന്നു, പിന്നീട് ആ നിയമങ്ങൾ ടെസ്റ്റ് കേസുകളിൽ പ്രയോഗിക്കുന്നു. +> +> ഉദാഹരണം: നിങ്ങൾക്ക് ഭാഗികമായി മാത്രം ലേബൽ ചെയ്ത ഡാറ്റാസെറ്റ് ഉണ്ടെന്ന് കരുതുക. ചിലത് 'റെക്കോർഡുകൾ', ചിലത് 'സിഡികൾ', ചിലത് ശൂന്യമാണ്. ശൂന്യമായവയ്ക്ക് ലേബലുകൾ നൽകുക എന്നതാണ് നിങ്ങളുടെ ജോലി. ഇൻഡക്ടീവ് സമീപനം തിരഞ്ഞെടുക്കുകയാണെങ്കിൽ, 'റെക്കോർഡുകൾ'യും 'സിഡികളും' കണ്ടെത്താൻ മോഡൽ പരിശീലിപ്പിച്ച് ആ ലേബലുകൾ ലേബൽ ചെയ്യപ്പെടാത്ത ഡാറ്റയിൽ പ്രയോഗിക്കും. ഈ സമീപനം 'കാസറ്റുകൾ' എന്നതിനെ ശരിയായി തിരിച്ചറിയാൻ ബുദ്ധിമുട്ടും. മറുവശത്ത്, ട്രാൻസ്ഡക്ടീവ് സമീപനം ഈ അജ്ഞാത ഡാറ്റയെ കൂടുതൽ ഫലപ്രദമായി കൈകാര്യം ചെയ്യുന്നു, സമാനമായ വസ്തുക്കൾ ഗ്രൂപ്പുചെയ്യുകയും ഗ്രൂപ്പിന് ലേബൽ നൽകുകയും ചെയ്യുന്നു. ഈ സാഹചര്യത്തിൽ, ക്ലസ്റ്ററുകൾ 'വൃത്താകൃതിയിലുള്ള സംഗീത വസ്തുക്കൾ'യും 'ചതുരാകൃതിയിലുള്ള സംഗീത വസ്തുക്കൾ'യും പ്രതിഫലിപ്പിക്കാം. +> +> 🎓 ['Non-flat' vs. 'flat' geometry](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering) +> +> ഗണിതശാസ്ത്ര പദങ്ങൾ നിന്നാണ് നോൺ-ഫ്ലാറ്റ് vs. ഫ്ലാറ്റ് ജ്യാമിതീയ എന്നത് ഉത്ഭവിച്ചത്, ഇത് പോയിന്റുകൾ തമ്മിലുള്ള ദൂരം 'ഫ്ലാറ്റ്' ([Euclidean](https://wikipedia.org/wiki/Euclidean_geometry)) അല്ലെങ്കിൽ 'നോൺ-ഫ്ലാറ്റ്' (നോൺ-യൂക്ലിഡിയൻ) ജ്യാമിതീയ രീതികളിൽ അളക്കുന്നതിനെ സൂചിപ്പിക്കുന്നു. +> +> ഈ സന്ദർഭത്തിൽ 'ഫ്ലാറ്റ്' യൂക്ലിഡിയൻ ജ്യാമിതീയത്തെയാണ് സൂചിപ്പിക്കുന്നത് (ഇതിന്റെ ഭാഗങ്ങൾ 'പ്ലെയിൻ' ജ്യാമിതീയമായി പഠിപ്പിക്കുന്നു), നോൺ-ഫ്ലാറ്റ് നോൺ-യൂക്ലിഡിയൻ ജ്യാമിതീയമാണ്. മെഷീൻ ലേണിംഗുമായി ജ്യാമിതീയത്തിന് എന്ത് ബന്ധമുണ്ട്? ഗണിതശാസ്ത്രത്തിൽ ആധാരമാക്കിയ രണ്ട് മേഖലകളായതിനാൽ, ക്ലസ്റ്ററുകളിലെ പോയിന്റുകൾ തമ്മിലുള്ള ദൂരം അളക്കാനുള്ള ഒരു പൊതുവായ മാർഗ്ഗം വേണം, അത് 'ഫ്ലാറ്റ്' അല്ലെങ്കിൽ 'നോൺ-ഫ്ലാറ്റ്' രീതിയിലായിരിക്കും, ഡാറ്റയുടെ സ്വഭാവം അനുസരിച്ച്. [Euclidean distances](https://wikipedia.org/wiki/Euclidean_distance) രണ്ട് പോയിന്റുകൾ തമ്മിലുള്ള രേഖാഖണ്ഡത്തിന്റെ നീളമായി അളക്കപ്പെടുന്നു. [Non-Euclidean distances](https://wikipedia.org/wiki/Non-Euclidean_geometry) ഒരു വളവിലൂടെ അളക്കപ്പെടുന്നു. നിങ്ങളുടെ ഡാറ്റ, ദൃശ്യവൽക്കരിച്ചപ്പോൾ, ഒരു സമതലത്തിൽ ഇല്ലാത്തതുപോലെ തോന്നുകയാണെങ്കിൽ, അതിനെ കൈകാര്യം ചെയ്യാൻ പ്രത്യേക ആൽഗോരിതം ഉപയോഗിക്കേണ്ടി വരും. +> +![Flat vs Nonflat Geometry Infographic](../../../../translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.ml.png) +> ഇൻഫോഗ്രാഫിക്: [ദാസാനി മടിപള്ളി](https://twitter.com/dasani_decoded) +> +> 🎓 ['Distances'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf) +> +> ക്ലസ്റ്ററുകൾ അവരുടെ ദൂരം മാട്രിക്സ് (distance matrix) പ്രകാരം നിർവചിക്കപ്പെടുന്നു, ഉദാ: പോയിന്റുകൾ തമ്മിലുള്ള ദൂരം. ഈ ദൂരം ചില രീതികളിൽ അളക്കാം. യൂക്ലിഡിയൻ ക്ലസ്റ്ററുകൾ പോയിന്റ് മൂല്യങ്ങളുടെ ശരാശരിയാൽ നിർവചിക്കപ്പെടുന്നു, അവയ്ക്ക് 'സെൻട്രോയിഡ്' അല്ലെങ്കിൽ കേന്ദ്ര പോയിന്റ് ഉണ്ട്. ദൂരം ആ സെൻട്രോയിഡിലേക്കുള്ള ദൂരം അളക്കിയാണ്. നോൺ-യൂക്ലിഡിയൻ ദൂരം 'ക്ലസ്റ്റ്രോയിഡുകൾ' എന്നതിനെ സൂചിപ്പിക്കുന്നു, അത് മറ്റുള്ള പോയിന്റുകൾക്ക് ഏറ്റവും അടുത്തുള്ള പോയിന്റ് ആണ്. ക്ലസ്റ്റ്രോയിഡുകൾ പലവിധം നിർവചിക്കാം. +> +> 🎓 ['Constrained'](https://wikipedia.org/wiki/Constrained_clustering) +> +> [Constrained Clustering](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) ഈ അൺസൂപ്പർവൈസ്ഡ് രീതിയിൽ 'സെമി-സൂപ്പർവൈസ്ഡ്' പഠനം പരിചയപ്പെടുത്തുന്നു. പോയിന്റുകൾ തമ്മിലുള്ള ബന്ധങ്ങൾ 'cannot link' അല്ലെങ്കിൽ 'must-link' ആയി അടയാളപ്പെടുത്തുന്നു, അതിനാൽ ഡാറ്റാസെറ്റിൽ ചില നിയമങ്ങൾ ബാധകമാക്കുന്നു. +> +> ഉദാഹരണം: ഒരു ആൽഗോരിതം ലേബൽ ചെയ്യപ്പെടാത്ത അല്ലെങ്കിൽ ഭാഗികമായി ലേബൽ ചെയ്ത ഡാറ്റാസെറ്റിൽ സ്വതന്ത്രമായി പ്രവർത്തിക്കുമ്പോൾ, അത് സൃഷ്ടിക്കുന്ന ക്ലസ്റ്ററുകൾ ഗുണമേന്മയില്ലായ്മ കാണിക്കാം. മുകളിൽ നൽകിയ ഉദാഹരണത്തിൽ, ക്ലസ്റ്ററുകൾ 'വൃത്താകൃതിയിലുള്ള സംഗീത വസ്തുക്കൾ', 'ചതുരാകൃതിയിലുള്ള സംഗീത വസ്തുക്കൾ', 'ത്രികോണാകൃതിയിലുള്ള വസ്തുക്കൾ', 'കുക്കീസ്' എന്നിങ്ങനെ ഗ്രൂപ്പാക്കാം. ചില നിയന്ത്രണങ്ങൾ ("വസ്തു പ്ലാസ്റ്റിക്കിൽ നിന്നായിരിക്കണം", "വസ്തു സംഗീതം ഉത്പാദിപ്പിക്കാൻ കഴിയണം") നൽകിയാൽ ആൽഗോരിതം മികച്ച തിരഞ്ഞെടുപ്പുകൾ നടത്താൻ സഹായിക്കും. +> +> 🎓 'Density' +> +> 'നോയിസി' ആയ ഡാറ്റ 'ഡെൻസായി' കണക്കാക്കപ്പെടുന്നു. ഓരോ ക്ലസ്റ്ററിലെയും പോയിന്റുകൾ തമ്മിലുള്ള ദൂരം പരിശോധിച്ചാൽ, അത് കൂടുതൽ അല്ലെങ്കിൽ കുറവ് ഡെൻസായിരിക്കാം, അതായത് 'കൂട്ടം' ആയിരിക്കാം, അതിനാൽ ഈ ഡാറ്റ അനുയോജ്യമായ ക്ലസ്റ്ററിംഗ് രീതിയോടെ വിശകലനം ചെയ്യേണ്ടതാണ്. [ഈ ലേഖനം](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) K-Means ക്ലസ്റ്ററിംഗ് എതിരായി HDBSCAN ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് അസമതുല്യ ക്ലസ്റ്റർ സാന്ദ്രതയുള്ള നോയിസി ഡാറ്റാസെറ്റ് എങ്ങനെ പരിശോധിക്കാമെന്ന് കാണിക്കുന്നു. + +## ക്ലസ്റ്ററിംഗ് ആൽഗോരിതങ്ങൾ + +100-ലധികം ക്ലസ്റ്ററിംഗ് ആൽഗോരിതങ്ങൾ ഉണ്ട്, അവയുടെ ഉപയോഗം ഡാറ്റയുടെ സ്വഭാവത്തെ ആശ്രയിച്ചിരിക്കുന്നു. പ്രധാന ചിലതിനെ കുറിച്ച് ചർച്ച ചെയ്യാം: + +- **ഹയർആർക്കിക്കൽ ക്ലസ്റ്ററിംഗ്**. ഒരു വസ്തു അടുത്തുള്ള മറ്റൊരു വസ്തുവിന്റെ സമീപത പ്രകാരം വർഗ്ഗീകരിക്കപ്പെടുമ്പോൾ, ക്ലസ്റ്ററുകൾ അവരുടെ അംഗങ്ങളുടെ മറ്റുള്ള വസ്തുക്കളോടുള്ള ദൂരത്തിന്റെ അടിസ്ഥാനത്തിൽ രൂപപ്പെടുന്നു. Scikit-learn-ന്റെ അഗ്ലോമറേറ്റീവ് ക്ലസ്റ്ററിംഗ് ഹയർആർക്കിക്കൽ ആണ്. + + ![Hierarchical clustering Infographic](../../../../translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.ml.png) + > ഇൻഫോഗ്രാഫിക്: [ദാസാനി മടിപള്ളി](https://twitter.com/dasani_decoded) + +- **സെൻട്രോയിഡ് ക്ലസ്റ്ററിംഗ്**. ഈ ജനപ്രിയ ആൽഗോരിതം 'k' എന്ന ക്ലസ്റ്ററുകളുടെ എണ്ണം തിരഞ്ഞെടുക്കേണ്ടതുണ്ട്, തുടർന്ന് ആൽഗോരിതം ഒരു ക്ലസ്റ്ററിന്റെ കേന്ദ്ര പോയിന്റ് നിർണയിച്ച് ആ പോയിന്റിന്റെ ചുറ്റും ഡാറ്റാ ശേഖരിക്കുന്നു. [K-means clustering](https://wikipedia.org/wiki/K-means_clustering) സെൻട്രോയിഡ് ക്ലസ്റ്ററിംഗിന്റെ ജനപ്രിയ പതിപ്പാണ്. കേന്ദ്രം അടുത്ത ശരാശരിയാൽ നിർണയിക്കുന്നു, അതുകൊണ്ടാണ് പേര്. ക്ലസ്റ്ററിൽ നിന്നുള്ള ചതുരശ്ര ദൂരം കുറഞ്ഞു പോകുന്നു. + + ![Centroid clustering Infographic](../../../../translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.ml.png) + > ഇൻഫോഗ്രാഫിക്: [ദാസാനി മടിപള്ളി](https://twitter.com/dasani_decoded) + +- **വിതരണ അടിസ്ഥാനത്തിലുള്ള ക്ലസ്റ്ററിംഗ്**. സാംഖ്യിക മോഡലിംഗിൽ ആധാരമാക്കിയ, ഒരു ഡാറ്റാ പോയിന്റ് ഒരു ക്ലസ്റ്ററിന് പറ്റിയതായിരിക്കാനുള്ള സാധ്യത നിർണയിച്ച് അതനുസരിച്ച് അത് നിയോഗിക്കുന്നു. Gaussian മിശ്രിത രീതികൾ ഇതിൽപ്പെടുന്നു. + +- **സാന്ദ്രത അടിസ്ഥാനത്തിലുള്ള ക്ലസ്റ്ററിംഗ്**. ഡാറ്റാ പോയിന്റുകൾ അവരുടെ സാന്ദ്രതയുടെ അടിസ്ഥാനത്തിൽ ക്ലസ്റ്ററുകളിലേക്ക് നിയോഗിക്കപ്പെടുന്നു, അഥവാ പരസ്പരം ചുറ്റിപ്പറ്റിയിരിക്കുന്നതിന്റെ അടിസ്ഥാനത്തിൽ. ഗ്രൂപ്പിൽ നിന്ന് ദൂരെ ഉള്ള പോയിന്റുകൾ ഔട്ട്‌ലൈയർസ് അല്ലെങ്കിൽ നോയിസ് ആയി കണക്കാക്കപ്പെടുന്നു. DBSCAN, Mean-shift, OPTICS ഈ തരത്തിലുള്ള ക്ലസ്റ്ററിംഗിൽപ്പെടുന്നു. + +- **ഗ്രിഡ് അടിസ്ഥാനത്തിലുള്ള ക്ലസ്റ്ററിംഗ്**. ബഹുമാനദണ്ഡ ഡാറ്റാസെറ്റുകൾക്കായി ഒരു ഗ്രിഡ് സൃഷ്ടിച്ച് ഡാറ്റ ഗ്രിഡിന്റെ സെല്ലുകളിൽ വിഭജിച്ച് ക്ലസ്റ്ററുകൾ സൃഷ്ടിക്കുന്നു. + +## അഭ്യാസം - നിങ്ങളുടെ ഡാറ്റ ക്ലസ്റ്റർ ചെയ്യുക + +ക്ലസ്റ്ററിംഗ് സാങ്കേതിക വിദ്യയ്ക്ക് ശരിയായ ദൃശ്യവൽക്കരണം വളരെ സഹായകരമാണ്, അതിനാൽ നമ്മുടെ സംഗീത ഡാറ്റ ദൃശ്യവൽക്കരിച്ച് തുടങ്ങാം. ഈ അഭ്യാസം ഈ ഡാറ്റയുടെ സ്വഭാവത്തിന് ഏറ്റവും ഫലപ്രദമായി ഉപയോഗിക്കാവുന്ന ക്ലസ്റ്ററിംഗ് രീതികൾ തിരഞ്ഞെടുക്കാൻ സഹായിക്കും. + +1. ഈ ഫോൾഡറിൽ ഉള്ള [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/notebook.ipynb) ഫയൽ തുറക്കുക. + +1. നല്ല ഡാറ്റാ ദൃശ്യവൽക്കരണത്തിനായി `Seaborn` പാക്കേജ് ഇറക്കുമതി ചെയ്യുക. + + ```python + !pip install seaborn + ``` + +1. [_nigerian-songs.csv_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/data/nigerian-songs.csv) ഫയലിൽ നിന്നുള്ള പാട്ടുകളുടെ ഡാറ്റ ചേർക്കുക. പാട്ടുകളെക്കുറിച്ചുള്ള ചില ഡാറ്റയുള്ള ഒരു ഡാറ്റാഫ്രെയിം ലോഡ് ചെയ്യുക. ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്ത് ഡാറ്റ പുറത്തെടുക്കാൻ തയ്യാറാകുക: + + ```python + import matplotlib.pyplot as plt + import pandas as pd + + df = pd.read_csv("../data/nigerian-songs.csv") + df.head() + ``` + + ഡാറ്റയുടെ ആദ്യ കുറച്ച് വരികൾ പരിശോധിക്കുക: + + | | name | album | artist | artist_top_genre | release_date | length | popularity | danceability | acousticness | energy | instrumentalness | liveness | loudness | speechiness | tempo | time_signature | + | --- | ------------------------ | ---------------------------- | ------------------- | ---------------- | ------------ | ------ | ---------- | ------------ | ------------ | ------ | ---------------- | -------- | -------- | ----------- | ------- | -------------- | + | 0 | Sparky | Mandy & The Jungle | Cruel Santino | alternative r&b | 2019 | 144000 | 48 | 0.666 | 0.851 | 0.42 | 0.534 | 0.11 | -6.699 | 0.0829 | 133.015 | 5 | + | 1 | shuga rush | EVERYTHING YOU HEARD IS TRUE | Odunsi (The Engine) | afropop | 2020 | 89488 | 30 | 0.71 | 0.0822 | 0.683 | 0.000169 | 0.101 | -5.64 | 0.36 | 129.993 | 3 | + | 2 | LITT! | LITT! | AYLØ | indie r&b | 2018 | 207758 | 40 | 0.836 | 0.272 | 0.564 | 0.000537 | 0.11 | -7.127 | 0.0424 | 130.005 | 4 | + | 3 | Confident / Feeling Cool | Enjoy Your Life | Lady Donli | nigerian pop | 2019 | 175135 | 14 | 0.894 | 0.798 | 0.611 | 0.000187 | 0.0964 | -4.961 | 0.113 | 111.087 | 4 | + | 4 | wanted you | rare. | Odunsi (The Engine) | afropop | 2018 | 152049 | 25 | 0.702 | 0.116 | 0.833 | 0.91 | 0.348 | -6.044 | 0.0447 | 105.115 | 4 | + +1. ഡാറ്റാഫ്രെയിമിനെക്കുറിച്ച് ചില വിവരങ്ങൾ നേടുക, `info()` വിളിച്ച്: + + ```python + df.info() + ``` + + ഔട്ട്പുട്ട് ഇങ്ങനെ കാണപ്പെടും: + + ```output + + RangeIndex: 530 entries, 0 to 529 + Data columns (total 16 columns): + # Column Non-Null Count Dtype + --- ------ -------------- ----- + 0 name 530 non-null object + 1 album 530 non-null object + 2 artist 530 non-null object + 3 artist_top_genre 530 non-null object + 4 release_date 530 non-null int64 + 5 length 530 non-null int64 + 6 popularity 530 non-null int64 + 7 danceability 530 non-null float64 + 8 acousticness 530 non-null float64 + 9 energy 530 non-null float64 + 10 instrumentalness 530 non-null float64 + 11 liveness 530 non-null float64 + 12 loudness 530 non-null float64 + 13 speechiness 530 non-null float64 + 14 tempo 530 non-null float64 + 15 time_signature 530 non-null int64 + dtypes: float64(8), int64(4), object(4) + memory usage: 66.4+ KB + ``` + +1. നൾ മൂല്യങ്ങൾക്കായി ഇരട്ട പരിശോധന നടത്തുക, `isnull()` വിളിച്ച് സംഖ്യ 0 ആണെന്ന് ഉറപ്പാക്കുക: + + ```python + df.isnull().sum() + ``` + + എല്ലാം ശരിയാണെന്ന് കാണുന്നു: + + ```output + name 0 + album 0 + artist 0 + artist_top_genre 0 + release_date 0 + length 0 + popularity 0 + danceability 0 + acousticness 0 + energy 0 + instrumentalness 0 + liveness 0 + loudness 0 + speechiness 0 + tempo 0 + time_signature 0 + dtype: int64 + ``` + +1. ഡാറ്റ വിവരണം ചെയ്യുക: + + ```python + df.describe() + ``` + + | | release_date | length | popularity | danceability | acousticness | energy | instrumentalness | liveness | loudness | speechiness | tempo | time_signature | + | ----- | ------------ | ----------- | ---------- | ------------ | ------------ | -------- | ---------------- | -------- | --------- | ----------- | ---------- | -------------- | + | count | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | + | mean | 2015.390566 | 222298.1698 | 17.507547 | 0.741619 | 0.265412 | 0.760623 | 0.016305 | 0.147308 | -4.953011 | 0.130748 | 116.487864 | 3.986792 | + | std | 3.131688 | 39696.82226 | 18.992212 | 0.117522 | 0.208342 | 0.148533 | 0.090321 | 0.123588 | 2.464186 | 0.092939 | 23.518601 | 0.333701 | + | min | 1998 | 89488 | 0 | 0.255 | 0.000665 | 0.111 | 0 | 0.0283 | -19.362 | 0.0278 | 61.695 | 3 | + | 25% | 2014 | 199305 | 0 | 0.681 | 0.089525 | 0.669 | 0 | 0.07565 | -6.29875 | 0.0591 | 102.96125 | 4 | + | 50% | 2016 | 218509 | 13 | 0.761 | 0.2205 | 0.7845 | 0.000004 | 0.1035 | -4.5585 | 0.09795 | 112.7145 | 4 | + | 75% | 2017 | 242098.5 | 31 | 0.8295 | 0.403 | 0.87575 | 0.000234 | 0.164 | -3.331 | 0.177 | 125.03925 | 4 | + | max | 2020 | 511738 | 73 | 0.966 | 0.954 | 0.995 | 0.91 | 0.811 | 0.582 | 0.514 | 206.007 | 5 | + +> 🤔 നാം ലേബൽ ചെയ്ത ഡാറ്റ ആവശ്യമില്ലാത്ത ഒരു അൺസൂപ്പർവൈസ്ഡ് ക്ലസ്റ്ററിംഗ് രീതിയുമായി പ്രവർത്തിക്കുമ്പോൾ, ഈ ലേബലുകളുള്ള ഡാറ്റ കാണിക്കുന്നത് എന്തുകൊണ്ടാണ്? ഡാറ്റ എക്സ്പ്ലോറേഷൻ ഘട്ടത്തിൽ ഇവ സഹായകരമാണ്, പക്ഷേ ക്ലസ്റ്ററിംഗ് ആൽഗോരിതങ്ങൾ പ്രവർത്തിക്കാൻ അവ ആവശ്യമായില്ല. നിങ്ങൾക്ക് കോളം തലക്കെട്ടുകൾ നീക്കം ചെയ്ത് ഡാറ്റ കോളം നമ്പറുകൾ ഉപയോഗിച്ച് കാണിക്കാം. + +ഡാറ്റയുടെ പൊതുവായ മൂല്യങ്ങൾ നോക്കുക. ജനപ്രിയത 0 ആകാമെന്ന് ശ്രദ്ധിക്കുക, അതായത് റാങ്ക് ഇല്ലാത്ത പാട്ടുകൾ. അവ ഉടൻ നീക്കം ചെയ്യാം. + +1. ഏറ്റവും ജനപ്രിയമായ ജാനറുകൾ കണ്ടെത്താൻ ബാർപ്ലോട്ട് ഉപയോഗിക്കുക: + + ```python + import seaborn as sns + + top = df['artist_top_genre'].value_counts() + plt.figure(figsize=(10,7)) + sns.barplot(x=top[:5].index,y=top[:5].values) + plt.xticks(rotation=45) + plt.title('Top genres',color = 'blue') + ``` + + ![most popular](../../../../translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.ml.png) + +✅ കൂടുതൽ ടോപ്പ് മൂല്യങ്ങൾ കാണാൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, ടോപ്പ് `[:5]` വലുതാക്കുക അല്ലെങ്കിൽ നീക്കം ചെയ്ത് എല്ലാം കാണുക. + +ശ്രദ്ധിക്കുക, ടോപ്പ് ജാനർ 'Missing' എന്ന് കാണിച്ചാൽ, അത് Spotify ക്ലാസിഫൈ ചെയ്തിട്ടില്ല എന്നർത്ഥം, അതിനാൽ അത് നീക്കം ചെയ്യാം. + +1. മിസ്സിംഗ് ഡാറ്റ ഫിൽട്ടർ ചെയ്ത് നീക്കം ചെയ്യുക + + ```python + df = df[df['artist_top_genre'] != 'Missing'] + top = df['artist_top_genre'].value_counts() + plt.figure(figsize=(10,7)) + sns.barplot(x=top.index,y=top.values) + plt.xticks(rotation=45) + plt.title('Top genres',color = 'blue') + ``` + + ഇപ്പോൾ ജാനറുകൾ വീണ്ടും പരിശോധിക്കുക: + + ![most popular](../../../../translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.ml.png) + +1. ഇതുവരെ, ടോപ്പ് മൂന്ന് ജാനറുകൾ ഈ ഡാറ്റാസെറ്റിൽ ഭൂരിപക്ഷം കൈവശം വയ്ക്കുന്നു. `afro dancehall`, `afropop`, `nigerian pop` എന്നിവയിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുക, കൂടാതെ ജനപ്രിയത 0 ഉള്ളവ നീക്കം ചെയ്യുക (അർത്ഥം, ഡാറ്റാസെറ്റിൽ ജനപ്രിയതയില്ലാത്തവ, നമ്മുടെ ആവശ്യങ്ങൾക്ക് ശബ്ദം ആയി കണക്കാക്കാം): + + ```python + df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')] + df = df[(df['popularity'] > 0)] + top = df['artist_top_genre'].value_counts() + plt.figure(figsize=(10,7)) + sns.barplot(x=top.index,y=top.values) + plt.xticks(rotation=45) + plt.title('Top genres',color = 'blue') + ``` + +1. ഡാറ്റയിൽ ശക്തമായ ബന്ധം ഉണ്ടോ എന്ന് ഒരു വേഗത്തിലുള്ള പരിശോധന നടത്തുക: + + ```python + corrmat = df.corr(numeric_only=True) + f, ax = plt.subplots(figsize=(12, 9)) + sns.heatmap(corrmat, vmax=.8, square=True) + ``` + + ![correlations](../../../../translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.ml.png) + + ഏകദേശം ശക്തമായ ബന്ധം `energy` ഉം `loudness` ഉം തമ്മിലാണുള്ളത്, അതും അത്ഭുതകരമല്ല, കാരണം ശബ്ദം ഉയർന്ന സംഗീതം സാധാരണയായി ഊർജ്ജസ്വലമാണ്. മറ്റുള്ള ബന്ധങ്ങൾ വളരെ ദുർബലമാണ്. ഈ ഡാറ്റയിൽ ക്ലസ്റ്ററിംഗ് ആൽഗോരിതം എന്ത് കണ്ടെത്തും എന്ന് കാണുന്നത് രസകരമായിരിക്കും. + + > 🎓 ബന്ധം കാരണസംബന്ധം സൂചിപ്പിക്കുന്നില്ല! ബന്ധം തെളിവുണ്ട്, കാരണസംബന്ധം തെളിവില്ല. [ഒരു രസകരമായ വെബ്‌സൈറ്റ്](https://tylervigen.com/spurious-correlations) ഈ കാര്യത്തെ ഊന്നിപ്പറയുന്ന ദൃശ്യങ്ങൾ നൽകുന്നു. + +ഈ ഡാറ്റാസെറ്റിൽ പാട്ടിന്റെ ജനപ്രിയതയും ഡാൻസബിലിറ്റിയും തമ്മിൽ ഏതെങ്കിലും ഏകീകൃതതയുണ്ടോ? ഒരു FacetGrid കാണിക്കുന്നു, ജാനറിനെ ആശ്രയിക്കാതെ ഏകീകൃതമായ വൃത്തങ്ങൾ വരുന്നു. നൈജീരിയൻ രുചികൾ ഈ ജാനറിനായി ഒരു നിശ്ചിത ഡാൻസബിലിറ്റി നിലയിൽ ഏകീകൃതമാകാമോ? + +✅ വ്യത്യസ്ത ഡാറ്റാപോയിന്റുകൾ (energy, loudness, speechiness) പരീക്ഷിക്കുക, കൂടാതെ കൂടുതൽ അല്ലെങ്കിൽ വ്യത്യസ്ത സംഗീത ജാനറുകൾ പരീക്ഷിക്കുക. എന്ത് കണ്ടെത്താം? പൊതുവായ ഡാറ്റാ പോയിന്റുകളുടെ വ്യാപ്തി കാണാൻ `df.describe()` പട്ടിക നോക്കുക. + +### അഭ്യാസം - ഡാറ്റ വിതരണവും + +ജനപ്രിയതയുടെ അടിസ്ഥാനത്തിൽ ഈ മൂന്ന് ജാനറുകൾ ഡാൻസബിലിറ്റിയിൽ ഗണ്യമായ വ്യത്യാസമുണ്ടോ? + +1. ജനപ്രിയതയും ഡാൻസബിലിറ്റിയും നൽകിയ x, y അക്ഷങ്ങളിൽ ടോപ്പ് മൂന്ന് ജാനറുകളുടെ ഡാറ്റ വിതരണവും പരിശോധിക്കുക. + + ```python + sns.set_theme(style="ticks") + + g = sns.jointplot( + data=df, + x="popularity", y="danceability", hue="artist_top_genre", + kind="kde", + ) + ``` + + പൊതുവായ ഏകീകൃത ബിന്ദുവിന്റെ ചുറ്റും ഏകീകൃത വൃത്തങ്ങൾ കണ്ടെത്താം, പോയിന്റുകളുടെ വിതരണത്തെ കാണിക്കുന്നു. + + > 🎓 ഈ ഉദാഹരണം KDE (Kernel Density Estimate) ഗ്രാഫ് ഉപയോഗിക്കുന്നു, ഇത് ഡാറ്റ തുടർച്ചയായ പ്രൊബബിലിറ്റി ഡെൻസിറ്റി വളർച്ച ഉപയോഗിച്ച് പ്രതിനിധാനം ചെയ്യുന്നു. ഇത് പല വിതരണങ്ങളുമായി പ്രവർത്തിക്കുമ്പോൾ ഡാറ്റ വ്യാഖ്യാനിക്കാൻ സഹായിക്കുന്നു. + + പൊതുവായി, ഈ മൂന്ന് ജാനറുകൾ ജനപ്രിയതയിലും ഡാൻസബിലിറ്റിയിലും അല്പം സാരമായ ഏകീകരണം കാണിക്കുന്നു. ഈ അല്പം ഏകീകരിച്ച ഡാറ്റയിൽ ക്ലസ്റ്ററുകൾ കണ്ടെത്തുന്നത് ഒരു വെല്ലുവിളിയാകും: + + ![distribution](../../../../translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.ml.png) + +1. ഒരു സ്കാറ്റർ പ്ലോട്ട് സൃഷ്ടിക്കുക: + + ```python + sns.FacetGrid(df, hue="artist_top_genre", height=5) \ + .map(plt.scatter, "popularity", "danceability") \ + .add_legend() + ``` + + സമാന അക്ഷങ്ങളുള്ള സ്കാറ്റർപ്ലോട്ട് ഏകീകൃത മാതൃക കാണിക്കുന്നു + + ![Facetgrid](../../../../translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.ml.png) + +പൊതുവായി, ക്ലസ്റ്ററിംഗിനായി, ഡാറ്റ ക്ലസ്റ്ററുകൾ കാണിക്കാൻ സ്കാറ്റർപ്ലോട്ടുകൾ ഉപയോഗിക്കാം, അതിനാൽ ഈ തരത്തിലുള്ള ദൃശ്യീകരണം നന്നായി പഠിക്കുക വളരെ പ്രയോജനകരമാണ്. അടുത്ത പാഠത്തിൽ, ഈ ഫിൽട്ടർ ചെയ്ത ഡാറ്റ ഉപയോഗിച്ച് k-means ക്ലസ്റ്ററിംഗ് ഉപയോഗിച്ച് ഈ ഡാറ്റയിൽ താൽപ്പര്യമുള്ള രീതിയിൽ ഒത്തുചേരുന്ന ഗ്രൂപ്പുകൾ കണ്ടെത്തും. + +--- + +## 🚀ചലഞ്ച് + +അടുത്ത പാഠത്തിനായി, നിങ്ങൾ കണ്ടെത്താനും പ്രൊഡക്ഷൻ പരിസരത്തിൽ ഉപയോഗിക്കാനും കഴിയുന്ന വിവിധ ക്ലസ്റ്ററിംഗ് ആൽഗോരിതങ്ങൾക്കുറിച്ച് ഒരു ചാർട്ട് തയ്യാറാക്കുക. ക്ലസ്റ്ററിംഗ് ഏത് തരത്തിലുള്ള പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ ശ്രമിക്കുന്നു? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ക്ലസ്റ്ററിംഗ് ആൽഗോരിതങ്ങൾ പ്രയോഗിക്കുന്നതിന് മുമ്പ്, നിങ്ങളുടെ ഡാറ്റാസെറ്റിന്റെ സ്വഭാവം മനസ്സിലാക്കുന്നത് നല്ലതാണ്. ഈ വിഷയത്തിൽ കൂടുതൽ വായിക്കുക [ഇവിടെ](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html) + +[ഈ സഹായകമായ ലേഖനം](https://www.freecodecamp.org/news/8-clustering-algorithms-in-machine-learning-that-all-data-scientists-should-know/) വിവിധ ക്ലസ്റ്ററിംഗ് ആൽഗോരിതങ്ങൾ വ്യത്യസ്ത ഡാറ്റ രൂപങ്ങളിൽ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് വിശദീകരിക്കുന്നു. + +## അസൈൻമെന്റ് + +[ക്ലസ്റ്ററിംഗിനുള്ള മറ്റ് ദൃശ്യീകരണങ്ങൾ ഗവേഷണം ചെയ്യുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/5-Clustering/1-Visualize/assignment.md b/translations/ml/5-Clustering/1-Visualize/assignment.md new file mode 100644 index 000000000..df6d86098 --- /dev/null +++ b/translations/ml/5-Clustering/1-Visualize/assignment.md @@ -0,0 +1,27 @@ + +# ക്ലസ്റ്ററിംഗിനായി മറ്റ് ദൃശ്യവത്കരണങ്ങൾ ഗവേഷണം ചെയ്യുക + +## നിർദ്ദേശങ്ങൾ + +ഈ പാഠത്തിൽ, ക്ലസ്റ്ററിംഗിന് തയ്യാറെടുക്കുന്നതിനായി നിങ്ങളുടെ ഡാറ്റ പ്ലോട്ട് ചെയ്യുന്നതിന് ചില ദൃശ്യവത്കരണ സാങ്കേതികവിദ്യകളുമായി നിങ്ങൾ പ്രവർത്തിച്ചിട്ടുണ്ട്. പ്രത്യേകിച്ച് സ്കാറ്റർപ്ലോട്ടുകൾ, വസ്തുക്കളുടെ ഗ്രൂപ്പുകൾ കണ്ടെത്താൻ ഉപകാരപ്രദമാണ്. സ്കാറ്റർപ്ലോട്ടുകൾ സൃഷ്ടിക്കാൻ വ്യത്യസ്ത മാർഗങ്ങളും വ്യത്യസ്ത ലൈബ്രറികളും ഗവേഷണം ചെയ്ത് നിങ്ങളുടെ പ്രവർത്തനം ഒരു നോട്ട്‌ബുക്കിൽ രേഖപ്പെടുത്തുക. ഈ പാഠത്തിലെ ഡാറ്റ, മറ്റ് പാഠങ്ങളിലെ ഡാറ്റ, അല്ലെങ്കിൽ നിങ്ങൾ സ്വയം കണ്ടെത്തിയ ഡാറ്റ ഉപയോഗിക്കാം (എങ്കിലും, അതിന്റെ ഉറവിടം നിങ്ങളുടെ നോട്ട്‌ബുക്കിൽ ക്രെഡിറ്റ് ചെയ്യുക). സ്കാറ്റർപ്ലോട്ടുകൾ ഉപയോഗിച്ച് ചില ഡാറ്റ പ്ലോട്ട് ചെയ്ത് നിങ്ങൾ കണ്ടെത്തിയതെന്താണെന്ന് വിശദീകരിക്കുക. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണാർത്ഥം | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | -------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ----------------------------------- | +| | അഞ്ച് നന്നായി രേഖപ്പെടുത്തിയ സ്കാറ്റർപ്ലോട്ടുകളുള്ള ഒരു നോട്ട്‌ബുക്ക് സമർപ്പിച്ചിരിക്കുന്നു | അഞ്ച് സ്കാറ്റർപ്ലോട്ടുകളിൽ കുറവുള്ള, കുറച്ച് കുറവായി രേഖപ്പെടുത്തിയ ഒരു നോട്ട്‌ബുക്ക് സമർപ്പിച്ചിരിക്കുന്നു | അപൂർണ്ണമായ ഒരു നോട്ട്‌ബുക്ക് സമർപ്പിച്ചിരിക്കുന്നു | + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ വ്യാഖ്യാനക്കേടുകൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/5-Clustering/1-Visualize/notebook.ipynb b/translations/ml/5-Clustering/1-Visualize/notebook.ipynb new file mode 100644 index 000000000..665234b8e --- /dev/null +++ b/translations/ml/5-Clustering/1-Visualize/notebook.ipynb @@ -0,0 +1,52 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python383jvsc74a57bd0e134e05457d34029b6460cd73bbf1ed73f339b5b6d98c95be70b69eba114fe95", + "display_name": "Python 3.8.3 64-bit (conda)" + }, + "coopTranslator": { + "original_hash": "40e0707e96b3e1899a912776006264f9", + "translation_date": "2025-12-19T16:50:44+00:00", + "source_file": "5-Clustering/1-Visualize/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# സ്പോട്ടിഫൈയിൽ നിന്ന് സ്ക്രാപ്പ് ചെയ്ത നൈജീരിയൻ സംഗീതം - ഒരു വിശകലനം\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/5-Clustering/1-Visualize/solution/Julia/README.md b/translations/ml/5-Clustering/1-Visualize/solution/Julia/README.md new file mode 100644 index 000000000..8817bc113 --- /dev/null +++ b/translations/ml/5-Clustering/1-Visualize/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ഇത് ഒരു താൽക്കാലിക പ്ലേസ്ഹോൾഡറാണ് + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb b/translations/ml/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb new file mode 100644 index 000000000..66d670205 --- /dev/null +++ b/translations/ml/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb @@ -0,0 +1,500 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "## **സ്പോട്ടിഫൈയിൽ നിന്നുള്ള നൈജീരിയൻ സംഗീതം - ഒരു വിശകലനം**\r\n", + "\r\n", + "ക്ലസ്റ്ററിംഗ് ഒരു തരത്തിലുള്ള [Unsupervised Learning](https://wikipedia.org/wiki/Unsupervised_learning) ആണ്, ഇത് ഒരു ഡാറ്റാസെറ്റ് ലേബൽ ചെയ്യപ്പെടാത്തതാണെന്ന് അല്ലെങ്കിൽ അതിന്റെ ഇൻപുട്ടുകൾ മുൻകൂട്ടി നിർവചിച്ച ഔട്ട്പുട്ടുകളുമായി പൊരുത്തപ്പെടാത്തതാണെന്ന് കരുതുന്നു. ഡാറ്റയിൽ കാണുന്ന പാറ്റേണുകൾ അനുസരിച്ച് ഗ്രൂപ്പുകൾ നൽകാൻ വിവിധ ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് ലേബൽ ചെയ്യാത്ത ഡാറ്റ പരിശോധിക്കുന്നു.\r\n", + "\r\n", + "[**പ്രീ-ലെക്ചർ ക്വിസ്**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/27/)\r\n", + "\r\n", + "### **പരിചയം**\r\n", + "\r\n", + "[ക്ലസ്റ്ററിംഗ്](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) ഡാറ്റാ എക്സ്പ്ലോറേഷനിൽ വളരെ ഉപകാരപ്രദമാണ്. നൈജീരിയൻ പ്രേക്ഷകർ സംഗീതം എങ്ങനെ ഉപഭോഗിക്കുന്നു എന്നതിൽ ട്രെൻഡുകളും പാറ്റേണുകളും കണ്ടെത്താൻ ഇത് സഹായിക്കുമോ എന്ന് നോക്കാം.\r\n", + "\r\n", + "> ✅ ക്ലസ്റ്ററിംഗിന്റെ ഉപയോഗങ്ങളെ കുറിച്ച് ഒരു മിനിറ്റ് ചിന്തിക്കുക. യഥാർത്ഥ ജീവിതത്തിൽ, ക്ലസ്റ്ററിംഗ് നിങ്ങളുടെ കുടുംബാംഗങ്ങളുടെ വസ്ത്രങ്ങൾ വേർതിരിക്കേണ്ടി വരുന്നപ്പോൾ ഉണ്ടാകുന്നു 🧦👕👖🩲. ഡാറ്റാ സയൻസിൽ, ഉപയോക്താവിന്റെ ഇഷ്ടങ്ങൾ വിശകലനം ചെയ്യുമ്പോഴും, ലേബൽ ചെയ്യാത്ത ഡാറ്റാസെറ്റിന്റെ സവിശേഷതകൾ നിർണയിക്കുമ്പോഴും ക്ലസ്റ്ററിംഗ് നടക്കുന്നു. ക്ലസ്റ്ററിംഗ് ഒരു വിധത്തിൽ അഴുക്കും കലക്കവും മനസ്സിലാക്കാൻ സഹായിക്കുന്നു, ഒരു സോക്ക് ഡ്രോയർ പോലെയാണ്.\r\n", + "\r\n", + "പ്രൊഫഷണൽ സാഹചര്യത്തിൽ, മാർക്കറ്റ് സെഗ്മെന്റേഷൻ, ഉദാഹരണത്തിന് ഏത് പ്രായസംഘം ഏത് വസ്തുക്കൾ വാങ്ങുന്നു എന്നത് നിർണയിക്കാൻ ക്ലസ്റ്ററിംഗ് ഉപയോഗിക്കാം. മറ്റൊരു ഉപയോഗം അനോമലി ഡിറ്റക്ഷൻ ആണ്, ഉദാഹരണത്തിന് ക്രെഡിറ്റ് കാർഡ് ഇടപാടുകളുടെ ഡാറ്റാസെറ്റിൽ നിന്ന് തട്ടിപ്പ് കണ്ടെത്താൻ. അല്ലെങ്കിൽ മെഡിക്കൽ സ്കാനുകളുടെ ബാച്ചിൽ ട്യൂമറുകൾ കണ്ടെത്താൻ ക്ലസ്റ്ററിംഗ് ഉപയോഗിക്കാം.\r\n", + "\r\n", + "✅ ബാങ്കിംഗ്, ഇ-കൊമേഴ്സ്, ബിസിനസ് തുടങ്ങിയ മേഖലകളിൽ ക്ലസ്റ്ററിംഗ് 'വൈൽഡിൽ' നിങ്ങൾ എങ്ങനെ കണ്ടിട്ടുണ്ടെന്ന് ഒരു മിനിറ്റ് ചിന്തിക്കുക.\r\n", + "\r\n", + "> 🎓 രസകരമായി, ക്ലസ്റ്റർ വിശകലനം 1930-കളിൽ ആൻത്രോപോളജി, സൈക്കോളജി മേഖലകളിൽ ആരംഭിച്ചു. അത് എങ്ങനെ ഉപയോഗിച്ചിരിക്കാമെന്ന് നിങ്ങൾക്ക് കണക്കാക്കാമോ?\r\n", + "\r\n", + "അല്ലെങ്കിൽ, ഷോപ്പിംഗ് ലിങ്കുകൾ, ചിത്രങ്ങൾ, റിവ്യൂകൾ എന്നിവയുടെ അടിസ്ഥാനത്തിൽ തിരയൽ ഫലങ്ങൾ ഗ്രൂപ്പുചെയ്യാൻ ഇത് ഉപയോഗിക്കാം. വലിയ ഡാറ്റാസെറ്റുകൾ കുറയ്ക്കാനും കൂടുതൽ സൂക്ഷ്മമായ വിശകലനം നടത്താനും ക്ലസ്റ്ററിംഗ് സഹായിക്കുന്നു, അതിനാൽ മറ്റ് മോഡലുകൾ നിർമ്മിക്കുന്നതിന് മുമ്പ് ഡാറ്റയെ കുറിച്ച് പഠിക്കാൻ ഈ സാങ്കേതിക വിദ്യ ഉപയോഗിക്കാം.\r\n", + "\r\n", + "✅ ഡാറ്റ ക്ലസ്റ്ററുകളായി ക്രമീകരിച്ച ശേഷം, അതിന് ക്ലസ്റ്റർ ഐഡി നൽകുന്നു, ഇത് ഡാറ്റാസെറ്റിന്റെ സ്വകാര്യത സംരക്ഷിക്കാൻ സഹായകമാണ്; ഒരു ഡാറ്റ പോയിന്റിനെ അതിന്റെ ക്ലസ്റ്റർ ഐഡി ഉപയോഗിച്ച് സൂചിപ്പിക്കാം, കൂടുതൽ വെളിപ്പെടുത്തുന്ന തിരിച്ചറിയാവുന്ന ഡാറ്റയിലൂടെ അല്ല. ക്ലസ്റ്റർ ഐഡി ഉപയോഗിച്ച് തിരിച്ചറിയാൻ മറ്റെന്തെങ്കിലും കാരണങ്ങൾ നിങ്ങൾക്ക് തോന്നുന്നുണ്ടോ?\r\n", + "\r\n", + "### ക്ലസ്റ്ററിംഗ് ആരംഭിക്കുന്നത്\r\n", + "\r\n", + "> 🎓 ക്ലസ്റ്ററുകൾ സൃഷ്ടിക്കുന്നത് ഡാറ്റ പോയിന്റുകൾ ഗ്രൂപ്പുകളായി എങ്ങനെ കൂട്ടിച്ചേർക്കുന്നു എന്നതിൽ ആശ്രയിച്ചിരിക്കുന്നു. ചില പദങ്ങൾ വിശദീകരിക്കാം:\r\n", + ">\r\n", + "> 🎓 ['Transductive' vs. 'inductive'](https://wikipedia.org/wiki/Transduction_(machine_learning))\r\n", + ">\r\n", + "> ട്രാൻസ്ഡക്ടീവ് ഇൻഫറൻസ് നിരീക്ഷിച്ച ട്രെയിനിംഗ് കേസുകളിൽ നിന്നാണ് ലഭിക്കുന്നത്, അവ പ്രത്യേക ടെസ്റ്റ് കേസുകളുമായി പൊരുത്തപ്പെടുന്നു. ഇൻഡക്ടീവ് ഇൻഫറൻസ് ട്രെയിനിംഗ് കേസുകളിൽ നിന്നാണ് ലഭിക്കുന്നത്, അവ പൊതുവായ നിയമങ്ങളായി മാറി പിന്നീട് ടെസ്റ്റ് കേസുകളിൽ പ്രയോഗിക്കപ്പെടുന്നു.\r\n", + ">\r\n", + "> ഉദാഹരണം: നിങ്ങൾക്ക് ഭാഗികമായി ലേബൽ ചെയ്ത ഡാറ്റാസെറ്റ് ഉണ്ടെന്ന് കരുതുക. ചിലത് 'റെക്കോർഡുകൾ', ചിലത് 'സിഡികൾ', ചിലത് ശൂന്യമാണ്. ശൂന്യമായവയ്ക്ക് ലേബലുകൾ നൽകുക എന്നതാണ് നിങ്ങളുടെ ജോലി. ഇൻഡക്ടീവ് സമീപനം തിരഞ്ഞെടുക്കുകയാണെങ്കിൽ, 'റെക്കോർഡുകൾ'യും 'സിഡികളും' കണ്ടെത്താൻ മോഡൽ പരിശീലിപ്പിച്ച് ആ ലേബലുകൾ ലേബൽ ചെയ്യാത്ത ഡാറ്റയിൽ പ്രയോഗിക്കും. ഈ സമീപനം 'കാസറ്റുകൾ' എന്ന വസ്തുക്കൾ ശരിയായി തിരിച്ചറിയാൻ ബുദ്ധിമുട്ടും. മറുവശത്ത്, ട്രാൻസ്ഡക്ടീവ് സമീപനം ഈ അജ്ഞാത ഡാറ്റയെ കൂടുതൽ ഫലപ്രദമായി കൈകാര്യം ചെയ്യുന്നു, സമാന വസ്തുക്കളെ ഗ്രൂപ്പാക്കി അവയ്ക്ക് ലേബൽ നൽകുന്നു. ഈ സാഹചര്യത്തിൽ, ക്ലസ്റ്ററുകൾ 'വൃത്താകൃതിയിലുള്ള സംഗീത വസ്തുക്കൾ'യും 'ചതുരാകൃതിയിലുള്ള സംഗീത വസ്തുക്കൾ'യും പ്രതിഫലിപ്പിക്കാം.\r\n", + ">\r\n", + "> 🎓 ['Non-flat' vs. 'flat' geometry](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering)\r\n", + ">\r\n", + "> ഗണിതശാസ്ത്ര പദങ്ങൾ അടിസ്ഥാനമാക്കി, non-flat vs. flat ജ്യാമിതീയത പോയിന്റുകൾ തമ്മിലുള്ള ദൂരം 'ഫ്ലാറ്റ്' ([Euclidean](https://wikipedia.org/wiki/Euclidean_geometry)) അല്ലെങ്കിൽ 'non-flat' (non-Euclidean) ജ്യാമിതീയ രീതികളിലൂടെ അളക്കുന്നതാണ്.\r\n", + ">\r\n", + "> ഈ സന്ദർഭത്തിൽ 'ഫ്ലാറ്റ്' Euclidean ജ്യാമിതീയതയെ സൂചിപ്പിക്കുന്നു (ഇതിന്റെ ഭാഗങ്ങൾ 'പ്ലെയിൻ' ജ്യാമിതീയതയായി പഠിപ്പിക്കുന്നു), non-flat non-Euclidean ജ്യാമിതീയതയാണ്. ജ്യാമിതീയതയ്ക്ക് മെഷീൻ ലേണിങ്ങുമായി എന്ത് ബന്ധമുണ്ട്? ഗണിതശാസ്ത്രത്തിൽ ആധാരമാക്കിയ രണ്ട് മേഖലകളായതിനാൽ, ക്ലസ്റ്ററുകളിലെ പോയിന്റുകൾ തമ്മിലുള്ള ദൂരം അളക്കാനുള്ള പൊതുവായ മാർഗ്ഗം വേണം, അത് 'ഫ്ലാറ്റ്' അല്ലെങ്കിൽ 'non-flat' രീതിയിലായിരിക്കും, ഡാറ്റയുടെ സ്വഭാവം അനുസരിച്ച്. [Euclidean ദൂരം](https://wikipedia.org/wiki/Euclidean_distance) രണ്ട് പോയിന്റുകൾ തമ്മിലുള്ള രേഖാഖണ്ഡത്തിന്റെ നീളമായി അളക്കുന്നു. [Non-Euclidean ദൂരം](https://wikipedia.org/wiki/Non-Euclidean_geometry) വളവിലൂടെയാണ് അളക്കുന്നത്. നിങ്ങളുടെ ഡാറ്റ ദൃശ്യമായി ഒരു സമതലത്തിൽ ഇല്ലാത്തതുപോലെയാണ് തോന്നുന്നത് എങ്കിൽ, അതിനെ കൈകാര്യം ചെയ്യാൻ പ്രത്യേക ആൽഗോരിതം ഉപയോഗിക്കേണ്ടി വരും.\r\n", + "\r\n", + "

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

ഇൻഫോഗ്രാഫിക്: ദാസാനി മടിപള്ളി
\r\n", + "\r\n", + "\r\n", + "\r\n", + "> 🎓 ['Distances'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf)\r\n", + ">\r\n", + "> ക്ലസ്റ്ററുകൾ അവരുടെ ദൂരം മാട്രിക്സ് (distance matrix) പ്രകാരം നിർവചിക്കപ്പെടുന്നു, ഉദാ: പോയിന്റുകൾ തമ്മിലുള്ള ദൂരം. ഈ ദൂരം ചില മാർഗ്ഗങ്ങളിൽ അളക്കാം. Euclidean ക്ലസ്റ്ററുകൾ പോയിന്റ് മൂല്യങ്ങളുടെ ശരാശരിയാൽ നിർവചിക്കപ്പെടുന്നു, അവയ്ക്ക് 'സെൻട്രോയിഡ്' അല്ലെങ്കിൽ കേന്ദ്ര പോയിന്റ് ഉണ്ട്. അതിനാൽ ദൂരം ആ സെൻട്രോയിഡിലേക്കുള്ള ദൂരം അളക്കിയാണ്. Non-Euclidean ദൂരം 'ക്ലസ്റ്റ്രോയിഡുകൾ' (clustroids) എന്നതിന് സൂചിപ്പിക്കുന്നു, അത് മറ്റുള്ള പോയിന്റുകൾക്ക് ഏറ്റവും അടുത്ത പോയിന്റാണ്. ക്ലസ്റ്റ്രോയിഡുകൾ വിവിധ രീതികളിൽ നിർവചിക്കാം.\r\n", + ">\r\n", + "> 🎓 ['Constrained'](https://wikipedia.org/wiki/Constrained_clustering)\r\n", + ">\r\n", + "> [Constrained Clustering](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) ഈ Unsupervised രീതിയിൽ 'semi-supervised' ലേണിംഗ് പരിചയപ്പെടുത്തുന്നു. പോയിന്റുകൾ തമ്മിലുള്ള ബന്ധങ്ങൾ 'cannot link' അല്ലെങ്കിൽ 'must-link' ആയി അടയാളപ്പെടുത്തുന്നു, അതിനാൽ ഡാറ്റാസെറ്റിൽ ചില നിയമങ്ങൾ ബാധകമാക്കുന്നു.\r\n", + ">\r\n", + "> ഉദാഹരണം: ഒരു ആൽഗോരിതം ലേബൽ ചെയ്യാത്ത അല്ലെങ്കിൽ ഭാഗികമായി ലേബൽ ചെയ്ത ഡാറ്റാസെറ്റിൽ സ്വതന്ത്രമായി പ്രവർത്തിക്കുമ്പോൾ, അത് ഉൽപ്പാദിപ്പിക്കുന്ന ക്ലസ്റ്ററുകൾ ഗുണമേന്മയില്ലാത്തതായിരിക്കാം. മുകളിൽ പറഞ്ഞ ഉദാഹരണത്തിൽ, ക്ലസ്റ്ററുകൾ 'വൃത്താകൃതിയിലുള്ള സംഗീത വസ്തുക്കൾ', 'ചതുരാകൃതിയിലുള്ള സംഗീത വസ്തുക്കൾ', 'ത്രികോണാകൃതിയിലുള്ള വസ്തുക്കൾ', 'കുക്കീസ്' എന്നിവയായി ഗ്രൂപ്പാക്കാം. ചില നിയന്ത്രണങ്ങൾ (\"വസ്തു പ്ലാസ്റ്റിക്കിൽ നിന്നായിരിക്കണം\", \"വസ്തു സംഗീതം ഉത്പാദിപ്പിക്കാൻ കഴിയണം\") നൽകിയാൽ ആൽഗോരിതം മികച്ച തിരഞ്ഞെടുപ്പുകൾ നടത്താൻ സഹായിക്കും.\r\n", + ">\r\n", + "> 🎓 'Density'\r\n", + ">\r\n", + "> 'നോയിസി' ആയ ഡാറ്റ 'ഡെൻസായി' (dense) കണക്കാക്കപ്പെടുന്നു. ഓരോ ക്ലസ്റ്ററിലെയും പോയിന്റുകൾ തമ്മിലുള്ള ദൂരം പരിശോധിച്ചാൽ അത് കൂടുതൽ അല്ലെങ്കിൽ കുറവായി ഡെൻസായിരിക്കാം, അതായത് 'കൂട്ടം' ആയിരിക്കാം, അതിനാൽ ഈ ഡാറ്റ അനുയോജ്യമായ ക്ലസ്റ്ററിംഗ് രീതിയോടെ വിശകലനം ചെയ്യേണ്ടതാണ്. [ഈ ലേഖനം](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) K-Means ക്ലസ്റ്ററിംഗ് എതിരായി HDBSCAN ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് നോയിസി ഡാറ്റാസെറ്റിന്റെ വ്യത്യാസം വിശദീകരിക്കുന്നു.\r\n", + "\r\n", + "ഈ [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott) വഴി ക്ലസ്റ്ററിംഗ് സാങ്കേതിക വിദ്യകളെ കുറിച്ച് കൂടുതൽ പഠിക്കാം\r\n", + "\r\n", + "### **ക്ലസ്റ്ററിംഗ് ആൽഗോരിതങ്ങൾ**\r\n", + "\r\n", + "100-ലധികം ക്ലസ്റ്ററിംഗ് ആൽഗോരിതങ്ങൾ ഉണ്ട്, അവയുടെ ഉപയോഗം ഡാറ്റയുടെ സ്വഭാവം അനുസരിച്ചാണ്. പ്രധാന ചിലത് ചർച്ച ചെയ്യാം:\r\n", + "\r\n", + "- **ഹയർആർക്കിക്കൽ ക്ലസ്റ്ററിംഗ്**. ഒരു വസ്തു അടുത്തുള്ള മറ്റൊരു വസ്തുവിന്റെ സമീപത പ്രകാരം വർഗ്ഗീകരിക്കപ്പെടുമ്പോൾ, ക്ലസ്റ്ററുകൾ അവയുടെ അംഗങ്ങളുടെ മറ്റുള്ള വസ്തുക്കളോടുള്ള ദൂരത്തിന്റെ അടിസ്ഥാനത്തിൽ രൂപപ്പെടുന്നു. ഹയർആർക്കിക്കൽ ക്ലസ്റ്ററിംഗ് രണ്ട് ക്ലസ്റ്ററുകൾ ആവർത്തിച്ച് സംയോജിപ്പിക്കുന്നതിലൂടെ സവിശേഷതയുള്ളതാണ്.\r\n", + "\r\n", + "\r\n", + "

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

ഇൻഫോഗ്രാഫിക്: ദാസാനി മടിപള്ളി
\r\n", + "\r\n", + "\r\n", + "\r\n", + "- **സെൻട്രോയിഡ് ക്ലസ്റ്ററിംഗ്**. ഈ ജനപ്രിയ ആൽഗോരിതം 'k' എന്ന ക്ലസ്റ്ററുകളുടെ എണ്ണം തിരഞ്ഞെടുക്കേണ്ടതുണ്ട്, തുടർന്ന് ആൽഗോരിതം ഒരു ക്ലസ്റ്ററിന്റെ കേന്ദ്ര പോയിന്റ് നിർണയിച്ച് ആ പോയിന്റിന്റെ ചുറ്റും ഡാറ്റ ശേഖരിക്കുന്നു. [K-means clustering](https://wikipedia.org/wiki/K-means_clustering) സെൻട്രോയിഡ് ക്ലസ്റ്ററിംഗിന്റെ ഒരു ജനപ്രിയ രൂപമാണ്, ഇത് ഡാറ്റാസെറ്റ് മുൻകൂട്ടി നിർവചിച്ച K ഗ്രൂപ്പുകളായി വിഭജിക്കുന്നു. കേന്ദ്രം അടുത്ത ശരാശരിയാൽ നിർണയിക്കുന്നു, അതിനാൽ പേര്. ക്ലസ്റ്ററിൽ നിന്നുള്ള ചതുരശ്ര ദൂരം കുറഞ്ഞിരിക്കുന്നു.\r\n", + "\r\n", + "

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

ഇൻഫോഗ്രാഫിക്: ദാസാനി മടിപള്ളി
\r\n", + "\r\n", + "\r\n", + "\r\n", + "- **ഡിസ്ട്രിബ്യൂഷൻ അടിസ്ഥാനമാക്കിയുള്ള ക്ലസ്റ്ററിംഗ്**. സാങ്കേതിക മോഡലിംഗിൽ ആധാരമാക്കിയ, ഒരു ഡാറ്റ പോയിന്റ് ഒരു ക്ലസ്റ്ററിന് പറ്റിയതാണെന്ന് സാധ്യത നിർണയിച്ച് അതനുസരിച്ച് നിയോഗിക്കുന്നു. Gaussian മിശ്രിത രീതികൾ ഇതിൽപ്പെടുന്നു.\r\n", + "\r\n", + "- **ഡെൻസിറ്റി അടിസ്ഥാനമാക്കിയുള്ള ക്ലസ്റ്ററിംഗ്**. ഡാറ്റ പോയിന്റുകൾ അവരുടെ സാന്ദ്രതയുടെ അടിസ്ഥാനത്തിൽ ക്ലസ്റ്ററുകളിലേക്ക് നിയോഗിക്കപ്പെടുന്നു, അഥവാ പരസ്പരം ചുറ്റിപ്പറ്റിയ ഗ്രൂപ്പുകൾ. ഗ്രൂപ്പിൽ നിന്ന് ദൂരെയുള്ള പോയിന്റുകൾ ഔട്ട്‌ലയർസ് അല്ലെങ്കിൽ നോയിസായി കണക്കാക്കപ്പെടുന്നു. DBSCAN, Mean-shift, OPTICS ഇതിൽപ്പെടുന്നു.\r\n", + "\r\n", + "- **ഗ്രിഡ് അടിസ്ഥാനമാക്കിയുള്ള ക്ലസ്റ്ററിംഗ്**. ബഹുമാനദണ്ഡ ഡാറ്റാസെറ്റുകൾക്കായി ഒരു ഗ്രിഡ് സൃഷ്ടിച്ച് ഡാറ്റ ഗ്രിഡിന്റെ സെല്ലുകളിൽ വിഭജിച്ച് ക്ലസ്റ്ററുകൾ സൃഷ്ടിക്കുന്നു.\r\n", + "\r\n", + "ക്ലസ്റ്ററിംഗ് പഠിക്കാൻ ഏറ്റവും നല്ല മാർഗ്ഗം അത് സ്വയം പരീക്ഷിക്കുകയാണ്, അതിനാൽ ഈ അഭ്യാസത്തിൽ നിങ്ങൾ അത് ചെയ്യും.\r\n", + "\r\n", + "ഈ മോഡ്യൂൾ പൂർത്തിയാക്കാൻ ചില പാക്കേജുകൾ ആവശ്യമാണ്. നിങ്ങൾക്ക് അവ ഇൻസ്റ്റാൾ ചെയ്യാം: `install.packages(c('tidyverse', 'tidymodels', 'DataExplorer', 'summarytools', 'plotly', 'paletteer', 'corrplot', 'patchwork'))`\r\n", + "\r\n", + "മറ്റൊരു മാർഗ്ഗം, താഴെ കൊടുത്തിരിക്കുന്ന സ്ക്രിപ്റ്റ് ഈ മോഡ്യൂൾ പൂർത്തിയാക്കാൻ ആവശ്യമായ പാക്കേജുകൾ നിങ്ങൾക്കുണ്ടോ എന്ന് പരിശോധിച്ച് കുറവുണ്ടെങ്കിൽ ഇൻസ്റ്റാൾ ചെയ്യും.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\r\n", + "\r\n", + "pacman::p_load('tidyverse', 'tidymodels', 'DataExplorer', 'summarytools', 'plotly', 'paletteer', 'corrplot', 'patchwork')\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## Exercise - cluster your data\n", + "\n", + "ക്ലസ്റ്ററിംഗ് എന്ന സാങ്കേതിക വിദ്യ ശരിയായ ദൃശ്യവത്കരണത്തിലൂടെ വളരെ സഹായകരമാണ്, അതിനാൽ നമുക്ക് നമ്മുടെ സംഗീത ഡാറ്റ ദൃശ്യവത്കരിച്ച് തുടങ്ങാം. ഈ അഭ്യാസം ഈ ഡാറ്റയുടെ സ്വഭാവത്തിന് ഏറ്റവും ഫലപ്രദമായി ഉപയോഗിക്കേണ്ട ക്ലസ്റ്ററിംഗ് രീതികൾ നമുക്ക് തീരുമാനിക്കാൻ സഹായിക്കും.\n", + "\n", + "ഡാറ്റ ഇറക്കുമതി ചെയ്ത് നമുക്ക് തുടക്കം കുറിക്കാം.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load the core tidyverse and make it available in your current R session\r\n", + "library(tidyverse)\r\n", + "\r\n", + "# Import the data into a tibble\r\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/5-Clustering/data/nigerian-songs.csv\")\r\n", + "\r\n", + "# View the first 5 rows of the data set\r\n", + "df %>% \r\n", + " slice_head(n = 5)\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "കഴിഞ്ഞപ്പോൾ, നമ്മുടെ ഡാറ്റയിൽ കുറച്ച് കൂടുതൽ വിവരങ്ങൾ അറിയാൻ ആഗ്രഹിക്കാം. [*glimpse()*](https://pillar.r-lib.org/reference/glimpse.html) ഫംഗ്ഷൻ ഉപയോഗിച്ച് `data`യും `അതിന്റേതായ ഘടന`യും നോക്കാം:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Glimpse into the data set\r\n", + "df %>% \r\n", + " glimpse()\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "നല്ല ജോലി!💪\n", + "\n", + "`glimpse()` നിങ്ങൾക്ക് മൊത്തം വരികളുടെ എണ്ണം (പരീക്ഷണങ്ങൾ)യും കോളങ്ങളുടെയും (ചരങ്ങൾ) എണ്ണം നൽകും, തുടർന്ന് ഓരോ ചരത്തിന്റെ പേരിന് ശേഷം ഒരു വരിയിൽ ഓരോ ചരത്തിന്റെ ആദ്യ കുറച്ച് എൻട്രികളും കാണിക്കും. കൂടാതെ, ഓരോ ചരത്തിന്റെ പേരിന് ഉടനെ `< >` ഉള്ളിൽ *ഡാറ്റാ തരം* നൽകും.\n", + "\n", + "`DataExplorer::introduce()` ഈ വിവരങ്ങൾ സുതാര്യമായി സംഗ്രഹിക്കാം:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Describe basic information for our data\r\n", + "df %>% \r\n", + " introduce()\r\n", + "\r\n", + "# A visual display of the same\r\n", + "df %>% \r\n", + " plot_intro()\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "അദ്ഭുതം! നമ്മുടെ ഡാറ്റയിൽ മിസ്സിംഗ് മൂല്യങ്ങൾ ഒന്നും ഇല്ലെന്ന് നാം ഇപ്പോൾ പഠിച്ചു.\n", + "\n", + "നാം ഇതിൽ തുടരുമ്പോൾ, സാധാരണ കേന്ദ്ര പ്രവണതാ സ്ഥിതിവിവരക്കണക്കുകൾ (ഉദാ: [mean](https://en.wikipedia.org/wiki/Arithmetic_mean) and [median](https://en.wikipedia.org/wiki/Median)) കൂടാതെ വ്യതിയാനത്തിന്റെ അളവുകൾ (ഉദാ: [standard deviation](https://en.wikipedia.org/wiki/Standard_deviation)) `summarytools::descr()` ഉപയോഗിച്ച് പരിശോധിക്കാം.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Describe common statistics\r\n", + "df %>% \r\n", + " descr(stats = \"common\")\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ഡാറ്റയുടെ പൊതുവായ മൂല്യങ്ങൾ നോക്കാം. പ്രശസ്തി `0` ആകാമെന്ന് ശ്രദ്ധിക്കുക, ഇത് റാങ്കിംഗ് ഇല്ലാത്ത പാട്ടുകൾ കാണിക്കുന്നു. അവ നമുക്ക് ഉടൻ നീക്കം ചെയ്യും.\n", + "\n", + "> 🤔 നാം ലേബൽ ചെയ്ത ഡാറ്റ ആവശ്യമില്ലാത്ത ഒരു അൺസൂപ്പർവൈസ്ഡ് ക്ലസ്റ്ററിംഗ് രീതിയുമായി ജോലി ചെയ്യുകയാണെങ്കിൽ, ഈ ഡാറ്റ ലേബലുകളോടുകൂടി കാണിക്കുന്നത് എന്തിന്? ഡാറ്റ എക്സ്പ്ലോറേഷൻ ഘട്ടത്തിൽ അവ സഹായകരമാണ്, പക്ഷേ ക്ലസ്റ്ററിംഗ് ആൽഗോരിതങ്ങൾ പ്രവർത്തിക്കാൻ അവ ആവശ്യമായില്ല.\n", + "\n", + "### 1. പ്രശസ്തമായ ജാനറുകൾ അന്വേഷിക്കുക\n", + "\n", + "അവ അത് പ്രത്യക്ഷപ്പെടുന്ന സംഭവങ്ങളുടെ എണ്ണം എണ്ണിക്കൊണ്ട് ഏറ്റവും പ്രശസ്തമായ ജാനറുകൾ 🎶 കണ്ടെത്താം.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Popular genres\r\n", + "top_genres <- df %>% \r\n", + " count(artist_top_genre, sort = TRUE) %>% \r\n", + "# Encode to categorical and reorder the according to count\r\n", + " mutate(artist_top_genre = factor(artist_top_genre) %>% fct_inorder())\r\n", + "\r\n", + "# Print the top genres\r\n", + "top_genres\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "അത് നന്നായി പോയി! ഒരു ചിത്രം ഒരു ഡാറ്റാ ഫ്രെയിമിലെ ആയിരം വരികളേക്കാൾ വിലമതിക്കപ്പെടുമെന്ന് അവർ പറയുന്നു (വാസ്തവത്തിൽ ആരും അങ്ങനെ പറയാറില്ല 😅). പക്ഷേ നിങ്ങൾക്ക് അതിന്റെ ആശയം മനസിലായിട്ടുണ്ട്, അല്ലേ?\n", + "\n", + "വർഗ്ഗീയ ഡാറ്റ (ക്യാരക്ടർ അല്ലെങ്കിൽ ഫാക്ടർ വേരിയബിളുകൾ) ദൃശ്യവൽക്കരിക്കുന്ന ഒരു മാർഗം ബാർപ്ലോട്ടുകൾ ഉപയോഗിക്കുകയാണ്. മുകളിൽ 10 ജാനറുകളുടെ ബാർപ്ലോട്ട് ഉണ്ടാക്കാം:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Change the default gray theme\r\n", + "theme_set(theme_light())\r\n", + "\r\n", + "# Visualize popular genres\r\n", + "top_genres %>%\r\n", + " slice(1:10) %>% \r\n", + " ggplot(mapping = aes(x = artist_top_genre, y = n,\r\n", + " fill = artist_top_genre)) +\r\n", + " geom_col(alpha = 0.8) +\r\n", + " paletteer::scale_fill_paletteer_d(\"rcartocolor::Vivid\") +\r\n", + " ggtitle(\"Top genres\") +\r\n", + " theme(plot.title = element_text(hjust = 0.5),\r\n", + " # Rotates the X markers (so we can read them)\r\n", + " axis.text.x = element_text(angle = 90))\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ഇപ്പോൾ ഞങ്ങൾക്ക് `missing` ജാനറുകൾ ഉണ്ടെന്ന് തിരിച്ചറിയുന്നത് വളരെ എളുപ്പമാണ് 🧐!\n", + "\n", + "> ഒരു നല്ല ദൃശ്യവത്കരണം നിങ്ങൾ പ്രതീക്ഷിക്കാത്ത കാര്യങ്ങൾ കാണിക്കും, അല്ലെങ്കിൽ ഡാറ്റയെക്കുറിച്ച് പുതിയ ചോദ്യങ്ങൾ ഉയർത്തും - ഹാഡ്ലി വിക്ഹാം, ഗാരറ്റ് ഗ്രോളെമണ്ട്, [R For Data Science](https://r4ds.had.co.nz/introduction.html)\n", + "\n", + "ശ്രദ്ധിക്കുക, മുകളിൽ കാണുന്ന ജാനർ `Missing` എന്ന് വിവരണം നൽകിയാൽ, അതായത് Spotify അത് വർഗ്ഗീകരിച്ചിട്ടില്ല, അതിനാൽ അത് ഒഴിവാക്കാം.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Visualize popular genres\r\n", + "top_genres %>%\r\n", + " filter(artist_top_genre != \"Missing\") %>% \r\n", + " slice(1:10) %>% \r\n", + " ggplot(mapping = aes(x = artist_top_genre, y = n,\r\n", + " fill = artist_top_genre)) +\r\n", + " geom_col(alpha = 0.8) +\r\n", + " paletteer::scale_fill_paletteer_d(\"rcartocolor::Vivid\") +\r\n", + " ggtitle(\"Top genres\") +\r\n", + " theme(plot.title = element_text(hjust = 0.5),\r\n", + " # Rotates the X markers (so we can read them)\r\n", + " axis.text.x = element_text(angle = 90))\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ചെറിയ ഡാറ്റാ എക്സ്പ്ലോറേഷനിൽ നിന്ന്, ഈ ഡാറ്റാസെറ്റിൽ മുകളിൽ മൂന്ന് ജാനറുകൾ പ്രധാനം ആണെന്ന് നമുക്ക് മനസിലാകുന്നു. `afro dancehall`, `afropop`, `nigerian pop` എന്നിവയിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കാം, കൂടാതെ 0 പ്രചാരണം മൂല്യമുള്ള ഏതെങ്കിലും ഡാറ്റാ നീക്കം ചെയ്യാൻ ഫിൽട്ടർ ചെയ്യുക (അർത്ഥം, ഡാറ്റാസെറ്റിൽ പ്രചാരണം ആയി വർഗ്ഗീകരിക്കപ്പെട്ടിട്ടില്ലാത്തതും നമ്മുടെ ആവശ്യങ്ങൾക്ക് ശബ്ദമെന്നായി പരിഗണിക്കാവുന്നതും):\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "nigerian_songs <- df %>% \r\n", + " # Concentrate on top 3 genres\r\n", + " filter(artist_top_genre %in% c(\"afro dancehall\", \"afropop\",\"nigerian pop\")) %>% \r\n", + " # Remove unclassified observations\r\n", + " filter(popularity != 0)\r\n", + "\r\n", + "\r\n", + "\r\n", + "# Visualize popular genres\r\n", + "nigerian_songs %>%\r\n", + " count(artist_top_genre) %>%\r\n", + " ggplot(mapping = aes(x = artist_top_genre, y = n,\r\n", + " fill = artist_top_genre)) +\r\n", + " geom_col(alpha = 0.8) +\r\n", + " paletteer::scale_fill_paletteer_d(\"ggsci::category10_d3\") +\r\n", + " ggtitle(\"Top genres\") +\r\n", + " theme(plot.title = element_text(hjust = 0.5))\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "നമ്മുടെ ഡാറ്റാ സെറ്റിലുള്ള സംഖ്യാത്മക ചാരങ്ങളിലൊന്നിനും വ്യക്തമായ ഒരു രേഖീയ ബന്ധമുണ്ടോ എന്ന് നോക്കാം. ഈ ബന്ധം ഗണിതപരമായി [correlation statistic](https://en.wikipedia.org/wiki/Correlation) എന്നതിലൂടെ അളക്കപ്പെടുന്നു.\n", + "\n", + "correlation statistic -1നും 1നും ഇടയിലുള്ള ഒരു മൂല്യമാണ്, ഇത് ഒരു ബന്ധത്തിന്റെ ശക്തി സൂചിപ്പിക്കുന്നു. 0-ന് മുകളിൽ ഉള്ള മൂല്യങ്ങൾ *സാന്ദ്ര* ബന്ധം സൂചിപ്പിക്കുന്നു (ഒരു ചാരത്തിന്റെ ഉയർന്ന മൂല്യങ്ങൾ മറ്റൊന്നിന്റെ ഉയർന്ന മൂല്യങ്ങളുമായി പൊരുത്തപ്പെടാൻ സാധ്യതയുണ്ട്), 0-ന് താഴെയുള്ള മൂല്യങ്ങൾ *പ്രതികൂല* ബന്ധം സൂചിപ്പിക്കുന്നു (ഒരു ചാരത്തിന്റെ ഉയർന്ന മൂല്യങ്ങൾ മറ്റൊന്നിന്റെ താഴ്ന്ന മൂല്യങ്ങളുമായി പൊരുത്തപ്പെടാൻ സാധ്യതയുണ്ട്).\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Narrow down to numeric variables and fid correlation\r\n", + "corr_mat <- nigerian_songs %>% \r\n", + " select(where(is.numeric)) %>% \r\n", + " cor()\r\n", + "\r\n", + "# Visualize correlation matrix\r\n", + "corrplot(corr_mat, order = 'AOE', col = c('white', 'black'), bg = 'gold2') \r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ഡാറ്റ ശക്തമായി ബന്ധിപ്പിച്ചിട്ടില്ല, energy ഉം loudness ഉം തമ്മിൽ മാത്രമാണ് ശക്തമായ ബന്ധം കാണപ്പെടുന്നത്, കാരണം ശബ്ദം ഉയർന്ന സംഗീതം സാധാരണയായി വളരെ ഊർജസ്വലമാണ്. Popularity ന് release date നോടുള്ള ബന്ധം ഉണ്ട്, ഇത് കൂടി യുക്തിയുള്ളതാണ്, കാരണം പുതിയ ഗാനങ്ങൾ സാധാരണയായി കൂടുതൽ ജനപ്രിയമാണ്. Length ഉം energy ഉം തമ്മിലും ഒരു ബന്ധം കാണപ്പെടുന്നു.\n", + "\n", + "ഈ ഡാറ്റയിൽ ക്ലസ്റ്ററിംഗ് ആൽഗോരിതം എന്ത് കണ്ടെത്തും എന്ന് കാണുന്നത് രസകരമായിരിക്കും!\n", + "\n", + "> 🎓 correlation causation ന്റെ സൂചനയല്ലെന്ന് ശ്രദ്ധിക്കുക! correlation ന്റെ തെളിവ് ഉണ്ട്, causation ന്റെ തെളിവ് ഇല്ല. [amusing web site](https://tylervigen.com/spurious-correlations) ഈ കാര്യത്തെ ഊന്നിപ്പറയുന്ന ചില ദൃശ്യങ്ങൾ ഉണ്ട്.\n", + "\n", + "### 2. ഡാറ്റ വിതരണത്തെ അന്വേഷിക്കുക\n", + "\n", + "കുറച്ച് കൂടുതൽ സൂക്ഷ്മമായ ചോദ്യങ്ങൾ ചോദിക്കാം. ജനപ്രിയതയുടെ അടിസ്ഥാനത്തിൽ അവരുടെ danceability യിൽ ജാനറുകൾ ഗണ്യമായ വ്യത്യാസമുണ്ടോ? നമുക്ക് മുൻനിര മൂന്ന് ജാനറുകളുടെ ജനപ്രിയതയും danceability യും ഒരു നിശ്ചിത x, y അക്ഷങ്ങളിൽ [density plots](https://www.khanacademy.org/math/ap-statistics/density-curves-normal-distribution-ap/density-curves/v/density-curves) ഉപയോഗിച്ച് പരിശോധിക്കാം.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Perform 2D kernel density estimation\r\n", + "density_estimate_2d <- nigerian_songs %>% \r\n", + " ggplot(mapping = aes(x = popularity, y = danceability, color = artist_top_genre)) +\r\n", + " geom_density_2d(bins = 5, size = 1) +\r\n", + " paletteer::scale_color_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n", + " xlim(-20, 80) +\r\n", + " ylim(0, 1.2)\r\n", + "\r\n", + "# Density plot based on the popularity\r\n", + "density_estimate_pop <- nigerian_songs %>% \r\n", + " ggplot(mapping = aes(x = popularity, fill = artist_top_genre, color = artist_top_genre)) +\r\n", + " geom_density(size = 1, alpha = 0.5) +\r\n", + " paletteer::scale_fill_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n", + " paletteer::scale_color_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n", + " theme(legend.position = \"none\")\r\n", + "\r\n", + "# Density plot based on the danceability\r\n", + "density_estimate_dance <- nigerian_songs %>% \r\n", + " ggplot(mapping = aes(x = danceability, fill = artist_top_genre, color = artist_top_genre)) +\r\n", + " geom_density(size = 1, alpha = 0.5) +\r\n", + " paletteer::scale_fill_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n", + " paletteer::scale_color_paletteer_d(\"RSkittleBrewer::wildberry\")\r\n", + "\r\n", + "\r\n", + "# Patch everything together\r\n", + "library(patchwork)\r\n", + "density_estimate_2d / (density_estimate_pop + density_estimate_dance)\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "നാം കാണുന്നത് ജാനറിനെ ആശ്രയിക്കാതെ നിരത്തിയിരിക്കുന്ന ഏകകേന്ദ്ര വൃത്തങ്ങളാണ്. ഈ ജാനറിനായി നൈജീരിയൻ രുചികൾ നൃത്തയോഗ്യതയുടെ ഒരു നിശ്ചിത നിലയിൽ ഏകീകൃതമാകുമോ?\n", + "\n", + "സാധാരണയായി, ഈ മൂന്ന് ജാനറുകൾ അവരുടെ ജനപ്രിയതയും നൃത്തയോഗ്യതയും സംബന്ധിച്ച് ഏകീകരിച്ചിരിക്കുന്നു. ഈ അല്പം ഏകീകരിച്ച ഡാറ്റയിൽ ക്ലസ്റ്ററുകൾ കണ്ടെത്തുന്നത് ഒരു വെല്ലുവിളിയാകും. ഒരു സ്കാറ്റർ പ്ലോട്ട് ഇതിനെ പിന്തുണയ്ക്കുമോ എന്ന് നോക്കാം.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# A scatter plot of popularity and danceability\r\n", + "scatter_plot <- nigerian_songs %>% \r\n", + " ggplot(mapping = aes(x = popularity, y = danceability, color = artist_top_genre, shape = artist_top_genre)) +\r\n", + " geom_point(size = 2, alpha = 0.8) +\r\n", + " paletteer::scale_color_paletteer_d(\"futurevisions::mars\")\r\n", + "\r\n", + "# Add a touch of interactivity\r\n", + "ggplotly(scatter_plot)\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "അടിസ്ഥാന അക്ഷങ്ങളിലുള്ള ഒരു സ്കാറ്റർപ്ലോട്ട് സമാനമായ ഏകീകരണ മാതൃക കാണിക്കുന്നു.\n", + "\n", + "സാധാരണയായി, ക്ലസ്റ്ററിംഗിനായി, ഡാറ്റയുടെ ക്ലസ്റ്ററുകൾ കാണിക്കാൻ സ്കാറ്റർപ്ലോട്ടുകൾ ഉപയോഗിക്കാം, അതിനാൽ ഈ തരത്തിലുള്ള ദൃശ്യീകരണം നന്നായി പഠിക്കുന്നത് വളരെ പ്രയോജനകരമാണ്. അടുത്ത പാഠത്തിൽ, ഈ ഫിൽട്ടർ ചെയ്ത ഡാറ്റ ഉപയോഗിച്ച് k-മീൻസ് ക്ലസ്റ്ററിംഗ് ഉപയോഗിച്ച് ഈ ഡാറ്റയിൽ രസകരമായ രീതിയിൽ ഒതുക്കപ്പെടുന്ന ഗ്രൂപ്പുകൾ കണ്ടെത്തും.\n", + "\n", + "## **🚀 ചലഞ്ച്**\n", + "\n", + "അടുത്ത പാഠത്തിനായി തയ്യാറെടുക്കുന്നതിന്, പ്രൊഡക്ഷൻ പരിസ്ഥിതിയിൽ നിങ്ങൾ കണ്ടെത്തുകയും ഉപയോഗിക്കുകയും ചെയ്യാവുന്ന വിവിധ ക്ലസ്റ്ററിംഗ് ആൽഗോരിതങ്ങൾക്കുറിച്ച് ഒരു ചാർട്ട് തയ്യാറാക്കുക. ക്ലസ്റ്ററിംഗ് പരിഹരിക്കാൻ ശ്രമിക്കുന്ന പ്രശ്നങ്ങൾ എന്തെല്ലാം ആണ്?\n", + "\n", + "## [**പാഠാനന്തര ക്വിസ്**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/28/)\n", + "\n", + "## **പരിശോധന & സ്വയം പഠനം**\n", + "\n", + "ക്ലസ്റ്ററിംഗ് ആൽഗോരിതങ്ങൾ പ്രയോഗിക്കുന്നതിന് മുമ്പ്, നാം പഠിച്ചതുപോലെ, നിങ്ങളുടെ ഡാറ്റാസെറ്റിന്റെ സ്വഭാവം മനസ്സിലാക്കുന്നത് നല്ല ആശയമാണ്. ഈ വിഷയത്തിൽ കൂടുതൽ വായിക്കുക [ഇവിടെ](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html)\n", + "\n", + "ക്ലസ്റ്ററിംഗ് സാങ്കേതികവിദ്യകളുടെ അറിവ് കൂടുതൽ ആഴത്തിൽ നേടുക:\n", + "\n", + "- [Tidymodels and friends ഉപയോഗിച്ച് ക്ലസ്റ്ററിംഗ് മോഡലുകൾ പരിശീലിപ്പിക്കുകയും മൂല്യനിർണയം നടത്തുകയും ചെയ്യുക](https://rpubs.com/eR_ic/clustering)\n", + "\n", + "- ബ്രാഡ്ലി ബോഹ്മ്കെ & ബ്രാൻഡൻ ഗ്രീൻവെൽ, [*Hands-On Machine Learning with R*](https://bradleyboehmke.github.io/HOML/)*.*\n", + "\n", + "## **അസൈൻമെന്റ്**\n", + "\n", + "[ക്ലസ്റ്ററിംഗിനുള്ള മറ്റ് ദൃശ്യീകരണങ്ങൾ ഗവേഷണം ചെയ്യുക](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/assignment.md)\n", + "\n", + "## നന്ദി:\n", + "\n", + "[ജെൻ ലൂപ്പർ](https://www.twitter.com/jenlooper) ഈ മോഡ്യൂളിന്റെ ഒറിജിനൽ പൈതൺ പതിപ്പ് സൃഷ്ടിച്ചതിന് ♥️\n", + "\n", + "[`ദാസാനി മടിപള്ളി`](https://twitter.com/dasani_decoded) മെഷീൻ ലേണിംഗ് ആശയങ്ങൾ കൂടുതൽ വ്യാഖ്യാനയോഗ്യവും മനസ്സിലാക്കാൻ എളുപ്പവുമാക്കുന്ന അത്ഭുതകരമായ ചിത്രീകരണങ്ങൾ സൃഷ്ടിച്ചതിന്.\n", + "\n", + "സന്തോഷകരമായ പഠനം,\n", + "\n", + "[എറിക്](https://twitter.com/ericntay), ഗോൾഡ് മൈക്രോസോഫ്റ്റ് ലേൺ സ്റ്റുഡന്റ് അംബാസഡർ.\n" + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "anaconda-cloud": "", + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "3.4.1" + }, + "coopTranslator": { + "original_hash": "99c36449cad3708a435f6798cfa39972", + "translation_date": "2025-12-19T17:00:55+00:00", + "source_file": "5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/ml/5-Clustering/1-Visualize/solution/notebook.ipynb b/translations/ml/5-Clustering/1-Visualize/solution/notebook.ipynb new file mode 100644 index 000000000..9c33b1c47 --- /dev/null +++ b/translations/ml/5-Clustering/1-Visualize/solution/notebook.ipynb @@ -0,0 +1,831 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# സ്പോട്ടിഫൈയിൽ നിന്ന് ശേഖരിച്ച നൈജീരിയൻ സംഗീതം - ഒരു വിശകലനം\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: seaborn in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (0.11.2)\n", + "Requirement already satisfied: matplotlib>=2.2 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from seaborn) (3.5.0)\n", + "Requirement already satisfied: numpy>=1.15 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from seaborn) (1.21.4)\n", + "Requirement already satisfied: pandas>=0.23 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from seaborn) (1.3.4)\n", + "Requirement already satisfied: scipy>=1.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from seaborn) (1.7.2)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (4.28.1)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (2.4.7)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (1.3.2)\n", + "Requirement already satisfied: pillow>=6.2.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (8.4.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (0.11.0)\n", + "Requirement already satisfied: packaging>=20.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (21.2)\n", + "Requirement already satisfied: setuptools-scm>=4 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (6.3.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (2.8.2)\n", + "Requirement already satisfied: pytz>=2017.3 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from pandas>=0.23->seaborn) (2021.3)\n", + "Requirement already satisfied: six>=1.5 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from python-dateutil>=2.7->matplotlib>=2.2->seaborn) (1.16.0)\n", + "Requirement already satisfied: tomli>=1.0.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from setuptools-scm>=4->matplotlib>=2.2->seaborn) (1.2.2)\n", + "Requirement already satisfied: setuptools in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from setuptools-scm>=4->matplotlib>=2.2->seaborn) (59.1.1)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "!pip install seaborn" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
0SparkyMandy & The JungleCruel Santinoalternative r&b2019144000480.6660.85100.4200.5340000.1100-6.6990.0829133.0155
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
2LITT!LITT!AYLØindie r&b2018207758400.8360.27200.5640.0005370.1100-7.1270.0424130.0054
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
\n", + "
" + ], + "text/plain": [ + " name album \\\n", + "0 Sparky Mandy & The Jungle \n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "2 LITT! LITT! \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "0 Cruel Santino alternative r&b 2019 144000 48 \n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "2 AYLØ indie r&b 2018 207758 40 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "\n", + " speechiness tempo time_signature \n", + "0 0.0829 133.015 5 \n", + "1 0.3600 129.993 3 \n", + "2 0.0424 130.005 4 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv(\"../../data/nigerian-songs.csv\")\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഡാറ്റാഫ്രെയിമിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ നേടുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 530 entries, 0 to 529\n", + "Data columns (total 16 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 name 530 non-null object \n", + " 1 album 530 non-null object \n", + " 2 artist 530 non-null object \n", + " 3 artist_top_genre 530 non-null object \n", + " 4 release_date 530 non-null int64 \n", + " 5 length 530 non-null int64 \n", + " 6 popularity 530 non-null int64 \n", + " 7 danceability 530 non-null float64\n", + " 8 acousticness 530 non-null float64\n", + " 9 energy 530 non-null float64\n", + " 10 instrumentalness 530 non-null float64\n", + " 11 liveness 530 non-null float64\n", + " 12 loudness 530 non-null float64\n", + " 13 speechiness 530 non-null float64\n", + " 14 tempo 530 non-null float64\n", + " 15 time_signature 530 non-null int64 \n", + "dtypes: float64(8), int64(4), object(4)\n", + "memory usage: 66.4+ KB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ശൂന്യ മൂല്യങ്ങൾക്കായി ഇരട്ട പരിശോധന നടത്തുക.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "name 0\n", + "album 0\n", + "artist 0\n", + "artist_top_genre 0\n", + "release_date 0\n", + "length 0\n", + "popularity 0\n", + "danceability 0\n", + "acousticness 0\n", + "energy 0\n", + "instrumentalness 0\n", + "liveness 0\n", + "loudness 0\n", + "speechiness 0\n", + "tempo 0\n", + "time_signature 0\n", + "dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഡാറ്റയുടെ പൊതുവായ മൂല്യങ്ങൾ നോക്കുക. ജനപ്രിയത '0' ആകാമെന്ന് ശ്രദ്ധിക്കുക - ആ മൂല്യമുള്ള നിരവധി വരികളുണ്ട്.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
release_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
count530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000
mean2015.390566222298.16981117.5075470.7416190.2654120.7606230.0163050.147308-4.9530110.130748116.4878643.986792
std3.13168839696.82225918.9922120.1175220.2083420.1485330.0903210.1235882.4641860.09293923.5186010.333701
min1998.00000089488.0000000.0000000.2550000.0006650.1110000.0000000.028300-19.3620000.02780061.6950003.000000
25%2014.000000199305.0000000.0000000.6810000.0895250.6690000.0000000.075650-6.2987500.059100102.9612504.000000
50%2016.000000218509.00000013.0000000.7610000.2205000.7845000.0000040.103500-4.5585000.097950112.7145004.000000
75%2017.000000242098.50000031.0000000.8295000.4030000.8757500.0002340.164000-3.3310000.177000125.0392504.000000
max2020.000000511738.00000073.0000000.9660000.9540000.9950000.9100000.8110000.5820000.514000206.0070005.000000
\n", + "
" + ], + "text/plain": [ + " release_date length popularity danceability acousticness \\\n", + "count 530.000000 530.000000 530.000000 530.000000 530.000000 \n", + "mean 2015.390566 222298.169811 17.507547 0.741619 0.265412 \n", + "std 3.131688 39696.822259 18.992212 0.117522 0.208342 \n", + "min 1998.000000 89488.000000 0.000000 0.255000 0.000665 \n", + "25% 2014.000000 199305.000000 0.000000 0.681000 0.089525 \n", + "50% 2016.000000 218509.000000 13.000000 0.761000 0.220500 \n", + "75% 2017.000000 242098.500000 31.000000 0.829500 0.403000 \n", + "max 2020.000000 511738.000000 73.000000 0.966000 0.954000 \n", + "\n", + " energy instrumentalness liveness loudness speechiness \\\n", + "count 530.000000 530.000000 530.000000 530.000000 530.000000 \n", + "mean 0.760623 0.016305 0.147308 -4.953011 0.130748 \n", + "std 0.148533 0.090321 0.123588 2.464186 0.092939 \n", + "min 0.111000 0.000000 0.028300 -19.362000 0.027800 \n", + "25% 0.669000 0.000000 0.075650 -6.298750 0.059100 \n", + "50% 0.784500 0.000004 0.103500 -4.558500 0.097950 \n", + "75% 0.875750 0.000234 0.164000 -3.331000 0.177000 \n", + "max 0.995000 0.910000 0.811000 0.582000 0.514000 \n", + "\n", + " tempo time_signature \n", + "count 530.000000 530.000000 \n", + "mean 116.487864 3.986792 \n", + "std 23.518601 0.333701 \n", + "min 61.695000 3.000000 \n", + "25% 102.961250 4.000000 \n", + "50% 112.714500 4.000000 \n", + "75% 125.039250 4.000000 \n", + "max 206.007000 5.000000 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "നാം ജാനറുകൾ പരിശോധിക്കാം. 'Missing' എന്നായി ലിസ്റ്റ് ചെയ്തവ പലതും ഉണ്ട്, അതായത് അവ ജാനറുമായി dataset-ൽ വർഗ്ഗീകരിച്ചിട്ടില്ല.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlYAAAHbCAYAAAAJY9SEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAsIElEQVR4nO3debyt9dz/8ddbpzI20EETGRKZwpHMGVJyU6ZUJN25C0Uh81CmW4RkCLmLTCXTLXT/lFA3bkPSQETRdKSOBkMpOn1+f3yvzXKcOtN3t9Y++/V8PPbjrH2ta639qWvvtd7rO6aqkCRJ0oq72bgLkCRJWlkYrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJ0ybhzyNf1yf8ZeT7Z4+7PknqLS4QKummkHAe8PwqvjHuWpZHwpwqrht3HZImmy1Wkm5yCasnvDfht8PXexNWH+7bMuGihNcm/D7hvBtr3Uq4S8LJCX9K+EbCBxM+NXL/FgnfS7gy4fSELUfu+3bCWxK+Ozz++IR1hvs2SqiE3RMuAL45HP/3hJ8nXJHw9YQ7D8eTcHDCpQl/TDgz4T7T839Q0qQyWEkah9cBWwCbAfcHNgdeP3L/HYF1gPWBXYHDEja5gef6DPBD4HbAAcAuU3ckrA98DXgrcFtgP+ALCXNHHr8zsBtwe2C14ZxRjwbuBWydsB3wWuBpwFzgf4GjhvOeADwKuAewJrADcNkS/j9IWskYrCSNw7OBN1dxaRULgDcxEogGb6ji2ipOooWjHRZ9koQ7AQ8G3ljFX6v4DnDsyCnPAY6r4rgqrq/iBOAUYNuRcz5WxS+r+AtwDC3sjTqgiquG+18AvL2Knw/dgv8JbDa0Wv0NuA1wTyDDORcv+/8aSTOZwUrSOKwHnD/y/fnDsSlXVHHVjdw/+jyXV3H1yLELR27fGXjm0A14ZcKVwCOAdUfO+d3I7auBWy/yMxZ9vkNGnutyIMD6VXwT+ADwQeDShMMS1lhMzZJWYgYrSePwW1pImXKn4diUtRNudSP3T7kYuG3CLUeObThy+0Lgk1WsNfJ1qyoOXIZaR2f4XAjsucjz3aKK7wFU8b4qHgRsSusSfMUy/BxJKwGDlaRxOAp4fcLcYbD4G+EfA84Hb0pYLeGRwL8Bn1v0Sao4n9a1d8Bw7kOBJ4+c8ingyQlbJ6yScPNhcPwGy1n3h4HXJNwbIGHNhGcOtx+c8JCEVYGrgGuA65fz50iaoeaMuwBJs9JbgTWAM4bvPzccm/I74ApaK9XVwAuq+MUNPNezgY/TBor/EPgssApAFRcOA87fSQtzC4dzXrg8RVfxpYRbA0cP46r+AJww1L8GcDBwV1qo+jpw0PL8HEkzl+tYSZoow3IIn6pavlalhM8Cv6hi/66FSdJSsCtQ0ow2dMHdLeFmCdsA2wH/PeayJM1SdgVKmunuCHyRto7VRcALq/jJeEuSNFvZFShJktSJXYGSJEmdGKwkSZI6mYgxVuuss05ttNFG4y5DkiRpiX784x//vqrmLu6+iQhWG220Eaeccsq4y5AkSVqiJOff0H12BUqSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOpkz7gKW1YNe8YlxlzAr/Pig5467BEmSZhxbrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHWyxGCV5OZJfpjk9CQ/S/Km4fhdkvwgyTlJPptkteH46sP35wz3bzTN/w2SJEkTYWlarK4FHltV9wc2A7ZJsgXwDuDgqro7cAWw+3D+7sAVw/GDh/MkSZJWeksMVtX8efh21eGrgMcCnx+OHwlsP9zebvie4f7HJUmvgiVJkibVUo2xSrJKktOAS4ETgHOBK6vquuGUi4D1h9vrAxcCDPf/Abhdx5olSZIm0lIFq6paWFWbARsAmwP3XNEfnGSPJKckOWXBggUr+nSSJEljt0yzAqvqSuBbwEOBtZLMGe7aAJg/3J4PbAgw3L8mcNlinuuwqppXVfPmzp27fNVLkiRNkKWZFTg3yVrD7VsAWwE/pwWsZwyn7Qp8ebh97PA9w/3frKrqWLMkSdJEmrPkU1gXODLJKrQgdkxVfTXJWcDRSd4K/AQ4fDj/cOCTSc4BLgd2nIa6JUmSJs4Sg1VVnQE8YDHHf00bb7Xo8WuAZ3apTpIkaQZx5XVJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKmTJQarJBsm+VaSs5L8LMk+w/EDksxPctrwte3IY16T5JwkZyfZejr/AyRJkibFnKU45zrg5VV1apLbAD9OcsJw38FV9a7Rk5NsCuwI3BtYD/hGkntU1cKehUuSJE2aJbZYVdXFVXXqcPtPwM+B9W/kIdsBR1fVtVX1G+AcYPMexUqSJE2yZRpjlWQj4AHAD4ZDeyc5I8kRSdYejq0PXDjysItYTBBLskeSU5KcsmDBgmWvXJIkacIsdbBKcmvgC8C+VfVH4EPA3YDNgIuBdy/LD66qw6pqXlXNmzt37rI8VJIkaSItVbBKsiotVH26qr4IUFWXVNXCqroe+Cj/6O6bD2w48vANhmOSJEkrtaWZFRjgcODnVfWekePrjpz2VOCnw+1jgR2TrJ7kLsDGwA/7lSxJkjSZlmZW4MOBXYAzk5w2HHstsFOSzYACzgP2BKiqnyU5BjiLNqNwL2cESpKk2WCJwaqqvgNkMXcddyOPeRvwthWoS5IkacZx5XVJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktTJEoNVkg2TfCvJWUl+lmSf4fhtk5yQ5FfDv2sPx5PkfUnOSXJGkgdO93+EJEnSJFiaFqvrgJdX1abAFsBeSTYFXg2cWFUbAycO3wM8Edh4+NoD+FD3qiVJkibQEoNVVV1cVacOt/8E/BxYH9gOOHI47Uhg++H2dsAnqvk+sFaSdXsXLkmSNGmWaYxVko2ABwA/AO5QVRcPd/0OuMNwe33gwpGHXTQcW/S59khySpJTFixYsKx1S5IkTZylDlZJbg18Adi3qv44el9VFVDL8oOr6rCqmldV8+bOnbssD5UkSZpISxWskqxKC1WfrqovDocvmeriG/69dDg+H9hw5OEbDMckSZJWakszKzDA4cDPq+o9I3cdC+w63N4V+PLI8ecOswO3AP4w0mUoSZK00pqzFOc8HNgFODPJacOx1wIHAsck2R04H9hhuO84YFvgHOBqYLeeBUuSJE2qJQarqvoOkBu4+3GLOb+AvVawLkmSpBnHldclSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInSwxWSY5IcmmSn44cOyDJ/CSnDV/bjtz3miTnJDk7ydbTVbgkSdKkWZoWq48D2yzm+MFVtdnwdRxAkk2BHYF7D485NMkqvYqVJEmaZEsMVlV1MnD5Uj7fdsDRVXVtVf0GOAfYfAXqkyRJmjFWZIzV3knOGLoK1x6OrQ9cOHLORcOxf5FkjySnJDllwYIFK1CGJEnSZFjeYPUh4G7AZsDFwLuX9Qmq6rCqmldV8+bOnbucZUiSJE2O5QpWVXVJVS2squuBj/KP7r75wIYjp24wHJMkSVrpLVewSrLuyLdPBaZmDB4L7Jhk9SR3ATYGfrhiJUqSJM0Mc5Z0QpKjgC2BdZJcBOwPbJlkM6CA84A9AarqZ0mOAc4CrgP2qqqF01K5JEnShFlisKqqnRZz+PAbOf9twNtWpChJkqSZyJXXJUmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJ0sMVkmOSHJpkp+OHLttkhOS/Gr4d+3heJK8L8k5Sc5I8sDpLF6SJGmSLE2L1ceBbRY59mrgxKraGDhx+B7gicDGw9cewIf6lClJkjT5lhisqupk4PJFDm8HHDncPhLYfuT4J6r5PrBWknU71SpJkjTRlneM1R2q6uLh9u+AOwy31wcuHDnvouGYJEnSSm+FB69XVQG1rI9LskeSU5KcsmDBghUtQ5IkaeyWN1hdMtXFN/x76XB8PrDhyHkbDMf+RVUdVlXzqmre3Llzl7MMSZKkybG8wepYYNfh9q7Al0eOP3eYHbgF8IeRLkNJkqSV2pwlnZDkKGBLYJ0kFwH7AwcCxyTZHTgf2GE4/ThgW+Ac4Gpgt2moWZIkaSItMVhV1U43cNfjFnNuAXutaFGSJEkzkSuvS5IkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE6WuNyC1NMFb77vuEtY6d3pjWeOuwRJmrVssZIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOpmzIg9Och7wJ2AhcF1VzUtyW+CzwEbAecAOVXXFipUpSZI0+VYoWA0eU1W/H/n+1cCJVXVgklcP37+qw8+RNGYPf//Dx13CSu+7L/7uuEuQtAKmoytwO+DI4faRwPbT8DMkSZImzooGqwKOT/LjJHsMx+5QVRcPt38H3GEFf4YkSdKMsKJdgY+oqvlJbg+ckOQXo3dWVSWpxT1wCGJ7ANzpTndawTIkSZLGb4VarKpq/vDvpcCXgM2BS5KsCzD8e+kNPPawqppXVfPmzp27ImVIkiRNhOUOVkluleQ2U7eBJwA/BY4Fdh1O2xX48ooWKUmSNBOsSFfgHYAvJZl6ns9U1f9L8iPgmCS7A+cDO6x4mZIkSZNvuYNVVf0auP9ijl8GPG5FipIkSZqJXHldkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUyZxxFyBJmn4nPerR4y5hpffok08adwmaALZYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6mTPuAiRJ0o37wMu/Mu4SVnp7v/vJXZ7HFitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqZNqCVZJtkpyd5Jwkr56unyNJkjQppiVYJVkF+CDwRGBTYKckm07Hz5IkSZoU09VitTlwTlX9uqr+ChwNbDdNP0uSJGkipKr6P2nyDGCbqnr+8P0uwEOqau+Rc/YA9hi+3QQ4u3shk2Md4PfjLkLLzes3c3ntZjav38y1sl+7O1fV3MXdMbaV16vqMOCwcf38m1KSU6pq3rjr0PLx+s1cXruZzes3c83mazddXYHzgQ1Hvt9gOCZJkrTSmq5g9SNg4yR3SbIasCNw7DT9LEmSpIkwLV2BVXVdkr2BrwOrAEdU1c+m42fNELOiy3Ml5vWbubx2M5vXb+aatdduWgavS5IkzUauvC5JktSJwUqSJKkTg9UMlOSuSVYfdx2SJOmfGaxmmCRrA/sBrzNcSdINS5Jx16DZx2A1gyTZqKquAL4ArAnsZ7iaPL6YzyxJHpTELbdWMklSVZXk4Ul2T/K4YfkfzQCjr6PD/sMzhsFqhkiyFvCuJK+rqhOBLwLrYbgam6k//CT3HV681wcYXswNVxNs5NrNo22t9YYk2463KvU0/B0+BvgkcHfgvcBLktx9rIVpiaZC8XD7ecATZlIoNljNHFcB7wPunWS/qjoJOAbD1ViMfBp+PO06vAV4S5KXj74oaDIN1+6JwFHA6bRFjV+U5OnjrUy9JNkEeAGwb1W9BtgV2BjYaqyFaYlGQtVewD7A2VX11/FWtfQMVhNu6pN1Vf0N+D7wQWCLRcLV7YE3Gq5uOsMb8wOBVwDbV9Vjgc/RtnKyW2lmmAe8vqoOBfanhay9kmwz3rK0IjIAHgXcDdg6ya2q6lTaNd5jGKuqCZbk9sAutJ1bzkvy9CQvGFqZJ5rBaoIt0hy6JkBVfRd4D/DQkXD1VWA14NZjK3aWGZqlHw08Blh/OPwd4I/Ag8dVl27YYrpnbwk8D6CqLgV+APwV+I8km9+01WlFjVzfdYA5VfVR4G1AaG/OAL8D/jQc0wRJMjfJFsPtbYA7AicABwMfB3YANgMeO6YSl9q0bGmjPkZC1UuAxwGXJTm+qo4eXkP2SfLGqnpzku9U1V/GWe/KbqT7b1Xgb7TWw7WBVyW5oqp+kuQ0YOcktwT+Ypfg5Biu3YNpQfjrwH8C705ySFXtA9yK1uW+ALgr8MOxFatlNlzfbYE3A/OTXAXsTruuuybZmfae986qunyMpWrxVgVen6RoDQU7AF8BzgVOrqpfD1vlzUtys6q6foy13iiD1YRL8gLg6cCzgYNobwS3q6oPJpkD7J7ktr5QTL/hhfvJwFNp3a8H0bpiLwOOTXIErQXroKq6enyVatRIIN4S+DBwKfAU4LO0cYsHJDkJWJfWjfsU4N7jqVbLK8m9gLcCewOnAZ8BPlZVOya5BtgaOLOqvjqc71jICVJVv03yf7ThFR+oqj/QPtz8EP4+iP35wM6THKrArsCJluTmwLW0N/JnALcAngO8PMkLq+pkYE9D1U0jyYOAdwD/Rev22wW4P23W0adorYofqaqvzLTpwSujoWVxKhBvRlv/7UlV9SjgPOAJwDpV9Qza39UjaIF5N+DT46hZK+Ra4Czg1Kq6uqq2B9YdBkD/N62r9/5JdjRUTYbFdM9/lfa3+Pgk+42c93DgzsBzquqsm7DE5WKL1QRZtHmzqq4BPpZkQ2AbYPeqmp/kdNoMpqOq6soxlTsb3Qv4YVV9D/hekmcArwK+BbwbuJjWgnh6Vf10jHXOekluBxyd5ClDF/lDgS2B+9G6Ft4N7As8J8lqVXV8krsAzwSeUVW/GE/lWlojLZGr0BoJLqe1Os6jffABOJqWra9LciStC/9bhqrxW2QM8bNoYx5/VVVfTXI5cMjQnXsu7UPQW2fK+53BakIk2aCqLhpuvxi4C/Bb4DD+MeDyLkmeBFwC7DFTfslmqpEX7qnAexawbZJ5VXVKVX0+bWHJjavqpCSfA64H/jDWwkVVXZbk+cBGSf5aVR9KchvawPTLh+t1MK3b4aLhMb9J8qqqumqctWvpDH+b2wHPpQ1GP4g27vH9SQ4HrqF1C+4znP834MgxlatFjISqvWmtVB8AvpFkt6o6Ksmew7E5wPNm0vtdDO7jNTSFrkEbE/B24AzauI//on26Xoe2/sqewAOBBwHPrqozxlHvbJO2TtVDgStpM1ReQGuZmg+cTZu+/bSp65FklapaOJ5qBf98DZK8DngjcK+Rwa9bAe+rqhOnQvOkD4bVv0pyT9rr5Ntpr5MH0Lrn/0YbT7UB8PmqOn5cNerGJbk/beHW7WnhandgLdoEgw8Pk4BuPtOGuxisJkSShwGH01pFPlhV30yyHq2raQ1gr6q6Osmaw6A+TbOhX/8IWrfRc2n9/+cDc4GH0WYbfbSqjnXMxmQYaWXcArh0CFOvAl4KPLyqzk3yclq42hm40kA18yS5D+3v8uyqeslwbGvatPxHVtU5YyxPN2Bxr5NJ1qGNb9y3qrZMshvtvfAZVfXFcdS5ohy8PkZTA/eGX7bv0RL7vYFtoc2SAA4EFgIfHD5VG6puAknuAbyI1rJxGO0T1e2A+1XV+6pqR1rztKFqggyhampF9aktht5BW/vt5CT3qKp3M0z6MFTNWL+kDZG4V5KNk6xeVV+n7aM6d7ylaXEWGVP16CTbJlm7qn4PrE7rAYC2FuBngZ+MqdQVZovVmCzyS/Z42to582nrIv0Pbcr+R4b770h7z7hkXPXONsOb80toM41eOoy/WQM4CXhWVf1yrAVqsYYB6F+hhd5TktwXWLWqTh1arl4JbFCu+TZjTXX1DrM+Dwf+AnyDtozGUcB2VfWjcdaoG5bkpbQlhM4AtqB1/60B/DttketNgCdX1W/GVuQKMliN2fBLtj1tZtmjaYui3ZU2yPLDVfXesRU3i4x0Id0VuJo2w2gT2ti2C2ifhEPb/PpJVXXh2IrVP1nkQ8qtaAtEXk5ruXgALRx/oqo+leTudhPNXCN/p3OGmX6r0QasP5j2oedrwwxPW5EnUJL7AW+qqqcm2Qf4t6raKm1NxvsA96XNvD77Rp9owtkVOEZJNgW2rqpHA2sCV9DGfPyANqZnlyRrjbHEWWOkC+mrtG6jH9Fm9x1Fm779OdoL+KsMVZNj5I122yT701ovLqBNuz+etv3F12gTPwBm7Kfg2WhkuMTGQ8s9AEOomlNtY94XAafQpuufaqiaHFPXb8TFwOlJPkob8vLE4fh2wFlV9cmZHqrAYHWTWswv2V+BC5K8FrgHbUXZvyXZrqp+CDxsJk0xncmGF+23Av9RVTvTgtSxwK9os46+B3yb1rK4uGupMRhC1VNoe8KdWlXXV9UhVbV3VR1HC1TPA/7fcL4zNmeIkdC8Ne1v8b9pm2TfHf4pXP2NFq5uD7wGlxGaCEOX7VRL8m2HQeqXAxsBdwd2Ha7hc2kzd283tmI7syvwJrJId8V2tDFV3we+RFt4ctPhl+z5tOUVtq+qy8ZW8CwwMtX+wbSVuA8E9q9/rCf2fmBhVe2btn7YU2kDKj9SVdeNq+7ZLsm6wAOq6rhhnM0RwDtprVEPoW1JczBwW2B/4Iiq+vK46tXySzKPNjP6NcAdaBN8zgX+e6pLd2TM1Wq0lfR/O7aCBfy9N+YOVfWtJC+j/U3eHngTrUHhubT3wKLNsN6xqn42rnp7M1jdxIZ1dPagrX10TpLH0nZevz0taO1IW7bflbunSZJbTA1eTvII4FDaIoL7AseNTBp4FrBZVb1m+P4JwOlOIhivtI12zwN+W1VXJvkEbbunWwA/o6319uuq2iPJetX2ILN7aIZJW9D1QGCbqrrbcOyRwE60iT6fm5pEEtchmyhJ3kRbR+y7tOu1A631+OXAx2jbC92b9r538kweqL44Bqub0NCEfTiw09SnquET91q0T2JXAP+3MvQxT6ph/Zv3Av9GG4fzYdoigh8dWq4Ooy0EeiXwLOC1VfW18VSrUUnuDMwdZvutCRwCfBn4Ou1anVZVP0myCW2R3R2r6orxVaxltWgAHrmW5wAvHlqYt6RtSv+fK9sb8kw30n17M+B1tMkjfx2WpyFtfbkv0Qat/3iMpU4rx1hNo8WMw/k9bfDeaklWG34J/0ZbaPK9VfVxQ9X0GULsvrQ1UtYCHklbM+VZSdYfpmjvDPyaNgPwpVX1NcdTjVeaNWifcj+d5PHV1nP7X1pAfmJVfWwIVU8HPg8caqiaWUbelLdKsnuS5w+vhy+mtUa+Z2iZ+jbwSkPVZBkNxUPr4duAE4G1kzw2yS2r6vu0D0NrjLHUaWeL1TRZZEzVOsBVwHXAMcDxVfWh4b6dacssvKzco2xaDcHq9cDdaDul7wmsQhvTdh1wSFVdPL4KdWOSvJ02Q/M64AND6N2F9vfz7WE5hXcOt4+z+2/mGBnv+CTaZJFX0LqMPlNV+w2t/W8FLq+qF9n1N1kWeb/bmfbB9dqqOjzJvsBmtO7b3wBvALZcmYOxsyemwSK/ZC+j9TGfTpvVsjfwuaHb6Tpgc2AXQ9X0mmodTPIdWqD6dlWdNdz3JVrLx6uT/KdjqCZHklWHVl1oszLXoi2g+/wkVNUnk1wPPCnJVVX1yuFxhqoZIG1B15tV22poHdrr4w60WdLnAc9MW51797TlNFaHv7eIaEKMvN+9ENgN+BSwXZKnV9W2aRsq70UbZrHVyhyqwK7AaTHyS/Zg2oC9F9PW0tmX9on7CbSWq/+jDWI/czyVzg4jXQx3pS0a+TTgZkneOrxofxc4jhZ01xpjqRqRtsnu4UkeMxw6nrbe2xa0BXRflGSbqvo0bZzVuVOPNVTNGA8Dbpe2Jc3vaRN7VqPNHnsE8BhgtyQfqKqzy83nJ8owlmrq9hxa6/FLq237tTWwMMn7hwlBnwTeVbNg1wpbrKbJMNvsi7Tupe8nuQXwJ1oT93pTXYGafkOoegptRe5zaGOoPkKbofKSJO+rqv9Ncma5btgkuT3D/plJPgxcT5t2vxNtvNXNaa2MN6uqI8dXppZXVX06ya2BHyV5TlWdkbb5/I+HrsE70hbs/fp4K9Wi0havXg84a2hEuBj4G21ZjCmvoDUoUFUH3cQljo0tVp0sOsC5qr5DS+g7JFlnmN5/Mm0m01ZJ1nZQ9E1jmInyBmBr2oyUF9FaDd9F+4T18rSFBq8cW5H6F1V1MvAo4J7Ab2lbPR1Nu34b0AapH0ZbD0czyNRrX9rin/ehvVZ+dJi1ex6wZpJDaVtJfbmqTvD1cuJsAvxbkiNpYx4voi3E+5Ekmw/nPBS4e5Jbzqbr5+D1DhYZU/U44DbACVV1VZKDaV0X21XVpcMA6lWr6uoxljyrJNmAtrTC2rQBsDvTllm4HPg4sKDctHViDW++7wXuR5u+vQ3w3ao6cQjELtY6Aw1vvofQuo6+P4xH3Zm2dyq0631VVZ00phJ1I4b3so/RFv98bVV9YDi+J//YZuhBwLNrJVr8c2kYrDrKP3bt/hWtOfQdVXVSkoNog6MfVVV+uh6TJG8DLq2qQ9K2UXgJ8PSqOn/MpWkJhtli7wK2qKo/LDKoXTNMkg1pq+NfXlV7jBx/GfAfwDPLRZInzqKzMZM8ENiK9qH1TODoaqvgP5C2vNB1NQtXwneM1QoY+v+vqKprk2xFm+3wiCSvpg3K3G1ozHpFkmtp61UZrMbnTGDP4ZPW04B9DFUzw7C0wkLgl0nu6RpVM951wBm0mWPbVNXUXo7vSbIKTiKZSFOhKsmuwKrABVX1jiQvoPXM/CnJ2rRemw/O1kkktlgth6GveC5tjMd/0aaWrg3cmjaTZVda8+jHaJtNvrKqvjWeajUlbZHJp9KuzRHliuozztByddWwSKRmiJGZuQ+lvXZeQJtE8jza1ibHVNWJYyxRS2mYCPRu4NO0rr5vVtXBafvcPgR4HPDk2db9N8oWq+WTYbzUW4CX0RZC+yxwWZJ/B/6nqq5J8l3aJpM2aU+AqvojcGSST1fb8Nq1jmaYqTDstZtZhlD1BNqYqvcwbGsCHAssBJ6Xtpny8WMsU0uQtiDv5sBTqurnSR4EvGn4c3xvkk8Ca8z2IS8Gq+Uw0sd8S9pWC0ekLdf/MeB7wKFJ7kGbEfHM2f5LNoEWgmsdzWReu5ljWOtoLdrCvE8FbgucBZxaVZck+Rxt4U93PZgwIy2NUx9k7kSbYPBt4OfAacD+wMFJVquqd+JwF7sCl1eSZwGvAp5Im8XyXOBQ2j50D6cN6PtUVf1iXDVK0qRI8iraAq+Ppc0UOzfJ82jL0JznauqTZZHZ7hvTxlNdO/TK7EdrNPjZsDDofYDLqurCMZY8MWyxWn63A06utv3JR5JcRltT55ZV9VHAKcKSZrUkm9GWmnkTbfLOLsBjhlB1f9qH03Oq6tdjLFOLMRKqprYZujTJfFoL1RzgqCS7VNXptJYrDQxWy+8CYLNhjaT5VfX5YQr/k5McXVV/GnN9knSTG+k+eiTwTGDrJJdW1RvTtinaP8l1tI15XzUspqwJlLaDyJ60HpiNaLPdP0TrDlwP+FCSLavqr2MrcgIZrJbf/wLPpm0a+pMkt6QNVN/HUCVptpkKVEOoehRt1tjewHzgMWn7Ae4wvFmvTVut+8dORJgci7kWC4HTqup3SS6h7YDwAOAhVXVA2h6OhqpFGKxuxA39wQ+rPf8hyV60NP8IYGNgv6o67yYuU5LGKm1/v3sl+XZVLaQNcv5AVX05yYm01ql3DC+ph4w+1lA1GRYZU/Vi4I7AQbSemd2GyVkXJLmetp3N94HLxlbwBDNY3YBFfsm2AwJcX1XHDlP151TV5UneUW2z0FtV1VXjrVqSxuLBtB0nbjV08/0BOCDJMVX1myTfo61b9egkC6rqM+MsVv9q5P3uP2gb1J9aVVcm2Q/YL8kmwC+B+wMHjD5G/8xNmG/AyC/ZC4C30BL6B5K8crj/umEa8dQvlnv/SZqVqurLwO9oM6O3B46n7cd5yDCu6n60/Tp/Baw/pjK1BMOMvxfQZrkvTHJ74ERgX9qMzk2AXarqN2MrcgawxWoRi7RU3Zw2G2LXqvpJkmOAryf5c1UdOjo92OQuabYZfb0cWvBPAp4A/JW2CGiAT9K2sNkdeCCw1bCt1HW+bo7XIu9369AaCJ5SVfOTvAK4ZmhE+HNVvXCsxc4gBqsbMLRUnU1r+rxF2uaTvxmmnu443uokafyGgeqPBu5L29rko0n+TNs26vqqOijJocPpmwNvBJ5abqA9douEqr2Bu9IC8BeHU64Cbj0MhdknybZVdel4qp1ZDFaDJJtU1dnDC8XTaNOEd6INznspbXbLJcCGwC2H7RcWjq9iSRqPkSUVHkLr/jsLmJfku0O4Wgg8Z1g88gu0ldcfRlvT6udjK1x/NxKqXkTrmdkJOBVYL8mBwDXA+2nLKjzXULX0XHkdSLI1bW2OB9LGAbwbOLeqXjzcfwRtevBVtD7m3arK/f8kzVpJNgfeTNtk/owkO9LC05lDuNoJOGtYQJJhyxOn5k+QtI3p3wO8gdaYsC1tS5pbA2fSWh53rqqzxlbkDDTrW6yGT1Sb036xNqVNC/4WsF2SJ1fVV6rq34dPZqvQFgM9f2wFS9JkWAt4PG3xyDOAzwPXM4yhqqpD4Z/WtzJUTZiq+uOwbNA9aV20j0kS4FLgN8ATbKladrM+WA0D884FXk9bDO0xtCbQv9BWUV9YVcdV1Q/GWackTZKqOn4YNvH2JL+tqqOSfJ72AfT0kfPsFplg1fb/uxqYk+S+tBXWvwkcbKhaPrM+WA3OoM2G+COwZlX9PskXaZ++dklybVWdONYKJWnCVNWxw7pVbxm6+o4Ejhp3XVpmFwBfpXULrkfbYNkNlZfTrBxjtchsiNWAhVW1cFgI7bHA/lX1o2EfwCcCX62qi8dYsiRNrCRPAQ6kdQ3+bnQpGs0MwxIYd6TN5pw/7npmslkXrBYzxXRTWkvVAVV1TZLXAg8BDqyq/3P2nyQtWZK5VbVg3HVI4zbrgtWUYYrps2i7dJ8KfAN4Y1Wdm+StwN2B51XVNWMsU5IkzSCzMljdwBTTS2lLLbywqs5JcruqcoNJSZK01GZlsAJIsjptiul7R6aYLgA+QusWdGVgSZK0TGbtrMDFTDG9M22zyY8YqiRJ0vKYtS1W8PdWq31pM1mmppi6wqwkSVouszpYgVNMJUlSP7M+WEmSJPVys3EXIEmStLIwWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRO/j/0nFv+UbvkvAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top[:5].index,y=top[:5].values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "'Missing' വിഭാഗങ്ങൾ നീക്കം ചെയ്യുക, കാരണം അത് Spotify-യിൽ വർഗ്ഗീകരിച്ചിട്ടില്ല.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df = df[df['artist_top_genre'] != 'Missing']\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "മുകളിൽ മൂന്ന് വിഭാഗങ്ങൾ ഡാറ്റാസെറ്റിന്റെ ഏറ്റവും വലിയ ഭാഗമാണ്, അതിനാൽ അവയിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കാം.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n", + "df = df[(df['popularity'] > 0)]\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഡാറ്റ ശക്തമായി ബന്ധിപ്പിച്ചിട്ടില്ല, എനർജി와 ലൗഡ്നസിനിടയിൽ മാത്രമാണ് ബന്ധം, ഇത് യുക്തിയുള്ളതാണ്. പ്രസിദ്ധീകരണ തീയതിയുമായി ജനപ്രിയതയ്ക്ക് ഒരു ബന്ധമുണ്ട്, ഇത് കൂടി യുക്തിയുള്ളതാണ്, കാരണം പുതിയ ഗാനങ്ങൾ കൂടുതൽ ജനപ്രിയമായിരിക്കാം. ദൈർഘ്യവും എനർജിയും തമ്മിൽ ഒരു ബന്ധം കാണപ്പെടുന്നു - കുറച്ച് ദൈർഘ്യമുള്ള ഗാനങ്ങൾ കൂടുതൽ ഊർജസ്വലമായിരിക്കാമോ?\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "corrmat = df.corr()\n", + "f, ax = plt.subplots(figsize=(12, 9))\n", + "sns.heatmap(corrmat, vmax=.8, square=True);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ജനപ്രിയതയുടെ അടിസ്ഥാനത്തിൽ അവരുടെ നൃത്തക്ഷമതയുടെ ധാരണയിൽ ജാനറുകൾ ഗണ്യമായി വ്യത്യസ്തമാണോ? നല്കിയ x അക്ഷവും y അക്ഷവും അടിസ്ഥാനമാക്കി നമ്മുടെ മുകളിൽ മൂന്ന് ജാനറുകളുടെ ജനപ്രിയതയും നൃത്തക്ഷമതയും സംബന്ധിച്ച ഡാറ്റ വിതരണത്തെ പരിശോധിക്കുക.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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OKvs+++/H25FAXz55ZcALFiwgJycHDl53mmA3GUnIyNzRFx22WXce++9fPPNN2g0GkaMGBEWj76YMWMGxcXFXHrppQQCAaZOncq1115LY2MjZrOZ559/nurqagoKCvjjH/+IwWDg8ccf584778Tv95OcnMwTTzwRPt+mTZv46KOP0Ov1/QZolTm1kAVJRkbmiCgoKODzzz/vtX3/lBR79uzpse+OO+7gjjvu6HWMXq/npZde6rW925uuL37961//KHIE/ZiQu+xkZGRkZE4K5BaSjIzMgJKamsrixYsP65jDLS9zaiC3kGRkZGRkTgpkQZKRkZGROSmQBUlGRkZG5qRAFiQZGRkZmZMCWZBkZGSOKU1NTdx6663H5FzPPfccixYtOibnkjn5kb3sZGRkjikJCQn861//Oibnuueee47JeWRODWRBkpGROSLWrl3LK6+8gk6no6ysjIKCAv7617/S3NzM9ddfz+LFi2lsbOTee+/FarWSn5/P+vXrWbZsGU6nk8cff5zS0lKCwSC33norF1xwQTgSeGdnJzNmzKC5uZlx48Yxd+5cnnnmGVavXo3VaiUqKooXXniBuLg4pkyZwtlnn83GjRtRKpU8++yzpKWl9bC1v3QVFRUVPProo3R2dmIwGHjooYcoKiriwQcfRBAESkpKcDgc3H777Vx88cUD8C3/uJAFSUbmFMW+bQn2rcdnPk7k8JlEFp1x0HKbN2/m66+/Jj4+nssvv5wVK1aQn58f3v/EE09w7rnncs0117BgwQK++OILAF566SWGDBnCU089hcPh4MorrwxHBW9qauKrr75CpVLx4IMPAlBVVUV5eTnvvfceCoWC+++/n88//5ybb76ZlpYWJk6cyCOPPMKTTz7Jf//73/Bx+9OdrmLx4sU88MADfP7559x3333cdtttzJ49my1btnDPPffw7bffhu147733aGtrY+7cuUyePJm4uLij/WqPiL6C1p6OyGNIMjIyR0xeXh6JiYkoFApycnKwWq099q9cuZI5c+YAcNZZZ2EymQBYtWoV7733HnPmzOGaa67B5XJRWloKwODBg3tE8gbIyMjggQce4MMPP+TJJ59ky5YtPVJdTJ06NWzPD23oZv90FU1NTTQ2NlJdXc3s2bMBGDFiBGazmfLycgDmzp2LWq0mMTGRUaNGsXHjxqP6ro6OH4cgyS0k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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.set_theme(style=\"ticks\")\n", + "\n", + "# Show the joint distribution using kernel density estimation\n", + "g = sns.jointplot(\n", + " data=df,\n", + " x=\"popularity\", y=\"danceability\", hue=\"artist_top_genre\",\n", + " kind=\"kde\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "സാധാരണയായി, മൂന്ന് ജാനറുകളും അവരുടെ ജനപ്രിയതയും നൃത്തയോഗ്യതയും സംബന്ധിച്ച് സമന്വയത്തിലാണ്. അതേ അക്ഷങ്ങളിൽ ഒരു സ്‌കാറ്റർപ്ലോട്ട് സമാനമായ ഏകീകരണ മാതൃക കാണിക്കുന്നു. ഓരോ ജാനറിന്റെയും ഡാറ്റയുടെ വിതരണ പരിശോധിക്കാൻ ഒരു സ്‌കാറ്റർപ്ലോട്ട് ശ്രമിക്കുക.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages/seaborn/axisgrid.py:337: UserWarning: The `size` parameter has been renamed to `height`; please update your code.\n", + " warnings.warn(msg, UserWarning)\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.FacetGrid(df, hue=\"artist_top_genre\", size=5) \\\n", + " .map(plt.scatter, \"popularity\", \"danceability\") \\\n", + " .add_legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ വ്യാഖ്യാനക്കേടുകൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + }, + "kernelspec": { + "display_name": "Python 3.7.0 64-bit ('3.7')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.9" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "c61deff2839902ac8cb4ed411eb10fee", + "translation_date": "2025-12-19T16:57:42+00:00", + "source_file": "5-Clustering/1-Visualize/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/ml/5-Clustering/2-K-Means/README.md b/translations/ml/5-Clustering/2-K-Means/README.md new file mode 100644 index 000000000..dfd8fb19f --- /dev/null +++ b/translations/ml/5-Clustering/2-K-Means/README.md @@ -0,0 +1,263 @@ + +# K-മീൻസ് ക്ലസ്റ്ററിംഗ് + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +ഈ പാഠത്തിൽ, നിങ്ങൾ മുമ്പ് ഇറക്കുമതി ചെയ്ത നൈജീരിയൻ സംഗീത ഡാറ്റാസെറ്റ് ഉപയോഗിച്ച് Scikit-learn ഉപയോഗിച്ച് ക്ലസ്റ്ററുകൾ സൃഷ്ടിക്കുന്നത് എങ്ങനെ എന്നത് പഠിക്കും. ക്ലസ്റ്ററിംഗിനുള്ള K-മീൻസ് അടിസ്ഥാനങ്ങൾ ഞങ്ങൾ ഉൾക്കൊള്ളും. മുമ്പത്തെ പാഠത്തിൽ നിങ്ങൾ പഠിച്ചതുപോലെ, ക്ലസ്റ്ററുകളുമായി പ്രവർത്തിക്കാൻ നിരവധി മാർഗ്ഗങ്ങളുണ്ട്, നിങ്ങൾ ഉപയോഗിക്കുന്ന രീതി നിങ്ങളുടെ ഡാറ്റയെ ആശ്രയിച്ചിരിക്കും. ഏറ്റവും സാധാരണമായ ക്ലസ്റ്ററിംഗ് സാങ്കേതിക വിദ്യയായ K-മീൻസ് ഞങ്ങൾ പരീക്ഷിക്കും. തുടങ്ങാം! + +നിങ്ങൾ പഠിക്കേണ്ട പദങ്ങൾ: + +- സിലഹ്വെറ്റ് സ്കോറിംഗ് +- എൽബോ മെത്തഡ് +- ഇൻർഷ്യ +- വ്യത്യാസം + +## പരിചയം + +[K-മീൻസ് ക്ലസ്റ്ററിംഗ്](https://wikipedia.org/wiki/K-means_clustering) സിഗ്നൽ പ്രോസസ്സിംഗ് മേഖലയിലെ ഒരു രീതി ആണ്. നിരീക്ഷണങ്ങളുടെ ഒരു പരമ്പര ഉപയോഗിച്ച് ഡാറ്റാ ഗ്രൂപ്പുകൾ 'k' ക്ലസ്റ്ററുകളായി വിഭജിക്കാൻ ഇത് ഉപയോഗിക്കുന്നു. ഓരോ നിരീക്ഷണവും ഒരു ഡാറ്റാപോയിന്റിനെ അതിന്റെ അടുത്ത 'മീൻ' അല്ലെങ്കിൽ ക്ലസ്റ്ററിന്റെ കേന്ദ്രബിന്ദുവിലേക്ക് കൂട്ടിച്ചേർക്കാൻ പ്രവർത്തിക്കുന്നു. + +ക്ലസ്റ്ററുകൾ [വോറോണോയി ഡയഗ്രാമുകൾ](https://wikipedia.org/wiki/Voronoi_diagram) ആയി ദൃശ്യവത്കരിക്കാം, അവയിൽ ഒരു പോയിന്റ് (അഥവാ 'സീഡ്') അതിന്റെ അനുബന്ധ പ്രദേശം ഉൾക്കൊള്ളുന്നു. + +![voronoi diagram](../../../../translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.ml.png) + +> ഇൻഫോഗ്രാഫിക് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) tarafından + +K-മീൻസ് ക്ലസ്റ്ററിംഗ് പ്രക്രിയ [മൂന്ന് ഘട്ടങ്ങളിൽ പ്രവർത്തിക്കുന്നു](https://scikit-learn.org/stable/modules/clustering.html#k-means): + +1. ആൽഗോരിതം ഡാറ്റാസെറ്റിൽ നിന്ന് സാമ്പിൾ ചെയ്ത് k-എണ്ണം കേന്ദ്രബിന്ദുക്കൾ തിരഞ്ഞെടുക്കുന്നു. ഇതിന് ശേഷം ഇത് ലൂപ്പ് ചെയ്യുന്നു: + 1. ഓരോ സാമ്പിളും അടുത്ത സെൻട്രോയിഡിലേക്ക് നിയോഗിക്കുന്നു. + 2. മുൻ സെൻട്രോയിഡുകൾക്ക് നിയോഗിച്ച എല്ലാ സാമ്പിളുകളുടെ ശരാശരി മൂല്യം എടുത്ത് പുതിയ സെൻട്രോയിഡുകൾ സൃഷ്ടിക്കുന്നു. + 3. പുതിയ സെൻട്രോയിഡുകളും പഴയ സെൻട്രോയിഡുകളും തമ്മിലുള്ള വ്യത്യാസം കണക്കാക്കി സെൻട്രോയിഡുകൾ സ്ഥിരതയുള്ളതാകുന്നത് വരെ ആവർത്തിക്കുന്നു. + +K-മീൻസ് ഉപയോഗിക്കുന്നതിന്റെ ഒരു ദോഷം 'k' എന്ന സെൻട്രോയിഡുകളുടെ എണ്ണം നിശ്ചയിക്കേണ്ടതായിരിക്കുന്നു എന്നതാണ്. ഭാഗ്യവശാൽ 'എൽബോ മെത്തഡ്' 'k' നുള്ള നല്ല ആരംഭ മൂല്യം കണക്കാക്കാൻ സഹായിക്കുന്നു. നിങ്ങൾക്ക് ഇത് ഒരു നിമിഷം പരീക്ഷിക്കാം. + +## മുൻകൂർ ആവശ്യകത + +ഈ പാഠത്തിലെ [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/2-K-Means/notebook.ipynb) ഫയലിൽ നിങ്ങൾ പ്രവർത്തിക്കും, ഇതിൽ നിങ്ങൾ കഴിഞ്ഞ പാഠത്തിൽ ചെയ്ത ഡാറ്റ ഇറക്കുമതി ചെയ്യലും പ്രാഥമിക ശുചീകരണവും ഉൾക്കൊള്ളുന്നു. + +## അഭ്യാസം - തയ്യാറെടുപ്പ് + +പാട്ടുകളുടെ ഡാറ്റ വീണ്ടും പരിശോധിച്ച് തുടങ്ങുക. + +1. ഓരോ കോളത്തിനും `boxplot()` വിളിച്ച് ഒരു ബോക്സ്‌പ്ലോട്ട് സൃഷ്ടിക്കുക: + + ```python + plt.figure(figsize=(20,20), dpi=200) + + plt.subplot(4,3,1) + sns.boxplot(x = 'popularity', data = df) + + plt.subplot(4,3,2) + sns.boxplot(x = 'acousticness', data = df) + + plt.subplot(4,3,3) + sns.boxplot(x = 'energy', data = df) + + plt.subplot(4,3,4) + sns.boxplot(x = 'instrumentalness', data = df) + + plt.subplot(4,3,5) + sns.boxplot(x = 'liveness', data = df) + + plt.subplot(4,3,6) + sns.boxplot(x = 'loudness', data = df) + + plt.subplot(4,3,7) + sns.boxplot(x = 'speechiness', data = df) + + plt.subplot(4,3,8) + sns.boxplot(x = 'tempo', data = df) + + plt.subplot(4,3,9) + sns.boxplot(x = 'time_signature', data = df) + + plt.subplot(4,3,10) + sns.boxplot(x = 'danceability', data = df) + + plt.subplot(4,3,11) + sns.boxplot(x = 'length', data = df) + + plt.subplot(4,3,12) + sns.boxplot(x = 'release_date', data = df) + ``` + + ഈ ഡാറ്റ കുറച്ച് ശബ്ദമുള്ളതാണ്: ഓരോ കോളവും ബോക്സ്‌പ്ലോട്ട് ആയി നിരീക്ഷിച്ചാൽ, ഔട്ട്‌ലൈയർമാർ കാണാം. + + ![outliers](../../../../translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.ml.png) + +ഡാറ്റാസെറ്റ് പരിശോധിച്ച് ഈ ഔട്ട്‌ലൈയർമാർ നീക്കം ചെയ്യാം, പക്ഷേ അത് ഡാറ്റ വളരെ കുറവാക്കും. + +1. ഇപ്പോൾ, ക്ലസ്റ്ററിംഗ് അഭ്യാസത്തിനായി നിങ്ങൾ ഉപയോഗിക്കാനിരിക്കുന്ന കോളങ്ങൾ തിരഞ്ഞെടുക്കുക. സമാനമായ പരിധികളുള്ളവ തിരഞ്ഞെടുക്കുക, കൂടാതെ `artist_top_genre` കോളം സംഖ്യാത്മക ഡാറ്റയായി എൻകോഡ് ചെയ്യുക: + + ```python + from sklearn.preprocessing import LabelEncoder + le = LabelEncoder() + + X = df.loc[:, ('artist_top_genre','popularity','danceability','acousticness','loudness','energy')] + + y = df['artist_top_genre'] + + X['artist_top_genre'] = le.fit_transform(X['artist_top_genre']) + + y = le.transform(y) + ``` + +1. ഇപ്പോൾ നിങ്ങൾ എത്ര ക്ലസ്റ്ററുകൾ ലക്ഷ്യമിടണമെന്ന് തിരഞ്ഞെടുക്കണം. ഡാറ്റാസെറ്റിൽ നിന്നുള്ള 3 പാട്ട് ജാനറുകൾ ഉണ്ട് എന്ന് നിങ്ങൾ അറിയാം, അതിനാൽ 3 പരീക്ഷിക്കാം: + + ```python + from sklearn.cluster import KMeans + + nclusters = 3 + seed = 0 + + km = KMeans(n_clusters=nclusters, random_state=seed) + km.fit(X) + + # ഓരോ ഡാറ്റാ പോയിന്റിനും ക്ലസ്റ്റർ പ്രവചിക്കുക + + y_cluster_kmeans = km.predict(X) + y_cluster_kmeans + ``` + +ഡാറ്റാഫ്രെയിമിലെ ഓരോ വരിയ്ക്കും പ്രവചിച്ച ക്ലസ്റ്ററുകൾ (0, 1, അല്ലെങ്കിൽ 2) ഉള്ള ഒരു അറേ പ്രിന്റ് ചെയ്യപ്പെടുന്നു. + +1. ഈ അറേ ഉപയോഗിച്ച് 'സിലഹ്വെറ്റ് സ്കോർ' കണക്കാക്കുക: + + ```python + from sklearn import metrics + score = metrics.silhouette_score(X, y_cluster_kmeans) + score + ``` + +## സിലഹ്വെറ്റ് സ്കോർ + +1-നോട് അടുത്ത സിലഹ്വെറ്റ് സ്കോർ നോക്കുക. ഈ സ്കോർ -1 മുതൽ 1 വരെ വ്യത്യാസപ്പെടുന്നു, സ്കോർ 1 ആണെങ്കിൽ, ക്ലസ്റ്റർ സാന്ദ്രവും മറ്റുള്ള ക്ലസ്റ്ററുകളിൽ നിന്ന് നന്നായി വേർതിരിച്ചിട്ടുള്ളതും ആണ്. 0-നോട് അടുത്ത മൂല്യം സമീപമുള്ള ക്ലസ്റ്ററുകളുടെ തീരുമാന അതിരിനോട് വളരെ അടുത്ത സാമ്പിളുകളുള്ള ഒവർലാപ്പിംഗ് ക്ലസ്റ്ററുകളെ പ്രതിനിധീകരിക്കുന്നു. [(മൂലം)](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam) + +നമ്മുടെ സ്കോർ **.53** ആണ്, അതായത് മധ്യത്തിൽ. ഇത് നമ്മുടെ ഡാറ്റ ഈ തരത്തിലുള്ള ക്ലസ്റ്ററിംഗിനായി പ്രത്യേകിച്ച് അനുയോജ്യമല്ലെന്ന് സൂചിപ്പിക്കുന്നു, പക്ഷേ നാം തുടരാം. + +### അഭ്യാസം - മോഡൽ നിർമ്മിക്കുക + +1. `KMeans` ഇറക്കുമതി ചെയ്ത് ക്ലസ്റ്ററിംഗ് പ്രക്രിയ ആരംഭിക്കുക. + + ```python + from sklearn.cluster import KMeans + wcss = [] + + for i in range(1, 11): + kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42) + kmeans.fit(X) + wcss.append(kmeans.inertia_) + + ``` + + ഇവിടെ ചില ഭാഗങ്ങൾ വിശദീകരിക്കേണ്ടതാണ്. + + > 🎓 range: ക്ലസ്റ്ററിംഗ് പ്രക്രിയയുടെ ആവർത്തനങ്ങൾ + + > 🎓 random_state: "സെൻട്രോയിഡ് ആരംഭത്തിനുള്ള റാൻഡം നമ്പർ ജനറേഷൻ നിർണ്ണയിക്കുന്നു." [മൂലം](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans) + + > 🎓 WCSS: "within-cluster sums of squares" ക്ലസ്റ്ററിലെ എല്ലാ പോയിന്റുകളുടെയും സെൻട്രോയിഡിനോട് ഉള്ള ചതുരശ്ര ശരാശരി ദൂരം അളക്കുന്നു. [മൂലം](https://medium.com/@ODSC/unsupervised-learning-evaluating-clusters-bd47eed175ce). + + > 🎓 Inertia: K-മീൻസ് ആൽഗോരിതങ്ങൾ 'inertia' കുറയ്ക്കാൻ സെൻട്രോയിഡുകൾ തിരഞ്ഞെടുക്കാൻ ശ്രമിക്കുന്നു, "ക്ലസ്റ്ററുകൾ 얼마나 ആന്തരികമായി ഏകോപിതമാണെന്ന് അളക്കുന്ന ഒരു മാനദണ്ഡം." [മൂലം](https://scikit-learn.org/stable/modules/clustering.html). ഓരോ ആവർത്തനത്തിലും ഈ മൂല്യം wcss വേരിയബിളിൽ ചേർക്കുന്നു. + + > 🎓 k-means++: [Scikit-learn](https://scikit-learn.org/stable/modules/clustering.html#k-means) ൽ 'k-means++' ഓപ്റ്റിമൈസേഷൻ ഉപയോഗിക്കാം, ഇത് "സെൻട്രോയിഡുകൾ സാധാരണയായി പരസ്പരം ദൂരമുള്ളവയായി ആരംഭിക്കുന്നു, ഇത് റാൻഡം ആരംഭത്തേക്കാൾ നല്ല ഫലങ്ങൾ നൽകാൻ സാധ്യതയുണ്ട്." + +### എൽബോ മെത്തഡ് + +മുൻപ്, 3 പാട്ട് ജാനറുകൾ ലക്ഷ്യമിട്ടതിനാൽ 3 ക്ലസ്റ്ററുകൾ തിരഞ്ഞെടുക്കണമെന്ന് നിങ്ങൾ കരുതിയിരുന്നു. പക്ഷേ അതെല്ലാം ശരിയാണോ? + +1. 'എൽബോ മെത്തഡ്' ഉപയോഗിച്ച് ഉറപ്പാക്കുക. + + ```python + plt.figure(figsize=(10,5)) + sns.lineplot(x=range(1, 11), y=wcss, marker='o', color='red') + plt.title('Elbow') + plt.xlabel('Number of clusters') + plt.ylabel('WCSS') + plt.show() + ``` + + മുൻപത്തെ ഘട്ടത്തിൽ നിർമ്മിച്ച `wcss` വേരിയബിൾ ഉപയോഗിച്ച് എൽബോയിൽ 'വളവ്' എവിടെയാണ് എന്ന് കാണിക്കുന്ന ചാർട്ട് സൃഷ്ടിക്കുക, ഇത് ഏറ്റവും അനുയോജ്യമായ ക്ലസ്റ്റർ എണ്ണം സൂചിപ്പിക്കുന്നു. അത് **3** ആകാം! + + ![elbow method](../../../../translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.ml.png) + +## അഭ്യാസം - ക്ലസ്റ്ററുകൾ പ്രദർശിപ്പിക്കുക + +1. വീണ്ടും പ്രക്രിയ പരീക്ഷിക്കുക, ഈ തവണ മൂന്ന് ക്ലസ്റ്ററുകൾ സജ്ജമാക്കി, ക്ലസ്റ്ററുകൾ സ്കാറ്റർപ്ലോട്ട് ആയി പ്രദർശിപ്പിക്കുക: + + ```python + from sklearn.cluster import KMeans + kmeans = KMeans(n_clusters = 3) + kmeans.fit(X) + labels = kmeans.predict(X) + plt.scatter(df['popularity'],df['danceability'],c = labels) + plt.xlabel('popularity') + plt.ylabel('danceability') + plt.show() + ``` + +1. മോഡലിന്റെ കൃത്യത പരിശോധിക്കുക: + + ```python + labels = kmeans.labels_ + + correct_labels = sum(y == labels) + + print("Result: %d out of %d samples were correctly labeled." % (correct_labels, y.size)) + + print('Accuracy score: {0:0.2f}'. format(correct_labels/float(y.size))) + ``` + + ഈ മോഡലിന്റെ കൃത്യത വളരെ നല്ലതല്ല, ക്ലസ്റ്ററുകളുടെ ആകൃതി ഇതിന് കാരണം നൽകുന്നു. + + ![clusters](../../../../translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.ml.png) + + ഈ ഡാറ്റ വളരെ അസമതുലിതമാണ്, correlation കുറവാണ്, കോളം മൂല്യങ്ങൾക്കിടയിൽ വ്യത്യാസം കൂടുതലാണ്, അതിനാൽ നല്ല ക്ലസ്റ്ററിംഗ് സാധ്യമല്ല. യഥാർത്ഥത്തിൽ, രൂപപ്പെടുന്ന ക്ലസ്റ്ററുകൾ മുകളിൽ നിർവചിച്ച മൂന്ന് ജാനർ വിഭാഗങ്ങൾ മൂലം ശക്തമായി സ്വാധീനിക്കപ്പെട്ടതായിരിക്കാം. അത് ഒരു പഠന പ്രക്രിയ ആയിരുന്നു! + + Scikit-learn ഡോക്യുമെന്റേഷനിൽ, ഈ പോലുള്ള മോഡലുകൾക്ക്, ക്ലസ്റ്ററുകൾ നന്നായി വേർതിരിച്ചിട്ടില്ലാത്തതിനാൽ, 'വ്യത്യാസം' പ്രശ്നമുണ്ട്: + + ![problem models](../../../../translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.ml.png) + > Scikit-learn ഇൻഫോഗ്രാഫിക് + +## വ്യത്യാസം + +വ്യത്യാസം "ശരാശരിയിൽ നിന്നുള്ള ചതുരശ്ര വ്യത്യാസങ്ങളുടെ ശരാശരി" ആയി നിർവചിക്കുന്നു [(മൂലം)](https://www.mathsisfun.com/data/standard-deviation.html). ഈ ക്ലസ്റ്ററിംഗ് പ്രശ്നത്തിന്റെ സാന്ദർഭ്യത്തിൽ, ഡാറ്റാസെറ്റിലെ സംഖ്യകൾ ശരാശരിയിൽ നിന്ന് വളരെ വ്യത്യാസപ്പെടുന്നു എന്നർത്ഥമാണ്. + +✅ ഈ പ്രശ്നം പരിഹരിക്കാൻ നിങ്ങൾക്ക് ഉള്ള എല്ലാ മാർഗ്ഗങ്ങളെ കുറിച്ച് ചിന്തിക്കാൻ ഇത് നല്ല അവസരമാണ്. ഡാറ്റ കുറച്ച് കൂടുതൽ ക്രമീകരിക്കാമോ? വ്യത്യസ്ത കോളങ്ങൾ ഉപയോഗിക്കാമോ? വ്യത്യസ്ത ആൽഗോരിതം പരീക്ഷിക്കാമോ? സൂചന: ഡാറ്റ നോർമലൈസ് ചെയ്യാൻ [സ്കെയിലിംഗ്](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/) പരീക്ഷിച്ച് മറ്റ് കോളങ്ങൾ പരീക്ഷിക്കുക. + +> ഈ '[വ്യത്യാസം കാൽക്കുലേറ്റർ](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' പരീക്ഷിച്ച് ആശയം കൂടുതൽ മനസ്സിലാക്കുക. + +--- + +## 🚀ചലഞ്ച് + +ഈ നോട്ട്‌ബുക്കിൽ ചില സമയം ചെലവഴിക്കുക, പാരാമീറ്ററുകൾ ക്രമീകരിക്കുക. ഡാറ്റ കൂടുതൽ ശുചീകരിച്ച് (ഉദാഹരണത്തിന്, ഔട്ട്‌ലൈയർമാർ നീക്കംചെയ്ത്) മോഡലിന്റെ കൃത്യത മെച്ചപ്പെടുത്താൻ കഴിയുമോ? നിങ്ങൾക്ക് ചില ഡാറ്റ സാമ്പിളുകൾക്ക് കൂടുതൽ ഭാരമിടാൻ weights ഉപയോഗിക്കാം. മികച്ച ക്ലസ്റ്ററുകൾ സൃഷ്ടിക്കാൻ മറ്റെന്തെല്ലാം ചെയ്യാം? + +സൂചന: നിങ്ങളുടെ ഡാറ്റ സ്കെയിൽ ചെയ്യാൻ ശ്രമിക്കുക. ഡാറ്റ കോളങ്ങൾ പരസ്പരം പരിധിയിൽ കൂടുതൽ സമാനമാക്കാൻ സ്റ്റാൻഡേർഡ് സ്കെയിലിംഗ് ചേർക്കുന്ന കോഡ് നോട്ട്‌ബുക്കിൽ കമന്റ് ചെയ്തിട്ടുണ്ട്. സിലഹ്വെറ്റ് സ്കോർ കുറയുമ്പോഴും, എൽബോ ഗ്രാഫിലെ 'കിങ്ക്' മൃദുവാകുന്നതായി കാണും. കാരണം, ഡാറ്റ സ്കെയിൽ ചെയ്യാതെ വെച്ചാൽ കുറവ് വ്യത്യാസമുള്ള ഡാറ്റ കൂടുതൽ ഭാരമിടാൻ കഴിയും. ഈ പ്രശ്നത്തെ കുറിച്ച് കൂടുതൽ വായിക്കുക [ഇവിടെ](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226). + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +[K-മീൻസ് സിമുലേറ്റർ](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/) പോലുള്ള ഒരു ടൂൾ പരിശോധിക്കുക. ഈ ടൂൾ ഉപയോഗിച്ച് സാമ്പിൾ ഡാറ്റ പോയിന്റുകൾ ദൃശ്യവത്കരിച്ച് സെൻട്രോയിഡുകൾ നിർണ്ണയിക്കാം. ഡാറ്റയുടെ റാൻഡംനസ്, ക്ലസ്റ്ററുകളുടെ എണ്ണം, സെൻട്രോയിഡുകളുടെ എണ്ണം എഡിറ്റ് ചെയ്യാം. ഇത് ഡാറ്റ എങ്ങനെ ഗ്രൂപ്പുചെയ്യാമെന്ന് മനസ്സിലാക്കാൻ സഹായിക്കുന്നുണ്ടോ? + +കൂടാതെ, സ്റ്റാൻഫോർഡിന്റെ [K-മീൻസ് ഹാൻഡ്‌ഔട്ട്](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html) നോക്കുക. + +## അസൈൻമെന്റ് + +[വ്യത്യസ്ത ക്ലസ്റ്ററിംഗ് രീതികൾ പരീക്ഷിക്കുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/5-Clustering/2-K-Means/assignment.md b/translations/ml/5-Clustering/2-K-Means/assignment.md new file mode 100644 index 000000000..04f05dfb9 --- /dev/null +++ b/translations/ml/5-Clustering/2-K-Means/assignment.md @@ -0,0 +1,27 @@ + +# വ്യത്യസ്ത ക്ലസ്റ്ററിംഗ് രീതികൾ പരീക്ഷിക്കുക + +## നിർദ്ദേശങ്ങൾ + +ഈ പാഠത്തിൽ നിങ്ങൾ K-Means ക്ലസ്റ്ററിംഗ് പഠിച്ചു. ചിലപ്പോൾ K-Means നിങ്ങളുടെ ഡാറ്റയ്ക്ക് അനുയോജ്യമല്ല. ഈ പാഠങ്ങളിൽ നിന്നോ മറ്റെവിടെയോ നിന്നോ (നിങ്ങളുടെ ഉറവിടം ക്രെഡിറ്റ് ചെയ്യുക) ഡാറ്റ ഉപയോഗിച്ച് ഒരു നോട്ട്‌ബുക്ക് സൃഷ്ടിച്ച് K-Means ഉപയോഗിക്കാതെ വ്യത്യസ്തമായ ഒരു ക്ലസ്റ്ററിംഗ് രീതി കാണിക്കുക. നിങ്ങൾ എന്ത് പഠിച്ചു? + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണാർത്ഥം | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | --------------------------------------------------------------- | -------------------------------------------------------------------- | ---------------------------- | +| | നന്നായി രേഖപ്പെടുത്തിയ ക്ലസ്റ്ററിംഗ് മോഡലോടുകൂടിയ ഒരു നോട്ട്‌ബുക്ക് സമർപ്പിച്ചിരിക്കുന്നു | നല്ല രേഖപ്പെടുത്തലില്ലാതെ അല്ലെങ്കിൽ അപൂർണ്ണമായ ഒരു നോട്ട്‌ബുക്ക് സമർപ്പിച്ചിരിക്കുന്നു | അപൂർണ്ണമായ ജോലി സമർപ്പിച്ചിരിക്കുന്നു | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/5-Clustering/2-K-Means/notebook.ipynb b/translations/ml/5-Clustering/2-K-Means/notebook.ipynb new file mode 100644 index 000000000..815584148 --- /dev/null +++ b/translations/ml/5-Clustering/2-K-Means/notebook.ipynb @@ -0,0 +1,233 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "3e5c8ab363e8d88f566d4365efc7e0bd", + "translation_date": "2025-12-19T16:50:24+00:00", + "source_file": "5-Clustering/2-K-Means/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# സ്പോട്ടിഫൈയിൽ നിന്ന് ശേഖരിച്ച നൈജീരിയൻ സംഗീതം - ഒരു വിശകലനം\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: seaborn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.11.1)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.19.2)\n", + "Requirement already satisfied: pandas>=0.23 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.1.2)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.4.1)\n", + "Requirement already satisfied: matplotlib>=2.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (3.1.0)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2.8.0)\n", + "Requirement already satisfied: pytz>=2017.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2019.1)\n", + "Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (0.10.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (1.1.0)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (2.4.0)\n", + "Requirement already satisfied: six>=1.5 in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from python-dateutil>=2.7.3->pandas>=0.23->seaborn) (1.12.0)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib>=2.2->seaborn) (45.1.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install seaborn" + ] + }, + { + "source": [ + "കഴിഞ്ഞ പാഠത്തിൽ അവസാനിച്ചിടത്ത് നിന്ന് തുടക്കം കുറിക്കുക, ഡാറ്റ ഇറക്കുമതി ചെയ്ത് ഫിൽട്ടർ ചെയ്ത സ്ഥിതിയിൽ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "0 Sparky Mandy & The Jungle \n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "2 LITT! LITT! \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "0 Cruel Santino alternative r&b 2019 144000 48 \n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "2 AYLØ indie r&b 2018 207758 40 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "\n", + " speechiness tempo time_signature \n", + "0 0.0829 133.015 5 \n", + "1 0.3600 129.993 3 \n", + "2 0.0424 130.005 4 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
0SparkyMandy & The JungleCruel Santinoalternative r&b2019144000480.6660.85100.4200.5340000.1100-6.6990.0829133.0155
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
2LITT!LITT!AYLØindie r&b2018207758400.8360.27200.5640.0005370.1100-7.1270.0424130.0054
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
\n
" + }, + "metadata": {}, + "execution_count": 6 + } + ], + "source": [ + "\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "\n", + "df = pd.read_csv(\"../data/nigerian-songs.csv\")\n", + "df.head()" + ] + }, + { + "source": [ + "നാം മൂന്ന് ജാനറുകളിലേയ്ക്ക് മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിക്കും. ബോധ്യമായാൽ നാം മൂന്ന് ക്ലസ്റ്ററുകൾ നിർമ്മിക്കാം!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "metadata": {}, + "execution_count": 7 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n", + "df = df[(df['popularity'] > 0)]\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "5 Kasala Pioneers \n", + "6 Pull Up Everything Pretty \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "5 DRB Lasgidi nigerian pop 2020 184800 26 \n", + "6 prettyboydo nigerian pop 2018 202648 29 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "5 0.803 0.1270 0.525 0.000007 0.1290 -10.034 \n", + "6 0.818 0.4520 0.587 0.004490 0.5900 -9.840 \n", + "\n", + " speechiness tempo time_signature \n", + "1 0.3600 129.993 3 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 \n", + "5 0.1970 100.103 4 \n", + "6 0.1990 95.842 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
5KasalaPioneersDRB Lasgidinigerian pop2020184800260.8030.12700.5250.0000070.1290-10.0340.1970100.1034
6Pull UpEverything Prettyprettyboydonigerian pop2018202648290.8180.45200.5870.0044900.5900-9.8400.199095.8424
\n
" + }, + "metadata": {}, + "execution_count": 8 + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/5-Clustering/2-K-Means/solution/Julia/README.md b/translations/ml/5-Clustering/2-K-Means/solution/Julia/README.md new file mode 100644 index 000000000..9d122b6d4 --- /dev/null +++ b/translations/ml/5-Clustering/2-K-Means/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ഇത് ഒരു താൽക്കാലിക പ്ലേസ്ഹോൾഡർ ആണ് + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb b/translations/ml/5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb new file mode 100644 index 000000000..998b6c8b7 --- /dev/null +++ b/translations/ml/5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb @@ -0,0 +1,642 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "anaconda-cloud": "", + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "3.4.1" + }, + "colab": { + "name": "lesson_14.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "coopTranslator": { + "original_hash": "ad65fb4aad0a156b42216e4929f490fc", + "translation_date": "2025-12-19T16:55:31+00:00", + "source_file": "5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb", + "language_code": "ml" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "GULATlQXLXyR" + }, + "source": [ + "## R ഉം Tidy ഡാറ്റ സിദ്ധാന്തങ്ങളും ഉപയോഗിച്ച് K-Means ക്ലസ്റ്ററിംഗ് അന്വേഷിക്കുക.\n", + "\n", + "### [**പ്രീ-ലെക്ചർ ക്വിസ്**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/29/)\n", + "\n", + "ഈ പാഠത്തിൽ, Tidymodels പാക്കേജ് ഉൾപ്പെടെ R ഇക്കോസിസ്റ്റത്തിലെ മറ്റ് പാക്കേജുകളും (നാം അവരെ സുഹൃത്തുക്കൾ 🧑‍🤝‍🧑 എന്ന് വിളിക്കും) ഉപയോഗിച്ച് ക്ലസ്റ്ററുകൾ സൃഷ്ടിക്കുന്നതെങ്ങനെ എന്ന് നിങ്ങൾ പഠിക്കും, കൂടാതെ നിങ്ങൾ മുമ്പ് ഇറക്കുമതി ചെയ്ത നൈജീരിയൻ സംഗീത ഡാറ്റാസെറ്റും. ക്ലസ്റ്ററിംഗിനുള്ള K-Means ന്റെ അടിസ്ഥാനങ്ങൾ ഞങ്ങൾ ഉൾക്കൊള്ളും. മുമ്പത്തെ പാഠത്തിൽ നിങ്ങൾ പഠിച്ചതുപോലെ, ക്ലസ്റ്ററുകളുമായി പ്രവർത്തിക്കാൻ നിരവധി മാർഗ്ഗങ്ങളുണ്ട്, നിങ്ങൾ ഉപയോഗിക്കുന്ന രീതി നിങ്ങളുടെ ഡാറ്റയെ ആശ്രയിച്ചിരിക്കും. ഏറ്റവും സാധാരണമായ ക്ലസ്റ്ററിംഗ് സാങ്കേതികവിദ്യയായ K-Means ഞങ്ങൾ പരീക്ഷിക്കും. തുടങ്ങാം!\n", + "\n", + "നിങ്ങൾ പഠിക്കാനിരിക്കുന്ന പദങ്ങൾ:\n", + "\n", + "- സിലഹ്വറ്റ് സ്കോറിംഗ്\n", + "\n", + "- എൽബോ മെത്തഡ്\n", + "\n", + "- ഇൻർഷ്യ\n", + "\n", + "- വ്യത്യാസം\n", + "\n", + "### **പരിചയം**\n", + "\n", + "[K-Means ക്ലസ്റ്ററിംഗ്](https://wikipedia.org/wiki/K-means_clustering) സിഗ്നൽ പ്രോസസ്സിംഗ് മേഖലയിലെ ഒരു രീതി ആണ്. ഇത് ഡാറ്റയുടെ സവിശേഷതകളിലെ സമാനതകളെ അടിസ്ഥാനമാക്കി `k ക്ലസ്റ്ററുകൾ` ആയി ഡാറ്റ ഗ്രൂപ്പുകൾ വിഭജിക്കാൻ ഉപയോഗിക്കുന്നു.\n", + "\n", + "ക്ലസ്റ്ററുകൾ [Voronoi ഡയഗ്രാമുകൾ](https://wikipedia.org/wiki/Voronoi_diagram) ആയി ദൃശ്യവത്കരിക്കാം, അവയിൽ ഒരു പോയിന്റ് (അഥവാ 'സീഡ്') അതിന്റെ അനുബന്ധ പ്രദേശവും ഉൾപ്പെടുന്നു.\n", + "\n", + "

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

ജെൻ ലൂപ്പർ ഒരുക്കിയ ഇൻഫോഗ്രാഫിക്
\n", + "\n", + "\n", + "K-Means ക്ലസ്റ്ററിംഗിന് താഴെപ്പറയുന്ന ഘട്ടങ്ങൾ ഉണ്ട്:\n", + "\n", + "1. ഡാറ്റ സയന്റിസ്റ്റ് സൃഷ്ടിക്കേണ്ട ക്ലസ്റ്ററുകളുടെ ആഗ്രഹിച്ച എണ്ണം നിർദ്ദേശിക്കുന്നു.\n", + "\n", + "2. തുടർന്ന്, ആൽഗോരിതം ഡാറ്റാസെറ്റിൽ നിന്ന് യാദൃച്ഛികമായി K നിരീക്ഷണങ്ങൾ തിരഞ്ഞെടുക്കുന്നു, അവ ക്ലസ്റ്ററുകളുടെ പ്രാരംഭ കേന്ദ്രങ്ങളായി (അഥവാ സെൻട്രോയിഡുകൾ) സേവനം ചെയ്യുന്നു.\n", + "\n", + "3. ശേഷിക്കുന്ന ഓരോ നിരീക്ഷണവും അതിന്റെ ഏറ്റവും അടുത്ത സെൻട്രോയിഡിലേക്ക് നിയോഗിക്കുന്നു.\n", + "\n", + "4. തുടർന്ന്, ഓരോ ക്ലസ്റ്ററിന്റെയും പുതിയ ശരാശരി കണക്കാക്കി സെൻട്രോയിഡ് ശരാശരിയിലേക്ക് മാറ്റുന്നു.\n", + "\n", + "5. ഇപ്പോൾ കേന്ദ്രങ്ങൾ പുനർഗണന ചെയ്തതിനുശേഷം, ഓരോ നിരീക്ഷണവും വീണ്ടും പരിശോധിച്ച് അത് മറ്റൊരു ക്ലസ്റ്ററിനോട് കൂടുതൽ അടുത്തതാണോ എന്ന് നോക്കുന്നു. അപ്ഡേറ്റുചെയ്ത ക്ലസ്റ്റർ ശരാശരികൾ ഉപയോഗിച്ച് എല്ലാ വസ്തുക്കളും വീണ്ടും നിയോഗിക്കുന്നു. ക്ലസ്റ്റർ നിയോഗവും സെൻട്രോയിഡ് അപ്ഡേറ്റും ആവർത്തിച്ച് നടത്തുന്നു, ക്ലസ്റ്റർ നിയോഗങ്ങൾ മാറാതിരിക്കാൻ (അഥവാ സമവായം നേടുമ്പോൾ) വരെ. സാധാരണയായി, ഓരോ പുതിയ ആവർത്തനവും സെൻട്രോയിഡുകളുടെ ചലനം വളരെ കുറവായപ്പോൾ ആൽഗോരിതം അവസാനിക്കുന്നു, ക്ലസ്റ്ററുകൾ സ്ഥിരമാകുന്നു.\n", + "\n", + "
\n", + "\n", + "> പ്രാരംഭ സെൻട്രോയിഡുകളായി ഉപയോഗിക്കുന്ന യാദൃച്ഛിക k നിരീക്ഷണങ്ങളുടെ കാരണം, ഓരോ പ്രക്രിയയും പ്രയോഗിക്കുമ്പോഴും നാം ചെറിയ വ്യത്യാസമുള്ള ഫലങ്ങൾ ലഭിക്കാം. ഈ കാരണത്താൽ, പല ആൽഗോരിതങ്ങളും പല *random starts* ഉപയോഗിച്ച് ഏറ്റവും കുറഞ്ഞ WCSS ഉള്ള ആവർത്തനം തിരഞ്ഞെടുക്കുന്നു. അതിനാൽ, *undesirable local optimum* ഒഴിവാക്കാൻ K-Means പല *nstart* മൂല്യങ്ങളോടും പ്രവർത്തിപ്പിക്കാൻ ശക്തമായി ശിപാർശ ചെയ്യുന്നു.\n", + "\n", + "
\n", + "\n", + "Allison Horst ന്റെ [കലാസൃഷ്ടി](https://github.com/allisonhorst/stats-illustrations) ഉപയോഗിച്ചുള്ള ഈ ചെറിയ അനിമേഷൻ ക്ലസ്റ്ററിംഗ് പ്രക്രിയ വിശദീകരിക്കുന്നു:\n", + "\n", + "

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

@allison_horst ഒരുക്കിയ കലാസൃഷ്ടി
\n", + "\n", + "\n", + "\n", + "ക്ലസ്റ്ററിംഗിൽ ഉയരുന്ന ഒരു അടിസ്ഥാന ചോദ്യമാണ്: നിങ്ങളുടെ ഡാറ്റ എത്ര ക്ലസ്റ്ററുകളായി വിഭജിക്കണമെന്ന് എങ്ങനെ അറിയാം? K-Means ഉപയോഗിക്കുന്നതിന്റെ ഒരു ദോഷം `k` എന്നത്, അഥവാ `സെൻട്രോയിഡുകളുടെ` എണ്ണം നിശ്ചയിക്കേണ്ടതായിരിക്കുന്നു എന്നതാണ്. ഭാഗ്യവശാൽ, `എൽബോ മെത്തഡ്` നല്ല ഒരു ആരംഭ മൂല്യം `k` കണക്കാക്കാൻ സഹായിക്കുന്നു. നിങ്ങൾക്ക് ഇത് ഉടൻ പരീക്ഷിക്കാം.\n", + "\n", + "### \n", + "\n", + "**ആവശ്യമായ മുൻപരിചയം**\n", + "\n", + "നാം [മുൻപത്തെ പാഠത്തിൽ](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb) നിന്നു തുടരും, അവിടെ നാം ഡാറ്റാസെറ്റ് വിശകലനം ചെയ്തു, നിരവധി ദൃശ്യവത്കരണങ്ങൾ നടത്തി, ശ്രദ്ധേയമായ നിരീക്ഷണങ്ങൾ ഫിൽട്ടർ ചെയ്തു. അത് പരിശോധിക്കാൻ മറക്കരുത്!\n", + "\n", + "ഈ മോഡ്യൂൾ പൂർത്തിയാക്കാൻ ചില പാക്കേജുകൾ ആവശ്യമാണ്. അവ ഇങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം: `install.packages(c('tidyverse', 'tidymodels', 'cluster', 'summarytools', 'plotly', 'paletteer', 'factoextra', 'patchwork'))`\n", + "\n", + "അല്ലെങ്കിൽ, താഴെ കൊടുത്തിരിക്കുന്ന സ്ക്രിപ്റ്റ് ഈ മോഡ്യൂൾ പൂർത്തിയാക്കാൻ ആവശ്യമായ പാക്കേജുകൾ നിങ്ങൾക്കുണ്ടോ എന്ന് പരിശോധിച്ച്, കുറവുണ്ടെങ്കിൽ ഇൻസ്റ്റാൾ ചെയ്യും.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ah_tBi58LXyi" + }, + "source": [ + "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n", + "\n", + "pacman::p_load('tidyverse', 'tidymodels', 'cluster', 'summarytools', 'plotly', 'paletteer', 'factoextra', 'patchwork')\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7e--UCUTLXym" + }, + "source": [ + "നമുക്ക് ഉടൻ തന്നെ ആരംഭിക്കാം!\n", + "\n", + "## 1. ഡാറ്റയുമായി ഒരു നൃത്തം: ഏറ്റവും ജനപ്രിയമായ 3 സംഗീത ശൈലികൾക്ക് കുറയ്ക്കുക\n", + "\n", + "ഇത് മുമ്പത്തെ പാഠത്തിൽ ഞങ്ങൾ ചെയ്തതിന്റെ ഒരു സംഗ്രഹമാണ്. നമുക്ക് ചില ഡാറ്റ കഷണങ്ങളാക്കി വിശകലനം ചെയ്യാം!\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Ycamx7GGLXyn" + }, + "source": [ + "# Load the core tidyverse and make it available in your current R session\n", + "library(tidyverse)\n", + "\n", + "# Import the data into a tibble\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/5-Clustering/data/nigerian-songs.csv\", show_col_types = FALSE)\n", + "\n", + "# Narrow down to top 3 popular genres\n", + "nigerian_songs <- df %>% \n", + " # Concentrate on top 3 genres\n", + " filter(artist_top_genre %in% c(\"afro dancehall\", \"afropop\",\"nigerian pop\")) %>% \n", + " # Remove unclassified observations\n", + " filter(popularity != 0)\n", + "\n", + "\n", + "\n", + "# Visualize popular genres using bar plots\n", + "theme_set(theme_light())\n", + "nigerian_songs %>%\n", + " count(artist_top_genre) %>%\n", + " ggplot(mapping = aes(x = artist_top_genre, y = n,\n", + " fill = artist_top_genre)) +\n", + " geom_col(alpha = 0.8) +\n", + " paletteer::scale_fill_paletteer_d(\"ggsci::category10_d3\") +\n", + " ggtitle(\"Top genres\") +\n", + " theme(plot.title = element_text(hjust = 0.5))\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b5h5zmkPLXyp" + }, + "source": [ + "🤩 അത് നല്ലതായി പോയി!\n", + "\n", + "## 2. കൂടുതൽ ഡാറ്റ എക്സ്പ്ലോറേഷൻ.\n", + "\n", + "ഈ ഡാറ്റ എത്ര ശുദ്ധമാണ്? ബോക്സ് പ്ലോട്ടുകൾ ഉപയോഗിച്ച് ഔട്ട്‌ലൈയർമാരെ പരിശോധിക്കാം. കുറവ് ഔട്ട്‌ലൈയർമാർ ഉള്ള സംഖ്യാത്മക കോളങ്ങളിലാണ് നാം ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നത് (നിങ്ങൾക്ക് ഔട്ട്‌ലൈയർമാരെ ശുദ്ധമാക്കാനാകുമെങ്കിലും). ബോക്സ് പ്ലോട്ടുകൾ ഡാറ്റയുടെ പരിധി കാണിക്കുകയും ഏത് കോളങ്ങൾ ഉപയോഗിക്കാമെന്ന് തിരഞ്ഞെടുക്കാൻ സഹായിക്കുകയും ചെയ്യും. ശ്രദ്ധിക്കുക, ബോക്സ് പ്ലോട്ടുകൾ വ്യത്യാസം കാണിക്കുന്നില്ല, നല്ല ക്ലസ്റ്ററബിൾ ഡാറ്റയുടെ ഒരു പ്രധാന ഘടകം. കൂടുതൽ വായനയ്ക്കായി [ഈ ചർച്ച](https://stats.stackexchange.com/questions/91536/deduce-variance-from-boxplot) കാണുക.\n", + "\n", + "[ബോക്സ് പ്ലോട്ടുകൾ](https://en.wikipedia.org/wiki/Box_plot) സംഖ്യാത്മക ഡാറ്റയുടെ വിതരണത്തെ ഗ്രാഫിക്കൽ ആയി പ്രതിപാദിക്കാൻ ഉപയോഗിക്കുന്നു, അതിനാൽ ജനപ്രിയ സംഗീത ശൈലികളോടൊപ്പം എല്ലാ സംഖ്യാത്മക കോളങ്ങളും *തിരഞ്ഞെടുക്കുന്നതിൽ* നിന്ന് തുടങ്ങാം.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "HhNreJKLLXyq" + }, + "source": [ + "# Select top genre column and all other numeric columns\n", + "df_numeric <- nigerian_songs %>% \n", + " select(artist_top_genre, where(is.numeric)) \n", + "\n", + "# Display the data\n", + "df_numeric %>% \n", + " slice_head(n = 5)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uYXrwJRaLXyq" + }, + "source": [ + "തിരഞ്ഞെടുപ്പ് സഹായിയായ `where` ഇതിനെ എളുപ്പമാക്കുന്നത് എങ്ങനെ കാണൂ 💁? ഇത്തരത്തിലുള്ള മറ്റ് ഫംഗ്ഷനുകൾ [ഇവിടെ](https://tidyselect.r-lib.org/) പരിശോധിക്കുക.\n", + "\n", + "നാം ഓരോ സംഖ്യാത്മക സവിശേഷതയ്ക്കും ഒരു ബോക്സ്‌പ്ലോട്ട് ഉണ്ടാക്കാനിരിക്കെ ലൂപ്പുകൾ ഉപയോഗിക്കുന്നത് ഒഴിവാക്കാൻ, ഡാറ്റയെ *നീളമുള്ള* ഫോർമാറ്റിലേക്ക് പുനഃസംഘടിപ്പിക്കാം, ഇത് `facets` - ഓരോ ഉപസമൂഹവും പ്രദർശിപ്പിക്കുന്ന ഉപഗ്രാഫുകൾ - ഉപയോഗിക്കാൻ സഹായിക്കും.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "gd5bR3f8LXys" + }, + "source": [ + "# Pivot data from wide to long\n", + "df_numeric_long <- df_numeric %>% \n", + " pivot_longer(!artist_top_genre, names_to = \"feature_names\", values_to = \"values\") \n", + "\n", + "# Print out data\n", + "df_numeric_long %>% \n", + " slice_head(n = 15)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-7tE1swnLXyv" + }, + "source": [ + "കൂടുതലായി! ഇപ്പോൾ കുറച്ച് `ggplots` സമയമാണ്! എങ്കിൽ ഏത് `geom` നാം ഉപയോഗിക്കും?\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "r88bIsyuLXyy" + }, + "source": [ + "# Make a box plot\n", + "df_numeric_long %>% \n", + " ggplot(mapping = aes(x = feature_names, y = values, fill = feature_names)) +\n", + " geom_boxplot() +\n", + " facet_wrap(~ feature_names, ncol = 4, scales = \"free\") +\n", + " theme(legend.position = \"none\")\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EYVyKIUELXyz" + }, + "source": [ + "Easy-gg!\n", + "\n", + "ഇപ്പോൾ നാം ഈ ഡാറ്റ കുറച്ച് ശബ്ദമുള്ളതാണെന്ന് കാണാം: ഓരോ കോളവും ബോക്സ്പ്ലോട്ടായി നിരീക്ഷിച്ചാൽ, ഔട്ട്‌ലൈയർമാർ കാണാം. നിങ്ങൾ ഡാറ്റാസെറ്റ് വഴി പോയി ഈ ഔട്ട്‌ലൈയർമാരെ നീക്കം ചെയ്യാമായിരുന്നു, പക്ഷേ അത് ഡാറ്റയെ വളരെ കുറവാക്കും.\n", + "\n", + "ഇപ്പോൾ, നമുക്ക് ക്ലസ്റ്ററിംഗ് അഭ്യാസത്തിനായി ഉപയോഗിക്കാനുള്ള കോളങ്ങൾ തിരഞ്ഞെടുക്കാം. സമാനമായ പരിധികളുള്ള സംഖ്യാത്മക കോളങ്ങൾ തിരഞ്ഞെടുക്കാം. `artist_top_genre` സംഖ്യാത്മകമായി എൻകോഡ് ചെയ്യാമായിരുന്നു, പക്ഷേ ഇപ്പോൾ അത് ഒഴിവാക്കാം.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-wkpINyZLXy0" + }, + "source": [ + "# Select variables with similar ranges\n", + "df_numeric_select <- df_numeric %>% \n", + " select(popularity, danceability, acousticness, loudness, energy) \n", + "\n", + "# Normalize data\n", + "# df_numeric_select <- scale(df_numeric_select)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "D7dLzgpqLXy1" + }, + "source": [ + "## 3. R-ൽ k-means ക്ലസ്റ്ററിംഗ് കണക്കാക്കൽ\n", + "\n", + "നാം R-ൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന `kmeans` ഫംഗ്ഷൻ ഉപയോഗിച്ച് k-means കണക്കാക്കാം, `help(\"kmeans()\")` കാണുക. `kmeans()` ഫംഗ്ഷൻ പ്രധാനമായും എല്ലാ സംഖ്യാത്മക കോളങ്ങളുള്ള ഒരു ഡാറ്റാ ഫ്രെയിം സ്വീകരിക്കുന്നു.\n", + "\n", + "k-means ക്ലസ്റ്ററിംഗ് ഉപയോഗിക്കുമ്പോൾ ആദ്യത്തെ ഘട്ടം അവസാന പരിഹാരത്തിൽ സൃഷ്ടിക്കപ്പെടുന്ന ക്ലസ്റ്ററുകളുടെ എണ്ണം (k) നിർദ്ദേശിക്കുകയാണ്. ഡാറ്റാസെറ്റിൽ നിന്ന് നാം 3 ഗാന ശൈലികൾ വേർതിരിച്ചെടുത്തതായി അറിയാം, അതിനാൽ 3 പരീക്ഷിക്കാം:\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "uC4EQ5w7LXy5" + }, + "source": [ + "set.seed(2056)\n", + "# Kmeans clustering for 3 clusters\n", + "kclust <- kmeans(\n", + " df_numeric_select,\n", + " # Specify the number of clusters\n", + " centers = 3,\n", + " # How many random initial configurations\n", + " nstart = 25\n", + ")\n", + "\n", + "# Display clustering object\n", + "kclust\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hzfhscWrLXy-" + }, + "source": [ + "kmeans ഒബ്ജക്റ്റിൽ `help(\"kmeans()\")` ൽ നന്നായി വിശദീകരിച്ചിരിക്കുന്ന നിരവധി വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു. ഇപ്പോൾ, ചിലതിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കാം. ഡാറ്റ 65, 110, 111 എന്ന വലുപ്പമുള്ള 3 ക്ലസ്റ്ററുകളായി ഗ്രൂപ്പുചെയ്തിട്ടുണ്ടെന്ന് കാണാം. ഔട്ട്പുട്ടിൽ 5 വ്യത്യസ്ത വേരിയബിളുകളിലായി 3 ഗ്രൂപ്പുകളുടെ ക്ലസ്റ്റർ സെന്ററുകളും (മീനുകളും) ഉൾപ്പെടുന്നു.\n", + "\n", + "ക്ലസ്റ്ററിംഗ് വെക്ടർ ഓരോ നിരീക്ഷണത്തിന്റെയും ക്ലസ്റ്റർ നിയോഗമാണ്. ക്ലസ്റ്റർ നിയോഗം മൗലിക ഡാറ്റാ സെറ്റിൽ ചേർക്കാൻ `augment` ഫംഗ്ഷൻ ഉപയോഗിക്കാം.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0XwwpFGQLXy_" + }, + "source": [ + "# Add predicted cluster assignment to data set\n", + "augment(kclust, df_numeric_select) %>% \n", + " relocate(.cluster) %>% \n", + " slice_head(n = 10)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NXIVXXACLXzA" + }, + "source": [ + "Perfect, നാം ഇപ്പോൾ നമ്മുടെ ഡാറ്റാ സെറ്റ് 3 ഗ്രൂപ്പുകളായി വിഭജിച്ചു. അതിനാൽ, നമ്മുടെ ക്ലസ്റ്ററിംഗ് എത്രത്തോളം നല്ലതാണ് 🤷? നമുക്ക് `Silhouette score` നോക്കാം\n", + "\n", + "### **Silhouette score**\n", + "\n", + "[Silhouette analysis](https://en.wikipedia.org/wiki/Silhouette_(clustering)) ഉപയോഗിച്ച് ഫലമായ ക്ലസ്റ്ററുകൾ തമ്മിലുള്ള വേർതിരിവ് അളക്കാൻ കഴിയും. ഈ സ്കോർ -1 മുതൽ 1 വരെ മാറുന്നു, സ്കോർ 1-ന് അടുത്ത് ആണെങ്കിൽ, ക്ലസ്റ്റർ സാന്ദ്രവും മറ്റ് ക്ലസ്റ്ററുകളിൽ നിന്ന് നന്നായി വേർതിരിച്ചുമാണ്. 0-ന് അടുത്തുള്ള മൂല്യം ക്ലസ്റ്ററുകൾ ഒതുക്കിയിരിക്കുന്നതും, സാമ്പിളുകൾ അടുത്തുള്ള ക്ലസ്റ്ററുകളുടെ തീരുമാന അതിരിനോട് വളരെ അടുത്തുള്ളതുമാണ് സൂചിപ്പിക്കുന്നത്.[source](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam).\n", + "\n", + "സാധാരണ silhouette രീതി വ്യത്യസ്ത *k* മൂല്യങ്ങൾക്ക് നിരീക്ഷണങ്ങളുടെ ശരാശരി silhouette കണക്കാക്കുന്നു. ഉയർന്ന ശരാശരി silhouette സ്കോർ നല്ല ക്ലസ്റ്ററിംഗ് സൂചിപ്പിക്കുന്നു.\n", + "\n", + "`silhouette` ഫംഗ്ഷൻ ക്ലസ്റ്റർ പാക്കേജിൽ ശരാശരി silhouette വീതി കണക്കാക്കാൻ ഉപയോഗിക്കുന്നു.\n", + "\n", + "> silhouette ഏതെങ്കിലും [distance](https://en.wikipedia.org/wiki/Distance \"Distance\") മെട്രിക് ഉപയോഗിച്ച് കണക്കാക്കാം, ഉദാഹരണത്തിന് [Euclidean distance](https://en.wikipedia.org/wiki/Euclidean_distance \"Euclidean distance\") അല്ലെങ്കിൽ [Manhattan distance](https://en.wikipedia.org/wiki/Manhattan_distance \"Manhattan distance\") എന്നവ, ഞങ്ങൾ [മുൻപത്തെ പാഠത്തിൽ](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb) ചർച്ച ചെയ്തതുപോലെ.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Jn0McL28LXzB" + }, + "source": [ + "# Load cluster package\n", + "library(cluster)\n", + "\n", + "# Compute average silhouette score\n", + "ss <- silhouette(kclust$cluster,\n", + " # Compute euclidean distance\n", + " dist = dist(df_numeric_select))\n", + "mean(ss[, 3])\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QyQRn97nLXzC" + }, + "source": [ + "നമ്മുടെ സ്കോർ **.549** ആണ്, അതായത് മധ്യത്തിൽ തന്നെ. ഇത് സൂചിപ്പിക്കുന്നത് നമ്മുടെ ഡാറ്റ ഈ തരത്തിലുള്ള ക്ലസ്റ്ററിംഗിന് പ്രത്യേകിച്ച് അനുയോജ്യമായതല്ല എന്നതാണ്. നമുക്ക് ഈ സംശയം ദൃശ്യമായി സ്ഥിരീകരിക്കാമോ എന്ന് നോക്കാം. [factoextra പാക്കേജ്](https://rpkgs.datanovia.com/factoextra/index.html) ക്ലസ്റ്ററിംഗ് ദൃശ്യവത്കരിക്കാൻ (`fviz_cluster()`) ഫംഗ്ഷനുകൾ നൽകുന്നു.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "7a6Km1_FLXzD" + }, + "source": [ + "library(factoextra)\n", + "\n", + "# Visualize clustering results\n", + "fviz_cluster(kclust, df_numeric_select)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IBwCWt-0LXzD" + }, + "source": [ + "ക്ലസ്റ്ററുകളിൽ ഉള്ള ഓവർലാപ്പ് നമ്മുടെ ഡാറ്റ ഈ തരത്തിലുള്ള ക്ലസ്റ്ററിംഗിന് പ്രത്യേകിച്ച് അനുയോജ്യമല്ലെന്ന് സൂചിപ്പിക്കുന്നു, പക്ഷേ നമുക്ക് തുടരണം.\n", + "\n", + "## 4. ഏറ്റവും അനുയോജ്യമായ ക്ലസ്റ്ററുകൾ നിർണ്ണയിക്കൽ\n", + "\n", + "K-മീൻസ് ക്ലസ്റ്ററിംഗിൽ സാധാരണയായി ഉയരുന്ന ഒരു അടിസ്ഥാന ചോദ്യമാണ് - അറിയപ്പെടാത്ത ക്ലാസ് ലേബലുകൾ ഇല്ലാതെ, നിങ്ങളുടെ ഡാറ്റ എത്ര ക്ലസ്റ്ററുകളായി വേർതിരിക്കണമെന്ന് നിങ്ങൾ എങ്ങനെ അറിയും?\n", + "\n", + "നാം കണ്ടെത്താൻ ശ്രമിക്കാവുന്ന ഒരു മാർഗം ഡാറ്റ സാമ്പിൾ ഉപയോഗിച്ച് ക്ലസ്റ്ററുകളുടെ എണ്ണം ക്രമമായി വർദ്ധിപ്പിച്ച് (ഉദാ: 1-10 വരെ) `ക്ലസ്റ്ററിംഗ് മോഡലുകളുടെ ഒരു പരമ്പര സൃഷ്ടിക്കുക` എന്നതാണ്, കൂടാതെ **സിലഹ്വെറ്റ് സ്കോർ** പോലുള്ള ക്ലസ്റ്ററിംഗ് മെട്രിക്കുകൾ വിലയിരുത്തുക.\n", + "\n", + "വിവിധ *k* മൂല്യങ്ങൾക്ക് ക്ലസ്റ്ററിംഗ് ആൽഗോരിതം കണക്കാക്കി **Within Cluster Sum of Squares** (WCSS) വിലയിരുത്തി ഏറ്റവും അനുയോജ്യമായ ക്ലസ്റ്ററുകളുടെ എണ്ണം നമുക്ക് നിർണ്ണയിക്കാം. മൊത്തം ക്ലസ്റ്റർ ഉള്ളിലെ സ്ക്വയർ സമാഹാരം (WCSS) ക്ലസ്റ്ററിംഗിന്റെ സാന്ദ്രത അളക്കുന്നു, ഇത് όσο ചെറുതായിരിക്കും, ഡാറ്റ പോയിന്റുകൾ തമ്മിലുള്ള ദൂരം കുറവായിരിക്കും എന്ന് അർത്ഥം.\n", + "\n", + "1 മുതൽ 10 വരെ വ്യത്യസ്ത `k` തിരഞ്ഞെടുപ്പുകളുടെ ഈ ക്ലസ്റ്ററിംഗിൽ ഉള്ള ഫലങ്ങൾ നമുക്ക് പരിശോധിക്കാം.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "hSeIiylDLXzE" + }, + "source": [ + "# Create a series of clustering models\n", + "kclusts <- tibble(k = 1:10) %>% \n", + " # Perform kmeans clustering for 1,2,3 ... ,10 clusters\n", + " mutate(model = map(k, ~ kmeans(df_numeric_select, centers = .x, nstart = 25)),\n", + " # Farm out clustering metrics eg WCSS\n", + " glanced = map(model, ~ glance(.x))) %>% \n", + " unnest(cols = glanced)\n", + " \n", + "\n", + "# View clustering rsulsts\n", + "kclusts\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "m7rS2U1eLXzE" + }, + "source": [ + "ഇപ്പോൾ ഓരോ ക്ലസ്റ്ററിംഗ് ആൽഗോറിതത്തിനും സെന്റർ *k* ഉള്ള മൊത്തം ക്ലസ്റ്റർ-അകത്ത് സ്ക്വയർസിന്റെ സംഖ്യ (tot.withinss) ലഭിച്ചതിനുശേഷം, ഏറ്റവും അനുയോജ്യമായ ക്ലസ്റ്ററുകളുടെ എണ്ണം കണ്ടെത്താൻ [എൽബോ മെത്തഡ്](https://en.wikipedia.org/wiki/Elbow_method_(clustering)) ഉപയോഗിക്കുന്നു. ക്ലസ്റ്ററുകളുടെ എണ്ണത്തിന്റെ ഫംഗ്ഷനായി WCSS പ്ലോട്ട് ചെയ്യുകയും, ഉപയോഗിക്കേണ്ട ക്ലസ്റ്ററുകളുടെ എണ്ണമായി [വക്രത്തിന്റെ എൽബോ](https://en.wikipedia.org/wiki/Elbow_of_the_curve \"Elbow of the curve\") തിരഞ്ഞെടുക്കുകയും ചെയ്യുന്നതാണ് ഈ രീതി.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "o_DjHGItLXzF" + }, + "source": [ + "set.seed(2056)\n", + "# Use elbow method to determine optimum number of clusters\n", + "kclusts %>% \n", + " ggplot(mapping = aes(x = k, y = tot.withinss)) +\n", + " geom_line(size = 1.2, alpha = 0.8, color = \"#FF7F0EFF\") +\n", + " geom_point(size = 2, color = \"#FF7F0EFF\")\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pLYyt5XSLXzG" + }, + "source": [ + "The plot shows a large reduction in WCSS (so greater *tightness*) as the number of clusters increases from one to two, and a further noticeable reduction from two to three clusters. After that, the reduction is less pronounced, resulting in an `elbow` 💪in the chart at around three clusters. This is a good indication that there are two to three reasonably well separated clusters of data points.\n", + "\n", + "We can now go ahead and extract the clustering model where `k = 3`:\n", + "\n", + "> `pull()`: used to extract a single column\n", + ">\n", + "> `pluck()`: used to index data structures such as lists\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "JP_JPKBILXzG" + }, + "source": [ + "# Extract k = 3 clustering\n", + "final_kmeans <- kclusts %>% \n", + " filter(k == 3) %>% \n", + " pull(model) %>% \n", + " pluck(1)\n", + "\n", + "\n", + "final_kmeans\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "l_PDTu8tLXzI" + }, + "source": [ + "ശ്രേഷ്ഠം! നമുക്ക് ലഭിച്ച ക്ലസ്റ്ററുകൾ ദൃശ്യവത്കരിക്കാം. `plotly` ഉപയോഗിച്ച് ചില ഇന്ററാക്ടിവിറ്റി വേണോ?\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "dNcleFe-LXzJ" + }, + "source": [ + "# Add predicted cluster assignment to data set\n", + "results <- augment(final_kmeans, df_numeric_select) %>% \n", + " bind_cols(df_numeric %>% select(artist_top_genre)) \n", + "\n", + "# Plot cluster assignments\n", + "clust_plt <- results %>% \n", + " ggplot(mapping = aes(x = popularity, y = danceability, color = .cluster, shape = artist_top_genre)) +\n", + " geom_point(size = 2, alpha = 0.8) +\n", + " paletteer::scale_color_paletteer_d(\"ggthemes::Tableau_10\")\n", + "\n", + "ggplotly(clust_plt)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6JUM_51VLXzK" + }, + "source": [ + "പ്രത്യേക നിറങ്ങളിൽ പ്രതിനിധീകരിച്ചിരിക്കുന്ന ഓരോ ക്ലസ്റ്ററും വ്യത്യസ്ത ആകൃതികളിൽ പ്രതിനിധീകരിച്ചിരിക്കുന്ന വ്യത്യസ്ത ജാനറുകൾ ഉണ്ടാകുമെന്ന് നമ്മൾ പ്രതീക്ഷിച്ചിരുന്നോ.\n", + "\n", + "മോഡലിന്റെ കൃത്യത നോക്കാം.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "HdIMUGq7LXzL" + }, + "source": [ + "# Assign genres to predefined integers\n", + "label_count <- results %>% \n", + " group_by(artist_top_genre) %>% \n", + " mutate(id = cur_group_id()) %>% \n", + " ungroup() %>% \n", + " summarise(correct_labels = sum(.cluster == id))\n", + "\n", + "\n", + "# Print results \n", + "cat(\"Result:\", label_count$correct_labels, \"out of\", nrow(results), \"samples were correctly labeled.\")\n", + "\n", + "cat(\"\\nAccuracy score:\", label_count$correct_labels/nrow(results))\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "C50wvaAOLXzM" + }, + "source": [ + "ഈ മോഡലിന്റെ കൃത്യത മോശമല്ല, പക്ഷേ മികച്ചതുമല്ല. ഡാറ്റ K-Means ക്ലസ്റ്ററിംഗിന് അനുയോജ്യമല്ലായിരിക്കാം. ഈ ഡാറ്റ വളരെ അസമതുലിതമാണ്, correlations വളരെ കുറവാണ്, കൂടാതെ കോളം മൂല്യങ്ങൾക്കിടയിൽ വ്യത്യാസം വളരെ കൂടുതലാണ്, അതിനാൽ നല്ല ക്ലസ്റ്ററിംഗ് സാധ്യമല്ല. വാസ്തവത്തിൽ, രൂപപ്പെടുന്ന ക്ലസ്റ്ററുകൾ മുകളിൽ നാം നിർവചിച്ച മൂന്ന് ജാനർ വിഭാഗങ്ങൾ മൂലം ശക്തമായി സ്വാധീനിക്കപ്പെട്ടതോ വക്രമായതോ ആയിരിക്കാം.\n", + "\n", + "എങ്കിലും, അത് വളരെ പഠനപ്രക്രിയ ആയിരുന്നു!\n", + "\n", + "Scikit-learn ന്റെ ഡോക്യുമെന്റേഷനിൽ, ഈ പോലുള്ള മോഡലുകൾക്ക്, ക്ലസ്റ്ററുകൾ വളരെ വ്യക്തമായി വേർതിരിക്കപ്പെട്ടിട്ടില്ലാത്തതിനാൽ, 'വ്യത്യാസം' പ്രശ്നമുണ്ടെന്ന് കാണാം:\n", + "\n", + "

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

Scikit-learn ന്റെ ഇൻഫോഗ്രാഫിക്
\n", + "\n", + "\n", + "\n", + "## **വ്യത്യാസം**\n", + "\n", + "വ്യത്യാസം എന്നത് \"Mean ൽ നിന്നുള്ള ചതുരശ്ര വ്യത്യാസങ്ങളുടെ ശരാശരി\" ആയി നിർവചിക്കപ്പെടുന്നു [source](https://www.mathsisfun.com/data/standard-deviation.html). ഈ ക്ലസ്റ്ററിംഗ് പ്രശ്നത്തിന്റെ സാന്ദർഭ്യത്തിൽ, ഇത് നമ്മുടെ ഡാറ്റാസെറ്റിലെ സംഖ്യകൾ ശരാശരിയിൽ നിന്ന് വളരെ വ്യത്യാസപ്പെടുന്ന ഡാറ്റയെ സൂചിപ്പിക്കുന്നു.\n", + "\n", + "✅ ഈ പ്രശ്നം പരിഹരിക്കാൻ നിങ്ങൾക്ക് ഉള്ള എല്ലാ മാർഗങ്ങളും ചിന്തിക്കാൻ ഇത് ഒരു മികച്ച അവസരമാണ്. ഡാറ്റ കുറച്ച് മാറ്റി നോക്കാമോ? വ്യത്യസ്ത കോളങ്ങൾ ഉപയോഗിക്കാമോ? വ്യത്യസ്ത ആൽഗോരിതം പരീക്ഷിക്കാമോ? സൂചന: [ഡാറ്റ സ്കെയിലിംഗ്](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/) ഉപയോഗിച്ച് ഡാറ്റ നോർമലൈസ് ചെയ്ത് മറ്റ് കോളങ്ങൾ പരീക്ഷിക്കുക.\n", + "\n", + "> ഈ '[വ്യത്യാസം കാൽക്കുലേറ്റർ](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' പരീക്ഷിച്ച് ആശയം കൂടുതൽ മനസ്സിലാക്കുക.\n", + "\n", + "------------------------------------------------------------------------\n", + "\n", + "## **🚀ചലഞ്ച്**\n", + "\n", + "ഈ നോട്ട്‌ബുക്കിൽ ചില സമയം ചെലവഴിക്കൂ, പാരാമീറ്ററുകൾ ക്രമീകരിച്ച് നോക്കൂ. ഡാറ്റ കൂടുതൽ ശുദ്ധമാക്കുന്നതിലൂടെ (ഉദാഹരണത്തിന്, ഔട്ട്‌ലൈയർമാർ നീക്കംചെയ്യൽ) മോഡലിന്റെ കൃത്യത മെച്ചപ്പെടുത്താൻ കഴിയുമോ? നിങ്ങൾക്ക് ഡാറ്റ സാമ്പിളുകൾക്ക് കൂടുതൽ ഭാരമിടാൻ വെയ്റ്റുകൾ ഉപയോഗിക്കാം. മികച്ച ക്ലസ്റ്ററുകൾ സൃഷ്ടിക്കാൻ മറ്റെന്തെന്ത് ചെയ്യാനാകും?\n", + "\n", + "സൂചന: നിങ്ങളുടെ ഡാറ്റ സ്കെയിൽ ചെയ്യാൻ ശ്രമിക്കുക. നോട്ട്‌ബുക്കിൽ സ്റ്റാൻഡേർഡ് സ്കെയിലിംഗ് ചേർക്കുന്ന കോഡ് കമന്റ് ചെയ്തിട്ടുണ്ട്, ഇത് ഡാറ്റ കോളങ്ങൾ പരസ്പരം പരിധിയിൽ കൂടുതൽ സമാനമാക്കുന്നു. സിലഹ്വെറ്റ് സ്കോർ കുറയുമ്പോഴും, എൽബോ ഗ്രാഫിലെ 'കിങ്ക്' മൃദുവാകുന്നത് കാണും. കാരണം, ഡാറ്റ സ്കെയിൽ ചെയ്യാതെ വെച്ചാൽ കുറവ് വ്യത്യാസമുള്ള ഡാറ്റയ്ക്ക് കൂടുതൽ ഭാരമിടാൻ അവസരം ലഭിക്കുന്നു. ഈ പ്രശ്നത്തെ കുറിച്ച് കൂടുതൽ വായിക്കുക [ഇവിടെ](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226).\n", + "\n", + "## [**പോസ്റ്റ്-ലെക്ചർ ക്വിസ്**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/30/)\n", + "\n", + "## **പരിശോധന & സ്വയം പഠനം**\n", + "\n", + "- K-Means സിമുലേറ്റർ [ഇതുപോലുള്ളത്](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/) പരിശോധിക്കുക. ഈ ഉപകരണം ഉപയോഗിച്ച് സാമ്പിൾ ഡാറ്റ പോയിന്റുകൾ ദൃശ്യവൽക്കരിച്ച് സെൻട്രോയിഡുകൾ കണ്ടെത്താം. ഡാറ്റയുടെ റാൻഡംനസ്, ക്ലസ്റ്ററുകളുടെ എണ്ണം, സെൻട്രോയിഡുകളുടെ എണ്ണം എഡിറ്റ് ചെയ്യാം. ഇത് ഡാറ്റ എങ്ങനെ ഗ്രൂപ്പുചെയ്യാമെന്ന് മനസ്സിലാക്കാൻ സഹായിക്കുന്നുണ്ടോ?\n", + "\n", + "- സ്റ്റാൻഫോർഡിൽ നിന്നുള്ള [K-Means ഹാൻഡ്‌ഔട്ട്](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html) കൂടി നോക്കുക.\n", + "\n", + "നിങ്ങളുടെ പുതിയ ക്ലസ്റ്ററിംഗ് കഴിവുകൾ K-Means ക്ലസ്റ്ററിംഗിന് അനുയോജ്യമായ ഡാറ്റാസെറ്റുകളിൽ പരീക്ഷിക്കാൻ ആഗ്രഹിക്കുന്നുവോ? ദയവായി കാണുക:\n", + "\n", + "- [Train and Evaluate Clustering Models](https://rpubs.com/eR_ic/clustering) Tidymodels ഉപയോഗിച്ച്\n", + "\n", + "- [K-means Cluster Analysis](https://uc-r.github.io/kmeans_clustering), UC ബിസിനസ് അനലിറ്റിക്സ് R പ്രോഗ്രാമിംഗ് ഗൈഡ്\n", + "\n", + "- [K-means ക്ലസ്റ്ററിംഗ് tidy data സിദ്ധാന്തങ്ങളോടെ](https://www.tidymodels.org/learn/statistics/k-means/)\n", + "\n", + "## **അസൈൻമെന്റ്**\n", + "\n", + "[വ്യത്യസ്ത ക്ലസ്റ്ററിംഗ് രീതികൾ പരീക്ഷിക്കുക](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/2-K-Means/assignment.md)\n", + "\n", + "## നന്ദി:\n", + "\n", + "[Jen Looper](https://www.twitter.com/jenlooper) ഈ മോഡ്യൂളിന്റെ ഒറിജിനൽ പൈതൺ പതിപ്പ് സൃഷ്ടിച്ചതിന് ♥️\n", + "\n", + "[`Allison Horst`](https://twitter.com/allison_horst/) R-നെ കൂടുതൽ സ്വാഗതം ചെയ്യുന്നതും ആകർഷകവുമാക്കുന്ന അത്ഭുതകരമായ ചിത്രങ്ങൾ സൃഷ്ടിച്ചതിന്. അവളുടെ [ഗാലറി](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM) സന്ദർശിക്കുക.\n", + "\n", + "സന്തോഷകരമായ പഠനം,\n", + "\n", + "[Eric](https://twitter.com/ericntay), ഗോൾഡ് മൈക്രോസോഫ്റ്റ് ലേൺ സ്റ്റുഡന്റ് അംബാസഡർ.\n", + "\n", + "

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

@allison_horst രചിച്ച ആർട്ട്‌വർക്കുകൾ
\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/ml/5-Clustering/2-K-Means/solution/notebook.ipynb b/translations/ml/5-Clustering/2-K-Means/solution/notebook.ipynb new file mode 100644 index 000000000..5c31e7532 --- /dev/null +++ b/translations/ml/5-Clustering/2-K-Means/solution/notebook.ipynb @@ -0,0 +1,554 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "e867e87e3129c8875423a82945f4ad5e", + "translation_date": "2025-12-19T16:51:37+00:00", + "source_file": "5-Clustering/2-K-Means/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# സ്പോട്ടിഫൈയിൽ നിന്ന് ശേഖരിച്ച നൈജീരിയൻ സംഗീതം - ഒരു വിശകലനം\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: seaborn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.11.1)\n", + "Requirement already satisfied: pandas>=0.23 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.1.2)\n", + "Requirement already satisfied: matplotlib>=2.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (3.1.0)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.4.1)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.19.2)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2.8.0)\n", + "Requirement already satisfied: pytz>=2017.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2019.1)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (1.1.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (0.10.0)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (2.4.0)\n", + "Requirement already satisfied: six>=1.5 in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from python-dateutil>=2.7.3->pandas>=0.23->seaborn) (1.12.0)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib>=2.2->seaborn) (45.1.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install seaborn" + ] + }, + { + "source": [ + "കഴിഞ്ഞ പാഠത്തിൽ അവസാനിച്ചിടത്ത് നിന്ന് തുടക്കം കുറിക്കുക, ഡാറ്റ ഇറക്കുമതി ചെയ്ത് ഫിൽട്ടർ ചെയ്ത സ്ഥിതിയിൽ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "0 Sparky Mandy & The Jungle \n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "2 LITT! LITT! \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "0 Cruel Santino alternative r&b 2019 144000 48 \n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "2 AYLØ indie r&b 2018 207758 40 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "\n", + " speechiness tempo time_signature \n", + "0 0.0829 133.015 5 \n", + "1 0.3600 129.993 3 \n", + "2 0.0424 130.005 4 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
0SparkyMandy & The JungleCruel Santinoalternative r&b2019144000480.6660.85100.4200.5340000.1100-6.6990.0829133.0155
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
2LITT!LITT!AYLØindie r&b2018207758400.8360.27200.5640.0005370.1100-7.1270.0424130.0054
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
\n
" + }, + "metadata": {}, + "execution_count": 11 + } + ], + "source": [ + "\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "\n", + "df = pd.read_csv(\"../../data/nigerian-songs.csv\")\n", + "df.head()" + ] + }, + { + "source": [ + "നാം മൂന്ന് ജാനറുകളിൽ മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിക്കും. ബോധ്യമായാൽ നാം മൂന്ന് ക്ലസ്റ്ററുകൾ നിർമ്മിക്കാം!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "metadata": {}, + "execution_count": 12 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n", + "df = df[(df['popularity'] > 0)]\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "5 Kasala Pioneers \n", + "6 Pull Up Everything Pretty \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "5 DRB Lasgidi nigerian pop 2020 184800 26 \n", + "6 prettyboydo nigerian pop 2018 202648 29 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "5 0.803 0.1270 0.525 0.000007 0.1290 -10.034 \n", + "6 0.818 0.4520 0.587 0.004490 0.5900 -9.840 \n", + "\n", + " speechiness tempo time_signature \n", + "1 0.3600 129.993 3 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 \n", + "5 0.1970 100.103 4 \n", + "6 0.1990 95.842 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
5KasalaPioneersDRB Lasgidinigerian pop2020184800260.8030.12700.5250.0000070.1290-10.0340.1970100.1034
6Pull UpEverything Prettyprettyboydonigerian pop2018202648290.8180.45200.5870.0044900.5900-9.8400.199095.8424
\n
" + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "df.head()" + ] + }, + { + "source": [ + "ഈ ഡാറ്റ എത്ര ശുദ്ധമാണ്? ബോക്സ് പ്ലോട്ടുകൾ ഉപയോഗിച്ച് ഔട്ട്‌ലൈയർമാർ പരിശോധിക്കുക. കുറവ് ഔട്ട്‌ലൈയർമാർ ഉള്ള കോളങ്ങളിലാണ് നാം ശ്രദ്ധ കേന്ദ്രീകരിക്കുക (നിങ്ങൾക്ക് ഔട്ട്‌ലൈയർമാർ നീക്കം ചെയ്യാമെങ്കിലും). ബോക്സ് പ്ലോട്ടുകൾ ഡാറ്റയുടെ പരിധി കാണിക്കാനും ഉപയോഗിക്കേണ്ട കോളങ്ങൾ തിരഞ്ഞെടുക്കാനും സഹായിക്കും. ശ്രദ്ധിക്കുക, ബോക്സ് പ്ലോട്ടുകൾ വ്യത്യാസം കാണിക്കുന്നില്ല, നല്ല ക്ലസ്റ്ററബിൾ ഡാറ്റയുടെ ഒരു പ്രധാന ഘടകം (https://stats.stackexchange.com/questions/91536/deduce-variance-from-boxplot)\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 14 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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AAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOTMpx5g16xWq7FcLu9dOz4+HrOZ9gQAAHj5nHmAh/iOAAAAdo1zCgCwLX53AAD7zG+dzxNUfGS5XI7z8/N71y4uLsbJyclEEwEAADwfZx7gIb4jAACAXeOcAgBsi98dAMA+81vn8yQlAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAwL/s3bFOXGcax+FvWMJqdtcYuYi3MJeQckpzEUlBJJB8AUikyAXkCtIQcQGRQApFvO7T2SVlcgVhG9NZFLMmxLNFtljHY3xsw5x3zv95JDdnBnhlffqY8838bAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAACiXF5e9j0CUJg9gq4qr5XKswEAQCWCCgAAAAAAAABiTKfT9vXXX7fpdNr3KEBB9gi6qrxWKs8GAADVCCoAAAAAAAAAiHF0dNR+/vnndnx83PcoQEH2CLqqvFYqzwYAANUIKgAAAAAAAACIcHZ21k5OTlprrZ2cnLSzs7OeJwIqsUfQVeW1Unk2AACoSFABAAAAAAAAwODNZrN2cHDQrq6uWmut/fbbb+3g4KDNZrOeJwMqsEfQVeW1Unk2AACoSlABAAAAAAAAwOA9ffq0nZ6evnbt9PS0PXv2rKeJgErsEXRVea1Ung0AAKoSVAAAAAAAAAAwaNPptB0eHs597PDwsE2n0wVPBFRij6Crymul8mwAAFCZoAIAAAAAAACAQTs6Omrn5+dzH3v+/Hk7Pj5e8ERAJfYIuqq8VirPBgAAlQkqAAAAAAAAABisX3/9tZ2cnFz7nB9++KGdnZ0taCKgEnsEXVVeK5VnAwCA6gQVAAAAAAAAAAzSbDZr3333Xbu6urr2eVdXV+3g4KDNZrMFTQZUYI+gq8prpfJsAACwDFb7HqCaV69evXHtxYsXPUzCkMxdQ25QgWU0Z+/yexJguczbt+fdBwGZnIvcLOcBQCnu6QFYUh97lvH06dN2enra6bmnp6ft2bNnbWtrq/P3B5abPYKuKq+VyrMtG+ejwIfyfgCD53x5EHxe5O1uPKgYjUYP3vGUf970z7xJFxcXb1x79OhRD5MweL+/bK39re8pAN7P7y/fuOT3JMDyu7i4aPfu3et7DBgE5yK8k/MAoC/u6QEYkK5nGdPptB0eHr7X9z48PGyTyaSNx+MPHQ9iLdu5iD2CriqvlcqzLSPno8CN8n4AQ+J8ebB8XuQPK7fwPc/e8adbEg0AAACwfJyLAAAAFHF0dNTOz8/f62ueP3/ejo+Pb2kiGLylOhexR9BV5bVSeTYAAFgWtxFUAAAAAAAAAEBvLi8v2+PHjz/oa3/88cd2eXl5wxMBldgj6KryWqk8GwAALJPbCCo23/Fncgs/EwAAAKAC5yIAAAAFrK2ttc8///yDvvaLL75oa2trNzwRRFiacxF7BF1VXiuVZwMAgGWyetPfcDab/fu6x0ej0U3/yBt1586dN659//337e7duz1Mw1C8ePGiPXr06PWLf/lrP8MAfIw5e5ffkwDLZd5r03n3QcCHcS7C/3MeAJTinh6AJfUxZxm7u7vtp59+aufn551/3v3799vOzs57zQj8YdnORewRdFV5rVSebRk5HwU+lPcDGDzny4Pg8yJvd+NBxbJbWXnzP+24e/du29jY6GEaBq3YYRFAJ3P2Lr8nAZbfvPsgIJNzkQVwHgD0xT09AAPS9SxjPB63vb299s0333T+3nt7e208Hn/oaMASsUfQVeW1Unm2ZeR8FLhR3g9gSJwvD5bPi/zB3wIAAAAAAAAAg7S1tdUmk0mn504mk/bw4cNbngioxB5BV5XXSuXZAABgGQgqAAAAAAAAABik0WjU9vf32+rq6rXPW11dbfv7+23kX5GFKPYIuqq8VirPBgAAy0BQAQAAAAAAAMBgbW5utu3t7Wuf8+WXX7bNzc0FTQRUYo+gq8prpfJsAABQnaACAAAAAAAAgEHb3d1tn3766dzH7t+/33Z2dhY8EVCJPYKuKq+VyrMBAEBlggoAAAAAAAAABm08Hre9vb25j+3t7bXxeLzgiYBK7BF0VXmtVJ4NAAAqE1QAAAAAAAAAMHhbW1ttMpm8dm0ymbSHDx/2NBFQiT2CriqvlcqzAQBAVYIKAAAAAAAAAAZvNBq1/f39trq62lpr7ZNPPmlfffVVG41GPU8GVGCPoKvKa6XybAAAUJWgAgAAAAAAAIAIm5ubbXt7u7XW2vb2dnvw4EHPEwGV2CPoqvJaqTwbAABUJKgAAAAAAAAAIMbu7m777LPP2s7OTt+jAAXZI+iq8lqpPBsAAFSz2vcAAAAAAAAAALAo4/G4ffvtt21tba3vUYCC7BF0VXmtVJ4NAACq8T9UAAAAAAAAABDFB0yB69gj6KryWqk8GwAAVCKoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAKrtqYAAACAASURBVAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDirfQ9Qzfr6envy5Mkb1wAAAIbAPQ9wHXsEAABQjfsUAGBRvO4AAIbMa523E1T8ycrKStvY2Oh7DAAAgFvhnge4jj0CAACoxn0KALAoXncAAEPmtc7brfQ9AAAAAAAAAAAAAAAAwKIJKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAA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AAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMiZTz3Aulkulx+dvXnzZjx//nzMZvoTAAAAYHstl8uxWCyune3t7dmJAHwmn68AAAAA28W+B4BN47vr0wQVN1xcXHx0dnx8PE5OTsb+/v4EEwEAAACsxmKxGEdHR9fO7EQAPp/PVwAAAIDtYt8DwKbx3fVpkhIAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAPibvfuJjeuq/wZ87Lj5ya/SNEZq+6LWYovUIL1ITXYNKxYsQIioiaNEqhDQFJImFFg6RaLuFikhEW1ZISVK0qqoArGhK9JVky4imggQC6SGqmoiZJpatX6uY78bbDnj8Z07M/fM3Lnf55EQ9vjc8+/eOb33jD8xAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQEVJH330UfrHP/6RlpaW0sLCwvrrCwsLaWlpKS0tLa2/tvZ962vtbCy3VZnW8v0oe3y/7Qyr7rrJMdatrqvWtiLNM0TlfQ5EYb3Lx9wCADRT0X1eu591W77b9te+n5+f37L8Vsd02mevuu/dau1n0++xo4wzl17nzXx3VsUc1WWec/UjR70bPzMdRXU550A9WSMgJu/9wSrz+3WDOied2nFtAECzCVSU9MMf/jD94Ac/SN/97nfTgQMH0vz8fJqfn08HDhxIzz//fHrhhRfS4uJiWlxcTC+88EI6efLkfa/99Kc/TYuLi/fVuVb2hRdeSPPz823LtJbvVKZI2eP7bWdYdddNjrFurHOrr3O1DdSL9zkQhfUuH3MLANBMRfd57X7Wbflu21/7/p///Gfav39/+uijjzaVX9snbz1m4775IPrerdZ+ltnnH2Xtzgvl9XpNenbrrIo5qss85+pHjnrXPifdKixXd3U550A9WSMgJu/9wWrdD+j2ub/qvhS149oAgOYTqOjShx9+mD777LN06tSpNDs7mz777LP097//Pd28eTNduHAhnT9/Pt28eTP99a9/ve+1999/P124cOG+utbK3rx5M83OzrYt01q+U5kiZY/vt51h1V03Oca6sc6tvs7VNlAv3udAFNa7fMwtAEAzFd3ntftZt+W7bX/t+x/96EdpZWUlnThxYlP5tX3y1mM27psPou/dau1nmX3+UdbuvFBer9ekZ7fOqpijusxzrn7kqHftc9JTp05VVucg1eWcA/VkjYCYvPcHq3U/oNvn/qr7UtSOawMAmk+gokc3btxIN2/evO+1ixcvposXL2567dKlSymllC5fvpxu3bqVUkrp1q1b66+nlNbr2lhmo1u3bqXLly8XlilS9vh+26miD02QY6wb67x06dL69bPx68uXL6erV6+GmWeIKtJ6CsRmvcvH3AIANFPRfV67n3Vbvtv2N+5Vrv0rjnfu3El//OMf18tv3Ce/dOnSfT3bnlAAACAASURBVMes7Zu37oHm6Hu3Nrax1s9O+/yjrN14mzjOXHq9Jj27dVbFHNVlnnP1I0e9V69eXV8Lbty4ka5evdp3nYNUl3MO1JM1AmLy3h+s1v2Adr9fN6hz0qkd1wYAxCBQUaF79+6llZWVTa/du3cvpZTS559/ns6cOZNWVlbS6dOn11/faK3M6urq+murq6vpzJkzaXl5ecsyRcoe3287VfShCXKMtbXO5eXl9etn49eff/55mpubCzHPEFWk9RSIzXqXj7kFAGimovu8dj87ffp0On36dOnyne4Z2x2zca9yo1/+8pdpeXl50z758vJy22Na90Cr7nu3Wtto1bR77K3G27Rx5tLrNenZrbMq5qgu85yrHznqXVlZSXNzc/e9Njc3t+kz0rqqyzkH6skaATF57w/W6urqpv2A1t+vK3rur7ovRefetQEAcQhUDNi1a9fSq6++mt57773CMu+8887691euXEnXrl0rLFOk7PH9tlNFH5ogx1jb1bmVu3fvVto2UC+R1lMgNutdPuYWAKCZiu7z2v3svffe27RPXVS+0z1ju2Na9yrX3Lt3Lx0/frztPvlWx+Tse7fK7Nc26R67aLxNGmcuvV6Tnt06q2KO6jLPufqRo95XX31101p99+7d9Nprr/Vc5yDV5ZwD9WSNgJi89wfrypUrhb83l1Lxc3/VfSk6964NAIhDoKLF22+/nb2NN954o2OZc+fOpcXFxbS4uJjOnTtXWKZI2eP7baeKPjRBjrEW1VlW0+YZooq0ngKxWe/yMbcAAM1UdJ939uzZdPbs2dJ1FZXf6p6xlz3Mv/3tb12VL6OXvnerm7E24R67zHibMM5cen0G8+zWWRVzVJd5ztWPHPXOz89v+Tnn66+/nubn57uuc5Dqcs6BerJGQEze+4O1uLjY1R5FqyrPSadzPz8/79oAgEAEKlr8/ve/z95GmT95+/HHH6cLFy6k8+fPp9u3bxeWKVL2+H7bqaIPTZBjrEV1ltW0eYaoIq2nQGzWu3zMLQBAMxXd592+fTvduXOndF1F5be6Z6xiD7MKvfS9W92MtQn32GXG24Rx5tLrM5hnt86qmKO6zHOufuSod3Z2dsvPOVdWVtKpU6e6rnOQ6nLOgXqyRkBM3vuDdf78+a72KFpVeU46nfvZ2VnXBgAEIlCxwf79+4fdhftcvHgxXbp0qbDMpUuX0q1bt9r+7IMPPkiXL1/uePy7775bqtxW7RQp24de6q6bHGMtU2dZTZlniCrSegrEZr3Lx9wCADRTlXuIZbTeMw66/X70e7/by1hH+R67m/GO8jhz6fUZzLNbZ1XMUV3mOVc/ctT77rvvpps3bxaWuXHjRrp69WrpOgepLuccqCdrBMTkvT9YH3zwQcffgyujinNS5tx3uve9dOlS+vDDD/vqBwBQHwIV//Xpp5+mf//738Puxn3u3buX7t27V1hmeXk5nTlzJq2urt73+urqavrVr36VlpeXOx7/8ssvlyrXrp0i3fSh27rrJsdYy9ZZVhPmGaKKtJ4CsVnv8jG3AADNVPUeYhkb7xmH0X4/+rnf7XWso3qP3e14R3WcufT6DObZrbMq5qgu85yrHznqXVlZSS+//HKp9ufm5rb8KxbDUpdzDtSTNQJi8t4frNXV1XTmzJmOvwdXRr/npKq9jOXl5fSb3/ymrzoAgPqYGHYH6uKb3/zmsLvQs2vXrqV33nkn7du3b/21K1eupGvXrpU6/u7duz23U6SbPnRbd93kGGs3dZY16vMMUUVaT4HYrHf5mFugrHa/+PTJJ58MoSeD03Z8PiAdbW3OX9OvY+qv3TVYxS+b5thDLGPtnnF1dXUo7fej1/vdfuZ6FO+xexnvKI4zl16fwTy7dVbFHNVlnnP1I0e9r776aunPE+/evZtee+219Nxzz5UqPwh1OedAPVkjICbv/cG6cuVKeu+99yqrr59zUuVeyvXr1ze9Zh+SUeBzkQbz+Qgd5PqsogkqD1SMjY093qHI/626zX5V8efEhu3cuXNpz549aXJyMi0uLqZz585lb6dIL30oW3fd5BhrHc4hUA+R1lMgNutdPuYWBmsU90U2+vTTTze99swzzwyhJ0N2739TSv9n2L2gV/f+d9NLIa9jau/TTz9NX/jCF3o+PuceYhlnz54d2X+hs9v73SrmepTusfsZ7yiNM5den8G+8pWveHbroIrn27o8I+fqR4565+fn0xtvvNFVna+//no6ePBgmpqa6uq4HOpyziGKUdsXsUZATN77g7W4uJjOnj1beb29nJNB7KXYh2Rk+VykGXw+Qg/6/ayiKcYz1Hmrw/9q989VvfLKK8PuQt8+/vjjdOHChZRSSufPn0+3b9/O3k6RXvpQtu66yTHWOpxDoB4iradAbNa7fMwtDNzI7YsAMJpy7iGWcfv27XTnzp2htd+Pbu93q5jrUbrH7me8ozTOXHp9BpudnfXs1kEVz7d1eUbO1Y8c9c7Oznb9LxWurKykU6dOdXVMLnU55xDISO2LWCMgJu/9wTp//nyW/YNezsmw91IAgPrKEagYKX/+85+H3YXKvPnmm2lhYSH97ne/y97O0tLSlj9fWlrquQ+d6q6bHGPtp85+2wbqJdJ6CsRmvcvH3AIANNMg9hCbruz9bpVzPQr32FWMdxTGmUs/83fz5s2ejosy31U839blGTlXP3LUu7Cw0PO1eePGjbSwsNDTsVWpyzkH6skaATF57w/W0tJSevPNN7PV3805sZcCABTJEaiY7vC/PRna7NnXvva1YXehMvv37087duxI3/nOd7K3s3379i1/vn379p770Knuuskx1n7q7LdtoF4iradAbNa7fMwtDMVI7YsAMJoGsYfYdGXvd6uc61G4x65ivKMwzlz6mb8nnniip+OizHcVz7d1eUbO1Y8c9e7YsaPna3P37t1px44dPR1blbqccwhmZPZFrBEQk/f+YG3fvj3t378/W/3dnBN7KQBAkYmqK1xdXf1X0c/HxsaqbrJvzz33XHrllVeG3Y2+PProo+nw4cMppZSOHDmS3n777Sx/omxjO0V66UPZuusmx1jrcA6Beoi0ngKxWe/yMbcwWKO4L7LRgw8+uOm13/72t+mhhx4aQm8G45NPPknPPPPM/S9u+5/hdIZqtDl/Tb+Oqb92a027NbcbOfcQy3jkkUfS6upqunPnzlDa70e397tVzPUo3WP3M95RGmcuvT6Dzc3NpaNHj3p2K1DF821dnpFz9SNHvXNzc2n//v1pZWWldJ3j4+PppZdeKl0+p7qcc4hi1PZFrBEQk/f+YB05ciT96U9/qnz/oJdzMoi9FPuQjAKfizSYz0foIMdnFU1ReaBiFM3MzIx8oOLYsWNpcnIypZTS5ORkOnbsWPr5z3+etZ0ivfShbN11k2OsdTiHQD1EWk+B2Kx3+ZhboBvj45v/mOlDDz2Udu3aNYTeDFHNfsGDLrU5fyGvY2qv3ZrbjZx7iGUcP348ra6uDq39fnR7v1vFXI/SPXY/4x2lcebS6zPY1NSUZ7cOqni+rcszcq5+5Kh3amoqPf300+ny5cul6zxw4ECampoqXT6nupxzoJ6sERCT9/5gTU5OpuPHj1e+f9DLORnEXop9SEaWz0Wawecj9KDfzyqawiz81x/+8Idhd6Fne/bsSU899dR9r+3bty/t2VPur2Xu3Lmz53aKdNOHbuuumxxj7abOskZ9niGqSOspEJv1Lh9zCwDQTDn2EMtYu2ccVvv96PV+t5+xjuI9di/jHcVx5tLrM5hnt86qmKO6zHOufuSo9+jRo6U/T9y5c2d69tlnS5UdlLqcc6CerBEQk/f+YO3bty89+eSTldXXzzmpci/jq1/9aiX1AADDJ1DxXw8++GB6+OGHh92N+2zbti1t27atsMzExEQ6ceLEpj+NOTY2lk6cOJEmJor/CMnExESanZ0tVa5dO0W66UO3dddNjrGWrbOsJswzRBVpPQVis97lY24BAJqp6j3EMjbeMw6j/X70c7/b61hH9R672/GO6jhz6fUZzLNbZ1XMUV3mOVc/ctQ7Pj6eZmdnS7U/Oztbu3/ZsC7nHKgnawTE5L0/WGNjY+nkyZMdfw+ujH7PSVV7GRMTE+n73/9+X3UAAPVRr92sIXvjjTeG3YX7HDp0KM3MzBSWmZmZSdPT021/Nj09nQ4ePNjx+L1795Yqt1U7Rcr2oZe66ybHWMvUWVZT5hmiirSeArFZ7/IxtwAAzVTlHmIZrfeMg26/H/3e7/Yy1lG+x+5mvKM8zlx6fQbz7NZZFXNUl3nO1Y8c9e7duzc98cQThWV2796d9u7dW7rOQarLOQfqyRoBMXnvD9b09HTH34Mro4pzUubcd7r3nZmZSY899lhf/QAA6kOgosW3vvWt7G2U+VdZHn300XT48OF05MiR9MgjjxSWKVL2+H7bqaIPTZBjrEV1ltW0eYaoIq2nQGzWu3zMLQBAMxXd5z3yyCNd/XXmovJb3TNWsYdZhV763q1uxtqEe+wy423COHPp9RnMs1tnVcxRXeY5Vz9y1Ds3N7fl55zj4+PppZde6rrOQarLOQfqyRoBMXnvD9aRI0e62qNoVeU56XTu5+bmXBsAEIhARYuvf/3r2dt4+umnO5Y5duxYmpycTJOTk+nYsWOFZYqUPb7fdqroQxPkGGtRnWU1bZ4hqkjrKRCb9S4fcwsA0ExF93nHjx9Px48fL11XUfmt7hl72cP88pe/3FX5Mnrpe7e6GWsT7rHLjLcJ48yl12cwz26dVTFHdZnnXP3IUe/U1NSWn3MeOHAgTU1NdV3nINXlnAP1ZI2AmLz3B2tycrKrPYpWVZ6TTud+amrKtQEAgQhUDNiePXvS0aNH05NPPllY5qmnnlr/ft++fWnPnj2FZYqUPb7fdqroQxPkGGu7Oreyc+fOStsG6iXSegrEZr3Lx9wCADRT0X3eVj9r3afuVL7onrHdMa17lWu2bduWzp4923affKtjNnryyScr7Xu3yuzXNukeu2i8TRpnLr1ek57dOqtijuoyz7n6kaPeo0ePblqrd+7cmZ599tme6xykupxzoJ6sERCT9/5g7du3r/D35lIqfu6vui9F5961AQBxCFRUaNu2bZv+zO22bdvStm3bUkopPfDAA+nkyZNpfHw8nTx5cv31jdbKjI2Nrb82NjaWTpw4kSYmJrYsU6Ts8f22U0UfmiDHWFvrnJiYWL9+Nn79wAMPpFOnToWYZ4gq0noKxGa9y8fcAgA0U9F93lY/O3nyZFfli+4Z2x2zca9yo5/97GdpYmJi0z75xMRE22Na90B//OMfV9r3brW20app99hbjbdp48yl12vSs1tnVcxRXeY5Vz9y1Ds+Pp5mZ2fve+3FF1/c9BlpXdXlnAP1ZI2AmLz3B2tsbGzTfkDr79cVPfdX3Zeic+/aAIA4RmNnq4Z2796dnnjiifteO3ToUDp06NCm12ZmZlJKKR08eDA9/vjjKaWUpqen119PKa3XtbHMRtPT0+ngwYOFZYqUPb7fdqroQxPkGOvGOmdmZtavn41fHzx4MO3ZsyfMPENUkdZTIDbrXT7mFgCgmYru89r9rNvy3ba/ca9ycnIypZTSww8/nL7xjW+sl9+4Tz4zM3PfMWv75q17oDn63q2Nbaz1s9M+/yhrN94mjjOXXq9Jz26dVTFHdZnnXP3IUe/evXvX14Ldu3d3/BeG66Yu5xyoJ2sExOS9P1it+wHtfr9uUOekUzuuDQCIof0/n8SWHnvssTQ/P59eeumllFJKhw8fTtPT02liYiIdPnw4pZTS9evX08rKShofH19/7S9/+cv612uOHDmSrl+/nlJKaW5uLr344oubyrSWb1dPWWWP77edYdVdNznG2lrnVl9HmmeIyvsciMJ6l4+5BQBopqL7vHY/67Z8t+2vff+Tn/wkfe9730tnzpzZVH5tn7z1mF/84hf37Zvn7nu3WvvZ2t+m2eq8UE6v16Rnt86qmKO6zHOufuSod25uLh0+fHj9M9NRU5dzDtSTNQJi8t4frHb7Ad0891fdl6J2XBsA0Hxjq6urg21wbOzxlNKtlFK6detW7VKb77//fnr++ec3vf7rX/86TUxMpC996UtpaWkp7dixI6WU0sLCQtq+fXtKKa3//9LS0vpxG19b+3qjtbLbt2/fskxr+U5lqji+33aGVXfd5Bjrxjq3+jpX20C9eJ8DUVjv8qnz3P7rX/9K09PTa99Or66u/muY/YGq1H1f5D//+U/69re/fd9rb731Vtq1a9eQepRfuzEv/L9DafWBySH1KKWxzxfTjusX73tt2H0aJe3mr+nXMfU36PW16D6v3c+6Ld9t+2vfz8/Pp6mpqbblU0ptjynaA83R92619rPO99hViDLOXHqdN/PdWRVzVJd5ztWPHPUuLCysf2Y6iupyzrdib4Qmqvu+yEZ1XyOAPLz3B6t1P6Db5/6q+1LUTrufR9xPpxnq+LnIoDX1cxifj9DJKP23a9D7Iv5CRUlf/OIX1y+YjTdH7TYJ291cbXXDtfH1Mjd//d4glj0+541opAePHGPd6pppbSvSPENU3udAFNa7fMwtAEAzFd3ndbN/3elnZY9Z+75dmKJTnzrtoVfd92619rPp99hRxplLr/NmvjurYo7qMs+5+pGj3lEOU6RUn3MO1JM1AmLy3h+sMr/rNKhz0qkd1wYANNv4sDsAAAAAAAAAAAAAAAAwaAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOBPD7kDd7NixY9Nrp0+fTjt37hxCbwAAAAAGZ+fOnemtt97a9BoA/bG+AgAAADSL/R4ARo3/dm1NoKLF+PjmP9qxa9eutq8DAAAANMn4+HjatWvXsLsB0DjWVwAAAIBmsd8DwKjx366tSQkAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAWz1K/gAAIABJREFUAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQA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AAAAAAAoR1ABAAAAAAAAAAAAAACUI6gAAAAAAAAAAAAAAADKEVQAAAAAAAAAAAAAAADlCCoAAAAAAAAAAAAAAIByBBUAAAAAAAAAAAAAAEA5ggoAAAAAAAAAAAAAAKAcQQUAAAAAAAAAAAAAAFCOoAIAAAAAAAAAAAAAAChHUAEAAAAAAAAAAAAAAJQjqAAAAAAAAAAAAAAAAMoRVAAAAAAAAAAAAAAAAOUIKgAAAAAAAAAAAAAAgHIEFQAAAAAAAAAAAAAAQDmCCgAAAAAAAAAAAAAAoBxBBQAAAAAAAAAAAAAAUI6gAgAAAAAAAAAAAAAAKEdQAQAAAAAAAAAAAAAAlCOoAAAAAAAAAAAAAAAAyhFUAAAAAAAAAAAAAAAA5QgqAAAAAAAAAAAAAACAcgQVAAAAAAAAAAAAAABAOYIKAAAAAAAAAAAAAACgHEEFAAAAAAAAAAAAAABQjqACAAAAAAAAAAAAAAAoR1ABAAAAAAAAAAAAAACUI6gAAAAAAAAAAAAAAADKEVQAAAAAAAAAAAAAAADlCCoAAAAAAAAAAAAAAIByBBUAAAAAAAAAAAAAAEA5ggoAAAAAAAAAAAAAAKAcQQUAAAAAAAAAAAAAAFCOoAIAAAAAAAAAAAAAAChHUAEAAAAAAAAAAAAAAJQjqAAAAAAAAAAAAAAAAMoRVAAAAAAAAAAAAAAAAOUIKgAAAAAAAAAAAAAAgHIEFQAAAAAAAAAAAAAAQDmCCgAAAAAAAAAAAAAAoBxBBQAAAAAAAAAAAAAAUI6gAgAAAAAAAAAAAAAAKEdQAQAAAAAAAAAAAAAAlCOoAAAAAAAAAAAAAAAAyhFUAAAAAAAAAAAAAAAA5QgqAAAAAAAAAAAAAACAcgQVAAAAAAAAAAAAAABAOYIKAAAAAAAAAAAAAACgHEEFAAAAAAAAAAAAAABQjqACAAAAAAAAAAAAAAAoR1ABAAAAAAAAAAAAAACUI6gAAAAAAAAAAAAAAADKEVQAAAAAAAAAAAAAAADlCCoAAAAAAAAAAAAAAIByBBUAAAAAAAAAAAAAAEA5ggoAAAAAAAAAAAAAAKAcQQUAAAAAAAAAAAAAAFCOoAIAAAAAAAAAAAAAAChHUAEAAAAAAAAAAAAAAJQjqAAAAAAAAAAAAAAAAMoRVAAAAAAAAAAAAAAAAOUIKgAAAAAAAAAAAAAAgHIE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gHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShU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AAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAADA/7F379HWnHV9wL+/NxcgJCFyUVpAwkVcICqsJkgQ4VVRqwsERClasa9KEVpslaqwrNrUeqOWBVphRbyQIF6gSCJFQaAYigISoBZSCBclUeSSIBJCQhJCpn/MnJz9npy9z97n7LNvz+ez1qx37/fMfp6Z+T3zPDOz5zcbAAAAAAAAAACA5kioAAAAAAAAAAAAAAAAmiOhAgAAAAAAAAAAAAAAaI6ECgAAAAAAAAAAAAAAoDkSKgAAAAAAAAAAAAAAgOZIqAAAAAAAAAAAAAAAAJojoQIAAAAAAAAAAAAAAGiOhAoAAAAAAAAAAAAAAKA5EioAAAAAAAAAAAAAAIDmSKgAAAAAAAAAAAAAAACaI6ECAAAAAAAAAAAAAABojoQKAAAAAAAAAAAAAACgORIqAAAAAAAAAAAAAACA5kioAAAAAAAAAAAAAAAAmiOhAgAAAAAAAAAAAAAAaI6ECgAAAAAAAAAAAAAAoDkSKgAAAAAAAAAAAAAAgOZIqAAAAAAAAAAAAAAAAJojoQIAAAAAAAAAAAAAAGiOhAoAAAAAAAAAAAAAAKA5EioAAAAAAAAAAAAAAIDmSKgAAAAAAAAAAAAAAACaI6ECAAAAAAAAAAAAAABojoQKAAAAAAAAAAAAAACgOScuewEAVtnpp5+eiy666Fb/BwCwrhzfADBvxhYAMB4CAADL57wEAJjEscJ4EioAJjhy5EjOOOOMZS8GAMDcOL4BYN6MLQBgPAQAAJbPeQkAMIljhfGOLHsBAAAAAAAAAAAAAAAAFk1CBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEA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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.figure(figsize=(20,20), dpi=200)\n", + "\n", + "plt.subplot(4,3,1)\n", + "sns.boxplot(x = 'popularity', data = df)\n", + "\n", + "plt.subplot(4,3,2)\n", + "sns.boxplot(x = 'acousticness', data = df)\n", + "\n", + "plt.subplot(4,3,3)\n", + "sns.boxplot(x = 'energy', data = df)\n", + "\n", + "plt.subplot(4,3,4)\n", + "sns.boxplot(x = 'instrumentalness', data = df)\n", + "\n", + "plt.subplot(4,3,5)\n", + "sns.boxplot(x = 'liveness', data = df)\n", + "\n", + "plt.subplot(4,3,6)\n", + "sns.boxplot(x = 'loudness', data = df)\n", + "\n", + "plt.subplot(4,3,7)\n", + "sns.boxplot(x = 'speechiness', data = df)\n", + "\n", + "plt.subplot(4,3,8)\n", + "sns.boxplot(x = 'tempo', data = df)\n", + "\n", + "plt.subplot(4,3,9)\n", + "sns.boxplot(x = 'time_signature', data = df)\n", + "\n", + "plt.subplot(4,3,10)\n", + "sns.boxplot(x = 'danceability', data = df)\n", + "\n", + "plt.subplot(4,3,11)\n", + "sns.boxplot(x = 'length', data = df)\n", + "\n", + "plt.subplot(4,3,12)\n", + "sns.boxplot(x = 'release_date', data = df)" + ] + }, + { + "source": [ + "സമാന പരിധികളുള്ള ചില കോളങ്ങൾ തിരഞ്ഞെടുക്കുക. നമ്മുടെ ജാനറുകൾ ശരിയായി സൂക്ഷിക്കാൻ artist_top_genre കോളം ഉൾപ്പെടുത്താൻ ശ്രദ്ധിക്കുക.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import LabelEncoder, StandardScaler\n", + "le = LabelEncoder()\n", + "\n", + "# scaler = StandardScaler()\n", + "\n", + "X = df.loc[:, ('artist_top_genre','popularity','danceability','acousticness','loudness','energy')]\n", + "\n", + "y = df['artist_top_genre']\n", + "\n", + "X['artist_top_genre'] = le.fit_transform(X['artist_top_genre'])\n", + "\n", + "# X = scaler.fit_transform(X)\n", + "\n", + "y = le.transform(y)\n", + "\n" + ] + }, + { + "source": [ + "K-Means ക്ലസ്റ്ററിംഗിന് എത്ര ക്ലസ്റ്ററുകൾ നിർമ്മിക്കണമെന്ന് പറയേണ്ടതിന്റെ ദോഷം ഉണ്ട്. നമുക്ക് മൂന്ന് ഗാന തരം ഉണ്ടെന്ന് അറിയാം, അതിനാൽ നമുക്ക് 3-ൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കാം.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 0, 2, 1, 1, 0, 1, 0, 0,\n", + " 0, 1, 0, 2, 0, 0, 2, 2, 1, 1, 0, 2, 2, 2, 2, 1, 1, 0, 2, 0, 2, 0,\n", + " 2, 0, 0, 1, 1, 2, 1, 0, 0, 2, 2, 2, 2, 1, 1, 0, 1, 2, 2, 1, 2, 2,\n", + " 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 2, 0, 2, 1, 1, 1, 2, 2, 2,\n", + " 2, 1, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 0,\n", + " 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 0, 1, 2, 1, 2,\n", + " 1, 2, 2, 2, 0, 2, 1, 1, 1, 2, 1, 0, 1, 2, 2, 1, 1, 1, 0, 1, 2, 2,\n", + " 2, 1, 1, 0, 1, 2, 1, 1, 1, 1, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2,\n", + " 0, 1, 0, 0, 1, 0, 0, 2, 0, 0, 1, 1, 2, 0, 2, 2, 0, 2, 2, 1, 1, 0,\n", + " 1, 1, 0, 0, 1, 0, 2, 0, 1, 0, 2, 0, 0, 2, 2, 2, 1, 1, 1, 1, 1, 0,\n", + " 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 1, 1, 0, 2, 2, 2,\n", + " 1, 1, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 1, 1, 1, 2, 2, 2,\n", + " 1, 2, 1, 2, 1, 1, 1, 0, 2, 2, 2, 1, 2, 1, 0, 1, 2, 1, 1, 1, 2, 1],\n", + " dtype=int32)" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ], + "source": [ + "\n", + "from sklearn.cluster import KMeans\n", + "\n", + "nclusters = 3 \n", + "seed = 0\n", + "\n", + "km = KMeans(n_clusters=nclusters, random_state=seed)\n", + "km.fit(X)\n", + "\n", + "# Predict the cluster for each data point\n", + "\n", + "y_cluster_kmeans = km.predict(X)\n", + "y_cluster_kmeans" + ] + }, + { + "source": [ + "ആ നമ്പറുകൾ ഞങ്ങൾക്ക് വളരെ പ്രാധാന്യമില്ല, അതിനാൽ കൃത്യത കാണാൻ 'സിലുവെറ്റ് സ്കോർ' എടുക്കാം. നമ്മുടെ സ്കോർ മധ്യത്തിൽ ആണ്.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.5466747351275563" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ], + "source": [ + "from sklearn import metrics\n", + "score = metrics.silhouette_score(X, y_cluster_kmeans)\n", + "score" + ] + }, + { + "source": [ + "KMeans ഇംപോർട്ട് ചെയ്ത് ഒരു മോഡൽ നിർമ്മിക്കുക\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.cluster import KMeans\n", + "wcss = []\n", + "\n", + "for i in range(1, 11):\n", + " kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42)\n", + " kmeans.fit(X)\n", + " wcss.append(kmeans.inertia_)" + ] + }, + { + "source": [ + "ആ മോഡൽ ഉപയോഗിച്ച് എൽബോ മെത്തഡ് ഉപയോഗിച്ച് നിർമ്മിക്കാനുള്ള ഏറ്റവും നല്ല ക്ലസ്റ്ററുകളുടെ എണ്ണം തീരുമാനിക്കുക.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/seaborn/_decorators.py:43: FutureWarning: Pass the following variables as keyword args: x, y. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n FutureWarning\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.figure(figsize=(10,5))\n", + "sns.lineplot(range(1, 11), wcss,marker='o',color='red')\n", + "plt.title('Elbow')\n", + "plt.xlabel('Number of clusters')\n", + "plt.ylabel('WCSS')\n", + "plt.show()" + ] + }, + { + "source": [ + "Looks like 3 is a good number after all. Fit the model again and create a scatterplot of your clusters. They do group in bunches, but they are pretty close together." + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "from sklearn.cluster import KMeans\n", + "kmeans = KMeans(n_clusters = 3)\n", + "kmeans.fit(X)\n", + "labels = kmeans.predict(X)\n", + "plt.scatter(df['popularity'],df['danceability'],c = labels)\n", + "plt.xlabel('popularity')\n", + "plt.ylabel('danceability')\n", + "plt.show()" + ] + }, + { + "source": [ + "ഈ മോഡലിന്റെ കൃത്യത മോശമല്ല, പക്ഷേ മികച്ചതും അല്ല. ഡാറ്റ K-മീൻസ് ക്ലസ്റ്ററിംഗിന് അനുയോജ്യമല്ലായിരിക്കാം. നിങ്ങൾ വേറൊരു രീതിയും പരീക്ഷിക്കാം.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 811, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Result: 109 out of 286 samples were correctly labeled.\nAccuracy score: 0.38\n" + ] + } + ], + "source": [ + "labels = kmeans.labels_\n", + "\n", + "correct_labels = sum(y == labels)\n", + "\n", + "print(\"Result: %d out of %d samples were correctly labeled.\" % (correct_labels, y.size))\n", + "\n", + "print('Accuracy score: {0:0.2f}'. format(correct_labels/float(y.size)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/5-Clustering/2-K-Means/solution/tester.ipynb b/translations/ml/5-Clustering/2-K-Means/solution/tester.ipynb new file mode 100644 index 000000000..775d35187 --- /dev/null +++ b/translations/ml/5-Clustering/2-K-Means/solution/tester.ipynb @@ -0,0 +1,345 @@ +{ + "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')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "6f92868513e59d321245137c1c4c5311", + "translation_date": "2025-12-19T16:52:20+00:00", + "source_file": "5-Clustering/2-K-Means/solution/tester.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# സ്പോട്ടിഫൈയിൽ നിന്ന് ശേഖരിച്ച നൈജീരിയൻ സംഗീതം - ഒരു വിശകലനം\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: seaborn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.11.1)\n", + "Requirement already satisfied: pandas>=0.23 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.1.2)\n", + "Requirement already satisfied: matplotlib>=2.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (3.1.0)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.19.2)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.4.1)\n", + "Requirement already satisfied: pytz>=2017.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2019.1)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2.8.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (1.1.0)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (2.4.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (0.10.0)\n", + "Requirement already satisfied: six>=1.5 in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from python-dateutil>=2.7.3->pandas>=0.23->seaborn) (1.12.0)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib>=2.2->seaborn) (45.1.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install seaborn" + ] + }, + { + "source": [ + "കഴിഞ്ഞ പാഠത്തിൽ നാം അവസാനിപ്പിച്ചിടത്ത് നിന്ന് തുടക്കം കുറിക്കുക, ഡാറ്റ ഇറക്കുമതി ചെയ്ത് ഫിൽട്ടർ ചെയ്ത സ്ഥിതിയിൽ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "0 Sparky Mandy & The Jungle \n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "2 LITT! LITT! \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "0 Cruel Santino alternative r&b 2019 144000 48 \n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "2 AYLØ indie r&b 2018 207758 40 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "\n", + " speechiness tempo time_signature \n", + "0 0.0829 133.015 5 \n", + "1 0.3600 129.993 3 \n", + "2 0.0424 130.005 4 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
0SparkyMandy & The JungleCruel Santinoalternative r&b2019144000480.6660.85100.4200.5340000.1100-6.6990.0829133.0155
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
2LITT!LITT!AYLØindie r&b2018207758400.8360.27200.5640.0005370.1100-7.1270.0424130.0054
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
\n
" + }, + "metadata": {}, + "execution_count": 105 + } + ], + "source": [ + "\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import numpy as np\n", + "\n", + "df = pd.read_csv(\"../../data/nigerian-songs.csv\")\n", + "df.head()" + ] + }, + { + "source": [ + "നാം മൂന്ന് ജാനറുകളിൽ മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിക്കും. ബോധ്യമായാൽ നാം മൂന്ന് ക്ലസ്റ്ററുകൾ നിർമ്മിക്കാം!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "metadata": {}, + "execution_count": 106 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n", + "df = df[(df['popularity'] > 0)]\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "5 Kasala Pioneers \n", + "6 Pull Up Everything Pretty \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "5 DRB Lasgidi nigerian pop 2020 184800 26 \n", + "6 prettyboydo nigerian pop 2018 202648 29 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "5 0.803 0.1270 0.525 0.000007 0.1290 -10.034 \n", + "6 0.818 0.4520 0.587 0.004490 0.5900 -9.840 \n", + "\n", + " speechiness tempo time_signature \n", + "1 0.3600 129.993 3 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 \n", + "5 0.1970 100.103 4 \n", + "6 0.1990 95.842 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
5KasalaPioneersDRB Lasgidinigerian pop2020184800260.8030.12700.5250.0000070.1290-10.0340.1970100.1034
6Pull UpEverything Prettyprettyboydonigerian pop2018202648290.8180.45200.5870.0044900.5900-9.8400.199095.8424
\n
" + }, + "metadata": {}, + "execution_count": 107 + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "scaler = StandardScaler()\n", + "\n", + "# X = df.loc[:, ('danceability','energy')]\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "output_type": "error", + "ename": "ValueError", + "evalue": "Unknown label type: 'continuous'", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0;31m# we create an instance of SVM and fit out data. We do not scale our\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0;31m# data since we want to plot the support vectors\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 22\u001b[0;31m \u001b[0mls30\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mLabelSpreading\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_30\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_30\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Label Spreading 30% data'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 23\u001b[0m \u001b[0mls50\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mLabelSpreading\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_50\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_50\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Label Spreading 50% data'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mls100\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mLabelSpreading\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Label Spreading 100% data'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/semi_supervised/_label_propagation.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, X, y)\u001b[0m\n\u001b[1;32m 228\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_validate_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 229\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mX_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 230\u001b[0;31m \u001b[0mcheck_classification_targets\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 231\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 232\u001b[0m \u001b[0;31m# actual graph construction (implementations should override this)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/utils/multiclass.py\u001b[0m in \u001b[0;36mcheck_classification_targets\u001b[0;34m(y)\u001b[0m\n\u001b[1;32m 181\u001b[0m if y_type not in ['binary', 'multiclass', 'multiclass-multioutput',\n\u001b[1;32m 182\u001b[0m 'multilabel-indicator', 'multilabel-sequences']:\n\u001b[0;32m--> 183\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Unknown label type: %r\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0my_type\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 184\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 185\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: Unknown label type: 'continuous'" + ] + } + ], + "source": [ + "from sklearn.svm import SVC\n", + "from sklearn.semi_supervised import LabelSpreading\n", + "from sklearn.semi_supervised import SelfTrainingClassifier\n", + "from sklearn import datasets\n", + "\n", + "X = df[['danceability','acousticness']].values\n", + "y = df['energy'].values\n", + "\n", + "# X = scaler.fit_transform(X)\n", + "\n", + "# step size in the mesh\n", + "h = .02\n", + "\n", + "rng = np.random.RandomState(0)\n", + "y_rand = rng.rand(y.shape[0])\n", + "y_30 = np.copy(y)\n", + "y_30[y_rand < 0.3] = -1 # set random samples to be unlabeled\n", + "y_50 = np.copy(y)\n", + "y_50[y_rand < 0.5] = -1\n", + "# we create an instance of SVM and fit out data. We do not scale our\n", + "# data since we want to plot the support vectors\n", + "ls30 = (LabelSpreading().fit(X, y_30), y_30, 'Label Spreading 30% data')\n", + "ls50 = (LabelSpreading().fit(X, y_50), y_50, 'Label Spreading 50% data')\n", + "ls100 = (LabelSpreading().fit(X, y), y, 'Label Spreading 100% data')\n", + "\n", + "# the base classifier for self-training is identical to the SVC\n", + "base_classifier = SVC(kernel='rbf', gamma=.5, probability=True)\n", + "st30 = (SelfTrainingClassifier(base_classifier).fit(X, y_30),\n", + " y_30, 'Self-training 30% data')\n", + "st50 = (SelfTrainingClassifier(base_classifier).fit(X, y_50),\n", + " y_50, 'Self-training 50% data')\n", + "\n", + "rbf_svc = (SVC(kernel='rbf', gamma=.5).fit(X, y), y, 'SVC with rbf kernel')\n", + "\n", + "# create a mesh to plot in\n", + "x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n", + "y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n", + "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n", + " np.arange(y_min, y_max, h))\n", + "\n", + "color_map = {-1: (1, 1, 1), 0: (0, 0, .9), 1: (1, 0, 0), 2: (.8, .6, 0)}\n", + "\n", + "classifiers = (ls30, st30, ls50, st50, ls100, rbf_svc)\n", + "for i, (clf, y_train, title) in enumerate(classifiers):\n", + " # Plot the decision boundary. For that, we will assign a color to each\n", + " # point in the mesh [x_min, x_max]x[y_min, y_max].\n", + " plt.subplot(3, 2, i + 1)\n", + " Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n", + "\n", + " # Put the result into a color plot\n", + " Z = Z.reshape(xx.shape)\n", + " plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)\n", + " plt.axis('off')\n", + "\n", + " # Plot also the training points\n", + " colors = [color_map[y] for y in y_train]\n", + " plt.scatter(X[:, 0], X[:, 1], c=colors, edgecolors='black')\n", + "\n", + " plt.title(title)\n", + "\n", + "plt.suptitle(\"Unlabeled points are colored white\", y=0.1)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/5-Clustering/README.md b/translations/ml/5-Clustering/README.md new file mode 100644 index 000000000..80f6aff33 --- /dev/null +++ b/translations/ml/5-Clustering/README.md @@ -0,0 +1,44 @@ + +# മെഷീൻ ലേണിംഗിനുള്ള ക്ലസ്റ്ററിംഗ് മോഡലുകൾ + +ക്ലസ്റ്ററിംഗ് എന്നത് മെഷീൻ ലേണിംഗ് ടാസ്കാണ്, ഇതിൽ പരസ്പരം സമാനമായ വസ്തുക്കളെ കണ്ടെത്തി അവയെ ക്ലസ്റ്ററുകൾ എന്നറിയപ്പെടുന്ന ഗ്രൂപ്പുകളായി കൂട്ടിച്ചേർക്കാൻ ശ്രമിക്കുന്നു. മെഷീൻ ലേണിംഗിലെ മറ്റ് സമീപനങ്ങളിൽ നിന്ന് ക്ലസ്റ്ററിംഗ് വ്യത്യസ്തമാകുന്നത്, കാര്യങ്ങൾ സ്വയം സംഭവിക്കുന്നതാണ്, വാസ്തവത്തിൽ, ഇത് സൂപ്പർവൈസ്ഡ് ലേണിംഗിന്റെ എതിര്‍ഭാഗമാണെന്ന് പറയാം. + +## പ്രാദേശിക വിഷയം: നൈജീരിയൻ പ്രേക്ഷകരുടെ സംഗീത രുചിക്കായി ക്ലസ്റ്ററിംഗ് മോഡലുകൾ 🎧 + +നൈജീരിയയുടെ വൈവിധ്യമാർന്ന പ്രേക്ഷകർക്ക് വൈവിധ്യമാർന്ന സംഗീത രുചികൾ ഉണ്ട്. Spotify-യിൽ നിന്നുള്ള ഡാറ്റ ഉപയോഗിച്ച് (ഈ ലേഖനം പ്രചോദനമായി [this article](https://towardsdatascience.com/country-wise-visual-analysis-of-music-taste-using-spotify-api-seaborn-in-python-77f5b749b421)), നൈജീരിയയിൽ പ്രചാരത്തിലുള്ള ചില സംഗീതങ്ങൾ നോക്കാം. ഈ ഡാറ്റാസെറ്റിൽ വിവിധ പാട്ടുകളുടെ 'danceability' സ്കോർ, 'acousticness', ലൗഡ്നസ്, 'speechiness', ജനപ്രിയത, എനർജി എന്നിവയെക്കുറിച്ചുള്ള ഡാറ്റ ഉൾപ്പെടുന്നു. ഈ ഡാറ്റയിൽ പാറ്റേണുകൾ കണ്ടെത്തുന്നത് രസകരമായിരിക്കും! + +![A turntable](../../../translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.ml.jpg) + +> ഫോട്ടോ Marcela Laskoski യുടെ Unsplash ൽ നിന്നാണ് + +ഈ പാഠമാലയിൽ, ക്ലസ്റ്ററിംഗ് സാങ്കേതികവിദ്യകൾ ഉപയോഗിച്ച് ഡാറ്റ വിശകലനം ചെയ്യാനുള്ള പുതിയ മാർഗങ്ങൾ നിങ്ങൾ കണ്ടെത്തും. നിങ്ങളുടെ ഡാറ്റാസെറ്റിന് ലേബലുകൾ ഇല്ലാത്തപ്പോൾ ക്ലസ്റ്ററിംഗ് പ്രത്യേകിച്ച് പ്രയോജനകരമാണ്. ലേബലുകൾ ഉണ്ടെങ്കിൽ, മുമ്പത്തെ പാഠങ്ങളിൽ പഠിച്ച ക്ലാസിഫിക്കേഷൻ സാങ്കേതികവിദ്യകൾ കൂടുതൽ പ്രയോജനകരമായിരിക്കാം. എന്നാൽ ലേബൽ ഇല്ലാത്ത ഡാറ്റയെ ഗ്രൂപ്പുചെയ്യാൻ ശ്രമിക്കുന്ന സാഹചര്യങ്ങളിൽ, ക്ലസ്റ്ററിംഗ് പാറ്റേണുകൾ കണ്ടെത്താനുള്ള മികച്ച മാർഗമാണ്. + +> ക്ലസ്റ്ററിംഗ് മോഡലുകളുമായി പ്രവർത്തിക്കാൻ സഹായിക്കുന്ന കുറവ്-കോഡ് ഉപകരണങ്ങൾ ഉണ്ട്. ഈ ടാസ്കിനായി [Azure ML](https://docs.microsoft.com/learn/modules/create-clustering-model-azure-machine-learning-designer/?WT.mc_id=academic-77952-leestott) പരീക്ഷിക്കുക + +## പാഠങ്ങൾ + +1. [ക്ലസ്റ്ററിംഗിലേക്ക് പരിചയം](1-Visualize/README.md) +2. [കെ-മീൻസ് ക്ലസ്റ്ററിംഗ്](2-K-Means/README.md) + +## ക്രെഡിറ്റുകൾ + +ഈ പാഠങ്ങൾ 🎶 [Jen Looper](https://www.twitter.com/jenlooper) എഴുതിയതാണ്, [Rishit Dagli](https://rishit_dagli) ഉം [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan) ഉം നൽകിയ സഹായകരമായ അവലോകനങ്ങളോടെ. + +[Nigerian Songs](https://www.kaggle.com/sootersaalu/nigerian-songs-spotify) ഡാറ്റാസെറ്റ് Spotify-യിൽ നിന്നു സ്ക്രാപ്പ് ചെയ്ത് Kaggle-ൽ നിന്നാണ് ലഭിച്ചത്. + +ഈ പാഠം സൃഷ്ടിക്കാൻ സഹായിച്ച പ്രയോജനകരമായ കെ-മീൻസ് ഉദാഹരണങ്ങളിൽ ഈ [iris exploration](https://www.kaggle.com/bburns/iris-exploration-pca-k-means-and-gmm-clustering), ഈ [introductory notebook](https://www.kaggle.com/prashant111/k-means-clustering-with-python), ഈ [hypothetical NGO example](https://www.kaggle.com/ankandash/pca-k-means-clustering-hierarchical-clustering) എന്നിവ ഉൾപ്പെടുന്നു. + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ വ്യാഖ്യാനക്കേടുകൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/6-NLP/1-Introduction-to-NLP/README.md b/translations/ml/6-NLP/1-Introduction-to-NLP/README.md new file mode 100644 index 000000000..5801b01cb --- /dev/null +++ b/translations/ml/6-NLP/1-Introduction-to-NLP/README.md @@ -0,0 +1,181 @@ + +# സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗിലേക്ക് പരിചയം + +ഈ പാഠം *സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗ്* എന്ന *കമ്പ്യൂട്ടേഷണൽ ലിംഗ്വിസ്റ്റിക്സ്* എന്ന ഉപവിഭാഗത്തിന്റെ ഒരു സംക്ഷിപ്ത ചരിത്രവും പ്രധാന ആശയങ്ങളും ഉൾക്കൊള്ളുന്നു. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## പരിചയം + +NLP, സാധാരണയായി അറിയപ്പെടുന്നത് പോലെ, മെഷീൻ ലേണിംഗ് പ്രയോഗിച്ചും പ്രൊഡക്ഷൻ സോഫ്റ്റ്‌വെയറിൽ ഉപയോഗിച്ചും ഏറ്റവും പ്രശസ്തമായ മേഖലകളിലൊന്നാണ്. + +✅ നിങ്ങൾ ദിവസേന ഉപയോഗിക്കുന്ന സോഫ്റ്റ്‌വെയറുകളിൽ ഏതെങ്കിലും NLP ഉൾപ്പെടുത്തിയിട്ടുണ്ടെന്ന് നിങ്ങൾക്ക് തോന്നുന്നുണ്ടോ? നിങ്ങൾ സ്ഥിരമായി ഉപയോഗിക്കുന്ന വേഡ് പ്രോസസ്സിംഗ് പ്രോഗ്രാമുകളോ മൊബൈൽ ആപ്പുകളോ എന്തെങ്കിലും? + +നിങ്ങൾ പഠിക്കാനിരിക്കുന്നവ: + +- **ഭാഷകളുടെ ആശയം**. ഭാഷകൾ എങ്ങനെ വികസിച്ചു, പ്രധാന പഠന മേഖലകൾ എന്തെല്ലാമായിരുന്നു. +- **നിർവചനവും ആശയങ്ങളും**. കമ്പ്യൂട്ടറുകൾ ടെക്സ്റ്റ് എങ്ങനെ പ്രോസസ് ചെയ്യുന്നു എന്നതിനെക്കുറിച്ചുള്ള നിർവചനങ്ങളും ആശയങ്ങളും, പാഴ്സിംഗ്, വ്യാകരണം, നാമപദങ്ങളും ക്രിയാപദങ്ങളും തിരിച്ചറിയൽ ഉൾപ്പെടെ. ഈ പാഠത്തിൽ ചില കോഡിംഗ് പ്രവർത്തനങ്ങളുണ്ട്, കൂടാതെ ചില പ്രധാന ആശയങ്ങൾ പരിചയപ്പെടുത്തുന്നു, അവ അടുത്ത പാഠങ്ങളിൽ നിങ്ങൾക്ക് കോഡ് ചെയ്യാൻ പഠിക്കാം. + +## കമ്പ്യൂട്ടേഷണൽ ലിംഗ്വിസ്റ്റിക്സ് + +കമ്പ്യൂട്ടേഷണൽ ലിംഗ്വിസ്റ്റിക്സ് ദശകങ്ങളായി ഗവേഷണവും വികസനവും നടത്തുന്ന ഒരു മേഖലയാണ്, കമ്പ്യൂട്ടറുകൾ ഭാഷകളുമായി എങ്ങനെ പ്രവർത്തിക്കാമെന്നും, അവ മനസ്സിലാക്കാനും, വിവർത്തനം ചെയ്യാനും, ആശയവിനിമയം നടത്താനും കഴിയുമെന്നുമാണ് പഠിക്കുന്നത്. സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗ് (NLP) കമ്പ്യൂട്ടറുകൾ 'സ്വാഭാവിക' അല്ലെങ്കിൽ മനുഷ്യ ഭാഷകൾ എങ്ങനെ പ്രോസസ് ചെയ്യാമെന്നതിൽ കേന്ദ്രീകരിച്ച ഒരു ബന്ധപ്പെട്ട മേഖലയാണ്. + +### ഉദാഹരണം - ഫോൺ ഡിക്ടേഷൻ + +നിങ്ങൾ ടൈപ്പുചെയ്യാതെ നിങ്ങളുടെ ഫോൺക്ക് വാക്കുകൾ പറഞ്ഞിട്ടുണ്ടെങ്കിൽ അല്ലെങ്കിൽ ഒരു വെർച്വൽ അസിസ്റ്റന്റിനോട് ചോദിച്ചിട്ടുണ്ടെങ്കിൽ, നിങ്ങളുടെ സംസാരത്തെ ടെക്സ്റ്റ് രൂപത്തിലേക്ക് മാറ്റി പിന്നീട് നിങ്ങൾ സംസാരിച്ച ഭാഷയിൽ നിന്നു *പാഴ്സ്* ചെയ്തു. കണ്ടെത്തിയ കീവേഡുകൾ പിന്നീട് ഫോൺ അല്ലെങ്കിൽ അസിസ്റ്റന്റ് മനസ്സിലാക്കി പ്രവർത്തിക്കാൻ കഴിയുന്ന ഫോർമാറ്റിലേക്ക് പ്രോസസ് ചെയ്തു. + +![comprehension](../../../../translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.ml.png) +> യഥാർത്ഥ ഭാഷാശാസ്ത്രപരമായ ബോധം ബുദ്ധിമുട്ടാണ്! ചിത്രം [Jen Looper](https://twitter.com/jenlooper) യുടെ + +### ഈ സാങ്കേതികവിദ്യ എങ്ങനെ സാധ്യമായി? + +ഇത് സാധ്യമായത് ആരോ ഒരു കമ്പ്യൂട്ടർ പ്രോഗ്രാം എഴുതിയതിനാൽ ആണ്. കുറച്ച് ദശകങ്ങൾ മുൻപ്, ചില സയൻസ് ഫിക്ഷൻ എഴുത്തുകാർ ആളുകൾ പ്രധാനമായും അവരുടെ കമ്പ്യൂട്ടറുകളോട് സംസാരിക്കും, കമ്പ്യൂട്ടറുകൾ എപ്പോഴും അവർ പറയുന്നത് ശരിയായി മനസ്സിലാക്കും എന്ന് പ്രവചിച്ചിരുന്നു. ദുർഭാഗ്യവശാൽ, ഇത് പലർക്കും കരുതിയതേക്കാൾ ബുദ്ധിമുട്ടുള്ള പ്രശ്നമായിരുന്നു, ഇന്ന് ഇത് വളരെ മെച്ചപ്പെട്ട രീതിയിൽ മനസ്സിലാക്കപ്പെടുന്ന പ്രശ്നമാണ്, എന്നാൽ ഒരു വാചകത്തിന്റെ അർത്ഥം മനസ്സിലാക്കുന്നതിൽ 'പരിപൂർണ്ണ' സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗ് നേടുന്നതിൽ വലിയ വെല്ലുവിളികൾ ഉണ്ട്. പ്രത്യേകിച്ച് ഹാസ്യവും വാചകത്തിലെ സാർക്കാസം പോലുള്ള വികാരങ്ങൾ തിരിച്ചറിയുന്നതിൽ ഇത് ബുദ്ധിമുട്ടാണ്. + +ഇപ്പോൾ, നിങ്ങൾക്ക് സ്കൂളിലെ ക്ലാസ്സുകൾ ഓർമ്മ വരാം, അപ്പോൾ അധ്യാപകൻ ഒരു വാചകത്തിലെ വ്യാകരണ ഭാഗങ്ങൾ പഠിപ്പിച്ചിരുന്നു. ചില രാജ്യങ്ങളിൽ വിദ്യാർത്ഥികൾ വ്യാകരണം, ഭാഷാശാസ്ത്രം പ്രത്യേക വിഷയമായി പഠിക്കുന്നു, എന്നാൽ പല സ്ഥലങ്ങളിലും ഈ വിഷയങ്ങൾ ഒരു ഭാഷ പഠനത്തിന്റെ ഭാഗമായാണ് ഉൾപ്പെടുത്തുന്നത്: പ്രാഥമിക വിദ്യാലയത്തിൽ നിങ്ങളുടെ ആദ്യഭാഷ (വായനയും എഴുത്തും പഠിക്കൽ) അല്ലെങ്കിൽ രണ്ടാം ഭാഷ പോസ്റ്റ്-പ്രൈമറി അല്ലെങ്കിൽ ഹൈസ്കൂളിൽ. നാമപദങ്ങളും ക്രിയാപദങ്ങളും അല്ലെങ്കിൽ ക്രിയാവിശേഷണങ്ങളും വിശേഷണങ്ങളും വേർതിരിക്കാൻ നിങ്ങൾ വിദഗ്ധനല്ലെങ്കിൽ ആശങ്കപ്പെടേണ്ടതില്ല! + +*സിംപിൾ പ്രെസന്റ്* ഉം *പ്രെസന്റ് പ്രോഗ്രസീവ്* ഉം തമ്മിലുള്ള വ്യത്യാസം നിങ്ങൾക്ക് ബുദ്ധിമുട്ടുണ്ടെങ്കിൽ, നിങ്ങൾ ഒറ്റക്കല്ല. ഇത് പലർക്കും, ഭാഷയുടെ സ്വദേശികളായവർക്കും പോലും ബുദ്ധിമുട്ടുള്ളതാണ്. നല്ല വാർത്ത എന്തെന്നാൽ കമ്പ്യൂട്ടറുകൾ ഔപചാരിക നിയമങ്ങൾ പ്രയോഗിക്കുന്നതിൽ വളരെ നല്ലവരാണ്, നിങ്ങൾ ഒരു മനുഷ്യനെപ്പോലെ ഒരു വാചകം *പാഴ്സ്* ചെയ്യാൻ കഴിയുന്ന കോഡ് എഴുതാൻ പഠിക്കും. പിന്നീട് നിങ്ങൾ പരിശോധിക്കേണ്ട വലിയ വെല്ലുവിളി ഒരു വാചകത്തിന്റെ *അർത്ഥം*യും, *ഭാവന*യും മനസ്സിലാക്കലാണ്. + +## മുൻകൂട്ടി അറിയേണ്ടതുകൾ + +ഈ പാഠത്തിന് പ്രധാന മുൻകൂട്ടി അറിയേണ്ടത് ഈ പാഠത്തിന്റെ ഭാഷ വായിച്ച് മനസ്സിലാക്കാൻ കഴിയുന്നതാണ്. പരിഹരിക്കേണ്ട ഗണിത പ്രശ്നങ്ങളോ സമവാക്യങ്ങളോ ഇല്ല. ആദ്യ എഴുത്തുകാരൻ ഈ പാഠം ഇംഗ്ലീഷിൽ എഴുതിയിട്ടുണ്ടെങ്കിലും, ഇത് മറ്റ് ഭാഷകളിലേക്കും വിവർത്തനം ചെയ്തിട്ടുണ്ട്, അതിനാൽ നിങ്ങൾ ഒരു വിവർത്തനം വായിക്കാം. വ്യത്യസ്ത ഭാഷകളുടെ വ്യാകരണ നിയമങ്ങൾ താരതമ്യം ചെയ്യുന്നതിനായി പല ഭാഷകളും ഉപയോഗിച്ച ഉദാഹരണങ്ങൾ ഉണ്ട്. അവ വിവർത്തനം ചെയ്തിട്ടില്ല, പക്ഷേ വിശദീകരണ വാചകങ്ങൾ വിവർത്തനം ചെയ്തിട്ടുള്ളതിനാൽ അർത്ഥം വ്യക്തമായിരിക്കണം. + +കോഡിംഗ് പ്രവർത്തനങ്ങൾക്ക്, നിങ്ങൾ Python ഉപയോഗിക്കും, ഉദാഹരണങ്ങൾ Python 3.8 ഉപയോഗിച്ചാണ്. + +ഈ വിഭാഗത്തിൽ നിങ്ങൾക്ക് ആവശ്യമായതും ഉപയോഗിക്കുന്നതും: + +- **Python 3 ബോധം**. Python 3 പ്രോഗ്രാമിംഗ് ഭാഷയുടെ ബോധം, ഈ പാഠം ഇൻപുട്ട്, ലൂപ്പുകൾ, ഫയൽ വായിക്കൽ, അറേകൾ എന്നിവ ഉപയോഗിക്കുന്നു. +- **Visual Studio Code + എക്സ്റ്റൻഷൻ**. Visual Studio Codeയും അതിന്റെ Python എക്സ്റ്റൻഷനും ഉപയോഗിക്കും. നിങ്ങൾക്ക് ഇഷ്ടമുള്ള Python IDE ഉപയോഗിക്കാം. +- **TextBlob**. [TextBlob](https://github.com/sloria/TextBlob) Python-ന് വേണ്ടി ലളിതമായ ടെക്സ്റ്റ് പ്രോസസ്സിംഗ് ലൈബ്രറിയാണ്. TextBlob സൈറ്റിലെ നിർദ്ദേശങ്ങൾ പിന്തുടർന്ന് നിങ്ങളുടെ സിസ്റ്റത്തിൽ ഇൻസ്റ്റാൾ ചെയ്യുക (കോർപറയും ഇൻസ്റ്റാൾ ചെയ്യുക, താഴെ കാണിച്ചിരിക്കുന്നതുപോലെ): + + ```bash + pip install -U textblob + python -m textblob.download_corpora + ``` + +> 💡 ടിപ്പ്: Python നേരിട്ട് VS Code പരിസ്ഥിതികളിൽ ഓടിക്കാം. കൂടുതൽ വിവരങ്ങൾക്ക് [ഡോക്സ്](https://code.visualstudio.com/docs/languages/python?WT.mc_id=academic-77952-leestott) പരിശോധിക്കുക. + +## യന്ത്രങ്ങളോട് സംസാരിക്കൽ + +കമ്പ്യൂട്ടറുകൾ മനുഷ്യഭാഷ മനസ്സിലാക്കാൻ ശ്രമിച്ച ചരിത്രം ദശകങ്ങളായി തുടരുന്നു, സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗ് പരിഗണിച്ച ആദ്യ ശാസ്ത്രജ്ഞരിൽ ഒരാളായിരുന്നു *ആലൻ ട്യൂറിംഗ്*. + +### 'ട്യൂറിംഗ് ടെസ്റ്റ്' + +1950-കളിൽ *കൃത്രിമ ബുദ്ധിമുട്ട്* ഗവേഷണം നടത്തുമ്പോൾ, ട്യൂറിംഗ് ഒരു സംഭാഷണപരീക്ഷണം മനുഷ്യനും കമ്പ്യൂട്ടറിനും (ടൈപ്പുചെയ്ത കത്തുകളിലൂടെ) നൽകാമോ എന്ന് പരിഗണിച്ചു, അതിൽ സംഭാഷണത്തിലെ മനുഷ്യൻ മറ്റൊരു മനുഷ്യനോ കമ്പ്യൂട്ടറോ ആണെന്ന് ഉറപ്പില്ലാതിരിക്കണം. + +ഒരു നിശ്ചിത സംഭാഷണ ദൈർഘ്യത്തിന് ശേഷം, മനുഷ്യൻ ഉത്തരങ്ങൾ കമ്പ്യൂട്ടറിൽ നിന്നാണോ എന്ന് തിരിച്ചറിയാൻ കഴിയാതെപോയാൽ, ആ കമ്പ്യൂട്ടർ *ചിന്തിക്കുന്ന*തായി പറയാമോ? + +### പ്രചോദനം - 'ഇമിറ്റേഷൻ ഗെയിം' + +ഈ ആശയം ഒരു പാർട്ടി ഗെയിം ആയ *The Imitation Game* എന്നതിൽ നിന്നാണ്, അതിൽ ഒരു ചോദ്യംചെയ്യുന്നവൻ ഒരു മുറിയിൽ ഒറ്റക്കാണ്, മറ്റൊരു മുറിയിൽ രണ്ട് ആളുകളുണ്ട്, അവരിൽ ആരാണ് പുരുഷനും ആരാണ് സ്ത്രീയെന്നു കണ്ടെത്തേണ്ടതാണ്. ചോദ്യംചെയ്യുന്നവൻ കുറിപ്പുകൾ അയയ്ക്കാം, മറുപടികൾ mystery വ്യക്തിയുടെ ലിംഗം വെളിപ്പെടുത്തുന്ന വിധം ചോദ്യങ്ങൾ ചിന്തിക്കണം. മറുപടികൾ നൽകുന്നവർ ചോദ്യംചെയ്യുന്നവനെ തെറ്റിദ്ധരിപ്പിക്കാൻ ശ്രമിക്കും, എന്നാൽ സത്യസന്ധമായി മറുപടി നൽകുന്ന പോലെ തോന്നിക്കണം. + +### എലൈസ വികസിപ്പിക്കൽ + +1960-കളിൽ MIT ശാസ്ത്രജ്ഞനായ *ജോസഫ് വൈസൻബാം* [*എലൈസ*](https://wikipedia.org/wiki/ELIZA) എന്ന കമ്പ്യൂട്ടർ 'തെറാപ്പിസ്റ്റ്' വികസിപ്പിച്ചു, അത് മനുഷ്യനോട് ചോദ്യങ്ങൾ ചോദിച്ച് അവരുടെ മറുപടികൾ മനസ്സിലാക്കുന്ന പോലെ തോന്നിക്കുകയായിരുന്നു. എങ്കിലും, എലൈസ ഒരു വാചകം പാഴ്സ് ചെയ്ത് ചില വ്യാകരണ ഘടകങ്ങളും കീവേഡുകളും തിരിച്ചറിയാമെങ്കിലും, വാചകം *മനസ്സിലാക്കിയതായി* പറയാനാകില്ല. എലൈസക്ക് "**I am** sad" എന്ന വാചകം നൽകിയാൽ, അത് വാചകത്തിലെ വാക്കുകൾ പുനഃക്രമീകരിച്ച് "How long have **you been** sad" എന്ന മറുപടി രൂപപ്പെടുത്താമായിരുന്നു. + +ഇത് എലൈസ വാചകം മനസ്സിലാക്കി തുടർന്നുള്ള ചോദ്യം ചോദിക്കുന്നതായി തോന്നിക്കുകയായിരുന്നു, എന്നാൽ യാഥാർത്ഥത്തിൽ അത് കാലം മാറ്റുകയും ചില വാക്കുകൾ ചേർക്കുകയും ചെയ്തിരുന്നത് മാത്രമാണ്. എലൈസക്ക് മറുപടി നൽകാൻ കഴിയുന്ന കീവേഡ് തിരിച്ചറിയാനാകാതെപോയാൽ, പല വാചകങ്ങൾക്കും അനുയോജ്യമായ ഒരു യാദൃച്ഛിക മറുപടി നൽകും. എലൈസ എളുപ്പത്തിൽ തട്ടിപ്പിലാകാമായിരുന്നു, ഉദാഹരണത്തിന്, ഉപയോക്താവ് "**You are** a bicycle" എന്ന് എഴുതിയാൽ, "How long have **I been** a bicycle?" എന്ന മറുപടി നൽകും, കൂടുതൽ യുക്തിപൂർണമായ മറുപടി നൽകാതെ. + +[![എലൈസുമായി സംഭാഷണം](https://img.youtube.com/vi/RMK9AphfLco/0.jpg)](https://youtu.be/RMK9AphfLco "എലൈസുമായി സംഭാഷണം") + +> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്ത് യഥാർത്ഥ ELIZA പ്രോഗ്രാമിനെക്കുറിച്ചുള്ള വീഡിയോ കാണുക + +> കുറിപ്പ്: നിങ്ങൾക്ക് ACM അക്കൗണ്ട് ഉണ്ടെങ്കിൽ 1966-ൽ പ്രസിദ്ധീകരിച്ച [Eliza](https://cacm.acm.org/magazines/1966/1/13317-elizaa-computer-program-for-the-study-of-natural-language-communication-between-man-and-machine/abstract) യുടെ യഥാർത്ഥ വിവരണം വായിക്കാം. അല്ലെങ്കിൽ [വിക്കിപീഡിയ](https://wikipedia.org/wiki/ELIZA)യിൽ Elizaയെക്കുറിച്ച് വായിക്കാം. + +## അഭ്യാസം - അടിസ്ഥാന സംഭാഷണ ബോട്ട് കോഡിംഗ് + +എലൈസ പോലുള്ള ഒരു സംഭാഷണ ബോട്ട്, ഉപയോക്തൃ ഇൻപുട്ട് എടുക്കുകയും ബുദ്ധിമുട്ടോടെ മനസ്സിലാക്കി പ്രതികരിക്കുന്നതുപോലെ തോന്നുകയും ചെയ്യുന്ന പ്രോഗ്രാമാണ്. എലൈസ പോലുള്ള ബോട്ടിന് നിരവധി നിയമങ്ങൾ ഉണ്ടായിരുന്നു ബുദ്ധിമുട്ടുള്ള സംഭാഷണം നടത്തുന്നതായി തോന്നിക്കാൻ. എന്നാൽ നമ്മുടെ ബോട്ടിന് ഒരു കഴിവ് മാത്രമേ ഉണ്ടാകൂ, അത് ഏതൊരു ലളിതമായ സംഭാഷണത്തിലും പ്രവർത്തിക്കാവുന്ന യാദൃച്ഛിക മറുപടികൾ ഉപയോഗിച്ച് സംഭാഷണം തുടരുക. + +### പദ്ധതി + +സംഭാഷണ ബോട്ട് നിർമ്മിക്കുമ്പോൾ നിങ്ങളുടെ ചുവടുകൾ: + +1. ഉപയോക്താവിന് ബോട്ടുമായി എങ്ങനെ ഇടപഴകണമെന്ന് നിർദ്ദേശങ്ങൾ പ്രിന്റ് ചെയ്യുക +2. ഒരു ലൂപ്പ് ആരംഭിക്കുക + 1. ഉപയോക്തൃ ഇൻപുട്ട് സ്വീകരിക്കുക + 2. ഉപയോക്താവ് പുറത്തുകടക്കാൻ ആവശ്യപ്പെട്ടാൽ, പുറത്തുകടക്കുക + 3. ഉപയോക്തൃ ഇൻപുട്ട് പ്രോസസ് ചെയ്ത് മറുപടി നിർണയിക്കുക (ഈ കേസിൽ, മറുപടി സാധാരണ മറുപടികളുടെ യാദൃച്ഛിക തിരഞ്ഞെടുപ്പാണ്) + 4. മറുപടി പ്രിന്റ് ചെയ്യുക +3. പടിയിലേക്ക് 2 ലേക്ക് മടങ്ങുക + +### ബോട്ട് നിർമ്മിക്കൽ + +ഇപ്പോൾ ബോട്ട് സൃഷ്ടിക്കാം. ചില വാചകങ്ങൾ നിർവചിക്കുന്നതിൽ നിന്ന് തുടങ്ങാം. + +1. Python-ൽ ഈ ബോട്ട് താഴെ കാണുന്ന യാദൃച്ഛിക മറുപടികളോടെ സ്വയം സൃഷ്ടിക്കുക: + + ```python + random_responses = ["That is quite interesting, please tell me more.", + "I see. Do go on.", + "Why do you say that?", + "Funny weather we've been having, isn't it?", + "Let's change the subject.", + "Did you catch the game last night?"] + ``` + + നിങ്ങൾക്ക് സഹായം നൽകാൻ ചില സാമ്പിൾ ഔട്ട്പുട്ട് (ഉപയോക്തൃ ഇൻപുട്ട് `>` അടിയന്തിര വരികളിലാണ്): + + ```output + Hello, I am Marvin, the simple robot. + You can end this conversation at any time by typing 'bye' + After typing each answer, press 'enter' + How are you today? + > I am good thanks + That is quite interesting, please tell me more. + > today I went for a walk + Did you catch the game last night? + > I did, but my team lost + Funny weather we've been having, isn't it? + > yes but I hope next week is better + Let's change the subject. + > ok, lets talk about music + Why do you say that? + > because I like music! + Why do you say that? + > bye + It was nice talking to you, goodbye! + ``` + + ഈ ടാസ്കിന് ഒരു സാധ്യതയുള്ള പരിഹാരം [ഇവിടെ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/1-Introduction-to-NLP/solution/bot.py) കാണാം + + ✅ നിർത്തി ചിന്തിക്കുക + + 1. യാദൃച്ഛിക മറുപടികൾ ബോട്ട് അവരെ മനസ്സിലാക്കിയതായി തോന്നിക്കാൻ 'തട്ടിപ്പു' ചെയ്യുമോ എന്ന് നിങ്ങൾ കരുതുന്നുണ്ടോ? + 2. ബോട്ട് കൂടുതൽ ഫലപ്രദമാകാൻ എന്ത് സവിശേഷതകൾ വേണം? + 3. ഒരു ബോട്ട് വാചകത്തിന്റെ അർത്ഥം യഥാർത്ഥത്തിൽ 'മനസ്സിലാക്കുകയാണെങ്കിൽ', സംഭാഷണത്തിലെ മുൻവാചകങ്ങളുടെ അർത്ഥം 'ഓർമ്മിക്കാൻ' അതിന് ആവശ്യമുണ്ടോ? + +--- + +## 🚀ചലഞ്ച് + +മുകളിൽ "നിർത്തി ചിന്തിക്കുക" എന്ന ഘടകങ്ങളിൽ ഒന്നിനെ തിരഞ്ഞെടുക്കുക, അതിനെ കോഡിൽ നടപ്പിലാക്കാൻ ശ്രമിക്കുക അല്ലെങ്കിൽ പുസ്‌തകത്തിൽ പ്യൂഡോകോഡ് ഉപയോഗിച്ച് പരിഹാരം എഴുതുക. + +അടുത്ത പാഠത്തിൽ, സ്വാഭാവിക ഭാഷ പാഴ്സിംഗിനും മെഷീൻ ലേണിംഗിനും മറ്റ് പല സമീപനങ്ങളും നിങ്ങൾ പഠിക്കും. + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +താഴെ കൊടുത്തിരിക്കുന്ന റഫറൻസുകൾ കൂടുതൽ വായനാ അവസരങ്ങളായി കാണുക. + +### റഫറൻസുകൾ + +1. ഷുബർട്ട്, ലെൻഹാർട്ട്, "Computational Linguistics", *The Stanford Encyclopedia of Philosophy* (Spring 2020 Edition), എഡ്വാർഡ് എൻ. സാൽറ്റ (എഡിറ്റർ), URL = . +2. പ്രിൻസ്ടൺ യൂണിവേഴ്സിറ്റി "About WordNet." [WordNet](https://wordnet.princeton.edu/). പ്രിൻസ്ടൺ യൂണിവേഴ്സിറ്റി. 2010. + +## അസൈൻമെന്റ് + +[ഒരു ബോട്ട് തിരയുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ പ്രാമാണികമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/6-NLP/1-Introduction-to-NLP/assignment.md b/translations/ml/6-NLP/1-Introduction-to-NLP/assignment.md new file mode 100644 index 000000000..57f04f6ea --- /dev/null +++ b/translations/ml/6-NLP/1-Introduction-to-NLP/assignment.md @@ -0,0 +1,27 @@ + +# ഒരു ബോട്ട് കണ്ടെത്തുക + +## നിർദ്ദേശങ്ങൾ + +ബോട്ടുകൾ എല്ലായിടത്തും ഉണ്ട്. നിങ്ങളുടെ ജോലി: ഒരു ബോട്ട് കണ്ടെത്തി അതിനെ സ്വീകരിക്കുക! നിങ്ങൾക്ക് അവയെ വെബ്‌സൈറ്റുകളിൽ, ബാങ്കിംഗ് ആപ്ലിക്കേഷനുകളിൽ, ഫോണിൽ, ഉദാഹരണത്തിന് സാമ്പത്തിക സേവന കമ്പനികളുമായി ബന്ധപ്പെടുമ്പോൾ ഉപദേശം അല്ലെങ്കിൽ അക്കൗണ്ട് വിവരങ്ങൾ ചോദിക്കുമ്പോൾ കണ്ടെത്താൻ കഴിയും. ബോട്ട് വിശകലനം ചെയ്ത് നിങ്ങൾ അതിനെ ആശയക്കുഴപ്പത്തിലാക്കാൻ കഴിയുമോ എന്ന് നോക്കുക. നിങ്ങൾക്ക് ബോട്ട് ആശയക്കുഴപ്പത്തിലായെങ്കിൽ, അത് എന്തുകൊണ്ടാണ് സംഭവിച്ചത് എന്ന് നിങ്ങൾ കരുതുന്നത്? നിങ്ങളുടെ അനുഭവത്തെക്കുറിച്ച് ഒരു ചെറിയ പ്രബന്ധം എഴുതുക. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണാർത്ഥം | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | --------------------- | +| | ഒരു പൂർണ്ണ പേജ് പ്രബന്ധം എഴുതിയിട്ടുണ്ട്, ബോട്ട് ആർക്കിടെക്ചർ അനുമാനിച്ച് വിശദീകരിക്കുകയും അതുമായി നിങ്ങളുടെ അനുഭവം രേഖപ്പെടുത്തുകയും ചെയ്യുന്നു | പ്രബന്ധം അപൂർണ്ണമാണ് അല്ലെങ്കിൽ നന്നായി ഗവേഷണം ചെയ്തിട്ടില്ല | പ്രബന്ധം സമർപ്പിച്ചിട്ടില്ല | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/6-NLP/2-Tasks/README.md b/translations/ml/6-NLP/2-Tasks/README.md new file mode 100644 index 000000000..156de47e0 --- /dev/null +++ b/translations/ml/6-NLP/2-Tasks/README.md @@ -0,0 +1,230 @@ + +# സാധാരണ സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗ് ടാസ്കുകളും സാങ്കേതിക വിദ്യകളും + +മിക്കവാറും *സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗ്* ടാസ്കുകൾക്കായി, പ്രോസസ്സ് ചെയ്യേണ്ട ടെക്സ്റ്റ് വിഭജിച്ച്, പരിശോധിച്ച്, ഫലങ്ങൾ നിയമങ്ങളുമായി ഡാറ്റാ സെറ്റുകളുമായി ക്രോസ് റഫറൻസ് ചെയ്യണം. ഈ ടാസ്കുകൾ പ്രോഗ്രാമറിന് ടെക്സ്റ്റിലെ _അർത്ഥം_ അല്ലെങ്കിൽ _ഉദ്ദേശ്യം_ അല്ലെങ്കിൽ വെറും _പരിഭാഷയുടെ ആവൃത്തി_ കണ്ടെത്താൻ സഹായിക്കുന്നു. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +ടെക്സ്റ്റ് പ്രോസസ്സിംഗിൽ ഉപയോഗിക്കുന്ന സാധാരണ സാങ്കേതിക വിദ്യകൾ കണ്ടെത്താം. മെഷീൻ ലേണിങ്ങുമായി ചേർന്ന്, ഈ സാങ്കേതിക വിദ്യകൾ വലിയ തോതിലുള്ള ടെക്സ്റ്റ് കാര്യക്ഷമമായി വിശകലനം ചെയ്യാൻ സഹായിക്കുന്നു. എന്നാൽ ML ഈ ടാസ്കുകളിൽ പ്രയോഗിക്കുന്നതിന് മുമ്പ്, NLP വിദഗ്ധൻ നേരിടുന്ന പ്രശ്നങ്ങൾ മനസ്സിലാക്കാം. + +## NLP-യ്ക്ക് സാധാരണമായ ടാസ്കുകൾ + +നിങ്ങൾ പ്രവർത്തിക്കുന്ന ടെക്സ്റ്റ് വിശകലനം ചെയ്യാനുള്ള വ്യത്യസ്ത മാർഗ്ഗങ്ങൾ ഉണ്ട്. നിങ്ങൾ ചെയ്യാവുന്ന ടാസ്കുകൾ ഉണ്ട്, ഈ ടാസ്കുകൾ വഴി ടെക്സ്റ്റിന്റെ മനസ്സിലാക്കലും നിഗമനങ്ങളും വരുത്താൻ കഴിയും. സാധാരണയായി ഈ ടാസ്കുകൾ ഒരു ക്രമത്തിൽ നടത്തപ്പെടുന്നു. + +### ടോക്കനൈസേഷൻ + +ഏതാണ്ട് എല്ലാ NLP ആൽഗോരിതങ്ങൾക്കും ആദ്യം ചെയ്യേണ്ടത് ടെക്സ്റ്റ് ടോക്കണുകളായി, അല്ലെങ്കിൽ വാക്കുകളായി വിഭജിക്കുക എന്നതാണ്. ഇത് ലളിതമായതായി തോന്നിയാലും, പദവിരാമം, വ്യത്യസ്ത ഭാഷകളിലെ വാക്കുകളും വാക്യവിരാമങ്ങളും പരിഗണിക്കേണ്ടത് സങ്കീർണ്ണമാക്കാം. വ്യത്യസ്ത മാർഗ്ഗങ്ങൾ ഉപയോഗിച്ച് വിഭജനം നിർണയിക്കേണ്ടിവരും. + +![tokenization](../../../../translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.ml.png) +> **Pride and Prejudice** എന്ന പുസ്തകത്തിലെ ഒരു വാക്യം ടോക്കൺ ചെയ്യുന്നു. ഇൻഫോഗ്രാഫിക് [Jen Looper](https://twitter.com/jenlooper) + +### എംബെഡ്ഡിംഗ്സ് + +[വേർഡ് എംബെഡ്ഡിംഗ്സ്](https://wikipedia.org/wiki/Word_embedding) നിങ്ങളുടെ ടെക്സ്റ്റ് ഡാറ്റ സംഖ്യാത്മകമായി മാറ്റാനുള്ള ഒരു മാർഗ്ഗമാണ്. സമാന അർത്ഥമുള്ള വാക്കുകൾ അല്ലെങ്കിൽ ഒരുമിച്ച് ഉപയോഗിക്കുന്ന വാക്കുകൾ കൂട്ടമായി ക്ലസ്റ്റർ ചെയ്യപ്പെടുന്ന രീതിയിൽ എംബെഡ്ഡിംഗ്സ് ചെയ്യപ്പെടുന്നു. + +![word embeddings](../../../../translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.ml.png) +> "I have the highest respect for your nerves, they are my old friends." - **Pride and Prejudice** എന്ന വാക്യത്തിനുള്ള വാക്കുകളുടെ എംബെഡ്ഡിംഗ്സ്. ഇൻഫോഗ്രാഫിക് [Jen Looper](https://twitter.com/jenlooper) + +✅ വാക്കുകളുടെ എംബെഡ്ഡിംഗ്സ് പരീക്ഷിക്കാൻ [ഈ രസകരമായ ടൂൾ](https://projector.tensorflow.org/) പരീക്ഷിക്കൂ. ഒരു വാക്കിൽ ക്ലിക്ക് ചെയ്യുമ്പോൾ സമാന വാക്കുകളുടെ ക്ലസ്റ്ററുകൾ കാണാം: 'toy' 'disney', 'lego', 'playstation', 'console' എന്നിവയുമായി ക്ലസ്റ്റർ ചെയ്യുന്നു. + +### പാർസിംഗ് & പാർട്ട്-ഓഫ്-സ്പീച്ച് ടാഗിംഗ് + +ടോക്കൺ ചെയ്ത ഓരോ വാക്കും വാക്കിന്റെ ഭാഗമായി ടാഗ് ചെയ്യാം - നാമം, ക്രിയ, വിശേഷണം എന്നിവ. `the quick red fox jumped over the lazy brown dog` എന്ന വാക്യം fox = നാമം, jumped = ക്രിയ എന്നിങ്ങനെ POS ടാഗ് ചെയ്യാം. + +![parsing](../../../../translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.ml.png) + +> **Pride and Prejudice** എന്ന വാക്യം പാർസ് ചെയ്യുന്നു. ഇൻഫോഗ്രാഫിക് [Jen Looper](https://twitter.com/jenlooper) + +പാർസിംഗ് വാക്യത്തിലെ വാക്കുകൾ തമ്മിൽ എങ്ങനെ ബന്ധപ്പെട്ടിരിക്കുന്നു എന്ന് തിരിച്ചറിയലാണ് - ഉദാഹരണത്തിന് `the quick red fox jumped` എന്നത് വിശേഷണം-നാമം-ക്രിയ ക്രമമാണ്, ഇത് `lazy brown dog` എന്ന ക്രമത്തിൽ നിന്ന് വേർതിരിച്ചിരിക്കുന്നു. + +### വാക്കുകളും വാചകങ്ങളും ആവൃത്തി + +വലിയ ടെക്സ്റ്റ് വിശകലനം ചെയ്യുമ്പോൾ, ഓരോ വാക്കിന്റെയും വാചകത്തിന്റെയും ആവൃത്തി എത്രയാണെന്ന് ഒരു നിഘണ്ടു നിർമ്മിക്കുന്നത് ഉപകാരപ്രദമാണ്. `the quick red fox jumped over the lazy brown dog` എന്ന വാചകത്തിൽ the എന്ന വാക്കിന്റെ ആവൃത്തി 2 ആണ്. + +വാക്കുകളുടെ ആവൃത്തി എണ്ണുന്ന ഒരു ഉദാഹരണം നോക്കാം. റുഡ്യാർഡ് കിപ്ലിങ്ങിന്റെ കവിത The Winners-ൽ താഴെ പറയുന്ന വരികൾ ഉണ്ട്: + +```output +What the moral? Who rides may read. +When the night is thick and the tracks are blind +A friend at a pinch is a friend, indeed, +But a fool to wait for the laggard behind. +Down to Gehenna or up to the Throne, +He travels the fastest who travels alone. +``` + +വാചകങ്ങളുടെ ആവൃത്തി ആവശ്യാനുസരണം കേസ് ഇൻസെൻസിറ്റീവ് അല്ലെങ്കിൽ കേസ് സെൻസിറ്റീവ് ആകാം, `a friend` എന്ന വാചകത്തിന്റെ ആവൃത്തി 2 ആണ്, `the` 6 ആണ്, `travels` 2 ആണ്. + +### എൻ-ഗ്രാമുകൾ + +ഒരു ടെക്സ്റ്റ് നിശ്ചിത നീളമുള്ള വാക്കുകളുടെ ക്രമങ്ങളായി വിഭജിക്കാം, ഒറ്റ വാക്ക് (യൂണിഗ്രാം), രണ്ട് വാക്കുകൾ (ബൈഗ്രാമുകൾ), മൂന്ന് വാക്കുകൾ (ട്രൈഗ്രാമുകൾ) അല്ലെങ്കിൽ ഏതെങ്കിലും എണ്ണം വാക്കുകൾ (എൻ-ഗ്രാമുകൾ). + +ഉദാഹരണത്തിന് `the quick red fox jumped over the lazy brown dog` എന്ന വാചകത്തിൽ എൻ-ഗ്രാം സ്കോർ 2 ഉപയോഗിച്ചാൽ താഴെ പറയുന്ന എൻ-ഗ്രാമുകൾ ഉണ്ടാകും: + +1. the quick +2. quick red +3. red fox +4. fox jumped +5. jumped over +6. over the +7. the lazy +8. lazy brown +9. brown dog + +ഇത് ഒരു സ്ലൈഡിംഗ് ബോക്സ് പോലെ വാക്യത്തിൽ സ്ലൈഡ് ചെയ്യുന്നതായി കാണിക്കാം. 3 വാക്കുകളുടെ എൻ-ഗ്രാമുകൾക്ക് ഉദാഹരണം, ഓരോ വാക്യത്തിലും എൻ-ഗ്രാം ബോൾഡ് ചെയ്തിരിക്കുന്നു: + +1. **the quick red** fox jumped over the lazy brown dog +2. the **quick red fox** jumped over the lazy brown dog +3. the quick **red fox jumped** over the lazy brown dog +4. the quick red **fox jumped over** the lazy brown dog +5. the quick red fox **jumped over the** lazy brown dog +6. the quick red fox jumped **over the lazy** brown dog +7. the quick red fox jumped over **the lazy brown** dog +8. the quick red fox jumped over the **lazy brown dog** + +![n-grams sliding window](../../../../6-NLP/2-Tasks/images/n-grams.gif) + +> എൻ-ഗ്രാം മൂല്യം 3: ഇൻഫോഗ്രാഫിക് [Jen Looper](https://twitter.com/jenlooper) + +### നാമവാചക വാചകങ്ങൾ എക്സ്ട്രാക്ഷൻ + +മിക്കവാറും വാക്യങ്ങളിൽ ഒരു നാമം ഉണ്ട്, അത് വാക്യത്തിന്റെ വിഷയം അല്ലെങ്കിൽ വസ്തുവാണ്. ഇംഗ്ലീഷിൽ, സാധാരണയായി 'a' അല്ലെങ്കിൽ 'an' അല്ലെങ്കിൽ 'the' മുൻപിൽ വരുന്നതായി തിരിച്ചറിയാം. വാക്യത്തിന്റെ അർത്ഥം മനസ്സിലാക്കാൻ ശ്രമിക്കുമ്പോൾ 'നാമവാചക വാചകം എക്സ്ട്രാക്റ്റ് ചെയ്യൽ' എന്നത് സാധാരണ ടാസ്കാണ്. + +✅ "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun." എന്ന വാക്യത്തിൽ നാമവാചക വാചകങ്ങൾ തിരിച്ചറിയാമോ? + +`the quick red fox jumped over the lazy brown dog` എന്ന വാക്യത്തിൽ 2 നാമവാചക വാചകങ്ങൾ ഉണ്ട്: **quick red fox** and **lazy brown dog**. + +### സന്റിമെന്റ് അനാലിസിസ് + +ഒരു വാക്യം അല്ലെങ്കിൽ ടെക്സ്റ്റ് സന്റിമെന്റ് അനാലിസിസ് ചെയ്യാം, അതായത് അത് എത്രത്തോളം *സ pozitive* അല്ലെങ്കിൽ *negative* ആണെന്ന്. സന്റിമെന്റ് *പോളാരിറ്റി*യും *ഓബ്ജക്റ്റിവിറ്റി/സബ്ജക്റ്റിവിറ്റി*യും ഉപയോഗിച്ച് അളക്കുന്നു. പോളാരിറ്റി -1.0 മുതൽ 1.0 വരെ (നെഗറ്റീവ് മുതൽ പോസിറ്റീവ് വരെ) അളക്കുന്നു, 0.0 മുതൽ 1.0 വരെ (മികച്ച ഓബ്ജക്റ്റീവ് മുതൽ ഏറ്റവും സബ്ജക്റ്റീവ് വരെ) അളക്കുന്നു. + +✅ പിന്നീട് നിങ്ങൾക്ക് മെഷീൻ ലേണിങ്ങ് ഉപയോഗിച്ച് സന്റിമെന്റ് നിർണയിക്കുന്ന വ്യത്യസ്ത മാർഗ്ഗങ്ങൾ പഠിക്കാം, എന്നാൽ ഒരു മാർഗ്ഗം മനുഷ്യ വിദഗ്ധൻ പോസിറ്റീവ് അല്ലെങ്കിൽ നെഗറ്റീവ് ആയി വർഗ്ഗീകരിച്ച വാക്കുകളും വാചകങ്ങളും ഉള്ള ലിസ്റ്റ് ഉപയോഗിച്ച് ആ മോഡൽ ടെക്സ്റ്റിൽ പ്രയോഗിച്ച് പോളാരിറ്റി സ്കോർ കണക്കാക്കുകയാണ്. ചില സാഹചര്യങ്ങളിൽ ഇത് എങ്ങനെ പ്രവർത്തിക്കുമെന്ന് നിങ്ങൾക്ക് കാണാമോ? ചിലപ്പോൾ കുറവായി? + +### ഇൻഫ്ലെക്ഷൻ + +ഇൻഫ്ലെക്ഷൻ ഒരു വാക്കിന്റെ ഏകവചനം അല്ലെങ്കിൽ ബഹുവചനം കണ്ടെത്താൻ സഹായിക്കുന്നു. + +### ലെമ്മറ്റൈസേഷൻ + +*ലെമ്മ* എന്നത് വാക്കുകളുടെ ഒരു കൂട്ടത്തിനുള്ള മൂല വാക്ക് അല്ലെങ്കിൽ ഹെഡ്‌വേഡ് ആണ്, ഉദാഹരണത്തിന് *flew*, *flies*, *flying* എന്നവയ്ക്ക് *fly* എന്ന ക്രിയയുടെ ലെമ്മ ഉണ്ട്. + +NLP ഗവേഷകർക്കായി ചില ഉപകാരപ്രദമായ ഡാറ്റാബേസുകളും ലഭ്യമാണ്, പ്രത്യേകിച്ച്: + +### വേഡ്‌നെറ്റ് + +[WordNet](https://wordnet.princeton.edu/) പല ഭാഷകളിലെ ഓരോ വാക്കിനും പദസമാനാർത്ഥങ്ങൾ, വിരുദ്ധാർത്ഥങ്ങൾ, മറ്റ് വിവരങ്ങൾ ഉൾക്കൊള്ളുന്ന ഒരു ഡാറ്റാബേസ് ആണ്. വിവർത്തനങ്ങൾ, സ്പെൽ ചെക്കറുകൾ, ഭാഷാ ഉപകരണങ്ങൾ നിർമ്മിക്കുമ്പോൾ ഇത് വളരെ ഉപകാരപ്രദമാണ്. + +## NLP ലൈബ്രറികൾ + +സൗഭാഗ്യവശാൽ, ഈ സാങ്കേതിക വിദ്യകൾ എല്ലാം നിങ്ങൾ തന്നെ നിർമ്മിക്കേണ്ടതില്ല, കാരണം സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗ് അല്ലെങ്കിൽ മെഷീൻ ലേണിങ്ങിൽ വിദഗ്ധരല്ലാത്ത ഡെവലപ്പർമാർക്കും ഇത് എളുപ്പത്തിൽ ഉപയോഗിക്കാവുന്ന മികച്ച Python ലൈബ്രറികൾ ലഭ്യമാണ്. അടുത്ത പാഠങ്ങളിൽ ഇതിന്റെ കൂടുതൽ ഉദാഹരണങ്ങൾ ഉൾപ്പെടും, എന്നാൽ ഇവിടെ അടുത്ത ടാസ്കിന് സഹായകമായ ചില ഉദാഹരണങ്ങൾ പഠിക്കാം. + +### വ്യായാമം - `TextBlob` ലൈബ്രറി ഉപയോഗിച്ച് + +TextBlob എന്ന ലൈബ്രറി ഉപയോഗിക്കാം, കാരണം ഇത് ഈ തരം ടാസ്കുകൾ കൈകാര്യം ചെയ്യാൻ സഹായിക്കുന്ന APIകൾ ഉൾക്കൊള്ളുന്നു. TextBlob "വലിയ [NLTK](https://nltk.org)യും [pattern](https://github.com/clips/pattern) ഉം ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നു." അതിന്റെ APIയിൽ വലിയ തോതിൽ ML ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. + +> കുറിപ്പ്: TextBlob-ന് അനുയോജ്യമായ [ക്വിക്ക് സ്റ്റാർട്ട്](https://textblob.readthedocs.io/en/dev/quickstart.html#quickstart) ഗൈഡ് പരിചയസമ്പന്നരായ Python ഡെവലപ്പർമാർക്ക് ശുപാർശ ചെയ്യുന്നു + +*നാമവാചക വാചകങ്ങൾ* തിരിച്ചറിയാൻ ശ്രമിക്കുമ്പോൾ, TextBlob നാമവാചക വാചകങ്ങൾ കണ്ടെത്താൻ വിവിധ എക്സ്ട്രാക്ടറുകൾ നൽകുന്നു. + +1. `ConllExtractor` നോക്കൂ. + + ```python + from textblob import TextBlob + from textblob.np_extractors import ConllExtractor + # പിന്നീട് ഉപയോഗിക്കാൻ Conll എക്സ്ട്രാക്ടർ ഇറക്കുമതി ചെയ്ത് സൃഷ്ടിക്കുക + extractor = ConllExtractor() + + # പിന്നീട് നിങ്ങൾക്ക് ഒരു നൗൺ ഫ്രേസ് എക്സ്ട്രാക്ടർ ആവശ്യമുള്ളപ്പോൾ: + user_input = input("> ") + user_input_blob = TextBlob(user_input, np_extractor=extractor) # ഡിഫോൾട്ട് അല്ലാത്ത എക്സ്ട്രാക്ടർ വ്യക്തമാക്കിയിരിക്കുന്നു + np = user_input_blob.noun_phrases + ``` + + > ഇവിടെ എന്താണ് നടക്കുന്നത്? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor) "ConLL-2000 പരിശീലന കോർപ്പസ് ഉപയോഗിച്ച് ട്രെയിൻ ചെയ്ത ചങ്ക് പാർസിംഗ് ഉപയോഗിക്കുന്ന നാമവാചക വാചക എക്സ്ട്രാക്ടറാണ്." ConLL-2000 2000-ലെ Computational Natural Language Learning സമ്മേളനത്തെ സൂചിപ്പിക്കുന്നു. ഓരോ വർഷവും NLP പ്രശ്നം പരിഹരിക്കാൻ ഒരു വർക്ക്‌ഷോപ്പ് സംഘടിപ്പിച്ചിരുന്നു, 2000-ൽ അത് നാമ ചങ്കിംഗ് ആയിരുന്നു. വാൾ സ്ട്രീറ്റ് ജേർണലിൽ പരിശീലനം നടത്തി, "വിഭാഗങ്ങൾ 15-18 പരിശീലന ഡാറ്റയായി (211727 ടോക്കണുകൾ) 20-ാം വിഭാഗം ടെസ്റ്റ് ഡാറ്റയായി (47377 ടോക്കണുകൾ)" ഉപയോഗിച്ചു. ഉപയോഗിച്ച പ്രക്രിയകൾ [ഇവിടെ](https://www.clips.uantwerpen.be/conll2000/chunking/) കാണാം, ഫലങ്ങൾ [ഇവിടെ](https://ifarm.nl/erikt/research/np-chunking.html). + +### ചലഞ്ച് - NLP ഉപയോഗിച്ച് നിങ്ങളുടെ ബോട്ട് മെച്ചപ്പെടുത്തൽ + +മുൻപത്തെ പാഠത്തിൽ നിങ്ങൾ വളരെ ലളിതമായ ഒരു Q&A ബോട്ട് നിർമ്മിച്ചു. ഇപ്പോൾ, നിങ്ങളുടെ ഇൻപുട്ട് സന്റിമെന്റ് അനാലിസിസ് ചെയ്ത് അതിനനുസരിച്ച് പ്രതികരണം പ്രിന്റ് ചെയ്ത് മാർവിൻ കൂടുതൽ സഹാനുഭൂതിയുള്ളവനാക്കാം. കൂടാതെ, ഒരു `noun_phrase` തിരിച്ചറിയുകയും അതിനെക്കുറിച്ച് കൂടുതൽ ചോദിക്കുകയും ചെയ്യണം. + +മികച്ച സംഭാഷണ ബോട്ട് നിർമ്മിക്കുമ്പോൾ നിങ്ങളുടെ ഘട്ടങ്ങൾ: + +1. ഉപയോക്താവിന് ബോട്ടുമായി എങ്ങനെ ഇടപഴകണമെന്ന് നിർദ്ദേശങ്ങൾ പ്രിന്റ് ചെയ്യുക +2. ലൂപ്പ് ആരംഭിക്കുക + 1. ഉപയോക്തൃ ഇൻപുട്ട് സ്വീകരിക്കുക + 2. ഉപയോക്താവ് പുറത്തുപോകാൻ ആവശ്യപ്പെട്ടാൽ, പുറത്തുകടക്കുക + 3. ഉപയോക്തൃ ഇൻപുട്ട് പ്രോസസ്സ് ചെയ്ത് അനുയോജ്യമായ സന്റിമെന്റ് പ്രതികരണം നിർണയിക്കുക + 4. സന്റിമെന്റിൽ നാമവാചക വാചകം കണ്ടെത്തിയാൽ അത് ബഹുവചനം ആക്കുകയും ആ വിഷയം കുറിച്ച് കൂടുതൽ ചോദിക്കുകയും ചെയ്യുക + 5. പ്രതികരണം പ്രിന്റ് ചെയ്യുക +3. ഘട്ടം 2-ലേക്ക് മടങ്ങുക + +TextBlob ഉപയോഗിച്ച് സന്റിമെന്റ് നിർണയിക്കുന്ന കോഡ് സ്നിപ്പെറ്റ് ഇവിടെ. സന്റിമെന്റ് പ്രതികരണത്തിന് നാല് *ഗ്രേഡിയന്റുകൾ* മാത്രമേ ഉള്ളൂ (നിങ്ങൾക്ക് കൂടുതൽ വേണമെങ്കിൽ ഉണ്ടാക്കാം): + +```python +if user_input_blob.polarity <= -0.5: + response = "Oh dear, that sounds bad. " +elif user_input_blob.polarity <= 0: + response = "Hmm, that's not great. " +elif user_input_blob.polarity <= 0.5: + response = "Well, that sounds positive. " +elif user_input_blob.polarity <= 1: + response = "Wow, that sounds great. " +``` + +നിങ്ങൾക്ക് സഹായകമായ ചില സാമ്പിൾ ഔട്ട്പുട്ട് (ഉപയോക്തൃ ഇൻപുട്ട് > അടിയന്തിര വരികളിലാണ്): + +```output +Hello, I am Marvin, the friendly robot. +You can end this conversation at any time by typing 'bye' +After typing each answer, press 'enter' +How are you today? +> I am ok +Well, that sounds positive. Can you tell me more? +> I went for a walk and saw a lovely cat +Well, that sounds positive. Can you tell me more about lovely cats? +> cats are the best. But I also have a cool dog +Wow, that sounds great. Can you tell me more about cool dogs? +> I have an old hounddog but he is sick +Hmm, that's not great. Can you tell me more about old hounddogs? +> bye +It was nice talking to you, goodbye! +``` + +ടാസ്കിന് ഒരു സാധ്യതയുള്ള പരിഹാരം [ഇവിടെ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/2-Tasks/solution/bot.py) കാണാം + +✅ അറിവ് പരിശോധിക്കൽ + +1. സഹാനുഭൂതിയുള്ള പ്രതികരണങ്ങൾ ബോട്ട് അവരെ യഥാർത്ഥത്തിൽ മനസ്സിലാക്കിയതായി 'മോഷ്ടിക്കുമോ' എന്ന് നിങ്ങൾ കരുതുന്നുണ്ടോ? +2. നാമവാചക വാചകം തിരിച്ചറിയുന്നത് ബോട്ടിനെ കൂടുതൽ 'വിശ്വസനീയമാക്കുമോ'? +3. ഒരു വാക്യത്തിൽ നിന്ന് 'നാമവാചക വാചകം' എടുക്കുന്നത് എന്തുകൊണ്ട് ഉപകാരപ്രദമാണ്? + +--- + +മുൻ അറിവ് പരിശോധിക്കൽയിൽ ബോട്ട് നടപ്പിലാക്കി ഒരു സുഹൃത്തിന്മേൽ പരീക്ഷിക്കൂ. അത് അവരെ മോഷ്ടിക്കുമോ? നിങ്ങൾക്ക് നിങ്ങളുടെ ബോട്ട് കൂടുതൽ 'വിശ്വസനീയമാക്കാനാകുമോ'? + +## 🚀ചലഞ്ച് + +മുൻ അറിവ് പരിശോധിക്കൽയിലെ ഒരു ടാസ്ക് എടുത്ത് നടപ്പിലാക്കാൻ ശ്രമിക്കൂ. ബോട്ട് ഒരു സുഹൃത്തിന്മേൽ പരീക്ഷിക്കൂ. അത് അവരെ മോഷ്ടിക്കുമോ? നിങ്ങൾക്ക് നിങ്ങളുടെ ബോട്ട് കൂടുതൽ 'വിശ്വസനീയമാക്കാനാകുമോ'? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +അടുത്ത കുറച്ച് പാഠങ്ങളിൽ നിങ്ങൾ സന്റിമെന്റ് അനാലിസിസിനെക്കുറിച്ച് കൂടുതൽ പഠിക്കും. [KDNuggets](https://www.kdnuggets.com/tag/nlp) പോലുള്ള ലേഖനങ്ങളിൽ ഈ രസകരമായ സാങ്കേതിക വിദ്യയെക്കുറിച്ച് ഗവേഷണം നടത്തുക. + +## അസൈൻമെന്റ് + +[ഒരു ബോട്ട് സംസാരിപ്പിക്കുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/6-NLP/2-Tasks/assignment.md b/translations/ml/6-NLP/2-Tasks/assignment.md new file mode 100644 index 000000000..8a3cb1d09 --- /dev/null +++ b/translations/ml/6-NLP/2-Tasks/assignment.md @@ -0,0 +1,27 @@ + +# ഒരു ബോട്ട് മറുപടി പറയിക്കുക + +## നിർദ്ദേശങ്ങൾ + +കഴിഞ്ഞ കുറച്ച് പാഠങ്ങളിൽ, നിങ്ങൾ ഒരു അടിസ്ഥാന ബോട്ട് പ്രോഗ്രാം ചെയ്തു, അതുമായി ചാറ്റ് ചെയ്യാൻ. ഈ ബോട്ട് 'bye' എന്ന് പറയുന്നത് വരെ യാദൃച്ഛികമായ ഉത്തരങ്ങൾ നൽകുന്നു. നിങ്ങൾ പറയുന്ന പ്രത്യേക വാക്കുകൾക്ക്, ഉദാഹരണത്തിന് 'why' അല്ലെങ്കിൽ 'how', മറുപടികൾ സജീവമാക്കാൻ നിങ്ങൾക്ക് കഴിയുമോ? നിങ്ങളുടെ ബോട്ട് വികസിപ്പിക്കുമ്പോൾ ഈ തരം ജോലി കുറച്ച് മാനുവൽ ആക്കാൻ മെഷീൻ ലേണിംഗ് എങ്ങനെ സഹായിക്കാമെന്ന് കുറച്ച് ചിന്തിക്കുക. നിങ്ങളുടെ ജോലികൾ എളുപ്പമാക്കാൻ NLTK അല്ലെങ്കിൽ TextBlob ലൈബ്രറികൾ ഉപയോഗിക്കാം. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണപരമായത് | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | --------------------------------------------- | ------------------------------------------------ | ----------------------- | +| | പുതിയ bot.py ഫയൽ അവതരിപ്പിക്കുകയും രേഖപ്പെടുത്തുകയും ചെയ്യുന്നു | പുതിയ ബോട്ട് ഫയൽ അവതരിപ്പിച്ചെങ്കിലും ബഗുകൾ അടങ്ങിയിരിക്കുന്നു | ഫയൽ അവതരിപ്പിച്ചിട്ടില്ല | + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/6-NLP/3-Translation-Sentiment/README.md b/translations/ml/6-NLP/3-Translation-Sentiment/README.md new file mode 100644 index 000000000..e6a9a509c --- /dev/null +++ b/translations/ml/6-NLP/3-Translation-Sentiment/README.md @@ -0,0 +1,202 @@ + +# ML ഉപയോഗിച്ച് വിവർത്തനവും മനോഭാവ വിശകലനവും + +മുൻപത്തെ പാഠങ്ങളിൽ നിങ്ങൾ `TextBlob` ഉപയോഗിച്ച് ഒരു അടിസ്ഥാന ബോട്ട് എങ്ങനെ നിർമ്മിക്കാമെന്ന് പഠിച്ചു, ഇത് നൗൺ ഫ്രേസ് എക്സ്ട്രാക്ഷൻ പോലുള്ള അടിസ്ഥാന NLP പ്രവർത്തനങ്ങൾ നടത്താൻ ML പിന്നിൽ ഉൾപ്പെടുത്തിയ ഒരു ലൈബ്രറിയാണ്. കംപ്യൂട്ടേഷണൽ ലിംഗ്വിസ്റ്റിക്സിലെ മറ്റൊരു പ്രധാന വെല്ലുവിളി ഒരു സംസാരിച്ചോ എഴുതിയോ ഭാഷയിൽ നിന്നു മറ്റൊരു ഭാഷയിലേക്ക് വാചകത്തിന്റെ കൃത്യമായ _വിവർത്തനം_ ആണ്. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +വിവർത്തനം വളരെ കഠിനമായ പ്രശ്നമാണ്, കാരണം ആയിരക്കണക്കിന് ഭാഷകൾ ഉണ്ട്, ഓരോന്നിന്റെയും വ്യത്യസ്ത വ്യാകരണ നിയമങ്ങൾ ഉണ്ടാകാം. ഒരു സമീപനം ഒരു ഭാഷയുടെ ഔപചാരിക വ്യാകരണ നിയമങ്ങൾ, ഉദാഹരണത്തിന് ഇംഗ്ലീഷ്, ഒരു ഭാഷ-സ്വതന്ത്ര ഘടനയിലേക്ക് മാറ്റി, പിന്നീട് മറ്റൊരു ഭാഷയിലേക്ക് തിരിച്ചുവിവർത്തനം ചെയ്യുക എന്നതാണ്. ഈ സമീപനം നിങ്ങൾക്ക് താഴെപ്പറയുന്ന ഘട്ടങ്ങൾ സ്വീകരിക്കേണ്ടതുണ്ടെന്ന് സൂചിപ്പിക്കുന്നു: + +1. **അറിയുക**. ഇൻപുട്ട് ഭാഷയിലെ വാക്കുകൾ നൗൺ, ക്രിയ തുടങ്ങിയവയായി തിരിച്ചറിയുക അല്ലെങ്കിൽ ടാഗ് ചെയ്യുക. +2. **വിവർത്തനം സൃഷ്ടിക്കുക**. ലക്ഷ്യഭാഷയുടെ ഫോർമാറ്റിൽ ഓരോ വാക്കിന്റെയും നേരിട്ടുള്ള വിവർത്തനം ഉത്പാദിപ്പിക്കുക. + +### ഉദാഹരണ വാചകം, ഇംഗ്ലീഷിൽ നിന്ന് അയറിഷിലേക്ക് + +'ഇംഗ്ലീഷ്' ഭാഷയിൽ, വാചകം _I feel happy_ മൂന്ന് വാക്കുകളാണ് ക്രമത്തിൽ: + +- **വിഷയം** (I) +- **ക്രിയ** (feel) +- **വിശേഷണം** (happy) + +എങ്കിലും, 'അയറിഷ്' ഭാഷയിൽ, അതേ വാചകത്തിന് വ്യത്യസ്തമായ വ്യാകരണ ഘടനയുണ്ട് - "*happy*" അല്ലെങ്കിൽ "*sad*" പോലുള്ള വികാരങ്ങൾ നിങ്ങൾക്ക് *ഉപരി* ആയി പ്രകടിപ്പിക്കപ്പെടുന്നു. + +ഇംഗ്ലീഷ് വാചകം `I feel happy` അയറിഷിൽ `Tá athas orm` ആകും. ഒരു *ശബ്ദാർത്ഥ* വിവർത്തനം `Happy is upon me` ആകും. + +അയറിഷ് സംസാരിക്കുന്നവർ ഇംഗ്ലീഷിലേക്ക് വിവർത്തനം ചെയ്യുമ്പോൾ വാക്കുകളും വാചക ഘടനയും വ്യത്യസ്തമായാലും വാചകത്തിന്റെ അർത്ഥം മനസ്സിലാക്കുന്നതിനാൽ `I feel happy` എന്ന് പറയും, `Happy is upon me` അല്ല. + +അയറിഷ് വാചകത്തിന്റെ ഔപചാരിക ക്രമം: + +- **ക്രിയ** (Tá അല്ലെങ്കിൽ is) +- **വിശേഷണം** (athas, അല്ലെങ്കിൽ happy) +- **വിഷയം** (orm, അല്ലെങ്കിൽ upon me) + +## വിവർത്തനം + +ഒരു നൈവ് വിവർത്തന പ്രോഗ്രാം വാക്കുകൾ മാത്രം വിവർത്തനം ചെയ്യാം, വാചക ഘടന അവഗണിച്ച്. + +✅ നിങ്ങൾ ഒരു മുതിർന്നവനായി രണ്ടാമത്തെ (അല്ലെങ്കിൽ മൂന്നാമത്തെ അല്ലെങ്കിൽ കൂടുതൽ) ഭാഷ പഠിച്ചിട്ടുണ്ടെങ്കിൽ, ആദ്യം നിങ്ങളുടെ മാതൃഭാഷയിൽ ചിന്തിച്ച്, ഒരു ആശയം വാക്ക് വാക്കായി രണ്ടാമത്തെ ഭാഷയിലേക്ക് വിവർത്തനം ചെയ്ത്, പിന്നീട് അത് സംസാരിക്കാൻ തുടങ്ങിയിട്ടുണ്ടാകും. ഇത് നൈവ് വിവർത്തന കമ്പ്യൂട്ടർ പ്രോഗ്രാമുകൾ ചെയ്യുന്നതിന് സമാനമാണ്. ഈ ഘട്ടം കടന്നുപോകുന്നത് പ്രാവീണ്യം നേടാൻ പ്രധാനമാണ്! + +നൈവ് വിവർത്തനം തെറ്റായ (കഴിഞ്ഞാൽ രസകരമായ) വിവർത്തനങ്ങൾക്ക് കാരണമാകും: `I feel happy` അയറിഷിൽ ശബ്ദാർത്ഥം പോലെ `Mise bhraitheann athas` ആയി വിവർത്തനം ചെയ്യപ്പെടുന്നു. അതിന്റെ അർത്ഥം (ശബ്ദാർത്ഥം) `me feel happy` ആണ്, ഇത് സാധുവായ അയറിഷ് വാചകം അല്ല. ഇംഗ്ലീഷും അയറിഷും അടുത്തടുത്ത ദ്വീപുകളിൽ സംസാരിക്കുന്ന ഭാഷകളായിട്ടും വ്യത്യസ്ത വ്യാകരണ ഘടനകളുള്ള വ്യത്യസ്ത ഭാഷകളാണ്. + +> അയറിഷ് ഭാഷാശാസ്ത്രപരമ്പരകളെക്കുറിച്ച് [ഇവിടെ](https://www.youtube.com/watch?v=mRIaLSdRMMs) ചില വീഡിയോകൾ കാണാം + +### മെഷീൻ ലേണിംഗ് സമീപനങ്ങൾ + +ഇതുവരെ, നിങ്ങൾ സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗിന് ഔപചാരിക നിയമങ്ങൾ അടിസ്ഥാനമാക്കിയ സമീപനം പഠിച്ചു. മറ്റൊരു സമീപനം വാക്കുകളുടെ അർത്ഥം അവഗണിച്ച്, പാറ്റേണുകൾ കണ്ടെത്താൻ മെഷീൻ ലേണിംഗ് ഉപയോഗിക്കുക എന്നതാണ്. ഇത് വിവർത്തനത്തിൽ പ്രവർത്തിക്കാം, നിങ്ങൾക്ക് ഉത്ഭവവും ലക്ഷ്യഭാഷയിലും ഉള്ള വലിയ വാചകശേഖരം (*corpus*) ഉണ്ടെങ്കിൽ. + +ഉദാഹരണത്തിന്, 1813-ൽ ജെയിൻ ഓസ്റ്റിൻ എഴുതിയ പ്രശസ്തമായ ഇംഗ്ലീഷ് നോവൽ *Pride and Prejudice* എടുത്തു നോക്കാം. നിങ്ങൾ ഇംഗ്ലീഷിലും മനുഷ്യൻ വിവർത്തനം ചെയ്ത ഫ്രഞ്ച് പതിപ്പിലും പുസ്തകം പരിശോധിച്ചാൽ, ഒരു ഭാഷയിലെ വാചകങ്ങൾ മറ്റൊരഭാഷയിലേക്ക് _പ്രയോഗപരമായി_ വിവർത്തനം ചെയ്തിട്ടുണ്ടെന്ന് കണ്ടെത്താം. നിങ്ങൾ അത് ഉടൻ ചെയ്യാൻ പോകുന്നു. + +ഉദാഹരണത്തിന്, `I have no money` എന്ന ഇംഗ്ലീഷ് വാചകം ഫ്രഞ്ചിലേക്ക് ശബ്ദാർത്ഥമായി വിവർത്തനം ചെയ്താൽ, അത് `Je n'ai pas de monnaie` ആകാം. "Monnaie" ഒരു പ്രയാസമുള്ള ഫ്രഞ്ച് 'false cognate' ആണ്, 'money' ഉം 'monnaie' ഉം സമാനാർത്ഥകങ്ങൾ അല്ല. മനുഷ്യൻ നൽകുന്ന നല്ല വിവർത്തനം `Je n'ai pas d'argent` ആകും, കാരണം ഇത് നിങ്ങൾക്ക് പണം ഇല്ല എന്ന അർത്ഥം കൂടുതൽ വ്യക്തമാക്കുന്നു ('monnaie' യുടെ അർത്ഥം 'loose change' ആണ്). + +![monnaie](../../../../translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.ml.png) + +> ചിത്രം [Jen Looper](https://twitter.com/jenlooper) യുടെതാണ് + +ഒരു ML മോഡലിന് മനുഷ്യൻ നൽകിയ വിവർത്തനങ്ങൾ മതിയായ തോതിൽ ഉണ്ടെങ്കിൽ, അത് മുൻപ് പരിഭാഷപ്പെടുത്തിയ വാചകങ്ങളിൽ സാധാരണ പാറ്റേണുകൾ കണ്ടെത്തി വിവർത്തനങ്ങളുടെ കൃത്യത മെച്ചപ്പെടുത്താൻ കഴിയും. + +### അഭ്യാസം - വിവർത്തനം + +നിങ്ങൾക്ക് `TextBlob` ഉപയോഗിച്ച് വാചകങ്ങൾ വിവർത്തനം ചെയ്യാം. പ്രശസ്തമായ **Pride and Prejudice** ന്റെ ആദ്യ വരി പരീക്ഷിക്കൂ: + +```python +from textblob import TextBlob + +blob = TextBlob( + "It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife!" +) +print(blob.translate(to="fr")) + +``` + +`TextBlob` വിവർത്തനത്തിൽ നല്ല പ്രകടനം കാണിക്കുന്നു: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!". + +വാസ്തവത്തിൽ, TextBlob ന്റെ വിവർത്തനം 1932-ലെ V. Leconte, Ch. Pressoir എന്നിവരുടെ ഫ്രഞ്ച് വിവർത്തനത്തേക്കാൾ കൂടുതൽ കൃത്യമാണ് എന്ന് വാദിക്കാം: + +"C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles." + +ഈ സാഹചര്യത്തിൽ, ML-നിർദ്ദേശിച്ച വിവർത്തനം മനുഷ്യ വിവർത്തനക്കാരനേക്കാൾ മികച്ചതാണ്, കാരണം മനുഷ്യൻ 'വിവക്ഷത'ക്കായി എഴുത്തുകാരന്റെ വാക്കുകളിൽ അനാവശ്യമായി വാക്കുകൾ ചേർക്കുന്നു. + +> എന്താണ് ഇവിടെ നടക്കുന്നത്? TextBlob വിവർത്തനത്തിൽ എങ്ങനെ ഇത്ര നല്ലതാകുന്നു? പിന്നിൽ Google translate ഉപയോഗിക്കുന്നു, ഇത് ലക്ഷക്കണക്കിന് വാചകങ്ങൾ വിശകലനം ചെയ്ത് ഏറ്റവും നല്ല വിവർത്തനങ്ങൾ പ്രവചിക്കുന്ന ഒരു സങ്കീർണ്ണ AI ആണ്. ഇതിൽ യാതൊരു മാനുവൽ പ്രവർത്തനവും ഇല്ല, `blob.translate` ഉപയോഗിക്കാൻ ഇന്റർനെറ്റ് കണക്ഷൻ വേണം. + +✅ കൂടുതൽ വാചകങ്ങൾ പരീക്ഷിക്കൂ. ML-വുമോ മനുഷ്യ വിവർത്തനവുമോ മികച്ചത്? ഏത് സാഹചര്യങ്ങളിൽ? + +## മനോഭാവ വിശകലനം + +മെഷീൻ ലേണിംഗ് വളരെ നല്ല രീതിയിൽ പ്രവർത്തിക്കുന്ന മറ്റൊരു മേഖല മനോഭാവ വിശകലനമാണ്. ഒരു non-ML സമീപനം 'സ pozitive'യും 'negative' ഉം ആയ വാക്കുകളും വാചകങ്ങളും തിരിച്ചറിയുക എന്നതാണ്. പുതിയ ഒരു വാചകം ലഭിച്ചാൽ, പോസിറ്റീവ്, നെഗറ്റീവ്, ന്യൂട്രൽ വാക്കുകളുടെ മൊത്തം മൂല്യം കണക്കാക്കി ആകെ മനോഭാവം കണ്ടെത്തുക. + +ഈ സമീപനം എളുപ്പത്തിൽ തട്ടിപ്പിലാകാം, Marvin ടാസ്കിൽ നിങ്ങൾ കണ്ടതുപോലെ - `Great, that was a wonderful waste of time, I'm glad we are lost on this dark road` എന്ന വാചകം സാർകാസം നിറഞ്ഞ നെഗറ്റീവ് മനോഭാവമുള്ളതാണ്, പക്ഷേ ലളിതമായ ആൽഗോരിതം 'great', 'wonderful', 'glad' പോസിറ്റീവ് ആയി, 'waste', 'lost', 'dark' നെഗറ്റീവ് ആയി കണ്ടെത്തുന്നു. ഈ വിരുദ്ധ വാക്കുകൾ ആകെ മനോഭാവത്തെ സ്വാധീനിക്കുന്നു. + +✅ ഒരു നിമിഷം നിർത്തി മനുഷ്യർ സാർകാസം എങ്ങനെ പ്രകടിപ്പിക്കുന്നുവെന്ന് ചിന്തിക്കൂ. ടോൺ ഇൻഫ്ലെക്ഷൻ വലിയ പങ്ക് വഹിക്കുന്നു. "Well, that film was awesome" എന്ന വാചകം വ്യത്യസ്ത രീതിയിൽ പറയാൻ ശ്രമിച്ച് നിങ്ങളുടെ ശബ്ദം അർത്ഥം എങ്ങനെ കൈമാറുന്നു എന്ന് കണ്ടെത്തൂ. + +### ML സമീപനങ്ങൾ + +ML സമീപനം നെഗറ്റീവ്, പോസിറ്റീവ് ഉള്ള വാചകങ്ങൾ - ട്വീറ്റുകൾ, സിനിമാ അവലോകനങ്ങൾ, അല്ലെങ്കിൽ മനുഷ്യൻ സ്കോർ നൽകിയ എഴുത്ത് ഉള്ളവ - കൈമാറി ശേഖരിക്കുക എന്നതാണ്. പിന്നീട് NLP സാങ്കേതിക വിദ്യകൾ ഉപയോഗിച്ച് അഭിപ്രായങ്ങളും സ്കോറുകളും വിശകലനം ചെയ്ത് പാറ്റേണുകൾ കണ്ടെത്തും (ഉദാ: പോസിറ്റീവ് സിനിമാ അവലോകനങ്ങളിൽ 'Oscar worthy' എന്ന വാചകം നെഗറ്റീവ് അവലോകനങ്ങളിൽക്കാൾ കൂടുതലായി കാണപ്പെടും, അല്ലെങ്കിൽ പോസിറ്റീവ് റെസ്റ്റോറന്റ് അവലോകനങ്ങളിൽ 'gourmet' നെഗറ്റീവ് അവലോകനങ്ങളിൽക്കാൾ കൂടുതലായി പറയപ്പെടും). + +> ⚖️ **ഉദാഹരണം**: ഒരു രാഷ്ട്രീയക്കാരന്റെ ഓഫിസിൽ നിങ്ങൾ ജോലി ചെയ്യുന്നു, പുതിയ ഒരു നിയമം ചർച്ചയിലുണ്ട്. ജനങ്ങൾ അതിനെ പിന്തുണയ്ക്കുന്ന അല്ലെങ്കിൽ എതിർക്കുന്ന ഇമെയിലുകൾ അയയ്ക്കുന്നു. നിങ്ങൾക്ക് ഇമെയിലുകൾ വായിച്ച് രണ്ട് തരം പൈലുകളായി (*for* and *against*) വേർതിരിക്കാനുള്ള ചുമതല ഉണ്ടെന്ന് കരുതുക. ഇമെയിലുകൾ 많으면 എല്ലാം വായിക്കാൻ ബുദ്ധിമുട്ടാകും. ഒരു ബോട്ട് എല്ലാം വായിച്ച് മനസ്സിലാക്കി ഏത് ഇമെയിൽ ഏത് പൈലിൽ പോകുമെന്ന് പറയുമെങ്കിൽ എത്ര നല്ലതായിരിക്കും? +> +> അതിന് മെഷീൻ ലേണിംഗ് ഉപയോഗിക്കാം. *against* ഇമെയിലുകളുടെ ഒരു ഭാഗവും *for* ഇമെയിലുകളുടെ ഒരു ഭാഗവും ഉപയോഗിച്ച് മോഡൽ പരിശീലിപ്പിക്കും. മോഡൽ വാക്കുകളും പാറ്റേണുകളും *against* അല്ലെങ്കിൽ *for* ഇമെയിലുകളിൽ കൂടുതലായി കാണപ്പെടുന്നവയായി തിരിച്ചറിയും, പക്ഷേ ഉള്ളടക്കം മനസ്സിലാക്കില്ല. പരിശീലനത്തിന് ഉപയോഗിക്കാത്ത ചില ഇമെയിലുകൾ ഉപയോഗിച്ച് മോഡൽ പരീക്ഷിച്ച് നിങ്ങൾ നൽകിയ നിഗമനത്തോട് ഒത്തുപോകുന്നുണ്ടോ എന്ന് നോക്കാം. മോഡലിന്റെ കൃത്യതയിൽ സന്തോഷം ഉണ്ടെങ്കിൽ, ഭാവിയിലെ ഇമെയിലുകൾ വായിക്കാതെ തന്നെ പ്രോസസ്സ് ചെയ്യാം. + +✅ ഈ പ്രക്രിയ മുമ്പത്തെ പാഠങ്ങളിൽ നിങ്ങൾ ഉപയോഗിച്ച പ്രക്രിയകളെപ്പോലെ തോന്നുന്നുണ്ടോ? + +## അഭ്യാസം - മനോഭാവ വാചകങ്ങൾ + +മനോഭാവം -1 മുതൽ 1 വരെ ഉള്ള *polarity* ഉപയോഗിച്ച് അളക്കുന്നു, -1 ഏറ്റവും നെഗറ്റീവ്, 1 ഏറ്റവും പോസിറ്റീവ്. മനോഭാവം 0 - 1 സ്കോറിൽ ഒബ്ജക്റ്റിവിറ്റി (0)യും സബ്ജക്റ്റിവിറ്റി (1)യും അളക്കുന്നു. + +ജെയിൻ ഓസ്റ്റിന്റെ *Pride and Prejudice* വീണ്ടും നോക്കൂ. [Project Gutenberg](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) ൽ പുസ്തകം ലഭ്യമാണ്. താഴെ ഒരു ചെറിയ പ്രോഗ്രാം പുസ്തകത്തിലെ ആദ്യവും അവസാനവുമായ വാചകങ്ങളുടെ മനോഭാവം വിശകലനം ചെയ്ത് polarity, സബ്ജക്റ്റിവിറ്റി/ഒബ്ജക്റ്റിവിറ്റി സ്കോർ പ്രദർശിപ്പിക്കുന്നു. + +`TextBlob` ലൈബ്രറി (മുകളിൽ വിവരിച്ചതു പോലെ) ഉപയോഗിച്ച് `sentiment` കണ്ടെത്തുക (സ്വന്തം sentiment കാൽക്കുലേറ്റർ എഴുതേണ്ടതില്ല) ഈ ടാസ്കിൽ. + +```python +from textblob import TextBlob + +quote1 = """It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife.""" + +quote2 = """Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them.""" + +sentiment1 = TextBlob(quote1).sentiment +sentiment2 = TextBlob(quote2).sentiment + +print(quote1 + " has a sentiment of " + str(sentiment1)) +print(quote2 + " has a sentiment of " + str(sentiment2)) +``` + +താഴെപ്പറയുന്ന ഔട്ട്പുട്ട് കാണും: + +```output +It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want # of a wife. has a sentiment of Sentiment(polarity=0.20952380952380953, subjectivity=0.27142857142857146) + +Darcy, as well as Elizabeth, really loved them; and they were + both ever sensible of the warmest gratitude towards the persons + who, by bringing her into Derbyshire, had been the means of + uniting them. has a sentiment of Sentiment(polarity=0.7, subjectivity=0.8) +``` + +## വെല്ലുവിളി - sentiment polarity പരിശോധിക്കുക + +നിങ്ങളുടെ ടാസ്ക്, sentiment polarity ഉപയോഗിച്ച് *Pride and Prejudice* യിൽ പൂർണ്ണമായും പോസിറ്റീവ് വാചകങ്ങൾ പൂർണ്ണമായും നെഗറ്റീവ് വാചകങ്ങളെക്കാൾ കൂടുതലാണോ എന്ന് കണ്ടെത്തുക. polarity സ്കോർ 1 അല്ലെങ്കിൽ -1 ആണെങ്കിൽ അതിനെ പൂർണ്ണമായും പോസിറ്റീവ് അല്ലെങ്കിൽ നെഗറ്റീവ് എന്ന് കരുതാം. + +**പടികൾ:** + +1. Project Gutenberg-ൽ നിന്ന് [Pride and Prejudice](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) .txt ഫയൽ ഡൗൺലോഡ് ചെയ്യുക. ഫയലിന്റെ തുടക്കത്തിലും അവസാനം ഉള്ള മെറ്റാഡേറ്റ നീക്കം ചെയ്ത് യഥാർത്ഥ എഴുത്ത് മാത്രം വയ്ക്കുക +2. Python-ൽ ഫയൽ തുറന്ന് ഉള്ളടക്കം സ്ട്രിംഗ് ആയി എടുക്കുക +3. പുസ്തക സ്ട്രിംഗ് ഉപയോഗിച്ച് TextBlob സൃഷ്ടിക്കുക +4. പുസ്തകത്തിലെ ഓരോ വാചകവും ലൂപ്പിൽ വിശകലനം ചെയ്യുക + 1. polarity 1 അല്ലെങ്കിൽ -1 ആണെങ്കിൽ വാചകം പോസിറ്റീവ് അല്ലെങ്കിൽ നെഗറ്റീവ് സന്ദേശങ്ങളുടെ ലിസ്റ്റിൽ സൂക്ഷിക്കുക +5. അവസാനം, എല്ലാ പോസിറ്റീവ് വാചകങ്ങളും നെഗറ്റീവ് വാചകങ്ങളും (വ്യത്യസ്തമായി) പ്രിന്റ് ചെയ്യുക, കൂടാതെ ഓരോതിന്റെ എണ്ണം കാണിക്കുക. + +ഇവിടെ ഒരു സാമ്പിൾ [പരിഹാരം](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb) ഉണ്ട്. + +✅ അറിവ് പരിശോധിക്കൽ + +1. sentiment വാക്കുകളുടെ അടിസ്ഥാനത്തിലാണ്, പക്ഷേ കോഡ് വാക്കുകൾ *അർത്ഥമാക്കുന്നുണ്ടോ*? +2. sentiment polarity കൃത്യമാണെന്ന് നിങ്ങൾ കരുതുന്നുണ്ടോ, അല്ലെങ്കിൽ സ്കോറുകളുമായി നിങ്ങൾ *ഒത്തുപോകുന്നുണ്ടോ*? + 1. പ്രത്യേകിച്ച്, താഴെപ്പറയുന്ന വാചകങ്ങളുടെ പൂർണ്ണമായും **പോസിറ്റീവ്** polarity-യുമായി നിങ്ങൾ ഒത്തുപോകുന്നുണ്ടോ? + * “What an excellent father you have, girls!” said she, when the door was shut. + * “Your examination of Mr. Darcy is over, I presume,” said Miss Bingley; “and pray what is the result?” “I am perfectly convinced by it that Mr. Darcy has no defect. + * How wonderfully these sort of things occur! + * I have the greatest dislike in the world to that sort of thing. + * Charlotte is an excellent manager, I dare say. + * “This is delightful indeed! + * I am so happy! + * Your idea of the ponies is delightful. + 2. അടുത്ത 3 വാചകങ്ങൾ പൂർണ്ണമായും പോസിറ്റീവ് polarity ലഭിച്ചു, പക്ഷേ വായിച്ചാൽ അവ പോസിറ്റീവ് അല്ല. sentiment analysis അവ പോസിറ്റീവ് എന്ന് കരുതിയത് എന്തുകൊണ്ടാണ്? + * Happy shall I be, when his stay at Netherfield is over!” “I wish I could say anything to comfort you,” replied Elizabeth; “but it is wholly out of my power. + * If I could but see you as happy! + * Our distress, my dear Lizzy, is very great. + 3. താഴെപ്പറയുന്ന വാചകങ്ങളുടെ പൂർണ്ണമായും **നെഗറ്റീവ്** polarity-യുമായി നിങ്ങൾ ഒത്തുപോകുന്നുണ്ടോ? + - Everybody is disgusted with his pride. + - “I should like to know how he behaves among strangers.” “You shall hear then—but prepare yourself for something very dreadful. + - The pause was to Elizabeth’s feelings dreadful. + - It would be dreadful! + +✅ ജെയിൻ ഓസ്റ്റിന്റെ ആരാധകർക്ക് അറിയാം, അവർ അവരുടെ പുസ്തകങ്ങൾ ഇംഗ്ലീഷ് റെജൻസി സമൂഹത്തിലെ കൂടുതൽ വാസ്തവവിരുദ്ധമായ വശങ്ങൾ വിമർശിക്കാൻ ഉപയോഗിക്കുന്നു. *Pride and Prejudice* ന്റെ പ്രധാന കഥാപാത്രം എലിസബത്ത് ബെനെറ്റ് (എഴുത്തുകാരനുപോലെ) ഒരു സൂക്ഷ്മ സാമൂഹിക നിരീക്ഷകയാണ്, അവളുടെ ഭാഷ പലപ്പോഴും വളരെ സൂക്ഷ്മമാണ്. കഥയിലെ പ്രണയവ്യക്തി മിസ്റ്റർ ഡാർസി പോലും എലിസബത്തിന്റെ കളിയാട്ടവും ചിരിപ്പിക്കുന്ന ഭാഷ ഉപയോഗവും ശ്രദ്ധിച്ചിട്ടുണ്ട്: "I have had the pleasure of your acquaintance long enough to know that you find great enjoyment in occasionally professing opinions which in fact are not your own." + +--- + +## 🚀 വെല്ലുവിളി + +ഉപയോക്തൃ ഇൻപുട്ടിൽ നിന്ന് മറ്റ് സവിശേഷതകൾ എടുക്കുന്നതിലൂടെ Marvin-നെ കൂടുതൽ മെച്ചപ്പെടുത്താമോ? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) +## അവലോകനം & സ്വയം പഠനം + +വാചകത്തിൽ നിന്നുള്ള മനോഭാവം എടുക്കാനുള്ള നിരവധി മാർഗ്ഗങ്ങളുണ്ട്. ഈ സാങ്കേതികവിദ്യ ഉപയോഗിക്കുന്ന ബിസിനസ് പ്രയോഗങ്ങളെക്കുറിച്ച് ചിന്തിക്കുക. ഇത് എങ്ങനെ തെറ്റിക്കാമെന്ന് ചിന്തിക്കുക. [Azure Text Analysis](https://docs.microsoft.com/azure/cognitive-services/Text-Analytics/how-tos/text-analytics-how-to-sentiment-analysis?tabs=version-3-1?WT.mc_id=academic-77952-leestott) പോലുള്ള മനോഭാവം വിശകലനം ചെയ്യുന്ന സങ്കീർണ്ണമായ എന്റർപ്രൈസ്-സജ്ജമായ സിസ്റ്റങ്ങളേക്കുറിച്ച് കൂടുതൽ വായിക്കുക. മുകളിൽ നൽകിയ പ്രൈഡ് ആൻഡ് പ്രെജുഡിസ് വാചകങ്ങളിൽ ചിലത് പരീക്ഷിച്ച് സൂക്ഷ്മത കണ്ടെത്താൻ കഴിയുന്നുണ്ടോ എന്ന് നോക്കുക. + +## അസൈൻമെന്റ് + +[Poetic license](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/6-NLP/3-Translation-Sentiment/assignment.md b/translations/ml/6-NLP/3-Translation-Sentiment/assignment.md new file mode 100644 index 000000000..a62bb610b --- /dev/null +++ b/translations/ml/6-NLP/3-Translation-Sentiment/assignment.md @@ -0,0 +1,27 @@ + +# കവിതാ ലൈസൻസ് + +## നിർദ്ദേശങ്ങൾ + +[ഈ നോട്ട്‌ബുക്കിൽ](https://www.kaggle.com/jenlooper/emily-dickinson-word-frequency) നിങ്ങൾക്ക് മുൻപ് ആഴുറ്റ ടെക്സ്റ്റ് അനലിറ്റിക്സ് ഉപയോഗിച്ച് സാന്ദ്രത വിശകലനം ചെയ്ത 500-ലധികം എമിലി ഡിക്കിൻസൺ കവിതകൾ കണ്ടെത്താം. ഈ ഡാറ്റാസെറ്റ് ഉപയോഗിച്ച്, പാഠത്തിൽ വിവരിച്ച സാങ്കേതിക വിദ്യകൾ ഉപയോഗിച്ച് വിശകലനം ചെയ്യുക. ഒരു കവിതയുടെ നിർദ്ദേശിച്ച സാന്ദ്രത ആഴുറ്റ സേവനത്തിന്റെ തീരുമാനത്തോട് പൊരുത്തപ്പെടുന്നുണ്ടോ? നിങ്ങളുടെ അഭിപ്രായത്തിൽ എന്തുകൊണ്ടാണ് അങ്ങനെ? എന്തെങ്കിലും നിങ്ങൾക്ക് അത്ഭുതം തോന്നുന്നുണ്ടോ? + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണാർത്ഥം | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | -------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------ | +| | ഒരു എഴുത്തുകാരന്റെ സാമ്പിൾ ഔട്ട്പുട്ടിന്റെ ഉറച്ച വിശകലനത്തോടെ ഒരു നോട്ട്‌ബുക്ക് അവതരിപ്പിച്ചിരിക്കുന്നു | നോട്ട്‌ബുക്ക് അപൂർണ്ണമാണ് അല്ലെങ്കിൽ വിശകലനം നടത്തുന്നില്ല | നോട്ട്‌ബുക്ക് അവതരിപ്പിച്ചിട്ടില്ല | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ പ്രാമാണികമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/6-NLP/3-Translation-Sentiment/solution/Julia/README.md b/translations/ml/6-NLP/3-Translation-Sentiment/solution/Julia/README.md new file mode 100644 index 000000000..5cdb5b03e --- /dev/null +++ b/translations/ml/6-NLP/3-Translation-Sentiment/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ഇത് ഒരു താൽക്കാലിക പ്ലേസ്ഹോൾഡറാണ് + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/6-NLP/3-Translation-Sentiment/solution/R/README.md b/translations/ml/6-NLP/3-Translation-Sentiment/solution/R/README.md new file mode 100644 index 000000000..2295477cd --- /dev/null +++ b/translations/ml/6-NLP/3-Translation-Sentiment/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/ml/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb b/translations/ml/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb new file mode 100644 index 000000000..443c319e8 --- /dev/null +++ b/translations/ml/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb @@ -0,0 +1,100 @@ +{ + "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": "27de2abc0235ebd22080fc8f1107454d", + "translation_date": "2025-12-19T16:49:16+00:00", + "source_file": "6-NLP/3-Translation-Sentiment/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from textblob import TextBlob\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# You should download the book text, clean it, and import it here\n", + "with open(\"pride.txt\", encoding=\"utf8\") as f:\n", + " file_contents = f.read()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "book_pride = TextBlob(file_contents)\n", + "positive_sentiment_sentences = []\n", + "negative_sentiment_sentences = []" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for sentence in book_pride.sentences:\n", + " if sentence.sentiment.polarity == 1:\n", + " positive_sentiment_sentences.append(sentence)\n", + " if sentence.sentiment.polarity == -1:\n", + " negative_sentiment_sentences.append(sentence)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"The \" + str(len(positive_sentiment_sentences)) + \" most positive sentences:\")\n", + "for sentence in positive_sentiment_sentences:\n", + " print(\"+ \" + str(sentence.replace(\"\\n\", \"\").replace(\" \", \" \")))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"The \" + str(len(negative_sentiment_sentences)) + \" most negative sentences:\")\n", + "for sentence in negative_sentiment_sentences:\n", + " print(\"- \" + str(sentence.replace(\"\\n\", \"\").replace(\" \", \" \")))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/6-NLP/4-Hotel-Reviews-1/README.md b/translations/ml/6-NLP/4-Hotel-Reviews-1/README.md new file mode 100644 index 000000000..30a0d8925 --- /dev/null +++ b/translations/ml/6-NLP/4-Hotel-Reviews-1/README.md @@ -0,0 +1,419 @@ + +# ഹോട്ടൽ റിവ്യൂവുകളുമായി സെന്റിമെന്റ് വിശകലനം - ഡാറ്റ പ്രോസസ്സ് ചെയ്യൽ + +ഈ വിഭാഗത്തിൽ നിങ്ങൾ മുമ്പത്തെ പാഠങ്ങളിൽ ഉപയോഗിച്ച സാങ്കേതിക വിദ്യകൾ ഉപയോഗിച്ച് ഒരു വലിയ ഡാറ്റാസെറ്റിന്റെ എക്സ്പ്ലോറട്ടറി ഡാറ്റ അനാലിസിസ് നടത്തും. വിവിധ കോളങ്ങളുടെയും പ്രയോജനത്തെക്കുറിച്ച് നല്ലൊരു ബോധം ലഭിച്ച ശേഷം, നിങ്ങൾ പഠിക്കും: + +- അനാവശ്യ കോളങ്ങൾ എങ്ങനെ നീക്കം ചെയ്യാം +- നിലവിലുള്ള കോളങ്ങൾ അടിസ്ഥാനമാക്കി പുതിയ ഡാറ്റ എങ്ങനെ കണക്കാക്കാം +- ഫൈനൽ ചലഞ്ചിൽ ഉപയോഗിക്കാൻ ഫലമായ ഡാറ്റാസെറ്റ് എങ്ങനെ സേവ് ചെയ്യാം + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +### പരിചയം + +ഇതുവരെ നിങ്ങൾ പഠിച്ചത് ടെക്സ്റ്റ് ഡാറ്റ സംഖ്യാത്മക ഡാറ്റയുമായി വളരെ വ്യത്യസ്തമാണെന്ന് ആണ്. മനുഷ്യൻ എഴുതിയതോ സംസാരിച്ചതോ ആയ ടെക്സ്റ്റ് പാറ്റേണുകളും ആവൃത്തി, സെന്റിമെന്റ്, അർത്ഥം കണ്ടെത്താൻ വിശകലനം ചെയ്യാവുന്നതാണ്. ഈ പാഠം നിങ്ങൾക്ക് യഥാർത്ഥ ഡാറ്റാസെറ്റും യഥാർത്ഥ വെല്ലുവിളിയും നൽകുന്നു: **[515K Hotel Reviews Data in Europe](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)**, കൂടാതെ [CC0: Public Domain ലൈസൻസ്](https://creativecommons.org/publicdomain/zero/1.0/) ഉൾക്കൊള്ളുന്നു. ഇത് Booking.com-ൽ നിന്നുള്ള പൊതു ഉറവിടങ്ങളിൽ നിന്നാണ് സ്ക്രാപ്പ് ചെയ്തിരിക്കുന്നത്. ഡാറ്റാസെറ്റ് സൃഷ്ടിച്ചത് ജിയാഷൻ ലിയു ആണ്. + +### തയ്യാറെടുപ്പ് + +നിങ്ങൾക്ക് ആവശ്യമായത്: + +* Python 3 ഉപയോഗിച്ച് .ipynb നോട്ട്‌ബുക്കുകൾ ഓടിക്കാൻ കഴിവ് +* pandas +* NLTK, [ഇത് നിങ്ങൾക്ക് ലോക്കലായി ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതാണ്](https://www.nltk.org/install.html) +* Kaggle-ൽ ലഭ്യമായ ഡാറ്റാസെറ്റ് [515K Hotel Reviews Data in Europe](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe). ഇത് അന്ജിപ്പിച്ചപ്പോൾ ഏകദേശം 230 MB ആണ്. ഈ NLP പാഠങ്ങളുമായി ബന്ധപ്പെട്ട `/data` റൂട്ട് ഫോൾഡറിൽ ഡൗൺലോഡ് ചെയ്യുക. + +## എക്സ്പ്ലോറട്ടറി ഡാറ്റ അനാലിസിസ് + +ഈ വെല്ലുവിളി നിങ്ങൾ സെന്റിമെന്റ് അനാലിസിസും ഗസ്റ്റ് റിവ്യൂ സ്കോറുകളും ഉപയോഗിച്ച് ഹോട്ടൽ ശുപാർശ ബോട്ട് നിർമ്മിക്കുന്നതായി കരുതുന്നു. നിങ്ങൾ ഉപയോഗിക്കുന്ന ഡാറ്റാസെറ്റിൽ 6 നഗരങ്ങളിലെ 1493 വ്യത്യസ്ത ഹോട്ടലുകളുടെ റിവ്യൂവുകൾ ഉൾക്കൊള്ളുന്നു. + +Python, ഹോട്ടൽ റിവ്യൂ ഡാറ്റാസെറ്റ്, NLTK സെന്റിമെന്റ് അനാലിസിസ് ഉപയോഗിച്ച് നിങ്ങൾ കണ്ടെത്താൻ കഴിയും: + +* റിവ്യൂവുകളിൽ ഏറ്റവും അധികം ഉപയോഗിക്കുന്ന വാക്കുകളും വാചകങ്ങളും എന്തൊക്കെയാണ്? +* ഹോട്ടലിനെ വിവരണാത്മകമായി അടയാളപ്പെടുത്തുന്ന ഔദ്യോഗിക *ടാഗുകൾ* റിവ്യൂ സ്കോറുകളുമായി (ഉദാ: *കുട്ടികളോടുള്ള കുടുംബം* എന്ന ടാഗ് ഉള്ള ഹോട്ടലിൽ *സോളോ ട്രാവലർ* എന്ന ടാഗുള്ളവരെക്കാൾ കൂടുതൽ നെഗറ്റീവ് റിവ്യൂവുണ്ടോ?) ബന്ധമുണ്ടോ? +* NLTK സെന്റിമെന്റ് സ്കോറുകൾ ഹോട്ടൽ റിവ്യൂവറുടെ സംഖ്യാത്മക സ്കോറുമായി 'ഒത്തുപോകുന്നുണ്ടോ'? + +#### ഡാറ്റാസെറ്റ് + +നിങ്ങൾ ഡൗൺലോഡ് ചെയ്ത് ലോക്കലായി സേവ് ചെയ്ത ഡാറ്റാസെറ്റ് പരിശോധിക്കാം. VS Code പോലുള്ള എഡിറ്റർ അല്ലെങ്കിൽ Excel-ൽ ഫയൽ തുറക്കുക. + +ഡാറ്റാസെറ്റിലെ ഹെഡറുകൾ ഇപ്രകാരമാണ്: + +*Hotel_Address, Additional_Number_of_Scoring, Review_Date, Average_Score, Hotel_Name, Reviewer_Nationality, Negative_Review, Review_Total_Negative_Word_Counts, Total_Number_of_Reviews, Positive_Review, Review_Total_Positive_Word_Counts, Total_Number_of_Reviews_Reviewer_Has_Given, Reviewer_Score, Tags, days_since_review, lat, lng* + +ഇവയെ ഒരു എളുപ്പത്തിൽ പരിശോധിക്കാൻ കഴിയുന്ന വിധത്തിൽ ഗ്രൂപ്പുചെയ്തിരിക്കുന്നു: +##### ഹോട്ടൽ കോളങ്ങൾ + +* `Hotel_Name`, `Hotel_Address`, `lat` (അക്ഷാംശം), `lng` (രേഖാംശം) + * *lat* ഉം *lng* ഉം ഉപയോഗിച്ച് Python-ൽ ഹോട്ടലുകളുടെ സ്ഥാനം കാണിക്കുന്ന ഒരു മാപ്പ് പ്ലോട്ട് ചെയ്യാം (നെഗറ്റീവ്, പോസിറ്റീവ് റിവ്യൂവുകൾ നിറംകൊണ്ട് വ്യത്യാസപ്പെടുത്താം) + * Hotel_Address നമുക്ക് വ്യക്തമായി പ്രയോജനകരമല്ല, അതിനാൽ അത് രാജ്യമായി മാറ്റി എളുപ്പത്തിൽ സോർട്ട് ചെയ്യാനും തിരയാനും കഴിയും + +**ഹോട്ടൽ മെറ്റാ-റിവ്യൂ കോളങ്ങൾ** + +* `Average_Score` + * ഡാറ്റാസെറ്റ് സൃഷ്ടിച്ചവന്റെ പ്രകാരം, ഈ കോളം *കഴിഞ്ഞ വർഷം ഏറ്റവും പുതിയ കമന്റിന്റെ അടിസ്ഥാനത്തിൽ കണക്കാക്കിയ ഹോട്ടലിന്റെ ശരാശരി സ്കോർ* ആണ്. ഇത് സ്കോർ കണക്കാക്കാനുള്ള അസാധാരണമായ രീതിയാണെന്ന് തോന്നുന്നു, പക്ഷേ ഡാറ്റ സ്ക്രാപ്പ് ചെയ്തതാണെന്നതിനാൽ ഇപ്പോൾ ഇതിനെ വിശ്വസിക്കാം. + + ✅ ഈ ഡാറ്റയിലെ മറ്റ് കോളങ്ങൾ അടിസ്ഥാനമാക്കി ശരാശരി സ്കോർ കണക്കാക്കാനുള്ള മറ്റൊരു മാർഗം നിങ്ങൾക്ക് തോന്നുന്നുണ്ടോ? + +* `Total_Number_of_Reviews` + * ഈ ഹോട്ടലിന് ലഭിച്ച മൊത്തം റിവ്യൂവുകളുടെ എണ്ണം - ഇത് ഡാറ്റാസെറ്റിലെ റിവ്യൂവുകളെ സൂചിപ്പിക്കുന്നതാണോ എന്ന് (കൂടുതൽ കോഡ് എഴുതാതെ) വ്യക്തമല്ല. +* `Additional_Number_of_Scoring` + * റിവ്യൂവറുടെ റിവ്യൂ എഴുതാതെ റിവ്യൂ സ്കോർ നൽകിയിട്ടുള്ളത് + +**റിവ്യൂ കോളങ്ങൾ** + +- `Reviewer_Score` + - ഏറ്റവും കൂടുതൽ 1 ദശാംശം വരെ ഉള്ള സംഖ്യാത്മക മൂല്യം, കുറഞ്ഞത് 2.5, ഉയരം 10 വരെ + - 2.5 ഏറ്റവും കുറഞ്ഞ സ്കോർ ആണെന്ന് എന്തുകൊണ്ട് എന്ന് വിശദീകരിച്ചിട്ടില്ല +- `Negative_Review` + - റിവ്യൂവർ ഒന്നും എഴുതിയില്ലെങ്കിൽ ഈ ഫീൽഡിൽ "**No Negative**" ഉണ്ടാകും + - റിവ്യൂവർ നെഗറ്റീവ് റിവ്യൂ കോളത്തിൽ പോസിറ്റീവ് റിവ്യൂ എഴുതിയിരിക്കാം (ഉദാ: "ഈ ഹോട്ടലിൽ ഒന്നും തെറ്റില്ല") +- `Review_Total_Negative_Word_Counts` + - ഉയർന്ന നെഗറ്റീവ് വാക്കുകളുടെ എണ്ണം കുറഞ്ഞ സ്കോർ സൂചിപ്പിക്കുന്നു (സെന്റിമെന്റ് പരിശോധിക്കാതെ) +- `Positive_Review` + - റിവ്യൂവർ ഒന്നും എഴുതിയില്ലെങ്കിൽ "**No Positive**" കാണിക്കും + - റിവ്യൂവർ പോസിറ്റീവ് റിവ്യൂ കോളത്തിൽ നെഗറ്റീവ് റിവ്യൂ എഴുതിയിരിക്കാം (ഉദാ: "ഈ ഹോട്ടലിൽ ഒന്നും നല്ലതല്ല") +- `Review_Total_Positive_Word_Counts` + - ഉയർന്ന പോസിറ്റീവ് വാക്കുകളുടെ എണ്ണം ഉയർന്ന സ്കോർ സൂചിപ്പിക്കുന്നു (സെന്റിമെന്റ് പരിശോധിക്കാതെ) +- `Review_Date` and `days_since_review` + - ഒരു റിവ്യൂവിന്റെ പുതുമ അല്ലെങ്കിൽ പഴക്കം അളക്കാൻ ഉപയോഗിക്കാം (പഴയ റിവ്യൂകൾ പുതിയവയെക്കാൾ കൃത്യമല്ലാതിരിക്കാം, കാരണം ഹോട്ടൽ മാനേജ്മെന്റ് മാറിയിരിക്കാം, നവീകരണങ്ങൾ നടന്നിരിക്കാം, പൂൾ ചേർത്തിരിക്കാം തുടങ്ങിയവ) +- `Tags` + - റിവ്യൂവർ തങ്ങൾ എങ്ങനെ ഗസ്റ്റ് ആയിരുന്നുവെന്ന് (ഉദാ: സോളോ അല്ലെങ്കിൽ കുടുംബം), റൂം തരം, താമസ കാലാവധി, റിവ്യൂ സമർപ്പിച്ച ഉപകരണം എന്നിവ വിവരിക്കാൻ തിരഞ്ഞെടുക്കുന്ന ചെറിയ വിവരണങ്ങൾ + - ദുർഭാഗ്യവശാൽ, ഈ ടാഗുകൾ ഉപയോഗിക്കുന്നത് പ്രശ്നകരമാണ്, താഴെ അവയുടെ പ്രയോജനത്തെക്കുറിച്ച് ചർച്ച ചെയ്തിട്ടുണ്ട് + +**റിവ്യൂവർ കോളങ്ങൾ** + +- `Total_Number_of_Reviews_Reviewer_Has_Given` + - ശുപാർശ മോഡലിൽ ഇത് ഒരു ഘടകമായിരിക്കാം, ഉദാ: നൂറുകണക്കിന് റിവ്യൂവുകൾ എഴുതുന്നവർക്കു നെഗറ്റീവ് റിവ്യൂവുകൾ കൂടുതലായിരിക്കാം. എന്നാൽ ഓരോ റിവ്യൂവറെയും ഒരു പ്രത്യേക കോഡിൽ തിരിച്ചറിയുന്നില്ല, അതിനാൽ റിവ്യൂസെറ്റുമായി ബന്ധിപ്പിക്കാൻ കഴിയില്ല. 100-ൽ കൂടുതൽ റിവ്യൂവുകൾ ഉള്ള 30 റിവ്യൂവർമാർ ഉണ്ട്, പക്ഷേ ഇത് ശുപാർശ മോഡലിന് എങ്ങനെ സഹായകരമാകുമെന്ന് വ്യക്തമല്ല. +- `Reviewer_Nationality` + - ചിലർ കരുതാം ചില ദേശീയതകൾ പോസിറ്റീവ് അല്ലെങ്കിൽ നെഗറ്റീവ് റിവ്യൂ നൽകാൻ കൂടുതൽ സാധ്യതയുള്ളവരാണ്. ഇത്തരം അനുകരണങ്ങൾ നിങ്ങളുടെ മോഡലുകളിൽ ഉൾപ്പെടുത്തുമ്പോൾ ജാഗ്രത പാലിക്കുക. ഇവ ദേശീയ (കൂടാതെ ചിലപ്പോൾ ജാതി) സ്റ്റെറിയോട്ടൈപ്പുകളാണ്, ഓരോ റിവ്യൂവറും അവരുടെ അനുഭവത്തെ അടിസ്ഥാനമാക്കി റിവ്യൂ എഴുതിയ വ്യക്തിയാണ്. അവരുടെ മുൻ ഹോട്ടൽ stays, യാത്ര ദൂരം, വ്യക്തിഗത സ്വഭാവം തുടങ്ങിയവ വഴി ഫിൽട്ടർ ചെയ്തിരിക്കാം. അവരുടെ ദേശീയത റിവ്യൂ സ്കോറിന്റെ കാരണം ആണെന്ന് കരുതുന്നത് ന്യായീകരിക്കാൻ ബുദ്ധിമുട്ടാണ്. + +##### ഉദാഹരണങ്ങൾ + +| ശരാശരി സ്കോർ | മൊത്തം റിവ്യൂവുകളുടെ എണ്ണം | റിവ്യൂവർ സ്കോർ | നെഗറ്റീവ്
റിവ്യൂ | പോസിറ്റീവ് റിവ്യൂ | ടാഗുകൾ | +| -------------- | ---------------------- | ---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- | +| 7.8 | 1945 | 2.5 | ഇത് ഇപ്പോൾ ഹോട്ടൽ അല്ല, ഒരു കൺസ്ട്രക്ഷൻ സൈറ്റ് ആണ്. ഞാൻ രാവിലെ മുതൽ വൈകിട്ട് വരെ അസഹ്യമായ കെട്ടിട ശബ്ദത്തിൽ പീഡിപ്പിക്കപ്പെട്ടു, ഒരു ദീർഘയാത്ര കഴിഞ്ഞ് മുറിയിൽ വിശ്രമിക്കുമ്പോൾ. ആളുകൾ മുഴുവൻ ദിവസം ജാക്ക്‌ഹാമറുകൾ ഉപയോഗിച്ച് സമീപ മുറികളിൽ ജോലി ചെയ്തു. ഞാൻ മുറി മാറ്റം ആവശ്യപ്പെട്ടു, പക്ഷേ ശാന്തമായ മുറി ലഭ്യമല്ലായിരുന്നു. കാര്യങ്ങൾ കൂടുതൽ മോശമാക്കി, ഞാൻ അധിക ചാർജ് ചെയ്തു. വൈകിട്ട് ഞാൻ ചെക്ക് ഔട്ട് ചെയ്തു, കാരണം എനിക്ക് വളരെ പെട്ടെന്ന് പുറപ്പെടേണ്ടി വന്നു, അനുയോജ്യമായ ബിൽ ലഭിച്ചു. ഒരു ദിവസം കഴിഞ്ഞ് ഹോട്ടൽ എന്റെ സമ്മതം കൂടാതെ ബുക്ക് ചെയ്ത വിലക്ക് മുകളിൽ മറ്റൊരു ചാർജ് ചെയ്തു. ഇത് ഭയങ്കരമായ സ്ഥലം ആണ്. ഇവിടെ ബുക്ക് ചെയ്ത് സ്വയം ശിക്ഷിക്കരുത് | ഒന്നും ഭയങ്കരമായ സ്ഥലം, അകലം പാലിക്കുക | ബിസിനസ് യാത്ര, ദമ്പതികൾ, സ്റ്റാൻഡേർഡ് ഡബിൾ റൂം, 2 രാത്രി താമസിച്ചു | + +ഇവിടെ കാണുന്നതുപോലെ, ഈ ഗസ്റ്റ് ഹോട്ടലിൽ സന്തോഷകരമായ താമസം ഉണ്ടായില്ല. ഹോട്ടലിന് 7.8 എന്ന നല്ല ശരാശരി സ്കോർ ഉണ്ട്, 1945 റിവ്യൂവുകൾ ഉണ്ട്, പക്ഷേ ഈ റിവ്യൂവർ 2.5 സ്കോർ നൽകി, അവരുടെ നെഗറ്റീവ് താമസത്തെക്കുറിച്ച് 115 വാക്കുകൾ എഴുതിയിട്ടുണ്ട്. അവർ പോസിറ്റീവ്_റിവ്യൂ കോളത്തിൽ ഒന്നും എഴുതിയില്ലെങ്കിൽ, പോസിറ്റീവ് ഒന്നും ഇല്ലെന്ന് നമുക്ക് തോന്നാമായിരുന്നു, പക്ഷേ അവർ മുന്നറിയിപ്പായി 7 വാക്കുകൾ എഴുതിയിട്ടുണ്ട്. വാക്കുകളുടെ അർത്ഥം അല്ലെങ്കിൽ സെന്റിമെന്റ് പരിശോധിക്കാതെ വാക്കുകൾ മാത്രം എണ്ണിയാൽ റിവ്യൂവറുടെ ഉദ്ദേശം തെറ്റായി മനസ്സിലാക്കാം. അതിശയകരമായി, 2.5 എന്ന സ്കോർ ആശയക്കുഴപ്പമാണ്, കാരണം ഹോട്ടൽ താമസം അത്ര മോശമായിരുന്നെങ്കിൽ എന്തുകൊണ്ട് ഏതെങ്കിലും പോയിന്റ് നൽകുന്നു? ഡാറ്റാസെറ്റ് നന്നായി പരിശോധിച്ചാൽ, ഏറ്റവും കുറഞ്ഞ സ്കോർ 2.5 ആണ്, 0 അല്ല. ഏറ്റവും ഉയർന്ന സ്കോർ 10 ആണ്. + +##### ടാഗുകൾ + +മുകളിൽ പറഞ്ഞതുപോലെ, ആദ്യം നോക്കുമ്പോൾ `Tags` ഉപയോഗിച്ച് ഡാറ്റ വർഗ്ഗീകരിക്കാനുള്ള ആശയം ശരിയാണെന്ന് തോന്നും. ദുർഭാഗ്യവശാൽ, ഈ ടാഗുകൾ സ്റ്റാൻഡേർഡൈസ് ചെയ്തിട്ടില്ല, അതായത് ഒരു ഹോട്ടലിൽ *Single room*, *Twin room*, *Double room* എന്നിങ്ങനെ ഓപ്ഷനുകൾ ഉണ്ടാകാം, അടുത്ത ഹോട്ടലിൽ *Deluxe Single Room*, *Classic Queen Room*, *Executive King Room* എന്നിങ്ങനെ. ഇവ ഒരേ കാര്യങ്ങളായിരിക്കാം, പക്ഷേ വ്യത്യാസങ്ങൾ വളരെ കൂടുതലാണ്, അതിനാൽ തിരഞ്ഞെടുപ്പ്: + +1. എല്ലാ പദങ്ങളും ഒരു സ്റ്റാൻഡേർഡ് രൂപത്തിലേക്ക് മാറ്റാൻ ശ്രമിക്കുക, ഇത് വളരെ പ്രയാസമാണ്, കാരണം ഓരോ കേസിലും മാറ്റം എങ്ങനെ വരുമെന്ന് വ്യക്തമല്ല (ഉദാ: *Classic single room* *Single room* ആയി മാപ്പ് ചെയ്യാം, പക്ഷേ *Superior Queen Room with Courtyard Garden or City View* മാപ്പ് ചെയ്യുന്നത് വളരെ പ്രയാസമാണ്) + +1. NLP സമീപനം സ്വീകരിച്ച് *Solo*, *Business Traveller*, *Family with young kids* പോലുള്ള പദങ്ങളുടെ ആവൃത്തി ഓരോ ഹോട്ടലിലും എങ്ങനെ ഉണ്ടെന്ന് അളക്കുക, അത് ശുപാർശയിൽ ഉൾപ്പെടുത്തുക + +ടാഗുകൾ സാധാരണയായി (എല്ലാവരും അല്ല) ഒരു ഫീൽഡിൽ 5-6 കോമ കൊണ്ട് വേർതിരിച്ച മൂല്യങ്ങളുടെ പട്ടികയാണുള്ളത്, അവ *യാത്രയുടെ തരം*, *ഗസ്റ്റ് തരം*, *റൂം തരം*, *താമസ നൈറ്റ് എണ്ണം*, *റിവ്യൂ സമർപ്പിച്ച ഉപകരണം* എന്നിവയുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു. എന്നാൽ ചില റിവ്യൂവർമാർ ഓരോ ഫീൽഡും പൂരിപ്പിക്കാത്തതിനാൽ (ഒന്ന് ഒഴിവാക്കാം), മൂല്യങ്ങൾ എല്ലായ്പ്പോഴും ഒരേ ക്രമത്തിൽ ഇല്ല. + +ഉദാഹരണമായി, *Type of group* എടുത്തു നോക്കാം. `Tags` കോളത്തിൽ ഈ ഫീൽഡിൽ 1025 വ്യത്യസ്ത സാധ്യതകൾ ഉണ്ട്, ദുർഭാഗ്യവശാൽ അവയിൽ ചിലത് ഗ്രൂപ്പിനെ സൂചിപ്പിക്കുന്നവ മാത്രമാണ് (ചിലത് റൂം തരം മുതലായവ). കുടുംബം എന്ന പദം ഉൾപ്പെടുന്നവ മാത്രം ഫിൽട്ടർ ചെയ്താൽ, ഫലങ്ങളിൽ *Family room* തരം ഫലങ്ങൾ കൂടുതലാണ്. *with* എന്ന പദം ഉൾപ്പെടുത്തുമ്പോൾ, ഉദാ: *Family with* മൂല്യങ്ങൾ എണ്ണുമ്പോൾ, ഫലങ്ങൾ മെച്ചമാണ്, 515,000 ഫലങ്ങളിൽ 80,000-ത്തിലധികം "Family with young children" അല്ലെങ്കിൽ "Family with older children" എന്ന വാചകങ്ങൾ ഉൾക്കൊള്ളുന്നു. + +ഇത് ടാഗ് കോളം നമുക്ക് പൂർണ്ണമായും ഉപകാരമില്ലാത്തതല്ല, പക്ഷേ ഉപയോഗപ്രദമാക്കാൻ കുറച്ച് ജോലി വേണം. + +##### ശരാശരി ഹോട്ടൽ സ്കോർ + +ഡാറ്റാസെറ്റിൽ ചില അസാധാരണതകളും വ്യത്യാസങ്ങളും ഉണ്ട്, ഞാൻ കണ്ടെത്താനായില്ല, പക്ഷേ നിങ്ങൾക്ക് അവ അറിയാമാകാൻ ഇവിടെ കാണിക്കുന്നു. നിങ്ങൾ കണ്ടെത്തിയാൽ, ദയവായി ചർച്ചാ വിഭാഗത്തിൽ അറിയിക്കുക! + +ഡാറ്റാസെറ്റിൽ ശരാശരി സ്കോർ, റിവ്യൂവുകളുടെ എണ്ണം സംബന്ധിച്ച കോളങ്ങൾ: + +1. Hotel_Name +2. Additional_Number_of_Scoring +3. Average_Score +4. Total_Number_of_Reviews +5. Reviewer_Score + +ഈ ഡാറ്റാസെറ്റിലെ ഏറ്റവും കൂടുതൽ റിവ്യൂവുകൾ ഉള്ള ഹോട്ടൽ *Britannia International Hotel Canary Wharf* ആണ്, 515,000-ൽ 4789 റിവ്യൂവുകൾ. എന്നാൽ ഈ ഹോട്ടലിന്റെ `Total_Number_of_Reviews` മൂല്യം 9086 ആണ്. റിവ്യൂ ഇല്ലാതെ സ്കോർ നൽകിയവ കൂടുതലാണെന്ന് കരുതാം, അതിനാൽ `Additional_Number_of_Scoring` മൂല്യം ചേർക്കാം. അത് 2682 ആണ്, 4789-ൽ ചേർത്താൽ 7,471 ആകുന്നു, ഇത് `Total_Number_of_Reviews`-നേക്കാൾ 1615 കുറവാണ്. + +`Average_Score` കോളം നോക്കുമ്പോൾ, ഇത് ഡാറ്റാസെറ്റിലെ റിവ്യൂവുകളുടെ ശരാശരി ആണെന്ന് കരുതാം, പക്ഷേ Kaggle-ൽ വിവരണം "*കഴിഞ്ഞ വർഷം ഏറ്റവും പുതിയ കമന്റിന്റെ അടിസ്ഥാനത്തിൽ കണക്കാക്കിയ ഹോട്ടലിന്റെ ശരാശരി സ്കോർ*" എന്നാണ്. ഇത് പ്രയോജനകരമല്ലെന്ന് തോന്നുന്നു, പക്ഷേ നമുക്ക് ഡാറ്റാസെറ്റിലെ റിവ്യൂ സ്കോറുകൾ അടിസ്ഥാനമാക്കി നമ്മുടെ സ്വന്തം ശരാശരി കണക്കാക്കാം. അതേ ഹോട്ടൽ ഉദാഹരണമായി എടുത്താൽ, ശരാശരി ഹോട്ടൽ സ്കോർ 7.1 ആണ്, പക്ഷേ കണക്കാക്കിയ സ്കോർ (ഡാറ്റാസെറ്റിലെ ശരാശരി റിവ്യൂവർ സ്കോർ) 6.8 ആണ്. ഇത് അടുത്തതാണ്, പക്ഷേ സമാനമല്ല, `Additional_Number_of_Scoring` റിവ്യൂവുകൾ ശരാശരിയിൽ 7.1 വരെ വർദ്ധിപ്പിച്ചിരിക്കാമെന്ന് നമുക്ക് കരുതാം. എന്നാൽ അത് പരിശോധിക്കാനോ തെളിയിക്കാനോ കഴിയാത്തതിനാൽ, `Average_Score`, `Additional_Number_of_Scoring`, `Total_Number_of_Reviews` എന്നിവ ഉപയോഗിക്കാനും വിശ്വസിക്കാനും ബുദ്ധിമുട്ടാണ്, കാരണം അവ ഡാറ്റ നമുക്ക് ഇല്ലാത്തതിൽ അടിസ്ഥാനമാക്കിയുള്ളതാണ്. + +കൂടുതൽ സങ്കീർണ്ണമാക്കാൻ, രണ്ടാമത്തെ ഏറ്റവും കൂടുതൽ റിവ്യൂവുകൾ ഉള്ള ഹോട്ടലിന്റെ കണക്കാക്കിയ ശരാശരി സ്കോർ 8.12 ആണ്, ഡാറ്റാസെറ്റിലെ `Average_Score` 8.1 ആണ്. ഇത് യാദൃച്ഛികമാണോ, ആദ്യ ഹോട്ടലിലെ വ്യത്യാസമാണോ? +ഈ ഹോട്ടൽ ഒരു ഔട്ട്‌ലൈയർ ആകാമെന്ന സാധ്യതയും, മിക്ക മൂല്യങ്ങളും പൊരുത്തപ്പെടുന്നുണ്ടാകാം (പക്ഷേ ചിലത് എന്തോ കാരണത്താൽ പൊരുത്തപ്പെടുന്നില്ല) എന്നതിനാൽ, ഡാറ്റാസെറ്റിലെ മൂല്യങ്ങൾ പരിശോധിച്ച് ശരിയായ ഉപയോഗം (അഥവാ ഉപയോഗം ഇല്ലാതാക്കൽ) നിർണയിക്കാൻ അടുത്തതായി ഒരു ചെറിയ പ്രോഗ്രാം എഴുതും. + +> 🚨 ഒരു ജാഗ്രതാ കുറിപ്പ് +> +> ഈ ഡാറ്റാസെറ്റുമായി ജോലി ചെയ്യുമ്പോൾ, നിങ്ങൾക്ക് ടെക്സ്റ്റിൽ നിന്ന് എന്തെങ്കിലും കണക്കാക്കുന്ന കോഡ് എഴുതേണ്ടി വരും, എന്നാൽ നിങ്ങൾക്ക് ടെക്സ്റ്റ് വായിക്കുകയോ വിശകലനം ചെയ്യുകയോ ചെയ്യേണ്ടതില്ല. ഇത് NLP യുടെ സാരാംശമാണ്, മനുഷ്യൻ ചെയ്യാതെ അർത്ഥം അല്ലെങ്കിൽ മനോഭാവം വ്യാഖ്യാനിക്കുന്നത്. എങ്കിലും, നിങ്ങൾ ചില നെഗറ്റീവ് റിവ്യൂകൾ വായിക്കേണ്ടി വരാം. ഞാൻ നിങ്ങളോട് അത് ചെയ്യാതിരിക്കാൻ അഭ്യർത്ഥിക്കുന്നു, കാരണം അതിന് ആവശ്യമില്ല. ചിലത് മണ്ടത്തരം അല്ലെങ്കിൽ പ്രസക്തമല്ലാത്ത നെഗറ്റീവ് ഹോട്ടൽ റിവ്യൂകൾ ആണ്, ഉദാഹരണത്തിന് "കാലാവസ്ഥ നല്ലതായിരുന്നില്ല", ഹോട്ടലിന്റെ നിയന്ത്രണത്തിന് പുറത്തുള്ള കാര്യം, അല്ലെങ്കിൽ യാതൊരു വ്യക്തിയുടെയും. എന്നാൽ ചില റിവ്യൂകളിൽ ഇരുണ്ട വശവും ഉണ്ട്. ചിലപ്പോൾ നെഗറ്റീവ് റിവ്യൂകൾ ജാതിവാദപരമായോ, ലിംഗവാദപരമായോ, പ്രായഭേദപരമായോ ആയിരിക്കും. ഇത് ദുർഭാഗ്യകരമാണ്, പക്ഷേ പൊതുജന വെബ്സൈറ്റിൽ നിന്നുള്ള ഡാറ്റാസെറ്റിൽ പ്രതീക്ഷിക്കാവുന്നതാണ്. ചില റിവ്യൂവഴി നിങ്ങൾക്ക് അസ്വസ്ഥതയോ, അസ്വസ്ഥതയോ, വിഷമതയോ ഉണ്ടാകാം. കോഡ് മനോഭാവം അളക്കട്ടെ, നിങ്ങൾ തന്നെ വായിച്ച് വിഷമിക്കേണ്ടതില്ല. എന്നാൽ ഇത്തരത്തിലുള്ളവ കുറവാണ്, പക്ഷേ അവ ഉണ്ടെന്നതാണ്. + +## അഭ്യാസം - ഡാറ്റാ എക്സ്പ്ലോറേഷൻ +### ഡാറ്റ ലോഡ് ചെയ്യുക + +ഡാറ്റ ദൃശ്യമായി പരിശോധിക്കാൻ ഇത്രയും മതി, ഇനി നിങ്ങൾക്ക് കോഡ് എഴുതിയും ചില ഉത്തരങ്ങൾ കണ്ടെത്തിയും നോക്കാം! ഈ ഭാഗം pandas ലൈബ്രറി ഉപയോഗിക്കുന്നു. നിങ്ങളുടെ ആദ്യത്തെ ജോലി CSV ഡാറ്റ ലോഡ് ചെയ്ത് വായിക്കാൻ കഴിയുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക. pandas ലൈബ്രറിയിൽ വേഗത്തിലുള്ള CSV ലോഡർ ഉണ്ട്, ഫലം ഒരു ഡാറ്റാഫ്രെയിമിൽ സൂക്ഷിക്കുന്നു, മുമ്പത്തെ പാഠങ്ങളിലുപോലെ. ലോഡ് ചെയ്യുന്ന CSV-യിൽ അർധമില്യൺ ലൈനുകൾക്കു മുകളിൽ ഉണ്ട്, പക്ഷേ 17 കോളങ്ങൾ മാത്രം. pandas ഡാറ്റാഫ്രെയിമുമായി ഇടപഴകാൻ ശക്തമായ മാർഗങ്ങൾ നൽകുന്നു, ഓരോ വരിയിലും പ്രവർത്തനങ്ങൾ നടത്താനുള്ള കഴിവ് ഉൾപ്പെടെ. + +ഇവിടെ നിന്നു തുടർന്നുള്ള പാഠത്തിൽ, കോഡ് സ്നിപ്പറ്റുകളും ചില വിശദീകരണങ്ങളും ഫലങ്ങളുടെ അർത്ഥം സംബന്ധിച്ച ചർച്ചകളും ഉണ്ടാകും. നിങ്ങളുടെ കോഡിനായി ഉൾപ്പെടുത്തിയ _notebook.ipynb_ ഉപയോഗിക്കുക. + +നിങ്ങൾ ഉപയോഗിക്കുന്ന ഡാറ്റ ഫയൽ ലോഡ് ചെയ്യുന്നതിൽ നിന്ന് തുടങ്ങാം: + +```python +# CSV-ൽ നിന്ന് ഹോട്ടൽ റിവ്യൂകൾ ലോഡ് ചെയ്യുക +import pandas as pd +import time +# ഫയൽ ലോഡിംഗ് സമയം കണക്കാക്കാൻ ആരംഭവും അവസാനവും സമയങ്ങൾ ഉപയോഗിക്കാൻ time ഇംപോർട്ട് ചെയ്യുന്നു +print("Loading data file now, this could take a while depending on file size") +start = time.time() +# df 'DataFrame' ആണ് - ഫയൽ data ഫോൾഡറിൽ ഡൗൺലോഡ് ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക +df = pd.read_csv('../../data/Hotel_Reviews.csv') +end = time.time() +print("Loading took " + str(round(end - start, 2)) + " seconds") +``` + +ഇപ്പോൾ ഡാറ്റ ലോഡ് ചെയ്തതിനുശേഷം, അതിൽ ചില പ്രവർത്തനങ്ങൾ നടത്താം. അടുത്ത ഭാഗത്തിനായി ഈ കോഡ് നിങ്ങളുടെ പ്രോഗ്രാമിന്റെ മുകളിൽ സൂക്ഷിക്കുക. + +## ഡാറ്റ എക്സ്പ്ലോർ ചെയ്യുക + +ഈ കേസിൽ, ഡാറ്റ ഇതിനകം *ശുദ്ധമാണ്*, അതായത് ഇത് ഉപയോഗിക്കാൻ തയ്യാറാണ്, ഇംഗ്ലീഷ് അക്ഷരങ്ങൾ മാത്രമേ പ്രതീക്ഷിക്കുന്നുള്ള ആൽഗോരിതങ്ങൾ തടസ്സപ്പെടാതിരിക്കാൻ മറ്റ് ഭാഷകളിലെ അക്ഷരങ്ങൾ ഇല്ല. + +✅ ചിലപ്പോൾ നിങ്ങൾക്ക് NLP സാങ്കേതികവിദ്യകൾ പ്രയോഗിക്കുന്നതിന് മുമ്പ് ഡാറ്റ പ്രോസസ്സ് ചെയ്യേണ്ടി വരാം, പക്ഷേ ഈ തവണ അതില്ല. നിങ്ങൾ ചെയ്യേണ്ടി വന്നിരുന്നെങ്കിൽ, നിങ്ങൾ എങ്ങനെ ഇംഗ്ലീഷ് അല്ലാത്ത അക്ഷരങ്ങൾ കൈകാര്യം ചെയ്യുമായിരുന്നു? + +ഡാറ്റ ലോഡ് ചെയ്ത ശേഷം, കോഡിലൂടെ അത് എങ്ങനെ എക്സ്പ്ലോർ ചെയ്യാമെന്ന് ഉറപ്പാക്കാൻ ഒരു നിമിഷം ചെലവഴിക്കുക. `Negative_Review` ഉം `Positive_Review` ഉം കോളങ്ങൾക്കു മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിക്കാൻ എളുപ്പമാണ്. അവ നിങ്ങളുടെ NLP ആൽഗോരിതങ്ങൾ പ്രോസസ്സ് ചെയ്യാൻ സ്വാഭാവിക ടെക്സ്റ്റ് നിറച്ചിരിക്കുന്നു. പക്ഷേ കാത്തിരിക്കുക! NLP-യിലും മനോഭാവത്തിലും ചാടുന്നതിന് മുമ്പ്, ഡാറ്റാസെറ്റിൽ നൽകിയ മൂല്യങ്ങൾ pandas ഉപയോഗിച്ച് നിങ്ങൾ കണക്കാക്കിയ മൂല്യങ്ങളുമായി പൊരുത്തപ്പെടുന്നുണ്ടോ എന്ന് താഴെ കൊടുത്തിരിക്കുന്ന കോഡ് പിന്തുടർന്ന് പരിശോധിക്കുക. + +## ഡാറ്റാഫ്രെയിം പ്രവർത്തനങ്ങൾ + +ഈ പാഠത്തിലെ ആദ്യത്തെ ജോലി, ഡാറ്റാഫ്രെയിം പരിശോധിക്കുന്ന (മാറ്റം വരുത്താതെ) ചില കോഡ് എഴുതിയാണ് താഴെ കൊടുത്തിരിക്കുന്ന അവകാശവാദങ്ങൾ ശരിയാണോ എന്ന് പരിശോധിക്കുക. + +> പല പ്രോഗ്രാമിംഗ് ജോലികളിലും, ഇത് പൂർത്തിയാക്കാനുള്ള പല മാർഗ്ഗങ്ങളുണ്ട്, പക്ഷേ നല്ല ഉപദേശം, ഇത് എളുപ്പവും മനസ്സിലാക്കാൻ എളുപ്പവുമായ രീതിയിൽ ചെയ്യുക, പ്രത്യേകിച്ച് ഈ കോഡിലേക്ക് വീണ്ടും വരുമ്പോൾ. ഡാറ്റാഫ്രെയിമുകളിൽ, നിങ്ങൾക്ക് സാധാരണയായി ആവശ്യമായ കാര്യങ്ങൾ കാര്യക്ഷമമായി ചെയ്യാനുള്ള സമഗ്ര API ഉണ്ട്. + +താഴെ കൊടുത്തിരിക്കുന്ന ചോദ്യങ്ങളെ കോഡിംഗ് ടാസ്കുകളായി പരിഗണിച്ച് പരിഹാരമില്ലാതെ അവയ്ക്ക് ശ്രമിക്കുക. + +1. നിങ്ങൾ ഇപ്പോൾ ലോഡ് ചെയ്ത ഡാറ്റാഫ്രെയിമിന്റെ *ആകൃതി* പ്രിന്റ് ചെയ്യുക (ആകൃതി എന്നത് വരികളും കോളങ്ങളുമാണ്) +2. റിവ്യൂവറുടെ ദേശീയതയുടെ ഫ്രീക്വൻസി കണക്കാക്കുക: + 1. `Reviewer_Nationality` കോളത്തിനുള്ള വ്യത്യസ്ത മൂല്യങ്ങൾ എത്രയും എന്തെല്ലാം? + 2. ഡാറ്റാസെറ്റിൽ ഏറ്റവും സാധാരണമായ റിവ്യൂവർ ദേശീയത ഏതാണ് (രാജ്യവും റിവ്യൂവുകളുടെ എണ്ണവും പ്രിന്റ് ചെയ്യുക)? + 3. അടുത്ത 10 ഏറ്റവും സാധാരണമായ ദേശീയതകളും അവയുടെ ഫ്രീക്വൻസി കണക്കുകളും എന്തെല്ലാം? +3. ടോപ്പ് 10 റിവ്യൂവർ ദേശീയതകളിൽ ഓരോന്നിനും ഏറ്റവും കൂടുതൽ റിവ്യൂ ലഭിച്ച ഹോട്ടൽ ഏതാണ്? +4. ഡാറ്റാസെറ്റിൽ ഓരോ ഹോട്ടലിനും എത്ര റിവ്യൂവുകൾ ഉണ്ട് (ഹോട്ടലിന്റെ ഫ്രീക്വൻസി കണക്കുകൾ)? +5. ഡാറ്റാസെറ്റിൽ ഓരോ ഹോട്ടലിനും `Average_Score` കോളം ഉണ്ടെങ്കിലും, നിങ്ങൾക്ക് ഓരോ ഹോട്ടലിനും ഡാറ്റാസെറ്റിലെ എല്ലാ റിവ്യൂവറുടെ സ്കോറുകളുടെ ശരാശരി കണക്കാക്കാം. കണക്കാക്കിയ ശരാശരി അടങ്ങിയ `Calc_Average_Score` എന്ന പുതിയ കോളം നിങ്ങളുടെ ഡാറ്റാഫ്രെയിമിൽ ചേർക്കുക. +6. ഏതെങ്കിലും ഹോട്ടലുകൾക്ക് (1 ദശാംശ സ്ഥാനം വരെ വട്ടംചുറ്റിയപ്പോൾ) `Average_Score` ഉം `Calc_Average_Score` ഉം ഒരുപോലെയുണ്ടോ? + 1. ഒരു Python ഫംഗ്ഷൻ എഴുതാൻ ശ്രമിക്കുക, അത് ഒരു Series (വരി) аргументായി സ്വീകരിച്ച് മൂല്യങ്ങൾ താരതമ്യം ചെയ്ത്, മൂല്യങ്ങൾ തുല്യമായില്ലെങ്കിൽ സന്ദേശം പ്രിന്റ് ചെയ്യുന്നു. പിന്നീട് `.apply()` മെത്തഡ് ഉപയോഗിച്ച് എല്ലാ വരികളും പ്രോസസ്സ് ചെയ്യുക. +7. `Negative_Review` കോളത്തിൽ "No Negative" ഉള്ള വരികളുടെ എണ്ണം കണക്കാക്കി പ്രിന്റ് ചെയ്യുക +8. `Positive_Review` കോളത്തിൽ "No Positive" ഉള്ള വരികളുടെ എണ്ണം കണക്കാക്കി പ്രിന്റ് ചെയ്യുക +9. `Positive_Review` കോളത്തിൽ "No Positive" **ഉം** `Negative_Review` കോളത്തിൽ "No Negative" ഉള്ള വരികളുടെ എണ്ണം കണക്കാക്കി പ്രിന്റ് ചെയ്യുക +### കോഡ് ഉത്തരങ്ങൾ + +1. നിങ്ങൾ ഇപ്പോൾ ലോഡ് ചെയ്ത ഡാറ്റാഫ്രെയിമിന്റെ *ആകൃതി* പ്രിന്റ് ചെയ്യുക (ആകൃതി എന്നത് വരികളും കോളങ്ങളുമാണ്) + + ```python + print("The shape of the data (rows, cols) is " + str(df.shape)) + > The shape of the data (rows, cols) is (515738, 17) + ``` + +2. റിവ്യൂവർ ദേശീയതയുടെ ഫ്രീക്വൻസി കണക്കാക്കുക: + + 1. `Reviewer_Nationality` കോളത്തിനുള്ള വ്യത്യസ്ത മൂല്യങ്ങൾ എത്രയും എന്തെല്ലാം? + 2. ഡാറ്റാസെറ്റിൽ ഏറ്റവും സാധാരണമായ റിവ്യൂവർ ദേശീയത ഏതാണ് (രാജ്യവും റിവ്യൂവുകളുടെ എണ്ണവും പ്രിന്റ് ചെയ്യുക)? + + ```python + # value_counts() ഒരു സീരീസ് ഒബ്ജക്റ്റ് സൃഷ്ടിക്കുന്നു, ഇതിൽ ഇൻഡക്സ് കൂടാതെ മൂല്യങ്ങളും ഉണ്ടാകുന്നു, ഈ കേസിൽ, രാജ്യവും അവ അവലോകനകാരന്റെ ദേശീയതയിൽ ഉണ്ടാകുന്ന ആവർത്തനവും ആണ് + nationality_freq = df["Reviewer_Nationality"].value_counts() + print("There are " + str(nationality_freq.size) + " different nationalities") + # സീരീസിന്റെ ആദ്യവും അവസാനവും വരികൾ പ്രിന്റ് ചെയ്യുക. എല്ലാ ഡാറ്റയും പ്രിന്റ് ചെയ്യാൻ nationality_freq.to_string() ആയി മാറ്റുക + print(nationality_freq) + + There are 227 different nationalities + United Kingdom 245246 + United States of America 35437 + Australia 21686 + Ireland 14827 + United Arab Emirates 10235 + ... + Comoros 1 + Palau 1 + Northern Mariana Islands 1 + Cape Verde 1 + Guinea 1 + Name: Reviewer_Nationality, Length: 227, dtype: int64 + ``` + + 3. അടുത്ത 10 ഏറ്റവും സാധാരണമായ ദേശീയതകളും അവയുടെ ഫ്രീക്വൻസി കണക്കുകളും എന്തെല്ലാം? + + ```python + print("The highest frequency reviewer nationality is " + str(nationality_freq.index[0]).strip() + " with " + str(nationality_freq[0]) + " reviews.") + # മൂല്യങ്ങളിൽ ഒരു മുൻനിര സ്ഥലം കാണുക, പ്രിന്റ് ചെയ്യുന്നതിനായി strip() അത് നീക്കം ചെയ്യുന്നു + # ഏറ്റവും സാധാരണമായ 10 ദേശീയതകളും അവയുടെ ആവർത്തനങ്ങളും എന്തൊക്കെയാണ്? + print("The next 10 highest frequency reviewer nationalities are:") + print(nationality_freq[1:11].to_string()) + + The highest frequency reviewer nationality is United Kingdom with 245246 reviews. + The next 10 highest frequency reviewer nationalities are: + United States of America 35437 + Australia 21686 + Ireland 14827 + United Arab Emirates 10235 + Saudi Arabia 8951 + Netherlands 8772 + Switzerland 8678 + Germany 7941 + Canada 7894 + France 7296 + ``` + +3. ടോപ്പ് 10 റിവ്യൂവർ ദേശീയതകളിൽ ഓരോന്നിനും ഏറ്റവും കൂടുതൽ റിവ്യൂ ലഭിച്ച ഹോട്ടൽ ഏതാണ്? + + ```python + # മുകളിൽ 10 ദേശീയതകളിൽ ഏറ്റവും അധികം അവലോകനം ചെയ്ത ഹോട്ടൽ ഏതാണ് + # സാധാരണയായി pandas ഉപയോഗിക്കുമ്പോൾ നിങ്ങൾ വ്യക്തമായ ലൂപ്പ് ഒഴിവാക്കും, പക്ഷേ മാനദണ്ഡങ്ങൾ ഉപയോഗിച്ച് പുതിയ ഡാറ്റാഫ്രെയിം സൃഷ്ടിക്കുന്നത് കാണിക്കാൻ ആഗ്രഹിച്ചു (വലിയ ഡാറ്റയുമായി ഇത് ചെയ്യരുത് കാരണം ഇത് വളരെ മന്ദഗതിയാകാം) + for nat in nationality_freq[:10].index: + # ആദ്യം, മാനദണ്ഡങ്ങൾ പാലിക്കുന്ന എല്ലാ വരികളും പുതിയ ഡാറ്റാഫ്രെയിമിലേക്ക് എടുക്കുക + nat_df = df[df["Reviewer_Nationality"] == nat] + # ഇപ്പോൾ ഹോട്ടലിന്റെ ആവർത്തനസംഖ്യ നേടുക + freq = nat_df["Hotel_Name"].value_counts() + print("The most reviewed hotel for " + str(nat).strip() + " was " + str(freq.index[0]) + " with " + str(freq[0]) + " reviews.") + + The most reviewed hotel for United Kingdom was Britannia International Hotel Canary Wharf with 3833 reviews. + The most reviewed hotel for United States of America was Hotel Esther a with 423 reviews. + The most reviewed hotel for Australia was Park Plaza Westminster Bridge London with 167 reviews. + The most reviewed hotel for Ireland was Copthorne Tara Hotel London Kensington with 239 reviews. + The most reviewed hotel for United Arab Emirates was Millennium Hotel London Knightsbridge with 129 reviews. + The most reviewed hotel for Saudi Arabia was The Cumberland A Guoman Hotel with 142 reviews. + The most reviewed hotel for Netherlands was Jaz Amsterdam with 97 reviews. + The most reviewed hotel for Switzerland was Hotel Da Vinci with 97 reviews. + The most reviewed hotel for Germany was Hotel Da Vinci with 86 reviews. + The most reviewed hotel for Canada was St James Court A Taj Hotel London with 61 reviews. + ``` + +4. ഡാറ്റാസെറ്റിൽ ഓരോ ഹോട്ടലിനും എത്ര റിവ്യൂവുകൾ ഉണ്ട് (ഹോട്ടലിന്റെ ഫ്രീക്വൻസി കണക്കുകൾ)? + + ```python + # പഴയ ഡാറ്റാഫ്രെയിമിനെ അടിസ്ഥാനമാക്കി പുതിയ ഒരു ഡാറ്റാഫ്രെയിം സൃഷ്ടിക്കുക, ആവശ്യമില്ലാത്ത കോളങ്ങൾ നീക്കംചെയ്യുക + 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) + + # Hotel_Name പ്രകാരം വരികൾ ഗ്രൂപ്പുചെയ്യുക, അവയുടെ എണ്ണം കണക്കാക്കുക, ഫലം Total_Reviews_Found എന്ന പുതിയ കോളത്തിൽ ഇടുക + hotel_freq_df['Total_Reviews_Found'] = hotel_freq_df.groupby('Hotel_Name').transform('count') + + # എല്ലാ പുനരാവൃത വരികളും നീക്കംചെയ്യുക + hotel_freq_df = hotel_freq_df.drop_duplicates(subset = ["Hotel_Name"]) + display(hotel_freq_df) + ``` + | Hotel_Name | Total_Number_of_Reviews | Total_Reviews_Found | + | :----------------------------------------: | :---------------------: | :-----------------: | + | Britannia International Hotel Canary Wharf | 9086 | 4789 | + | Park Plaza Westminster Bridge London | 12158 | 4169 | + | Copthorne Tara Hotel London Kensington | 7105 | 3578 | + | ... | ... | ... | + | Mercure Paris Porte d Orleans | 110 | 10 | + | Hotel Wagner | 135 | 10 | + | Hotel Gallitzinberg | 173 | 8 | + + നിങ്ങൾ ശ്രദ്ധിക്കാം, ഡാറ്റാസെറ്റിൽ കണക്കാക്കിയ ഫലങ്ങൾ `Total_Number_of_Reviews`-നുള്ള മൂല്യവുമായി പൊരുത്തപ്പെടുന്നില്ല. ഈ മൂല്യം ഹോട്ടലിന് ഉണ്ടായ മൊത്തം റിവ്യൂവുകളുടെ എണ്ണം പ്രതിനിധീകരിക്കുന്നുണ്ടോ, അല്ലെങ്കിൽ എല്ലാം സ്ക്രാപ്പ് ചെയ്തിട്ടില്ല, അല്ലെങ്കിൽ മറ്റേതെങ്കിലും കണക്കുകൂട്ടലാണോ എന്ന് വ്യക്തമല്ല. ഈ അനിശ്ചിതത്വം കാരണം `Total_Number_of_Reviews` മോഡലിൽ ഉപയോഗിക്കുന്നില്ല. + +5. ഡാറ്റാസെറ്റിൽ ഓരോ ഹോട്ടലിനും `Average_Score` കോളം ഉണ്ടെങ്കിലും, നിങ്ങൾക്ക് ഓരോ ഹോട്ടലിനും ഡാറ്റാസെറ്റിലെ എല്ലാ റിവ്യൂവറുടെ സ്കോറുകളുടെ ശരാശരി കണക്കാക്കാം. കണക്കാക്കിയ ശരാശരി അടങ്ങിയ `Calc_Average_Score` എന്ന പുതിയ കോളം നിങ്ങളുടെ ഡാറ്റാഫ്രെയിമിൽ ചേർക്കുക. `Hotel_Name`, `Average_Score`, `Calc_Average_Score` കോളങ്ങൾ പ്രിന്റ് ചെയ്യുക. + + ```python + # ഒരു വരി സ്വീകരിച്ച് അതുമായി ചില കണക്കുകൂട്ടലുകൾ നടത്തുന്ന ഒരു ഫംഗ്ഷൻ നിർവചിക്കുക + def get_difference_review_avg(row): + return row["Average_Score"] - row["Calc_Average_Score"] + + # 'mean' എന്നത് 'ശരാശരി' എന്ന ഗണിതപരമായ പദമാണ് + df['Calc_Average_Score'] = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1) + + # രണ്ട് ശരാശരി സ്കോറുകൾ തമ്മിലുള്ള വ്യത്യാസം ഉൾപ്പെടുന്ന ഒരു പുതിയ കോളം ചേർക്കുക + df["Average_Score_Difference"] = df.apply(get_difference_review_avg, axis = 1) + + # Hotel_Name ന്റെ എല്ലാ പകർപ്പുകളും ഇല്ലാത്ത ഒരു df സൃഷ്ടിക്കുക (അതായത് ഓരോ ഹോട്ടലിനും 1 വരി മാത്രം) + review_scores_df = df.drop_duplicates(subset = ["Hotel_Name"]) + + # ഏറ്റവും കുറഞ്ഞതും ഏറ്റവും ഉയർന്നതുമായ ശരാശരി സ്കോർ വ്യത്യാസം കണ്ടെത്താൻ ഡാറ്റാഫ്രെയിം സോർട്ട് ചെയ്യുക + review_scores_df = review_scores_df.sort_values(by=["Average_Score_Difference"]) + + display(review_scores_df[["Average_Score_Difference", "Average_Score", "Calc_Average_Score", "Hotel_Name"]]) + ``` + + നിങ്ങൾക്ക് `Average_Score` മൂല്യത്തെക്കുറിച്ച് സംശയമുണ്ടാകാം, ചിലപ്പോൾ കണക്കാക്കിയ ശരാശരിയുമായി വ്യത്യാസമുണ്ടാകുന്നത് എന്തുകൊണ്ടാണെന്ന്. ചില മൂല്യങ്ങൾ പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ എന്തുകൊണ്ടാണെന്ന് അറിയാനാകാത്തതിനാൽ, ഈ സാഹചര്യത്തിൽ ഞങ്ങൾക്കുള്ള റിവ്യൂ സ്കോറുകൾ ഉപയോഗിച്ച് ശരാശരി സ്വയം കണക്കാക്കുന്നത് സുരക്ഷിതമാണ്. എന്നാൽ വ്യത്യാസങ്ങൾ സാധാരണയായി വളരെ ചെറിയതാണ്, താഴെ ഡാറ്റാസെറ്റിലെ ശരാശരിയിലും കണക്കാക്കിയ ശരാശരിയിലും ഏറ്റവും വലിയ വ്യത്യാസമുള്ള ഹോട്ടലുകൾ കാണിക്കുന്നു: + + | Average_Score_Difference | Average_Score | Calc_Average_Score | Hotel_Name | + | :----------------------: | :-----------: | :----------------: | ------------------------------------------: | + | -0.8 | 7.7 | 8.5 | Best Western Hotel Astoria | + | -0.7 | 8.8 | 9.5 | Hotel Stendhal Place Vend me Paris MGallery | + | -0.7 | 7.5 | 8.2 | Mercure Paris Porte d Orleans | + | -0.7 | 7.9 | 8.6 | Renaissance Paris Vendome Hotel | + | -0.5 | 7.0 | 7.5 | Hotel Royal Elys es | + | ... | ... | ... | ... | + | 0.7 | 7.5 | 6.8 | Mercure Paris Op ra Faubourg Montmartre | + | 0.8 | 7.1 | 6.3 | Holiday Inn Paris Montparnasse Pasteur | + | 0.9 | 6.8 | 5.9 | Villa Eugenie | + | 0.9 | 8.6 | 7.7 | MARQUIS Faubourg St Honor Relais Ch teaux | + | 1.3 | 7.2 | 5.9 | Kube Hotel Ice Bar | + + ഒരു ഹോട്ടലിനും 1-ലധികം വ്യത്യാസമുണ്ടായിട്ടില്ലാത്തതിനാൽ, വ്യത്യാസം അവഗണിച്ച് കണക്കാക്കിയ ശരാശരി സ്കോർ ഉപയോഗിക്കാം. + +6. `Negative_Review` കോളത്തിൽ "No Negative" ഉള്ള വരികളുടെ എണ്ണം കണക്കാക്കി പ്രിന്റ് ചെയ്യുക + +7. `Positive_Review` കോളത്തിൽ "No Positive" ഉള്ള വരികളുടെ എണ്ണം കണക്കാക്കി പ്രിന്റ് ചെയ്യുക + +8. `Positive_Review` കോളത്തിൽ "No Positive" **ഉം** `Negative_Review` കോളത്തിൽ "No Negative" ഉള്ള വരികളുടെ എണ്ണം കണക്കാക്കി പ്രിന്റ് ചെയ്യുക + + ```python + # ലാംബ്ഡാസിനൊപ്പം: + start = time.time() + no_negative_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" else False , axis=1) + print("Number of No Negative reviews: " + str(len(no_negative_reviews[no_negative_reviews == True].index))) + + no_positive_reviews = df.apply(lambda x: True if x['Positive_Review'] == "No Positive" else False , axis=1) + print("Number of No Positive reviews: " + str(len(no_positive_reviews[no_positive_reviews == True].index))) + + both_no_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" and x['Positive_Review'] == "No Positive" else False , axis=1) + print("Number of both No Negative and No Positive reviews: " + str(len(both_no_reviews[both_no_reviews == True].index))) + end = time.time() + print("Lambdas took " + str(round(end - start, 2)) + " seconds") + + Number of No Negative reviews: 127890 + Number of No Positive reviews: 35946 + Number of both No Negative and No Positive reviews: 127 + Lambdas took 9.64 seconds + ``` + +## മറ്റൊരു മാർഗ്ഗം + +ലാംബ്ഡകൾ ഇല്ലാതെ ഇനങ്ങൾ എണ്ണാനുള്ള മറ്റൊരു മാർഗ്ഗം, വരികൾ എണ്ണാൻ sum ഉപയോഗിക്കുക: + + ```python + # ലാംബ്ഡകൾ ഇല്ലാതെ (രണ്ടും ഉപയോഗിക്കാമെന്ന് കാണിക്കാൻ വിവിധ നോട്ടേഷനുകളുടെ മിശ്രിതം ഉപയോഗിച്ച്) + start = time.time() + no_negative_reviews = sum(df.Negative_Review == "No Negative") + print("Number of No Negative reviews: " + str(no_negative_reviews)) + + no_positive_reviews = sum(df["Positive_Review"] == "No Positive") + print("Number of No Positive reviews: " + str(no_positive_reviews)) + + both_no_reviews = sum((df.Negative_Review == "No Negative") & (df.Positive_Review == "No Positive")) + print("Number of both No Negative and No Positive reviews: " + str(both_no_reviews)) + + end = time.time() + print("Sum took " + str(round(end - start, 2)) + " seconds") + + Number of No Negative reviews: 127890 + Number of No Positive reviews: 35946 + Number of both No Negative and No Positive reviews: 127 + Sum took 0.19 seconds + ``` + + നിങ്ങൾ ശ്രദ്ധിച്ചിരിക്കാം, `Negative_Review`-ലും `Positive_Review`-ലും "No Negative" ഉം "No Positive" ഉം ഉള്ള 127 വരികൾ ഉണ്ട്. അതായത് റിവ്യൂവർ ഹോട്ടലിന് സംഖ്യാത്മക സ്കോർ നൽകിയിട്ടുണ്ട്, പക്ഷേ പോസിറ്റീവ് അല്ലെങ്കിൽ നെഗറ്റീവ് റിവ്യൂ എഴുതാൻ തയാറായില്ല. ഭാഗ്യവശാൽ ഇത് ചെറിയ എണ്ണം മാത്രമാണ് (127/515738, 0.02%), അതിനാൽ ഇത് നമ്മുടെ മോഡലിനോ ഫലങ്ങളിലോ പ്രത്യേകമായി ബാധിക്കില്ല. എന്നാൽ റിവ്യൂ ഇല്ലാത്ത വരികൾ ഉള്ള ഡാറ്റാസെറ്റ് ഉണ്ടാകുമെന്ന് നിങ്ങൾ പ്രതീക്ഷിക്കാത്തതായിരിക്കും, അതിനാൽ ഇത്തരത്തിലുള്ള വരികൾ കണ്ടെത്താൻ ഡാറ്റ എക്സ്പ്ലോർ ചെയ്യുന്നത് മൂല്യവത്താണ്. + +ഇപ്പോൾ നിങ്ങൾ ഡാറ്റാസെറ്റ് എക്സ്പ്ലോർ ചെയ്തു കഴിഞ്ഞു, അടുത്ത പാഠത്തിൽ നിങ്ങൾ ഡാറ്റ ഫിൽട്ടർ ചെയ്ത് ചില മനോഭാവ വിശകലനം ചേർക്കും. + +--- +## 🚀ചലഞ്ച് + +ഈ പാഠം, മുമ്പത്തെ പാഠങ്ങളിൽ കണ്ടതുപോലെ, നിങ്ങളുടെ ഡാറ്റയും അതിന്റെ പ്രത്യേകതകളും മനസ്സിലാക്കുന്നത് എത്രത്തോളം പ്രധാനമാണെന്ന് കാണിക്കുന്നു. പ്രത്യേകിച്ച് ടെക്സ്റ്റ് അടിസ്ഥാനമാക്കിയ ഡാറ്റ വളരെ സൂക്ഷ്മ പരിശോധന ആവശ്യമാണ്. വിവിധ ടെക്സ്റ്റ്-ഭാരിത ഡാറ്റാസെറ്റുകൾ പരിശോധിച്ച്, മോഡലിൽ പകുതി വയ്ക്കുന്ന ബയാസുകൾ അല്ലെങ്കിൽ വക്രമായ മനോഭാവം ഉണ്ടാക്കാവുന്ന മേഖലകൾ കണ്ടെത്താൻ ശ്രമിക്കുക. + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +[ഈ NLP ലേണിംഗ് പാത്ത്](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) സ്വീകരിച്ച്, സ്പീച്ച്, ടെക്സ്റ്റ്-ഭാരിത മോഡലുകൾ നിർമ്മിക്കുമ്പോൾ പരീക്ഷിക്കാവുന്ന ഉപകരണങ്ങൾ കണ്ടെത്തുക. + +## അസൈൻമെന്റ് + +[NLTK](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/6-NLP/4-Hotel-Reviews-1/assignment.md b/translations/ml/6-NLP/4-Hotel-Reviews-1/assignment.md new file mode 100644 index 000000000..4f6081fb7 --- /dev/null +++ b/translations/ml/6-NLP/4-Hotel-Reviews-1/assignment.md @@ -0,0 +1,21 @@ + +# NLTK + +## നിർദ്ദേശങ്ങൾ + +NLTK കംപ്യൂട്ടേഷണൽ ഭാഷാശാസ്ത്രത്തിലും NLP യിലും ഉപയോഗിക്കുന്ന ഒരു പ്രശസ്ത ലൈബ്രറിയാണ്. '[NLTK പുസ്തകം](https://www.nltk.org/book/)' വായിച്ച് അതിലെ അഭ്യാസങ്ങൾ പരീക്ഷിക്കാൻ ഈ അവസരം ഉപയോഗിക്കുക. ഈ ഗ്രേഡ് ഇല്ലാത്ത അസൈൻമെന്റിൽ, നിങ്ങൾക്ക് ഈ ലൈബ്രറി കൂടുതൽ ആഴത്തിൽ അറിയാൻ സാധിക്കും. + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/6-NLP/4-Hotel-Reviews-1/notebook.ipynb b/translations/ml/6-NLP/4-Hotel-Reviews-1/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/ml/6-NLP/4-Hotel-Reviews-1/solution/Julia/README.md b/translations/ml/6-NLP/4-Hotel-Reviews-1/solution/Julia/README.md new file mode 100644 index 000000000..48401ea97 --- /dev/null +++ b/translations/ml/6-NLP/4-Hotel-Reviews-1/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ഇത് ഒരു താൽക്കാലിക പ്ലേസ്‌ഹോൾഡറാണ് + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ പ്രാമാണികമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/6-NLP/4-Hotel-Reviews-1/solution/R/README.md b/translations/ml/6-NLP/4-Hotel-Reviews-1/solution/R/README.md new file mode 100644 index 000000000..363d4dc97 --- /dev/null +++ b/translations/ml/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/ml/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb b/translations/ml/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb new file mode 100644 index 000000000..840210ed5 --- /dev/null +++ b/translations/ml/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:28+00:00", + "source_file": "6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "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/ml/6-NLP/5-Hotel-Reviews-2/README.md b/translations/ml/6-NLP/5-Hotel-Reviews-2/README.md new file mode 100644 index 000000000..8fa0f59a0 --- /dev/null +++ b/translations/ml/6-NLP/5-Hotel-Reviews-2/README.md @@ -0,0 +1,391 @@ + +# ഹോട്ടൽ റിവ്യൂകളുമായി അനുഭവം വിശകലനം + +ഇപ്പോൾ നിങ്ങൾ ഡാറ്റാസെറ്റ് വിശദമായി പരിശോധിച്ചിരിക്കുന്നു, കോളങ്ങൾ ഫിൽട്ടർ ചെയ്ത് പിന്നീട് ഡാറ്റാസെറ്റിൽ NLP സാങ്കേതിക വിദ്യകൾ ഉപയോഗിച്ച് ഹോട്ടലുകളെക്കുറിച്ചുള്ള പുതിയ洞察ങ്ങൾ നേടാനുള്ള സമയം. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +### ഫിൽട്ടറിംഗ് & അനുഭവം വിശകലന പ്രവർത്തനങ്ങൾ + +നിങ്ങൾ ശ്രദ്ധിച്ചിരിക്കാം, ഡാറ്റാസെറ്റിൽ ചില പ്രശ്നങ്ങളുണ്ട്. ചില കോളങ്ങൾ ഉപകാരമില്ലാത്ത വിവരങ്ങൾ നിറഞ്ഞിരിക്കുന്നു, മറ്റുള്ളവ തെറ്റായതായി തോന്നുന്നു. ശരിയാണെങ്കിൽ, അവ എങ്ങനെ കണക്കാക്കിയതെന്ന് വ്യക്തമല്ല, നിങ്ങളുടെ സ്വന്തം കണക്കുകൾ ഉപയോഗിച്ച് സ്വതന്ത്രമായി സ്ഥിരീകരിക്കാൻ കഴിയില്ല. + +## അഭ്യാസം: കുറച്ച് കൂടുതൽ ഡാറ്റ പ്രോസസ്സിംഗ് + +ഡാറ്റ കുറച്ച് കൂടുതൽ ശുദ്ധമാക്കുക. പിന്നീട് ഉപകാരപ്രദമായ കോളങ്ങൾ ചേർക്കുക, മറ്റു കോളങ്ങളിലെ മൂല്യങ്ങൾ മാറ്റുക, ചില കോളങ്ങൾ പൂർണ്ണമായും ഒഴിവാക്കുക. + +1. പ്രാഥമിക കോളം പ്രോസസ്സിംഗ് + + 1. `lat` and `lng` ഒഴിവാക്കുക + + 2. `Hotel_Address` മൂല്യങ്ങൾ താഴെപ്പറയുന്ന മൂല്യങ്ങളാൽ മാറ്റുക (അഡ്രസിൽ നഗരം, രാജ്യം ഒരുപോലെ ഉണ്ടെങ്കിൽ, അത് നഗരവും രാജ്യവും മാത്രം മാറ്റുക). + + ഡാറ്റാസെറ്റിലെ ഏകദേശം ഈ നഗരങ്ങളും രാജ്യങ്ങളും മാത്രമാണ്: + + ആംസ്റ്റർഡാം, നെതർലാൻഡ്‌സ് + + ബാഴ്‌സലോണ, സ്പെയിൻ + + ലണ്ടൻ, യുണൈറ്റഡ് കിംഗ്‌ഡം + + മിലാൻ, ഇറ്റലി + + പാരിസ്, ഫ്രാൻസ് + + വിയന്ന, ഓസ്ട്രിയ + + ```python + def replace_address(row): + if "Netherlands" in row["Hotel_Address"]: + return "Amsterdam, Netherlands" + elif "Barcelona" in row["Hotel_Address"]: + return "Barcelona, Spain" + elif "United Kingdom" in row["Hotel_Address"]: + return "London, United Kingdom" + elif "Milan" in row["Hotel_Address"]: + return "Milan, Italy" + elif "France" in row["Hotel_Address"]: + return "Paris, France" + elif "Vienna" in row["Hotel_Address"]: + return "Vienna, Austria" + + # എല്ലാ വിലാസങ്ങളും ചുരുക്കിയ, കൂടുതൽ ഉപയോഗപ്രദമായ രൂപത്തിലേക്ക് മാറ്റുക + df["Hotel_Address"] = df.apply(replace_address, axis = 1) + # value_counts() ന്റെ മൊത്തം സംഖ്യ റിവ്യൂകളുടെ മൊത്തം എണ്ണത്തോടൊപ്പം ചേർന്നിരിക്കണം + print(df["Hotel_Address"].value_counts()) + ``` + + ഇപ്പോൾ നിങ്ങൾക്ക് രാജ്യ തലത്തിലുള്ള ഡാറ്റ ചോദിക്കാം: + + ```python + display(df.groupby("Hotel_Address").agg({"Hotel_Name": "nunique"})) + ``` + + | Hotel_Address | Hotel_Name | + | :--------------------- | :--------: | + | Amsterdam, Netherlands | 105 | + | Barcelona, Spain | 211 | + | London, United Kingdom | 400 | + | Milan, Italy | 162 | + | Paris, France | 458 | + | Vienna, Austria | 158 | + +2. ഹോട്ടൽ മെറ്റാ-റിവ്യൂ കോളങ്ങൾ പ്രോസസ്സ് ചെയ്യുക + + 1. `Additional_Number_of_Scoring` ഒഴിവാക്കുക + + 2. `Total_Number_of_Reviews` ആ ഹോട്ടലിനുള്ള ഡാറ്റാസെറ്റിൽ ഉള്ള റിവ്യൂകളുടെ മൊത്തം എണ്ണം കൊണ്ട് മാറ്റുക + + 3. `Average_Score` നമ്മുടെ സ്വന്തം കണക്കാക്കിയ സ്കോറിൽ മാറ്റുക + + ```python + # `Additional_Number_of_Scoring` ഒഴിവാക്കുക + df.drop(["Additional_Number_of_Scoring"], axis = 1, inplace=True) + # `Total_Number_of_Reviews` ഉം `Average_Score` ഉം നമ്മുടെ സ്വന്തം കണക്കാക്കിയ മൂല്യങ്ങളാൽ മാറ്റി വയ്ക്കുക + df.Total_Number_of_Reviews = df.groupby('Hotel_Name').transform('count') + df.Average_Score = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1) + ``` + +3. റിവ്യൂ കോളങ്ങൾ പ്രോസസ്സ് ചെയ്യുക + + 1. `Review_Total_Negative_Word_Counts`, `Review_Total_Positive_Word_Counts`, `Review_Date` and `days_since_review` ഒഴിവാക്കുക + + 2. `Reviewer_Score`, `Negative_Review`, and `Positive_Review` അതുപോലെ തന്നെ സൂക്ഷിക്കുക, + + 3. ഇപ്പോൾ `Tags` സൂക്ഷിക്കുക + + - അടുത്ത സെക്ഷനിൽ ടാഗുകളിൽ കൂടുതൽ ഫിൽട്ടറിംഗ് പ്രവർത്തനങ്ങൾ നടത്തും, പിന്നീട് ടാഗുകൾ ഒഴിവാക്കും + +4. റിവ്യൂവറിന്റെ കോളങ്ങൾ പ്രോസസ്സ് ചെയ്യുക + + 1. `Total_Number_of_Reviews_Reviewer_Has_Given` ഒഴിവാക്കുക + + 2. `Reviewer_Nationality` സൂക്ഷിക്കുക + +### ടാഗ് കോളങ്ങൾ + +`Tag` കോളം പ്രശ്നകരമാണ്, കാരണം അത് ഒരു ലിസ്റ്റ് (ടെക്സ്റ്റ് രൂപത്തിൽ) കോളത്തിൽ സൂക്ഷിച്ചിരിക്കുന്നു. ദുർഭാഗ്യവശാൽ ഈ കോളത്തിലെ ഉപവിഭാഗങ്ങളുടെ ക്രമവും എണ്ണം എല്ലായ്പ്പോഴും ഒരുപോലെ അല്ല. മനുഷ്യന് ശരിയായ വാചകങ്ങൾ കണ്ടെത്താൻ ബുദ്ധിമുട്ടാണ്, കാരണം 515,000 വരികളുണ്ട്, 1427 ഹോട്ടലുകൾ ഉണ്ട്, ഓരോ ഹോട്ടലിനും റിവ്യൂവറിന് തിരഞ്ഞെടുക്കാനുള്ള വ്യത്യസ്ത ഓപ്ഷനുകൾ ഉണ്ട്. ഇവിടെ NLP പ്രഭാവം കാണിക്കുന്നു. നിങ്ങൾ ടെക്സ്റ്റ് സ്കാൻ ചെയ്ത് ഏറ്റവും സാധാരണമായ വാചകങ്ങൾ കണ്ടെത്തി എണ്ണാം. + +ദുർഭാഗ്യവശാൽ, ഞങ്ങൾ ഏകവാക്കുകൾക്ക് അല്ല, ബഹുവാക്ക് വാചകങ്ങൾക്കാണ് (ഉദാ: *ബിസിനസ് ട്രിപ്പ്*) താൽപര്യം. അത്തരം വാചകങ്ങളുടെ ഫ്രീക്വൻസി ഡിസ്‌ട്രിബ്യൂഷൻ ആൽഗോരിതം 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 ലെisure, അല്ലെങ്കിൽ ഒരു മൃഗം കൊണ്ടുപോകാൻ) എണ്ണമായിരിക്കും, ഇത് ഹോട്ടൽ ശുപാർശ ചെയ്യുമ്പോൾ ഉപകാരപ്രദമാണ്. + +```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) +``` + +### സ്റ്റോപ്പ് വാക്കുകൾ നീക്കം ചെയ്യൽ + +നീഗറ്റീവ്, പോസിറ്റീവ് റിവ്യൂ കോളങ്ങളിൽ അനുഭവം വിശകലനം നടത്താൻ പോകുമ്പോൾ, അത് വളരെ സമയം എടുക്കാം. ശക്തമായ ലാപ്‌ടോപ്പിൽ പരീക്ഷിച്ചപ്പോൾ 12 - 14 മിനിറ്റ് എടുത്തു, ഉപയോഗിച്ച അനുഭവം ലൈബ്രറിയുടെ അടിസ്ഥാനത്തിൽ വ്യത്യാസമുണ്ട്. ഇത് (സംബന്ധിച്ച) ദീർഘകാലമാണ്, അതിനാൽ വേഗത വർദ്ധിപ്പിക്കാൻ ശ്രമിക്കേണ്ടതാണ്. + +സ്റ്റോപ്പ് വാക്കുകൾ, അഥവാ സാധാരണ ഇംഗ്ലീഷ് വാക്കുകൾ, ഒരു വാചകത്തിന്റെ അനുഭവം മാറ്റുന്നില്ല, അവ നീക്കം ചെയ്യുന്നത് ആദ്യ ഘട്ടമാണ്. അവ നീക്കം ചെയ്താൽ അനുഭവം വിശകലനം വേഗത്തിൽ നടക്കും, കൃത്യത കുറയില്ല (സ്റ്റോപ്പ് വാക്കുകൾ അനുഭവത്തെ ബാധിക്കാറില്ല, പക്ഷേ വിശകലനം മന്ദഗതിയാക്കുന്നു). + +ഏറ്റവും നീണ്ട നെഗറ്റീവ് റിവ്യൂ 395 വാക്കുകൾ ആയിരുന്നു, സ്റ്റോപ്പ് വാക്കുകൾ നീക്കം ചെയ്ത ശേഷം 195 വാക്കുകൾ മാത്രമാണ്. + +സ്റ്റോപ്പ് വാക്കുകൾ നീക്കം ചെയ്യൽ വേഗത്തിലുള്ള പ്രവർത്തനമാണ്, 2 റിവ്യൂ കോളങ്ങളിൽ 515,000 വരികളിൽ 3.3 സെക്കൻഡ് എടുത്തു. നിങ്ങളുടെ ഉപകരണത്തിന്റെ CPU വേഗം, RAM, SSD ഉണ്ട്/ഇല്ല, മറ്റ് ഘടകങ്ങൾ എന്നിവ അനുസരിച്ച് സമയം വ്യത്യാസപ്പെടാം. പ്രവർത്തനത്തിന്റെ സാന്ദ്രത കുറവായതിനാൽ, ഇത് അനുഭവം വിശകലന സമയം മെച്ചപ്പെടുത്തുകയാണെങ്കിൽ ചെയ്യുന്നത് ഉചിതമാണ്. + +```python +from nltk.corpus import stopwords + +# ഹോട്ടൽ റിവ്യൂകൾ CSV-യിൽ നിന്ന് ലോഡ് ചെയ്യുക +df = pd.read_csv("../../data/Hotel_Reviews_Filtered.csv") + +# സ്റ്റോപ്പ് വാക്കുകൾ നീക്കം ചെയ്യുക - വളരെ വലുതായ ടെക്സ്റ്റിനായി ഇത് മന്ദഗതിയാകാം! +# റയാൻ ഹാൻ (Kaggle-ൽ ryanxjhan) വിവിധ സ്റ്റോപ്പ് വാക്ക് നീക്കം ചെയ്യൽ സമീപനങ്ങളുടെ പ്രകടനം അളക്കുന്ന മികച്ച ഒരു പോസ്റ്റ് ഉണ്ട് +# https://www.kaggle.com/ryanxjhan/fast-stop-words-removal # റയാൻ ശുപാർശ ചെയ്യുന്ന സമീപനം ഉപയോഗിച്ച് +start = time.time() +cache = set(stopwords.words("english")) +def remove_stopwords(review): + text = " ".join([word for word in review.split() if word not in cache]) + return text + +# രണ്ട് കോളങ്ങളിലെയും സ്റ്റോപ്പ് വാക്കുകൾ നീക്കം ചെയ്യുക +df.Negative_Review = df.Negative_Review.apply(remove_stopwords) +df.Positive_Review = df.Positive_Review.apply(remove_stopwords) +``` + +### അനുഭവം വിശകലനം നടത്തൽ + +ഇപ്പോൾ നിങ്ങൾ നെഗറ്റീവ്, പോസിറ്റീവ് റിവ്യൂ കോളങ്ങളിൽ അനുഭവം വിശകലനം കണക്കാക്കി 2 പുതിയ കോളങ്ങളിൽ ഫലം സൂക്ഷിക്കണം. അനുഭവം പരിശോധന റിവ്യൂവറുടെ സ്കോറുമായി താരതമ്യം ചെയ്യുന്നതായിരിക്കും. ഉദാഹരണത്തിന്, നെഗറ്റീവ് റിവ്യൂ sentiment 1 (അത്യന്തം പോസിറ്റീവ്) ആണെന്ന് അനുഭവം വിശകലന യന്ത്രം കരുതിയാൽ, പോസിറ്റീവ് റിവ്യൂ sentiment 1 ആണെങ്കിൽ, എന്നാൽ റിവ്യൂവർ ഹോട്ടലിന് ഏറ്റവും താഴ്ന്ന സ്കോർ നൽകിയാൽ, റിവ്യൂ ടെക്സ്റ്റും സ്കോറും പൊരുത്തപ്പെടുന്നില്ല, അല്ലെങ്കിൽ sentiment analyser ശരിയായി തിരിച്ചറിയാൻ കഴിഞ്ഞില്ല. ചില sentiment സ്കോറുകൾ പൂർണ്ണമായും തെറ്റായിരിക്കാം, പലപ്പോഴും അത് വിശദീകരിക്കാവുന്നതാണ്, ഉദാ: റിവ്യൂ വളരെ സാര്കാസ്റ്റിക് ആയിരിക്കാം "Of course I LOVED sleeping in a room with no heating" എന്നുപറഞ്ഞാൽ sentiment analyser അത് പോസിറ്റീവ് sentiment ആണെന്ന് കരുതും, എന്നാൽ മനുഷ്യൻ വായിച്ചാൽ അത് സാര്കാസം ആണെന്ന് അറിയും. +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/ml/6-NLP/5-Hotel-Reviews-2/assignment.md b/translations/ml/6-NLP/5-Hotel-Reviews-2/assignment.md new file mode 100644 index 000000000..45d73d511 --- /dev/null +++ b/translations/ml/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/ml/6-NLP/5-Hotel-Reviews-2/notebook.ipynb b/translations/ml/6-NLP/5-Hotel-Reviews-2/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/ml/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb b/translations/ml/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb new file mode 100644 index 000000000..0eaa70893 --- /dev/null +++ b/translations/ml/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:39+00:00", + "source_file": "6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb", + "language_code": "ml" + } + }, + "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/ml/6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb b/translations/ml/6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb new file mode 100644 index 000000000..83edad1bb --- /dev/null +++ b/translations/ml/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:50+00:00", + "source_file": "6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb", + "language_code": "ml" + } + }, + "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/ml/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb b/translations/ml/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb new file mode 100644 index 000000000..53872525d --- /dev/null +++ b/translations/ml/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb @@ -0,0 +1,260 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 4, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "705bf02633759f689abc37b19749a16d", + "translation_date": "2025-12-19T16:50:02+00:00", + "source_file": "6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb", + "language_code": "ml" + } + }, + "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/ml/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md b/translations/ml/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md new file mode 100644 index 000000000..866dd61ed --- /dev/null +++ b/translations/ml/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/ml/6-NLP/5-Hotel-Reviews-2/solution/R/README.md b/translations/ml/6-NLP/5-Hotel-Reviews-2/solution/R/README.md new file mode 100644 index 000000000..71237bb95 --- /dev/null +++ b/translations/ml/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/ml/6-NLP/README.md b/translations/ml/6-NLP/README.md new file mode 100644 index 000000000..7f1c7cd88 --- /dev/null +++ b/translations/ml/6-NLP/README.md @@ -0,0 +1,40 @@ + +# സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിങ്ങുമായി ആരംഭിക്കുക + +സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗ് (NLP) എന്നത് മനുഷ്യഭാഷ സംസാരിക്കപ്പെടുകയും എഴുതപ്പെടുകയും ചെയ്യുന്ന പ്രകൃതിദത്ത ഭാഷയെ ഒരു കമ്പ്യൂട്ടർ പ്രോഗ്രാം മനസ്സിലാക്കാനുള്ള കഴിവാണ്. ഇത് കൃത്രിമ ബുദ്ധിമുട്ടിന്റെ (AI) ഒരു ഘടകമാണ്. NLP 50 വർഷത്തിലധികം നിലനിൽക്കുന്നു, ഭാഷാശാസ്ത്ര മേഖലയിലെ വേരുകളുള്ളതാണ്. മുഴുവൻ മേഖലയും യന്ത്രങ്ങൾക്ക് മനുഷ്യഭാഷ മനസ്സിലാക്കാനും പ്രോസസ്സ് ചെയ്യാനും സഹായിക്കുന്നതിനാണ് ലക്ഷ്യമിടുന്നത്. ഇതുപയോഗിച്ച് സ്പെൽ ചെക്ക് ചെയ്യൽ അല്ലെങ്കിൽ യന്ത്രം വിവർത്തനം പോലുള്ള പ്രവർത്തനങ്ങൾ നടത്താം. മെഡിക്കൽ ഗവേഷണം, സെർച്ച് എഞ്ചിനുകൾ, ബിസിനസ് ഇന്റലിജൻസ് തുടങ്ങിയ നിരവധി മേഖലകളിൽ ഇതിന് വിവിധ യാഥാർത്ഥ്യ പ്രയോഗങ്ങൾ ഉണ്ട്. + +## പ്രാദേശിക വിഷയം: യൂറോപ്യൻ ഭാഷകളും സാഹിത്യവും യൂറോപ്പിലെ റൊമാന്റിക് ഹോട്ടലുകളും ❤️ + +പാഠ്യപദ്ധതിയുടെ ഈ ഭാഗത്തിൽ, യന്ത്രം പഠനത്തിന്റെ ഏറ്റവും വ്യാപകമായ ഉപയോഗങ്ങളിൽ ഒന്നായ സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗ് (NLP) പരിചയപ്പെടും. കംപ്യൂട്ടേഷണൽ ഭാഷാശാസ്ത്രത്തിൽ നിന്നുള്ള ഈ കൃത്രിമ ബുദ്ധിമുട്ടിന്റെ വിഭാഗം മനുഷ്യരും യന്ത്രങ്ങളും വോയ്‌സ് അല്ലെങ്കിൽ എഴുത്ത് ആശയവിനിമയത്തിലൂടെ ബന്ധിപ്പിക്കുന്ന പാലമാണ്. + +ഈ പാഠങ്ങളിൽ നാം ചെറിയ സംഭാഷണ ബോട്ടുകൾ നിർമ്മിച്ച് NLPയുടെ അടിസ്ഥാനങ്ങൾ പഠിക്കും, യന്ത്രം പഠനം ഈ സംഭാഷണങ്ങളെ കൂടുതൽ 'സ്മാർട്ട്' ആക്കുന്നതിൽ എങ്ങനെ സഹായിക്കുന്നുവെന്ന് മനസ്സിലാക്കും. 1813-ൽ പ്രസിദ്ധീകരിച്ച ജെയിൻ ഓസ്റ്റന്റെ ക്ലാസിക് നോവൽ **പ്രൈഡ് ആൻഡ് പ്രെജുഡിസ്**-ലെ എലിസബത്ത് ബെനെറ്റ്, മിസ്റ്റർ ഡാർസി എന്നിവരുമായി സംഭാഷണം നടത്താൻ നിങ്ങൾ കാലയാത്ര നടത്തും. തുടർന്ന്, യൂറോപ്പിലെ ഹോട്ടൽ അവലോകനങ്ങളിലൂടെ സന്റിമെന്റ് അനാലിസിസ് പഠിച്ച് നിങ്ങളുടെ അറിവ് വർദ്ധിപ്പിക്കും. + +![Pride and Prejudice book and tea](../../../translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.ml.jpg) +> ഫോട്ടോ Elaine Howlin Unsplash ൽ നിന്നാണ് + +## പാഠങ്ങൾ + +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) + +## ക്രെഡിറ്റുകൾ + +ഈ സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗ് പാഠങ്ങൾ ☕ ഉപയോഗിച്ച് എഴുതിയത് [Stephen Howell](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/ml/6-NLP/data/README.md b/translations/ml/6-NLP/data/README.md new file mode 100644 index 000000000..9e4e51223 --- /dev/null +++ b/translations/ml/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/ml/7-TimeSeries/1-Introduction/README.md b/translations/ml/7-TimeSeries/1-Introduction/README.md new file mode 100644 index 000000000..20757ced4 --- /dev/null +++ b/translations/ml/7-TimeSeries/1-Introduction/README.md @@ -0,0 +1,201 @@ + +# ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗിലേക്ക് പരിചയം + +![ടൈം സീരീസിന്റെ സംഗ്രഹം ഒരു സ്കെച്ച്നോട്ടിൽ](../../../../translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.ml.png) + +> സ്കെച്ച്നോട്ട് [Tomomi Imura](https://www.twitter.com/girlie_mac) tarafından + +ഈ പാഠത്തിലും അടുത്ത പാഠത്തിലും, നിങ്ങൾ ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗിനെ കുറിച്ച് കുറച്ച് പഠിക്കും, ഇത് ഒരു ML ശാസ്ത്രജ്ഞന്റെ repertoire-യിലെ ഒരു രസകരവും മൂല്യവത്തുമായ ഭാഗമാണ്, മറ്റ് വിഷയങ്ങളേക്കാൾ കുറച്ച് അറിയപ്പെടാത്തത്. ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ് ഒരു തരത്തിലുള്ള 'ക്രിസ്റ്റൽ ബോൾ' ആണ്: വില പോലുള്ള ഒരു ചാരത്തിന്റെ കഴിഞ്ഞ പ്രകടനത്തെ അടിസ്ഥാനമാക്കി, അതിന്റെ ഭാവിയിലെ സാധ്യത മൂല്യം പ്രവചിക്കാം. + +[![ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗിലേക്ക് പരിചയം](https://img.youtube.com/vi/cBojo1hsHiI/0.jpg)](https://youtu.be/cBojo1hsHiI "ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗിലേക്ക് പരിചയം") + +> 🎥 ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗിനെക്കുറിച്ചുള്ള വീഡിയോയ്ക്ക് മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +വില നിർണ്ണയം, ഇൻവെന്ററി, സപ്ലൈ ചെയിൻ പ്രശ്നങ്ങൾ എന്നിവയുടെ നേരിട്ടുള്ള പ്രയോഗം കണക്കിലെടുത്താൽ, ഇത് ബിസിനസിന് യഥാർത്ഥ മൂല്യമുള്ള ഒരു ഉപകാരപ്രദവും രസകരവുമായ മേഖലയാണ്. ഭാവിയിലെ പ്രകടനം മെച്ചപ്പെടുത്താൻ കൂടുതൽ洞察ങ്ങൾ നേടാൻ ഡീപ് ലേണിംഗ് സാങ്കേതികവിദ്യകൾ ഉപയോഗിക്കാൻ തുടങ്ങിയിട്ടുണ്ടെങ്കിലും, ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ് ക്ലാസിക് ML സാങ്കേതികവിദ്യകളാൽ വളരെ അറിയപ്പെടുന്ന ഒരു മേഖലയായി തുടരുന്നു. + +> പെൻ സ്റ്റേറ്റിന്റെ ഉപകാരപ്രദമായ ടൈം സീരീസ് പാഠ്യപദ്ധതി [ഇവിടെ](https://online.stat.psu.edu/stat510/lesson/1) ലഭ്യമാണ് + +## പരിചയം + +നിങ്ങൾക്ക് ഒരു സ്മാർട്ട് പാർക്കിംഗ് മീറ്ററുകളുടെ ഒരു അറേ കൈകാര്യം ചെയ്യുന്നു എന്ന് കരുതുക, അവ എത്രത്തോളം ഉപയോഗിക്കപ്പെടുന്നു, എത്ര സമയം ഉപയോഗിക്കപ്പെടുന്നു എന്നതിനെക്കുറിച്ച് ഡാറ്റ നൽകുന്നു. + +> മീറ്ററിന്റെ കഴിഞ്ഞ പ്രകടനത്തെ അടിസ്ഥാനമാക്കി, വിതരണവും ആവശ്യവും നിയമങ്ങൾ അനുസരിച്ച് അതിന്റെ ഭാവിയിലെ മൂല്യം പ്രവചിക്കാമെങ്കിൽ? + +നിങ്ങളുടെ ലക്ഷ്യം നേടാൻ എപ്പോൾ പ്രവർത്തിക്കണമെന്ന് കൃത്യമായി പ്രവചിക്കുന്നത് ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗിലൂടെ കൈകാര്യം ചെയ്യാവുന്ന ഒരു വെല്ലുവിളിയാണ്. പാർക്കിംഗ് സ്ഥലം അന്വേഷിക്കുമ്പോൾ തിരക്കുള്ള സമയങ്ങളിൽ കൂടുതൽ ചാർജ് ചെയ്യുന്നത് ആളുകളെ സന്തോഷിപ്പിക്കില്ല, പക്ഷേ ഇത് തെരുവുകൾ ശുചിയാക്കാൻ വരുമാനം സൃഷ്ടിക്കാൻ ഉറപ്പുള്ള മാർഗ്ഗമായിരിക്കും! + +ടൈം സീരീസ് ആൽഗോരിതങ്ങളുടെ ചില തരം പരിശോധിച്ച്, ചില ഡാറ്റ ശുചിയാക്കി തയ്യാറാക്കാൻ ഒരു നോട്ട്‌ബുക്ക് ആരംഭിക്കാം. നിങ്ങൾ വിശകലനം ചെയ്യാൻ പോകുന്ന ഡാറ്റ GEFCom2014 ഫോറ്കാസ്റ്റിംഗ് മത്സരം നിന്നെടുത്തതാണ്. ഇത് 2012 മുതൽ 2014 വരെ 3 വർഷത്തെ മണിക്കൂർ അടിസ്ഥാനത്തിലുള്ള വൈദ്യുതി ലോഡ്, താപനില മൂല്യങ്ങൾ ഉൾക്കൊള്ളുന്നു. വൈദ്യുതി ലോഡിന്റെയും താപനിലയുടെയും ചരിത്ര മാതൃകകൾ പരിഗണിച്ച്, വൈദ്യുതി ലോഡിന്റെ ഭാവിയിലെ മൂല്യങ്ങൾ പ്രവചിക്കാം. + +ഈ ഉദാഹരണത്തിൽ, നിങ്ങൾ ചരിത്ര ലോഡ് ഡാറ്റ മാത്രം ഉപയോഗിച്ച് ഒരു ടൈം സ്റ്റെപ്പ് മുന്നോട്ട് ഫോറ്കാസ്റ്റ് ചെയ്യുന്നത് പഠിക്കും. എന്നാൽ തുടങ്ങുന്നതിന് മുമ്പ്, പിന്നിൽ എന്താണ് നടക്കുന്നത് എന്ന് മനസ്സിലാക്കുന്നത് ഉപകാരപ്രദമാണ്. + +## ചില നിർവചനങ്ങൾ + +'ടൈം സീരീസ്' എന്ന പദം കാണുമ്പോൾ, അതിന്റെ ഉപയോഗം വിവിധ സാഹചര്യങ്ങളിൽ മനസ്സിലാക്കേണ്ടതാണ്. + +🎓 **ടൈം സീരീസ്** + +ഗണിതശാസ്ത്രത്തിൽ, "ടൈം സീരീസ് എന്നത് സമയക്രമത്തിൽ സൂചിപ്പിച്ച (അഥവാ പട്ടികപ്പെടുത്തിയ അല്ലെങ്കിൽ ഗ്രാഫ് ചെയ്ത) ഡാറ്റ പോയിന്റുകളുടെ ഒരു ശ്രേണി ആണ്. സാധാരണയായി, ടൈം സീരീസ് ഒരു തുടർച്ചയായ സമാന ഇടവേളകളിൽ എടുത്ത ഒരു ശ്രേണിയാണ്." ഒരു ടൈം സീരീസിന്റെ ഉദാഹരണം [ഡോ ജോൺസ് ഇൻഡസ്ട്രിയൽ അവറേജ്](https://wikipedia.org/wiki/Time_series) യുടെ ദിവസേന അവസാന മൂല്യമാണ്. ടൈം സീരീസ് പ്ലോട്ടുകളും സാങ്കേതിക മോഡലിംഗും സിഗ്നൽ പ്രോസസ്സിംഗ്, കാലാവസ്ഥ പ്രവചനം, ഭൂകമ്പ പ്രവചനം തുടങ്ങിയ മേഖലകളിൽ സാധാരണയായി കാണപ്പെടുന്നു, ഇവിടങ്ങളിൽ സംഭവങ്ങൾ സംഭവിക്കുകയും ഡാറ്റ പോയിന്റുകൾ സമയക്രമത്തിൽ പ്ലോട്ട് ചെയ്യപ്പെടുകയും ചെയ്യുന്നു. + +🎓 **ടൈം സീരീസ് വിശകലനം** + +ടൈം സീരീസ് വിശകലനം, മുകളിൽ പറഞ്ഞ ടൈം സീരീസ് ഡാറ്റയുടെ വിശകലനമാണ്. ടൈം സീരീസ് ഡാറ്റ വ്യത്യസ്ത രൂപങ്ങൾ സ്വീകരിക്കാം, ഉദാഹരണത്തിന് 'ഇന്ററപ്റ്റഡ് ടൈം സീരീസ്' എന്നത് ഒരു ഇടപെടൽ സംഭവത്തിന് മുമ്പും ശേഷവും ടൈം സീരീസിന്റെ വളർച്ചയിൽ മാതൃകകൾ കണ്ടെത്തുന്നു. ടൈം സീരീസിനായി ആവശ്യമായ വിശകലന തരം ഡാറ്റയുടെ സ്വഭാവത്തെ ആശ്രയിച്ചിരിക്കുന്നു. ടൈം സീരീസ് ഡാറ്റ സ്വയം സംഖ്യകളോ അക്ഷരങ്ങളോ ആയ ശ്രേണിയായിരിക്കും. + +വിശകലനം നടത്താൻ വിവിധ രീതികൾ ഉപയോഗിക്കുന്നു, ഫ്രീക്വൻസി-ഡൊമെയ്ൻ, ടൈം-ഡൊമെയ്ൻ, ലീനിയർ, നോൺലീനിയർ തുടങ്ങിയവ ഉൾപ്പെടെ. ഈ തരത്തിലുള്ള ഡാറ്റ വിശകലനം ചെയ്യാനുള്ള നിരവധി മാർഗ്ഗങ്ങളെക്കുറിച്ച് [കൂടുതൽ പഠിക്കുക](https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm). + +🎓 **ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ്** + +ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ്, മുമ്പ് ശേഖരിച്ച ഡാറ്റയിൽ കാണിച്ച മാതൃകകളുടെ അടിസ്ഥാനത്തിൽ ഭാവിയിലെ മൂല്യങ്ങൾ പ്രവചിക്കാൻ ഒരു മോഡൽ ഉപയോഗിക്കുന്നതാണ്. ടൈം സീരീസ് ഡാറ്റയെ x വേരിയബിളുകളായി ഉപയോഗിച്ച് റെഗ്രഷൻ മോഡലുകൾ ഉപയോഗിച്ച് പരിശോധിക്കാമെങ്കിലും, ഇത്തരം ഡാറ്റ പ്രത്യേക മോഡലുകൾ ഉപയോഗിച്ച് വിശകലനം ചെയ്യുന്നത് മികച്ചതാണ്. + +ടൈം സീരീസ് ഡാറ്റ ഒരു ക്രമീകരിച്ച നിരീക്ഷണങ്ങളുടെ പട്ടികയാണ്, ലീനിയർ റെഗ്രഷൻ ഉപയോഗിച്ച് വിശകലനം ചെയ്യാവുന്ന ഡാറ്റയല്ല. ഏറ്റവും സാധാരണമായത് ARIMA ആണ്, ഇത് "Autoregressive Integrated Moving Average" എന്ന വാക്കുകളുടെ ചുരുക്കമാണ്. + +[ARIMA മോഡലുകൾ](https://online.stat.psu.edu/stat510/lesson/1/1.1) "ഒരു ശ്രേണിയുടെ നിലവിലെ മൂല്യം കഴിഞ്ഞ മൂല്യങ്ങളോടും കഴിഞ്ഞ പ്രവചന പിശകുകളോടും ബന്ധിപ്പിക്കുന്നു." ഇവ ടൈം-ഡൊമെയ്ൻ ഡാറ്റ വിശകലനത്തിന് ഏറ്റവും അനുയോജ്യമാണ്, ഇവിടെ ഡാറ്റ സമയക്രമത്തിൽ ക്രമീകരിച്ചിരിക്കുന്നു. + +> ARIMA മോഡലുകളുടെ പല തരങ്ങളും ഉണ്ട്, അവയെക്കുറിച്ച് [ഇവിടെ](https://people.duke.edu/~rnau/411arim.htm) പഠിക്കാം, അടുത്ത പാഠത്തിൽ നിങ്ങൾ അവയെ കുറിച്ച് പരിചയപ്പെടും. + +അടുത്ത പാഠത്തിൽ, നിങ്ങൾ [Univariate Time Series](https://itl.nist.gov/div898/handbook/pmc/section4/pmc44.htm) ഉപയോഗിച്ച് ARIMA മോഡൽ നിർമ്മിക്കും, ഇത് സമയം കടന്നുപോകുമ്പോൾ മൂല്യം മാറുന്ന ഒരു വേരിയബിളിൽ കേന്ദ്രീകരിക്കുന്നു. ഈ തരത്തിലുള്ള ഡാറ്റയുടെ ഒരു ഉദാഹരണം [ഈ ഡാറ്റാസെറ്റ്](https://itl.nist.gov/div898/handbook/pmc/section4/pmc4411.htm) ആണ്, ഇത് മൗന ലോ ഒബ്സർവേറ്ററിയിലെ മാസാന്ത CO2 സാന്ദ്രത രേഖപ്പെടുത്തുന്നു: + +| CO2 | YearMonth | Year | Month | +| :----: | :-------: | :---: | :---: | +| 330.62 | 1975.04 | 1975 | 1 | +| 331.40 | 1975.13 | 1975 | 2 | +| 331.87 | 1975.21 | 1975 | 3 | +| 333.18 | 1975.29 | 1975 | 4 | +| 333.92 | 1975.38 | 1975 | 5 | +| 333.43 | 1975.46 | 1975 | 6 | +| 331.85 | 1975.54 | 1975 | 7 | +| 330.01 | 1975.63 | 1975 | 8 | +| 328.51 | 1975.71 | 1975 | 9 | +| 328.41 | 1975.79 | 1975 | 10 | +| 329.25 | 1975.88 | 1975 | 11 | +| 330.97 | 1975.96 | 1975 | 12 | + +✅ ഈ ഡാറ്റാസെറ്റിൽ സമയം കടന്നുപോകുമ്പോൾ മാറുന്ന വേരിയബിള്‍ തിരിച്ചറിയുക + +## ടൈം സീരീസ് ഡാറ്റയുടെ പരിഗണിക്കേണ്ട സവിശേഷതകൾ + +ടൈം സീരീസ് ഡാറ്റ നോക്കുമ്പോൾ, അതിന് [ചില സവിശേഷതകൾ](https://online.stat.psu.edu/stat510/lesson/1/1.1) ഉണ്ടെന്ന് കാണാം, അവയെ പരിഗണിച്ച് അതിന്റെ മാതൃകകൾ മെച്ചമായി മനസ്സിലാക്കാൻ നിങ്ങൾ ശ്രമിക്കണം. ടൈം സീരീസ് ഡാറ്റ ഒരു 'സിഗ്നൽ' നൽകുന്നുവെന്ന് കരുതുമ്പോൾ, ഈ സവിശേഷതകൾ 'ശബ്ദം' എന്ന നിലയിൽ കാണാം. ഈ 'ശബ്ദം' കുറയ്ക്കാൻ ചില സാങ്കേതിക രീതികൾ ഉപയോഗിച്ച് ഈ സവിശേഷതകളെ കുറച്ചുകുറയ്ക്കേണ്ടി വരും. + +ടൈം സീരീസുമായി പ്രവർത്തിക്കാൻ നിങ്ങൾ അറിയേണ്ട ചില ആശയങ്ങൾ: + +🎓 **ട്രെൻഡുകൾ** + +ട്രെൻഡുകൾ സമയക്രമത്തിൽ അളക്കാവുന്ന വർദ്ധനവുകളും കുറവുകളും ആണ്. [കൂടുതൽ വായിക്കുക](https://machinelearningmastery.com/time-series-trends-in-python). ടൈം സീരീസിന്റെ സാന്ദർഭ്യത്തിൽ, ട്രെൻഡുകൾ എങ്ങനെ ഉപയോഗിക്കാമെന്നും, ആവശ്യമെങ്കിൽ എങ്ങനെ നീക്കം ചെയ്യാമെന്നും ആണ്. + +🎓 **[സീസണാലിറ്റി](https://machinelearningmastery.com/time-series-seasonality-with-python/)** + +സീസണാലിറ്റി എന്നത് കാലക്രമികമായ ചലനങ്ങളാണ്, ഉദാഹരണത്തിന് അവധിക്കാല തിരക്കുകൾ വിൽപ്പനയെ ബാധിക്കാം. [ഇവിടെ നോക്കൂ](https://itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm) വിവിധ തരത്തിലുള്ള പ്ലോട്ടുകൾ ഡാറ്റയിൽ സീസണാലിറ്റി എങ്ങനെ കാണിക്കുന്നു എന്ന്. + +🎓 **ഔട്ട്‌ലൈയേഴ്സ്** + +ഔട്ട്‌ലൈയേഴ്സ് സാധാരണ ഡാറ്റ വ്യത്യാസത്തിൽ നിന്ന് വളരെ അകലെയാണ്. + +🎓 **ദീർഘകാല ചക്രം** + +സീസണാലിറ്റിയിൽ സ്വതന്ത്രമായി, ഡാറ്റ ഒരു ദീർഘകാല ചക്രം കാണിക്കാം, ഉദാഹരണത്തിന് ഒരു സാമ്പത്തിക മന്ദഗതിയെന്നത് ഒരു വർഷത്തിലധികം നീണ്ടുനിൽക്കാം. + +🎓 **സ്ഥിരമായ വ്യത്യാസം** + +സമയം കടന്നുപോകുമ്പോൾ, ചില ഡാറ്റ സ്ഥിരമായ ചലനങ്ങൾ കാണിക്കുന്നു, ഉദാഹരണത്തിന് ദിവസവും രാത്രിയും ഊർജ്ജ ഉപയോഗം. + +🎓 **അപ്രതീക്ഷിത മാറ്റങ്ങൾ** + +ഡാറ്റയിൽ അപ്രതീക്ഷിതമായ മാറ്റങ്ങൾ കാണാം, കൂടുതൽ വിശകലനം ആവശ്യമുള്ളതായിരിക്കും. ഉദാഹരണത്തിന് COVID മൂലം ബിസിനസുകൾ അടച്ചുപൂട്ടിയത് ഡാറ്റയിൽ മാറ്റങ്ങൾ ഉണ്ടാക്കി. + +✅ [ഈ സാമ്പിൾ ടൈം സീരീസ് പ്ലോട്ട്](https://www.kaggle.com/kashnitsky/topic-9-part-1-time-series-analysis-in-python) നോക്കൂ, ഇത് ചില വർഷങ്ങളിലായി ദിവസേന കളിയിൽ ചെലവഴിച്ച കറൻസി കാണിക്കുന്നു. മുകളിൽ പറഞ്ഞ സവിശേഷതകളിൽ ഏതെങ്കിലും ഈ ഡാറ്റയിൽ തിരിച്ചറിയാമോ? + +![ഇൻ-ഗെയിം കറൻസി ചെലവ്](../../../../translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.ml.png) + +## അഭ്യാസം - വൈദ്യുതി ഉപയോഗ ഡാറ്റയുമായി ആരംഭിക്കുക + +കഴിഞ്ഞ ഉപയോഗം അടിസ്ഥാനമാക്കി ഭാവിയിലെ വൈദ്യുതി ഉപയോഗം പ്രവചിക്കാൻ ഒരു ടൈം സീരീസ് മോഡൽ സൃഷ്ടിക്കാൻ തുടങ്ങാം. + +> ഈ ഉദാഹരണത്തിലെ ഡാറ്റ GEFCom2014 ഫോറ്കാസ്റ്റിംഗ് മത്സരം നിന്നെടുത്തതാണ്. ഇത് 2012 മുതൽ 2014 വരെ 3 വർഷത്തെ മണിക്കൂർ അടിസ്ഥാനത്തിലുള്ള വൈദ്യുതി ലോഡ്, താപനില മൂല്യങ്ങൾ ഉൾക്കൊള്ളുന്നു. +> +> ടാവോ ഹോങ്, പിയർ പിൻസൺ, ഷു ഫാൻ, ഹമിദ്‌റേസാ സാരിപൂർ, അൽബർട്ടോ ട്രൊക്കോളി, റോബ് ജെ. ഹൈൻഡ്മാൻ, "പ്രൊബബിലിസ്റ്റിക് എനർജി ഫോറ്കാസ്റ്റിംഗ്: ഗ്ലോബൽ എനർജി ഫോറ്കാസ്റ്റിംഗ് കോംപറ്റിഷൻ 2014 ആൻഡ് ബിയോണ്ട്", ഇന്റർനാഷണൽ ജേണൽ ഓഫ് ഫോറ്കാസ്റ്റിംഗ്, വോൾ.32, നമ്പർ 3, പേജ് 896-913, ജൂലൈ-സെപ്റ്റംബർ, 2016. + +1. ഈ പാഠത്തിന്റെ `working` ഫോൾഡറിൽ, _notebook.ipynb_ ഫയൽ തുറക്കുക. ഡാറ്റ ലോഡ് ചെയ്യാനും ദൃശ്യവൽക്കരിക്കാനും സഹായിക്കുന്ന ലൈബ്രറികൾ ചേർക്കുക + + ```python + import os + import matplotlib.pyplot as plt + from common.utils import load_data + %matplotlib inline + ``` + + ശ്രദ്ധിക്കുക, നിങ്ങൾ ഉൾപ്പെടുത്തിയ `common` ഫോൾഡറിൽ നിന്നുള്ള ഫയലുകൾ ഉപയോഗിക്കുന്നു, ഇത് നിങ്ങളുടെ പരിസ്ഥിതി സജ്ജമാക്കുകയും ഡാറ്റ ഡൗൺലോഡ് ചെയ്യുന്നതും കൈകാര്യം ചെയ്യുന്നു. + +2. തുടർന്ന്, `load_data()` വിളിച്ച് ഡാറ്റ ഒരു ഡാറ്റാഫ്രെയിമായി പരിശോധിച്ച് `head()` ഉപയോഗിക്കുക: + + ```python + data_dir = './data' + energy = load_data(data_dir)[['load']] + energy.head() + ``` + + തീയതിയും ലോഡും പ്രതിനിധീകരിക്കുന്ന രണ്ട് കോളങ്ങൾ ഉണ്ടെന്ന് കാണാം: + + | | load | + | :-----------------: | :----: | + | 2012-01-01 00:00:00 | 2698.0 | + | 2012-01-01 01:00:00 | 2558.0 | + | 2012-01-01 02:00:00 | 2444.0 | + | 2012-01-01 03:00:00 | 2402.0 | + | 2012-01-01 04:00:00 | 2403.0 | + +3. ഇപ്പോൾ, `plot()` വിളിച്ച് ഡാറ്റ പ്ലോട്ട് ചെയ്യുക: + + ```python + energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![energy plot](../../../../translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.ml.png) + +4. ഇപ്പോൾ, 2014 ജൂലൈയുടെ ആദ്യ ആഴ്ച `[from date]: [to date]` മാതൃകയിൽ `energy`-ക്ക് ഇൻപുട്ടായി നൽകി പ്ലോട്ട് ചെയ്യുക: + + ```python + energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![july](../../../../translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.ml.png) + + മനോഹരമായ പ്ലോട്ട്! ഈ പ്ലോട്ടുകൾ നോക്കി മുകളിൽ പറഞ്ഞ സവിശേഷതകളിൽ ഏതെങ്കിലും തിരിച്ചറിയാമോ? ഡാറ്റ ദൃശ്യവൽക്കരിച്ച് നാം എന്ത് നിഗമനം വരുത്താം? + +അടുത്ത പാഠത്തിൽ, നിങ്ങൾ ARIMA മോഡൽ നിർമ്മിച്ച് ചില ഫോറ്കാസ്റ്റുകൾ സൃഷ്ടിക്കും. + +--- + +## 🚀ചലഞ്ച് + +ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗിൽ നിന്ന് പ്രയോജനം ലഭിക്കാവുന്ന എല്ലാ വ്യവസായങ്ങളും അന്വേഷണ മേഖലകളും ഒരു പട്ടിക തയ്യാറാക്കുക. ഈ സാങ്കേതികവിദ്യകളുടെ പ്രയോഗം കലകളിൽ, ഇക്കണോമെട്രിക്സിൽ, പരിസ്ഥിതിശാസ്ത്രത്തിൽ, റീട്ടെയിലിൽ, വ്യവസായത്തിൽ, ഫിനാൻസിൽ എന്നിവിടങ്ങളിൽ ഉണ്ടാകാമോ? മറ്റെവിടെയെങ്കിലും? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ഇവിടെ ഉൾപ്പെടുത്താത്തതായിരുന്നാലും, ന്യുറൽ നെറ്റ്വർക്കുകൾ ചിലപ്പോൾ ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗിന്റെ ക്ലാസിക് രീതികൾ മെച്ചപ്പെടുത്താൻ ഉപയോഗിക്കുന്നു. അവയെക്കുറിച്ച് കൂടുതൽ വായിക്കുക [ഈ ലേഖനത്തിൽ](https://medium.com/microsoftazure/neural-networks-for-forecasting-financial-and-economic-time-series-6aca370ff412) + +## അസൈൻമെന്റ് + +[കൂടുതൽ ടൈം സീരീസുകൾ ദൃശ്യവൽക്കരിക്കുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/7-TimeSeries/1-Introduction/assignment.md b/translations/ml/7-TimeSeries/1-Introduction/assignment.md new file mode 100644 index 000000000..3eece809c --- /dev/null +++ b/translations/ml/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/ml/7-TimeSeries/1-Introduction/solution/Julia/README.md b/translations/ml/7-TimeSeries/1-Introduction/solution/Julia/README.md new file mode 100644 index 000000000..5096258c3 --- /dev/null +++ b/translations/ml/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/ml/7-TimeSeries/1-Introduction/solution/R/README.md b/translations/ml/7-TimeSeries/1-Introduction/solution/R/README.md new file mode 100644 index 000000000..50dd19933 --- /dev/null +++ b/translations/ml/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/ml/7-TimeSeries/1-Introduction/solution/notebook.ipynb b/translations/ml/7-TimeSeries/1-Introduction/solution/notebook.ipynb new file mode 100644 index 000000000..aa02ef565 --- /dev/null +++ b/translations/ml/7-TimeSeries/1-Introduction/solution/notebook.ipynb @@ -0,0 +1,172 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ഡാറ്റ സജ്ജീകരണം\n", + "\n", + "ഈ നോട്ട്‌ബുക്കിൽ, ഞങ്ങൾ കാണിക്കുന്നു എങ്ങനെ:\n", + "- ഈ മോഡ്യൂളിനായി ടൈം സീരീസ് ഡാറ്റ സജ്ജീകരിക്കാം\n", + "- ഡാറ്റ ദൃശ്യവൽക്കരിക്കാം\n", + "\n", + "ഈ ഉദാഹരണത്തിലെ ഡാറ്റ GEFCom2014 ഫോറ്കാസ്റ്റിംഗ് മത്സരം1 നിന്നാണ് എടുത്തത്. ഇത് 2012 മുതൽ 2014 വരെ 3 വർഷത്തെ മണിക്കൂറിൽ മണിക്കൂർ വൈദ്യുതി ലോഡ് மற்றும் താപനില മൂല്യങ്ങൾ ഉൾക്കൊള്ളുന്നു.\n", + "\n", + "1ടാവോ ഹോങ്, പിയർ പിൻസൺ, ഷു ഫാൻ, ഹമിദ്‌റേസാ സാരെയിപൂർ, അൽബെർട്ടോ ട്രൊക്കോളി, റോബ് ജെ. ഹൈൻഡ്മാൻ, \"പ്രൊബബിലിസ്റ്റിക് എനർജി ഫോറ്കാസ്റ്റിംഗ്: ഗ്ലോബൽ എനർജി ഫോറ്കാസ്റ്റിംഗ് മത്സരം 2014 ആൻഡ് ബിയോണ്ട്\", ഇന്റർനാഷണൽ ജേണൽ ഓഫ് ഫോറ്കാസ്റ്റിംഗ്, വോൾ.32, നമ്പർ 3, പേജ് 896-913, ജൂലൈ-സെപ്റ്റംബർ, 2016.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import matplotlib.pyplot as plt\n", + "from common.utils import load_data\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "csv-ൽ നിന്നുള്ള ഡാറ്റ Pandas ഡാറ്റാഫ്രെയിമിലേക്ക് ലോഡ് ചെയ്യുക.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2698.0\n", + "2012-01-01 01:00:00 2558.0\n", + "2012-01-01 02:00:00 2444.0\n", + "2012-01-01 03:00:00 2402.0\n", + "2012-01-01 04:00:00 2403.0" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
load
2012-01-01 00:00:002698.0
2012-01-01 01:00:002558.0
2012-01-01 02:00:002444.0
2012-01-01 03:00:002402.0
2012-01-01 04:00:002403.0
\n
" + }, + "metadata": {}, + "execution_count": 7 + } + ], + "source": [ + "data_dir = './data'\n", + "energy = load_data(data_dir)[['load']]\n", + "energy.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ലഭ്യമായ എല്ലാ ലോഡ് ഡാറ്റയും (ജനുവരി 2012 മുതൽ ഡിസംബർ 2014 വരെ) പ്ലോട്ട് ചെയ്യുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2014 ജൂലൈയുടെ ആദ്യ ആഴ്ച പ്ലോട്ട് ചെയ്യുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAHiCAYAAABFgonlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXhb5ZU/8O+r3bYkO7bl3YljZ3dCnJBASCCQFkqBgUDpBrRMZ6YLMJ2l26/TTjtDmelMp09nOtNOaUt31tKFtRToQAkpSUhIiJPY2Z14X+VFkiVL1vL+/pBkjHESL5Ku7r3fz/P4IbF07z1Gsa1z3/OeI6SUICIiIiIiIgIAg9IBEBERERERUfZgkkhEREREREQTmCQSERERERHRBCaJRERERERENIFJIhEREREREU1gkkhEREREREQTTEoHoITi4mJZU1OjdBhERERERESKOHDggFtK6ZruMV0miTU1Ndi/f7/SYRARERERESlCCNF2rsdYbkpEREREREQTmCQSERERERHRBCaJRERERERENEGXexKJiIiIiIgAIBwOo7OzE8FgUOlQ0sJms6Gqqgpms3nGxzBJJCIiIiIi3ers7ITD4UBNTQ2EEEqHk1JSSgwODqKzsxOLFy+e8XEsNyUiIiIiIt0KBoMoKirSXIIIAEIIFBUVzXqVlEkiERERERHpmhYTxKS5fG1MEomIiIiIiBRkt9tTcp57770X3/rWt+Z9HiaJRERERERENIFJIhERERERURaQUuILX/gCVq9ejTVr1uDxxx8HAIyOjuLd73431q9fjzVr1uDpp5+eOObrX/86li1bhssvvxwnTpxISRzsbkpERERERATga88242i3N6XnXFXhxD/fWD+j5z7xxBNobGzEoUOH4Ha7sXHjRmzduhUulwtPPvkknE4n3G43Nm3ahJtuuglvvvkmfvnLX6KxsRGRSATr16/HxRdfPO+YuZJIRERERESUBV577TXcdtttMBqNKC0txZVXXok33ngDUkp8+ctfxkUXXYSrr74aXV1d6Ovrw5/+9CfccsstyM3NhdPpxE033ZSSOLiSSEREREREBMx4xS/THnnkEQwMDODAgQMwm82oqamZ9ViL2eBKIhERERERURa44oor8PjjjyMajWJgYAA7d+7EJZdcAo/Hg5KSEpjNZrzy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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "kernel_info": { + "name": "python3" + }, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "dddca9ad9e34435494e0933c218e1579", + "translation_date": "2025-12-19T17:37:06+00:00", + "source_file": "7-TimeSeries/1-Introduction/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/ml/7-TimeSeries/1-Introduction/working/notebook.ipynb b/translations/ml/7-TimeSeries/1-Introduction/working/notebook.ipynb new file mode 100644 index 000000000..89dacc311 --- /dev/null +++ b/translations/ml/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", + "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": "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:29+00:00", + "source_file": "7-TimeSeries/1-Introduction/working/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/ml/7-TimeSeries/2-ARIMA/README.md b/translations/ml/7-TimeSeries/2-ARIMA/README.md new file mode 100644 index 000000000..86e3161e1 --- /dev/null +++ b/translations/ml/7-TimeSeries/2-ARIMA/README.md @@ -0,0 +1,409 @@ + +# ARIMA ഉപയോഗിച്ച് ടൈം സീരീസ് പ്രവചനം + +മുൻപത്തെ പാഠത്തിൽ, നിങ്ങൾ ടൈം സീരീസ് പ്രവചനത്തെ കുറിച്ച് കുറച്ച് പഠിച്ചു, കൂടാതെ ഒരു സമയപരിധിയിൽ വൈദ്യുതി ലോഡിന്റെ ചലനങ്ങൾ കാണിക്കുന്ന ഒരു ഡാറ്റാസെറ്റ് ലോഡ് ചെയ്തു. + +[![Introduction to ARIMA](https://img.youtube.com/vi/IUSk-YDau10/0.jpg)](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 മോഡലുകൾ പ്രത്യേകിച്ച് [non-stationarity](https://wikipedia.org/wiki/Stationary_process) കാണിക്കുന്ന ഡാറ്റയ്ക്ക് അനുയോജ്യമാണ്. + +## പൊതുവായ ആശയങ്ങൾ + +ARIMA ഉപയോഗിക്കാൻ കഴിയാൻ, നിങ്ങൾ അറിയേണ്ട ചില ആശയങ്ങൾ ഉണ്ട്: + +- 🎓 **സ്റ്റേഷനറിറ്റി**. സാംഖ്യിക പശ്ചാത്തലത്തിൽ, സ്റ്റേഷനറിറ്റി എന്നത് സമയത്തിൽ മാറ്റം വരുത്തുമ്പോഴും വിതരണത്തിൽ മാറ്റമില്ലാത്ത ഡാറ്റയെ സൂചിപ്പിക്കുന്നു. നൺ-സ്റ്റേഷനറി ഡാറ്റ, അതായത് ട്രെൻഡുകൾ മൂലം ചലനങ്ങൾ കാണിക്കുന്ന ഡാറ്റ, വിശകലനം ചെയ്യാൻ മാറ്റം വരുത്തേണ്ടതാണ്. ഉദാഹരണത്തിന്, സീസണാലിറ്റി ഡാറ്റയിൽ ചലനങ്ങൾ കൊണ്ടുവരാം, ഇത് 'സീസണൽ-ഡിഫറൻസിംഗ്' പ്രക്രിയയിലൂടെ നീക്കം ചെയ്യാം. + +- 🎓 **[ഡിഫറൻസിംഗ്](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**. ഡാറ്റ ഡിഫറൻസിംഗ്, വീണ്ടും സാംഖ്യിക പശ്ചാത്തലത്തിൽ, നൺ-സ്റ്റേഷനറി ഡാറ്റയെ സ്റ്റേഷനറി ആക്കാൻ അതിന്റെ സ്ഥിരമല്ലാത്ത ട്രെൻഡ് നീക്കംചെയ്യുന്ന പ്രക്രിയയാണ്. "ഡിഫറൻസിംഗ് ഒരു ടൈം സീരീസിന്റെ തലത്തിലെ മാറ്റങ്ങൾ നീക്കംചെയ്യുന്നു, ട്രെൻഡ്, സീസണാലിറ്റി ഇല്ലാതാക്കുന്നു, അതിനാൽ ടൈം സീരീസിന്റെ ശരാശരി സ്ഥിരമാക്കുന്നു." [ഷിക്ഷിയോങ് et al ലേഖനം](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` പൈതൺ ലൈബ്രറി ലോഡ് ചെയ്യാൻ നോട്ട്‌ബുക്ക് റൺ ചെയ്യുക; ARIMA മോഡലുകൾക്കായി ഇത് ആവശ്യമാണ്. + +1. ആവശ്യമായ ലൈബ്രറികൾ ലോഡ് ചെയ്യുക + +1. ഇപ്പോൾ, ഡാറ്റ പ്ലോട്ടിംഗിന് ഉപകാരപ്രദമായ കൂടുതൽ ലൈബ്രറികൾ ലോഡ് ചെയ്യുക: + + ```python + import os + import warnings + import matplotlib.pyplot as plt + import numpy as np + import pandas as pd + import datetime as dt + import math + + from pandas.plotting import autocorrelation_plot + from statsmodels.tsa.statespace.sarimax import SARIMAX + from sklearn.preprocessing import MinMaxScaler + from common.utils import load_data, mape + from IPython.display import Image + + %matplotlib inline + pd.options.display.float_format = '{:,.2f}'.format + np.set_printoptions(precision=2) + warnings.filterwarnings("ignore") # മുന്നറിയിപ്പ് സന്ദേശങ്ങൾ അവഗണിക്കാൻ വ്യക്തമാക്കുക + ``` + +1. `/data/energy.csv` ഫയലിൽ നിന്നുള്ള ഡാറ്റ പാൻഡാസ് ഡാറ്റാഫ്രെയിമിലേക്ക് ലോഡ് ചെയ്ത് നോക്കുക: + + ```python + energy = load_data('./data')[['load']] + energy.head(10) + ``` + +1. 2012 ജനുവരി മുതൽ 2014 ഡിസംബർ വരെ ലഭ്യമായ എല്ലാ എനർജി ഡാറ്റയും പ്ലോട്ട് ചെയ്യുക. കഴിഞ്ഞ പാഠത്തിൽ കണ്ട ഡാറ്റയാണിത്, അതിനാൽ അത്ഭുതങ്ങൾ ഉണ്ടാകില്ല: + + ```python + energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ഇപ്പോൾ, മോഡൽ നിർമ്മിക്കാം! + +### പരിശീലനവും പരിശോധനയും ഡാറ്റാസെറ്റുകൾ സൃഷ്ടിക്കുക + +ഇപ്പോൾ നിങ്ങളുടെ ഡാറ്റ ലോഡ് ചെയ്തിരിക്കുന്നു, അതിനാൽ അത് ട്രെയിൻ, ടെസ്റ്റ് സെറ്റുകളായി വേർതിരിക്കാം. മോഡൽ ട്രെയിൻ സെറ്റിൽ പരിശീലിപ്പിക്കും. സാധാരണ പോലെ, മോഡൽ പരിശീലനം പൂർത്തിയായ ശേഷം, ടെസ്റ്റ് സെറ്റ് ഉപയോഗിച്ച് അതിന്റെ കൃത്യത വിലയിരുത്തും. ടെസ്റ്റ് സെറ്റ് ട്രെയിൻ സെറ്റിനേക്കാൾ പിന്നീട് വരുന്ന സമയപരിധി ഉൾക്കൊള്ളണം, അതിനാൽ മോഡൽ ഭാവിയിലെ സമയങ്ങളിൽ നിന്നുള്ള വിവരങ്ങൾ നേടാതിരിക്കണം. + +1. 2014 സെപ്റ്റംബർ 1 മുതൽ ഒക്ടോബർ 31 വരെ രണ്ട് മാസത്തെ കാലയളവ് ട്രെയിൻ സെറ്റിന് അനുവദിക്കുക. ടെസ്റ്റ് സെറ്റ് 2014 നവംബർ 1 മുതൽ ഡിസംബർ 31 വരെ രണ്ട് മാസത്തെ കാലയളവാണ്: + + ```python + train_start_dt = '2014-11-01 00:00:00' + test_start_dt = '2014-12-30 00:00:00' + ``` + + ഈ ഡാറ്റ ദിനംപ്രതി എനർജി ഉപഭോഗം പ്രതിഫലിപ്പിക്കുന്നതിനാൽ ശക്തമായ സീസണൽ പാറ്റേൺ ഉണ്ട്, എന്നാൽ ഉപഭോഗം ഏറ്റവും അടുത്ത ദിവസങ്ങളിലെ ഉപഭോഗത്തോട് ഏറ്റവും സമാനമാണ്. + +1. വ്യത്യാസങ്ങൾ ദൃശ്യവൽക്കരിക്കുക: + + ```python + energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \ + .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \ + .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![training and testing data](../../../../translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.ml.png) + + അതിനാൽ, ഡാറ്റ പരിശീലനത്തിന് ചെറിയ ഒരു സമയവിൻഡോ ഉപയോഗിക്കുന്നത് മതിയാകും. + + > കുറിപ്പ്: ARIMA മോഡൽ ഫിറ്റിംഗിനായി ഉപയോഗിക്കുന്ന ഫംഗ്ഷൻ ഇൻ-സാമ്പിൾ വാലിഡേഷൻ ഉപയോഗിക്കുന്നതിനാൽ, വാലിഡേഷൻ ഡാറ്റ ഒഴിവാക്കും. + +### പരിശീലനത്തിനായി ഡാറ്റ തയ്യാറാക്കുക + +ഇപ്പോൾ, ഡാറ്റ ഫിൽട്ടറിംഗ്, സ്കെയിലിംഗ് എന്നിവ നടത്തി പരിശീലനത്തിനായി തയ്യാറാക്കണം. ആവശ്യമായ സമയപരിധികളും കോളങ്ങളുമുള്ള ഡാറ്റ ഫിൽട്ടർ ചെയ്ത്, ഡാറ്റ 0,1 ഇടവേളയിൽ പ്രൊജക്ട് ചെയ്യാൻ സ്കെയിൽ ചെയ്യുക. + +1. മുൻപിൽ പറഞ്ഞ സമയപരിധികളിൽ മാത്രമുള്ള ഡാറ്റ ഫിൽട്ടർ ചെയ്ത് 'load' കോളവും തീയതിയും ഉൾപ്പെടുത്തുക: + + ```python + train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']] + test = energy.copy()[energy.index >= test_start_dt][['load']] + + print('Training data shape: ', train.shape) + print('Test data shape: ', test.shape) + ``` + + ഡാറ്റയുടെ ആകൃതി കാണാം: + + ```output + Training data shape: (1416, 1) + Test data shape: (48, 1) + ``` + +1. ഡാറ്റ (0, 1) പരിധിയിൽ സ്കെയിൽ ചെയ്യുക. + + ```python + scaler = MinMaxScaler() + train['load'] = scaler.fit_transform(train) + train.head(10) + ``` + +1. ഒറിജിനൽ ഡാറ്റയും സ്കെയിൽ ചെയ്ത ഡാറ്റയും ദൃശ്യവൽക്കരിക്കുക: + + ```python + energy[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']].rename(columns={'load':'original load'}).plot.hist(bins=100, fontsize=12) + train.rename(columns={'load':'scaled load'}).plot.hist(bins=100, fontsize=12) + plt.show() + ``` + + ![original](../../../../translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.ml.png) + + > ഒറിജിനൽ ഡാറ്റ + + ![scaled](../../../../translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.ml.png) + + > സ്കെയിൽ ചെയ്ത ഡാറ്റ + +1. സ്കെയിൽ ചെയ്ത ഡാറ്റ കാൽബ്രേറ്റ് ചെയ്തതിനുശേഷം, ടെസ്റ്റ് ഡാറ്റയും സ്കെയിൽ ചെയ്യാം: + + ```python + test['load'] = scaler.transform(test) + test.head() + ``` + +### ARIMA നടപ്പിലാക്കുക + +ഇപ്പോൾ ARIMA നടപ്പിലാക്കാനുള്ള സമയം! നിങ്ങൾ മുമ്പ് ഇൻസ്റ്റാൾ ചെയ്ത `statsmodels` ലൈബ്രറി ഉപയോഗിക്കും. + +ഇപ്പോൾ നിങ്ങൾക്ക് ചില ഘട്ടങ്ങൾ പിന്തുടരേണ്ടതാണ് + + 1. `SARIMAX()` വിളിച്ച് മോഡൽ നിർവചിക്കുക, മോഡൽ പാരാമീറ്ററുകൾ p, d, q, P, D, Q നൽകുക. + 2. fit() ഫംഗ്ഷൻ വിളിച്ച് മോഡൽ പരിശീലനത്തിനായി തയ്യാറാക്കുക. + 3. `forecast()` ഫംഗ്ഷൻ വിളിച്ച് പ്രവചനങ്ങൾ നടത്തുക, പ്രവചിക്കേണ്ട ഘട്ടങ്ങളുടെ എണ്ണം (horizon) വ്യക്തമാക്കുക. + +> 🎓 ഈ പാരാമീറ്ററുകൾ എന്തിനാണ്? ARIMA മോഡലിൽ ടൈം സീരീസിന്റെ പ്രധാന ഘടകങ്ങൾ മോഡലാക്കാൻ 3 പാരാമീറ്ററുകൾ ഉണ്ട്: സീസണാലിറ്റി, ട്രെൻഡ്, ശബ്ദം. ഇവയാണ്: + +`p`: മോഡലിന്റെ ഓട്ടോ-റെഗ്രസീവ് ഭാഗവുമായി ബന്ധപ്പെട്ട പാരാമീറ്റർ, *മുൻകാല* മൂല്യങ്ങൾ ഉൾക്കൊള്ളുന്നു. +`d`: മോഡലിന്റെ ഇന്റഗ്രേറ്റഡ് ഭാഗവുമായി ബന്ധപ്പെട്ട പാരാമീറ്റർ, ടൈം സീരീസിൽ *ഡിഫറൻസിംഗ്* (🎓 മുകളിൽ ഡിഫറൻസിംഗ് ഓർമ്മിക്കുക) പ്രയോഗിക്കുന്നതിനെ ബാധിക്കുന്നു. +`q`: മോഡലിന്റെ മൂവിംഗ്-അവറേജ് ഭാഗവുമായി ബന്ധപ്പെട്ട പാരാമീറ്റർ. + +> കുറിപ്പ്: നിങ്ങളുടെ ഡാറ്റയിൽ സീസണൽ ഘടകം ഉണ്ടെങ്കിൽ - ഈ ഡാറ്റയിൽ ഉണ്ട് - സീസണൽ ARIMA മോഡൽ (SARIMA) ഉപയോഗിക്കും. അപ്പോൾ മറ്റൊരു പാരാമീറ്റർ സെറ്റ് ഉപയോഗിക്കണം: `P`, `D`, `Q` - ഇവ `p`, `d`, `q` പോലെയാണ്, പക്ഷേ മോഡലിന്റെ സീസണൽ ഘടകങ്ങളെ സൂചിപ്പിക്കുന്നു. + +1. നിങ്ങളുടെ ഇഷ്ടമുള്ള horizon മൂല്യം സെറ്റ് ചെയ്യുക. 3 മണിക്കൂർ ശ്രമിക്കാം: + + ```python + # മുന്നോട്ടു പ്രവചിക്കാൻ ഘട്ടങ്ങളുടെ എണ്ണം വ്യക്തമാക്കുക + HORIZON = 3 + print('Forecasting horizon:', HORIZON, 'hours') + ``` + + ARIMA മോഡലിന്റെ പാരാമീറ്ററുകൾക്ക് മികച്ച മൂല്യങ്ങൾ തിരഞ്ഞെടുക്കുന്നത് സങ്കീർണ്ണവും സമയമെടുക്കുന്നതുമായ പ്രക്രിയയാണ്. നിങ്ങൾക്ക് [`pyramid` ലൈബ്രറിയിലെ `auto_arima()` ഫംഗ്ഷൻ](https://alkaline-ml.com/pmdarima/0.9.0/modules/generated/pyramid.arima.auto_arima.html) ഉപയോഗിക്കാം. + +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 | + + ഡാറ്റ അതിന്റെ horizon പോയിന്റ് അനുസരിച്ച് ഹോരിസോണ്ടലായി മാറ്റിയിരിക്കുന്നു. + +1. ടെസ്റ്റ് ഡാറ്റയിൽ ഈ സ്ലൈഡിംഗ് വിൻഡോ സമീപനം ഉപയോഗിച്ച് പ്രവചനങ്ങൾ നടത്തുക, ടെസ്റ്റ് ഡാറ്റയുടെ നീളത്തോളം ലൂപ്പ് നടത്തുക: + + ```python + %%time + training_window = 720 # പരിശീലനത്തിന് 30 ദിവസം (720 മണിക്കൂർ) സമർപ്പിക്കുക + + train_ts = train['load'] + test_ts = test_shifted + + history = [x for x in train_ts] + history = history[(-training_window):] + + predictions = list() + + order = (2, 1, 0) + seasonal_order = (1, 1, 0, 24) + + for t in range(test_ts.shape[0]): + model = SARIMAX(endog=history, order=order, seasonal_order=seasonal_order) + model_fit = model.fit() + yhat = model_fit.forecast(steps = HORIZON) + predictions.append(yhat) + obs = list(test_ts.iloc[t]) + # പരിശീലന വിൻഡോ നീക്കുക + history.append(obs[0]) + history.pop(0) + print(test_ts.index[t]) + print(t+1, ': predicted =', yhat, 'expected =', obs) + ``` + + പരിശീലനം നടക്കുന്നത് കാണാം: + + ```output + 2014-12-30 00:00:00 + 1 : predicted = [0.32 0.29 0.28] expected = [0.32945389435989236, 0.2900626678603402, 0.2739480752014323] + + 2014-12-30 01:00:00 + 2 : predicted = [0.3 0.29 0.3 ] expected = [0.2900626678603402, 0.2739480752014323, 0.26812891674127126] + + 2014-12-30 02:00:00 + 3 : predicted = [0.27 0.28 0.32] expected = [0.2739480752014323, 0.26812891674127126, 0.3025962399283795] + ``` + +1. പ്രവചനങ്ങളെ യഥാർത്ഥ ലോഡുമായി താരതമ്യം ചെയ്യുക: + + ```python + eval_df = pd.DataFrame(predictions, columns=['t+'+str(t) for t in range(1, HORIZON+1)]) + eval_df['timestamp'] = test.index[0:len(test.index)-HORIZON+1] + eval_df = pd.melt(eval_df, id_vars='timestamp', value_name='prediction', var_name='h') + eval_df['actual'] = np.array(np.transpose(test_ts)).ravel() + eval_df[['prediction', 'actual']] = scaler.inverse_transform(eval_df[['prediction', 'actual']]) + eval_df.head() + ``` + + ഔട്ട്പുട്ട് + | | | timestamp | h | prediction | actual | + | --- | ---------- | --------- | --- | ---------- | -------- | + | 0 | 2014-12-30 | 00:00:00 | t+1 | 3,008.74 | 3,023.00 | + | 1 | 2014-12-30 | 01:00:00 | t+1 | 2,955.53 | 2,935.00 | + | 2 | 2014-12-30 | 02:00:00 | t+1 | 2,900.17 | 2,899.00 | + | 3 | 2014-12-30 | 03:00:00 | t+1 | 2,917.69 | 2,886.00 | + | 4 | 2014-12-30 | 04:00:00 | t+1 | 2,946.99 | 2,963.00 | + + മണിക്കൂറിൽ ഓരോ ഡാറ്റയുടെ പ്രവചനവും യഥാർത്ഥ ലോഡുമായി താരതമ്യം ചെയ്യുക. ഇത് എത്രത്തോളം കൃത്യമാണെന്ന് കാണുക. + +### മോഡൽ കൃത്യത പരിശോധിക്കുക + +എല്ലാ പ്രവചനങ്ങളിലും മോഡലിന്റെ ശരാശരി ആബ്സല്യൂട്ട് ശതമാന പിശക് (MAPE) പരിശോധിച്ച് കൃത്യത വിലയിരുത്തുക. + +> **🧮 ഗണിതം കാണിക്കുക** +> +> ![MAPE](../../../../translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.ml.png) +> +> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/) മുൻകൂട്ടി കണക്കാക്കലിന്റെ കൃത്യത മുകളിൽ നൽകിയ ഫോർമുല ഉപയോഗിച്ച് നിർവചിച്ച അനുപാതമായി കാണിക്കാൻ ഉപയോഗിക്കുന്നു. actualtനും predictedtനും ഇടയിലെ വ്യത്യാസം actualtൽ വിഭജിക്കുന്നു. "ഈ കണക്കിൽ ആബ്സല്യൂട്ട് മൂല്യം ഓരോ മുൻകൂട്ടി കണക്കാക്കിയ സമയബിന്ദുവിനും കൂട്ടിച്ചേർത്ത് ഫിറ്റുചെയ്ത ബിന്ദുക്കളുടെ എണ്ണം n-ൽ വിഭജിക്കുന്നു." [wikipedia](https://wikipedia.org/wiki/Mean_absolute_percentage_error) + +1. സമവാക്യം കോഡിൽ പ്രകടിപ്പിക്കുക: + + ```python + if(HORIZON > 1): + eval_df['APE'] = (eval_df['prediction'] - eval_df['actual']).abs() / eval_df['actual'] + print(eval_df.groupby('h')['APE'].mean()) + ``` + +1. ഒരു ഘട്ടത്തിന്റെ MAPE കണക്കാക്കുക: + + ```python + print('One step forecast MAPE: ', (mape(eval_df[eval_df['h'] == 't+1']['prediction'], eval_df[eval_df['h'] == 't+1']['actual']))*100, '%') + ``` + + ഒരു ഘട്ടം മുൻകൂട്ടി MAPE: 0.5570581332313952 % + +1. ബഹുഘട്ട മുൻകൂട്ടി MAPE പ്രിന്റ് ചെയ്യുക: + + ```python + print('Multi-step forecast MAPE: ', mape(eval_df['prediction'], eval_df['actual'])*100, '%') + ``` + + ```output + Multi-step forecast MAPE: 1.1460048657704118 % + ``` + + കുറഞ്ഞ സംഖ്യ നല്ലതാണ്: MAPE 10 ഉള്ള ഒരു മുൻകൂട്ടി 10% വ്യത്യാസമുള്ളതാണ് എന്ന് പരിഗണിക്കുക. + +1. എന്നാൽ എപ്പോഴും, ഈ തരത്തിലുള്ള കൃത്യതാ അളവ് ദൃശ്യമായി കാണുന്നത് എളുപ്പമാണ്, അതിനാൽ ഇത് പ്ലോട്ട് ചെയ്യാം: + + ```python + if(HORIZON == 1): + ## ഒറ്റ ഘട്ട പ്രവചനത്തിന്റെ ഗ്രാഫ് വരയ്ക്കുന്നു + eval_df.plot(x='timestamp', y=['actual', 'prediction'], style=['r', 'b'], figsize=(15, 8)) + + else: + ## ബഹുഘട്ട പ്രവചനത്തിന്റെ ഗ്രാഫ് വരയ്ക്കുന്നു + plot_df = eval_df[(eval_df.h=='t+1')][['timestamp', 'actual']] + for t in range(1, HORIZON+1): + plot_df['t+'+str(t)] = eval_df[(eval_df.h=='t+'+str(t))]['prediction'].values + + fig = plt.figure(figsize=(15, 8)) + ax = plt.plot(plot_df['timestamp'], plot_df['actual'], color='red', linewidth=4.0) + ax = fig.add_subplot(111) + for t in range(1, HORIZON+1): + x = plot_df['timestamp'][(t-1):] + y = plot_df['t+'+str(t)][0:len(x)] + ax.plot(x, y, color='blue', linewidth=4*math.pow(.9,t), alpha=math.pow(0.8,t)) + + ax.legend(loc='best') + + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![a time series model](../../../../translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.ml.png) + +🏆 വളരെ നല്ല ഒരു പ്ലോട്ട്, നല്ല കൃത്യതയുള്ള ഒരു മോഡൽ കാണിക്കുന്നു. നല്ല ജോലി! + +--- + +## 🚀ചലഞ്ച് + +ടൈം സീരീസ് മോഡലിന്റെ കൃത്യത പരിശോധിക്കുന്ന മാർഗങ്ങൾ അന്വേഷിക്കുക. ഈ പാഠത്തിൽ MAPE-യെ കുറിച്ച് touched ചെയ്തിട്ടുണ്ട്, പക്ഷേ നിങ്ങൾ ഉപയോഗിക്കാവുന്ന മറ്റ് രീതികൾ ഉണ്ടോ? അവയെ ഗവേഷിച്ച് കുറിപ്പിടുക. സഹായകമായ ഒരു ഡോക്യുമെന്റ് [ഇവിടെ](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/ml/7-TimeSeries/2-ARIMA/assignment.md b/translations/ml/7-TimeSeries/2-ARIMA/assignment.md new file mode 100644 index 000000000..c142c6d94 --- /dev/null +++ b/translations/ml/7-TimeSeries/2-ARIMA/assignment.md @@ -0,0 +1,27 @@ + +# ഒരു പുതിയ ARIMA മോഡൽ + +## നിർദ്ദേശങ്ങൾ + +നിങ്ങൾ ഒരു ARIMA മോഡൽ നിർമ്മിച്ചിട്ടുണ്ടെങ്കിൽ, പുതിയ ഡാറ്റ ഉപയോഗിച്ച് മറ്റൊരു മോഡൽ നിർമ്മിക്കുക (Duke-യിലെ [ഈ ഡാറ്റാസെറ്റുകളിൽ ഒന്നിനെ പരീക്ഷിക്കുക](http://www2.stat.duke.edu/~mw/ts_data_sets.html)). നിങ്ങളുടെ പ്രവർത്തനം ഒരു നോട്ട്‌ബുക്കിൽ രേഖപ്പെടുത്തുക, ഡാറ്റയും നിങ്ങളുടെ മോഡലും ദൃശ്യവൽക്കരിക്കുക, MAPE ഉപയോഗിച്ച് അതിന്റെ കൃത്യത പരിശോധിക്കുക. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണാർത്ഥം | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ----------------------------------- | +| | പുതിയ ARIMA മോഡൽ നിർമ്മിച്ച്, പരീക്ഷിച്ച്, ദൃശ്യവൽക്കരണങ്ങളോടും കൃത്യതയും വ്യക്തമാക്കിയ ഒരു നോട്ട്‌ബുക്ക് സമർപ്പിച്ചിരിക്കുന്നു. | സമർപ്പിച്ച നോട്ട്‌ബുക്ക് രേഖപ്പെടുത്താത്തതോ പിശകുകൾ ഉള്ളതോ ആണ് | അപൂർണ്ണമായ ഒരു നോട്ട്‌ബുക്ക് സമർപ്പിച്ചിരിക്കുന്നു | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/7-TimeSeries/2-ARIMA/solution/Julia/README.md b/translations/ml/7-TimeSeries/2-ARIMA/solution/Julia/README.md new file mode 100644 index 000000000..aacddeea7 --- /dev/null +++ b/translations/ml/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/ml/7-TimeSeries/2-ARIMA/solution/R/README.md b/translations/ml/7-TimeSeries/2-ARIMA/solution/R/README.md new file mode 100644 index 000000000..2c7c5885d --- /dev/null +++ b/translations/ml/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/ml/7-TimeSeries/2-ARIMA/solution/notebook.ipynb b/translations/ml/7-TimeSeries/2-ARIMA/solution/notebook.ipynb new file mode 100644 index 000000000..3c389c261 --- /dev/null +++ b/translations/ml/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": [ + "## ഇൻസ്റ്റാൾ ഡിപ്പൻഡൻസികൾ\n", + "ആവശ്യമായ ചില ഡിപ്പൻഡൻസികൾ ഇൻസ്റ്റാൾ ചെയ്ത് തുടങ്ങുക. ഈ ലൈബ്രറികൾ അവരുടെ അനുയോജ്യമായ പതിപ്പുകളോടുകൂടി പരിഹാരത്തിന് പ്രവർത്തിക്കുന്നതായി അറിയപ്പെടുന്നു:\n", + "\n", + "* `statsmodels == 0.12.2`\n", + "* `matplotlib == 3.4.2`\n", + "* `scikit-learn == 0.24.2`\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 16, + "source": [ + "!pip install statsmodels" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/bin/sh: pip: command not found\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 17, + "source": [ + "import os\n", + "import warnings\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import datetime as dt\n", + "import math\n", + "\n", + "from pandas.plotting import autocorrelation_plot\n", + "from statsmodels.tsa.statespace.sarimax import SARIMAX\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "from common.utils import load_data, mape\n", + "from IPython.display import Image\n", + "\n", + "%matplotlib inline\n", + "pd.options.display.float_format = '{:,.2f}'.format\n", + "np.set_printoptions(precision=2)\n", + "warnings.filterwarnings(\"ignore\") # specify to ignore warning messages\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 18, + "source": [ + "energy = load_data('./data')[['load']]\n", + "energy.head(10)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2012-01-01 00:00:002,698.00
2012-01-01 01:00:002,558.00
2012-01-01 02:00:002,444.00
2012-01-01 03:00:002,402.00
2012-01-01 04:00:002,403.00
2012-01-01 05:00:002,453.00
2012-01-01 06:00:002,560.00
2012-01-01 07:00:002,719.00
2012-01-01 08:00:002,916.00
2012-01-01 09:00:003,105.00
\n", + "
" + ], + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2,698.00\n", + "2012-01-01 01:00:00 2,558.00\n", + "2012-01-01 02:00:00 2,444.00\n", + "2012-01-01 03:00:00 2,402.00\n", + "2012-01-01 04:00:00 2,403.00\n", + "2012-01-01 05:00:00 2,453.00\n", + "2012-01-01 06:00:00 2,560.00\n", + "2012-01-01 07:00:00 2,719.00\n", + "2012-01-01 08:00:00 2,916.00\n", + "2012-01-01 09:00:00 3,105.00" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "എല്ലാ ലഭ്യമായ ലോഡ് ഡാറ്റയും (ജനുവരി 2012 മുതൽ ഡിസംബർ 2014 വരെ) പ്ലോട്ട് ചെയ്യുക\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 19, + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## പരിശീലനവും പരിശോധനാ ഡാറ്റാ സെറ്റുകളും സൃഷ്ടിക്കുക\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "source": [ + "train_start_dt = '2014-11-01 00:00:00'\n", + "test_start_dt = '2014-12-30 00:00:00' " + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 21, + "source": [ + "energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \\\n", + " .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \\\n", + " .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 22, + "source": [ + "train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]\n", + "test = energy.copy()[energy.index >= test_start_dt][['load']]\n", + "\n", + "print('Training data shape: ', train.shape)\n", + "print('Test data shape: ', test.shape)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Training data shape: (1416, 1)\n", + "Test data shape: (48, 1)\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "source": [ + "scaler = MinMaxScaler()\n", + "train['load'] = scaler.fit_transform(train)\n", + "train.head(10)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-11-01 00:00:000.10
2014-11-01 01:00:000.07
2014-11-01 02:00:000.05
2014-11-01 03:00:000.04
2014-11-01 04:00:000.06
2014-11-01 05:00:000.10
2014-11-01 06:00:000.19
2014-11-01 07:00:000.31
2014-11-01 08:00:000.40
2014-11-01 09:00:000.48
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-11-01 00:00:00 0.10\n", + "2014-11-01 01:00:00 0.07\n", + "2014-11-01 02:00:00 0.05\n", + "2014-11-01 03:00:00 0.04\n", + "2014-11-01 04:00:00 0.06\n", + "2014-11-01 05:00:00 0.10\n", + "2014-11-01 06:00:00 0.19\n", + "2014-11-01 07:00:00 0.31\n", + "2014-11-01 08:00:00 0.40\n", + "2014-11-01 09:00:00 0.48" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "അസൽ ഡാറ്റ vs സ്കെയിൽ ചെയ്ത ഡാറ്റ:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 24, + "source": [ + "energy[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']].rename(columns={'load':'original load'}).plot.hist(bins=100, fontsize=12)\n", + "train.rename(columns={'load':'scaled load'}).plot.hist(bins=100, fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + }, + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ടെസ്റ്റ് ഡാറ്റയും സ്കെയിൽ ചെയ്യാം\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 25, + "source": [ + "test['load'] = scaler.transform(test)\n", + "test.head()" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-12-30 00:00:000.33
2014-12-30 01:00:000.29
2014-12-30 02:00:000.27
2014-12-30 03:00:000.27
2014-12-30 04:00:000.30
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-12-30 00:00:00 0.33\n", + "2014-12-30 01:00:00 0.29\n", + "2014-12-30 02:00:00 0.27\n", + "2014-12-30 03:00:00 0.27\n", + "2014-12-30 04:00:00 0.30" + ] + }, + "metadata": {}, + "execution_count": 25 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## ARIMA രീതി നടപ്പിലാക്കുക\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 26, + "source": [ + "# Specify the number of steps to forecast ahead\n", + "HORIZON = 3\n", + "print('Forecasting horizon:', HORIZON, 'hours')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Forecasting horizon: 3 hours\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 27, + "source": [ + "order = (4, 1, 0)\n", + "seasonal_order = (1, 1, 0, 24)\n", + "\n", + "model = SARIMAX(endog=train, order=order, seasonal_order=seasonal_order)\n", + "results = model.fit()\n", + "\n", + "print(results.summary())\n" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " SARIMAX Results \n", + "==========================================================================================\n", + "Dep. Variable: load No. Observations: 1416\n", + "Model: SARIMAX(4, 1, 0)x(1, 1, 0, 24) Log Likelihood 3477.239\n", + "Date: Thu, 30 Sep 2021 AIC -6942.477\n", + "Time: 14:36:28 BIC -6911.050\n", + "Sample: 11-01-2014 HQIC -6930.725\n", + " - 12-29-2014 \n", + "Covariance Type: opg \n", + "==============================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "ar.L1 0.8403 0.016 52.226 0.000 0.809 0.872\n", + "ar.L2 -0.5220 0.034 -15.388 0.000 -0.588 -0.456\n", + "ar.L3 0.1536 0.044 3.470 0.001 0.067 0.240\n", + "ar.L4 -0.0778 0.036 -2.158 0.031 -0.148 -0.007\n", + "ar.S.L24 -0.2327 0.024 -9.718 0.000 -0.280 -0.186\n", + "sigma2 0.0004 8.32e-06 47.358 0.000 0.000 0.000\n", + "===================================================================================\n", + "Ljung-Box (L1) (Q): 0.05 Jarque-Bera (JB): 1464.60\n", + "Prob(Q): 0.83 Prob(JB): 0.00\n", + "Heteroskedasticity (H): 0.84 Skew: 0.14\n", + "Prob(H) (two-sided): 0.07 Kurtosis: 8.02\n", + "===================================================================================\n", + "\n", + "Warnings:\n", + "[1] Covariance matrix calculated using the outer product of gradients (complex-step).\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## മോഡൽ വിലയിരുത്തുക\n" + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ഓരോ HORIZON ഘട്ടത്തിനും ഒരു ടെസ്റ്റ് ഡാറ്റാ പോയിന്റ് സൃഷ്ടിക്കുക.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 28, + "source": [ + "test_shifted = test.copy()\n", + "\n", + "for t in range(1, HORIZON):\n", + " test_shifted['load+'+str(t)] = test_shifted['load'].shift(-t, freq='H')\n", + " \n", + "test_shifted = test_shifted.dropna(how='any')\n", + "test_shifted.head(5)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
loadload+1load+2
2014-12-30 00:00:000.330.290.27
2014-12-30 01:00:000.290.270.27
2014-12-30 02:00:000.270.270.30
2014-12-30 03:00:000.270.300.41
2014-12-30 04:00:000.300.410.57
\n", + "
" + ], + "text/plain": [ + " load load+1 load+2\n", + "2014-12-30 00:00:00 0.33 0.29 0.27\n", + "2014-12-30 01:00:00 0.29 0.27 0.27\n", + "2014-12-30 02:00:00 0.27 0.27 0.30\n", + "2014-12-30 03:00:00 0.27 0.30 0.41\n", + "2014-12-30 04:00:00 0.30 0.41 0.57" + ] + }, + "metadata": {}, + "execution_count": 28 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ടെസ്റ്റ് ഡാറ്റയിൽ പ്രവചനങ്ങൾ നടത്തുക\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 29, + "source": [ + "%%time\n", + "training_window = 720 # dedicate 30 days (720 hours) for training\n", + "\n", + "train_ts = train['load']\n", + "test_ts = test_shifted\n", + "\n", + "history = [x for x in train_ts]\n", + "history = history[(-training_window):]\n", + "\n", + "predictions = list()\n", + "\n", + "# let's user simpler model for demonstration\n", + "order = (2, 1, 0)\n", + "seasonal_order = (1, 1, 0, 24)\n", + "\n", + "for t in range(test_ts.shape[0]):\n", + " model = SARIMAX(endog=history, order=order, seasonal_order=seasonal_order)\n", + " model_fit = model.fit()\n", + " yhat = model_fit.forecast(steps = HORIZON)\n", + " predictions.append(yhat)\n", + " obs = list(test_ts.iloc[t])\n", + " # move the training window\n", + " history.append(obs[0])\n", + " history.pop(0)\n", + " print(test_ts.index[t])\n", + " print(t+1, ': predicted =', yhat, 'expected =', obs)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "2014-12-30 00:00:00\n", + "1 : predicted = [0.32 0.29 0.28] expected = [0.32945389435989236, 0.2900626678603402, 0.2739480752014323]\n", + "2014-12-30 01:00:00\n", + "2 : predicted = [0.3 0.29 0.3 ] expected = [0.2900626678603402, 0.2739480752014323, 0.26812891674127126]\n", + "2014-12-30 02:00:00\n", + "3 : predicted = [0.27 0.28 0.32] expected = [0.2739480752014323, 0.26812891674127126, 0.3025962399283795]\n", + "2014-12-30 03:00:00\n", + "4 : predicted = [0.28 0.32 0.42] expected = [0.26812891674127126, 0.3025962399283795, 0.40823634735899716]\n", + "2014-12-30 04:00:00\n", + "5 : predicted = [0.3 0.39 0.54] expected = [0.3025962399283795, 0.40823634735899716, 0.5689346463742166]\n", + "2014-12-30 05:00:00\n", + "6 : predicted = [0.4 0.55 0.66] expected = [0.40823634735899716, 0.5689346463742166, 0.6799462846911368]\n", + "2014-12-30 06:00:00\n", + "7 : predicted = [0.57 0.68 0.75] expected = [0.5689346463742166, 0.6799462846911368, 0.7309758281110115]\n", + "2014-12-30 07:00:00\n", + "8 : predicted = [0.68 0.75 0.8 ] expected = [0.6799462846911368, 0.7309758281110115, 0.7511190689346463]\n", + "2014-12-30 08:00:00\n", + "9 : predicted = [0.75 0.8 0.82] expected = [0.7309758281110115, 0.7511190689346463, 0.7636526410026856]\n", + "2014-12-30 09:00:00\n", + "10 : predicted = [0.77 0.78 0.78] expected = [0.7511190689346463, 0.7636526410026856, 0.7381378692927483]\n", + "2014-12-30 10:00:00\n", + "11 : predicted = [0.76 0.75 0.74] expected = [0.7636526410026856, 0.7381378692927483, 0.7188898836168307]\n", + "2014-12-30 11:00:00\n", + "12 : predicted = [0.77 0.76 0.75] expected = [0.7381378692927483, 0.7188898836168307, 0.7090420769919425]\n", + "2014-12-30 12:00:00\n", + "13 : predicted = [0.7 0.68 0.69] expected = [0.7188898836168307, 0.7090420769919425, 0.7081468218442255]\n", + "2014-12-30 13:00:00\n", + "14 : predicted = [0.72 0.73 0.76] expected = [0.7090420769919425, 0.7081468218442255, 0.7385854968666068]\n", + "2014-12-30 14:00:00\n", + "15 : predicted = [0.71 0.73 0.86] expected = [0.7081468218442255, 0.7385854968666068, 0.8478066248880931]\n", + "2014-12-30 15:00:00\n", + "16 : predicted = [0.73 0.85 0.97] expected = [0.7385854968666068, 0.8478066248880931, 0.9516562220232765]\n", + "2014-12-30 16:00:00\n", + "17 : predicted = [0.87 0.99 0.97] expected = [0.8478066248880931, 0.9516562220232765, 0.934198746642793]\n", + "2014-12-30 17:00:00\n", + "18 : predicted = [0.94 0.92 0.86] expected = [0.9516562220232765, 0.934198746642793, 0.8876454789615038]\n", + "2014-12-30 18:00:00\n", + "19 : predicted = [0.94 0.89 0.82] expected = [0.934198746642793, 0.8876454789615038, 0.8294538943598924]\n", + "2014-12-30 19:00:00\n", + "20 : predicted = [0.88 0.82 0.71] expected = [0.8876454789615038, 0.8294538943598924, 0.7197851387645477]\n", + "2014-12-30 20:00:00\n", + "21 : predicted = [0.83 0.72 0.58] expected = [0.8294538943598924, 0.7197851387645477, 0.5747538048343777]\n", + "2014-12-30 21:00:00\n", + "22 : predicted = [0.72 0.58 0.47] expected = [0.7197851387645477, 0.5747538048343777, 0.4592658907788718]\n", + "2014-12-30 22:00:00\n", + "23 : predicted = [0.58 0.47 0.39] expected = [0.5747538048343777, 0.4592658907788718, 0.3858549686660697]\n", + "2014-12-30 23:00:00\n", + "24 : predicted = [0.46 0.38 0.34] expected = [0.4592658907788718, 0.3858549686660697, 0.34377797672336596]\n", + "2014-12-31 00:00:00\n", + "25 : predicted = [0.38 0.34 0.33] expected = [0.3858549686660697, 0.34377797672336596, 0.32542524619516544]\n", + "2014-12-31 01:00:00\n", + "26 : predicted = [0.36 0.34 0.34] expected = [0.34377797672336596, 0.32542524619516544, 0.33034914950760963]\n", + "2014-12-31 02:00:00\n", + "27 : predicted = [0.32 0.32 0.35] expected = [0.32542524619516544, 0.33034914950760963, 0.3706356311548791]\n", + "2014-12-31 03:00:00\n", + "28 : predicted = [0.32 0.36 0.47] expected = [0.33034914950760963, 0.3706356311548791, 0.470008952551477]\n", + "2014-12-31 04:00:00\n", + "29 : predicted = [0.37 0.48 0.65] expected = [0.3706356311548791, 0.470008952551477, 0.6145926589077886]\n", + "2014-12-31 05:00:00\n", + "30 : predicted = [0.48 0.64 0.75] expected = [0.470008952551477, 0.6145926589077886, 0.7247090420769919]\n", + "2014-12-31 06:00:00\n", + "31 : predicted = [0.63 0.73 0.79] expected = [0.6145926589077886, 0.7247090420769919, 0.786034019695613]\n", + "2014-12-31 07:00:00\n", + "32 : predicted = [0.71 0.76 0.79] expected = [0.7247090420769919, 0.786034019695613, 0.8012533572068039]\n", + "2014-12-31 08:00:00\n", + "33 : predicted = [0.79 0.82 0.83] expected = [0.786034019695613, 0.8012533572068039, 0.7994628469113696]\n", + "2014-12-31 09:00:00\n", + "34 : predicted = [0.82 0.83 0.81] expected = [0.8012533572068039, 0.7994628469113696, 0.780214861235452]\n", + "2014-12-31 10:00:00\n", + "35 : predicted = [0.8 0.78 0.76] expected = [0.7994628469113696, 0.780214861235452, 0.7587287376902416]\n", + "2014-12-31 11:00:00\n", + "36 : predicted = [0.77 0.75 0.74] expected = [0.780214861235452, 0.7587287376902416, 0.7367949865711727]\n", + "2014-12-31 12:00:00\n", + "37 : predicted = [0.77 0.76 0.76] expected = [0.7587287376902416, 0.7367949865711727, 0.7188898836168307]\n", + "2014-12-31 13:00:00\n", + "38 : predicted = [0.75 0.75 0.78] expected = [0.7367949865711727, 0.7188898836168307, 0.7273948075201431]\n", + "2014-12-31 14:00:00\n", + "39 : predicted = [0.73 0.75 0.87] expected = [0.7188898836168307, 0.7273948075201431, 0.8299015219337511]\n", + "2014-12-31 15:00:00\n", + "40 : predicted = [0.74 0.85 0.96] expected = [0.7273948075201431, 0.8299015219337511, 0.909579230080573]\n", + "2014-12-31 16:00:00\n", + "41 : predicted = [0.83 0.94 0.93] expected = [0.8299015219337511, 0.909579230080573, 0.855863921217547]\n", + "2014-12-31 17:00:00\n", + "42 : predicted = [0.94 0.93 0.88] expected = [0.909579230080573, 0.855863921217547, 0.7721575649059982]\n", + "2014-12-31 18:00:00\n", + "43 : predicted = [0.87 0.82 0.77] expected = [0.855863921217547, 0.7721575649059982, 0.7023276633840643]\n", + "2014-12-31 19:00:00\n", + "44 : predicted = [0.79 0.73 0.63] expected = [0.7721575649059982, 0.7023276633840643, 0.6195165622202325]\n", + "2014-12-31 20:00:00\n", + "45 : predicted = [0.7 0.59 0.46] expected = [0.7023276633840643, 0.6195165622202325, 0.5425246195165621]\n", + "2014-12-31 21:00:00\n", + "46 : predicted = [0.6 0.47 0.36] expected = [0.6195165622202325, 0.5425246195165621, 0.4735899731423454]\n", + "CPU times: user 12min 15s, sys: 2min 39s, total: 14min 54s\n", + "Wall time: 2min 36s\n" + ] + } + ], + "metadata": { + "scrolled": true + } + }, + { + "cell_type": "markdown", + "source": [ + "ഭാവിപ്പറഞ്ഞതും യഥാർത്ഥ ലോഡും താരതമ്യം ചെയ്യുക\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 30, + "source": [ + "eval_df = pd.DataFrame(predictions, columns=['t+'+str(t) for t in range(1, HORIZON+1)])\n", + "eval_df['timestamp'] = test.index[0:len(test.index)-HORIZON+1]\n", + "eval_df = pd.melt(eval_df, id_vars='timestamp', value_name='prediction', var_name='h')\n", + "eval_df['actual'] = np.array(np.transpose(test_ts)).ravel()\n", + "eval_df[['prediction', 'actual']] = scaler.inverse_transform(eval_df[['prediction', 'actual']])\n", + "eval_df.head()" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timestamphpredictionactual
02014-12-30 00:00:00t+13,008.743,023.00
12014-12-30 01:00:00t+12,955.532,935.00
22014-12-30 02:00:00t+12,900.172,899.00
32014-12-30 03:00:00t+12,917.692,886.00
42014-12-30 04:00:00t+12,946.992,963.00
\n", + "
" + ], + "text/plain": [ + " timestamp h prediction actual\n", + "0 2014-12-30 00:00:00 t+1 3,008.74 3,023.00\n", + "1 2014-12-30 01:00:00 t+1 2,955.53 2,935.00\n", + "2 2014-12-30 02:00:00 t+1 2,900.17 2,899.00\n", + "3 2014-12-30 03:00:00 t+1 2,917.69 2,886.00\n", + "4 2014-12-30 04:00:00 t+1 2,946.99 2,963.00" + ] + }, + "metadata": {}, + "execution_count": 30 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "എല്ലാ പ്രവചനങ്ങളിലെയും **മീൻ ആബ്സല്യൂട്ട് പെർസെന്റേജ് എറർ (MAPE)** കണക്കാക്കുക\n", + "\n", + "$$MAPE = \\frac{1}{n} \\sum_{t=1}^{n}|\\frac{actual_t - predicted_t}{actual_t}|$$\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 31, + "source": [ + "if(HORIZON > 1):\n", + " eval_df['APE'] = (eval_df['prediction'] - eval_df['actual']).abs() / eval_df['actual']\n", + " print(eval_df.groupby('h')['APE'].mean())" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "h\n", + "t+1 0.01\n", + "t+2 0.01\n", + "t+3 0.02\n", + "Name: APE, dtype: float64\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 32, + "source": [ + "print('One step forecast MAPE: ', (mape(eval_df[eval_df['h'] == 't+1']['prediction'], eval_df[eval_df['h'] == 't+1']['actual']))*100, '%')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "One step forecast MAPE: 0.5570581332313952 %\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 33, + "source": [ + "print('Multi-step forecast MAPE: ', mape(eval_df['prediction'], eval_df['actual'])*100, '%')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Multi-step forecast MAPE: 1.1460048657704118 %\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ടെസ്റ്റ് സെറ്റിന്റെ ആദ്യ ആഴ്ചയിലെ പ്രവചനങ്ങളും യഥാർത്ഥവുമുള്ള ഗ്രാഫ് വരയ്ക്കുക.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 34, + "source": [ + "if(HORIZON == 1):\n", + " ## Plotting single step forecast\n", + " eval_df.plot(x='timestamp', y=['actual', 'prediction'], style=['r', 'b'], figsize=(15, 8))\n", + "\n", + "else:\n", + " ## Plotting multi step forecast\n", + " plot_df = eval_df[(eval_df.h=='t+1')][['timestamp', 'actual']]\n", + " for t in range(1, HORIZON+1):\n", + " plot_df['t+'+str(t)] = eval_df[(eval_df.h=='t+'+str(t))]['prediction'].values\n", + "\n", + " fig = plt.figure(figsize=(15, 8))\n", + " ax = plt.plot(plot_df['timestamp'], plot_df['actual'], color='red', linewidth=4.0)\n", + " ax = fig.add_subplot(111)\n", + " for t in range(1, HORIZON+1):\n", + " x = plot_df['timestamp'][(t-1):]\n", + " y = plot_df['t+'+str(t)][0:len(x)]\n", + " ax.plot(x, y, color='blue', linewidth=4*math.pow(.9,t), alpha=math.pow(0.8,t))\n", + " \n", + " ax.legend(loc='best')\n", + " \n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "No handles with labels found to put in legend.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4QAAAHjCAYAAAB7INHwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd3xV9f348de592bvhDBkhhEggCICIqCCgoJ7K462Wm1rtV+7tFpb/XVpq6211tFaR93WPVBQQXAwFBXUMMLeSHZyM26Se+/5/fG+J+ecDJYhN+P9fDx45JxzRz6xac59fz7vz/ttmKaJUkoppZRSSqnuxxPtASillFJKKaWUig4NCJVSSimllFKqm9KAUCmllFJKKaW6KQ0IlVJKKaWUUqqb0oBQKaWUUkoppbopDQiVUkoppZRSqpvyRXsAh1uPHj3MQYMGRXsYSimllFJKKRUVn3/+ebFpmtktPdblA8JBgwbx2WefRXsYSimllFJKKRUVhmFsa+0xTRlVSimllFJKqW5KA0KllFJKKaWU6qY0IFRKKaWUUkqpbqrL7yFUSimllFJKqa6ioaGBnTt3EggEmj0WHx9Pv379iImJOeD304BQKaWUUkoppTqJnTt3kpKSwqBBgzAMo/G6aZqUlJSwc+dOcnJyDvj9NGVUKaWUUkoppTqJQCBAVlaWKxgEMAyDrKysFlcO90UDQqWUUkoppZTqRJoGg/u7vi8aECqllFJKKaVUN6UBoVJKKaWUUkp1UxoQKqWUUkoppVQnYprmQV3fFw0IlVJKKaWUUqqTiI+Pp6SkpFnwZ1UZjY+PP6j307YTSimllFJKKdVJ9OvXj507d1JUVNTsMasP4cHQgFAppZRSSimlOomYmJiD6jO4P5oyqpRSSimllFLdlAaESimllFJKKdVNaUColFJKKaWUUt2U7iFUSqluYv16+O9/ITsbfvxjiIuL9oiUUkopFW26QqiUUt3Es8/Cjh3wxRfw5pvRHo1SSimlOgINCJVSqhsIBGDzZvt84UKor4/eeJRSSinVMWhAqJRS3cCmTeDsX1tVBUuWRG88SimllOoYNCBUSqluoKCg+bX5891BolJKKaW6Hw0IlVKqG1i/vvm13bvhq6/afyxKKaWU6jg0IFRKqS4uFIKNG+1zj+Mv//z57T8epZRSSnUcGhAqpVQXt3071NXZ52efbR/n58POne0/JqWUUkp1DBoQKqVUF+dMF83IgDPPhLQ0+5quEiqllFLdlwaESinVxTkDwtxciImBk0+2ry1ZAhUV7T8upZRSSkWfL9oDUEopdfiYZvOAEGDGDHjjDQgGoaEB3n4bZs2C2lr7XyDg/mr9a2iAkSNh6tTo/ExKKaWUajsaECqlVBdWVATl5XIcDMp+wscfl8CuulqCxXAY1q2Dr78Gr/fA3nf7dhg8GI444vCNXSmllFKHn6aMKqVUF+ZcHSwpgS1bYPNm2LNHgrlQSFYR6+oOvrjMunVtO1allFJKtT9dIVRKqS7MCghNE3w+d8uJlBTo1UsCRa8X9u6Fk06ChAT7X3y8+7iiAl59VV5fUCDPV0op1T3V1Ei16pwcyM6O9mjUodKAUCmlujArIKythaQkOc7MhCuvlCCvoADuvtt+/vjxMHp06+8XCsG8ebKvcPdu8PslsFRKKdX9vPqqZIv4fHJfGTAg2iNSh0JTRpVSqouqqoJdu+TY74esLDkePhzS0yEuDsaMgb597dfMm7fv9/R6Ydgw+9yZkqqUUqr7qK6WSUWQPepPPy371lXnowGhUkp1URs22MdVVdKDEOxKowCGIdVFLV99JSt/++J8vQaESinVPa1dK9sRLLW18OSTMgGpOhcNCJVSqouyZm5DIUnn8fmkB+GgQe7nTZ7sTvvcX6P63FwJJAE2bpSZYaWUUt1Lfr59bO1PLy+Hp56SQmWq89CAUCmluihr9c7vl32DADk9/PjMBtfzYmOlL6Hl44/3PcObmAj9+slxfT1s29aGg1ZKKdXh1dRI1WqQycbvfU/uJSBVrJ97TiYjVeegAaFSSnVBDQ32zbqyMhIQLlxI7vWnyAbCX//aFfWdfLLc1K3Xvv/+vt9/+HD72FqJVEop1T2sWyc9bAGGDpUqoxdfbK8UbtoEr73mTilVHVe7BoSGYXgNw1hpGMbcJtfvMwyjynEeZxjG/wzD2GgYxieGYQxyPHZL5HqBYRintt/olVKq89iyRVI5TTNSUIZiWLaUYWaBTO3eeadUh3n0UQiFSEuT1FHLe+/tOxW0aUCoN32llOo+1qyxj0eNkq+5uXD22fb1VatgwYL2HZc6NO29QngDsNZ5wTCM8UBGk+d9HygzTXMo8HfgL5Hn5gGXAKOAWcCDhmF4D/eglVKqs7FW7QIBSeOJ37aeLErIpMx+0t69cPXV0mti8WJXcZmKCli2rPX379ULUlPluLRUehkqpZTq+gIB2T8OUnnaOUE4bpy7P+2HH8Knn7bv+NTBa7eA0DCMfsDpwCOOa17gbuCmJk8/G3gicvwScLJhGEbk+vOmadaZprkF2AhMPNxjV0qpzsbaP1hZGWk3sWEDubRSEnTVKpg+nf43nMeo3nZkN39+6yt/hqFpo0op1R0VFNj7A4cMkZ62TtOmyTyjZe5cqUiqOq72XCG8Fwn8wo5r1wNvmKa5p8lz+wI7AEzTDAIVQJbzesTOyDWllFIRpmm3nPD7ITOpDnbsYBiOPhRxcc1f+OqrzL73VPjic6ivZ/v2fd/Ene0nNCBUSqnuYfVq+zgvr/njhgFnnmlPGpomvPACbN/ePuNTB69dAkLDMM4ACk3T/Nxx7QjgQuCfh+H7/cAwjM8Mw/isSDtkKqW6md27pWFwKCRfs/xb8NHAQLayl55sy51JaO16mDOn2WuPDH5OnzUL4fXXYP165r/Vepm4IUPsQjTbtkkakVJKqa6rvt6ecPR4YOTIlp/n8cBFF9kVqa3G9cXF7TNOdXDaa4VwCnCWYRhbgeeBk4DVwFBgY+R6omEYkYxkdgH9AQzD8AFpQInzekS/yDUX0zQfNk1zvGma47Ozsw/LD6SUUh2VtVrn90vfweQdaxnMZh7lak7nLc6vfIwpcwZwcehZbr58Jw/n3MF7zGATg2kghlnMlyZSn37Cyj+9zZ7nFrf4fWJiYPBgOQ6H7T0lSimluqb16+2CY4MGSRui1sTGwuWX222PamvhiSegqqr116joaJeA0DTNW0zT7Gea5iCkKMz7pmlmmKbZ2zTNQZHrNZEiMgBvAN+NHF8Qeb4ZuX5JpAppDjAM0K2qSinl4No/mBHG2LSJNCp4jKvkgbR0gkEpC75gbV8ezryZW3Ke5+KYV5nKx/yT6/maMRSQy+6KRJ64dB51s8+ROuNN6D5CpZTqPpzpoqNHS7XR226DJ5+Eb75p/vykJPjud+UrSOP6J5/UxvUdjS/aA2jFo8BTkRXDUiSIxDTN1YZhvACsAYLAdaZpattLpZRysNpA+P3QJ6MYArWsZCwmBnh9kJzU5BUGZGZBejrhvXvZ8Y0PfziF8khCxpccyQvztzPgnQIGH7WHnIsnMvXUJI4+2r2PcMMG+b6G0X4/q1JKqfbR0GBPOBqG9B88+WTZMpCQIMVjJkyAmTPhqKPse0FmJlxxhXQ5amiQxvXPPy+rh17tFdAhtHtjetM0F5umeUYL15MdxwHTNC80TXOoaZoTTdPc7HjsT6ZpDjFNc7hpmvPaa9xKKdUZlJXJHo1AQG68WWUbSaSGBcyUJ6Slkp5uMHOmew8gAB4v9DkCRo8mJcOHgZQYNfFQSSo7zb58uCqFJ36znmvOLuSDxSbp6dKCAmS/4q5mSfxKKaW6gg0bZA8hwMCBsHChBIMg6aAbNsBXX8Hf/ga//CXMmyf3BYC+fd2N6zduhNdf1x62HUVHXSFUSil1CJzpoh4PpO/Ip5BsaonUBU9L59JL4apI9mgoBDt3SiP7zZutr7FsSRpI0pY6qooDEAxSSSppVGBYL9qxnb/9qJzjvsolN1daGoKsTlpFBJRSSnUdTauL3nef+/EdO2TVMD4eCgvh2WfhpZdgyhRZNRw+HM46C157TZ6/cqX0s50xo/1+BtUyDQiVUqoLsQJCvx8yEmoxi4v4nKmNj8dlp3LeefbzvV6Z6R04UHpHWcJhWLEijtt+G0vVthKqtpSS3VBENcmNweXugkqevXMb0783kI8+ktcVFEgKkVJKqa4jGHTvEx8yBD7/3D7PzJRJyNJSOOII+3p9PSxaJP9GjJDA8IQTpGE9wAcfQFqapJqq6Gn3lFGllFKHj9UwuLoasgK72M4Aqolk5CencMY5PtLT9/8+Hg8ceyycOM1g8MQeHHlBLhOmp/JswtXE0ND4vMfuLibRV9/YmHjPHlmdVEop1XVs2mQXgunfH774AkpK7MeTkyElBWpq4PrrYdKk5vsD162Df/4T3nhDAkzr/d58s8WaZaodaUColFJdRCAgjX/9ftmXkVm8gU0MadwLSFoal112cO85e3bkwOtla98pVP/1IebwXOPjNdUm//7OEoYNs19jrVIqpZTqGpzpoqNGSSqoJSHBDv4aGmDpUrjuOrj3XjjvPFkBdCovl3vV8uWyylhaKo3rd+w4/D+HapkGhEop1UVs3GhXFyUcomF3EWVkND5+wowYBgw4uPccOxZ697bP59WdxFUXVpFBWeO11xelELdna+O5tp9QSqmuIxRyr+ANGACfOpq+JSXZbSUAXn5ZCpylp8O550pgeN11uCYOPR7Zb15SImmjCxbAPffICqNqfxoQKqVUF7F+vQSElZWQGi5nnZlLPAF5MDaOy67PPOj3NAw49VT7fOVKqP7dX/lRqr1KaJrwxu9XysZDJLXIalyslFKqc9uyRaqIguwPXLcOiork3DBgzBjpNWgJBOCZZ+xzn09SSG+7Df7wB9lD6PPJquLgwdLAvqwM3n8fXnyx/X4uZdOAUCmluoiCArvdRELFXnbRFx/SqnVETh3jjjm0BoHHH2/P/pomvLMik3P+czpD2NT4nFUl/Ql8JFPGDQ2wdeu3+lGUUkp1EE3TRd94w24/kZAgAd5FF8keQssLL7S8n3zQILjmGqlQevHF0rZo4EAJLMNhWSlcu/aw/jiqBRoQKqVUFxAKScqo3w9gUlYUJM5aHQQuu8JzyA3j4+Jg+nT7/MMPoe6M8/n5SV+6nrf8oyChvcWAFghQSqmuIBx2B2h9+sCKFfZ5cjJMnSpfL7nEvl5TA8/ZiSTNpKTAGWdImuikSZCdLde/+UYCTk0dbV8aECqlVBewfbvM2FZWQqg6wJ5gVmO6aE9vCTN/Oupbvf/MmXbRgLo6KSF+7HM/5fj4zxqfU0kya19aDeFwY/qqUkqpzmvbNru5fO/esjWhsFDOPR7o0QOOPFLO58yBxET7tc89B1VV+35/jwcmTpT3jo+XVNSKCnjrrbb/WVTrNCBUSqkuwNluorZMAsE4JKfnkrEF+JLivtX7Z2ZKGwrLu+9CKKsnP73rCLyRtFQfQb4q60dgyeeUldl7TJRSSnVO+fn2cV6e7POrqJDzxEQ47jjZDwjSZP6ii+znV1VJ6uj+jB0rgWH//rIiWVQEX30Fa9a03c+h9k0DQqWU6gLWr5d00XAY/H6DOOoxMEmglnOuzNj/GxyAWbPs49JS+M9/oP+Pz+TCUZJPZAAGYb74sApKSrT9hFJKdWKm6Q7KsrKksJglORmmTHG/5rLLZJuB5Zln9p/+mZ4OOTmyV71nT0kbBelPqKmj7UMDQqWU6uRM0w4IqypCmKFQ4/7Bs3md1PNntsn3ycmRggKWJUvgkUcNrnllNqk+uWvHE2CtmUvZa4spWBtuk++rlFKq/W3fbqd8ZmfDhg125ofXKymekye7X5ORAeefb59XVLh7Frbm6KPla69esvXBNOV7a+po+9CAUCmlOrmiImn0W1kJ5SUhvASJpw4DkzlHrnE3EvyWrr1WigpYPvoIXvqoF9dcIxVrrDTVT/f0Z/vLKxpLlSullOpcnKuDeXkyCWgFhElJMHx4pBhMkw3j3/mOtJKwPP20VMDel3Hj5KvHIyuRVoVSTR1tHxoQKqVUJ2e1m6ishPq6MLHU4yXIdBbR97xj9/8GByEtDW65xR1jLl4M1eOmMqCXBKFx1LGDfmxbsJ6Ni3a06fdXSil1+Jmmu91EcrJkojQ0yHlSEkyZbMKNN8qy4IwZ0mUeKTRzzjn2a0tL4dVX9/39BgyQverWe2c4djpo1dHDTwNCpZTq5Kx00fIyE1+4nngCGMDlPC11vdtYRoYEhT172tc++MAg76IxmB5vY3XTT0LHsOaXjzU2rFdKKdU57NplF4/JzJS2RtbqoM8n+wQnBz+Av/5VnrhwIfzoR42v/+537WIzAE8+afcubIlhSHEZSzBo32OqqzV19HDTgFAppTo5qwx4dVU4ki4aYDT5jOlVZG/MaGOZmfDrX8tMsGVbWSqZw3sSRx0A5aTz2tphhB/692EZg1JKqcPDuTo4ciQsX+5OF01JgSPfu8f9opdekka1yF7AM8+0HyoqkpW+fbHSRkH2L06fTmP/XE0dPbw0IFRKqU7M74cdO2DPHiAUIoYG4qjncp7GOON02ZBxmGRlwa23yldLUu4R+BN6EYPkFS3nONbe+Jg0s1JKKdXhNU0XjY2VSUdrxTA5GSaN9uOd38Ky3U9/Kj2QgO99z30L+u9/7ZTTluTlufceFhXB8cfb55o6evhoQKiUUp3Yhg2yP6Oy0oRQiARqOILdTGfRYUkXbapHD1kptPZ7pKQYpOb0oAG5qweI45+1V8E112ineqWU6gS++QbKyuQ4LQ02bbJXB2Nj5d+UyvktbwdYuRKeeAKAvn3htNPc7/v2261/35gYGD3a/VbTp2vqaHvQgFAppTqx9eth82YwwyY+giQQYA7P4Y31ySb/dtCzpwSF6elynjs6loakdALEAzCfWWx/bx08+mi7jEcppdShc64OjhgBn33mThcFk8kf39X6G/z6141lQq+6yr1K+PjjjQuILXLucsjPl5jzvPM0dfRw04BQKaU6sfz8SBPfkLSbyKSUs3kdpk2TvJ520ru3FJpJS5PZ49wj46nzJFJHPHXEcRc3wi9+ATt3ttuYlFJKHZym6aKGIStzxcVynpQEIzIKydrymf2k2FhpSmjZuxfuvBOQ6qEzHa1wd+6Ed95p/fs7C8s0NMhY+vbV1NHDTQNCpZTqpOrrYdGiyJ6MUIg46riQF0mipl3SRZs64ggJClNSICfHICE1htpIQLiQk1lRmQs/+IGmjiqlVAdVWGgHfykpkoFSXi73mbg4Seuc4p/vftE558Avf+m+ds898mLg+993P/TYPopPp6fD4MH2+cqV8rVp6ujcuYfww6lWaUColFKd1KZNUgocTDDDJFPFHJ6XB08/PSpj6ttXgsLUVMgd4QVfLLUkUEYm9/BzwvPmS/1xpZRSHY4zHXPoUAnICgvlPDkZCAWZsuoB94uuugp+9SuZFbTU18NNNwES4J10kv3Q1q3SpaI1zrTRlStlDtHnk9RRK/306681dbQtaUColFKd1BtvyEyppIuGmcECerNXaoQ7p1jbWf/+cPPNUjEuIcULhodKUlnBMbzBWVKFbvfuqI1PKaVUy5zpouGwrAw69w+m1u5ldJ0jXbR/f9mvnpzcmCba6OWX4YMPALj6avdDjz7a+iqhMyAsL5cAEmTCcepU+zFNHW07GhAqpVQn9corkc35Iek/eC0PyQNRSBdtauBA+M1vYMgQA2JjMYFisvkDv6G6vB6uvVZTR5VSqgMpLpbtfyDB3+bNEAhIfZiEBPB6YVLle3hw/O2+8kp5AODyy2HCBPebRtpQ5ObCCSfYlzdubGxZ2MyAAe52RlbaKGjq6OGiAaFSSnVCBQVSYRRMCIcYxFbG8pU82AECQoCcHNlWkp7hAV8MIbxsJYdbuEOmdp97LtpDVEopFeFcHczJkXNnMRlqa5m65wX3i6680j72eODee92Pr1olDQhpvkr4yCMtzwsahru4jDMg1NTRw0MDQqWU6oQefBCCQSI5NyYXEblJp6fD5MnRHJrL9OkwezZ443yEjBhM4Dnm8DLnwk9+Yk9HK6WUiipnQFhfL7eXwkIJ0JKSgOJiJrHcftLJJ8OgQe43mTwZLrnEfS3ShiIvD447zr68bh0sXdryWJxpo1u32n0RQVNHDwcNCJVSqpMpLJSy3Va6aBx1fJ9H5MFZs2QKtYPIzpZGwxMmGBAbh4lBGC+383s+Ks2DW2+N9hCVUqrbKyuDPXvkOCFB0kXDYVkhTEgAjxEmr3wpmTgis6blQy1/+Yu7DUVhIdxxB3Dgq4R5edLNwuJcJQRNHW1rGhAqpVQn8+KLUFUVuYmGQwxlI72I7PrvIOmiFsOA3FyYNAmye3kIxyUCsIc+3M2N7H5svuS/KqWUihrn6mC/frLHr7xcMlGSk4HycqbUv28/KT0dzj235TcbMABuvNF97e9/h82bOeooGD/evvz117BiRfO3iImRyURL04BQU0fblgaESinVidTWSuG26mrADOM1g8zkXQyQO+OsWVEeYXMjRsjNe+pUSMqIw4jcwfMZxVxzNvz2t1EeoVJKdW/OgDAQkK+FhXJbSUgAiouZwhL7SZdd5l4FbKqlNhSRILGlVcKWjBvnHl99vftxTR1tOxoQKqVUJ/Lmm1BaajWjD5NKBdOQst5MnuwuzdZBDBoks705OdCzl0FKD0lprSCdF7iI8hffhS++iO4glVKqm6qogJ075Tguzm7zUFQEiYngCdaTVrmDPBxLcK2li1qSkuDPf3Zfe+UVWLyYY46Bo46yL3/xRcu3AGdhmYYGyM9v/pymqaPz5u17WKplGhAqpVQnEQ7Ds8/KDGgoBEY4SBalHM9H8oQoNaPfH59PGhwbBhx7LMRlJGN45fazljzmcroUHVBKKdXunKmW2dmwY4esEvr9kXTRkmIms9RuN3H00e6qL6257DKYONF97ac/xQiHDmiVMC0Nhgyxz1etav6cllJHm64kqv3TgFAppTqJDz+UWdzqagCT5HAluRSQSCS/p4PtH3TKzZWvPXvC6NEGyT3iAAgQz7/5IYF3FsPixVEbn1JKdVfOdNHaWvlaVCTtBePjTSguYTKOcqD7Wx20tNSG4ssv4fHHmTRJCsdYPv1UgrmmnHHnypUtF6Dp29cudhoK2Suc6sBpQKiUUp3EM8/I15oaIBwmgzKO4ku5OHAgjBoVtbHtjxUQWsc9+iU0VkNdxwhe5Ry45RZtVq+UUu3I74ft2+U4JsadLpqUBEaVH6M+wHEskwfi4uDSSw/8Gxx3HMyZ4752660Y/soDWiV0po2Wl7ce7A0dah9v3Hjgw1NCA0KllOoE1qyR2dFQCOrqINGoJZY6O130jDMkJ7ODSk2FPn3k2OuF8883SMyUggRhvPydnxNa/qlsklRKKdUu1q615+HS06GkxG43YfUeHMVq0qmQJ513HmRkHNw3+ctfIpVpIgoL4U9/4vjj3ZOFS5bA+vXulw4Y4N4a37TaqEUDwm9HA0KllOoEnKuDpmmSHiwmjnomEKnX3UH3DzoNH24fjxkDg0fEyZQ0sIkhPMsc6UsYCkVphEop1b04C7VYFTqtJvBxviCUlbmrix5ouqhT//7N21Dcey/G5k3N3q5pP0HDcK8StlZ/rHfvSACLrG5WVBz8MLszDQiVUqqDC4fh44/luKoKYr1hEkOV5LCFZGqkDNz06dEd5AFwBoRbt0qGaFy6PWt8NzcRyl8Nzz3X/oNTSqluprraTsH0+WDbNjluTBctKwXTtAPCQYMO/V5z002y2c8SaUMxfbp7BXD+/OZzgs59hNu2SaXtpgxDVwm/DQ0IlVKqg9u2zSokIzO4SR6Zxj2ayFTpjBn77gfVQfTta8/g7t0rFUePOTYGYmMB2EVfHuYHcNttWiZOKaUOM2e6aGKiTDiCZHQmJwPFxWRQxgjWyQNXXmmX8zxYLbWhePVVPB8scrXPLS2VAjNOeXmyddHSUrVR0IDw29CAUCmlOjgrpcfaPxhfX4mBY9a2A1cXdTIM936RDRvgjjsgJtVeJfwHP6VmyzetdypWSinVJpzVRa1Jx9pauc/EBmugpsZuN2EY8L3vfbtveOmlMhPo9LOfcdqp7iXBpr0EY2Jg9Gj7vLW0UWeLik2bJLtGHRgNCJVSqoOzAsLqatk/GF9XQTLVjLKaBJ92WvQGd5CcAWFBgewlnDnL1zj9W0Q293ID/P739icUpZRSbaqmBjZvlmPDsBvTFxXZvQcBe+Jx5kyp8PJttNKGIvfjxxg82L60aJHd/sLiTBtdvVqC1qZSUmQvIcjr9+z5dsPtTjQgVEqpDs4KCKuqIIYGvATpy06yKJG7pHNfRgc3dKidcbR5s5QRv/NOiHWsEj7K99mz14D77ovSKJVSqmtbt85eQYuNtQOswkJISgxDSQkewkxiuTxwKMVkWjJpkjSsdzB+cyuzT6xpPK+thQ8+cL/MWVgmGHSvbjpp2uih0YBQKaU6sEBAUitNU2Z048IybXoMn2NAp0kXtcTH2zfsYBBeeEHaUZx7gbdxH2QF6dzFjXDXXXa5O6WUUm3GGVBZewfDYbnPxFSVQyjEaPJJxS9VX84+u+2++Z13uttQFBUxa/XfXE95+233S9LS3Cmh2n6ibbVrQGgYhtcwjJWGYcyNnD9jGEaBYRj5hmE8ZhhGTOS6YRjGfYZhbDQM4yvDMMY53uO7hmFsiPz7bnuOXyml2ps1i9vQAA31JvH1fmJpYJxVUKYTtJto6rTTGuvIsGMHLFwIv/sdJGYmgGFgYvA6Z7OqfKAEhUoppdpMba3ssQOZbNy9W45LSyPZ+8WSLjqVSHnryy93V3X5tvr3l6qjDn0e+QPjhtq9IpYvb15N1Jk2unKlXRDHacAAqZgKsH17y6mlqrn2XiG8AVjrOH8GGAGMARKAqyPXZwPDIv9+ADwEYBhGJnA7cCwwEbjdMIyD7I6plFKdhzWLW1MD4VCYeGpIoZLhrIfsbJgwIboDPARZWXDWWfb5Rx9Jz6iLLvE0rhL6SeUubiR87326EUQppdrQujTM7GEAACAASURBVHV2awePxw6sioshKaYO/JUATGapPHDVVW0/iJtugn797POGBmZveajxNByGd991v8QZEFZUwJYtzd82Jka6Y1jv0dJzVHPtFhAahtEPOB1oLB1nmubbZgTwKWD9ZpwNPBl5aDmQbhhGH+BU4D3TNEtN0ywD3gNmoZRSXZRz/6ARChFHPT0opj87ZHXwUEuAR9lRR7lv7i+9BNdeCxl94sEwCONhBRN4K3AS/PGP0RuoUkp1Mc50Ub/fPg4EwFtWAkAWJeSyHsaPhyOPbPtBJCY2a0Nx8qd3EFNb2XjeNG20f393z0JNG2077flJ4l7gJqBZEdhIqugVwPzIpb7ADsdTdkautXa96fv9wDCMzwzD+KyoqKhtRq+UUlGQny+znIEAxIYDeAkxji+kDHgn2z/Y1BlnyCInSEHRjz6CCy70QEIiAJWk8U+up+bfT9n5TUoppQ5ZIGAHScGgFJEByUKprzcbq4s2tptoq2IyLbn0UikyE5GKn+NDixvP16yRPrwWw2ieNtoSDQgPXrsEhIZhnAEUmqb5eStPeRD40DTNj9ri+5mm+bBpmuNN0xyfbX3aUEqpTqa0VLIl6+ogWB8m3qwhGT95rJW8mJkzoz3EbyU2Fi66yN7vsXmztKHoOzgWPB6C+NjOAP4buhxuvz26g1VKqS7AmS5qmnaSSWkpJIX8UF8PRNpNxMfDJZccvsEYRrNVwtmbH4BQsPG8aU9CZ0C4bVvzfYYAPXtKCwqAkhKtTXYg2muFcApwlmEYW4HngZMMw3gawDCM24Fs4OeO5+8C+jvO+0WutXZdKaW6HGf/wVBDiHgCpFJJHmvghBMgNTW6A2wDvXu72ygWFMCUqR68SVKBroI0nuJydj+zCL7+OkqjVEqprsGZLlppZ2dKcFgqWXUewhzLJ3DBBZCefngHdMIJOJsQTmlYREpNYeP522+7i8eMHOmub7NqVfO3NAz3KqEmmOxfuwSEpmneYppmP9M0BwGXAO+bpnm5YRhXI/sC55im6UwlfQP4TqTa6CSgwjTNPcA7wCmGYWREismcErmmlFJdTn6+3Airq4FQmDgC9KCYwWzu9OmiTuPHw6hRcmyacrMfNDwOvF7qiaOSVO7jJ3DrrdEdqFJKdWJ1ddLGCGQhsLxcjsNhKC0KNl44ii9JoerwpotaDAO+853G01gamFk3t/F89273XGBMjGSSWL74ouW31bTRgxPtagT/AnoBywzDWGUYxm2R628Dm4GNwH+AHwOYplkK/AFYEfn3+8g1pZTqcvLz5abdUG/iMRtIo4JRrMFHqEsFhIYB55xjT0QnJ0NWD4O4VJkGriCNBcxg5Zs7YOnSKI5UKaU6L2e6qGGA1yvHFRXgqyxpXIqbzFJp+nfiie0zsCuucJ3O3vYQ1AUaz5sWl3E2qV+9uuXWEs6ehZs2SdCrWtfuAaFpmotN0zwjcuwzTXOIaZpjI/9+H7lumqZ5XeSxMaZpfuZ4/WOmaQ6N/Hu8vcevlFLtIRyWG10gAA11drroSNZCbq57+rMLiI+Hiy+W/SyGAT16QN/B8eD1UUsi9cTwN35B+OZft9x8Siml1D4500UDdryF12PiiRSTgcj+wSuvlD/G7WHwYJg6tfH0KL6kT71dTebdd6UXr2XsWHtowaD757IkJUGfPnIcCMAu3WC2T9FeIVRKKdWCbdskVbSmBsLBMHHU2QHh7NnRHt5h0a+fXSenf38wMUjpIR3sK0hjHSOY+1EqvKM7BZRS6mA400VDISm2YinbWSXd6oFsihhmbILvfa99B+hIG/VgMrvkGUAm/yorYdky+6lpaa5th5o22gY0IFRKqQ4oP19mPuvqTAiFSKKadMpl/+Csrtt+dcoUGDZMUplyciApKwHTF0M1yQTx8gDXUXPz7zX/RymlDkJBgdxTwE4VBYkD/dvtMpyTWYoxexb0bdbV7fC68EJXtZhZJU9DVXXjedO0UWe10VWrWk4c0YDwwGlAqJRSHVB+vqS5BOvCgElPCsllA774mPbb1xEFhgHnny8lw3NypIBASo84whhUkkoJWTz+5dHSyV4ppdQBcaZVOvfcxXiCeMvt5cIpLIGrrmrHkUWkp8PZZzeeDmYLw0P2oD/8EKqq7KePG2cfV1RI26KmBgyQewjAzp3uNFnlpgGhUkp1QM79gz6CZFEi6aInnggJCdEe3mGVlCTVzuPj5YaemB6HGROLn1TCGDzDZey+5Z/2dLdSSqlW1dfD+vVybJp2M3qAmk17GivNeAkxsccWOPPMKIwSV9oowGm7HoFIE4L6enj/ffuxfv0gK8s+b6n9hM8nE4sgSSUtBY1KaEColFIdTF2dpPcEAhAOmSRQSzJVEhB24XRRp8GDJfYdOlRmeJOz4gjixU8K9cTyj81nwH//G+1hKqVUh+dMF42JsSuNhkKwe72dljmWVSR/5zyIjY3CKIFTTpGu8tZp7Wt4Ksobz51po4bhThtdubLlt9S00QOjAaFSSnUw69ZJMZlggwnhEGmUk0Cgy+8fbGr6dMjLk0pxaVmxmDHxVJCGCSzkZL649eXGQghKqY7LNOHLL2H+fPD7oz2a7seZLupMrIitq8R05GFGLV3UEhMDc+Y0nmZTzISgXU3m889h71776c6AcNs2d6EciwaEB0YDQqWU6mAa9w8G5M7dkyKGsQHfwH4wfHiUR9d+PB646CIYPVpmgzN6xVJLAtUkAfC3wssJ3/9glEeplNqXDRvg97+HO++Ef/0L7r5bO8e0J2e6KLgDKrNJhDTlqGoYNaqdRtaKpmmjO/4NQek5YZruItMjR7rq0LSYNtqjB6SmynFZGZRq9/IWaUColFIdzNdfR/YP1ocxgD7sIY81sjrYXn2hOojUVLjmGtkrkpzuIybORzFZmEABw5n7h5VSk1wp1aF88w3cd58Eg/n5kvmwaRPMmwdvvhnt0XUfGzbYPfwSEhxJFeEw3xTYfzt7UsjgH3eADJSjj3YFpdPDC4irLGo8d6aNxsTAmDH2eUtpo4ahq4QHQgNCpZTqYD77TNJ6wkGTBGpIINCt9g82NWKEVB4F6NE3lhqSqSYRgPv936Hmwf9Gb3BKKRe/H556Cm6+GVaskH1qW7fa+9YCAVktnD9f60K1h/x8+9j63wAgruwbiuuSG8+nxnyCccnF7TiyVhiGa5UwkVqm1cxrPN+40e6nCO600dWr3RVULRoQ7p8GhEop1YGUlsL27RCqDwFhMignlnpyvDvgpJOiPbyo+dGPoHdviEv0kZIYZi+9MYFSMln47N79vl4pdXjV18PcufCLX8C770rwYZqwY0fzVZqqKgkaH3pI2gGow6OhwZ0u6qwuam7bjjPf5MTpXju3Mtouu8yVDXPa3sdc+8Xn2fEhY8faTw0G3QGwZcgQ+zmbN7sDYyU0IFRKqQ7E2j/YENk/mE0huazHN3VSx7lZR0FMDFx/vTRUzuwTS4B4SskEYOnqNHeDKqVUuzFNWLIEbroJ/vc/d52nigopCjVjhqT2zZwJGRnyWEEB7NoFDz8M772nq4WHw4YNEqiD3D7KrYKdpsnOLfWNz0vBz8SrRrf/AFvTt6/80kQcyydkVNszB/PnSxsJkJ9ryBD7pS2ljSYmwhFHyHFdnU5CtEQDQqWU6kA+/VRmdYMNJgYmvdjbrdNFnU47TWrq+BJiiTMaKCWTAHEsD08gtGBRtIenVLezejX89rdSLMZZ4dHjgaOOkq1gw4fLRM6MGXDDDTBokPwLhSR9zzSl6biuFrY952qZFUABUFlJcW1i4+k0z0fEzJ5Bh+JIG/UR4pSy5wGpRlRYKBVHLc600VWrWi5apGmj+6YBoVJKdSBLl0I4bBIOhYmlodv1H9wXqyJ5VhYkJpg0EEspmVSSwurnvor28JTqNnbtgr/+Ff78Zyn373TMMfCb30jAFxMj10aMgOOPh4EDYfJkSE+Xa6WlkhEB8iH/4Ycl3VRXC7+9hgZZhQVJlywuth8zdu10pYvOOKa042WgnHsuJCU1np5W+TxU2j1LnGmjzoCwosK9x9CiAeG+aUColFIdRDgsM+7BWvk0lEY5cdQzuFeNTLcrZsyAnBxIz/RiArUk0EAMSxYGtJa9UodJfb3sbS4pgUcfhVtukb6CTkOGSCD4k5/A4sV2FndmphSFsvZwXXAB+Hzyr29fCQ6TI7VNTBM++ggefFBXC7+tjRvtdNGMDKn6atm92c7rTcHPxEuHtfPoDkBSkvyyROSxhgEBe0PkwoV2AZl+/aBXL/ulK1Y0f7v+/SE2Vo537dIWtk1pQKiUcgmHpcrlCy/Ali3RHk33smGDVOgL1ln7B4sYTgHeWTO7XbuJ1iQnw7Rp0HtwIh7C1BFHgHiWluTqtK9Sh8HGjXD22TB9uqzEPPmkuyhHdjZcdx3cfrukh777rgSPYK/qx8fbz+/RQ/YSWtavl8/9Rx5pXysqktXCd97R1cJD5WxG71Tvr6Os3D6fxmJizj6tfQZ1sBxpowYwe+/jEJZfvupqmTwAuT1OnGi/7NNPm88Per0weLAcm6YUl1E2DQiVUo2sDf6vvy698J54Qv9otqcFC+RGFWww8RImkzJNF23B7NmQmuElMSaIiYGfZNYyktJXFkd7aEp1Kdu3ww9/KIU6ysvlQ3h+vqwA7t4tgdxdd8GkSfKhPD9f0t4tZ50l1YGbOussKfQBMgk5dy5ceCFceql7tfDjj2W1cMeOw/6jdinBoPR9tDibsRvf7HGli87M2SRpFx3RtGmytBcxu/516S4f4exJ6AwIS0ul52VTzrTRltJKuzMNCJVSBALSKPjf/5ag0BIKwbPPwp490Rtbd7JsGYSDIcImeAmRTjkjWeeeTlf07CkZtEnJ8rGmlkRMDJa/vGs/r1RKHai9e+HHP5ZJQauxOUjgFxcnH7r/+U9pH1FdLXsAX33Vft7EidISoCXJyXDmmfb5Z5/JB/SRI+H//s+dIV9UBP/5j6wWOsehWrdxo51OmZ3t3ue5d7NdkTkFPxMuGNjOozsIHg9cfnnjaT92cWTdZ43nS5bYlVMHDpSf1dJS2mjTfYS6y8CmAaFS3Zhpyj6Qe+91p1gkJMi+D5CbypNPuibl1GEQDsvserBWPvEkUkUqleRMzJYqKspl4kTo0UcqVtQTSx0xLFmZaFeoUEodstJSuPZaWSH0R+p4xMTIql7fvnJ/8Hrlw/gDD0gF4Ouvh8pKeW6/frKSvy+nnGLfZwCef17uQQkJsvJ42WW6WnionOmiPp99b6+pClNRYufgTmcRMeec3s6jO0hXXOE6nb3nscbNkaGQZNbAgaWNZmbKnlWQ4jPOyrjdnQaESnVThYXw2GPw0ksyu2sZN05Kg191lV10rKpK0kedz1Nta9MmmQkP1oXwYJJJObmsxzv7lGgPrUMaNw4yjkggzmjAxKCKFJYFxxP+8ONoD02pTq2yUvYEbtsmgaFpSjGO6dNlf+DFF9vVQ8FuPv/RR9KHcNUqCfZ8vn1/n9hYKTZjWb/e3UNuxAhZLXSuMhYXy2phS83HlQgGYe1a+9w5mWsWF+MJ2wHhjLTP4Nhj23F0h2DkSJgwofF0Ju/iLbNLpraWNlpc3LwOgmFotdHWaECoVDdTXy9NgB94ALZuta/36gVXX21Xek5Lg+9+V2ZrQWbSnnrKrlqm2tbChdJuIhh0povq/sHW9OkDQ4YYJMZLc60qkqkklTXProryyJTqvGpqJAjbsEGqMNbWSmA3caLU9xg5En79a9lnPmeOpI5WV9sVG4NBua9cdpnsLXRWtmzJ1Kmy4mj53//cBWsSEiRovOwySEmRa6Ypew6tlEjltmmT/d+mVy930FO82W7bkEolE87sLUu9HZ2juEw6FUypeRerJ+FXX9lbXXJy3Ak1n37a/K00IGyZBoRKdSNr18J990kTYKtJbWysxBzXXis5+E49e0r6vjXTu2sXPPec+4at2sayZRCuayCMgccKCFN3u2ZGldsJJ0BKunyYCZBACIOl7+kytlKHor4efv5zWX0zTZkE9HrlT9CIEe6tzD17wi9+IROLOTn2imFKigSJ9fVSqfqcc+APf2g9zdPjkRVHy+7dcn9qasQIaWdhtRZwVphUbs500fh4u0qr3w/+YjulvkNXF23qkktcS86zS5+R2YsIqydh07TRFSuap40OHmwX7d6yRT/PWDQgVKobKCuDZ56RAjEVFfb1UaMkPXTKlNYnCQcMkBu29Qd040Z47TXdjN2Wysrkv2swEMTAxEuIbArJOTW3c8zeRsn48ZDVPwEPYUJ4qCaJJbsHaQMzpQ5SMAi/+pUUdwG5T4TD0mQ+I8M9MWjx+6XQy/jx8nn99NPhiCOav+/rr8sq329/23LV6rFjJeCzvPJKy6t/CQnufYnOgiJKhELudFHn/T5UUYW33m6+N8O7WHJ7O4MePeQXLOIEPiSxwq529/bb9mcSZ0BYWOguqAPye9SvnxzX1+ueVIsGhEp1YcEgfPCBVIJzlqDOzJQMjEsusfcJ7suIEdKHyrJqlewlUW2joMDeP+glTCp+8liL97RToz20Dm3oUOjdN4ZEnxTi8ZPKGvIof21xdAemVCcSDsNtt9krbsGgBBJHHy2fw8eNgzG+tbJn4IUX4J13CC1Zzv/u3UPVHj/U19Ont8n998Nbb0nKqbNYjPU95s2Diy6SLBXnhKJhyL3IUl4O8+e3PNYhQ6TXoTXO995ru/8OXcGmTXZdrT59ZF+mpWSLHR2mUsnEExMO7ANAR+FIG42jnhnlL4EpqU7bt9uB8JAh7t+//aWNavsJoQGhUl3U5s2SzrNggV2q2+uVwgDXXw/Dhh3c+x1zDJx8sn3+8cfuflPq0H3+OfgrwgTDjnRR1sKpGhDui8cDxx8PiUmyfF1ttZ94Ydt+XqmUAgnM7rjDPcFXVgZjxkh6pq+8iMvmXQ55efKB/OKLYdYs3p36O7bd9gj8415i7vojc27sR3zfLBJHD+Y7fz+aNwMzuYm76LnnS/m0vmuXbCgsLeHJx4Pcf797HEOGuFd25s61q5s2deqp8v99kP1jmhBgc6aLJifbWZWVlVBdZK8OTmMxvrM7eHXRpk4/XZarI2bVvAIVlY3nVnEZw3DvtGip2qjuI2xOA0KlupjqanjxRXj8camyZRk6VPZgnHSSu0LcwTjxRPcf2nnz5IasDl1dnaRphevqCOPBS4g0yskbYcoUr9qnE06AtCz5hW4gljpiWfppjL1xRinVItOEv/9dtgBYAgEYNAj6xhXD++9z+txr6fneM67X5TOKpUxuPD+LN+gd3i0lSbdsgVWriPtoARd9/ite3z2e3xT9H/2+WQG7dsrjX+fzxD3FPP6Y+1P6hRfaGfKBgHtcTtnZze9DuoWhebpold1ukEBVAzE1dn7tDBa4G0F2BnFxrg2n4/mM7Cq7jOg779h/9p2TC3v3Nk8L7ddP3g6kz7JWUNeAUKkuJRSCO++ERx6RVJFgUDb5X3yxTO5+23Z2hgFnnCGTxZZXXpE0FXVoNm6UG1awNoiXMAbQi0IGnTkm2kPrFMaMgeyBCcQiy+CVpLKs7mjCy1vIE1JKNfrPf2RfucU0YXB6KQM2LIT588jYnc+ZvOl6TRE9eJVzG88nsIKxfNnq94ghyDm8zsuczxU8JRdDUor0gRvW88K9uxuf27u3ZLBYFi6UPWAtmT5dCqaALEA6V8a6qy1b7Gqvffq4t4mUb2uSLppXLdWAOhtH2qgHk1nFTzdGgWVldnrosGF2v0Fonjbq8ciqNMjvfUt7W7sbDQiV6kJeeQXefFMqta1dC19/Lfv/hg+3i8J8Wx6PzOQOGiTnoZB8qNi9e58vU60oKIDCQpNgfRgvIXwEOYbPdf/gAYqNhaPHeUiKl1JxVSRTRgbrnv0iyiNTquN65hl4+GHHhSo/UwtfIW3JW7BH/pjP4TnisPsM1Y07jueOvJP6QcOhzxH061nPadmf2Ust++AlzP9xHxfwkut73vXzPbx92TONVWTOOccO9EIhyXZpSVKSZKxYnKtD3ZWzN2NGht1/sLISaorsipzTWIzvzNl0SpMmufI9Z4fehLLSxnNNGz10GhAq1UXs3Qv332+3kxgwQG4KL74o5cEXLWq78so+n/SFskqA19fDk09KxpA6cOFwpKDMrgaCePEQIo0K8uK3wOTJ+38DBcje1sQUKYHY2H5iXsV+XqVU9/Tqq5IqCkCVH9YXcE7Bn6nbubfxObmsZxLL5WTyZMz57/DajUsoOutquPxyEn/yfS5Z/wd8hbslvzMQkJvQ+vWSA79wocxQPv443Hsv/O53GNdey03x/2Q28+zBmCb/79lhLBr2A/jgA9LS4DRHJ4Tly5s3F7dMmmRvKSsvl9Y93VXTdNFae7sg/sowsVUljeczea/zpYtaDMO1SjiMDQyptvetLFpk75t0po3u2dN80rppQNjd0441IFSqC7AKA1gBWWqqO12irAweewxuukkKwVhB47cRHy9/l9PS5Ly6Gp54wr1vQe3brl1ykwr46wEDD6YUlJmaJUtf6oBMngzpfeLxECaMQRXJLN16hHsTrVKKd9+FO+4wwV8ps1EFBZzpf5a+7KKaZAAMTL7Dk9RPOYndz3/Ilw98zOu1p5C/WtJMDEOqhVp/+wFZJezZU3L1jjlGNqufey5873vS2+i22+DBB/Gs/prbZy7jRD5ofGkYD7/e8SM+mXYTXHUVsyeWuN77+edb/rDu87nrbn3wQffdC7Z1qx0INU0X9e+pwgjLbHAqlUzI2iLRdGd1+eWNhwZwWslTUCelVevqYPFieSw31/07+skn7rfJyLCrkVZWSqXv7kwDQqW6gHfflZshSErntGkSII4b535eYSE89BDceqtUtvy2M2KpqfDd70pfH5CA9KmnWu4hpZpzt5uQG3Y2hQw69+goj6xzSUuD4aNjSfDa7SfyGUXl64uiPDKlOo4PPzD57Q0VmOsKZCWvys9JLORcXuF1zqaIHuykH77eWfzvB+/zx2kLeCj/eF562eDzz+33Oflke//VQRs8GN87b3HnU/2ZmGDnODYQwy/4G18+/jnxY0dwbvJ7gNyg1qxxp0M65eXBwIFyXFcH779/iOPq5Jz/fXr1khUxkECnttiOkqezCN/pp3bu/rY5OVJNLGIW86HEXgG10kY9HumRadlf+4nunjaqAaFSnZzfD3/9q50O2r+/VBMdMAB+9jO4/XZpQO+0c2djFg/5+d8uMMzOhiuusCuX7t4Nzz3XdumpXdm6dVC4J0gwaOKJBIQTWIF3didpFtyBTJ0KSYlyXEMSITwsf35rVMekVIdgmiy55xN+fvo6/Ot2UlllUEoGyVSRQC03cB+bGMKupOFUDhtPjytOx99zSIsbz0ePdn0WPzSGQezlF/HXDWczJtfeoxggnhv4BwXFmUz7yyx6f/iiRDS0vkpoGO5m9StWtF6IpqsKhyVotlh9CEGyg+L8drA0gwVSGa6zc6SN9qKQY/wfYE0gfPqpnRziTBu1MnKcNCC0aUCoVCd3113S3gkgMRF++EOp1mYZOhRuvhluucX9xw+kOuhf/iKVSb9Nc9b+/aWSqdUbatMm2T7S3XPy96W8XLbcFG2tJoQXD2HiCTCh7zeds/pblJ16KiRmSJptEB8B4li6zGib/GilOimzNsC/xj7EnF/0YVd1GmVk4CeFdCo4jmXsYADFSQNh8BDIGcyICSmNNWKSk6V42PjxMGsWXHmlpIq2VYGyxL4Z/GPFZIadPLCxkkwVyVzP/eygPxdtv1saEn79Ndu3hlrte9u3Lxx1VOTnNVtvat9VOdNFe/d2N6OvKg5g1EuEmEolE3yrukZ/2wsusKsPAadV/a9xv0o4LFtYQQrqpaTYL2u6Sjh4sP25ZevW7l2YSANCpTqx5cvlfglyk5482b0h3ykvT7Zx/PznEsA5rV0Lv/893HOPlPA+FMOHw9ln2+dffSWV31TLCgrk5lNUZGIgeyHSKWfEjH7RHlqnlJMD/YdJ+wkTqCSNpdVHEl6ljTJV9/XOd57hz1/NpgFf47VsipnJuxg5g1iTdyHxIweT1ieJ0aPl/vDDH8q2gl/9Cr7/ffm7PmWKfHhuq2DQkpoKD7yQzYBT8+CIvmAYlJHBj3mQvuxkaLgAvlwFc9/ixXt30dDQ8vvMnCl7CkEmN7/NBGdn40wX7d/fbqFQWQmBEntT/3QW4Zs2Vf6jd3ZpaVKSNmI6i/CV2kvD1mcPr3ffaaNxcfbnoYaGQ//80xVoQKhUJxUIwB//aM9o9e4tKaL72hpgGHD00fCnP8F117lXEgFWrpQPAg88YO9BOBjjxsGMGfb5kiXdu/LbvqxbByUlJg2BcGO6aDZFDLpwwn5eqVpiGDDhWA+JcXb7iVIy2fDsiiiPTKno2L6yhPte6UsdsuQXSz2D2czd4//H9/83i+G3z2Ho0SmMGCETKr/9rdSD6dfPtfhy2GVmwoP/8tBrbB/Z35CSSiE9uY4HOZXIJ/vKCkpeep/3zvxHi+Ws09Ikbdwyf373SA5omi7qDJiLiyGhugumi1ocaaOp+Dmu3P4f/auvJAMH3GmjO3bYGVUWTRsVGhAq1Undfz9s2ybHcXFw1VWyb/BAGIYUGfvzn+Hqq5s3rF++XGaHn3vu4G+qJ5wAxx5rn7/zzqEFl11ZXZ2UUi/aXEXQ9DQWlBnr/RrvSSfu59WqNSefDEkpMiNSTyz1xLBkblmUR6VU+6uuhmdu+IR14VwA4gkwyLeb199J5NQVfyJj+lgWL7ZX/CZOlCySaOndWwqeZfaJh9xhkJPDDl8Of+dnjMSOeN54J47qEce02KDw+OMlzRVkH6GzEE5XtW2bXVm1Vy/3yqi/PIhR7Qci6aKs6LztJloyc6bd+wo4pWGu7MWIeO89+TpypP17Ac1XCTUgFBoQKtUJrV0rm+wtxxwD559/FZMnqQAAIABJREFU8O/j9Upz37vvlkrOzkwS05RqXffdJ30GD5RhSNrq8OFybjUXbi3VpzvatEn+uxRu8mNiRFJGTU4YXWaXbFUH7fjjIb1PHB5MwnioJoll67Ok8pJS3UQ4DC88UsmXS6upJR4fITIo45zTG+hxipSefvZZO7skNhbmzInigCMGDJDslJQUAzKzYNRoNvU4lpWMIxT5uFpNEm8WHSubGa+4AirsfqOxsRIjWBYu7PoVr53pooMH270IKyuhvqxJddG84fKkrsJqiBxxIh8QW2b30nz3Xfnq9cpnJEvTgPCII+wV8T17um/rLA0IlepkQiGpHGrd6LKypPG8VeXzUMTEyD7zv/0NLrxQitNYPv9cis4czGdqj0daUCUlyXlRkT1bp2T/IMA39r2LZPyMPUP3D34bMTFw5Ph4Ejzyfw4/KXxpjsH/1odRHplS7WfRItj0/KesCQ3HADIoxevzctFfJXdu9WrpHW854wzo0SM6Y21q2DCZhExIQD7wDxzEluGz2JUwjHDkI+s7nEoJmfD003DkkXbPJWDsWHsrRHU1fNiF/6/fNF00HLYzevbuhcSAnVrbqZvR74sjbTSRWqZWvNU4+7xmjVRUB3fa6LZt7kq0Ho+7jcqmTYdzwB2XBoRKdTKPPWbPAsbEyCRpbm7bvHd8PJx1lqSSOtNPN26UFhV797b+2qaSkiQotCxb1r3TMSymKQFhrb+B8trYxnTRHhQz8JLjojy6zm/KFHtCo5Z4Gojh02f1F091DwUFsPitaopWbKOIHqRRTiwNTJ1i0ndoAqGQ9Iq19OgBp58evfG2ZMwYmZxsnORMTqFi2HhWZc8kbHgJ4uNhfkAt8VIFZPp0uOkmqKvD43G3oVi61JVF2KWsX2+vZvXs6Q5kqvxhPJXyg6dSyXg+61r7By1HHSWTAhGnmPNde0ytiehRo+wJapD2JE6aNqoBoVKdyrZt8Mgj9vmoUa6MiTaTkQG/+Y30nLLs3StB4cHMng0f7q7w9cordnns7mrXLpm5LlpdiIkHT6R30pjELXhHjYjy6Dq/GTMgOUM+SYbxUUMCSz8KaQ8U1eWVl8PLLwPLlrE6lEsiNSRSA74YLv7dSAAWLJC/QZZLL5VUy45m4kSZmLRaAvhiPNQm9+TLwedhpmWwhjz+xK2UkS7/3777btm8np/P4MEwIvKnNBi0Uwe7gvJyWfV84AF45hn7em6uFFKBSLpoZaCxGfBJvI8vKx2O66ITjo5Vwql8TEKZ/QtuBYRerxS9s3zyifstmgaE3fF2oQGhUp2EacL/+392QJWaCjfeePiqwSUkwC9/KfuyLH4/3HEHfPHFgb/P7NlSRc56/RtvdM8/tpZ16+Rr4YYKwtg13KeMD7R9TfduaMAAyMmT9hNhDKpIZln5CMz13agOvep2gkEpAlZbXE3tinx20o90KjCAgXlJTDw+Hr9fJuUseXnuCbuO5sQTZRLS+rOYng6lNfHkDzwNc0Qe2xjI77id3fSRJ3z5pWwWu+ceTp0Zbgwmv/5aqkt2Vn6/ZNg8/LCsnL73nrtSptcrQb2113/PHkiss1fJZrBANvbvqwR5Z3bppY0zB/HUcXz1fKiVD0rr10t/QXCnjW7ZYjevB/ndstKmq6oOLhuqq2jXgNAwDK9hGCsNw5gbOc8xDOMTwzA2GobxP8MwYiPX4yLnGyOPD3K8xy2R6wWGYXSB7ppKHZiXXrL3fXg8sqfekSlxWHi9cM017tTP+nq4916ZaW5NeTk8/risMn79texLtG7Oq1fLfbu7svYP7t5jB38+gky/uFcrr1AHwzBgwiQfibFSMaOaRL6hFxuf0v4nqut6+23YvRtYtowNoUGRYNCEmBguvnEAHo8U97ImFD0e2W7Q0eegZs+Gm2+WY49H9geWlHqYV3gM72VcxKveC5jBAn7Iv7iLG3m0/nJe+cXH5M/6JT1jSqmslC1lb73VuSYia2tl//7jj8vi59tvNw9qk5IkyPnRj9zVRSsrwRdJF02jQtJFu+L+QUufPnDKKY2np/CuFC6IsFaIR49210fQaqNuvv0/pU3dAKwFrFqGfwH+bprm84Zh/Av4PvBQ5GuZaZpDDcO4JPK8iw3DyAMuAUYBRwALDMPINU0z1M4/h1LtqqQE/vEP+3zYMGkY3B4MA847T4rXPPaYbFo3TXjiCZlhu/hi+0PFrl2SxvL663bRmw8+kFnpadPg/ffl2ty5MHCgpKZ2JxUVMrNrlpVTWJ+GB6kAkEkpgy6ZFOXRdR3Tp8PT93soL4EQMQRIYNmbxQz7Y7RHplTbW7UqsiequprQii8oZjI+ZEIkcUAPzjgv9v+zd97xUZVZH//eKZlk0nsBkpDQQXoXpSPoKlZ0UbGtrmVddXd1d33fXVdd17K6vupr3dXXCtjQdW10QUGa9JIQCC0kJCG9TcrMff84M3NnIDQNmZTn+/nkw9yZO5MTIPe55zm/8zvs2wfffGO8Z8oUmTfYHrjiCqnavPCCJIUJCbImVlXZaIxIobomko8briCeIkJxZ7ybwLXlIIWRwbhsdiwWqaCmpclalp4um6rJyQH90fxoaBB/gG3bJCFxNnNnGxwsld1zzhHDUJNJztu0SV6vrISmugaodwBud1GL5pcwdUhuukmGTwJjWU1oyUFqUrqAxcKiRbKxbbHIHOZVq+Qt69ZJ4dRDjx4ycgvk7993rmVnoNUqhJqmdQUuAv7lPtaAScBH7lPeAi51P57pPsb9+mT3+TOB+bqu1+u6vg/YA/gUgRWKjslf/mK4a9vtIhX1navjS02N6ON9XbRagvHjxc3UV6L6xRfw0kvSu/DHP0ol8YMP/K2+6+pkZ3r8eOMGpL5eel06w+BgXzzVwcodh2jC6hWM9oktxhwTGbC4OhqDB0NyWhAaOk5M1GBn1Y4ocDgCHZpC0aIUFooMH4DvVxPqrKAe90XaauXimxMICYG33zYqZOHhssnXnrjhBpm1C7IBGRvr3lDUTBAWjh4aTpGWRCXG7CSTq4nwsgNQXkZTo4u9e0Wh8u23Yqxz9dWBX4eamsQN8/33pWfyo49knfBNBq1WSQBnz5b5wJddJsmLR3WTnW2YyxQUQGij4aIzlcWy+EZ28PXlssu8NxhBNDLBtQyOSpVw/36j4ucrG927VzYWPKSnG5vbhw51vvuT1pSM/g/wAOD5K44FynVdd0/CIQ/o4n7cBTgE4H69wn2+9/lm3qNQdEgWLzZctTVNlB++g989NDTIInfxxXDXXbLzNWeOSE48GvrToqhINCpz5kgm56OzGThQZKCetaW4WOSjM2bI5tyJLqAffyyynSuvNJzjDhyA7747g7g6AN7+wd3lOH36B0cOUyKHliQyEnoPsWPX6tHRqCGUTc4B1CxaFejQFIoWo75eql6NjUBNNWk/fEIOPrq3pCSuvs7K6tX+ErirrvJ3XGwv3HEHPPusFIMuu0wcsUeNkk1Ss90GkZGUWBIpJQbPqhVKDRZHNRQX46yr95sxV1srI5Xuussttz0DamqMgfA/hupq+PRTSQLnzZN5gr6zes1mMca56iqRzM6aJQPWLc3o+n74wXhcVgbWqjKgk8hFPVitcPfd3sNpLJJ7GV1uSjzmMuec47+p7es2arMZI0saGvxUp52CVpGMapr2M6BI1/UfNE2b0Arf7zbgNoBUX+98haKdUV0tC5YnJ0tNhV/9yv8cl0v6C15++fhG6J075evFF2X3a+JE+erb95jeEV0X67JXXjGyN5AM8xe/kA9wW9GlpIhZ2aOP+l8wCwrkYmqxyO5taqohY6mogK++gksvlUT13/+W55ctk53OlJQW+etq0zQ0QG4u4HRy+IgJfBLCqXPakG6pgzBunMai+To1NdBAELXYWf/uD0y4ZHKgQ1MofjK6LlJ8T4UjdP0KBjeu5RXcZTSrlTEXxRIUJEPoPaSlScGoPaJpYnLma3QGkkw99xzU1Jipr4+gIesoPbJWM871DRVEsYu+rHaNwVEaQr2Wgi0mkfpGox6yfr1UC+++WzYtTScplRw4IMoYj0vlpElSbQ0PP/2fIzsbPvnk+IRS06B7d9l47dfPPYvxFOi6kRBWVoKryQnVMjR4Essw4+qY4yaa49ZbxYWotpaRrCOisYTKsjKIiWXRItlQsFrFbXT1annLunUwfbrxEV27yr0MSJUwsRO19rdWD+G5wCWapl0IBCM9hM8BUZqmWdxVwK6Axyv2MNANyNM0zQJEAiU+z3vwfY8XXddfA14DGD58eDtqI1Yo/Hn8cSPpCg4WyWZUlBzrulzUXnjh9Bqg9++XauH//Z/0YEyYABOHVzF065uYX3vZGG54LP/6F+TkUPPWRyxYGce8ebLxFhIiMXlUeI2N4ob2hz+IvKe0VHZwPVXDuXNh5kwxgcvOlmqZ0ykSGc+FuiOzd69bBpR3iFJXpDcdDDU5GDKrhQZJKryMGAFxCSaK94ELE7XYWb2ikQmBDkyhaAFWrzaGkms11Vy9/ne8zSzjhKQkJl9g4bHHJFHwMGfOyROe9siAAaJcefppKC/XsA/N5GjGHLI3wL1H/kAIdbzBzewnHUrgHHsFey/7HR+vSvJ+Rl0dPPWUmKX9+c/+/ZW6Ln/Xn38uyacvS5ZIT9rMmXDBBc1X8Dw0NsLChcePPEhNlcrVgAEnbgU5Efv3G5sCBQVgb6ryvjaFJbL76zt1vSMTHQ033ggvvYSVJiaxjE8LkyAmhrw8jV27JNEeMcJICHNypKrq8TPo1s2oGh461LZdeFuaVrks6Lr+R13Xu+q6no6YwizTdf1aYDlwpfu0GwB33YDP3Me4X1+m67rufv4atwtpd6AncIxPkELRMVi3ThYgD5MmSRIHsjjdfjvcc8/xyaDFIjuWkyadeCRF0b4aPnhqP3dMyWHaff14eNdVrOQ86jl+IFUxcTy/YiAX9tnLc0/UeXsTzWapCIaGyliJYcOkcrh2rSR7SUkSg4fcXPmZNE0qhR7JUnFxx5oTdSI8ctGmnH2UEuN9PjO+ArO1g92htQEyMsRu30ojLszSR1jUA/1gO/afVyiQKpXvNXPK4beIqj/CQtzG61Yrsb3iWLTIfyj7RRfJvLqOSFoaPPSQj9okKopdE+/i0VGfU0osM/hKXFeB7YciuPnlEbw87j1Skv1rBhs3wjXXSE9fY6OYjPzpTyLtPDYZ9FBXB/PnwwMPyBrXnJtpYaEIcHyTwYQEuPNOKWyNHn3mySD4y0VLSiCoRsZNdCq5qC/33ON9OI1FoguullKsRzY6cKDIQz34yka7+ZSc8vLOZqBtj9Z2GT2W3wPzNU37K7AJeN39/OvAO5qm7QFKkSQSXdd3aJr2AbATaALuUg6jio5IQ4Msbp7qWlKSGMnk5Yl680QjH6ZPlwXGsyjW18uCtnw5rFzupPJAqWRgPtPhK4jkP1zMf7iYEOoYw/dMTNlNGgf4MH8sXzGDJizgALJ2yZ12ZBSaJgnfdddJgvrFF8b3fOYZMQCYPds/1rlzpecjNFR6QN59VxbPFStkrmJUlNzAeL4qKiTBvfhi6NKOu4V1XeYhAZTsLqHR59I7dGgb931vp4SEwKDhQXy/qJKKRiv1BJNHF/a9t5qMP14d6PAUih9FdbUkK561oU9SOec9fT9vcjUN7g29+rgUnJipMopFXHSRyCI7MnFxkrz9z/+4DbzMZvJ6TuLhLpu5f82VDM7fzCaGoKPxVeNkbnjuOuZPfp//nf4uH3xtmNHU1srn/PWv4uh9bL9lVJRUA0tKpO3B829RXCyKnZ49Ze3r0UOu/WvWSALf1GR8xsiRsl7/VGWMZxRVRQW4nDpapbjPeeWinS0h7NVLJLKff84wfiCGUkoLCyEsjMWL4de/lu6XIUMMR9H16w0T1thYWTvq6kQJ5XCcvVnPbY1WTwh1Xf8G+Mb9OJdmXEJ1XXcAV53g/Y8Bj529CBWKwPPss8bulNUqydUbb0h7X3NW1CNHyoWuTx//5202GB+3g/Elr+Dc9C4bq3qwnIl8wwSKSDjuc+qiUliWcDvLwsNl9arM9fYjAOByEbRnJz+b7uS6V8aRmibJzMCBshh7nOxcLlGaXnKJyGE88tDPPxcpjsUiC9iWLbLb7XJJ4ti7d/OSm7174ckn26/U6fBhtwtcVRVlpS50jAHBE2Z3ggbKADF6NMyLgIoSj2w0lNWfFJLxx0BHplCcOS6XuDh7Er3oaLg8+3Fcjno+cout6i2hFLvi6B9nvG/mTBnd0NZnDrYEYWHixPnKK8acuTJ7Vx6dupJfHPkr2xc20oiVvWTyCZdx7tJVPLA5g8kPfsyflownO9vdi+dO8goLJcdIT5dNyQsvhHPPNdapqVOlOujplweRIT78sCQdwcFGTxqIAc5llx2/Vv8YjhyRtcXz2K7Vem8QprJYpDujO+E4o3vvhc8/x4yLySzlw/IYaKjnyBEb27bJ/cqIEUZCmJ0tG9BRUfI70rWrMdfx8OHOo7gNdIVQoVAcw86dssCALEoRETLaoa7u+HN795ZE8DjXUc9ch1deEY9twAyMYAMj2MD9/J1d9GU5E1kechH7owdLRmf1kYxarNCrJxw8CEePEkEls/iAWXxAzNdl8Jcb5fPd2ospU2T9efFFqXCC2KFXVPib3cybB/37y+OwMEl46+tFnpOXJ9KfY29cjhyR5HHIkB/1VxpwNm50P8jN5SjGnZrZojHx0g5uBx5AevWC7j0tHCrRcWKWPsItdq5rajp5s49C0QZZuhT27ZPHFgv8fHIRIWNeYBnjKSSRemwcsaXTNVnzVp4uv1wSkM6E1Srma++9Jz17AHXOIF5KeoRhN22kaO5SqHewiSFsYggJJUXU/vYL4noGURg+kvJyY8PO6ZS/87g4Ud+kpfl/r5QU+M1vZJzF3LmyXIIkle+8I2t4ZqZci/r0kcT8TAxomsPhkITFd65kURHE1olcNIpyhvEDXDi7c17nJk2Spsxt25jKYj7kKvkL6tqNRYskIRw0SCqFDQ2yib1hg9zDgMhGPQnhwYOdJyFsp/vtCkXHxOWS5vjGRkmk8vNFlnJsMpiSInKWd945JhlsaJAXunaFa6/1JoPHomka/Wakc9dn0/mochofrUrhrnuD6Nfv2BNNpIxJ4/4bivlCu5jbeZUYxNKaN9+EyZP9Bh4OHQoPPui/4CUl+Usu8vIME1OzWSqIngSwslIW4O7dJfmLjTXe59H/tzeqqnwSwr17KcSwLesSW/+j+kYUp0dqKqSdE0EI9bgwUYeNDQ3nULti/anfrFC0IbKyxAjaw89+BslvPwl1dcznGhzYOKKl4LIFk54u58ya1fmSQQ+aJu0Ms2cbzzmdsKZ+KM5f3AapqZQTxQaG809u5V2uY1eOmcQ93zGyTwV2u1TzkpPlKy8Pfv5zSTKbG6/Uv784b994o5iU5OaKyMblkj7/7GxJNOz2M/9ZqqtlDZk3T1pJfvlLMcDxVEArKiSp0So6uVzUg6ZJlRAYzGbiKYbio+BysmSJ/JvYbDKv1oPqI1QVQoWiTfHPf8LmzZIENjZKMuXb/BwZCbfcItbYQcf6v6xfL9rSE3W+A8THywfcdptkXW7S02W20003STVvxQpZxIYPh8mTNczmGTD7E7nDcC86gNirjRwppcCBAwHZTXvoIfjHPyShNZmk7XD3btmsNJvl5/jZz0SiERUlVdEffpCfKThY5kJFR0s++9pr8q22bRPpTfJpTmjQdZF77NghefKUKadn493SfP+9W8XjctF130qOcq73tYFDzCd+o+InY7HA8BEmvnrPRW0tuDBTQSQb3vqO8yePCXR4CsVpUVYmgg8PQ4fCsC5H4OWXyaEHqxnLERLRQ0KJjdUIC5Pk5cILAxdzW2HGDFlLXn1VEjSTCQ5VRBJzyfVs/+IQpfvKvTMLHQRzuCaIzO+X8fg1QRwaMIMFn5i8JjENDdLOsXSprHHHVguLi8Ws+5xzZK3JyZFqZWqqJIJvvikbmz//uSyXJ5LwlpcbTtzZ2eJ2eTIKCiDcVg/1Yvk9hSVy8bvggh/999bumT0b/vhHTEVFTGUxc12z4ehRjpoS2bxZfodGjDCS6l27ZEM6IsLfr+DQIXey3Qnk1iohVCjaCA6HFPeOHpVju92wQrbZpOA3Z04zTmR1dbI6PfPMiSfDjx8vtqSXX95MJulPYqLkfccxbZqI7i++2N/a9MABGDtWtk5nzvR+xt/+JqMnQkNlIb3oIpGGglxkZ8ww1Cz9+8simJcn53z0keSto0aJDMczTHjJErj++pOGT1ERbN0qX2VlxvMVFbJj3Jo4HMaCQ34+5roqnJ7LrqZx7iWxJ3yvomXo0we6dXFRnIMhG13u4PxAB6ZQnAZNTVIZ8oz3SUpyj5X7/VNQV8cL/EqSQc0MwTbS0uQa6THJUEgbXWSkmM14/NRKy010PTeNpJ6hlHy7i4q6ILqQRwa5hOgOsueBOaOUn193MUvWR/kKYdi6VZK622+XNUXTxD104UL597JY5Lpz6aWSZHz/veE8eviwjMcYMEBylq5dZQM4K8tIAI8cOb2fq1s3aRs5fBj0I2In65WLnj9BfujOSnCwzLN6+GFJCJkNhUWQkMDChRpDh0qF0GqVzXePbHTSJEnm4+Mlwa+rk3+fuLhTf8v2jpKMKhRthKeeMpJBk0kqYWazSH4+/VT6F45LBr/7TsTwf//78clgZKQ0GO7YIc0G11xzymTwlPTpIyvf5GOGe9fUSKBPPOFd+cxmuaja7VIFvOgi4/SiInE+9WAywVVXGeEdPCg/WlAQTJxonLdypXFj5EtZmbz2v/8rLm8rVvgngyALbWvLP9atM5Lg9JIf2EF/72smq5kJk1WF8GyTmQkZA8Ox0oQLM3WE8F1eGnpRcaBDUyhOyddfG6YkNpskItYSqQ6uZjTvcw06JgixExKi8cADKhlsjr59Zb5gTIz/8/G947j3neEsve5NHuIRMsn1vubM3U/Z3//FoJDd9Owp13LfauHzz8tG7TPPiMu2x0XUbpdk79prJSd55BH5/r5s3w7/9V8yJeG++6SCuWLFiZNBk0muZRdeKD2LL78sm64jR7rnTFZIQtjp5aK+3HEHBAUxgO0kUwAN9VBezrJlotoJDpbbJw/ezVs6p2xUJYQKRRtA10VO4sFuF7XH++/LohEff8wbqqsl2Tv/fKP72ZcbbpAmhuee4/jGwJ9ITAx89ZVkqMf+EH/8o5Qxm8narrnG/3jevOM/dsYM43jpUpGcTppkyDUcDkkUQXrzvv9eFtJ//EOkOL7mNSA5cWqqcXyicR1ng8ZGic/DeQfeZSNDvcfhkRo9erRePJ2V5GRI7xuC3dKACw0XJnLJ4OC8VYEOTaE4KQ0N/nPmrrjCndA89RSbHH34A0/KSCBNg2Ab118vrpeK5unSBf7yF0mi+vWTzol//AMuvCKEsHdeZtCHf+L2qPe5hdfpyy6ZW1hXh2XB+/TY/QVjRjTS1CT7n7ou69G334qMdNMmSTIyM8XQxjcBTE+XpfG++6TC60HXj9+49OCpMs6cKa6pr74qsf/859Jf79kcXrIEcDZBlchopuBe5FRCKFKl2bPRcLuuAhQWUVZmjOsYMcI4fdcuw8HXNyE8lWS3o6AkowpFG+CTT/x3BkeOFFlJs7r1JUtkku3+/ce/1rWrNN35ZlZnA6tV7ET795fE1HcWxrvviqT0k0/8Vr+MDBlc70mStm6VXdIBA4y3Dhtm9E64XCIdveMOeX7DBtmBfecdqSDu39/8AODQUPnMgQPlol5bK4t+Q4OMr9i/H6/pwtlk82ZD6poUXk3G1gXs5Vnv6737B7XbMRrtCU2T/w+J0Y1UFHtko6Gs+qiAtHtO/X6FIlDs3WtUnbp3dycZBQVseHEtL3APubj7wENCSE7W+MMfAhZquyE6Gu6++wQvXnkl2qhRpM+ZQ/o38yghhu8Zw0aG0rhxI4kHDnLhJZex8XASO3b4L3sbN4q88Nprm3cR1TTpWxs4UGYXfvKJsT6AVH979pQksHdvSSxPNaNQ191ma5WVgG7IRfv06TzWmKfi3nvhzTeZxiLeZo6M0aqtZdEiO6NGSXJtsRgGQD/8ABMmyK2Uh86SEKrbEYWiDfDkk0ZyExQkkpDjksGKCkkEp05tPhn85S9FHnq2k0Ff7rxTJu56mh09rFkjW2++w5nwd3wD6Q/0RdOk78IzCLi4WIqRaWli/b1jhyy869b5J4PBwbLY3ngjPPCA9Nh43EtDQ/1HMS1Z0nwi2ZK4XP4Gr+fp37KJIdThdrUxmxk1vpNMu20DZGZCjz4WNHRc7j7CVRtsJ+65VSjaAFlZxmNPxWntffN5oeE2CkimDjtoGvHdbMya1blbxlqMbt1kkXj8cWItlfyML7ifvzONRUSU5GJ56w1GOr/nogt177JntYqKp6JCjNmef95oFTgWi0UkvU8/LX3y114rlb9XX5VK4MyZks+dzsD6rCxR0VCu5KInZNAgmDiR3mTTDXdmV1jIsmWi4gkJ8frhAYZsNCHBaGEpLDRGaXVkVEKoUASY9evFZdND9+7+fXOATHTv31+mvR9LRoZsOb7yilhktTaTJklfYe/e/s/n5cG4caJ7dTN6tJ+5KUuW+E2tACSB87VKX79eqoMul5HI5ebKgulpzP/97+U9mZnND68fN85waz1wQHbezyY7dhhSoOhoGLDzA5ZgaLlMQRbGjTu7MSgMMjOh26AYQnDgxEQTZlY7BuNYtzXQoSkUzeJyiVrCQ58+sPqzo7z4YQIuTBwgHQ2dhAQICzMdJ8lX/ATMZvjDH2D1aujZkxAcnMd3/IZ/cJVrPilL3yZhyXtcOrmKSy8VZaIngXO54O23Rdq5efOJv0VoqFSipk+X65P5DNvJGxulyoiue52/lVz0BNx3HxowjUVyXFZKVWkDa9fK4ciRxqlgtL07AAAgAElEQVQ7d0rl1mQy3EZdLnfi3cFRCaFCEWCeeMKQBZlMonDwJjUlJWIZd/HFYiXmi2fWztatzWSQrUzPnlIVPNbmurZWmgcvuwzy8tA0WSg9uFzwwQfHf1zv3v7afk2TRVPTJOcNCpLd1auvlp3zU83eDQmBc41pDyxdevaqhLruPy9snGUNpg/msxZjYGRwmMVvV1JxdomOhm7pZqLtDeho6GhUEMkPb6qEUNE2OXxYetVAqhXbt8Mrf9iH7nJRTRglxJJgKSW0SxSDB8vgc0ULM2KESFJuuQUAMy4Gso3beYU79j3A3e+N5uWx7/DeOy769PF/68GDIuh56inD2fSnouuySfD00yIEWrAAqKkGp9OQi8bESG+GwuCii6BHDyMh1HUoLmaR+3DIECMhdzqNucGdrY9QJYQKRQA5eNDfbTMmRpIcQBro+vWTnrxj6d1b3FWefdbQVwaaqCipZN7TTGPWp59K5vb881x4gdOvkLlggfReHMv06SIV1TSpKt5+u6zPGRnGjMIzYexYYw5hXp7/7ntLsmeP0Q8aeng3Q+6fgu5wkIX7jkHTSOoWRELC2fn+iubp0QO6p8rOi1c2uqiF7tQUihbGVy7qcMA/n69FzxYDsUN0I4FC7ClRoJmMNUPR8oSFiTLno4+8rREakEIByWU7Yc4cet10Lm/9aj133+1v5K3rsuF59dV4q1E/htJSmer085+LxHT+fK9KFMqlOjiVxSIX9Z3npBBMJrjnHjLJJcPjIltczDfLnDQ0iInfOecYp3tko53NaVQlhApFAHnqKUObrmkifwypLJTJ81dddbye0iNl2bxZMpy2hsUiw55ee+34JojqarjnHoInjOaKkcZ2W2UlfPnl8R/lqQI+/DDcfLNU+CZNMl5fseLMdP02G5x3nnF8tqqE3urgnj2MffdOrA01HKQbR3HPHLTbGTpcXXpbm8xM6DEsEgtNODHRSBDL96W5DRkUiraFJyE8cMA9x277DnA5AR0XGnarE+LiSEgIvECkU3DFFbBli+g8j2XNGsxjR3HDyluY93yx3ygDkLEhd90l4ydO93LT0CBr1L33yubos8/6j//1UlHOUDbyC9ztJEou2jw33giRkUaVsKmJ2rxSVrnNpn1lo9u3S1XX11jm4MGz7z0QaNRdiUIRIKqqpHDmcSoLDobf9P5CqoIff3z8GwYOlG3Gxx+Xk9syt94qjX+jRh3/2oYNXPX3kZgPH3Tf4MgIiub8PTTN31zHd/xhdbX/WIfTYdQoo6B65Ij0+p0OxcUiI1m9Wiq6X30l/Rvz58Nbb4khwHPPwYMPSv/Iso9LWfZ+EXMbr+AX/JO7eFFmhdntmEKClaInAGRkQExaBOHmOlyY0YE99ODQB2f4n0ihOMuUlcleYEOD9DTZtVrYnUMQDQxiCyZ0SE4CzcQVV6iCUKvhMZx54onjZ/rqOrzxBmmTe/DPPs9w/31NXkWKh88+g1mzZDOzOXRd1qQnn5Qk8Pe/FyFQc2tjXBzMmVHMB45LeI1fEkup/Ec4tm1DIYSFwa23GgkhQGERixdJltecbDQszPDLq67u+HuHKiFUKALE88/7X2DGn1NC4m0zRR/ii9UqZbL162X+Qnth4EBYtQpeeuk4s5sE1xGmHHlHVr+KcvbvlxbEU5GU5D9IdvHiM9u1CwqC8eON42XLTm00uW0b3H+/7NC+/DK88Ya4oy5YIMOIlyyRRXvDBqkOlh6opHLXYYL1WmoIox4b5USBPRSCQwgORvUPBgC7XUwCusXVoQM6Jmqxs3r+wUCHplD44akOFhbKBpa2cwdmVwO/4++s5lywBkFcHFarvwGXohUwmyVT27lTLEGPpbIS0wO/4+pHB/D+L5f5VZ4Ajh6F3/5WNg89xmNFRbKxeNVVMkL4ww+bTz6CgsSh9PnnZe35dcy7ZLDPOOG886R1Q9E8d99NqjmfXuyWY0cdK/9TTl2dJH/9+xunNicb7eh9hCohVCgCgGeenqc6GGTV+fXh3/sPNgIYPlwG4/z5z8fvSLYHzGYZJLhrl6x2PsxmrmyB79kDuXuZ96/qE3yIP76Dlw8cgJycMwtpxAgjPy0uloTvRNTUiPr12H+W5nA4oCKvAg4cQMNFPMUAVBDJwejBEByMpsmO47EGBIrWITMTeve3oAFOTDiwsXxtSMfXAinaFZ6EMD8fIoPqYHcO/dlBGTEcJNVbHZw61T2oXtH6ZGaKxGfhQv8p9B6ys0m5fjIvHvgZf7ol3ztI3sOiRdIZcuedMibphReanyYFsoH44IPyrf72Nxg7Rse8c5s0Fvqi5KInJzUVrriCC1jofcpx6KjXj8A3ed+2Te7TOtM8QpUQKhQB4N13ZffXU53qGVnE+L1v+J/0+OOiifTtdm6vpKRId/1//iMXZaA/OxmI2+WxrIzv38oh95F3T5l9DRwoNt8eFi8+s1AsFv82kGXLTvwt33vPp3kfSeaSkmSwfZ8+Uq0cORLOPx+S6/bS6+Ay+rGTy/mEG3mLCCrYmzyOiJRwUlLkR+/fX6pVitYnMxO6DEkkBJGNgsaq6kHUbz/DXQWF4izhcEhi0NQkG1ZhB6V3cDgbeJ+rvdVBQI2aaAtMmya9hc8+2+wgSO3LL5h5TzofnvMI54/2b3qvqJBKVHMqlcRE6Z1fsEBUKZeff5Twz+dJL1yXLrIQ/vCD/5tUQnhq7r2XqfjcNFRWsHh+CeCv3Glqkt9DVSFUKBRnDV0X6aFn1ITF7OKGo89IX4iH2bPFPKajNYf87Gcitfnd78BsliqhB5eT+Q/tFPeYrSceB6BpMGWKcbx+vSG9OV2GDjWUNaWlzc+L2rzZ38l0wgSR6vz97/Doo/Bf/yU/xt13w6zgz4j+ci799O30Iptz2Mr/cC9r064mJCWG4GAxtbFYZHCxIjCkpYEtzEpiaBVO929cOZFsfH1ToENTKABRPLhcsmFot9Rj3rMbDZ1EjrCasd7q4IAB0m6uaANYreL+kpMj/fO+je8AjY3E/+9DPPNRGn+buJioqOYVCcHBcOGF0mXxnwWN3DlgJamv/bfIWhIS5L7grbfEpeZY+vYVK2XFyRkzhpRRqfTHMBBY9WU5NTWy4Rsba5yakwPJycZtWH6+cd/WEVEJoULRyixbJhcaT1UqyVTM5Q6f0RLh4ZJ1dFRCQ+Xn27CBicOrSaTQ+9Ln/IyKtbskY/v9741BXMdw/vmGgtbp9B/dcTqYzf6OpcuX+1/oa2pkV9ZDbKysxc3y0UesuvGfuHSoIpz1jOBxHuRo2nCIi/ee1q+frOXTpp1ZrIqWw2qVKm2PNM/4CRN1hPDtV1UBjkyhEDxy0YICiKjMA5eT3mTzNTPQrTZvdVCNmmiDxMdLj8GGDf6Db91ohUeY9vQ0PiyfxgXnGJPOhw6VrpBFr+7jkeSXGfm3SzHFx0rD+2OPyeedTNYeFCRaUsXpcd99frLRhqIKVvxHmjZ79jRO27NH7hVSUuTY6TRGSnVEVEKoULQyTz8tO8C6DiacTKn6mBR8dvwefti4AnVkBg/GvGYVV18XJHOCgAaCWMDlcuV96ikYMAC+/vq4t9rtMG6ccbxsWfM7d9XVstv65z9LE361T5vioEHeeysqKvzVN++95191vOUWjnOMA+CDD6i9+ibWuoaxmcF8xBXkkwJp6d4Pt9vhgQfgzTebbzVRtC6ZmdBrRJR7/IQZHRMLczKbH4apULQiTifs3i3rw5EjEFF2AIABbOPfzBQdoWYiJsZfJaFoYwwdKvKS994TeecxRP+whMfe7MJ/Mu5h4d2f81rQr7jktz2xD8iQpsJ//1tsyE+G3S4D159/XnaYL730LP0wHZDLL2dK8k7jWHex6AUZTOybEObkyH1aZ5GNqoRQoWhFdu6UzT6pDupENR3lKj7EKzAZMAB+9avABdjamM1c+uJUQob192o4P2AWjbg1Gvv3y6DdsWPhmWcgN9f7Vl9zGU8vhi/r18su+htvyJzDhx6S6txvfysN/Q6Hf5Xwm2+gsVHaQXylouPHn6CNc/58mD2bt12z+YBZbGAYVpoISu/iTQanTJEJIrNmeXNeRYDJzISQrrHEmCpxuZfAvXo6+Z/8hMnRCkULcPCgXJeKiyHI7CToqGwUlhJDDaEQJT1qV1xx/JhXRRvDM1g4K0v6C2y2405J/vB5Ym+8GF588QRDBo9h8GBRzixbJr0On38uPQvuvnzFaWK1knDvbAZj9IqsWW+msqTRLyEsK5O/5s5iLKNuURSKVuSJJyQZdDpBczYxrGkNQ3wuSrz4Yqdb6SMi4OIrbZDZAzJ7UGztwlIm+5/0/ffSsJeZKQODHn2UrhU76NfXkNF4zGUcDlGk3nGH9OH40tAgM6AefFASynfflWSyqUmqhytXwuuvG+fHxJxAKjp3LuWz7+TPzj/xKH+SsRJAWNcoiI0jJUU2bp94QlREirZDSgoEh2ikJ9TgcvcR1hLKpn+r8ROKwOLrLhrRVAq6i3T28RUXSkJhC8ZshssvD2ycijMgLAz++lfZDT7TGSEJCXDddTLctqAANm2SRWXixGYTTMUZcOutTAsyBkI2NbpY/thqUlP9Dd1zclSFUKFQtDBFRTKzzukE3eUitLGc6SwkGreN5fXXS3NcJ8TrlhcVBQP6M7fvo+jaCS5PmzeLBnTAAKa+eqUskiVH2bNH56uvJIF7//1Tf8/6eli6VL7ee08qhA8/LP9OHm655XhHUP2dd/nsug+4XP+ID5jlrTIFxUZgT4nm5pvFUHXs2DP+a1C0AiaTDKnv1Ufq8k7MODGzal0HM3BStCt0XRJCl8vdP1iVB0AU5eSSARFSHZw8WW0ytUsyMsQydPHiE7sBWa3iXvb44zIZvaBA5lNdf73YWytajuhoplyXhAnD4nXRu0WYTTrduxun5eTIpnV4uByXl/u3nnQkVEKoULQSTz8tSYjTCVpjIwPZwgjWy4sREdIz10lJTfXpCTSZ2WkfwbZ520+ZIA85+CmxO1bg+moh2e9v5o6rSzi4owp8HFtHjBAzl9/8RhS5xxIcLOqeXbtEZrpwoZicduly/Lqd+/QCbpvj4BH9v6kggmrcw6WiohkxIYx586QFJDj4x/9dKM4+mZmQ2DeWIBq8Cf36Q0nN+78rFK1AcbHI00pKJDkMKZL+wd30khMiZXiqGjXRzpkyRTY1n3sOeveWReZXv4LPPpP/AMuXi8P4kCGqz+AsE/P7WxmGYR6wvjiNsq/XHmcso2mdo0qotkQVilagvh4+/FAWemejE5urlqFsNKyPH3200+8Azp4N331nHL+3sS8DV6yQxppPP5Xd1W+/9btpN+OiL7v4NzOpbIxAa9SJrsrBbDFhiwnj1zdVcdVD/TCF2OjfX75Hfr5UahcuhOxsudiHhsLRo/KZ9fVyzqJFkiBOnixr+PoX1vD2u11wIv0adYTgxExwXARTLg3h1VfV+t1eyMgALSaGaO0gRXoc0MgeZ3cc2/cQPLBXoMNTdEJ83UUjg2rRqquIopy1jJKLVHg4ffp0jLG0nR6rFX79a/lSBI5evZg69EPWb5RDFyaWPbKCni+O9p5y4IC0mnTrJqpfgLy8jmkQpxJChaIVeOklqKwEp1OHhkZ6k80QNmOnTqah3nlnoEMMOCNGSOVm7145Xr5cbo6SU1ONxbOoSHZSFyzAtXgpbzf9nH9xC1WInkNHo4pwxjWt4pGiP5P65CF4OUIyuuhoCA4mxWZjTnAwc3rbOJgaz+L9PXl59UBoigZdQwfsWgOmmiYqak0seFdjwSs1cMi4XOpANeH06mtl5EVhzJ6tksH2RGwsREZpJIbXUlip4UKjjmB2/XsHQ1RCqAgA2dmyYVhQAMkO8bbXkZtUwsLAZGbWrONH3CkUih/PpD+P48lLnTgxA7BwTRRPW/YD6YAouvbtUxVChULRArhcxky7JkcjVhoYwQYGsUWefPHFjjeA/kfgMWV79FE5drmkF++ee3xOSkiAX/yCg9N+wV8ebGDr6iooKyO0vIZqwtBwkc5+XuNWgnDPoaislOpiM6QCIziHb7ifGBLYQX+cmGkqduEqLvTrL/AljhKGTI4leUw8ERGS0yvaD5ommw+pKU1srZSb7kaC2LCsgiF/CnR0is5GTY3cZJaXi0IhrEQMjg6QJidERBIc7O+srFAofjpRl5zPqNi5rC7pDcAmBlP/8hskJDzi9RPIyYELLpBNX5cLDh+WPzvaJnAH+3EUirbHggUiQXQ1OXE1NNGNgyRxhN5kww03+A/U6+RMn+6dPgHAJ59Aba1xrOsivZ09G7ZmBUFMLGT2IKJfV8Ljgzm360GSraVsYfBpfb9aQnidWwBIpIi+ZHEDbzGTTxnD96SQ73d+EA3cob3KzFsTSR4jnefnnivDaxXti8xMSO8Tgobu3R1evS0iwFEpOiOe6mB+PkSEuTAVFWChSWaaAkRGMGHCCWahKhSKH4+mMXV2gvdQR2PpW3n07ObwPpeTIypfT1dPQ4O/+VxHQSWECsVZ5vnn5U9nbT1mnIxiLf3ZgSUyDJ58MrDBtTFsNrjySuO4ulpGLYGMkPjVr+SvzGFcqzGZ4Jd3mJlzeygRE4bBVVey+Mb34LbbpKJ4EuYym1JivMe/4+8E0UgspSRSyHvM5m3mcBP/x3W8yweWa5n0yiwKEiXhDAmB4cNb7MdXtCIZGRCcnkQYxviJzSVd0R31gQ5N0cnwlYtGOEuhqQkdZD6txQohIUyfHuAgFYoOyoQ/nYfVR6S1qG4cPXO+9B7v2SO/nx19HqHSqSkUZ5G1a2HHDtAbGnA26SRQTAr5MhD1r3+FxMRAh9jmuPJKePNNmQ0IMv89NFRmCx5r99ytm4yKGDgQVq+Gl18GTGZ2NfXi0COv0u2ll+QfISdHtFj19ZJN1tez7WAkK1aNdQ+GdHFe7E6mp0VRnBPG7opEGp1NfBt8Gxfav6GfY7kMJXz4X7yVZ8xIHD3af2aRov0QFgbx3cOIs+RT1RSGjkYx8RQt30HijKGBDk/RSWhqkstTVZVIR9ObZNyEVy4aGUFkpMbo0Sf5EIVC8aMJjw9mzPBGVq6RGdBbGcgdnz4KEy8FzURlpbgAd+sG69bJew4dEt+DjoRKCBWKs8gTTwDo6DV1gIWRrCOSStIHRcHttwc4urZJXBxMmwZfujfoDh6Ehx46/rxZs+Duuw0Z1ciRMHeuDJoHcRK96SazDAQ8ZihgbS3864+A+74/Ohque2I02G9mcj7sflmeX2eew7n3QaSMACM/H/Z8I4+tVtRNWjsnLQ1Soh3sK5Y+wnpsbP38IFNVQqhoJXJzobFRri12O1h259GIlUoipEIYEcnUqarNXKE4m0z7dR9Wrs2VUiCwMz+S4OI8HAniKp6TA336GOd3xAqhkowqFGeJ/fth1SrA4aBJ1winkh7sZSBb0V5+Sa3wJ2H27BO/lpAgPjwPPODfU2OxwKRJxvF338mOe3PMny8jnzzcfLMxgD4lxbCUdjplYL2Hb781Hg8ffvzQekX7Ij0d0t1DiF2YcWHiu2/VLEJF6+EZN5GfD5HB9VBWhhMzXjPRiAglF1UozjLnz4zGFm/0kC9hKhmHjQU/J0dEQp41/+hRqKtr7SjPLiohVCjOEo8/LjMH9dpaXJgZzgZMuBh0TT8YMybQ4bVp+vSBoc0UaS68EN5/H0aNav59EycaBi8NDbBy5fHnbNsmIy08nHceDD7Gg2byZMPefeNGY2D0DvfYSJNJzGQU7Zu0NEjqHYmVRpzu5XDd3rgAR6XoLOi69A/W1IgZckRtPi40DuFuVrKHktTVolyMFYqzjN0O46YYO8y76EtM1ippM6H5AfV5ea0d5dlFJYQKxVmgshK++AKorcWFiWDq6M8OEkOqSHr+wUCH1y647TbD1jk6WnoIH3kEwsNP/J7oaH9d/5IlXgUIIDt6r79uHEdFwbXXHv85iYkwYIA8drkkgfzuO+OzBg0yZKSK9ktUFET1TiKacnRkHuHu2hQai8oCHZqiE1BQIGtFfr4YatmK8qghjEakl4nICK/dvUKhOLtMvbGL/CK6KXVGwIH9gLSuOBwd21hGXWYUirPAM89AXWUDNDTgxMIAthNEI4PuGAvx8YEOr10wfLiYyzz8MHz8sVT/TgffWV1FRbBli3E8b55U+jzcfLMY1jTHpElGlXDLFti0yXhNTQrpOKT1spEQXAVIH2ENoeR8tivAUSk6Ax65aEEBREboaEcKaMDqIxeNZMaMQEWnUHQuxp6rYY2P9h7vphfszQVkMzg3t2MPqFcJoULRwjidMPc9HWpq0QETToaxES0piYH/dXGgw2tX9OsHF10EEWcwHq5nT5ECeli8WP7cvt1fKjpuHAwZcuLPiYszpKS6Lv+uIP2Fp5hmoWhHpKdDt0SRBXkG1K//sjiwQSk6BVlZolooLYUIVznO+iYKSJYXzWYyB9rp0SOwMSoUnQW7HUZMNm42djCA2JJsqBSnupwc6NLF2CjOy/NXILV3VEKoULQwr78Opfl14HLixEwP9hBKDem3TCYyRk0wP9tomn+VcOtW2LcP/vUv47moKLjuulN/1sSJx8u1zjuvZeJUtA3S0iCjlwUNMZYB+O6H4MAGpejwVFZKZfDIETHECi3Lo4xoNNx3mOERTJ+hbtEUitZkwiURECZ9KS5MODF7q4Q5ORAcbIi8HA4xl+koqKuNQtHCvPpCvdd+SkNnFGth8BAGXZYR4Mg6D2PGyJw5D088cfpSUV+io2HYMOM4Pd1fMqJo/8THQ2yfBOzU4HLfjm/OT+hYW7+KNoevu2h4OGgF+TiwYfIkhO7+QYVC0Xqcfz4QF+s9LiIe9uWC7mLvXlkWOqqxjEoIFYoW5MsvYf/uBgB0IJkjxAbXYZk2kf79AxtbZyIoCMaPN45ra43H5557cqnosUyaBMnJIlu96KKWi1HRNtA0SBuRQBwyh8SFmYKmeEq3HQ5wZIqOTFaWGBgePQoRIY00FJdTRKL39UGjQ0hJCWCACkUnJC4OBoyN9EqDcsnAWeuAI4VUV0tFv6P2EaqEUKFoQZ797xKZdwCAJtXBSRPpPSSUYKVCa1WmTDG0/h4iI09PKupLWBjceSfcfz8kJbVcfIq2Q1qGmZTIagCcngH1C/YEOCpFR6WhQQwqCgvlOKK2gGLiseGQJ4KDmX5F2Ik/QKFQnDXGT7FClJjLuDBRTRjk7gVENtpRnUZVQqhQtBBb1tWzaYvxKxVDCV2TnSIXHRTAwDopcXHHzzK8+WZ/KalCAdJHmN61CZAbABcmVi3pYFOHFW2GPXvEpCo/X65H5iP51BLilYuaIiOYMiXAQSoUnZQJE/DKRjXAQTAcPASNjezZI20GnukUhYU+NYB2TqskhJqmBWuatk7TtC2apu3QNO1h9/OTNU3bqGnaZk3TvtM0rYf7eZumae9rmrZH07S1mqal+3zWH93PZ2uaphT2ijbD47/Yg+5yuY90BrMFbcYMQkJN9OwZ0NA6LTNninwUxCCmuWH3CkVyMqT2DcVCEy73bfnaXWdgbatQnAFZWdDUJGNxIiJ0HIdLKMOwux89Sic6+iQfoFAozhrp6ZDaLxyscvNQRCK6swkOHmD3blGTduki5+o6HO4g3QWtVSGsBybpuj4IGAxM1zRtNPAycK2u64OBucB/u8+/BSjTdb0H8CzwJICmaf2Aa4D+wHTgJU3TlG2jIuDUHSxmxTajETmKCnoNtkNKCgMGiIucovXp3h0eewwefBBuuinQ0SjaKmYzpI9KIgqxF3dhYldZAq6GpgBHpuhouFyQnS29SC4XRFBJfl0kdtyNzprG9BuVNl2hCBSaBuMnaBAr93SNWCknCvbmkp8vngQdsY+wVRJCXah2H1rdX7r7y7MNGwnkux/PBN5yP/4ImKxpmuZ+fr6u6/W6ru8D9gAjW+FHUChOypKnN9OAFZD/1P2sOZgnTwBQctEAk5QkswOP7SdUKHxJGxpLgtljLGOiSg8nd/HeAEel6Gjk5ckNZUEBhISA7Wg+1YRhRtQltshgJlxgC3CUCkXnZvx4vAmhjXoxfCoqRK+qZu9elRD+JDRNM2uathkoAhbrur4W+AXwpaZpecD1wBPu07sAhwB0XW8CKoBY3+fd5LmfUygCyldfuvyOuw2KhhA7UVGQmhqgoBQKxWmT3l2jW5xUaVyYacTKuk87iBZI0WbIypL+wcJCcS6uPlRGHXbv6+OH12C3n+QDFArFWWfgQIhODobQUEy4qCBSXsjNJSfn+ISwI0wparWEUNd1p1sa2hUYqWnaAOA+4EJd17sC/wf8oyW+l6Zpt2matkHTtA3FxcUt8ZEKxYlxOlmzz5D42Kklpr/sUwwapCpTCkV7oGtX6JEpq7qnj/DbVeqXV9GyZGVBcbH0EEaENXG42IqdGu/r0+ckBDA6hUIB0id43nl4q4T1BFFNKOTmsidHx26HmBg5t6YGyssDF2tL0eouo7qulwPLgRnAIHelEOB9YKz78WGgG4CmaRZETlri+7ybru7njv0er+m6PlzX9eHx8fFn5edQKDwULtrCYZckhDoQaypH6yIDpAYODGBgCoXitLFaoddw6eXSkaRwy4GYQIel6ECUlkoymJ8v/9/slUVU6BFYcAIQYatnzNVpAY5SoVCA2200JgY0DRv1FJII1VXsWVV43ID6jiAbbS2X0XhN06Lcj0OAqcAuIFLTtF7u0zzPAXwG3OB+fCWwTNd13f38NW4X0u5AT2Bda/wMCsWJWPSvAzQhrjEuTKQmOMBkIjkZEtRmr0LRbkg7L5U4SgD5XT5YG0t1Yc0p3qVQnB5ZWWIkc+SIyEXL95fh8rkNm3JOEdYgVZVWKNoCo0ZBcKgFoqII9iSEQN2ufRw+7J8Q5uUFKMgWpLUqhMnAck3TtgLrkR7Cz4FbgY81TduC9BDe7z7/dSBW0zgyv20AACAASURBVLQ9wG+APwDour4D+ADYCXwN3KXrurOVfgaFolkWrjQaPlyY6XWOGAIoMxmFon2Rfk44ScFlgCSE9djY9klOgKNSdBSysqCkROaWRURAfr7mLxedpUadKBRtBZsNRo8GYmOx0EgVEdRjgwMHyNleryqEPwZd17fquj5E1/WBuq4P0HX9Effzn+i6fo6u64N0XZ+g63qu+3mHrutX6breQ9f1kZ7n3a89put6pq7rvXVd/6o14lcoToSrrIIfjoprjA6EUo29TxqapuSiCkV7IzUVuifXA7K548TEt/+pCHBUio5AXR0cOCByUZMJwrQayupDsCKjTRIoZvAtwwIcpUKh8GX8eCAiEs1idbuNJkBjIzkfbSEx0RgpVlAgfcHtmVbvIVQoOhI731rvHSjsxEyyrRwiI8nIgPDwAAenUCjOiJAQGDIYzLjcc5E01mwJDnRYig5ATo64ixYUQFgYlO4txYQhcJrePRtTTFQAI1QoFMdy3nlgMmsQG4MNh1c2umfpAcxmY0C953e7PaMSQoXiJ7D0wxIa3fMHnZjJ6NYAKLmoQtFeyRiTSCRiGefCzM7CuA5hKa4ILFlZUFYGDgdERkL+IRehvnLRS4ICGJ1CoWiOqCgYPBiIjcVGPUeJpQkzBfvrqc4p6FCyUZUQKhQ/Fl1n6SZxIfTcL2YODkfTZBC6QqFof6RP7E4CMq7IiYnyplDyNh8NcFSK9ozTCbt3i1wUINTuorTKipVGADLIpefsEQGMUKFQnIjx44EQO7ZgMy5MHCUe0Nnz4kK6djXOUwmhQtFJqd68h+11GQDomIiigqDMVJKSIFipzBSKdklaLxvdIisBMZZpwMraD/YHNihFu+bAAakMFhSA3Q5l+ysJ0uvw+IlOD/0ObdjQgMaoUCiaZ/x4+dMUF0MQDYZs9OMtdOtqyEdUQqhQdFLWvbGdOsRh1ImJLhFVYLXSvXuAA1MoFD+aiAgY3KMakB5CHY1vlzUGOCpFeyYrCyorZYB1RAQc3t+AnVrv6xdMcYLZHMAIFQrFiejaFTIygNgYgt3GMjoaOXnBROT8QITbHLiiAqqqAhrqT0IlhArFj2Tlwloa3P2DLkz0yJCdovT0AAalUCh+MoPH2AmhDpDf7U27wwIckaK9ouuwa5chF7XboazCjA1xsx3IVrpcNjKAESoUilMxYQJgsWILtdCIlVJi2Esmzv97u8P0EaqEUKH4EeiOepbvTQU0dMCMk25D49A0lRAqFO2dtPHpxHoH1JvZVxGDo045yyjOnKIiKC+XhDAoCMqLGwlpqjTkonwN06YFNEaFQnFyJkyQP21xYh9fSAL12Mibu5JuSYaCRCWECkUn49CnP3DIlQKIrCzaVIk1OZ7ERLGuVygU7Ze089NIMomxjAsTdXoQO75uxyu9ImBkZUF1tUjJIiIgP9fhHUZvwsWU/kcgOTnAUSoUipPRpw/Ex4MlJgKz5vL2EeaUx9Ft91LveSohVCg6GWvm7cOBZH5OzHSNrQNNU9VBhaIDEBtvok9iGQAuNFyYWPlxcYCjUrRHsrMNuWhwMFSU6wTjAGAUa4m5aEwAo1MoFKeDyQTnnw+ayYTNbqYOO5WEs4ceJH/+T28LcH6+uAq3R1RCqFD8CL5drdGAzI3SMdGjj/QSqoRQoWj/aBqcN6wWEy5ANn2+X6ud4l0KhT/V1ZCXJ+6iZjNUVOiENFV45aIz+AqmTw9ojAqF4vTwyEaDo8VMsJBEcuiJ9avPSAoVN5nGRigsDFCAPxGVECoUZ0hjXiGrjvZ2OxBCEA0kDkoCVEKoUHQUep6bSCTG+IkdhyMDHJGivZGdDbW1MpA+PBwKDjQQ6pT/U0E0MMG+Hs49N8BRKhSK02HYMDGFskXawGSmkESKSKCyKYRue5Z7z8vLC2CQPwGVECoUZ8jWNzZQQRTg7h8MqiUoyk5CAoSGBjg4hULRIqRf0Jt4igBJCI/WhVGU1xDgqBTtiexsqQ4CWCxQXe4kxC0XHc8K7JPHiNOMQqFo8wQFyf5NUJCGFhxEJZE4CGYPPei28j3vee21j1AlhArFGbLmP8U4kMnzLsx0S5abRFUdVCg6DomDkugefASQhLARC2vePxDgqBTtibw8o3+wqgpCnFVuXYnbXfSCCwIYnUKhOFMmTJB+wqAwGyCy0d30olvWIrEURiWECkXnwOVi1dZw6pGLgYZOWl8pC6qB9ApFx8FkgnE9Crz9Xi5MrPiyOqAxKdoPtbVw9CiUlIDVCoUFLkLrSwGIoJKxrFb9gwpFO2PsWOkHttnNYLFSSCJ76EEU5YTu2gDI73xtbYAD/RFYTvaipmnvAKccvqTr+pwWi0ihaMOUrtzO1oZe3v5Bm1ZPXN94QFUIFYqOxvAxNoK211OPDRdmNu4IDnRIinZCUREcOSKD6V0uqKtqJB65S5zMUqyZaZCZGeAoFQrFmRAeLr2Ey5YBNhslTbFk0xsnZrpt/YKs86aDyUReHvTqFehoz4xTVQj3AHvdXxXApYAZyHO/dyZQfjYDVCjaEuve2uUdN6GjEWVvJCTUTFwchIUFODiFQtGidJ9oDKh3YmJvSSSNjSd/j0IBkhB65KLV1RDiqsWk5KIKRbtnwgQZIUOQFR2NfJI5SCpdK7ZDbi7QPmWjJ00IdV1/2PMF9AIu0nX9Wl3XH9R1/TrgIqB3awSqULQFvl/u8OsfTO0mC7yqDioUHY8u088hBbmrd2GipslK1vqqAEelaA/k50Oxe3RlRQXYG0QumkARQ9ik5KIKRTtl/HgxiTJbTBBko5AkMZbhEGzdCnTAhPAYRgNrjnluLaCmqio6BXpVNd8fSMbh7h+0Uk9KX3EbVf2DCkXHwxIdzvCYfd5jJxZWzD0cwIgU7YWsLLdUtA6a6p2ENMq4iQtYiMlqgYkTAxyhQqH4MSQmQp8+7iqhzUYx8eyiD104jJadBQ4HeXkiF29PnElCuAn4m6ZpIQDuPx8DNp+NwBSKtsaeuesoIAndLfwJNjuJ6x4OqAqhQtFRmTS4zDug3oWJ1d85AxyRoq2j67BnjzyuqgKLqx4z8v9mOl/DuHGqx0ChaMeMHw82G2C10GQKYjXnYqOBBGc+7NxJfb2hEGgvnElCeCNwLlChaVoh0lM4DlCGMopOwfcf5vn1D0ZEQEgIxMRARESAg1MoFGeFPuMTCUdkoi7M7NhnD3BEirZOdTUUFkpiWFsLNmctGpDOfnqxW/UPKhTtHG9CiAY2G7vpSRlR7Vo2etoJoa7r+3VdHwv0AC4Beui6PlbX9f1nKziFoi2xZoPZ2z+oA93SzWiaqg4qFB2Z1Av6kuAzoL6gKoyysgAHpWjTFBZCeTnU1ICu69jqRS46na9ljInqH1Qo2jU9e8q9n6YBQTaKSCSbXpIQ5h2C0tKOmxB60HX9ILAOyNM0zaRpmpplqOjwOLL2s6miu7d/0I6DhF7RgOofVCg6Mrah/elnygZkI6hRN7PmP+1MC6RoVQ4fhspKkYuaXE6CdAfglosmJcHAgQGOUKFQ/BQ0TdqAg4IAsxmHJYyVnC8JIcDWreTlBTTEM+a0kzlN01I0TftE07QSoAlo9PlSKDo0G1/fRA2huDCjA0E2jdgkK6ASQoWiQ2O1Mik91zug3omZbz4pDWhIirZNVhY0NYlcVHM2YKOeAWynK4dh2jR3WUGhULRnxo93G8sA2GysYDxxHCWGUnrv+pSBA1ztyljmpIPpj+FVoBaYDKwAzgf+AnzZ8mEpFG2LNV+X+8hFNcIiLYSFQVQUREYGODiFQnFWGTNWw5rbQANBuDCxcbO6oVecmOxsqK+XHkJrkxjKTGORvKjkogpFh2DIEPGQqKgAgoLYWTOAJizcx/8g42svBW1CYIM8A85E7jkWuFnX9c2Aruv6FuAW4LdnJTKFoq3Q2Mj3WVHehNBCEykZQWiaqg4qFJ2B7pMyiEGqgi5M7M6PwOUKcFCKNomuw7594HDIgc1VgwYMZrNUBqdODXSICoWiBTCbYdIk94FmojIoljWMNk54662AxPVjOZOE0IlIRQHKNU2LB2qALi0elULRhij88gdym7p5HUZDTQ7i0sVWVBnKKBQdn7Dxw8hA5hHqaFQ1WMnJUuMnFMdTXg4lJVIhNOlNBFOPhSZ6sAeGD4e4uECHqFAoWojp02VIPQA2G59xsfHiRx+Js1Q74UwSwrXAhe7HC4H3gQXAhpYOSqFoS6x5by9NWHBiBsBqDyIuXiRjqkKoUHQCundndLAxcteJmeXzjwQwIEVbJT9fJGQOB2jOJoKopxe7CaJRjZtQKDoYo0dDaKj7wGpllXWi8WJ1NSxYEJC4fgxnkhBej/QOAtwLLAe2A7NbOiiFoi3x/+zdd3Rc13nu/++eMw0DYNDZAHawiKJEioJIVavLkmwV21KsuMf2spO4XFtOu7lxHKfd6zT/YieOb/yLEjtOcZMsWbZkFauQkigWQSQBNoAESJAEARKVKDOYmbPvH2c4pLooETiYmeez1izOOVPwgLYIvHP2++7n1qdzy0VdDLGqMPG4t/dgZaXP4URk8hnD9ef3nLZBvcNzj4/5HEqmo5YWSKUgnbYEMikiTLCCnd6DKghFCkosBqtWnTwy7AstZ4DTBksUYkForR201vZn749ba//MWvv71truyYsn4i+39zibjs7NFYQljDFjQWmuf1DD4kSKw6qrqinFW/6TIcCOPRGfE8l0tHu3t1wU1+KQwiHtFYQVFd7lBBEpKKd/zpMOlfCLwK1w++1w333wgx/4F+wMncm2EyFjzFeNMR3GmIQxZn/2ODyZAUX8tPO7mxkmfqp/MJyhZo73i6CWi4oUj8orVzGHI4DXR9g1WMbIiM+hZNppa8sOlHEzlJDAgFcQXnvtac1GIlIo3vteCJysppwgP3/Pd7xi8PbbsxsV5oczWTL6V8B1wKeBVcBvAtcAX5uEXCLTwsafHiWNQzq7Q0uoLEpNjfeYBsqIFA+z9iIuoDl3PJEJsPGphI+JZLrJZODQIe8KobEuERJESbCQDrj8cr/jicgkmDED5s49dbx5W8T7UCjPnElBeCdwq7X2EWvtHmvtI8B7gF+bnGgiPrOW516M5paLBsgQqoxRWQnl5d7+MyJSJGprua5uW26DepcAT/7omK+RZHrp7YWBgexAGdebMLqMPTi4sG6d3/FEZJJccsmp+6OjsGmTf1neqjMpCF+rW0pdVFKQRjbvYsfY4lxBWMYoNXNLCQS8q4PqHxQpLldekiJICvAGy2x9XltPyCk7dsDEBGQyloB1iTDBubR6G5ZdcIHf8URkktx006n7ExPw2GP+ZXmrzqQg/BHwM2PMO40x5xhjbgR+mj0vUnA2/2sLLoFcQRgrDVBT5/0no/5BkeJTf9VSaugDvInDuw6WYK3PoWTaaGk5OVDGxck2G6xgJ5x/PpSU+B1PRCbJlVee2n7CWq8gdF1/M52pMykIfw94DPhHYCvwTbytJ353EnKJ+O65x0bIECCF1xTsVMRyewqrf1Ck+Jh1a1nGntzx0HiEAwd8DCTTyt69JwfKuERPHyij5aIiBa28HBobTx339norBvLJ6xaExphrTt6Ay4EngU8Bt+ANl3kie16koNjRMTbun5G7OhhhHFNWTlWV9ynQycJQRIrIBRdwBc/kDtM2wK/uP+FjIJlOOjpOXSGMMk4ZIzRwCNau9TuaiEyySy89dT+ZhCef9C3KW/JGM5D/5TXOn1wkY7L3F521RCLTQNdPNnHEnZUrCOPBBFWzIjiO+gdFilZJCTcvbecv97q4BHAJ8MzPB/j4/yj3O5n4LJGAnh5IJCzGzRAlyQp2EsDqCqFIEbjqKrjnHq8YPFkQfv7z+fP74usWhNZadUpJUdr4gwPAubmCMBoPU1Pr/Vet/kGR4nX+lVXE9o4xQhkuAba1nEnnhRSqHTu8otDNWAK4REhyDru8tWTLlvkdT0Qm2dKl3hYUXV3eFjT790NnZ/78zqifZCKvYuNGi0uACcIYLE5FufYfFBGcS9Yyn1ONg53Hy7xlglLUtm071T/o7Vyb9iaMNjV5U0ZFpKA1NHi3kzIZaG/3L8+ZUkEo8jKp/V1s6V9EgghgiDNEqiROdTXEYt4nQCJSpNaupYktucOJlOH5jRo1Wux27z69f3BCA2VEikwgABdf7BWFa9bA5z4H11/vd6o3b0oKQmNM1BizyRizzRjTaoz5ava8Mcb8hTFmrzFmlzHm86ed/4Yxpt0Ys90Ys+a09/qoMaYte/voVOSX4rLj37YyRiy3XLS8xKWi2iEUUv+gSNFbvpwbw0++ZIP6J+4b8DORTAP79p0qCCOMU8UAM+nRQBmRIrJ8ubfLzKxZcPCg32nOzBsNlTlbksA11toRY0wI2GCMeQg4B5gLLLfWusaYk9debgKWZG/rgH8C1hljqoGvAE14w2y2GmMesNbqp7GcNc892Ac0nJowWhXTclER8TgO11x0guAzaVIEcQmw6alxv1OJjzIZOHQIkgkL1iXGOCvY6X1ooCuEIkVjyZJT97u6vGXk0ah/ec7ElFwhtJ6R7GEoe7PAbwF/aq11s8/rzT7nNuB72ddtBCqNMbOBdwKPWmv7s0Xgo8CNU/E9SJHIZHiutRwXwwQRQqSw8QrtPygiOfHLz6eOHsD7QbZzf578xJdJsX8/DA97A2UMligJr3+wvh7mzPE7nohMkcZGqKz0Wofvuiu/NqefqiuEGGMcvA3tG4F/tNY+b4xZDLzfGPMe4BjweWttG1APdJ328kPZc691XuSsGHj8BXZPLCJJBIuh2gySCM6kutr7lGfmTL8Tiojv1q7lXHZyJPvjp380zJEj+t2/WG3bdmq5qEOGIGlvwqiWi4oUldJS+MY38rO1aMqGylhrM9ba1UADsNYYsxKIAAlrbRPwHeCes/G1jDGfMsZsMcZsOXbs2Nl4SykSz39vD0BuuWhppUN5uSES8a4OBjSGSUTWruUqnswdZjLw+C/T/uURX7W0nJowGskOlDmXVi0XFSlC+VgMgg9TRq21g8ATeEs9DwH3Zh+6Dzg/e/8wXm/hSQ3Zc691/uVf45+ttU3W2qa6urqz+w1IQXvuqQngVEEYqSnXclERean6et5dt4kA3nogF4f1Pxv0OZT4Ze/elw6UmUkP1QzoCqGI5I2pmjJaZ4ypzN4vAa4HdgM/Ba7OPu1KYG/2/gPAR7LTRi8Ghqy13cAvgRuMMVXGmCrghuw5kbfNDgyy8VADFkgSpYwRJkqrcgNl8mVzURGZZMaw5NIZlDIKZCecbc2jZhE5azIZb5pgMmEBlxIS3nYTxniNRCIieWCqeghnA9/N9hEGgB9aax80xmwA/sMY80VgBPhk9vm/AG4G2oEx4DcArLX9xpg/AzZnn/en1tr+KfoepMC1/8fz9FGT6x+siYyScCPU1EAk4o0RFhEBMOvWsuj+/WxjFQCdPSWkUhAK+RxMptSRI9DXBzY7PaKEMa8gXLECyst9Tici8uZMSUFord0OXPAq5weBd73KeQt85jXe6x7OUq+hyOk2/uQwUJNbLhqriZKOQUkJzJ+v/kEROc3atazj+VxBODERYMMGuPrqN3idFJSdO2F0FHBdAriESXn9g1ouKiJ5RL/iigBYy3NbvI/2E5QQIEOwRttNiMhraGridu7DYAHIWPj5fUmfQ8lU27HjVP9gODtQZjm7NVBGRPKKCkIRILF9Ly+OLM72D0aoNoOMRyrVPygir66igsuWDVCCtym9xfD0IwmfQ8lU270bkkkLrkuUBHPpIs4JXSEUkbyiglAEeOHftjFBmAnCuASoLk8znnSoqYFwGGbP9juhiEw34YvXsJj23HH7gZB3tUiKQiYD+/bBRNJCdkP6Fez0+gxWrvQ7nojIm6aCUATY+PAQcGq7idiMUqJRiMVg3jxwHD/Tici0dPXVXMvjucOJJPxSc6+LRnd3dqBM5mUDZdas0XQhEckrKghFkkk2tlUDXv9ghCTU1FBT400OV/+giLyqa6/lPfwUhwygPsJis38/DA0Bros5/QqhlouKSJ5RQShFb/TZbezPzMcCCSLUBocYpTQ3UEb9gyLyqhoaWL0smduPEOCZX6kgLBY7d8L4OOC6hEgRxGUZezRQRkTyjgpCKXrtj3UCkCKEi0N5HMbGDDU13qqf+np/84nI9BW+/kpW0Jo77joaZGDAx0AyZXbuzG5Ib10iJFlAJzHGdYVQRPKOCkIpem3P9wOn+geD8RjhMJSVwdy56h8Ukddx3XXcxEO5w1TK8POf+5hHpoTrwp49MDHhbTsSJeHtP1hbqz4DEck7Kgil6O3d7fX/nCwITXlprn9Qy0VF5HVddRXv5DHCpACw1vLzH4/5HEomW3c39PbiVYZACeNe/+C6dd4PDxGRPKKCUIpbKkV7d1m2fzBKlASJUDy3/6A+6BWR11VRwbnryihnOHdq87NprPUxk0y6jg4NlBGRwqGCUIqau3M3be4i0gTJEKQ8MMZYKkxNDQSD0NDgd0IRme6C11/NBTTnjnsGQhw65GMgmXT79sHICOC6BEkTJcES2jRQRkTykgpCKWpHntjDOCW55aLhUgfHgYoKrxgMBn0OKCLT33XX8W5+hsG7LJhJW+7/qS4RFrJduyAx7g2UCZNiKW3esuGLLvI7mojIGVNBKEVt74Ye4LSBMrGo+gdF5MxcfDGXRV8kQgIAC/ziRyf8zSSTxnWhpQVSE17/YIQE57ALGhuhutrndCIiZ04FoRS19u3jACSzBaEtKVH/oIicmUiEc66aSRWDuVM7dhgyGR8zyaTp7oaeHl4yUOZcWrVcVETylgpCKV7WsvdABBdDiiCGDJlIjMpKb6uJuXP9Digi+cK5/houZmPueOBEkN27fQwkk6azEwYHyQ2UiWigjIjkORWEUrw6OmibmEeKMGAoYQIbChOPe/2DoZDfAUUkb1x3HTfwCA7eZcFMxnLvj3SJsBB1dMDwMOC6OGQoY5RF7NcVQhHJWyoIpWiNPredw9QzQRiAcNQQjRqiUS0XFZEztHIla6v3U8J47tSj9434GEgmS1sbjI24gCVImhXsxAk5sGqV39FERN4SFYRStPY92QWQKwidaIh43HtMA2VE5IwEAiy/YR61HM+d2rsvwJj2qC8orgs7dkA67U2RjZBkJa1eMRiN+pxOROStUUEoRWvvVm8K4ARhLGAjESoqIBBQ/6CInLnA9dfyDp7KHQ+PB9m61cdActYdPQpHjpAbKBNl3JswquWiIpLHVBBK0Wpr98bDTxDGJUCoNEI8DvX1EA77nU5E8s511/EONhBmAgDrWn78n0mfQ8nZ1NEBAwOcNlAm6U0Y1UAZEcljKgilOPX00HZiFhmCuAQIksYp8a4Qqn9QRN6SefNomn+cGKO5U+sfTfgYSM62zk4YHrK5gTIVDDOXLl0hFJG8poJQipK7tZl2GnP9g6EgBBxDWZkKQhF565bc1MhMenLHXUcCHDvmYyA5q/bvh5ETJwfKZDiPHQQq4rBkid/RRETeMhWEUpS617czRoxktn/QCQcpL4dgEObP9zudiOSrwPXXchVPEsAbOjKaCPLMMz6HkrPC2uxAmZT3v22QFKvYDhdd5DWfi4jkKf0LJkVp78Z+4LT+wRKHigqYPRsiEZ/DiUj+uvpq1pmtRPCWilpr+cn3NWq0EHR3w+HDnDZQJts/qOWiIpLnVBBKUWrbmQJOFYThWJCKCm03ISJvU1UVTeclKePUHoSbn02drCEkj3V2Qn8/pw2USXgTRjVQRkTynApCKT4nTtDWG8fFkCaExRAujxKPq39QRN6+xe9azmyO5I57+xz27/cxkJwVHR0wNOiC9QbKVNPPbLpVEIpI3lNBKMVn2zbaWJLbfzAYsBAIUFmp/kERefu8/QjXEyQDQGLC4bHHrM+p5O3q6ICRYe9Sr0OGc2nFzJsHs2b5nExE5O1RQShFZ+z5HRyiIVsQBgiHLCUlXjEYjfqdTkTy3iWXcFFoOyV4vYMWy4M/GH2DF8l09sqBMhnW8IKuDopIQVBBKEWnfX034PUPZggQjgaIx9U/KCJnSTRK0zrnJX2EO3dkSGhLwrx19Kg3VMZmvCuEISa8CaMaKCMiBUAFoRSdtm3ep/YnB8pEsgNl1D8oImfLwltWMo8DueP+IYft230MJG9LRwf09QGuzQ2UWcFOXSEUkYKgglCKy8QEbQcjWCBJGBeHcHmYigr1D4rI2WOuv45LeJ4ISQCS6QC//EXG51TyVnV2wkB/BvAGytRxnNrAAKxZ43c0EZG3TQWhFJfWVva6i0kTxMXBwcUJB2lshJISv8OJSMFYtYoLy/YS49QehI/dP/I6L5DprL0dRoZODZQ5h12wciWUlfmcTETk7VNBKEXF3dpMO43Z/kGHSMjFceD88/1OJiIFJRCg6cpSyjmRO7V/f3bZoeSVkwNlMmmvIAySYRXbtFxURAqGCkIpKt3P7GeM2KkN6SMQj8OiRX4nE5FCM/+21czlIAG8QuLEaIDnnvM5lJyxnh7vZjPehFGHNOt4XgNlRKRgqCCUotK2ZQiAJBFcHCIljgbKiMikMNdfxzo2U4I3XjSZcXjk5xM+p5Iz1dEBA/0Wmx0oE2aC89mhK4QiUjBUEErxcF3a2ry7CaJYIFweZv58iMV8TSYihWjBAi6ceZjYadtPbHh0HNf1MZOcsc5O6D+eBiwOGWbSQzyWgRUr/I4mInJWqCCU4tHeTltyLi4BJghjgHBJkJUr/Q4mIoWq6doK4gznjo8e9XoJJX+0tcHI8MnlohmW0gZNTRAM+pxMROTsUEEoxaO5mTaWnOofdDJgDE1NfgcTkUI19/YLmcshgqQBGBsP8OST/maSN89a2L4d3NMGypzHdi0XFZGCooJQisbYphYO0ZDdfzBAJOwtFT3nHL+TiUihMtdczUVszW0/kXQd1IPfdQAAIABJREFUnnho3OdU8madHCjjZgfKBMhwEZs1UEZECooKQika+zYew2Ky/YOGcEmA+nooLfU7mYgUrJoaLlw8SNlp20+8sHGCZNLHTPKmdXbCwMCpgTLBkxNGdYVQRAqICkIpDtbS1uL9BjaOtwN9pDTIsmV+hhKRYtD0zhrKOYHJHg8MWF54wddI8iZ1dMBAbwqL1z84ix7KZ5bB3Ll+RxMROWumpCA0xkSNMZuMMduMMa3GmK++7PFvGGNGTjuOGGN+YIxpN8Y8b4xZcNpj/zN7fo8x5p1TkV8KQHc3bcMzsHhbTgCEy8KsWuVvLBEpfHNuX0sDRwhnt58YTwR44lfW51TyZuzZA6MnTg2UWUy7t1zUmDd4pYhI/piqK4RJ4Bpr7SpgNXCjMeZiAGNME1D1sud/Ahiw1jYCXwe+ln3uCuAu4FzgRuBbxhhnar4FyWvNzexlKROEyOAQDFgcx2jVj4hMOnP5ZTQ5L1LKKAATNsiGR8Z8TiVvJDdQJnNqoMy5tGq5qIgUnCkpCK3n5BXAUPZms8XcXwO/97KX3AZ8N3v/x8C1xhiTPf/f1tqktbYDaAf0L7O8IfuCN2F0nBIshkjIUlYGCxf6nUxECl5JCReuTFJ+Wh/h3p1p+vt9zCRvKDdQJjthNECGNbyggTIiUnCmrIfQGOMYY14EeoFHrbXPA58FHrDWdr/s6fVAF4C1Ng0MATWnn886lD338q/1KWPMFmPMlmPHjp39b0byTvdznYwRYxxvB/pw1LBggVb9iMjUaHrXTEoZJ0AGgJETrrafmOY6O2GwP4O1vHSgjPYqEpECM2UFobU2Y61dDTQAa40x7wDuBL45CV/rn621Tdbaprq6urP99pKH2pq9C9TjRAGIxBxtNyEiU2b2ey+hnsOUnOwjTDqsf8r1OZW8no4OGDyewsXgkKGW48xYWg2VlX5HExE5q6Z8yqi1dhB4ArgaaATajTGdQMwY05592mFgLoAxJghUAH2nn89qyJ4TeW2Dg+w9Wo4FJk4bKLNmjb+xRKSIrF5NU0krZXgfTk0QZNOTo1jNlpm2du2CsZFTA2UW0oG5WMtFRaTwTNWU0TpjTGX2fglwPbDVWjvLWrvAWrsAGMsOkQF4APho9v4dwK+stTZ7/q7sFNKFwBJg01R8D5LHXnyRNpbkBsoYYygrD7B8ud/BRKRoOA5NayzlDOe2nzhyMMPevb6mkteQGyiTPjVQ5hx2aaCMiBSkqbpCOBt4whizHdiM10P44Os8/1+AmuwVw7uBPwCw1rYCPwR2Ag8Dn7HWZiY1ueS/5mbaaWQUbwf6cNClvBwaGnzOJSJFpem2esKkCJICYGzU5fHHfQ4lr6q31xsoY08bKLOKbRooIyIFaaqmjG631l5grT3fWrvSWvunr/KcstPuJ6y1d1prG621a621+0977C+stYuttcustQ9NRX7Jb+ObW+hibm6gTCQC8+ZBNOpzMBEpKjPeeznz6CKGt+XEeMph44a0z6nk1ZzqH/QGyoSZYE1wB5x/vt/RRETOuinvIRSZavs29+NiSGQHyoRLHM491+dQIlJ8Fi2iqXJfro8wRYjtz4+RTPqcS16howOG+tJYAtmBMn3MWT0TwmG/o4mInHUqCKWwjY+zd79DBocUIQBKK4MsW+ZzLhEpPsZw4bogZYxg8IaVDB5Ps3Gjz7nkFVpaIDHm5iaMzqabskvO8zuWiMikUEEoha2lhXZ3EUkiuDiAoaYuyLx5fgcTkWLU9L75BMkQwbssOD5mtR/hNJPJwLZtYNPeiAKHDEvZg1mngTIiUphUEEpha25mL0sZI4YFgo63hZQKQhHxQ+17rmA+ByhlFIDxdJDNz2jN6HRy8CD09lrcjHcVN0ia89ihCaMiUrBUEEpBsy80s5clpwbKhC11dVBT43MwESlOtbU0zT5COScAr49w/84Ex475nEtydu2CoWMTuBgCuERIsrLsIDQ2vvGLRUTykApCKWjdm7oYJp7rHyyJGRobwZg3eKGIyCS58LIoJYzj4C1JHBtK8atf+RxKcnbuhKH+DJYAQdLUcpzZa2brB4eIFCwVhFK4MhnaW5NMECGDA0BFraPloiLiq6b3LyaApYRxAMbGYP16n0MJAK4LmzZBKukNlAmSpo5jzLhsid/RREQmjQpCKVx797J3Yj5JwtmC0FA7M6SCUER8VX3zxSwKdOa2nxh3w2x7fhxrfQ4mHDjg9RDaVBqbLQiX0EbJZWv8jiYiMmlUEErham6mjSUkKMHFYAKGuhlGBaGI+CsWo2lBH6XZ7SfSBDnWlaC11e9gsmsX9Pa4uK7N9Q9eQLMGyohIQVNBKIWruZlWVjCBt5FwNOQSjUJDg8+5RKToXXhVOREmCJEGYPxEmscf9zmUsGXLS/sHGzhE/UwX6ur8jiYiMmlUEErBGt/SSgcLyWT/b15ebpkzB8Jhn4OJSNG78APLMEDs5PYT47DxOdffUEXOdWHDBmBiItc/OJ+DzFijTxFFpLCpIJTCZC37XhgiQTQ3UKaqNqDloiIyLVRetZrG0AHKsttPjNsIu5oTHD/uc7Ai1tUFXV02WxAGCJGmgS5m3qLloiJS2FQQSmHq6qJteMZLJozWzI6qIBSR6cFxaFo2QhmjOGRIEyTRP8ZPfuJ3sOK1bRsc78lgXe9K7Sy6qQiMMuuuq/wNJiIyyVQQSmFqbmYHK0nj4OJgjKG6RgNlRGT6uPDaShxcSk8uGz2R4dFHfQ5VxB55BNzEBBmc3HLRhefGcKrifkcTEZlUKgilMDU38yKryeBggUh2oIwKQhGZLi786EoMlgoGMVjGkgHa9rh0dPidrPhY6+0/yEQKNztQZh4Habyx0e9oIiKTTgWhFCT7QjN7WZpbLhovcykrg8pKn4OJiGTFVy9iSewIpYzhkCZBFHf4BPfe63ey4tPZCYcOZrCZNBkcKhmkgkEWf/hSv6OJiEw6FYRSkI5uPcwQFa8YKGOMz8FERE4yhqZVEzi4lDFKGofEsRF+9SvIZPwOV1weeQSSIyksBgMsYj9VDeXUrJztdzQRkUmnglAKT18f247UkCZIBgeDpWpWiZaLisi0c83nVgJQzjABLMPjQQ7tS7B9u8/Bisxjj5GdLuoQJMU8DrL4ijn6EFFEioIKQik8zc08zzoAMjgEDMQrteWEiEw/q+46h3lVI5QyRpAUI5SRPjbA/ff7nax4WAsvvpCBVIoMAaIkmEUPjXes9juaiMiUUEEohae5me2cj0sAi8EJQlmZBsqIyPRjDNxyRzg7bXQEF8PoQIpn16cZG/M7XXFobob+3jQWcHGYx0GcyjiL3rnE72giIlNCBaEUnuZm2llyaqBMaYZQCOrrfc4lIvIq3vXlCwkEA5QzgkOGYVtGz55Bb+qlTLr77iM3XdRgaaSdOWtmESvVelERKQ4qCKXgHN+8n2PU5X64V1Y5zJ4NwaDfyUREXmnG3AgXr0oQY4wgacaJkjw2zM8esH5HKwpPPelCaiK73USKuRyi8ealfscSEZkyKgilsIyOsqF9FpZs/yAu8RkRLRcVkWnttrsX55aNGmB4IsK2pwfp7fU7WWEbG4O9rSmwlgwOMzhGJBqg8bZz/Y4mIjJlVBBKYdmxg81cBHgFoWMs8aqgCkIRmdauuGMm8doIZYzikOYE5fS2D/Pss34nK2wPPgipsZP9gwEWsY/w8oXMXaglJSJSPFQQSmFpbqaFc7EY7wphMEB5uQbKiMj0Fg7Dze+NZKeNpkkTZHQozUM/GcV1/U5XuB78mYXURHZFiWUZe1j4jnk4jt/JRESmjgpCKShjm1vpYl62fxCiEYhEVBCKyPR3691LCETClDLq7UlIOe3P9NDe7neywuS6sGl9ElwXlwBlnKDCGWPxrVouKiLFRQWhFJSO53vppzr7aW+GeAVUZG8iItPZ0mWGZSuDuWWjo5Ry9GCK59an/Y5WkFpaoP9YBvBaDOZyCBYtpPH8mM/JRESmlgpCKRypFM17S0kSzg2UKa/VQBkRyR+3fmYeMTNOiDQWw4lMCU/8+yHGx/1OVngefBAyyRQuBothCXuJr1pIba3fyUREppYKQikcu3ezNX0ekB0og0u8OqSCUETyxo3vjRGpqyDGmLcnIeV0beujpcXvZIXnkZ8lIJPBxSFImkV00HjzMoy2HxSRIqOCUArG+PPb2UcjAC4OJuhooIyI5JWKCrjy3WWUMopDhiQRDg2W8uxPuv2OVlC6u2H/nhQAGQLM4BiB+jk0NlX6nExEZOqpIJSC0bn+IH3UZAfKuARCDmVlKghFJL/c+okZxEoNQdLenoRUsOW+gxw75neywvH005AYyWS3m3CYzwHMsqUsXux3MhGRqaeCUApG5wsD9OUGyriUlXmj3GfP9juZiMibd/HFMGtJnBjjuT0JD7UnefGZUb+jFYxf3J8kk8rgZn8NWsZuZl++mJjmyYhIEVJBKIXBWva2G4aJZ/sHM8Srg9TXo/2kRCSvBALwrt+YQamTIEiGDAEOuPVs/M4O7Ul4FoyOwqanEoC3GX0pI9RUQ+Pls3xOJiLiDxWEUhASuzvZnZiP9RaLYoDy6rCWi4pIXrrldodYXSkBMtk9CSvYu6GX/fus39Hy3saNMDpwsn/QYTbdmGXLaGz0OZiIiE9UEEpB6Hy0jT5qcscm6BCvMCoIRSQvzZsHa66uyC0bHSNGx3AVzd/XuNG366lfZUiM22z/YIBF7Ce0Yglz5/qdTETEHyoIpSB0PtdNPzVYDBbACWrCqIjktVvvKqW03BDEG37SyQKa/3sviYTfyfKX68ITDwyRIYCLQ5gJ5pUcZ+EVDQSDfqcTEfGHCkIpCJ07TtCfHSjjYAlHDZGICkIRyV/XXQc188qzpUuGYeIc3DtOy+M9fkfLWzt2QE/Xqe0m4gwTXzqLxUv065CIFC/9Cyh5L5GAw50p+qnObTkRr3SoqoKyMr/TiYi8NbEYvPPOOCXBFA4ZUoTYw1Kav/Wc39Hy1tNPWRIn0oC33UQDh9Q/KCJFTwWh5L2DLxxndNSSJIzBegNlakK6Oigiee+WWw2lNREcMhjgIPPY+8Qhjh9O+h0tLz11/yAJN4SLweCyIHCI8vMXUlfndzIREf+oIJS8t+/xTvqoBsj2DzrEKwIqCEUk761eDUvXxAkADmlGKKNrvIYX/3GD39HyzqFD0NaSIIODS4AYY9QtKKXxnBDG+J1ORMQ/U1IQGmOixphNxphtxphWY8xXs+f/wxizxxjTYoy5xxgTyp43xphvGGPajTHbjTFrTnuvjxpj2rK3j05Ffpm+rIXW54bpz04YtQQgqIEyIlIYjIHb7whSUhbAwdtIfScraP7P3dqT8Aw9/TSMD3pXVjM4VDBEfEWDlouKSNGbqiuESeAaa+0qYDVwozHmYuA/gOXAeUAJ8Mns828ClmRvnwL+CcAYUw18BVgHrAW+YoypmqLvQaahw4dhqHOAfqpOzhfFBB3KylQQikhhePe7oXxmCQFcAlgO0UDvgVE6fr7T72h5Zf3Ph0lMeD8pLAHm0YVZuoTFi/1OJiLirykpCK1nJHsYyt6stfYX2ccssAloyD7nNuB72Yc2ApXGmNnAO4FHrbX91toB4FHgxqn4HmR6am0Feo7STw1B0higrNwQjcKsWX6nExF5+2bMgKtuiBIIBnFIM04J7Syh+e+f8jta3hgZga3rx0gQxSVAlHFm1FlmL45RWup3OhERf01ZD6ExxjHGvAj04hV1z5/2WAj4MPBw9lQ90HXayw9lz73WeSlC1kLLpjHS/UMMEcfgrZ8qrw7R0AABdciKSIF4z3sgVhEiSAaAVlaw86njJI8O+JwsPzz7LCT7R8gQxCVAKaPULq3RclEREaawILTWZqy1q/GuAq41xqw87eFvAU9ba9efja9ljPmUMWaLMWbLsWPHzsZbyjR05AgMNncwQBUOLhmCEHCIVzpaLioiBeXKK6FufhRjDA4u3cxmOB2l5a9+4Xe0vLD+kXESo14xfbJ/sGLVfBWEIiL4MGXUWjsIPEF2qacx5itAHXD3aU87DMw97bghe+61zr/8a/yztbbJWttUp1nSBau1FWhvZ4BqShgnRRjCIQ2UEZGCEw7D+94XwJREcEiTJsgOzqP5+61ouszry2TgmV8MkSCKBUKkmVU6QnhmtX5WiIgwdVNG64wxldn7JcD1wG5jzCfx+gJ/3Vp7+k+0B4CPZKeNXgwMWWu7gV8CNxhjqrLDZG7InpMiYy207HBhXzt9VBMmSZoghMLE4zB37hu/h4hIPnnf+yBWeWpPwt2cw4FjJfT/5Am/o01r27bB0JFRxrP9gzFGqZ1fxvz5EAz6nU5ExH9TdYVwNvCEMWY7sBmvh/BB4NvATOA5Y8yLxpg/zj7/F8B+oB34DvDbANbafuDPsu+xGfjT7DkpMt3dMNDaDWNjjFLmzRc1hnAsSCSiK4QiUniWLYNzVjqYcBiHNMeoZYg4zX/3K7+jTWtPP54iPTxKhiAZHMoYpfbcmVouKiKSNSWfjVlrtwMXvMr5V/362amjn3mNx+4B7jmrASXvnFwumsHhBOXectFQiHiFobYWYjG/E4qInH0f+hBsfT6KMzFCmiAvsIZ5Gx/gmv0dmEUL/Y43LT19Xx8JGwEggKU0mKRiyQwVhCIiWZrDKHnHWmhpAdrb6WY2ATJMZAvC6mpdHRSRwnXLLVBWGSQQMASwtLGEIeJ0fO2Hfkeblg4ehINtyex2E4Yo49TODFIeN8yY4Xc6EZHpQQWh5J2eHujvGoHuIxyjjhCpbEEYZsYMFYQiUrgqK+Ed7zCYkigOaYaJc4TZNP/nLkgk/I437Tz9pIsdGMztP1jKKDWLK2lsBGP8TiciMj2oIJS8410d3IcFjlMDwIRTQjQWIB5XQSgihe3jHwcTCeNk915t5gJaR+aR/P6PfE42/Tx97zHSGUuaIBZDzCSpXVGn5aIiIqdRQSh5xdpT/YNDVDBGjBQhbDjCyR1GVBCKSCG74gqYMTNAIOoVhR0sJEGE1q8/4ne0aWV4GF7cNJHbbiLCBKGKEiqqgyxe7Hc6EZHpQwWh5JXeXjjek4F9+zj+KstFo1HUFyIiBc1x4N3vBiLestEEUdpppHlnGDZt8jvetPHMM+AODJGgBEuAEsaoqY8yZw6UlfmdTkRk+lBBKHmlpQU4dAgmkgxSgQEmAiUEwg41NdDQoL4QESl8n/oUmKCDEwxggG2sopMFDPzdv/odbdpYf38/NpEgQZQMAUoZo3ZpjZaLioi8jApCySvectE2JgjTzWwsMB6ppKbGEAxquaiIFIfGRliyhOxwmQxHmMMYMTb/5CDs3Ol3PN+l0/Dso6OkCZImSJgJgqURaueEVRCKiLyMCkLJG729cOwY0NZOP1U4ZEgQZcIpyfUPrlrla0QRkSlzxx1AKIRjMqQJ0soKnk1fRO/7fgvGx/2O56vmZhjpHc31D0ZJEqwsp6ZGHxyKiLycCkLJG62twNAgHD/GKGUYYJBKCIWYMQPmzIELLvA7pYjI1PjEJyAUMjixEhwytLKSNA73716KvftLfsfz1fqHTsDISG67iRij1MwvY+FCCIX8TiciMr2oIJS8cXIzeovhIHNJEiERLKesPEAs5g1ZUP+giBSLykq48EIgEiYcgkEq6GUGB5nH5m9vgXvv9TuiL6yFp+/rByBBCQEyRKIBahpKtFxURORVqCCUvHDsmLdklLZ2RokxTgmDVOSuDtbUwCWX+J1SRGRqfeADAAZTVkrAeMNlLIZHuIHhj38BDh70O+KU6+yEQx2pXP9gCQmIx6mtRQWhiMirUEEoeaG1FUiloLOTJBFShBgjBuEwdXVw000QDPqdUkRkat15J5SXAyaAUxajg4X8khsYpJIHhy7HfuCD3oSVIvL0o0kYHmacKC6GSLZ/sKEBZs70O52IyPSjglDyQksLcPAApFMcYQ7DVIBxCEYc5s6Fq67yO6GIyNQLh+Haa737JhTEjZXRxTzu5T08yvXsfKYf/uzP/A05xZ764VGwLgmiAMSCaaobSryprGorEBF5BRWEMu0dPw49PUBbO2DpYAEjlEE4RF2d4cYbIRLxO6WIiD+++EVYtMi7b6MxJoIxxojxMO/kD/jfnPjTr8NTT/kbcoo8+yxsf9ECkCBKjDFMRTm1tUbLRUVEXoMKQpn2WlvxpgS0t+PiMEwFFgPhMHPmwPXX+51QRMQ/K1fC7/wOXHQRRCIGyspImBgAW2jiFu7n4Pt/F/r6fE46uVIp+JuvZWBokDRBUoSIMQbxcmprYfFivxOKiExPKghl2mttxftFZnCAw8zmBOXeA6Eg73sflJX5Gk9ExHe/9mvwrnfB5ZdD3YwAxEoYpwSAPSzjfT3/wM9v/kesa31OOnn+67/g4LNdkE6TIEoVA0QDKZzyMpYty/ZaiojIK6gglGmtvx+6u4H2diIk2cjFWAIQClFVFfA2ZhYRKXLGwKc/DStWeFcKz10Vxg2XkMRbT3+UWfzxppv58k1bGB31Oewk6O2F7/xFj9djACQJM4fDUFVJTa1h6VKfA4qITGMqCGVaa2nJ3mlvI0CaPmq941CISy/1tpsQERFvwMwXvwh1dV5P4RXXhHGdMCnCpAlygnIefjTAB9415K28KCDf+KNextsO544XcIB0NA4zZ1FTo+WiIiKvRwWhTGutrUAyCQe72M4qXBzvgXCYT37S12giItNORYXXTxiLQXVtgEuvCBAkQ4YgI5STsg6HN3bx8Y9l+O53wXX9Tvz2NW8Y5eHv9YL1vplyhqkzfYzOXQ4Bh5kzYcECfzOKiExnKghl2hoYgCNHgI4Oou4Im7jIeyDgMGOWwxVX+BpPRGRaqq+Hz38eHAdqGkppXBaggkECZBikEptMkOno4pvfhM9+NrfKMi+5Gctff7AZkoncuXfxC5Kr1mIjJTgOrFoFoZCPIUVEpjkVhDJtnb5cdJgKhqjyjkMhbrpJ+0mJiLyWc8+F3/gN737D6jpKq6PM4ijlnGCMUug7Dv19bNoEd90FGzb4m/et+smnHmbvwWjueBXbKL/0PE5UzQOguhqWLfMrnYhIflBBKNPWye0mbFs7m2nKnY+WOdx6q3+5RETywZVXwi23eFfHZl84h2Q4Th3HWMh+Mjhw4AAkEwwOwhe+AH/7tzAx4XfqN2/w8a3807+eKgYNlvcv2MSzCz/IiRPeudpatP+giMgbUEEo09LgIBw+DPT0MDgaoouG3GO1c8KsXetfNhGRfHHnnbBuHdTMCFK6vIHjzCCAy238lCr3OOzvyPXe/dd/wcc+BocO+Zv5Tenv51t3PM6wPbWXxLtDj/DQVf+HRCpIIgHBICxfDrNm+ZhTRCQPqCCUaenkclHb1s5RZjKAN040HDFcdnmAWMzHcCIiecIY+NSnYMkSmLu0FDNnFgeYzy7O4U/4KpeOPQqHj+Sev3ev9/zubh9DvxHXZfd7/5D7Bq/OnSpnmLK73k3vRBV9fd65VavgvPPUXiAi8kZUEMq0dHIket/uXo4wB4v3E72yymiYjIjIGQiH4e67Yd48mLmiBsrj7GQF/8mv87/5A+7u+T2Co4O55/f2wm//NrnCarqx/+dr/NVTa3M/FwAuv2iCh46sYudO6OmBuXO9m5aLioi8MRWEMu0MDWWXLI2N0dETY4RSAEKkiNWVqiAUETlD5eXwpS/BggWG6OJ6CIbYwOV8j4/wAf6Lf+t9F9Wlydzzu7q8onB42MfQr+bJJ3noj55hO+djgQnCBEpL+HnqBnp6IJ2G0lLv6mBVFZxzjt+BRUSmPxWEMu2cXC461NLFGCUcZwYAFeFxFiwJ09DwOi8WEZFXNWeOt3H9gsYQZt5cXBz+hU+ymQtZ3v8s/5D+TcrLbe75+/bB5z4HY2M+hj7d0aOMvv/jfN1+PvuzoY5jzCC9oJFU2vt1JhCAm27yeic/9zmIRt/gPUVERAWhTD8nl4u27UgQJE2SCA5pyqpCXH65v9lERPLZihXeHoU188pgxgyShPkDvsYgcZY++2/8/ep/o6Tk1PNbW70iMpl87fecEuk0w3d+gt/r/RK7WMEAVUwQoqKhjJSJYAxUVnrf2x//MaxZo70HRUTeLBWEMq0MDXlLlUZHXLp7A4xml4tWMIyprFRBKCLyNl1xhTc4JlRfB7FSeqnjbv6ONA7n/8On+NuP7XhJMbV1K/z+70Mq9frvay2Mjp7drSushYMH4Yd3/og/2nADP+V2Mid/dSktI1RZxsyZ3tLQm2/29l7UEBkRkTMT9DuAyOl27vT+bNs8SDzTzyEaCOBSHhglVlfK6tX+5hMRKQR33QW7dgW4b2wutLWzxW3i63yB30n/LWs/cxFfu+tb/E7Lx3CzxdeGDd6Vty99Cfr7vYEzx497t5P3+/ogkfCWaX7sY3DZZW89XzoNO3bAxo1w5Kk27E/beZYbcbODZIIRh/pzy1nc6C0TLSuD3/xN776IiJwZFYQyrbS0eL9QHGxLMpsxhqikkkEClXEuudRoCZCIyFlgDHz5y7B7d5hd4/XYgwf4MXcwnwOcm9yJ/e53eWd8hH+PfIJUKEY6bfjOd+Chh7ytHF5PIgHf/rY37fM97zmzK3ajo14RuGlTtndxaBDuv58DzOcI9ZQwTqmThIVLWNxocgXgJz/pDZEREZEzp4JQpo3hYW9p0P79YIaHGKcEgyXOMFTM03JREZGzKBSCv/97uPPOCobG6hg7fox7+Dh1HPeeMAzz2UxLaA3ESsFx6OryNnx/M9M777vPKwo/+ck37uc7ccK7Crl582lLU9Np+Mm9hBODtHMpMzmKg8vw7BUsmh/KFYPXXAMXXviW/xpERIqeCkKZNnbu9H4R6NgzQTzRw3HqKOcEDhmIx9/W8iMREXml2bO9K4V/+D9nMRGJ0H00QDCTpoIhAljm0UU6FWL30HKIlkDknzh1AAAeyklEQVRJlI6OAGVl8I53QE0N1Nae+hPgnnu8Ag/g2We95aRf+IK39cXLDQ7C+vVen2Im87Jsz93LJUe+yUbWkSKMg8vErLmEK2LU1XnPqa+HD35w8v5+RESKgQpCmTZaWqCzE1KDJ4gzzB6WM4tuKC1lxfkhqqv9TigiUnhuuAE2bzbce281qXgFB3urKOs7wEL2s5IWbuEBnuVSHkncQDBjCM6dzchIJcuXGz7wgVe+37x58Dd/A93d3vHevfAnf+L1H86Z453r64Onn4YXXwTXfenrlyyBK4d/xryn3k83s/l3PgKAjVfQ78xg3TLvecEgfOYzEA5Pzt+LiEixUEEo08KJE9DR4e17FTgxTIogURKESEPFDG1GLyIySYzxNqF3HOjrc4hE6gkcC8LDbYx1ldLDLO7gx9RynJ+m3gP790E8zt/95TxKS6PcdttL32/GDPjKV+Ab3zg1KKy3F776VfjQh+DoUW9gjLUvfd0558CVV0L9yB5o8irN/48vMEEYwmH6KxZRP9sQi3nP//Vfh7lzJ/kvR0SkCGgel19++ctXro8pYjt3ev2DiXGXipHD9FFHBYPegxUV6h8UEZlE1dVw993e9NH584GZM+EjH4Hbbqe3dBG/5EYmiDCfTsaJYoeHYWcrf/6bXTxy//gr3q+0FH73d70CD7wBMa2t8NnPwoMPnioGjfGG1Hz2s/CBD0B9/ATccQeMjLCJi/gV14AxjNUvIeU6LF7svW71arj++qn5uxERKXS6QjjVJia8XX6/9S34wz+Ev/gLvxNNCzt2QFsbMDZKhdvPAAuIMAGhEDVzYyxb5ndCEZHCFolAU5N3O3YMmpsNzeXnMbJ0KTz9NHbTJpbb3XQzh4PMo8SOETvax5fvPE7sjwa4/MtXv2SkaDDoLUfdtQseeeTU13nhBRgdTPHrl3RwZelWare+CN/f5T1x/35wXdI4/DW/C0C6fh7HR0pYtcq7illR4e2jqP0GRUTODhWEU+nwYe+Tz40bveO//EtYtw5uvdXfXD4bGfEGD4yOestFHTLY7F5TxCu47DKjvaVERKZQXZ1XzF13HbS1RWhecz27n14Fv3iYqw48yWNcRxcNjFBGOJXit77i8O0H/geX/ftvYZefQ2cnPPmEZf+OUWLHj3NR+Tgv7C3HTSSpTvUQaOniyAMbiPN/gVfueP8D3k8HC7GV1Ry3tVRWwqxZ3mOf/vSrD6gREZG3RgXhVAoEvKkpp/vwh2HLFq+Lvkjt3OkNHQCIjx4hRJooSe+ElouKiPgmEIBly7zb2K0z2PahD9P8/2/l2h89x8MjQY4yiwlCHKeWD2y9m8+f+49UrF7Igd4Sb7xoMgHAfNJcxiGeZy3jeE2Am1hLHzV8ka9TwXDua/ZRzf/l0xCJMlw9n8SQ4aKLvMduvvmN90EUEZEzo+suU2n2bPjhD2kPLOUBbvHODQ/D+97nXR4rUg8/DENDwESSyvGjwMlJA4ZgdTkXX+xjOBERASAWg0suNfz2PU18/oXf4H/d2sIsenOPTxDmm/a3aW524fAhSCYIM8EVrOdL/C2f4B7+kv9FPYdzr9nHYv6EP+EQ9blz34z/EWNV9SQXLGFgyGHBAigrgwUL4M47p/AbFhEpEsa+fMzXZHwRY6LA00AE76rkj621XzHGLAT+G6gBtgIfttZOGGMiwPeAC4E+4P3W2s7se/1P4BNABvi8tfaXr/e1m5qa7JYtWybnG3sLRkbgw5e207VjkFt5gN/na16v3Ic+BN/7XtE1RYyOwrvf7X2QHOg/xjVHvsezXEaGIJSXs/ZDy/jWt/xOKSIir+b4M3v44K3D7O2vIUkUC0RIUkM/MznKLI4SJEMAF4PFYMkQoIXz6QvPgnAYEwkTLAlxwfkutQvLeXpjGNeFI0e8K5RXXukVo3/+597nqiIicuaMMVuttU2v9thULRlNAtdYa0eMMSFggzHmIeBu4OvW2v82xnwbr9D7p+yfA9baRmPMXcDXgPcbY1YAdwHnAnOAx4wxS621eTGu01pvL6au8GKo2s8DA7eyh2X8Fb9H/fe/Dxdf7G2qVCSOHIFvf9srBgHiYz0sopP1ZMfSabmoiMi0VnvZMr6/y/LJdx3h4Iv9jKcdwFvn0ctMes1sKIlCNJrb2J5oFBuOkOgPeBvYW2AMjmyEmjaIx6G/H1IpOP98bzjNRz6iYlBEZLJMyZJR6xnJHoayNwtcA/w4e/67wO3Z+7dlj8k+fq0xxmTP/7e1Nmmt7QDagbVT8C2cFem0t+wFjLf2JRplD8v4EN9nA5d500efe87nlJMvnYbHHoN/+Ad49NHsSddlyfAW+jht93kVhCIi017dDMM/3V/PrKuXUza/lrKGagKNjV6z35oL4JwVsHCRV9FVVkG0BBMIUFPjbXdxur4+b5/CEyegshLq62HtWnjHO/z53kRE/l97dx4fVXX3cfzzS0ISthAggIRNQZbiBhoUrVallipVoGqBFtEWWpG61/Vxq6I+VlyxWoUqKGKtqBSx6qtUBOqDUAERlUU2o+w7BBQISc7zx7nDTDBRIMnMJPf7fr3mlZkz95577v0lDL85554TBnGbVMbMUvHDQo8GngJWANudc0XBJqth/00ELYBVAM65IjPbgR9W2gKYHVNt7D5Jr1Ytv1jv8cfDQw+lsq9dO1i8mJ0l9bmOx/ntvme5/KJfkDJ/nl8DqgZauxYmTvQf+B9+6IfQpqVBy1obGVTyPH/if/yG6Rm07pBJ69aJba+IiHy/3FwY9Wwajz7ahLVr/YiYkhL/M/IoKfHbxpY3bQrbt/t1aCPlRUXQsCGccALk5MDgwaG7m0JEJK7ilhAGwzq7mFk28A+gU1Udy8wuBy4HaJ1kGYUZXHghdOoEt9xSm3W7j4KVKwB4lt/y2bpjue+iIWRPn+QzpRqiuBimT4f//Md/6C9aBBs2+A/9Fi3gzDXv0YwNbKGx36FBA04/Xf8DEBGpLlq3hscfP7x98/Ph0Udh27ZomRkMG+YXuRcRkaoT91lGnXPbgWnAqUC2mUWynpawf+qxNUArgOD9BvjJZfaXl7FP7DFGO+fynHN5TZo0qZLzqKjOnWH8eDi1V0NodsT+8tl0Z+DMYSwc+kQCW1e51q6Fp5/2CWFJCaxeDV984UfNtmkD7Y92DP7iTmYSMz5Uw0VFRELjyCP9Pfax3+H27euXuxARkaoVl4TQzJoEPYOYWW3gJ8BifGJ4cbDZZcAbwfPJwWuC999zfjrUycAAM8sIZihtD3wYj3OoCg0awMiRcPkfm2P16+0v30AzfjvmVF6/aRZxmAS2yhQXw9SpMGqU7w0Ev7xEfr7vIc3O9pMHXPvTJaSvXsn/RRJCS6FOs3p07ZqwpouISJw1agR33eWX573iCvj5zxPdIhGRcIjXmMTmwAvBfYQpwATn3D/NbBHwdzO7D5gPPBds/xzwopktB7biZxbFObfQzCYAi4Ai4MrqMsNoeVJS4PJhqRzbqil3XLSFgsIMAPZRiwceTWHBN5u57ZEcMjMT3NBDtG5d9F7BiNRUf69Iy5bR19deC40nvclWGrKQY/wbWfXpfloqtWrFv90iIpI4GRnQs2eiWyEiEi5xSQidc58A3+rvcc6tpIxZQp1ze4Ayl591zt0P3F/ZbUy0085vxPhXM7il7+csdsEYmZIS3h6znqUbGjDi0VrVYoKV4mKYMcM/IhMIgB8i+/nnlOrxvPRS6NABeOstZvLD6BsaLioiIiIiEhdxv4dQypfbO4/nHivgQiZGC/fsYfl7XzFokGPGjMS17WCsW+fXFZw2LZoM1qkD/fv7WeNWrIhue/bZ0KMHvstw5szocFGABg344Q8REREREZEqpoQwyaRfcwW3XbKKP3IP6RT6wm3b+HrlRm64Af78Z98Ll0yKi+G993wyGDtE9Jhj4Jpr/ALDU6ZEyzt08L2DAEyZQlGxn0wHgMxMOnfJoHHjuDVfRERERCS0lBAmGzMYNYoLjvuS5/k1LSKTqK5eDbt28sILcOWVPslKBuX1Cvbr53sG16+HsWOj2zds6JPE/StqvP02H9OFrwnmFddwURERERGRuFFCmIzq1IGJE+nQYCMvMogzeB9wsGIl7Ctk7lwYOBA++SRxTXQO5szxM4iW1St43HF+RtGRI/1wUfBJ4HXX+dlVAZg9GyZM4H3OiFbQIFsJoYiIiIhInCghTFZHHw3jxpHFTh7hBn7PX0gp2gsrV4IrYdMm+N3vYMIE4r40RVERvPEGTJ4cHb4a2ytYt67fZuTI0osMDxkCbdsGL5YuhfPPh927o/cPpqbRqHVdOnWK6+mIiIiIiISWEsJk1rs33HYbKTgGM5YnuYrsXathtR9GWlwMI0bAvfdCYWF8mrRjBzz7LMybFy1r1w6uvtr3Cpr5BPX552H58ug2555LtOdv/XpfsGULq2nBl7Tx5S1bcvoZKaTot1JEREREJC70X+9kN3w4nHMOACczh5cYyLEbp8K26E2EkyfD5ZfDxo1V25T8fHj6aVizJlr2ox/5CWLq1YuWTZ1KqRlRO3eGAQOCFzt3ws9+Bl98QQnGG/Tx5c2bQ06OhouKiIiIiMSREsJkl5oKL79MZBHCZmzkr/yOi1aNhD2792/22WcwaFDV3FfoHHzwgZ8c5uuvfVl6uk/yfvITSvXoLVkC48dHX+fkwFVX+dNg3z64+GIKPlrGOAbRhzcYy2+gcWPIzSUtDU45pfLbLyIiIiIiZYvLwvRSQTk58NprfsxlYSG1KOJ/9g2n47atjMh9jCLnw7hli+8pvPVW6Nu3/OoKC2HzZv8oKfFDPuvXL3vbfftg0qTSiWbjxvCrX0HTpqW33bIFnngiel9hejr84Q9B3c6xrN/tvDKlG+9wF3vJ8BtlZUGbNoBxyin+/kMREREREYkPJYTVRbdufhHCoUP3F1249knatdjDTRmPs3WPz6SKivwo0w8/hAsv9Pf8RZK/TZv8zx07vl19mzZ+aGfnztCxI9Su7SeE+dvfSs8i2rEjXHwxZGaW3r+wEB57zI8IjRg6FHJz/RqFf79hDh993K/0TnXq+GzUUsjLg1tuqehFEhERERGRQ2Eu3lNUxlleXp6bO3duoptROZyDIUMoHDuezeSwiSZsJofl1p4xjW9mVUprilza/h66Ro2ga1fIyDi0w6Sk+KUhNm/2HXiNGvkhnz16wFln+YljDmzW00/DrFnRsh49/HavvgobPt0Iq74qvVNGBhnHd+S83un07w/t2x/y1RARERERkYNgZvOcc3llvacewurEDJ56iikz6vPKyph4Ojh68yz22C5Wp7eDOrXBUti6FWbOhJNOiln7L0Zqqv8ZSSDBJ3fr1sH8+dHlLGrV8olgQYGfObRt2+i+AO+8E00GCwpgzx4YPdoPN2X7tm8lg83Tt/CLe7vQd2g6WVkVvioiIiIiInKYlBBWN7Vrk/PY7TB4HmzZvL84hRKOdwvI2rudxXuPwdWujWVmUlycwoIF/p7CHj2gSRN/S2KTJpCd7Yd6Ll0KCxf6+wTffx+2b48eLjMTjjrKDzd97bVoWceOfnhp3brRYaX5+bBrlx8mmpIC7Nrp100M5DGXARmT+NH04aR0bxaf6yUiIiIiIuVSQlgNNTmmKZx7Lmlr8slZ8B4525aSw2Zy2EwTNrGOIxi5+1q+3puFNW8OjZswc2YqRx7p14KP7d3LyPDrBzZv7petOO00PznMpk2+h7BevdLbg+8BnD8fpk/3w0pXrfJlKSm+npQU/Ayoy5eT6XbTi7fpzyu0S/0SXn8Dup8cx6slIiIiIiLl0T2E1VBRkZ+8JTsbrLgIxo2Du+/2mVlgLc25kYdZSgdIqwW5fp2/k09J4YEHSg8hXbLE9/7t3etfm/nlJE4/3Q8BXbwYPv3UDz9dtswnjFu3lh5qCtCsmZ8nhn2F5C6bQb/dL9CbyWQRzDTz3HMweHCVXhsRERERESntu+4hVEJYU+zdC6NGwX33+e49YA8ZDOcuptDTb5OeAbm55B7biEceNY4+GqZN84+I2rWhf38/THT5cpg71z/mzfNrEBYVwe7dvkdw925KTWDToAGc3GUvA6ZdwekrXyCFmN+t4cPhzjvjdDFERERERCRCCWEYEsKIXbtg5Eh46CHYsQMHvMgg/szVOILpQTMzSW/dnDP6NiI93Zc559cNbNXK9wjOm1f28hSxnPMJYu3a/h7Ffn320vbK80pnmOAXR3zmmW9PTyoiIiIiIlVOCWGYEsKIrVthxAi/Uvzu3XzAqdzO/ezEr0C/jWy+ScumU+cUCus1ZNcuIy3t4HK29HQ4/njIy/OPY46BWqklcMkl8PLLpTe+4AKYOBHSdLuqiIiIiEgiKCEMY0IYsW6dH0Y6ejSrio7gBh5hJW0pJoVNNKGEVLKsgLq1werW8UtW1Knju/0sBfCTyhx7rE/+unXzyWB6+gHHuekmePjh0mXdu8PUqcGNhSIiIiIikghKCMOcEEasXAn33MM3417jLu5hOmdRSC0cRgaFpTZNoYQf2BLyjlhD3gn7OOHMbOqcchyccIK/WfBAjz8O119fuqxDBz8LTU5OFZ6UiIiIiIh8HyWESgijFi6k5I67GDOpIaMYisMwHO1ZRjfmkMdcujKfenxd9v6tW0PXrtCli/+5aZO/RzD296hZM79S/VFHxeecRERERESkXEoIlRB+25w55N/xLOtn59O5YFZ0aYiKqlcPZsyAE0+snPpERERERKRCvish1EwfYdWtG0f+qxtHOgerV/uV5j/+OPozP//Q60xLg9dfVzIoIiIiIlJNKCEMOzO/1kSrVtC7d7R82zZYsKB0krhokV9nojxjxkDPnlXfZhERERERqRRKCKVsDRvCWWf5R8SePT4pjE0SFyyAWrXgwQdh0KBEtVZERERERA6DEkI5eJmZfjiohoSKiIiIiNQIKYlugIiIiIiIiCSGEkIREREREZGQUkIoIiIiIiISUkoIRUREREREQkoJoYiIiIiISEgpIRQREREREQkpJYQiIiIiIiIhpYRQREREREQkpJQQioiIiIiIhJQSQhERERERkZBSQigiIiIiIhJSSghFRERERERCSgmhiIiIiIhISCkhFBERERERCSklhCIiIiIiIiGlhFBERERERCSklBCKiIiIiIiElDnnEt2GKmVmm4AvE92OMuQAmxPdCPkWxSX5KCbJSXFJPopJclJcko9ikpwUl6rVxjnXpKw3anxCmKzMbK5zLi/R7ZDSFJfko5gkJ8Ul+SgmyUlxST6KSXJSXBJHQ0ZFRERERERCSgmhiIiIiIhISCkhTJzRiW6AlElxST6KSXJSXJKPYpKcFJfko5gkJ8UlQXQPoYiIiIiISEiph1BERERERCSklBAeBDMbY2YbzeyzA8ofMrMlZvaJmf3DzLLL2f/eYJuPzWyKmeUG5WZmT5jZ8uD9E8vZ/1wz+zzY7taY8qPM7L9B+Stmll6Z553skjguZmb3m9lSM1tsZtdU5nknsySISYWOXxMlcUy6mNnsoN65ZnZyZZ1zdVCFcelkZrPMbK+Z3fgdxz/JzD4N4veEmVlQ3sjM/m1my4KfDSvzvJNZssYkeO/qoA0LzWxEZZ1zdZAEcbnfzFaZ2a4Dyv9gZouCuqeaWZvKON/qIIlj0trMppnZ/KD+XpVxvqHgnNPjex7Aj4ATgc8OKO8JpAXPHwQeLGf/rJjn1wDPBM97Ae8ABnQH/lvGvqnACqAtkA4sADoH700ABgTPnwGGJfpaKS4O4DfAOCAleN000dcqDDGpjOPXxEcSx2QKcF5MXdMTfa1qSFyaAt2A+4Ebv+P4HwZxsyCOkViMAG4Nnt+qv5WkiMnZwLtARqS+RF+rkMWlO9Ac2HVA+dlAneD5MOCVRF8rxYTRBP8XBjoD+Ym+VtXloR7Cg+Cc+w+wtYzyKc65ouDlbKBlOfsXxLysC0Ru3OwDjHPebCDbzJofsPvJwHLn3ErnXCHwd6BP8M1hD+C1YLsXgL6HfnbVVzLGJXhvGDDcOVcSHGfjoZ9d9ZTgmFT4+DVRssYkqCcreN4AWHsQp1NjVFVcnHMbnXNzgH3lHTuIU5ZzbrZzzuG/wIp8fvTBf55AyD5Xkjgmw4A/Oef2Ruo7pBOr5hIZl2C72c65dWWUT3POffN9x6+JkjUmhPxzpSLSEt2AGmQw8Ep5b5rZ/cClwA78t0oALYBVMZutDspif8nL2uYUoDGwPeYPL7KvlBbvuAC0A/qb2c+BTcA1zrllFTiHmqaqYlIpxw+pRMTkOuBfZvYw/vaF0w6xzWFwOHE5GC3w8YqI/fxoFvMfrfVAs0OoNwwSEZMOwBlB3XvwPSdzDqXRIVBVcTlYQ/C9uhKViJjcDUwxs6vxieY5lVRvjacewkpgZrcDRcBL5W3jnLvdOdcq2OaqeLUtzBIYlwxgj3MuD/grMKaS6q32Ev23cjDHD5sExmQYcH1Q7/XAc5VUb42Q6L+VoH5HtEc49BIYkzSgEX6Y3E3AhNj7C8Mu0X8rZnYJkAc8VJn1VmcJjMkvgeedcy3xtyK8aGbKdQ6CLlIFmdmvgfOBgcGHJ2Y2NrhR9u0ydnkJuCh4vgZoFfNey6AsVnnbbMEP0Ur7jn1DK4FxAf/N7sTg+T+A4w/zNGqUOMTkkI8fdgmOyWVE/05exQ/DFiocl4OxhtJDuWJjtyEy9Df4GarhieVJcExWAxOD4dkfAiVAziGeQo0Uh7h83/HPAW4HekeG9IZdgmMyBD+/Bs65WUAm+ls5KEoIK8DMzgVuxv9DEBlHjnPuN865Ls65XsF27WN26wMsCZ5PBi41rzuwo4wx0XOA9uZnFE0HBgCTgz+yacDFwXaXAW9U8ilWS4mMS/DeJKLDH84Ellbi6VVLcYrJIR8/zBIdE/y9HWcGz3sAGlZNpcTlewVxKjCz7kFP06VEPz8m4z9PQJ8rQFLEZP9nipl1wE9ktrkCp1QjxCMu33P8rsCo4Pj64oTExwT4CvhxcIwf4BPCTZVUd83mkmBmm2R/AC/j74vZh/+mbkhQvhx/D83HweOZcvZ/HfgM+AR4E2gR+dIEeAo/W+WnQF45+/fCJxUrgNtjytviZyVbjv+GPSPR10pxcQDZwFvBvrOAExJ9rUIUkwodvyY+kjgmpwPz8DP0/hc4KdHXqobE5YigvgJge/A8q4z984L9VwBPAhaUNwam4hP0d4FGib5WignpwPjgvY+AHom+ViGLy4jgvZLg591B+bvAhpjjT070tVJM6AzMxH+ufAz0TPS1qi6PyD82IiIiIiIiEjIaMioiIiIiIhJSSghFRERERERCSgmhiIiIiIhISCkhFBERERERCSklhCIiIiIiIiGlhFBERELHzFqb2S4zS010W0RERBJJCaGIiISCmeWb2TkAzrmvnHP1nHPFcTz+WWa2Ol7HExERORhKCEVEREREREJKCaGIiNR4ZvYi0Bp4MxgqerOZOTNLC96fbmb3mdkHwftvmlljM3vJzArMbI6ZHRlTXycz+7eZbTWzz82sX8x7vcxskZntNLM1ZnajmdUF3gFyg/p3mVmumZ1sZrPMbLuZrTOzJ80sPaYuZ2a/N7NlQX33mlm7oJ0FZjYhsn2kB9LMbjOzzUGP6MD4XGEREamulBCKiEiN55wbBHwFXOCcqwdMKGOzAcAgoAXQDpgFjAUaAYuBPwIEyd2/gb8BTYP9/mJmnYN6ngOGOufqA8cC7znnvgbOA9YGQ1XrOefWAsXA9UAOcCrwY+D3B7Trp8BJQHfgZmA0cAnQKqj/lzHbHhHU1QK4DBhtZh0P6WKJiEioKCEUERHxxjrnVjjnduB781Y45951zhUBrwJdg+3OB/Kdc2Odc0XOufnA68Avgvf3AZ3NLMs5t80591F5B3TOzXPOzQ7qyQdGAWcesNkI51yBc24h8BkwxTm3MqadXQ/Y/k7n3F7n3AzgLaAfIiIi5VBCKCIi4m2Ieb67jNf1gudtgFOCYZ7bzWw7MBDfOwdwEdAL+NLMZpjZqeUd0Mw6mNk/zWy9mRUA/4vv4TucdgFsC3ojI74Ecss7voiIiBJCEREJC1dJ9awCZjjnsmMe9ZxzwwCcc3Occ33ww0knER2eWtbxnwaWAO2dc1nAbYBVoG0NgyGtEa2BtRWoT0REajglhCIiEhYbgLaVUM8/gQ5mNsjMagWPbmb2AzNLN7OBZtbAObcPKABKYo7f2MwaxNRVP9hml5l1AoZVQvvuCdpxBn5466uVUKeIiNRQSghFRCQsHgDuCIZ4Xny4lTjndgI98ZPJrAXWAw8CGcEmg4D8YAjoFfjhpDjnlgAvAyuDoaa5wI3Ar4CdwF+BVw63XYH1wLagXS8BVwTHFRERKZM5V1kjaERERCRRzOwsYLxzrmWi2yIiItWHeghFRERERERCSgmhiIiIiIhISGnIqIiIiIiISEiph1BERERERCSklBCKiIiIiIiElBJCERERERGRkFJCKCIiIiIiElJKCEVEREREREJKCaGIiIiIiEhI/T/TYeQPsPM8oAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ 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:44+00:00", + "source_file": "7-TimeSeries/2-ARIMA/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/ml/7-TimeSeries/2-ARIMA/working/notebook.ipynb b/translations/ml/7-TimeSeries/2-ARIMA/working/notebook.ipynb new file mode 100644 index 000000000..1eb903e6d --- /dev/null +++ b/translations/ml/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:36+00:00", + "source_file": "7-TimeSeries/2-ARIMA/working/notebook.ipynb", + "language_code": "ml" + } + }, + "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", + "1ടാവോ ഹോങ്, പിയർ പിൻസൺ, ഷു ഫാൻ, ഹമിദ്‌റേസാ സാരെയിപൂർ, അൽബർട്ടോ ട്രൊക്കോളി, റോബ് ജെ. ഹൈൻഡ്മാൻ, \"പ്രൊബബിലിസ്റ്റിക് എനർജി ഫോറ്കാസ്റ്റിംഗ്: ഗ്ലോബൽ എനർജി ഫോറ്കാസ്റ്റിംഗ് കോംപറ്റിഷൻ 2014 ആൻഡ് ബിയോണ്ട്\", ഇന്റർനാഷണൽ ജേർണൽ ഓഫ് ഫോറ്കാസ്റ്റിംഗ്, വോൾ.32, നമ്പർ 3, പേജ് 896-913, ജൂലൈ-സെപ്റ്റംബർ, 2016.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pip install statsmodels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/7-TimeSeries/3-SVR/README.md b/translations/ml/7-TimeSeries/3-SVR/README.md new file mode 100644 index 000000000..c237e4156 --- /dev/null +++ b/translations/ml/7-TimeSeries/3-SVR/README.md @@ -0,0 +1,402 @@ + +# Support Vector Regressor ഉപയോഗിച്ച് ടൈം സീരീസ് പ്രവചനം + +മുൻപത്തെ പാഠത്തിൽ, ടൈം സീരീസ് പ്രവചനങ്ങൾ നടത്താൻ ARIMA മോഡൽ എങ്ങനെ ഉപയോഗിക്കാമെന്ന് നിങ്ങൾ പഠിച്ചു. ഇപ്പോൾ നിങ്ങൾ തുടർച്ചയായ ഡാറ്റ പ്രവചിക്കാൻ ഉപയോഗിക്കുന്ന ഒരു റെഗ്രസർ മോഡലായ Support Vector Regressor മോഡലിനെക്കുറിച്ച് നോക്കാൻ പോകുന്നു. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## പരിചയം + +ഈ പാഠത്തിൽ, നിങ്ങൾ റെഗ്രഷനിനായി [**SVM**: **S**upport **V**ector **M**achine](https://en.wikipedia.org/wiki/Support-vector_machine) ഉപയോഗിച്ച് മോഡലുകൾ നിർമ്മിക്കുന്ന ഒരു പ്രത്യേക മാർഗം കണ്ടെത്തും, അല്ലെങ്കിൽ **SVR: Support Vector Regressor**. + +### ടൈം സീരീസ് സാന്ദർഭ്യത്തിൽ SVR [^1] + +ടൈം സീരീസ് പ്രവചനത്തിൽ SVR-ന്റെ പ്രാധാന്യം മനസ്സിലാക്കുന്നതിന് മുമ്പ്, നിങ്ങൾ അറിയേണ്ട ചില പ്രധാന ആശയങ്ങൾ ഇവയാണ്: + +- **Regression:** നൽകിയ ഇൻപുട്ടുകളുടെ ഒരു സെറ്റിൽ നിന്ന് തുടർച്ചയായ മൂല്യങ്ങൾ പ്രവചിക്കാൻ ഉപയോഗിക്കുന്ന സൂപ്പർവൈസ്ഡ് ലേണിംഗ് സാങ്കേതിക വിദ്യ. ഫീച്ചർ സ്പേസിൽ ഏറ്റവും കൂടുതൽ ഡാറ്റ പോയിന്റുകൾ ഉള്ള ഒരു വളവ് (അഥവാ രേഖ) ഫിറ്റ് ചെയ്യുക എന്നതാണ് ആശയം. കൂടുതൽ വിവരങ്ങൾക്ക് [ഇവിടെ ക്ലിക്ക് ചെയ്യുക](https://en.wikipedia.org/wiki/Regression_analysis). +- **Support Vector Machine (SVM):** ക്ലാസിഫിക്കേഷൻ, റെഗ്രഷൻ, ഔട്ട്‌ലൈയർ കണ്ടെത്തൽ എന്നിവയ്ക്ക് ഉപയോഗിക്കുന്ന ഒരു തരം സൂപ്പർവൈസ്ഡ് മെഷീൻ ലേണിംഗ് മോഡൽ. മോഡൽ ഫീച്ചർ സ്പേസിലെ ഒരു ഹൈപ്പർപ്ലെയിൻ ആണ്, ക്ലാസിഫിക്കേഷനിൽ അതു ഒരു അതിരായി പ്രവർത്തിക്കുകയും, റെഗ്രഷനിൽ ഏറ്റവും മികച്ച ഫിറ്റ് രേഖയായി പ്രവർത്തിക്കുകയും ചെയ്യുന്നു. SVM-ൽ, ഡാറ്റാസെറ്റ് ഉയർന്ന ഡൈമെൻഷനുകളുള്ള സ്പേസിലേക്ക് മാറ്റാൻ സാധിക്കുന്ന Kernel ഫംഗ്ഷൻ സാധാരണയായി ഉപയോഗിക്കുന്നു, അതിലൂടെ ഡാറ്റകൾ എളുപ്പത്തിൽ വേർതിരിക്കാവുന്നതാകും. SVM-കളെക്കുറിച്ച് കൂടുതൽ വിവരങ്ങൾക്ക് [ഇവിടെ ക്ലിക്ക് ചെയ്യുക](https://en.wikipedia.org/wiki/Support-vector_machine). +- **Support Vector Regressor (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() + ``` + + ![full data](../../../../translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.ml.png) + + ഇപ്പോൾ, നമുക്ക് SVR മോഡൽ നിർമ്മിക്കാം. + +### ട്രെയിനിംഗ്, ടെസ്റ്റിംഗ് ഡാറ്റാസെറ്റുകൾ സൃഷ്ടിക്കുക + +ഇപ്പോൾ നിങ്ങളുടെ ഡാറ്റ ലോഡ് ചെയ്തിരിക്കുന്നു, അതിനാൽ അത് ട്രെയിൻ, ടെസ്റ്റ് സെറ്റുകളായി വേർതിരിക്കാം. പിന്നീട് SVR-ക്ക് ആവശ്യമായ ടൈം-സ്റ്റെപ്പ് അടിസ്ഥാനമാക്കിയുള്ള ഡാറ്റാസെറ്റ് സൃഷ്ടിക്കാൻ ഡാറ്റ പുനരാകൃതമാക്കും. മോഡൽ ട്രെയിൻ സെറ്റിൽ പരിശീലിപ്പിക്കും. മോഡൽ പരിശീലനം പൂർത്തിയായ ശേഷം, ട്രെയിനിംഗ് സെറ്റ്, ടെസ്റ്റിംഗ് സെറ്റ്, പിന്നെ മുഴുവൻ ഡാറ്റാസെറ്റിൽ അതിന്റെ കൃത്യത വിലയിരുത്തും. ടെസ്റ്റ് സെറ്റ് ട്രെയിനിംഗ് സെറ്റിൽ നിന്നുള്ള പിന്നീട് കാലയളവിൽ നിന്നുള്ളതായിരിക്കണം, അതിലൂടെ മോഡൽ ഭാവിയിലെ സമയങ്ങളിൽ നിന്നുള്ള വിവരങ്ങൾ നേടാതിരിക്കണം [^2] (*ഓവർഫിറ്റിംഗ്* എന്നറിയപ്പെടുന്ന സ്ഥിതി). + +1. 2014 സെപ്റ്റംബർ 1 മുതൽ ഒക്ടോബർ 31 വരെ രണ്ട് മാസത്തെ കാലയളവ് ട്രെയിനിംഗ് സെറ്റിന് അനുവദിക്കുക. ടെസ്റ്റ് സെറ്റ് 2014 നവംബർ 1 മുതൽ ഡിസംബർ 31 വരെ രണ്ട് മാസത്തെ കാലയളവ് ഉൾക്കൊള്ളും: [^2] + + ```python + train_start_dt = '2014-11-01 00:00:00' + test_start_dt = '2014-12-30 00:00:00' + ``` + +2. വ്യത്യാസങ്ങൾ ദൃശ്യവൽക്കരിക്കുക: [^2] + + ```python + energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \ + .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \ + .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![training and testing data](../../../../translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.ml.png) + + + +### ട്രെയിനിംഗിനായി ഡാറ്റ തയ്യാറാക്കുക + +ഇപ്പോൾ, നിങ്ങളുടെ ഡാറ്റ ഫിൽട്ടർ ചെയ്ത് സ്കെയിൽ ചെയ്ത് ട്രെയിനിംഗിനായി തയ്യാറാക്കണം. ആവശ്യമായ സമയപരിധികളും കോളങ്ങളുമായി മാത്രം നിങ്ങളുടെ ഡാറ്റാസെറ്റ് ഫിൽട്ടർ ചെയ്യുക, ഡാറ്റ 0,1 ഇടവേളയിൽ പ്രൊജക്ട് ചെയ്യാൻ സ്കെയ്ലിംഗ് നടത്തുക. + +1. മുൻകൂട്ടി പറഞ്ഞ സമയപരിധികളിൽ മാത്രവും 'load' എന്ന ആവശ്യമായ കോളവും തീയതിയും ഉൾപ്പെടെ ഒറിജിനൽ ഡാറ്റാസെറ്റ് ഫിൽട്ടർ ചെയ്യുക: [^2] + + ```python + train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']] + test = energy.copy()[energy.index >= test_start_dt][['load']] + + print('Training data shape: ', train.shape) + print('Test data shape: ', test.shape) + ``` + + ```output + Training data shape: (1416, 1) + Test data shape: (48, 1) + ``` + +2. ട്രെയിനിംഗ് ഡാറ്റ 0 മുതൽ 1 വരെയുള്ള പരിധിയിലാക്കുക: [^2] + + ```python + scaler = MinMaxScaler() + train['load'] = scaler.fit_transform(train) + ``` + +4. ഇപ്പോൾ, ടെസ്റ്റിംഗ് ഡാറ്റ സ്കെയിൽ ചെയ്യുക: [^2] + + ```python + test['load'] = scaler.transform(test) + ``` + +### ടൈം-സ്റ്റെപ്പുകളുള്ള ഡാറ്റ സൃഷ്ടിക്കുക [^1] + +SVR-ക്കായി, ഇൻപുട്ട് ഡാറ്റ `[batch, timesteps]` എന്ന രൂപത്തിലാക്കണം. അതിനാൽ നിലവിലുള്ള `train_data`യും `test_data`യും പുനരാകൃതമാക്കുന്നു, പുതിയ ഒരു ഡൈമെൻഷൻ ടൈംസ്റ്റെപ്പുകളെ സൂചിപ്പിക്കുന്നു. + +```python +# നംപൈ അറേകളിലേക്ക് മാറ്റുന്നു +train_data = train.values +test_data = test.values +``` + +ഈ ഉദാഹരണത്തിൽ, `timesteps = 5` എടുത്തിരിക്കുന്നു. അതായത്, മോഡലിന് നൽകുന്ന ഇൻപുട്ടുകൾ ആദ്യ 4 ടൈംസ്റ്റെപ്പുകളിലെ ഡാറ്റയാണ്, ഔട്ട്പുട്ട് 5-ആം ടൈംസ്റ്റെപ്പിലെ ഡാറ്റ ആയിരിക്കും. + +```python +timesteps=5 +``` + +നസ്റ്റ് ചെയ്ത ലിസ്റ്റ് കോംപ്രഹെൻഷൻ ഉപയോഗിച്ച് ട്രെയിനിംഗ് ഡാറ്റ 2D ടെൻസറിലേക്ക് മാറ്റുന്നു: + +```python +train_data_timesteps=np.array([[j for j in train_data[i:i+timesteps]] for i in range(0,len(train_data)-timesteps+1)])[:,:,0] +train_data_timesteps.shape +``` + +```output +(1412, 5) +``` + +ടെസ്റ്റിംഗ് ഡാറ്റ 2D ടെൻസറിലേക്ക് മാറ്റുന്നു: + +```python +test_data_timesteps=np.array([[j for j in test_data[i:i+timesteps]] for i in range(0,len(test_data)-timesteps+1)])[:,:,0] +test_data_timesteps.shape +``` + +```output +(44, 5) +``` + +ട്രെയിനിംഗ്, ടെസ്റ്റിംഗ് ഡാറ്റയിൽ നിന്ന് ഇൻപുട്ടുകളും ഔട്ട്പുട്ടുകളും തിരഞ്ഞെടുക്കുന്നു: + +```python +x_train, y_train = train_data_timesteps[:,:timesteps-1],train_data_timesteps[:,[timesteps-1]] +x_test, y_test = test_data_timesteps[:,:timesteps-1],test_data_timesteps[:,[timesteps-1]] + +print(x_train.shape, y_train.shape) +print(x_test.shape, y_test.shape) +``` + +```output +(1412, 4) (1412, 1) +(44, 4) (44, 1) +``` + +### SVR നടപ്പിലാക്കുക [^1] + +ഇപ്പോൾ, SVR നടപ്പിലാക്കാനുള്ള സമയം. ഈ നടപ്പിലാക്കലിനെക്കുറിച്ച് കൂടുതൽ വായിക്കാൻ, [ഈ ഡോക്യുമെന്റേഷൻ](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html) കാണാം. നമ്മുടെ നടപ്പിലാക്കലിനായി, താഴെ പറയുന്ന ഘട്ടങ്ങൾ പിന്തുടരുന്നു: + + 1. `SVR()` വിളിച്ച് മോഡൽ നിർവചിക്കുക, മോഡൽ ഹൈപ്പർപാരാമീറ്ററുകൾ kernel, gamma, c, epsilon നൽകുക + 2. `fit()` ഫംഗ്ഷൻ വിളിച്ച് മോഡൽ ട്രെയിനിംഗ് ഡാറ്റയ്ക്ക് തയ്യാറാക്കുക + 3. `predict()` ഫംഗ്ഷൻ വിളിച്ച് പ്രവചനങ്ങൾ നടത്തുക + +ഇപ്പോൾ SVR മോഡൽ സൃഷ്ടിക്കുന്നു. ഇവിടെ [RBF kernel](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel) ഉപയോഗിക്കുന്നു, ഹൈപ്പർപാരാമീറ്ററുകൾ gamma, C, epsilon യഥാക്രമം 0.5, 10, 0.05 ആയി സജ്ജീകരിക്കുന്നു. + +```python +model = SVR(kernel='rbf',gamma=0.5, C=10, epsilon = 0.05) +``` + +#### ട്രെയിനിംഗ് ഡാറ്റയിൽ മോഡൽ ഫിറ്റ് ചെയ്യുക [^1] + +```python +model.fit(x_train, y_train[:,0]) +``` + +```output +SVR(C=10, cache_size=200, coef0=0.0, degree=3, epsilon=0.05, gamma=0.5, + kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False) +``` + +#### മോഡൽ പ്രവചനങ്ങൾ നടത്തുക [^1] + +```python +y_train_pred = model.predict(x_train).reshape(-1,1) +y_test_pred = model.predict(x_test).reshape(-1,1) + +print(y_train_pred.shape, y_test_pred.shape) +``` + +```output +(1412, 1) (44, 1) +``` + +നിങ്ങൾ SVR നിർമ്മിച്ചു! ഇപ്പോൾ അതിന്റെ മൂല്യനിർണയം നടത്താം. + +### നിങ്ങളുടെ മോഡൽ വിലയിരുത്തുക [^1] + +വിലയിരുത്തലിനായി, ആദ്യം ഡാറ്റയെ അതിന്റെ ഒറിജിനൽ സ്കെയിലിലേക്ക് തിരികെ സ്കെയിൽ ചെയ്യാം. തുടർന്ന് പ്രകടനം പരിശോധിക്കാൻ, ഒറിജിനൽ, പ്രവചിച്ച ടൈം സീരീസ് പ്ലോട്ട് ചെയ്യുകയും MAPE ഫലം പ്രിന്റ് ചെയ്യുകയും ചെയ്യും. + +പ്രവചിച്ചും ഒറിജിനൽ ഔട്ട്പുട്ടും സ്കെയിൽ ചെയ്യുക: + +```python +# പ്രവചനങ്ങൾ സ്കെയിൽ ചെയ്യുന്നു +y_train_pred = scaler.inverse_transform(y_train_pred) +y_test_pred = scaler.inverse_transform(y_test_pred) + +print(len(y_train_pred), len(y_test_pred)) +``` + +```python +# യഥാർത്ഥ മൂല്യങ്ങളെ സ്കെയിൽ ചെയ്യുന്നു +y_train = scaler.inverse_transform(y_train) +y_test = scaler.inverse_transform(y_test) + +print(len(y_train), len(y_test)) +``` + +#### ട്രെയിനിംഗ്, ടെസ്റ്റിംഗ് ഡാറ്റയിൽ മോഡൽ പ്രകടനം പരിശോധിക്കുക [^1] + +ഡാറ്റാസെറ്റിൽ നിന്നുള്ള ടൈംസ്റ്റാമ്പുകൾ എടുക്കുന്നു, പ്ലോട്ടിന്റെ x-അക്സിസിൽ കാണിക്കാൻ. ആദ്യ ```timesteps-1``` മൂല്യങ്ങൾ ആദ്യ ഔട്ട്പുട്ടിന് ഇൻപുട്ടായി ഉപയോഗിക്കുന്നതിനാൽ, ഔട്ട്പുട്ടിന്റെ ടൈംസ്റ്റാമ്പുകൾ അതിന് ശേഷം തുടങ്ങും. + +```python +train_timestamps = energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)].index[timesteps-1:] +test_timestamps = energy[test_start_dt:].index[timesteps-1:] + +print(len(train_timestamps), len(test_timestamps)) +``` + +```output +1412 44 +``` + +ട്രെയിനിംഗ് ഡാറ്റയുടെ പ്രവചനങ്ങൾ പ്ലോട്ട് ചെയ്യുക: + +```python +plt.figure(figsize=(25,6)) +plt.plot(train_timestamps, y_train, color = 'red', linewidth=2.0, alpha = 0.6) +plt.plot(train_timestamps, y_train_pred, color = 'blue', linewidth=0.8) +plt.legend(['Actual','Predicted']) +plt.xlabel('Timestamp') +plt.title("Training data prediction") +plt.show() +``` + +![training data prediction](../../../../translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.ml.png) + +ട്രെയിനിംഗ് ഡാറ്റയ്ക്ക് MAPE പ്രിന്റ് ചെയ്യുക + +```python +print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%') +``` + +```output +MAPE for training data: 1.7195710200875551 % +``` + +ടെസ്റ്റിംഗ് ഡാറ്റയുടെ പ്രവചനങ്ങൾ പ്ലോട്ട് ചെയ്യുക + +```python +plt.figure(figsize=(10,3)) +plt.plot(test_timestamps, y_test, color = 'red', linewidth=2.0, alpha = 0.6) +plt.plot(test_timestamps, y_test_pred, color = 'blue', linewidth=0.8) +plt.legend(['Actual','Predicted']) +plt.xlabel('Timestamp') +plt.show() +``` + +![testing data prediction](../../../../translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.ml.png) + +ടെസ്റ്റിംഗ് ഡാറ്റയ്ക്ക് MAPE പ്രിന്റ് ചെയ്യുക + +```python +print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%') +``` + +```output +MAPE for testing data: 1.2623790187854018 % +``` + +🏆 ടെസ്റ്റിംഗ് ഡാറ്റാസെറ്റിൽ നിങ്ങൾക്ക് വളരെ നല്ല ഫലം ലഭിച്ചു! + +### മുഴുവൻ ഡാറ്റാസെറ്റിൽ മോഡൽ പ്രകടനം പരിശോധിക്കുക [^1] + +```python +# ലോഡ് മൂല്യങ്ങൾ numpy അറേ ആയി എടുക്കുന്നു +data = energy.copy().values + +# സ്കെയിലിംഗ് +data = scaler.transform(data) + +# മോഡൽ ഇൻപുട്ട് ആവശ്യകത അനുസരിച്ച് 2D ടെൻസറായി മാറ്റുന്നു +data_timesteps=np.array([[j for j in data[i:i+timesteps]] for i in range(0,len(data)-timesteps+1)])[:,:,0] +print("Tensor shape: ", data_timesteps.shape) + +# ഡാറ്റയിൽ നിന്ന് ഇൻപുട്ടുകളും ഔട്ട്പുട്ടുകളും തിരഞ്ഞെടുക്കുന്നു +X, Y = data_timesteps[:,:timesteps-1],data_timesteps[:,[timesteps-1]] +print("X shape: ", X.shape,"\nY shape: ", Y.shape) +``` + +```output +Tensor shape: (26300, 5) +X shape: (26300, 4) +Y shape: (26300, 1) +``` + +```python +# മോഡൽ പ്രവചനങ്ങൾ നടത്തുക +Y_pred = model.predict(X).reshape(-1,1) + +# വിപരീത സ്കെയിൽ ചെയ്ത് പുനരാകൃതി നൽകുക +Y_pred = scaler.inverse_transform(Y_pred) +Y = scaler.inverse_transform(Y) +``` + +```python +plt.figure(figsize=(30,8)) +plt.plot(Y, color = 'red', linewidth=2.0, alpha = 0.6) +plt.plot(Y_pred, color = 'blue', linewidth=0.8) +plt.legend(['Actual','Predicted']) +plt.xlabel('Timestamp') +plt.show() +``` + +![full data prediction](../../../../translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.ml.png) + +```python +print('MAPE: ', mape(Y_pred, Y)*100, '%') +``` + +```output +MAPE: 2.0572089029888656 % +``` + + + +🏆 വളരെ നല്ല പ്ലോട്ടുകൾ, നല്ല കൃത്യതയുള്ള മോഡൽ കാണിക്കുന്നു. അഭിനന്ദനങ്ങൾ! + +--- + +## 🚀ചലഞ്ച് + +- മോഡൽ സൃഷ്ടിക്കുമ്പോൾ ഹൈപ്പർപാരാമീറ്ററുകൾ (gamma, C, epsilon) മാറ്റി പരീക്ഷിച്ച് ടെസ്റ്റിംഗ് ഡാറ്റയിൽ ഏറ്റവും നല്ല ഫലം നൽകുന്ന ഹൈപ്പർപാരാമീറ്ററുകളുടെ സെറ്റ് കണ്ടെത്തുക. ഈ ഹൈപ്പർപാരാമീറ്ററുകളെക്കുറിച്ച് കൂടുതൽ അറിയാൻ [ഈ ഡോക്യുമെന്റ്](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel) കാണുക. +- മോഡലിനായി വ്യത്യസ്ത kernel ഫംഗ്ഷനുകൾ ഉപയോഗിച്ച് പരീക്ഷിച്ച് ഡാറ്റാസെറ്റിൽ അവയുടെ പ്രകടനം വിശകലനം ചെയ്യുക. സഹായകമായ ഒരു ഡോക്യുമെന്റ് [ഇവിടെ](https://scikit-learn.org/stable/modules/svm.html#kernel-functions) ലഭ്യമാണ്. +- പ്രവചനത്തിനായി തിരിഞ്ഞ് നോക്കാൻ മോഡലിന് `timesteps`-ന്റെ വ്യത്യസ്ത മൂല്യങ്ങൾ ഉപയോഗിച്ച് പരീക്ഷിക്കുക. + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ഈ പാഠം ടൈം സീരീസ് പ്രവചനത്തിനായി SVR-ന്റെ പ്രയോഗം പരിചയപ്പെടുത്തുകയാണ്. SVR-നെക്കുറിച്ച് കൂടുതൽ വായിക്കാൻ, [ഈ ബ്ലോഗ്](https://www.analyticsvidhya.com/blog/2020/03/support-vector-regression-tutorial-for-machine-learning/) കാണാം. ഈ [scikit-learn ഡോക്യുമെന്റേഷൻ](https://scikit-learn.org/stable/modules/svm.html) സാധാരണയായി SVM-കളെക്കുറിച്ച്, [SVR-കളെക്കുറിച്ച്](https://scikit-learn.org/stable/modules/svm.html#regression) കൂടാതെ ഉപയോഗിക്കാവുന്ന വ്യത്യസ്ത [kernel ഫംഗ്ഷനുകൾ](https://scikit-learn.org/stable/modules/svm.html#kernel-functions) എന്നിവയും വിശദമായി വിശദീകരിക്കുന്നു. + +## അസൈൻമെന്റ് + +[ഒരു പുതിയ SVR മോഡൽ](assignment.md) + + + +## ക്രെഡിറ്റുകൾ + + +[^1]: ഈ വിഭാഗത്തിലെ എഴുത്ത്, കോഡ്, ഔട്ട്പുട്ട് [@AnirbanMukherjeeXD](https://github.com/AnirbanMukherjeeXD) നൽകിയതാണ് +[^2]: ഈ വിഭാഗത്തിലെ എഴുത്ത്, കോഡ്, ഔട്ട്പുട്ട് [ARIMA](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA) നിന്നെടുത്തതാണ് + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ പ്രാമാണികമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/7-TimeSeries/3-SVR/assignment.md b/translations/ml/7-TimeSeries/3-SVR/assignment.md new file mode 100644 index 000000000..21b16a633 --- /dev/null +++ b/translations/ml/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/ml/7-TimeSeries/3-SVR/solution/notebook.ipynb b/translations/ml/7-TimeSeries/3-SVR/solution/notebook.ipynb new file mode 100644 index 000000000..7c0cf4423 --- /dev/null +++ b/translations/ml/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": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2012-01-01 00:00:002698.0
2012-01-01 01:00:002558.0
2012-01-01 02:00:002444.0
2012-01-01 03:00:002402.0
2012-01-01 04:00:002403.0
\n", + "
" + ], + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2698.0\n", + "2012-01-01 01:00:00 2558.0\n", + "2012-01-01 02:00:00 2444.0\n", + "2012-01-01 03:00:00 2402.0\n", + "2012-01-01 04:00:00 2403.0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "energy = load_data('../../data')[['load']]\n", + "energy.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "O0BWP13rGnh4" + }, + "source": [ + "### ഡാറ്റ പ്ലോട്ട് ചെയ്യുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 486 + }, + "id": "hGaNPKu_Gidk", + "outputId": "7f89b326-9057-4f49-efbe-cb100ebdf76d" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAH1CAYAAABbUbvGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAC4S0lEQVR4nOzdd7wU1d0G8OfcQu9dQUA6goI0RQXFimL3jb3FrjHRmNg19hJrYo29d8WKFQQFC0WlSu8gvVzqBe695/1jd/bOzk7vs/t88/GTy+7M7NnZmTOn/o6QUoKIiIiIiIgIAIqiTgARERERERHFByuJRERERERElMFKIhEREREREWWwkkhEREREREQZrCQSERERERFRBiuJRERERERElFESdQKi0KxZM9m+ffuok0FERERERBSJX375Za2UsrneewVZSWzfvj0mTZoUdTKIiIiIiIgiIYRYbPQeh5sSERERERFRBiuJRERERERElMFKIhEREREREWUU5JxEIiIiIiIiANi1axeWLVuG8vLyqJMSiFq1aqFNmzYoLS21vQ8riUREREREVLCWLVuG+vXro3379hBCRJ0cX0kpsW7dOixbtgx77rmn7f043JSIiIiIiApWeXk5mjZtmncVRAAQQqBp06aOe0lZSSQiIiIiooKWjxVEhZvvxkoiERERERFRhOrVq+fLcW6//XY89NBDno/DSiIRERERERFlsJJIREREREQUA1JKXHvttejZsyf23ntvvPPOOwCALVu24LDDDkOfPn2w99574+OPP87sc88996BLly446KCDMHv2bF/SweimREREREREAO74dAZ+/2OTr8fca/cGuO24Hra2HT58OCZPnowpU6Zg7dq16N+/PwYPHozmzZvjww8/RIMGDbB27Vrsv//+OP744/Hrr7/i7bffxuTJk1FRUYE+ffqgb9++ntPMnkQiIiIiIqIYGDduHM444wwUFxejZcuWOPjggzFx4kRIKXHTTTdhn332weGHH47ly5dj1apVGDt2LE466STUqVMHDRo0wPHHH+9LOtiTSEREREREBNju8QvbG2+8gTVr1uCXX35BaWkp2rdv73hZCyfYk0hERERERBQDgwYNwjvvvIPKykqsWbMG33//PQYMGICysjK0aNECpaWlGD16NBYvXgwAGDx4MD766CNs374dmzdvxqeffupLOtiT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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IPuNor4eGwYY" + }, + "source": [ + "### പരിശീലനവും പരിശോധനാ ഡാറ്റയും സൃഷ്ടിക്കുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "ysvsNyONGt0Q" + }, + "outputs": [], + "source": [ + "train_start_dt = '2014-11-01 00:00:00'\n", + "test_start_dt = '2014-12-30 00:00:00'" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 548 + }, + "id": "SsfdLoPyGy9w", + "outputId": "d6d6c25b-b1f4-47e5-91d1-707e043237d7" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAITCAYAAACqpFnEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9d7gkyVUmjL+RmVV1bdvpHitpRiOLJCQhCdCHkxAsEny4FQiz2mXNhzD74yfWsAgjFrMLfBghBAtIeCuMkLBCFllkRjNyYzTe9vS073v7+qrKjO+PyBMZmRURGSdv3+rb3fE+Tz/3dt2Kyqw0kXHO+573CCklIiIiIiIiIiIiIiIiIiIAILnQOxARERERERERERERERGxexCDxIiIiIiIiIiIiIiIiAiNGCRGREREREREREREREREaMQgMSIiIiIiIiIiIiIiIkIjBokRERERERERERERERERGjFIjIiIiIiIiIiIiIiIiNDILvQOXAhcccUV8vrrr7/QuxEREREREREREREREXFBcMstt5ySUh6y/e2yDBKvv/563HzzzRd6NyIiIiIiIiIiIiIiIi4IhBAPuf4W5aYRERERERERERERERERGjFIjIiIiIiIiIiIiIiIiNCIQWJERERERERERERERESExmVZkxgRERERERERERERcXljNBrhyJEj2NzcvNC7sqOYmZnBddddh16vFzwmBokREREREREREREREZcdjhw5gsXFRVx//fUQQlzo3dkRSClx+vRpHDlyBDfccEPwuCg3jYiIiIiIiIiIiIi47LC5uYmDBw9esgEiAAghcPDgQTZbGoPEiIiIiIiIiIiIiIjLEpdygEjo8h1jkBgRERERERERERERETFlLC0t4Td+4zfY4772a78WS0tL53+HDMQgMSIiIiIiIiIiIiIiYspwBYnj8dg77u1vfzv27du3Q3ulEI1rIiIiIiIiIiIiIiIipozXvOY1uO+++/Cc5zwHvV4PMzMz2L9/P+68807cfffd+KZv+iY88sgj2NzcxKtf/Wq86lWvAgBcf/31uPnmm7G6uoqXvexl+NIv/VJ85CMfwbXXXou//du/xezs7Lb3LQaJERERERERERERERGXNX7q72/HHUfPndfP/Lxr9uB/fv0znH//+Z//edx222349Kc/jfe///34uq/7Otx2223ahfT3fu/3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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \\\n", + " .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \\\n", + " .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XbFTqBw6G1Ch" + }, + "source": [ + "### പരിശീലനത്തിനായി ഡാറ്റ തയ്യാറാക്കൽ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഇപ്പോൾ, നിങ്ങളുടെ ഡാറ്റ ഫിൽട്ടറിംഗ് ചെയ്ത് സ്കെയിലിംഗ് നടത്തിക്കൊണ്ട് പരിശീലനത്തിനായി ഡാറ്റ തയ്യാറാക്കേണ്ടതാണ്.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cYivRdQpHDj3", + "outputId": "a138f746-461c-4fd6-bfa6-0cee094c4aa1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training data shape: (1416, 1)\n", + "Test data shape: (48, 1)\n" + ] + } + ], + "source": [ + "train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]\n", + "test = energy.copy()[energy.index >= test_start_dt][['load']]\n", + "\n", + "print('Training data shape: ', train.shape)\n", + "print('Test data shape: ', test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഡാറ്റയെ (0, 1) പരിധിയിലാക്കുക.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "3DNntGQnZX8G", + "outputId": "210046bc-7a66-4ccd-d70d-aa4a7309949c" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-11-01 00:00:000.101611
2014-11-01 01:00:000.065801
2014-11-01 02:00:000.046106
2014-11-01 03:00:000.042525
2014-11-01 04:00:000.059087
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-11-01 00:00:00 0.101611\n", + "2014-11-01 01:00:00 0.065801\n", + "2014-11-01 02:00:00 0.046106\n", + "2014-11-01 03:00:00 0.042525\n", + "2014-11-01 04:00:00 0.059087" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scaler = MinMaxScaler()\n", + "train['load'] = scaler.fit_transform(train)\n", + "train.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "26Yht-rzZexe", + "outputId": "20326077-a38a-4e78-cc5b-6fd7af95d301" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-12-30 00:00:000.329454
2014-12-30 01:00:000.290063
2014-12-30 02:00:000.273948
2014-12-30 03:00:000.268129
2014-12-30 04:00:000.302596
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-12-30 00:00:00 0.329454\n", + "2014-12-30 01:00:00 0.290063\n", + "2014-12-30 02:00:00 0.273948\n", + "2014-12-30 03:00:00 0.268129\n", + "2014-12-30 04:00:00 0.302596" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test['load'] = scaler.transform(test)\n", + "test.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x0n6jqxOQ41Z" + }, + "source": [ + "### സമയ ഘട്ടങ്ങളോടുകൂടിയ ഡാറ്റ സൃഷ്ടിക്കൽ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fdmxTZtOQ8xs" + }, + "source": [ + "നമ്മുടെ SVR-ക്കായി, ഇൻപുട്ട് ഡാറ്റ `[batch, timesteps]` എന്ന രൂപത്തിലാക്കുന്നു. അതിനാൽ, നിലവിലുള്ള `train_data`യും `test_data`യും പുനരാകൃതമാക്കുന്നു, അതിലൂടെ ഒരു പുതിയ ഡൈമെൻഷൻ timesteps-നെ സൂചിപ്പിക്കുന്നു. നമ്മുടെ ഉദാഹരണത്തിന്, `timesteps = 5` എടുക്കുന്നു. അതിനാൽ, മോഡലിന് നൽകുന്ന ഇൻപുട്ടുകൾ ആദ്യ 4 timesteps-ലെ ഡാറ്റയാണ്, ഔട്ട്പുട്ട് 5ആം timestep-ലെ ഡാറ്റ ആയിരിക്കും.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "Rpju-Sc2HFm0" + }, + "outputs": [], + "source": [ + "# Converting to numpy arrays\n", + "\n", + "train_data = train.values\n", + "test_data = test.values" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Selecting the timesteps\n", + "\n", + "timesteps=5" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "O-JrsrsVJhUQ", + "outputId": "c90dbe71-bacc-4ec4-b452-f82fe5aefaef" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1412, 5)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Converting data to 2D tensor\n", + "\n", + "train_data_timesteps=np.array([[j for j in train_data[i:i+timesteps]] for i in range(0,len(train_data)-timesteps+1)])[:,:,0]\n", + "train_data_timesteps.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "exJD8AI7KE4g", + "outputId": "ce90260c-f327-427d-80f2-77307b5a6318" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(44, 5)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Converting test data to 2D tensor\n", + "\n", + "test_data_timesteps=np.array([[j for j in test_data[i:i+timesteps]] for i in range(0,len(test_data)-timesteps+1)])[:,:,0]\n", + "test_data_timesteps.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "2u0R2sIsLuq5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1412, 4) (1412, 1)\n", + "(44, 4) (44, 1)\n" + ] + } + ], + "source": [ + "x_train, y_train = train_data_timesteps[:,:timesteps-1],train_data_timesteps[:,[timesteps-1]]\n", + "x_test, y_test = test_data_timesteps[:,:timesteps-1],test_data_timesteps[:,[timesteps-1]]\n", + "\n", + "print(x_train.shape, y_train.shape)\n", + "print(x_test.shape, y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8wIPOtAGLZlh" + }, + "source": [ + "## SVR മോഡൽ സൃഷ്ടിക്കൽ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "EhA403BEPEiD" + }, + "outputs": [], + "source": [ + "# Create model using RBF kernel\n", + "\n", + "model = SVR(kernel='rbf',gamma=0.5, C=10, epsilon = 0.05)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GS0UA3csMbqp", + "outputId": "d86b6f05-5742-4c1d-c2db-c40510bd4f0d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "SVR(C=10, cache_size=200, coef0=0.0, degree=3, epsilon=0.05, gamma=0.5,\n", + " kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Fit model on training data\n", + "\n", + "model.fit(x_train, y_train[:,0])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Rz_x8S3UrlcF" + }, + "source": [ + "### മോഡൽ പ്രവചനം നടത്തുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XR0gnt3MnuYS", + "outputId": "157e40ab-9a23-4b66-a885-0d52a24b2364" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1412, 1) (44, 1)\n" + ] + } + ], + "source": [ + "# Making predictions\n", + "\n", + "y_train_pred = model.predict(x_train).reshape(-1,1)\n", + "y_test_pred = model.predict(x_test).reshape(-1,1)\n", + "\n", + "print(y_train_pred.shape, y_test_pred.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_2epncg-SGzr" + }, + "source": [ + "## മോഡൽ പ്രകടനം വിശകലനം ചെയ്യൽ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1412 44\n" + ] + } + ], + "source": [ + "# Scaling the predictions\n", + "\n", + "y_train_pred = scaler.inverse_transform(y_train_pred)\n", + "y_test_pred = scaler.inverse_transform(y_test_pred)\n", + "\n", + "print(len(y_train_pred), len(y_test_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xmm_YLXhq7gV", + "outputId": "18392f64-4029-49ac-c71a-a4e2411152a1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1412 44\n" + ] + } + ], + "source": [ + "# Scaling the original values\n", + "\n", + "y_train = scaler.inverse_transform(y_train)\n", + "y_test = scaler.inverse_transform(y_test)\n", + "\n", + "print(len(y_train), len(y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "u3LBj93coHEi", + "outputId": "d4fd49e8-8c6e-4bb0-8ef9-ca0b26d725b4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1412 44\n" + ] + } + ], + "source": [ + "# Extract the timesteps for x-axis\n", + "\n", + "train_timestamps = energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)].index[timesteps-1:]\n", + "test_timestamps = energy[test_start_dt:].index[timesteps-1:]\n", + "\n", + "print(len(train_timestamps), len(test_timestamps))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(25,6))\n", + "plt.plot(train_timestamps, y_train, color = 'red', linewidth=2.0, alpha = 0.6)\n", + "plt.plot(train_timestamps, y_train_pred, color = 'blue', linewidth=0.8)\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.title(\"Training data prediction\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LnhzcnYtXHCm", + "outputId": "f5f0d711-f18b-4788-ad21-d4470ea2c02b" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAPE for training data: 1.7195710200875551 %\n" + ] + } + ], + "source": [ + "print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 225 + }, + "id": "53Q02FoqQH4V", + "outputId": "53e2d59b-5075-4765-ad9e-aed56c966583" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10,3))\n", + "plt.plot(test_timestamps, y_test, color = 'red', linewidth=2.0, alpha = 0.6)\n", + "plt.plot(test_timestamps, y_test_pred, color = 'blue', linewidth=0.8)\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "clOAUH-SXCJG", + "outputId": "a3aa85ff-126a-4a4a-cd9e-90b9cc465ef5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAPE for testing data: 1.2623790187854018 %\n" + ] + } + ], + "source": [ + "print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DHlKvVCId5ue" + }, + "source": [ + "## പൂർണ്ണ ഡാറ്റാസെറ്റ് പ്രവചനം\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cOFJ45vreO0N", + "outputId": "35628e33-ecf9-4966-8036-f7ea86db6f16" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tensor shape: (26300, 5)\n", + "X shape: (26300, 4) \n", + "Y shape: (26300, 1)\n" + ] + } + ], + "source": [ + "# Extracting load values as numpy array\n", + "data = energy.copy().values\n", + "\n", + "# Scaling\n", + "data = scaler.transform(data)\n", + "\n", + "# Transforming to 2D tensor as per model input requirement\n", + "data_timesteps=np.array([[j for j in data[i:i+timesteps]] for i in range(0,len(data)-timesteps+1)])[:,:,0]\n", + "print(\"Tensor shape: \", data_timesteps.shape)\n", + "\n", + "# Selecting inputs and outputs from data\n", + "X, Y = data_timesteps[:,:timesteps-1],data_timesteps[:,[timesteps-1]]\n", + "print(\"X shape: \", X.shape,\"\\nY shape: \", Y.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "id": "ESSAdQgwexIi" + }, + "outputs": [], + "source": [ + "# Make model predictions\n", + "Y_pred = model.predict(X).reshape(-1,1)\n", + "\n", + "# Inverse scale and reshape\n", + "Y_pred = scaler.inverse_transform(Y_pred)\n", + "Y = scaler.inverse_transform(Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 328 + }, + "id": "M_qhihN0RVVX", + "outputId": "a89cb23e-1d35-437f-9d63-8b8907e12f80" + }, + "outputs": [ + { + "data": { + "image/png": "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/vvvj1/96ldYt25duq5TTjkFEydOBAAMHjwYRx55JA4//HCcfvrpWLp0KXr16oXnnnsOPXv2xJgxY7B+/XpccsklOProo3H00Ufjhx9+AABUV1fjzDPPxMEHH4zrr78eQgglv7WdkloIIYQQQgghhESX2lpg8mTghBMy2zZvDq8/hBBCCCGEEOXEYjF88803OPvsswEAkydPxsyZM9GjRw/06dMH22yzDSZMmICWlhYcf/zxOPPMMzFlyhTMmzcPs2fPRlVVFQ466CD88Y9/zKp3/fr1uOGGGzB69Gj06NEDNTU16NatG26++WZ06dIFd955JwDgyiuvxN/+9jeccMIJWL58Oc466yzMmTMH//73v3HCCSfggQcewNdff42+ffsq+b1UcBFCCCGEEEJIqfPMM0B1NfDxx2H3hBBCCCGEkJJG09TX6ebwtHnzZvTs2RNAwoPruuuuw9ixY3HMMcegR48eAIAhQ4Zg+vTp6fxadXV1WLBgAUaPHo3f/e53qKysxC677ILTTjstp/5x48bhpJNOStfVrVs3y3589913WTm76uvrsWnTJowePRqfJSNInHvuuejataun328HFVyEEEIIIYQQUupUV4fdA0IIIYQQQsoCRdH3PJHKwWVmyy23TH8WQuDFF1/EWWedlVVm0KBByvqh6zrGjRuHTp06KavTCebgIoQQQgghhBBCCCGEEEIIKWHOOussvPrqq2hrawMAzJ8/H42NjTjppJPw0UcfIR6PY82aNRgxYkTOsccddxxGjx6NJUuWAABqamoAAFtttRUaGhrS5c4880y8+OKL6e8ppdtJJ52EDz74AADwzTffoLa2VslvooKLEEIIIYQQQgghhBBCCCGkhLn++utx0EEH4cgjj8QhhxyCm266CbFYDBdddBH2228/HHTQQbj66qvxi1/8IufYHXbYAX369MHFF1+Mww8/HJdffjkA4De/+Q0GDBiAnj17YsyYMXjhhRcwceJEHHbYYTjooIPQq1cvAMCDDz6I0aNH4+CDD8Znn32GPfbYQ8lv0kQY/nKSHHXUUWLixIlhd4MQQgghhBBCipubbnLe37t3YfpBCCGEEEJIiTFnzhwceOCBYXejJLA6l5qmTRJCHGVVnh5chBBCCCGEEFLuRNjwkRBCCCGEEEKsoIKLEEIIIYQQQgghhBBCCCGEFBVUcBFCCCGE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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(30,8))\n", + "plt.plot(Y, color = 'red', linewidth=2.0, alpha = 0.6)\n", + "plt.plot(Y_pred, color = 'blue', linewidth=1)\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AcN7pMYXVGTK", + "outputId": "7e1c2161-47ce-496c-9d86-7ad9ae0df770" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAPE: 2.0572089029888656 %\n" + ] + } + ], + "source": [ + "print('MAPE: ', mape(Y_pred, Y)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "Recurrent_Neural_Networks.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + }, + "coopTranslator": { + "original_hash": "f8f3967282314d3995245835bdaa8418", + "translation_date": "2025-12-19T17:35:38+00:00", + "source_file": "7-TimeSeries/3-SVR/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/ml/7-TimeSeries/3-SVR/working/notebook.ipynb b/translations/ml/7-TimeSeries/3-SVR/working/notebook.ipynb new file mode 100644 index 000000000..33d679513 --- /dev/null +++ b/translations/ml/7-TimeSeries/3-SVR/working/notebook.ipynb @@ -0,0 +1,711 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "fv9OoQsMFk5A" + }, + "source": [ + "# സപ്പോർട്ട് വെക്ടർ റിഗ്രസർ ഉപയോഗിച്ച് ടൈം സീരീസ് പ്രവചനം\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഈ നോട്ട്‌ബുക്കിൽ, ഞങ്ങൾ താഴെ പറയുന്നവ കാണിക്കുന്നു:\n", + "\n", + "- 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": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2012-01-01 00:00:002698.0
2012-01-01 01:00:002558.0
2012-01-01 02:00:002444.0
2012-01-01 03:00:002402.0
2012-01-01 04:00:002403.0
\n", + "
" + ], + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2698.0\n", + "2012-01-01 01:00:00 2558.0\n", + "2012-01-01 02:00:00 2444.0\n", + "2012-01-01 03:00:00 2402.0\n", + "2012-01-01 04:00:00 2403.0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "energy = load_data('../../data')[['load']]\n", + "energy.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "O0BWP13rGnh4" + }, + "source": [ + "### ഡാറ്റ പ്ലോട്ട് ചെയ്യുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 486 + }, + "id": "hGaNPKu_Gidk", + "outputId": "7f89b326-9057-4f49-efbe-cb100ebdf76d" + }, + "outputs": [], + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IPuNor4eGwYY" + }, + "source": [ + "### പരിശീലനവും പരിശോധനാ ഡാറ്റയും സൃഷ്ടിക്കുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ysvsNyONGt0Q" + }, + "outputs": [], + "source": [ + "train_start_dt = '2014-11-01 00:00:00'\n", + "test_start_dt = '2014-12-30 00:00:00'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 548 + }, + "id": "SsfdLoPyGy9w", + "outputId": "d6d6c25b-b1f4-47e5-91d1-707e043237d7" + }, + "outputs": [], + "source": [ + "energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \\\n", + " .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \\\n", + " .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XbFTqBw6G1Ch" + }, + "source": [ + "### പരിശീലനത്തിനായി ഡാറ്റ തയ്യാറാക്കൽ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഇപ്പോൾ, നിങ്ങളുടെ ഡാറ്റ ഫിൽട്ടറിംഗ് ചെയ്യുകയും സ്കെയിലിംഗ് ചെയ്യുകയും ചെയ്ത് പരിശീലനത്തിനായി തയ്യാറാക്കേണ്ടതാണ്.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cYivRdQpHDj3", + "outputId": "a138f746-461c-4fd6-bfa6-0cee094c4aa1" + }, + "outputs": [], + "source": [ + "train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]\n", + "test = energy.copy()[energy.index >= test_start_dt][['load']]\n", + "\n", + "print('Training data shape: ', train.shape)\n", + "print('Test data shape: ', test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഡാറ്റയെ (0, 1) പരിധിയിലാക്കുക.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "3DNntGQnZX8G", + "outputId": "210046bc-7a66-4ccd-d70d-aa4a7309949c" + }, + "outputs": [], + "source": [ + "scaler = MinMaxScaler()\n", + "train['load'] = scaler.fit_transform(train)\n", + "train.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "26Yht-rzZexe", + "outputId": "20326077-a38a-4e78-cc5b-6fd7af95d301" + }, + "outputs": [], + "source": [ + "test['load'] = scaler.transform(test)\n", + "test.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x0n6jqxOQ41Z" + }, + "source": [ + "### സമയ ഘട്ടങ്ങളോടെ ഡാറ്റ സൃഷ്ടിക്കൽ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fdmxTZtOQ8xs" + }, + "source": [ + "നമ്മുടെ SVR-ക്കായി, ഇൻപുട്ട് ഡാറ്റയെ `[batch, timesteps]` എന്ന രൂപത്തിലാക്കുന്നു. അതിനാൽ, നിലവിലുള്ള `train_data`യും `test_data`യും പുനരൂപപ്പെടുത്തുന്നു, അതിലൂടെ ഒരു പുതിയ ഡൈമെൻഷൻ timesteps-നെ സൂചിപ്പിക്കും. നമ്മുടെ ഉദാഹരണത്തിന്, `timesteps = 5` എടുക്കുന്നു. അതിനാൽ, മോഡലിന് നൽകുന്ന ഇൻപുട്ടുകൾ ആദ്യ 4 timesteps-ലെ ഡാറ്റയാണ്, ഔട്ട്പുട്ട് 5ആം timestep-ലെ ഡാറ്റ ആയിരിക്കും.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Rpju-Sc2HFm0" + }, + "outputs": [], + "source": [ + "# Converting to numpy arrays\n", + "\n", + "train_data = train.values\n", + "test_data = test.values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Selecting the timesteps\n", + "\n", + "timesteps=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "O-JrsrsVJhUQ", + "outputId": "c90dbe71-bacc-4ec4-b452-f82fe5aefaef" + }, + "outputs": [], + "source": [ + "# Converting data to 2D tensor\n", + "\n", + "train_data_timesteps=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "exJD8AI7KE4g", + "outputId": "ce90260c-f327-427d-80f2-77307b5a6318" + }, + "outputs": [], + "source": [ + "# Converting test data to 2D tensor\n", + "\n", + "test_data_timesteps=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2u0R2sIsLuq5" + }, + "outputs": [], + "source": [ + "x_train, y_train = None\n", + "x_test, y_test = None\n", + "\n", + "print(x_train.shape, y_train.shape)\n", + "print(x_test.shape, y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8wIPOtAGLZlh" + }, + "source": [ + "## SVR മോഡൽ സൃഷ്ടിക്കൽ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EhA403BEPEiD" + }, + "outputs": [], + "source": [ + "# Create model using RBF kernel\n", + "\n", + "model = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GS0UA3csMbqp", + "outputId": "d86b6f05-5742-4c1d-c2db-c40510bd4f0d" + }, + "outputs": [], + "source": [ + "# Fit model on training data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Rz_x8S3UrlcF" + }, + "source": [ + "### മോഡൽ പ്രവചനം നടത്തുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XR0gnt3MnuYS", + "outputId": "157e40ab-9a23-4b66-a885-0d52a24b2364" + }, + "outputs": [], + "source": [ + "# Making predictions\n", + "\n", + "y_train_pred = None\n", + "y_test_pred = None" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_2epncg-SGzr" + }, + "source": [ + "## മോഡൽ പ്രകടനം വിശകലനം ചെയ്യൽ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Scaling the predictions\n", + "\n", + "y_train_pred = scaler.inverse_transform(y_train_pred)\n", + "y_test_pred = scaler.inverse_transform(y_test_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xmm_YLXhq7gV", + "outputId": "18392f64-4029-49ac-c71a-a4e2411152a1" + }, + "outputs": [], + "source": [ + "# Scaling the original values\n", + "\n", + "y_train = scaler.inverse_transform(y_train)\n", + "y_test = scaler.inverse_transform(y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "u3LBj93coHEi", + "outputId": "d4fd49e8-8c6e-4bb0-8ef9-ca0b26d725b4" + }, + "outputs": [], + "source": [ + "# Extract the timesteps for x-axis\n", + "\n", + "train_timestamps = None\n", + "test_timestamps = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(25,6))\n", + "# plot original output\n", + "# plot predicted output\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.title(\"Training data prediction\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LnhzcnYtXHCm", + "outputId": "f5f0d711-f18b-4788-ad21-d4470ea2c02b" + }, + "outputs": [], + "source": [ + "print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 225 + }, + "id": "53Q02FoqQH4V", + "outputId": "53e2d59b-5075-4765-ad9e-aed56c966583" + }, + "outputs": [], + "source": [ + "plt.figure(figsize=(10,3))\n", + "# plot original output\n", + "# plot predicted output\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "clOAUH-SXCJG", + "outputId": "a3aa85ff-126a-4a4a-cd9e-90b9cc465ef5" + }, + "outputs": [], + "source": [ + "print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DHlKvVCId5ue" + }, + "source": [ + "## പൂർണ്ണ ഡാറ്റാസെറ്റ് പ്രവചനം\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cOFJ45vreO0N", + "outputId": "35628e33-ecf9-4966-8036-f7ea86db6f16" + }, + "outputs": [], + "source": [ + "# Extracting load values as numpy array\n", + "data = None\n", + "\n", + "# Scaling\n", + "data = None\n", + "\n", + "# Transforming to 2D tensor as per model input requirement\n", + "data_timesteps=None\n", + "\n", + "# Selecting inputs and outputs from data\n", + "X, Y = None, None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ESSAdQgwexIi" + }, + "outputs": [], + "source": [ + "# Make model predictions\n", + "\n", + "# Inverse scale and reshape\n", + "Y_pred = None\n", + "Y = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 328 + }, + "id": "M_qhihN0RVVX", + "outputId": "a89cb23e-1d35-437f-9d63-8b8907e12f80" + }, + "outputs": [], + "source": [ + "plt.figure(figsize=(30,8))\n", + "# plot original output\n", + "# plot predicted output\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AcN7pMYXVGTK", + "outputId": "7e1c2161-47ce-496c-9d86-7ad9ae0df770" + }, + "outputs": [], + "source": [ + "print('MAPE: ', mape(Y_pred, Y)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "Recurrent_Neural_Networks.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + }, + "coopTranslator": { + "original_hash": "e86ce102239a14c44585623b9b924a74", + "translation_date": "2025-12-19T17:34:05+00:00", + "source_file": "7-TimeSeries/3-SVR/working/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/ml/7-TimeSeries/README.md b/translations/ml/7-TimeSeries/README.md new file mode 100644 index 000000000..fd970959f --- /dev/null +++ b/translations/ml/7-TimeSeries/README.md @@ -0,0 +1,39 @@ + +# ടൈം സീരീസ് ഫോറ്കാസ്റ്റിങ്ങിലേക്ക് പരിചയം + +ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ് എന്താണ്? ഇത് കഴിഞ്ഞ കാലത്തെ പ്രവണതകൾ വിശകലനം ചെയ്ത് ഭാവിയിലെ സംഭവങ്ങൾ പ്രവചിക്കുന്നതിനെക്കുറിച്ചാണ്. + +## പ്രാദേശിക വിഷയം: ലോകമാകെയുള്ള വൈദ്യുതി ഉപയോഗം ✨ + +ഈ രണ്ട് പാഠങ്ങളിൽ, നിങ്ങൾ ടൈം സീരീസ് ഫോറ്കാസ്റ്റിങ്ങുമായി പരിചയപ്പെടും, മെഷീൻ ലേണിങ്ങിന്റെ കുറച്ച് കുറവായി അറിയപ്പെടുന്ന ഒരു മേഖല, എന്നാൽ വ്യവസായത്തിനും ബിസിനസ്സ് പ്രയോഗങ്ങൾക്കും മറ്റ് മേഖലകൾക്കും അത്യന്തം മൂല്യമുള്ളതാണ്. ന്യൂറൽ നെറ്റ്വർക്കുകൾ ഈ മോഡലുകളുടെ പ്രയോജനം വർദ്ധിപ്പിക്കാൻ ഉപയോഗിക്കാവുന്നതായിരുന്നാലും, നാം ക്ലാസിക്കൽ മെഷീൻ ലേണിങ്ങിന്റെ പശ്ചാത്തലത്തിൽ അവയെ പഠിക്കും, കാരണം മോഡലുകൾ കഴിഞ്ഞ കാലത്തെ അടിസ്ഥാനമാക്കി ഭാവിയിലെ പ്രകടനം പ്രവചിക്കാൻ സഹായിക്കുന്നു. + +നമ്മുടെ പ്രാദേശിക ശ്രദ്ധ ലോകത്തിലെ വൈദ്യുതി ഉപയോഗത്തിലാണ്, കഴിഞ്ഞ ലോഡിന്റെ മാതൃകകളുടെ അടിസ്ഥാനത്തിൽ ഭാവിയിലെ വൈദ്യുതി ഉപയോഗം ഫോറ്കാസ്റ്റ് ചെയ്യുന്നതിനെക്കുറിച്ച് പഠിക്കാൻ ഒരു രസകരമായ ഡാറ്റാസെറ്റ്. ഈ തരത്തിലുള്ള ഫോറ്കാസ്റ്റിംഗ് ബിസിനസ്സ് പരിസരത്തിൽ എത്രത്തോളം സഹായകരമാകാമെന്ന് നിങ്ങൾ കാണാം. + +![electric grid](../../../translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.ml.jpg) + +രാജസ്ഥാനിലെ ഒരു റോഡിൽ വൈദ്യുതി ടവറുകളുടെ ചിത്രം [Peddi Sai hrithik](https://unsplash.com/@shutter_log?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) എന്നവന്റെ ഫോട്ടോ, [Unsplash](https://unsplash.com/s/photos/electric-india?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) ൽ നിന്നാണ്. + +## പാഠങ്ങൾ + +1. [ടൈം സീരീസ് ഫോറ്കാസ്റ്റിങ്ങിലേക്ക് പരിചയം](1-Introduction/README.md) +2. [ARIMA ടൈം സീരീസ് മോഡലുകൾ നിർമ്മിക്കൽ](2-ARIMA/README.md) +3. [ടൈം സീരീസ് ഫോറ്കാസ്റ്റിങ്ങിനായി Support Vector Regressor നിർമ്മിക്കൽ](3-SVR/README.md) + +## ക്രെഡിറ്റുകൾ + +"ടൈം സീരീസ് ഫോറ്കാസ്റ്റിങ്ങിലേക്ക് പരിചയം" ⚡️ ഉപയോഗിച്ച് എഴുതിയത് [Francesca Lazzeri](https://twitter.com/frlazzeri) ഉം [Jen Looper](https://twitter.com/jenlooper) ഉം ആണ്. നോട്ട്‌ബുക്കുകൾ ആദ്യം ഓൺലൈനിൽ പ്രത്യക്ഷപ്പെട്ടത് [Azure "Deep Learning For Time Series" repo](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/ml/8-Reinforcement/1-QLearning/README.md b/translations/ml/8-Reinforcement/1-QLearning/README.md new file mode 100644 index 000000000..ec939b538 --- /dev/null +++ b/translations/ml/8-Reinforcement/1-QLearning/README.md @@ -0,0 +1,336 @@ + +# റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗിനും ക്യൂ-ലേണിംഗിനും പരിചയം + +![മെഷീൻ ലേണിംഗിലെ റീഇൻഫോഴ്‌സ്‌മെന്റിന്റെ സംഗ്രഹം ഒരു സ്കെച്ച്നോട്ടിൽ](../../../../translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.ml.png) +> സ്കെച്ച്നോട്ട് [Tomomi Imura](https://www.twitter.com/girlie_mac) tarafından + +റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ് മൂന്ന് പ്രധാന ആശയങ്ങൾ ഉൾക്കൊള്ളുന്നു: ഏജന്റ്, ചില സ്റ്റേറ്റുകൾ, ഓരോ സ്റ്റേറ്റിനും ഒരു ക്രമീകരിച്ച പ്രവർത്തനസമൂഹം. ഒരു നിശ്ചിത സ്റ്റേറ്റിൽ ഒരു പ്രവർത്തനം നടപ്പിലാക്കുമ്പോൾ, ഏജന്റിന് ഒരു റിവാർഡ് ലഭിക്കും. വീണ്ടും കമ്പ്യൂട്ടർ ഗെയിം സൂപ്പർ മാരിയോയെ കണക്കിലെടുക്കുക. നിങ്ങൾ മാരിയോയാണ്, നിങ്ങൾ ഒരു ഗെയിം ലെവലിൽ, ഒരു കുന്നിന്റെ അരികിൽ നിൽക്കുന്നു. നിങ്ങളുടെ മുകളിൽ ഒരു നാണയം ഉണ്ട്. നിങ്ങൾ മാരിയോ ആയതിനാൽ, ഒരു ഗെയിം ലെവലിൽ, ഒരു പ്രത്യേക സ്ഥാനത്ത് ... അത് നിങ്ങളുടെ സ്റ്റേറ്റ് ആണ്. വലത്തേക്ക് ഒരു പടി നീങ്ങുന്നത് (ഒരു പ്രവർത്തനം) നിങ്ങളെ അരികിൽ കൊണ്ടുപോകും, അത് കുറഞ്ഞ സംഖ്യാത്മക സ്കോർ നൽകും. എന്നാൽ, ജമ്പ് ബട്ടൺ അമർത്തുന്നത് നിങ്ങൾക്ക് ഒരു പോയിന്റ് നേടാൻ അനുവദിക്കും, നിങ്ങൾ ജീവിച്ചിരിക്കും. അത് ഒരു പോസിറ്റീവ് ഫലം ആണ്, അതിനാൽ നിങ്ങൾക്ക് പോസിറ്റീവ് സംഖ്യാത്മക സ്കോർ ലഭിക്കണം. + +റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ് ഉപയോഗിച്ച് ഒരു സിമുലേറ്റർ (ഗെയിം) ഉപയോഗിച്ച്, നിങ്ങൾ ഗെയിം കളിക്കാൻ പഠിച്ച് റിവാർഡ് പരമാവധി നേടാൻ കഴിയും, അതായത് ജീവിച്ചിരിക്കുക, കൂടുതൽ പോയിന്റുകൾ നേടുക. + +[![റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗിലേക്ക് പരിചയം](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) + +> 🎥 മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്ത് ഡ്മിത്രി റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ് ചർച്ച ചെയ്യുന്നത് കേൾക്കുക + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## മുൻ‌പരിചയങ്ങളും സജ്ജീകരണവും + +ഈ പാഠത്തിൽ, നാം പൈത്തൺ കോഡിൽ ചില പരീക്ഷണങ്ങൾ നടത്തും. നിങ്ങൾക്ക് ഈ പാഠത്തിലെ Jupyter Notebook കോഡ് നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ അല്ലെങ്കിൽ ക്ലൗഡിൽ എവിടെയെങ്കിലും ഓടിക്കാൻ കഴിയണം. + +നിങ്ങൾക്ക് [പാഠ നോട്ട്‌ബുക്ക്](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` വലിപ്പമുള്ള ഒരു ചതുര്‍ ബോർഡ് ആണെന്ന് കരുതാം, ഇങ്ങനെ: + +![പീറ്ററിന്റെ പരിസരം](../../../../translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.ml.png) + +ഈ ബോർഡിലെ ഓരോ സെല്ലും താഴെ പറയുന്നവയിൽ ഒന്നായിരിക്കും: + +* **നിലം**, പീറ്ററും മറ്റ് ജീവികളും നടക്കാൻ കഴിയുന്ന സ്ഥലം. +* **വെള്ളം**, ഇവിടെ നിങ്ങൾ നടക്കാൻ കഴിയില്ല. +* **മരം** അല്ലെങ്കിൽ **പുല്ല്**, വിശ്രമിക്കാൻ കഴിയുന്ന സ്ഥലം. +* **ആപ്പിൾ**, പീറ്റർ കണ്ടെത്താൻ ആഗ്രഹിക്കുന്ന ഭക്ഷണം. +* **വുൾഫ്**, അപകടകരമായത്, ഒഴിവാക്കേണ്ടത്. + +[`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()) } +``` + +സംക്ഷേപിച്ച്, ഈ സീനാരിയോയുടെ തന്ത്രവും ലക്ഷ്യവും ഇപ്രകാരം ആണ്: + +- **തന്ത്രം**, നമ്മുടെ ഏജന്റ് (പീറ്റർ) നിർവചിക്കുന്നത് ഒരു **നയം** (policy) എന്ന ഫംഗ്ഷൻ വഴി ആണ്. ഒരു നയം ഏതെങ്കിലും സ്റ്റേറ്റിൽ പ്രവർത്തനം തിരികെ നൽകുന്ന ഫംഗ്ഷനാണ്. നമ്മുടെ പ്രശ്നത്തിലെ സ്റ്റേറ്റ് ബോർഡും കളിക്കാരന്റെ നിലവിലെ സ്ഥാനവും ഉൾക്കൊള്ളുന്നു. + +- **ലക്ഷ്യം**, റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗിന്റെ ലക്ഷ്യം നല്ല ഒരു നയം പഠിച്ച് പ്രശ്നം ഫലപ്രദമായി പരിഹരിക്കുക ആണ്. എന്നാൽ അടിസ്ഥാനമായി, ഏറ്റവും ലളിതമായ നയം **റാൻഡം വാക്ക്** എന്നതാണ്. + +## റാൻഡം വാക്ക് + +ആദ്യം നാം റാൻഡം വാക്ക് തന്ത്രം നടപ്പിലാക്കി പ്രശ്നം പരിഹരിക്കാം. റാൻഡം വാക്കിൽ, അനുവദിച്ച പ്രവർത്തനങ്ങളിൽ നിന്ന് അടുത്ത പ്രവർത്തനം യാദൃച്ഛികമായി തിരഞ്ഞെടുക്കും, ആപ്പിൾ കണ്ടെത്തുന്നത് വരെ (കോഡ് ബ്ലോക്ക് 3). + +1. താഴെ കൊടുത്ത കോഡ് ഉപയോഗിച്ച് റാൻഡം വാക്ക് നടപ്പിലാക്കുക: + + ```python + def random_policy(m): + return random.choice(list(actions)) + + def walk(m,policy,start_position=None): + n = 0 # ചുവടുകളുടെ എണ്ണം + # പ്രാരംഭ സ്ഥാനം സജ്ജമാക്കുക + if start_position: + m.human = start_position + else: + m.random_start() + while True: + if m.at() == Board.Cell.apple: + return n # വിജയം! + if m.at() in [Board.Cell.wolf, Board.Cell.water]: + return -1 # വൃക്കയാൽ കഴിക്കപ്പെട്ടു അല്ലെങ്കിൽ മുങ്ങി + while True: + a = actions[policy(m)] + new_pos = m.move_pos(m.human,a) + if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water: + m.move(a) # യഥാർത്ഥ നീക്കം ചെയ്യുക + break + n+=1 + + walk(m,random_policy) + ``` + + `walk` വിളിപ്പ് അനുയോജ്യമായ പാതയുടെ നീളം തിരികെ നൽകണം, അത് ഓരോ റൺ-ലും വ്യത്യാസപ്പെടാം. + +1. വാക്ക് പരീക്ഷണം പല തവണ (ഉദാ: 100) ഓടിച്ച് ഫലമായ സ്ഥിതിവിവരക്കണക്കുകൾ പ്രിന്റ് ചെയ്യുക (കോഡ് ബ്ലോക്ക് 4): + + ```python + def print_statistics(policy): + s,w,n = 0,0,0 + for _ in range(100): + z = walk(m,policy) + if z<0: + w+=1 + else: + s += z + n += 1 + print(f"Average path length = {s/n}, eaten by wolf: {w} times") + + print_statistics(random_policy) + ``` + + ഒരു പാതയുടെ ശരാശരി നീളം ഏകദേശം 30-40 പടികളാണ്, ഇത് വളരെ കൂടുതലാണ്, കാരണം അടുത്ത ആപ്പിള്‍ വരെ ശരാശരി ദൂരം ഏകദേശം 5-6 പടികളാണ്. + + പീറ്ററിന്റെ ചലനം റാൻഡം വാക്ക് സമയത്ത് ഇങ്ങനെ കാണാം: + + ![പീറ്ററിന്റെ റാൻഡം വാക്ക്](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + +## റിവാർഡ് ഫംഗ്ഷൻ + +നമ്മുടെ നയം കൂടുതൽ ബുദ്ധിമുട്ടുള്ളതാക്കാൻ, ഏതെല്ലാ ചലനങ്ങൾ "മികച്ചതാണ്" എന്ന് മനസ്സിലാക്കണം. അതിനായി, നാം നമ്മുടെ ലക്ഷ്യം നിർവചിക്കണം. + +ലക്ഷ്യം ഒരു **റിവാർഡ് ഫംഗ്ഷൻ** ആയി നിർവചിക്കാം, അത് ഓരോ സ്റ്റേറ്റിനും ഒരു സ്കോർ മൂല്യം നൽകും. സംഖ്യ കൂടുതലായാൽ റിവാർഡ് ഫംഗ്ഷൻ മികച്ചതാണ്. (കോഡ് ബ്ലോക്ക് 5) + +```python +move_reward = -0.1 +goal_reward = 10 +end_reward = -10 + +def reward(m,pos=None): + pos = pos or m.human + if not m.is_valid(pos): + return end_reward + x = m.at(pos) + if x==Board.Cell.water or x == Board.Cell.wolf: + return end_reward + if x==Board.Cell.apple: + return goal_reward + return move_reward +``` + +റിവാർഡ് ഫംഗ്ഷനുകളുടെ ഒരു രസകരമായ കാര്യം, പലപ്പോഴും *നമുക്ക് ഗെയിം അവസാനത്തിൽ മാത്രമേ വലിയ റിവാർഡ് ലഭിക്കൂ* എന്നതാണ്. അതായത്, നമ്മുടെ ആൽഗോരിതം "നല്ല" പടികൾ ഓർമ്മിച്ച് അവയുടെ പ്രാധാന്യം വർദ്ധിപ്പിക്കണം. അതുപോലെ, മോശം ഫലങ്ങളിലേക്കുള്ള എല്ലാ ചലനങ്ങളും നിരുത്സാഹപ്പെടുത്തണം. + +## ക്യൂ-ലേണിംഗ് + +നാം ഇവിടെ ചർച്ച ചെയ്യാൻ പോകുന്ന ആൽഗോരിതം **ക്യൂ-ലേണിംഗ്** എന്നാണ്. ഈ ആൽഗോരിതത്തിൽ, നയം ഒരു ഫംഗ്ഷൻ (അഥവാ ഡാറ്റാ സ്ട്രക്ചർ) ആയ **ക്യൂ-ടേബിൾ** എന്നതിലൂടെ നിർവചിക്കപ്പെടുന്നു. ഇത് ഓരോ സ്റ്റേറ്റിലെയും പ്രവർത്തനങ്ങളുടെ "നല്ലത്വം" രേഖപ്പെടുത്തുന്നു. + +ഇത് ക്യൂ-ടേബിൾ എന്ന് വിളിക്കുന്നത്, സാധാരണയായി ഒരു ടേബിൾ അല്ലെങ്കിൽ ബഹുമാനസമമായ അറേ ആയി പ്രതിനിധാനം ചെയ്യുന്നത് സൗകര്യമുള്ളതിനാൽ ആണ്. നമ്മുടെ ബോർഡിന് `width` x `height` അളവുകൾ ഉള്ളതിനാൽ, നാം ക്യൂ-ടേബിൾ numpy അറേ ആയി പ്രതിനിധാനം ചെയ്യാം, ആകൃതി `width` x `height` x `len(actions)`: (കോഡ് ബ്ലോക്ക് 6) + +```python +Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) +``` + +നാം ക്യൂ-ടേബിളിലെ എല്ലാ മൂല്യങ്ങളും സമാനമായ മൂല്യത്തോടെ, നമ്മുടെ കേസിൽ 0.25, ആരംഭിക്കുന്നു. ഇത് "റാൻഡം വാക്ക്" നയത്തിന് പൊരുത്തപ്പെടുന്നു, കാരണം ഓരോ സ്റ്റേറ്റിലും എല്ലാ ചലനങ്ങളും സമാനമായി നല്ലതാണ്. നാം `plot` ഫംഗ്ഷനിലേക്ക് ക്യൂ-ടേബിൾ പാസ്സ് ചെയ്ത് ബോർഡിൽ ടേബിൾ ദൃശ്യവൽക്കരിക്കാം: `m.plot(Q)`. + +![പീറ്ററിന്റെ പരിസരം](../../../../translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.ml.png) + +ഓരോ സെല്ലിന്റെ മദ്ധ്യത്തിൽ ഒരു "അറ" കാണിക്കുന്നു, അത് പ്രിയപ്പെട്ട ചലന ദിശ സൂചിപ്പിക്കുന്നു. എല്ലാ ദിശകളും സമാനമായതിനാൽ, ഒരു ഡോട്ട് പ്രദർശിപ്പിക്കുന്നു. + +ഇപ്പോൾ നാം സിമുലേഷൻ നടത്തണം, പരിസരം അന്വേഷിച്ച്, ക്യൂ-ടേബിൾ മൂല്യങ്ങളുടെ മികച്ച വിതരണവും പഠിക്കണം, ഇത് ആപ്പിള്‍ കണ്ടെത്താനുള്ള പാത വേഗത്തിൽ കണ്ടെത്താൻ സഹായിക്കും. + +## ക്യൂ-ലേണിംഗിന്റെ സാരാംശം: ബെൽമാൻ സമവാക്യം + +നാം ചലനം ആരംഭിക്കുമ്പോൾ, ഓരോ പ്രവർത്തനത്തിനും അനുയോജ്യമായ റിവാർഡ് ഉണ്ടാകും, അതായത് നാം തിയറിയിൽ ഏറ്റവും ഉയർന്ന തൽസമയ റിവാർഡിന്റെ അടിസ്ഥാനത്തിൽ അടുത്ത പ്രവർത്തനം തിരഞ്ഞെടുക്കാം. എന്നാൽ, പല സ്റ്റേറ്റുകളിലും, ആ ചലനം ആപ്പിള്‍ കണ്ടെത്താനുള്ള ലക്ഷ്യം നേടില്ല, അതിനാൽ ഏത് ദിശ മികച്ചതാണെന്ന് ഉടൻ തീരുമാനിക്കാൻ കഴിയില്ല. + +> ഉടൻ ഫലം പ്രധാനമല്ല, സിമുലേഷൻ അവസാനം ലഭിക്കുന്ന അന്തിമ ഫലമാണ് പ്രധാനമെന്ന് ഓർക്കുക. + +ഈ വൈകിയ റിവാർഡ് പരിഗണിക്കാൻ, നാം **[ഡൈനാമിക് പ്രോഗ്രാമിംഗ്](https://en.wikipedia.org/wiki/Dynamic_programming)** ന്റെ സിദ്ധാന്തങ്ങൾ ഉപയോഗിക്കണം, ഇത് പ്രശ്നത്തെ പുനരാവർത്തനമായി ചിന്തിക്കാൻ സഹായിക്കുന്നു. + +നമുക്ക് ഇപ്പോൾ സ്റ്റേറ്റ് *s* ൽ ഉണ്ടെന്ന് കരുതുക, അടുത്ത സ്റ്റേറ്റ് *s'* ലേക്ക് പോകാൻ ആഗ്രഹിക്കുന്നു. അങ്ങനെ ചെയ്താൽ, നാം റിവാർഡ് ഫംഗ്ഷൻ നിർവചിക്കുന്ന തൽസമയ റിവാർഡ് *r(s,a)* ലഭിക്കും, കൂടാതെ ഭാവി റിവാർഡ് കൂടി. നമ്മുടെ ക്യൂ-ടേബിൾ ഓരോ പ്രവർത്തനത്തിന്റെ "ആകർഷകത" ശരിയായി പ്രതിഫലിപ്പിക്കുന്നുവെന്ന് കരുതിയാൽ, സ്റ്റേറ്റ് *s'* ൽ ഏറ്റവും ഉയർന്ന മൂല്യമുള്ള *Q(s',a')* പ്രവർത്തനം *a* തിരഞ്ഞെടുക്കും. അതിനാൽ, സ്റ്റേറ്റ് *s* ൽ ലഭിക്കാവുന്ന മികച്ച ഭാവി റിവാർഡ് `max`a'*Q(s',a')* ആയി നിർവചിക്കാം (max എല്ലാ പ്രവർത്തനങ്ങൾക്കുമുള്ളതാണ്). + +ഇത് സ്റ്റേറ്റ് *s* ൽ പ്രവർത്തനം *a* നുള്ള ക്യൂ-ടേബിൾ മൂല്യം കണക്കാക്കാനുള്ള **ബെൽമാൻ ഫോർമുല** നൽകുന്നു: + + + +ഇവിടെ γ എന്നത് **ഡിസ്‌കൗണ്ട് ഫാക്ടർ** ആണ്, ഇത് നിലവിലെ റിവാർഡ് ഭാവി റിവാർഡിനേക്കാൾ എത്രമാത്രം മുൻഗണന നൽകണമെന്ന് നിർണ്ണയിക്കുന്നു. + +## പഠന ആൽഗോരിതം + +മുകളിൽ നൽകിയ സമവാക്യം അടിസ്ഥാനമാക്കി, നാം പഠന ആൽഗോരിതത്തിനുള്ള പseudo-കോഡ് എഴുതാം: + +* എല്ലാ സ്റ്റേറ്റുകളിലും പ്രവർത്തനങ്ങളിലും സമാന സംഖ്യകൾ ഉപയോഗിച്ച് ക്യൂ-ടേബിൾ 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* ൽ പ്രവർത്തനം തിരഞ്ഞെടുക്കുമ്പോൾ ക്യൂ-ടേബിളിലെ മൂല്യങ്ങളുടെ അനുപാതത്തിൽ സാധ്യതകൾ ഉപയോഗിച്ച് ചെയ്യാം. തുടക്കത്തിൽ, ക്യൂ-ടേബിൾ മൂല്യങ്ങൾ എല്ലാം സമാനമായതിനാൽ ഇത് യാദൃച്ഛിക തിരഞ്ഞെടുപ്പായി കാണപ്പെടും, എന്നാൽ പരിസരം കൂടുതൽ പഠിക്കുമ്പോൾ, ഏജന്റ് ചിലപ്പോൾ പരീക്ഷിക്കാത്ത പാത തിരഞ്ഞെടുക്കാൻ അനുവദിച്ച്, ഏറ്റവും ഉത്തമ മാർഗം പിന്തുടരാൻ സാധ്യത കൂടുതലാകും. + +## പൈത്തൺ നടപ്പാക്കൽ + +ഇപ്പോൾ നാം പഠന ആൽഗോരിതം നടപ്പിലാക്കാൻ തയ്യാറാണ്. അതിന് മുമ്പ്, ക്യൂ-ടേബിളിലെ യാദൃച്ഛിക സംഖ്യകൾ പ്രവർത്തനങ്ങൾക്ക് അനുയോജ്യമായ സാധ്യതാ വെക്ടറായി മാറ്റുന്ന ഒരു ഫംഗ്ഷൻ വേണം. + +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 +``` + +ഈ ആൽഗോരിതം നടപ്പിലാക്കിയ ശേഷം, ക്യൂ-ടേബിൾ ഓരോ ഘട്ടത്തിലും വിവിധ പ്രവർത്തനങ്ങളുടെ ആകർഷകത നിർവചിക്കുന്ന മൂല്യങ്ങളാൽ അപ്ഡേറ്റ് ചെയ്യപ്പെടും. നാം ക്യൂ-ടേബിൾ ദൃശ്യവൽക്കരിക്കാൻ ഓരോ സെല്ലിലും ഒരു വെക്ടർ വരയ്ക്കാം, അത് ആഗ്രഹിക്കുന്ന ചലന ദിശ കാണിക്കും. ലളിതത്വത്തിന്, അറിന്റെ തലക്കെട്ട് പകരം ചെറിയ വൃത്തം വരയ്ക്കുന്നു. + + + +## നയം പരിശോധിക്കൽ + +ക്യൂ-ടേബിൾ ഓരോ സ്റ്റേറ്റിലും ഓരോ പ്രവർത്തനത്തിന്റെ "ആകർഷകത" പട്ടികയാക്കുന്നതിനാൽ, ഇത് ഉപയോഗിച്ച് നമ്മുടെ ലോകത്ത് ഫലപ്രദമായ നാവിഗേഷൻ നിർവചിക്കുക എളുപ്പമാണ്. ലളിതമായ സാഹചര്യത്തിൽ, ഏറ്റവും ഉയർന്ന ക്യൂ-ടേബിൾ മൂല്യമുള്ള പ്രവർത്തനം തിരഞ്ഞെടുക്കാം: (കോഡ് ബ്ലോക്ക് 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-Value അടിസ്ഥാനത്തിൽ "പോയിന്റ്" ചെയ്യുന്നതായി ഉണ്ടായേക്കാം, അപ്പോൾ ഏജന്റ് ആ സ്റ്റേറ്റുകൾക്കിടയിൽ അനന്തമായി സഞ്ചരിക്കാറുണ്ട്. + +## 🚀ചലഞ്ച് + +> **ടാസ്‌ക് 1:** `walk` ഫംഗ്ഷൻ മാറ്റി പാതയുടെ പരമാവധി നീളം ഒരു നിശ്ചിത ഘട്ടങ്ങളുടെ എണ്ണം (ഉദാഹരണത്തിന്, 100) ആയി പരിധിയിടുക, മുകളിൽ കൊടുത്ത കോഡ് ചിലപ്പോൾ ഈ മൂല്യം തിരികെ നൽകുന്നത് കാണുക. + +> **ടാസ്‌ക് 2:** `walk` ഫംഗ്ഷൻ മാറ്റി അത് മുമ്പ് പോയ സ്ഥലങ്ങളിലേക്ക് തിരികെ പോകരുത്. ഇത് `walk` ലൂപ്പിംഗ് തടയും, എങ്കിലും ഏജന്റ് രക്ഷപ്പെടാൻ കഴിയാത്ത ഒരു സ്ഥലത്ത് "പിടിച്ചുപോകാൻ" സാധ്യതയുണ്ട്. + +## നാവിഗേഷൻ + +പരിശീലന സമയത്ത് ഉപയോഗിച്ച നാവിഗേഷൻ നയം മെച്ചപ്പെട്ടതാണ്, ഇത് എക്സ്പ്ലോയിറ്റേഷൻ (exploitation) ഉം എക്സ്പ്ലോറേഷൻ (exploration) ഉം സംയോജിപ്പിക്കുന്നു. ഈ നയത്തിൽ, 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/ml/8-Reinforcement/1-QLearning/assignment.md b/translations/ml/8-Reinforcement/1-QLearning/assignment.md new file mode 100644 index 000000000..cd688b859 --- /dev/null +++ b/translations/ml/8-Reinforcement/1-QLearning/assignment.md @@ -0,0 +1,43 @@ + +# കൂടുതൽ യാഥാർത്ഥ്യമുള്ള ലോകം + +നമ്മുടെ സാഹചര്യത്തിൽ, പീറ്റർ തളരാതെ അല്ലെങ്കിൽ വിശക്കാതെ ഏകദേശം ചുറ്റിപ്പറക്കാൻ കഴിഞ്ഞു. കൂടുതൽ യാഥാർത്ഥ്യമുള്ള ലോകത്തിൽ, നമ്മൾ ഇടയ്ക്കിടെ ഇരുന്ന് വിശ്രമിക്കേണ്ടതും, കൂടാതെ ഭക്ഷണം കഴിക്കേണ്ടതും ഉണ്ടാകും. താഴെ കൊടുത്തിരിക്കുന്ന നിയമങ്ങൾ നടപ്പിലാക്കി നമ്മുടെ ലോകം കൂടുതൽ യാഥാർത്ഥ്യമാക്കാം: + +1. ഒരു സ്ഥലത്ത് നിന്ന് മറ്റൊരിടത്തേക്ക് നീങ്ങുമ്പോൾ, പീറ്റർ **ഊർജം** നഷ്ടപ്പെടുകയും കുറച്ച് **ക്ഷീണം** നേടുകയും ചെയ്യും. +2. ആപ്പിളുകൾ കഴിച്ച് പീറ്റർ കൂടുതൽ ഊർജം നേടാൻ കഴിയും. +3. പീറ്റർ വൃക്ഷത്തിനടിയിൽ അല്ലെങ്കിൽ പുൽമേടിൽ (അഥവാ - പച്ചത്തോട്ടം ഉള്ള ബോർഡ് ലൊക്കേഷനിലേക്ക് നടക്കുമ്പോൾ) വിശ്രമിച്ച് ക്ഷീണം ഒഴിവാക്കാം. +4. പീറ്റർ നരഭക്ഷകനെ കണ്ടെത്തി കൊല്ലണം. +5. നരഭക്ഷകനെ കൊല്ലാൻ, പീറ്ററിന് നിർദ്ദിഷ്ടമായ ഊർജവും ക്ഷീണവും വേണം, അല്ലെങ്കിൽ അവൻ യുദ്ധം തോറ്റുപോകും. + +## നിർദ്ദേശങ്ങൾ + +നിങ്ങളുടെ പരിഹാരത്തിന് തുടക്കമായി ഒറിജിനൽ [notebook.ipynb](notebook.ipynb) നോട്ട്‌ബുക്ക് ഉപയോഗിക്കുക. + +ഗെയിമിന്റെ നിയമങ്ങൾ അനുസരിച്ച് മുകളിൽ കൊടുത്ത റിവാർഡ് ഫംഗ്ഷൻ മാറ്റി, reinforcement learning ആൽഗോരിതം പ്രവർത്തിപ്പിച്ച് ഗെയിം ജയിക്കാനുള്ള മികച്ച തന്ത്രം പഠിപ്പിക്കുക, പിന്നെ റാൻഡം വാക്കുമായി നിങ്ങളുടെ ആൽഗോരിതത്തിന്റെ ഫലങ്ങൾ (ജയിച്ചും തോറ്റും ഗെയിമുകളുടെ എണ്ണം) താരതമ്യം ചെയ്യുക. + +> **കുറിപ്പ്**: നിങ്ങളുടെ പുതിയ ലോകത്തിൽ, സ്റ്റേറ്റ് കൂടുതൽ സങ്കീർണ്ണമാണ്, മനുഷ്യന്റെ സ്ഥാനം കൂടാതെ ക്ഷീണം, ഊർജം നിലകളും ഉൾപ്പെടുന്നു. സ്റ്റേറ്റ് (Board,energy,fatigue) എന്ന ട്യൂപ്പിളായി പ്രതിനിധാനം ചെയ്യാമോ, അല്ലെങ്കിൽ സ്റ്റേറ്റിനായി ഒരു ക്ലാസ് നിർവചിക്കാമോ (Board-ൽ നിന്നു derive ചെയ്യാനും കഴിയും), അല്ലെങ്കിൽ ഒറിജിനൽ `Board` ക്ലാസ് [rlboard.py](../../../../8-Reinforcement/1-QLearning/rlboard.py) ഫയലിൽ തന്നെ മാറ്റം വരുത്താം. + +നിങ്ങളുടെ പരിഹാരത്തിൽ, ദയവായി റാൻഡം വാക്ക് തന്ത്രത്തിന് ഉത്തരവാദിയായ കോഡ് സൂക്ഷിക്കുക, അവസാനം നിങ്ങളുടെ ആൽഗോരിതവും റാൻഡം വാക്കും തമ്മിലുള്ള ഫലങ്ങൾ താരതമ്യം ചെയ്യുക. + +> **കുറിപ്പ്**: ഇത് പ്രവർത്തിക്കാൻ hyperparameters ക്രമീകരിക്കേണ്ടി വരാം, പ്രത്യേകിച്ച് epochs-ന്റെ എണ്ണം. ഗെയിം വിജയിക്കുക (നരഭക്ഷകനെ യുദ്ധം ചെയ്യുക) അപൂർവമായ സംഭവമാണെന്ന് കണക്കിലെടുത്ത്, പരിശീലന സമയം വളരെ നീണ്ടേക്കാം. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണപരമായത് | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| | പുതിയ ലോക നിയമങ്ങളുടെ നിർവചനവും Q-Learning ആൽഗോരിതവും ചില വാചക വിശദീകരണങ്ങളും ഉള്ള ഒരു നോട്ട്‌ബുക്ക് അവതരിപ്പിച്ചിരിക്കുന്നു. Q-Learning റാൻഡം വാക്കുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ ഫലങ്ങൾ ഗണ്യമായി മെച്ചപ്പെടുത്തുന്നു. | നോട്ട്‌ബുക്ക് അവതരിപ്പിച്ചിരിക്കുന്നു, Q-Learning നടപ്പിലാക്കി റാൻഡം വാക്കുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ ഫലങ്ങൾ മെച്ചപ്പെട്ടിട്ടുണ്ട്, പക്ഷേ ഗണ്യമായില്ല; അല്ലെങ്കിൽ നോട്ട്‌ബുക്ക് ദുർബലമായി രേഖപ്പെടുത്തിയിട്ടുണ്ട്, കോഡ് നല്ല രീതിയിൽ ഘടിപ്പിച്ചിട്ടില്ല | ലോകത്തിന്റെ നിയമങ്ങൾ പുനർനിർവചിക്കാൻ ചില ശ്രമങ്ങൾ നടത്തിയിട്ടുണ്ട്, പക്ഷേ Q-Learning ആൽഗോരിതം പ്രവർത്തിക്കുന്നില്ല, അല്ലെങ്കിൽ റിവാർഡ് ഫംഗ്ഷൻ പൂർണ്ണമായി നിർവചിച്ചിട്ടില്ല | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/8-Reinforcement/1-QLearning/notebook.ipynb b/translations/ml/8-Reinforcement/1-QLearning/notebook.ipynb new file mode 100644 index 000000000..37b7ef2f2 --- /dev/null +++ b/translations/ml/8-Reinforcement/1-QLearning/notebook.ipynb @@ -0,0 +1,413 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "17e5a668646eabf5aabd0e9bfcf17876", + "translation_date": "2025-12-19T17:26:02+00:00", + "source_file": "8-Reinforcement/1-QLearning/notebook.ipynb", + "language_code": "ml" + } + }, + "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": [ + "## Actions and Policy\n", + "\n", + "നമ്മുടെ ഉദാഹരണത്തിൽ, പീറ്ററിന്റെ ലക്ഷ്യം ആപ്പിൾ കണ്ടെത്തുകയാണ്, എന്നാൽ വുൾഫ്‌ഫും മറ്റ് തടസ്സങ്ങളും ഒഴിവാക്കുകയാണ്. ആ പ്രവർത്തനങ്ങളെ ഒരു ഡിക്ഷണറിയായി നിർവചിച്ച്, അവയെ അനുയോജ്യമായ കോർഡിനേറ്റ് മാറ്റങ്ങളുടെ ജോഡികളുമായി മാപ്പ് ചെയ്യുക.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 2" + ] + }, + { + "source": [ + "നമ്മുടെ ഏജന്റായ (പീറ്റർ) തന്ത്രം ഒരു sogenannten **പോളിസി** എന്നതിലൂടെ നിർവചിക്കപ്പെടുന്നു. ഏറ്റവും ലളിതമായ പോളിസിയായ **റാൻഡം വാക്ക്** പരിഗണിക്കാം.\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", + "നമ്മുടെ ലേണിംഗ് ആൽഗോറിതത്തിനുള്ള പseudo-കോഡ് എഴുതുക:\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", + "## Exploit vs. Explore\n", + "\n", + "പരമാവധി ഫലപ്രദമായ മാർഗം എക്സ്പ്ലോറേഷൻ (അന്വേഷണം) ഉം എക്സ്പ്ലോയിറ്റേഷൻ (പ്രയോജനപ്പെടുത്തൽ) ഉം തമ്മിൽ സമതുലനം പുലർത്തുകയാണ്. നമ്മുടെ പരിസ്ഥിതിയെ കുറിച്ച് കൂടുതൽ പഠിക്കുമ്പോൾ, ഏറ്റവും മികച്ച മാർഗം പിന്തുടരാൻ സാധ്യത കൂടുതലായിരിക്കും, എന്നാൽ ഇടയ്ക്കിടെ പരീക്ഷിക്കാത്ത പാത തിരഞ്ഞെടുക്കുകയും ചെയ്യും.\n", + "\n", + "## Python നടപ്പാക്കൽ\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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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Tz9N/fr1mTRpEuecc47RkY4gpWTOnDmcd9553HHHHSxdupS8vLyIt6sKt6KcBCkl2dnZfPjhh8yaNYusrKyoK47BYJD9+/fz6KOPsnz5cnJzc42OdMqZPn069957L02bNmXKlCm8+eabjB8/Hl3XI9quKtyKcpK6dOlCVlYWVquVTp064ff7jY50hOzsbLp160b37t1ZuHAhV1111fG/SflbxowZw4wZM/jss8/YtGkTt956K5MnT474jShU4VaUkzBr1iwef/xxLr74Ylq3bs20adOYMWOG0bHKSSmZPXs2s2fPxuVyMWbMGAYNGsT8+fONjnbKGTVqFEVFRbjdbq699loyMjIi3qYq3LXEU089Rc+ePfH5fDXmRrCBQIDvvvuO9957j0AgEFVDEb1792bRokU0atSIzz//nOnTp9O7d2+jYx3h4osv5scff+Scc87h3nvvZcWKFVG9e2RNdcMNNzB48GDatWvH6NGjq2XjKlW4a4nx48fz2Wef0aNHD5544gl+/fVXgsGg0bEqJKWkZcuWfPfdd2RlZdGgQYOoGopo2bIlubm5TJw4EQCfz8fTTz/N/v37DU4WIoSgbdu2LFq0iIULF6LrOpmZmcyaNYuioiKj4ymVpAp3LVG2peovv/xC9+7dee2113j11Vf55ptvjI52VF9++SW33nord911Fw6HgyFDhvDpp58aHaucEIIff/yR22+/nauvvpoNGzYwbdo0XnvtNXbs2GF0PADq16/PunXrqF+/Pq+88grr16/niiuuYObMmZSWlhodT6kEVbhrocsuu4xXXnmFRo0a8ccffzBo0CB27txpdKwjxMfH43Q6sdlspKSk4HQ6mTp1qtGx/uLss8+mZ8+eADRu3JjBgwczc+ZM8vPzjQ12mAEDBtC4cehWsD179uTCCy/koYceiqqhJ+XvUQtwaikhBNdffz0ul4vrr7+ecePGsWPHDq655hruu+8+EhIS/nLT3urUo0cP7rzzTnRdp27duvznP//hnXfeoWPHjkyYMIHevXuTmJgYdYsxWrduzfjx4xk4cCDNmjXj5ZdfJjY21uhYR+jevTupqal06tSJ2267jREjRmCxqFJQGdX9c6h63LWcw+GgWbNmfPzxx6xfv55zzz2X/v37s3DhQtatW2dYLiEEW7dupX///rRt25asrCx69+7N+vXr2bJlCzff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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## നയം പരിശോധിക്കൽ\n", + "\n", + "Q-ടേബിൾ ഓരോ സംസ്ഥാനത്തും ഓരോ പ്രവർത്തനത്തിന്റെ \"ആകർഷകത\" പട്ടികപ്പെടുത്തുന്നതിനാൽ, നമ്മുടെ ലോകത്ത് കാര്യക്ഷമമായ നാവിഗേഷൻ നിർവചിക്കാൻ അതിനെ ഉപയോഗിക്കുന്നത് വളരെ എളുപ്പമാണ്. ഏറ്റവും ലളിതമായ സാഹചര്യത്തിൽ, ഏറ്റവും ഉയർന്ന Q-ടേബിൾ മൂല്യത്തിന് അനുയോജ്യമായ പ്രവർത്തനം തിരഞ്ഞെടുക്കാം:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "# code block 9" + ] + }, + { + "source": [ + "മുകളിൽ കൊടുത്ത കോഡ് പലതവണ ശ്രമിച്ചാൽ, ചിലപ്പോൾ അത് വെറും \"തളരുന്നു\" എന്ന് നിങ്ങൾ ശ്രദ്ധിക്കാം, അപ്പോൾ നോട്ട്ബുക്കിൽ STOP ബട്ടൺ അമർത്തി ഇടപെടേണ്ടിവരും.\n", + "\n", + "> **ടാസ്‌ക് 1:** പാതയുടെ പരമാവധി നീളം ഒരു നിശ്ചിത ഘട്ടങ്ങളുടെ എണ്ണം (ഉദാഹരണത്തിന്, 100) ആയി പരിധി നിശ്ചയിക്കാൻ `walk` ഫംഗ്ഷൻ മാറ്റുക, മുകളിൽ കൊടുത്ത കോഡ് ഇടക്കിടെ ഈ മൂല്യം തിരികെ നൽകുന്നത് കാണുക.\n", + "\n", + "> **ടാസ്‌ക് 2:** `walk` ഫംഗ്ഷൻ ഇതിനകം പോയ സ്ഥലങ്ങളിലേക്ക് മടങ്ങിപ്പോകാതിരിക്കാൻ മാറ്റുക. ഇതിലൂടെ `walk` ലൂപ്പിൽ പെടുന്നത് തടയാം, എങ്കിലും ഏജന്റ് രക്ഷപെടാൻ കഴിയാത്ത ഒരു സ്ഥലത്ത് \"പിടിച്ചുപോകാൻ\" സാധ്യതയുണ്ട്.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average path length = 5.31, eaten by wolf: 0 times\n" + ] + } + ], + "source": [ + "\n", + "# code block 10" + ] + }, + { + "source": [ + "## പഠന പ്രക്രിയയുടെ അന്വേഷണം\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 57 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(lpath)" + ] + }, + { + "source": [ + "## Exercise\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/ml/8-Reinforcement/1-QLearning/solution/Julia/README.md b/translations/ml/8-Reinforcement/1-QLearning/solution/Julia/README.md new file mode 100644 index 000000000..d7c2d2b0f --- /dev/null +++ b/translations/ml/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/ml/8-Reinforcement/1-QLearning/solution/R/README.md b/translations/ml/8-Reinforcement/1-QLearning/solution/R/README.md new file mode 100644 index 000000000..b066e03ca --- /dev/null +++ b/translations/ml/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/ml/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb b/translations/ml/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb new file mode 100644 index 000000000..ddc2870a8 --- /dev/null +++ b/translations/ml/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb @@ -0,0 +1,426 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "eadbd20d2a075efb602615ad90b1e97a", + "translation_date": "2025-12-19T17:29:12+00:00", + "source_file": "8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# പീറ്ററും വുൾഫും: യാഥാർത്ഥ്യപരമായ പരിസ്ഥിതി\n", + "\n", + "നമ്മുടെ സാഹചര്യത്തിൽ, പീറ്റർ തളരാതെ അല്ലെങ്കിൽ വിശക്കാതെ ഏകദേശം ചലിക്കാനായിരുന്നു സാധിച്ചത്. കൂടുതൽ യാഥാർത്ഥ്യപരമായ ലോകത്തിൽ, നമ്മൾ ഇടയ്ക്കിടെ ഇരുന്ന് വിശ്രമിക്കേണ്ടതും, കൂടാതെ ഭക്ഷണം കഴിക്കേണ്ടതും ഉണ്ടാകും. താഴെ കൊടുത്തിരിക്കുന്ന നിയമങ്ങൾ നടപ്പിലാക്കി നമ്മുടെ ലോകം കൂടുതൽ യാഥാർത്ഥ്യമാക്കാം:\n", + "\n", + "1. ഒരു സ്ഥലത്ത് നിന്ന് മറ്റൊരിടത്തേക്ക് ചലിക്കുന്നതിലൂടെ, പീറ്റർ **ഊർജം** നഷ്ടപ്പെടുകയും കുറച്ച് **ക്ലാന്തി** നേടുകയും ചെയ്യും.\n", + "2. ആപ്പിളുകൾ കഴിച്ച് പീറ്റർ കൂടുതൽ ഊർജം നേടാൻ കഴിയും.\n", + "3. പീറ്റർ മരത്തിനടിയിൽ അല്ലെങ്കിൽ പുൽമേടിൽ (അഥവാ മരമോ പുൽമേടോ ഉള്ള ബോർഡ് ലൊക്കേഷനിലേക്ക് നടക്കുക - പച്ചത്തോട്ടം) വിശ്രമിച്ച് ക്ലാന്തി കുറക്കാൻ കഴിയും.\n", + "4. പീറ്റർ വുൾഫിനെ കണ്ടെത്തി കൊന്നിരിക്കണം.\n", + "5. വുൾഫിനെ കൊല്ലാൻ, പീറ്ററിന് നിർദ്ദിഷ്ടമായ ഊർജവും ക്ലാന്തിയും വേണം, അല്ലെങ്കിൽ അവൻ യുദ്ധം തോറ്റുപോകും.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import random\n", + "import math\n", + "from rlboard import *" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "width, height = 8,8\n", + "m = Board(width,height)\n", + "m.randomize(seed=13)\n", + "m.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "actions = { \"U\" : (0,-1), \"D\" : (0,1), \"L\" : (-1,0), \"R\" : (1,0) }\n", + "action_idx = { a : i for i,a in enumerate(actions.keys()) }" + ] + }, + { + "source": [ + "## സ്റ്റേറ്റ് നിർവചിക്കൽ\n", + "\n", + "നമ്മുടെ പുതിയ ഗെയിം നിയമങ്ങളിൽ, ഓരോ ബോർഡ് സ്റ്റേറ്റിലും ഊർജ്ജവും ക്ഷീണവും ട്രാക്ക് ചെയ്യേണ്ടതുണ്ട്. അതിനാൽ, നിലവിലെ പ്രശ്നത്തിന്റെ സ്റ്റേറ്റ് സംബന്ധിച്ച എല്ലാ ആവശ്യമായ വിവരങ്ങളും, ബോർഡിന്റെ സ്ഥിതിയും, നിലവിലെ ഊർജ്ജവും ക്ഷീണവും, ടെർമിനൽ സ്റ്റേറ്റിൽ നാം വുൾഫിനെ ജയിക്കാമോ എന്നതും ഉൾക്കൊള്ളുന്ന `state` എന്ന ഒബ്ജക്റ്റ് സൃഷ്ടിക്കും:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "class state:\n", + " def __init__(self,board,energy=10,fatigue=0,init=True):\n", + " self.board = board\n", + " self.energy = energy\n", + " self.fatigue = fatigue\n", + " self.dead = False\n", + " if init:\n", + " self.board.random_start()\n", + " self.update()\n", + "\n", + " def at(self):\n", + " return self.board.at()\n", + "\n", + " def update(self):\n", + " if self.at() == Board.Cell.water:\n", + " self.dead = True\n", + " return\n", + " if self.at() == Board.Cell.tree:\n", + " self.fatigue = 0\n", + " if self.at() == Board.Cell.apple:\n", + " self.energy = 10\n", + "\n", + " def move(self,a):\n", + " self.board.move(a)\n", + " self.energy -= 1\n", + " self.fatigue += 1\n", + " self.update()\n", + "\n", + " def is_winning(self):\n", + " return self.energy > self.fatigue" + ] + }, + { + "source": [ + "നമുക്ക് റാൻഡം വാക്ക് ഉപയോഗിച്ച് പ്രശ്നം പരിഹരിക്കാൻ ശ്രമിക്കാം, വിജയിക്കുമോ എന്ന് നോക്കാം:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "def random_policy(state):\n", + " return random.choice(list(actions))\n", + "\n", + "def walk(board,policy):\n", + " n = 0 # number of steps\n", + " s = state(board)\n", + " while True:\n", + " if s.at() == Board.Cell.wolf:\n", + " if s.is_winning():\n", + " return n # success!\n", + " else:\n", + " return -n # failure!\n", + " if s.at() == Board.Cell.water:\n", + " return 0 # died\n", + " a = actions[policy(m)]\n", + " s.move(a)\n", + " n+=1\n", + "\n", + "walk(m,random_policy)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Killed by wolf = 5, won: 1 times, drown: 94 times\n" + ] + } + ], + "source": [ + "def print_statistics(policy):\n", + " s,w,n = 0,0,0\n", + " for _ in range(100):\n", + " z = walk(m,policy)\n", + " if z<0:\n", + " w+=1\n", + " elif z==0:\n", + " n+=1\n", + " else:\n", + " s+=1\n", + " print(f\"Killed by wolf = {w}, won: {s} times, drown: {n} times\")\n", + "\n", + "print_statistics(random_policy)" + ] + }, + { + "source": [ + "## റിവാർഡ് ഫംഗ്ഷൻ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def reward(s):\n", + " r = s.energy-s.fatigue\n", + " if s.at()==Board.Cell.wolf:\n", + " return 100 if s.is_winning() else -100\n", + " if s.at()==Board.Cell.water:\n", + " return -100\n", + " return r" + ] + }, + { + "source": [ + "## Q-ലേണിംഗ് ആൽഗോറിതം\n", + "\n", + "യഥാർത്ഥ പഠന ആൽഗോറിതം വളരെ മാറ്റമില്ലാതെ തന്നെ തുടരുന്നു, നാം ബോർഡ് സ്ഥാനം എന്നതിന് പകരം `state` ഉപയോഗിക്കുന്നു.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def probs(v,eps=1e-4):\n", + " v = v-v.min()+eps\n", + " v = v/v.sum()\n", + " return v" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "" + ] + } + ], + "source": [ + "\n", + "from IPython.display import clear_output\n", + "\n", + "lpath = []\n", + "\n", + "for epoch in range(10000):\n", + " clear_output(wait=True)\n", + " print(f\"Epoch = {epoch}\",end='')\n", + "\n", + " # Pick initial point\n", + " s = state(m)\n", + " \n", + " # Start travelling\n", + " n=0\n", + " cum_reward = 0\n", + " while True:\n", + " x,y = s.board.human\n", + " v = probs(Q[x,y])\n", + " while True:\n", + " a = random.choices(list(actions),weights=v)[0]\n", + " dpos = actions[a]\n", + " if s.board.is_valid(s.board.move_pos(s.board.human,dpos)):\n", + " break \n", + " s.move(dpos)\n", + " r = reward(s)\n", + " if abs(r)==100: # end of game\n", + " print(f\" {n} steps\",end='\\r')\n", + " lpath.append(n)\n", + " break\n", + " alpha = np.exp(-n / 3000)\n", + " gamma = 0.5\n", + " ai = action_idx[a]\n", + " Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())\n", + " n+=1" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(lpath)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/8-Reinforcement/1-QLearning/solution/notebook.ipynb b/translations/ml/8-Reinforcement/1-QLearning/solution/notebook.ipynb new file mode 100644 index 000000000..4e42d76a5 --- /dev/null +++ b/translations/ml/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:31:52+00:00", + "source_file": "8-Reinforcement/1-QLearning/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# പീറ്ററും വുൾഫും: റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ് പ്രൈമർ\n", + "\n", + "ഈ ട്യൂട്ടോറിയലിൽ, നാം പാത കണ്ടെത്തൽ പ്രശ്നത്തിൽ റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ് എങ്ങനെ പ്രയോഗിക്കാമെന്ന് പഠിക്കും. സജ്ജീകരണം റഷ്യൻ സംഗീതകാരൻ [സെർഗെയ് പ്രൊകോഫിയേവ്](https://en.wikipedia.org/wiki/Sergei_Prokofiev) രചിച്ച [പീറ്ററും വുൾഫും](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) സംഗീത നാടകകഥയിൽ നിന്നാണ് പ്രചോദനം. ഇത് യുവ പയനിയർ പീറ്ററുടെ കഥയാണ്, അവൻ ധൈര്യത്തോടെ തന്റെ വീട്ടിൽ നിന്ന് കാട്ടിലെ തുറസ്സിലേക്ക് വുൾഫിനെ പിന്തുടരാൻ പോകുന്നു. പീറ്ററിന് ചുറ്റുപാടുകൾ അന്വേഷിക്കാൻ സഹായിക്കുന്ന, മികച്ച നാവിഗേഷൻ മാപ്പ് നിർമ്മിക്കാൻ സഹായിക്കുന്ന മെഷീൻ ലേണിംഗ് ആൽഗോരിതങ്ങൾ നാം പരിശീലിപ്പിക്കും.\n", + "\n", + "ആദ്യം, ചില ഉപകാരപ്രദമായ ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യാം:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import random\n", + "import math" + ] + }, + { + "source": [ + "## റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിങ്ങിന്റെ അവലോകനം\n", + "\n", + "**റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ്** (RL) ഒരു പഠന സാങ്കേതിക വിദ്യയാണ്, ഇത് നമ്മെ ഒരു **ഏജന്റ്**-ന്റെ ഏറ്റവും അനുയോജ്യമായ പെരുമാറ്റം ഒരു **പരിസ്ഥിതി**-യിൽ നിരവധി പരീക്ഷണങ്ങൾ നടത്തിക്കൊണ്ട് പഠിക്കാൻ അനുവദിക്കുന്നു. ഈ പരിസ്ഥിതിയിലെ ഏജന്റിന് ഒരു **ലക്ഷ്യം** ഉണ്ടാകണം, അത് ഒരു **റിവാർഡ് ഫംഗ്ഷൻ** വഴി നിർവചിക്കപ്പെടുന്നു.\n", + "\n", + "## പരിസ്ഥിതി\n", + "\n", + "സൗകര്യത്തിനായി, പീറ്ററിന്റെ ലോകം `width` x `height` വലുപ്പമുള്ള ഒരു ചതുരശ്ര ബോർഡായി പരിഗണിക്കാം. ഈ ബോർഡിലെ ഓരോ സെല്ലും താഴെപ്പറയുന്നവയിൽ ഒന്നായിരിക്കും:\n", + "* **നിലം**, പീറ്ററും മറ്റ് ജീവികളും നടക്കാൻ കഴിയുന്ന സ്ഥലം\n", + "* **വെള്ളം**, ഇവിടെ നിങ്ങൾ തീർച്ചയായും നടക്കാൻ കഴിയില്ല\n", + "* **ഒരു മരം** അല്ലെങ്കിൽ **പുല്ല്** - നിങ്ങൾക്ക് വിശ്രമിക്കാനാകുന്ന സ്ഥലം\n", + "* **ഒരു ആപ്പിൾ**, പീറ്റർ താനെ ഭക്ഷിപ്പിക്കാൻ കണ്ടെത്താൻ സന്തോഷപ്പെടുന്ന ഒന്നിനെ പ്രതിനിധീകരിക്കുന്നു\n", + "* **ഒരു നരികെട്ട്**, ഇത് അപകടകരമാണ്, അതിനാൽ ഒഴിവാക്കണം\n", + "\n", + "പരിസ്ഥിതിയുമായി പ്രവർത്തിക്കാൻ, `Board` എന്ന ക്ലാസ് നിർവചിക്കും. ഈ നോട്ട്‌ബുക്ക് വളരെ തിരക്കേറിയതാകാതിരിക്കാൻ, ബോർഡുമായി ബന്ധപ്പെട്ട എല്ലാ കോഡും വേർതിരിച്ച `rlboard` മോഡ്യൂളിലേക്ക് മാറ്റിയിട്ടുണ്ട്, അത് ഇപ്പോൾ നാം ഇറക്കുമതി ചെയ്യുന്നു. നടപ്പാക്കലിന്റെ ആന്തരിക വിവരങ്ങൾക്കായി നിങ്ങൾക്ക് ഈ മോഡ്യൂളിന്റെ ഉള്ളിലേക്ക് നോക്കാം.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from rlboard import *" + ] + }, + { + "source": [ + "ഇപ്പോൾ ഒരു യാദൃച്ഛിക ബോർഡ് സൃഷ്ടിച്ച് അത് എങ്ങനെ കാണപ്പെടുന്നു എന്ന് നോക്കാം:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "width, height = 8,8\n", + "m = Board(width,height)\n", + "m.randomize(seed=13)\n", + "m.plot()" + ] + }, + { + "source": [ + "## പ്രവർത്തനങ്ങളും നയം\n", + "\n", + "നമ്മുടെ ഉദാഹരണത്തിൽ, പീറ്ററിന്റെ ലക്ഷ്യം ആപ്പിൾ കണ്ടെത്തുകയാണ്, പക്ഷേ വുൾഫ് കൂടാതെ മറ്റ് തടസ്സങ്ങൾ ഒഴിവാക്കുകയാണ്. ഇത് ചെയ്യാൻ, അവൻ അടിസ്ഥാനപരമായി ചുറ്റിപ്പറ്റി നടക്കാം ആപ്പിൾ കണ്ടെത്തുന്നതുവരെ. അതിനാൽ, ഏതെങ്കിലും സ്ഥാനത്ത് അവൻ താഴെപ്പറയുന്ന പ്രവർത്തനങ്ങളിൽ ഒന്നിനെ തിരഞ്ഞെടുക്കാം: മുകളിൽ, താഴെ, ഇടത്, വലത്. ആ പ്രവർത്തനങ്ങളെ നാം ഒരു നിഘണ്ടുവായി നിർവചിച്ച്, അവയെ അനുയോജ്യമായ കോഓർഡിനേറ്റ് മാറ്റങ്ങളുമായി മാപ്പ് ചെയ്യാം. ഉദാഹരണത്തിന്, വലത്തേക്ക് നീങ്ങുന്നത് (`R`) ഒരു ജോഡി `(1,0)` എന്നതിന് തുല്യമാണ്.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "actions = { \"U\" : (0,-1), \"D\" : (0,1), \"L\" : (-1,0), \"R\" : (1,0) }\n", + "action_idx = { a : i for i,a in enumerate(actions.keys()) }" + ] + }, + { + "source": [ + "നമ്മുടെ ഏജന്റായ (പീറ്റർ) തന്ത്രം ഒരു sogenannten **പോളിസി** എന്നതിലൂടെ നിർവചിക്കപ്പെടുന്നു. ഏറ്റവും ലളിതമായ പോളിസിയായ **റാൻഡം വാക്ക്** പരിഗണിക്കാം.\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-ടേബിൾ `width` x `height` x `len(actions)` ആകൃതിയിലുള്ള numpy അറേ ആയി പ്രതിനിധീകരിക്കാം:\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-ടേബിൾ ബോർഡിൽ ദൃശ്യവത്കരിക്കാൻ plot ഫംഗ്ഷനിലേക്ക് പാസ്സ് ചെയ്യുക:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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1fB4PKxatYoRI0bw4YcfMn/+fDp27Mj69eutjlZjx44d2O12rrrqKv71r3+xcOFCCgoKOHDggNXRanz66acMGjSIDh064Ha7efHFF1m0aFFY/QX42muv8bvf/Q6n08mll17Kn/70J1577bVGXacUtzhC586d2b59O/369aNNmzZs2bKF7Oxsq2PVkp2dzY8//kj//v1JTU3l+++/p0uXLlbHqhEVFUXr1q1RStG/f38CgQCHDh2iVatWVkerkZaWhmmatGnThvPOO4+ioiKSkpKIj4+3OlqNdu3asWfPHs4//3zOPPNMtm/fTufOneudj/Fky87OJjc3l/79+9OiRQs2btzY6O8XKW5xhO7du1NQUMD8+fN57733eP/99znvvPOsjlXLeeedx5dffsn69eu55557yMvLo3v37lbHquFwOOjcuTNvvvkmLpeLoUOHopQiKyvL6mg1MjIySElJYebMmXi9XiZNmkRWVhaJiYlWR6vRsWNHXC4Xf/vb31i7di0vv/wy55xzTlgVd69evdi4cSPLly/nmWeeYc2aNY0+dBcms7yLcPPFF1/w3Xff8cMPP4TdmCJAcnIyubm5vPfee1x99dVhVdrV+vfvz9atW8nJyWHlypVhtSVb7b777uPee+9lypQpfP/991bHOaq3336bwsJClixZwrZt26yOcwSbzcaWLVv4/PPPUUoxY8aMRl+nFLeoU7du3ejWrZvVMeo1ZMgQqyMc09SpU62OUC+lFH/5y1+sjlGvVq1aceedd1odo14XX3zxSVuXDJUIIUSEkeIWQogII8UthBARRopbCCEijBS3EEJEGCluIYSIMMcsbqXU6Uqpz5RS3yulvlNK/SG0PF0p9YlSKjf0OS20XCmlnldK7VBKbVJKndvY/wghhDiVHM8WdxC4T2vdFbgA+L1SqivwELBCa90JWBH6GuBXQKfQx3jgxQZPLYQQp7BjFrfWulBr/Z/Q7UrgByALuA6YF3rYPOD60O3rgPm6yv8BqUqp8LlAgxBCRLifNcatlGoHnAOsBVporQtDd+0HWoRuZwE/Hva0vaFlP32t8Uqp9Uqp9YGA52fGFkKIU9dxF7dSKhFYBEzSWte6ar2uumr4z7pyuNZ6tta6t9a6t8MR93OeKoQQp7TjKm6llIOq0l6otX4/tLioeggk9Ln6Ir4FwOmHPb11aJkQQogG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1r+LXq+XioqKsM5Y3/tEhcObKD09Xd9///1Wx6iTy+Xi4MGDtGvXzuoodSosLCQmJob09HSro9Rp27ZttG/fPqyHUTZu3MjZZ59tdYw6BQIBvv56F4cONf7F+n+p2NhSzjnHR6tGmv2oIeTl5ZGZmdnoM9WciGeeeYbS0tKj7yTSWlv+kZmZqcNZbm6unj17ttUx6vXBBx/o1atXWx2jXo8//rguLS21OkadTNPUEyZMsDpGvUpKSnSvXjm66pJg4fnRsuXXevHixVZ/q+o1a9YsnZuba3WMeoV68aidKWPcQggRYaS4hRAiwkhxCyFEhJHiFkKICCPFLYQQEUaKWwghIowUtxBCRBgpbiGEiDBS3EIIEWGkuIUQIsJIcQshRISR4hZCiAgjxS2EEBFGilsIISKMFLcQQkQYKW4hhIgwTba4V69eHdZTZAWDQdatW2d1jHqVlJSQm5trdYx67dixg5KSEqtj1Oubb74hGAxaHSOiuVwuNm/ebHWMeu3du5eCgoKTsq4wmXOy4axfv54PPviA2NhY/vWvf3HxxRdz2WWXWR2rlnfffZeNGzcSHR3NkiVLGD16NGeeeabVsWp55plnqKiowGazEQgEeOSRR4iLi7M6Vg2Px8O0adNwOByYpklSUhKTJ0+2OlYtO3bsYO7cucTExLBkyRKys7MZNmyY1bEizssvv8zu3btxOBy89dZbTJo0iebNm1sdq4Zpmjz22GM1G4pKKf70pz9hszXednGT2uLWWrNhwwZM0+QPf/gDLVu25PPPPw+rLW+tNf/85z/p3r07d999N0VFRezatSvsMs6bN48bbriB3/72t3zyySe43W6rY9Xi9Xr597//zejRo7nxxhuZP39+2H0Pd+3axf79+5kwYQJnn302H374YVhljARaaxYuXMill17K+PHj2bhxI8XFxWH1fTRNk7fffpvhw4dz8803884772CaZqOus0kVd35+Pps2baKyspJf/epXjB49mtjYWFavXm11tBrvv/8+F1xwAXPnzmXy5MlMmzaNhQsXUlFRYXW0GlOnTiUnJ4fbbruN5cuX88YbbzB+/HirY9Uybtw4Jk2axI033ojP5+P5559nypQpVseqUVlZyfz588nKymLw4MEMHjyYiy66iEWLFlkdLaL87W9/48477+Shhx7ixRdf5B//+AdTp05t9GL8OcaP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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## Q-ലേണിങ്ങിന്റെ സാരാംശം: ബെൽമാൻ സമവാക്യം மற்றும் ലേണിംഗ് ആൽഗോരിതം\n", + "\n", + "നമ്മുടെ ലേണിംഗ് ആൽഗോരിതത്തിനുള്ള ഒരു സ്യൂഡോ-കോഡ് എഴുതുക:\n", + "\n", + "* എല്ലാ സ്റ്റേറ്റുകളും ആക്ഷനുകളും സമാനമായ സംഖ്യകളോടെ Q-ടേബിൾ Q ആരംഭിക്കുക\n", + "* ലേണിംഗ് നിരക്ക് $\\alpha\\leftarrow 1$ ആയി സജ്ജമാക്കുക\n", + "* അനേകം തവണ സിമുലേഷൻ ആവർത്തിക്കുക\n", + " 1. യാദൃച്ഛിക സ്ഥാനത്ത് ആരംഭിക്കുക\n", + " 1. ആവർത്തിക്കുക\n", + " 1. സ്റ്റേറ്റ് $s$-ൽ ഒരു ആക്ഷൻ $a$ തിരഞ്ഞെടുക്കുക\n", + " 2. പുതിയ സ്റ്റേറ്റ് $s'$-ലേക്ക് നീങ്ങുന്നതിലൂടെ ആക്ഷൻ നടപ്പിലാക്കുക\n", + " 3. ഗെയിം അവസാനിക്കുന്ന സാഹചര്യം നേരിടുകയോ, മൊത്തം റിവാർഡ് വളരെ ചെറുതായിരിക്കുകയോ ചെയ്താൽ സിമുലേഷൻ അവസാനിപ്പിക്കുക \n", + " 4. പുതിയ സ്റ്റേറ്റിൽ റിവാർഡ് $r$ കണക്കാക്കുക\n", + " 5. ബെൽമാൻ സമവാക്യത്തിന് അനുസരിച്ച് Q-ഫംഗ്ഷൻ അപ്ഡേറ്റ് ചെയ്യുക: $Q(s,a)\\leftarrow (1-\\alpha)Q(s,a)+\\alpha(r+\\gamma\\max_{a'}Q(s',a'))$\n", + " 6. $s\\leftarrow s'$\n", + " 7. മൊത്തം റിവാർഡ് അപ്ഡേറ്റ് ചെയ്ത് $\\alpha$ കുറയ്ക്കുക.\n", + "\n", + "## Exploit vs. Explore\n", + "\n", + "പരമാവധി ഫലപ്രദമായ സമീപനം എക്സ്പ്ലോറേഷനും എക്സ്പ്ലോയിറ്റേഷനും തമ്മിൽ സമതുലനം പുലർത്തുകയാണ്. നമ്മുടെ പരിസ്ഥിതിയെ കുറിച്ച് കൂടുതൽ പഠിക്കുമ്പോൾ, ഏറ്റവും മികച്ച മാർഗം പിന്തുടരാൻ സാധ്യത കൂടുതലായിരിക്കും, എന്നാൽ ഇടയ്ക്കിടെ പരീക്ഷിക്കാത്ത പാത തിരഞ്ഞെടുക്കുകയും ചെയ്യും.\n", + "\n", + "## Python നടപ്പാക്കൽ\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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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DBhgaPG22+307NmTbt26hQv1W2+9xWuvvUbv3r0544wzDP/lEqvUr7UIevPNN7n55ptPuWhX8Xg8XHPNNaxcuTJCyequZcuWMWHCBGbMmMFzzz3HE088YXSkOkkIgc1mw2w289RTT7Fs2TKWLl164r9YCywWS/h2dtdddx2apjFv3jw+/vhjo6PFLFW4I2TBggXcddddR/VnCyFwOBwnbDUIIUhISDhq27Zt27j55pv57rvvopK3LiguLmbt2rUsWLCAl19+mcTERFq0aMHatWuNjlbnTZkyhT179sTkxcCxY8fy9NNPs3v3bj744AOj48QkVbhrSNM03n77bSZPnkxZWdlR32vVqhWzZ88+YX+d1WplyZIlpKSkHDVJZ/v27Vx55ZXs2LGjQY42SU5O5qyzzmLZsmWMGzeOyy67jBdffJFdu3ZRVlbWIF+TSLHb7XTp0oWcnJxqRzwZyW63M3bsWDZv3szKlStj/t+6trt0VOGuASklK1eu5Prrr6ekpCS8vXHjxvTv359vv/2WzMzMk/pHPfvss/n111+55557jmp95+bm0q9fP/Lz86PyHGKZxWKhdevWLF68mBUrVjBnzhzuv/9+9u/fz7XXXsvy5cvZs2eP0THrrAsvvJDmzZvz5ptvxmTxdjgcPPjggyxZsiTmuw1r+xeLKtw1oOs6f//734/q027atCnTpk3jk08+oVGjRid9rKrp8ZMmTeK22247agnQiooK5s6dG/Otjmg477zzWLZsGX6/n48//pg777yTKVOm8N5777FmzRreeOMNHnnkEbxer9FRj+nLL7/kvPPOi8klXYUQjBkzBiEE//d//2d0nGMSQvDMM8+wZs2amOzWqZKZmUnLli354YcfauV8qnDXgBCCVq1ahdcZsVqtTJ8+nVGjRpGcnPy73z4JIcjIyOC+++5j/Pjx4e12u73WR1IkJCQwatSomFnf4qabbjpqpl9cXBwPP/wwo0eP5txzz+XKK6/kiSeeCA91ixUrVqzgvPPOIy4uzugo1frLX/5Cy5YtefLJJ2PqtasihOCuu+7il19+4ZNPPonJjFWFe9OmTbVyPlW4a0AIwfTp05k8eTJt27Zl/fr1jB49+jcXGn/vf7S0tDRmzJjByy+/TJs2bZg9e3a4ZVRbqropYr0rok2bNgwaNIi33nqLjh070r17d7766isOHDhg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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## നയം പരിശോധിക്കൽ\n", + "\n", + "Q-ടേബിൾ ഓരോ സംസ്ഥാനത്തെയും ഓരോ പ്രവർത്തനത്തിന്റെയും \"ആകർഷകത\" പട്ടികപ്പെടുത്തുന്നതിനാൽ, നമ്മുടെ ലോകത്ത് കാര്യക്ഷമമായ നാവിഗേഷൻ നിർവഹിക്കാൻ അതിനെ ഉപയോഗിക്കുന്നത് വളരെ എളുപ്പമാണ്. ഏറ്റവും ലളിതമായ സാഹചര്യത്തിൽ, ഏറ്റവും ഉയർന്ന Q-ടേബിൾ മൂല്യത്തിന് അനുയോജ്യമായ പ്രവർത്തനം തിരഞ്ഞെടുക്കാം:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "def qpolicy_strict(m):\n", + " x,y = m.human\n", + " v = probs(Q[x,y])\n", + " a = list(actions)[np.argmax(v)]\n", + " return a\n", + "\n", + "walk(m,qpolicy_strict)" + ] + }, + { + "source": [ + "മുകളിൽ കൊടുത്ത കോഡ് പലതവണ ശ്രമിച്ചാൽ, ചിലപ്പോൾ അത് വെറും \"തളരുന്നു\" എന്ന് നിങ്ങൾ ശ്രദ്ധിക്കാം, അതിനാൽ നോട്ട്ബുക്കിൽ STOP ബട്ടൺ അമർത്തി ഇടപെടേണ്ടിവരും.\n", + "\n", + "> **ടാസ്‌ക് 1:** പാതയുടെ പരമാവധി നീളം ഒരു നിശ്ചിത ഘട്ടങ്ങളുടെ എണ്ണം (ഉദാഹരണത്തിന്, 100) ആയി പരിധി നിശ്ചയിക്കാൻ `walk` ഫംഗ്ഷൻ മാറ്റുക, മുകളിൽ കൊടുത്ത കോഡ് സമയകാലക്രമത്തിൽ ഈ മൂല്യം തിരികെ നൽകുന്നത് കാണുക.\n", + "\n", + "> **ടാസ്‌ക് 2:** `walk` ഫംഗ്ഷൻ ഇതിനകം പോയ സ്ഥലങ്ങളിലേക്ക് മടങ്ങിപ്പോകാതിരിക്കാൻ മാറ്റുക. ഇത് `walk` ലൂപ്പിൽ പെടുന്നത് തടയും, എങ്കിലും ഏജന്റ് രക്ഷപെടാൻ കഴിയാത്ത ഒരു സ്ഥലത്ത് \"പിടിച്ചുപോകാൻ\" സാധ്യതയുണ്ട്.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average path length = 3.45, eaten by wolf: 0 times\n" + ] + } + ], + "source": [ + "\n", + "def qpolicy(m):\n", + " x,y = m.human\n", + " v = probs(Q[x,y])\n", + " a = random.choices(list(actions),weights=v)[0]\n", + " return a\n", + "\n", + "print_statistics(qpolicy)" + ] + }, + { + "source": [ + "## പഠന പ്രക്രിയയുടെ അന്വേഷണം\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 15 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(lpath)" + ] + }, + { + "source": [ + "നാം ഇവിടെ കാണുന്നത് ആദ്യം ശരാശരി പാതയുടെ ദൈർഘ്യം വർദ്ധിച്ചതാണ്. പരിസ്ഥിതിയെക്കുറിച്ച് ഒന്നും അറിയാത്തപ്പോൾ - നാം ദുർബലമായ അവസ്ഥകളിൽ കുടുങ്ങാൻ സാധ്യതയുള്ളതിനാൽ ഇത് സംഭവിച്ചിരിക്കാം, ജലം അല്ലെങ്കിൽ വുൾഫ് പോലുള്ളവ. നാം കൂടുതൽ പഠിച്ച് ഈ അറിവ് ഉപയോഗിക്കാൻ തുടങ്ങുമ്പോൾ, പരിസ്ഥിതിയെ കൂടുതൽ ദൈർഘ്യമേറിയ സമയം അന്വേഷിക്കാനാകും, പക്ഷേ ആപ്പിളുകൾ എവിടെ എന്നത് നമുക്ക് ഇപ്പോഴും നന്നായി അറിയില്ല.\n", + "\n", + "പോരുതൽ മതിയായപ്പോൾ, ഏജന്റിന് ലക്ഷ്യം നേടുന്നത് എളുപ്പമാകുന്നു, പാതയുടെ ദൈർഘ്യം കുറയാൻ തുടങ്ങുന്നു. എന്നിരുന്നാലും, നാം ഇപ്പോഴും അന്വേഷനത്തിന് തുറന്നിരിക്കുകയാണ്, അതിനാൽ നാം പലപ്പോഴും മികച്ച പാതയിൽ നിന്ന് വ്യത്യസ്തമായി മാറി പുതിയ ഓപ്ഷനുകൾ അന്വേഷിക്കുന്നു, ഇത് പാതയെ ഏറ്റവും അനുയോജ്യമായതിൽനിന്ന് കൂടുതൽ ദൈർഘ്യമാക്കുന്നു.\n", + "\n", + "ഈ ഗ്രാഫിൽ നാം മറ്റൊരു കാര്യവും കാണുന്നു, ഏതെങ്കിലും സമയത്ത് പാതയുടെ ദൈർഘ്യം അപ്രതീക്ഷിതമായി വർദ്ധിച്ചു. ഇത് പ്രക്രിയയുടെ സ്ടോക്കാസ്റ്റിക് സ്വഭാവം സൂചിപ്പിക്കുന്നു, കൂടാതെ നാം ഏതെങ്കിലും സമയത്ത് Q-ടേബിൾ കോഫിഷ്യന്റുകൾ പുതിയ മൂല്യങ്ങളാൽ മറച്ചുവെച്ച് \"കുഴപ്പമുണ്ടാക്കാൻ\" സാധ്യതയുണ്ടെന്ന് കാണിക്കുന്നു. ഇത് സാധാരണയായി പഠന നിരക്ക് കുറച്ചുകൊണ്ട് (അഥവാ പരിശീലനത്തിന്റെ അവസാനം Q-ടേബിൾ മൂല്യങ്ങൾ ചെറിയ മൂല്യത്തോടെ മാത്രമേ ക്രമീകരിക്കുകയുള്ളൂ) കുറയ്ക്കണം.\n", + "\n", + "മൊത്തത്തിൽ, പഠന പ്രക്രിയയുടെ വിജയംയും ഗുണനിലവാരവും പ്രധാനമായും പാരാമീറ്ററുകളെ ആശ്രയിച്ചിരിക്കുന്നു, ഉദാഹരണത്തിന് പഠന നിരക്ക്, പഠന നിരക്ക് കുറവ്, ഡിസ്കൗണ്ട് ഫാക്ടർ എന്നിവ. ഇവയെ സാധാരണയായി **ഹൈപ്പർപാരാമീറ്ററുകൾ** എന്ന് വിളിക്കുന്നു, പരിശീലനത്തിനിടെ നാം മെച്ചപ്പെടുത്തുന്ന **പാരാമീറ്ററുകൾ** (ഉദാ. Q-ടേബിൾ കോഫിഷ്യന്റുകൾ) എന്നിവയിൽ നിന്ന് വ്യത്യസ്തമാക്കാൻ. മികച്ച ഹൈപ്പർപാരാമീറ്റർ മൂല്യങ്ങൾ കണ്ടെത്താനുള്ള പ്രക്രിയ **ഹൈപ്പർപാരാമീറ്റർ ഓപ്റ്റിമൈസേഷൻ** എന്ന് വിളിക്കപ്പെടുന്നു, ഇത് ഒരു പ്രത്യേക വിഷയം ആകുന്നു.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "## Exercise\n", + "#### കൂടുതൽ യാഥാർത്ഥ്യമുള്ള പീറ്ററും വുൾഫും ഉള്ള ലോകം\n", + "\n", + "നമ്മുടെ സാഹചര്യത്തിൽ, പീറ്റർ തളരാതെ അല്ലെങ്കിൽ വിശക്കാതെ ചുറ്റിപ്പോകാൻ സാധിച്ചിരുന്നു. കൂടുതൽ യാഥാർത്ഥ്യമുള്ള ലോകത്തിൽ, അവൻ ഇടയ്ക്കിടെ ഇരുന്ന് വിശ്രമിക്കേണ്ടതും, ഭക്ഷണം കഴിക്കേണ്ടതും ഉണ്ട്. താഴെ കൊടുത്തിരിക്കുന്ന നിയമങ്ങൾ നടപ്പിലാക്കി നമ്മുടെ ലോകം കൂടുതൽ യാഥാർത്ഥ്യമാക്കാം:\n", + "\n", + "1. ഒരു സ്ഥലത്ത് നിന്ന് മറ്റൊരു സ്ഥലത്തേക്ക് നീങ്ങുമ്പോൾ, പീറ്റർ **ഊർജം** നഷ്ടപ്പെടുകയും കുറച്ച് **ക്ഷീണം** നേടുകയും ചെയ്യും.\n", + "2. ആപ്പിളുകൾ കഴിച്ച് പീറ്റർ കൂടുതൽ ഊർജം നേടാം.\n", + "3. പീറ്റർ വൃക്ഷത്തിന് കീഴിൽ അല്ലെങ്കിൽ പുൽമേടിൽ (അഥവാ പച്ചത്തോട്ടം ഉള്ള ബോർഡ് സ്ഥലം) വിശ്രമിച്ച് ക്ഷീണം കുറക്കാം.\n", + "4. പീറ്റർ വുൾഫിനെ കണ്ടെത്തി കൊന്നിരിക്കണം.\n", + "5. വുൾഫിനെ കൊല്ലാൻ, പീറ്ററിന് നിർദ്ദിഷ്ടമായ ഊർജവും ക്ഷീണവും വേണം, അല്ലെങ്കിൽ അവൻ യുദ്ധം തോറ്റുപോകും.\n", + "\n", + "മുകളിൽ കൊടുത്ത റിവാർഡ് ഫംഗ്ഷൻ ഗെയിമിന്റെ നിയമങ്ങൾ അനുസരിച്ച് മാറ്റി, reinforcement learning ആൽഗോരിതം പ്രവർത്തിപ്പിച്ച് ഗെയിം ജയിക്കാൻ മികച്ച തന്ത്രം പഠിപ്പിക്കുക, പിന്നെ റാൻഡം വാക്കുമായി താരതമ്യം ചെയ്ത് ജയിച്ചും തോറ്റും ഗെയിമുകളുടെ എണ്ണം പരിശോധിക്കുക.\n", + "\n", + "\n", + "> **കുറിപ്പ്**: ഇത് പ്രവർത്തിക്കാൻ hyperparameters, പ്രത്യേകിച്ച് epochs എണ്ണം, ക്രമീകരിക്കേണ്ടിവരും. ഗെയിം വിജയിക്കുക (വുൾഫിനെ തോൽപ്പിക്കുക) അപൂർവമായ സംഭവമാണെന്ന് കണക്കിലെടുത്ത്, പരിശീലന സമയം വളരെ നീണ്ടിരിക്കാം.\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/ml/8-Reinforcement/2-Gym/README.md b/translations/ml/8-Reinforcement/2-Gym/README.md new file mode 100644 index 000000000..91f929de1 --- /dev/null +++ b/translations/ml/8-Reinforcement/2-Gym/README.md @@ -0,0 +1,356 @@ + +# കാർട്ട്‌പോൾ സ്‌കേറ്റിംഗ് + +മുൻപത്തെ പാഠത്തിൽ നാം പരിഹരിച്ച പ്രശ്നം ഒരു കളിപ്പാട്ട പ്രശ്നം പോലെ തോന്നാം, യഥാർത്ഥ ജീവിത സാഹചര്യങ്ങൾക്ക് യോജിച്ചില്ലാത്തതായിരിക്കാം. എന്നാൽ ഇത് സത്യമായിട്ടില്ല, കാരണം പല യഥാർത്ഥ ലോക പ്രശ്നങ്ങളും ഈ സാഹചര്യത്തെ പങ്കുവെക്കുന്നു - ചെസ് അല്ലെങ്കിൽ ഗോ കളിക്കുന്നത് ഉൾപ്പെടെ. അവ സമാനമാണ്, കാരണം നമുക്ക് ഒരു ബോർഡ് ഉണ്ട്, നിശ്ചിത നിയമങ്ങളോടുകൂടി, കൂടാതെ ഒരു **വ്യത്യസ്തമായ അവസ്ഥ** ഉണ്ട്. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## പരിചയം + +ഈ പാഠത്തിൽ നാം Q-ലേണിങ്ങിന്റെ സമാന സിദ്ധാന്തങ്ങൾ **നിരന്തര അവസ്ഥ** ഉള്ള ഒരു പ്രശ്നത്തിൽ പ്രയോഗിക്കും, അതായത്, ഒരു അല്ലെങ്കിൽ കൂടുതൽ യഥാർത്ഥ സംഖ്യകളാൽ നൽകിയ ഒരു അവസ്ഥ. നാം താഴെ പറയുന്ന പ്രശ്നം കൈകാര്യം ചെയ്യും: + +> **പ്രശ്നം**: പീറ്റർ വംശജനെ നിന്ന് രക്ഷപ്പെടാൻ, അവൻ വേഗത്തിൽ ചലിക്കാൻ കഴിയണം. പീറ്റർ എങ്ങനെ സ്‌കേറ്റ് ചെയ്യാൻ പഠിക്കാമെന്ന് നാം കാണും, പ്രത്യേകിച്ച്, ബാലൻസ് നിലനിർത്താൻ, Q-ലേണിംഗ് ഉപയോഗിച്ച്. + +![The great escape!](../../../../translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.ml.png) + +> പീറ്ററും അവന്റെ സുഹൃത്തുക്കളും വംശജനെ നിന്ന് രക്ഷപ്പെടാൻ സൃഷ്ടിപരമായ മാർഗങ്ങൾ കണ്ടെത്തുന്നു! ചിത്രം [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) എന്നവരുടെ. + +നാം ബാലൻസിംഗ് എന്നത് ലളിതമാക്കിയ ഒരു പതിപ്പ് ഉപയോഗിക്കും, ഇത് **കാർട്ട്‌പോൾ** പ്രശ്നമായി അറിയപ്പെടുന്നു. കാർട്ട്‌പോൾ ലോകത്ത്, ഒരു ഹോരിസോണ്ടൽ സ്ലൈഡർ ഇടത്തോ വലത്തോ ചലിക്കാൻ കഴിയും, ലക്ഷ്യം സ്ലൈഡറിന്റെ മുകളിൽ ഒരു വെർട്ടിക്കൽ പോൾ ബാലൻസ് ചെയ്യുകയാണ്. + +a cartpole + +## മുൻപരിചയം + +ഈ പാഠത്തിൽ, നാം **OpenAI Gym** എന്ന ലൈബ്രറി ഉപയോഗിച്ച് വ്യത്യസ്ത **പരിസ്ഥിതികൾ** സിമുലേറ്റ് ചെയ്യും. നിങ്ങൾക്ക് ഈ പാഠത്തിന്റെ കോഡ് ലോക്കലായി (ഉദാ. Visual Studio Code-ൽ) ഓടിക്കാം, അപ്പോൾ സിമുലേഷൻ പുതിയ വിൻഡോയിൽ തുറക്കും. ഓൺലൈനിൽ കോഡ് ഓടിക്കുമ്പോൾ, ചില മാറ്റങ്ങൾ ആവശ്യമായേക്കാം, [ഇവിടെ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) വിവരിച്ചിരിക്കുന്നതുപോലെ. + +## OpenAI Gym + +മുൻപത്തെ പാഠത്തിൽ, ഗെയിമിന്റെ നിയമങ്ങളും അവസ്ഥയും നാം നിർവചിച്ച `Board` ക്ലാസ്സിലൂടെ നൽകിയിരുന്നു. ഇവിടെ നാം ഒരു പ്രത്യേക **സിമുലേഷൻ പരിസ്ഥിതി** ഉപയോഗിക്കും, ഇത് ബാലൻസിംഗ് പോളിന്റെ ഫിസിക്സ് സിമുലേറ്റ് ചെയ്യും. റീൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ് ആൽഗോരിതങ്ങൾ പരിശീലിപ്പിക്കാൻ ഏറ്റവും പ്രശസ്തമായ സിമുലേഷൻ പരിസ്ഥിതികളിൽ ഒന്നാണ് [Gym](https://gym.openai.com/), ഇത് [OpenAI](https://openai.com/) സംരക്ഷിക്കുന്നു. ഈ ജിം ഉപയോഗിച്ച് നാം കാർട്ട്‌പോൾ സിമുലേഷനിൽ നിന്ന് അറ്റാരി ഗെയിമുകൾ വരെ വ്യത്യസ്ത **പരിസ്ഥിതികൾ** സൃഷ്ടിക്കാം. + +> **കുറിപ്പ്**: OpenAI Gym-ൽ ലഭ്യമായ മറ്റ് പരിസ്ഥിതികൾ [ഇവിടെ](https://gym.openai.com/envs/#classic_control) കാണാം. + +ആദ്യം, ജിം ഇൻസ്റ്റാൾ ചെയ്ത് ആവശ്യമായ ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യാം (കോഡ് ബ്ലോക്ക് 1): + +```python +import sys +!{sys.executable} -m pip install gym + +import gym +import matplotlib.pyplot as plt +import numpy as np +import random +``` + +## അഭ്യാസം - കാർട്ട്‌പോൾ പരിസ്ഥിതി ആരംഭിക്കുക + +കാർട്ട്‌പോൾ ബാലൻസിംഗ് പ്രശ്നം കൈകാര്യം ചെയ്യാൻ, അനുയോജ്യമായ പരിസ്ഥിതി ആരംഭിക്കണം. ഓരോ പരിസ്ഥിതിക്കും ഒരു: + +- **അവലോകന സ്ഥലം** ഉണ്ട്, ഇത് പരിസ്ഥിതിയിൽ നിന്ന് ലഭിക്കുന്ന വിവരങ്ങളുടെ ഘടന നിർവചിക്കുന്നു. കാർട്ട്‌പോൾ പ്രശ്നത്തിൽ, നാം പോളിന്റെ സ്ഥാനം, വേഗത, മറ്റ് ചില മൂല്യങ്ങൾ സ്വീകരിക്കുന്നു. + +- **പ്രവർത്തന സ്ഥലം** ഉണ്ട്, ഇത് സാധ്യമായ പ്രവർത്തനങ്ങൾ നിർവചിക്കുന്നു. നമ്മുടെ കേസിൽ പ്രവർത്തന സ്ഥലം വ്യത്യസ്തമാണ്, രണ്ട് പ്രവർത്തനങ്ങളടങ്ങിയതാണ് - **ഇടത്തേക്ക്**യും **വലത്തേക്ക്**യും. (കോഡ് ബ്ലോക്ക് 2) + +1. ആരംഭിക്കാൻ, താഴെ കൊടുത്ത കോഡ് ടൈപ്പ് ചെയ്യുക: + + ```python + env = gym.make("CartPole-v1") + print(env.action_space) + print(env.observation_space) + print(env.action_space.sample()) + ``` + +പരിസ്ഥിതി എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് കാണാൻ, 100 ഘട്ടങ്ങൾക്കുള്ള ഒരു ചെറിയ സിമുലേഷൻ ഓടിക്കാം. ഓരോ ഘട്ടത്തിലും, എടുക്കേണ്ട പ്രവർത്തനങ്ങളിൽ ഒന്നിനെ നാം നൽകും - ഈ സിമുലേഷനിൽ നാം `action_space`-ൽ നിന്നു യാദൃച്ഛികമായി ഒരു പ്രവർത്തനം തിരഞ്ഞെടുക്കുന്നു. + +1. താഴെ കൊടുത്ത കോഡ് ഓടിച്ച് ഫലം കാണുക. + + ✅ ഈ കോഡ് ലോക്കൽ പൈത്തൺ ഇൻസ്റ്റലേഷനിൽ ഓടിക്കുന്നത് മുൻഗണന നൽകുക! (കോഡ് ബ്ലോക്ക് 3) + + ```python + env.reset() + + for i in range(100): + env.render() + env.step(env.action_space.sample()) + env.close() + ``` + + നിങ്ങൾക്ക് ഈ ചിത്രത്തോട് സാമ്യമുള്ള ഒന്നും കാണാം: + + ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + +1. സിമുലേഷനിൽ, പ്രവർത്തിക്കാൻ തീരുമാനിക്കാൻ അവലോകനങ്ങൾ ലഭിക്കണം. സ്റ്റെപ്പ് ഫംഗ്ഷൻ നിലവിലെ അവലോകനങ്ങൾ, ഒരു റിവാർഡ് ഫംഗ്ഷൻ, സിമുലേഷൻ തുടരേണ്ടതുണ്ടോ എന്ന സൂചിപ്പിക്കുന്ന ഡൺ ഫ്ലാഗ് എന്നിവ തിരികെ നൽകുന്നു: (കോഡ് ബ്ലോക്ക് 4) + + ```python + env.reset() + + done = False + while not done: + env.render() + obs, rew, done, info = env.step(env.action_space.sample()) + print(f"{obs} -> {rew}") + env.close() + ``` + + നിങ്ങൾക്ക് നോട്ട്‌ബുക്കിന്റെ ഔട്ട്പുട്ടിൽ ഇങ്ങനെ ഒന്നും കാണാം: + + ```text + [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 + [ 0.02917248 -0.04828055 0.03248977 0.00543839] -> 1.0 + [ 0.02820687 0.14636075 0.03259854 -0.27681916] -> 1.0 + [ 0.03113408 0.34100283 0.02706215 -0.55904489] -> 1.0 + [ 0.03795414 0.53573468 0.01588125 -0.84308041] -> 1.0 + ... + [ 0.17299878 0.15868546 -0.20754175 -0.55975453] -> 1.0 + [ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0 + ``` + + സിമുലേഷന്റെ ഓരോ ഘട്ടത്തിലും തിരികെ ലഭിക്കുന്ന അവലോകന വെക്ടറിൽ താഴെ പറയുന്ന മൂല്യങ്ങൾ അടങ്ങിയിരിക്കുന്നു: + - കാർട്ടിന്റെ സ്ഥാനം + - കാർട്ടിന്റെ വേഗത + - പോളിന്റെ കോണം + - പോളിന്റെ റൊട്ടേഷൻ നിരക്ക് + +1. ആ സംഖ്യകളുടെ കുറഞ്ഞതും പരമാവധി മൂല്യവും കണ്ടെത്തുക: (കോഡ് ബ്ലോക്ക് 5) + + ```python + print(env.observation_space.low) + print(env.observation_space.high) + ``` + + ഓരോ സിമുലേഷൻ ഘട്ടത്തിലും റിവാർഡ് മൂല്യം എല്ലായ്പ്പോഴും 1 ആണെന്ന് നിങ്ങൾ ശ്രദ്ധിക്കാം. കാരണം നമ്മുടെ ലക്ഷ്യം όσο സാധ്യമായും ദൈർഘ്യമേറിയ കാലം പോളിനെ ശരിയായ നിലയിൽ നിലനിർത്തിയാണ്. + + ✅ യഥാർത്ഥത്തിൽ, കാർട്ട്‌പോൾ സിമുലേഷൻ 100 തുടർച്ചയായ പരീക്ഷണങ്ങളിൽ ശരാശരി 195 റിവാർഡ് നേടുമ്പോൾ പരിഹരിച്ചതായി കണക്കാക്കുന്നു. + +## അവസ്ഥ വ്യത്യസ്തീകരണം + +Q-ലേണിങ്ങിൽ, ഓരോ അവസ്ഥയിലും എന്ത് ചെയ്യണമെന്ന് നിർവചിക്കുന്ന Q-ടേബിൾ നിർമ്മിക്കണം. ഇത് സാധ്യമാക്കാൻ, അവസ്ഥ **വ്യത്യസ്തമായ** (discrete) ആയിരിക്കണം, അതായത് പരിമിതമായ വ്യത്യസ്ത മൂല്യങ്ങൾ അടങ്ങിയിരിക്കണം. അതിനാൽ, നാം നമ്മുടെ അവലോകനങ്ങളെ **വ്യത്യസ്തമാക്കണം**, അവയെ പരിമിതമായ അവസ്ഥകളുടെ സെറ്റിലേക്ക് മാപ്പ് ചെയ്യണം. + +ഇതിന് ചില മാർഗ്ഗങ്ങൾ ഉണ്ട്: + +- **ബിൻസായി വിഭജിക്കുക**. ഒരു മൂല്യത്തിന്റെ ഇടവേള അറിയാമെങ്കിൽ, ആ ഇടവേളയെ പല **ബിൻസായി** വിഭജിച്ച്, മൂല്യം അതിന്റെ ബിൻ നമ്പറിലൂടെ മാറ്റാം. ഇത് 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) +``` + +![raw progress](../../../../translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.ml.png) + +ഈ ഗ്രാഫിൽ ഒന്നും വ്യക്തമാക്കാൻ കഴിയില്ല, കാരണം സ്റ്റോക്കാസ്റ്റിക് പരിശീലന പ്രക്രിയയുടെ സ്വഭാവം മൂലം പരിശീലന സെഷനുകളുടെ ദൈർഘ്യം വളരെ വ്യത്യാസപ്പെടുന്നു. ഈ ഗ്രാഫിന്റെ അർത്ഥം മനസ്സിലാക്കാൻ, നാം 100 പരീക്ഷണങ്ങളുടെ **റണ്ണിംഗ് ശരാശരി** കണക്കാക്കാം. ഇത് `np.convolve` ഉപയോഗിച്ച് എളുപ്പത്തിൽ ചെയ്യാം: (കോഡ് ബ്ലോക്ക് 12) + +```python +def running_average(x,window): + return np.convolve(x,np.ones(window)/window,mode='valid') + +plt.plot(running_average(rewards,100)) +``` + +![training progress](../../../../translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.ml.png) + +## ഹൈപ്പർപാരാമീറ്ററുകൾ മാറ്റി പരീക്ഷിക്കൽ + +പഠനം കൂടുതൽ സ്ഥിരതയുള്ളതാക്കാൻ, പരിശീലനത്തിനിടെ ചില ഹൈപ്പർപാരാമീറ്ററുകൾ ക്രമീകരിക്കുന്നത് ഉചിതമാണ്. പ്രത്യേകിച്ച്: + +- **ലേണിംഗ് റേറ്റ്** `alpha`-യെ 1-നു സമീപം ആരംഭിച്ച് പിന്നീട് കുറയ്ക്കാം. സമയം കഴിഞ്ഞ് Q-ടേബിളിൽ നല്ല സാധ്യത മൂല്യങ്ങൾ ലഭിക്കും, അതിനാൽ അവയെ ചെറിയ തോതിൽ ക്രമീകരിക്കണം, പൂർണ്ണമായും മാറ്റരുത്. + +- **epsilon വർദ്ധിപ്പിക്കുക**. കുറച്ച് എക്സ്പ്ലോറേഷൻ കുറച്ച് എക്സ്പ്ലോയിറ്റേഷൻ കൂടുതൽ ആക്കാൻ `epsilon` മന്ദഗതിയിൽ വർദ്ധിപ്പിക്കാം. കുറഞ്ഞ മൂല്യത്തിൽ ആരംഭിച്ച് ഏകദേശം 1 വരെ എത്തിക്കുക ഉചിതമാണ്. + +> **ടാസ്‌ക് 1**: ഹൈപ്പർപാരാമീറ്റർ മൂല്യങ്ങളുമായി പരീക്ഷിച്ച് ഉയർന്ന സമാഹാര റിവാർഡ് നേടാമോ എന്ന് നോക്കുക. 195-ൽ മുകളിൽ എത്തുന്നുണ്ടോ? +> **ടാസ്‌ക് 2**: പ്രശ്നം ഔപചാരികമായി പരിഹരിക്കാൻ, 100 തുടർച്ചയായ റൺസിൽ ശരാശരി 195 റിവാർഡ് നേടണം. പരിശീലനത്തിനിടെ അത് അളക്കുകയും പ്രശ്നം ഔപചാരികമായി പരിഹരിച്ചതായി ഉറപ്പാക്കുകയും ചെയ്യുക! + +## ഫലങ്ങൾ പ്രവർത്തനത്തിൽ കാണുക + +പരിശീലിച്ച മോഡൽ എങ്ങനെ പെരുമാറുന്നു എന്ന് യഥാർത്ഥത്തിൽ കാണുന്നത് രസകരമായിരിക്കും. സിമുലേഷൻ നടത്തുകയും പരിശീലനത്തിനിടെ ഉപയോഗിച്ച പ്രവർത്തന തിരഞ്ഞെടുപ്പ് തന്ത്രം പിന്തുടരുകയും ചെയ്യാം, Q-ടേബിളിലെ പ്രൊബബിലിറ്റി വിതരണത്തിന് അനുസരിച്ച് സാമ്പിൾ ചെയ്യുക: (കോഡ് ബ്ലോക്ക് 13) + +```python +obs = env.reset() +done = False +while not done: + s = discretize(obs) + env.render() + v = probs(np.array(qvalues(s))) + a = random.choices(actions,weights=v)[0] + obs,_,done,_ = env.step(a) +env.close() +``` + +നിങ്ങൾക്ക് ഇങ്ങനെ ഒന്നൊന്നായി കാണാം: + +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) + +--- + +## 🚀ചലഞ്ച് + +> **ടാസ്‌ക് 3**: ഇവിടെ, നാം Q-ടേബിളിന്റെ അന്തിമ പകർപ്പ് ഉപയോഗിച്ചിരുന്നു, അത് ഏറ്റവും മികച്ചതായിരിക്കണമെന്നില്ല. നാം മികച്ച പ്രകടനം കാഴ്ചവച്ച Q-ടേബിൾ `Qbest` വേരിയബിളിൽ സൂക്ഷിച്ചിട്ടുണ്ടെന്ന് ഓർക്കുക! `Qbest`-നെ `Q`-ലേക്ക് പകർത്തി ഏറ്റവും മികച്ച Q-ടേബിൾ ഉപയോഗിച്ച് അതേ ഉദാഹരണം പരീക്ഷിച്ച് വ്യത്യാസം ശ്രദ്ധിക്കുക. + +> **ടാസ്‌ക് 4**: ഇവിടെ നാം ഓരോ ഘട്ടത്തിലും ഏറ്റവും മികച്ച പ്രവർത്തനം തിരഞ്ഞെടുക്കുന്നില്ല, മറിച്ച് അനുയോജ്യമായ പ്രൊബബിലിറ്റി വിതരണത്തിന് അനുസരിച്ച് സാമ്പിൾ ചെയ്യുന്നു. ഏറ്റവും ഉയർന്ന 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/ml/8-Reinforcement/2-Gym/assignment.md b/translations/ml/8-Reinforcement/2-Gym/assignment.md new file mode 100644 index 000000000..1da90a7c0 --- /dev/null +++ b/translations/ml/8-Reinforcement/2-Gym/assignment.md @@ -0,0 +1,59 @@ + +# ട്രെയിൻ മൗണ്ടൻ കാർ + +[OpenAI Gym](http://gym.openai.com) എല്ലാ പരിസ്ഥിതികളും ഒരേ API നൽകുന്ന വിധത്തിൽ രൂപകൽപ്പന ചെയ്തിരിക്കുന്നു - അഥവാ ഒരേ രീതിയിലുള്ള `reset`, `step` , `render` മെത്തഡുകളും **action space** , **observation space** എന്നിവയുടെ ഒരേ ആബ്സ്ട്രാക്ഷനുകളും. അതിനാൽ, കുറഞ്ഞ കോഡ് മാറ്റങ്ങളോടെ വ്യത്യസ്ത പരിസ്ഥിതികളിൽ ഒരേ reinforcement learning ആൽഗോരിതങ്ങൾ ഉപയോഗിക്കാൻ സാധിക്കണം. + +## ഒരു മൗണ്ടൻ കാർ പരിസ്ഥിതി + +[Mountain Car environment](https://gym.openai.com/envs/MountainCar-v0/) ഒരു താഴ്വരയിൽ കുടുങ്ങിയ ഒരു കാർ ഉൾക്കൊള്ളുന്നു: + + + +ലക്ഷ്യം താഴ്വരയിൽ നിന്ന് പുറത്തുകടക്കുകയും പതാക പിടിക്കുകയും ചെയ്യുക ആണ്, ഓരോ ഘട്ടത്തിലും താഴെപ്പറയുന്ന പ്രവർത്തനങ്ങളിൽ ഒന്നും ചെയ്യുക: + +| Value | അർത്ഥം | +|---|---| +| 0 | ഇടത്തേക്ക് വേഗം കൂട്ടുക | +| 1 | വേഗം കൂട്ടരുത് | +| 2 | വലത്തേക്ക് വേഗം കൂട്ടുക | + +എന്നാൽ ഈ പ്രശ്നത്തിന്റെ പ്രധാന തന്ത്രം, കാർ എഞ്ചിൻ മൗണ്ടൻ ഒരു തവണയിൽ കയറിയെത്താൻ മതിയായ ശക്തിയുള്ളതല്ല എന്നതാണ്. അതിനാൽ വിജയിക്കാൻ ഏക മാർഗം മുന്നോട്ടും പിന്നോട്ടും ഓടിച്ച് മോമെന്റം സൃഷ്ടിക്കുകയാണ്. + +Observation space രണ്ട് മൂല്യങ്ങളടങ്ങിയതാണ്: + +| നമ്പർ | നിരീക്ഷണം | കുറഞ്ഞത് | പരമാവധി | +|-----|--------------|-----|-----| +| 0 | കാർ സ്ഥാനം | -1.2| 0.6 | +| 1 | കാർ വേഗത | -0.07 | 0.07 | + +മൗണ്ടൻ കാർക്ക് റിവാർഡ് സിസ്റ്റം വളരെ സങ്കീർണ്ണമാണ്: + + * ഏജന്റ് പതാക (സ്ഥാനം = 0.5) മൗണ്ടന്റെ മുകളിൽ എത്തിച്ചേർന്നാൽ 0 റിവാർഡ് ലഭിക്കും. + * ഏജന്റിന്റെ സ്ഥാനം 0.5-ൽ കുറവായാൽ -1 റിവാർഡ് ലഭിക്കും. + +കാർ സ്ഥാനം 0.5-ൽ കൂടുതലായാൽ അല്ലെങ്കിൽ എപ്പിസോഡ് ദൈർഘ്യം 200-ൽ കൂടുതലായാൽ എപ്പിസോഡ് അവസാനിക്കും. +## നിർദ്ദേശങ്ങൾ + +മൗണ്ടൻ കാർ പ്രശ്നം പരിഹരിക്കാൻ നമ്മുടെ reinforcement learning ആൽഗോരിതം അനുയോജ്യമായി മാറ്റുക. നിലവിലുള്ള [notebook.ipynb](notebook.ipynb) കോഡിൽ നിന്നാരംഭിച്ച് പുതിയ പരിസ്ഥിതി ഉപയോഗിക്കുക, സ്റ്റേറ്റ് ഡിസ്ക്രീറ്റൈസേഷൻ ഫംഗ്ഷനുകൾ മാറ്റുക, കുറഞ്ഞ കോഡ് മാറ്റങ്ങളോടെ നിലവിലുള്ള ആൽഗോരിതം ട്രെയിൻ ചെയ്യാൻ ശ്രമിക്കുക. ഹൈപ്പർപാരാമീറ്ററുകൾ ക്രമീകരിച്ച് ഫലം മെച്ചപ്പെടുത്തുക. + +> **കുറിപ്പ്**: ആൽഗോരിതം കൺവെർജ് ചെയ്യാൻ ഹൈപ്പർപാരാമീറ്ററുകൾ ക്രമീകരിക്കേണ്ടതുണ്ടാകാം. +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണമായത് | യോജിച്ചത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | --------- | -------- | ----------------- | +| | Q-Learning ആൽഗോരിതം CartPole ഉദാഹരണത്തിൽ നിന്നു കുറഞ്ഞ കോഡ് മാറ്റങ്ങളോടെ വിജയകരമായി അനുയോജ്യമായി മാറ്റിയിട്ടുണ്ട്, 200 ഘട്ടത്തിനുള്ളിൽ പതാക പിടിക്കുന്ന പ്രശ്നം പരിഹരിക്കാൻ കഴിയും. | ഇന്റർനെറ്റിൽ നിന്നുള്ള പുതിയ Q-Learning ആൽഗോരിതം സ്വീകരിച്ചിട്ടുണ്ടെങ്കിലും നന്നായി രേഖപ്പെടുത്തിയിട്ടുണ്ട്; അല്ലെങ്കിൽ നിലവിലുള്ള ആൽഗോരിതം സ്വീകരിച്ചിട്ടുണ്ടെങ്കിലും ആഗ്രഹിച്ച ഫലം ലഭിച്ചിട്ടില്ല | വിദ്യാർത്ഥി യാതൊരു ആൽഗോരിതവും വിജയകരമായി സ്വീകരിക്കാൻ കഴിഞ്ഞില്ല, പക്ഷേ പരിഹാരത്തിലേക്ക് ഗണ്യമായ മുന്നേറ്റങ്ങൾ (സ്റ്റേറ്റ് ഡിസ്ക്രീറ്റൈസേഷൻ, Q-ടേബിൾ ഡാറ്റാ ഘടന എന്നിവ നടപ്പിലാക്കൽ) നടത്തിയിട്ടുണ്ട് | + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ വ്യാഖ്യാനക്കേടുകൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/8-Reinforcement/2-Gym/notebook.ipynb b/translations/ml/8-Reinforcement/2-Gym/notebook.ipynb new file mode 100644 index 000000000..ace86aecd --- /dev/null +++ b/translations/ml/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:44+00:00", + "source_file": "8-Reinforcement/2-Gym/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "## കാർട്ട്‌പോൾ സ്‌കേറ്റിംഗ്\n", + "\n", + "> **പ്രശ്നം**: പീറ്റർ വംശജനെത്തന്നെ രക്ഷപ്പെടാൻ, അവൻ അവനെക്കാൾ വേഗത്തിൽ ചലിക്കേണ്ടതുണ്ട്. പീറ്റർ എങ്ങനെ സ്‌കേറ്റ് ചെയ്യാൻ പഠിക്കാമെന്ന്, പ്രത്യേകിച്ച്, ബാലൻസ് നിലനിർത്താൻ, Q-ലേണിംഗ് ഉപയോഗിച്ച് കാണാം.\n", + "\n", + "ആദ്യം, ജിം ഇൻസ്റ്റാൾ ചെയ്ത് ആവശ്യമായ ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യാം:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 1" + ] + }, + { + "source": [ + "## ഒരു കാർട്ട്പോൾ പരിസ്ഥിതി സൃഷ്ടിക്കുക\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "#code block 2" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "source": [ + "പരിസ്ഥിതി എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് കാണാൻ, നമുക്ക് 100 ഘട്ടങ്ങൾക്കുള്ള ഒരു ചെറിയ സിമുലേഷൻ നടത്താം.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "#code block 3" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "source": [ + "സിമുലേഷനിൽ, എങ്ങനെ പ്രവർത്തിക്കണമെന്ന് തീരുമാനിക്കാൻ നിരീക്ഷണങ്ങൾ നേടേണ്ടതുണ്ട്. യഥാർത്ഥത്തിൽ, `step` ഫംഗ്ഷൻ നിലവിലെ നിരീക്ഷണങ്ങൾ, റിവാർഡ് ഫംഗ്ഷൻ, സിമുലേഷൻ തുടരുന്നതിന് അർത്ഥമുണ്ടോ എന്നത് സൂചിപ്പിക്കുന്ന `done` ഫ്ലാഗ് എന്നിവ തിരികെ നൽകുന്നു:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "#code block 4" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "source": [ + "അവ സംഖ്യകളുടെ ഏറ്റവും കുറഞ്ഞതും ഏറ്റവും കൂടുതലുമായ മൂല്യങ്ങൾ നാം നേടാം:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38]\n[4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38]\n" + ] + } + ], + "source": [ + "#code block 5" + ] + }, + { + "source": [ + "## സംസ്ഥാന ഡിസ്ക്രീറ്റൈസേഷൻ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 6" + ] + }, + { + "source": [ + "ബിൻസുകൾ ഉപയോഗിച്ച് മറ്റൊരു ഡിസ്ക്രീറ്റൈസേഷൻ രീതിയും പരിശോധിക്കാം:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Sample bins for interval (-5,5) with 10 bins\n [-5. -4. -3. -2. -1. 0. 1. 2. 3. 4. 5.]\n" + ] + } + ], + "source": [ + "#code block 7" + ] + }, + { + "source": [ + "ഇപ്പോൾ നമുക്ക് ഒരു ചെറിയ സിമുലേഷൻ നടത്താം, ആ ഡിസ്‌ക്രിറ്റ് പരിസ്ഥിതി മൂല്യങ്ങൾ നിരീക്ഷിക്കാം.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(0, 0, -2, -2)\n(0, 1, -2, -5)\n(0, 2, -3, -8)\n(0, 3, -5, -11)\n(0, 3, -7, -14)\n(0, 4, -10, -17)\n(0, 3, -14, -15)\n(0, 3, -17, -12)\n(0, 3, -20, -16)\n(0, 4, -23, -19)\n" + ] + } + ], + "source": [ + "#code block 8" + ] + }, + { + "source": [ + "## Q-ടേബിൾ ഘടന\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 9" + ] + }, + { + "source": [ + "## ക്യൂ-ലേണിംഗ് ആരംഭിക്കാം!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 10" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "0: 22.0, alpha=0.3, epsilon=0.9\n", + "5000: 70.1384, alpha=0.3, epsilon=0.9\n", + "10000: 121.8586, alpha=0.3, epsilon=0.9\n", + "15000: 149.6368, alpha=0.3, epsilon=0.9\n", + "20000: 168.2782, alpha=0.3, epsilon=0.9\n", + "25000: 196.7356, alpha=0.3, epsilon=0.9\n", + "30000: 220.7614, alpha=0.3, epsilon=0.9\n", + "35000: 233.2138, alpha=0.3, epsilon=0.9\n", + "40000: 248.22, alpha=0.3, epsilon=0.9\n", + "45000: 264.636, alpha=0.3, epsilon=0.9\n", + "50000: 276.926, alpha=0.3, epsilon=0.9\n", + "55000: 277.9438, alpha=0.3, epsilon=0.9\n", + "60000: 248.881, alpha=0.3, epsilon=0.9\n", + "65000: 272.529, alpha=0.3, epsilon=0.9\n", + "70000: 281.7972, alpha=0.3, epsilon=0.9\n", + "75000: 284.2844, alpha=0.3, epsilon=0.9\n", + "80000: 269.667, alpha=0.3, epsilon=0.9\n", + "85000: 273.8652, alpha=0.3, epsilon=0.9\n", + "90000: 278.2466, alpha=0.3, epsilon=0.9\n", + "95000: 269.1736, alpha=0.3, epsilon=0.9\n" + ] + } + ], + "source": [ + "#code block 11" + ] + }, + { + "source": [ + "## പരിശീലന പുരോഗതി രേഖപ്പെടുത്തൽ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 20 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3deXxU9b3/8dcnCSTsa8CQgAEJIKIIBGSXTUWiYqu0Lq2o3MvV6nWhVlGrtbdasddq9dqfy9W2tr22WpdKXYu4W0VBRVBAQFACCEF2kCXk+/tjvkkm+yTMZCZn3s/HI4+c853vzPmenMl7vud7zpxjzjlERCS4UuLdABERiS0FvYhIwCnoRUQCTkEvIhJwCnoRkYBLi3cDADp37uxyc3Pj3QwRkSZl0aJFW5xzmXXVS4igz83NZeHChfFuhohIk2JmX0ZST0M3IiIBp6AXEQk4Bb2ISMAp6EVEAk5BLyIScBEFvZmtNbMlZvaxmS30ZR3NbJ6ZrfS/O/hyM7N7zWyVmX1iZoNjuQIiIlK7+vToxzvnjnfO5fv52cB851weMN/PA5wK5PmfmcD90WqsiIjU3+GcRz8VGOenHwVeB67z5X90oesfv2dm7c0syzm38XAa2pjWbd3Lj/+2mG7tMvjpaf3p3DqdbXsO8K/V31BwXBbOOf7+8XpO6NmJj77azsSjuzD5N2/yo3G9eXbxev484wTumb+S/lltOaJdBobxwBureePzIpbccjJmBsCLSzby+ooiphyXxYl9Kn7nYUnhDv7+8Xq6tk1n5tijyso/XredtBRjQHY7nHM8uaiQCf26cOvzy+jYqjnLNu7kX6u/4d5zB5HdvgWri3bz3UHZpKWm8PKnX3NMt7bc/sJybig4mpPueoNHpg+leZrxwdptzHlxOU9dOoIN2/dx+sBuPLbgK254Zglt0tO4cFQu//PqKm46rT+/eO4zlv9iMjf9fSl/W1RIn66tGdazI51apXPP/JX87PT+9OzcivfXbGXJ+h28tXJLg7fFJScexQNvrKZ3l9as2ry7rNwMUs0oLonfZbbbZKSxa19xxPVHHtWJpet3sHNfMcdmt2PJ+h306tyKL7bsAeDu7w/k6scXx6q53HJ6f7buPcgTH6zj6537YraccENzO/DB2m38YHgP1m/7luZpKbz86aZ6vcb5J/TgolG5TLrrzXov/4qJeaSacfcrn9da79YzB/DlN3v437fW8B9je/Hgm19UqfPdwdk8/eH6Gl9jcI/2PHXpSNZs2cOEX78RUftyOrTglVknktEsNaL6DWWRXI/ezNYA2wAHPOice8jMtjvn2ofV2eac62BmzwFznHNv+/L5wHXOuYWVXnMmoR4/PXr0GPLllxGd998ocmc/Xzad06EFb183ge8/+C4L1mzlvesnsm7bXqY98G5ZnYn9ujB/+eay+cqhFO73Fw1lfN8u7Nx3kONu+WdZ+do5BTW2Ifyx0vK1cwp4aelGLvnzh3Wuz7WT+3LxqJ70u+mlOuuWKv0HrUnz1BQOHCqJ+PVEksFvzxvMZY/V/T8Z7ofDj+QXZw5o0PLMbFHYKEuNIu3Rj3LObTCzLsA8M1te27KrKavyaeKcewh4CCA/Pz9h735SuO1bANZvD/0+eKiE3fsr9uLWbdtbYb6mkAfKeoDFhw5/lXd+G1lvcuvuA5TU8wYztYU8oJAXqcaufQfr/ZyiXftj0JKKIhqjd85t8L83A88Aw4BNZpYF4H+XdmkLge5hT88BNkSrwUGVO/t5LvnTong3Q0QCqM6gN7NWZtamdBo4GVgKzAWm+2rTgWf99FzgAn/2zXBgR1Man4+nlz79Ot5NEJEAimTopivwjD+AmAY85px7ycw+AJ4wsxnAV8A0X/8FYAqwCtgLXBT1VouIBETR7tgP3dQZ9M65L4CB1ZR/A0ysptwBl0WldQG0/+Ah5i7ewKijOjXaMuN4YoqI1OHLb/bWXekwJcRlipPJr15eQdGu/dxzzvGNtkyr7vC4iETdI2+viXcTqqVLIHhffrOHRV/WfqZJNJQeYd/5bf2PzotIYltZyxl38aQevXfif78OVD2fXUQklrY0whi9evRRYNV+dSBxOJf4bRSR2FHQi4gEnIZuoqAhBzsb80SY372zhjYZ2tQiyUo9+giMv/P1CvNNcRDknvkr490EEYkTBX0E1virC4qINEUK+nqq57XBouqv738Vv4WLSJOloI9QInzpaPbTS+LdBBFpghT0IiIBp6AH9h6o+7ru0R6yiecQkIgkFwU9sOCLrXXWKb0BSayHcL49cCi2CxCRpKOgr2TfwbqDNpad8UPq6otIlCnoK9l/sHFukVfbnkFjXPtCRJKHgr6eHv9gXUzv8bh19wHyb30lZq8vIslHQV9P9722it+/szZmr79174EqZbmzn+eQ7h4iIg2koAdcPUfdDxQf/gHTmobiP9uws9ryg4caZ0hJRIJHQd8Aq4sO/5IIroakX7l512G/tohIOAV9gvmwhrtcrdyUmHeuEZHEp6CvpL7DONG2uHBHteWn3/d2I7dERIJCQR8nlggXzxGRpKCgFxEJOAU98bnuTE0HY0VEok1BHwUahhGRRKagr8Sa5I0CRURqpqCvpCFn3SzbWP2XnEREEoGCnviM0Wu4R0Qai4JeRCTgFPTE9vryNS5TZ92ISCNR0MfJLf/4LN5NEJEkEXHQm1mqmX1kZs/5+Z5mtsDMVprZ42bW3Jen+/lV/vHc2DQ9etS7FpEgq0+P/kpgWdj8HcDdzrk8YBsww5fPALY553oDd/t6Ce3xD9bFuwn11uenL/L655vj3QwRaQIiCnozywEKgIf9vAETgCd9lUeBM/30VD+Pf3yiJfgpJis3l18Zsql07g8Ul/DCkq/j3QwRaQIi7dH/BrgWKL37RSdgu3Ou2M8XAtl+OhtYB+Af3+HrV2BmM81soZktLCoqamDzRUSkLnUGvZmdBmx2zi0KL66mqovgsfIC5x5yzuU75/IzMzMjamysxPvSxCIisZQWQZ1RwBlmNgXIANoS6uG3N7M032vPATb4+oVAd6DQzNKAdsDWqLc8SkpKHCVhd+lL7EEmEZH6q7NH75y73jmX45zLBc4BXnXOnQ+8Bpztq00HnvXTc/08/vFXXQKf1nLqPW+xfvu38W6GiEjMHM559NcBs8xsFaEx+Ed8+SNAJ18+C5h9eE2MrRWbdI9WEQm2SIZuyjjnXgde99NfAMOqqbMPmBaFtsVF4u57iIg0jL4ZKyIScAp6EZGAU9CLiARcvcbog+JAcQl9fvoiV0zoHe+miIjEXFL26PcVHwLg9++sjW9DREQaQVIGvYhIMlHQV6KzK0UkaBT0legKCCISNAp6EZGAU9CLiAScgr4SjdGLSNAo6CuZ95nu2iQiwZLUQb9rf3GVsi27D8ShJSIisZPUQS8ikgwU9JX8+p8r4t0EEZGoUtBXUqKjsSISMEkX9J9v2sW0+9+NdzNERBpN0gX9L19YptsHikhSSbqgFxFJNgp6EZGAU9CLiAScgl5EJOAU9CIiAaegFxEJuKQLet1YRESSTdIFvYhIslHQi4gEnIJeRCTgFPQiIgGnoBcRCbikC3oznXcjIsmlzqA3swwze9/MFpvZp2b2c1/e08wWmNlKM3vczJr78nQ/v8o/nhvbVRARkdpE0qPfD0xwzg0Ejgcmm9lw4A7gbudcHrANmOHrzwC2Oed6A3f7eglD/XkRSTZ1Br0L2e1nm/kfB0wAnvTljwJn+umpfh7/+ETTeImISNxENEZvZqlm9jGwGZgHrAa2O+eKfZVCINtPZwPrAPzjO4BO0Wy0iIhELqKgd84dcs4dD+QAw4Cjq6vmf1fXe69yJ1Yzm2lmC81sYVFRUaTtFRGReqrXWTfOue3A68BwoL2ZpfmHcoANfroQ6A7gH28HbK3mtR5yzuU75/IzMzMb1voG0CCSiCSbSM66yTSz9n66BTAJWAa8Bpztq00HnvXTc/08/vFXnXNVevQiItI40uquQhbwqJmlEvpgeMI595yZfQb81cxuBT4CHvH1HwH+ZGarCPXkz4lBu0VEJEJ1Br1z7hNgUDXlXxAar69cvg+YFpXWiYjIYUuKb8YeKnHcMvdTNmz/Nt5NERFpdJEM3TR576/Zyh/+tZbPN+2iZfPUeDdHRKRRJUWP3vmzO0t0TFhEklBSBH1FOr9SRJJLEga9iEhyUdCLiARcUgW9huhFJBklRdBb2Li8LoEgIskm0KdXOudYXbQn3s0QEYmrQPfoH3l7DZPueoPFhdvLyg6VaPxGRJJLoIP+o3WhgF+3dW9Z2avLN8erOSIicRHooBcRkSQLeg3aiEgySoqg15k2IpLMgh306sKLiAQ86D3T9W1EJIkF9jz63NnPl00/vnBdHFsiIhJfSdGjP1BcEu8miIjETVIEfRmN2YtIEgpU0O/eX8zU377D55t2xbspIiIJI1BB/69VW1i8bju/emlFvJsiIpIwAhX0dXl/7dZ4N0FEpNElVdCLiCSjQAW9jrWKiFQVqKAvpUseiIiUC2TQi4hIuUAFve4JKyJSVaCCvpRGbkREygUy6EVEpFzAgl5jNyIilQUs6EN01o2ISLlABr2IiJSrM+jNrLuZvWZmy8zsUzO70pd3NLN5ZrbS/+7gy83M7jWzVWb2iZkNjvVKlNJZNyIiVUXSoy8GfuycOxoYDlxmZv2B2cB851weMN/PA5wK5PmfmcD9UW91HXRHKRGRcnUGvXNuo3PuQz+9C1gGZANTgUd9tUeBM/30VOCPLuQ9oL2ZZUW95dXYrxuMiIhUUa8xejPLBQYBC4CuzrmNEPowALr4atlA+L37Cn1Z5deaaWYLzWxhUVFR/Vtejase/zgqryMiEiQRB72ZtQaeAq5yzu2srWo1ZVVGz51zDznn8p1z+ZmZmZE2IyI660ZEpFxEQW9mzQiF/P855572xZtKh2T8782+vBDoHvb0HGBDdJorIiL1FclZNwY8Aixzzt0V9tBcYLqfng48G1Z+gT/7Zjiwo3SIR0REGl9aBHVGAT8ElphZ6SD4DcAc4AkzmwF8BUzzj70ATAFWAXuBi6La4gho6EZEpFydQe+ce5uarxM2sZr6DrjsMNslIiJRom/GiogEXCCDXl+YEhEpF8igFxGRcgp6EZGAC2TQry7aHe8miIgkjEAG/fKvd8W7CSIiCSOQQS8iIuUU9CIiAaegFxEJOAW9iEjAKehFRAJOQS8iEnAKehGRgFPQi4gEnIJeRCTgFPQiIgGnoBcRCTgFvYhIwCnoRUQCTkEvIhJwCnoRkYBT0IuIBFxggr5w2954N0FEJCEFIujfXf0No+94Ld7NEBFJSIEI+uVf74x3E0REElYggt65eLdARCRxBSPo490AEZEEFoigFxGRmgUi6J3GbkREahSIoBcRkZo1+aDfd/AQtz6/LN7NEBFJWHUGvZn9zsw2m9nSsLKOZjbPzFb63x18uZnZvWa2ysw+MbPBsWw8wINvfBHrRYiINGmR9Oj/AEyuVDYbmO+cywPm+3mAU4E8/zMTuD86zazZ3oPFsV6EiEiTVmfQO+feBLZWKp4KPOqnHwXODCv/owt5D2hvZlnRamz1DYzpq4uINHkNHaPv6pzbCOB/d/Hl2cC6sHqFvqwKM5tpZgvNbGFRUVEDmwH/WLyhwc8VEUkG0T4Ya9WUVdvnds495JzLd87lZ2ZmNniBG3bsa/BzRUSSQUODflPpkIz/vdmXFwLdw+rlAOpyi4jEUUODfi4w3U9PB54NK7/An30zHNhROsQjIiLxkVZXBTP7CzAO6GxmhcDPgDnAE2Y2A/gKmOarvwBMAVYBe4GLYtBmERGphzqD3jl3bg0PTaymrgMuO9xGiYhI9DT5b8aKiEjtFPQiIgHXpIP+/TWVv8clIiKVNemg/8HDC+LdBBGRhNekg/7AoZJ4N0FEJOE16aAXEZG6KehFRAJOQS8iEnAKehGRgFPQi4gEnIJeRCTgFPQiInHUPC32MaygFxGJo7OH5MR8GQp6EZE4Om9Yj5gvQ0EvIhJHA7LbxXwZCnoRkTjp3aV1oyxHQS8iEidj8zIbZTkKehGROLnmlD6NshwFvYhInLRsXufdXKNCQS8iEnAKeklIfbo2zkEqaTzpjfDFIKme/vKSkJyLdwsk2sbkdY53E5KWgl6kEfzyO8dGXPfYRjivuql69OJhUX29Fs1So/p63Tu2iOrrRYuCXqSBxveNzalxd04bGPUAasq+Oyi7bPrEPuV/87F9av/7FxyXVedr5+d2qHd7Tu7ftcJ8r8xWjIvReyFaFPRS5vwTYv9V7Ibo27VNteV/nnFClbJOrZrHtC3nDO1eNn36wG4AXDDiSNbOKaj1ec1SrV7LuXh0br3bVpe1cwq45uTGOZ0vmobkdqBV86offJUDd3CP9hXmczrU3btOT0vh0nFHlQ0rRXKBsXF9u1SYP2twDtntQ8tqlpqYkZqYrZKo6pXZKqJ6t9VjeKHyP1ldLh/fO+K6o3tXHMt9+eqxVercd94gRsdhzLe095bZJp0zBnbjigm9+ckpfWt9zohenfhOWK80El3bZgBUG3CljvB1EtWpA4447Nd49rJRnDesBwtunMTim08GKgb43y4Zwc2n9WfBDRN57N+H07LS36tTq+ZMOrrm9+pPTunHdZNDPwBnDc7m/RsncvGonmV1hlbq9We2Secfl48um+/SJp3Zp/bjigm9Oe3YmvcirpjQm/wj678HEQ0K+iZkUKUeS6T+3/mDK7xxo2FafndunHI0AMNyO9ZZ/5pKYTiqd6da6885K/Sh819Tj6n28dOO6xZJMyOWF/ZV9PvOG8S8aj5cSv3homF8cOMk0lJTmHVyX9pkNAPgwpG5NK+mR/eXmcNJS03hhin9uHBkbll5Zpt0js5qW+0y+vi9mP+aOqDC3kL3ji147ZpxADzxHyPKyksD5KcFR5eVfS+/6lURv5ffvcK6Ho7OrdOrLX/1xyfy4pVjKqxruJqWX10IDuzeHjOjdXoa7VqG/s5XTepT9jpDczty8eiedG2bQUazVF798ThOCuuELLrpJB6enl82f+e0gfz7mPL/hTYZofPYB2S345Hp+fzs9GPo0iajQs/+4QuGcsvp/cvmT+rflWNz2vHFL6fwwA+GcPaQHNpkNGPWyX0Z2L3m/9ExfTI55ZjyD7+nLh1RY91oU9AniLp2Gbu0SeepS0Y26LWz2rXg5tP7c1xO+UG+W88cUOtzurWrvbc4rm8mk32P7ZJxvSJqx2XjjyqbPmdo7cNEQ47syNo5BVwwIheAD26cVGub75w2kGd+NLLsHzcSFjaaMm/WiRSE9cbyahguqs0tZxzD57edWuPjM8cexS1nlH9wDc3twItXjikbAgo3vFcn3r5uPGf5S9iWhvbLV42lZ+dWrJ1TQI9OLcvq//b8wVxzch9mjC4Psdu+cyzvXT+xwut2aZvBvFkncvNp/XllVs0fZvURvmdxZKeW9MpsXeMHWG2evDSy9/dZg7N569rxnNCramfhiHYZDO5R9QOjTXoak47uwtlDcrixoD9PXjKCn5zSl27ty/cOJh7dlQx/bCR8CLBdy2ZcOKon78yewJrbp5SVp6QYkwccgYW9kSaG7T3MOqkPr10zjldmjeXqSX3IP7JD2V7oHy4aypAj6+4gRYuCPgZKd+XrMx561/cG1vr4+zdOIiXFuOec4+vVlrVzCmjXItQTmnv5aOZ8N9RT7ndE7UFWenbDhSNzeSSsRwSw5vYpNEtNoXvHlqydU8CEflV3jR/4wZAqZT85pR9r5xSwdk5BhXBb/ovJQGg4qH9WW2af2q/KczPbpJeFeAffswt39pAcBvXoUHYlwNJeY/hxh/Drfg/s3p41txfwyqyxvHjlmBr+CiGDe7RniO9tRnMM9r/PDm3z/zl3EGvnFPC3S0YwMKcduZ1DAZ7ToTzIf3X2QNbOKajxm5Rd22Zw+YQ8zKys09AsNYUj2mUw7+qxvHRVxXW8eHRPenWuX8++8tlAE/t1oW/XNtz2ndAH8IhenXiyls5Ih5ah8ByTl1n2Plg7p4B7zjm+wvBKm/TaP6zNjO4dW9b4+FmDs8nr0pofDj+yrGzJz0/h4elDy+bzcztyWS3DiWP6hAK5Z+fyYc/s9i0qhHpNXrpqDPOuHssVE/Po2bkVvbu04cpJoW1zdFZb1s4pqDLOH2uN8/3bAMjr0pqnfjSS4275Z511Z4zuya59xfzbmF7c+c/PAUhLMYpLKp4cfnL/rvTLasuQIzsw6qjqhzLeu34i7cOC7YyB3fh80y4y0lJplpbCWYNzuP2FZTz90XpG9e7ElRP70KVNOu+s3sJx2VV3I78/tDsjj+pMj04tueOsY8nr2oY9+4tZun4nEOoZp1ioR/v2dePJateC1JSKb+7q3uxzLx/FkvU7uPGZpQBMHnAE/bPa8tnGndUeNAX4xZkDGNS9PRnNUnn3+gl0apVe655NwbFZLP96F5ecWL5n8OAPh1QYLik9KHbd5H4s/HIbV07MY8/+Yv7+8QbunDaQJxcVAnD/+YMB6N2l5g+8966fSIdWzUhPS2XvgWLunb+K8yI4YD0mrzOL123nzWvHY1T9Ww3IbsvufcW0qhRoQ3M78mzY2G8k/jRjGDu/La5Q9tx/juatlVvK5mvaOyndjOP6ZnJS/65l2y6rXQYbd+yjR8eWfLV1LwA/P+MYpo/MJXf287RJT2PX/mLyurbmjrOPA+Cta8eT3b4FKWHvlaP8h+2IXp1494tv6N+tLW9PGl/l2MLU47OZenzoGMaHN51Es1TjpLveJDuCg6nVKd1rORyl262+B9EB+h1R/72ZWDOXAN9Myc/PdwsXLqz380bcPp+NO/bV+3nXTu5L6/Q0bn72U1o0S+XpH40kNcW455WVPL9kIytvO5UHXl/Nr+eFQvrm0/pzsd8lds5x07NLuXBkLt978D227jnA9/JzSE1J4cqJeXz5zZ4Ku5TTf/c+Zw7qxstLN/HSp1+z+pdTqgRnuE8Kt3PGfe9w7rDuXDAiN6Jd4H0HD/H6is1MHlD36WSH465/rmDX/mJ+dnr14+YAS9fvoEXzVI7KbM3WPQf4dMMOxjTSFfoADhSXMH/Zpiq71KWeWlTIc59s4PcXVT0fe8XXu7jssQ956tKRZXtBySR39vMAvH/DRFYV7eaYrHZ8+NU29hwoZsqArLIQd87xwpKvmTzgiFrfy6VKShwvLo28fiLYX3yIs+7/Fz8t6M/waoaIEoWZLXLO5ddZLxZBb2aTgXuAVOBh59yc2uo3NOiLD5XwzEfr2VdcQtuMNIbmdqR5WgqpZlz+lw+57cxjSU0x9heXRHTd5/3Fh9iy+wDZ7VtQUuJYt20vR3aK7IyVSF77m90HKowJ1uTLb/bQo2PLiHYTRaJlz/5i9uwvpkuCn80j5eIW9GaWCnwOnAQUAh8A5zrnPqvpOQ0NehGRZBZp0MfiYOwwYJVz7gvn3AHgr8DUGCxHREQiEIugzwbWhc0X+rIKzGymmS00s4VFRUUxaIaIiEBsgr66geUq40POuYecc/nOufzMzMS+ToSISFMWi6AvBLqHzecAG2KwHBERiUAsgv4DIM/MeppZc+AcYG4MliMiIhGI+hemnHPFZnY58DKh0yt/55z7NNrLERGRyMTkm7HOuReAF2Lx2iIiUj+61o2ISMAlxCUQzKwI+LKBT+8MbKmzVrBonZOD1jk5HM46H+mcq/O0xYQI+sNhZgsj+WZYkGidk4PWOTk0xjpr6EZEJOAU9CIiAReEoH8o3g2IA61zctA6J4eYr3OTH6MXEZHaBaFHLyIitVDQi4gEXJMOejObbGYrzGyVmc2Od3vqw8y6m9lrZrbMzD41syt9eUczm2dmK/3vDr7czOxev66fmNngsNea7uuvNLPpYeVDzGyJf869liC3rDKzVDP7yMye8/M9zWyBb//j/hpJmFm6n1/lH88Ne43rffkKMzslrDzh3hNm1t7MnjSz5X57jwj6djazq/37eqmZ/cXMMoK2nc3sd2a22cyWhpXFfLvWtIxaOeea5A+h6+isBnoBzYHFQP94t6se7c8CBvvpNoTuytUf+BUw25fPBu7w01OAFwldBno4sMCXdwS+8L87+OkO/rH3gRH+OS8Cp8Z7vX27ZgGPAc/5+SeAc/z0A8ClfvpHwAN++hzgcT/d32/vdKCnfx+kJup7AngU+Dc/3RxoH+TtTOj+E2uAFmHb98KgbWdgLDAYWBpWFvPtWtMyam1rvP8JDuOPPAJ4OWz+euD6eLfrMNbnWUK3X1wBZPmyLGCFn36Q0C0ZS+uv8I+fCzwYVv6gL8sCloeVV6gXx/XMAeYDE4Dn/Jt4C5BWebsSujDeCD+d5utZ5W1dWi8R3xNAWx96Vqk8sNuZ8psPdfTb7TnglCBuZyCXikEf8+1a0zJq+2nKQzcR3cmqKfC7qoOABUBX59xGAP+7i69W0/rWVl5YTXm8/Qa4Fijx852A7c65Yj8f3s6ydfOP7/D16/u3iKdeQBHwez9c9bCZtSLA29k5tx64E/gK2Ehouy0i2Nu5VGNs15qWUaOmHPQR3ckq0ZlZa+Ap4Crn3M7aqlZT5hpQHjdmdhqw2Tm3KLy4mqqujseazDoT6qEOBu53zg0C9hDa3a5Jk19nP2Y8ldBwSzegFXBqNVWDtJ3rEtd1bMpB3+TvZGVmzQiF/P855572xZvMLMs/ngVs9uU1rW9t5TnVlMfTKOAMM1tL6KbxEwj18NubWekls8PbWbZu/vF2wFbq/7eIp0Kg0Dm3wM8/SSj4g7ydJwFrnHNFzrmDwNPASIK9nUs1xnataRk1aspB36TvZOWPoD8CLHPO3RX20Fyg9Mj7dEJj96XlF/ij98OBHX637WXgZDPr4HtSJxMav9wI7DKz4X5ZF4S9Vlw45653zuU453IJba9XnXPnA68BZ/tqlde59G9xtq/vfPk5/myNnkAeoQNXCfeecM59Dawzs76+aCLwGQHezoSGbIabWUvfptJ1Dux2DtMY27WmZdQsngdtonAgZAqhs1VWAzfGuz31bPtoQrtinwAf+58phMYm5wMr/e+Ovr4Bv9wf3t8AAACjSURBVPXrugTID3uti4FV/ueisPJ8YKl/zn1UOiAY5/UfR/lZN70I/QOvAv4GpPvyDD+/yj/eK+z5N/r1WkHYWSaJ+J4AjgcW+m39d0JnVwR6OwM/B5b7dv2J0JkzgdrOwF8IHYM4SKgHPqMxtmtNy6jtR5dAEBEJuKY8dCMiIhFQ0IuIBJyCXkQk4BT0IiIBp6AXEQk4Bb2ISMAp6EVEAu7/A6SijxMjKxrLAAAAAElFTkSuQmCC\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(rewards)" + ] + }, + { + "source": [ + "ഈ ഗ്രാഫിൽ നിന്ന് എന്തും പറയാനാകില്ല, കാരണം സ്റ്റോകാസ്റ്റിക് പരിശീലന പ്രക്രിയയുടെ സ്വഭാവം മൂലം പരിശീലന സെഷനുകളുടെ ദൈർഘ്യം വളരെ വ്യത്യാസപ്പെടുന്നു. ഈ ഗ്രാഫിന്റെ കൂടുതൽ അർത്ഥം മനസ്സിലാക്കാൻ, നാം പരീക്ഷണങ്ങളുടെ ഒരു പരമ്പരയിൽ, ഉദാഹരണത്തിന് 100, **റണ്ണിംഗ് ശരാശരി** കണക്കാക്കാം. ഇത് `np.convolve` ഉപയോഗിച്ച് സൗകര്യപ്രദമായി ചെയ്യാം:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 22 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "#code block 12" + ] + }, + { + "source": [ + "## വ്യത്യസ്ത ഹൈപ്പർപാരാമീറ്ററുകൾ ഉപയോഗിച്ച് ഫലങ്ങൾ പ്രവർത്തനത്തിൽ കാണുക\n", + "\n", + "ഇപ്പോൾ പരിശീലിപ്പിച്ച മോഡൽ എങ്ങനെ പെരുമാറുന്നു എന്ന് യഥാർത്ഥത്തിൽ കാണുന്നത് രസകരമായിരിക്കും. സിമുലേഷൻ നടത്താം, പരിശീലന സമയത്ത് ഉപയോഗിച്ചിരുന്നതുപോലെ തന്നെ പ്രവർത്തന തിരഞ്ഞെടുപ്പ് തന്ത്രം പിന്തുടരാം: Q-ടേബിളിലെ സാധ്യത വിതരണത്തിന് അനുസരിച്ച് സാമ്പിൾ ചെയ്യുക:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 13" + ] + }, + { + "source": [ + "## ഫലം അനിമേറ്റഡ് GIF ആയി സംരക്ഷിക്കൽ\n", + "\n", + "നിങ്ങളുടെ സുഹൃത്തുക്കളെ ആകർഷിക്കാൻ, ബാലൻസിംഗ് പോളിന്റെ അനിമേറ്റഡ് GIF ചിത്രം അയയ്ക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കാം. ഇതിന്, ഒരു ഇമേജ് ഫ്രെയിം ഉത്പാദിപ്പിക്കാൻ `env.render` വിളിക്കാം, പിന്നീട് PIL ലൈബ്രറി ഉപയോഗിച്ച് അവ അനിമേറ്റഡ് GIF ആയി സംരക്ഷിക്കാം:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "360\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "obs = env.reset()\n", + "done = False\n", + "i=0\n", + "ims = []\n", + "while not done:\n", + " s = discretize(obs)\n", + " img=env.render(mode='rgb_array')\n", + " ims.append(Image.fromarray(img))\n", + " v = probs(np.array([Qbest.get((s,a),0) for a in actions]))\n", + " a = random.choices(actions,weights=v)[0]\n", + " obs,_,done,_ = env.step(a)\n", + " i+=1\n", + "env.close()\n", + "ims[0].save('images/cartpole-balance.gif',save_all=True,append_images=ims[1::2],loop=0,duration=5)\n", + "print(i)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് കരുതേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/8-Reinforcement/2-Gym/solution/Julia/README.md b/translations/ml/8-Reinforcement/2-Gym/solution/Julia/README.md new file mode 100644 index 000000000..f91eccbf7 --- /dev/null +++ b/translations/ml/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/ml/8-Reinforcement/2-Gym/solution/R/README.md b/translations/ml/8-Reinforcement/2-Gym/solution/R/README.md new file mode 100644 index 000000000..e3f81af1d --- /dev/null +++ b/translations/ml/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/ml/8-Reinforcement/2-Gym/solution/notebook.ipynb b/translations/ml/8-Reinforcement/2-Gym/solution/notebook.ipynb new file mode 100644 index 000000000..0eaf62b86 --- /dev/null +++ b/translations/ml/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:54+00:00", + "source_file": "8-Reinforcement/2-Gym/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "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": [ + "## Q-ടേബിൾ ഘടന\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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(rewards)" + ] + }, + { + "source": [ + "ഈ ഗ്രാഫിൽ നിന്ന് എന്തും പറയാനാകില്ല, കാരണം സ്റ്റോകാസ്റ്റിക് പരിശീലന പ്രക്രിയയുടെ സ്വഭാവം മൂലം പരിശീലന സെഷനുകളുടെ ദൈർഘ്യം വളരെ വ്യത്യാസപ്പെടുന്നു. ഈ ഗ്രാഫിന്റെ കൂടുതൽ അർത്ഥം മനസ്സിലാക്കാൻ, നാം പരീക്ഷണങ്ങളുടെ ഒരു പരമ്പരയിൽ, ഉദാഹരണത്തിന് 100, **റണ്ണിംഗ് ശരാശരി** കണക്കാക്കാം. ഇത് `np.convolve` ഉപയോഗിച്ച് സൗകര്യപ്രദമായി ചെയ്യാം:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 22 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "def running_average(x,window):\n", + " return np.convolve(x,np.ones(window)/window,mode='valid')\n", + "\n", + "plt.plot(running_average(rewards,100))" + ] + }, + { + "source": [ + "## വ്യത്യസ്ത ഹൈപ്പർപാരാമീറ്ററുകൾ ഉപയോഗിച്ച് ഫലങ്ങൾ പ്രവർത്തനത്തിൽ കാണുക\n", + "\n", + "ഇപ്പോൾ പരിശീലിപ്പിച്ച മോഡൽ എങ്ങനെ പെരുമാറുന്നു എന്ന് യഥാർത്ഥത്തിൽ കാണുന്നത് രസകരമായിരിക്കും. സിമുലേഷൻ നടത്താം, പരിശീലന സമയത്ത് ഉപയോഗിച്ചിരുന്നതുപോലെ തന്നെ പ്രവർത്തന തിരഞ്ഞെടുപ്പ് തന്ത്രം പിന്തുടരാം: Q-ടേബിളിലെ സാധ്യത വിതരണത്തിന് അനുസരിച്ച് സാമ്പിൾ ചെയ്യുക:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "obs = env.reset()\n", + "done = False\n", + "while not done:\n", + " s = discretize(obs)\n", + " env.render()\n", + " v = probs(np.array(qvalues(s)))\n", + " a = random.choices(actions,weights=v)[0]\n", + " obs,_,done,_ = env.step(a)\n", + "env.close()" + ] + }, + { + "source": [ + "## ഫലം അനിമേറ്റഡ് GIF ആയി സംരക്ഷിക്കൽ\n", + "\n", + "നിങ്ങളുടെ സുഹൃത്തുക്കളെ ആകർഷിക്കാൻ, ബാലൻസിംഗ് പോളിന്റെ അനിമേറ്റഡ് GIF ചിത്രം അയയ്ക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കാം. ഇത് ചെയ്യാൻ, ഒരു ഇമേജ് ഫ്രെയിം ഉത്പാദിപ്പിക്കാൻ `env.render` വിളിക്കാം, പിന്നീട് PIL ലൈബ്രറി ഉപയോഗിച്ച് അവ അനിമേറ്റഡ് GIF ആയി സംരക്ഷിക്കാം:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "360\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "obs = env.reset()\n", + "done = False\n", + "i=0\n", + "ims = []\n", + "while not done:\n", + " s = discretize(obs)\n", + " img=env.render(mode='rgb_array')\n", + " ims.append(Image.fromarray(img))\n", + " v = probs(np.array([Qbest.get((s,a),0) for a in actions]))\n", + " a = random.choices(actions,weights=v)[0]\n", + " obs,_,done,_ = env.step(a)\n", + " i+=1\n", + "env.close()\n", + "ims[0].save('images/cartpole-balance.gif',save_all=True,append_images=ims[1::2],loop=0,duration=5)\n", + "print(i)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/8-Reinforcement/README.md b/translations/ml/8-Reinforcement/README.md new file mode 100644 index 000000000..62af165cd --- /dev/null +++ b/translations/ml/8-Reinforcement/README.md @@ -0,0 +1,69 @@ + +# റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിങ്ങിലേക്ക് പരിചയം + +റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ്, RL, സൂപ്പർവൈസ്ഡ് ലേണിംഗിനും അൺസൂപ്പർവൈസ്ഡ് ലേണിംഗിനും അടുത്തുള്ള അടിസ്ഥാന മെഷീൻ ലേണിംഗ് പാരഡൈംസ് ഒന്നായി കാണപ്പെടുന്നു. RL തീരുമാനങ്ങളുമായി ബന്ധപ്പെട്ടതാണ്: ശരിയായ തീരുമാനങ്ങൾ നൽകുക അല്ലെങ്കിൽ കുറഞ്ഞത് അവയിൽ നിന്ന് പഠിക്കുക. + +നിങ്ങൾക്ക് സ്റ്റോക്ക് മാർക്കറ്റ് പോലൊരു സിമുലേറ്റഡ് പരിസ്ഥിതി ഉണ്ടെന്ന് കരുതുക. ഒരു നിശ്ചിത നിയന്ത്രണം ഏർപ്പെടുത്തുകയാണെങ്കിൽ എന്ത് സംഭവിക്കും? അത് പോസിറ്റീവ് ഫലമോ നെഗറ്റീവ് ഫലമോ ഉണ്ടാക്കുമോ? എന്തെങ്കിലും നെഗറ്റീവ് സംഭവിച്ചാൽ, നിങ്ങൾക്ക് ഈ _നെഗറ്റീവ് റീഇൻഫോഴ്‌സ്‌മെന്റ്_ സ്വീകരിച്ച് അതിൽ നിന്ന് പഠിച്ച് ദിശ മാറ്റണം. അത് പോസിറ്റീവ് ഫലമായാൽ, നിങ്ങൾക്ക് ആ _പോസിറ്റീവ് റീഇൻഫോഴ്‌സ്‌മെന്റ്_ അടിസ്ഥാനമാക്കി മുന്നോട്ട് പോകണം. + +![peter and the wolf](../../../translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.ml.png) + +> പീറ്ററും അവന്റെ സുഹൃത്തുക്കളും വിശപ്പുള്ള വുൾഫിൽ നിന്ന് രക്ഷപ്പെടണം! ചിത്രം [Jen Looper](https://twitter.com/jenlooper) എന്നവന്റെതാണ് + +## പ്രാദേശിക വിഷയം: പീറ്ററും വുൾഫും (റഷ്യ) + +[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) റഷ്യൻ സംഗീതസംവിധായകൻ [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) എഴുതിയ ഒരു സംഗീതപരമായ പഞ്ചതന്ത്രകഥയാണ്. ഇത് യുവ പയനിയർ പീറ്ററിനെക്കുറിച്ചുള്ള കഥയാണ്, അവൻ ധൈര്യത്തോടെ വീട്ടിൽ നിന്ന് കാട്ടിലെ തുറസ്സിലേക്ക് വുൾഫിനെ പിന്തുടരാൻ പോകുന്നു. ഈ വിഭാഗത്തിൽ, പീറ്ററിന് സഹായകമായ മെഷീൻ ലേണിംഗ് ആൽഗോരിതങ്ങൾ പരിശീലിപ്പിക്കും: + +- **പരിസര പ്രദേശം** അന്വേഷിച്ച് മികച്ച നാവിഗേഷൻ മാപ്പ് നിർമ്മിക്കുക +- **സ്കേറ്റ്ബോർഡ് ഉപയോഗിച്ച്** അതിൽ ബാലൻസ് പിടിച്ച് വേഗത്തിൽ ചലിക്കാൻ പഠിക്കുക. + +[![Peter and the Wolf](https://img.youtube.com/vi/Fmi5zHg4QSM/0.jpg)](https://www.youtube.com/watch?v=Fmi5zHg4QSM) + +> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്ത് പ്രൊകോഫിയേവിന്റെ പീറ്ററും വുൾഫും കേൾക്കൂ + +## റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ് + +മുൻവകുപ്പുകളിൽ, നിങ്ങൾക്ക് മെഷീൻ ലേണിംഗ് പ്രശ്നങ്ങളുടെ രണ്ട് ഉദാഹരണങ്ങൾ കാണിച്ചിട്ടുണ്ട്: + +- **സൂപ്പർവൈസ്ഡ്**, ഇവിടെ നമുക്ക് പ്രശ്നം പരിഹരിക്കാൻ സാമ്പിൾ പരിഹാരങ്ങൾ സൂചിപ്പിക്കുന്ന ഡാറ്റാസെറ്റുകൾ ഉണ്ട്. [ക്ലാസിഫിക്കേഷൻ](../4-Classification/README.md)യും [റെഗ്രഷൻ](../2-Regression/README.md)യും സൂപ്പർവൈസ്ഡ് ലേണിംഗ് ടാസ്കുകളാണ്. +- **അൺസൂപ്പർവൈസ്ഡ്**, ഇവിടെ ലേബൽ ചെയ്ത പരിശീലന ഡാറ്റ ഇല്ല. അൺസൂപ്പർവൈസ്ഡ് ലേണിംഗിന്റെ പ്രധാന ഉദാഹരണം [ക്ലസ്റ്ററിംഗ്](../5-Clustering/README.md) ആണ്. + +ഈ വിഭാഗത്തിൽ, ലേബൽ ചെയ്ത പരിശീലന ഡാറ്റ ആവശ്യമില്ലാത്ത പുതിയ തരത്തിലുള്ള ലേണിംഗ് പ്രശ്നം പരിചയപ്പെടുത്തും. ഇത്തരം പ്രശ്നങ്ങളുടെ പല തരങ്ങളുണ്ട്: + +- **[സെമി-സൂപ്പർവൈസ്ഡ് ലേണിംഗ്](https://wikipedia.org/wiki/Semi-supervised_learning)**, ഇവിടെ നമുക്ക് പ്രീ-ട്രെയിനിംഗിന് ഉപയോഗിക്കാവുന്ന അനേകം ലേബൽ ചെയ്യാത്ത ഡാറ്റ ഉണ്ട്. +- **[റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ്](https://wikipedia.org/wiki/Reinforcement_learning)**, ഇവിടെ ഒരു ഏജന്റ് സിമുലേറ്റഡ് പരിസ്ഥിതിയിൽ പരീക്ഷണങ്ങൾ നടത്തിക്കൊണ്ട് പെരുമാറുന്നത് പഠിക്കുന്നു. + +### ഉദാഹരണം - കമ്പ്യൂട്ടർ ഗെയിം + +നിങ്ങൾക്ക് ഒരു കമ്പ്യൂട്ടറിനെ ചെസ് പോലുള്ള ഗെയിം കളിക്കാൻ പഠിപ്പിക്കണമെന്ന് കരുതുക, അല്ലെങ്കിൽ [സൂപ്പർ മാരിയോ](https://wikipedia.org/wiki/Super_Mario) പോലുള്ളത്. കമ്പ്യൂട്ടർ ഗെയിം കളിക്കാൻ, ഓരോ ഗെയിം സ്റ്റേറ്റിലും ഏത് നീക്കം ചെയ്യണമെന്ന് പ്രവചിക്കണം. ഇത് ക്ലാസിഫിക്കേഷൻ പ്രശ്നം പോലെ തോന്നിയേക്കാം, പക്ഷേ അത് അല്ല - കാരണം നമുക്ക് സ്റ്റേറ്റുകളും അനുബന്ധ പ്രവർത്തനങ്ങളും ഉള്ള ഡാറ്റാസെറ്റ് ഇല്ല. നിലവിലുള്ള ചെസ് മത്സരങ്ങൾ അല്ലെങ്കിൽ സൂപ്പർ മാരിയോ കളിക്കുന്ന കളിക്കാരുടെ റെക്കോർഡുകൾ പോലുള്ള ചില ഡാറ്റ ഉണ്ടാകാം, പക്ഷേ ആ ഡാറ്റ സാധ്യതയുള്ള സ്റ്റേറ്റുകളുടെ വലിയ എണ്ണം മതിയായ രീതിയിൽ ഉൾക്കൊള്ളില്ല. + +നിലവിലുള്ള ഗെയിം ഡാറ്റ അന്വേഷിക്കുന്നതിന് പകരം, **റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ്** (RL) *കമ്പ്യൂട്ടർ പല തവണ കളിക്കട്ടെ* എന്ന ആശയത്തെ അടിസ്ഥാനമാക്കുന്നു, ഫലങ്ങൾ നിരീക്ഷിച്ച്. അതിനാൽ, റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ് പ്രയോഗിക്കാൻ, നമുക്ക് രണ്ട് കാര്യങ്ങൾ വേണം: + +- **ഒരു പരിസ്ഥിതി**യും **ഒരു സിമുലേറ്ററും**, ഗെയിം പല തവണ കളിക്കാൻ അനുവദിക്കുന്നവ. ഈ സിമുലേറ്റർ എല്ലാ ഗെയിം നിയമങ്ങളും സാധ്യതയുള്ള സ്റ്റേറ്റുകളും പ്രവർത്തനങ്ങളും നിർവചിക്കും. + +- **ഒരു റിവാർഡ് ഫംഗ്ഷൻ**, ഓരോ നീക്കത്തിലും അല്ലെങ്കിൽ ഗെയിം മുഴുവൻ എത്രത്തോളം നന്നായി ചെയ്തുവെന്ന് പറയുന്നവ. + +മറ്റു മെഷീൻ ലേണിംഗ് തരംകളിൽ നിന്നും RL-ന്റെ പ്രധാന വ്യത്യാസം, RL-ൽ സാധാരണയായി ഗെയിം അവസാനിക്കാതെ നമുക്ക് ജയിച്ചോ തോറ്റോ എന്ന് അറിയില്ല എന്നതാണ്. അതിനാൽ, ഒരു പ്രത്യേക നീക്കം മാത്രം നല്ലതാണോ അല്ലയോ എന്ന് പറയാൻ കഴിയില്ല - ഗെയിം അവസാനം മാത്രമേ നമുക്ക് റിവാർഡ് ലഭിക്കൂ. നമ്മുടെ ലക്ഷ്യം അനിശ്ചിത സാഹചര്യങ്ങളിൽ മോഡൽ പരിശീലിപ്പിക്കാൻ സഹായിക്കുന്ന ആൽഗോരിതങ്ങൾ രൂപകൽപ്പന ചെയ്യുകയാണ്. നാം **Q-ലേണിംഗ്** എന്ന RL ആൽഗോരിതം പഠിക്കും. + +## പാഠങ്ങൾ + +1. [റീഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗും Q-ലേണിംഗും പരിചയം](1-QLearning/README.md) +2. [ജിം സിമുലേഷൻ പരിസ്ഥിതി ഉപയോഗിക്കൽ](2-Gym/README.md) + +## ക്രെഡിറ്റുകൾ + +"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/ml/9-Real-World/1-Applications/README.md b/translations/ml/9-Real-World/1-Applications/README.md new file mode 100644 index 000000000..645c2eb54 --- /dev/null +++ b/translations/ml/9-Real-World/1-Applications/README.md @@ -0,0 +1,162 @@ + +# പോസ്റ്റ്‌സ്‌ക്രിപ്റ്റ്: യാഥാർത്ഥ്യ ലോകത്തിലെ മെഷീൻ ലേണിംഗ് + + +![യാഥാർത്ഥ്യ ലോകത്തിലെ മെഷീൻ ലേണിംഗിന്റെ സംഗ്രഹം ഒരു സ്കെച്ച്നോട്ടിൽ](../../../../translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.ml.png) +> സ്കെച്ച്നോട്ട് [Tomomi Imura](https://www.twitter.com/girlie_mac) tarafından + +ഈ പാഠ്യപദ്ധതിയിൽ, നിങ്ങൾ പരിശീലനത്തിനായി ഡാറ്റ തയ്യാറാക്കാനും മെഷീൻ ലേണിംഗ് മോഡലുകൾ സൃഷ്ടിക്കാനും നിരവധി മാർഗങ്ങൾ പഠിച്ചു. നിങ്ങൾ ക്ലാസിക് റെഗ്രഷൻ, ക്ലസ്റ്ററിംഗ്, ക്ലാസിഫിക്കേഷൻ, നാച്ചുറൽ ലാംഗ്വേജ് പ്രോസസ്സിംഗ്, ടൈം സീരീസ് മോഡലുകളുടെ ഒരു പരമ്പര നിർമ്മിച്ചു. അഭിനന്ദനങ്ങൾ! ഇപ്പോൾ, നിങ്ങൾക്ക് ഇതെല്ലാം എന്തിനാണെന്ന് അറിയാൻ ആഗ്രഹമുണ്ടാകാം... ഈ മോഡലുകൾക്ക് യാഥാർത്ഥ്യ ലോകത്തിൽ എന്തെല്ലാം പ്രയോഗങ്ങൾ ഉണ്ട്? + +ഇൻഡസ്ട്രിയിൽ ആഴത്തിലുള്ള ലേണിംഗ് ഉപയോഗിക്കുന്ന AI-യുടെ വലിയ താൽപ്പര്യം ഉണ്ടാകുമ്പോഴും, ക്ലാസിക്കൽ മെഷീൻ ലേണിംഗ് മോഡലുകൾക്ക് ഇപ്പോഴും മൂല്യവത്തായ പ്രയോഗങ്ങൾ ഉണ്ട്. നിങ്ങൾക്ക് ഇന്നും ഈ ചില പ്രയോഗങ്ങൾ ഉപയോഗിക്കാം! ഈ പാഠത്തിൽ, എട്ട് വ്യത്യസ്ത വ്യവസായങ്ങളും വിഷയ-വിഭാഗങ്ങളും ഈ തരം മോഡലുകൾ അവരുടെ പ്രയോഗങ്ങൾ കൂടുതൽ പ്രകടനക്ഷമവും വിശ്വസനീയവുമാക്കി, ബുദ്ധിമുട്ടുള്ളവയും ഉപയോക്താക്കൾക്ക് മൂല്യമുള്ളവയുമാക്കാൻ എങ്ങനെ ഉപയോഗിക്കുന്നു എന്ന് പരിശോധിക്കും. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## 💰 ഫിനാൻസ് + +ഫിനാൻസ് മേഖലയ്ക്ക് മെഷീൻ ലേണിംഗിനായി നിരവധി അവസരങ്ങൾ നൽകുന്നു. ഈ മേഖലയിലെ പല പ്രശ്നങ്ങളും ML ഉപയോഗിച്ച് മോഡലാക്കി പരിഹരിക്കാനാകും. + +### ക്രെഡിറ്റ് കാർഡ് തട്ടിപ്പ് കണ്ടെത്തൽ + +കോഴ്സിൽ മുമ്പ് [k-means ക്ലസ്റ്ററിംഗ്](../../5-Clustering/2-K-Means/README.md) പഠിച്ചു, എന്നാൽ ഇത് ക്രെഡിറ്റ് കാർഡ് തട്ടിപ്പുമായി ബന്ധപ്പെട്ട പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ എങ്ങനെ ഉപയോഗിക്കാം? + +k-means ക്ലസ്റ്ററിംഗ് **ഔട്ട്‌ലൈയർ കണ്ടെത്തൽ** എന്ന ക്രെഡിറ്റ് കാർഡ് തട്ടിപ്പ് കണ്ടെത്തൽ സാങ്കേതികതയിൽ സഹായിക്കുന്നു. ഒരു ഡാറ്റാ സെറ്റിലെ നിരീക്ഷണങ്ങളിൽ ഉള്ള വ്യത്യാസങ്ങൾ അല്ലെങ്കിൽ ഔട്ട്‌ലൈറുകൾ, ക്രെഡിറ്റ് കാർഡ് സാധാരണ രീതിയിൽ ഉപയോഗിക്കപ്പെടുന്നുണ്ടോ അല്ലെങ്കിൽ എന്തെങ്കിലും അസാധാരണമുണ്ടോ എന്ന് പറയാൻ സഹായിക്കുന്നു. താഴെ നൽകിയ ലേഖനത്തിൽ കാണിച്ചിരിക്കുന്നതുപോലെ, k-means ക്ലസ്റ്ററിംഗ് ആൽഗോരിതം ഉപയോഗിച്ച് ക്രെഡിറ്റ് കാർഡ് ഡാറ്റ ക്രമീകരിച്ച് ഓരോ ഇടപാടും എത്രത്തോളം ഔട്ട്‌ലൈർ ആണെന്ന് അടിസ്ഥാനമാക്കി ഒരു ക്ലസ്റ്ററിലേക്ക് നിയോഗിക്കാം. പിന്നീട്, തട്ടിപ്പുള്ളതും നിയമപരവുമായ ഇടപാടുകൾക്കായി ഏറ്റവും അപകടകാരിയായ ക്ലസ്റ്ററുകൾ വിലയിരുത്താം. +[Reference](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf) + +### സമ്പത്ത് മാനേജ്മെന്റ് + +സമ്പത്ത് മാനേജ്മെന്റിൽ, വ്യക്തി അല്ലെങ്കിൽ സ്ഥാപനങ്ങൾ അവരുടെ ക്ലയന്റുകളുടെ പേരിൽ നിക്ഷേപങ്ങൾ കൈകാര്യം ചെയ്യുന്നു. ദീർഘകാലം സമ്പത്ത് നിലനിർത്താനും വളർത്താനും അവരുടെ ജോലി അത്യന്താപേക്ഷിതമാണ്, അതിനാൽ മികച്ച പ്രകടനം കാഴ്ചവെക്കുന്ന നിക്ഷേപങ്ങൾ തിരഞ്ഞെടുക്കുന്നത് അനിവാര്യമാണ്. + +ഒരു നിക്ഷേപം എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് വിലയിരുത്താനുള്ള ഒരു മാർഗം സ്റ്റാറ്റിസ്റ്റിക്കൽ റെഗ്രഷൻ ആണ്. [ലിനിയർ റെഗ്രഷൻ](../../2-Regression/1-Tools/README.md) ഒരു ഫണ്ട് ചില ബെഞ്ച്മാർക്കുകളോട് താരതമ്യം ചെയ്യുമ്പോൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് മനസ്സിലാക്കാൻ ഒരു മൂല്യവത്തായ ഉപകരണം ആണ്. റെഗ്രഷന്റെ ഫലങ്ങൾ സ്റ്റാറ്റിസ്റ്റിക്കൽ ദൃഢതയുള്ളതാണോ അല്ലയോ, അല്ലെങ്കിൽ അത് ക്ലയന്റിന്റെ നിക്ഷേപങ്ങളെ എത്രത്തോളം ബാധിക്കും എന്നതും നാം മനസ്സിലാക്കാം. കൂടുതൽ റിസ്ക് ഘടകങ്ങൾ പരിഗണിക്കുന്ന മൾട്ടി-റെഗ്രഷൻ ഉപയോഗിച്ച് നിങ്ങളുടെ വിശകലനം കൂടുതൽ വിപുലീകരിക്കാം. ഒരു പ്രത്യേക ഫണ്ടിനായി ഇത് എങ്ങനെ പ്രവർത്തിക്കുമെന്ന് കാണാൻ താഴെ നൽകിയ ലേഖനം പരിശോധിക്കുക. +[Reference](http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/) + +## 🎓 വിദ്യാഭ്യാസം + +വിദ്യാഭ്യാസ മേഖലയിലും ML പ്രയോഗിക്കാൻ വളരെ രസകരമായ മേഖലയാണ്. പരീക്ഷകളിൽ ചതിയുണ്ടോ എന്ന് കണ്ടെത്തൽ, എസ്സേകളിൽ ചതിയുണ്ടോ എന്ന് കണ്ടെത്തൽ, അല്ലെങ്കിൽ തിരുത്തൽ പ്രക്രിയയിൽ ഉദ്ദേശ്യവുമില്ലാത്ത പക്ഷപാതം നിയന്ത്രിക്കൽ പോലുള്ള പ്രശ്നങ്ങൾ പരിഹരിക്കേണ്ടതുണ്ട്. + +### വിദ്യാർത്ഥികളുടെ പെരുമാറ്റം പ്രവചിക്കൽ + +ഓൺലൈൻ ഓപ്പൺ കോഴ്സ് പ്രൊവൈഡറായ [Coursera](https://coursera.com) അവരുടെ ടെക് ബ്ലോഗിൽ നിരവധി എഞ്ചിനീയറിംഗ് തീരുമാനങ്ങൾ ചർച്ച ചെയ്യുന്നു. ഈ കേസ് സ്റ്റഡിയിൽ, അവർ ഒരു റെഗ്രഷൻ ലൈൻ പ്ലോട്ട് ചെയ്ത് കുറഞ്ഞ NPS (നെറ്റ് പ്രൊമോട്ടർ സ്കോർ) റേറ്റിംഗും കോഴ്സ് നിലനിർത്തലും അല്ലെങ്കിൽ ഉപേക്ഷണവും തമ്മിലുള്ള ബന്ധം പരിശോധിക്കാൻ ശ്രമിച്ചു. +[Reference](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) പഠിച്ചിട്ടുണ്ട്. +[Reference](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/) + +## 👜 റീട്ടെയിൽ + +റീട്ടെയിൽ മേഖലയ്ക്ക് ML ഉപയോഗിച്ച് ഉപഭോക്തൃ യാത്ര മെച്ചപ്പെടുത്തുന്നതിൽ നിന്നും ഇൻവെന്ററി സ്റ്റോക്കിംഗ് വരെ പലവിധം പ്രയോജനങ്ങൾ ഉണ്ട്. + +### ഉപഭോക്തൃ യാത്ര വ്യക്തിഗതമാക്കൽ + +വെയ്ഫെയർ, ഫർണിച്ചർ പോലുള്ള ഹോം ഗുഡ്സ് വിൽക്കുന്ന ഒരു കമ്പനി, ഉപഭോക്താക്കൾക്ക് അവരുടെ രുചിക്കും ആവശ്യങ്ങൾക്കും അനുയോജ്യമായ ഉൽപ്പന്നങ്ങൾ കണ്ടെത്താൻ സഹായിക്കുന്നത് അത്യന്താപേക്ഷിതമാണ്. ഈ ലേഖനത്തിൽ, കമ്പനിയിലെ എഞ്ചിനീയർമാർ ML, NLP ഉപയോഗിച്ച് "ഉപഭോക്താക്കൾക്ക് ശരിയായ ഫലങ്ങൾ കാണിക്കുന്നതെങ്ങനെ" എന്ന് വിവരിക്കുന്നു. പ്രത്യേകിച്ച്, അവരുടെ Query Intent Engine എന്റിറ്റി എക്സ്ട്രാക്ഷൻ, ക്ലാസിഫയർ പരിശീലനം, ആസറ്റ്, അഭിപ്രായം എക്സ്ട്രാക്ഷൻ, സെന്റിമെന്റ് ടാഗിംഗ് എന്നിവ ഉപഭോക്തൃ അവലോകനങ്ങളിൽ ഉപയോഗിക്കുന്നു. ഓൺലൈൻ റീട്ടെയിലിൽ NLP എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിന് ഇത് ഒരു ക്ലാസിക് ഉദാഹരണമാണ്. +[Reference](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search) + +### ഇൻവെന്ററി മാനേജ്മെന്റ് + +[StitchFix](https://stitchfix.com) പോലുള്ള നവീനവും ചടുലവുമായ കമ്പനികൾ, ഉപഭോക്താക്കൾക്ക് വസ്ത്രങ്ങൾ അയക്കുന്ന ബോക്സ് സേവനം, ശുപാർശകൾക്കും ഇൻവെന്ററി മാനേജ്മെന്റിനും ML-നെ ആശ്രയിക്കുന്നു. അവരുടെ സ്റ്റൈലിംഗ് ടീമുകളും മാർച്ചൻഡൈസിംഗ് ടീമുകളും ചേർന്ന് പ്രവർത്തിക്കുന്നു: "ഞങ്ങളുടെ ഒരു ഡാറ്റാ സയന്റിസ്റ്റ് ഒരു ജെനറ്റിക് ആൽഗോരിതം ഉപയോഗിച്ച് വസ്ത്രങ്ങൾ പ്രവചിക്കാൻ ശ്രമിച്ചു, ഇന്ന് നിലവിലില്ലാത്ത വിജയകരമായ വസ്ത്രം എന്തായിരിക്കും എന്ന്. അത് മാർച്ചൻഡൈസ് ടീമിന് നൽകി, ഇപ്പോൾ അവർ അത് ഒരു ഉപകരണമായി ഉപയോഗിക്കാം." +[Reference](https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/) + +## 🏥 ആരോഗ്യ പരിചരണം + +ആരോഗ്യ പരിചരണ മേഖല ഗവേഷണ പ്രവർത്തനങ്ങൾ മെച്ചപ്പെടുത്താനും രോഗികൾ വീണ്ടും പ്രവേശിപ്പിക്കുന്നതും രോഗങ്ങൾ പടരുന്നത് തടയുന്നതും പോലുള്ള ലജിസ്റ്റിക് പ്രശ്നങ്ങൾ പരിഹരിക്കാനും ML ഉപയോഗിക്കാം. + +### ക്ലിനിക്കൽ ട്രയൽ മാനേജ്മെന്റ് + +ക്ലിനിക്കൽ ട്രയലുകളിൽ വിഷാംശം ഒരു പ്രധാന ആശങ്കയാണ്. എത്രത്തോളം വിഷാംശം സഹിക്കാവുന്നതാണ്? ഈ പഠനത്തിൽ, വിവിധ ക്ലിനിക്കൽ ട്രയൽ രീതികൾ വിശകലനം ചെയ്ത് ക്ലിനിക്കൽ ട്രയൽ ഫലങ്ങളുടെ സാധ്യത പ്രവചിക്കുന്ന പുതിയ സമീപനം വികസിപ്പിച്ചു. പ്രത്യേകിച്ച്, അവർ റാൻഡം ഫോറസ്റ്റ് ഉപയോഗിച്ച് [ക്ലാസിഫയർ](../../4-Classification/README.md) നിർമ്മിക്കാൻ കഴിഞ്ഞു, ഇത് മരുന്നുകളുടെ ഗ്രൂപ്പുകൾ വേർതിരിക്കാൻ കഴിയും. +[Reference](https://www.sciencedirect.com/science/article/pii/S2451945616302914) + +### ആശുപത്രി വീണ്ടും പ്രവേശനം മാനേജ്മെന്റ് + +ആശുപത്രി പരിചരണം ചെലവേറിയതാണ്, പ്രത്യേകിച്ച് രോഗികളെ വീണ്ടും പ്രവേശിപ്പിക്കേണ്ടിവരുമ്പോൾ. ഈ ലേഖനം ML ഉപയോഗിച്ച് വീണ്ടും പ്രവേശന സാധ്യത പ്രവചിക്കുന്ന ഒരു കമ്പനി ചർച്ച ചെയ്യുന്നു, [ക്ലസ്റ്ററിംഗ്](../../5-Clustering/README.md) ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച്. ഈ ക്ലസ്റ്ററുകൾ വിശകലനക്കാർക്ക് "പുനഃപ്രവേശനങ്ങളുടെ സാധാരണ കാരണങ്ങൾ പങ്കിടുന്ന ഗ്രൂപ്പുകൾ കണ്ടെത്താൻ" സഹായിക്കുന്നു. +[Reference](https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning) + +### രോഗം മാനേജ്മെന്റ് + +സമീപകാല പാൻഡെമിക് മെഷീൻ ലേണിംഗ് രോഗം പടരുന്നത് തടയുന്നതിൽ എങ്ങനെ സഹായിക്കാമെന്ന് തെളിയിച്ചു. ഈ ലേഖനത്തിൽ ARIMA, ലോജിസ്റ്റിക് കർവുകൾ, ലിനിയർ റെഗ്രഷൻ, SARIMA എന്നിവയുടെ ഉപയോഗം കാണാം. "ഈ ജോലി വൈറസിന്റെ പടരൽ നിരക്ക് കണക്കാക്കാനും മരണങ്ങൾ, സുഖം പ്രാപിച്ച കേസുകൾ, സ്ഥിരീകരിച്ച കേസുകൾ പ്രവചിക്കാനും ശ്രമമാണ്, അതിലൂടെ നാം മെച്ചമായി തയ്യാറെടുക്കാനും ജീവിക്കാൻ സഹായിക്കും." +[Reference](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/) + +## 🌲 പരിസ്ഥിതി ശാസ്ത്രവും ഗ്രീൻ ടെക്കും + +പ്രകൃതി, പരിസ്ഥിതി നിരവധി സങ്കീർണ്ണമായ സംവിധാനങ്ങളടങ്ങിയതാണ്, മൃഗങ്ങളും പ്രകൃതിയും തമ്മിലുള്ള ബന്ധം ശ്രദ്ധയിൽ പെടുത്തുന്നു. ഈ സംവിധാനങ്ങൾ കൃത്യമായി അളക്കാനും, വന അഗ്നി പോലുള്ള സംഭവങ്ങൾ സംഭവിച്ചാൽ ശരിയായ നടപടി സ്വീകരിക്കാനും ഇത് അനിവാര്യമാണ്. + +### വന മാനേജ്മെന്റ് + +മുൻ പാഠങ്ങളിൽ നിങ്ങൾ [റീ ഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ്](../../8-Reinforcement/README.md) പഠിച്ചു. പ്രകൃതിയിലെ പാറ്റേണുകൾ പ്രവചിക്കാൻ ഇത് വളരെ ഉപകാരപ്രദമാണ്. പ്രത്യേകിച്ച്, വന അഗ്നി, അനധികൃത സ്പീഷീസുകളുടെ വ്യാപനം പോലുള്ള പരിസ്ഥിതി പ്രശ്നങ്ങൾ ട്രാക്ക് ചെയ്യാൻ ഇത് ഉപയോഗിക്കാം. കാനഡയിൽ, ഒരു ഗവേഷക സംഘം റീ ഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിംഗ് ഉപയോഗിച്ച് സാറ്റലൈറ്റ് ചിത്രങ്ങളിൽ നിന്ന് വന അഗ്നി ഡൈനാമിക്സ് മോഡലുകൾ നിർമ്മിച്ചു. "സ്പേഷ്യലി സ്പ്രെഡിംഗ് പ്രോസസ് (SSP)" എന്ന നവീന രീതിയിൽ, വന അഗ്നിയെ "ഭൂദൃശ്യത്തിലെ ഏതെങ്കിലും സെല്ലിലെ ഏജന്റ്" ആയി കണക്കാക്കി. "അഗ്നി ഏതെങ്കിലും സമയത്ത് ഒരു സ്ഥലം മുതൽ വടക്ക്, തെക്ക്, കിഴക്ക്, പടിഞ്ഞാറ് വ്യാപിക്കുകയോ അല്ലെങ്കിൽ വ്യാപിക്കാതിരിക്കാൻ കഴിയും." + +ഈ സമീപനം സാധാരണ RL ക്രമീകരണത്തെ മറിക്കുന്നു, കാരണം ബന്ധപ്പെട്ട മാർക്കോവ് ഡിസിഷൻ പ്രോസസിന്റെ (MDP) ഡൈനാമിക്സ് ഉടൻ അഗ്നി വ്യാപനത്തിന് അറിയപ്പെടുന്ന ഫംഗ്ഷനാണ്." ഈ സംഘത്തിന്റെ ക്ലാസിക് ആൽഗോരിതങ്ങൾക്കുറിച്ച് കൂടുതൽ വായിക്കുക. +[Reference](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 കർവ് നിങ്ങൾക്ക് പരിചിതമായിരിക്കാം. +[Reference](https://druckhaus-hofmann.de/gallery/31-wj-feb-2020.pdf) + +### ⚡️ ഊർജ്ജ മാനേജ്മെന്റ് + +[ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ്](../../7-TimeSeries/README.md) പാഠങ്ങളിൽ, ഒരു പട്ടണത്തിന് സപ്ലൈ-ഡിമാൻഡ് മനസ്സിലാക്കി വരുമാനം സൃഷ്ടിക്കാൻ സ്മാർട്ട് പാർക്കിംഗ് മീറ്ററുകളുടെ ആശയം അവതരിപ്പിച്ചു. ഈ ലേഖനം ക്ലസ്റ്ററിംഗ്, റെഗ്രഷൻ, ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ് എന്നിവ ചേർന്ന് അയർലൻഡിലെ ഭാവി ഊർജ്ജ ഉപയോഗം പ്രവചിക്കാൻ എങ്ങനെ സഹായിച്ചുവെന്ന് വിശദീകരിക്കുന്നു, സ്മാർട്ട് മീറ്ററിംഗ് അടിസ്ഥാനമാക്കി. +[Reference](https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf) + +## 💼 ഇൻഷുറൻസ് + +ഇൻഷുറൻസ് മേഖലയിലും ML ഉപയോഗിച്ച് സാമ്പത്തികവും ആക്ച്വറിയൽ മോഡലുകളും നിർമ്മിച്ച് മെച്ചപ്പെടുത്തുന്നു. + +### വോലറ്റിലിറ്റി മാനേജ്മെന്റ് + +MetLife, ഒരു ലൈഫ് ഇൻഷുറൻസ് പ്രൊവൈഡർ, അവരുടെ സാമ്പത്തിക മോഡലുകളിൽ വോലറ്റിലിറ്റി വിശകലനം ചെയ്ത് കുറയ്ക്കുന്നതിൽ തുറന്നുപറയുന്നു. ഈ ലേഖനത്തിൽ ബൈനറി, ഓർഡിനൽ ക്ലാസിഫിക്കേഷൻ ദൃശ്യവത്കരണങ്ങളും ഫോറ്കാസ്റ്റിംഗ് ദൃശ്യവത്കരണങ്ങളും കാണാം. +[Reference](https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf) + +## 🎨 കല, സംസ്കാരം, സാഹിത്യം + +കലാരംഗത്ത്, ഉദാഹരണത്തിന് പത്രപ്രവർത്തനത്തിൽ, നിരവധി രസകരമായ പ്രശ്നങ്ങൾ ഉണ്ട്. വ്യാജ വാർത്തകൾ കണ്ടെത്തൽ വലിയ പ്രശ്നമാണ്, കാരണം ഇത് ജനങ്ങളുടെ അഭിപ്രായത്തെ സ്വാധീനിക്കുകയും ജനാധിപത്യങ്ങളെ തകർക്കുകയും ചെയ്തിട്ടുണ്ട്. മ്യൂസിയങ്ങൾക്കും കലാസാഹിത്യ വസ്തുക്കൾ തമ്മിലുള്ള ബന്ധം കണ്ടെത്തുന്നതിൽ നിന്നും വിഭവങ്ങൾ പദ്ധതിയിടുന്നതിൽ വരെ ML ഉപകാരപ്രദമാണ്. + +### വ്യാജ വാർത്ത കണ്ടെത്തൽ + +ഇന്നത്തെ മാധ്യമങ്ങളിൽ വ്യാജ വാർത്ത കണ്ടെത്തൽ ഒരു പൂച്ചയും എലിയും കളിയാകുന്നു. ഈ ലേഖനത്തിൽ, പഠനക്കാർ നാം പഠിച്ച ML സാങ്കേതികതകൾ ഒന്നിച്ച് ചേർത്ത് ഒരു സിസ്റ്റം പരീക്ഷിച്ച് മികച്ച മോഡൽ വിനിയോഗിക്കാമെന്ന് നിർദ്ദേശിക്കുന്നു: "ഈ സിസ്റ്റം നാച്ചുറൽ ലാംഗ്വേജ് പ്രോസസ്സിംഗ് ഉപയോഗിച്ച് ഡാറ്റയിൽ നിന്ന് ഫീച്ചറുകൾ എടുക്കുന്നു, പിന്നീട് ഈ ഫീച്ചറുകൾ Naive Bayes, Support Vector Machine (SVM), Random Forest (RF), Stochastic Gradient Descent (SGD), Logistic Regression (LR) പോലുള്ള മെഷീൻ ലേണിംഗ് ക്ലാസിഫയർ പരിശീലനത്തിന് ഉപയോഗിക്കുന്നു." +[Reference](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 ശതമാനത്തിന്റെ കൃത്യതയിൽ ഹാജരാകലും പ്രവേശനവും പ്രവചിച്ചു," എന്ന് ആൻഡ്രൂ സിമ്നിക്ക്, ചിക്കാഗോ ആർട്ട് ഇൻസ്റ്റിറ്റ്യൂട്ടിലെ സീനിയർ വൈസ് പ്രസിഡന്റ് പറയുന്നു. +[Reference](https://www.chicagobusiness.com/article/20180518/ISSUE01/180519840/art-institute-of-chicago-uses-data-to-make-exhibit-choices) + +## 🏷 മാർക്കറ്റിംഗ് + +### ഉപഭോക്തൃ വിഭാഗീകരണം + +മികച്ച മാർക്കറ്റിംഗ് തന്ത്രങ്ങൾ വിവിധ ഗ്രൂപ്പുകളെ അടിസ്ഥാനമാക്കി ഉപഭോക്താക്കളെ വ്യത്യസ്തമായി ലക്ഷ്യമിടുന്നു. ഈ ലേഖനത്തിൽ ക്ലസ്റ്ററിംഗ് ആൽഗോരിതങ്ങളുടെ ഉപയോഗം വ്യത്യസ്തമായ മാർക്കറ്റിംഗ് പിന്തുണയ്ക്കാൻ ചർച്ച ചെയ്യുന്നു. വ്യത്യസ്തമായ മാർക്കറ്റിംഗ് കമ്പനികൾക്ക് ബ്രാൻഡ് തിരിച്ചറിയൽ മെച്ചപ്പെടുത്താനും കൂടുതൽ ഉപഭോക്താക്കളെ എത്താനും കൂടുതൽ വരുമാനം നേടാനും സഹായിക്കുന്നു. +[Reference](https://ai.inqline.com/machine-learning-for-marketing-customer-segmentation/) + +## 🚀 ചലഞ്ച് + +ഈ പാഠ്യപദ്ധതിയിൽ നിങ്ങൾ പഠിച്ച ചില സാങ്കേതികതകൾ പ്രയോജനപ്പെടുത്തുന്ന മറ്റൊരു മേഖലയെ കണ്ടെത്തി, അതിൽ ML എങ്ങനെ ഉപയോഗിക്കുന്നു എന്ന് കണ്ടെത്തുക. +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +വേഫെയർ ഡാറ്റ സയൻസ് ടീം അവരുടെ കമ്പനിയിൽ എങ്ങനെ ML ഉപയോഗിക്കുന്നു എന്നതിനെക്കുറിച്ച് പല രസകരമായ വീഡിയോകളും ഉണ്ട്. [ഒരു നോക്കുക](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos) ചെയ്യുന്നത് മൂല്യവത്താണ്! + +## അസൈൻമെന്റ് + +[ഒരു ML സ്കാവഞ്ചർ ഹണ്ട്](assignment.md) + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/9-Real-World/1-Applications/assignment.md b/translations/ml/9-Real-World/1-Applications/assignment.md new file mode 100644 index 000000000..92532f142 --- /dev/null +++ b/translations/ml/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/ml/9-Real-World/2-Debugging-ML-Models/README.md b/translations/ml/9-Real-World/2-Debugging-ML-Models/README.md new file mode 100644 index 000000000..559f5d539 --- /dev/null +++ b/translations/ml/9-Real-World/2-Debugging-ML-Models/README.md @@ -0,0 +1,185 @@ + +# പോസ്റ്റ്‌സ്‌ക്രിപ്റ്റ്: ഉത്തരവാദിത്വമുള്ള AI ഡാഷ്ബോർഡ് ഘടകങ്ങൾ ഉപയോഗിച്ച് മെഷീൻ ലേണിങ്ങിൽ മോഡൽ ഡീബഗ്ഗിംഗ് + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## പരിചയം + +മെഷീൻ ലേണിംഗ് നമ്മുടെ ദൈനംദിന ജീവിതത്തെ ബാധിക്കുന്നു. AI നമ്മുടെ വ്യക്തിഗത ജീവിതത്തെയും സമൂഹത്തെയും ബാധിക്കുന്ന ആരോഗ്യസംരക്ഷണം, ധനകാര്യ, വിദ്യാഭ്യാസം, തൊഴിൽ തുടങ്ങിയ ഏറ്റവും പ്രധാനപ്പെട്ട ചില സംവിധാനങ്ങളിൽ ഇടംപിടിക്കുന്നു. ഉദാഹരണത്തിന്, ആരോഗ്യപരിശോധനകൾ നടത്തുന്നതോ തട്ടിപ്പുകൾ കണ്ടെത്തുന്നതോ പോലുള്ള ദൈനംദിന തീരുമാനമെടുക്കൽ പ്രവർത്തനങ്ങളിൽ സിസ്റ്റങ്ങളും മോഡലുകളും പങ്കാളികളാണ്. അതിനാൽ, AI യിലെ പുരോഗതികളും അതിന്റെ വേഗത്തിലുള്ള സ്വീകരണവും സാമൂഹിക പ്രതീക്ഷകളുടെയും വളരുന്ന നിയന്ത്രണങ്ങളുടെയും പ്രതികരണമായി വരുന്നു. AI സിസ്റ്റങ്ങൾ പ്രതീക്ഷകൾ പാലിക്കാത്ത മേഖലകൾ നാം നിരന്തരം കാണുന്നു; അവ പുതിയ വെല്ലുവിളികൾ തുറന്നുകാട്ടുന്നു; സർക്കാറുകൾ AI പരിഹാരങ്ങളെ നിയന്ത്രിക്കാൻ തുടങ്ങുന്നു. അതിനാൽ, ഈ മോഡലുകൾ എല്ലാവർക്കും നീതിപൂർണവും വിശ്വസനീയവുമായ, ഉൾക്കൊള്ളുന്ന, പാരദർശകവും ഉത്തരവാദിത്വമുള്ള ഫലങ്ങൾ നൽകുന്നുവെന്ന് വിശകലനം ചെയ്യുന്നത് പ്രധാനമാണ്. + +ഈ പാഠ്യപദ്ധതിയിൽ, മോഡലിന് ഉത്തരവാദിത്വമുള്ള AI പ്രശ്നങ്ങളുണ്ടോ എന്ന് വിലയിരുത്താൻ ഉപയോഗിക്കാവുന്ന പ്രായോഗിക ഉപകരണങ്ങൾ നോക്കാം. പരമ്പരാഗത മെഷീൻ ലേണിംഗ് ഡീബഗ്ഗിംഗ് സാങ്കേതികവിദ്യകൾ സാധാരണയായി സംഖ്യാത്മക കണക്കുകളായ ഏകീകരിച്ച കൃത്യത അല്ലെങ്കിൽ ശരാശരി പിശക് നഷ്ടം എന്നിവയുടെ അടിസ്ഥാനത്തിലാണ്. നിങ്ങൾ ഈ മോഡലുകൾ നിർമ്മിക്കാൻ ഉപയോഗിക്കുന്ന ഡാറ്റയിൽ ജാതി, ലിംഗം, രാഷ്ട്രീയ കാഴ്ചപ്പാട്, മതം പോലുള്ള ചില ജനസംഖ്യാ വിഭാഗങ്ങൾ ഇല്ലെങ്കിൽ എന്ത് സംഭവിക്കും എന്ന് ചിന്തിക്കുക. മോഡലിന്റെ ഔട്ട്പുട്ട് ചില ജനസംഖ്യാ വിഭാഗങ്ങളെ അനുകൂലിക്കുന്നതായി വ്യാഖ്യാനിക്കപ്പെടുമ്പോൾ എന്ത് സംഭവിക്കും? ഇത് ഈ സങ്കീർണ്ണമായ സവിശേഷതാ ഗ്രൂപ്പുകളുടെ അധികം അല്ലെങ്കിൽ കുറവ് പ്രതിനിധാനത്തെ പരിചയപ്പെടുത്താം, ഫെയർ‌നസ്, ഉൾക്കൊള്ളൽ, വിശ്വസനീയത സംബന്ധിച്ച പ്രശ്നങ്ങൾ മോഡലിൽ ഉണ്ടാകാം. മറ്റൊരു കാര്യം, മെഷീൻ ലേണിംഗ് മോഡലുകൾ ബ്ലാക്ക് ബോക്സുകളായി കണക്കാക്കപ്പെടുന്നു, അതിനാൽ മോഡലിന്റെ പ്രവചനത്തെ എന്താണ് പ്രേരിപ്പിക്കുന്നത് എന്ന് മനസ്സിലാക്കാനും വിശദീകരിക്കാനും ബുദ്ധിമുട്ടാണ്. ഈ എല്ലാ വെല്ലുവിളികളും ഡാറ്റാ ശാസ്ത്രജ്ഞരും AI വികസനക്കാരും അനുഭവിക്കുന്നതാണ്, കാരണം മോഡലിന്റെ ഫെയർ‌നസും വിശ്വസനീയതയും ഡീബഗ് ചെയ്യാനും വിലയിരുത്താനും ആവശ്യമായ ഉപകരണങ്ങൾ അവർക്കില്ല. + +ഈ പാഠത്തിൽ, നിങ്ങൾ നിങ്ങളുടെ മോഡലുകൾ ഡീബഗ് ചെയ്യുന്നത് പഠിക്കും: + +- **പിശക് വിശകലനം**: നിങ്ങളുടെ ഡാറ്റാ വിതരണത്തിൽ മോഡലിന് ഉയർന്ന പിശക് നിരക്കുകൾ എവിടെയാണ് എന്ന് കണ്ടെത്തുക. +- **മോഡൽ അവലോകനം**: വ്യത്യസ്ത ഡാറ്റാ കോഹോർട്ടുകൾക്കിടയിൽ താരതമ്യ വിശകലനം നടത്തുക, മോഡലിന്റെ പ്രകടന മെട്രിക്‌സുകളിൽ വ്യത്യാസങ്ങൾ കണ്ടെത്താൻ. +- **ഡാറ്റാ വിശകലനം**: നിങ്ങളുടെ ഡാറ്റയിൽ ഒരു ജനസംഖ്യാ വിഭാഗം മറ്റൊന്നിനെ അപേക്ഷിച്ച് അധികം അല്ലെങ്കിൽ കുറവായി പ്രതിനിധാനം ചെയ്യപ്പെടുന്നിടങ്ങൾ പരിശോധിക്കുക, ഇത് മോഡലിനെ ഒരു വിഭാഗത്തെ അനുകൂലിക്കാൻ ഇടയാക്കാം. +- **സവിശേഷതാ പ്രാധാന്യം**: ആഗോള തലത്തിൽ അല്ലെങ്കിൽ പ്രാദേശിക തലത്തിൽ മോഡലിന്റെ പ്രവചനങ്ങളെ പ്രേരിപ്പിക്കുന്ന സവിശേഷതകൾ മനസ്സിലാക്കുക. + +## മുൻകൂർ ആവശ്യകത + +മുൻകൂർ ആവശ്യകതയായി, ദയവായി [ഉത്തരവാദിത്വമുള്ള AI ഉപകരണങ്ങൾ ഡെവലപ്പർമാർക്കായി](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) എന്ന അവലോകനം ചെയ്യുക. + +> ![ഉത്തരവാദിത്വമുള്ള AI ഉപകരണങ്ങളുടെ ഗിഫ്](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) + +## പിശക് വിശകലനം + +കൃത്യത അളക്കാൻ ഉപയോഗിക്കുന്ന പരമ്പരാഗത മോഡൽ പ്രകടന മെട്രിക്‌സുകൾ സാധാരണയായി ശരിയായ പ്രവചനങ്ങൾക്കും തെറ്റായ പ്രവചനങ്ങൾക്കും അടിസ്ഥാനമായ കണക്കുകളാണ്. ഉദാഹരണത്തിന്, ഒരു മോഡൽ 89% കൃത്യതയുള്ളതാണെന്ന് 0.001 പിശക് നഷ്ടത്തോടെ നിശ്ചയിക്കുന്നത് നല്ല പ്രകടനമായി കണക്കാക്കാം. പിശകുകൾ സാധാരണയായി നിങ്ങളുടെ അടിസ്ഥാന ഡാറ്റാസെറ്റിൽ സമാനമായി വിതരണം ചെയ്തിട്ടില്ല. നിങ്ങൾക്ക് 89% കൃത്യതയുള്ള മോഡൽ സ്കോർ ലഭിച്ചാലും, മോഡൽ 42% തവണ പരാജയപ്പെടുന്ന ഡാറ്റാ മേഖലകൾ വ്യത്യസ്തമായി ഉണ്ടാകാം. ഈ പരാജയ മാതൃകകൾ ചില ഡാറ്റാ ഗ്രൂപ്പുകളിൽ ഫെയർ‌നസോ വിശ്വസനീയതയോ സംബന്ധിച്ച പ്രശ്നങ്ങൾ ഉണ്ടാക്കാം. മോഡൽ എവിടെ നല്ല പ്രകടനം കാഴ്ചവെക്കുന്നു അല്ലെങ്കിൽ പരാജയപ്പെടുന്നു എന്ന് മനസ്സിലാക്കുന്നത് അനിവാര്യമാണ്. മോഡലിൽ പിശകുകൾ കൂടുതലുള്ള ഡാറ്റാ മേഖലകൾ ഒരു പ്രധാന ഡാറ്റാ ജനസംഖ്യയായി മാറാം. + +![മോഡൽ പിശകുകൾ വിശകലനം ചെയ്യുക](../../../../translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.ml.png) + +RAI ഡാഷ്ബോർഡിലെ പിശക് വിശകലന ഘടകം വിവിധ കോഹോർട്ടുകളിൽ മോഡൽ പരാജയം എങ്ങനെ വിതരണം ചെയ്തിട്ടുള്ളതെന്ന് ഒരു ട്രീ വിസ്വലൈസേഷനിലൂടെ കാണിക്കുന്നു. ഇത് നിങ്ങളുടെ ഡാറ്റാസെറ്റിൽ ഉയർന്ന പിശക് നിരക്കുള്ള സവിശേഷതകൾ അല്ലെങ്കിൽ മേഖലകൾ കണ്ടെത്താൻ സഹായിക്കുന്നു. മോഡലിന്റെ പിശകുകൾ എവിടെ നിന്നാണ് വരുന്നത് എന്ന് കാണുമ്പോൾ, നിങ്ങൾ മൂലകാരണം അന്വേഷിക്കാൻ തുടങ്ങാം. ഡാറ്റാ കോഹോർട്ടുകൾ സൃഷ്ടിച്ച് അവയിൽ വിശകലനം നടത്താനും കഴിയും. ഈ ഡാറ്റാ കോഹോർട്ടുകൾ ഡീബഗ്ഗിംഗ് പ്രക്രിയയിൽ സഹായിക്കുന്നു, ഒരു കോഹോർട്ടിൽ മോഡൽ പ്രകടനം നല്ലതായിരിക്കുമ്പോൾ മറ്റൊന്നിൽ പിശകുള്ളതെന്തുകൊണ്ടെന്ന് കണ്ടെത്താൻ. + +![പിശക് വിശകലനം](../../../../translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.ml.png) + +ട്രീ മാപ്പിലെ ദൃശ്യ സൂചകങ്ങൾ പ്രശ്നമേഖലകൾ വേഗത്തിൽ കണ്ടെത്താൻ സഹായിക്കുന്നു. ഉദാഹരണത്തിന്, ട്രീ നോഡിന് ഇരുണ്ട ചുവപ്പ് നിറം കൂടുതലായിരിക്കുമ്പോൾ പിശക് നിരക്ക് ഉയർന്നതാണ്. + +ഹീറ്റ് മാപ്പ് മറ്റൊരു വിസ്വലൈസേഷൻ ഫംഗ്ഷണാലിറ്റിയാണ്, ഇത് ഒരു അല്ലെങ്കിൽ രണ്ട് സവിശേഷതകൾ ഉപയോഗിച്ച് പിശക് നിരക്ക് പരിശോധിക്കാൻ സഹായിക്കുന്നു, മുഴുവൻ ഡാറ്റാസെറ്റിലോ കോഹോർട്ടുകളിലോ മോഡൽ പിശകുകൾക്ക് കാരണമായ ഘടകങ്ങൾ കണ്ടെത്താൻ. + +![പിശക് വിശകലന ഹീറ്റ് മാപ്പ്](../../../../translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.ml.png) + +പിശക് വിശകലനം ഉപയോഗിക്കേണ്ടത്: + +* മോഡൽ പരാജയങ്ങൾ ഡാറ്റാസെറ്റിലും വിവിധ ഇൻപുട്ട്, സവിശേഷതാ അളവുകളിലും എങ്ങനെ വിതരണം ചെയ്തിട്ടുള്ളതെന്ന് ആഴത്തിൽ മനസ്സിലാക്കാൻ. +* ഏകീകരിച്ച പ്രകടന മെട്രിക്‌സുകൾ വിഭജിച്ച് പിശകുള്ള കോഹോർട്ടുകൾ സ്വയം കണ്ടെത്തി ലക്ഷ്യമിട്ട പരിഹാര നടപടികൾക്ക് സഹായിക്കാൻ. + +## മോഡൽ അവലോകനം + +മെഷീൻ ലേണിംഗ് മോഡലിന്റെ പ്രകടനം വിലയിരുത്താൻ അതിന്റെ പെരുമാറ്റത്തെ സമഗ്രമായി മനസ്സിലാക്കേണ്ടതുണ്ട്. പിശക് നിരക്ക്, കൃത്യത, റിക്കാൾ, പ്രിസിഷൻ, MAE (Mean Absolute Error) പോലുള്ള metrics ഒന്നിലധികം പരിശോധിച്ച് പ്രകടന വ്യത്യാസങ്ങൾ കണ്ടെത്താം. ഒരു മെട്രിക് മികച്ചതായിരിക്കാം, പക്ഷേ മറ്റൊന്നിൽ പിശകുകൾ കാണാം. കൂടാതെ, മുഴുവൻ ഡാറ്റാസെറ്റിലോ കോഹോർട്ടുകളിലോ metrics താരതമ്യം ചെയ്യുന്നത് മോഡൽ എവിടെ നല്ലതും എവിടെ മോശമെന്നും വ്യക്തമാക്കുന്നു. പ്രത്യേകിച്ച്, സെൻസിറ്റീവ് സവിശേഷതകളുള്ള (ഉദാ: രോഗിയുടെ ജാതി, ലിംഗം, പ്രായം) കോഹോർട്ടുകളിൽ മോഡൽ പ്രകടനം പരിശോധിക്കുന്നത് മോഡലിൽ ഉണ്ടാകാവുന്ന അനീതിയെ കണ്ടെത്താൻ സഹായിക്കുന്നു. ഉദാഹരണത്തിന്, സെൻസിറ്റീവ് സവിശേഷതകളുള്ള ഒരു കോഹോർട്ടിൽ മോഡൽ കൂടുതൽ പിശകുള്ളതായി കണ്ടെത്തുന്നത് മോഡലിൽ അനീതിയുണ്ടെന്ന് സൂചിപ്പിക്കാം. + +RAI ഡാഷ്ബോർഡിലെ മോഡൽ അവലോകന ഘടകം ഡാറ്റാ പ്രതിനിധാനമുള്ള കോഹോർട്ടുകളുടെ പ്രകടന മെട്രിക്‌സുകൾ വിശകലനം ചെയ്യുന്നതിൽ മാത്രമല്ല, വ്യത്യസ്ത കോഹോർട്ടുകളിലുടനീളം മോഡലിന്റെ പെരുമാറ്റം താരതമ്യം ചെയ്യാനുള്ള കഴിവും നൽകുന്നു. + +![ഡാറ്റാസെറ്റ് കോഹോർട്ടുകൾ - RAI ഡാഷ്ബോർഡിലെ മോഡൽ അവലോകനം](../../../../translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.ml.png) + +ഘടകത്തിന്റെ സവിശേഷതാ അടിസ്ഥാനത്തിലുള്ള വിശകലന ഫംഗ്ഷണാലിറ്റി ഉപയോക്താക്കളെ ഒരു പ്രത്യേക സവിശേഷതയിലുള്ള ഡാറ്റാ ഉപഗ്രൂപ്പുകൾ കുറയ്ക്കാൻ സഹായിക്കുന്നു, സൂക്ഷ്മതയിൽ അനോമലികൾ കണ്ടെത്താൻ. ഉദാഹരണത്തിന്, ഡാഷ്ബോർഡിൽ ഒരു ഉപയോക്താവ് തിരഞ്ഞെടുക്കുന്ന സവിശേഷതയ്ക്ക് (ഉദാ: *"time_in_hospital < 3"* അല്ലെങ്കിൽ *"time_in_hospital >= 7"*) സ്വയം കോഹോർട്ടുകൾ സൃഷ്ടിക്കുന്ന ബുദ്ധിമുട്ട് ഉണ്ട്. ഇത് വലിയ ഡാറ്റാ ഗ്രൂപ്പിൽ നിന്നൊരു പ്രത്യേക സവിശേഷത വേർതിരിച്ച് മോഡലിന്റെ പിശകുള്ള ഫലങ്ങൾക്ക് പ്രധാന കാരണമാണോ എന്ന് പരിശോധിക്കാൻ സഹായിക്കുന്നു. + +![സവിശേഷതാ കോഹോർട്ടുകൾ - RAI ഡാഷ്ബോർഡിലെ മോഡൽ അവലോകനം](../../../../translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.ml.png) + +മോഡൽ അവലോകന ഘടകം രണ്ട് തരത്തിലുള്ള വ്യത്യാസ മെട്രിക്‌സുകൾ പിന്തുണയ്ക്കുന്നു: + +**മോഡൽ പ്രകടനത്തിലെ വ്യത്യാസം**: തിരഞ്ഞെടുക്കപ്പെട്ട പ്രകടന മെട്രിക്‌സിന്റെ മൂല്യങ്ങളിൽ ഡാറ്റാ ഉപഗ്രൂപ്പുകൾക്കിടയിലെ വ്യത്യാസം (വ്യത്യാസം) കണക്കാക്കുന്നു. ഉദാഹരണങ്ങൾ: + +* കൃത്യത നിരക്കിലെ വ്യത്യാസം +* പിശക് നിരക്കിലെ വ്യത്യാസം +* പ്രിസിഷനിലെ വ്യത്യാസം +* റിക്കാളിലെ വ്യത്യാസം +* ശരാശരി ആബ്സല്യൂട്ട് പിശക് (MAE) ൽ വ്യത്യാസം + +**തിരഞ്ഞെടുപ്പ് നിരക്കിലെ വ്യത്യാസം**: ഉപഗ്രൂപ്പുകൾക്കിടയിലെ തിരഞ്ഞെടുപ്പ് നിരക്കിലെ (നന്മയുള്ള പ്രവചന) വ്യത്യാസം. ഉദാഹരണത്തിന് വായ്പ അംഗീകാരം നിരക്കിലെ വ്യത്യാസം. തിരഞ്ഞെടുപ്പ് നിരക്ക് എന്നത് ഓരോ ക്ലാസിലെയും ഡാറ്റാ പോയിന്റുകളുടെ 1 ആയി (ബൈനറി ക്ലാസിഫിക്കേഷനിൽ) വർഗ്ഗീകരിച്ച അളവോ, പ്രവചന മൂല്യങ്ങളുടെ വിതരണമോ (റെഗ്രഷനിൽ) ആണ്. + +## ഡാറ്റാ വിശകലനം + +> "നിങ്ങൾ ഡാറ്റയെ മതിയായ സമയം പീഡിപ്പിച്ചാൽ, അത് എന്തും സമ്മതിക്കും" - റൊണാൾഡ് കോസ് + +ഈ പ്രസ്താവന അതീവമായിരിക്കും തോന്നുക, പക്ഷേ ഡാറ്റയെ ഏതൊരു നിഗമനത്തെയും പിന്തുണയ്ക്കാൻ മാനിപ്പുലേറ്റ് ചെയ്യാമെന്നത് സത്യമാണെന്ന് പറയാം. ഇത്തരം മാനിപ്പുലേഷൻ ചിലപ്പോൾ അനായാസം സംഭവിക്കാം. മനുഷ്യരായി, നമ്മളെല്ലാവർക്കും പക്ഷപാതം ഉണ്ട്, ഡാറ്റയിൽ നിങ്ങൾ ബോധപൂർവ്വം പക്ഷപാതം ചേർക്കുമ്പോൾ അത് അറിയുക പ്രയാസമാണ്. AI യിലും മെഷീൻ ലേണിംഗിലും നീതിപൂർണത ഉറപ്പാക്കുന്നത് സങ്കീർണ്ണമായ വെല്ലുവിളിയാണ്. + +ഡാറ്റ പരമ്പരാഗത മോഡൽ പ്രകടന മെട്രിക്‌സുകൾക്ക് വലിയ അന്ധസ്ഥലമാണ്. നിങ്ങൾക്ക് ഉയർന്ന കൃത്യത സ്കോറുകൾ ഉണ്ടാകാം, പക്ഷേ ഇത് നിങ്ങളുടെ ഡാറ്റാസെറ്റിൽ ഉള്ള അടിസ്ഥാനം പക്ഷപാതം പ്രതിഫലിപ്പിക്കണമെന്നില്ല. ഉദാഹരണത്തിന്, ഒരു കമ്പനിയിലെ ജീവനക്കാരുടെ ഡാറ്റാസെറ്റിൽ 27% സ്ത്രീകൾ എക്സിക്യൂട്ടീവ് സ്ഥാനങ്ങളിൽ ഉണ്ടെങ്കിൽ, 73% പുരുഷന്മാർ അതേ നിലയിൽ ഉണ്ടെങ്കിൽ, ഈ ഡാറ്റയിൽ പരിശീലിപ്പിച്ച ജോബ് പരസ്യ AI മോഡൽ മുതിർന്ന ജോബ് സ്ഥാനങ്ങൾക്ക് പ്രധാനമായും പുരുഷ പ്രേക്ഷകരെ ലക്ഷ്യമിടാം. ഈ ഡാറ്റ അസമത്വം മോഡലിന്റെ പ്രവചനത്തെ ഒരു ലിംഗത്തെ അനുകൂലിക്കാൻ ഇടയാക്കുന്നു. ഇത് AI മോഡലിൽ ലിംഗഭേദം എന്ന നീതിപൂർണത പ്രശ്നം തുറന്നുകാട്ടുന്നു. + +RAI ഡാഷ്ബോർഡിലെ ഡാറ്റാ വിശകലന ഘടകം ഡാറ്റാസെറ്റിൽ അധികം അല്ലെങ്കിൽ കുറവായി പ്രതിനിധാനം ചെയ്യുന്ന മേഖലകൾ കണ്ടെത്താൻ സഹായിക്കുന്നു. ഡാറ്റ അസമത്വങ്ങൾ അല്ലെങ്കിൽ ഒരു പ്രത്യേക ഡാറ്റാ ഗ്രൂപ്പിന്റെ പ്രതിനിധാനക്കുറവ് മൂലം ഉണ്ടാകുന്ന പിശകുകളും നീതിപൂർണത പ്രശ്നങ്ങളും കണ്ടെത്താൻ ഉപയോക്താക്കളെ സഹായിക്കുന്നു. പ്രവചിച്ച ഫലങ്ങളും യഥാർത്ഥ ഫലങ്ങളും, പിശക് ഗ്രൂപ്പുകളും, പ്രത്യേക സവിശേഷതകളും അടിസ്ഥാനമാക്കി ഡാറ്റാസെറ്റുകൾ ദൃശ്യവൽക്കരിക്കാൻ കഴിയും. ചിലപ്പോൾ കുറവായി പ്രതിനിധാനം ചെയ്യുന്ന ഡാറ്റാ ഗ്രൂപ്പ് കണ്ടെത്തുന്നത് മോഡൽ നന്നായി പഠിക്കുന്നില്ലെന്ന് വെളിപ്പെടുത്താം, അതിനാൽ പിശകുകൾ കൂടുതലാണ്. ഡാറ്റാ പക്ഷപാതമുള്ള മോഡൽ ഫെയർ‌നസിന്റെ പ്രശ്നമല്ല, അത് ഉൾക്കൊള്ളലില്ലായ്മയും വിശ്വസനീയതയില്ലായ്മയും കാണിക്കുന്നു. + +![RAI ഡാഷ്ബോർഡിലെ ഡാറ്റാ വിശകലന ഘടകം](../../../../translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.ml.png) + +ഡാറ്റാ വിശകലനം ഉപയോഗിക്കേണ്ടത്: + +* വ്യത്യസ്ത ഫിൽട്ടറുകൾ തിരഞ്ഞെടുക്കി നിങ്ങളുടെ ഡാറ്റ വിവിധ അളവുകളായി (കോഹോർട്ടുകൾ എന്നും അറിയപ്പെടുന്നു) വിഭജിച്ച് ഡാറ്റാസെറ്റ് സ്ഥിതിവിവരക്കണക്കുകൾ പരിശോധിക്കാൻ. +* വ്യത്യസ്ത കോഹോർട്ടുകളിലെയും സവിശേഷതാ ഗ്രൂപ്പുകളിലെയും ഡാറ്റാ വിതരണത്തെ മനസ്സിലാക്കാൻ. +* നീതിപൂർണത, പിശക് വിശകലനം, കാരണപരമായ കണ്ടെത്തലുകൾ (മറ്റു ഡാഷ്ബോർഡ് ഘടകങ്ങളിൽ നിന്നുള്ള) നിങ്ങളുടെ ഡാറ്റാസെറ്റിന്റെ വിതരണത്തിന്റെ ഫലമാണോ എന്ന് നിർണയിക്കാൻ. +* പ്രതിനിധാന പ്രശ്നങ്ങൾ, ലേബൽ ശബ്ദം, സവിശേഷത ശബ്ദം, ലേബൽ പക്ഷപാതം തുടങ്ങിയവയിൽ നിന്നുള്ള പിശകുകൾ കുറയ്ക്കാൻ കൂടുതൽ ഡാറ്റ എവിടെ ശേഖരിക്കണമെന്ന് തീരുമാനിക്കാൻ. + +## മോഡൽ വ്യാഖ്യാനം + +മെഷീൻ ലേണിംഗ് മോഡലുകൾ സാധാരണയായി ബ്ലാക്ക് ബോക്സുകളാണ്. ഒരു മോഡലിന്റെ പ്രവചനത്തെ പ്രേരിപ്പിക്കുന്ന പ്രധാന ഡാറ്റാ സവിശേഷതകൾ മനസ്സിലാക്കുന്നത് വെല്ലുവിളിയാണ്. ഒരു മോഡൽ എന്തുകൊണ്ട് ഒരു പ്രവചനമുണ്ടാക്കുന്നു എന്ന് പാരദർശകത നൽകുന്നത് പ്രധാനമാണ്. ഉദാഹരണത്തിന്, ഒരു AI സിസ്റ്റം ഒരു ഡയബറ്റിക് രോഗി 30 ദിവസത്തിനുള്ളിൽ ആശുപത്രിയിൽ വീണ്ടും പ്രവേശിക്കാനുള്ള അപകടത്തിൽ ആണെന്ന് പ്രവചിച്ചാൽ, അതിന്റെ പ്രവചനത്തിന് കാരണമായ പിന്തുണയുള്ള ഡാറ്റ നൽകാൻ കഴിയണം. പിന്തുണയുള്ള ഡാറ്റ സൂചകങ്ങൾ ക്ലിനീഷ്യന്മാരെ അല്ലെങ്കിൽ ആശുപത്രികളെ നന്നായി അറിയപ്പെട്ട തീരുമാനങ്ങൾ എടുക്കാൻ സഹായിക്കുന്നു. കൂടാതെ, വ്യക്തിഗത രോഗിക്ക് മോഡൽ എന്തുകൊണ്ട് ഒരു പ്രവചനമുണ്ടാക്കി എന്ന് വിശദീകരിക്കാൻ കഴിയുന്നത് ആരോഗ്യനിയമങ്ങളോടുള്ള ഉത്തരവാദിത്വം ഉറപ്പാക്കുന്നു. മനുഷ്യരുടെ ജീവിതത്തെ ബാധിക്കുന്ന രീതിയിൽ മെഷീൻ ലേണിംഗ് മോഡലുകൾ ഉപയോഗിക്കുമ്പോൾ, മോഡലിന്റെ പെരുമാറ്റത്തെ എന്താണ് സ്വാധീനിക്കുന്നത് എന്ന് മനസ്സിലാക്കുകയും വിശദീകരിക്കുകയും ചെയ്യുന്നത് അത്യന്താപേക്ഷിതമാണ്. മോഡൽ വിശദീകരണവും വ്യാഖ്യാനവും താഴെപ്പറയുന്ന സാഹചര്യങ്ങളിൽ ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകുന്നു: + +* മോഡൽ ഡീബഗ്ഗിംഗ്: എന്റെ മോഡൽ ഈ പിശക് എന്തുകൊണ്ട് ചെയ്തു? എങ്ങനെ മെച്ചപ്പെടുത്താം? +* മനുഷ്യ- AI സഹകരണം: മോഡലിന്റെ തീരുമാനങ്ങൾ എങ്ങനെ മനസ്സിലാക്കാം, വിശ്വസിക്കാം? +* നിയമാനുസൃത പാലനം: എന്റെ മോഡൽ നിയമ ആവശ്യകതകൾ പാലിക്കുന്നുണ്ടോ? + +RAI ഡാഷ്ബോർഡിലെ സവിശേഷതാ പ്രാധാന്യം ഘടകം മോഡൽ ഡീബഗ് ചെയ്യാനും മോഡൽ പ്രവചനങ്ങൾ എങ്ങനെ ഉണ്ടാകുന്നു എന്ന് സമഗ്രമായി മനസ്സിലാക്കാനും സഹായിക്കുന്നു. ഇത് മെഷീൻ ലേണിംഗ് പ്രൊഫഷണലുകൾക്കും തീരുമാനമെടുക്കുന്നവർക്കും മോഡലിന്റെ പെരുമാറ്റത്തെ സ്വാധീനിക്കുന്ന സവിശേഷതകൾ വിശദീകരിക്കാനും തെളിവുകൾ കാണിക്കാനും സഹായിക്കുന്ന ഉപകരണമാണ്, നിയമാനുസൃത പാലനത്തിനായി. ഉപയോക്താക്കൾ ആഗോളവും പ്രാദേശികവുമായ വിശദീകരണങ്ങൾ പരിശോധിച്ച് മോഡലിന്റെ പ്രവചനത്തെ സ്വാധീനിക്കുന്ന സവിശേഷതകൾ സ്ഥിരീകരിക്കാം. ആഗോള വിശദീകരണങ്ങൾ മോഡലിന്റെ മൊത്തം പ്രവചനത്തെ സ്വാധീനിച്ച പ്രധാന സവിശേഷതകൾ പട്ടികപ്പെടുത്തുന്നു. പ്രാദേശിക വിശദീകരണങ്ങൾ വ്യക്തിഗത കേസിനുള്ള മോഡൽ പ്രവചനത്തിന് കാരണമായ സവിശേഷതകൾ കാണിക്കുന്നു. പ്രാദേശിക വിശദീകരണങ്ങൾ വിലയിരുത്തുന്നത് ഒരു പ്രത്യേക കേസ് ഡീബഗ് ചെയ്യാനും ഓഡിറ്റ് ചെയ്യാനും സഹായിക്കുന്നു, മോഡൽ ശരിയായോ തെറ്റായോ പ്രവചനമുണ്ടാക്കിയത് എന്തുകൊണ്ടെന്ന് മനസ്സിലാക്കാൻ. + +![RAI ഡാഷ്ബോർഡിലെ സവിശേഷതാ പ്രാധാന്യം ഘടകം](../../../../translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.ml.png) + +* ആഗോള വിശദീകരണങ്ങൾ: ഉദാഹരണത്തിന്, ഒരു ഡയബറ്റിക് ആശുപത്രി വീണ്ടും പ്രവേശന മോഡലിന്റെ മൊത്തം പെരുമാറ്റത്തെ സ്വാധീനിക്കുന്ന സവിശേഷതകൾ എന്തൊക്കെയാണ്? +* പ്രാദേശിക വിശദീകരണങ്ങൾ: ഉദാഹരണത്തിന്, 60 വയസ്സിന് മുകളിൽ മുൻപ് ആശുപത്രിയിൽ പ്രവേശനമുണ്ടായ ഒരു ഡയബറ്റിക് രോഗിയെ 30 ദിവസത്തിനുള്ളിൽ വീണ്ടും പ്രവേശിപ്പിക്കുമോ ഇല്ലയോ എന്ന് മോഡൽ പ്രവചിച്ചത് എന്തുകൊണ്ടാണ്? + +വിവിധ കോഹോർട്ടുകളിലുടനീളം മോഡലിന്റെ പ്രകടനം പരിശോധിക്കുന്ന ഡീബഗ്ഗിംഗ് പ്രക്രിയയിൽ, സവിശേഷതാ പ്രാധാന്യം ഘടകം ഒരു സവിശേഷതയ്ക്ക് കോഹോർട്ടുകളിൽ എത്ര സ്വാധീനം ഉണ്ടെന്ന് കാണിക്കുന്നു. മോഡലിന്റെ പിശകുള്ള പ്രവചനങ്ങളെ പ്രേരിപ്പിക്കുന്ന സവിശേഷതയുടെ സ്വാധീനം താരതമ്യം ചെയ്യുമ്പോൾ അനോമലികൾ കണ്ടെത്താൻ ഇത് സഹായിക്കുന്നു. ഒരു മോഡൽ തെറ്റായ പ്രവചനമുണ്ടാക്കിയാൽ, ഈ ഘടകം നിങ്ങൾക്ക് ആ പ്രവചനത്തെ പ്രേരിപ്പിച്ച സവിശേഷതകൾ അല്ലെങ്കിൽ സവിശേഷതാ മൂല്യങ്ങൾ കണ്ടെത്താൻ സഹായിക്കുന്നു. ഈ വിശദാംശം ഡീബഗ്ഗിംഗിനും പാരദർശകതക്കും ഉത്തരവാദിത്വത്തിനും സഹായിക്കുന്നു. അവസാനം, ഈ ഘടകം നീതിപൂർണത പ്രശ്നങ്ങൾ കണ്ടെത്താനും സഹായിക്കുന്നു. ഉദാഹരണത്തിന്, ജാതി അല്ലെങ്കിൽ ലിംഗം പോലുള്ള സെൻസിറ്റീവ് സവിശേഷത മോഡലിന്റെ പ്രവചനത്തെ വളരെ സ്വാധീനിക്കുന്നുവെങ്കിൽ, ഇത് മോഡലിൽ ജാതി അല്ലെങ്കിൽ ലിംഗഭേദം ഉണ്ടാകാമെന്ന സൂചനയാണ്. + +![സവിശേഷതാ പ്രാധാന്യം](../../../../translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.ml.png) + +വ്യാഖ്യാനം ഉപയോഗിക്കേണ്ടത്: + +* നിങ്ങളുടെ 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 ഡാഷ്ബോർഡിന്റെ വിവിധ ഘടകങ്ങൾ എങ്ങനെ ഉപയോഗിക്കാമെന്ന് അറിയാൻ RAI ഡാഷ്ബോർഡ് [ഡോക്യുമെന്റേഷൻ](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) പരിശോധിക്കുക. + +- Azure Machine Learning-ൽ കൂടുതൽ ഉത്തരവാദിത്വമുള്ള AI സീനാരിയോകൾ ഡീബഗ് ചെയ്യാൻ ചില RAI ഡാഷ്ബോർഡ് [സാമ്പിൾ നോട്ട്‌ബുക്കുകൾ](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) പരിശോധിക്കുക. + +--- +## 🚀 വെല്ലുവിളി + +സांഖ്യിക അല്ലെങ്കിൽ ഡാറ്റാ പാകം ആദ്യഘട്ടത്തിൽ തന്നെ വരാതിരിക്കാൻ, നമുക്ക് ചെയ്യേണ്ടത്: + +- സിസ്റ്റങ്ങളിൽ ജോലി ചെയ്യുന്ന ആളുകൾക്ക് വ്യത്യസ്ത പശ്ചാത്തലങ്ങളും കാഴ്ചപ്പാടുകളും ഉണ്ടായിരിക്കണം +- നമ്മുടെ സമൂഹത്തിന്റെ വൈവിധ്യം പ്രതിഫലിപ്പിക്കുന്ന ഡാറ്റാസെറ്റുകളിൽ നിക്ഷേപം നടത്തണം +- പാകം സംഭവിക്കുമ്പോൾ അത് കണ്ടെത്താനും ശരിയാക്കാനും മികച്ച രീതികൾ വികസിപ്പിക്കണം + +മോഡൽ നിർമ്മാണത്തിലും ഉപയോഗത്തിലും അന്യായത വ്യക്തമായ യഥാർത്ഥ ജീവിത സാഹചര്യങ്ങളെക്കുറിച്ച് ചിന്തിക്കുക. മറ്റെന്തെല്ലാം പരിഗണിക്കണം? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) +## അവലോകനം & സ്വയം പഠനം + +ഈ പാഠത്തിൽ, നിങ്ങൾ ഉത്തരവാദിത്വമുള്ള AI യെ മെഷീൻ ലേണിങ്ങിൽ ഉൾപ്പെടുത്താനുള്ള ചില പ്രായോഗിക ഉപകരണങ്ങൾ പഠിച്ചു. + +ഈ വർക്ക്‌ഷോപ്പ് കാണുക വിഷയങ്ങളിൽ കൂടുതൽ ആഴത്തിൽ പ്രവേശിക്കാൻ: + +- Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice by Besmira Nushi and Mehrnoosh Sameki + +[![Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice") + +> 🎥 വീഡിയോക്കായി മുകളിൽ കാണുന്ന ചിത്രം ക്ലിക്ക് ചെയ്യുക: Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice by Besmira Nushi and Mehrnoosh Sameki + +ഉത്തരവാദിത്വമുള്ള AI യെക്കുറിച്ച് കൂടുതൽ അറിയാനും കൂടുതൽ വിശ്വസനീയമായ മോഡലുകൾ നിർമ്മിക്കാനും താഴെപ്പറയുന്ന വസ്തുക്കൾ കാണുക: + +- ML മോഡലുകൾ ഡീബഗ് ചെയ്യുന്നതിനുള്ള മൈക്രോസോഫ്റ്റിന്റെ RAI ഡാഷ്ബോർഡ് ടൂളുകൾ: [Responsible AI tools resources](https://aka.ms/rai-dashboard) + +- Responsible AI ടൂൾകിറ്റ് പരിശോധിക്കുക: [Github](https://github.com/microsoft/responsible-ai-toolbox) + +- മൈക്രോസോഫ്റ്റിന്റെ RAI റിസോഴ്‌സ് സെന്റർ: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) + +- മൈക്രോസോഫ്റ്റിന്റെ FATE ഗവേഷണ സംഘം: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) + +## അസൈൻമെന്റ് + +[RAI ഡാഷ്ബോർഡ് പരിശോധിക്കുക](assignment.md) + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/9-Real-World/2-Debugging-ML-Models/assignment.md b/translations/ml/9-Real-World/2-Debugging-ML-Models/assignment.md new file mode 100644 index 000000000..a8029b9fe --- /dev/null +++ b/translations/ml/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/ml/9-Real-World/README.md b/translations/ml/9-Real-World/README.md new file mode 100644 index 000000000..e36e03df7 --- /dev/null +++ b/translations/ml/9-Real-World/README.md @@ -0,0 +1,34 @@ + +# പോസ്റ്റ്‌സ്‌ക്രിപ്റ്റ്: ക്ലാസിക് മെഷീൻ ലേണിങ്ങിന്റെ യഥാർത്ഥ ലോക പ്രയോഗങ്ങൾ + +പാഠ്യപദ്ധതിയുടെ ഈ വിഭാഗത്തിൽ, നിങ്ങൾക്ക് ക്ലാസിക്കൽ എംഎൽ ഉപയോഗിച്ച യഥാർത്ഥ ലോക പ്രയോഗങ്ങളെ പരിചയപ്പെടുത്തും. നാം ന്യുറൽ നെറ്റ്വർക്കുകൾ, ഡീപ്പ് ലേണിംഗ്, എഐ എന്നിവ ഒഴിവാക്കി ഈ തന്ത്രങ്ങൾ ഉപയോഗിച്ച പ്രയോഗങ്ങളെക്കുറിച്ചുള്ള വൈറ്റ്‌പേപ്പറുകളും ലേഖനങ്ങളും കണ്ടെത്താൻ ഇന്റർനെറ്റ് തിരഞ്ഞെടുത്തു. ബിസിനസ് സിസ്റ്റങ്ങൾ, പരിസ്ഥിതി പ്രയോഗങ്ങൾ, ഫിനാൻസ്, കലയും സംസ്കാരവും ഉൾപ്പെടെ എങ്ങനെ എംഎൽ ഉപയോഗിക്കപ്പെടുന്നു എന്ന് പഠിക്കൂ. + +![chess](../../../translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.ml.jpg) + +> ഫോട്ടോ Alexis Fauvet Unsplash ൽ നിന്നാണ് + +## പാഠം + +1. [എംഎൽ-ന് യഥാർത്ഥ ലോക പ്രയോഗങ്ങൾ](1-Applications/README.md) +2. [റസ്പോൺസിബിൾ എഐ ഡാഷ്ബോർഡ് ഘടകങ്ങൾ ഉപയോഗിച്ച് മെഷീൻ ലേണിങ്ങിൽ മോഡൽ ഡീബഗ്ഗിംഗ്](2-Debugging-ML-Models/README.md) + +## ക്രെഡിറ്റുകൾ + +"യഥാർത്ഥ ലോക പ്രയോഗങ്ങൾ" എന്നത് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper)യും [ഓർനെല്ല അൽതുന്യൻ](https://twitter.com/ornelladotcom) ഉൾപ്പെടെയുള്ള ഒരു സംഘത്താൽ എഴുതപ്പെട്ടതാണ്. + +"റസ്പോൺസിബിൾ എഐ ഡാഷ്ബോർഡ് ഘടകങ്ങൾ ഉപയോഗിച്ച് മെഷീൻ ലേണിങ്ങിൽ മോഡൽ ഡീബഗ്ഗിംഗ്" [റുത് യകുബു](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/ml/AGENTS.md b/translations/ml/AGENTS.md new file mode 100644 index 000000000..d84548941 --- /dev/null +++ b/translations/ml/AGENTS.md @@ -0,0 +1,347 @@ + +# AGENTS.md + +## Project Overview + +ഇത് **Machine Learning for Beginners** ആണ്, പൈതൺ (പ്രധാനമായും Scikit-learn ഉപയോഗിച്ച്)യും R ഉം ഉപയോഗിച്ച് ക്ലാസിക് മെഷീൻ ലേണിംഗ് ആശയങ്ങൾ ഉൾക്കൊള്ളുന്ന സമഗ്രമായ 12 ആഴ്ച, 26 പാഠപുസ്തക കോഴ്സ്. ഈ റിപോസിറ്ററി സ്വയം പഠനത്തിനുള്ള ഒരു വിഭവമായി രൂപകൽപ്പന ചെയ്തതാണ്, പ്രായോഗിക പ്രോജക്റ്റുകൾ, ക്വിസുകൾ, അസൈൻമെന്റുകൾ എന്നിവയോടുകൂടി. ഓരോ പാഠവും ലോകമാകെയുള്ള വിവിധ സംസ്കാരങ്ങളുടെയും പ്രദേശങ്ങളുടെയും യഥാർത്ഥ ഡാറ്റ ഉപയോഗിച്ച് 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 + +### Python പാഠങ്ങൾക്കായി + +മിക്ക പാഠങ്ങളും Jupyter നോട്ട്‌ബുക്കുകൾ ഉപയോഗിക്കുന്നു. ആവശ്യമായ ഡിപ്പെൻഡൻസികൾ ഇൻസ്റ്റാൾ ചെയ്യുക: + +```bash +# Python 3.8+ ഇതിനകം ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലെങ്കിൽ ഇൻസ്റ്റാൾ ചെയ്യുക +python --version + +# Jupyter ഇൻസ്റ്റാൾ ചെയ്യുക +pip install jupyter + +# സാധാരണ ML ലൈബ്രറികൾ ഇൻസ്റ്റാൾ ചെയ്യുക +pip install scikit-learn pandas numpy matplotlib seaborn + +# പ്രത്യേക പാഠങ്ങൾക്കായി, പാഠം-നിർദ്ദിഷ്ട ആവശ്യകതകൾ പരിശോധിക്കുക +# ഉദാഹരണം: വെബ് ആപ്പ് പാഠം +pip install flask +``` + +### R പാഠങ്ങൾക്കായി + +R പാഠങ്ങൾ `solution/R/` ഫോൾഡറുകളിൽ `.rmd` അല്ലെങ്കിൽ `.ipynb` ഫയലുകളായി ഉണ്ട്: + +```bash +# Rയും ആവശ്യമായ പാക്കേജുകളും ഇൻസ്റ്റാൾ ചെയ്യുക +# R കൺസോളിൽ: +install.packages(c("tidyverse", "tidymodels", "caret")) +``` + +### ക്വിസ് ആപ്പിനായി + +ക്വിസ് ആപ്പ് `quiz-app/` ഡയറക്ടറിയിൽ ഉള്ള Vue.js ആപ്പാണ്: + +```bash +cd quiz-app +npm install +``` + +### ഡോക്യുമെന്റേഷൻ സൈറ്റിനായി + +ഡോക്യുമെന്റേഷൻ ലോക്കലായി പ്രവർത്തിപ്പിക്കാൻ: + +```bash +# ഡോക്സിഫൈ ഇൻസ്റ്റാൾ ചെയ്യുക +npm install -g docsify-cli + +# റിപോസിറ്ററി റൂട്ടിൽ നിന്ന് സർവ് ചെയ്യുക +docsify serve + +# http://localhost:3000 ൽ ആക്‌സസ് ചെയ്യുക +``` + +## Development Workflow + +### പാഠ നോട്ട്‌ബുക്കുകളുമായി ജോലി ചെയ്യൽ + +1. പാഠ ഡയറക്ടറിയിലേക്ക് പോകുക (ഉദാ: `2-Regression/1-Tools/`) +2. Jupyter നോട്ട്‌ബുക്ക് തുറക്കുക: + ```bash + jupyter notebook notebook.ipynb + ``` +3. പാഠ ഉള്ളടക്കം, അഭ്യാസങ്ങൾ ചെയ്യുക +4. ആവശ്യമായാൽ `solution/` ഫോൾഡറിൽ പരിഹാരങ്ങൾ പരിശോധിക്കുക + +### Python ഡെവലപ്പ്മെന്റ് + +- പാഠങ്ങൾ സാധാരണ Python ഡാറ്റ സയൻസ് ലൈബ്രറികൾ ഉപയോഗിക്കുന്നു +- ഇന്ററാക്ടീവ് പഠനത്തിന് Jupyter നോട്ട്‌ബുക്കുകൾ +- ഓരോ പാഠത്തിന്റെയും `solution/` ഫോൾഡറിൽ പരിഹാര കോഡ് ലഭ്യമാണ് + +### R ഡെവലപ്പ്മെന്റ് + +- R പാഠങ്ങൾ `.rmd` ഫോർമാറ്റിൽ (R Markdown) +- പരിഹാരങ്ങൾ `solution/R/` സബ്‌ഡയറക്ടറികളിൽ +- RStudio അല്ലെങ്കിൽ R കർണൽ ഉപയോഗിച്ച് Jupyter വഴി R നോട്ട്‌ബുക്കുകൾ പ്രവർത്തിപ്പിക്കുക + +### ക്വിസ് ആപ്പ് ഡെവലപ്പ്മെന്റ് + +```bash +cd quiz-app + +# വികസന സെർവർ ആരംഭിക്കുക +npm run serve +# http://localhost:8080 ൽ പ്രവേശിക്കുക + +# ഉത്പാദനത്തിനായി നിർമ്മിക്കുക +npm run build + +# ഫയലുകൾ ലിന്റ് ചെയ്ത് ശരിയാക്കുക +npm run lint +``` + +## Testing Instructions + +### ക്വിസ് ആപ്പ് ടെസ്റ്റിംഗ് + +```bash +cd quiz-app + +# കോഡ് ലിന്റ് ചെയ്യുക +npm run lint + +# പിശകുകൾ ഇല്ലെന്ന് സ്ഥിരീകരിക്കാൻ നിർമ്മിക്കുക +npm run build +``` + +**കുറിപ്പ്**: ഇത് പ്രധാനമായും ഒരു വിദ്യാഭ്യാസ കോഴ്സ് റിപോസിറ്ററിയാണ്. പാഠ ഉള്ളടക്കത്തിന് യാന്ത്രിക പരിശോധനകൾ ഇല്ല. സാധൂകരണം നടത്തുന്നത്: +- പാഠ അഭ്യാസങ്ങൾ പൂർത്തിയാക്കൽ +- നോട്ട്‌ബുക്ക് സെല്ലുകൾ വിജയകരമായി പ്രവർത്തിപ്പിക്കൽ +- പരിഹാരങ്ങളിലെ പ്രതീക്ഷിച്ച ഫലങ്ങൾ പരിശോധിക്കൽ + +## Code Style Guidelines + +### Python കോഡ് +- PEP 8 സ്റ്റൈൽ മാർഗ്ഗനിർദ്ദേശങ്ങൾ പാലിക്കുക +- വ്യക്തമായ, വിവരണാത്മകമായ വേരിയബിൾ നാമങ്ങൾ ഉപയോഗിക്കുക +- സങ്കീർണ്ണ പ്രവർത്തനങ്ങൾക്ക് കമന്റുകൾ ഉൾപ്പെടുത്തുക +- Jupyter നോട്ട്‌ബുക്കുകളിൽ ആശയങ്ങൾ വിശദീകരിക്കുന്ന മാർക്ക്ഡൗൺ സെല്ലുകൾ വേണം + +### JavaScript/Vue.js (ക്വിസ് ആപ്പ്) +- Vue.js സ്റ്റൈൽ ഗൈഡ് പാലിക്കുക +- `quiz-app/package.json` ൽ ESLint കോൺഫിഗറേഷൻ +- പ്രശ്നങ്ങൾ പരിശോധിക്കാൻ, സ്വയം പരിഹരിക്കാൻ `npm run lint` ഓടിക്കുക + +### ഡോക്യുമെന്റേഷൻ +- മാർക്ക്ഡൗൺ ഫയലുകൾ വ്യക്തവും നന്നായി ഘടിപ്പിച്ചവയും ആയിരിക്കണം +- കോഡ് ഉദാഹരണങ്ങൾ ഫെൻസ്ഡ് കോഡ് ബ്ലോക്കുകളിൽ ഉൾപ്പെടുത്തുക +- ആന്തരിക റഫറൻസുകൾക്ക് സാപേക്ഷ ലിങ്കുകൾ ഉപയോഗിക്കുക +- നിലവിലുള്ള ഫോർമാറ്റിംഗ് പരമ്പരാഗതങ്ങൾ പാലിക്കുക + +## Build and Deployment + +### ക്വിസ് ആപ്പ് ഡിപ്ലോയ്മെന്റ് + +ക്വിസ് ആപ്പ് Azure Static Web Apps-ലേക്ക് ഡിപ്ലോയ് ചെയ്യാം: + +1. **ആവശ്യങ്ങൾ**: + - Azure അക്കൗണ്ട് + - GitHub റിപോസിറ്ററി (മുൻകൂട്ടി ഫോർക്ക് ചെയ്തത്) + +2. **Azure-ലേക്ക് ഡിപ്ലോയ് ചെയ്യുക**: + - Azure Static Web App റിസോഴ്‌സ് സൃഷ്ടിക്കുക + - GitHub റിപോസിറ്ററിയുമായി കണക്ട് ചെയ്യുക + - ആപ്പ് ലൊക്കേഷൻ: `/quiz-app` + - ഔട്ട്പുട്ട് ലൊക്കേഷൻ: `dist` + - Azure സ്വയം GitHub Actions workflow സൃഷ്ടിക്കും + +3. **GitHub Actions Workflow**: + - `.github/workflows/azure-static-web-apps-*.yml` ൽ workflow ഫയൽ സൃഷ്ടിക്കും + - മെയിൻ ബ്രാഞ്ചിലേക്ക് പുഷ് ചെയ്താൽ സ്വയം ബിൽഡ് ചെയ്ത് ഡിപ്ലോയ് ചെയ്യും + +### ഡോക്യുമെന്റേഷൻ PDF + +ഡോക്യുമെന്റേഷൻ നിന്ന് PDF സൃഷ്ടിക്കുക: + +```bash +npm install +npm run convert +``` + +## Translation Workflow + +**പ്രധാനമാണ്**: വിവർത്തനങ്ങൾ GitHub Actions ഉപയോഗിച്ച് Co-op Translator വഴി സ്വയം നടക്കുന്നു. + +- `main` ബ്രാഞ്ചിൽ മാറ്റങ്ങൾ പുഷ് ചെയ്താൽ സ്വയം വിവർത്തനം സൃഷ്ടിക്കും +- **കൈയാൽ വിവർത്തനം ചെയ്യരുത്** - സിസ്റ്റം തന്നെ കൈകാര്യം ചെയ്യും +- `.github/workflows/co-op-translator.yml` ൽ workflow നിർവചിച്ചിരിക്കുന്നു +- Azure AI/OpenAI സേവനങ്ങൾ ഉപയോഗിച്ച് വിവർത്തനം +- 40+ ഭാഷകൾക്ക് പിന്തുണ + +## Contributing Guidelines + +### ഉള്ളടക്കം സംഭാവനക്കാർക്കായി + +1. **റിപോസിറ്ററി ഫോർക്ക് ചെയ്ത്** ഫീച്ചർ ബ്രാഞ്ച് സൃഷ്ടിക്കുക +2. **പാഠ ഉള്ളടക്കം മാറ്റങ്ങൾ വരുത്തുക** (പാഠങ്ങൾ ചേർക്കുകയോ അപ്ഡേറ്റ് ചെയ്യുകയോ ചെയ്യുമ്പോൾ) +3. **വിവർത്തന ഫയലുകൾ മാറ്റരുത്** - അവ സ്വയം സൃഷ്ടിക്കപ്പെട്ടവയാണ് +4. **കോഡ് ടെസ്റ്റ് ചെയ്യുക** - എല്ലാ നോട്ട്‌ബുക്ക് സെല്ലുകളും വിജയകരമായി ഓടണം +5. **ലിങ്കുകളും ചിത്രങ്ങളും ശരിയാണെന്ന് ഉറപ്പാക്കുക** +6. **സ്പഷ്ടമായ വിവരണത്തോടെ പുൾ റിക്വസ്റ്റ് സമർപ്പിക്കുക** + +### പുൾ റിക്വസ്റ്റ് മാർഗ്ഗനിർദ്ദേശങ്ങൾ + +- **ശീർഷകം ഫോർമാറ്റ്**: `[Section] മാറ്റങ്ങളുടെ സംക്ഷിപ്ത വിവരണം` + - ഉദാ: `[Regression] പാഠം 5-ൽ ടൈപ്പോ ശരിയാക്കൽ` + - ഉദാ: `[Quiz-App] ഡിപ്പെൻഡൻസികൾ അപ്ഡേറ്റ് ചെയ്യൽ` +- **സമർപ്പിക്കുന്നതിന് മുമ്പ്**: + - എല്ലാ നോട്ട്‌ബുക്ക് സെല്ലുകളും പിശകില്ലാതെ ഓടുന്നത് ഉറപ്പാക്കുക + - ക്വിസ് ആപ്പ് മാറ്റുമ്പോൾ `npm run lint` ഓടിക്കുക + - മാർക്ക്ഡൗൺ ഫോർമാറ്റിംഗ് പരിശോധിക്കുക + - പുതിയ കോഡ് ഉദാഹരണങ്ങൾ ടെസ്റ്റ് ചെയ്യുക +- **PR-ൽ ഉൾപ്പെടുത്തേണ്ടത്**: + - മാറ്റങ്ങളുടെ വിവരണം + - മാറ്റങ്ങളുടെ കാരണം + - UI മാറ്റങ്ങൾ ഉണ്ടെങ്കിൽ സ്ക്രീൻഷോട്ടുകൾ +- **കോഡ് ഓഫ് കണ്ടക്റ്റ്**: [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 നോട്ട്‌ബുക്കുകൾ + +- **കർണൽ പ്രശ്നങ്ങൾ**: സെല്ലുകൾ ഹാംഗായാൽ Kernel → Restart ചെയ്യുക +- **ഇംപോർട്ട് പിശകുകൾ**: ആവശ്യമായ പാക്കേജുകൾ pip ഉപയോഗിച്ച് ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക +- **പാത പ്രശ്നങ്ങൾ**: നോട്ട്‌ബുക്കുകൾ അവരുടെ ഉള്ള ഡയറക്ടറിയിൽ നിന്ന് ഓടിക്കുക + +### ക്വിസ് ആപ്പ് + +- **npm install പരാജയം**: npm കാഷെ ക്ലിയർ ചെയ്യുക: `npm cache clean --force` +- **പോർട്ട് കോൺഫ്ലിക്റ്റുകൾ**: പോർട്ട് മാറ്റാൻ: `npm run serve -- --port 8081` +- **ബിൽഡ് പിശകുകൾ**: `node_modules` ഡിലീറ്റ് ചെയ്ത് വീണ്ടും ഇൻസ്റ്റാൾ ചെയ്യുക: `rm -rf node_modules && npm install` + +### R പാഠങ്ങൾ + +- **പാക്കേജ് കണ്ടെത്താനില്ല**: ഇൻസ്റ്റാൾ ചെയ്യുക: `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/ml/CODE_OF_CONDUCT.md b/translations/ml/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..bfc410fcf --- /dev/null +++ b/translations/ml/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/ml/CONTRIBUTING.md b/translations/ml/CONTRIBUTING.md new file mode 100644 index 000000000..f8f4e1354 --- /dev/null +++ b/translations/ml/CONTRIBUTING.md @@ -0,0 +1,25 @@ + +# സംഭാവനകൾ + +ഈ പ്രോജക്റ്റ് സംഭാവനകളും നിർദ്ദേശങ്ങളും സ്വാഗതം ചെയ്യുന്നു. മിക്ക സംഭാവനകൾക്കും നിങ്ങൾക്ക് Contributor License Agreement (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/ml/PyTorch_Fundamentals.ipynb b/translations/ml/PyTorch_Fundamentals.ipynb new file mode 100644 index 000000000..575718fa5 --- /dev/null +++ b/translations/ml/PyTorch_Fundamentals.ipynb @@ -0,0 +1,2840 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "gpuType": "T4", + "authorship_tag": "ABX9TyOgv0AozH1FKQBD+RkgT2bV", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "accelerator": "GPU", + "coopTranslator": { + "original_hash": "0ca21b6ee62904d616f2e36dc1cf0da7", + "translation_date": "2025-12-19T16:17:01+00:00", + "source_file": "PyTorch_Fundamentals.ipynb", + "language_code": "ml" + } + }, + "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": [ + "സീറോകളും ഒന്ന് ടENSOR\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/ml/README.md b/translations/ml/README.md new file mode 100644 index 000000000..5a51fcfd2 --- /dev/null +++ b/translations/ml/README.md @@ -0,0 +1,223 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) + +### 🌐 ബഹുഭാഷാ പിന്തുണ + +#### GitHub ആക്ഷൻ വഴി പിന്തുണ (സ്വയം പ്രവർത്തിക്കുന്നതും എല്ലായ്പ്പോഴും പുതുക്കപ്പെട്ടതും) + + +[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](./README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + + +#### ഞങ്ങളുടെ സമൂഹത്തിൽ ചേരുക + +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) + +ഞങ്ങൾക്ക് ഒരു Discord ലേൺ വിത്ത് AI സീരീസ് തുടരുകയാണ്, കൂടുതൽ അറിയാനും ഞങ്ങളോടൊപ്പം ചേരാനും [Learn with AI Series](https://aka.ms/learnwithai/discord) സന്ദർശിക്കുക, 2025 സെപ്റ്റംബർ 18 - 30 വരെ. GitHub Copilot ഉപയോഗിച്ച് ഡാറ്റാ സയൻസിനുള്ള ടിപ്പുകളും ട്രിക്കുകളും നിങ്ങൾക്ക് ലഭിക്കും. + +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ml.png) + +# തുടക്കക്കാർക്കുള്ള മെഷീൻ ലേണിംഗ് - ഒരു പാഠ്യപദ്ധതി + +> 🌍 ലോക സംസ്കാരങ്ങളിലൂടെ മെഷീൻ ലേണിംഗ് അന്വേഷിക്കുമ്പോൾ ലോകം ചുറ്റി യാത്ര ചെയ്യാം 🌍 + +Microsoft-യിലെ ക്ലൗഡ് അഡ്വക്കേറ്റുകൾ 12 ആഴ്ച, 26 പാഠങ്ങൾ ഉൾക്കൊള്ളുന്ന **മെഷീൻ ലേണിംഗ്** പാഠ്യപദ്ധതി അവതരിപ്പിക്കാൻ സന്തോഷിക്കുന്നു. ഈ പാഠ്യപദ്ധതിയിൽ, നിങ്ങൾക്ക് ചിലപ്പോൾ **ക്ലാസിക് മെഷീൻ ലേണിംഗ്** എന്ന് വിളിക്കപ്പെടുന്നതിനെക്കുറിച്ച് പഠിക്കാം, പ്രധാനമായും Scikit-learn ലൈബ്രറി ഉപയോഗിച്ച്, ഡീപ്പ് ലേണിംഗ് ഒഴിവാക്കി, അത് ഞങ്ങളുടെ [AI for Beginners' curriculum](https://aka.ms/ai4beginners) ൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. ഈ പാഠങ്ങൾ ഞങ്ങളുടെ ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) യോടൊപ്പം ചേർത്ത് പഠിക്കാം. + +ലോകത്തിന്റെ വിവിധ ഭാഗങ്ങളിൽ നിന്നുള്ള ഡാറ്റയിൽ ഈ ക്ലാസിക് സാങ്കേതിക വിദ്യകൾ പ്രയോഗിച്ച് ഞങ്ങളോടൊപ്പം ലോകം ചുറ്റി യാത്ര ചെയ്യൂ. ഓരോ പാഠവും മുൻപും ശേഷവും ക്വിസുകൾ, പാഠം പൂർത്തിയാക്കാനുള്ള എഴുത്ത് നിർദ്ദേശങ്ങൾ, പരിഹാരം, അസൈൻമെന്റ് എന്നിവ ഉൾക്കൊള്ളുന്നു. ഞങ്ങളുടെ പ്രോജക്ട് അടിസ്ഥാനത്തിലുള്ള പഠനരീതി പുതിയ കഴിവുകൾ 'പിടിപ്പിക്കാൻ' സഹായിക്കുന്ന ഒരു തെളിയിച്ച മാർഗമാണ്. + +**✍️ ഞങ്ങളുടെ എഴുത്തുകാരെ ഹൃദയം നിറഞ്ഞ നന്ദി** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu, Amy Boyd + +**🎨 ചിത്രകാരന്മാർക്ക് നന്ദി** Tomomi Imura, Dasani Madipalli, Jen Looper + +**🙏 പ്രത്യേക നന്ദി 🙏 Microsoft Student Ambassador എഴുത്തുകാരും റിവ്യൂവർമാരും ഉള്ളടക്ക സംഭാവനക്കാർക്കും**, പ്രത്യേകിച്ച് Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, Snigdha Agarwal + +**🤩 Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, Vidushi Gupta-യ്ക്ക് 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). + +--- + +## വീഡിയോ വാക്ക്‌ത്രൂകൾ + +ചില പാഠങ്ങൾ ചെറു വീഡിയോകളായി ലഭ്യമാണ്. ഈ വീഡിയോകൾ പാഠങ്ങളിൽ നേരിട്ട് കാണാനോ, [ML for Beginners പ്ലേലിസ്റ്റ് Microsoft Developer YouTube ചാനലിൽ](https://aka.ms/ml-beginners-videos) ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്ത് കാണാനോ കഴിയും. + +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ml.png)](https://aka.ms/ml-beginners-videos) + +--- + +## ടീം പരിചയം + +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) + +**ഗിഫ്** [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 ഫോൾഡറിൽ](../../quiz-app) ഉൾക്കൊള്ളുന്നു, മൂന്ന് ചോദ്യങ്ങളുള്ള 52 ക്വിസുകൾ. അവ പാഠങ്ങളിൽ നിന്ന് ലിങ്ക് ചെയ്തിട്ടുണ്ട്, പക്ഷേ ക്വിസ് ആപ്പ് ലോക്കലായി ഓടിക്കാം; ലോക്കലായി ഹോസ്റ്റ് ചെയ്യാനോ Azure-ലേക്ക് ഡിപ്ലോയ് ചെയ്യാനോ `quiz-app` ഫോൾഡറിലെ നിർദ്ദേശങ്ങൾ പിന്തുടരുക. + +| പാഠം നമ്പർ | വിഷയം | പാഠം ഗ്രൂപ്പിംഗ് | പഠന ലക്ഷ്യങ്ങൾ | ലിങ്കുചെയ്ത പാഠം | എഴുത്തുകാരൻ | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | മെഷീൻ ലേണിങ്ങിലേക്ക് പരിചയം | [Introduction](1-Introduction/README.md) | മെഷീൻ ലേണിങ്ങിന്റെ അടിസ്ഥാന ആശയങ്ങൾ പഠിക്കുക | [Lesson](1-Introduction/1-intro-to-ML/README.md) | മുഹമ്മദ് | +| 02 | മെഷീൻ ലേണിങ്ങിന്റെ ചരിത്രം | [Introduction](1-Introduction/README.md) | ഈ മേഖലയെ അടിസ്ഥാനമാക്കിയുള്ള ചരിത്രം പഠിക്കുക | [Lesson](1-Introduction/2-history-of-ML/README.md) | ജെൻ ആൻഡ് എമി | +| 03 | നീതിയും മെഷീൻ ലേണിങ്ങും | [Introduction](1-Introduction/README.md) | ML മോഡലുകൾ നിർമ്മിക്കുമ്പോഴും പ്രയോഗിക്കുമ്പോഴും വിദ്യാർത്ഥികൾ പരിഗണിക്കേണ്ട നീതിയുമായി ബന്ധപ്പെട്ട പ്രധാന തത്ത്വചിന്തന വിഷയങ്ങൾ എന്തെല്ലാമാണ്? | [Lesson](1-Introduction/3-fairness/README.md) | ടോമോമി | +| 04 | മെഷീൻ ലേണിങ്ങിനുള്ള സാങ്കേതിക വിദ്യകൾ | [Introduction](1-Introduction/README.md) | ML ഗവേഷകർ ML മോഡലുകൾ നിർമ്മിക്കാൻ ഉപയോഗിക്കുന്ന സാങ്കേതിക വിദ്യകൾ എന്തെല്ലാമാണ്? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | ക്രിസ് ആൻഡ് ജെൻ | +| 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) | ജെൻ • എറിക് വാൻജൗ | +| 06 | നോർത്ത് അമേരിക്കൻ പംപ്കിൻ വിലകൾ 🎃 | [Regression](2-Regression/README.md) | ML-നായി ഡാറ്റ ദൃശ്യവൽക്കരിക്കുകയും ശുദ്ധീകരിക്കുകയും ചെയ്യുക | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | ജെൻ • എറിക് വാൻജൗ | +| 07 | നോർത്ത് അമേരിക്കൻ പംപ്കിൻ വിലകൾ 🎃 | [Regression](2-Regression/README.md) | ലീനിയർ, പോളിനോമിയൽ റെഗ്രഷൻ മോഡലുകൾ നിർമ്മിക്കുക | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | ജെൻ ആൻഡ് ഡ്മിത്രി • എറിക് വാൻജൗ | +| 08 | നോർത്ത് അമേരിക്കൻ പംപ്കിൻ വിലകൾ 🎃 | [Regression](2-Regression/README.md) | ലോജിസ്റ്റിക് റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | ജെൻ • എറിക് വാൻജൗ | +| 09 | ഒരു വെബ് ആപ്പ് 🔌 | [Web App](3-Web-App/README.md) | പരിശീലിപ്പിച്ച മോഡൽ ഉപയോഗിക്കാൻ ഒരു വെബ് ആപ്പ് നിർമ്മിക്കുക | [Python](3-Web-App/1-Web-App/README.md) | ജെൻ | +| 10 | ക്ലാസിഫിക്കേഷനിലേക്ക് പരിചയം | [Classification](4-Classification/README.md) | നിങ്ങളുടെ ഡാറ്റ ശുദ്ധീകരിക്കുക, തയ്യാറാക്കുക, ദൃശ്യവൽക്കരിക്കുക; ക്ലാസിഫിക്കേഷനിലേക്ക് പരിചയം | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | ജെൻ ആൻഡ് കാസ്സി • എറിക് വാൻജൗ | +| 11 | രുചികരമായ ഏഷ്യൻ, ഇന്ത്യൻ ഭക്ഷണങ്ങൾ 🍜 | [Classification](4-Classification/README.md) | ക്ലാസിഫയർസിലേക്ക് പരിചയം | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | ജെൻ ആൻഡ് കാസ്സി • എറിക് വാൻജൗ | +| 12 | രുചികരമായ ഏഷ്യൻ, ഇന്ത്യൻ ഭക്ഷണങ്ങൾ 🍜 | [Classification](4-Classification/README.md) | കൂടുതൽ ക്ലാസിഫയർസ് | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | ജെൻ ആൻഡ് കാസ്സി • എറിക് വാൻജൗ | +| 13 | രുചികരമായ ഏഷ്യൻ, ഇന്ത്യൻ ഭക്ഷണങ്ങൾ 🍜 | [Classification](4-Classification/README.md) | നിങ്ങളുടെ മോഡൽ ഉപയോഗിച്ച് ഒരു ശുപാർശ വെബ് ആപ്പ് നിർമ്മിക്കുക | [Python](4-Classification/4-Applied/README.md) | ജെൻ | +| 14 | ക്ലസ്റ്ററിങ്ങിലേക്ക് പരിചയം | [Clustering](5-Clustering/README.md) | നിങ്ങളുടെ ഡാറ്റ ശുദ്ധീകരിക്കുക, തയ്യാറാക്കുക, ദൃശ്യവൽക്കരിക്കുക; ക്ലസ്റ്ററിങ്ങിലേക്ക് പരിചയം | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | ജെൻ • എറിക് വാൻജൗ | +| 15 | നൈജീരിയൻ സംഗീത രുചികൾ അന്വേഷിക്കൽ 🎧 | [Clustering](5-Clustering/README.md) | K-മീൻസ് ക്ലസ്റ്ററിങ്ങ് രീതി അന്വേഷിക്കുക | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | ജെൻ • എറിക് വാൻജൗ | +| 16 | നാചുറൽ ലാംഗ്വേജ് പ്രോസസ്സിങ്ങിലേക്ക് പരിചയം ☕️ | [Natural language processing](6-NLP/README.md) | ഒരു ലളിതമായ ബോട്ട് നിർമ്മിച്ച് NLP അടിസ്ഥാനങ്ങൾ പഠിക്കുക | [Python](6-NLP/1-Introduction-to-NLP/README.md) | സ്റ്റീഫൻ | +| 17 | സാധാരണ NLP ടാസ്കുകൾ ☕️ | [Natural language processing](6-NLP/README.md) | ഭാഷാ ഘടനകളുമായി ഇടപഴകുമ്പോൾ ആവശ്യമായ സാധാരണ ടാസ്കുകൾ മനസ്സിലാക്കി നിങ്ങളുടെ NLP അറിവ് കൂടുതൽ ആഴത്തിൽ പഠിക്കുക | [Python](6-NLP/2-Tasks/README.md) | സ്റ്റീഫൻ | +| 18 | വിവർത്തനവും സന്റിമെന്റ് വിശകലനവും ♥️ | [Natural language processing](6-NLP/README.md) | ജെയിൻ ഓസ്റ്റന്റെ സഹായത്തോടെ വിവർത്തനവും സന്റിമെന്റ് വിശകലനവും | [Python](6-NLP/3-Translation-Sentiment/README.md) | സ്റ്റീഫൻ | +| 19 | യൂറോപ്പിലെ റൊമാന്റിക് ഹോട്ടലുകൾ ♥️ | [Natural language processing](6-NLP/README.md) | ഹോട്ടൽ റിവ്യൂസ് ഉപയോഗിച്ച് സന്റിമെന്റ് വിശകലനം 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | സ്റ്റീഫൻ | +| 20 | യൂറോപ്പിലെ റൊമാന്റിക് ഹോട്ടലുകൾ ♥️ | [Natural language processing](6-NLP/README.md) | ഹോട്ടൽ റിവ്യൂസ് ഉപയോഗിച്ച് സന്റിമെന്റ് വിശകലനം 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | സ്റ്റീഫൻ | +| 21 | ടൈം സീരീസ് ഫോറ്കാസ്റ്റിങ്ങിലേക്ക് പരിചയം | [Time series](7-TimeSeries/README.md) | ടൈം സീരീസ് ഫോറ്കാസ്റ്റിങ്ങിലേക്ക് പരിചയം | [Python](7-TimeSeries/1-Introduction/README.md) | ഫ്രാൻസെസ്ക | +| 22 | ⚡️ ലോക വൈദ്യുതി ഉപയോഗം ⚡️ - ARIMA ഉപയോഗിച്ച് ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ് | [Time series](7-TimeSeries/README.md) | ARIMA ഉപയോഗിച്ച് ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ് | [Python](7-TimeSeries/2-ARIMA/README.md) | ഫ്രാൻസെസ്ക | +| 23 | ⚡️ ലോക വൈദ്യുതി ഉപയോഗം ⚡️ - SVR ഉപയോഗിച്ച് ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ് | [Time series](7-TimeSeries/README.md) | Support Vector Regressor ഉപയോഗിച്ച് ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ് | [Python](7-TimeSeries/3-SVR/README.md) | അനിർബാൻ | +| 24 | റീ ഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിങ്ങിലേക്ക് പരിചയം | [Reinforcement learning](8-Reinforcement/README.md) | Q-ലേണിംഗ് ഉപയോഗിച്ച് റീ ഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിങ്ങിലേക്ക് പരിചയം | [Python](8-Reinforcement/1-QLearning/README.md) | ഡ്മിത്രി | +| 25 | പീറ്റർ വംശിയെ ഒഴിവാക്കാൻ സഹായിക്കുക! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | റീ ഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിങ്ങ് ജിം | [Python](8-Reinforcement/2-Gym/README.md) | ഡ്മിത്രി | +| Postscript | യഥാർത്ഥ ലോക ML സാഹചര്യങ്ങളും പ്രയോഗങ്ങളും | [ML in the Wild](9-Real-World/README.md) | ക്ലാസിക്കൽ ML-ന്റെ രസകരവും വെളിപ്പെടുത്തലും നിറഞ്ഞ യഥാർത്ഥ ലോക പ്രയോഗങ്ങൾ | [Lesson](9-Real-World/1-Applications/README.md) | ടീം | +| Postscript | RAI ഡാഷ്ബോർഡ് ഉപയോഗിച്ച് ML മോഡൽ ഡീബഗ്ഗിംഗ് | [ML in the Wild](9-Real-World/README.md) | റസ്പോൺസിബിൾ AI ഡാഷ്ബോർഡ് ഘടകങ്ങൾ ഉപയോഗിച്ച് മെഷീൻ ലേണിങ്ങിൽ മോഡൽ ഡീബഗ്ഗിംഗ് | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | റുത് യാകുബു | + +> [ഈ കോഴ്സിനുള്ള എല്ലാ അധിക വിഭവങ്ങളും ഞങ്ങളുടെ Microsoft Learn ശേഖരത്തിൽ കണ്ടെത്തുക](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +## ഓഫ്‌ലൈൻ ആക്‌സസ് + +[Docsify](https://docsify.js.org/#/) ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഈ ഡോക്യുമെന്റേഷൻ ഓഫ്‌ലൈൻ പ്രവർത്തിപ്പിക്കാം. ഈ റിപോ ഫോർക്ക് ചെയ്യുക, നിങ്ങളുടെ ലോക്കൽ മെഷീനിൽ [Docsify ഇൻസ്റ്റാൾ ചെയ്യുക](https://docsify.js.org/#/quickstart), പിന്നീട് ഈ റിപോയുടെ റൂട്ട് ഫോൾഡറിൽ `docsify serve` ടൈപ്പ് ചെയ്യുക. വെബ്സൈറ്റ് നിങ്ങളുടെ ലോക്കൽഹോസ്റ്റിൽ പോർട്ട് 3000-ൽ സർവ് ചെയ്യും: `localhost:3000`. + +## PDFകൾ + +കുറിക്കുലത്തിന്റെ PDF ലിങ്കുകളോടെ [ഇവിടെ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) കണ്ടെത്തുക. + + +## 🎒 മറ്റ് കോഴ്സുകൾ + +ഞങ്ങളുടെ ടീം മറ്റ് കോഴ്സുകളും നിർമ്മിക്കുന്നു! പരിശോധിക്കുക: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + +### Generative AI Series +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) + +--- + +### കോർ ലേണിംഗ് +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + +### കോപൈലറ്റ് സീരീസ് +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + + +## സഹായം നേടുക + +നിങ്ങൾക്ക് AI ആപ്പുകൾ നിർമ്മിക്കുന്നതിൽ തടസ്സം നേരിടുകയോ എന്തെങ്കിലും ചോദ്യങ്ങളുണ്ടാകുകയോ ചെയ്താൽ, MCP-യിൽ fellow learners-ഉം പരിചയസമ്പന്നരായ ഡെവലപ്പർമാരും ചേർന്ന് ചർച്ചകളിൽ പങ്കെടുക്കുക. ചോദ്യങ്ങൾ സ്വാഗതം ചെയ്യപ്പെടുന്ന, അറിവ് സ്വതന്ത്രമായി പങ്കുവെക്കുന്ന ഒരു പിന്തുണയുള്ള സമൂഹമാണ് ഇത്. + +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) + +നിങ്ങൾക്ക് ഉൽപ്പന്ന ഫീഡ്ബാക്കോ നിർമ്മാണത്തിൽ പിഴവുകളോ ഉണ്ടെങ്കിൽ സന്ദർശിക്കുക: + +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/SECURITY.md b/translations/ml/SECURITY.md new file mode 100644 index 000000000..22e1d4086 --- /dev/null +++ b/translations/ml/SECURITY.md @@ -0,0 +1,53 @@ + +## Security + +Microsoft നമ്മുടെ സോഫ്റ്റ്വെയർ ഉൽപ്പന്നങ്ങളും സേവനങ്ങളും സുരക്ഷിതമാക്കുന്നതിൽ ഗൗരവമുണ്ട്, ഇതിൽ നമ്മുടെ 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 [Coordinated Vulnerability Disclosure](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/ml/SUPPORT.md b/translations/ml/SUPPORT.md new file mode 100644 index 000000000..329e5e13c --- /dev/null +++ b/translations/ml/SUPPORT.md @@ -0,0 +1,31 @@ + +# പിന്തുണ +## പ്രശ്നങ്ങൾ ഫയൽ ചെയ്യാനും സഹായം ലഭിക്കാനും + +പ്രശ്നം ഫയൽ ചെയ്യുന്നതിന് മുമ്പ്, ഇൻസ്റ്റാളേഷൻ, സെറ്റപ്പ്, പാഠങ്ങൾ നടത്തുന്നതുമായി ബന്ധപ്പെട്ട സാധാരണ പ്രശ്നങ്ങൾക്ക് പരിഹാരങ്ങൾക്കായി ഞങ്ങളുടെ [പ്രശ്നപരിഹാര ഗൈഡ്](TROUBLESHOOTING.md) പരിശോധിക്കുക. + +ഈ പ്രോജക്ട് ബഗുകളും ഫീച്ചർ അഭ്യർത്ഥനകളും ട്രാക്ക് ചെയ്യാൻ GitHub Issues ഉപയോഗിക്കുന്നു. പുനരാവൃതികൾ ഒഴിവാക്കാൻ പുതിയ പ്രശ്നങ്ങൾ ഫയൽ ചെയ്യുന്നതിന് മുമ്പ് നിലവിലുള്ള പ്രശ്നങ്ങൾ തിരയുക. പുതിയ പ്രശ്നങ്ങൾക്കായി, നിങ്ങളുടെ ബഗ് അല്ലെങ്കിൽ ഫീച്ചർ അഭ്യർത്ഥന പുതിയ ഒരു Issue ആയി ഫയൽ ചെയ്യുക. + +ഈ പ്രോജക്ട് ഉപയോഗിക്കുന്നതിനെക്കുറിച്ചുള്ള സഹായത്തിനും ചോദ്യങ്ങൾക്കുമായി, നിങ്ങൾക്ക് താഴെ പറയുന്നവ ചെയ്യാം: +- [പ്രശ്നപരിഹാര ഗൈഡ്](TROUBLESHOOTING.md) പരിശോധിക്കുക +- ഞങ്ങളുടെ [Discord Discussions #ml-for-beginners ചാനൽ](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/ml/TROUBLESHOOTING.md b/translations/ml/TROUBLESHOOTING.md new file mode 100644 index 000000000..ce82181ec --- /dev/null +++ b/translations/ml/TROUBLESHOOTING.md @@ -0,0 +1,612 @@ + +# പ്രശ്നപരിഹാര ഗൈഡ് + +Machine Learning for Beginners പാഠ്യപദ്ധതിയുമായി ജോലി ചെയ്യുമ്പോൾ സാധാരണയായി നേരിടുന്ന പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ ഈ ഗൈഡ് സഹായിക്കും. ഇവിടെ പരിഹാരം കണ്ടെത്താനാകുന്നില്ലെങ്കിൽ, ദയവായി ഞങ്ങളുടെ [Discord Discussions](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` ഉപയോഗിക്കേണ്ടതുണ്ടാകാം + +**പ്രശ്നം**: പല പൈത്തൺ പതിപ്പുകൾ തമ്മിൽ സംഘർഷം ഉണ്ടാകുന്നു + +**പരിഹാരം**: +```bash +# പ്രോജക്ടുകൾ വേർതിരിക്കാൻ വെർച്വൽ എൻവയോൺമെന്റുകൾ ഉപയോഗിക്കുക +python -m venv ml-env + +# വെർച്വൽ എൻവയോൺമെന്റ് സജീവമാക്കുക +# വിൻഡോസ്-ൽ: +ml-env\Scripts\activate +# മാക്‌ഓഎസ്/ലിനക്സ്-ൽ: +source ml-env/bin/activate +``` + +### ജുപിറ്റർ ഇൻസ്റ്റലേഷൻ + +**പ്രശ്നം**: `jupyter: command not found` + +**പരിഹാരം**: +```bash +# Jupyter ഇൻസ്റ്റാൾ ചെയ്യുക +pip install jupyter + +# അല്ലെങ്കിൽ pip3 ഉപയോഗിച്ച് +pip3 install jupyter + +# ഇൻസ്റ്റലേഷൻ സ്ഥിരീകരിക്കുക +jupyter --version +``` + +**പ്രശ്നം**: ജുപിറ്റർ ബ്രൗസറിൽ ആരംഭിക്കുന്നില്ല + +**പരിഹാരം**: +```bash +# ബ്രൗസർ വ്യക്തമാക്കാൻ ശ്രമിക്കുക +jupyter notebook --browser=chrome + +# അല്ലെങ്കിൽ ടർമിനലിൽ നിന്നുള്ള ടോക്കൺ ഉള്ള 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. മെമ്മറി പ്രശ്നങ്ങൾ പരിശോധിക്കുക ([Performance Issues](../..) കാണുക) +4. പ്രശ്നമുള്ള കോഡ് കണ്ടെത്താൻ സെല്ലുകൾ ഒറ്റയ്ക്ക് ഓടിക്കുക + +**പ്രശ്നം**: തെറ്റായ പൈത്തൺ കർണൽ തിരഞ്ഞെടുക്കപ്പെട്ടിരിക്കുന്നു + +**പരിഹാരം**: +1. നിലവിലെ കർണൽ പരിശോധിക്കുക: `Kernel → Change Kernel` +2. ശരിയായ പൈത്തൺ പതിപ്പ് തിരഞ്ഞെടുക്കുക +3. കർണൽ കാണാനില്ലെങ്കിൽ, സൃഷ്ടിക്കുക: +```bash +python -m ipykernel install --user --name=ml-env +``` + +**പ്രശ്നം**: കർണൽ ആരംഭിക്കുന്നില്ല + +**പരിഹാരം**: +```bash +# ipykernel പുനഃസ്ഥാപിക്കുക +pip uninstall ipykernel +pip install ipykernel + +# കർണൽ വീണ്ടും രജിസ്റ്റർ ചെയ്യുക +python -m ipykernel install --user +``` + +### നോട്ട്‌ബുക്ക് സെൽ പ്രശ്നങ്ങൾ + +**പ്രശ്നം**: സെല്ലുകൾ ഓടുന്നു, പക്ഷേ ഔട്ട്പുട്ട് കാണിക്കുന്നില്ല + +**പരിഹാരം**: +1. സെൽ ഇപ്പോഴും ഓടുന്നുണ്ടോ എന്ന് പരിശോധിക്കുക (`[*]` സൂചകം നോക്കുക) +2. കർണൽ പുനരാരംഭിച്ച് എല്ലാ സെല്ലുകളും ഓടിക്കുക: `Kernel → Restart & Run All` +3. ബ്രൗസർ കോൺസോളിൽ ജാവാസ്ക്രിപ്റ്റ് പിശകുകൾ പരിശോധിക്കുക (F12) + +**പ്രശ്നം**: സെല്ലുകൾ ഓടിക്കാൻ കഴിയുന്നില്ല - "Run" ക്ലിക്കുചെയ്യുമ്പോൾ പ്രതികരണം ഇല്ല + +**പരിഹാരം**: +1. ടർമിനലിൽ ജുപിറ്റർ സർവർ ഇപ്പോഴും ഓടുന്നുണ്ടോ എന്ന് പരിശോധിക്കുക +2. ബ്രൗസർ പേജ് റിഫ്രഷ് ചെയ്യുക +3. നോട്ട്‌ബുക്ക് അടച്ച് വീണ്ടും തുറക്കുക +4. ജുപിറ്റർ സർവർ പുനരാരംഭിക്കുക + +--- + +## പൈത്തൺ പാക്കേജ് പ്രശ്നങ്ങൾ + +### ഇറക്കുമതി പിശകുകൾ + +**പ്രശ്നം**: `ModuleNotFoundError: No module named 'sklearn'` + +**പരിഹാരം**: +```bash +pip install scikit-learn + +# ഈ കോഴ്‌സിനുള്ള സാധാരണ ML പാക്കേജുകൾ +pip install scikit-learn pandas numpy matplotlib seaborn +``` + +**പ്രശ്നം**: `ImportError: cannot import name 'X' from 'sklearn'` + +**പരിഹാരം**: +```bash +# scikit-learn ഏറ്റവും പുതിയ പതിപ്പിലേക്ക് അപ്ഡേറ്റ് ചെയ്യുക +pip install --upgrade scikit-learn + +# പതിപ്പ് പരിശോധിക്കുക +python -c "import sklearn; print(sklearn.__version__)" +``` + +### പതിപ്പ് സംഘർഷങ്ങൾ + +**പ്രശ്നം**: പാക്കേജ് പതിപ്പ് അസമർത്ഥത പിശകുകൾ + +**പരിഹാരം**: +```bash +# പുതിയ ഒരു വെർച്വൽ എൻവയോൺമെന്റ് സൃഷ്ടിക്കുക +python -m venv fresh-env +source fresh-env/bin/activate # അല്ലെങ്കിൽ Windows-ൽ fresh-env\Scripts\activate + +# പാക്കേജുകൾ പുതുതായി ഇൻസ്റ്റാൾ ചെയ്യുക +pip install jupyter scikit-learn pandas numpy matplotlib seaborn + +# പ്രത്യേക പതിപ്പ് ആവശ്യമെങ്കിൽ +pip install scikit-learn==1.3.0 +``` + +**പ്രശ്നം**: `pip install` അനുമതി പിശകുകളോടെ പരാജയപ്പെടുന്നു + +**പരിഹാരം**: +```bash +# നിലവിലെ ഉപയോക്താവിനായി മാത്രമേ ഇൻസ്റ്റാൾ ചെയ്യൂ +pip install --user package-name + +# അല്ലെങ്കിൽ വെർച്വൽ എൻവയോൺമെന്റ് ഉപയോഗിക്കുക (ശുപാർശ ചെയ്യുന്നു) +python -m venv venv +source venv/bin/activate +pip install package-name +``` + +### ഡാറ്റ ലോഡിംഗ് പ്രശ്നങ്ങൾ + +**പ്രശ്നം**: CSV ഫയലുകൾ ലോഡ് ചെയ്യുമ്പോൾ `FileNotFoundError` + +**പരിഹാരം**: +```python +import os +# നിലവിലെ പ്രവർത്തന ഡയറക്ടറി പരിശോധിക്കുക +print(os.getcwd()) + +# നോട്ട്‌ബുക്ക് സ്ഥിതിചെയ്യുന്ന സ്ഥലത്ത് നിന്ന് സാപേക്ഷ പാതകൾ ഉപയോഗിക്കുക +df = pd.read_csv('../../data/filename.csv') + +# അല്ലെങ്കിൽ പൂർണ്ണ പാതകൾ ഉപയോഗിക്കുക +df = pd.read_csv('/full/path/to/data/filename.csv') +``` + +--- + +## ആർ പരിസ്ഥിതി പ്രശ്നങ്ങൾ + +### പാക്കേജ് ഇൻസ്റ്റലേഷൻ + +**പ്രശ്നം**: പാക്കേജ് ഇൻസ്റ്റലേഷൻ കോമ്പൈലേഷൻ പിശകുകളോടെ പരാജയപ്പെടുന്നു + +**പരിഹാരം**: +```r +# ബൈനറി പതിപ്പ് ഇൻസ്റ്റാൾ ചെയ്യുക (Windows/macOS) +install.packages("package-name", type = "binary") + +# പാക്കേജുകൾ ആവശ്യപ്പെടുന്നുവെങ്കിൽ R ഏറ്റവും പുതിയ പതിപ്പിലേക്ക് അപ്ഡേറ്റ് ചെയ്യുക +# R പതിപ്പ് പരിശോധിക്കുക +R.version.string + +# സിസ്റ്റം ആശ്രിതങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്യുക (Linux) +# Ubuntu/Debian-ക്കായി, ടെർമിനലിൽ: +# sudo apt-get install r-base-dev +``` + +**പ്രശ്നം**: `tidyverse` ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയുന്നില്ല + +**പരിഹാരം**: +```r +# ആദ്യം ആശ്രിതങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്യുക +install.packages(c("rlang", "vctrs", "pillar")) + +# പിന്നീട് tidyverse ഇൻസ്റ്റാൾ ചെയ്യുക +install.packages("tidyverse") + +# അല്ലെങ്കിൽ ഘടകങ്ങൾ വ്യക്തിഗതമായി ഇൻസ്റ്റാൾ ചെയ്യുക +install.packages(c("dplyr", "ggplot2", "tidyr", "readr")) +``` + +### ആർമാർക്ഡൗൺ പ്രശ്നങ്ങൾ + +**പ്രശ്നം**: ആർമാർക്ഡൗൺ റെൻഡർ ചെയ്യുന്നില്ല + +**പരിഹാരം**: +```r +# rmarkdown ഇൻസ്റ്റാൾ/അപ്ഡേറ്റ് ചെയ്യുക +install.packages("rmarkdown") + +# ആവശ്യമെങ്കിൽ pandoc ഇൻസ്റ്റാൾ ചെയ്യുക +install.packages("pandoc") + +# PDF ഔട്ട്പുട്ടിനായി tinytex ഇൻസ്റ്റാൾ ചെയ്യുക +install.packages("tinytex") +tinytex::install_tinytex() +``` + +--- + +## ക്വിസ് അപ്ലിക്കേഷൻ പ്രശ്നങ്ങൾ + +### ബിൽഡ് & ഇൻസ്റ്റലേഷൻ + +**പ്രശ്നം**: `npm install` പരാജയപ്പെടുന്നു + +**പരിഹാരം**: +```bash +# npm കാഷെ ക്ലിയർ ചെയ്യുക +npm cache clean --force + +# node_modules ഉം package-lock.json ഉം നീക്കം ചെയ്യുക +rm -rf node_modules package-lock.json + +# വീണ്ടും ഇൻസ്റ്റാൾ ചെയ്യുക +npm install + +# ഇതുവരെ പരാജയപ്പെട്ടാൽ, legacy peer deps ഉപയോഗിച്ച് ശ്രമിക്കുക +npm install --legacy-peer-deps +``` + +**പ്രശ്നം**: പോർട്ട് 8080 ഇതിനകം ഉപയോഗത്തിലാണ് + +**പരിഹാരം**: +```bash +# വ്യത്യസ്ത പോർട്ട് ഉപയോഗിക്കുക +npm run serve -- --port 8081 + +# അല്ലെങ്കിൽ പോർട്ട് 8080 ഉപയോഗിക്കുന്ന പ്രോസസ് കണ്ടെത്തി നശിപ്പിക്കുക +# ലിനക്സ്/മാക്‌ഒഎസ്-ൽ: +lsof -ti:8080 | xargs kill -9 + +# വിൻഡോസ്-ൽ: +netstat -ano | findstr :8080 +taskkill /PID /F +``` + +### ബിൽഡ് പിശകുകൾ + +**പ്രശ്നം**: `npm run build` പരാജയപ്പെടുന്നു + +**പരിഹാരം**: +```bash +# നോഡ്.js പതിപ്പ് പരിശോധിക്കുക (14+ ആയിരിക്കണം) +node --version + +# ആവശ്യമെങ്കിൽ നോഡ്.js അപ്ഡേറ്റ് ചെയ്യുക +# പിന്നീട് ക്ലീൻ ഇൻസ്റ്റാൾ ചെയ്യുക +rm -rf node_modules package-lock.json +npm install +npm run build +``` + +**പ്രശ്നം**: ലിന്റിംഗ് പിശകുകൾ ബിൽഡ് തടയുന്നു + +**പരിഹാരം**: +```bash +# സ്വയം പരിഹരിക്കാവുന്ന പ്രശ്നങ്ങൾ പരിഹരിക്കുക +npm run lint -- --fix + +# അല്ലെങ്കിൽ താൽക്കാലികമായി ബിൽഡിൽ ലിന്റിംഗ് അപ്രാപ്തമാക്കുക +# (ഉത്പാദനത്തിനായി ശുപാർശ ചെയ്യപ്പെടുന്നില്ല) +``` + +--- + +## ഡാറ്റയും ഫയൽ പാതയും സംബന്ധിച്ച പ്രശ്നങ്ങൾ + +### പാത പ്രശ്നങ്ങൾ + +**പ്രശ്നം**: നോട്ട്‌ബുക്കുകൾ ഓടിക്കുമ്പോൾ ഡാറ്റ ഫയലുകൾ കണ്ടെത്താനാകുന്നില്ല + +**പരിഹാരം**: +1. **എപ്പോഴും നോട്ട്‌ബുക്ക് ഉള്ള ഡയറക്ടറിയിൽ നിന്ന് ഓടിക്കുക** + ```bash + cd /path/to/lesson/folder + jupyter notebook + ``` + +2. **കോഡിൽ സാപേക്ഷ പാതകൾ പരിശോധിക്കുക** + ```python + # നോട്ട്‌ബുക്ക് സ്ഥിതിചെയ്യുന്ന സ്ഥലത്തുനിന്നുള്ള ശരിയായ പാത + df = pd.read_csv('../data/filename.csv') + + # നിങ്ങളുടെ ടെർമിനൽ സ്ഥിതിചെയ്യുന്ന സ്ഥലത്തുനിന്നല്ല + ``` + +3. **ആവശ്യമായാൽ പൂർണ്ണ പാതകൾ ഉപയോഗിക്കുക** + ```python + import os + base_path = os.path.dirname(os.path.abspath(__file__)) + data_path = os.path.join(base_path, 'data', 'filename.csv') + ``` + +### ഡാറ്റ ഫയലുകൾ കാണാനില്ല + +**പ്രശ്നം**: ഡാറ്റസെറ്റ് ഫയലുകൾ കാണാനില്ല + +**പരിഹാരം**: +1. ഡാറ്റ റിപോസിറ്ററിയിൽ ഉണ്ടോ എന്ന് പരിശോധിക്കുക - മിക്ക ഡാറ്റസെറ്റുകളും ഉൾപ്പെടുത്തിയിട്ടുണ്ട് +2. ചില പാഠങ്ങൾ ഡാറ്റ ഡൗൺലോഡ് ചെയ്യേണ്ടതുണ്ടാകാം - പാഠം README പരിശോധിക്കുക +3. ഏറ്റവും പുതിയ മാറ്റങ്ങൾ പുൾ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക: + ```bash + git pull origin main + ``` + +--- + +## സാധാരണ പിശക് സന്ദേശങ്ങൾ + +### മെമ്മറി പിശകുകൾ + +**പിശക്**: `MemoryError` അല്ലെങ്കിൽ ഡാറ്റ പ്രോസസ്സ് ചെയ്യുമ്പോൾ കർണൽ മരിക്കുന്നു + +**പരിഹാരം**: +```python +# ഡാറ്റ ചങ്കുകളായി ലോഡ് ചെയ്യുക +for chunk in pd.read_csv('large_file.csv', chunksize=10000): + process(chunk) + +# അല്ലെങ്കിൽ ആവശ്യമായ കോളങ്ങൾ മാത്രം വായിക്കുക +df = pd.read_csv('file.csv', usecols=['col1', 'col2']) + +# പൂർത്തിയാക്കിയപ്പോൾ മെമ്മറി മോചനം ചെയ്യുക +del large_dataframe +import gc +gc.collect() +``` + +### കോൺവെർജൻസ് മുന്നറിയിപ്പുകൾ + +**മുന്നറിയിപ്പ്**: `ConvergenceWarning: Maximum number of iterations reached` + +**പരിഹാരം**: +```python +from sklearn.linear_model import LogisticRegression + +# പരമാവധി ആവർത്തനങ്ങൾ വർദ്ധിപ്പിക്കുക +model = LogisticRegression(max_iter=1000) + +# അല്ലെങ്കിൽ ആദ്യം നിങ്ങളുടെ ഫീച്ചറുകൾ സ്കെയിൽ ചെയ്യുക +from sklearn.preprocessing import StandardScaler +scaler = StandardScaler() +X_scaled = scaler.fit_transform(X) +``` + +### പ്ലോട്ടിംഗ് പ്രശ്നങ്ങൾ + +**പ്രശ്നം**: ജുപിറ്ററിൽ പ്ലോട്ടുകൾ കാണിക്കുന്നില്ല + +**പരിഹാരം**: +```python +# ഇൻലൈൻ പ്ലോട്ടിംഗ് സജ്ജമാക്കുക +%matplotlib inline + +# pyplot ഇറക്കുമതി ചെയ്യുക +import matplotlib.pyplot as plt + +# പ്ലോട്ട് വ്യക്തമായി കാണിക്കുക +plt.plot(data) +plt.show() +``` + +**പ്രശ്നം**: Seaborn പ്ലോട്ടുകൾ വ്യത്യസ്തമായി കാണപ്പെടുന്നു അല്ലെങ്കിൽ പിശകുകൾ കാണിക്കുന്നു + +**പരിഹാരം**: +```python +import warnings +warnings.filterwarnings('ignore', category=UserWarning) + +# അനുയോജ്യമായ പതിപ്പിലേക്ക് അപ്ഡേറ്റ് ചെയ്യുക +# pip install --upgrade seaborn matplotlib +``` + +### യൂണികോഡ്/എൻകോഡിംഗ് പിശകുകൾ + +**പ്രശ്നം**: ഫയലുകൾ വായിക്കുമ്പോൾ `UnicodeDecodeError` + +**പരിഹാരം**: +```python +# എൻകോഡിംഗ് വ്യക്തമായി വ്യക്തമാക്കുക +df = pd.read_csv('file.csv', encoding='utf-8') + +# അല്ലെങ്കിൽ വ്യത്യസ്ത എൻകോഡിംഗ് പരീക്ഷിക്കുക +df = pd.read_csv('file.csv', encoding='latin-1') + +# പ്രശ്നമുള്ള അക്ഷരങ്ങൾ ഒഴിവാക്കാൻ errors='ignore' ഉപയോഗിക്കുക +df = pd.read_csv('file.csv', encoding='utf-8', errors='ignore') +``` + +--- + +## പ്രകടന പ്രശ്നങ്ങൾ + +### നോട്ട്‌ബുക്ക് ഓടിക്കൽ മന്ദഗതിയിലാണ് + +**പ്രശ്നം**: നോട്ട്‌ബുക്കുകൾ ഓടിക്കാൻ വളരെ മന്ദമാണ് + +**പരിഹാരം**: +1. **മെമ്മറി മോചിപ്പിക്കാൻ കർണൽ പുനരാരംഭിക്കുക**: `Kernel → Restart` +2. **ഉപയോഗിക്കാത്ത നോട്ട്‌ബുക്കുകൾ അടയ്ക്കുക** +3. **പരീക്ഷണത്തിനായി ചെറിയ ഡാറ്റ സാമ്പിളുകൾ ഉപയോഗിക്കുക**: + ```python + # വികസനത്തിനിടെ ഉപസമൂഹത്തോടൊപ്പം പ്രവർത്തിക്കുക + df_sample = df.sample(n=1000) + ``` +4. **ബോട്ടിൽനെക്കുകൾ കണ്ടെത്താൻ നിങ്ങളുടെ കോഡ് പ്രൊഫൈൽ ചെയ്യുക**: + ```python + %time operation() # ഏകക പ്രവർത്തന സമയം + %timeit operation() # പല റൺസുകളോടെയുള്ള സമയം + ``` + +### ഉയർന്ന മെമ്മറി ഉപയോഗം + +**പ്രശ്നം**: സിസ്റ്റം മെമ്മറി തീരുന്നു + +**പരിഹാരം**: +```python +# മെമ്മറി ഉപയോഗം പരിശോധിക്കുക +df.info(memory_usage='deep') + +# ഡാറ്റാ ടൈപ്പുകൾ മെച്ചപ്പെടുത്തുക +df['column'] = df['column'].astype('int32') # int64 പകരം + +# അനാവശ്യ കോളങ്ങൾ ഒഴിവാക്കുക +df = df[['col1', 'col2']] # ആവശ്യമായ കോളങ്ങൾ മാത്രം സൂക്ഷിക്കുക + +# ബാച്ചുകളായി പ്രോസസ്സ് ചെയ്യുക +for batch in np.array_split(df, 10): + process(batch) +``` + +--- + +## പരിസ്ഥിതി ക്രമീകരണങ്ങൾ + +### വെർച്വൽ പരിസ്ഥിതി പ്രശ്നങ്ങൾ + +**പ്രശ്നം**: വെർച്വൽ പരിസ്ഥിതി സജീവമാകുന്നില്ല + +**പരിഹാരം**: +```bash +# വിൻഡോസ് +python -m venv venv +venv\Scripts\activate.bat + +# മാക്‌ഒഎസ്/ലിനക്സ് +python3 -m venv venv +source venv/bin/activate + +# സജീവമാണോ എന്ന് പരിശോധിക്കുക (പ്രോംപ്റ്റിൽ venv നാമം കാണിക്കണം) +which python # venv പൈത്തൺ കാണിക്കണം +``` + +**പ്രശ്നം**: പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്തിട്ടും നോട്ട്‌ബുക്കിൽ കാണുന്നില്ല + +**പരിഹാരം**: +```bash +# നോട്ട്‌ബുക്ക് ശരിയായ കർണൽ ഉപയോഗിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക +# നിങ്ങളുടെ വിർച്വൽ എൻവയോൺമെന്റിൽ ipykernel ഇൻസ്റ്റാൾ ചെയ്യുക +pip install ipykernel +python -m ipykernel install --user --name=ml-env --display-name="Python (ml-env)" + +# Jupyter-ൽ: Kernel → Change Kernel → Python (ml-env) +``` + +### Git പ്രശ്നങ്ങൾ + +**പ്രശ്നം**: ഏറ്റവും പുതിയ മാറ്റങ്ങൾ പുൾ ചെയ്യാൻ കഴിയുന്നില്ല - മർജ് സംഘർഷങ്ങൾ + +**പരിഹാരം**: +```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 Discussions**: [#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/ml/docs/_sidebar.md b/translations/ml/docs/_sidebar.md new file mode 100644 index 000000000..ae8a74704 --- /dev/null +++ b/translations/ml/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/ml/for-teachers.md b/translations/ml/for-teachers.md new file mode 100644 index 000000000..b2b9a2d44 --- /dev/null +++ b/translations/ml/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/ml/quiz-app/README.md b/translations/ml/quiz-app/README.md new file mode 100644 index 000000000..9533689aa --- /dev/null +++ b/translations/ml/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 Actions വർക്ക്‌ഫ്ലോ ഫയൽ നിങ്ങളുടെ റിപോസിറ്ററിയിൽ (.github/workflows/azure-static-web-apps-.yml) സൃഷ്ടിക്കും. ഈ വർക്ക്‌ഫ്ലോ ബിൽഡ്, ഡിപ്ലോയ്മെന്റ് പ്രക്രിയ കൈകാര്യം ചെയ്യും. + +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/ml/sketchnotes/LICENSE.md b/translations/ml/sketchnotes/LICENSE.md new file mode 100644 index 000000000..e501f5e46 --- /dev/null +++ b/translations/ml/sketchnotes/LICENSE.md @@ -0,0 +1,203 @@ + +അട്രിബ്യൂഷൻ-ഷെയർഅലൈക്ക് 4.0 ഇന്റർനാഷണൽ + +======================================================================= + +ക്രിയേറ്റീവ് കോമൺസ് കോർപ്പറേഷൻ ("ക്രിയേറ്റീവ് കോമൺസ്") ഒരു നിയമ സ്ഥാപനമല്ല, നിയമ സേവനങ്ങൾ അല്ലെങ്കിൽ നിയമ ഉപദേശം നൽകുന്നവയുമല്ല. ക്രിയേറ്റീവ് കോമൺസ് പബ്ലിക് ലൈസൻസുകളുടെ വിതരണം ഒരു അഭിഭാഷക-ക്ലയന്റ് അല്ലെങ്കിൽ മറ്റ് ബന്ധം സൃഷ്ടിക്കുന്നതല്ല. ക്രിയേറ്റീവ് കോമൺസ് അതിന്റെ ലൈസൻസുകളും ബന്ധപ്പെട്ട വിവരങ്ങളും "അസ്സ്-ഇസ്" അടിസ്ഥാനത്തിൽ ലഭ്യമാക്കുന്നു. ക്രിയേറ്റീവ് കോമൺസ് അതിന്റെ ലൈസൻസുകളുമായി ബന്ധപ്പെട്ട്, അവയുടെ നിബന്ധനകൾ പ്രകാരം ലൈസൻസ് ലഭിച്ച ഏതെങ്കിലും വസ്തുവിനും അല്ലെങ്കിൽ ബന്ധപ്പെട്ട വിവരങ്ങൾക്കുമായി യാതൊരു വാറന്റികളും നൽകുന്നില്ല. ക്രിയേറ്റീവ് കോമൺസ് അവയുടെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന നാശനഷ്ടങ്ങൾക്ക് പരമാവധി പരിധിയിൽ എല്ലാ ഉത്തരവാദിത്വവും ഒഴിവാക്കുന്നു. + +ക്രിയേറ്റീവ് കോമൺസ് പബ്ലിക് ലൈസൻസുകൾ ഉപയോഗിക്കുന്നത് + +ക്രിയേറ്റീവ് കോമൺസ് പബ്ലിക് ലൈസൻസുകൾ സൃഷ്ടാക്കൾക്കും മറ്റ് അവകാശ ഉടമകൾക്കും അവരുടേതായ കൃതികൾ, മറ്റ് പകർപ്പവകാശം ഉള്ള വസ്തുക്കൾ, താഴെ പറയുന്ന പബ്ലിക് ലൈസൻസിൽ നിർദ്ദേശിച്ചിട്ടുള്ള ചില മറ്റ് അവകാശങ്ങൾ എന്നിവ പങ്കുവെക്കാൻ ഉപയോഗിക്കാവുന്ന സാധാരണ നിബന്ധനകളും വ്യവസ്ഥകളും നൽകുന്നു. താഴെ പറയുന്ന കാര്യങ്ങൾ വിവരാർത്ഥമാണ് മാത്രമേ, അവ സമ്പൂർണമായവയല്ല, ഞങ്ങളുടെ ലൈസൻസുകളുടെ ഭാഗമല്ല. + + ലൈസൻസർമാർക്കുള്ള പരിഗണനകൾ: ഞങ്ങളുടെ പബ്ലിക് ലൈസൻസുകൾ അവകാശം നൽകാൻ അധികാരമുള്ളവർക്കാണ് ഉദ്ദേശിച്ചിരിക്കുന്നത്, അവരുടേതായ വസ്തുക്കൾ പകർപ്പവകാശം ഉൾപ്പെടെയുള്ള ചില അവകാശങ്ങൾ പ്രകാരം നിയന്ത്രിതമായ രീതിയിൽ പൊതുജനങ്ങൾക്ക് ഉപയോഗിക്കാൻ അനുമതി നൽകാൻ. ഞങ്ങളുടെ ലൈസൻസുകൾ മാറ്റാനാകാത്തവയാണ്. ലൈസൻസർമാർ തിരഞ്ഞെടുക്കുന്ന ലൈസൻസിന്റെ നിബന്ധനകളും വ്യവസ്ഥകളും വായിച്ച് മനസ്സിലാക്കണം. ലൈസൻസർമാർ പൊതുജനങ്ങൾ പ്രതീക്ഷിക്കുന്ന വിധത്തിൽ വസ്തു പുനരുപയോഗം ചെയ്യാൻ ആവശ്യമായ എല്ലാ അവകാശങ്ങളും ഉറപ്പാക്കണം. ലൈസൻസിന് വിധേയമല്ലാത്ത വസ്തുക്കൾ വ്യക്തമായി അടയാളപ്പെടുത്തണം. ഇതിൽ മറ്റ് CC-ലൈസൻസുള്ള വസ്തുക്കൾ, അല്ലെങ്കിൽ പകർപ്പവകാശത്തിന് ഉള്ള ഒഴിവുകൾ അല്ലെങ്കിൽ പരിധികൾ പ്രകാരം ഉപയോഗിക്കുന്ന വസ്തുക്കൾ ഉൾപ്പെടുന്നു. കൂടുതൽ പരിഗണനകൾ: wiki.creativecommons.org/Considerations_for_licensors + + പൊതുജനങ്ങൾക്ക് പരിഗണനകൾ: ഞങ്ങളുടെ പബ്ലിക് ലൈസൻസുകളിൽ ഒന്നോ അതിലധികമോ ഉപയോഗിച്ച്, ഒരു ലൈസൻസർ ലൈസൻസുചെയ്ത വസ്തു നിർദ്ദിഷ്ട നിബന്ധനകളിൽ പൊതുജനങ്ങൾക്ക് ഉപയോഗിക്കാൻ അനുമതി നൽകുന്നു. ലൈസൻസറുടെ അനുമതി ആവശ്യമായില്ലെങ്കിൽ—ഉദാഹരണത്തിന്, പകർപ്പവകാശത്തിന് ഉള്ള ഏതെങ്കിലും ബാധകമായ ഒഴിവ് അല്ലെങ്കിൽ പരിധി കാരണം—അപ്പോൾ ആ ഉപയോഗം ലൈസൻസിലൂടെ നിയന്ത്രിക്കപ്പെടുന്നില്ല. ഞങ്ങളുടെ ലൈസൻസുകൾ ലൈസൻസറിന് അനുമതി നൽകാനുള്ള പകർപ്പവകാശവും ചില മറ്റ് അവകാശങ്ങളും മാത്രമേ അനുവദിക്കൂ. വസ്തുവിൽ മറ്റുള്ളവർക്കും പകർപ്പവകാശം അല്ലെങ്കിൽ മറ്റ് അവകാശങ്ങൾ ഉണ്ടാകാം, അതിനാൽ ഉപയോഗം മറ്റൊരു കാരണത്താൽ നിയന്ത്രിക്കപ്പെടാം. ലൈസൻസർ പ്രത്യേക അഭ്യർത്ഥനകൾ ഉണ്ടാക്കാം, ഉദാഹരണത്തിന് എല്ലാ മാറ്റങ്ങളും അടയാളപ്പെടുത്തണമെന്നോ വിവരിക്കണമെന്നോ. ഞങ്ങളുടെ ലൈസൻസുകൾ ആവശ്യപ്പെടുന്നില്ലെങ്കിലും, യുക്തമായിടത്ത് ആ അഭ്യർത്ഥനകൾ മാനിക്കണമെന്ന് നിങ്ങൾക്ക് പ്രോത്സാഹനം നൽകുന്നു. കൂടുതൽ പരിഗണനകൾ: 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. ഫലപ്രദമായ സാങ്കേതിക നടപടികൾ എന്നത്, December 20, 1996-ന് അംഗീകരിച്ച WIPO പകർപ്പവകാശ ഉടമ്പടിയുടെ ആർട്ടിക്കിൾ 11 പ്രകാരം ബാധ്യതകൾ നിറവേറ്റുന്ന നിയമങ്ങൾ പ്രകാരം യഥാർത്ഥ അധികാരമില്ലാതെ മറികടക്കാൻ പാടില്ലാത്ത നടപടികളാണ്. + + f. ഒഴിവുകളും പരിധികളും എന്നത് നീതിപൂർവ്വമായ ഉപയോഗം, നീതിപൂർവ്വമായ ഇടപാട്, അല്ലെങ്കിൽ പകർപ്പവകാശവും സമാന അവകാശങ്ങളും ബാധിക്കുന്ന നിങ്ങളുടെ ലൈസൻസുചെയ്ത വസ്തു ഉപയോഗത്തിന് ബാധകമായ മറ്റ് ഏതെങ്കിലും ഒഴിവോ പരിധിയോ ആണ്. + + g. ലൈസൻസ് ഘടകങ്ങൾ എന്നത് ക്രിയേറ്റീവ് കോമൺസ് പബ്ലിക് ലൈസൻസിന്റെ പേരിൽ ലിസ്റ്റ് ചെയ്ത ലൈസൻസ് ഗുണങ്ങളാണ്. ഈ പബ്ലിക് ലൈസൻസിന്റെ ലൈസൻസ് ഘടകങ്ങൾ അട്രിബ്യൂഷനും ഷെയർഅലൈക്കും ആണ്. + + h. ലൈസൻസുചെയ്ത വസ്തു എന്നത് കലാപരമായ അല്ലെങ്കിൽ സാഹിത്യ കൃതി, ഡാറ്റാബേസ്, അല്ലെങ്കിൽ ലൈസൻസർ ഈ പബ്ലിക് ലൈസൻസ് പ്രയോഗിച്ച മറ്റ് വസ്തുക്കളാണ്. + + i. ലൈസൻസുചെയ്ത അവകാശങ്ങൾ എന്നത് ഈ പബ്ലിക് ലൈസൻസിന്റെ നിബന്ധനകൾക്ക് വിധേയമായി നിങ്ങൾക്ക് അനുവദിച്ച അവകാശങ്ങളാണ്, അവ നിങ്ങളുടെ ലൈസൻസുചെയ്ത വസ്തു ഉപയോഗിക്കാൻ ബാധകമായ എല്ലാ പകർപ്പവകാശവും സമാന അവകാശങ്ങളും ഉൾപ്പെടുന്നു, കൂടാതെ ലൈസൻസറിന് അവ ലൈസൻസ് നൽകാനുള്ള അധികാരം ഉള്ളവയാണ്. + + j. ലൈസൻസർ എന്നത് ഈ പബ്ലിക് ലൈസൻസ് പ്രകാരം അവകാശങ്ങൾ നൽകുന്ന വ്യക്തി(കൾ) അല്ലെങ്കിൽ സ്ഥാപന(ങ്ങൾ) ആണ്. + + k. ഷെയർ എന്നത് ലൈസൻസുചെയ്ത അവകാശങ്ങൾ പ്രകാരം അനുമതി ആവശ്യമായ ഏതെങ്കിലും മാർഗ്ഗം അല്ലെങ്കിൽ പ്രക്രിയ വഴി പൊതുജനങ്ങൾക്ക് വസ്തു നൽകുന്നതും, പകർപ്പിക്കൽ, പൊതു പ്രദർശനം, പൊതു പ്രകടനം, വിതരണം, പ്രചാരം, സംവേദനം, ഇറക്കുമതി എന്നിവ ഉൾപ്പെടുന്നു, കൂടാതെ പൊതുജനങ്ങൾ വ്യക്തിഗതമായി തിരഞ്ഞെടുക്കുന്ന സ്ഥലത്തും സമയത്തും ആ വസ്തു ആക്‌സസ് ചെയ്യാൻ സാധിക്കുന്ന വിധത്തിൽ വസ്തു ലഭ്യമാക്കുന്നതും ആണ്. + + l. Sui Generis ഡാറ്റാബേസ് അവകാശങ്ങൾ എന്നത് Directive 96/9/EC, യൂറോപ്യൻ പാർലമെന്റ് ആൻഡ് കൗൺസിൽ 11 മാർച്ച് 1996-ന് ഡാറ്റാബേസുകളുടെ നിയമപരമായ സംരക്ഷണത്തെക്കുറിച്ച് നൽകിയ നിർദ്ദേശം, അതിന്റെ ഭേദഗതികളും/അല്ലെങ്കിൽ പിന്‍ഗാമികളും, കൂടാതെ ലോകമെമ്പാടുമുള്ള സമാന അവകാശങ്ങളും ഉൾപ്പെടുന്നു. + + 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 ഡാറ്റാബേസ് ഉള്ള ഒരു ഡാറ്റാബേസിൽ മുഴുവൻ അല്ലെങ്കിൽ പ്രധാന ഭാഗം ഉൾപ്പെടുത്തുന്നുവെങ്കിൽ... + അവകാശങ്ങൾ, പിന്നെ നിങ്ങൾക്ക് 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/ml/sketchnotes/README.md b/translations/ml/sketchnotes/README.md new file mode 100644 index 000000000..b15a42f82 --- /dev/null +++ b/translations/ml/sketchnotes/README.md @@ -0,0 +1,23 @@ + +എല്ലാ പാഠ്യപദ്ധതിയുടെ സ്കെച്ച്നോട്ടുകളും ഇവിടെ ഡൗൺലോഡ് ചെയ്യാം. + +🖨 ഉയർന്ന റെസല്യൂഷനിൽ പ്രിന്റ് ചെയ്യുന്നതിനായി, TIFF പതിപ്പുകൾ [ഈ റിപോയിൽ](https://github.com/girliemac/a-picture-is-worth-a-1000-words/tree/main/ml/tiff) ലഭ്യമാണ്. + +🎨 സൃഷ്ടിച്ചത്: [Tomomi Imura](https://github.com/girliemac) (ട്വിറ്റർ: [@girlie_mac](https://twitter.com/girlie_mac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/mo/README.md b/translations/mo/README.md index cb930e392..d961337f7 100644 --- a/translations/mo/README.md +++ b/translations/mo/README.md @@ -1,167 +1,175 @@ -[![GitHub 授權](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub 貢獻者](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub 問題](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub 拉取請求](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![歡迎 PRs](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub 觀察者](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub 分叉](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub 星星](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 多語言支援 +### 🌐 多語言支援 -#### 透過 GitHub Action 支援(自動化且始終保持最新) +#### 透過 GitHub Action 支援(自動化且持續更新) - -[阿拉伯文](../ar/README.md) | [孟加拉文](../bn/README.md) | [保加利亞文](../bg/README.md) | [緬甸文](../my/README.md) | [中文(簡體)](../zh/README.md) | [中文(繁體,香港)](../hk/README.md) | [中文(繁體,澳門)](./README.md) | [中文(繁體,台灣)](../tw/README.md) | [克羅埃西亞文](../hr/README.md) | [捷克文](../cs/README.md) | [丹麥文](../da/README.md) | [荷蘭文](../nl/README.md) | [愛沙尼亞文](../et/README.md) | [芬蘭文](../fi/README.md) | [法文](../fr/README.md) | [德文](../de/README.md) | [希臘文](../el/README.md) | [希伯來文](../he/README.md) | [印地文](../hi/README.md) | [匈牙利文](../hu/README.md) | [印尼文](../id/README.md) | [意大利文](../it/README.md) | [日文](../ja/README.md) | [韓文](../ko/README.md) | [立陶宛文](../lt/README.md) | [馬來文](../ms/README.md) | [馬拉地文](../mr/README.md) | [尼泊爾文](../ne/README.md) | [尼日利亞皮欽語](../pcm/README.md) | [挪威文](../no/README.md) | [波斯文(法爾西)](../fa/README.md) | [波蘭文](../pl/README.md) | [葡萄牙文(巴西)](../br/README.md) | [葡萄牙文(葡萄牙)](../pt/README.md) | [旁遮普文(古木基文)](../pa/README.md) | [羅馬尼亞文](../ro/README.md) | [俄文](../ru/README.md) | [塞爾維亞文(西里爾文)](../sr/README.md) | [斯洛伐克文](../sk/README.md) | [斯洛文尼亞文](../sl/README.md) | [西班牙文](../es/README.md) | [斯瓦希里文](../sw/README.md) | [瑞典文](../sv/README.md) | [他加祿文(菲律賓文)](../tl/README.md) | [泰米爾文](../ta/README.md) | [泰文](../th/README.md) | [土耳其文](../tr/README.md) | [烏克蘭文](../uk/README.md) | [烏爾都文](../ur/README.md) | [越南文](../vi/README.md) - + +[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)](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + -#### 加入我們的社群 +#### 加入我們的社群 -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -我們正在進行一個 AI 學習系列,了解更多並加入我們的 [AI 學習系列](https://aka.ms/learnwithai/discord),時間為 2025 年 9 月 18 日至 30 日。您將學到使用 GitHub Copilot 進行數據科學的技巧和秘訣。 +我們正在進行 Discord AI 學習系列,了解更多並於 2025 年 9 月 18 日至 30 日加入我們,請至 [Learn with AI Series](https://aka.ms/learnwithai/discord)。你將獲得使用 GitHub Copilot 進行資料科學的技巧與秘訣。 -![AI 學習系列](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.mo.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.mo.png) -# 初學者的機器學習課程 +# 初學者機器學習課程 -> 🌍 隨著我們探索世界文化,環遊世界學習機器學習 🌍 +> 🌍 透過世界文化環遊世界,一同探索機器學習 🌍 -Microsoft 的雲端倡導者很高興提供一個為期 12 週、共 26 節課的課程,內容全是關於 **機器學習**。在這個課程中,您將學習有時被稱為 **經典機器學習** 的內容,主要使用 Scikit-learn 作為庫,並避免深度學習,深度學習則涵蓋在我們的 [AI 初學者課程](https://aka.ms/ai4beginners) 中。此外,您還可以搭配我們的 ['數據科學初學者課程'](https://aka.ms/ds4beginners) 一起學習! +微軟的雲端推廣團隊很高興提供一個為期 12 週、共 26 課的 **機器學習** 課程。在此課程中,你將學習有時稱為 **經典機器學習** 的內容,主要使用 Scikit-learn 函式庫,並避免深度學習,深度學習則包含在我們的 [AI 初學者課程](https://aka.ms/ai4beginners) 中。你也可以搭配我們的 ['資料科學初學者課程'](https://aka.ms/ds4beginners) 一起學習! -跟隨我們環遊世界,將這些經典技術應用於來自世界各地的數據。每節課都包括課前和課後測驗、完成課程的書面指導、解決方案、作業等。我們的基於項目的教學法讓您在建設中學習,這是一種能讓新技能更牢固的有效方式。 +跟我們一起環遊世界,將這些經典技術應用於來自世界各地的資料。每堂課包含課前與課後小測驗、書面教學、解答、作業等。我們以專案為基礎的教學法讓你在實作中學習,是新技能扎根的有效方式。 -**✍️ 衷心感謝我們的作者** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu 和 Amy Boyd +**✍️ 衷心感謝我們的作者** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu 與 Amy Boyd -**🎨 同樣感謝我們的插畫家** Tomomi Imura、Dasani Madipalli 和 Jen Looper +**🎨 也感謝我們的插畫師** Tomomi Imura、Dasani Madipalli 與 Jen Looper -**🙏 特別感謝 🙏 我們的 Microsoft 學生大使作者、審稿人和內容貢獻者**,尤其是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila 和 Snigdha Agarwal +**🙏 特別感謝 🙏 微軟學生大使作者、審稿人與內容貢獻者**,特別是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila 與 Snigdha Agarwal -**🤩 額外感謝 Microsoft 學生大使 Eric Wanjau、Jasleen Sondhi 和 Vidushi Gupta 為我們的 R 課程所做的貢獻!** +**🤩 額外感謝微軟學生大使 Eric Wanjau、Jasleen Sondhi 與 Vidushi Gupta 為我們的 R 課程所做的貢獻!** -# 開始使用 +# 開始使用 -請按照以下步驟: -1. **分叉此倉庫**:點擊此頁面右上角的 "Fork" 按鈕。 -2. **克隆此倉庫**:`git clone https://github.com/microsoft/ML-For-Beginners.git` +請依照以下步驟: +1. **Fork 此儲存庫**:點擊本頁右上角的「Fork」按鈕。 +2. **Clone 此儲存庫**: `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) +> [在我們的 Microsoft Learn 集合中找到本課程的所有額外資源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **需要幫助嗎?** 查看我們的 [故障排除指南](TROUBLESHOOTING.md),以解決安裝、設置和運行課程的常見問題。 +> 🔧 **需要幫助?** 請查看我們的 [疑難排解指南](TROUBLESHOOTING.md),解決安裝、設定及執行課程時的常見問題。 -**[學生](https://aka.ms/student-page)**,要使用此課程,請將整個倉庫分叉到您的 GitHub 帳戶,並自行或與小組一起完成練習: +**[學生](https://aka.ms/student-page)**,使用此課程時,請將整個儲存庫 fork 到你自己的 GitHub 帳號,並自行或與團隊完成練習: -- 從課前測驗開始。 -- 閱讀課程並完成活動,在每次知識檢查時停下來反思。 -- 嘗試通過理解課程來創建項目,而不是直接運行解決方案代碼;不過,該代碼可在每個基於項目的課程的 `/solution` 文件夾中找到。 -- 完成課後測驗。 -- 完成挑戰。 -- 完成作業。 -- 完成一組課程後,訪問 [討論板](https://github.com/microsoft/ML-For-Beginners/discussions),並通過填寫適當的 PAT 評估表來 "大聲學習"。PAT 是一種進度評估工具,您可以填寫該表來進一步學習。您還可以對其他 PAT 進行反應,讓我們一起學習。 +- 從課前小測驗開始。 +- 閱讀課程並完成活動,每個知識檢查時暫停並反思。 +- 嘗試理解課程內容並自行建立專案,而非直接執行解答程式碼;不過解答程式碼可在每個專案導向課程的 `/solution` 資料夾中找到。 +- 進行課後小測驗。 +- 完成挑戰。 +- 完成作業。 +- 完成一組課程後,請造訪 [討論區](https://github.com/microsoft/ML-For-Beginners/discussions) 並透過填寫相應的 PAT 評分表「大聲學習」。PAT 是一種進度評估工具,透過填寫評分表促進學習。你也可以對其他人的 PAT 作出回應,讓我們一起學習。 -> 為了進一步學習,我們建議您跟隨這些 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 模組和學習路徑。 +> 若要進一步學習,我們建議參考這些 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 模組與學習路徑。 -**教師們**,我們提供了一些 [建議](for-teachers.md) 來幫助您使用此課程。 +**教師**,我們已在 [for-teachers.md](for-teachers.md) 中提供一些使用此課程的建議。 --- -## 視頻教學 +## 影片導覽 -部分課程提供短視頻形式。您可以在課程中找到所有這些視頻,或者在 [Microsoft Developer YouTube 頻道上的 ML 初學者播放列表](https://aka.ms/ml-beginners-videos) 中找到,點擊下方圖片即可。 +部分課程有短片形式的教學影片。你可以在課程中內嵌觀看,或在 [Microsoft Developer YouTube 頻道的 ML for Beginners 播放清單](https://aka.ms/ml-beginners-videos) 中觀看,點擊下方圖片即可。 -[![ML 初學者橫幅](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.mo.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.mo.png)](https://aka.ms/ml-beginners-videos) --- -## 認識團隊 +## 團隊介紹 -[![宣傳視頻](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif 作者** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif 製作者** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 點擊上方圖片觀看關於此項目及其創作者的視頻! +> 🎥 點擊上方圖片觀看關於此專案及其創作者的影片! --- -## 教學法 - -我們在設計此課程時選擇了兩個教學原則:確保它是 **基於項目** 的且包含 **頻繁測驗**。此外,此課程還有一個共同的 **主題**,使其更具凝聚力。 - -通過確保內容與項目一致,學習過程對學生來說更具吸引力,概念的保留也會得到增強。此外,課前的低壓測驗可以讓學生專注於學習某個主題,而課後的第二次測驗則進一步加強記憶。此課程設計靈活有趣,可以整體或部分學習。項目從小開始,並在 12 週的周期結束時變得越來越複雜。此課程還包括一個關於機器學習的真實應用的附錄,可用作額外學分或討論的基礎。 - -> 查看我們的 [行為準則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)、[翻譯指南](TRANSLATIONS.md) 和 [故障排除指南](TROUBLESHOOTING.md)。我們歡迎您的建設性反饋! - -## 每節課包括 - -- 可選的手繪筆記 -- 可選的補充視頻 -- 視頻教學(僅部分課程) -- [課前熱身測驗](https://ff-quizzes.netlify.app/en/ml/) -- 書面課程 -- 對於基於項目的課程,提供如何構建項目的分步指南 -- 知識檢查 -- 挑戰 -- 補充閱讀 -- 作業 -- [課後測驗](https://ff-quizzes.netlify.app/en/ml/) - -> **關於語言的說明**:這些課程主要使用 Python,但許多課程也提供 R。要完成 R 課程,請轉到 `/solution` 文件夾並查找 R 課程。它們包含 `.rmd` 擴展名,代表 **R Markdown** 文件,可以簡單地定義為在 `Markdown 文檔` 中嵌入 `代碼塊`(R 或其他語言)和 `YAML 標頭`(指導如何格式化輸出,例如 PDF)。因此,它作為數據科學的示範性創作框架,因為它允許您將代碼、輸出和想法結合起來,並以 Markdown 的形式記錄下來。此外,R Markdown 文檔可以渲染為 PDF、HTML 或 Word 等輸出格式。 - -> **關於測驗的說明**:所有測驗都包含在 [測驗應用文件夾](../../quiz-app) 中,共有 52 個測驗,每個測驗包含三個問題。它們在課程中有鏈接,但測驗應用可以在本地運行;請按照 `quiz-app` 文件夾中的指示在本地托管或部署到 Azure。 - -| 課程編號 | 主題 | 課程分組 | 學習目標 | 相關課程 | 作者 | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | 機器學習簡介 | [簡介](1-Introduction/README.md) | 學習機器學習的基本概念 | [課程](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | 機器學習的歷史 | [簡介](1-Introduction/README.md) | 學習這個領域背後的歷史 | [課程](1-Introduction/2-history-of-ML/README.md) | Jen 和 Amy | -| 03 | 公平性與機器學習 | [簡介](1-Introduction/README.md) | 學生在建立和應用機器學習模型時應考慮的公平性相關哲學問題是什麼? | [課程](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | 機器學習的技術 | [簡介](1-Introduction/README.md) | 機器學習研究人員用什麼技術來建立機器學習模型? | [課程](1-Introduction/4-techniques-of-ML/README.md) | Chris 和 Jen | -| 05 | 回歸分析簡介 | [回歸分析](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 | 北美南瓜價格 🎃 | [回歸分析](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 | 北美南瓜價格 🎃 | [回歸分析](2-Regression/README.md) | 建立線性和多項式回歸模型 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen 和 Dmitry • Eric Wanjau | -| 08 | 北美南瓜價格 🎃 | [回歸分析](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 | 一個網頁應用 🔌 | [網頁應用](3-Web-App/README.md) | 建立一個網頁應用來使用您訓練的模型 | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | 分類簡介 | [分類](4-Classification/README.md) | 清理、準備和視覺化您的數據;分類簡介 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen 和 Cassie • Eric Wanjau | -| 11 | 美味的亞洲和印度美食 🍜 | [分類](4-Classification/README.md) | 分類器簡介 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen 和 Cassie • Eric Wanjau | -| 12 | 美味的亞洲和印度美食 🍜 | [分類](4-Classification/README.md) | 更多分類器 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen 和 Cassie • Eric Wanjau | -| 13 | 美味的亞洲和印度美食 🍜 | [分類](4-Classification/README.md) | 使用您的模型建立一個推薦系統網頁應用 | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | 聚類分析簡介 | [聚類分析](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 | 探索尼日利亞的音樂品味 🎧 | [聚類分析](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 | 自然語言處理簡介 ☕️ | [自然語言處理](6-NLP/README.md) | 通過建立一個簡單的機器人學習 NLP 的基礎知識 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | 常見的 NLP 任務 ☕️ | [自然語言處理](6-NLP/README.md) | 通過了解處理語言結構時所需的常見任務來加深您的 NLP 知識 | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | 翻譯與情感分析 ♥️ | [自然語言處理](6-NLP/README.md) | 使用 Jane Austen 的作品進行翻譯與情感分析 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | 歐洲浪漫酒店 ♥️ | [自然語言處理](6-NLP/README.md) | 使用酒店評論進行情感分析 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | 歐洲浪漫酒店 ♥️ | [自然語言處理](6-NLP/README.md) | 使用酒店評論進行情感分析 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | 時間序列預測簡介 | [時間序列](7-TimeSeries/README.md) | 時間序列預測簡介 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ 世界電力使用 ⚡️ - 使用 ARIMA 進行時間序列預測 | [時間序列](7-TimeSeries/README.md) | 使用 ARIMA 進行時間序列預測 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ 世界電力使用 ⚡️ - 使用 SVR 進行時間序列預測 | [時間序列](7-TimeSeries/README.md) | 使用支持向量回歸進行時間序列預測 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | 強化學習簡介 | [強化學習](8-Reinforcement/README.md) | 使用 Q-Learning 進行強化學習簡介 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | 幫助 Peter 避開狼!🐺 | [強化學習](8-Reinforcement/README.md) | 強化學習 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| 後記 | 真實世界的機器學習場景和應用 | [野外的機器學習](9-Real-World/README.md) | 有趣且啟發性的經典機器學習的真實應用 | [課程](9-Real-World/1-Applications/README.md) | 團隊 | -| 後記 | 使用 RAI 儀表板進行機器學習模型調試 | [野外的機器學習](9-Real-World/README.md) | 使用負責任的 AI 儀表板組件進行機器學習模型調試 | [課程](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/#/) 離線運行此文檔。Fork 此 repo,[在本地機器上安裝 Docsify](https://docsify.js.org/#/quickstart),然後在此 repo 的根文件夾中輸入 `docsify serve`。網站將在您的本地主機的 3000 端口上提供服務:`localhost:3000`。 - -## PDFs - -在此處找到帶有鏈接的課程 PDF [here](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)。 +## 教學法 + +我們在設計此課程時選擇了兩個教學原則:確保它是動手做的 **專案導向**,並包含 **頻繁的小測驗**。此外,課程有一個共同的 **主題** 以增強連貫性。 + +確保內容與專案對齊,讓學生更投入學習,並加強概念的記憶。課前低壓力小測驗設定學生學習主題的意圖,課後小測驗則促進進一步記憶。此課程設計靈活且有趣,可整體或部分學習。專案從簡單開始,至 12 週結束時逐漸複雜。課程還包含機器學習在現實世界應用的後記,可作為額外學分或討論基礎。 + +> 請參閱我們的 [行為準則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)、[翻譯指南](TRANSLATIONS.md) 及 [疑難排解](TROUBLESHOOTING.md) 指南。我們歡迎你的建設性回饋! + +## 每堂課包含 + +- 選擇性手繪筆記 +- 選擇性補充影片 +- 影片導覽(部分課程) +- [課前暖身小測驗](https://ff-quizzes.netlify.app/en/ml/) +- 書面課程 +- 專案導向課程的逐步專案建置指南 +- 知識檢查 +- 挑戰 +- 補充閱讀 +- 作業 +- [課後小測驗](https://ff-quizzes.netlify.app/en/ml/) + +> **關於語言的說明**:這些課程主要以 Python 撰寫,但許多也有 R 版本。要完成 R 課程,請前往 `/solution` 資料夾尋找 R 課程。它們包含 .rmd 副檔名,代表 **R Markdown** 檔案,簡單來說是將 `程式碼區塊`(R 或其他語言)與 `YAML 標頭`(指示如何格式化輸出,如 PDF)嵌入 `Markdown 文件`。因此,它是資料科學的優秀撰寫框架,允許你結合程式碼、輸出與想法,並以 Markdown 撰寫。此外,R Markdown 文件可輸出為 PDF、HTML 或 Word 等格式。 + +> **關於小測驗的說明**:所有小測驗皆包含在 [Quiz App 資料夾](../../quiz-app) 中,共 52 個小測驗,每個有三題。它們在課程中有連結,但也可在本地執行;請依照 `quiz-app` 資料夾中的說明在本地架設或部署至 Azure。 + +| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 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-均值聚類方法 | [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-Learning 進行強化學習入門 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | 幫助彼得避開狼!🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 強化學習 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| 後記 | 真實世界的機器學習場景與應用 | [ML in the Wild](9-Real-World/README.md) | 傳統機器學習有趣且具啟發性的真實世界應用 | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| 後記 | 使用 RAI 儀表板進行機器學習模型除錯 | [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 + +在[這裡](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)找到帶有連結的課程 PDF。 + ## 🎒 其他課程 -我們的團隊還製作了其他課程!查看: +我們團隊還製作其他課程!請查看: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -170,7 +178,7 @@ Microsoft 的雲端倡導者很高興提供一個為期 12 週、共 26 節課 [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### 生成式 AI 系列 [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) @@ -178,36 +186,37 @@ Microsoft 的雲端倡導者很高興提供一個為期 12 週、共 26 節課 [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### 核心學習 -[![ML 初學者課程](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![數據科學初學者課程](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI 初學者課程](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![網絡安全初學者課程](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![網頁開發初學者課程](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![物聯網初學者課程](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR 開發初學者課程](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Copilot 系列 +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot 系列 -[![Copilot AI 配對編程](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot 用於 C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot 冒險](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## 尋求幫助 +## 尋求協助 -如果你遇到困難或對構建 AI 應用有任何疑問,歡迎加入其他學員和有經驗的開發者的討論。這是一個支持性的社區,問題可以隨時提出,知識也會被自由分享。 +如果你遇到困難或對建立 AI 應用程式有任何疑問,歡迎加入其他學習者及經驗豐富的開發者,一同參與 MCP 的討論。這是一個支持性的社群,歡迎提問並自由分享知識。 -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -如果你有產品反饋或在構建過程中遇到錯誤,請訪問: +如果你在開發過程中有產品反饋或錯誤,請造訪: -[![Microsoft Foundry 開發者論壇](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **免責聲明**: -此文件已使用人工智能翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 +本文件係使用人工智能翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我哋致力於確保準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件之母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。我哋對因使用本翻譯而引致之任何誤解或誤釋概不負責。 \ No newline at end of file diff --git a/translations/mr/README.md b/translations/mr/README.md index ba46add74..4af6d10d5 100644 --- a/translations/mr/README.md +++ b/translations/mr/README.md @@ -1,83 +1,84 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 बहुभाषिक समर्थन #### GitHub Action द्वारे समर्थित (स्वयंचलित आणि नेहमी अद्ययावत) -[अरबी](../ar/README.md) | [बंगाली](../bn/README.md) | [बल्गेरियन](../bg/README.md) | [बर्मी (म्यानमार)](../my/README.md) | [चिनी (सरलीकृत)](../zh/README.md) | [चिनी (पारंपरिक, हाँगकाँग)](../hk/README.md) | [चिनी (पारंपरिक, मकाऊ)](../mo/README.md) | [चिनी (पारंपरिक, तैवान)](../tw/README.md) | [क्रोएशियन](../hr/README.md) | [झेक](../cs/README.md) | [डॅनिश](../da/README.md) | [डच](../nl/README.md) | [एस्टोनियन](../et/README.md) | [फिनिश](../fi/README.md) | [फ्रेंच](../fr/README.md) | [जर्मन](../de/README.md) | [ग्रीक](../el/README.md) | [हिब्रू](../he/README.md) | [हिंदी](../hi/README.md) | [हंगेरीयन](../hu/README.md) | [इंडोनेशियन](../id/README.md) | [इटालियन](../it/README.md) | [जपानी](../ja/README.md) | [कोरियन](../ko/README.md) | [लिथुआनियन](../lt/README.md) | [मलय](../ms/README.md) | [मराठी](./README.md) | [नेपाळी](../ne/README.md) | [नायजेरियन पिजिन](../pcm/README.md) | [नॉर्वेजियन](../no/README.md) | [फारसी (फारसी)](../fa/README.md) | [पोलिश](../pl/README.md) | [पोर्तुगीज (ब्राझील)](../br/README.md) | [पोर्तुगीज (पोर्तुगाल)](../pt/README.md) | [पंजाबी (गुरुमुखी)](../pa/README.md) | [रोमानियन](../ro/README.md) | [रशियन](../ru/README.md) | [सर्बियन (सिरिलिक)](../sr/README.md) | [स्लोव्हाक](../sk/README.md) | [स्लोव्हेनियन](../sl/README.md) | [स्पॅनिश](../es/README.md) | [स्वाहिली](../sw/README.md) | [स्वीडिश](../sv/README.md) | [टागालोग (फिलिपिनो)](../tl/README.md) | [तामिळ](../ta/README.md) | [थाई](../th/README.md) | [तुर्की](../tr/README.md) | [युक्रेनियन](../uk/README.md) | [उर्दू](../ur/README.md) | [व्हिएतनामी](../vi/README.md) +[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](./README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) #### आमच्या समुदायात सामील व्हा [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -आमच्याकडे AI सह शिकण्याची Discord मालिका सुरू आहे, अधिक जाणून घ्या आणि [Learn with AI Series](https://aka.ms/learnwithai/discord) येथे 18 - 30 सप्टेंबर, 2025 दरम्यान सामील व्हा. तुम्हाला GitHub Copilot डेटा सायन्ससाठी कसे वापरायचे याचे टिप्स आणि ट्रिक्स मिळतील. +आमच्याकडे Discord वर AI सह शिकण्याची मालिका चालू आहे, अधिक जाणून घेण्यासाठी आणि 18 - 30 सप्टेंबर, 2025 रोजी [Learn with AI Series](https://aka.ms/learnwithai/discord) येथे सामील व्हा. तुम्हाला GitHub Copilot चा डेटा सायन्ससाठी वापर करण्याचे टिप्स आणि ट्रिक्स मिळतील. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.mr.png) -# नवशिक्यांसाठी मशीन लर्निंग - अभ्यासक्रम +# मशीन लर्निंग फॉर बिगिनर्स - एक अभ्यासक्रम -> 🌍 जगभर प्रवास करा आणि जागतिक संस्कृतींच्या माध्यमातून मशीन लर्निंग एक्सप्लोर करा 🌍 +> 🌍 जगभर फिरा आणि जगातील संस्कृतींच्या माध्यमातून मशीन लर्निंगचा अभ्यास करा 🌍 -Microsoft मधील Cloud Advocates तुम्हाला **मशीन लर्निंग** बद्दल 12 आठवड्यांचा, 26 धड्यांचा अभ्यासक्रम सादर करताना आनंद होत आहे. या अभ्यासक्रमात, तुम्ही मुख्यतः Scikit-learn लायब्ररी वापरून **क्लासिक मशीन लर्निंग** शिकाल आणि डीप लर्निंग टाळाल, जे आमच्या [AI for Beginners' अभ्यासक्रमात](https://aka.ms/ai4beginners) समाविष्ट आहे. या धड्यांना आमच्या ['Data Science for Beginners' अभ्यासक्रमासोबत](https://aka.ms/ds4beginners) जोडा. +Microsoft मधील Cloud Advocates आपल्याला 12 आठवड्यांचा, 26 धड्यांचा अभ्यासक्रम सादर करत आहेत जो पूर्णपणे **मशीन लर्निंग** विषयी आहे. या अभ्यासक्रमात, तुम्ही जे काही कधीकधी **क्लासिक मशीन लर्निंग** म्हणून ओळखले जाते ते शिकाल, मुख्यतः Scikit-learn या लायब्ररीचा वापर करून आणि डीप लर्निंग टाळून, ज्याचा समावेश आमच्या [AI for Beginners' curriculum](https://aka.ms/ai4beginners) मध्ये आहे. या धड्यांना आमच्या ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) सोबत जोडा. -जगभरातील डेटा वापरून या क्लासिक तंत्रांचा उपयोग करताना आमच्यासोबत प्रवास करा. प्रत्येक धड्यात धड्यापूर्वी आणि नंतरचे क्विझ, धडा पूर्ण करण्यासाठी लेखी सूचना, एक उपाय, एक असाइनमेंट आणि बरेच काही समाविष्ट आहे. आमची प्रकल्प-आधारित पद्धत तुम्हाला शिकण्यास मदत करते, नवीन कौशल्ये 'स्थिर' होण्यासाठी सिद्ध झालेली पद्धत. +जगभर फिरा आणि या क्लासिक तंत्रांचा वापर जगातील विविध भागांतील डेटावर करा. प्रत्येक धड्यात पूर्व- आणि पश्चात-धडा क्विझ, लेखी सूचना, एक समाधान, एक असाइनमेंट आणि बरेच काही समाविष्ट आहे. आमची प्रोजेक्ट-आधारित शिकवणी तुम्हाला शिकत असताना तयार करण्याची संधी देते, जी नवीन कौशल्ये टिकवण्यासाठी सिद्ध पद्धत आहे. -**✍️ आमच्या लेखकांचे मनःपूर्वक आभार** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu आणि Amy Boyd +**✍️ आमच्या लेखकांचे मनापासून आभार** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu आणि Amy Boyd -**🎨 आमच्या चित्रकारांचेही आभार** Tomomi Imura, Dasani Madipalli, आणि Jen Looper +**🎨 आमच्या चित्रकारांचे देखील आभार** Tomomi Imura, Dasani Madipalli, आणि Jen Looper -**🙏 विशेष आभार 🙏 Microsoft Student Ambassador लेखक, समीक्षक, आणि सामग्री योगदानकर्त्यांचे**, विशेषतः Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, आणि Snigdha Agarwal +**🙏 खास आभार 🙏 आमच्या Microsoft Student Ambassador लेखक, पुनरावलोकक आणि सामग्री योगदानकर्त्यांना**, विशेषतः Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, आणि Snigdha Agarwal -**🤩 अतिरिक्त आभार Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, आणि Vidushi Gupta यांचे आमच्या R धड्यांसाठी!** +**🤩 Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, आणि Vidushi Gupta यांना आमच्या R धड्यांसाठी अतिरिक्त आभार!** # सुरुवात कशी करावी -या चरणांचे अनुसरण करा: -1. **रेपॉजिटरी फोर्क करा**: या पृष्ठाच्या वरच्या उजव्या कोपऱ्यातील "Fork" बटणावर क्लिक करा. -2. **रेपॉजिटरी क्लोन करा**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +हे पावले अनुसरा: +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) +> [या कोर्ससाठी सर्व अतिरिक्त संसाधने आमच्या Microsoft Learn संग्रहात शोधा](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **मदतीची गरज आहे?** आमच्या [Troubleshooting Guide](TROUBLESHOOTING.md) मध्ये इन्स्टॉलेशन, सेटअप, आणि धडे चालवण्याशी संबंधित सामान्य समस्यांचे उपाय तपासा. +> 🔧 **मदतीची गरज आहे का?** इंस्टॉलेशन, सेटअप आणि धडे चालवण्याच्या सामान्य समस्यांसाठी आमचा [Troubleshooting Guide](TROUBLESHOOTING.md) तपासा. -**[विद्यार्थी](https://aka.ms/student-page)**, हा अभ्यासक्रम वापरण्यासाठी, संपूर्ण रेपॉजिटरी तुमच्या स्वतःच्या GitHub खात्यावर फोर्क करा आणि स्वतः किंवा गटासह व्यायाम पूर्ण करा: -- धड्यापूर्वीचे क्विझ सुरू करा. -- धडा वाचा आणि प्रत्येक ज्ञान तपासणीवर थांबून विचार करा. -- धड्यांमधून समजून प्रकल्प तयार करण्याचा प्रयत्न करा, उपाय कोड चालवण्याऐवजी; तथापि, तो कोड प्रत्येक प्रकल्प-आधारित धड्याच्या `/solution` फोल्डरमध्ये उपलब्ध आहे. -- धड्यानंतरचे क्विझ घ्या. -- चॅलेंज पूर्ण करा. -- असाइनमेंट पूर्ण करा. -- धड्यांचा गट पूर्ण केल्यानंतर, [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) ला भेट द्या आणि "शिकण्याचा अनुभव" PAT रबरीक भरून शेअर करा. 'PAT' म्हणजे प्रगती मूल्यांकन साधन, जे तुम्हाला तुमच्या शिकण्याचा अनुभव पुढे नेण्यासाठी भरायचे आहे. तुम्ही इतर PAT वर प्रतिक्रिया देखील देऊ शकता जेणेकरून आपण एकत्र शिकू शकू. +**[विद्यार्थी](https://aka.ms/student-page)**, हा अभ्यासक्रम वापरण्यासाठी, संपूर्ण रिपॉझिटरी तुमच्या स्वतःच्या GitHub खात्यावर फोर्क करा आणि व्यायाम स्वतः किंवा गटासह पूर्ण करा: -> पुढील अभ्यासासाठी, आम्ही या [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) मॉड्यूल्स आणि शिकण्याच्या मार्गांचे अनुसरण करण्याची शिफारस करतो. +- पूर्व-व्याख्यान क्विझ पासून सुरू करा. +- व्याख्यान वाचा आणि क्रियाकलाप पूर्ण करा, प्रत्येक ज्ञान तपासणीवर थांबा आणि विचार करा. +- धडे समजून घेऊन प्रकल्प तयार करण्याचा प्रयत्न करा, फक्त समाधान कोड चालवण्याऐवजी; तरीही तो कोड प्रत्येक प्रकल्प-आधारित धड्याच्या `/solution` फोल्डरमध्ये उपलब्ध आहे. +- पश्चात-व्याख्यान क्विझ घ्या. +- आव्हान पूर्ण करा. +- असाइनमेंट पूर्ण करा. +- धडा गट पूर्ण केल्यानंतर, [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) ला भेट द्या आणि योग्य PAT रूब्रिक भरून "उच्चारून शिका". 'PAT' म्हणजे प्रगती मूल्यांकन साधन जे तुम्ही भरता जेणेकरून तुमचे शिक्षण पुढे जाईल. तुम्ही इतर PATs ला प्रतिक्रिया देखील देऊ शकता जेणेकरून आपण एकत्र शिकू शकू. -**शिक्षकांनो**, आम्ही या अभ्यासक्रमाचा वापर कसा करायचा याबद्दल [काही सूचना समाविष्ट केल्या आहेत](for-teachers.md). +> पुढील अभ्यासासाठी, आम्ही या [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) मॉड्यूल्स आणि शिक्षण मार्गांचे अनुसरण करण्याची शिफारस करतो. + +**शिक्षक**, आम्ही [या अभ्यासक्रमाचा वापर कसा करावा याबाबत काही सूचना](for-teachers.md) दिल्या आहेत. --- -## व्हिडिओ वॉकथ्रू +## व्हिडिओ मार्गदर्शक -काही धडे लघु व्हिडिओ स्वरूपात उपलब्ध आहेत. तुम्हाला हे सर्व धड्यांमध्ये इन-लाइन सापडतील, किंवा [Microsoft Developer YouTube चॅनेलवरील ML for Beginners प्लेलिस्ट](https://aka.ms/ml-beginners-videos) वर क्लिक करून पाहता येतील. +काही धडे लहान स्वरूपातील व्हिडिओ म्हणून उपलब्ध आहेत. तुम्ही हे सर्व धड्यांमध्ये इन-लाइन किंवा [Microsoft Developer YouTube चॅनेलवरील ML for Beginners प्लेलिस्ट](https://aka.ms/ml-beginners-videos) वर खालील प्रतिमेवर क्लिक करून पाहू शकता. [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.mr.png)](https://aka.ms/ml-beginners-videos) @@ -87,84 +88,90 @@ Microsoft मधील Cloud Advocates तुम्हाला **मशीन [![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif द्वारे** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif तयार केलेले** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 प्रकल्प आणि ते तयार करणाऱ्या लोकांबद्दल अधिक जाणून घेण्यासाठी वरील प्रतिमेवर क्लिक करा! +> 🎥 प्रकल्प आणि त्याचे निर्माते याबद्दल व्हिडिओसाठी वरील प्रतिमेवर क्लिक करा! --- -## शिक्षण पद्धती +## शिकवणी पद्धत -आम्ही हा अभ्यासक्रम तयार करताना दोन शिक्षण पद्धती निवडल्या आहेत: हे **प्रकल्प-आधारित** असल्याचे सुनिश्चित करणे आणि त्यात **वारंवार क्विझ** समाविष्ट करणे. याशिवाय, या अभ्यासक्रमाला एक सामान्य **थीम** आहे जी त्याला सुसंगतता देते. +आम्ही या अभ्यासक्रमाच्या निर्मितीमध्ये दोन शिकवणी तत्त्वे निवडली आहेत: हे हाताळणीसाठी **प्रोजेक्ट-आधारित** असणे आणि त्यात **वारंवार क्विझ** असणे. याशिवाय, या अभ्यासक्रमाला एक सामान्य **थीम** दिली आहे ज्यामुळे त्याला एकसंधता मिळते. -सामग्री प्रकल्पांशी संरेखित असल्याचे सुनिश्चित करून, प्रक्रिया विद्यार्थ्यांसाठी अधिक आकर्षक बनते आणि संकल्पनांची आठवण वाढते. याशिवाय, वर्गापूर्वी कमी-जोखमीचे क्विझ विद्यार्थ्याला विषय शिकण्याच्या उद्देशाने तयार करते, तर वर्गानंतरचे दुसरे क्विझ अधिक आठवण सुनिश्चित करते. हा अभ्यासक्रम लवचिक आणि मजेदार बनवण्यासाठी डिझाइन केला गेला आहे आणि तो पूर्ण किंवा अंशतः घेतला जाऊ शकतो. प्रकल्प लहान सुरू होतात आणि 12 आठवड्यांच्या चक्राच्या शेवटी अधिकाधिक जटिल होतात. या अभ्यासक्रमात ML च्या वास्तविक-जगातील अनुप्रयोगांवरील एक पोस्टस्क्रिप्ट देखील समाविष्ट आहे, ज्याचा अतिरिक्त क्रेडिट किंवा चर्चेच्या आधारासाठी वापर केला जाऊ शकतो. +सामग्री प्रकल्पांशी जुळवून दिल्यामुळे, विद्यार्थ्यांसाठी प्रक्रिया अधिक आकर्षक होते आणि संकल्पनांची जपणूक वाढते. याशिवाय, वर्गापूर्वीचा कमी-दाबाचा क्विझ विद्यार्थ्यांच्या शिकण्याच्या हेतूची तयारी करतो, तर वर्गानंतरचा दुसरा क्विझ अधिक जपणूक सुनिश्चित करतो. हा अभ्यासक्रम लवचिक आणि मजेदार असावा यासाठी डिझाइन केला गेला आहे आणि तो पूर्ण किंवा भागांमध्ये घेतला जाऊ शकतो. प्रकल्प लहानपासून सुरू होतात आणि 12 आठवड्यांच्या चक्राच्या शेवटी अधिक क्लिष्ट होतात. या अभ्यासक्रमात ML च्या वास्तविक जगातील अनुप्रयोगांवर एक पोस्टस्क्रिप्ट देखील आहे, ज्याचा वापर अतिरिक्त क्रेडिटसाठी किंवा चर्चेसाठी केला जाऊ शकतो. -> आमचा [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), आणि [Troubleshooting](TROUBLESHOOTING.md) मार्गदर्शक शोधा. आम्ही तुमच्या रचनात्मक अभिप्रायाचे स्वागत करतो! +> आमचे [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/) +- ऐच्छिक स्केचनोट +- ऐच्छिक पूरक व्हिडिओ +- व्हिडिओ मार्गदर्शक (काही धड्यांसाठी) +- [पूर्व-व्याख्यान वॉर्मअप क्विझ](https://ff-quizzes.netlify.app/en/ml/) +- लेखी धडा +- प्रोजेक्ट-आधारित धड्यांसाठी, प्रकल्प कसा तयार करायचा यावर टप्प्याटप्प्याने मार्गदर्शक +- ज्ञान तपासण्या +- एक आव्हान +- पूरक वाचन +- असाइनमेंट +- [पश्चात-व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/) -> **भाषांबद्दल एक टीप**: हे धडे प्रामुख्याने Python मध्ये लिहिलेले आहेत, परंतु बरेच R मध्ये देखील उपलब्ध आहेत. R धडा पूर्ण करण्यासाठी, `/solution` फोल्डरमध्ये जा आणि R धडे शोधा. त्यात .rmd विस्तार आहे जो **R Markdown** फाइलचे प्रतिनिधित्व करतो, ज्याला `Markdown document` मध्ये `code chunks` (R किंवा इतर भाषांचे) आणि `YAML header` (PDF सारख्या आउटपुट स्वरूपात मार्गदर्शन करणारे) समाविष्ट म्हणून सोप्या शब्दांत परिभाषित करता येते. त्यामुळे, डेटा सायन्ससाठी हे एक उत्कृष्ट लेखन फ्रेमवर्क म्हणून काम करते कारण ते तुम्हाला तुमचा कोड, त्याचे आउटपुट, आणि तुमचे विचार Markdown मध्ये लिहिण्याची परवानगी देते. याशिवाय, R Markdown दस्तऐवज PDF, HTML, किंवा Word सारख्या आउटपुट स्वरूपात प्रस्तुत केले जाऊ शकतात. +> **भाषांबद्दल एक टीप**: हे धडे मुख्यतः Python मध्ये लिहिलेले आहेत, पण अनेक R मध्ये देखील उपलब्ध आहेत. R धडा पूर्ण करण्यासाठी, `/solution` फोल्डरमध्ये जा आणि R धडे शोधा. त्यात .rmd विस्तार असतो जो **R Markdown** फाइल दर्शवितो, ज्याचा अर्थ `code chunks` (R किंवा इतर भाषांचे) आणि `YAML header` (PDF सारख्या आउटपुट स्वरूपासाठी मार्गदर्शन करणारा) यांचे Markdown दस्तऐवजामध्ये एम्बेडिंग होय. त्यामुळे, हा डेटा सायन्ससाठी एक आदर्श लेखक फ्रेमवर्क आहे कारण तो तुमचा कोड, त्याचा आउटपुट आणि तुमचे विचार Markdown मध्ये लिहिण्याची परवानगी देतो. शिवाय, R Markdown दस्तऐवज PDF, HTML किंवा Word सारख्या आउटपुट स्वरूपात रूपांतरित केले जाऊ शकतात. -> **क्विझबद्दल एक टीप**: सर्व क्विझ [Quiz App फोल्डर](../../quiz-app) मध्ये समाविष्ट आहेत, एकूण 52 क्विझ, प्रत्येकी तीन प्रश्नांसह. ते धड्यांमधून लिंक केलेले आहेत, परंतु क्विझ अॅप स्थानिकरित्या चालवले जाऊ शकते; `quiz-app` फोल्डरमधील सूचनांचे अनुसरण करून स्थानिकरित्या होस्ट करा किंवा Azure वर तैनात करा. +> **क्विझबद्दल एक टीप**: सर्व क्विझ [Quiz App फोल्डर](../../quiz-app) मध्ये आहेत, एकूण 52 क्विझ ज्यात प्रत्येकी तीन प्रश्न आहेत. ते धड्यांमधून लिंक केलेले आहेत पण क्विझ अॅप स्थानिकरित्या चालवता येतो; स्थानिक होस्टिंग किंवा Azure वर तैनात करण्यासाठी `quiz-app` फोल्डरमधील सूचना पाळा. -| धडा क्रमांक | विषय | धड्यांचा गट | शिकण्याचे उद्दिष्ट | लिंक केलेला धडा | लेखक | +| धडा क्रमांक | विषय | धडा गट | शिकण्याचे उद्दिष्टे | लिंक केलेला धडा | लेखक | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | मशीन लर्निंगची ओळख | [Introduction](1-Introduction/README.md) | मशीन लर्निंगमागील मूलभूत संकल्पना जाणून घ्या | [Lesson](1-Introduction/1-intro-to-ML/README.md) | मुहम्मद | -| 02 | मशीन लर्निंगचा इतिहास | [Introduction](1-Introduction/README.md) | या क्षेत्रामागील इतिहास जाणून घ्या | [Lesson](1-Introduction/2-history-of-ML/README.md) | जेन आणि एमी | -| 03 | न्याय आणि मशीन लर्निंग | [Introduction](1-Introduction/README.md) | मशीन लर्निंग मॉडेल तयार करताना आणि लागू करताना विद्यार्थ्यांनी न्यायासंबंधी कोणते महत्त्वाचे तत्त्वज्ञानात्मक मुद्दे विचारात घ्यावे? | [Lesson](1-Introduction/3-fairness/README.md) | तोमोमी | -| 04 | मशीन लर्निंगसाठी तंत्र | [Introduction](1-Introduction/README.md) | मशीन लर्निंग मॉडेल तयार करण्यासाठी एमएल संशोधक कोणती तंत्रे वापरतात? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | क्रिस आणि जेन | -| 05 | रिग्रेशनची ओळख | [Regression](2-Regression/README.md) | रिग्रेशन मॉडेलसाठी Python आणि Scikit-learn वापरण्यास सुरुवात करा | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | जेन • एरिक वांजाऊ | -| 06 | उत्तर अमेरिकन भोपळ्याच्या किंमती 🎃 | [Regression](2-Regression/README.md) | मशीन लर्निंगसाठी डेटा व्हिज्युअलाइझ करा आणि स्वच्छ करा | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | जेन • एरिक वांजाऊ | -| 07 | उत्तर अमेरिकन भोपळ्याच्या किंमती 🎃 | [Regression](2-Regression/README.md) | रेषीय आणि बहुपद रिग्रेशन मॉडेल तयार करा | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | जेन आणि दिमित्री • एरिक वांजाऊ | -| 08 | उत्तर अमेरिकन भोपळ्याच्या किंमती 🎃 | [Regression](2-Regression/README.md) | लॉजिस्टिक रिग्रेशन मॉडेल तयार करा | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | जेन • एरिक वांजाऊ | -| 09 | एक वेब अॅप 🔌 | [Web App](3-Web-App/README.md) | तुमच्या प्रशिक्षित मॉडेलसाठी वेब अॅप तयार करा | [Python](3-Web-App/1-Web-App/README.md) | जेन | +| 01 | मशीन लर्निंगची ओळख | [Introduction](1-Introduction/README.md) | मशीन लर्निंगच्या मूलभूत संकल्पना शिका | [Lesson](1-Introduction/1-intro-to-ML/README.md) | मुहम्मद | +| 02 | मशीन लर्निंगचा इतिहास | [Introduction](1-Introduction/README.md) | या क्षेत्राच्या इतिहासाबद्दल शिका | [Lesson](1-Introduction/2-history-of-ML/README.md) | जेन आणि एमी | +| 03 | न्याय्यतेचा आणि मशीन लर्निंगचा विचार | [Introduction](1-Introduction/README.md) | मशीन लर्निंग मॉडेल तयार करताना आणि लागू करताना विद्यार्थ्यांनी न्याय्यतेसंबंधी कोणत्या महत्त्वाच्या तात्त्विक मुद्द्यांचा विचार करावा? | [Lesson](1-Introduction/3-fairness/README.md) | टोमॉमी | +| 04 | मशीन लर्निंगसाठी तंत्रे | [Introduction](1-Introduction/README.md) | मशीन लर्निंग संशोधक कोणती तंत्रे वापरतात? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | क्रिस आणि जेन | +| 05 | रिग्रेशनची ओळख | [Regression](2-Regression/README.md) | रिग्रेशन मॉडेलसाठी Python आणि Scikit-learn वापरून सुरुवात करा | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | जेन • एरिक वांजाऊ | +| 06 | उत्तर अमेरिकेतील भोपळ्यांचे दर 🎃 | [Regression](2-Regression/README.md) | मशीन लर्निंगसाठी डेटा व्हिज्युअलाइझ करा आणि स्वच्छ करा | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | जेन • एरिक वांजाऊ | +| 07 | उत्तर अमेरिकेतील भोपळ्यांचे दर 🎃 | [Regression](2-Regression/README.md) | रेषीय आणि बहुपद रिग्रेशन मॉडेल तयार करा | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | जेन आणि दिमित्री • एरिक वांजाऊ | +| 08 | उत्तर अमेरिकेतील भोपळ्यांचे दर 🎃 | [Regression](2-Regression/README.md) | लॉजिस्टिक रिग्रेशन मॉडेल तयार करा | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | जेन • एरिक वांजाऊ | +| 09 | वेब अॅप 🔌 | [Web App](3-Web-App/README.md) | तुमच्या प्रशिक्षित मॉडेलसाठी वेब अॅप तयार करा | [Python](3-Web-App/1-Web-App/README.md) | जेन | | 10 | वर्गीकरणाची ओळख | [Classification](4-Classification/README.md) | तुमचा डेटा स्वच्छ करा, तयार करा आणि व्हिज्युअलाइझ करा; वर्गीकरणाची ओळख | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | जेन आणि कॅसी • एरिक वांजाऊ | -| 11 | स्वादिष्ट आशियाई आणि भारतीय पदार्थ 🍜 | [Classification](4-Classification/README.md) | वर्गीकरणकर्त्यांची ओळख | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | जेन आणि कॅसी • एरिक वांजाऊ | -| 12 | स्वादिष्ट आशियाई आणि भारतीय पदार्थ 🍜 | [Classification](4-Classification/README.md) | अधिक वर्गीकरणकर्ते | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | जेन आणि कॅसी • एरिक वांजाऊ | -| 13 | स्वादिष्ट आशियाई आणि भारतीय पदार्थ 🍜 | [Classification](4-Classification/README.md) | तुमच्या मॉडेलचा वापर करून शिफारस करणारा वेब अॅप तयार करा | [Python](4-Classification/4-Applied/README.md) | जेन | +| 11 | स्वादिष्ट आशियाई आणि भारतीय जेवण 🍜 | [Classification](4-Classification/README.md) | वर्गीकरणकर्त्यांची ओळख | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | जेन आणि कॅसी • एरिक वांजाऊ | +| 12 | स्वादिष्ट आशियाई आणि भारतीय जेवण 🍜 | [Classification](4-Classification/README.md) | अधिक वर्गीकरणकर्ते | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | जेन आणि कॅसी • एरिक वांजाऊ | +| 13 | स्वादिष्ट आशियाई आणि भारतीय जेवण 🍜 | [Classification](4-Classification/README.md) | तुमच्या मॉडेलचा वापर करून शिफारस करणारा वेब अॅप तयार करा | [Python](4-Classification/4-Applied/README.md) | जेन | | 14 | क्लस्टरिंगची ओळख | [Clustering](5-Clustering/README.md) | तुमचा डेटा स्वच्छ करा, तयार करा आणि व्हिज्युअलाइझ करा; क्लस्टरिंगची ओळख | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | जेन • एरिक वांजाऊ | -| 15 | नायजेरियन संगीताची आवड शोधणे 🎧 | [Clustering](5-Clustering/README.md) | K-Means क्लस्टरिंग पद्धत एक्सप्लोर करा | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | जेन • एरिक वांजाऊ | -| 16 | नैसर्गिक भाषा प्रक्रिया (NLP) ची ओळख ☕️ | [Natural language processing](6-NLP/README.md) | एक सोपा बॉट तयार करून NLP बद्दल मूलभूत गोष्टी जाणून घ्या | [Python](6-NLP/1-Introduction-to-NLP/README.md) | स्टीफन | -| 17 | सामान्य NLP कार्य ☕️ | [Natural language processing](6-NLP/README.md) | भाषेच्या संरचनांशी व्यवहार करताना आवश्यक असलेल्या सामान्य कार्यांद्वारे तुमचे NLP ज्ञान वाढवा | [Python](6-NLP/2-Tasks/README.md) | स्टीफन | -| 18 | भाषांतर आणि भावना विश्लेषण ♥️ | [Natural language processing](6-NLP/README.md) | जेन ऑस्टेनसह भाषांतर आणि भावना विश्लेषण | [Python](6-NLP/3-Translation-Sentiment/README.md) | स्टीफन | +| 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) | जेन • एरिक वांजाऊ | +| 16 | नैसर्गिक भाषा प्रक्रिया परिचय ☕️ | [Natural language processing](6-NLP/README.md) | एक सोपा बॉट तयार करून NLP च्या मूलभूत गोष्टी शिका | [Python](6-NLP/1-Introduction-to-NLP/README.md) | स्टीफन | +| 17 | सामान्य NLP कार्ये ☕️ | [Natural language processing](6-NLP/README.md) | भाषा संरचनांशी संबंधित सामान्य कार्ये समजून NLP ज्ञान वाढवा | [Python](6-NLP/2-Tasks/README.md) | स्टीफन | +| 18 | भाषांतर आणि भावना विश्लेषण ♥️ | [Natural language processing](6-NLP/README.md) | जेन ऑस्टिनसह भाषांतर आणि भावना विश्लेषण | [Python](6-NLP/3-Translation-Sentiment/README.md) | स्टीफन | | 19 | युरोपमधील रोमँटिक हॉटेल्स ♥️ | [Natural language processing](6-NLP/README.md) | हॉटेल पुनरावलोकनांसह भावना विश्लेषण 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | स्टीफन | | 20 | युरोपमधील रोमँटिक हॉटेल्स ♥️ | [Natural language processing](6-NLP/README.md) | हॉटेल पुनरावलोकनांसह भावना विश्लेषण 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | स्टीफन | -| 21 | टाइम सिरीज अंदाजाची ओळख | [Time series](7-TimeSeries/README.md) | टाइम सिरीज अंदाजाची ओळख | [Python](7-TimeSeries/1-Introduction/README.md) | फ्रांसेस्का | -| 22 | ⚡️ जागतिक ऊर्जा वापर ⚡️ - ARIMA सह टाइम सिरीज अंदाज | [Time series](7-TimeSeries/README.md) | ARIMA सह टाइम सिरीज अंदाज | [Python](7-TimeSeries/2-ARIMA/README.md) | फ्रांसेस्का | -| 23 | ⚡️ जागतिक ऊर्जा वापर ⚡️ - SVR सह टाइम सिरीज अंदाज | [Time series](7-TimeSeries/README.md) | सपोर्ट व्हेक्टर रिग्रेशनसह टाइम सिरीज अंदाज | [Python](7-TimeSeries/3-SVR/README.md) | अनिर्बन | -| 24 | पुनर्बलन शिक्षणाची ओळख | [Reinforcement learning](8-Reinforcement/README.md) | Q-Learning सह पुनर्बलन शिक्षणाची ओळख | [Python](8-Reinforcement/1-QLearning/README.md) | दिमित्री | -| 25 | पीटरला लांडग्यापासून वाचवा! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | पुनर्बलन शिक्षण जिम | [Python](8-Reinforcement/2-Gym/README.md) | दिमित्री | -| Postscript | वास्तविक जगातील मशीन लर्निंग परिदृश्य आणि अनुप्रयोग | [ML in the Wild](9-Real-World/README.md) | क्लासिकल मशीन लर्निंगचे मनोरंजक आणि उघड करणारे वास्तविक जगातील अनुप्रयोग | [Lesson](9-Real-World/1-Applications/README.md) | टीम | -| Postscript | RAI डॅशबोर्ड वापरून मशीन लर्निंगमध्ये मॉडेल डीबगिंग | [ML in the Wild](9-Real-World/README.md) | जबाबदार AI डॅशबोर्ड घटक वापरून मशीन लर्निंगमध्ये मॉडेल डीबगिंग | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | रूथ याकुब | +| 21 | टाइम सिरीज फोरकास्टिंगची ओळख | [Time series](7-TimeSeries/README.md) | टाइम सिरीज फोरकास्टिंगची ओळख | [Python](7-TimeSeries/1-Introduction/README.md) | फ्रान्सेस्का | +| 22 | ⚡️ जागतिक वीज वापर ⚡️ - ARIMA सह टाइम सिरीज फोरकास्टिंग | [Time series](7-TimeSeries/README.md) | ARIMA सह टाइम सिरीज फोरकास्टिंग | [Python](7-TimeSeries/2-ARIMA/README.md) | फ्रान्सेस्का | +| 23 | ⚡️ जागतिक वीज वापर ⚡️ - SVR सह टाइम सिरीज फोरकास्टिंग | [Time series](7-TimeSeries/README.md) | सपोर्ट व्हेक्टर रिग्रेशनर सह टाइम सिरीज फोरकास्टिंग | [Python](7-TimeSeries/3-SVR/README.md) | अनिर्बान | +| 24 | रिइन्फोर्समेंट लर्निंगची ओळख | [Reinforcement learning](8-Reinforcement/README.md) | Q-लर्निंगसह रिइन्फोर्समेंट लर्निंगची ओळख | [Python](8-Reinforcement/1-QLearning/README.md) | दिमित्री | +| 25 | पीटरला लांडग्यापासून वाचवा! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | रिइन्फोर्समेंट लर्निंग जिम | [Python](8-Reinforcement/2-Gym/README.md) | दिमित्री | +| Postscript | वास्तविक जगातील ML परिस्थिती आणि अनुप्रयोग | [ML in the Wild](9-Real-World/README.md) | पारंपरिक ML चे मनोरंजक आणि उघड करणारे वास्तविक जगातील अनुप्रयोग | [Lesson](9-Real-World/1-Applications/README.md) | टीम | +| Postscript | RAI डॅशबोर्ड वापरून ML मध्ये मॉडेल डीबगिंग | [ML in the Wild](9-Real-World/README.md) | जबाबदार AI डॅशबोर्ड घटक वापरून मशीन लर्निंगमध्ये मॉडेल डीबगिंग | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | रुथ याकुबू | -> [या कोर्ससाठी Microsoft Learn संग्रहामध्ये सर्व अतिरिक्त संसाधने शोधा](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [या कोर्ससाठी सर्व अतिरिक्त संसाधने आमच्या 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`. +तुम्ही [Docsify](https://docsify.js.org/#/) वापरून ही दस्तऐवज ऑफलाइन चालवू शकता. हा रेपो फोर्क करा, तुमच्या स्थानिक मशीनवर [Docsify इंस्टॉल करा](https://docsify.js.org/#/quickstart), आणि नंतर या रेपोच्या मूळ फोल्डरमध्ये `docsify serve` टाइप करा. वेबसाइट तुमच्या लोकलहोस्टवर पोर्ट 3000 वर चालेल: `localhost:3000`. -## PDFs +## PDF -लिंक्ससह अभ्यासक्रमाचा PDF [इथे](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) शोधा. +अभ्यासक्रमाचा PDF लिंकसह [येथे](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) शोधा. ## 🎒 इतर कोर्सेस -आमची टीम इतर कोर्सेस तयार करते! पहा: +आमची टीम इतर कोर्सेस तयार करते! तपासा: +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) [![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -173,7 +180,7 @@ Microsoft मधील Cloud Advocates तुम्हाला **मशीन --- -### जनरेटिव AI मालिका +### Generative AI Series [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) @@ -182,35 +189,35 @@ Microsoft मधील Cloud Advocates तुम्हाला **मशीन --- ### मुख्य शिक्षण -[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Copilot मालिका -[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + +### कॉपायलट मालिका +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) -## मदत मिळवा +## मदत मिळवा -जर तुम्हाला अडचण आली किंवा AI अ‍ॅप्स तयार करताना काही प्रश्न असतील, तर MCP बद्दल चर्चा करण्यासाठी इतर शिकणाऱ्यांशी आणि अनुभवी विकसकांशी सामील व्हा. ही एक सहायक समुदाय आहे जिथे प्रश्न विचारले जातात आणि ज्ञान मुक्तपणे सामायिक केले जाते. +जर तुम्हाला अडचण येत असेल किंवा AI अॅप्स तयार करण्याबाबत काही प्रश्न असतील तर. MCP बद्दल चर्चा करण्यासाठी सहकारी शिकणारे आणि अनुभवी विकसकांमध्ये सामील व्हा. ही एक सहायक समुदाय आहे जिथे प्रश्न विचारले जातात आणि ज्ञान मोकळेपणाने सामायिक केले जाते. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -जर तुम्हाला उत्पादनाबद्दल अभिप्राय द्यायचा असेल किंवा तयार करताना काही त्रुटी आढळल्या तर भेट द्या: +जर तुम्हाला उत्पादनाबाबत अभिप्राय किंवा त्रुटी आढळल्या तर भेट द्या: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**अस्वीकरण**: -हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपयास लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. +**अस्वीकरण**: +हा दस्तऐवज AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून अनुवादित केला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित अनुवादांमध्ये चुका किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या स्थानिक भाषेत अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी अनुवाद शिफारसीय आहे. या अनुवादाच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमजुती किंवा चुकीच्या अर्थलागी आम्ही जबाबदार नाही. \ No newline at end of file diff --git a/translations/ms/README.md b/translations/ms/README.md index a62077943..0cde9944b 100644 --- a/translations/ms/README.md +++ b/translations/ms/README.md @@ -1,216 +1,223 @@ -[![Lesen GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Penyumbang GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Isu GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Permintaan Tarik GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Pemerhati GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Fork GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Bintang GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Sokongan Pelbagai Bahasa -#### Disokong melalui GitHub Action (Automatik & Sentiasa Terkini) +#### Disokong melalui GitHub Action (Automatik & Sentiasa Dikemas Kini) -[Arab](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgaria](../bg/README.md) | [Burma (Myanmar)](../my/README.md) | [Cina (Ringkas)](../zh/README.md) | [Cina (Tradisional, Hong Kong)](../hk/README.md) | [Cina (Tradisional, Macau)](../mo/README.md) | [Cina (Tradisional, Taiwan)](../tw/README.md) | [Croatia](../hr/README.md) | [Czech](../cs/README.md) | [Denmark](../da/README.md) | [Belanda](../nl/README.md) | [Estonia](../et/README.md) | [Finland](../fi/README.md) | [Perancis](../fr/README.md) | [Jerman](../de/README.md) | [Greek](../el/README.md) | [Ibrani](../he/README.md) | [Hindi](../hi/README.md) | [Hungary](../hu/README.md) | [Indonesia](../id/README.md) | [Itali](../it/README.md) | [Jepun](../ja/README.md) | [Korea](../ko/README.md) | [Lithuania](../lt/README.md) | [Melayu](./README.md) | [Marathi](../mr/README.md) | [Nepal](../ne/README.md) | [Pidgin Nigeria](../pcm/README.md) | [Norway](../no/README.md) | [Parsi (Farsi)](../fa/README.md) | [Poland](../pl/README.md) | [Portugis (Brazil)](../br/README.md) | [Portugis (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romania](../ro/README.md) | [Rusia](../ru/README.md) | [Serbia (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenia](../sl/README.md) | [Sepanyol](../es/README.md) | [Swahili](../sw/README.md) | [Sweden](../sv/README.md) | [Tagalog (Filipina)](../tl/README.md) | [Tamil](../ta/README.md) | [Thai](../th/README.md) | [Turki](../tr/README.md) | [Ukraine](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnam](../vi/README.md) +[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](./README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) #### Sertai Komuniti Kami [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Kami sedang menjalankan siri pembelajaran dengan AI di Discord, ketahui lebih lanjut dan sertai kami di [Siri Belajar dengan AI](https://aka.ms/learnwithai/discord) dari 18 - 30 September, 2025. Anda akan mendapat tip dan trik menggunakan GitHub Copilot untuk Sains Data. +Kami mempunyai siri belajar dengan AI di Discord yang sedang berlangsung, ketahui lebih lanjut dan sertai kami di [Learn with AI Series](https://aka.ms/learnwithai/discord) dari 18 - 30 September, 2025. Anda akan mendapat petua dan trik menggunakan GitHub Copilot untuk Sains Data. -![Siri Belajar dengan AI](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ms.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ms.png) # Pembelajaran Mesin untuk Pemula - Kurikulum -> 🌍 Jelajah dunia sambil kita meneroka Pembelajaran Mesin melalui budaya dunia 🌍 +> 🌍 Jelajah seluruh dunia sambil meneroka Pembelajaran Mesin melalui budaya dunia 🌍 -Cloud Advocates di Microsoft dengan bangga menawarkan kurikulum 12 minggu, 26 pelajaran tentang **Pembelajaran Mesin**. Dalam kurikulum ini, anda akan belajar tentang apa yang kadang-kadang dipanggil **pembelajaran mesin klasik**, menggunakan terutamanya perpustakaan Scikit-learn dan mengelakkan pembelajaran mendalam, yang diliputi dalam kurikulum [AI untuk Pemula](https://aka.ms/ai4beginners). Padankan pelajaran ini dengan kurikulum ['Sains Data untuk Pemula'](https://aka.ms/ds4beginners), juga! +Cloud Advocates di Microsoft dengan sukacitanya menawarkan kurikulum 12 minggu, 26 pelajaran yang membincangkan tentang **Pembelajaran Mesin**. Dalam kurikulum ini, anda akan belajar tentang apa yang kadang-kadang dipanggil **pembelajaran mesin klasik**, menggunakan terutamanya Scikit-learn sebagai perpustakaan dan mengelakkan pembelajaran mendalam, yang dibincangkan dalam kurikulum [AI untuk Pemula](https://aka.ms/ai4beginners) kami. Padankan pelajaran ini dengan kurikulum ['Sains Data untuk Pemula'](https://aka.ms/ds4beginners) kami juga! -Jelajah bersama kami ke seluruh dunia sambil kami menerapkan teknik klasik ini kepada data dari pelbagai kawasan dunia. Setiap pelajaran termasuk kuiz sebelum dan selepas pelajaran, arahan bertulis untuk melengkapkan pelajaran, penyelesaian, tugasan, dan banyak lagi. Pedagogi berasaskan projek kami membolehkan anda belajar sambil membina, cara yang terbukti untuk kemahiran baru 'melekat'. +Jelajah bersama kami ke seluruh dunia sambil menerapkan teknik klasik ini pada data dari pelbagai kawasan dunia. Setiap pelajaran termasuk kuiz sebelum dan selepas pelajaran, arahan bertulis untuk melengkapkan pelajaran, penyelesaian, tugasan, dan banyak lagi. Pedagogi berasaskan projek kami membolehkan anda belajar sambil membina, satu cara yang terbukti untuk kemahiran baru 'melekat'. -**✍️ Terima kasih yang tulus kepada penulis kami** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu dan Amy Boyd +**✍️ Terima kasih yang tidak terhingga kepada penulis kami** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu dan Amy Boyd -**🎨 Terima kasih juga kepada ilustrator kami** Tomomi Imura, Dasani Madipalli, dan Jen Looper +**🎨 Terima kasih juga kepada pelukis ilustrasi kami** Tomomi Imura, Dasani Madipalli, dan Jen Looper -**🙏 Terima kasih khas 🙏 kepada penulis, pengulas, dan penyumbang kandungan Microsoft Student Ambassador kami**, terutamanya Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, dan Snigdha Agarwal +**🙏 Terima kasih istimewa 🙏 kepada penulis, penyemak, dan penyumbang kandungan Microsoft Student Ambassador kami**, terutamanya Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, dan Snigdha Agarwal -**🤩 Terima kasih tambahan kepada Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, dan Vidushi Gupta untuk pelajaran R kami!** +**🤩 Penghargaan tambahan kepada Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, dan Vidushi Gupta untuk pelajaran R kami!** # Memulakan Ikuti langkah-langkah ini: -1. **Fork Repositori**: Klik pada butang "Fork" di sudut kanan atas halaman ini. +1. **Fork Repositori**: Klik butang "Fork" di sudut kanan atas halaman ini. 2. **Clone Repositori**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [temui semua sumber tambahan untuk kursus ini dalam koleksi Microsoft Learn kami](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [cari semua sumber tambahan untuk kursus ini dalam koleksi Microsoft Learn kami](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Perlu bantuan?** Semak [Panduan Penyelesaian Masalah](TROUBLESHOOTING.md) kami untuk penyelesaian kepada isu biasa dengan pemasangan, persediaan, dan menjalankan pelajaran. +> 🔧 **Perlukan bantuan?** Semak [Panduan Penyelesaian Masalah](TROUBLESHOOTING.md) kami untuk penyelesaian isu biasa berkaitan pemasangan, persediaan, dan menjalankan pelajaran. -**[Pelajar](https://aka.ms/student-page)**, untuk menggunakan kurikulum ini, fork keseluruhan repo ke akaun GitHub anda sendiri dan lengkapkan latihan secara individu atau dengan kumpulan: +**[Pelajar](https://aka.ms/student-page)**, untuk menggunakan kurikulum ini, fork keseluruhan repo ke akaun GitHub anda sendiri dan lengkapkan latihan secara sendiri atau bersama kumpulan: -- Mulakan dengan kuiz pra-kuliah. -- Baca kuliah dan lengkapkan aktiviti, berhenti dan renungkan pada setiap semakan pengetahuan. -- Cuba buat projek dengan memahami pelajaran daripada menjalankan kod penyelesaian; walau bagaimanapun kod itu tersedia dalam folder `/solution` dalam setiap pelajaran berorientasikan projek. -- Ambil kuiz selepas kuliah. +- Mulakan dengan kuiz pra-ceramah. +- Baca ceramah dan lengkapkan aktiviti, berhenti dan renungkan pada setiap pemeriksaan pengetahuan. +- Cuba cipta projek dengan memahami pelajaran dan bukannya hanya menjalankan kod penyelesaian; namun kod tersebut tersedia dalam folder `/solution` dalam setiap pelajaran berorientasikan projek. +- Ambil kuiz pasca-ceramah. - Lengkapkan cabaran. - Lengkapkan tugasan. -- Selepas melengkapkan kumpulan pelajaran, lawati [Papan Perbincangan](https://github.com/microsoft/ML-For-Beginners/discussions) dan "belajar dengan lantang" dengan mengisi rubrik PAT yang sesuai. 'PAT' ialah Alat Penilaian Kemajuan yang merupakan rubrik yang anda isi untuk meningkatkan pembelajaran anda. Anda juga boleh bertindak balas terhadap PAT lain supaya kita boleh belajar bersama. +- Selepas melengkapkan kumpulan pelajaran, lawati [Papan Perbincangan](https://github.com/microsoft/ML-For-Beginners/discussions) dan "belajar secara terbuka" dengan mengisi rubrik PAT yang sesuai. 'PAT' adalah Alat Penilaian Kemajuan yang merupakan rubrik yang anda isi untuk memperdalam pembelajaran anda. Anda juga boleh memberi reaksi kepada PAT lain supaya kita boleh belajar bersama. -> Untuk kajian lanjut, kami mengesyorkan mengikuti modul dan laluan pembelajaran [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +> Untuk kajian lanjut, kami mengesyorkan mengikuti modul dan laluan pembelajaran [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) ini. -**Guru**, kami telah [menyertakan beberapa cadangan](for-teachers.md) tentang cara menggunakan kurikulum ini. +**Guru**, kami telah [menyediakan beberapa cadangan](for-teachers.md) tentang cara menggunakan kurikulum ini. --- -## Panduan video +## Video panduan -Beberapa pelajaran tersedia dalam bentuk video pendek. Anda boleh menemui semua ini dalam pelajaran, atau di [senarai main ML untuk Pemula di saluran YouTube Microsoft Developer](https://aka.ms/ml-beginners-videos) dengan mengklik imej di bawah. +Beberapa pelajaran tersedia dalam bentuk video pendek. Anda boleh menemui semua ini secara dalam talian dalam pelajaran, atau di [senarai main ML for Beginners di saluran YouTube Microsoft Developer](https://aka.ms/ml-beginners-videos) dengan mengklik imej di bawah. -[![Banner ML untuk pemula](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ms.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ms.png)](https://aka.ms/ml-beginners-videos) --- ## Kenali Pasukan -[![Video promo](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **Gif oleh** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Klik imej di atas untuk video tentang projek dan orang yang menciptanya! +> 🎥 Klik imej di atas untuk video tentang projek dan orang yang menciptakannya! --- ## Pedagogi -Kami telah memilih dua prinsip pedagogi semasa membina kurikulum ini: memastikan ia berasaskan **projek praktikal** dan ia termasuk **kuiz yang kerap**. Di samping itu, kurikulum ini mempunyai **tema** yang biasa untuk memberikannya kesepaduan. +Kami memilih dua prinsip pedagogi semasa membina kurikulum ini: memastikan ia berasaskan **projek praktikal** dan termasuk **kuiz kerap**. Selain itu, kurikulum ini mempunyai **tema** yang sama untuk memberikan kesatuan. -Dengan memastikan kandungan sejajar dengan projek, proses ini menjadi lebih menarik untuk pelajar dan pengekalan konsep akan dipertingkatkan. Di samping itu, kuiz berisiko rendah sebelum kelas menetapkan niat pelajar terhadap pembelajaran topik, manakala kuiz kedua selepas kelas memastikan pengekalan lanjut. Kurikulum ini direka bentuk untuk fleksibel dan menyeronokkan dan boleh diambil secara keseluruhan atau sebahagian. Projek bermula kecil dan menjadi semakin kompleks menjelang akhir kitaran 12 minggu. Kurikulum ini juga termasuk postscript tentang aplikasi dunia sebenar ML, yang boleh digunakan sebagai kredit tambahan atau sebagai asas untuk perbincangan. +Dengan memastikan kandungan selaras dengan projek, proses pembelajaran menjadi lebih menarik untuk pelajar dan pengekalan konsep akan dipertingkatkan. Selain itu, kuiz berisiko rendah sebelum kelas menetapkan niat pelajar untuk mempelajari topik, manakala kuiz kedua selepas kelas memastikan pengekalan lebih lanjut. Kurikulum ini direka untuk fleksibel dan menyeronokkan dan boleh diambil secara keseluruhan atau sebahagian. Projek bermula kecil dan menjadi semakin kompleks menjelang akhir kitaran 12 minggu. Kurikulum ini juga termasuk posskrip mengenai aplikasi dunia sebenar ML, yang boleh digunakan sebagai kredit tambahan atau sebagai asas perbincangan. -> Temui [Kod Etika](CODE_OF_CONDUCT.md), [Menyumbang](CONTRIBUTING.md), [Terjemahan](TRANSLATIONS.md), dan [Penyelesaian Masalah](TROUBLESHOOTING.md) kami. Kami mengalu-alukan maklum balas membina anda! +> Dapatkan [Kod Etika](CODE_OF_CONDUCT.md), [Menyumbang](CONTRIBUTING.md), [Terjemahan](TRANSLATIONS.md), dan garis panduan [Penyelesaian Masalah](TROUBLESHOOTING.md) kami. Kami mengalu-alukan maklum balas membina anda! ## Setiap pelajaran termasuk - sketchnote pilihan - video tambahan pilihan -- panduan video (beberapa pelajaran sahaja) -- [kuiz pemanasan pra-kuliah](https://ff-quizzes.netlify.app/en/ml/) +- video panduan (beberapa pelajaran sahaja) +- [kuiz pemanasan pra-ceramah](https://ff-quizzes.netlify.app/en/ml/) - pelajaran bertulis -- untuk pelajaran berasaskan projek, panduan langkah demi langkah tentang cara membina projek -- semakan pengetahuan +- untuk pelajaran berasaskan projek, panduan langkah demi langkah cara membina projek +- pemeriksaan pengetahuan - cabaran - bacaan tambahan - tugasan -- [kuiz selepas kuliah](https://ff-quizzes.netlify.app/en/ml/) +- [kuiz pasca-ceramah](https://ff-quizzes.netlify.app/en/ml/) -> **Nota tentang bahasa**: Pelajaran ini ditulis terutamanya dalam Python, tetapi banyak juga tersedia dalam R. Untuk melengkapkan pelajaran R, pergi ke folder `/solution` dan cari pelajaran R. Ia termasuk sambungan .rmd yang mewakili fail **R Markdown** yang boleh ditakrifkan secara ringkas sebagai penggabungan `code chunks` (R atau bahasa lain) dan `YAML header` (yang membimbing cara memformat output seperti PDF) dalam dokumen `Markdown`. Oleh itu, ia berfungsi sebagai rangka kerja penulisan contoh untuk sains data kerana ia membolehkan anda menggabungkan kod anda, outputnya, dan pemikiran anda dengan membolehkan anda menulisnya dalam Markdown. Selain itu, dokumen R Markdown boleh diberikan kepada format output seperti PDF, HTML, atau Word. +> **Nota tentang bahasa**: Pelajaran ini terutamanya ditulis dalam Python, tetapi banyak juga tersedia dalam R. Untuk melengkapkan pelajaran R, pergi ke folder `/solution` dan cari pelajaran R. Ia termasuk sambungan .rmd yang mewakili fail **R Markdown** yang boleh didefinisikan sebagai penggabungan `potongan kod` (R atau bahasa lain) dan `header YAML` (yang mengarahkan cara memformat output seperti PDF) dalam `dokumen Markdown`. Oleh itu, ia berfungsi sebagai rangka kerja penulisan contoh untuk sains data kerana ia membolehkan anda menggabungkan kod anda, outputnya, dan pemikiran anda dengan membenarkan anda menulisnya dalam Markdown. Selain itu, dokumen R Markdown boleh dihasilkan ke format output seperti PDF, HTML, atau Word. -> **Nota tentang kuiz**: Semua kuiz terkandung dalam [folder Aplikasi Kuiz](../../quiz-app), untuk sejumlah 52 kuiz dengan tiga soalan setiap satu. Ia dipautkan dari dalam pelajaran tetapi aplikasi kuiz boleh dijalankan secara tempatan; ikuti arahan dalam folder `quiz-app` untuk menjadi tuan rumah secara tempatan atau menyebarkan ke Azure. +> **Nota tentang kuiz**: Semua kuiz terkandung dalam [folder Aplikasi Kuiz](../../quiz-app), dengan jumlah 52 kuiz yang masing-masing mempunyai tiga soalan. Ia dipautkan dari dalam pelajaran tetapi aplikasi kuiz boleh dijalankan secara tempatan; ikut arahan dalam folder `quiz-app` untuk hos tempatan atau deploy ke Azure. -| Nombor Pelajaran | Topik | Pengelompokan Pelajaran | Objektif Pembelajaran | Pelajaran Pautan | Penulis | +| Nombor Pelajaran | Topik | Pengelompokan Pelajaran | Objektif Pembelajaran | Pelajaran Berkaitan | Penulis | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Pengenalan kepada pembelajaran mesin | [Pengenalan](1-Introduction/README.md) | Pelajari konsep asas di sebalik pembelajaran mesin | [Pelajaran](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Sejarah pembelajaran mesin | [Pengenalan](1-Introduction/README.md) | Pelajari sejarah yang mendasari bidang ini | [Pelajaran](1-Introduction/2-history-of-ML/README.md) | Jen dan Amy | -| 03 | Keadilan dan pembelajaran mesin | [Pengenalan](1-Introduction/README.md) | Apakah isu falsafah penting tentang keadilan yang perlu dipertimbangkan pelajar semasa membina dan menggunakan model ML? | [Pelajaran](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Teknik untuk pembelajaran mesin | [Pengenalan](1-Introduction/README.md) | Apakah teknik yang digunakan penyelidik ML untuk membina model ML? | [Pelajaran](1-Introduction/4-techniques-of-ML/README.md) | Chris dan Jen | -| 05 | Pengenalan kepada regresi | [Regresi](2-Regression/README.md) | Mulakan dengan Python dan Scikit-learn untuk model regresi | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Harga labu Amerika Utara 🎃 | [Regresi](2-Regression/README.md) | Visualisasikan dan bersihkan data sebagai persediaan untuk ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Harga labu Amerika Utara 🎃 | [Regresi](2-Regression/README.md) | Bina model regresi linear dan polinomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen dan Dmitry • Eric Wanjau | -| 08 | Harga labu Amerika Utara 🎃 | [Regresi](2-Regression/README.md) | Bina model regresi logistik | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Aplikasi Web 🔌 | [Aplikasi Web](3-Web-App/README.md) | Bina aplikasi web untuk menggunakan model yang telah dilatih | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Pengenalan kepada klasifikasi | [Klasifikasi](4-Classification/README.md) | Bersihkan, sediakan, dan visualisasikan data anda; pengenalan kepada klasifikasi | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen dan Cassie • Eric Wanjau | -| 11 | Masakan Asia dan India yang lazat 🍜 | [Klasifikasi](4-Classification/README.md) | Pengenalan kepada pengklasifikasi | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen dan Cassie • Eric Wanjau | -| 12 | Masakan Asia dan India yang lazat 🍜 | [Klasifikasi](4-Classification/README.md) | Lebih banyak pengklasifikasi | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen dan Cassie • Eric Wanjau | -| 13 | Masakan Asia dan India yang lazat 🍜 | [Klasifikasi](4-Classification/README.md) | Bina aplikasi web cadangan menggunakan model anda | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Pengenalan kepada pengelompokan | [Pengelompokan](5-Clustering/README.md) | Bersihkan, sediakan, dan visualisasikan data anda; Pengenalan kepada pengelompokan | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Meneroka Citarasa Muzik Nigeria 🎧 | [Pengelompokan](5-Clustering/README.md) | Terokai kaedah pengelompokan 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 | Pengenalan kepada pemprosesan bahasa semula jadi ☕️ | [Pemprosesan bahasa semula jadi](6-NLP/README.md) | Pelajari asas tentang NLP dengan membina bot mudah | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Tugas NLP Biasa ☕️ | [Pemprosesan bahasa semula jadi](6-NLP/README.md) | Mendalami pengetahuan NLP anda dengan memahami tugas biasa yang diperlukan semasa berurusan dengan struktur bahasa | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Terjemahan dan analisis sentimen ♥️ | [Pemprosesan bahasa semula jadi](6-NLP/README.md) | Terjemahan dan analisis sentimen dengan Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Hotel romantik di Eropah ♥️ | [Pemprosesan bahasa semula jadi](6-NLP/README.md) | Analisis sentimen dengan ulasan hotel 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Hotel romantik di Eropah ♥️ | [Pemprosesan bahasa semula jadi](6-NLP/README.md) | Analisis sentimen dengan ulasan hotel 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Pengenalan kepada ramalan siri masa | [Siri masa](7-TimeSeries/README.md) | Pengenalan kepada ramalan siri masa | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Penggunaan Kuasa Dunia ⚡️ - ramalan siri masa dengan ARIMA | [Siri masa](7-TimeSeries/README.md) | Ramalan siri masa dengan ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Penggunaan Kuasa Dunia ⚡️ - ramalan siri masa dengan SVR | [Siri masa](7-TimeSeries/README.md) | Ramalan siri masa dengan Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Pengenalan kepada pembelajaran pengukuhan | [Pembelajaran pengukuhan](8-Reinforcement/README.md) | Pengenalan kepada pembelajaran pengukuhan dengan Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Bantu Peter elakkan serigala! 🐺 | [Pembelajaran pengukuhan](8-Reinforcement/README.md) | Gim pembelajaran pengukuhan | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Senario dan aplikasi ML dunia sebenar | [ML di Dunia Liar](9-Real-World/README.md) | Aplikasi dunia sebenar yang menarik dan mendedahkan tentang ML klasik | [Pelajaran](9-Real-World/1-Applications/README.md) | Pasukan | -| Postscript | Penyahpepijatan Model dalam ML menggunakan papan pemuka RAI | [ML di Dunia Liar](9-Real-World/README.md) | Penyahpepijatan Model dalam Pembelajaran Mesin menggunakan komponen papan pemuka AI Bertanggungjawab | [Pelajaran](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +| 01 | Pengenalan kepada pembelajaran mesin | [Introduction](1-Introduction/README.md) | Pelajari konsep asas di sebalik pembelajaran mesin | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Sejarah pembelajaran mesin | [Introduction](1-Introduction/README.md) | Pelajari sejarah yang mendasari bidang ini | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Keadilan dan pembelajaran mesin | [Introduction](1-Introduction/README.md) | Apakah isu falsafah penting mengenai keadilan yang harus dipertimbangkan oleh pelajar ketika membina dan menggunakan model ML? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Teknik untuk pembelajaran mesin | [Introduction](1-Introduction/README.md) | Apakah teknik yang digunakan oleh penyelidik ML untuk membina model ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Pengenalan kepada regresi | [Regression](2-Regression/README.md) | Mulakan dengan Python dan Scikit-learn untuk model regresi | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Harga labu Amerika Utara 🎃 | [Regression](2-Regression/README.md) | Visualisasikan dan bersihkan data sebagai persediaan untuk ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Harga labu Amerika Utara 🎃 | [Regression](2-Regression/README.md) | Bina model regresi linear dan polinomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Harga labu Amerika Utara 🎃 | [Regression](2-Regression/README.md) | Bina model regresi logistik | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Aplikasi Web 🔌 | [Web App](3-Web-App/README.md) | Bina aplikasi web untuk menggunakan model yang telah dilatih | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Pengenalan kepada klasifikasi | [Classification](4-Classification/README.md) | Bersihkan, sediakan, dan visualisasikan data anda; pengenalan kepada klasifikasi | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Masakan Asia dan India yang lazat 🍜 | [Classification](4-Classification/README.md) | Pengenalan kepada pengklasifikasi | [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 | Masakan Asia dan India yang lazat 🍜 | [Classification](4-Classification/README.md) | Lebih banyak pengklasifikasi | [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 | Masakan Asia dan India yang lazat 🍜 | [Classification](4-Classification/README.md) | Bina aplikasi web pencadangan menggunakan model anda | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Pengenalan kepada pengelompokan | [Clustering](5-Clustering/README.md) | Bersihkan, sediakan, dan visualisasikan data anda; Pengenalan kepada pengelompokan | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Meneroka citarasa muzik Nigeria 🎧 | [Clustering](5-Clustering/README.md) | Terokai kaedah pengelompokan 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 | Pengenalan kepada pemprosesan bahasa semula jadi ☕️ | [Natural language processing](6-NLP/README.md) | Pelajari asas-asas NLP dengan membina bot mudah | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Tugas NLP biasa ☕️ | [Natural language processing](6-NLP/README.md) | Mendalami pengetahuan NLP anda dengan memahami tugas biasa yang diperlukan apabila berurusan dengan struktur bahasa | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Terjemahan dan analisis sentimen ♥️ | [Natural language processing](6-NLP/README.md) | Terjemahan dan analisis sentimen dengan Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Hotel romantik di Eropah ♥️ | [Natural language processing](6-NLP/README.md) | Analisis sentimen dengan ulasan hotel 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Hotel romantik di Eropah ♥️ | [Natural language processing](6-NLP/README.md) | Analisis sentimen dengan ulasan hotel 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Pengenalan kepada ramalan siri masa | [Time series](7-TimeSeries/README.md) | Pengenalan kepada ramalan siri masa | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Penggunaan Kuasa Dunia ⚡️ - ramalan siri masa dengan ARIMA | [Time series](7-TimeSeries/README.md) | Ramalan siri masa dengan ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Penggunaan Kuasa Dunia ⚡️ - ramalan siri masa dengan SVR | [Time series](7-TimeSeries/README.md) | Ramalan siri masa dengan Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Pengenalan kepada pembelajaran penguatan | [Reinforcement learning](8-Reinforcement/README.md) | Pengenalan kepada pembelajaran penguatan dengan Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Bantu Peter elak serigala! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Pembelajaran penguatan Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Senario dan aplikasi ML dunia sebenar | [ML in the Wild](9-Real-World/README.md) | Aplikasi dunia sebenar yang menarik dan mendedahkan ML klasik | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Penyahpepijatan Model dalam ML menggunakan papan pemuka RAI | [ML in the Wild](9-Real-World/README.md) | Penyahpepijatan Model dalam Pembelajaran Mesin menggunakan komponen papan pemuka Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [cari semua sumber tambahan untuk kursus ini dalam koleksi Microsoft Learn kami](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Akses luar talian -Anda boleh menjalankan dokumentasi ini secara luar talian dengan menggunakan [Docsify](https://docsify.js.org/#/). Fork repositori ini, [pasang Docsify](https://docsify.js.org/#/quickstart) pada mesin tempatan anda, dan kemudian dalam folder root repositori ini, taip `docsify serve`. Laman web akan disediakan pada port 3000 di localhost anda: `localhost:3000`. +Anda boleh menjalankan dokumentasi ini secara luar talian dengan menggunakan [Docsify](https://docsify.js.org/#/). Fork repo ini, [pasang Docsify](https://docsify.js.org/#/quickstart) pada mesin tempatan anda, dan kemudian di folder root repo ini, taip `docsify serve`. Laman web akan dihidangkan pada port 3000 di localhost anda: `localhost:3000`. ## PDF -Cari PDF kurikulum dengan pautan [di sini](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Cari pdf kurikulum dengan pautan [di sini](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Kursus Lain +## 🎒 Kursus Lain Pasukan kami menghasilkan kursus lain! Lihat: -### Azure / Edge / MCP / Ejen -[![AZD untuk Pemula](https://img.shields.io/badge/AZD%20untuk%20Pemula-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI untuk Pemula](https://img.shields.io/badge/Edge%20AI%20untuk%20Pemula-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP untuk Pemula](https://img.shields.io/badge/MCP%20untuk%20Pemula-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Ejen AI untuk Pemula](https://img.shields.io/badge/Ejen%20AI%20untuk%20Pemula-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +### LangChain +[![LangChain4j untuk Pemula](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js untuk Pemula](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + +### Azure / Edge / MCP / Agen +[![AZD untuk Pemula](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI untuk Pemula](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP untuk Pemula](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Agen AI untuk Pemula](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- ### Siri AI Generatif -[![AI Generatif untuk Pemula](https://img.shields.io/badge/AI%20Generatif%20untuk%20Pemula-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI Generatif (.NET)](https://img.shields.io/badge/AI%20Generatif%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![AI Generatif (Java)](https://img.shields.io/badge/AI%20Generatif%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![AI Generatif (JavaScript)](https://img.shields.io/badge/AI%20Generatif%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +[![AI Generatif untuk Pemula](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Generatif (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- ### Pembelajaran Teras -[![ML untuk Pemula](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Sains untuk Pemula](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI untuk Pemula](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Keselamatan Siber untuk Pemula](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Pembangunan Web untuk Pemula](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT untuk Pemula](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Pembangunan XR untuk Pemula](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Siri Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Siri Copilot -[![Copilot untuk Pemrograman Berpasangan AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot untuk C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Pengembaraan Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Mendapatkan Bantuan +## Mendapatkan Bantuan -Jika anda menghadapi kesukaran atau mempunyai sebarang soalan tentang membina aplikasi AI, sertai pelajar lain dan pembangun berpengalaman dalam perbincangan tentang MCP. Ia adalah komuniti yang menyokong di mana soalan dialu-alukan dan pengetahuan dikongsi secara bebas. +Jika anda tersekat atau mempunyai sebarang soalan tentang membina aplikasi AI. Sertai pelajar lain dan pembangun berpengalaman dalam perbincangan mengenai MCP. Ia adalah komuniti yang menyokong di mana soalan dialu-alukan dan pengetahuan dikongsi dengan bebas. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Jika anda mempunyai maklum balas produk atau menghadapi ralat semasa membina, lawati: +Jika anda mempunyai maklum balas produk atau ralat semasa membina, lawati: -[![Forum Pembangun Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Penafian**: -Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan profesional oleh manusia adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/my/README.md b/translations/my/README.md index 69c3b75d9..04780ebc5 100644 --- a/translations/my/README.md +++ b/translations/my/README.md @@ -1,164 +1,175 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 ဘာသာစကားအမျိုးမျိုးအတွက် ပံ့ပိုးမှု +### 🌐 ဘာသာစကားစုံထောက်ပံ့မှု -#### GitHub Action မှတဆင့် ပံ့ပိုးထားသည် (အလိုအလျောက်နှင့် အမြဲနောက်ဆုံးပေါ်) +#### GitHub Action မှတဆင့် ထောက်ပံ့ထားသည် (အလိုအလျောက်နှင့် အမြဲတမ်းနောက်ဆုံးပေါ်) -[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](./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) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/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) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) +[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](./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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) -#### ကျွန်ုပ်တို့၏ အသိုင်းအဝိုင်းနှင့် ပူးပေါင်းပါ +#### ကျွန်ုပ်တို့၏ အသိုင်းအဝိုင်းသို့ လာရောက်ပါ [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -AI နှင့်အတူ သင်ကြားမှု စီးရီးတစ်ခုကို ကျွန်ုပ်တို့ Discord တွင် လက်ရှိပြုလုပ်နေပါသည်။ [Learn with AI Series](https://aka.ms/learnwithai/discord) တွင် 2025 ခုနှစ် စက်တင်ဘာလ 18 ရက်မှ 30 ရက်အထိ ပိုမိုသိရှိပြီး ကျွန်ုပ်တို့နှင့် ပူးပေါင်းပါ။ GitHub Copilot ကို Data Science အတွက် အသုံးပြုရန် အကြံဉာဏ်များနှင့် လမ်းညွှန်ချက်များကို ရရှိနိုင်ပါသည်။ +ကျွန်ုပ်တို့မှာ Discord တွင် AI နှင့်အတူ သင်ယူခြင်း စီးရီးတစ်ခုရှိပြီး၊ ၂၀၂၅ ခုနှစ် စက်တင်ဘာ ၁၈ ရက်မှ ၃၀ ရက်အထိ [Learn with AI Series](https://aka.ms/learnwithai/discord) တွင် ပိုမိုသိရှိပြီး ကျွန်ုပ်တို့နှင့် ပူးပေါင်းပါ။ GitHub Copilot ကို Data Science အတွက် အသုံးပြုနည်းများနှင့် အကြံဉာဏ်များ ရရှိမည်ဖြစ်သည်။ ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.my.png) -# စတင်သူများအတွက် Machine Learning - သင်ရိုးညွှန်းတမ်း +# စတင်သင်ယူသူများအတွက် စက်မှုသင်ယူခြင်း - သင်ရိုးညွှန်းတမ်း -> 🌍 ကမ္ဘာ့ယဉ်ကျေးမှုများမှတဆင့် Machine Learning ကို လေ့လာရင်း ကမ္ဘာပတ်လည်ခရီးသွားကြစို့ 🌍 +> 🌍 ကမ္ဘာတစ်ဝှမ်း ခရီးသွားပြီး ကမ္ဘာ့ယဉ်ကျေးမှုများမှတဆင့် စက်မှုသင်ယူခြင်းကို ရှာဖွေကြမည် 🌍 -Microsoft ၏ Cloud Advocates များသည် **Machine Learning** အကြောင်းကို ၁၂ ပတ်၊ ၂၆ သင်ခန်းစာပါသော သင်ရိုးညွှန်းတမ်းတစ်ခုကို ပေးဆောင်ရန် ဝမ်းမြောက်ဝမ်းသာဖြင့် တင်ပြပါသည်။ ဤသင်ရိုးညွှန်းတမ်းတွင် **classic machine learning** ဟုခေါ်ဆိုသော အရာများကို Scikit-learn ကို အဓိကအသုံးပြု၍ လေ့လာမည်ဖြစ်ပြီး၊ [AI for Beginners' curriculum](https://aka.ms/ai4beginners) တွင် ဖော်ပြထားသော deep learning ကို မပါဝင်ပါ။ ဤသင်ခန်းစာများကို ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) နှင့်တွဲဖက်၍လည်း လေ့လာနိုင်ပါသည်။ +Microsoft ၏ Cloud Advocates များသည် **စက်မှုသင်ယူခြင်း** အကြောင်း ၁၂ ပတ်၊ ၂၆ သင်ခန်းစာ သင်ရိုးညွှန်းတမ်းကို ပေးအပ်ရန် ဝမ်းမြောက်ပါသည်။ ဤသင်ရိုးတွင် အဓိကအားဖြင့် Scikit-learn ကို စာကြည့်တိုက်အဖြစ် အသုံးပြု၍ အချို့အခါတွင် **ရိုးရာစက်မှုသင်ယူခြင်း** ဟုခေါ်သော အကြောင်းအရာများကို သင်ယူမည်ဖြစ်ပြီး၊ နက်ရှိုင်းစွာသင်ယူခြင်းကို ကျွန်ုပ်တို့၏ [AI for Beginners' curriculum](https://aka.ms/ai4beginners) တွင် ဖော်ပြထားသည်။ ဤသင်ခန်းစာများကို ကျွန်ုပ်တို့၏ ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) နှင့် တွဲဖက်၍လည်း သင်ယူနိုင်ပါသည်။ -ကမ္ဘာပတ်လည်ခရီးသွားရင်း classic techniques များကို ကမ္ဘာ့ဒေတာများနှင့် တွဲဖက်လေ့လာကြပါစို့။ သင်ခန်းစာတိုင်းတွင် သင်ခန်းစာမတိုင်မီနှင့် သင်ခန်းစာပြီးနောက် စစ်ဆေးမေးခွန်းများ၊ သင်ခန်းစာကို ပြီးစီးရန် ရေးသားထားသော လမ်းညွှန်ချက်များ၊ ဖြေရှင်းချက်၊ လုပ်ငန်းတာဝန်များနှင့် အခြားအရာများ ပါဝင်ပါသည်။ Project-based ပညာရေးနည်းလမ်းဖြင့် သင်ကြားမှုကို အခြေခံထားပြီး၊ အသစ်သော ကျွမ်းကျင်မှုများကို ထိန်းသိမ်းနိုင်စေရန် အထောက်အကူဖြစ်စေပါသည်။ +ကမ္ဘာတစ်ဝှမ်း ခရီးသွားပြီး ဤရိုးရာနည်းလမ်းများကို ကမ္ဘာ့ဒေတာများတွင် အသုံးပြုကြမည်။ သင်ခန်းစာတိုင်းတွင် သင်ခန်းစာမတိုင်မီနှင့်ပြီးနောက် စစ်တမ်းများ၊ သင်ခန်းစာကို ပြီးမြောက်စေရန် ရေးသားထားသော လမ်းညွှန်ချက်များ၊ ဖြေရှင်းချက်၊ တာဝန်ပေးမှုများနှင့် အခြားအရာများ ပါဝင်သည်။ ကျွန်ုပ်တို့၏ ပရောဂျက်အခြေပြု သင်ကြားမှုနည်းလမ်းသည် သင်ယူသူများကို တည်ဆောက်ခြင်းဖြင့် သင်ယူနိုင်စေပြီး၊ အသစ်သော ကျွမ်းကျင်မှုများကို တည်ငြိမ်စေသည်။ -**✍️ ကျေးဇူးအထူးတင်ရှိပါသည်** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu နှင့် Amy Boyd +**✍️ ကျွန်ုပ်တို့၏ စာရေးသူများအား အထူးကျေးဇူးတင်ပါသည်** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu နှင့် Amy Boyd -**🎨 ကျေးဇူးတင်ရှိပါသည်** Tomomi Imura, Dasani Madipalli, နှင့် Jen Looper +**🎨 ပုံဆွဲသူများအားလည်း ကျေးဇူးတင်ပါသည်** Tomomi Imura, Dasani Madipalli, နှင့် Jen Looper -**🙏 Microsoft Student Ambassador များအား အထူးကျေးဇူးတင်ရှိပါသည်** Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, နှင့် Snigdha Agarwal +**🙏 Microsoft Student Ambassador စာရေးသူများ၊ ပြန်လည်သုံးသပ်သူများနှင့် အကြောင်းအရာ ပံ့ပိုးသူများအား အထူးကျေးဇူးတင်ပါသည်**၊ အထူးသဖြင့် Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, နှင့် Snigdha Agarwal -**🤩 R သင်ခန်းစာများအတွက် Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, နှင့် Vidushi Gupta အား အထူးကျေးဇူးတင်ရှိပါသည်!** +**🤩 Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, နှင့် Vidushi Gupta တို့အား R သင်ခန်းစာများအတွက် ထပ်မံကျေးဇူးတင်ပါသည်!** -# စတင်ရန် +# စတင်ခြင်း -ဤအဆင့်များကို လိုက်နာပါ: -1. **Repository ကို Fork လုပ်ပါ**: ဤစာမျက်နှာ၏ အပေါ်ညာဘက်ထောင့်ရှိ "Fork" ခလုတ်ကို နှိပ်ပါ။ -2. **Repository ကို Clone လုပ်ပါ**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +အောက်ပါအဆင့်များကို လိုက်နာပါ- +1. **Repository ကို Fork လုပ်ပါ**: ဤစာမျက်နှာ၏ ညာဘက်အပေါ်ထောင့်ရှိ "Fork" ခလုတ်ကို နှိပ်ပါ။ +2. **Repository ကို Clone လုပ်ပါ**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [ဤသင်တန်းအတွက် အပိုဆောင်းအရင်းအမြစ်များကို Microsoft Learn collection တွင် ရှာဖွေပါ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [ဤသင်တန်းအတွက် အပိုဆောင်းအရင်းအမြစ်များအားလုံးကို ကျွန်ုပ်တို့၏ Microsoft Learn စုစည်းမှုတွင် ရှာဖွေပါ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **အကူအညီလိုအပ်ပါသလား?** [Troubleshooting Guide](TROUBLESHOOTING.md) ကို ကြည့်ပါ။ +> 🔧 **ကူညီလိုပါသလား?** ထည့်သွင်းခြင်း၊ စတင်ခြင်းနှင့် သင်ခန်းစာများကို အလုပ်လုပ်စေရန် ဖြစ်ပေါ်နိုင်သော ပြဿနာများအတွက် ကျွန်ုပ်တို့၏ [ပြဿနာဖြေရှင်းလမ်းညွှန်](TROUBLESHOOTING.md) ကို ကြည့်ပါ။ -**[ကျောင်းသားများ](https://aka.ms/student-page)**, ဤသင်ရိုးညွှန်းတမ်းကို အသုံးပြုရန်၊ repo အားလုံးကို သင်၏ GitHub အကောင့်သို့ fork လုပ်ပြီး၊ သင်တစ်ဦးတည်းဖြစ်စေ၊ အဖွဲ့ဖြင့်ဖြစ်စေ လေ့ကျင့်မှုများကို ပြီးစီးပါ: +**[ကျောင်းသားများ](https://aka.ms/student-page)**၊ ဤသင်ရိုးကို အသုံးပြုရန်၊ သင်၏ GitHub အကောင့်သို့ အပြည့်အစုံ Fork လုပ်ပြီး ကိုယ်တိုင် သို့မဟုတ် အဖွဲ့လိုက်ဖြင့် လေ့ကျင့်ခန်းများ ပြီးမြောက်စေရန်- -- သင်ခန်းစာမတိုင်မီ စစ်ဆေးမေးခွန်းကို စတင်ပါ။ -- သင်ခန်းစာကို ဖတ်ပြီး လှုပ်ရှားမှုများကို ပြီးစီးပါ၊ knowledge check တစ်ခုစီတွင် ရပ်ပြီး ပြန်လည်စဉ်းစားပါ။ -- သင်ခန်းစာများကို နားလည်ခြင်းဖြင့် project များကို ဖန်တီးကြည့်ပါ၊ သို့သော် ဖြေရှင်းချက် code ကို `/solution` folder တွင် ရှာနိုင်ပါသည်။ -- သင်ခန်းစာပြီးနောက် စစ်ဆေးမေးခွန်းကို ဖြေပါ။ -- စိန်ခေါ်မှုကို ပြီးစီးပါ။ -- လုပ်ငန်းတာဝန်ကို ပြီးစီးပါ။ -- သင်ခန်းစာအုပ်စုတစ်ခုကို ပြီးစီးပြီးနောက် [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) သို့ သွားပြီး "learn out loud" လုပ်ပါ။ PAT rubric ကို ဖြည့်စွက်ခြင်းဖြင့် သင်၏ သင်ယူမှုကို တိုးတက်စေပါ။ PAT ဆိုသည်မှာ Progress Assessment Tool ဖြစ်ပြီး သင်၏ သင်ယူမှုကို တိုးတက်စေရန် ဖြည့်စွက်ရမည့် rubric တစ်ခုဖြစ်သည်။ PAT များကို တုံ့ပြန်နိုင်ပြီး အတူတူလေ့လာနိုင်ပါသည်။ +- သင်ခန်းစာမတိုင်မီ စစ်တမ်းဖြေပါ။ +- သင်ခန်းစာကို ဖတ်ပြီး လေ့ကျင့်ခန်းများ ပြီးမြောက်စေပါ၊ နားဆင်ပြီး သိရှိမှုစစ်ဆေးမှုများတွင် ရပ်နားစဉ်းစားပါ။ +- ဖြေရှင်းချက်ကုဒ်ကို တိုက်ရိုက်ပြေးခြင်းမပြုဘဲ သင်ခန်းစာများကို နားလည်ပြီး ပရောဂျက်များ ဖန်တီးရန် ကြိုးစားပါ။ သို့သော် အဆိုပါကုဒ်များကို ပရောဂျက်အခြေပြု သင်ခန်းစာတိုင်းရှိ `/solution` ဖိုလ်ဒါတွင် ရနိုင်ပါသည်။ +- သင်ခန်းစာပြီးနောက် စစ်တမ်းဖြေပါ။ +- စိန်ခေါ်မှုကို ပြီးမြောက်စေပါ။ +- တာဝန်ပေးမှုကို ပြီးမြောက်စေပါ။ +- သင်ခန်းစာအုပ်စုတစ်ခု ပြီးမြောက်ပြီးနောက် [ဆွေးနွေးပွဲဖိုရမ်](https://github.com/microsoft/ML-For-Beginners/discussions) သို့ သွားပြီး သင့်သင်ယူမှုကို "အသံထွက်စေ" အတွက် သင့် PAT rubric ကို ဖြည့်ပါ။ 'PAT' သည် သင်ယူမှုတိုးတက်မှု အကဲဖြတ်ကိရိယာဖြစ်ပြီး သင်ယူမှုကို တိုးတက်စေသည်။ အခြား PAT များကိုလည်း တုံ့ပြန်နိုင်ပြီး အတူတကွ သင်ယူနိုင်ပါသည်။ -> နောက်ထပ်လေ့လာရန်အတွက် [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) module များနှင့် learning path များကို လိုက်နာရန် အကြံပြုပါသည်။ +> ပိုမိုလေ့လာလိုပါက ကျွန်ုပ်တို့၏ [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) မော်ဂျူးများနှင့် သင်ယူမှုလမ်းကြောင်းများကို လိုက်နာရန် အကြံပြုပါသည်။ -**ဆရာများ**၊ ဤသင်ရိုးညွှန်းတမ်းကို ဘယ်လိုအသုံးပြုရမည်ဆိုသည်ကို [အကြံပြုချက်များ](for-teachers.md) ထည့်သွင်းထားပါသည်။ +**ဆရာ/ဆရာမများအတွက်**၊ ဤသင်ရိုးကို မည်သို့ အသုံးပြုရမည်ကို [အကြံပြုချက်များ](for-teachers.md) ထည့်သွင်းထားပါသည်။ --- -## ဗီဒီယို လမ်းညွှန်ချက်များ +## ဗီဒီယိုလမ်းညွှန်များ -သင်ခန်းစာအချို့ကို အတိုချုပ်ဗီဒီယိုအဖြစ် ရရှိနိုင်ပါသည်။ ဤဗီဒီယိုများအားလုံးကို သင်ခန်းစာများတွင် ရှာနိုင်သလို၊ [Microsoft Developer YouTube channel](https://aka.ms/ml-beginners-videos) တွင် ML for Beginners playlist တွင်လည်း ရှာနိုင်ပါသည်။ +သင်ခန်းစာအချို့ကို အတိုချုပ်ဗီဒီယိုအဖြစ် ရရှိနိုင်ပါသည်။ ဤဗီဒီယိုများအားလုံးကို သင်ခန်းစာများအတွင်းတွင် သို့မဟုတ် [Microsoft Developer YouTube ချန်နယ်ရှိ ML for Beginners playlist](https://aka.ms/ml-beginners-videos) တွင် ဓာတ်ပုံကို နှိပ်၍ ကြည့်ရှုနိုင်ပါသည်။ [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.my.png)](https://aka.ms/ml-beginners-videos) --- -## အဖွဲ့ကို တွေ့ဆုံပါ +## အဖွဲ့ဝင်များကို တွေ့ဆုံခြင်း [![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif by** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif ကို ဖန်တီးသူ** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ပရောဂျက်နှင့် ဖန်တီးသူများအကြောင်း ဗီဒီယိုကို ကြည့်ပါ။ +> 🎥 ပရောဂျက်နှင့် ဖန်တီးသူများအကြောင်း ဗီဒီယိုကြည့်ရန် ဓာတ်ပုံကို နှိပ်ပါ! --- -## သင်ကြားရေးနည်းလမ်း +## သင်ကြားမှုနည်းဗျူဟာ -ဤသင်ရိုးညွှန်းတမ်းကို တည်ဆောက်ရာတွင် ကျွန်ုပ်တို့သည် သင်ကြားရေးနည်းလမ်းနှစ်ခုကို ရွေးချယ်ခဲ့ပါသည်။ အတန်းများသည် **project-based** ဖြစ်စေရန်နှင့် **မေးခွန်းများကို မကြာခဏ** ထည့်သွင်းထားခြင်းဖြစ်သည်။ ထို့အပြင်၊ သင်ရိုးညွှန်းတမ်းတွင် **အဓိကအကြောင်းအရာ** တစ်ခုကို ထည့်သွင်းထားပြီး သင်ရိုးညွှန်းတမ်းကို ပိုမိုညီညွတ်စေပါသည်။ +ဤသင်ရိုးကို တည်ဆောက်ရာတွင် ကျွန်ုပ်တို့သည် လက်တွေ့လုပ်ဆောင်နိုင်သော **ပရောဂျက်အခြေပြု** နည်းလမ်းနှင့် **အကြိမ်ကြိမ် စစ်တမ်းများ** ပါဝင်စေရန် နှစ်ခုသော သင်ကြားမှုအခြေခံအယူအဆများကို ရွေးချယ်ခဲ့သည်။ ထို့အပြင် ဤသင်ရိုးတွင် ပေါင်းစည်းမှုရှိစေရန် **အဓိကအကြောင်းအရာ** တစ်ခုပါဝင်သည်။ -Project များနှင့် ကိုက်ညီစေရန် အကြောင်းအရာများကို သေချာစွာ လိုက်နာခြင်းဖြင့် ကျောင်းသားများအတွက် ပိုမိုစိတ်ဝင်စားစေပြီး၊ အကြောင်းအရာများကို မှတ်မိစေပါသည်။ ထို့အပြင်၊ အတန်းမတိုင်မီ မေးခွန်းတစ်ခုသည် ကျောင်းသား၏ အာရုံစိုက်မှုကို သင်ခန်းစာအကြောင်းသို့ ဦးတည်စေပြီး၊ အတန်းပြီးနောက် မေးခွန်းတစ်ခုသည် အကြောင်းအရာများကို ပိုမိုမှတ်မိစေပါသည်။ ဤသင်ရိုးညွှန်းတမ်းကို အပြည့်အစုံဖြစ်စေ၊ အစိတ်အပိုင်းဖြစ်စေ flexible နှင့် ပျော်ရွှင်စေရန် ဒီဇိုင်းထုတ်ထားပါသည်။ Project များသည် သေးငယ်သောအရာများမှ စတင်ပြီး ၁၂ ပတ်အတွင်း အဆင့်မြင့်ဖြစ်လာပါသည်။ ဤသင်ရိုးညွှန်းတမ်းတွင် ML ၏ အမှန်တကယ်အသုံးချမှုများအကြောင်း postscript တစ်ခုလည်း ပါဝင်ပြီး၊ အပိုအမှတ်များအဖြစ် သို့မဟုတ် ဆွေးနွေးရန်အခြေခံအဖြစ် အသုံးပြုနိုင်ပါသည်။ +အကြောင်းအရာများကို ပရောဂျက်များနှင့် ကိုက်ညီစေရန် သေချာစေခြင်းဖြင့် ကျောင်းသားများအတွက် ပိုမိုစိတ်ဝင်စားဖွယ်ကောင်းပြီး အယူအဆများကို ပိုမိုသိမ်းဆည်းနိုင်မည်ဖြစ်သည်။ ထို့အပြင် သင်တန်းမတိုင်မီ စစ်တမ်းတစ်ခုက ကျောင်းသား၏ သင်ယူလိုစိတ်ကို ဖော်ထုတ်ပေးပြီး၊ သင်တန်းပြီးနောက် စစ်တမ်းတစ်ခုက ပိုမိုသိမ်းဆည်းနိုင်စေသည်။ ဤသင်ရိုးကို လွယ်ကူပြီး ပျော်ရွှင်စရာဖြစ်စေရန် ဒီဇိုင်းရေးဆွဲထားပြီး အပိုင်းအစအလိုက် သို့မဟုတ် အပြည့်အစုံ သင်ယူနိုင်သည်။ ပရောဂျက်များသည် စတင်မှာ သေးငယ်ပြီး ၁၂ ပတ်အတွင်း တိုးတက်မှုရှိလာသည်။ ဤသင်ရိုးတွင် ML ၏ လက်တွေ့အသုံးချမှုများအပေါ် အပိုဆောင်းအကြောင်းအရာတစ်ခုပါဝင်ပြီး၊ ထပ်မံအမှတ်ပေးခြင်း သို့မဟုတ် ဆွေးနွေးရန် အခြေခံအဖြစ် အသုံးပြုနိုင်သည်။ -> ကျွန်ုပ်တို့၏ [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), နှင့် [Troubleshooting](TROUBLESHOOTING.md) လမ်းညွှန်ချက်များကို ရှာဖွေပါ။ သင့်၏ အဆောက်အအုံဆန်းသစ်မှုအတွက် ကျွန်ုပ်တို့ ကြိုဆိုပါသည်! +> ကျွန်ုပ်တို့၏ [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), နှင့် [Troubleshooting](TROUBLESHOOTING.md) လမ်းညွှန်ချက်များကို ရှာဖွေပါ။ သင့်၏ တည်ဆောက်မှုဆန့်ကျင်သော တုံ့ပြန်ချက်များကို ကြိုဆိုပါသည်! ## သင်ခန်းစာတိုင်းတွင် ပါဝင်သည် -- စိတ်ကြိုက် sketchnote -- စိတ်ကြိုက် အပိုဗီဒီယို -- ဗီဒီယို လမ်းညွှန်ချက် (အချို့သော သင်ခန်းစာများတွင်သာ) -- [သင်ခန်းစာမတိုင်မီ စစ်ဆေးမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/) +- ရွေးချယ်နိုင်သော စကက်ချ်မှတ်စု +- ရွေးချယ်နိုင်သော ထောက်ပံ့ဗီဒီယို +- ဗီဒီယိုလမ်းညွှန် (သင်ခန်းစာအချို့သာ) +- [သင်ခန်းစာမတိုင်မီ အပူအအေး စစ်တမ်း](https://ff-quizzes.netlify.app/en/ml/) - ရေးသားထားသော သင်ခန်းစာ -- project-based သင်ခန်းစာများအတွက် project ကို တည်ဆောက်ရန် လမ်းညွှန်ချက်များ -- knowledge checks +- ပရောဂျက်အခြေပြု သင်ခန်းစာများအတွက် ပရောဂျက်တည်ဆောက်နည်း လမ်းညွှန်ချက်များ +- သိရှိမှုစစ်ဆေးမှုများ - စိန်ခေါ်မှု -- အပိုဆောင်းဖတ်ရှုရန် -- လုပ်ငန်းတာဝန် -- [သင်ခန်းစာပြီးနောက် စစ်ဆေးမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/) - -> **ဘာသာစကားများအကြောင်း မှတ်ချက်**: ဤသင်ခန်းစာများကို အဓိကအားဖြင့် Python ဖြင့် ရေးသားထားသော်လည်း၊ အချို့သည် R ဖြင့်လည်း ရရှိနိုင်ပါသည်။ R သင်ခန်းစာတစ်ခုကို ပြီးစီးရန် `/solution` folder သို့ သွားပြီး R lessons ကို ရှာပါ။ .rmd extension ပါသော ဖိုင်များသည် **R Markdown** ဖိုင်များဖြစ်ပြီး၊ `code chunks` (R သို့မဟုတ် အခြားဘာသာစကားများ) နှင့် `YAML header` (output များကို format ပြုလုပ်ရန် လမ်းညွှန်ချက်များ) ကို `Markdown document` တွင် ပေါင်းစပ်ထားသော ဖိုင်များဖြစ်သည်။ ထို့ကြောင့်၊ ဒေတာသိပ္ပံအတွက် အထူးသင့်လျော်သော authoring framework တစ်ခုအဖြစ် တည်ဆောက်ထားပါသည်။ R Markdown ဖိုင်များကို PDF, HTML, သို့မဟုတ် Word အဖြစ် output ပြုလုပ်နိုင်ပါသည်။ - -> **မေးခွန်းများအကြောင်း မှတ်ချက်**: မေးခွန်းအား -| 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) | ကျောင်းသားများသည် ML မော်ဒယ်များကို တည်ဆောက်ခြင်းနှင့် အသုံးချခြင်းတွင် စဉ်းစားရမည့် တရားမျှတမှုဆိုင်ရာ အရေးကြီးသော အတွေးအခေါ်များက ဘာတွေလဲ? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | စက်လေ့လာမှုအတွက် နည်းလမ်းများ | [Introduction](1-Introduction/README.md) | ML သုတေသနများသည် ML မော်ဒယ်များကို တည်ဆောက်ရန် ဘယ်နည်းလမ်းများကို အသုံးပြုသလဲ? | [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) | ML အတွက် အချက်အလက်များကို မြင်သာစေပြီး သန့်စင်ပါ | [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) | Jane Austen နှင့်အတူ ဘာသာပြန်ခြင်းနှင့် စိတ်ခံစားမှုခွဲခြားခြင်း | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | ဥရောပ၏ ရိုမန်တစ်ဟိုတယ်များ ♥️ | [Natural language processing](6-NLP/README.md) | ဟိုတယ်ပြန်လည်သုံးသပ်ချက်များနှင့် စိတ်ခံစားမှုခွဲခြားခြင်း ၁ | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | ဥရောပ၏ ရိုမန်တစ်ဟိုတယ်များ ♥️ | [Natural language processing](6-NLP/README.md) | ဟိုတယ်ပြန်လည်သုံးသပ်ချက်များနှင့် စိတ်ခံစားမှုခွဲခြားခြင်း ၂ | [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) | Support Vector Regressor ဖြင့် အချိန်စီးရီးခန့်မှန်းခြင်း | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | reinforcement learning အကြောင်းအကျဉ်းချုပ် | [Reinforcement learning](8-Reinforcement/README.md) | Q-Learning ဖြင့် reinforcement learning အကြောင်းအကျဉ်းချုပ် | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Peter ကို ဝံပုလွေမှ ကာကွယ်ပါ! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym | [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 dashboard ဖြင့် ML မော်ဒယ်များကို Debug လုပ်ခြင်း | [ML in the Wild](9-Real-World/README.md) | Responsible AI dashboard components အသုံးပြု၍ စက်လေ့လာမှု မော်ဒယ်များကို Debug လုပ်ခြင်း | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [ဒီသင်တန်းအတွက် အပိုဆောင်းအရင်းအမြစ်များအားလုံးကို Microsoft Learn collection တွင် ရှာဖွေပါ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) - -## အော့ဖ်လိုင်းအသုံးပြုမှု - -ဒီစာရွက်စာတမ်းကို [Docsify](https://docsify.js.org/#/) အသုံးပြု၍ အော့ဖ်လိုင်းတွင် လည်ပတ်နိုင်ပါသည်။ ဒီ repo ကို Fork လုပ်ပြီး [Docsify](https://docsify.js.org/#/quickstart) ကို သင့်ရဲ့ local စက်ပေါ်တွင် install လုပ်ပါ၊ ထို့နောက် ဒီ repo ၏ root folder တွင် `docsify serve` ကို ရိုက်ထည့်ပါ။ ဝက်ဘ်ဆိုက်ကို သင့် localhost ၏ port 3000 တွင် လည်ပတ်ပါမည် - `localhost:3000`။ - -## PDFs - -လင့်ခ်များပါဝင်သော သင်ရိုးညွှန်းတစ်ခု၏ pdf ကို [ဒီမှာ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) ရှာပါ။ +- ထောက်ပံ့စာဖတ်ခြင်း +- တာဝန်ပေးမှု +- [သင်ခန်းစာပြီးနောက် စစ်တမ်း](https://ff-quizzes.netlify.app/en/ml/) + +> **ဘာသာစကားအကြောင်း မှတ်ချက်**: ဤသင်ခန်းစာများသည် အဓိကအားဖြင့် Python ဖြင့် ရေးသားထားသော်လည်း R ဖြင့်လည်း ရရှိနိုင်သည်။ R သင်ခန်းစာတစ်ခု ပြီးမြောက်ရန် `/solution` ဖိုလ်ဒါသို့ သွားပြီး R သင်ခန်းစာများကို ရှာဖွေပါ။ ၎င်းတို့တွင် .rmd တိုးချဲ့မှုရှိပြီး၊ ၎င်းသည် **R Markdown** ဖိုင်တစ်ခုဖြစ်သည်။ ၎င်းသည် `code chunks` (R သို့မဟုတ် အခြားဘာသာစကားများ) နှင့် `YAML header` (PDF ကဲ့သို့သော output များကို ဖော်ပြရန် လမ်းညွှန်ချက်) ကို Markdown စာရွက်စာတမ်းထဲတွင် ထည့်သွင်းထားခြင်းဖြစ်သည်။ ထို့ကြောင့် သင်၏ကုဒ်၊ ၎င်း၏ output နှင့် သင်၏စိတ်ကူးများကို Markdown ဖြင့် ရေးသားနိုင်စေသော ဒေတာသိပ္ပံအတွက် ဥပမာဆန်သော စာရေးဆွဲမှု ဖွဲ့စည်းမှုတစ်ခုအဖြစ် အသုံးပြုနိုင်သည်။ ထို့အပြင် R Markdown စာရွက်စာတမ်းများကို PDF, HTML သို့မဟုတ် Word ကဲ့သို့သော output ပုံစံများသို့ ပြောင်းလဲနိုင်သည်။ + +> **စစ်တမ်းများအကြောင်း မှတ်ချက်**: စစ်တမ်းအားလုံးကို [Quiz App ဖိုလ်ဒါ](../../quiz-app) တွင် ထည့်သွင်းထားပြီး၊ စစ်တမ်း ၅၂ ခုရှိပြီး မေးခွန်းသုံးခုစီပါဝင်သည်။ သင်ခန်းစာများမှ လင့်ခ်ထားသော်လည်း quiz app ကို ဒေသတွင်းတွင် ပြေးနိုင်သည်။ ဒေသတွင်း host သို့မဟုတ် Azure သို့ တင်ရန် `quiz-app` ဖိုလ်ဒါအတွင်း လမ်းညွှန်ချက်ကို လိုက်နာပါ။ + +| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 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) | Jane Austen နှင့်အတူ ဘာသာပြန်ခြင်းနှင့်ခံစားချက်ခွဲခြမ်းစိတ်ဖြာခြင်း | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | ဥရောပရဲ့ ရည်းစားဆိုင်ဟိုတယ်များ ♥️ | [Natural language processing](6-NLP/README.md) | ဟိုတယ်သုံးသပ်ချက်များဖြင့်ခံစားချက်ခွဲခြမ်းစိတ်ဖြာခြင်း ၁ | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | ဥရောပရဲ့ ရည်းစားဆိုင်ဟိုတယ်များ ♥️ | [Natural language processing](6-NLP/README.md) | ဟိုတယ်သုံးသပ်ချက်များဖြင့်ခံစားချက်ခွဲခြမ်းစိတ်ဖြာခြင်း ၂ | [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) | Support Vector Regressor ဖြင့် အချိန်စီးရီးခန့်မှန်းခြင်း | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | အားပေးသင်ယူမှုအတွက်နိဒါန်း | [Reinforcement learning](8-Reinforcement/README.md) | Q-Learning ဖြင့် အားပေးသင်ယူမှုအတွက်နိဒါန်း | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Peter ကိုကျားကလေးမှကာကွယ်ပါ! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | အားပေးသင်ယူမှု Gym | [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 dashboard ကို အသုံးပြု၍ ML မော်ဒယ်များကို ပြင်ဆင်ခြင်း | [ML in the Wild](9-Real-World/README.md) | တာဝန်ရှိသော AI dashboard အစိတ်အပိုင်းများကို အသုံးပြု၍ စက်မှုသင်ယူမှု မော်ဒယ်များ ပြင်ဆင်ခြင်း | [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/#/) ကို အသုံးပြု၍ ဤစာတမ်းကို အော့ဖ်လိုင်းတွင် လည်ပတ်နိုင်သည်။ ဤ repo ကို fork လုပ်ပြီး၊ သင့်ဒေသတွင် [Docsify ကို 설치](https://docsify.js.org/#/quickstart) ပြုလုပ်ပါ၊ ထို့နောက် ဤ repo ၏ root ဖိုလ်ဒါတွင် `docsify serve` ဟုရိုက်ထည့်ပါ။ ဝက်ဘ်ဆိုက်ကို သင့် localhost တွင် port 3000 ဖြင့် ဝန်ဆောင်မှုပေးမည်ဖြစ်သည်။ `localhost:3000`။ + +## PDF များ + +လင့်ခ်များပါသော သင်ရိုးညွှန်းတမ်း PDF ကို [ဤနေရာတွင်](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) ရှာဖွေပါ။ + ## 🎒 အခြားသင်တန်းများ -ကျွန်ုပ်တို့၏အဖွဲ့သည် အခြားသင်တန်းများကိုလည်း ထုတ်လုပ်ပါသည်! စစ်ဆေးပါ: +ကျွန်ုပ်တို့အဖွဲ့သည် အခြားသင်တန်းများကို ထုတ်လုပ်ပါသည်! စစ်ဆေးကြည့်ပါ: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -167,7 +178,7 @@ Project များနှင့် ကိုက်ညီစေရန် အက [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### Generative AI Series [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) @@ -175,37 +186,37 @@ Project များနှင့် ကိုက်ညီစေရန် အက [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - -### Core Learning -[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +### အခြေခံသင်ယူမှု +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Copilot Series -[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + +### Copilot စီးရီးများ +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) -## အကူအညီရယူခြင်း +## အကူအညီရယူခြင်း -AI အက်ပ်များတည်ဆောက်ရာတွင် အခက်အခဲရှိပါက သို့မဟုတ် မေးခွန်းများရှိပါက MCP အကြောင်း ဆွေးနွေးရန် သင်တန်းသားများနှင့် အတွေ့အကြုံရှိသော developer များနှင့် ပူးပေါင်းပါ။ မေးခွန်းများကို ကြိုဆိုပြီး အသိပညာများကို လွတ်လပ်စွာမျှဝေသော ပံ့ပိုးမှုရှိသော community ဖြစ်ပါသည်။ +AI အက်ပ်များ တည်ဆောက်ရာတွင် အခက်အခဲများရှိပါက သို့မဟုတ် မေးခွန်းများရှိပါက MCP တွင် သင်ယူနေသူများနှင့် အတွေ့အကြုံရှိ ဖွံ့ဖြိုးသူများနှင့် ဆွေးနွေးပွဲများတွင် ပါဝင်ဆွေးနွေးနိုင်ပါသည်။ ၎င်းသည် မေးခွန်းများကို ကြိုဆိုပြီး အသိပညာများကို လွတ်လပ်စွာ မျှဝေသော ပံ့ပိုးမှုရှိသော အသိုင်းအဝိုင်းတစ်ခုဖြစ်သည်။ -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -ထုတ်ကုန်အကြံပြုချက်များ သို့မဟုတ် တည်ဆောက်ရာတွင် အမှားများရှိပါက အောက်ပါနေရာသို့ သွားပါ- +ထုတ်ကုန်တုံ့ပြန်ချက်များ သို့မဟုတ် အမှားများရှိပါက ဖွံ့ဖြိုးတည်ဆောက်ရာတွင် အောက်ပါနေရာသို့ သွားရောက်ကြည့်ရှုနိုင်ပါသည်- -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**အကြောင်းကြားချက်**: -ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များကို အသုံးပြုရန် အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအမှားများ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ +**အကြောင်းကြားချက်** +ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ဖြင့် ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် မေတ္တာရပ်ခံအပ်ပါသည်။ မူရင်းစာတမ်းကို မိမိဘာသာစကားဖြင့်သာ တရားဝင်အရင်းအမြစ်အဖြစ် သတ်မှတ်စဉ်းစားသင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ပညာရှင်များ၏ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုရာမှ ဖြစ်ပေါ်လာနိုင်သည့် နားလည်မှုမှားယွင်းမှုများ သို့မဟုတ် မှားဖတ်မှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/ne/README.md b/translations/ne/README.md index eaba18884..086c91b9a 100644 --- a/translations/ne/README.md +++ b/translations/ne/README.md @@ -1,8 +1,8 @@ -[अरबी](../ar/README.md) | [बंगाली](../bn/README.md) | [बुल्गेरियन](../bg/README.md) | [बर्मेली (म्यानमार)](../my/README.md) | [चिनियाँ (सरलीकृत)](../zh/README.md) | [चिनियाँ (पारम्परिक, हङकङ)](../hk/README.md) | [चिनियाँ (पारम्परिक, मकाउ)](../mo/README.md) | [चिनियाँ (पारम्परिक, ताइवान)](../tw/README.md) | [क्रोएसियन](../hr/README.md) | [चेक](../cs/README.md) | [डेनिश](../da/README.md) | [डच](../nl/README.md) | [एस्टोनियन](../et/README.md) | [फिनिश](../fi/README.md) | [फ्रान्सेली](../fr/README.md) | [जर्मन](../de/README.md) | [ग्रीक](../el/README.md) | [हिब्रू](../he/README.md) | [हिन्दी](../hi/README.md) | [हंगेरीयन](../hu/README.md) | [इन्डोनेसियन](../id/README.md) | [इटालियन](../it/README.md) | [जापानी](../ja/README.md) | [कोरियन](../ko/README.md) | [लिथुआनियन](../lt/README.md) | [मलय](../ms/README.md) | [मराठी](../mr/README.md) | [नेपाली](./README.md) | [नाइजेरियन पिड्जिन](../pcm/README.md) | [नर्वेजियन](../no/README.md) | [फारसी (फारसी)](../fa/README.md) | [पोलिश](../pl/README.md) | [पोर्चुगिज (ब्राजिल)](../br/README.md) | [पोर्चुगिज (पोर्चुगल)](../pt/README.md) | [पञ्जाबी (गुरमुखी)](../pa/README.md) | [रोमानियन](../ro/README.md) | [रुसी](../ru/README.md) | [सर्बियन (सिरिलिक)](../sr/README.md) | [स्लोभाक](../sk/README.md) | [स्लोभेनियन](../sl/README.md) | [स्पेनिश](../es/README.md) | [स्वाहिली](../sw/README.md) | [स्विडिश](../sv/README.md) | [टागालोग (फिलिपिनो)](../tl/README.md) | [तमिल](../ta/README.md) | [थाई](../th/README.md) | [टर्किश](../tr/README.md) | [युक्रेनीयन](../uk/README.md) | [उर्दु](../ur/README.md) | [भियतनामी](../vi/README.md) +[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](./README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) #### हाम्रो समुदायमा सामेल हुनुहोस् [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -हामीसँग AI सिक्ने शृंखला चलिरहेको छ, थप जान्न र हामीसँग सामेल हुन [AI सिक्ने शृंखला](https://aka.ms/learnwithai/discord) मा १८ - ३० सेप्टेम्बर, २०२५ सम्म। तपाईंले डेटा साइन्सका लागि GitHub Copilot प्रयोग गर्ने टिप्स र ट्रिक्स पाउनुहुनेछ। +हामीसँग Discord मा AI सँग सिक्ने श्रृंखला चलिरहेको छ, थप जान्न र हामीसँग सामेल हुन [Learn with AI Series](https://aka.ms/learnwithai/discord) मा १८ - ३० सेप्टेम्बर, २०२५ सम्म। तपाईंले GitHub Copilot लाई Data Science का लागि प्रयोग गर्ने टिप्स र ट्रिक्स पाउनुहुनेछ। -![AI सिक्ने शृंखला](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ne.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ne.png) -# सुरुवातकर्ताहरूका लागि मेसिन लर्निङ - एक पाठ्यक्रम +# शुरुवातकर्ताहरूका लागि मेशिन लर्निङ - एक पाठ्यक्रम -> 🌍 विश्व संस्कृतिहरूको माध्यमबाट मेसिन लर्निङ अन्वेषण गर्दा विश्वभर यात्रा गर्नुहोस् 🌍 +> 🌍 विश्वका संस्कृतिहरू मार्फत मेशिन लर्निङ अन्वेषण गर्दै विश्व भ्रमण गरौं 🌍 -Microsoft का Cloud Advocates ले **मेसिन लर्निङ** सम्बन्धी १२ हप्ताको, २६ पाठहरूको पाठ्यक्रम प्रदान गर्न पाउँदा खुशी छन्। यस पाठ्यक्रममा, तपाईंले कहिलेकाहीं **क्लासिक मेसिन लर्निङ** भनिने विषयबारे सिक्नुहुनेछ, मुख्य रूपमा Scikit-learn लाई पुस्तकालयको रूपमा प्रयोग गर्दै र गहिरो सिकाइलाई टाढा राख्दै, जुन हाम्रो [सुरुवातकर्ताहरूका लागि AI पाठ्यक्रम](https://aka.ms/ai4beginners) मा समेटिएको छ। यी पाठहरूलाई हाम्रो ['सुरुवातकर्ताहरूका लागि डेटा साइन्स पाठ्यक्रम'](https://aka.ms/ds4beginners) सँग पनि जोड्नुहोस्! +Microsoft का Cloud Advocates ले १२ हप्ता, २६ पाठहरूको पाठ्यक्रम प्रदान गर्न पाउँदा खुशी छौं जुन **मेशिन लर्निङ** सम्बन्धी छ। यस पाठ्यक्रममा, तपाईंले कहिलेकाहीं भनिने **क्लासिक मेशिन लर्निङ** बारे सिक्नुहुनेछ, मुख्य रूपमा Scikit-learn लाई पुस्तकालयको रूपमा प्रयोग गर्दै र गहिरो सिकाइबाट बच्दै, जुन हाम्रो [AI for Beginners' curriculum](https://aka.ms/ai4beginners) मा समेटिएको छ। यी पाठहरूलाई हाम्रो ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) सँग पनि जोड्न सकिन्छ। -हामीसँग विश्वभर यात्रा गर्नुहोस् जब हामी यी क्लासिक प्रविधिहरूलाई विश्वका विभिन्न क्षेत्रहरूबाट डेटा लागू गर्छौं। प्रत्येक पाठमा पाठ अघि र पछि क्विजहरू, पाठ पूरा गर्नका लागि लिखित निर्देशनहरू, समाधान, असाइनमेन्ट, र थप समावेश छन्। हाम्रो परियोजना-आधारित शिक्षण विधिले तपाईंलाई निर्माण गर्दा सिक्न अनुमति दिन्छ, नयाँ सीपहरू 'टिक्न' को लागि प्रमाणित तरिका। +हामीसँग विश्वभरि यात्रा गर्दै यी क्लासिक प्रविधिहरूलाई विश्वका विभिन्न क्षेत्रका डाटामा लागू गरौं। प्रत्येक पाठमा पूर्व र पश्चात क्विजहरू, पाठ पूरा गर्न लेखिएका निर्देशनहरू, समाधान, असाइनमेन्ट, र थप समावेश छन्। हाम्रो परियोजना-आधारित शिक्षण विधिले तपाईंलाई सिक्दै निर्माण गर्न अनुमति दिन्छ, जुन नयाँ सीपहरूलाई 'टिकाउन' प्रमाणित तरिका हो। -**✍️ हाम्रो लेखकहरूलाई हार्दिक धन्यवाद** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu र Amy Boyd +**✍️ हाम्रा लेखकहरूलाई हार्दिक धन्यवाद** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu र Amy Boyd -**🎨 हाम्रो चित्रकारहरूलाई पनि धन्यवाद** Tomomi Imura, Dasani Madipalli, र Jen Looper +**🎨 हाम्रा चित्रकारहरूलाई पनि धन्यवाद** Tomomi Imura, Dasani Madipalli, र Jen Looper -**🙏 विशेष धन्यवाद 🙏 हाम्रो Microsoft Student Ambassador लेखकहरू, समीक्षकहरू, र सामग्री योगदानकर्ताहरूलाई**, विशेष गरी Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, र Snigdha Agarwal +**🙏 विशेष धन्यवाद 🙏 हाम्रा Microsoft Student Ambassador लेखकहरू, समीक्षकहरू, र सामग्री योगदानकर्ताहरूलाई**, विशेष गरी Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, र Snigdha Agarwal -**🤩 अतिरिक्त आभार Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, र Vidushi Gupta लाई हाम्रो R पाठहरूको लागि!** +**🤩 Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, र Vidushi Gupta लाई हाम्रो R पाठहरूको लागि अतिरिक्त कृतज्ञता!** -# सुरु गर्दै +# सुरु गर्ने तरिका यी चरणहरू पालना गर्नुहोस्: -1. **रिपोजिटरीलाई Fork गर्नुहोस्**: यस पृष्ठको माथि-दायाँ कुनामा रहेको "Fork" बटनमा क्लिक गर्नुहोस्। -2. **रिपोजिटरीलाई Clone गर्नुहोस्**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +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) +> [यस कोर्सका लागि सबै अतिरिक्त स्रोतहरू हाम्रो Microsoft Learn संग्रहमा फेला पार्नुहोस्](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **मद्दत चाहिन्छ?** हाम्रो [समस्या समाधान मार्गदर्शिका](TROUBLESHOOTING.md) हेर्नुहोस् स्थापना, सेटअप, र पाठहरू चलाउने सामान्य समस्याहरूको समाधानका लागि। +> 🔧 **मद्दत चाहिन्छ?** सामान्य समस्या समाधानका लागि हाम्रो [Troubleshooting Guide](TROUBLESHOOTING.md) जाँच गर्नुहोस्। -**[विद्यार्थीहरू](https://aka.ms/student-page)**, यस पाठ्यक्रमलाई प्रयोग गर्न, सम्पूर्ण रिपोजिटरीलाई आफ्नो GitHub खातामा Fork गर्नुहोस् र अभ्यासहरू आफैं वा समूहसँग पूरा गर्नुहोस्: +**[विद्यार्थीहरू](https://aka.ms/student-page)**, यो पाठ्यक्रम प्रयोग गर्न, सम्पूर्ण रिपोजिटरीलाई आफ्नो GitHub खातामा फोर्क गर्नुहोस् र अभ्यासहरू आफैं वा समूहसँग पूरा गर्नुहोस्: -- पाठ अघि क्विजबाट सुरु गर्नुहोस्। -- पाठ पढ्नुहोस् र गतिविधिहरू पूरा गर्नुहोस्, प्रत्येक ज्ञान जाँचमा रोक्दै र विचार गर्दै। -- पाठहरू बुझेर परियोजनाहरू सिर्जना गर्न प्रयास गर्नुहोस् समाधान कोड चलाउनुभन्दा; यद्यपि त्यो कोड प्रत्येक परियोजना-उन्मुख पाठको `/solution` फोल्डरहरूमा उपलब्ध छ। -- पाठ पछि क्विज लिनुहोस्। +- पूर्व-व्याख्यान क्विजबाट सुरु गर्नुहोस्। +- व्याख्यान पढ्नुहोस् र गतिविधिहरू पूरा गर्नुहोस्, प्रत्येक ज्ञान जाँचमा रोकिएर विचार गर्नुहोस्। +- समाधान कोड चलाउनुभन्दा पाठहरू बुझेर परियोजनाहरू सिर्जना गर्ने प्रयास गर्नुहोस्; यद्यपि त्यो कोड प्रत्येक परियोजना-केन्द्रित पाठको `/solution` फोल्डरमा उपलब्ध छ। +- पश्चात-व्याख्यान क्विज लिनुहोस्। - चुनौती पूरा गर्नुहोस्। - असाइनमेन्ट पूरा गर्नुहोस्। -- पाठ समूह पूरा गरेपछि, [चर्चा बोर्ड](https://github.com/microsoft/ML-For-Beginners/discussions) मा जानुहोस् र "ठूलो स्वरमा सिक्नुहोस्" उपयुक्त PAT रुब्रिक भरेर। 'PAT' प्रगति मूल्यांकन उपकरण हो जुन तपाईंले आफ्नो सिकाइलाई अगाडि बढाउन रुब्रिक भर्नुहुन्छ। हामी सँगै सिक्न सकौं भनेर तपाईं अन्य PATs मा प्रतिक्रिया दिन पनि सक्नुहुन्छ। +- पाठ समूह पूरा गरेपछि, [चर्चा बोर्ड](https://github.com/microsoft/ML-For-Beginners/discussions) मा जानुहोस् र उपयुक्त PAT रुब्रिक भरेर "आवाजमा सिक्नुहोस्"। 'PAT' भनेको प्रगति मूल्याङ्कन उपकरण हो जुन तपाईंले आफ्नो सिकाइलाई अगाडि बढाउन भर्नुहुन्छ। तपाईंले अन्य PAT हरूमा प्रतिक्रिया पनि दिन सक्नुहुन्छ ताकि हामी सँगै सिक्न सकौं। -> थप अध्ययनका लागि, हामी यी [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) मोड्युलहरू र सिकाइ मार्गहरू पालना गर्न सिफारिस गर्छौं। +> थप अध्ययनका लागि, यी [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) मोड्युलहरू र सिकाइ मार्गहरू अनुसरण गर्न सिफारिस गरिन्छ। -**शिक्षकहरू**, हामीले [केही सुझावहरू समावेश गरेका छौं](for-teachers.md) यस पाठ्यक्रमलाई कसरी प्रयोग गर्ने। +**शिक्षकहरू**, हामीले [केही सुझावहरू](for-teachers.md) समावेश गरेका छौं कि कसरी यो पाठ्यक्रम प्रयोग गर्ने। --- -## भिडियो वाकथ्रूहरू +## भिडियो मार्गदर्शनहरू -केही पाठहरू छोटो रूप भिडियोको रूपमा उपलब्ध छन्। तपाईं यी सबै पाठहरूमा इन-लाइन फेला पार्न सक्नुहुन्छ, वा [Microsoft Developer YouTube च्यानलमा ML for Beginners प्लेलिस्ट](https://aka.ms/ml-beginners-videos) मा क्लिक गरेर तलको छवि हेर्न सक्नुहुन्छ। +केही पाठहरू छोटो भिडियोको रूपमा उपलब्ध छन्। तपाईं यी सबैलाई पाठहरू भित्रै वा [Microsoft Developer YouTube च्यानलमा ML for Beginners प्लेलिस्ट](https://aka.ms/ml-beginners-videos) मा तलको छविमा क्लिक गरेर पाउन सक्नुहुन्छ। -[![सुरुवातकर्ताहरूका लागि ML ब्यानर](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ne.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ne.png)](https://aka.ms/ml-beginners-videos) --- -## टोलीलाई भेट्नुहोस् +## टोलीसँग भेट्नुहोस् -[![प्रोमो भिडियो](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **Gif द्वारा** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 माथिको छविमा क्लिक गर्नुहोस् परियोजना र यसलाई सिर्जना गर्ने व्यक्तिहरूको बारेमा भिडियोका लागि! +> 🎥 माथिको छविमा क्लिक गरेर परियोजना र यसलाई सिर्जना गर्ने व्यक्तिहरूको बारेमा भिडियो हेर्नुहोस्! --- ## शिक्षण विधि -हामीले यो पाठ्यक्रम निर्माण गर्दा दुई शिक्षण सिद्धान्तहरू रोजेका छौं: सुनिश्चित गर्नु कि यो **परियोजना-आधारित** हो र यसमा **बारम्बार क्विजहरू** समावेश छन्। यसबाहेक, यो पाठ्यक्रममा एक सामान्य **थिम** छ जसले यसलाई एकता दिन्छ। +हामीले यो पाठ्यक्रम निर्माण गर्दा दुई शिक्षण सिद्धान्तहरू छनोट गरेका छौं: यो हातमा काम गर्ने **परियोजना-आधारित** हुनुपर्छ र यसमा **बारम्बार क्विजहरू** समावेश हुनुपर्छ। थप रूपमा, यस पाठ्यक्रममा एक साझा **थीम** छ जसले यसलाई एकरूपता दिन्छ। -सामग्री परियोजनाहरूसँग मेल खाने सुनिश्चित गरेर, प्रक्रिया विद्यार्थीहरूका लागि थप आकर्षक बनाइन्छ र अवधारणाहरूको प्रतिधारण बढाइन्छ। यसबाहेक, कक्षाको अघि कम-जोखिमको क्विजले विद्यार्थीलाई विषय सिक्नको लागि उद्देश्य सेट गर्दछ, जबकि कक्षापछि दोस्रो क्विजले थप प्रतिधारण सुनिश्चित गर्दछ। यो पाठ्यक्रम लचिलो र रमाइलो बनाउन डिजाइन गरिएको थियो र पूर्ण वा आंशिक रूपमा लिन सकिन्छ। परियोजनाहरू साना सुरु हुन्छन् र १२ हप्ताको चक्रको अन्त्यसम्ममा क्रमशः जटिल बन्छन्। यो पाठ्यक्रममा ML को वास्तविक-विश्व अनुप्रयोगहरूमा एक पोस्टस्क्रिप्ट पनि समावेश छ, जसलाई अतिरिक्त क्रेडिटको रूपमा वा छलफलको आधारको रूपमा प्रयोग गर्न सकिन्छ। +सामग्री परियोजनासँग मेल खाने सुनिश्चित गरेर, प्रक्रिया विद्यार्थीहरूका लागि अझ आकर्षक हुन्छ र अवधारणाहरूको सम्झना बढ्छ। थप रूपमा, कक्षाको अघि कम जोखिमको क्विजले विद्यार्थीलाई विषय सिक्न प्रेरित गर्छ, र कक्षापछि दोस्रो क्विजले थप सम्झना सुनिश्चित गर्छ। यो पाठ्यक्रम लचिलो र रमाइलो बनाउन डिजाइन गरिएको छ र पूर्ण वा आंशिक रूपमा लिन सकिन्छ। परियोजनाहरू साना बाट सुरु भएर १२ हप्ताको अन्त्यसम्म क्रमशः जटिल हुन्छन्। यस पाठ्यक्रममा ML का वास्तविक विश्व प्रयोगहरूमा पोस्टस्क्रिप्ट पनि समावेश छ, जुन अतिरिक्त क्रेडिट वा छलफलको आधारको रूपमा प्रयोग गर्न सकिन्छ। -> हाम्रो [आचार संहिता](CODE_OF_CONDUCT.md), [योगदान](CONTRIBUTING.md), [अनुवाद](TRANSLATIONS.md), र [समस्या समाधान](TROUBLESHOOTING.md) दिशानिर्देशहरू फेला पार्नुहोस्। हामी तपाईंको रचनात्मक प्रतिक्रिया स्वागत गर्दछौं! +> हाम्रो [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/) +- लेखिएको पाठ +- परियोजना-आधारित पाठहरूको लागि, परियोजना कसरी बनाउने चरण-द्वारा-चरण मार्गदर्शन +- ज्ञान जाँचहरू +- चुनौती - पूरक पढाइ - असाइनमेन्ट -- [पाठ पछि क्विज](https://ff-quizzes.netlify.app/en/ml/) +- [पश्चात-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/) -> **भाषाहरूको बारेमा नोट**: यी पाठहरू मुख्य रूपमा Python मा लेखिएका छन्, तर धेरै R मा पनि उपलब्ध छन्। R पाठ पूरा गर्न, `/solution` फोल्डरमा जानुहोस् र R पाठहरू खोज्नुहोस्। तिनीहरूमा .rmd एक्सटेन्सन समावेश छ जसले **R Markdown** फाइललाई प्रतिनिधित्व गर्दछ जुन `Markdown दस्तावेज` मा `कोड चंक्स` (R वा अन्य भाषाहरूको) र `YAML हेडर` (जसले PDF जस्ता आउटपुटहरूलाई कसरी ढाँचा बनाउने भनेर मार्गदर्शन गर्दछ) को एम्बेडिङको रूपमा सरल रूपमा परिभाषित गर्न सकिन्छ। यसरी, यो डेटा साइन्सको लागि एक उदाहरणीय लेखन फ्रेमवर्कको रूपमा सेवा गर्दछ किनभने यसले तपाईंलाई आफ्नो कोड, यसको आउटपुट, र तपाईंको विचारहरूलाई Markdown मा लेख्न अनुमति दिन्छ। यसबाहेक, R Markdown दस्तावेजहरू PDF, HTML, वा Word जस्ता आउटपुट ढाँचाहरूमा प्रस्तुत गर्न सकिन्छ। +> **भाषाहरूको बारेमा नोट**: यी पाठहरू मुख्य रूपमा Python मा लेखिएका छन्, तर धेरै R मा पनि उपलब्ध छन्। R पाठ पूरा गर्न, `/solution` फोल्डरमा जानुहोस् र R पाठहरू खोज्नुहोस्। तिनीहरूमा .rmd एक्सटेन्सन हुन्छ जुन **R Markdown** फाइल हो, जसलाई सरल रूपमा `code chunks` (R वा अन्य भाषाहरूका) र `YAML header` (जसले PDF जस्ता आउटपुटहरू कसरी ढाँचाबद्ध गर्ने निर्देशन दिन्छ) को संयोजन भएको `Markdown दस्तावेज` भनेर परिभाषित गर्न सकिन्छ। यसले तपाईंलाई कोड, यसको आउटपुट, र तपाईंका विचारहरू Markdown मा लेख्न अनुमति दिँदै डेटा विज्ञानका लागि उत्कृष्ट लेखक ढाँचा प्रदान गर्दछ। थप रूपमा, R Markdown दस्तावेजहरू PDF, HTML, वा Word जस्ता आउटपुट ढाँचाहरूमा रूपान्तरण गर्न सकिन्छ। -> **क्विजहरूको बारेमा नोट**: सबै क्विजहरू [Quiz App फोल्डर](../../quiz-app) मा समावेश छन्, कुल ५२ क्विजहरू तीन प्रश्नहरू प्रत्येक। तिनीहरू पाठहरू भित्रबाट लिंक गरिएका छन् तर क्विज एपलाई स्थानीय रूपमा चलाउन सकिन्छ; `quiz-app` फोल्डरमा निर्देशनहरू पालना गरेर स्थानीय रूपमा होस्ट गर्नुहोस् वा Azure मा तैनात गर्नुहोस्। +> **क्विजहरूको बारेमा नोट**: सबै क्विजहरू [Quiz App फोल्डर](../../quiz-app) मा छन्, कुल ५२ क्विजहरू तीन प्रश्नहरू सहित। ती पाठहरूबाट लिंक गरिएका छन् तर क्विज एप स्थानीय रूपमा चलाउन सकिन्छ; स्थानीय रूपमा होस्ट गर्न वा Azure मा डिप्लोय गर्न `quiz-app` फोल्डरमा निर्देशनहरू पालना गर्नुहोस्। -| पाठ संख्या | विषय | पाठ समूह | सिक्ने उद्देश्य | लिंक गरिएको पाठ | लेखक | +| पाठ संख्या | विषय | पाठ समूह | सिकाइ उद्देश्यहरू | लिंक गरिएको पाठ | लेखक | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | मेसिन लर्निङको परिचय | [Introduction](1-Introduction/README.md) | मेसिन लर्निङको आधारभूत अवधारणाहरू सिक्नुहोस् | [Lesson](1-Introduction/1-intro-to-ML/README.md) | मुहम्मद | -| 02 | मेसिन लर्निङको इतिहास | [Introduction](1-Introduction/README.md) | यस क्षेत्रको इतिहासबारे जान्नुहोस् | [Lesson](1-Introduction/2-history-of-ML/README.md) | जेन र एमी | -| 03 | निष्पक्षता र मेसिन लर्निङ | [Introduction](1-Introduction/README.md) | निष्पक्षतासँग सम्बन्धित महत्त्वपूर्ण दार्शनिक मुद्दाहरू के हुन् जुन विद्यार्थीहरूले ML मोडेल निर्माण र प्रयोग गर्दा विचार गर्नुपर्छ? | [Lesson](1-Introduction/3-fairness/README.md) | तोमोमी | -| 04 | मेसिन लर्निङका प्रविधिहरू | [Introduction](1-Introduction/README.md) | ML अनुसन्धानकर्ताहरूले ML मोडेल निर्माण गर्न कुन प्रविधिहरू प्रयोग गर्छन्? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | क्रिस र जेन | -| 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) | जेन • एरिक वान्जाउ | -| 06 | उत्तर अमेरिकी कद्दूको मूल्य 🎃 | [Regression](2-Regression/README.md) | ML को तयारीको लागि डेटा भिजुअलाइज र सफा गर्नुहोस् | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | जेन • एरिक वान्जाउ | -| 07 | उत्तर अमेरिकी कद्दूको मूल्य 🎃 | [Regression](2-Regression/README.md) | रेखीय र बहुपद रिग्रेसन मोडेलहरू निर्माण गर्नुहोस् | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | जेन र दिमित्री • एरिक वान्जाउ | -| 08 | उत्तर अमेरिकी कद्दूको मूल्य 🎃 | [Regression](2-Regression/README.md) | एक लजिस्टिक रिग्रेसन मोडेल निर्माण गर्नुहोस् | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | जेन • एरिक वान्जाउ | -| 09 | वेब एप्लिकेसन 🔌 | [Web App](3-Web-App/README.md) | तपाईंको प्रशिक्षित मोडेल प्रयोग गर्न वेब एप्लिकेसन निर्माण गर्नुहोस् | [Python](3-Web-App/1-Web-App/README.md) | जेन | -| 10 | वर्गीकरणको परिचय | [Classification](4-Classification/README.md) | तपाईंको डेटा सफा गर्नुहोस्, तयारी गर्नुहोस्, र भिजुअलाइज गर्नुहोस्; वर्गीकरणको परिचय | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | जेन र क्यासी • एरिक वान्जाउ | -| 11 | स्वादिष्ट एशियाली र भारतीय परिकार 🍜 | [Classification](4-Classification/README.md) | वर्गीकरणकर्ताहरूको परिचय | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | जेन र क्यासी • एरिक वान्जाउ | -| 12 | स्वादिष्ट एशियाली र भारतीय परिकार 🍜 | [Classification](4-Classification/README.md) | थप वर्गीकरणकर्ताहरू | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | जेन र क्यासी • एरिक वान्जाउ | -| 13 | स्वादिष्ट एशियाली र भारतीय परिकार 🍜 | [Classification](4-Classification/README.md) | तपाईंको मोडेल प्रयोग गरेर सिफारिस गर्ने वेब एप्लिकेसन निर्माण गर्नुहोस् | [Python](4-Classification/4-Applied/README.md) | जेन | -| 14 | क्लस्टरिङको परिचय | [Clustering](5-Clustering/README.md) | तपाईंको डेटा सफा गर्नुहोस्, तयारी गर्नुहोस्, र भिजुअलाइज गर्नुहोस्; क्लस्टरिङको परिचय | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | जेन • एरिक वान्जाउ | -| 15 | नाइजेरियाली संगीत स्वादहरूको अन्वेषण 🎧 | [Clustering](5-Clustering/README.md) | K-Means क्लस्टरिङ विधिको अन्वेषण गर्नुहोस् | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | जेन • एरिक वान्जाउ | -| 16 | प्राकृतिक भाषा प्रशोधनको परिचय ☕️ | [Natural language processing](6-NLP/README.md) | NLP को आधारभूत कुरा सिक्नुहोस् र एउटा साधारण बोट निर्माण गर्नुहोस् | [Python](6-NLP/1-Introduction-to-NLP/README.md) | स्टेफन | -| 17 | सामान्य NLP कार्यहरू ☕️ | [Natural language processing](6-NLP/README.md) | भाषाको संरचनासँग काम गर्दा आवश्यक सामान्य कार्यहरू बुझेर तपाईंको NLP ज्ञानलाई गहिरो बनाउनुहोस् | [Python](6-NLP/2-Tasks/README.md) | स्टेफन | -| 18 | अनुवाद र भावना विश्लेषण ♥️ | [Natural language processing](6-NLP/README.md) | जेन अस्टिनसँग अनुवाद र भावना विश्लेषण | [Python](6-NLP/3-Translation-Sentiment/README.md) | स्टेफन | -| 19 | युरोपका रोमान्टिक होटलहरू ♥️ | [Natural language processing](6-NLP/README.md) | होटल समीक्षाहरूको भावना विश्लेषण 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | स्टेफन | -| 20 | युरोपका रोमान्टिक होटलहरू ♥️ | [Natural language processing](6-NLP/README.md) | होटल समीक्षाहरूको भावना विश्लेषण 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | स्टेफन | -| 21 | समय श्रृंखला पूर्वानुमानको परिचय | [Time series](7-TimeSeries/README.md) | समय श्रृंखला पूर्वानुमानको परिचय | [Python](7-TimeSeries/1-Introduction/README.md) | फ्रान्सेस्का | -| 22 | ⚡️ विश्व ऊर्जा प्रयोग ⚡️ - ARIMA सँग समय श्रृंखला पूर्वानुमान | [Time series](7-TimeSeries/README.md) | ARIMA सँग समय श्रृंखला पूर्वानुमान | [Python](7-TimeSeries/2-ARIMA/README.md) | फ्रान्सेस्का | -| 23 | ⚡️ विश्व ऊर्जा प्रयोग ⚡️ - SVR सँग समय श्रृंखला पूर्वानुमान | [Time series](7-TimeSeries/README.md) | सपोर्ट भेक्टर रिग्रेसर सँग समय श्रृंखला पूर्वानुमान | [Python](7-TimeSeries/3-SVR/README.md) | अनिर्बान | -| 24 | सुदृढीकरण शिक्षाको परिचय | [Reinforcement learning](8-Reinforcement/README.md) | Q-Learning सँग सुदृढीकरण शिक्षाको परिचय | [Python](8-Reinforcement/1-QLearning/README.md) | दिमित्री | -| 25 | पिटरलाई ब्वाँसोबाट बचाउनुहोस्! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | सुदृढीकरण शिक्षण जिम | [Python](8-Reinforcement/2-Gym/README.md) | दिमित्री | -| Postscript | वास्तविक संसारका ML परिदृश्य र अनुप्रयोग | [ML in the Wild](9-Real-World/README.md) | शास्त्रीय ML का रोचक र खुलासा गर्ने वास्तविक संसारका अनुप्रयोग | [Lesson](9-Real-World/1-Applications/README.md) | टोली | -| Postscript | RAI ड्यासबोर्ड प्रयोग गरेर ML मोडेल डिबगिङ | [ML in the Wild](9-Real-World/README.md) | जिम्मेवार AI ड्यासबोर्ड कम्पोनेन्टहरू प्रयोग गरेर मेसिन लर्निङमा मोडेल डिबगिङ | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | रूथ याकुब | - -> [यस पाठ्यक्रमका सबै अतिरिक्त स्रोतहरू हाम्रो Microsoft Learn संग्रहमा फेला पार्नुहोस्](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 01 | मेसिन लर्निङ्ग परिचय | [Introduction](1-Introduction/README.md) | मेसिन लर्निङ्गका आधारभूत अवधारणाहरू सिक्नुहोस् | [Lesson](1-Introduction/1-intro-to-ML/README.md) | मुहम्मद | +| 02 | मेसिन लर्निङ्गको इतिहास | [Introduction](1-Introduction/README.md) | यस क्षेत्रको इतिहास सिक्नुहोस् | [Lesson](1-Introduction/2-history-of-ML/README.md) | जेन र एमी | +| 03 | निष्पक्षता र मेसिन लर्निङ्ग | [Introduction](1-Introduction/README.md) | मेसिन लर्निङ्ग मोडेलहरू निर्माण र प्रयोग गर्दा विद्यार्थीहरूले विचार गर्नुपर्ने निष्पक्षता सम्बन्धी महत्वपूर्ण दार्शनिक मुद्दाहरू के हुन्? | [Lesson](1-Introduction/3-fairness/README.md) | टोमोमी | +| 04 | मेसिन लर्निङ्गका प्रविधिहरू | [Introduction](1-Introduction/README.md) | मेसिन लर्निङ्ग अनुसन्धानकर्ताहरूले मेसिन लर्निङ्ग मोडेलहरू बनाउन कुन प्रविधिहरू प्रयोग गर्छन्? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | क्रिस र जेन | +| 05 | रिग्रेसन परिचय | [Regression](2-Regression/README.md) | रिग्रेसन मोडेलहरूको लागि पाइथन र स्किकिट-लर्नसँग सुरु गर्नुहोस् | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | जेन • एरिक वान्जाउ | +| 06 | उत्तर अमेरिकी कद्दू मूल्यहरू 🎃 | [Regression](2-Regression/README.md) | मेसिन लर्निङ्गको तयारीका लागि डाटा भिजुअलाइज र सफा गर्नुहोस् | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | जेन • एरिक वान्जाउ | +| 07 | उत्तर अमेरिकी कद्दू मूल्यहरू 🎃 | [Regression](2-Regression/README.md) | रेखीय र बहुपद रिग्रेसन मोडेलहरू बनाउनुहोस् | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | जेन र दिमित्री • एरिक वान्जाउ | +| 08 | उत्तर अमेरिकी कद्दू मूल्यहरू 🎃 | [Regression](2-Regression/README.md) | लगिस्टिक रिग्रेसन मोडेल बनाउनुहोस् | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | जेन • एरिक वान्जाउ | +| 09 | वेब एप्लिकेसन 🔌 | [Web App](3-Web-App/README.md) | तपाईंले तालिम पाएको मोडेल प्रयोग गर्न वेब एप्लिकेसन बनाउनुहोस् | [Python](3-Web-App/1-Web-App/README.md) | जेन | +| 10 | वर्गीकरण परिचय | [Classification](4-Classification/README.md) | तपाईंको डाटा सफा, तयारी, र भिजुअलाइज गर्नुहोस्; वर्गीकरण परिचय | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | जेन र क्यासी • एरिक वान्जाउ | +| 11 | स्वादिष्ट एसियाली र भारतीय परिकारहरू 🍜 | [Classification](4-Classification/README.md) | वर्गीकरणकर्ताहरूको परिचय | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | जेन र क्यासी • एरिक वान्जाउ | +| 12 | स्वादिष्ट एसियाली र भारतीय परिकारहरू 🍜 | [Classification](4-Classification/README.md) | थप वर्गीकरणकर्ताहरू | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | जेन र क्यासी • एरिक वान्जाउ | +| 13 | स्वादिष्ट एसियाली र भारतीय परिकारहरू 🍜 | [Classification](4-Classification/README.md) | तपाईंको मोडेल प्रयोग गरेर सिफारिस गर्ने वेब एप्लिकेसन बनाउनुहोस् | [Python](4-Classification/4-Applied/README.md) | जेन | +| 14 | क्लस्टरिङ्ग परिचय | [Clustering](5-Clustering/README.md) | तपाईंको डाटा सफा, तयारी, र भिजुअलाइज गर्नुहोस्; क्लस्टरिङ्ग परिचय | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | जेन • एरिक वान्जाउ | +| 15 | नाइजेरियन सङ्गीत स्वादहरू अन्वेषण 🎧 | [Clustering](5-Clustering/README.md) | K-Means क्लस्टरिङ्ग विधि अन्वेषण गर्नुहोस् | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | जेन • एरिक वान्जाउ | +| 16 | प्राकृतिक भाषा प्रशोधन परिचय ☕️ | [Natural language processing](6-NLP/README.md) | सरल बोट बनाएर NLP का आधारहरू सिक्नुहोस् | [Python](6-NLP/1-Introduction-to-NLP/README.md) | स्टेफेन | +| 17 | सामान्य NLP कार्यहरू ☕️ | [Natural language processing](6-NLP/README.md) | भाषा संरचनासँग व्यवहार गर्दा आवश्यक सामान्य कार्यहरू बुझेर तपाईंको NLP ज्ञान गहिरो बनाउनुहोस् | [Python](6-NLP/2-Tasks/README.md) | स्टेफेन | +| 18 | अनुवाद र भावना विश्लेषण ♥️ | [Natural language processing](6-NLP/README.md) | जेन अस्टेनसँग अनुवाद र भावना विश्लेषण | [Python](6-NLP/3-Translation-Sentiment/README.md) | स्टेफेन | +| 19 | युरोपका रोमान्टिक होटलहरू ♥️ | [Natural language processing](6-NLP/README.md) | होटल समीक्षा १ सँग भावना विश्लेषण | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | स्टेफेन | +| 20 | युरोपका रोमान्टिक होटलहरू ♥️ | [Natural language processing](6-NLP/README.md) | होटल समीक्षा २ सँग भावना विश्लेषण | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | स्टेफेन | +| 21 | समय श्रृंखला पूर्वानुमान परिचय | [Time series](7-TimeSeries/README.md) | समय श्रृंखला पूर्वानुमान परिचय | [Python](7-TimeSeries/1-Introduction/README.md) | फ्रान्सेस्का | +| 22 | ⚡️ विश्व शक्ति प्रयोग ⚡️ - ARIMA सँग समय श्रृंखला पूर्वानुमान | [Time series](7-TimeSeries/README.md) | ARIMA सँग समय श्रृंखला पूर्वानुमान | [Python](7-TimeSeries/2-ARIMA/README.md) | फ्रान्सेस्का | +| 23 | ⚡️ विश्व शक्ति प्रयोग ⚡️ - SVR सँग समय श्रृंखला पूर्वानुमान | [Time series](7-TimeSeries/README.md) | Support Vector Regressor सँग समय श्रृंखला पूर्वानुमान | [Python](7-TimeSeries/3-SVR/README.md) | अनिर्बान | +| 24 | सुदृढीकरण सिकाइ परिचय | [Reinforcement learning](8-Reinforcement/README.md) | Q-Learning सँग सुदृढीकरण सिकाइ परिचय | [Python](8-Reinforcement/1-QLearning/README.md) | दिमित्री | +| 25 | पिटरलाई ब्वाँसोबाट बचाउन मद्दत गर्नुहोस्! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | सुदृढीकरण सिकाइ जिम | [Python](8-Reinforcement/2-Gym/README.md) | दिमित्री | +| Postscript | वास्तविक विश्वका मेसिन लर्निङ्ग परिदृश्य र अनुप्रयोगहरू | [ML in the Wild](9-Real-World/README.md) | क्लासिकल मेसिन लर्निङ्गका रोचक र खुलासा गर्ने वास्तविक विश्वका अनुप्रयोगहरू | [Lesson](9-Real-World/1-Applications/README.md) | टोली | +| Postscript | RAI ड्यासबोर्ड प्रयोग गरी मेसिन लर्निङ्गमा मोडेल डिबगिङ्ग | [ML in the Wild](9-Real-World/README.md) | जिम्मेवार AI ड्यासबोर्ड कम्पोनेन्टहरू प्रयोग गरी मेसिन लर्निङ्गमा मोडेल डिबगिङ्ग | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | रुथ याकुबु | + +> [यस कोर्सका लागि सबै अतिरिक्त स्रोतहरू हाम्रो Microsoft Learn संग्रहमा फेला पार्नुहोस्](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## अफलाइन पहुँच -तपाईं [Docsify](https://docsify.js.org/#/) प्रयोग गरेर यो दस्तावेज अफलाइन चलाउन सक्नुहुन्छ। यो रिपोजिटरी फोर्क गर्नुहोस्, तपाईंको स्थानीय मेसिनमा [Docsify स्थापना गर्नुहोस्](https://docsify.js.org/#/quickstart), र त्यसपछि यस रिपोजिटरीको मूल फोल्डरमा `docsify serve` टाइप गर्नुहोस्। वेबसाइट तपाईंको localhost मा पोर्ट 3000 मा सेवा गरिनेछ: `localhost:3000`। +तपाईं [Docsify](https://docsify.js.org/#/) प्रयोग गरेर यो दस्तावेज अफलाइन चलाउन सक्नुहुन्छ। यो रिपो फोर्क गर्नुहोस्, आफ्नो स्थानीय मेसिनमा [Docsify स्थापना गर्नुहोस्](https://docsify.js.org/#/quickstart), र त्यसपछि यस रिपोको मूल फोल्डरमा `docsify serve` टाइप गर्नुहोस्। वेबसाइट तपाईंको लोकलहोस्टमा पोर्ट 3000 मा सेवा हुनेछ: `localhost:3000`। -## PDFs +## PDF हरू लिङ्कसहितको पाठ्यक्रमको PDF [यहाँ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) फेला पार्नुहोस्। -## 🎒 अन्य पाठ्यक्रमहरू -हाम्रो टोलीले अन्य पाठ्यक्रमहरू पनि उत्पादन गर्दछ! हेर्नुहोस्: +## 🎒 अन्य कोर्सहरू -### Azure / Edge / MCP / एजेन्टहरू +हाम्रो टोलीले अन्य कोर्सहरू उत्पादन गर्छ! जाँच गर्नुहोस्: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + +### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) [![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) [![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### जेनेरेटिभ AI श्रृंखला + +### Generative AI Series [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) ---- - -### मुख्य शिक्षण +--- + +### मुख्य सिकाइ [![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) [![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) [![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) @@ -189,8 +197,8 @@ Microsoft का Cloud Advocates ले **मेसिन लर्निङ** [![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Copilot Series + +### कोपाइलट श्रृंखला [![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) [![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) [![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) @@ -198,17 +206,17 @@ Microsoft का Cloud Advocates ले **मेसिन लर्निङ** ## सहयोग प्राप्त गर्नुहोस् -यदि तपाईं समस्यामा पर्नुहुन्छ वा AI एप्स निर्माणको बारेमा कुनै प्रश्न छ भने, अन्य सिक्नेहरू र अनुभवी विकासकर्ताहरूसँग MCP सम्बन्धी छलफलमा सामेल हुनुहोस्। यो सहयोगी समुदाय हो जहाँ प्रश्नहरू स्वागत गरिन्छ र ज्ञान स्वतन्त्र रूपमा साझा गरिन्छ। +यदि तपाईं अड्किनुभयो वा AI एपहरू निर्माण गर्ने बारे कुनै प्रश्न छ भने। MCP सम्बन्धी छलफलहरूमा साथी सिक्नेहरू र अनुभवी विकासकर्ताहरूसँग सामेल हुनुहोस्। यो एक सहयोगी समुदाय हो जहाँ प्रश्नहरू स्वागतयोग्य छन् र ज्ञान स्वतन्त्र रूपमा साझा गरिन्छ। [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -यदि तपाईंलाई उत्पादन सम्बन्धी प्रतिक्रिया दिनु छ वा निर्माणको क्रममा त्रुटिहरू देखिन्छ भने, यहाँ जानुहोस्: +यदि तपाईंलाई उत्पादन प्रतिक्रिया वा निर्माण गर्दा त्रुटिहरू छन् भने भ्रमण गर्नुहोस्: [![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**अस्वीकरण**: -यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुनेछैनौं। +**अस्वीकरण**: +यो दस्तावेज AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी शुद्धताका लागि प्रयासरत छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटि वा अशुद्धता हुन सक्छ। मूल दस्तावेज यसको मूल भाषामा आधिकारिक स्रोत मानिनु पर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार छैनौं। \ No newline at end of file diff --git a/translations/nl/README.md b/translations/nl/README.md index 8dcaf8ea1..ccf6ce3bb 100644 --- a/translations/nl/README.md +++ b/translations/nl/README.md @@ -1,203 +1,213 @@ -[![GitHub licentie](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub bijdragers](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welkom](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub sterren](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Meertalige Ondersteuning +### 🌐 Meertalige Ondersteuning -#### Ondersteund via GitHub Action (Automatisch & Altijd Up-to-Date) +#### Ondersteund via GitHub Action (Geautomatiseerd & Altijd Up-to-Date) -[Arabisch](../ar/README.md) | [Bengaals](../bn/README.md) | [Bulgaars](../bg/README.md) | [Birmaans (Myanmar)](../my/README.md) | [Chinees (Vereenvoudigd)](../zh/README.md) | [Chinees (Traditioneel, Hong Kong)](../hk/README.md) | [Chinees (Traditioneel, Macau)](../mo/README.md) | [Chinees (Traditioneel, Taiwan)](../tw/README.md) | [Kroatisch](../hr/README.md) | [Tsjechisch](../cs/README.md) | [Deens](../da/README.md) | [Nederlands](./README.md) | [Ests](../et/README.md) | [Fins](../fi/README.md) | [Frans](../fr/README.md) | [Duits](../de/README.md) | [Grieks](../el/README.md) | [Hebreeuws](../he/README.md) | [Hindi](../hi/README.md) | [Hongaars](../hu/README.md) | [Indonesisch](../id/README.md) | [Italiaans](../it/README.md) | [Japans](../ja/README.md) | [Koreaans](../ko/README.md) | [Litouws](../lt/README.md) | [Maleis](../ms/README.md) | [Marathi](../mr/README.md) | [Nepalees](../ne/README.md) | [Nigeriaans Pidgin](../pcm/README.md) | [Noors](../no/README.md) | [Perzisch (Farsi)](../fa/README.md) | [Pools](../pl/README.md) | [Portugees (Brazilië)](../br/README.md) | [Portugees (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Roemeens](../ro/README.md) | [Russisch](../ru/README.md) | [Servisch (Cyrillisch)](../sr/README.md) | [Slowaaks](../sk/README.md) | [Sloveens](../sl/README.md) | [Spaans](../es/README.md) | [Swahili](../sw/README.md) | [Zweeds](../sv/README.md) | [Tagalog (Filipijns)](../tl/README.md) | [Tamil](../ta/README.md) | [Thais](../th/README.md) | [Turks](../tr/README.md) | [Oekraïens](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamees](../vi/README.md) +[Arabisch](../ar/README.md) | [Bengaals](../bn/README.md) | [Bulgaars](../bg/README.md) | [Birmaans (Myanmar)](../my/README.md) | [Chinees (Vereenvoudigd)](../zh/README.md) | [Chinees (Traditioneel, Hong Kong)](../hk/README.md) | [Chinees (Traditioneel, Macau)](../mo/README.md) | [Chinees (Traditioneel, Taiwan)](../tw/README.md) | [Kroatisch](../hr/README.md) | [Tsjechisch](../cs/README.md) | [Deens](../da/README.md) | [Nederlands](./README.md) | [Ests](../et/README.md) | [Fins](../fi/README.md) | [Frans](../fr/README.md) | [Duits](../de/README.md) | [Grieks](../el/README.md) | [Hebreeuws](../he/README.md) | [Hindi](../hi/README.md) | [Hongaars](../hu/README.md) | [Indonesisch](../id/README.md) | [Italiaans](../it/README.md) | [Japans](../ja/README.md) | [Kannada](../kn/README.md) | [Koreaans](../ko/README.md) | [Litouws](../lt/README.md) | [Maleis](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepalees](../ne/README.md) | [Nigeriaans Pidgin](../pcm/README.md) | [Noors](../no/README.md) | [Perzisch (Farsi)](../fa/README.md) | [Pools](../pl/README.md) | [Portugees (Brazilië)](../br/README.md) | [Portugees (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Roemeens](../ro/README.md) | [Russisch](../ru/README.md) | [Servisch (Cyrillisch)](../sr/README.md) | [Slowaaks](../sk/README.md) | [Sloveens](../sl/README.md) | [Spaans](../es/README.md) | [Swahili](../sw/README.md) | [Zweeds](../sv/README.md) | [Tagalog (Filipijns)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thais](../th/README.md) | [Turks](../tr/README.md) | [Oekraïens](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamees](../vi/README.md) -#### Doe mee met onze community +#### Word Lid van Onze Community -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) + +We hebben een lopende Discord leer met AI-serie, leer meer en doe mee via [Learn with AI Series](https://aka.ms/learnwithai/discord) van 18 - 30 september 2025. Je krijgt tips en trucs voor het gebruik van GitHub Copilot voor Data Science. -We hebben een lopende Discord-serie over leren met AI. Leer meer en doe mee via [Learn with AI Series](https://aka.ms/learnwithai/discord) van 18 - 30 september 2025. Je krijgt tips en trucs over het gebruik van GitHub Copilot voor Data Science. +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.nl.png) -![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.nl.png) +# Machine Learning voor Beginners - Een Curriculum -# Machine Learning voor Beginners - Een Curriculum +> 🌍 Reis de wereld rond terwijl we Machine Learning verkennen via wereldculturen 🌍 -> 🌍 Reis de wereld rond terwijl we Machine Learning verkennen door middel van wereldculturen 🌍 +Cloud Advocates bij Microsoft bieden met plezier een 12-weken durend curriculum aan met 26 lessen over **Machine Learning**. In dit curriculum leer je over wat soms **klassieke machine learning** wordt genoemd, waarbij voornamelijk Scikit-learn als bibliotheek wordt gebruikt en deep learning wordt vermeden, dat behandeld wordt in ons [AI voor Beginners curriculum](https://aka.ms/ai4beginners). Combineer deze lessen ook met ons ['Data Science voor Beginners' curriculum](https://aka.ms/ds4beginners)! -Cloud Advocates bij Microsoft bieden met trots een 12-weekse, 26-lessen curriculum aan over **Machine Learning**. In dit curriculum leer je over wat soms **klassieke machine learning** wordt genoemd, waarbij voornamelijk Scikit-learn als bibliotheek wordt gebruikt en deep learning wordt vermeden, wat wordt behandeld in ons [AI for Beginners-curriculum](https://aka.ms/ai4beginners). Combineer deze lessen ook met ons ['Data Science for Beginners'-curriculum](https://aka.ms/ds4beginners)! +Reis met ons de wereld rond terwijl we deze klassieke technieken toepassen op data uit vele delen van de wereld. Elke les bevat quizzen voor en na de les, geschreven instructies om de les te voltooien, een oplossing, een opdracht en meer. Onze projectgebaseerde pedagogiek stelt je in staat te leren door te bouwen, een bewezen manier om nieuwe vaardigheden te laten beklijven. -Reis met ons mee over de wereld terwijl we deze klassieke technieken toepassen op gegevens uit veel verschillende regio's. Elke les bevat quizzen voor en na de les, geschreven instructies om de les te voltooien, een oplossing, een opdracht en meer. Onze projectgerichte aanpak stelt je in staat om te leren terwijl je bouwt, een bewezen manier om nieuwe vaardigheden te laten beklijven. +**✍️ Hartelijke dank aan onze auteurs** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu en Amy Boyd -**✍️ Hartelijke dank aan onze auteurs** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu en Amy Boyd +**🎨 Dank ook aan onze illustratoren** Tomomi Imura, Dasani Madipalli en Jen Looper -**🎨 Ook dank aan onze illustratoren** Tomomi Imura, Dasani Madipalli en Jen Looper +**🙏 Speciale dank 🙏 aan onze Microsoft Student Ambassador auteurs, beoordelaars en inhoudsbijdragers**, met name Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila en Snigdha Agarwal -**🙏 Speciale dank 🙏 aan onze Microsoft Student Ambassador-auteurs, reviewers en inhoudsbijdragers**, met name Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila en Snigdha Agarwal +**🤩 Extra dank aan Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi en Vidushi Gupta voor onze R-lessen!** -**🤩 Extra dank aan Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi en Vidushi Gupta voor onze R-lessen!** +# Aan de Slag -# Aan de slag +Volg deze stappen: +1. **Fork de Repository**: Klik op de knop "Fork" rechtsboven op deze pagina. +2. **Clone de Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -Volg deze stappen: -1. **Fork de Repository**: Klik op de "Fork"-knop rechtsboven op deze pagina. -2. **Clone de Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +> [vind alle aanvullende bronnen voor deze cursus in onze Microsoft Learn-collectie](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> [vind alle aanvullende bronnen voor deze cursus in onze Microsoft Learn-collectie](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> 🔧 **Hulp nodig?** Bekijk onze [Probleemoplossingsgids](TROUBLESHOOTING.md) voor oplossingen voor veelvoorkomende problemen met installatie, setup en het uitvoeren van lessen. -> 🔧 **Hulp nodig?** Bekijk onze [Probleemoplossingsgids](TROUBLESHOOTING.md) voor oplossingen voor veelvoorkomende problemen met installatie, setup en het uitvoeren van lessen. -**[Studenten](https://aka.ms/student-page)**, om dit curriculum te gebruiken, fork de hele repo naar je eigen GitHub-account en voltooi de oefeningen alleen of in een groep: +**[Studenten](https://aka.ms/student-page)**, om dit curriculum te gebruiken, fork je de hele repo naar je eigen GitHub-account en maak je de oefeningen zelfstandig of in een groep: -- Begin met een quiz voorafgaand aan de les. -- Lees de les en voltooi de activiteiten, pauzeer en reflecteer bij elke kenniscontrole. -- Probeer de projecten te maken door de lessen te begrijpen in plaats van de oplossingscode uit te voeren; die code is echter beschikbaar in de `/solution`-mappen in elke projectgerichte les. -- Maak de quiz na de les. -- Voltooi de uitdaging. -- Voltooi de opdracht. -- Na het voltooien van een lesgroep, bezoek het [Discussieforum](https://github.com/microsoft/ML-For-Beginners/discussions) en "leer hardop" door de juiste PAT-rubric in te vullen. Een 'PAT' is een voortgangsbeoordelingstool die je invult om je leren te bevorderen. Je kunt ook reageren op andere PAT's zodat we samen kunnen leren. +- Begin met een quiz voor de les. +- Lees de les en voltooi de activiteiten, pauzeer en reflecteer bij elke kennischeck. +- Probeer de projecten te maken door de lessen te begrijpen in plaats van alleen de oplossingcode uit te voeren; die code is echter beschikbaar in de `/solution` mappen in elke projectgerichte les. +- Maak de quiz na de les. +- Voltooi de uitdaging. +- Maak de opdracht af. +- Na het voltooien van een lesgroep, bezoek het [Discussiebord](https://github.com/microsoft/ML-For-Beginners/discussions) en "leer hardop" door de juiste PAT-rubriek in te vullen. Een 'PAT' is een Progress Assessment Tool, een rubric die je invult om je leren te bevorderen. Je kunt ook reageren op andere PAT's zodat we samen kunnen leren. -> Voor verdere studie raden we aan om deze [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modules en leerroutes te volgen. +> Voor verdere studie raden we aan deze [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modules en leerpaden te volgen. -**Docenten**, we hebben [enkele suggesties opgenomen](for-teachers.md) over hoe je dit curriculum kunt gebruiken. +**Docenten**, we hebben [enkele suggesties opgenomen](for-teachers.md) over hoe je dit curriculum kunt gebruiken. --- -## Video walkthroughs +## Video walkthroughs -Sommige lessen zijn beschikbaar als korte video's. Je kunt deze allemaal in de lessen vinden, of op de [ML for Beginners-afspeellijst op het Microsoft Developer YouTube-kanaal](https://aka.ms/ml-beginners-videos) door op de afbeelding hieronder te klikken. +Sommige lessen zijn beschikbaar als korte video's. Je vindt ze allemaal inline in de lessen, of op de [ML for Beginners afspeellijst op het Microsoft Developer YouTube-kanaal](https://aka.ms/ml-beginners-videos) door op de afbeelding hieronder te klikken. -[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.nl.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.nl.png)](https://aka.ms/ml-beginners-videos) --- -## Ontmoet het Team +## Ontmoet het Team -[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif door** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif door** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Klik op de afbeelding hierboven voor een video over het project en de mensen die het hebben gemaakt! +> 🎥 Klik op de afbeelding hierboven voor een video over het project en de mensen die het hebben gemaakt! --- -## Pedagogiek - -We hebben twee pedagogische principes gekozen bij het ontwikkelen van dit curriculum: ervoor zorgen dat het hands-on **projectgericht** is en dat het **frequente quizzen** bevat. Daarnaast heeft dit curriculum een gemeenschappelijk **thema** om het samenhangend te maken. - -Door ervoor te zorgen dat de inhoud aansluit bij projecten, wordt het proces boeiender voor studenten en wordt het begrip van concepten vergroot. Bovendien zet een quiz met lage drempel voorafgaand aan een les de intentie van de student om een onderwerp te leren, terwijl een tweede quiz na de les zorgt voor verdere retentie. Dit curriculum is ontworpen om flexibel en leuk te zijn en kan in zijn geheel of gedeeltelijk worden gevolgd. De projecten beginnen klein en worden steeds complexer tegen het einde van de 12-weekse cyclus. Dit curriculum bevat ook een naschrift over real-world toepassingen van ML, die kunnen worden gebruikt als extra krediet of als basis voor discussie. - -> Bekijk onze [Gedragscode](CODE_OF_CONDUCT.md), [Bijdragen](CONTRIBUTING.md), [Vertaling](TRANSLATIONS.md) en [Probleemoplossing](TROUBLESHOOTING.md) richtlijnen. We verwelkomen je constructieve feedback! - -## Elke les bevat - -- optionele sketchnote -- optionele aanvullende video -- video walkthrough (alleen sommige lessen) -- [quiz voorafgaand aan de les](https://ff-quizzes.netlify.app/en/ml/) -- geschreven les -- voor projectgerichte lessen, stapsgewijze handleidingen over hoe je het project bouwt -- kenniscontroles -- een uitdaging -- aanvullende literatuur -- opdracht -- [quiz na de les](https://ff-quizzes.netlify.app/en/ml/) - -> **Een opmerking over talen**: Deze lessen zijn voornamelijk geschreven in Python, maar veel zijn ook beschikbaar in R. Om een R-les te voltooien, ga naar de `/solution`-map en zoek naar R-lessen. Ze bevatten een .rmd-extensie die een **R Markdown**-bestand vertegenwoordigt, wat eenvoudig kan worden gedefinieerd als een combinatie van `codeblokken` (van R of andere talen) en een `YAML-header` (die aangeeft hoe outputs zoals PDF moeten worden opgemaakt) in een `Markdown-document`. Als zodanig dient het als een voorbeeldig authoring-framework voor data science, omdat het je in staat stelt je code, de output ervan en je gedachten te combineren door ze in Markdown op te schrijven. Bovendien kunnen R Markdown-documenten worden gerenderd naar outputformaten zoals PDF, HTML of Word. - -> **Een opmerking over quizzen**: Alle quizzen zijn opgenomen in de [Quiz App-map](../../quiz-app), voor in totaal 52 quizzen van elk drie vragen. Ze zijn gelinkt vanuit de lessen, maar de quiz-app kan lokaal worden uitgevoerd; volg de instructies in de `quiz-app`-map om lokaal te hosten of te implementeren op Azure. - -| Lesnummer | Onderwerp | Lesgroep | Leerdoelen | Gelinkte Les | Auteur | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Introductie tot machine learning | [Introductie](1-Introduction/README.md) | Leer de basisconcepten achter machine learning | [Les](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | De geschiedenis van machine learning | [Introductie](1-Introduction/README.md) | Leer de geschiedenis achter dit vakgebied | [Les](1-Introduction/2-history-of-ML/README.md) | Jen en Amy | -| 03 | Eerlijkheid en machine learning | [Introductie](1-Introduction/README.md) | Wat zijn de belangrijke filosofische kwesties rond eerlijkheid die studenten moeten overwegen bij het bouwen en toepassen van ML-modellen? | [Les](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Technieken voor machine learning | [Introductie](1-Introduction/README.md) | Welke technieken gebruiken ML-onderzoekers om ML-modellen te bouwen? | [Les](1-Introduction/4-techniques-of-ML/README.md) | Chris en Jen | -| 05 | Introductie tot regressie | [Regressie](2-Regression/README.md) | Begin met Python en Scikit-learn voor regressiemodellen | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Noord-Amerikaanse pompoenprijzen 🎃 | [Regressie](2-Regression/README.md) | Visualiseer en maak gegevens schoon ter voorbereiding op ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Noord-Amerikaanse pompoenprijzen 🎃 | [Regressie](2-Regression/README.md) | Bouw lineaire en polynomiale regressiemodellen | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen en Dmitry • Eric Wanjau | -| 08 | Noord-Amerikaanse pompoenprijzen 🎃 | [Regressie](2-Regression/README.md) | Bouw een logistisch regressiemodel | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Een webapp 🔌 | [Webapp](3-Web-App/README.md) | Bouw een webapp om je getrainde model te gebruiken | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Introductie tot classificatie | [Classificatie](4-Classification/README.md) | Maak je gegevens schoon, bereid ze voor en visualiseer ze; introductie tot classificatie | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen en Cassie • Eric Wanjau | -| 11 | Heerlijke Aziatische en Indiase gerechten 🍜 | [Classificatie](4-Classification/README.md) | Introductie tot classifiers | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen en Cassie • Eric Wanjau | -| 12 | Heerlijke Aziatische en Indiase gerechten 🍜 | [Classificatie](4-Classification/README.md) | Meer classifiers | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen en Cassie • Eric Wanjau | -| 13 | Heerlijke Aziatische en Indiase gerechten 🍜 | [Classificatie](4-Classification/README.md) | Bouw een aanbevelingswebapp met je model | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Introductie tot clustering | [Clustering](5-Clustering/README.md) | Maak je gegevens schoon, bereid ze voor en visualiseer ze; introductie tot clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Verkenning van Nigeriaanse muzieksmaken 🎧 | [Clustering](5-Clustering/README.md) | Verken de K-Means clusteringmethode | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Introductie tot natuurlijke taalverwerking ☕️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Leer de basisprincipes van NLP door een eenvoudige bot te bouwen | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Veelvoorkomende NLP-taken ☕️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Verdiep je NLP-kennis door veelvoorkomende taken te begrijpen die nodig zijn bij het omgaan met taalstructuren | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Vertaling en sentimentanalyse ♥️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Vertaling en sentimentanalyse met Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantische hotels in Europa ♥️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Sentimentanalyse met hotelbeoordelingen 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantische hotels in Europa ♥️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Sentimentanalyse met hotelbeoordelingen 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Introductie tot tijdreeksvoorspelling | [Tijdreeksen](7-TimeSeries/README.md) | Introductie tot tijdreeksvoorspelling | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Wereldwijd energieverbruik ⚡️ - tijdreeksvoorspelling met ARIMA | [Tijdreeksen](7-TimeSeries/README.md) | Tijdreeksvoorspelling met ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Wereldwijd energieverbruik ⚡️ - tijdreeksvoorspelling met SVR | [Tijdreeksen](7-TimeSeries/README.md) | Tijdreeksvoorspelling met Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Introductie tot reinforcement learning | [Reinforcement learning](8-Reinforcement/README.md) | Introductie tot reinforcement learning met Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Help Peter de wolf te ontwijken! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Real-World ML-scenario's en toepassingen | [ML in de praktijk](9-Real-World/README.md) | Interessante en onthullende toepassingen van klassieke ML in de echte wereld | [Les](9-Real-World/1-Applications/README.md) | Team | -| Postscript | Modeldebugging in ML met RAI-dashboard | [ML in de praktijk](9-Real-World/README.md) | Modeldebugging in machine learning met Responsible AI-dashboardcomponenten | [Les](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +## Pedagogiek + +We hebben twee pedagogische principes gekozen bij het opbouwen van dit curriculum: ervoor zorgen dat het hands-on **projectgebaseerd** is en dat het **frequente quizzen** bevat. Daarnaast heeft dit curriculum een gemeenschappelijk **thema** om het samenhangend te maken. + +Door ervoor te zorgen dat de inhoud aansluit bij projecten, wordt het proces boeiender voor studenten en wordt het vasthouden van concepten vergroot. Bovendien zet een quiz met lage inzet vóór een les de intentie van de student om een onderwerp te leren, terwijl een tweede quiz na de les verdere retentie verzekert. Dit curriculum is ontworpen om flexibel en leuk te zijn en kan geheel of gedeeltelijk worden gevolgd. De projecten beginnen klein en worden steeds complexer aan het einde van de 12-weekse cyclus. Dit curriculum bevat ook een naschrift over toepassingen van ML in de echte wereld, dat kan worden gebruikt als extra krediet of als basis voor discussie. + +> Vind onze [Gedragscode](CODE_OF_CONDUCT.md), [Bijdragen](CONTRIBUTING.md), [Vertaling](TRANSLATIONS.md) en [Probleemoplossing](TROUBLESHOOTING.md) richtlijnen. We verwelkomen je constructieve feedback! + +## Elke les bevat + +- optionele sketchnote +- optionele aanvullende video +- video walkthrough (sommige lessen alleen) +- [quiz voor de les](https://ff-quizzes.netlify.app/en/ml/) +- geschreven les +- voor projectgebaseerde lessen, stapsgewijze handleidingen om het project te bouwen +- kenniscontroles +- een uitdaging +- aanvullende lectuur +- opdracht +- [quiz na de les](https://ff-quizzes.netlify.app/en/ml/) + +> **Een opmerking over talen**: Deze lessen zijn voornamelijk geschreven in Python, maar veel zijn ook beschikbaar in R. Om een R-les te voltooien, ga naar de `/solution` map en zoek naar R-lessen. Ze bevatten een .rmd extensie die staat voor een **R Markdown** bestand, wat eenvoudig kan worden gedefinieerd als een embedding van `codeblokken` (van R of andere talen) en een `YAML-header` (die aangeeft hoe uitvoerformaten zoals PDF worden opgemaakt) in een `Markdown-document`. Als zodanig dient het als een voorbeeld van een auteurssysteem voor datawetenschap omdat het je in staat stelt je code, de uitvoer en je gedachten te combineren door ze in Markdown op te schrijven. Bovendien kunnen R Markdown-documenten worden gerenderd naar uitvoerformaten zoals PDF, HTML of Word. + +> **Een opmerking over quizzen**: Alle quizzen bevinden zich in de [Quiz App map](../../quiz-app), in totaal 52 quizzen met elk drie vragen. Ze zijn gelinkt vanuit de lessen, maar de quiz-app kan lokaal worden uitgevoerd; volg de instructies in de `quiz-app` map om lokaal te hosten of te implementeren naar Azure. + +| Lesnummer | Onderwerp | Lesgroep | Leerdoelen | Gelinkte Les | Auteur | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | Inleiding tot machine learning | [Introduction](1-Introduction/README.md) | Leer de basisconcepten achter machine learning | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | De geschiedenis van machine learning | [Introduction](1-Introduction/README.md) | Leer de geschiedenis achter dit vakgebied | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Eerlijkheid en machine learning | [Introduction](1-Introduction/README.md) | Wat zijn de belangrijke filosofische kwesties rond eerlijkheid die studenten moeten overwegen bij het bouwen en toepassen van ML-modellen? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Technieken voor machine learning | [Introduction](1-Introduction/README.md) | Welke technieken gebruiken ML-onderzoekers om ML-modellen te bouwen? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Inleiding tot regressie | [Regression](2-Regression/README.md) | Begin met Python en Scikit-learn voor regressiemodellen | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Noord-Amerikaanse pompoenprijzen 🎃 | [Regression](2-Regression/README.md) | Visualiseer en reinig data ter voorbereiding op ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Noord-Amerikaanse pompoenprijzen 🎃 | [Regression](2-Regression/README.md) | Bouw lineaire en polynomiale regressiemodellen | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Noord-Amerikaanse pompoenprijzen 🎃 | [Regression](2-Regression/README.md) | Bouw een logistiek regressiemodel | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Een webapp 🔌 | [Web App](3-Web-App/README.md) | Bouw een webapp om je getrainde model te gebruiken | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Inleiding tot classificatie | [Classification](4-Classification/README.md) | Reinig, bereid voor en visualiseer je data; inleiding tot classificatie | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Heerlijke Aziatische en Indiase keukens 🍜 | [Classification](4-Classification/README.md) | Inleiding tot classifiers | [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 | Heerlijke Aziatische en Indiase keukens 🍜 | [Classification](4-Classification/README.md) | Meer classifiers | [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 | Heerlijke Aziatische en Indiase keukens 🍜 | [Classification](4-Classification/README.md) | Bouw een aanbevelings-webapp met je model | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Inleiding tot clustering | [Clustering](5-Clustering/README.md) | Reinig, bereid voor en visualiseer je data; inleiding tot clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Verkenning van Nigeriaanse muzikale smaken 🎧 | [Clustering](5-Clustering/README.md) | Verken de K-Means clusteringmethode | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Inleiding tot natuurlijke taalverwerking ☕️ | [Natural language processing](6-NLP/README.md) | Leer de basis van NLP door een eenvoudige bot te bouwen | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Veelvoorkomende NLP-taken ☕️ | [Natural language processing](6-NLP/README.md) | Verdiep je NLP-kennis door veelvoorkomende taken te begrijpen die nodig zijn bij het omgaan met taalstructuren | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Vertaling en sentimentanalyse ♥️ | [Natural language processing](6-NLP/README.md) | Vertaling en sentimentanalyse met Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantische hotels in Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentanalyse met hotelbeoordelingen 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantische hotels in Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentanalyse met hotelbeoordelingen 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Inleiding tot tijdreeksvoorspelling | [Time series](7-TimeSeries/README.md) | Inleiding tot tijdreeksvoorspelling | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Wereldwijde energieverbruik ⚡️ - tijdreeksvoorspelling met ARIMA | [Time series](7-TimeSeries/README.md) | Tijdreeksvoorspelling met ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Wereldwijde energieverbruik ⚡️ - tijdreeksvoorspelling met SVR | [Time series](7-TimeSeries/README.md) | Tijdreeksvoorspelling met Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Inleiding tot reinforcement learning | [Reinforcement learning](8-Reinforcement/README.md) | Inleiding tot reinforcement learning met Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Help Peter de wolf te vermijden! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Realistische ML-scenario's en toepassingen | [ML in the Wild](9-Real-World/README.md) | Interessante en onthullende toepassingen van klassieke ML in de echte wereld | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Modeldebugging in ML met behulp van RAI-dashboard | [ML in the Wild](9-Real-World/README.md) | Modeldebugging in machine learning met behulp van Responsible AI-dashboardcomponenten | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [vind alle aanvullende bronnen voor deze cursus in onze Microsoft Learn-collectie](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Offline toegang -Je kunt deze documentatie offline gebruiken met [Docsify](https://docsify.js.org/#/). Fork deze repository, [installeer Docsify](https://docsify.js.org/#/quickstart) op je lokale machine, en typ vervolgens in de hoofdmap van deze repository `docsify serve`. De website wordt geserveerd op poort 3000 op je localhost: `localhost:3000`. +Je kunt deze documentatie offline gebruiken met [Docsify](https://docsify.js.org/#/). Fork deze repo, [installeer Docsify](https://docsify.js.org/#/quickstart) op je lokale machine, en typ dan in de hoofdmap van deze repo `docsify serve`. De website wordt geserveerd op poort 3000 op je localhost: `localhost:3000`. ## PDF's Vind een pdf van het curriculum met links [hier](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Andere cursussen + +## 🎒 Andere cursussen Ons team produceert ook andere cursussen! Bekijk: -### Azure / Edge / MCP / Agents -[![AZD voor Beginners](https://img.shields.io/badge/AZD%20voor%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI voor Beginners](https://img.shields.io/badge/Edge%20AI%20voor%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP voor Beginners](https://img.shields.io/badge/MCP%20voor%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI Agents voor Beginners](https://img.shields.io/badge/AI%20Agents%20voor%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Generatieve AI-serie -[![Generatieve AI voor Beginners](https://img.shields.io/badge/Generatieve%20AI%20voor%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generatieve AI (.NET)](https://img.shields.io/badge/Generatieve%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generatieve AI (Java)](https://img.shields.io/badge/Generatieve%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generatieve AI (JavaScript)](https://img.shields.io/badge/Generatieve%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Generatieve AI-serie +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +--- + ### Kernleren -[![ML voor Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science voor Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI voor Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cybersecurity voor Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Webontwikkeling voor Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT voor Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR Ontwikkeling voor Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Copilot Serie -[![Copilot voor AI Pair Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot voor C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Avontuur](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + +### Copilot-serie +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + ## Hulp krijgen -Als je vastloopt of vragen hebt over het bouwen van AI-apps, sluit je dan aan bij medeleerlingen en ervaren ontwikkelaars in discussies over MCP. Het is een ondersteunende gemeenschap waar vragen welkom zijn en kennis vrij wordt gedeeld. +Als je vastloopt of vragen hebt over het bouwen van AI-apps. Doe mee met medeleerlingen en ervaren ontwikkelaars in discussies over MCP. Het is een ondersteunende gemeenschap waar vragen welkom zijn en kennis vrijelijk wordt gedeeld. [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) @@ -209,5 +219,5 @@ Als je productfeedback hebt of fouten tegenkomt tijdens het bouwen, bezoek dan: **Disclaimer**: -Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling. +Dit document is vertaald met behulp van de AI-vertalingsdienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet als de gezaghebbende bron worden beschouwd. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling. \ No newline at end of file diff --git a/translations/no/README.md b/translations/no/README.md index c5a3eea66..cbb829d7e 100644 --- a/translations/no/README.md +++ b/translations/no/README.md @@ -1,33 +1,35 @@ -[![GitHub-lisens](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub-bidragsytere](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub-problemer](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Velkommen](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub følgere](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forgreininger](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub stjerner](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Støtte for flere språk +### 🌐 Flerspråklig støtte -#### Støttet via GitHub Action (Automatisk & Alltid Oppdatert) +#### Støttet via GitHub Action (Automatisert og alltid oppdatert) -[Arabisk](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarsk](../bg/README.md) | [Burmesisk (Myanmar)](../my/README.md) | [Kinesisk (Forenklet)](../zh/README.md) | [Kinesisk (Tradisjonell, Hong Kong)](../hk/README.md) | [Kinesisk (Tradisjonell, Macau)](../mo/README.md) | [Kinesisk (Tradisjonell, Taiwan)](../tw/README.md) | [Kroatisk](../hr/README.md) | [Tsjekkisk](../cs/README.md) | [Dansk](../da/README.md) | [Nederlandsk](../nl/README.md) | [Estisk](../et/README.md) | [Finsk](../fi/README.md) | [Fransk](../fr/README.md) | [Tysk](../de/README.md) | [Gresk](../el/README.md) | [Hebraisk](../he/README.md) | [Hindi](../hi/README.md) | [Ungarsk](../hu/README.md) | [Indonesisk](../id/README.md) | [Italiensk](../it/README.md) | [Japansk](../ja/README.md) | [Koreansk](../ko/README.md) | [Litauisk](../lt/README.md) | [Malayisk](../ms/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigeriansk Pidgin](../pcm/README.md) | [Norsk](./README.md) | [Persisk (Farsi)](../fa/README.md) | [Polsk](../pl/README.md) | [Portugisisk (Brasil)](../br/README.md) | [Portugisisk (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Rumensk](../ro/README.md) | [Russisk](../ru/README.md) | [Serbisk (Kyrillisk)](../sr/README.md) | [Slovakisk](../sk/README.md) | [Slovensk](../sl/README.md) | [Spansk](../es/README.md) | [Swahili](../sw/README.md) | [Svensk](../sv/README.md) | [Tagalog (Filippinsk)](../tl/README.md) | [Tamil](../ta/README.md) | [Thai](../th/README.md) | [Tyrkisk](../tr/README.md) | [Ukrainsk](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamesisk](../vi/README.md) + +[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](./README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + #### Bli med i vårt fellesskap [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Vi har en Discord-serie om læring med AI pågående, lær mer og bli med oss på [Learn with AI Series](https://aka.ms/learnwithai/discord) fra 18. - 30. september, 2025. Du vil få tips og triks om bruk av GitHub Copilot for Data Science. +Vi har en pågående Discord-serie for å lære med AI, lær mer og bli med oss på [Learn with AI Series](https://aka.ms/learnwithai/discord) fra 18. til 30. september 2025. Du vil få tips og triks for å bruke GitHub Copilot for Data Science. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.no.png) @@ -35,9 +37,9 @@ Vi har en Discord-serie om læring med AI pågående, lær mer og bli med oss p > 🌍 Reis rundt i verden mens vi utforsker maskinlæring gjennom verdens kulturer 🌍 -Cloud Advocates hos Microsoft er glade for å tilby et 12-ukers, 26-leksjons pensum om **maskinlæring**. I dette pensumet vil du lære om det som noen ganger kalles **klassisk maskinlæring**, hovedsakelig ved bruk av Scikit-learn som bibliotek og unngå dyp læring, som dekkes i vårt [AI for Beginners' pensum](https://aka.ms/ai4beginners). Kombiner disse leksjonene med vårt ['Data Science for Beginners' pensum](https://aka.ms/ds4beginners), også! +Cloud Advocates hos Microsoft er glade for å tilby et 12-ukers, 26-leksjons pensum som handler om **maskinlæring**. I dette pensumet vil du lære om det som noen ganger kalles **klassisk maskinlæring**, ved hovedsakelig å bruke Scikit-learn som bibliotek og unngå dyp læring, som dekkes i vårt [AI for Beginners' pensum](https://aka.ms/ai4beginners). Kombiner disse leksjonene med vårt ['Data Science for Beginners' pensum](https://aka.ms/ds4beginners) også! -Reis med oss rundt i verden mens vi bruker disse klassiske teknikkene på data fra mange områder av verden. Hver leksjon inkluderer quiz før og etter leksjonen, skriftlige instruksjoner for å fullføre leksjonen, en løsning, en oppgave og mer. Vår prosjektbaserte pedagogikk lar deg lære mens du bygger, en bevist måte for nye ferdigheter å 'sitte fast'. +Reis med oss rundt i verden mens vi anvender disse klassiske teknikkene på data fra mange deler av verden. Hver leksjon inkluderer quiz før og etter leksjonen, skriftlige instruksjoner for å fullføre leksjonen, en løsning, en oppgave og mer. Vår prosjektbaserte pedagogikk lar deg lære mens du bygger, en bevist metode for at nye ferdigheter skal 'sette seg'. **✍️ Hjertelig takk til våre forfattere** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu og Amy Boyd @@ -45,29 +47,30 @@ Reis med oss rundt i verden mens vi bruker disse klassiske teknikkene på data f **🙏 Spesiell takk 🙏 til våre Microsoft Student Ambassador-forfattere, anmeldere og innholdsbidragsytere**, spesielt Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila og Snigdha Agarwal -**🤩 Ekstra takknemlighet til Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi og Vidushi Gupta for våre R-leksjoner!** +**🤩 Ekstra takk til Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi og Vidushi Gupta for våre R-leksjoner!** -# Kom i gang +# Komme i gang -Følg disse trinnene: -1. **Fork repoet**: Klikk på "Fork"-knappen øverst til høyre på denne siden. -2. **Klon repoet**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Følg disse trinnene: +1. **Fork repoet**: Klikk på "Fork"-knappen øverst til høyre på denne siden. +2. **Klon repoet**: `git clone https://github.com/microsoft/ML-For-Beginners.git` > [finn alle tilleggsmaterialer for dette kurset i vår Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) > 🔧 **Trenger du hjelp?** Sjekk vår [Feilsøkingsguide](TROUBLESHOOTING.md) for løsninger på vanlige problemer med installasjon, oppsett og kjøring av leksjoner. -**[Studenter](https://aka.ms/student-page)**, for å bruke dette pensumet, fork hele repoet til din egen GitHub-konto og fullfør oppgavene på egen hånd eller med en gruppe: -- Start med en quiz før leksjonen. -- Les leksjonen og fullfør aktivitetene, ta pauser og reflekter ved hver kunnskapssjekk. -- Prøv å lage prosjektene ved å forstå leksjonene i stedet for å kjøre løsningskoden; men den koden er tilgjengelig i `/solution`-mappene i hver prosjektorienterte leksjon. -- Ta quiz etter leksjonen. -- Fullfør utfordringen. -- Fullfør oppgaven. -- Etter å ha fullført en leksjonsgruppe, besøk [Diskusjonsforumet](https://github.com/microsoft/ML-For-Beginners/discussions) og "lær høyt" ved å fylle ut den passende PAT-rubrikken. En 'PAT' er et Progress Assessment Tool som er en rubrikk du fyller ut for å fremme læringen din. Du kan også reagere på andre PAT-er slik at vi kan lære sammen. +**[Studenter](https://aka.ms/student-page)**, for å bruke dette pensumet, fork hele repoet til din egen GitHub-konto og fullfør øvelsene på egen hånd eller i gruppe: -> For videre studier anbefaler vi å følge disse [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modulene og læringsveiene. +- Start med en quiz før forelesningen. +- Les forelesningen og fullfør aktivitetene, stopp opp og reflekter ved hver kunnskapskontroll. +- Prøv å lage prosjektene ved å forstå leksjonene i stedet for å bare kjøre løsningskoden; denne koden er imidlertid tilgjengelig i `/solution`-mappene i hver prosjektorienterte leksjon. +- Ta quiz etter forelesningen. +- Fullfør utfordringen. +- Fullfør oppgaven. +- Etter å ha fullført en leksjonsgruppe, besøk [Diskusjonsforumet](https://github.com/microsoft/ML-For-Beginners/discussions) og "lær høyt" ved å fylle ut riktig PAT-rubrik. En 'PAT' er et fremdriftsvurderingsverktøy som er en rubrikk du fyller ut for å fremme læringen din. Du kan også reagere på andres PAT-er slik at vi kan lære sammen. + +> For videre studier anbefaler vi å følge disse [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modulene og læringsstiene. **Lærere**, vi har [inkludert noen forslag](for-teachers.md) om hvordan du kan bruke dette pensumet. @@ -75,7 +78,7 @@ Følg disse trinnene: ## Videogjennomganger -Noen av leksjonene er tilgjengelige som korte videoer. Du finner alle disse i leksjonene, eller på [ML for Beginners-spillelisten på Microsoft Developer YouTube-kanalen](https://aka.ms/ml-beginners-videos) ved å klikke på bildet nedenfor. +Noen av leksjonene er tilgjengelige som korte videoer. Du kan finne alle disse innebygd i leksjonene, eller på [ML for Beginners-spillelisten på Microsoft Developer YouTube-kanalen](https://aka.ms/ml-beginners-videos) ved å klikke på bildet nedenfor. [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.no.png)](https://aka.ms/ml-beginners-videos) @@ -87,7 +90,7 @@ Noen av leksjonene er tilgjengelige som korte videoer. Du finner alle disse i le **Gif av** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Klikk på bildet ovenfor for en video om prosjektet og folkene som skapte det! +> 🎥 Klikk på bildet over for en video om prosjektet og folka som laget det! --- @@ -95,73 +98,80 @@ Noen av leksjonene er tilgjengelige som korte videoer. Du finner alle disse i le Vi har valgt to pedagogiske prinsipper mens vi bygde dette pensumet: å sikre at det er praktisk **prosjektbasert** og at det inkluderer **hyppige quizer**. I tillegg har dette pensumet et felles **tema** for å gi det sammenheng. -Ved å sikre at innholdet er knyttet til prosjekter, blir prosessen mer engasjerende for studenter, og begrepsforståelsen vil bli styrket. I tillegg setter en lavterskelquiz før en klasse intensjonen til studenten mot å lære et emne, mens en andre quiz etter klassen sikrer ytterligere forståelse. Dette pensumet ble designet for å være fleksibelt og morsomt og kan tas i sin helhet eller delvis. Prosjektene starter små og blir stadig mer komplekse mot slutten av den 12-ukers syklusen. Dette pensumet inkluderer også et tillegg om virkelige applikasjoner av ML, som kan brukes som ekstra kreditt eller som grunnlag for diskusjon. +Ved å sikre at innholdet samsvarer med prosjekter, blir prosessen mer engasjerende for studentene og konseptene huskes bedre. I tillegg setter en lavterskelquiz før en klasse studentens intensjon mot å lære et emne, mens en andre quiz etter klassen sikrer ytterligere innlæring. Dette pensumet er designet for å være fleksibelt og morsomt og kan tas i sin helhet eller delvis. Prosjektene starter smått og blir stadig mer komplekse mot slutten av 12-ukerssyklusen. Dette pensumet inkluderer også et etterord om virkelige anvendelser av ML, som kan brukes som ekstra kreditt eller som grunnlag for diskusjon. -> Finn vår [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), og [Troubleshooting](TROUBLESHOOTING.md) retningslinjer. Vi ønsker din konstruktive tilbakemelding velkommen! +> Finn våre [Regler for oppførsel](CODE_OF_CONDUCT.md), [Bidrag](CONTRIBUTING.md), [Oversettelse](TRANSLATIONS.md) og [Feilsøking](TROUBLESHOOTING.md) retningslinjer. Vi setter pris på dine konstruktive tilbakemeldinger! ## Hver leksjon inkluderer -- valgfri sketchnote -- valgfri tilleggsvideo -- videogjennomgang (noen leksjoner) -- [quiz før leksjonen](https://ff-quizzes.netlify.app/en/ml/) -- skriftlig leksjon -- for prosjektbaserte leksjoner, trinnvise guider om hvordan man bygger prosjektet -- kunnskapssjekker -- en utfordring -- tilleggslesing -- oppgave -- [quiz etter leksjonen](https://ff-quizzes.netlify.app/en/ml/) +- valgfri skisse +- valgfri supplerende video +- videogjennomgang (kun noen leksjoner) +- [quiz før forelesning](https://ff-quizzes.netlify.app/en/ml/) +- skriftlig leksjon +- for prosjektbaserte leksjoner, trinnvise guider for hvordan bygge prosjektet +- kunnskapskontroller +- en utfordring +- supplerende lesning +- oppgave +- [quiz etter forelesning](https://ff-quizzes.netlify.app/en/ml/) -> **En merknad om språk**: Disse leksjonene er hovedsakelig skrevet i Python, men mange er også tilgjengelige i R. For å fullføre en R-leksjon, gå til `/solution`-mappen og se etter R-leksjoner. De inkluderer en .rmd-utvidelse som representerer en **R Markdown**-fil som enkelt kan defineres som en innbygging av `kodeblokker` (av R eller andre språk) og en `YAML-header` (som styrer hvordan man formaterer utganger som PDF) i et `Markdown-dokument`. Som sådan fungerer det som et eksemplarisk forfatterrammeverk for dataanalyse siden det lar deg kombinere koden din, dens utgang og tankene dine ved å skrive dem ned i Markdown. Dessuten kan R Markdown-dokumenter gjengis til utgangsformater som PDF, HTML eller Word. +> **En merknad om språk**: Disse leksjonene er hovedsakelig skrevet i Python, men mange er også tilgjengelige i R. For å fullføre en R-leksjon, gå til `/solution`-mappen og se etter R-leksjoner. De inkluderer en .rmd-utvidelse som representerer en **R Markdown**-fil som enkelt kan defineres som en innbedding av `kodebiter` (av R eller andre språk) og en `YAML-header` (som styrer hvordan utdata formateres, som PDF) i et `Markdown-dokument`. Som sådan fungerer det som en eksemplarisk forfatterramme for data science siden det lar deg kombinere koden din, dens utdata og dine tanker ved å skrive dem ned i Markdown. Videre kan R Markdown-dokumenter gjengis til utdataformater som PDF, HTML eller Word. -> **En merknad om quizer**: Alle quizer er inneholdt i [Quiz App-mappen](../../quiz-app), for totalt 52 quizer med tre spørsmål hver. De er lenket fra leksjonene, men quiz-appen kan kjøres lokalt; følg instruksjonene i `quiz-app`-mappen for å være vert lokalt eller distribuere til Azure. +> **En merknad om quizer**: Alle quizer finnes i [Quiz App-mappen](../../quiz-app), totalt 52 quizer med tre spørsmål hver. De er lenket fra leksjonene, men quiz-appen kan kjøres lokalt; følg instruksjonene i `quiz-app`-mappen for lokal hosting eller distribusjon til Azure. -| Leksjonsnummer | Emne | Leksjonsgruppe | Læringsmål | Lenket leksjon | Forfatter | +| Leksjonsnummer | Emne | Leksjonsgruppe | Læringsmål | Lenket leksjon | Forfatter | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Introduksjon til maskinlæring | [Introduksjon](1-Introduction/README.md) | Lær de grunnleggende konseptene bak maskinlæring | [Leksjon](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Historien om maskinlæring | [Introduksjon](1-Introduction/README.md) | Lær historien bak dette feltet | [Leksjon](1-Introduction/2-history-of-ML/README.md) | Jen og Amy | -| 03 | Rettferdighet og maskinlæring | [Introduksjon](1-Introduction/README.md) | Hva er de viktige filosofiske spørsmålene rundt rettferdighet som studenter bør vurdere når de bygger og bruker ML-modeller? | [Leksjon](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Teknikker for maskinlæring | [Introduksjon](1-Introduction/README.md) | Hvilke teknikker bruker ML-forskere for å bygge ML-modeller? | [Leksjon](1-Introduction/4-techniques-of-ML/README.md) | Chris og Jen | -| 05 | Introduksjon til regresjon | [Regresjon](2-Regression/README.md) | Kom i gang med Python og Scikit-learn for regresjonsmodeller | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Nordamerikanske gresskarpriser 🎃 | [Regresjon](2-Regression/README.md) | Visualiser og rens data som forberedelse til ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Nordamerikanske gresskarpriser 🎃 | [Regresjon](2-Regression/README.md) | Bygg lineære og polynomiske regresjonsmodeller | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen og Dmitry • Eric Wanjau | -| 08 | Nordamerikanske gresskarpriser 🎃 | [Regresjon](2-Regression/README.md) | Bygg en logistisk regresjonsmodell | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | En webapp 🔌 | [Webapp](3-Web-App/README.md) | Bygg en webapp for å bruke din trente modell | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Introduksjon til klassifisering | [Klassifisering](4-Classification/README.md) | Rens, forbered og visualiser dataene dine; introduksjon til klassifisering | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen og Cassie • Eric Wanjau | -| 11 | Deilige asiatiske og indiske retter 🍜 | [Klassifisering](4-Classification/README.md) | Introduksjon til klassifikatorer | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen og Cassie • Eric Wanjau | -| 12 | Deilige asiatiske og indiske retter 🍜 | [Klassifisering](4-Classification/README.md) | Flere klassifikatorer | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen og Cassie • Eric Wanjau | -| 13 | Deilige asiatiske og indiske retter 🍜 | [Klassifisering](4-Classification/README.md) | Bygg en anbefalingswebapp ved hjelp av modellen din | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Introduksjon til klynging | [Klynging](5-Clustering/README.md) | Rens, forbered og visualiser dataene dine; introduksjon til klynging | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Utforsking av nigerianske musikksmaker 🎧 | [Klynging](5-Clustering/README.md) | Utforsk K-Means klynge-metoden | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Introduksjon til naturlig språkbehandling ☕️ | [Naturlig språkbehandling](6-NLP/README.md) | Lær det grunnleggende om NLP ved å bygge en enkel bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Vanlige NLP-oppgaver ☕️ | [Naturlig språkbehandling](6-NLP/README.md) | Fordyp deg i NLP ved å forstå vanlige oppgaver som kreves når man arbeider med språkstrukturer | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Oversettelse og sentimentanalyse ♥️ | [Naturlig språkbehandling](6-NLP/README.md) | Oversettelse og sentimentanalyse med Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantiske hoteller i Europa ♥️ | [Naturlig språkbehandling](6-NLP/README.md) | Sentimentanalyse med hotellanmeldelser 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantiske hoteller i Europa ♥️ | [Naturlig språkbehandling](6-NLP/README.md) | Sentimentanalyse med hotellanmeldelser 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Introduksjon til tidsserieprognoser | [Tidsserier](7-TimeSeries/README.md) | Introduksjon til tidsserieprognoser | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Verdens strømforbruk ⚡️ - tidsserieprognoser med ARIMA | [Tidsserier](7-TimeSeries/README.md) | Tidsserieprognoser med ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Verdens strømforbruk ⚡️ - tidsserieprognoser med SVR | [Tidsserier](7-TimeSeries/README.md) | Tidsserieprognoser med Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Introduksjon til forsterkende læring | [Forsterkende læring](8-Reinforcement/README.md) | Introduksjon til forsterkende læring med Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Hjelp Peter å unngå ulven! 🐺 | [Forsterkende læring](8-Reinforcement/README.md) | Forsterkende læring Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Virkelige ML-scenarier og applikasjoner | [ML i det virkelige liv](9-Real-World/README.md) | Interessante og avslørende virkelige applikasjoner av klassisk ML | [Leksjon](9-Real-World/1-Applications/README.md) | Team | -| Postscript | Modellfeilsøking i ML med RAI-dashbord | [ML i det virkelige liv](9-Real-World/README.md) | Modellfeilsøking i maskinlæring ved bruk av Responsible AI-dashbordkomponenter | [Leksjon](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +| 01 | Introduksjon til maskinlæring | [Introduction](1-Introduction/README.md) | Lær de grunnleggende konseptene bak maskinlæring | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Historien til maskinlæring | [Introduction](1-Introduction/README.md) | Lær historien bak dette feltet | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Rettferdighet og maskinlæring | [Introduction](1-Introduction/README.md) | Hva er de viktige filosofiske spørsmålene rundt rettferdighet som studenter bør vurdere når de bygger og anvender ML-modeller? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Teknikker for maskinlæring | [Introduction](1-Introduction/README.md) | Hvilke teknikker bruker ML-forskere for å bygge ML-modeller? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Introduksjon til regresjon | [Regression](2-Regression/README.md) | Kom i gang med Python og Scikit-learn for regresjonsmodeller | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Nordamerikanske gresskarpriser 🎃 | [Regression](2-Regression/README.md) | Visualiser og rens data i forberedelse til ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Nordamerikanske gresskarpriser 🎃 | [Regression](2-Regression/README.md) | Bygg lineære og polynomiske regresjonsmodeller | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Nordamerikanske gresskarpriser 🎃 | [Regression](2-Regression/README.md) | Bygg en logistisk regresjonsmodell | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | En webapp 🔌 | [Web App](3-Web-App/README.md) | Bygg en webapp for å bruke din trente modell | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Introduksjon til klassifisering | [Classification](4-Classification/README.md) | Rens, forbered og visualiser data; introduksjon til klassifisering | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Deilige asiatiske og indiske kjøkken 🍜 | [Classification](4-Classification/README.md) | Introduksjon til klassifikatorer | [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 | Deilige asiatiske og indiske kjøkken 🍜 | [Classification](4-Classification/README.md) | Flere klassifikatorer | [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 | Deilige asiatiske og indiske kjøkken 🍜 | [Classification](4-Classification/README.md) | Bygg en anbefalingswebapp ved bruk av din modell | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Introduksjon til klynging | [Clustering](5-Clustering/README.md) | Rens, forbered og visualiser data; introduksjon til klynging | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Utforske nigerianske musikksmaker 🎧 | [Clustering](5-Clustering/README.md) | Utforsk K-Means klyngemetoden | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Introduksjon til naturlig språkbehandling ☕️ | [Natural language processing](6-NLP/README.md) | Lær det grunnleggende om NLP ved å bygge en enkel bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Vanlige NLP-oppgaver ☕️ | [Natural language processing](6-NLP/README.md) | Fordyp din NLP-kunnskap ved å forstå vanlige oppgaver som kreves ved håndtering av språkstrukturer | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Oversettelse og sentimentanalyse ♥️ | [Natural language processing](6-NLP/README.md) | Oversettelse og sentimentanalyse med Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantiske hoteller i Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentanalyse med hotellvurderinger 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantiske hoteller i Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentanalyse med hotellvurderinger 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Introduksjon til tidsserieprognoser | [Time series](7-TimeSeries/README.md) | Introduksjon til tidsserieprognoser | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Verdens strømforbruk ⚡️ - tidsserieprognoser med ARIMA | [Time series](7-TimeSeries/README.md) | Tidsserieprognoser med ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Verdens strømforbruk ⚡️ - tidsserieprognoser med SVR | [Time series](7-TimeSeries/README.md) | Tidsserieprognoser med Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Introduksjon til forsterkningslæring | [Reinforcement learning](8-Reinforcement/README.md) | Introduksjon til forsterkningslæring med Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Hjelp Peter å unngå ulven! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Forsterkningslæring Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Virkelige ML-scenarier og applikasjoner | [ML in the Wild](9-Real-World/README.md) | Interessante og avslørende virkelige applikasjoner av klassisk ML | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Modellfeilsøking i ML ved bruk av RAI dashboard | [ML in the Wild](9-Real-World/README.md) | Modellfeilsøking i maskinlæring ved bruk av Responsible AI dashboard-komponenter | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [finn alle tilleggsmaterialer for dette kurset i vår Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -## Offline tilgang +## Offline-tilgang -Du kan kjøre denne dokumentasjonen offline ved å bruke [Docsify](https://docsify.js.org/#/). Fork dette repoet, [installer Docsify](https://docsify.js.org/#/quickstart) på din lokale maskin, og skriv deretter `docsify serve` i rotmappen til dette repoet. Nettstedet vil bli servert på port 3000 på din localhost: `localhost:3000`. +Du kan kjøre denne dokumentasjonen offline ved å bruke [Docsify](https://docsify.js.org/#/). Fork dette repoet, [installer Docsify](https://docsify.js.org/#/quickstart) på din lokale maskin, og deretter i rotmappen til dette repoet, skriv `docsify serve`. Nettstedet vil bli servert på port 3000 på din localhost: `localhost:3000`. ## PDF-er -Finn en PDF av læreplanen med lenker [her](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Finn en pdf av læreplanen med lenker [her](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). + ## 🎒 Andre kurs -Teamet vårt produserer andre kurs! Sjekk ut: +Vårt team produserer andre kurs! Sjekk ut: +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + ### Azure / Edge / MCP / Agenter [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) [![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -169,7 +179,7 @@ Teamet vårt produserer andre kurs! Sjekk ut: [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### Generativ AI-serie [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) @@ -177,7 +187,7 @@ Teamet vårt produserer andre kurs! Sjekk ut: [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### Kjerneopplæring [![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) [![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) @@ -188,7 +198,7 @@ Teamet vårt produserer andre kurs! Sjekk ut: [![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### Copilot-serien [![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) [![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) @@ -208,6 +218,6 @@ Hvis du har produktfeedback eller opplever feil under bygging, besøk: --- -**Ansvarsfraskrivelse**: -Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi tilstreber nøyaktighet, vennligst vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen. +**Ansvarsfraskrivelse**: +Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vennligst vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på originalspråket skal anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen. \ No newline at end of file diff --git a/translations/pa/README.md b/translations/pa/README.md index f7cacb63b..700b633c6 100644 --- a/translations/pa/README.md +++ b/translations/pa/README.md @@ -1,8 +1,8 @@ -[ਅਰਬੀ](../ar/README.md) | [ਬੰਗਾਲੀ](../bn/README.md) | [ਬੁਲਗਾਰੀਆਈ](../bg/README.md) | [ਬਰਮੀ (ਮਿਆਂਮਾਰ)](../my/README.md) | [ਚੀਨੀ (ਸਰਲ)](../zh/README.md) | [ਚੀਨੀ (ਪ੍ਰੰਪਰਾਗਤ, ਹਾਂਗ ਕਾਂਗ)](../hk/README.md) | [ਚੀਨੀ (ਪ੍ਰੰਪਰਾਗਤ, ਮਕਾਉ)](../mo/README.md) | [ਚੀਨੀ (ਪ੍ਰੰਪਰਾਗਤ, ਤਾਈਵਾਨ)](../tw/README.md) | [ਕਰੋਏਸ਼ੀਆਈ](../hr/README.md) | [ਚੈੱਕ](../cs/README.md) | [ਡੈਨਿਸ਼](../da/README.md) | [ਡੱਚ](../nl/README.md) | [ਇਸਟੋਨੀਆਈ](../et/README.md) | [ਫਿਨਿਸ਼](../fi/README.md) | [ਫਰਾਂਸੀਸੀ](../fr/README.md) | [ਜਰਮਨ](../de/README.md) | [ਗ੍ਰੀਕ](../el/README.md) | [ਹਿਬਰੂ](../he/README.md) | [ਹਿੰਦੀ](../hi/README.md) | [ਹੰਗਰੀਆਈ](../hu/README.md) | [ਇੰਡੋਨੇਸ਼ੀਆਈ](../id/README.md) | [ਇਟਾਲੀਅਨ](../it/README.md) | [ਜਾਪਾਨੀ](../ja/README.md) | [ਕੋਰੀਆਈ](../ko/README.md) | [ਲਿਥੂਆਨੀਅਨ](../lt/README.md) | [ਮਲੇ](../ms/README.md) | [ਮਰਾਠੀ](../mr/README.md) | [ਨੇਪਾਲੀ](../ne/README.md) | [ਨਾਈਜੀਰੀਆਈ ਪਿਡਜਿਨ](../pcm/README.md) | [ਨਾਰਵੇਜੀਅਨ](../no/README.md) | [ਫਾਰਸੀ (ਪਾਰਸੀ)](../fa/README.md) | [ਪੋਲਿਸ਼](../pl/README.md) | [ਪੁਰਤਗਾਲੀ (ਬ੍ਰਾਜ਼ੀਲ)](../br/README.md) | [ਪੁਰਤਗਾਲੀ (ਪੁਰਤਗਾਲ)](../pt/README.md) | [ਪੰਜਾਬੀ (ਗੁਰਮੁਖੀ)](./README.md) | [ਰੋਮਾਨੀਆਈ](../ro/README.md) | [ਰੂਸੀ](../ru/README.md) | [ਸਰਬੀਆਈ (ਸਿਰਿਲਿਕ)](../sr/README.md) | [ਸਲੋਵਾਕ](../sk/README.md) | [ਸਲੋਵੇਨੀਆਈ](../sl/README.md) | [ਸਪੇਨੀ](../es/README.md) | [ਸਵਾਹਿਲੀ](../sw/README.md) | [ਸਵੀਡਿਸ਼](../sv/README.md) | [ਟੈਗਾਲੋਗ (ਫਿਲੀਪੀਨੋ)](../tl/README.md) | [ਤਮਿਲ](../ta/README.md) | [ਥਾਈ](../th/README.md) | [ਤੁਰਕੀ](../tr/README.md) | [ਯੂਕਰੇਨੀ](../uk/README.md) | [ਉਰਦੂ](../ur/README.md) | [ਵਿਅਤਨਾਮੀ](../vi/README.md) +[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)](./README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) -#### ਸਾਡੇ ਸਮੁਦਾਇ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ +#### ਸਾਡੀ ਕਮਿਊਨਿਟੀ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -ਸਾਡੇ ਕੋਲ AI ਸਿੱਖਣ ਲਈ ਇੱਕ Discord ਸਿਰੀਜ਼ ਚੱਲ ਰਹੀ ਹੈ। ਹੋਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰੋ ਅਤੇ ਸਾਡੇ ਨਾਲ [Learn with AI Series](https://aka.ms/learnwithai/discord) 'ਤੇ 18 - 30 ਸਤੰਬਰ, 2025 ਨੂੰ ਸ਼ਾਮਲ ਹੋਵੋ। ਤੁਸੀਂ GitHub Copilot ਨੂੰ ਡਾਟਾ ਸਾਇੰਸ ਲਈ ਵਰਤਣ ਦੇ ਟਿੱਪਸ ਅਤੇ ਟ੍ਰਿਕਸ ਸਿੱਖੋਗੇ। +ਸਾਡੇ ਕੋਲ ਇੱਕ Discord ਸਿੱਖਣ ਵਾਲੀ AI ਸੀਰੀਜ਼ ਚੱਲ ਰਹੀ ਹੈ, ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ ਅਤੇ ਸਾਡੇ ਨਾਲ ਜੁੜਨ ਲਈ [Learn with AI Series](https://aka.ms/learnwithai/discord) 'ਤੇ 18 - 30 ਸਤੰਬਰ, 2025 ਨੂੰ ਜਾਓ। ਤੁਸੀਂ GitHub Copilot ਨੂੰ ਡਾਟਾ ਸਾਇੰਸ ਲਈ ਵਰਤਣ ਦੇ ਟਿਪਸ ਅਤੇ ਟ੍ਰਿਕਸ ਪ੍ਰਾਪਤ ਕਰੋਗੇ। ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.pa.png) -# ਸ਼ੁਰੂਆਤੀ ਲਈ ਮਸ਼ੀਨ ਲਰਨਿੰਗ - ਇੱਕ ਪਾਠਕ੍ਰਮ +# ਸ਼ੁਰੂਆਤੀ ਲਈ ਮਸ਼ੀਨ ਲਰਨਿੰਗ - ਇੱਕ ਕੋਰਸ -> 🌍 ਦੁਨੀਆ ਦੇ ਸੱਭਿਆਚਾਰਾਂ ਰਾਹੀਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਖੋਜ ਕਰਦੇ ਹੋਏ ਦੁਨੀਆ ਦਾ ਦੌਰਾ ਕਰੋ 🌍 +> 🌍 ਦੁਨੀਆ ਭਰ ਦੀ ਯਾਤਰਾ ਕਰਦੇ ਹੋਏ ਅਸੀਂ ਦੁਨੀਆ ਦੇ ਸੱਭਿਆਚਾਰਾਂ ਰਾਹੀਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਖੋਜ ਕਰਦੇ ਹਾਂ 🌍 -Microsoft ਦੇ Cloud Advocates ਨੇ **ਮਸ਼ੀਨ ਲਰਨਿੰਗ** ਬਾਰੇ 12 ਹਫ਼ਤਿਆਂ, 26 ਪਾਠਾਂ ਦਾ ਪਾਠਕ੍ਰਮ ਪੇਸ਼ ਕਰਨ ਵਿੱਚ ਖੁਸ਼ੀ ਮਹਿਸੂਸ ਕੀਤੀ ਹੈ। ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ, ਤੁਸੀਂ **ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ** ਬਾਰੇ ਸਿੱਖੋਗੇ, ਮੁੱਖ ਤੌਰ 'ਤੇ Scikit-learn ਨੂੰ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਵਜੋਂ ਵਰਤਦੇ ਹੋਏ ਅਤੇ ਡੀਪ ਲਰਨਿੰਗ ਤੋਂ ਬਚਦੇ ਹੋਏ, ਜੋ ਸਾਡੇ [AI for Beginners' curriculum](https://aka.ms/ai4beginners) ਵਿੱਚ ਕਵਰ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਸ ਪਾਠਕ੍ਰਮ ਨੂੰ ਸਾਡੇ ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) ਨਾਲ ਜੋੜੋ! +Microsoft ਦੇ ਕਲਾਉਡ ਐਡਵੋਕੇਟਸ ਖੁਸ਼ ਹਨ ਕਿ ਉਹ 12 ਹਫ਼ਤਿਆਂ, 26 ਪਾਠਾਂ ਦਾ ਕੋਰਸ ਪੇਸ਼ ਕਰ ਰਹੇ ਹਨ ਜੋ ਸਿਰਫ਼ **ਮਸ਼ੀਨ ਲਰਨਿੰਗ** ਬਾਰੇ ਹੈ। ਇਸ ਕੋਰਸ ਵਿੱਚ, ਤੁਸੀਂ ਕਈ ਵਾਰ ਕਿਹਾ ਜਾਂਦਾ ਹੈ **ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ** ਬਾਰੇ ਸਿੱਖੋਗੇ, ਜੋ ਮੁੱਖ ਤੌਰ 'ਤੇ Scikit-learn ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਅਤੇ ਡੀਪ ਲਰਨਿੰਗ ਤੋਂ ਬਚਦਾ ਹੈ, ਜੋ ਸਾਡੇ [AI for Beginners' curriculum](https://aka.ms/ai4beginners) ਵਿੱਚ ਕਵਰ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਪਾਠ ਸਾਡੇ ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) ਨਾਲ ਜੋੜ ਕੇ ਵੀ ਕਰ ਸਕਦੇ ਹੋ। -ਸਾਡੇ ਨਾਲ ਦੁਨੀਆ ਦੇ ਵੱਖ-ਵੱਖ ਖੇਤਰਾਂ ਦੇ ਡਾਟਾ 'ਤੇ ਇਹ ਕਲਾਸਿਕ ਤਕਨੀਕਾਂ ਲਾਗੂ ਕਰਦੇ ਹੋਏ ਯਾਤਰਾ ਕਰੋ। ਹਰ ਪਾਠ ਵਿੱਚ ਪਾਠ ਤੋਂ ਪਹਿਲਾਂ ਅਤੇ ਬਾਅਦ ਦੇ ਕਵਿਜ਼, ਪਾਠ ਪੂਰਾ ਕਰਨ ਲਈ ਲਿਖਤ ਨਿਰਦੇਸ਼, ਇੱਕ ਹੱਲ, ਇੱਕ ਅਸਾਈਨਮੈਂਟ, ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ ਸ਼ਾਮਲ ਹੈ। ਸਾਡੀ ਪ੍ਰੋਜੈਕਟ-ਅਧਾਰਿਤ ਪੈਡਾਗੌਜੀ ਤੁਹਾਨੂੰ ਸਿੱਖਣ ਦੇ ਦੌਰਾਨ ਬਣਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ, ਜੋ ਨਵੀਆਂ ਹੁਨਰਾਂ ਨੂੰ 'ਚਿਪਕਾਉਣ' ਦਾ ਸਾਬਤ ਤਰੀਕਾ ਹੈ। +ਸਾਡੇ ਨਾਲ ਦੁਨੀਆ ਭਰ ਦੀ ਯਾਤਰਾ ਕਰੋ ਜਦੋਂ ਅਸੀਂ ਇਹ ਕਲਾਸਿਕ ਤਕਨੀਕਾਂ ਦੁਨੀਆ ਦੇ ਕਈ ਖੇਤਰਾਂ ਦੇ ਡਾਟਾ 'ਤੇ ਲਾਗੂ ਕਰਦੇ ਹਾਂ। ਹਰ ਪਾਠ ਵਿੱਚ ਪ੍ਰੀ ਅਤੇ ਪੋਸਟ-ਪਾਠ ਕਵਿਜ਼, ਲਿਖਤੀ ਹਦਾਇਤਾਂ, ਹੱਲ, ਅਸਾਈਨਮੈਂਟ ਅਤੇ ਹੋਰ ਸ਼ਾਮਲ ਹਨ। ਸਾਡੀ ਪ੍ਰੋਜੈਕਟ-ਅਧਾਰਿਤ ਪਾਠ-ਪ੍ਰਣਾਲੀ ਤੁਹਾਨੂੰ ਬਣਾਉਂਦੇ ਹੋਏ ਸਿੱਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ, ਜੋ ਨਵੀਆਂ ਹੁਨਰਾਂ ਨੂੰ ਸਥਿਰ ਕਰਨ ਦਾ ਸਾਬਤ ਤਰੀਕਾ ਹੈ। -**✍️ ਸਾਡੇ ਲੇਖਕਾਂ ਨੂੰ ਦਿਲੋਂ ਧੰਨਵਾਦ** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu ਅਤੇ Amy Boyd +**✍️ ਸਾਡੇ ਲੇਖਕਾਂ ਨੂੰ ਦਿਲੋਂ ਧੰਨਵਾਦ** ਜੇਨ ਲੂਪਰ, ਸਟੀਫਨ ਹਾਵਲ, ਫ੍ਰਾਂਸੇਸਕਾ ਲਾਜ਼ੇਰੀ, ਟੋਮੋਮੀ ਇਮੁਰਾ, ਕੈਸੀ ਬਰੇਵਿਊ, ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ, ਕ੍ਰਿਸ ਨੋਰਿੰਗ, ਅਨੀਰਬਨ ਮੁਖਰਜੀ, ਓਰਨੇਲਾ ਅਲਟੁਨਯਾਨ, ਰੁਥ ਯਾਕੁਬੂ ਅਤੇ ਐਮੀ ਬੋਇਡ -**🎨 ਸਾਡੇ ਚਿੱਤਰਕਾਰਾਂ ਨੂੰ ਵੀ ਧੰਨਵਾਦ** Tomomi Imura, Dasani Madipalli, ਅਤੇ Jen Looper +**🎨 ਸਾਡੇ ਇਲਸਟਰੈਟਰਾਂ ਨੂੰ ਵੀ ਧੰਨਵਾਦ** ਟੋਮੋਮੀ ਇਮੁਰਾ, ਦਾਸਾਨੀ ਮਾਡਿਪੱਲੀ, ਅਤੇ ਜੇਨ ਲੂਪਰ -**🙏 ਵਿਸ਼ੇਸ਼ ਧੰਨਵਾਦ 🙏 ਸਾਡੇ Microsoft Student Ambassador ਲੇਖਕਾਂ, ਸਮੀਖਾਕਾਰਾਂ, ਅਤੇ ਸਮੱਗਰੀ ਯੋਗਦਾਨਕਰਤਾਵਾਂ ਨੂੰ**, ਖਾਸ ਤੌਰ 'ਤੇ Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, ਅਤੇ Snigdha Agarwal +**🙏 ਖਾਸ ਧੰਨਵਾਦ 🙏 ਸਾਡੇ Microsoft Student Ambassador ਲੇਖਕਾਂ, ਸਮੀਖਿਆਕਾਰਾਂ ਅਤੇ ਸਮੱਗਰੀ ਯੋਗਦਾਨਕਾਰਾਂ ਨੂੰ**, ਖਾਸ ਕਰਕੇ ਰਿਸ਼ਿਤ ਦਾਗਲੀ, ਮੁਹੰਮਦ ਸਾਕਿਬ ਖਾਨ ਇਨਾਨ, ਰੋਹਨ ਰਾਜ, ਅਲੈਕਜ਼ੈਂਡਰੂ ਪੇਟਰੇਸਕੂ, ਅਭਿਸ਼ੇਕ ਜੈਸਵਾਲ, ਨਵਰੀਨ ਤਬਾਸ਼ਸਮ, ਇਓਅਨ ਸਮੁਇਲਾ, ਅਤੇ ਸਨਿਗਧਾ ਅਗਰਵਾਲ -**🤩 ਵਾਧੂ ਧੰਨਵਾਦ Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, ਅਤੇ Vidushi Gupta ਨੂੰ ਸਾਡੇ R ਪਾਠਾਂ ਲਈ!** +**🤩 ਵਾਧੂ ਸ਼ੁਕਰਾਨਾ Microsoft Student Ambassadors ਐਰਿਕ ਵਾਂਜਾਉ, ਜਸਲੀਨ ਸੋੰਧੀ, ਅਤੇ ਵਿਦੂਸ਼ੀ ਗੁਪਤਾ ਨੂੰ ਸਾਡੇ R ਪਾਠਾਂ ਲਈ!** # ਸ਼ੁਰੂਆਤ ਕਰਨਾ -ਇਹ ਕਦਮ ਅਨੁਸਰਣ ਕਰੋ: -1. **Repository ਨੂੰ Fork ਕਰੋ**: ਇਸ ਪੇਜ ਦੇ ਸਿਖਰ-ਦਾਖਣੇ ਕੋਨੇ 'ਤੇ "Fork" ਬਟਨ 'ਤੇ ਕਲਿਕ ਕਰੋ। -2. **Repository ਨੂੰ Clone ਕਰੋ**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +ਇਹ ਕਦਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ: +1. **ਰਿਪੋਜ਼ਿਟਰੀ ਨੂੰ ਫੋਰਕ ਕਰੋ**: ਇਸ ਪੰਨੇ ਦੇ ਸੱਜੇ-ਉਪਰਲੇ ਕੋਨੇ ਵਿੱਚ "Fork" ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ। +2. **ਰਿਪੋਜ਼ਿਟਰੀ ਨੂੰ ਕਲੋਨ ਕਰੋ**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [ਇਸ ਕੋਰਸ ਲਈ ਸਾਰੇ ਵਾਧੂ ਸਰੋਤ Microsoft Learn collection ਵਿੱਚ ਲੱਭੋ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [ਇਸ ਕੋਰਸ ਲਈ ਸਾਰੇ ਵਾਧੂ ਸਰੋਤ ਸਾਡੇ Microsoft Learn ਕਲੇਕਸ਼ਨ ਵਿੱਚ ਲੱਭੋ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **ਮਦਦ ਦੀ ਲੋੜ ਹੈ?** ਸਾਡੇ [Troubleshooting Guide](TROUBLESHOOTING.md) ਵਿੱਚ ਸਥਾਪਨਾ, ਸੈਟਅਪ, ਅਤੇ ਪਾਠਾਂ ਚਲਾਉਣ ਨਾਲ ਸੰਬੰਧਿਤ ਆਮ ਸਮੱਸਿਆਵਾਂ ਲਈ ਹੱਲ ਲੱਭੋ। +> 🔧 **ਮਦਦ ਚਾਹੀਦੀ ਹੈ?** ਸਾਡੇ [Troubleshooting Guide](TROUBLESHOOTING.md) ਨੂੰ ਚੈੱਕ ਕਰੋ ਜੋ ਇੰਸਟਾਲੇਸ਼ਨ, ਸੈਟਅਪ ਅਤੇ ਪਾਠ ਚਲਾਉਣ ਨਾਲ ਸਬੰਧਤ ਆਮ ਸਮੱਸਿਆਵਾਂ ਦੇ ਹੱਲ ਦਿੰਦਾ ਹੈ। -**[ਵਿਦਿਆਰਥੀ](https://aka.ms/student-page)**, ਇਸ ਪਾਠਕ੍ਰਮ ਨੂੰ ਵਰਤਣ ਲਈ, ਪੂਰੇ ਰਿਪੋ ਨੂੰ ਆਪਣੇ GitHub ਖਾਤੇ ਵਿੱਚ Fork ਕਰੋ ਅਤੇ ਅਪਣੇ ਆਪ ਜਾਂ ਇੱਕ ਸਮੂਹ ਨਾਲ ਅਭਿਆਸ ਪੂਰਾ ਕਰੋ: +**[ਵਿਦਿਆਰਥੀ](https://aka.ms/student-page)**, ਇਸ ਕੋਰਸ ਨੂੰ ਵਰਤਣ ਲਈ, ਪੂਰੇ ਰਿਪੋ ਨੂੰ ਆਪਣੇ GitHub ਖਾਤੇ ਵਿੱਚ ਫੋਰਕ ਕਰੋ ਅਤੇ ਅਭਿਆਸ ਆਪਣੇ ਆਪ ਜਾਂ ਗਰੁੱਪ ਨਾਲ ਪੂਰੇ ਕਰੋ: -- ਪਾਠ ਤੋਂ ਪਹਿਲਾਂ ਕਵਿਜ਼ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ। -- ਪਾਠ ਪੜ੍ਹੋ ਅਤੇ ਗਤੀਵਿਧੀਆਂ ਪੂਰੀਆਂ ਕਰੋ, ਹਰ ਗਿਆਨ ਜਾਂਚ 'ਤੇ ਰੁਕਦੇ ਅਤੇ ਵਿਚਾਰ ਕਰਦੇ ਹੋਏ। -- ਪਾਠਾਂ ਨੂੰ ਸਮਝ ਕੇ ਪ੍ਰੋਜੈਕਟ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਨਾ ਕਿ ਹੱਲ ਕੋਡ ਚਲਾਉਣ ਦੀ; ਹਾਲਾਂਕਿ ਉਹ ਕੋਡ `/solution` ਫੋਲਡਰਾਂ ਵਿੱਚ ਪ੍ਰੋਜੈਕਟ-ਅਧਾਰਿਤ ਪਾਠਾਂ ਵਿੱਚ ਉਪਲਬਧ ਹੈ। -- ਪਾਠ ਤੋਂ ਬਾਅਦ ਕਵਿਜ਼ ਲਓ। -- ਚੁਣੌਤੀ ਪੂਰੀ ਕਰੋ। -- ਅਸਾਈਨਮੈਂਟ ਪੂਰੀ ਕਰੋ। -- ਪਾਠ ਸਮੂਹ ਪੂਰਾ ਕਰਨ ਤੋਂ ਬਾਅਦ, [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) 'ਤੇ ਜਾਓ ਅਤੇ "ਜਨਤਕ ਸਿੱਖੋ" PAT ਰੂਬ੍ਰਿਕ ਭਰ ਕੇ। PAT ਇੱਕ ਪ੍ਰਗਤੀ ਮੁਲਾਂਕਣ ਸੰਦ ਹੈ ਜੋ ਤੁਹਾਡੇ ਸਿੱਖਣ ਨੂੰ ਅੱਗੇ ਵਧਾਉਣ ਲਈ ਇੱਕ ਰੂਬ੍ਰਿਕ ਹੈ। ਤੁਸੀਂ ਹੋਰ PATs 'ਤੇ ਪ੍ਰਤੀਕ੍ਰਿਆ ਦੇ ਸਕਦੇ ਹੋ ਤਾਂ ਕਿ ਅਸੀਂ ਇਕੱਠੇ ਸਿੱਖ ਸਕੀਏ। +- ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ। +- ਲੈਕਚਰ ਪੜ੍ਹੋ ਅਤੇ ਗਤੀਵਿਧੀਆਂ ਪੂਰੀਆਂ ਕਰੋ, ਹਰ ਗਿਆਨ ਜਾਂਚ 'ਤੇ ਰੁਕ ਕੇ ਸੋਚੋ। +- ਹੱਲ ਕੋਡ ਚਲਾਉਣ ਦੀ ਬਜਾਏ ਪਾਠਾਂ ਨੂੰ ਸਮਝ ਕੇ ਪ੍ਰੋਜੈਕਟ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ; ਹਾਲਾਂਕਿ ਉਹ ਕੋਡ ਹਰ ਪ੍ਰੋਜੈਕਟ-ਕੇਂਦਰਿਤ ਪਾਠ ਵਿੱਚ `/solution` ਫੋਲਡਰ ਵਿੱਚ ਉਪਲਬਧ ਹੈ। +- ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼ ਲਓ। +- ਚੈਲੰਜ ਪੂਰਾ ਕਰੋ। +- ਅਸਾਈਨਮੈਂਟ ਪੂਰਾ ਕਰੋ। +- ਇੱਕ ਪਾਠ ਸਮੂਹ ਪੂਰਾ ਕਰਨ ਤੋਂ ਬਾਅਦ, [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) 'ਤੇ ਜਾਓ ਅਤੇ "ਜਾਣਕਾਰੀ ਸਾਂਝੀ ਕਰੋ" ਲਈ ਸਹੀ PAT ਰੂਬਰਿਕ ਭਰੋ। 'PAT' ਇੱਕ ਪ੍ਰਗਤੀ ਮੁਲਾਂਕਣ ਸੰਦ ਹੈ ਜੋ ਤੁਹਾਡੇ ਸਿੱਖਣ ਨੂੰ ਅੱਗੇ ਵਧਾਉਂਦਾ ਹੈ। ਤੁਸੀਂ ਹੋਰ PATs 'ਤੇ ਵੀ ਪ੍ਰਤੀਕਿਰਿਆ ਕਰ ਸਕਦੇ ਹੋ ਤਾਂ ਜੋ ਅਸੀਂ ਇਕੱਠੇ ਸਿੱਖ ਸਕੀਏ। -> ਹੋਰ ਅਧਿਐਨ ਲਈ, ਅਸੀਂ ਇਹ [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) ਮੋਡੀਊਲ ਅਤੇ ਸਿੱਖਣ ਦੇ ਰਾਹਾਂ ਦੀ ਪਾਲਣਾ ਕਰਨ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦੇ ਹਾਂ। +> ਅੱਗੇ ਪੜ੍ਹਾਈ ਲਈ, ਅਸੀਂ ਇਹ [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) ਮਾਡਿਊਲ ਅਤੇ ਸਿੱਖਣ ਦੇ ਰਸਤੇ ਅਨੁਸਰਣ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦੇ ਹਾਂ। -**ਅਧਿਆਪਕ**, ਅਸੀਂ ਇਸ ਪਾਠਕ੍ਰਮ ਨੂੰ ਵਰਤਣ ਲਈ ਕੁਝ ਸੁਝਾਅ [ਸ਼ਾਮਲ ਕੀਤੇ ਹਨ](for-teachers.md)। +**ਅਧਿਆਪਕਾਂ**, ਅਸੀਂ [ਕੁਝ ਸੁਝਾਅ](for-teachers.md) ਦਿੱਤੇ ਹਨ ਕਿ ਇਸ ਕੋਰਸ ਨੂੰ ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ। --- ## ਵੀਡੀਓ ਵਾਕਥਰੂ -ਕੁਝ ਪਾਠ ਛੋਟੇ ਰੂਪ ਵਿੱਚ ਵੀਡੀਓ ਵਜੋਂ ਉਪਲਬਧ ਹਨ। ਤੁਸੀਂ ਇਹ ਸਾਰੇ ਪਾਠਾਂ ਵਿੱਚ ਲਾਈਨ ਵਿੱਚ ਲੱਭ ਸਕਦੇ ਹੋ, ਜਾਂ [Microsoft Developer YouTube channel](https://aka.ms/ml-beginners-videos) 'ਤੇ ML for Beginners ਪਲੇਲਿਸਟ 'ਤੇ ਕਲਿਕ ਕਰਕੇ ਹੇਠਾਂ ਦਿੱਤੇ ਚਿੱਤਰ 'ਤੇ ਲੱਭ ਸਕਦੇ ਹੋ। +ਕੁਝ ਪਾਠ ਛੋਟੇ ਫਾਰਮ ਦੇ ਵੀਡੀਓ ਦੇ ਰੂਪ ਵਿੱਚ ਉਪਲਬਧ ਹਨ। ਤੁਸੀਂ ਇਹ ਸਾਰੇ ਪਾਠਾਂ ਵਿੱਚ ਲਾਈਨ ਵਿੱਚ ਜਾਂ [Microsoft Developer YouTube ਚੈਨਲ 'ਤੇ ML for Beginners ਪਲੇਲਿਸਟ](https://aka.ms/ml-beginners-videos) 'ਤੇ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰਕੇ ਵੇਖ ਸਕਦੇ ਹੋ। [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.pa.png)](https://aka.ms/ml-beginners-videos) @@ -87,76 +87,89 @@ Microsoft ਦੇ Cloud Advocates ਨੇ **ਮਸ਼ੀਨ ਲਰਨਿੰਗ** [![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif by** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**ਗਿਫ਼ ਬਨਾਇਆ** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਪ੍ਰੋਜੈਕਟ ਅਤੇ ਇਸਨੂੰ ਬਣਾਉਣ ਵਾਲੇ ਲੋਕਾਂ ਬਾਰੇ ਵੀਡੀਓ ਲਈ! +> 🎥 ਪ੍ਰੋਜੈਕਟ ਅਤੇ ਇਸਨੂੰ ਬਣਾਉਣ ਵਾਲਿਆਂ ਬਾਰੇ ਵੀਡੀਓ ਲਈ ਉਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ! --- -## ਪੈਡਾਗੌਜੀ +## ਪੈਡਾਗੋਜੀ -ਅਸੀਂ ਇਸ ਪਾਠਕ੍ਰਮ ਨੂੰ ਬਣਾਉਣ ਦੌਰਾਨ ਦੋ ਪੈਡਾਗੌਜੀਕਲ ਸਿਧਾਂਤਾਂ ਨੂੰ ਚੁਣਿਆ ਹੈ: ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਕਿ ਇਹ ਹੱਥ-ਅਧਾਰਿਤ **ਪ੍ਰੋਜੈਕਟ-ਅਧਾਰਿਤ** ਹੈ ਅਤੇ ਇਹ **ਵਾਰੰ-ਵਾਰ ਕਵਿਜ਼** ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। ਇਸਦੇ ਨਾਲ, ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ ਇੱਕ ਸਾਂਝਾ **ਥੀਮ** ਹੈ ਜੋ ਇਸਨੂੰ ਇਕੱਠਾ ਰੱਖਣ ਲਈ। +ਅਸੀਂ ਇਸ ਕੋਰਸ ਨੂੰ ਬਣਾਉਂਦੇ ਸਮੇਂ ਦੋ ਪੈਡਾਗੋਜੀਕਲ ਸਿਧਾਂਤ ਚੁਣੇ ਹਨ: ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਕਿ ਇਹ ਹੱਥ-ਵਿੱਚਲਾ **ਪ੍ਰੋਜੈਕਟ-ਅਧਾਰਿਤ** ਹੈ ਅਤੇ ਇਸ ਵਿੱਚ **ਅਕਸਰ ਕਵਿਜ਼** ਸ਼ਾਮਲ ਹਨ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਇਸ ਕੋਰਸ ਦਾ ਇੱਕ ਸਾਂਝਾ **ਥੀਮ** ਹੈ ਜੋ ਇਸਨੂੰ ਇਕੱਠਾ ਕਰਦਾ ਹੈ। -ਸੁਨਿਸ਼ਚਿਤ ਕਰਕੇ ਕਿ ਸਮੱਗਰੀ ਪ੍ਰੋਜੈਕਟਾਂ ਨਾਲ ਸੰਗਤ ਰੱਖਦੀ ਹੈ, ਪ੍ਰਕਿਰਿਆ ਵਿਦਿਆਰਥੀਆਂ ਲਈ ਹੋਰ ਰੁਚਿਕਰ ਬਣਾਈ ਜਾਂਦੀ ਹੈ ਅਤੇ ਧਾਰਨਾਵਾਂ ਦੀ ਰਿਟੇਨਸ਼ਨ ਵਧਾਈ ਜਾਂਦੀ ਹੈ। ਇਸਦੇ ਨਾਲ, ਕਲਾਸ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਘੱਟ-ਦਬਾਅ ਵਾਲਾ ਕਵਿਜ਼ ਵਿਦਿਆਰਥੀ ਨੂੰ ਇੱਕ ਵਿਸ਼ੇ ਸਿੱਖਣ ਵੱਲ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦਾ ਹੈ, ਜਦਕਿ ਕਲਾਸ ਤੋਂ ਬਾਅਦ ਦੂਜਾ ਕਵਿਜ਼ ਹੋਰ ਰਿਟੇਨਸ਼ਨ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਪਾਠਕ੍ਰਮ ਲਚਕੀਲਾ ਅਤੇ ਮਜ਼ੇਦਾਰ ਬਣਾਇਆ ਗਿਆ ਹੈ ਅਤੇ ਇਸਨੂੰ ਪੂਰੇ ਜਾਂ ਅੰਸ਼ ਵਿੱਚ ਲਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਪ੍ਰੋਜੈਕਟ ਛੋਟੇ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ ਅਤੇ 12 ਹਫ਼ਤਿਆਂ ਦੇ ਚੱਕਰ ਦੇ ਅੰਤ ਤੱਕ ਵਧਦੇ ਹਨ। ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ ML ਦੇ ਅਸਲ-ਦੁਨੀਆ ਦੇ ਐਪਲੀਕੇਸ਼ਨਾਂ 'ਤੇ ਇੱਕ ਪੋਸਟਸਕ੍ਰਿਪਟ ਵੀ ਸ਼ਾਮਲ ਹੈ, ਜਿਸਨੂੰ ਵਾਧੂ ਕ੍ਰੈਡਿਟ ਵਜੋਂ ਜਾਂ ਚਰਚਾ ਦੇ ਆਧਾਰ ਵਜੋਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। +ਸਮੱਗਰੀ ਨੂੰ ਪ੍ਰੋਜੈਕਟਾਂ ਨਾਲ ਜੋੜ ਕੇ, ਪ੍ਰਕਿਰਿਆ ਵਿਦਿਆਰਥੀਆਂ ਲਈ ਹੋਰ ਮਨੋਰੰਜਕ ਬਣਾਈ ਜਾਂਦੀ ਹੈ ਅਤੇ ਧਾਰਣਾ ਦੀ ਸਮਝ ਵਧਦੀ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਕਲਾਸ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਘੱਟ-ਦਬਾਅ ਵਾਲਾ ਕਵਿਜ਼ ਵਿਦਿਆਰਥੀ ਨੂੰ ਵਿਸ਼ੇ ਸਿੱਖਣ ਲਈ ਤਿਆਰ ਕਰਦਾ ਹੈ, ਜਦਕਿ ਕਲਾਸ ਤੋਂ ਬਾਅਦ ਦੂਜਾ ਕਵਿਜ਼ ਹੋਰ ਸਮਝ ਨੂੰ ਮਜ਼ਬੂਤ ਕਰਦਾ ਹੈ। ਇਹ ਕੋਰਸ ਲਚਕੀਲਾ ਅਤੇ ਮਨੋਰੰਜਕ ਬਣਾਇਆ ਗਿਆ ਹੈ ਅਤੇ ਪੂਰਾ ਜਾਂ ਹਿੱਸਾ-ਹਿੱਸਾ ਕਰ ਸਕਦੇ ਹੋ। ਪ੍ਰੋਜੈਕਟ ਛੋਟੇ ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ ਅਤੇ 12 ਹਫ਼ਤਿਆਂ ਦੇ ਚੱਕਰ ਦੇ ਅੰਤ ਤੱਕ ਵੱਧ ਜਟਿਲ ਹੋ ਜਾਂਦੇ ਹਨ। ਇਸ ਕੋਰਸ ਵਿੱਚ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਅਸਲੀ ਦੁਨੀਆ ਦੇ ਐਪਲੀਕੇਸ਼ਨਾਂ 'ਤੇ ਇੱਕ ਪੋਸਟਸਕ੍ਰਿਪਟ ਵੀ ਸ਼ਾਮਲ ਹੈ, ਜੋ ਵਾਧੂ ਕ੍ਰੈਡਿਟ ਜਾਂ ਚਰਚਾ ਲਈ ਆਧਾਰ ਵਜੋਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। -> ਸਾਡੇ [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), ਅਤੇ [Troubleshooting](TROUBLESHOOTING.md) ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ ਲੱਭੋ। ਅਸੀਂ ਤੁਹਾਡੇ ਰਚਨਾਤਮਕ ਫੀਡਬੈਕ ਦਾ ਸਵਾਗਤ ਕਰਦੇ ਹਾਂ! +> ਸਾਡਾ [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/) +- ਲਿਖਤੀ ਪਾਠ - ਪ੍ਰੋਜੈਕਟ-ਅਧਾਰਿਤ ਪਾਠਾਂ ਲਈ, ਪ੍ਰੋਜੈਕਟ ਬਣਾਉਣ ਲਈ ਕਦਮ-ਦਰ-ਕਦਮ ਗਾਈਡ - ਗਿਆਨ ਜਾਂਚ -- ਇੱਕ ਚੁਣੌਤੀ -- ਵਾਧੂ ਪੜ੍ਹਾਈ +- ਇੱਕ ਚੈਲੰਜ +- ਸਹਾਇਕ ਪੜ੍ਹਾਈ - ਅਸਾਈਨਮੈਂਟ -- [ਪਾਠ ਤੋਂ ਬਾਅਦ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) - -> **ਭਾਸ਼ਾਵਾਂ ਬਾਰੇ ਇੱਕ ਨੋਟ**: ਇਹ ਪਾਠ ਮੁੱਖ ਤੌਰ 'ਤੇ Python ਵਿੱਚ ਲਿਖੇ ਗਏ ਹਨ, ਪਰ ਬਹੁਤ ਸਾਰੇ R ਵਿੱਚ ਵੀ ਉਪਲਬਧ ਹਨ। R ਪਾਠ ਪੂਰਾ ਕਰਨ ਲਈ, `/solution` ਫੋਲਡਰ ਵਿੱਚ ਜਾਓ ਅਤੇ R ਪਾਠ ਲੱਭੋ। ਇਹ .rmd ਐਕਸਟੈਂਸ਼ਨ ਸ਼ਾਮਲ ਕਰਦੇ ਹਨ ਜੋ **R Markdown** ਫਾਈਲ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਜੋ `code chunks` (R ਜਾਂ ਹੋਰ ਭਾਸ਼ਾਵਾਂ ਦੇ) ਅਤੇ `YAML header` (ਜੋ PDF ਵਰਗੇ ਆਉਟਪੁੱਟਾਂ ਨੂੰ ਫਾਰਮੈਟ ਕਰਨ ਦਾ ਮਾਰਗਦਰਸ਼ਨ ਕਰਦਾ ਹੈ) ਨੂੰ `Markdown document` ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ, ਇਹ ਡਾਟਾ ਸਾਇੰਸ ਲਈ ਇੱਕ ਸ਼੍ਰੇਸ਼ਠ ਲੇਖਕ ਫਰੇਮਵਰਕ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਤੁਹਾਨੂੰ ਆਪਣੇ ਕੋ -| 01 | ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦਾ ਪਰਿਚਯ | [Introduction](1-Introduction/README.md) | ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਮੂਲ ਸੰਕਲਪਾਂ ਬਾਰੇ ਸਿੱਖੋ | [Lesson](1-Introduction/1-intro-to-ML/README.md) | ਮੁਹੰਮਦ | -| 02 | ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦਾ ਇਤਿਹਾਸ | [Introduction](1-Introduction/README.md) | ਇਸ ਖੇਤਰ ਦੇ ਪਿਛਲੇ ਇਤਿਹਾਸ ਬਾਰੇ ਸਿੱਖੋ | [Lesson](1-Introduction/2-history-of-ML/README.md) | ਜੈਨ ਅਤੇ ਐਮੀ | -| 03 | ਨਿਆਂ ਅਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ | [Introduction](1-Introduction/README.md) | ਨਿਆਂ ਦੇ ਮਹੱਤਵਪੂਰਨ ਦਰਸ਼ਨਸ਼ਾਸਤਰੀ ਮੁੱਦਿਆਂ ਬਾਰੇ ਕੀ ਹੈ ਜੋ ਵਿਦਿਆਰਥੀਆਂ ਨੂੰ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਅਤੇ ਲਾਗੂ ਕਰਨ ਵੇਲੇ ਵਿਚਾਰ ਕਰਨੇ ਚਾਹੀਦੇ ਹਨ? | [Lesson](1-Introduction/3-fairness/README.md) | ਟੋਮੋਮੀ | -| 04 | ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਤਕਨੀਕਾਂ | [Introduction](1-Introduction/README.md) | ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਖੋਜਕਰਤਾ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਕਿਹੜੀਆਂ ਤਕਨੀਕਾਂ ਵਰਤਦੇ ਹਨ? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | ਕ੍ਰਿਸ ਅਤੇ ਜੈਨ | -| 05 | ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਪਰਿਚਯ | [Regression](2-Regression/README.md) | ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲਾਂ ਲਈ ਪਾਇਥਨ ਅਤੇ ਸਕਾਈਕਿਟ-ਲਰਨ ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | ਜੈਨ • ਐਰਿਕ ਵਾਂਜਾਉ | -| 06 | ਉੱਤਰੀ ਅਮਰੀਕੀ ਕੱਦੂ ਦੀਆਂ ਕੀਮਤਾਂ 🎃 | [Regression](2-Regression/README.md) | ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਡਾਟਾ ਨੂੰ ਵਿਜੁਅਲਾਈਜ਼ ਅਤੇ ਸਾਫ਼ ਕਰੋ | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | ਜੈਨ • ਐਰਿਕ ਵਾਂਜਾਉ | -| 07 | ਉੱਤਰੀ ਅਮਰੀਕੀ ਕੱਦੂ ਦੀਆਂ ਕੀਮਤਾਂ 🎃 | [Regression](2-Regression/README.md) | ਲੀਨੀਅਰ ਅਤੇ ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਓ | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | ਜੈਨ ਅਤੇ ਦਿਮਿਤਰੀ • ਐਰਿਕ ਵਾਂਜਾਉ | -| 08 | ਉੱਤਰੀ ਅਮਰੀਕੀ ਕੱਦੂ ਦੀਆਂ ਕੀਮਤਾਂ 🎃 | [Regression](2-Regression/README.md) | ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਓ | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | ਜੈਨ • ਐਰਿਕ ਵਾਂਜਾਉ | -| 09 | ਇੱਕ ਵੈੱਬ ਐਪ 🔌 | [Web App](3-Web-App/README.md) | ਆਪਣੇ ਟ੍ਰੇਨ ਕੀਤੇ ਮਾਡਲ ਨੂੰ ਵਰਤਣ ਲਈ ਇੱਕ ਵੈੱਬ ਐਪ ਬਣਾਓ | [Python](3-Web-App/1-Web-App/README.md) | ਜੈਨ | -| 10 | ਵਰਗੀਕਰਨ ਦਾ ਪਰਿਚਯ | [Classification](4-Classification/README.md) | ਆਪਣੇ ਡਾਟਾ ਨੂੰ ਸਾਫ਼ ਕਰੋ, ਤਿਆਰ ਕਰੋ, ਅਤੇ ਵਿਜੁਅਲਾਈਜ਼ ਕਰੋ; ਵਰਗੀਕਰਨ ਦਾ ਪਰਿਚਯ | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | ਜੈਨ ਅਤੇ ਕੈਸੀ • ਐਰਿਕ ਵਾਂਜਾਉ | -| 11 | ਸੁਆਦਿਸਟ ਏਸ਼ੀਆਈ ਅਤੇ ਭਾਰਤੀ ਖਾਣੇ 🍜 | [Classification](4-Classification/README.md) | ਵਰਗੀਕਰਨ ਕਰਨ ਵਾਲੇ ਮਾਡਲਾਂ ਦਾ ਪਰਿਚਯ | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | ਜੈਨ ਅਤੇ ਕੈਸੀ • ਐਰਿਕ ਵਾਂਜਾਉ | -| 12 | ਸੁਆਦਿਸਟ ਏਸ਼ੀਆਈ ਅਤੇ ਭਾਰਤੀ ਖਾਣੇ 🍜 | [Classification](4-Classification/README.md) | ਹੋਰ ਵਰਗੀਕਰਨ ਕਰਨ ਵਾਲੇ ਮਾਡਲ | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | ਜੈਨ ਅਤੇ ਕੈਸੀ • ਐਰਿਕ ਵਾਂਜਾਉ | -| 13 | ਸੁਆਦਿਸਟ ਏਸ਼ੀਆਈ ਅਤੇ ਭਾਰਤੀ ਖਾਣੇ 🍜 | [Classification](4-Classification/README.md) | ਆਪਣੇ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਰਿਕਮੈਂਡਰ ਵੈੱਬ ਐਪ ਬਣਾਓ | [Python](4-Classification/4-Applied/README.md) | ਜੈਨ | -| 14 | ਕਲਸਟਰਿੰਗ ਦਾ ਪਰਿਚਯ | [Clustering](5-Clustering/README.md) | ਆਪਣੇ ਡਾਟਾ ਨੂੰ ਸਾਫ਼ ਕਰੋ, ਤਿਆਰ ਕਰੋ, ਅਤੇ ਵਿਜੁਅਲਾਈਜ਼ ਕਰੋ; ਕਲਸਟਰਿੰਗ ਦਾ ਪਰਿਚਯ | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | ਜੈਨ • ਐਰਿਕ ਵਾਂਜਾਉ | -| 15 | ਨਾਈਜੀਰੀਆਈ ਸੰਗੀਤਕ ਰੁਚੀਆਂ ਦੀ ਖੋਜ 🎧 | [Clustering](5-Clustering/README.md) | ਕੇ-ਮੀਨਜ਼ ਕਲਸਟਰਿੰਗ ਵਿਧੀ ਦੀ ਖੋਜ | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | ਜੈਨ • ਐਰਿਕ ਵਾਂਜਾਉ | -| 16 | ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਦਾ ਪਰਿਚਯ ☕️ | [Natural language processing](6-NLP/README.md) | ਇੱਕ ਸਧਾਰਨ ਬੋਟ ਬਣਾਉਣ ਦੁਆਰਾ NLP ਦੇ ਮੂਲ ਬਾਰੇ ਸਿੱਖੋ | [Python](6-NLP/1-Introduction-to-NLP/README.md) | ਸਟੀਫਨ | -| 17 | ਆਮ NLP ਕੰਮ ☕️ | [Natural language processing](6-NLP/README.md) | ਭਾਸ਼ਾ ਸੰਰਚਨਾਵਾਂ ਨਾਲ ਨਿਪਟਣ ਵੇਲੇ ਲੋੜੀਂਦੇ ਆਮ ਕੰਮਾਂ ਨੂੰ ਸਮਝ ਕੇ ਆਪਣੇ NLP ਗਿਆਨ ਨੂੰ ਗਹਿਰਾ ਕਰੋ | [Python](6-NLP/2-Tasks/README.md) | ਸਟੀਫਨ | +- [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) + +> **ਭਾਸ਼ਾਵਾਂ ਬਾਰੇ ਇੱਕ ਨੋਟ**: ਇਹ ਪਾਠ ਮੁੱਖ ਤੌਰ 'ਤੇ Python ਵਿੱਚ ਲਿਖੇ ਗਏ ਹਨ, ਪਰ ਕਈ R ਵਿੱਚ ਵੀ ਉਪਲਬਧ ਹਨ। R ਪਾਠ ਪੂਰਾ ਕਰਨ ਲਈ, `/solution` ਫੋਲਡਰ ਵਿੱਚ ਜਾਓ ਅਤੇ R ਪਾਠ ਲੱਭੋ। ਇਹਨਾਂ ਵਿੱਚ .rmd ਐਕਸਟੈਂਸ਼ਨ ਹੁੰਦਾ ਹੈ ਜੋ ਇੱਕ **R Markdown** ਫਾਇਲ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਜੋ `code chunks` (R ਜਾਂ ਹੋਰ ਭਾਸ਼ਾਵਾਂ ਦੇ) ਅਤੇ `YAML header` (ਜੋ PDF ਵਰਗੇ ਆਉਟਪੁੱਟ ਫਾਰਮੈਟ ਨੂੰ ਨਿਰਦੇਸ਼ਿਤ ਕਰਦਾ ਹੈ) ਨੂੰ ਇੱਕ Markdown ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਮਿਲਾਉਂਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ, ਇਹ ਡਾਟਾ ਸਾਇੰਸ ਲਈ ਇੱਕ ਉਦਾਹਰਨਾਤਮਕ ਲੇਖਨ ਫਰੇਮਵਰਕ ਹੈ ਕਿਉਂਕਿ ਇਹ ਤੁਹਾਨੂੰ ਆਪਣੇ ਕੋਡ, ਉਸਦਾ ਆਉਟਪੁੱਟ ਅਤੇ ਆਪਣੇ ਵਿਚਾਰਾਂ ਨੂੰ Markdown ਵਿੱਚ ਲਿਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, R Markdown ਦਸਤਾਵੇਜ਼ PDF, HTML ਜਾਂ Word ਵਰਗੇ ਆਉਟਪੁੱਟ ਫਾਰਮੈਟਾਂ ਵਿੱਚ ਰੇਂਡਰ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। + +> **ਕਵਿਜ਼ ਬਾਰੇ ਇੱਕ ਨੋਟ**: ਸਾਰੇ ਕਵਿਜ਼ [Quiz App ਫੋਲਡਰ](../../quiz-app) ਵਿੱਚ ਹਨ, ਕੁੱਲ 52 ਕਵਿਜ਼ ਹਨ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਤਿੰਨ-ਤਿੰਨ ਸਵਾਲ ਹਨ। ਇਹ ਪਾਠਾਂ ਵਿੱਚ ਲਿੰਕ ਕੀਤੇ ਗਏ ਹਨ ਪਰ ਕਵਿਜ਼ ਐਪ ਨੂੰ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਚਲਾਇਆ ਜਾ ਸਕਦਾ ਹੈ; ਸਥਾਨਕ ਹੋਸਟਿੰਗ ਜਾਂ Azure 'ਤੇ ਡਿਪਲੋਇ ਕਰਨ ਲਈ `quiz-app` ਫੋਲਡਰ ਵਿੱਚ ਦਿੱਤੀ ਹਦਾਇਤਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ। + +| ਪਾਠ ਨੰਬਰ | ਵਿਸ਼ਾ | ਪਾਠ ਸਮੂਹ | ਸਿੱਖਣ ਦੇ ਉਦੇਸ਼ | ਲਿੰਕ ਕੀਤਾ ਪਾਠ | ਲੇਖਕ | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦਾ ਪਰਿਚਯ | [Introduction](1-Introduction/README.md) | ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਮੂਲ ਸਿਧਾਂਤ ਸਿੱਖੋ | [Lesson](1-Introduction/1-intro-to-ML/README.md) | ਮੁਹੰਮਦ | +| 02 | ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦਾ ਇਤਿਹਾਸ | [Introduction](1-Introduction/README.md) | ਇਸ ਖੇਤਰ ਦੇ ਇਤਿਹਾਸ ਬਾਰੇ ਜਾਣੋ | [Lesson](1-Introduction/2-history-of-ML/README.md) | ਜੇਨ ਅਤੇ ਐਮੀ | +| 03 | ਨਿਆਂ ਅਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ | [Introduction](1-Introduction/README.md) | ਨਿਆਂ ਦੇ ਆਧਾਰ 'ਤੇ ਕਿਹੜੇ ਮਹੱਤਵਪੂਰਨ ਦਰਸ਼ਨਸ਼ਾਸਤਰੀ ਮੁੱਦੇ ਹਨ ਜੋ ਵਿਦਿਆਰਥੀਆਂ ਨੂੰ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਂਦੇ ਅਤੇ ਲਾਗੂ ਕਰਦੇ ਸਮੇਂ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣੇ ਚਾਹੀਦੇ ਹਨ? | [Lesson](1-Introduction/3-fairness/README.md) | ਟੋਮੋਮੀ | +| 04 | ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਤਕਨੀਕਾਂ | [Introduction](1-Introduction/README.md) | ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਖੋਜਕਾਰ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਕਿਹੜੀਆਂ ਤਕਨੀਕਾਂ ਵਰਤਦੇ ਹਨ? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | ਕ੍ਰਿਸ ਅਤੇ ਜੇਨ | +| 05 | ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਪਰਿਚਯ | [Regression](2-Regression/README.md) | ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲਾਂ ਲਈ ਪਾਇਥਨ ਅਤੇ ਸਕਾਈਕਿਟ-ਲਰਨ ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | ਜੇਨ • ਏਰਿਕ ਵਾਂਜਾਉ | +| 06 | ਉੱਤਰੀ ਅਮਰੀਕੀ ਕਦੂ ਦੀਆਂ ਕੀਮਤਾਂ 🎃 | [Regression](2-Regression/README.md) | ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਅਤੇ ਸਾਫ਼ ਕਰੋ | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | ਜੇਨ • ਏਰਿਕ ਵਾਂਜਾਉ | +| 07 | ਉੱਤਰੀ ਅਮਰੀਕੀ ਕਦੂ ਦੀਆਂ ਕੀਮਤਾਂ 🎃 | [Regression](2-Regression/README.md) | ਲੀਨੀਅਰ ਅਤੇ ਪੋਲਿਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਓ | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | ਜੇਨ ਅਤੇ ਦਿਮਿਤਰੀ • ਏਰਿਕ ਵਾਂਜਾਉ | +| 08 | ਉੱਤਰੀ ਅਮਰੀਕੀ ਕਦੂ ਦੀਆਂ ਕੀਮਤਾਂ 🎃 | [Regression](2-Regression/README.md) | ਲੋਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਓ | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | ਜੇਨ • ਏਰਿਕ ਵਾਂਜਾਉ | +| 09 | ਇੱਕ ਵੈੱਬ ਐਪ 🔌 | [Web App](3-Web-App/README.md) | ਆਪਣੇ ਟ੍ਰੇਨ ਕੀਤੇ ਮਾਡਲ ਨੂੰ ਵਰਤਣ ਲਈ ਵੈੱਬ ਐਪ ਬਣਾਓ | [Python](3-Web-App/1-Web-App/README.md) | ਜੇਨ | +| 10 | ਵਰਗੀਕਰਨ ਦਾ ਪਰਿਚਯ | [Classification](4-Classification/README.md) | ਆਪਣੇ ਡਾਟਾ ਨੂੰ ਸਾਫ਼, ਤਿਆਰ ਅਤੇ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਕਰੋ; ਵਰਗੀਕਰਨ ਦਾ ਪਰਿਚਯ | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | ਜੇਨ ਅਤੇ ਕੈਸੀ • ਏਰਿਕ ਵਾਂਜਾਉ | +| 11 | ਸੁਆਦਿਸ਼ਟ ਏਸ਼ੀਆਈ ਅਤੇ ਭਾਰਤੀ ਖਾਣੇ 🍜 | [Classification](4-Classification/README.md) | ਵਰਗੀਕਰਨਕਾਰਾਂ ਦਾ ਪਰਿਚਯ | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | ਜੇਨ ਅਤੇ ਕੈਸੀ • ਏਰਿਕ ਵਾਂਜਾਉ | +| 12 | ਸੁਆਦਿਸ਼ਟ ਏਸ਼ੀਆਈ ਅਤੇ ਭਾਰਤੀ ਖਾਣੇ 🍜 | [Classification](4-Classification/README.md) | ਹੋਰ ਵਰਗੀਕਰਨਕਾਰ | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | ਜੇਨ ਅਤੇ ਕੈਸੀ • ਏਰਿਕ ਵਾਂਜਾਉ | +| 13 | ਸੁਆਦਿਸ਼ਟ ਏਸ਼ੀਆਈ ਅਤੇ ਭਾਰਤੀ ਖਾਣੇ 🍜 | [Classification](4-Classification/README.md) | ਆਪਣੇ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਰਿਕਮੈਂਡਰ ਵੈੱਬ ਐਪ ਬਣਾਓ | [Python](4-Classification/4-Applied/README.md) | ਜੇਨ | +| 14 | ਕਲੱਸਟਰਿੰਗ ਦਾ ਪਰਿਚਯ | [Clustering](5-Clustering/README.md) | ਆਪਣੇ ਡਾਟਾ ਨੂੰ ਸਾਫ਼, ਤਿਆਰ ਅਤੇ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਕਰੋ; ਕਲੱਸਟਰਿੰਗ ਦਾ ਪਰਿਚਯ | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | ਜੇਨ • ਏਰਿਕ ਵਾਂਜਾਉ | +| 15 | ਨਾਈਜੀਰੀਆਈ ਸੰਗੀਤਕ ਸਵਾਦ ਦੀ ਖੋਜ 🎧 | [Clustering](5-Clustering/README.md) | ਕੇ-ਮੀਨਜ਼ ਕਲੱਸਟਰਿੰਗ ਵਿਧੀ ਦੀ ਖੋਜ ਕਰੋ | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | ਜੇਨ • ਏਰਿਕ ਵਾਂਜਾਉ | +| 16 | ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਦਾ ਪਰਿਚਯ ☕️ | [Natural language processing](6-NLP/README.md) | ਇੱਕ ਸਧਾਰਣ ਬੋਟ ਬਣਾਕੇ NLP ਦੇ ਮੂਲ ਸਿਧਾਂਤ ਸਿੱਖੋ | [Python](6-NLP/1-Introduction-to-NLP/README.md) | ਸਟੀਫਨ | +| 17 | ਆਮ NLP ਕਾਰਜ ☕️ | [Natural language processing](6-NLP/README.md) | ਭਾਸ਼ਾ ਸੰਰਚਨਾਵਾਂ ਨਾਲ ਨਿਪਟਣ ਸਮੇਂ ਲੋੜੀਂਦੇ ਆਮ ਕਾਰਜਾਂ ਨੂੰ ਸਮਝ ਕੇ ਆਪਣੀ NLP ਜਾਣਕਾਰੀ ਨੂੰ ਗਹਿਰਾਈ ਦਿਓ | [Python](6-NLP/2-Tasks/README.md) | ਸਟੀਫਨ | | 18 | ਅਨੁਵਾਦ ਅਤੇ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ♥️ | [Natural language processing](6-NLP/README.md) | ਜੇਨ ਆਸਟਿਨ ਨਾਲ ਅਨੁਵਾਦ ਅਤੇ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ | [Python](6-NLP/3-Translation-Sentiment/README.md) | ਸਟੀਫਨ | | 19 | ਯੂਰਪ ਦੇ ਰੋਮਾਂਟਿਕ ਹੋਟਲ ♥️ | [Natural language processing](6-NLP/README.md) | ਹੋਟਲ ਸਮੀਖਿਆਵਾਂ ਨਾਲ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | ਸਟੀਫਨ | | 20 | ਯੂਰਪ ਦੇ ਰੋਮਾਂਟਿਕ ਹੋਟਲ ♥️ | [Natural language processing](6-NLP/README.md) | ਹੋਟਲ ਸਮੀਖਿਆਵਾਂ ਨਾਲ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | ਸਟੀਫਨ | -| 21 | ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨਕਰਨ ਦਾ ਪਰਿਚਯ | [Time series](7-TimeSeries/README.md) | ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨਕਰਨ ਦਾ ਪਰਿਚਯ | [Python](7-TimeSeries/1-Introduction/README.md) | ਫ੍ਰਾਂਸੇਸਕਾ | -| 22 | ⚡️ ਵਿਸ਼ਵ ਪਾਵਰ ਵਰਤੋਂ ⚡️ - ARIMA ਨਾਲ ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨਕਰਨ | [Time series](7-TimeSeries/README.md) | ARIMA ਨਾਲ ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨਕਰਨ | [Python](7-TimeSeries/2-ARIMA/README.md) | ਫ੍ਰਾਂਸੇਸਕਾ | -| 23 | ⚡️ ਵਿਸ਼ਵ ਪਾਵਰ ਵਰਤੋਂ ⚡️ - SVR ਨਾਲ ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨਕਰਨ | [Time series](7-TimeSeries/README.md) | ਸਪੋਰਟ ਵੈਕਟਰ ਰਿਗ੍ਰੈਸਰ ਨਾਲ ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨਕਰਨ | [Python](7-TimeSeries/3-SVR/README.md) | ਅਨੀਰਬਨ | +| 21 | ਸਮੇਂ ਦੀ ਲੜੀ ਦੀ ਭਵਿੱਖਬਾਣੀ ਦਾ ਪਰਿਚਯ | [Time series](7-TimeSeries/README.md) | ਸਮੇਂ ਦੀ ਲੜੀ ਦੀ ਭਵਿੱਖਬਾਣੀ ਦਾ ਪਰਿਚਯ | [Python](7-TimeSeries/1-Introduction/README.md) | ਫ੍ਰਾਂਸੇਸਕਾ | +| 22 | ⚡️ ਵਿਸ਼ਵ ਬਿਜਲੀ ਖਪਤ ⚡️ - ARIMA ਨਾਲ ਸਮੇਂ ਦੀ ਲੜੀ ਦੀ ਭਵਿੱਖਬਾਣੀ | [Time series](7-TimeSeries/README.md) | ARIMA ਨਾਲ ਸਮੇਂ ਦੀ ਲੜੀ ਦੀ ਭਵਿੱਖਬਾਣੀ | [Python](7-TimeSeries/2-ARIMA/README.md) | ਫ੍ਰਾਂਸੇਸਕਾ | +| 23 | ⚡️ ਵਿਸ਼ਵ ਬਿਜਲੀ ਖਪਤ ⚡️ - SVR ਨਾਲ ਸਮੇਂ ਦੀ ਲੜੀ ਦੀ ਭਵਿੱਖਬਾਣੀ | [Time series](7-TimeSeries/README.md) | ਸਪੋਰਟ ਵੈਕਟਰ ਰਿਗ੍ਰੈਸ਼ਨਰ ਨਾਲ ਸਮੇਂ ਦੀ ਲੜੀ ਦੀ ਭਵਿੱਖਬਾਣੀ | [Python](7-TimeSeries/3-SVR/README.md) | ਅਨੀਰਬਨ | | 24 | ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਦਾ ਪਰਿਚਯ | [Reinforcement learning](8-Reinforcement/README.md) | Q-ਲਰਨਿੰਗ ਨਾਲ ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਦਾ ਪਰਿਚਯ | [Python](8-Reinforcement/1-QLearning/README.md) | ਦਿਮਿਤਰੀ | -| 25 | ਪੀਟਰ ਨੂੰ ਭੇੜੇ ਤੋਂ ਬਚਾਓ! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਜਿਮ | [Python](8-Reinforcement/2-Gym/README.md) | ਦਿਮਿਤਰੀ | -| Postscript | ਅਸਲ-ਦੁਨੀਆ ਦੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦ੍ਰਿਸ਼ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ | [ML in the Wild](9-Real-World/README.md) | ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਦਿਲਚਸਪ ਅਤੇ ਖੁਲਾਸਾ ਕਰਨ ਵਾਲੇ ਅਸਲ-ਦੁਨੀਆ ਦੇ ਐਪਲੀਕੇਸ਼ਨ | [Lesson](9-Real-World/1-Applications/README.md) | ਟੀਮ | -| Postscript | RAI ਡੈਸ਼ਬੋਰਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਮਾਡਲ ਡੀਬੱਗਿੰਗ | [ML in the Wild](9-Real-World/README.md) | ਜਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ ਕੰਪੋਨੈਂਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਮਾਡਲ ਡੀਬੱਗਿੰਗ | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | ਰੁਥ ਯਾਕੂਬ | +| 25 | ਪੀਟਰ ਨੂੰ ਭੇੜੀ ਤੋਂ ਬਚਾਓ! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਜਿਮ | [Python](8-Reinforcement/2-Gym/README.md) | ਦਿਮਿਤਰੀ | +| Postscript | ਅਸਲੀ ਦੁਨੀਆ ਦੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਸਥਿਤੀਆਂ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ | [ML in the Wild](9-Real-World/README.md) | ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਦਿਲਚਸਪ ਅਤੇ ਖੁਲਾਸਾ ਕਰਨ ਵਾਲੇ ਅਸਲੀ ਦੁਨੀਆ ਦੇ ਐਪਲੀਕੇਸ਼ਨ | [Lesson](9-Real-World/1-Applications/README.md) | ਟੀਮ | +| Postscript | RAI ਡੈਸ਼ਬੋਰਡ ਦੀ ਵਰਤੋਂ ਨਾਲ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਮਾਡਲ ਡੀਬੱਗਿੰਗ | [ML in the Wild](9-Real-World/README.md) | ਜ਼ਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ ਕੰਪੋਨੈਂਟਾਂ ਦੀ ਵਰਤੋਂ ਨਾਲ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਮਾਡਲ ਡੀਬੱਗਿੰਗ | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | ਰੁਥ ਯਾਕੁਬੂ | -> [ਇਸ ਕੋਰਸ ਲਈ ਸਾਰੇ ਵਾਧੂ ਸਰੋਤ Microsoft Learn ਕਲੈਕਸ਼ਨ ਵਿੱਚ ਲੱਭੋ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [ਇਸ ਕੋਰਸ ਲਈ ਸਾਰੇ ਵਾਧੂ ਸਰੋਤ ਸਾਡੇ 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` ਟਾਈਪ ਕਰੋ। ਵੈੱਬਸਾਈਟ ਤੁਹਾਡੇ ਲੋਕਲਹੋਸਟ `localhost:3000` 'ਤੇ ਪੋਰਟ 3000 'ਤੇ ਸਰਵ ਕੀਤੀ ਜਾਵੇਗੀ। +ਤੁਸੀਂ [Docsify](https://docsify.js.org/#/) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਆਫਲਾਈਨ ਚਲਾ ਸਕਦੇ ਹੋ। ਇਸ ਰਿਪੋ ਨੂੰ ਫੋਰਕ ਕਰੋ, ਆਪਣੇ ਸਥਾਨਕ ਮਸ਼ੀਨ 'ਤੇ [Docsify ਇੰਸਟਾਲ ਕਰੋ](https://docsify.js.org/#/quickstart), ਅਤੇ ਫਿਰ ਇਸ ਰਿਪੋ ਦੇ ਰੂਟ ਫੋਲਡਰ ਵਿੱਚ `docsify serve` ਟਾਈਪ ਕਰੋ। ਵੈੱਬਸਾਈਟ ਤੁਹਾਡੇ ਲੋਕਲਹੋਸਟ 'ਤੇ ਪੋਰਟ 3000 'ਤੇ ਸਰਵ ਕੀਤੀ ਜਾਵੇਗੀ: `localhost:3000`। -## PDFs +## PDF -ਲਿੰਕਾਂ ਨਾਲ ਕੋਰਸ ਦਾ PDF [ਇੱਥੇ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) ਲੱਭੋ। +ਕਰੀਕੁਲਮ ਦਾ PDF ਲਿੰਕਾਂ ਸਮੇਤ [ਇੱਥੇ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) ਲੱਭੋ। -## 🎒 ਹੋਰ ਕੋਰਸ -ਸਾਡੀ ਟੀਮ ਹੋਰ ਕੋਰਸ ਤਿਆਰ ਕਰਦੀ ਹੈ! ਵੇਖੋ: +## 🎒 ਹੋਰ ਕੋਰਸ + +ਸਾਡੀ ਟੀਮ ਹੋਰ ਕੋਰਸ ਵੀ ਤਿਆਰ ਕਰਦੀ ਹੈ! ਵੇਖੋ: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -165,7 +178,7 @@ Microsoft ਦੇ Cloud Advocates ਨੇ **ਮਸ਼ੀਨ ਲਰਨਿੰਗ** [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### Generative AI Series [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) @@ -173,36 +186,37 @@ Microsoft ਦੇ Cloud Advocates ਨੇ **ਮਸ਼ੀਨ ਲਰਨਿੰਗ** [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - -### ਕੋਰ ਲਰਨਿੰਗ -[![ML ਸ਼ੁਰੂਆਤੀ ਲਈ](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![ਡਾਟਾ ਸਾਇੰਸ ਸ਼ੁਰੂਆਤੀ ਲਈ](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI ਸ਼ੁਰੂਆਤੀ ਲਈ](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![ਸਾਇਬਰਸੁਰੱਖਿਆ ਸ਼ੁਰੂਆਤੀ ਲਈ](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![ਵੈੱਬ ਡਿਵੈਲਪਮੈਂਟ ਸ਼ੁਰੂਆਤੀ ਲਈ](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT ਸ਼ੁਰੂਆਤੀ ਲਈ](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR ਡਿਵੈਲਪਮੈਂਟ ਸ਼ੁਰੂਆਤੀ ਲਈ](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +### ਮੁੱਖ ਸਿੱਖਿਆ +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### ਕੋਪਾਇਲਟ ਸੀਰੀਜ਼ +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot ਸੀਰੀਜ਼ -[![Copilot AI ਜੋੜੇ ਪ੍ਰੋਗਰਾਮਿੰਗ ਲਈ](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot C#/.NET ਲਈ](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot ਐਡਵੈਂਚਰ](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +## ਮਦਦ ਪ੍ਰਾਪਤ ਕਰਨਾ -## ਮਦਦ ਪ੍ਰਾਪਤ ਕਰਨਾ +ਜੇ ਤੁਸੀਂ ਫਸ ਜਾਂਦੇ ਹੋ ਜਾਂ AI ਐਪਸ ਬਣਾਉਣ ਬਾਰੇ ਕੋਈ ਸਵਾਲ ਹੈ। MCP ਬਾਰੇ ਚਰਚਾ ਵਿੱਚ ਸਾਥੀ ਸਿੱਖਣ ਵਾਲਿਆਂ ਅਤੇ ਅਨੁਭਵੀ ਵਿਕਾਸਕਾਰਾਂ ਨਾਲ ਜੁੜੋ। ਇਹ ਇੱਕ ਸਹਾਇਕ ਸਮੁਦਾਇ ਹੈ ਜਿੱਥੇ ਸਵਾਲਾਂ ਦਾ ਸਵਾਗਤ ਹੈ ਅਤੇ ਗਿਆਨ ਖੁੱਲ੍ਹ ਕੇ ਸਾਂਝਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। -ਜੇ ਤੁਸੀਂ ਫਸ ਜਾਂਦੇ ਹੋ ਜਾਂ AI ਐਪਸ ਬਣਾਉਣ ਬਾਰੇ ਕੋਈ ਸਵਾਲ ਹੈ, ਤਾਂ MCP ਬਾਰੇ ਚਰਚਾ ਕਰਨ ਲਈ ਹੋਰ ਸਿੱਖਣ ਵਾਲਿਆਂ ਅਤੇ ਅਨੁਭਵੀ ਡਿਵੈਲਪਰਾਂ ਨਾਲ ਜੁੜੋ। ਇਹ ਇੱਕ ਸਹਾਇਕ ਕਮਿਊਨਿਟੀ ਹੈ ਜਿੱਥੇ ਸਵਾਲਾਂ ਦਾ ਸਵਾਗਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਗਿਆਨ ਮੁਫ਼ਤ ਸਾਂਝਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। - -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -ਜੇ ਤੁਹਾਨੂੰ ਉਤਪਾਦ ਫੀਡਬੈਕ ਦੇਣੀ ਹੈ ਜਾਂ ਬਣਾਉਣ ਦੌਰਾਨ ਕੋਈ ਗਲਤੀ ਆਉਂਦੀ ਹੈ, ਤਾਂ ਇਸ 'ਤੇ ਜਾਓ: +ਜੇ ਤੁਹਾਡੇ ਕੋਲ ਉਤਪਾਦ ਫੀਡਬੈਕ ਜਾਂ ਗਲਤੀਆਂ ਹਨ ਤਾਂ ਇੱਥੇ ਜਾਓ: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**ਅਸਵੀਕਰਤੀ**: -ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। +**ਅਸਵੀਕਾਰੋਪੱਤਰ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਮਰਥਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਉਤਪੰਨ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pcm/README.md b/translations/pcm/README.md index 507a6a34f..c5d58ba6a 100644 --- a/translations/pcm/README.md +++ b/translations/pcm/README.md @@ -1,8 +1,8 @@ -[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) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](./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) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) +[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](./README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) #### Join Our Community [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -We dey do one Discord learn wit AI series, you fit learn more and join us for [Learn with AI Series](https://aka.ms/learnwithai/discord) from 18 - 30 September, 2025. You go sabi tips and tricks for how to use GitHub Copilot for Data Science. +We get one Discord learn with AI series wey dey go on, learn more and join us for [Learn with AI Series](https://aka.ms/learnwithai/discord) from 18 - 30 September, 2025. You go fit get tips and tricks on how to use GitHub Copilot for Data Science. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.pcm.png) # Machine Learning for Beginners - A Curriculum -> 🌍 Travel around di world as we dey learn Machine Learning wit di help of world cultures 🌍 +> 🌍 Travel around di world as we dey explore Machine Learning through world cultures 🌍 -Cloud Advocates for Microsoft don prepare one 12-week, 26-lesson curriculum wey dey teach about **Machine Learning**. For dis curriculum, you go learn wetin dem dey call **classic machine learning**, wey dey use Scikit-learn as di main library and e no dey include deep learning, wey dem cover for [AI for Beginners' curriculum](https://aka.ms/ai4beginners). You fit pair dis lessons wit our ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners), too! +Cloud Advocates for Microsoft happy to offer 12-week, 26-lesson curriculum wey dey all about **Machine Learning**. For dis curriculum, you go learn about wetin dem dey call **classic machine learning**, wey mainly dey use Scikit-learn as library and no go deep learning, wey dey inside our [AI for Beginners' curriculum](https://aka.ms/ai4beginners). You fit join these lessons with our ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) too! -Follow us waka around di world as we dey use dis classic techniques for data from different parts of di world. Each lesson get pre-lesson and post-lesson quiz, written instructions for di lesson, solution, assignment, and more. Our project-based style go help you learn as you dey build, wey be one sure way to make new skills stick. +Make you travel with us around di world as we dey apply these classic techniques to data from many parts of di world. Each lesson get pre- and post-lesson quizzes, written instructions to complete di lesson, solution, assignment, and more. Our project-based way of teaching dey allow you learn as you dey build, na better way for new skills to 'stick'. **✍️ Big thanks to our authors** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu and Amy Boyd @@ -49,42 +49,42 @@ Follow us waka around di world as we dey use dis classic techniques for data fro **🤩 Extra thanks to Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, and Vidushi Gupta for our R lessons!** -# How to Start +# Getting Started -Follow dis steps: -1. **Fork di Repository**: Click di "Fork" button for di top-right corner of dis page. -2. **Clone di Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Follow these steps: +1. **Fork the Repository**: Click di "Fork" button for di top-right corner of dis page. +2. **Clone the Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [find all extra resources for dis course for our Microsoft Learn collection](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [find all additional resources for this course in our Microsoft Learn collection](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Need help?** Check our [Troubleshooting Guide](TROUBLESHOOTING.md) for solutions to common problems for installation, setup, and running lessons. +> 🔧 **Need help?** Check our [Troubleshooting Guide](TROUBLESHOOTING.md) for solutions to common issues with installation, setup, and running lessons. -**[Students](https://aka.ms/student-page)**, to use dis curriculum, fork di whole repo go your own GitHub account and complete di exercises by yourself or wit group: +**[Students](https://aka.ms/student-page)**, to use dis curriculum, fork di whole repo to your own GitHub account and complete di exercises by yourself or with group: -- Start wit pre-lecture quiz. -- Read di lecture and do di activities, stop and think for each knowledge check. -- Try build di projects by understanding di lessons instead of just running di solution code; but di code dey available for `/solution` folders for each project-based lesson. +- Start with pre-lecture quiz. +- Read di lecture and complete di activities, stop and think for each knowledge check. +- Try to create di projects by understanding di lessons instead of just running di solution code; but di code dey available for `/solution` folders for each project-based lesson. - Take di post-lecture quiz. -- Do di challenge. -- Do di assignment. -- After you finish one lesson group, visit di [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) and "learn out loud" by filling di PAT rubric. PAT na Progress Assessment Tool wey be rubric wey you go fill to help your learning. You fit also react to other PATs so we go fit learn together. +- Complete di challenge. +- Complete di assignment. +- After you finish one lesson group, visit di [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) and "learn out loud" by filling di correct PAT rubric. 'PAT' na Progress Assessment Tool wey be rubric you go fill to help your learning. You fit also react to other PATs so we fit learn together. -> For more study, we recommend make you follow dis [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modules and learning paths. +> For more study, we recommend to follow these [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modules and learning paths. -**Teachers**, we don [add some ideas](for-teachers.md) on how you fit use dis curriculum. +**Teachers**, we don [include some suggestions](for-teachers.md) on how to use dis curriculum. --- ## Video walkthroughs -Some of di lessons dey available as short video. You fit find all of dem inside di lessons, or for [ML for Beginners playlist for Microsoft Developer YouTube channel](https://aka.ms/ml-beginners-videos) by clicking di image below. +Some lessons dey available as short form video. You fit find all these inside di lessons, or for [ML for Beginners playlist on the Microsoft Developer YouTube channel](https://aka.ms/ml-beginners-videos) by clicking di image below. [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.pcm.png)](https://aka.ms/ml-beginners-videos) --- -## Meet di Team +## Meet the Team [![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) @@ -96,65 +96,65 @@ Some of di lessons dey available as short video. You fit find all of dem inside ## Pedagogy -We don choose two teaching styles for dis curriculum: make e dey hands-on **project-based** and make e get **plenty quizzes**. Plus, dis curriculum get one common **theme** wey dey make am dey connected. +We choose two teaching principles while we dey build dis curriculum: to make am hands-on **project-based** and to include **frequent quizzes**. Plus, dis curriculum get one common **theme** to make am consistent. -By making sure say di content dey match wit projects, e go make di process dey more interesting for students and e go help dem remember di concepts well. Plus, quiz wey no dey too hard before class go help di student focus on di topic, while di second quiz after class go help dem remember am better. Dis curriculum dey flexible and fun and you fit take am complete or small small. Di projects dey start small and e dey grow more complex by di end of di 12-week cycle. Dis curriculum also get one extra part about real-world use of ML, wey fit be extra credit or topic for discussion. +By making sure say di content match projects, di process go dey more interesting for students and e go help dem remember concepts well. Plus, one low-stakes quiz before class dey set student mind to learn topic, and one more quiz after class go help dem remember more. Dis curriculum design to be flexible and fun and you fit take am full or part. Di projects start small and go big as di 12-week cycle dey end. Dis curriculum also get one postscript on real-world ML applications, wey fit be extra credit or discussion base. -> Check our [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), and [Troubleshooting](TROUBLESHOOTING.md) guidelines. We dey welcome your feedback! +> Find our [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), and [Troubleshooting](TROUBLESHOOTING.md) guidelines. We dey welcome your constructive feedback! -## Each lesson get +## Each lesson includes - optional sketchnote -- optional extra video +- optional supplemental video - video walkthrough (some lessons only) - [pre-lecture warmup quiz](https://ff-quizzes.netlify.app/en/ml/) - written lesson -- for project-based lessons, step-by-step guide on how to build di project +- for project-based lessons, step-by-step guides on how to build di project - knowledge checks -- one challenge -- extra reading +- a challenge +- supplemental reading - assignment - [post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -> **About languages**: Di lessons dey mainly for Python, but some dey available for R. To do R lesson, go `/solution` folder and look for R lessons. Dem get .rmd extension wey mean **R Markdown** file wey dey combine `code chunks` (of R or other languages) and `YAML header` (wey dey guide how to format outputs like PDF) inside `Markdown document`. E dey good for data science because e dey allow you mix your code, di output, and your thoughts for Markdown. Plus, R Markdown documents fit turn to output formats like PDF, HTML, or Word. +> **A note about languages**: These lessons mainly dey written for Python, but many dey also available for R. To complete R lesson, go di `/solution` folder and find R lessons. Dem get .rmd extension wey mean **R Markdown** file wey fit be simply defined as embedding `code chunks` (of R or other languages) and `YAML header` (wey guide how to format outputs like PDF) inside `Markdown document`. So, e serve as good authoring framework for data science because e allow you to combine your code, output, and your thoughts by writing dem down for Markdown. Plus, R Markdown documents fit render to output formats like PDF, HTML, or Word. -> **About quizzes**: All quizzes dey inside [Quiz App folder](../../quiz-app), total 52 quizzes wey get three questions each. Dem dey linked inside di lessons but di quiz app fit run locally; follow di instruction for `quiz-app` folder to host am locally or deploy am go Azure. +> **A note about quizzes**: All quizzes dey inside [Quiz App folder](../../quiz-app), total 52 quizzes with three questions each. Dem link from inside lessons but quiz app fit run locally; follow instruction inside `quiz-app` folder to host locally or deploy to Azure. | Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Intro to machine learning | [Introduction](1-Introduction/README.md) | Learn di basic idea wey dey behind machine learning | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Di History of machine learning | [Introduction](1-Introduction/README.md) | Learn di history wey dey for dis field | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | -| 03 | Fairness and machine learning | [Introduction](1-Introduction/README.md) | Wetin be di important philosophical matter wey students suppose think about when dem dey build and use ML models? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Techniques for machine learning | [Introduction](1-Introduction/README.md) | Wetin be di techniques wey ML researchers dey use to build ML models? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | -| 05 | Intro to regression | [Regression](2-Regression/README.md) | Start with Python and Scikit-learn for regression models | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | North American pumpkin prices 🎃 | [Regression](2-Regression/README.md) | Visualize and clean data to prepare for ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | North American pumpkin prices 🎃 | [Regression](2-Regression/README.md) | Build linear and polynomial regression models | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | -| 08 | North American pumpkin prices 🎃 | [Regression](2-Regression/README.md) | Build logistic regression model | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | A Web App 🔌 | [Web App](3-Web-App/README.md) | Build web app to use di trained model | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Intro to classification | [Classification](4-Classification/README.md) | Clean, prep, and visualize your data; intro to classification | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | -| 11 | Delicious Asian and Indian cuisines 🍜 | [Classification](4-Classification/README.md) | Intro to classifiers | [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 | Delicious Asian and Indian cuisines 🍜 | [Classification](4-Classification/README.md) | More classifiers | [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 | Delicious Asian and Indian cuisines 🍜 | [Classification](4-Classification/README.md) | Build recommender web app with your model | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Intro to clustering | [Clustering](5-Clustering/README.md) | Clean, prep, and visualize your data; Intro to clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Exploring Nigerian Musical Tastes 🎧 | [Clustering](5-Clustering/README.md) | Explore di K-Means clustering method | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Intro to natural language processing ☕️ | [Natural language processing](6-NLP/README.md) | Learn di basics of NLP by building simple bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Common NLP Tasks ☕️ | [Natural language processing](6-NLP/README.md) | Deepen your NLP knowledge by understanding common tasks wey dey involve language structures | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Translation and sentiment analysis ♥️ | [Natural language processing](6-NLP/README.md) | Translation and sentiment analysis with Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantic hotels of Europe ♥️ | [Natural language processing](6-NLP/README.md) | Sentiment analysis with hotel reviews 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantic hotels of Europe ♥️ | [Natural language processing](6-NLP/README.md) | Sentiment analysis with hotel reviews 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Intro to time series forecasting | [Time series](7-TimeSeries/README.md) | Intro to time series forecasting | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ World Power Usage ⚡️ - time series forecasting with ARIMA | [Time series](7-TimeSeries/README.md) | Time series forecasting with ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ World Power Usage ⚡️ - time series forecasting with SVR | [Time series](7-TimeSeries/README.md) | Time series forecasting with Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Intro to reinforcement learning | [Reinforcement learning](8-Reinforcement/README.md) | Intro to reinforcement learning with Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Help Peter avoid di wolf! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Real-World ML scenarios and applications | [ML in the Wild](9-Real-World/README.md) | Interesting and revealing real-world applications of classical ML | [Lesson](9-Real-World/1-Applications/README.md) | Team | -| Postscript | Model Debugging in ML using RAI dashboard | [ML in the Wild](9-Real-World/README.md) | Model Debugging in Machine Learning using Responsible AI dashboard components | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [find all additional resources for dis course for our Microsoft Learn collection](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 01 | Introduction to machine learning | [Introduction](1-Introduction/README.md) | Learn di basic concepts wey dey behind machine learning | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | The History of machine learning | [Introduction](1-Introduction/README.md) | Learn di history wey dey under dis field | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Fairness and machine learning | [Introduction](1-Introduction/README.md) | Wetin be di important philosophical issues about fairness wey students suppose consider wen dem dey build and apply ML models? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Techniques for machine learning | [Introduction](1-Introduction/README.md) | Wetin techniques ML researchers dey use to build ML models? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Introduction to regression | [Regression](2-Regression/README.md) | Start to use Python and Scikit-learn for regression models | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | North American pumpkin prices 🎃 | [Regression](2-Regression/README.md) | Visualize and clean data to prepare for ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | North American pumpkin prices 🎃 | [Regression](2-Regression/README.md) | Build linear and polynomial regression models | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | North American pumpkin prices 🎃 | [Regression](2-Regression/README.md) | Build logistic regression model | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | A Web App 🔌 | [Web App](3-Web-App/README.md) | Build web app to use your trained model | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Introduction to classification | [Classification](4-Classification/README.md) | Clean, prep, and visualize your data; introduction to classification | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Delicious Asian and Indian cuisines 🍜 | [Classification](4-Classification/README.md) | Introduction to classifiers | [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 | Delicious Asian and Indian cuisines 🍜 | [Classification](4-Classification/README.md) | More classifiers | [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 | Delicious Asian and Indian cuisines 🍜 | [Classification](4-Classification/README.md) | Build recommender web app using your model | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Introduction to clustering | [Clustering](5-Clustering/README.md) | Clean, prep, and visualize your data; Introduction to clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Exploring Nigerian Musical Tastes 🎧 | [Clustering](5-Clustering/README.md) | Explore K-Means clustering method | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Introduction to natural language processing ☕️ | [Natural language processing](6-NLP/README.md) | Learn basics about NLP by building simple bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Common NLP Tasks ☕️ | [Natural language processing](6-NLP/README.md) | Deepen your NLP knowledge by understanding common tasks wey dem need wen dem dey deal with language structures | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Translation and sentiment analysis ♥️ | [Natural language processing](6-NLP/README.md) | Translation and sentiment analysis with Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantic hotels of Europe ♥️ | [Natural language processing](6-NLP/README.md) | Sentiment analysis with hotel reviews 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantic hotels of Europe ♥️ | [Natural language processing](6-NLP/README.md) | Sentiment analysis with hotel reviews 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Introduction to time series forecasting | [Time series](7-TimeSeries/README.md) | Introduction to time series forecasting | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ World Power Usage ⚡️ - time series forecasting with ARIMA | [Time series](7-TimeSeries/README.md) | Time series forecasting with ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ World Power Usage ⚡️ - time series forecasting with SVR | [Time series](7-TimeSeries/README.md) | Time series forecasting with Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Introduction to reinforcement learning | [Reinforcement learning](8-Reinforcement/README.md) | Introduction to reinforcement learning with Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Help Peter avoid the wolf! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Real-World ML scenarios and applications | [ML in the Wild](9-Real-World/README.md) | Interesting and revealing real-world applications of classical ML | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Model Debugging in ML using RAI dashboard | [ML in the Wild](9-Real-World/README.md) | Model Debugging in Machine Learning using Responsible AI dashboard components | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [find all additional resources for this course in our Microsoft Learn collection](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Offline access -You fit run dis documentation offline by using [Docsify](https://docsify.js.org/#/). Fork dis repo, [install Docsify](https://docsify.js.org/#/quickstart) for your local machine, and then for di root folder of dis repo, type `docsify serve`. Di website go dey served for port 3000 for your localhost: `localhost:3000`. +You fit run dis documentation offline by using [Docsify](https://docsify.js.org/#/). Fork dis repo, [install Docsify](https://docsify.js.org/#/quickstart) for your local machine, then for di root folder of dis repo, type `docsify serve`. Di website go dey serve for port 3000 for your localhost: `localhost:3000`. ## PDFs @@ -163,7 +163,14 @@ Find pdf of di curriculum with links [here](https://microsoft.github.io/ML-For-B ## 🎒 Other Courses -Our team dey produce other courses! Check dem out: +Our team dey produce other courses! Check am out: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -172,7 +179,7 @@ Our team dey produce other courses! Check dem out: [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### Generative AI Series [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) @@ -180,37 +187,37 @@ Our team dey produce other courses! Check dem out: [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### Core Learning -[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Copilot Series -[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + +### Copilot Series +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) -## How to Get Help +## Getting Help -If e be say you dey stuck or you get any question about how to build AI apps. You fit join other learners and developers wey sabi well well to talk about MCP. Na one kind community wey dey support people, dem go answer your question and share knowledge freely. +If you get stuck or get any question about how to build AI apps. Join other learners and experienced developers for discussions about MCP. Na supportive community wey questions dey welcome and knowledge dey shared freely. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -If you get feedback about product or you dey see error when you dey build, go visit: +If you get product feedback or errors while you dey build, visit: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Disclaimer**: -Dis docu don dey translate wit AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). Even though we dey try make am correct, abeg sabi say automatic translation fit get mistake or no dey accurate well. Di original docu for im native language na di main correct source. For important information, e good make una use professional human translation. We no go fit take blame for any misunderstanding or wrong interpretation wey fit happen because of dis translation. +**Disclaimer**: +Dis document don translate wit AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). Even though we dey try make am correct, abeg sabi say automated translation fit get some mistakes or no too correct. Di original document wey e dey for im own language na di correct one. If na serious matter, e better make human professional translate am. We no go responsible for any wahala or wrong understanding wey fit happen because of dis translation. \ No newline at end of file diff --git a/translations/pl/README.md b/translations/pl/README.md index da5e1aeee..80eca1c88 100644 --- a/translations/pl/README.md +++ b/translations/pl/README.md @@ -1,215 +1,223 @@ -[![Licencja GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Współtwórcy GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Problemy GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Pull requesty GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Obserwujący GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Forki GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Gwiazdy GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Wsparcie wielojęzyczne +### 🌐 Wsparcie wielojęzyczne -#### Obsługiwane przez GitHub Action (Automatyczne i zawsze aktualne) +#### Wspierane przez GitHub Action (Automatyczne i zawsze aktualne) - -[Arabski](../ar/README.md) | [Bengalski](../bn/README.md) | [Bułgarski](../bg/README.md) | [Birmański (Myanmar)](../my/README.md) | [Chiński (uproszczony)](../zh/README.md) | [Chiński (tradycyjny, Hongkong)](../hk/README.md) | [Chiński (tradycyjny, Makau)](../mo/README.md) | [Chiński (tradycyjny, Tajwan)](../tw/README.md) | [Chorwacki](../hr/README.md) | [Czeski](../cs/README.md) | [Duński](../da/README.md) | [Holenderski](../nl/README.md) | [Estoński](../et/README.md) | [Fiński](../fi/README.md) | [Francuski](../fr/README.md) | [Niemiecki](../de/README.md) | [Grecki](../el/README.md) | [Hebrajski](../he/README.md) | [Hindi](../hi/README.md) | [Węgierski](../hu/README.md) | [Indonezyjski](../id/README.md) | [Włoski](../it/README.md) | [Japoński](../ja/README.md) | [Koreański](../ko/README.md) | [Litewski](../lt/README.md) | [Malajski](../ms/README.md) | [Marathi](../mr/README.md) | [Nepalski](../ne/README.md) | [Pidgin nigeryjski](../pcm/README.md) | [Norweski](../no/README.md) | [Perski (Farsi)](../fa/README.md) | [Polski](./README.md) | [Portugalski (Brazylia)](../br/README.md) | [Portugalski (Portugalia)](../pt/README.md) | [Pendżabski (Gurmukhi)](../pa/README.md) | [Rumuński](../ro/README.md) | [Rosyjski](../ru/README.md) | [Serbski (cyrylica)](../sr/README.md) | [Słowacki](../sk/README.md) | [Słoweński](../sl/README.md) | [Hiszpański](../es/README.md) | [Suahili](../sw/README.md) | [Szwedzki](../sv/README.md) | [Tagalog (Filipiński)](../tl/README.md) | [Tamilski](../ta/README.md) | [Tajski](../th/README.md) | [Turecki](../tr/README.md) | [Ukraiński](../uk/README.md) | [Urdu](../ur/README.md) | [Wietnamski](../vi/README.md) - + +[Arabski](../ar/README.md) | [Bengalski](../bn/README.md) | [Bułgarski](../bg/README.md) | [Birmański (Myanmar)](../my/README.md) | [Chiński (uproszczony)](../zh/README.md) | [Chiński (tradycyjny, Hongkong)](../hk/README.md) | [Chiński (tradycyjny, Makau)](../mo/README.md) | [Chiński (tradycyjny, Tajwan)](../tw/README.md) | [Chorwacki](../hr/README.md) | [Czeski](../cs/README.md) | [Duński](../da/README.md) | [Niderlandzki](../nl/README.md) | [Estoński](../et/README.md) | [Fiński](../fi/README.md) | [Francuski](../fr/README.md) | [Niemiecki](../de/README.md) | [Grecki](../el/README.md) | [Hebrajski](../he/README.md) | [Hindi](../hi/README.md) | [Węgierski](../hu/README.md) | [Indonezyjski](../id/README.md) | [Włoski](../it/README.md) | [Japoński](../ja/README.md) | [Kannada](../kn/README.md) | [Koreański](../ko/README.md) | [Litewski](../lt/README.md) | [Malajski](../ms/README.md) | [Malajalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepalski](../ne/README.md) | [Nigeryjski pidgin](../pcm/README.md) | [Norweski](../no/README.md) | [Perski (Farsi)](../fa/README.md) | [Polski](./README.md) | [Portugalski (Brazylia)](../br/README.md) | [Portugalski (Portugalia)](../pt/README.md) | [Pendżabski (Gurmukhi)](../pa/README.md) | [Rumuński](../ro/README.md) | [Rosyjski](../ru/README.md) | [Serbski (cyrylica)](../sr/README.md) | [Słowacki](../sk/README.md) | [Słoweński](../sl/README.md) | [Hiszpański](../es/README.md) | [Suahili](../sw/README.md) | [Szwedzki](../sv/README.md) | [Tagalog (Filipiński)](../tl/README.md) | [Tamilski](../ta/README.md) | [Telugu](../te/README.md) | [Tajski](../th/README.md) | [Turecki](../tr/README.md) | [Ukraiński](../uk/README.md) | [Urdu](../ur/README.md) | [Wietnamski](../vi/README.md) + -#### Dołącz do naszej społeczności +#### Dołącz do naszej społeczności -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Prowadzimy serię nauki z AI na Discordzie, dowiedz się więcej i dołącz do nas na [Learn with AI Series](https://aka.ms/learnwithai/discord) od 18 do 30 września 2025. Otrzymasz wskazówki i triki dotyczące korzystania z GitHub Copilot w Data Science. +Prowadzimy serię „Learn with AI” na Discordzie, dowiedz się więcej i dołącz do nas na [Learn with AI Series](https://aka.ms/learnwithai/discord) w dniach 18 - 30 września 2025. Otrzymasz wskazówki i triki dotyczące korzystania z GitHub Copilot dla Data Science. -![Seria Learn with AI](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.pl.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.pl.png) -# Machine Learning dla początkujących - Program nauczania +# Machine Learning dla początkujących - Program nauczania -> 🌍 Podróżuj po świecie, odkrywając Machine Learning przez pryzmat kultur świata 🌍 +> 🌍 Podróżuj po świecie, poznając uczenie maszynowe przez pryzmat kultur świata 🌍 -Cloud Advocates w Microsoft z przyjemnością oferują 12-tygodniowy, 26-lekcyjny program nauczania poświęcony **Machine Learning**. W tym programie nauczania poznasz to, co czasami nazywane jest **klasycznym uczeniem maszynowym**, korzystając głównie z biblioteki Scikit-learn i unikając głębokiego uczenia, które jest omówione w naszym [programie AI dla początkujących](https://aka.ms/ai4beginners). Połącz te lekcje z naszym programem ['Data Science dla początkujących'](https://aka.ms/ds4beginners)! +Cloud Advocates w Microsoft z przyjemnością oferują 12-tygodniowy, 26-lekcyjny program nauczania poświęcony **Uczeniu maszynowemu**. W tym programie nauczysz się o tym, co czasem nazywa się **klasycznym uczeniem maszynowym**, korzystając głównie z biblioteki Scikit-learn i unikając uczenia głębokiego, które jest omawiane w naszym [programie AI dla początkujących](https://aka.ms/ai4beginners). Połącz te lekcje z naszym ['Data Science dla początkujących'](https://aka.ms/ds4beginners)! -Podróżuj z nami po świecie, stosując te klasyczne techniki do danych z różnych regionów świata. Każda lekcja zawiera quizy przed i po lekcji, pisemne instrukcje do wykonania lekcji, rozwiązanie, zadanie i więcej. Nasza metoda oparta na projektach pozwala uczyć się poprzez budowanie, co jest sprawdzonym sposobem na trwałe przyswajanie nowych umiejętności. +Podróżuj z nami po świecie, stosując klasyczne techniki do danych z różnych regionów świata. Każda lekcja zawiera quizy przed i po lekcji, pisemne instrukcje do wykonania lekcji, rozwiązanie, zadanie i więcej. Nasza pedagogika oparta na projektach pozwala uczyć się podczas tworzenia, co jest sprawdzonym sposobem na trwałe przyswajanie nowych umiejętności. -**✍️ Serdeczne podziękowania dla naszych autorów** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu i Amy Boyd +**✍️ Serdeczne podziękowania dla naszych autorów** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu i Amy Boyd -**🎨 Podziękowania również dla naszych ilustratorów** Tomomi Imura, Dasani Madipalli i Jen Looper +**🎨 Podziękowania również dla naszych ilustratorów** Tomomi Imura, Dasani Madipalli i Jen Looper -**🙏 Specjalne podziękowania 🙏 dla naszych Microsoft Student Ambassador autorów, recenzentów i współtwórców treści**, w szczególności Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila i Snigdha Agarwal +**🙏 Szczególne podziękowania 🙏 dla naszych autorów, recenzentów i współtwórców treści Microsoft Student Ambassador**, w szczególności Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila i Snigdha Agarwal -**🤩 Dodatkowe podziękowania dla Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi i Vidushi Gupta za nasze lekcje R!** +**🤩 Dodatkowa wdzięczność dla Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi i Vidushi Gupta za nasze lekcje w R!** -# Pierwsze kroki +# Rozpoczęcie -Postępuj zgodnie z tymi krokami: -1. **Forkuj repozytorium**: Kliknij przycisk "Fork" w prawym górnym rogu tej strony. -2. **Sklonuj repozytorium**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Wykonaj następujące kroki: +1. **Zrób fork repozytorium**: Kliknij przycisk „Fork” w prawym górnym rogu tej strony. +2. **Sklonuj repozytorium**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [znajdź wszystkie dodatkowe zasoby do tego kursu w naszej kolekcji Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [znajdź wszystkie dodatkowe zasoby do tego kursu w naszej kolekcji Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +> 🔧 **Potrzebujesz pomocy?** Sprawdź nasz [Przewodnik rozwiązywania problemów](TROUBLESHOOTING.md) z rozwiązaniami najczęstszych problemów z instalacją, konfiguracją i uruchamianiem lekcji. -> 🔧 **Potrzebujesz pomocy?** Sprawdź nasz [Przewodnik rozwiązywania problemów](TROUBLESHOOTING.md) w celu uzyskania rozwiązań typowych problemów z instalacją, konfiguracją i uruchamianiem lekcji. -**[Studenci](https://aka.ms/student-page)**, aby korzystać z tego programu nauczania, forkujcie całe repozytorium na swoje konto GitHub i wykonujcie ćwiczenia samodzielnie lub w grupie: +**[Studenci](https://aka.ms/student-page)**, aby korzystać z tego programu, zrób fork całego repozytorium na swoje konto GitHub i wykonuj ćwiczenia samodzielnie lub w grupie: -- Rozpocznij od quizu przed lekcją. -- Przeczytaj lekcję i wykonaj aktywności, zatrzymując się i reflektując przy każdym sprawdzeniu wiedzy. -- Spróbuj stworzyć projekty, rozumiejąc lekcje, zamiast uruchamiać kod rozwiązania; jednak ten kod jest dostępny w folderach `/solution` w każdej lekcji projektowej. -- Wykonaj quiz po lekcji. -- Wykonaj wyzwanie. -- Wykonaj zadanie. -- Po ukończeniu grupy lekcji odwiedź [Tablicę dyskusyjną](https://github.com/microsoft/ML-For-Beginners/discussions) i "ucz się na głos", wypełniając odpowiedni rubrykę PAT. 'PAT' to narzędzie oceny postępów, które jest rubryką, którą wypełniasz, aby pogłębić swoją naukę. Możesz także reagować na inne PAT, abyśmy mogli uczyć się razem. +- Zacznij od quizu przed wykładem. +- Przeczytaj wykład i wykonaj zadania, zatrzymując się i zastanawiając przy każdym sprawdzeniu wiedzy. +- Staraj się tworzyć projekty, rozumiejąc lekcje, zamiast uruchamiać kod rozwiązania; jednak kod ten jest dostępny w folderach `/solution` w każdej lekcji projektowej. +- Zrób quiz po wykładzie. +- Wykonaj wyzwanie. +- Wykonaj zadanie. +- Po ukończeniu grupy lekcji odwiedź [Tablicę dyskusyjną](https://github.com/microsoft/ML-For-Beginners/discussions) i „ucz się na głos”, wypełniając odpowiednią rubrykę PAT. 'PAT' to narzędzie oceny postępów, które wypełniasz, aby pogłębić naukę. Możesz także reagować na inne PAT, abyśmy mogli uczyć się razem. -> Do dalszej nauki polecamy śledzenie tych [modułów i ścieżek nauki Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +> Do dalszej nauki polecamy śledzenie tych modułów i ścieżek nauki [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). -**Nauczyciele**, [zamieściliśmy kilka sugestii](for-teachers.md) dotyczących korzystania z tego programu nauczania. +**Nauczyciele**, zamieściliśmy [kilka sugestii](for-teachers.md) dotyczących korzystania z tego programu. --- -## Przewodniki wideo +## Przewodniki wideo -Niektóre lekcje są dostępne w formie krótkich filmów. Możesz znaleźć je w lekcjach lub na [playliście ML dla początkujących na kanale YouTube Microsoft Developer](https://aka.ms/ml-beginners-videos), klikając obrazek poniżej. +Niektóre lekcje są dostępne w formie krótkich filmów. Znajdziesz je w lekcjach lub na [playliście ML for Beginners na kanale Microsoft Developer YouTube](https://aka.ms/ml-beginners-videos) klikając obraz poniżej. -[![Baner ML dla początkujących](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.pl.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.pl.png)](https://aka.ms/ml-beginners-videos) --- -## Poznaj zespół +## Poznaj zespół -[![Film promocyjny](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif autorstwa** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif autorstwa** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Kliknij obrazek powyżej, aby obejrzeć film o projekcie i osobach, które go stworzyły! +> 🎥 Kliknij powyższy obraz, aby zobaczyć film o projekcie i osobach, które go stworzyły! --- -## Pedagogika - -Podczas tworzenia tego programu nauczania wybraliśmy dwie zasady pedagogiczne: zapewnienie, że jest on oparty na **projektach praktycznych** oraz że zawiera **częste quizy**. Dodatkowo, ten program nauczania ma wspólny **motyw**, który nadaje mu spójność. - -Zapewniając, że treść jest zgodna z projektami, proces staje się bardziej angażujący dla studentów, a przyswajanie koncepcji zostaje wzmocnione. Dodatkowo, quiz o niskiej stawce przed zajęciami ustawia intencję studenta na naukę tematu, podczas gdy drugi quiz po zajęciach zapewnia dalsze przyswajanie wiedzy. Ten program nauczania został zaprojektowany tak, aby był elastyczny i zabawny, i można go realizować w całości lub częściowo. Projekty zaczynają się od prostych i stają się coraz bardziej złożone pod koniec 12-tygodniowego cyklu. Program nauczania zawiera również postscriptum na temat rzeczywistych zastosowań ML, które można wykorzystać jako dodatkowe punkty lub jako podstawę do dyskusji. - -> Znajdź nasz [Kodeks postępowania](CODE_OF_CONDUCT.md), [Wkład](CONTRIBUTING.md), [Tłumaczenia](TRANSLATIONS.md) i [Rozwiązywanie problemów](TROUBLESHOOTING.md). Czekamy na Twoje konstruktywne opinie! - -## Każda lekcja zawiera - -- opcjonalny szkic -- opcjonalne wideo uzupełniające -- przewodnik wideo (tylko niektóre lekcje) -- [quiz rozgrzewkowy przed lekcją](https://ff-quizzes.netlify.app/en/ml/) -- pisemną lekcję -- dla lekcji projektowych, przewodniki krok po kroku, jak zbudować projekt -- sprawdzenie wiedzy -- wyzwanie -- lekturę uzupełniającą -- zadanie -- [quiz po lekcji](https://ff-quizzes.netlify.app/en/ml/) - -> **Uwaga o językach**: Te lekcje są głównie napisane w Pythonie, ale wiele z nich jest również dostępnych w R. Aby ukończyć lekcję w R, przejdź do folderu `/solution` i poszukaj lekcji w R. Zawierają one rozszerzenie .rmd, które reprezentuje **R Markdown**, dokument łączący `fragmenty kodu` (R lub innych języków) i `nagłówek YAML` (określający formatowanie wyjść, takich jak PDF) w `dokumencie Markdown`. Dzięki temu jest to doskonałe narzędzie do tworzenia treści dla data science, ponieważ pozwala łączyć kod, jego wyniki i przemyślenia w Markdown. Dokumenty R Markdown można renderować do formatów wyjściowych, takich jak PDF, HTML czy Word. - -> **Uwaga o quizach**: Wszystkie quizy znajdują się w [folderze Quiz App](../../quiz-app), łącznie 52 quizy po trzy pytania każdy. Są one połączone z lekcjami, ale aplikację quizową można uruchomić lokalnie; postępuj zgodnie z instrukcjami w folderze `quiz-app`, aby hostować lokalnie lub wdrożyć na Azure. - -| Numer lekcji | Temat | Grupa lekcji | Cele nauczania | Powiązana lekcja | Autor | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Wprowadzenie do uczenia maszynowego | [Wprowadzenie](1-Introduction/README.md) | Poznaj podstawowe pojęcia związane z uczeniem maszynowym | [Lekcja](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Historia uczenia maszynowego | [Wprowadzenie](1-Introduction/README.md) | Poznaj historię stojącą za tą dziedziną | [Lekcja](1-Introduction/2-history-of-ML/README.md) | Jen i Amy | -| 03 | Sprawiedliwość i uczenie maszynowe | [Wprowadzenie](1-Introduction/README.md) | Jakie są ważne kwestie filozoficzne dotyczące sprawiedliwości, które należy rozważyć podczas budowy i stosowania modeli ML? | [Lekcja](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Techniki uczenia maszynowego | [Wprowadzenie](1-Introduction/README.md) | Jakie techniki stosują badacze ML do budowy modeli ML? | [Lekcja](1-Introduction/4-techniques-of-ML/README.md) | Chris i Jen | -| 05 | Wprowadzenie do regresji | [Regresja](2-Regression/README.md) | Rozpocznij pracę z Pythonem i Scikit-learn dla modeli regresji | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Ceny dyni w Ameryce Północnej 🎃 | [Regresja](2-Regression/README.md) | Wizualizuj i oczyszczaj dane w przygotowaniu do ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Ceny dyni w Ameryce Północnej 🎃 | [Regresja](2-Regression/README.md) | Buduj modele regresji liniowej i wielomianowej | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen i Dmitry • Eric Wanjau | -| 08 | Ceny dyni w Ameryce Północnej 🎃 | [Regresja](2-Regression/README.md) | Buduj model regresji logistycznej | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Aplikacja webowa 🔌 | [Aplikacja webowa](3-Web-App/README.md) | Zbuduj aplikację webową do wykorzystania swojego wytrenowanego modelu | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Wprowadzenie do klasyfikacji | [Klasyfikacja](4-Classification/README.md) | Oczyszczaj, przygotowuj i wizualizuj dane; wprowadzenie do klasyfikacji | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen i Cassie • Eric Wanjau | -| 11 | Pyszne kuchnie azjatyckie i indyjskie 🍜 | [Klasyfikacja](4-Classification/README.md) | Wprowadzenie do klasyfikatorów | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen i Cassie • Eric Wanjau | -| 12 | Pyszne kuchnie azjatyckie i indyjskie 🍜 | [Klasyfikacja](4-Classification/README.md) | Więcej klasyfikatorów | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen i Cassie • Eric Wanjau | -| 13 | Pyszne kuchnie azjatyckie i indyjskie 🍜 | [Klasyfikacja](4-Classification/README.md) | Zbuduj aplikację rekomendacyjną opartą na swoim modelu | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Wprowadzenie do klastrowania | [Klastrowanie](5-Clustering/README.md) | Oczyszczaj, przygotowuj i wizualizuj dane; wprowadzenie do klastrowania | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Eksploracja gustów muzycznych w Nigerii 🎧 | [Klastrowanie](5-Clustering/README.md) | Eksploruj metodę klastrowania 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 | Wprowadzenie do przetwarzania języka naturalnego ☕️ | [Przetwarzanie języka naturalnego](6-NLP/README.md)| Poznaj podstawy NLP, budując prostego bota | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Typowe zadania NLP ☕️ | [Przetwarzanie języka naturalnego](6-NLP/README.md)| Pogłęb swoją wiedzę o NLP, rozumiejąc typowe zadania związane z przetwarzaniem struktur językowych | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Tłumaczenie i analiza sentymentu ♥️ | [Przetwarzanie języka naturalnego](6-NLP/README.md)| Tłumaczenie i analiza sentymentu z Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantyczne hotele w Europie ♥️ | [Przetwarzanie języka naturalnego](6-NLP/README.md)| Analiza sentymentu na podstawie recenzji hoteli 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantyczne hotele w Europie ♥️ | [Przetwarzanie języka naturalnego](6-NLP/README.md)| Analiza sentymentu na podstawie recenzji hoteli 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Wprowadzenie do prognozowania szeregów czasowych | [Szeregi czasowe](7-TimeSeries/README.md) | Wprowadzenie do prognozowania szeregów czasowych | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Zużycie energii na świecie ⚡️ - prognozowanie z ARIMA | [Szeregi czasowe](7-TimeSeries/README.md) | Prognozowanie szeregów czasowych z ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Zużycie energii na świecie ⚡️ - prognozowanie z SVR | [Szeregi czasowe](7-TimeSeries/README.md) | Prognozowanie szeregów czasowych z Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Wprowadzenie do uczenia ze wzmocnieniem | [Uczenie ze wzmocnieniem](8-Reinforcement/README.md)| Wprowadzenie do uczenia ze wzmocnieniem z Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Pomóż Piotrowi uniknąć wilka! 🐺 | [Uczenie ze wzmocnieniem](8-Reinforcement/README.md)| Gym dla uczenia ze wzmocnieniem | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Scenariusze i zastosowania ML w rzeczywistości | [ML w praktyce](9-Real-World/README.md) | Interesujące i odkrywcze zastosowania klasycznego ML w rzeczywistości | [Lekcja](9-Real-World/1-Applications/README.md) | Zespół | -| Postscript | Debugowanie modeli ML za pomocą pulpitu RAI | [ML w praktyce](9-Real-World/README.md) | Debugowanie modeli uczenia maszynowego za pomocą komponentów odpowiedzialnego AI | [Lekcja](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +## Pedagogika + +Wybraliśmy dwie zasady pedagogiczne podczas tworzenia tego programu: zapewnienie, że jest on praktyczny i oparty na **projektach** oraz że zawiera **częste quizy**. Ponadto program ma wspólny **motyw przewodni**, który nadaje mu spójność. + +Zapewnienie, że treść jest powiązana z projektami, sprawia, że proces jest bardziej angażujący dla uczniów, a zapamiętywanie koncepcji zostaje wzmocnione. Dodatkowo quiz o niskiej stawce przed zajęciami nastawia ucznia na naukę tematu, a drugi quiz po zajęciach zapewnia dalsze utrwalenie. Program został zaprojektowany tak, aby był elastyczny i przyjemny, można go realizować w całości lub częściowo. Projekty zaczynają się od prostych i stają się coraz bardziej złożone pod koniec 12-tygodniowego cyklu. Program zawiera również postscriptum o zastosowaniach ML w rzeczywistym świecie, które można wykorzystać jako dodatkowe punkty lub jako podstawę do dyskusji. + +> Znajdź nasze wytyczne dotyczące [Kodeksu postępowania](CODE_OF_CONDUCT.md), [Współtworzenia](CONTRIBUTING.md), [Tłumaczeń](TRANSLATIONS.md) i [Rozwiązywania problemów](TROUBLESHOOTING.md). Czekamy na Twoją konstruktywną opinię! + +## Każda lekcja zawiera + +- opcjonalną notatkę graficzną +- opcjonalne wideo uzupełniające +- przewodnik wideo (tylko niektóre lekcje) +- [quiz rozgrzewkowy przed wykładem](https://ff-quizzes.netlify.app/en/ml/) +- pisemną lekcję +- w lekcjach projektowych, przewodniki krok po kroku jak zbudować projekt +- sprawdzenia wiedzy +- wyzwanie +- uzupełniającą lekturę +- zadanie +- [quiz po wykładzie](https://ff-quizzes.netlify.app/en/ml/) + +> **Uwaga o językach**: Lekcje są głównie napisane w Pythonie, ale wiele jest również dostępnych w R. Aby ukończyć lekcję w R, przejdź do folderu `/solution` i poszukaj lekcji w R. Zawierają one rozszerzenie .rmd, które oznacza plik **R Markdown**, definiowany jako osadzenie `fragmentów kodu` (R lub innych języków) oraz `nagłówka YAML` (który kieruje formatowaniem wyjść, np. PDF) w `dokumencie Markdown`. Służy to jako wzorcowy framework autorski dla data science, ponieważ pozwala łączyć kod, jego wynik i przemyślenia, zapisując je w Markdown. Ponadto dokumenty R Markdown można renderować do formatów wyjściowych takich jak PDF, HTML czy Word. + +> **Uwaga o quizach**: Wszystkie quizy znajdują się w [folderze Quiz App](../../quiz-app), łącznie 52 quizy po trzy pytania każdy. Są one powiązane z lekcjami, ale aplikację quizową można uruchomić lokalnie; postępuj zgodnie z instrukcjami w folderze `quiz-app`, aby uruchomić lokalnie lub wdrożyć na Azure. + +| Numer lekcji | Temat | Grupa lekcji | Cele nauczania | Powiązana lekcja | Autor | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | Wprowadzenie do uczenia maszynowego | [Introduction](1-Introduction/README.md) | Poznaj podstawowe pojęcia stojące za uczeniem maszynowym | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Historia uczenia maszynowego | [Introduction](1-Introduction/README.md) | Poznaj historię leżącą u podstaw tej dziedziny | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Sprawiedliwość i uczenie maszynowe | [Introduction](1-Introduction/README.md) | Jakie są ważne kwestie filozoficzne dotyczące sprawiedliwości, które studenci powinni rozważyć podczas budowy i stosowania modeli ML? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Techniki uczenia maszynowego | [Introduction](1-Introduction/README.md) | Jakich technik używają badacze ML do budowy modeli ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Wprowadzenie do regresji | [Regression](2-Regression/README.md) | Zacznij pracę z Pythonem i Scikit-learn dla modeli regresji | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Ceny dyni w Ameryce Północnej 🎃 | [Regression](2-Regression/README.md) | Wizualizuj i oczyszczaj dane w przygotowaniu do ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Ceny dyni w Ameryce Północnej 🎃 | [Regression](2-Regression/README.md) | Buduj modele regresji liniowej i wielomianowej | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Ceny dyni w Ameryce Północnej 🎃 | [Regression](2-Regression/README.md) | Buduj model regresji logistycznej | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Aplikacja internetowa 🔌 | [Web App](3-Web-App/README.md) | Zbuduj aplikację internetową do użycia wytrenowanego modelu | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Wprowadzenie do klasyfikacji | [Classification](4-Classification/README.md) | Oczyść, przygotuj i wizualizuj dane; wprowadzenie do klasyfikacji | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Pyszne kuchnie azjatyckie i indyjskie 🍜 | [Classification](4-Classification/README.md) | Wprowadzenie do klasyfikatorów | [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 | Pyszne kuchnie azjatyckie i indyjskie 🍜 | [Classification](4-Classification/README.md) | Więcej klasyfikatorów | [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 | Pyszne kuchnie azjatyckie i indyjskie 🍜 | [Classification](4-Classification/README.md) | Zbuduj aplikację internetową rekomendującą na podstawie twojego modelu | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Wprowadzenie do klasteryzacji | [Clustering](5-Clustering/README.md) | Oczyść, przygotuj i wizualizuj dane; wprowadzenie do klasteryzacji | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Odkrywanie muzycznych gustów Nigerii 🎧 | [Clustering](5-Clustering/README.md) | Poznaj metodę klasteryzacji K-średnich | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Wprowadzenie do przetwarzania języka naturalnego ☕️ | [Natural language processing](6-NLP/README.md) | Poznaj podstawy NLP, budując prostego bota | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Typowe zadania NLP ☕️ | [Natural language processing](6-NLP/README.md) | Pogłęb swoją wiedzę o NLP, poznając typowe zadania związane z przetwarzaniem struktur językowych | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Tłumaczenie i analiza sentymentu ♥️ | [Natural language processing](6-NLP/README.md) | Tłumaczenie i analiza sentymentu z Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantyczne hotele Europy ♥️ | [Natural language processing](6-NLP/README.md) | Analiza sentymentu na podstawie opinii o hotelach 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantyczne hotele Europy ♥️ | [Natural language processing](6-NLP/README.md) | Analiza sentymentu na podstawie opinii o hotelach 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Wprowadzenie do prognozowania szeregów czasowych | [Time series](7-TimeSeries/README.md) | Wprowadzenie do prognozowania szeregów czasowych | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Zużycie energii na świecie ⚡️ - prognozowanie szeregów czasowych z ARIMA | [Time series](7-TimeSeries/README.md) | Prognozowanie szeregów czasowych z ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Zużycie energii na świecie ⚡️ - prognozowanie szeregów czasowych z SVR | [Time series](7-TimeSeries/README.md) | Prognozowanie szeregów czasowych z regresorem wektorów nośnych (SVR) | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Wprowadzenie do uczenia ze wzmocnieniem | [Reinforcement learning](8-Reinforcement/README.md) | Wprowadzenie do uczenia ze wzmocnieniem z Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Pomóż Piotrowi uniknąć wilka! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Uczenie ze wzmocnieniem w Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Scenariusze i zastosowania ML w rzeczywistym świecie | [ML in the Wild](9-Real-World/README.md) | Interesujące i pouczające zastosowania klasycznego ML w rzeczywistym świecie | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Debugowanie modeli ML za pomocą pulpitu RAI | [ML in the Wild](9-Real-World/README.md) | Debugowanie modeli w uczeniu maszynowym za pomocą komponentów pulpitu Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [znajdź wszystkie dodatkowe zasoby do tego kursu w naszej kolekcji Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Dostęp offline -Możesz uruchomić tę dokumentację offline, korzystając z [Docsify](https://docsify.js.org/#/). Sforkuj to repozytorium, [zainstaluj Docsify](https://docsify.js.org/#/quickstart) na swoim lokalnym komputerze, a następnie w katalogu głównym tego repozytorium wpisz `docsify serve`. Strona internetowa zostanie uruchomiona na porcie 3000 na twoim localhost: `localhost:3000`. +Możesz uruchomić tę dokumentację offline, korzystając z [Docsify](https://docsify.js.org/#/). Sklonuj to repozytorium, [zainstaluj Docsify](https://docsify.js.org/#/quickstart) na swoim lokalnym komputerze, a następnie w głównym folderze tego repozytorium wpisz `docsify serve`. Strona będzie dostępna na porcie 3000 na twoim localhost: `localhost:3000`. -## PDF-y +## Pliki PDF -Znajdź plik PDF z programem nauczania i linkami [tutaj](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Znajdź pdf programu nauczania z linkami [tutaj](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Inne kursy +## 🎒 Inne kursy Nasz zespół tworzy inne kursy! Sprawdź: +### LangChain +[![LangChain4j dla początkujących](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js dla początkujących](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + ### Azure / Edge / MCP / Agenci -[![AZD dla początkujących](https://img.shields.io/badge/AZD%20dla%20początkujących-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI dla początkujących](https://img.shields.io/badge/Edge%20AI%20dla%20początkujących-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP dla początkujących](https://img.shields.io/badge/MCP%20dla%20początkujących-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Agenci AI dla początkujących](https://img.shields.io/badge/Agenci%20AI%20dla%20początkujących-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AZD dla początkujących](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI dla początkujących](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP dla początkujących](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Agenci AI dla początkujących](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- -### Seria Generatywna AI -[![Generatywna AI dla początkujących](https://img.shields.io/badge/Generatywna%20AI%20dla%20początkujących-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generatywna AI (.NET)](https://img.shields.io/badge/Generatywna%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generatywna AI (Java)](https://img.shields.io/badge/Generatywna%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generatywna AI (JavaScript)](https://img.shields.io/badge/Generatywna%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Seria Generative AI +[![Generative AI dla początkujących](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- -### Podstawowe nauczanie -[![ML dla Początkujących](https://img.shields.io/badge/ML%20dla%20Początkujących-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science dla Początkujących](https://img.shields.io/badge/Data%20Science%20dla%20Początkujących-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI dla Początkujących](https://img.shields.io/badge/AI%20dla%20Początkujących-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cyberbezpieczeństwo dla Początkujących](https://img.shields.io/badge/Cyberbezpieczeństwo%20dla%20Początkujących-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web Dev dla Początkujących](https://img.shields.io/badge/Web%20Dev%20dla%20Początkujących-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT dla Początkujących](https://img.shields.io/badge/IoT%20dla%20Początkujących-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR Development dla Początkujących](https://img.shields.io/badge/XR%20Development%20dla%20Początkujących-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +### Podstawowa nauka +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Seria Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Seria Copilot -[![Copilot dla Programowania w Parze z AI](https://img.shields.io/badge/Copilot%20dla%20Programowania%20w%20Parze%20z%20AI-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot dla C#/.NET](https://img.shields.io/badge/Copilot%20dla%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Uzyskiwanie Pomocy +## Uzyskiwanie pomocy -Jeśli utkniesz lub masz pytania dotyczące tworzenia aplikacji AI, dołącz do dyskusji z innymi uczącymi się i doświadczonymi programistami na temat MCP. To wspierająca społeczność, gdzie pytania są mile widziane, a wiedza jest swobodnie dzielona. +Jeśli utkniesz lub masz pytania dotyczące tworzenia aplikacji AI. Dołącz do innych uczących się i doświadczonych programistów w dyskusjach o MCP. To wspierająca społeczność, gdzie pytania są mile widziane, a wiedza jest swobodnie dzielona. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Jeśli masz uwagi dotyczące produktu lub napotkasz błędy podczas tworzenia, odwiedź: +Jeśli masz uwagi dotyczące produktu lub napotkasz błędy podczas tworzenia, odwiedź: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Zastrzeżenie**: -Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. +Niniejszy dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mimo że dokładamy starań, aby tłumaczenie było jak najbardziej precyzyjne, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w języku źródłowym powinien być uznawany za źródło autorytatywne. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia. \ No newline at end of file diff --git a/translations/pt/README.md b/translations/pt/README.md index 6ea33ccd0..2782899d5 100644 --- a/translations/pt/README.md +++ b/translations/pt/README.md @@ -1,55 +1,55 @@ -[![Licença do GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Contribuidores do GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Problemas do GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Pull Requests do GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![Licença GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![Contribuidores GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![Problemas GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![Pedidos de Pull GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) [![PRs Bem-vindos](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Observadores do GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Forks do GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Estrelas do GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![Observadores GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![Bifurcações GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![Estrelas GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Suporte Multilíngue -#### Suporte via GitHub Action (Automatizado e Sempre Atualizado) +#### Suportado via GitHub Action (Automatizado e Sempre Atualizado) - -[Árabe](../ar/README.md) | [Bengali](../bn/README.md) | [Búlgaro](../bg/README.md) | [Birmanês (Myanmar)](../my/README.md) | [Chinês (Simplificado)](../zh/README.md) | [Chinês (Tradicional, Hong Kong)](../hk/README.md) | [Chinês (Tradicional, Macau)](../mo/README.md) | [Chinês (Tradicional, Taiwan)](../tw/README.md) | [Croata](../hr/README.md) | [Checo](../cs/README.md) | [Dinamarquês](../da/README.md) | [Holandês](../nl/README.md) | [Estoniano](../et/README.md) | [Finlandês](../fi/README.md) | [Francês](../fr/README.md) | [Alemão](../de/README.md) | [Grego](../el/README.md) | [Hebraico](../he/README.md) | [Hindi](../hi/README.md) | [Húngaro](../hu/README.md) | [Indonésio](../id/README.md) | [Italiano](../it/README.md) | [Japonês](../ja/README.md) | [Coreano](../ko/README.md) | [Lituano](../lt/README.md) | [Malaio](../ms/README.md) | [Marathi](../mr/README.md) | [Nepalês](../ne/README.md) | [Pidgin Nigeriano](../pcm/README.md) | [Norueguês](../no/README.md) | [Persa (Farsi)](../fa/README.md) | [Polaco](../pl/README.md) | [Português (Brasil)](../br/README.md) | [Português (Portugal)](./README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romeno](../ro/README.md) | [Russo](../ru/README.md) | [Sérvio (Cirílico)](../sr/README.md) | [Eslovaco](../sk/README.md) | [Esloveno](../sl/README.md) | [Espanhol](../es/README.md) | [Suaíli](../sw/README.md) | [Sueco](../sv/README.md) | [Tagalo (Filipino)](../tl/README.md) | [Tâmil](../ta/README.md) | [Tailandês](../th/README.md) | [Turco](../tr/README.md) | [Ucraniano](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamita](../vi/README.md) - + +[Árabe](../ar/README.md) | [Bengali](../bn/README.md) | [Búlgaro](../bg/README.md) | [Birmanês (Myanmar)](../my/README.md) | [Chinês (Simplificado)](../zh/README.md) | [Chinês (Tradicional, Hong Kong)](../hk/README.md) | [Chinês (Tradicional, Macau)](../mo/README.md) | [Chinês (Tradicional, Taiwan)](../tw/README.md) | [Croata](../hr/README.md) | [Checo](../cs/README.md) | [Dinamarquês](../da/README.md) | [Holandês](../nl/README.md) | [Estónio](../et/README.md) | [Finlandês](../fi/README.md) | [Francês](../fr/README.md) | [Alemão](../de/README.md) | [Grego](../el/README.md) | [Hebraico](../he/README.md) | [Hindi](../hi/README.md) | [Húngaro](../hu/README.md) | [Indonésio](../id/README.md) | [Italiano](../it/README.md) | [Japonês](../ja/README.md) | [Kannada](../kn/README.md) | [Coreano](../ko/README.md) | [Lituano](../lt/README.md) | [Malaio](../ms/README.md) | [Malaiala](../ml/README.md) | [Marata](../mr/README.md) | [Nepali](../ne/README.md) | [Pidgin Nigeriano](../pcm/README.md) | [Norueguês](../no/README.md) | [Persa (Farsi)](../fa/README.md) | [Polaco](../pl/README.md) | [Português (Brasil)](../br/README.md) | [Português (Portugal)](./README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romeno](../ro/README.md) | [Russo](../ru/README.md) | [Sérvio (Cirílico)](../sr/README.md) | [Eslovaco](../sk/README.md) | [Esloveno](../sl/README.md) | [Espanhol](../es/README.md) | [Suaíli](../sw/README.md) | [Sueco](../sv/README.md) | [Tagalo (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Tailandês](../th/README.md) | [Turco](../tr/README.md) | [Ucraniano](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamita](../vi/README.md) + #### Junte-se à Nossa Comunidade [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Estamos a realizar uma série de aprendizagem com IA no Discord. Saiba mais e junte-se a nós na [Série Aprender com IA](https://aka.ms/learnwithai/discord) de 18 a 30 de setembro de 2025. Receba dicas e truques sobre como usar o GitHub Copilot para Ciência de Dados. +Temos uma série no Discord para aprender com IA em curso, saiba mais e junte-se a nós em [Learn with AI Series](https://aka.ms/learnwithai/discord) de 18 a 30 de setembro de 2025. Vai receber dicas e truques para usar o GitHub Copilot para Ciência de Dados. -![Série Aprender com IA](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.pt.png) +![Série Learn with AI](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.pt.png) # Aprendizagem Automática para Iniciantes - Um Currículo > 🌍 Viaje pelo mundo enquanto exploramos Aprendizagem Automática através das culturas mundiais 🌍 -Os Cloud Advocates da Microsoft têm o prazer de oferecer um currículo de 12 semanas e 26 lições sobre **Aprendizagem Automática**. Neste currículo, aprenderá sobre o que às vezes é chamado de **aprendizagem automática clássica**, utilizando principalmente a biblioteca Scikit-learn e evitando aprendizagem profunda, que é abordada no nosso [currículo de IA para Iniciantes](https://aka.ms/ai4beginners). Combine estas lições com o nosso currículo ['Ciência de Dados para Iniciantes'](https://aka.ms/ds4beginners), também! +Os Cloud Advocates da Microsoft têm o prazer de oferecer um currículo de 12 semanas, com 26 lições, totalmente dedicado à **Aprendizagem Automática**. Neste currículo, aprenderá sobre o que às vezes é chamado de **aprendizagem automática clássica**, usando principalmente a biblioteca Scikit-learn e evitando o deep learning, que é abordado no nosso [currículo AI para Iniciantes](https://aka.ms/ai4beginners). Combine estas lições com o nosso ['Currículo de Ciência de Dados para Iniciantes'](https://aka.ms/ds4beginners), também! -Viaje connosco pelo mundo enquanto aplicamos estas técnicas clássicas a dados de várias partes do mundo. Cada lição inclui questionários antes e depois da aula, instruções escritas para completar a lição, uma solução, uma tarefa e muito mais. A nossa pedagogia baseada em projetos permite que aprenda enquanto constrói, uma forma comprovada de fixar novas habilidades. +Viaje connosco pelo mundo enquanto aplicamos estas técnicas clássicas a dados de várias regiões do mundo. Cada lição inclui questionários pré e pós-lição, instruções escritas para completar a lição, uma solução, um desafio, e mais. A nossa pedagogia baseada em projetos permite aprender enquanto constrói, uma forma comprovada de fixar novas competências. -**✍️ Um agradecimento especial aos nossos autores** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu e Amy Boyd +**✍️ Um grande obrigado aos nossos autores** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu e Amy Boyd -**🎨 Agradecimentos também aos nossos ilustradores** Tomomi Imura, Dasani Madipalli e Jen Looper +**🎨 Obrigado também aos nossos ilustradores** Tomomi Imura, Dasani Madipalli, e Jen Looper -**🙏 Agradecimentos especiais 🙏 aos nossos autores, revisores e contribuidores de conteúdo Microsoft Student Ambassador**, especialmente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila e Snigdha Agarwal +**🙏 Agradecimentos especiais 🙏 aos nossos autores, revisores e colaboradores de conteúdo Microsoft Student Ambassador**, nomeadamente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, e Snigdha Agarwal -**🤩 Gratidão extra aos Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi e Vidushi Gupta pelas nossas lições em R!** +**🤩 Gratidão extra aos Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, e Vidushi Gupta pelas nossas lições em R!** -# Começando +# Começar Siga estes passos: 1. **Faça um Fork do Repositório**: Clique no botão "Fork" no canto superior direito desta página. @@ -57,19 +57,20 @@ Siga estes passos: > [encontre todos os recursos adicionais para este curso na nossa coleção Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Precisa de ajuda?** Consulte o nosso [Guia de Solução de Problemas](TROUBLESHOOTING.md) para soluções de problemas comuns com instalação, configuração e execução das lições. +> 🔧 **Precisa de ajuda?** Consulte o nosso [Guia de Resolução de Problemas](TROUBLESHOOTING.md) para soluções comuns relacionadas com instalação, configuração e execução das lições. -**[Estudantes](https://aka.ms/student-page)**, para usar este currículo, faça um fork de todo o repositório para a sua própria conta GitHub e complete os exercícios sozinho ou em grupo: -- Comece com um questionário antes da aula. +**[Estudantes](https://aka.ms/student-page)**, para usar este currículo, faça fork do repositório completo para a sua conta GitHub e complete os exercícios sozinho ou em grupo: + +- Comece com um questionário pré-aula. - Leia a aula e complete as atividades, pausando e refletindo em cada verificação de conhecimento. -- Tente criar os projetos compreendendo as lições em vez de executar o código da solução; no entanto, esse código está disponível nas pastas `/solution` em cada lição orientada por projeto. -- Faça o questionário após a aula. +- Tente criar os projetos compreendendo as lições em vez de apenas executar o código da solução; no entanto, esse código está disponível nas pastas `/solution` em cada lição orientada a projetos. +- Faça o questionário pós-aula. - Complete o desafio. - Complete a tarefa. -- Após completar um grupo de lições, visite o [Fórum de Discussão](https://github.com/microsoft/ML-For-Beginners/discussions) e "aprenda em voz alta" preenchendo o rubrica PAT apropriado. Um 'PAT' é uma Ferramenta de Avaliação de Progresso que é uma rubrica que preenche para aprofundar o seu aprendizado. Também pode reagir a outros PATs para aprendermos juntos. +- Após completar um grupo de lições, visite o [Fórum de Discussão](https://github.com/microsoft/ML-For-Beginners/discussions) e "aprenda em voz alta" preenchendo a rubrica PAT apropriada. Um 'PAT' é uma Ferramenta de Avaliação de Progresso que é uma rubrica que preenche para aprofundar o seu aprendizado. Também pode reagir a outros PATs para aprendermos juntos. -> Para estudo adicional, recomendamos seguir estes módulos e caminhos de aprendizagem [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +> Para estudo adicional, recomendamos seguir estes módulos e percursos de aprendizagem [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). **Professores**, incluímos [algumas sugestões](for-teachers.md) sobre como usar este currículo. @@ -77,9 +78,9 @@ Siga estes passos: ## Vídeos explicativos -Algumas das lições estão disponíveis em formato de vídeo curto. Pode encontrar todos estes vídeos nas lições ou na [playlist ML para Iniciantes no canal Microsoft Developer no YouTube](https://aka.ms/ml-beginners-videos) clicando na imagem abaixo. +Algumas das lições estão disponíveis em formato de vídeo curto. Pode encontrá-los integrados nas lições ou na [playlist ML for Beginners no canal Microsoft Developer no YouTube](https://aka.ms/ml-beginners-videos) clicando na imagem abaixo. -[![Banner ML para iniciantes](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.pt.png)](https://aka.ms/ml-beginners-videos) +[![Banner ML for beginners](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.pt.png)](https://aka.ms/ml-beginners-videos) --- @@ -89,126 +90,134 @@ Algumas das lições estão disponíveis em formato de vídeo curto. Pode encont **Gif por** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Clique na imagem acima para ver um vídeo sobre o projeto e as pessoas que o criaram! +> 🎥 Clique na imagem acima para um vídeo sobre o projeto e as pessoas que o criaram! --- ## Pedagogia -Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que seja **baseado em projetos práticos** e que inclua **questionários frequentes**. Além disso, este currículo tem um **tema comum** para lhe dar coesão. +Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que é prático e **baseado em projetos** e que inclui **questionários frequentes**. Além disso, este currículo tem um **tema** comum para lhe dar coesão. -Ao garantir que o conteúdo está alinhado com projetos, o processo torna-se mais envolvente para os estudantes e a retenção de conceitos será aumentada. Além disso, um questionário de baixo risco antes da aula define a intenção do estudante para aprender um tópico, enquanto um segundo questionário após a aula garante maior retenção. Este currículo foi projetado para ser flexível e divertido e pode ser realizado na totalidade ou em parte. Os projetos começam pequenos e tornam-se cada vez mais complexos até ao final do ciclo de 12 semanas. Este currículo também inclui um pós-escrito sobre aplicações reais de ML, que pode ser usado como crédito extra ou como base para discussão. +Ao garantir que o conteúdo está alinhado com projetos, o processo torna-se mais envolvente para os estudantes e a retenção dos conceitos será aumentada. Além disso, um questionário de baixo risco antes da aula define a intenção do estudante para aprender um tópico, enquanto um segundo questionário após a aula assegura uma retenção adicional. Este currículo foi desenhado para ser flexível e divertido e pode ser feito na totalidade ou em partes. Os projetos começam pequenos e tornam-se progressivamente mais complexos até ao final do ciclo de 12 semanas. Este currículo inclui também um posfácio sobre aplicações reais de ML, que pode ser usado como crédito extra ou como base para discussão. -> Encontre o nosso [Código de Conduta](CODE_OF_CONDUCT.md), [Contribuições](CONTRIBUTING.md), [Traduções](TRANSLATIONS.md) e [Solução de Problemas](TROUBLESHOOTING.md). Agradecemos o seu feedback construtivo! +> Encontre as nossas diretrizes de [Código de Conduta](CODE_OF_CONDUCT.md), [Contribuição](CONTRIBUTING.md), [Tradução](TRANSLATIONS.md) e [Resolução de Problemas](TROUBLESHOOTING.md). Agradecemos o seu feedback construtivo! ## Cada lição inclui - sketchnote opcional - vídeo suplementar opcional -- vídeo explicativo (algumas lições apenas) -- [questionário de aquecimento antes da aula](https://ff-quizzes.netlify.app/en/ml/) +- vídeo explicativo (apenas algumas lições) +- [questionário de aquecimento pré-aula](https://ff-quizzes.netlify.app/en/ml/) - lição escrita -- para lições baseadas em projetos, guias passo a passo sobre como construir o projeto +- para lições baseadas em projetos, guias passo a passo para construir o projeto - verificações de conhecimento - um desafio - leitura suplementar - tarefa -- [questionário após a aula](https://ff-quizzes.netlify.app/en/ml/) +- [questionário pós-aula](https://ff-quizzes.netlify.app/en/ml/) -> **Uma nota sobre linguagens**: Estas lições são escritas principalmente em Python, mas muitas também estão disponíveis em R. Para completar uma lição em R, vá à pasta `/solution` e procure lições em R. Elas incluem uma extensão .rmd que representa um arquivo **R Markdown**, que pode ser definido como uma incorporação de `blocos de código` (de R ou outras linguagens) e um `cabeçalho YAML` (que orienta como formatar saídas como PDF) num `documento Markdown`. Assim, serve como um excelente framework de autoria para ciência de dados, pois permite combinar o seu código, os seus resultados e os seus pensamentos, permitindo que os escreva em Markdown. Além disso, documentos R Markdown podem ser renderizados em formatos de saída como PDF, HTML ou Word. +> **Uma nota sobre línguas**: Estas lições são principalmente escritas em Python, mas muitas também estão disponíveis em R. Para completar uma lição em R, vá à pasta `/solution` e procure as lições em R. Estas incluem uma extensão .rmd que representa um ficheiro **R Markdown**, que pode ser simplesmente definido como uma incorporação de `blocos de código` (de R ou outras linguagens) e um `cabeçalho YAML` (que orienta como formatar saídas como PDF) num `documento Markdown`. Como tal, serve como um excelente framework de autoria para ciência de dados, pois permite combinar o seu código, a sua saída e os seus pensamentos escrevendo-os em Markdown. Além disso, documentos R Markdown podem ser convertidos para formatos de saída como PDF, HTML ou Word. -> **Uma nota sobre questionários**: Todos os questionários estão contidos na [pasta Quiz App](../../quiz-app), totalizando 52 questionários de três perguntas cada. Eles estão vinculados nas lições, mas a aplicação de questionários pode ser executada localmente; siga as instruções na pasta `quiz-app` para hospedar localmente ou implantar no Azure. +> **Uma nota sobre questionários**: Todos os questionários estão contidos na [pasta Quiz App](../../quiz-app), totalizando 52 questionários com três perguntas cada. Eles estão ligados dentro das lições, mas a aplicação de questionários pode ser executada localmente; siga as instruções na pasta `quiz-app` para hospedar localmente ou implantar no Azure. -| Número da Lição | Tópico | Agrupamento de Lições | Objetivos de Aprendizagem | Lição Vinculada | Autor | +| Número da Lição | Tópico | Agrupamento da Lição | Objetivos de Aprendizagem | Lição Ligada | Autor | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Introdução ao aprendizado de máquina | [Introdução](1-Introduction/README.md) | Aprenda os conceitos básicos por trás do aprendizado de máquina | [Lição](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | A História do aprendizado de máquina | [Introdução](1-Introduction/README.md) | Aprenda a história por trás deste campo | [Lição](1-Introduction/2-history-of-ML/README.md) | Jen e Amy | -| 03 | Justiça e aprendizado de máquina | [Introdução](1-Introduction/README.md) | Quais são as questões filosóficas importantes sobre justiça que os alunos devem considerar ao construir e aplicar modelos de aprendizado de máquina? | [Lição](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Técnicas para aprendizado de máquina | [Introdução](1-Introduction/README.md) | Quais técnicas os pesquisadores de aprendizado de máquina utilizam para construir modelos? | [Lição](1-Introduction/4-techniques-of-ML/README.md) | Chris e Jen | -| 05 | Introdução à regressão | [Regressão](2-Regression/README.md) | Comece com Python e Scikit-learn para modelos de regressão | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Preços de abóbora na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Visualize e limpe os dados em preparação para aprendizado de máquina | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Preços de abóbora na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Construa modelos de regressão linear e polinomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen e Dmitry • Eric Wanjau | -| 08 | Preços de abóbora na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Construa um modelo de regressão logística | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Uma aplicação web 🔌 | [Aplicação Web](3-Web-App/README.md) | Construa uma aplicação web para usar seu modelo treinado | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Introdução à classificação | [Classificação](4-Classification/README.md) | Limpe, prepare e visualize seus dados; introdução à classificação | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen e Cassie • Eric Wanjau | -| 11 | Deliciosas culinárias asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Introdução aos classificadores | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen e Cassie • Eric Wanjau | -| 12 | Deliciosas culinárias asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Mais classificadores | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen e Cassie • Eric Wanjau | -| 13 | Deliciosas culinárias asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Construa uma aplicação web de recomendação usando seu modelo | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Introdução à clusterização | [Clusterização](5-Clustering/README.md) | Limpe, prepare e visualize seus dados; Introdução à clusterização | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Explorando gostos musicais nigerianos 🎧 | [Clusterização](5-Clustering/README.md) | Explore o método de clusterização 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 | Introdução ao processamento de linguagem natural ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprenda o básico sobre NLP construindo um bot simples | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Tarefas comuns de NLP ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprofunde seu conhecimento em NLP entendendo tarefas comuns ao lidar com estruturas de linguagem | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Tradução e análise de sentimentos ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Tradução e análise de sentimentos com Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Hotéis românticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimentos com avaliações de hotéis 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Hotéis românticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimentos com avaliações de hotéis 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Introdução à previsão de séries temporais | [Séries temporais](7-TimeSeries/README.md) | Introdução à previsão de séries temporais | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Uso de energia mundial ⚡️ - previsão de séries temporais com ARIMA | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Uso de energia mundial ⚡️ - previsão de séries temporais com SVR | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Introdução ao aprendizado por reforço | [Aprendizado por reforço](8-Reinforcement/README.md) | Introdução ao aprendizado por reforço com Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Ajude Peter a evitar o lobo! 🐺 | [Aprendizado por reforço](8-Reinforcement/README.md) | Aprendizado por reforço com Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Pós-escrito | Cenários e aplicações reais de aprendizado de máquina | [ML no Mundo Real](9-Real-World/README.md) | Aplicações reais interessantes e reveladoras de aprendizado de máquina clássico | [Lição](9-Real-World/1-Applications/README.md) | Equipe | -| Pós-escrito | Depuração de modelos de aprendizado de máquina usando o painel RAI | [ML no Mundo Real](9-Real-World/README.md) | Depuração de modelos de aprendizado de máquina usando componentes do painel de IA Responsável | [Lição](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +| 01 | Introdução ao machine learning | [Introduction](1-Introduction/README.md) | Aprenda os conceitos básicos por trás do machine learning | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | A História do machine learning | [Introduction](1-Introduction/README.md) | Aprenda a história subjacente a este campo | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Justiça e machine learning | [Introduction](1-Introduction/README.md) | Quais são as questões filosóficas importantes em torno da justiça que os estudantes devem considerar ao construir e aplicar modelos de ML? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Técnicas para machine learning | [Introduction](1-Introduction/README.md) | Que técnicas os investigadores de ML usam para construir modelos de ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Introdução à regressão | [Regression](2-Regression/README.md) | Comece com Python e Scikit-learn para modelos de regressão | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Preços de abóboras na América do Norte 🎃 | [Regression](2-Regression/README.md) | Visualize e limpe dados em preparação para ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Preços de abóboras na América do Norte 🎃 | [Regression](2-Regression/README.md) | Construa modelos de regressão linear e polinomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Preços de abóboras na América do Norte 🎃 | [Regression](2-Regression/README.md) | Construa um modelo de regressão logística | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Uma App Web 🔌 | [Web App](3-Web-App/README.md) | Construa uma app web para usar o seu modelo treinado | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Introdução à classificação | [Classification](4-Classification/README.md) | Limpe, prepare e visualize os seus dados; introdução à classificação | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Culinárias deliciosas asiáticas e indianas 🍜 | [Classification](4-Classification/README.md) | Introdução aos classificadores | [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 | Culinárias deliciosas asiáticas e indianas 🍜 | [Classification](4-Classification/README.md) | Mais classificadores | [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 | Culinárias deliciosas asiáticas e indianas 🍜 | [Classification](4-Classification/README.md) | Construa uma app web recomendadora usando o seu modelo | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Introdução ao clustering | [Clustering](5-Clustering/README.md) | Limpe, prepare e visualize os seus dados; Introdução ao clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Explorando gostos musicais nigerianos 🎧 | [Clustering](5-Clustering/README.md) | Explore o método de clustering 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 | Introdução ao processamento de linguagem natural ☕️ | [Natural language processing](6-NLP/README.md) | Aprenda o básico sobre PLN construindo um bot simples | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Tarefas comuns de PLN ☕️ | [Natural language processing](6-NLP/README.md) | Aprofunde o seu conhecimento de PLN entendendo tarefas comuns necessárias ao lidar com estruturas linguísticas | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Tradução e análise de sentimento ♥️ | [Natural language processing](6-NLP/README.md) | Tradução e análise de sentimento com Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Hotéis românticos da Europa ♥️ | [Natural language processing](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Hotéis românticos da Europa ♥️ | [Natural language processing](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Introdução à previsão de séries temporais | [Time series](7-TimeSeries/README.md) | Introdução à previsão de séries temporais | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Consumo mundial de energia ⚡️ - previsão de séries temporais com ARIMA | [Time series](7-TimeSeries/README.md) | Previsão de séries temporais com ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Consumo mundial de energia ⚡️ - previsão de séries temporais com SVR | [Time series](7-TimeSeries/README.md) | Previsão de séries temporais com Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Introdução ao reinforcement learning | [Reinforcement learning](8-Reinforcement/README.md) | Introdução ao reinforcement learning com Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Ajude o Peter a evitar o lobo! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Cenários e aplicações reais de ML | [ML in the Wild](9-Real-World/README.md) | Aplicações reais interessantes e reveladoras de ML clássico | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Depuração de modelos em ML usando o dashboard RAI | [ML in the Wild](9-Real-World/README.md) | Depuração de modelos em Machine Learning usando componentes do dashboard Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [encontre todos os recursos adicionais para este curso na nossa coleção Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Acesso offline -Você pode executar esta documentação offline usando [Docsify](https://docsify.js.org/#/). Faça um fork deste repositório, [instale o Docsify](https://docsify.js.org/#/quickstart) na sua máquina local e, na pasta raiz deste repositório, digite `docsify serve`. O site será servido na porta 3000 do seu localhost: `localhost:3000`. +Pode executar esta documentação offline usando [Docsify](https://docsify.js.org/#/). Faça um fork deste repositório, [instale o Docsify](https://docsify.js.org/#/quickstart) na sua máquina local e depois, na pasta raiz deste repositório, digite `docsify serve`. O website será servido na porta 3000 no seu localhost: `localhost:3000`. ## PDFs -Encontre um PDF do currículo com links [aqui](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Encontre um pdf do currículo com links [aqui](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). ## 🎒 Outros Cursos -Nossa equipe produz outros cursos! Confira: +A nossa equipa produz outros cursos! Veja: -### Azure / Edge / MCP / Agentes -[![AZD para Iniciantes](https://img.shields.io/badge/AZD%20para%20Iniciantes-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI para Iniciantes](https://img.shields.io/badge/Edge%20AI%20para%20Iniciantes-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP para Iniciantes](https://img.shields.io/badge/MCP%20para%20Iniciantes-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Agentes de IA para Iniciantes](https://img.shields.io/badge/Agentes%20de%20IA%20para%20Iniciantes-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Série de IA Generativa -[![IA Generativa para Iniciantes](https://img.shields.io/badge/IA%20Generativa%20para%20Iniciantes-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![IA Generativa (.NET)](https://img.shields.io/badge/IA%20Generativa%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![IA Generativa (Java)](https://img.shields.io/badge/IA%20Generativa%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![IA Generativa (JavaScript)](https://img.shields.io/badge/IA%20Generativa%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Aprendizado Essencial -[![ML para Iniciantes](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Ciência de Dados para Iniciantes](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![IA para Iniciantes](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cibersegurança para Iniciantes](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Desenvolvimento Web para Iniciantes](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT para Iniciantes](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Desenvolvimento XR para Iniciantes](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +### Série de IA Generativa +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![IA Generativa (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![IA Generativa (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- + +### Aprendizagem Principal +[![ML para Iniciantes](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Ciência de Dados para Iniciantes](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![IA para Iniciantes](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cibersegurança para Iniciantes](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Desenvolvimento Web para Iniciantes](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT para Iniciantes](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![Desenvolvimento XR para Iniciantes](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) -### Série Copilot -[![Copilot para Programação em Par com IA](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot para C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Aventura Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +--- + +### Série Copilot +[![Copilot para Programação Emparelhada com IA](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot para C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Aventura Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -## Obter Ajuda +## Obter Ajuda -Se ficar com dúvidas ou tiver perguntas sobre como criar aplicações de IA, junte-se a outros aprendizes e programadores experientes em discussões sobre MCP. É uma comunidade de apoio onde as perguntas são bem-vindas e o conhecimento é partilhado livremente. +Se ficar bloqueado ou tiver alguma questão sobre como criar aplicações de IA. Junte-se a outros aprendizes e desenvolvedores experientes em discussões sobre MCP. É uma comunidade de apoio onde as perguntas são bem-vindas e o conhecimento é partilhado livremente. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Se tiver feedback sobre produtos ou encontrar erros durante o desenvolvimento, visite: +Se tiver feedback sobre o produto ou erros durante a construção, visite: -[![Fórum de Programadores Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se uma tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, por favor tenha em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/ro/README.md b/translations/ro/README.md index c77239bb7..a34b4caf8 100644 --- a/translations/ro/README.md +++ b/translations/ro/README.md @@ -1,214 +1,223 @@ -[![Licență GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Contribuitori GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Probleme GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Pull-requests GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PR-uri Binevenite](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Observatori GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Fork-uri GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Stele GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Suport Multi-Limbă +### 🌐 Suport Multilingv -#### Suportat prin GitHub Action (Automat & Mereu Actualizat) +#### Suportat prin GitHub Action (Automatizat și Întotdeauna Actualizat) -[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) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/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](./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) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + +[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](./README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + #### Alăturați-vă Comunității Noastre [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Avem o serie de învățare cu AI pe Discord în desfășurare, aflați mai multe și alăturați-vă la [Learn with AI Series](https://aka.ms/learnwithai/discord) între 18 - 30 septembrie, 2025. Veți primi sfaturi și trucuri despre utilizarea GitHub Copilot pentru Data Science. +Avem o serie Discord de învățare cu AI în desfășurare, aflați mai multe și alăturați-vă nouă la [Learn with AI Series](https://aka.ms/learnwithai/discord) în perioada 18 - 30 septembrie 2025. Veți primi sfaturi și trucuri pentru utilizarea GitHub Copilot pentru Data Science. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ro.png) -# Machine Learning pentru Începători - Un Curriculum +# Învățare Automată pentru Începători - Un Curriculum -> 🌍 Călătoriți în jurul lumii în timp ce explorăm Machine Learning prin intermediul culturilor mondiale 🌍 +> 🌍 Călătorește în jurul lumii în timp ce explorăm Învățarea Automată prin intermediul culturilor lumii 🌍 -Advocații Cloud de la Microsoft sunt încântați să ofere un curriculum de 12 săptămâni, cu 26 de lecții, despre **Machine Learning**. În acest curriculum, veți învăța despre ceea ce este uneori numit **machine learning clasic**, utilizând în principal biblioteca Scikit-learn și evitând deep learning, care este acoperit în [curriculumul AI pentru Începători](https://aka.ms/ai4beginners). Combinați aceste lecții cu curriculumul nostru ['Data Science pentru Începători'](https://aka.ms/ds4beginners), de asemenea! +Cloud Advocates de la Microsoft sunt încântați să ofere un curriculum de 12 săptămâni, 26 de lecții, despre **Învățarea Automată**. În acest curriculum, veți învăța despre ceea ce uneori este numit **învățare automată clasică**, folosind în principal biblioteca Scikit-learn și evitând învățarea profundă, care este acoperită în curriculumul nostru [AI pentru Începători](https://aka.ms/ai4beginners). Combinați aceste lecții cu curriculumul nostru ['Data Science pentru Începători'](https://aka.ms/ds4beginners), de asemenea! -Călătoriți cu noi în jurul lumii în timp ce aplicăm aceste tehnici clasice pe date din diverse regiuni ale lumii. Fiecare lecție include chestionare înainte și după lecție, instrucțiuni scrise pentru completarea lecției, o soluție, o temă și multe altele. Pedagogia noastră bazată pe proiecte vă permite să învățați în timp ce construiți, o metodă dovedită pentru a fixa noile abilități. +Călătorește cu noi în jurul lumii în timp ce aplicăm aceste tehnici clasice pe date din multe zone ale lumii. Fiecare lecție include chestionare înainte și după lecție, instrucțiuni scrise pentru a finaliza lecția, o soluție, o temă și altele. Pedagogia noastră bazată pe proiecte vă permite să învățați în timp ce construiți, o metodă dovedită pentru ca noile abilități să se fixeze. -**✍️ Mulțumiri sincere autorilor noștri** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu și Amy Boyd +**✍️ Mulțumiri călduroase autorilor noștri** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu și Amy Boyd **🎨 Mulțumiri și ilustratorilor noștri** Tomomi Imura, Dasani Madipalli și Jen Looper -**🙏 Mulțumiri speciale 🙏 ambasadorilor studenți Microsoft, autori, recenzori și contribuitori de conținut**, în special Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila și Snigdha Agarwal +**🙏 Mulțumiri speciale 🙏 autorilor, recenzorilor și colaboratorilor de conținut Microsoft Student Ambassador**, în special Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila și Snigdha Agarwal -**🤩 Recunoștință suplimentară ambasadorilor studenți Microsoft Eric Wanjau, Jasleen Sondhi și Vidushi Gupta pentru lecțiile noastre în R!** +**🤩 Recunoștință suplimentară pentru Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi și Vidushi Gupta pentru lecțiile noastre în R!** -# Începeți +# Începutul Urmați acești pași: -1. **Forkați Repository-ul**: Faceți clic pe butonul "Fork" din colțul din dreapta sus al acestei pagini. -2. **Clonați Repository-ul**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +1. **Fork la Repozitoriu**: Faceți clic pe butonul "Fork" din colțul din dreapta sus al acestei pagini. +2. **Clonați Repozitoriul**: `git clone https://github.com/microsoft/ML-For-Beginners.git` > [găsiți toate resursele suplimentare pentru acest curs în colecția noastră Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Aveți nevoie de ajutor?** Consultați [Ghidul nostru de depanare](TROUBLESHOOTING.md) pentru soluții la probleme comune legate de instalare, configurare și rularea lecțiilor. +> 🔧 **Aveți nevoie de ajutor?** Consultați [Ghidul de depanare](TROUBLESHOOTING.md) pentru soluții la probleme comune cu instalarea, configurarea și rularea lecțiilor. -**[Studenți](https://aka.ms/student-page)**, pentru a utiliza acest curriculum, forkați întregul repo în propriul cont GitHub și completați exercițiile pe cont propriu sau în grup: + +**[Studenți](https://aka.ms/student-page)**, pentru a folosi acest curriculum, faceți fork la întregul repo în contul vostru GitHub și finalizați exercițiile singuri sau în grup: - Începeți cu un chestionar înainte de lecție. -- Citiți lecția și completați activitățile, oprindu-vă și reflectând la fiecare verificare a cunoștințelor. -- Încercați să creați proiectele înțelegând lecțiile, mai degrabă decât rulând codul soluției; totuși, acel cod este disponibil în folderele `/solution` din fiecare lecție orientată pe proiect. -- Faceți chestionarul de după lecție. -- Completați provocarea. -- Completați tema. -- După finalizarea unui grup de lecții, vizitați [Forum de Discuții](https://github.com/microsoft/ML-For-Beginners/discussions) și "învățați cu voce tare" completând rubricile PAT corespunzătoare. Un 'PAT' este un Instrument de Evaluare a Progresului, o rubrică pe care o completați pentru a vă aprofunda învățarea. De asemenea, puteți reacționa la alte rubrici PAT pentru a învăța împreună. +- Citiți lecția și finalizați activitățile, oprindu-vă și reflectând la fiecare verificare a cunoștințelor. +- Încercați să creați proiectele înțelegând lecțiile, mai degrabă decât rulând codul soluției; totuși, codul este disponibil în folderele `/solution` din fiecare lecție orientată pe proiect. +- Susțineți chestionarul după lecție. +- Finalizați provocarea. +- Finalizați tema. +- După finalizarea unui grup de lecții, vizitați [Forum de Discuții](https://github.com/microsoft/ML-For-Beginners/discussions) și "învățați cu voce tare" completând rubrica PAT corespunzătoare. Un 'PAT' este un Instrument de Evaluare a Progresului, o rubrică pe care o completați pentru a vă aprofunda învățarea. De asemenea, puteți reacționa la alte PAT-uri pentru a învăța împreună. -> Pentru studii suplimentare, recomandăm urmarea acestor module și trasee de învățare [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +> Pentru studiu suplimentar, recomandăm urmarea acestor module și trasee de învățare [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). -**Profesori**, am [inclus câteva sugestii](for-teachers.md) despre cum să utilizați acest curriculum. +**Profesori**, am inclus [câteva sugestii](for-teachers.md) despre cum să folosiți acest curriculum. --- -## Tutoriale video +## Parcurgeri video -Unele lecții sunt disponibile sub formă de videoclipuri scurte. Le puteți găsi pe toate în lecții sau pe [playlist-ul ML pentru Începători de pe canalul YouTube Microsoft Developer](https://aka.ms/ml-beginners-videos) făcând clic pe imaginea de mai jos. +Unele lecții sunt disponibile ca videoclipuri scurte. Le puteți găsi integrate în lecții sau pe [playlist-ul ML for Beginners pe canalul Microsoft Developer YouTube](https://aka.ms/ml-beginners-videos) făcând clic pe imaginea de mai jos. -[![Banner ML pentru începători](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ro.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ro.png)](https://aka.ms/ml-beginners-videos) --- -## Cunoașteți Echipa +## Echipa -[![Video promoțional](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif realizat de** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif de** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Faceți clic pe imaginea de mai sus pentru un videoclip despre proiect și despre oamenii care l-au creat! +> 🎥 Faceți clic pe imaginea de mai sus pentru un videoclip despre proiect și oamenii care l-au creat! --- ## Pedagogie -Am ales două principii pedagogice în construirea acestui curriculum: asigurarea că este **bazat pe proiecte** și că include **chestionare frecvente**. În plus, acest curriculum are o **temă comună** pentru a-i oferi coeziune. +Am ales două principii pedagogice în construirea acestui curriculum: să fie hands-on **bazat pe proiecte** și să includă **chestionare frecvente**. În plus, acest curriculum are o **temă** comună pentru a-i da coeziune. -Prin asigurarea că conținutul se aliniază cu proiectele, procesul devine mai captivant pentru studenți, iar reținerea conceptelor va fi îmbunătățită. În plus, un chestionar cu miză redusă înainte de o clasă setează intenția studentului de a învăța un subiect, în timp ce un al doilea chestionar după clasă asigură o reținere suplimentară. Acest curriculum a fost conceput să fie flexibil și distractiv și poate fi parcurs în întregime sau parțial. Proiectele încep mici și devin din ce în ce mai complexe până la sfârșitul ciclului de 12 săptămâni. Acest curriculum include, de asemenea, un postscript despre aplicațiile reale ale ML, care poate fi utilizat ca credit suplimentar sau ca bază pentru discuții. +Prin asigurarea alinierii conținutului cu proiectele, procesul devine mai captivant pentru studenți și reținerea conceptelor va fi augmentată. În plus, un chestionar cu miză scăzută înainte de curs setează intenția studentului către învățarea unui subiect, în timp ce un al doilea chestionar după curs asigură o reținere suplimentară. Acest curriculum a fost conceput să fie flexibil și distractiv și poate fi parcurs integral sau parțial. Proiectele încep mici și devin din ce în ce mai complexe până la finalul ciclului de 12 săptămâni. Curriculumul include și un postscript despre aplicații reale ale ML, care poate fi folosit ca credit suplimentar sau ca bază pentru discuții. -> Găsiți [Codul nostru de Conduită](CODE_OF_CONDUCT.md), [Contribuții](CONTRIBUTING.md), [Traduceri](TRANSLATIONS.md) și [Ghiduri de depanare](TROUBLESHOOTING.md). Apreciem feedback-ul constructiv! +> Găsiți [Codul nostru de conduită](CODE_OF_CONDUCT.md), [Contribuții](CONTRIBUTING.md), [Traduceri](TRANSLATIONS.md) și [Depanare](TROUBLESHOOTING.md). Așteptăm cu interes feedback-ul vostru constructiv! ## Fiecare lecție include -- opțional schiță grafică -- opțional videoclip suplimentar -- tutorial video (doar pentru unele lecții) +- schiță opțională +- video suplimentar opțional +- parcurgere video (doar unele lecții) - [chestionar de încălzire înainte de lecție](https://ff-quizzes.netlify.app/en/ml/) - lecție scrisă -- pentru lecțiile bazate pe proiecte, ghiduri pas cu pas despre cum să construiți proiectul +- pentru lecțiile bazate pe proiect, ghiduri pas cu pas pentru construirea proiectului - verificări ale cunoștințelor - o provocare - lectură suplimentară - temă -- [chestionar de după lecție](https://ff-quizzes.netlify.app/en/ml/) +- [chestionar după lecție](https://ff-quizzes.netlify.app/en/ml/) -> **O notă despre limbaje**: Aceste lecții sunt scrise în principal în Python, dar multe sunt disponibile și în R. Pentru a completa o lecție în R, accesați folderul `/solution` și căutați lecțiile în R. Acestea includ o extensie .rmd care reprezintă un fișier **R Markdown**, care poate fi definit simplu ca o integrare de `fragmente de cod` (din R sau alte limbaje) și un `header YAML` (care ghidează cum să formateze ieșirile, cum ar fi PDF) într-un `document Markdown`. Astfel, servește ca un cadru exemplu pentru scrierea în domeniul științei datelor, deoarece vă permite să combinați codul, rezultatul acestuia și gândurile dvs. prin scrierea lor în Markdown. Mai mult, documentele R Markdown pot fi transformate în formate de ieșire precum PDF, HTML sau Word. +> **O notă despre limbaje**: Aceste lecții sunt scrise în principal în Python, dar multe sunt disponibile și în R. Pentru a finaliza o lecție în R, mergeți în folderul `/solution` și căutați lecțiile în R. Acestea includ o extensie .rmd care reprezintă un fișier **R Markdown**, definit simplu ca o încorporare de `blocuri de cod` (în R sau alte limbaje) și un `header YAML` (care ghidează cum să formatați ieșirile, cum ar fi PDF) într-un `document Markdown`. Astfel, servește ca un cadru exemplu pentru autorii de știință a datelor, deoarece vă permite să combinați codul, rezultatul său și gândurile dvs. scriindu-le în Markdown. Mai mult, documentele R Markdown pot fi generate în formate de ieșire precum PDF, HTML sau Word. -> **O notă despre chestionare**: Toate chestionarele sunt conținute în [folderul Quiz App](../../quiz-app), pentru un total de 52 de chestionare, fiecare cu trei întrebări. Acestea sunt legate din lecții, dar aplicația de chestionare poate fi rulată local; urmați instrucțiunile din folderul `quiz-app` pentru a găzdui local sau a implementa pe Azure. +> **O notă despre chestionare**: Toate chestionarele sunt conținute în [folderul Quiz App](../../quiz-app), pentru un total de 52 de chestionare cu câte trei întrebări fiecare. Sunt legate din lecții, dar aplicația de chestionare poate fi rulată local; urmați instrucțiunile din folderul `quiz-app` pentru a găzdui local sau a implementa în Azure. -| Număr Lecție | Subiect | Grupare Lecții | Obiective de Învățare | Lecție Legată | Autor | +| Număr Lecție | Subiect | Grupare Lecție | Obiective de Învățare | Lecție Legată | Autor | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Introducere în învățarea automată | [Introducere](1-Introduction/README.md) | Învață conceptele de bază ale învățării automate | [Lecție](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Istoria învățării automate | [Introducere](1-Introduction/README.md) | Descoperă istoria acestui domeniu | [Lecție](1-Introduction/2-history-of-ML/README.md) | Jen și Amy | -| 03 | Echitate și învățarea automată | [Introducere](1-Introduction/README.md) | Care sunt problemele filosofice importante legate de echitate pe care studenții ar trebui să le ia în considerare când construiesc și aplică modele ML? | [Lecție](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Tehnici pentru învățarea automată | [Introducere](1-Introduction/README.md) | Ce tehnici folosesc cercetătorii ML pentru a construi modele ML? | [Lecție](1-Introduction/4-techniques-of-ML/README.md) | Chris și Jen | -| 05 | Introducere în regresie | [Regresie](2-Regression/README.md) | Începe cu Python și Scikit-learn pentru modele de regresie | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Prețurile dovlecilor din America de Nord 🎃 | [Regresie](2-Regression/README.md) | Vizualizează și curăță datele pentru pregătirea ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Prețurile dovlecilor din America de Nord 🎃 | [Regresie](2-Regression/README.md) | Construiește modele de regresie liniară și polinomială | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen și Dmitry • Eric Wanjau | -| 08 | Prețurile dovlecilor din America de Nord 🎃 | [Regresie](2-Regression/README.md) | Construiește un model de regresie logistică | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | O aplicație web 🔌 | [Aplicație web](3-Web-App/README.md) | Construiește o aplicație web pentru a utiliza modelul antrenat | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Introducere în clasificare | [Clasificare](4-Classification/README.md) | Curăță, pregătește și vizualizează datele; introducere în clasificare | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen și Cassie • Eric Wanjau | -| 11 | Bucătării delicioase asiatice și indiene 🍜 | [Clasificare](4-Classification/README.md) | Introducere în clasificatori | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen și Cassie • Eric Wanjau | -| 12 | Bucătării delicioase asiatice și indiene 🍜 | [Clasificare](4-Classification/README.md) | Mai mulți clasificatori | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen și Cassie • Eric Wanjau | -| 13 | Bucătării delicioase asiatice și indiene 🍜 | [Clasificare](4-Classification/README.md) | Construiește o aplicație web de recomandare folosind modelul tău | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Introducere în clustering | [Clustering](5-Clustering/README.md) | Curăță, pregătește și vizualizează datele; Introducere în clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Explorarea gusturilor muzicale nigeriene 🎧 | [Clustering](5-Clustering/README.md) | Explorează metoda de clustering 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 | Introducere în procesarea limbajului natural ☕️ | [Procesarea limbajului natural](6-NLP/README.md) | Învață bazele NLP construind un bot simplu | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Sarcini comune NLP ☕️ | [Procesarea limbajului natural](6-NLP/README.md) | Aprofundează cunoștințele NLP înțelegând sarcinile comune necesare în lucrul cu structurile lingvistice | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Traducere și analiză de sentiment ♥️ | [Procesarea limbajului natural](6-NLP/README.md) | Traducere și analiză de sentiment cu Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Hoteluri romantice din Europa ♥️ | [Procesarea limbajului natural](6-NLP/README.md) | Analiză de sentiment cu recenzii de hotel 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Hoteluri romantice din Europa ♥️ | [Procesarea limbajului natural](6-NLP/README.md) | Analiză de sentiment cu recenzii de hotel 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Introducere în prognoza seriilor temporale | [Serii temporale](7-TimeSeries/README.md) | Introducere în prognoza seriilor temporale | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Utilizarea energiei la nivel mondial ⚡️ - prognoza seriilor temporale cu ARIMA | [Serii temporale](7-TimeSeries/README.md) | Prognoza seriilor temporale cu ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Utilizarea energiei la nivel mondial ⚡️ - prognoza seriilor temporale cu SVR | [Serii temporale](7-TimeSeries/README.md) | Prognoza seriilor temporale cu Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Introducere în învățarea prin întărire | [Învățarea prin întărire](8-Reinforcement/README.md) | Introducere în învățarea prin întărire cu Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Ajută-l pe Peter să evite lupul! 🐺 | [Învățarea prin întărire](8-Reinforcement/README.md) | Gym pentru învățarea prin întărire | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Scenarii și aplicații ML din lumea reală | [ML în sălbăticie](9-Real-World/README.md) | Aplicații interesante și revelatoare ale ML clasic | [Lecție](9-Real-World/1-Applications/README.md) | Echipa | -| Postscript | Debugging-ul modelelor ML folosind tabloul de bord RAI | [ML în sălbăticie](9-Real-World/README.md) | Debugging-ul modelelor de învățare automată folosind componentele tabloului de bord Responsible AI | [Lecție](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [găsește toate resursele suplimentare pentru acest curs în colecția noastră Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 01 | Introducere în învățarea automată | [Introduction](1-Introduction/README.md) | Aflați conceptele de bază din spatele învățării automate | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Istoria învățării automate | [Introduction](1-Introduction/README.md) | Aflați istoria care stă la baza acestui domeniu | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Echitatea și învățarea automată | [Introduction](1-Introduction/README.md) | Care sunt problemele filosofice importante legate de echitate pe care studenții ar trebui să le ia în considerare când construiesc și aplică modele ML? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Tehnici pentru învățarea automată | [Introduction](1-Introduction/README.md) | Ce tehnici folosesc cercetătorii ML pentru a construi modele ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Introducere în regresie | [Regression](2-Regression/README.md) | Începeți cu Python și Scikit-learn pentru modele de regresie | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Prețurile dovlecilor din America de Nord 🎃 | [Regression](2-Regression/README.md) | Vizualizați și curățați datele în pregătirea pentru ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Prețurile dovlecilor din America de Nord 🎃 | [Regression](2-Regression/README.md) | Construiți modele de regresie liniară și polinomială | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Prețurile dovlecilor din America de Nord 🎃 | [Regression](2-Regression/README.md) | Construiți un model de regresie logistică | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | O aplicație web 🔌 | [Web App](3-Web-App/README.md) | Construiți o aplicație web pentru a folosi modelul antrenat | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Introducere în clasificare | [Classification](4-Classification/README.md) | Curățați, pregătiți și vizualizați datele; introducere în clasificare | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Bucătării delicioase asiatice și indiene 🍜 | [Classification](4-Classification/README.md) | Introducere în clasificatori | [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 | Bucătării delicioase asiatice și indiene 🍜 | [Classification](4-Classification/README.md) | Mai mulți clasificatori | [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 | Bucătării delicioase asiatice și indiene 🍜 | [Classification](4-Classification/README.md) | Construiți o aplicație web de recomandare folosind modelul dvs. | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Introducere în clustering | [Clustering](5-Clustering/README.md) | Curățați, pregătiți și vizualizați datele; introducere în clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Explorarea gusturilor muzicale nigeriene 🎧 | [Clustering](5-Clustering/README.md) | Explorați metoda de clustering 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 | Introducere în procesarea limbajului natural ☕️ | [Natural language processing](6-NLP/README.md) | Aflați elementele de bază despre NLP construind un bot simplu | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Sarcini comune NLP ☕️ | [Natural language processing](6-NLP/README.md) | Adânciți-vă cunoștințele despre NLP înțelegând sarcinile comune necesare când lucrați cu structuri de limbaj | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Traducere și analiză de sentiment ♥️ | [Natural language processing](6-NLP/README.md) | Traducere și analiză de sentiment cu Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Hoteluri romantice din Europa ♥️ | [Natural language processing](6-NLP/README.md) | Analiză de sentiment cu recenzii de hotel 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Hoteluri romantice din Europa ♥️ | [Natural language processing](6-NLP/README.md) | Analiză de sentiment cu recenzii de hotel 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Introducere în prognoza seriilor temporale | [Time series](7-TimeSeries/README.md) | Introducere în prognoza seriilor temporale | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Utilizarea energiei la nivel mondial ⚡️ - prognoza seriilor temporale cu ARIMA | [Time series](7-TimeSeries/README.md) | Prognoza seriilor temporale cu ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Utilizarea energiei la nivel mondial ⚡️ - prognoza seriilor temporale cu SVR | [Time series](7-TimeSeries/README.md) | Prognoza seriilor temporale cu Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Introducere în învățarea prin întărire | [Reinforcement learning](8-Reinforcement/README.md) | Introducere în învățarea prin întărire cu Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Ajută-l pe Peter să evite lupul! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Învățarea prin întărire Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Scenarii și aplicații ML din lumea reală | [ML in the Wild](9-Real-World/README.md) | Aplicații interesante și revelatoare din lumea reală ale ML clasice | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Depanarea modelelor ML folosind tabloul de bord RAI | [ML in the Wild](9-Real-World/README.md) | Depanarea modelelor în învățarea automată folosind componentele tabloului de bord Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [găsiți toate resursele suplimentare pentru acest curs în colecția noastră Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Acces offline -Poți rula această documentație offline folosind [Docsify](https://docsify.js.org/#/). Clonează acest repo, [instalează Docsify](https://docsify.js.org/#/quickstart) pe mașina ta locală, și apoi în folderul rădăcină al acestui repo, tastează `docsify serve`. Website-ul va fi servit pe portul 3000 pe localhost-ul tău: `localhost:3000`. +Puteți rula această documentație offline folosind [Docsify](https://docsify.js.org/#/). Faceți fork la acest repo, [instalați Docsify](https://docsify.js.org/#/quickstart) pe mașina dvs. locală, apoi în folderul rădăcină al acestui repo, tastați `docsify serve`. Site-ul va fi servit pe portul 3000 pe localhost-ul dvs.: `localhost:3000`. ## PDF-uri -Găsește un PDF al curriculumului cu linkuri [aici](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Găsiți un pdf al curriculumului cu linkuri [aici](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Alte Cursuri +## 🎒 Alte cursuri -Echipa noastră produce și alte cursuri! Verifică: +Echipa noastră produce și alte cursuri! Verificați: -### Azure / Edge / MCP / Agenți -[![AZD pentru Începători](https://img.shields.io/badge/AZD%20pentru%20Începători-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI pentru Începători](https://img.shields.io/badge/Edge%20AI%20pentru%20Începători-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP pentru Începători](https://img.shields.io/badge/MCP%20pentru%20Începători-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Agenți AI pentru Începători](https://img.shields.io/badge/Agenți%20AI%20pentru%20Începători-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- -### Seria AI Generativ -[![AI Generativ pentru Începători](https://img.shields.io/badge/AI%20Generativ%20pentru%20Începători-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI Generativ (.NET)](https://img.shields.io/badge/AI%20Generativ%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![AI Generativ (Java)](https://img.shields.io/badge/AI%20Generativ%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![AI Generativ (JavaScript)](https://img.shields.io/badge/AI%20Generativ%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Seria Generative AI +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- ### Învățare de bază -[![ML pentru Începători](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Știința Datelor pentru Începători](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI pentru Începători](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Securitate Cibernetică pentru Începători](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Dezvoltare Web pentru Începători](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT pentru Începători](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Dezvoltare XR pentru Începători](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Seria Copilot -[![Copilot pentru Programare în Pereche AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot pentru C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Aventura Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + +### Seria Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) -## Obținerea Ajutorului +## Obținerea ajutorului -Dacă întâmpini dificultăți sau ai întrebări despre construirea aplicațiilor AI, alătură-te altor cursanți și dezvoltatori experimentați în discuții despre MCP. Este o comunitate de sprijin unde întrebările sunt binevenite și cunoștințele sunt împărtășite liber. +Dacă întâmpini dificultăți sau ai întrebări despre construirea aplicațiilor AI. Alătură-te altor cursanți și dezvoltatori experimentați în discuții despre MCP. Este o comunitate de sprijin unde întrebările sunt binevenite și cunoștințele sunt împărtășite liber. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Dacă ai feedback despre produs sau întâmpini erori în timpul construirii, vizitează: +Dacă ai feedback despre produs sau erori în timpul construirii, vizitează: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Declinare de responsabilitate**: -Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de oameni. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm răspunderea pentru eventualele neînțelegeri sau interpretări greșite rezultate din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ru/README.md b/translations/ru/README.md index e677efa38..015a9ab20 100644 --- a/translations/ru/README.md +++ b/translations/ru/README.md @@ -1,90 +1,94 @@ -[![Лицензия GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Участники GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Проблемы GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Запросы на слияние GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Наблюдатели GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Форки GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Звезды GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Поддержка нескольких языков +### 🌐 Многоязычная поддержка #### Поддерживается через GitHub Action (автоматически и всегда актуально) -[Арабский](../ar/README.md) | [Бенгальский](../bn/README.md) | [Болгарский](../bg/README.md) | [Бирманский (Мьянма)](../my/README.md) | [Китайский (упрощенный)](../zh/README.md) | [Китайский (традиционный, Гонконг)](../hk/README.md) | [Китайский (традиционный, Макао)](../mo/README.md) | [Китайский (традиционный, Тайвань)](../tw/README.md) | [Хорватский](../hr/README.md) | [Чешский](../cs/README.md) | [Датский](../da/README.md) | [Голландский](../nl/README.md) | [Эстонский](../et/README.md) | [Финский](../fi/README.md) | [Французский](../fr/README.md) | [Немецкий](../de/README.md) | [Греческий](../el/README.md) | [Иврит](../he/README.md) | [Хинди](../hi/README.md) | [Венгерский](../hu/README.md) | [Индонезийский](../id/README.md) | [Итальянский](../it/README.md) | [Японский](../ja/README.md) | [Корейский](../ko/README.md) | [Литовский](../lt/README.md) | [Малайский](../ms/README.md) | [Маратхи](../mr/README.md) | [Непальский](../ne/README.md) | [Нигерийский пиджин](../pcm/README.md) | [Норвежский](../no/README.md) | [Персидский (фарси)](../fa/README.md) | [Польский](../pl/README.md) | [Португальский (Бразилия)](../br/README.md) | [Португальский (Португалия)](../pt/README.md) | [Панджаби (Гурмукхи)](../pa/README.md) | [Румынский](../ro/README.md) | [Русский](./README.md) | [Сербский (кириллица)](../sr/README.md) | [Словацкий](../sk/README.md) | [Словенский](../sl/README.md) | [Испанский](../es/README.md) | [Суахили](../sw/README.md) | [Шведский](../sv/README.md) | [Тагальский (Филиппины)](../tl/README.md) | [Тамильский](../ta/README.md) | [Тайский](../th/README.md) | [Турецкий](../tr/README.md) | [Украинский](../uk/README.md) | [Урду](../ur/README.md) | [Вьетнамский](../vi/README.md) + +[Арабский](../ar/README.md) | [Бенгальский](../bn/README.md) | [Болгарский](../bg/README.md) | [Бирманский (Мьянма)](../my/README.md) | [Китайский (упрощённый)](../zh/README.md) | [Китайский (традиционный, Гонконг)](../hk/README.md) | [Китайский (традиционный, Макао)](../mo/README.md) | [Китайский (традиционный, Тайвань)](../tw/README.md) | [Хорватский](../hr/README.md) | [Чешский](../cs/README.md) | [Датский](../da/README.md) | [Нидерландский](../nl/README.md) | [Эстонский](../et/README.md) | [Финский](../fi/README.md) | [Французский](../fr/README.md) | [Немецкий](../de/README.md) | [Греческий](../el/README.md) | [Иврит](../he/README.md) | [Хинди](../hi/README.md) | [Венгерский](../hu/README.md) | [Индонезийский](../id/README.md) | [Итальянский](../it/README.md) | [Японский](../ja/README.md) | [Каннада](../kn/README.md) | [Корейский](../ko/README.md) | [Литовский](../lt/README.md) | [Малайский](../ms/README.md) | [Малаялам](../ml/README.md) | [Маратхи](../mr/README.md) | [Непальский](../ne/README.md) | [Нигерийский пиджин](../pcm/README.md) | [Норвежский](../no/README.md) | [Персидский (фарси)](../fa/README.md) | [Польский](../pl/README.md) | [Португальский (Бразилия)](../br/README.md) | [Португальский (Португалия)](../pt/README.md) | [Пенджабский (гурмукхи)](../pa/README.md) | [Румынский](../ro/README.md) | [Русский](./README.md) | [Сербский (кириллица)](../sr/README.md) | [Словацкий](../sk/README.md) | [Словенский](../sl/README.md) | [Испанский](../es/README.md) | [Суахили](../sw/README.md) | [Шведский](../sv/README.md) | [Тагальский (филиппинский)](../tl/README.md) | [Тамильский](../ta/README.md) | [Телугу](../te/README.md) | [Тайский](../th/README.md) | [Турецкий](../tr/README.md) | [Украинский](../uk/README.md) | [Урду](../ur/README.md) | [Вьетнамский](../vi/README.md) + #### Присоединяйтесь к нашему сообществу [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -У нас проходит серия обучения с ИИ в Discord. Узнайте больше и присоединяйтесь к нам на [Learn with AI Series](https://aka.ms/learnwithai/discord) с 18 по 30 сентября 2025 года. Вы получите советы и рекомендации по использованию GitHub Copilot для Data Science. +У нас проходит серия занятий в Discord под названием «Учимся с ИИ», узнайте больше и присоединяйтесь к нам на [Learn with AI Series](https://aka.ms/learnwithai/discord) с 18 по 30 сентября 2025 года. Вы получите советы и рекомендации по использованию GitHub Copilot для Data Science. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ru.png) -# Машинное обучение для начинающих - учебный курс +# Машинное обучение для начинающих — учебная программа > 🌍 Путешествуйте по миру, изучая машинное обучение через призму мировых культур 🌍 -Команда Cloud Advocates в Microsoft рада предложить 12-недельный курс из 26 уроков, посвященный **машинному обучению**. В этом курсе вы изучите то, что иногда называют **классическим машинным обучением**, используя в основном библиотеку Scikit-learn и избегая глубокого обучения, которое рассматривается в нашем курсе [AI for Beginners](https://aka.ms/ai4beginners). Также сочетайте эти уроки с нашим курсом ['Data Science for Beginners'](https://aka.ms/ds4beginners). +Облачные адвокаты Microsoft рады предложить 12-недельную программу из 26 уроков, полностью посвящённую **машинному обучению**. В этой программе вы узнаете о том, что иногда называют **классическим машинным обучением**, используя в основном библиотеку Scikit-learn и избегая глубокого обучения, которое рассматривается в нашей [программе AI для начинающих](https://aka.ms/ai4beginners). Совместите эти уроки с нашей программой ['Data Science для начинающих'](https://aka.ms/ds4beginners)! -Путешествуйте с нами по миру, применяя эти классические методы к данным из разных уголков планеты. Каждый урок включает в себя тесты до и после урока, письменные инструкции для выполнения задания, решение, задание и многое другое. Наш проектный подход к обучению позволяет вам учиться, создавая, что является проверенным способом закрепления новых навыков. +Путешествуйте с нами по миру, применяя классические методы к данным из разных регионов. Каждый урок включает предварительные и итоговые викторины, письменные инструкции для выполнения урока, решение, задание и многое другое. Наша проектно-ориентированная педагогика позволяет учиться, создавая проекты — проверенный способ закрепления новых навыков. -**✍️ Огромная благодарность нашим авторам**: Джен Лупер, Стивен Хауэлл, Франческа Лаццери, Томоми Имура, Кэсси Бревиу, Дмитрий Сошников, Крис Норинг, Анирбан Мукерджи, Орнелла Алтуньян, Рут Якубу и Эми Бойд. +**✍️ Искренняя благодарность нашим авторам** Джен Лупер, Стивен Хауэлл, Франческа Лаззери, Томоми Имура, Кэсси Бревиу, Дмитрий Сошников, Крис Норинг, Анирбан Мукерджи, Орнелла Алтунян, Рут Якобу и Эми Бойд -**🎨 Благодарим также наших иллюстраторов**: Томоми Имура, Дасани Мадипалли и Джен Лупер. +**🎨 Спасибо также нашим иллюстраторам** Томоми Имура, Дасани Мадипалли и Джен Лупер -**🙏 Особая благодарность 🙏 нашим авторам, рецензентам и контрибьюторам из числа Microsoft Student Ambassadors**, в частности Ришиту Дагли, Мухаммаду Сакибу Хану Инану, Рохану Раджу, Александру Петреску, Абхишеку Джайсвалу, Наврин Табассум, Иоану Самуиле и Снигдхе Агарвал. +**🙏 Особая благодарность 🙏 нашим студентам-амбассадорам Microsoft, авторам, рецензентам и контент-участникам**, в частности Ришиту Дагли, Мухаммаду Сакибу Хану Инану, Рохану Раджу, Александру Петреску, Абхишеку Джайсвалу, Наврин Табассум, Иоану Самуиле и Снигдхе Агарвал -**🤩 Отдельная благодарность Microsoft Student Ambassadors Эрику Ванджау, Джаслин Сондхи и Видуши Гупте за наши уроки на R!** +**🤩 Дополнительная благодарность студентам-амбассадорам Microsoft Эрику Ванджау, Джаслин Сонди и Видуши Гупте за наши уроки на R!** # Начало работы -Следуйте этим шагам: -1. **Сделайте форк репозитория**: Нажмите кнопку "Fork" в правом верхнем углу этой страницы. -2. **Клонируйте репозиторий**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Следуйте этим шагам: +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.md) для решения распространенных проблем с установкой, настройкой и выполнением уроков. +> 🔧 **Нужна помощь?** Ознакомьтесь с нашим [Руководством по устранению неполадок](TROUBLESHOOTING.md) для решения распространённых проблем с установкой, настройкой и запуском уроков. -**[Студенты](https://aka.ms/student-page)**, чтобы использовать этот курс, сделайте форк всего репозитория в свой аккаунт GitHub и выполняйте упражнения самостоятельно или в группе: -- Начните с теста перед лекцией. -- Прочитайте лекцию и выполните задания, делая паузы и размышляя на каждом этапе проверки знаний. -- Попробуйте создать проекты, понимая уроки, а не просто запуская код решения; однако этот код доступен в папках `/solution` в каждом проектно-ориентированном уроке. -- Пройдите тест после лекции. -- Выполните задание. -- После завершения группы уроков посетите [дискуссионный форум](https://github.com/microsoft/ML-For-Beginners/discussions) и "учитесь вслух", заполняя соответствующую рубрику PAT. PAT — это инструмент оценки прогресса, который вы заполняете для углубления своего обучения. Вы также можете реагировать на другие PAT, чтобы учиться вместе. +**[Студенты](https://aka.ms/student-page)**, чтобы использовать эту программу, сделайте форк всего репозитория в свой аккаунт GitHub и выполняйте упражнения самостоятельно или в группе: -> Для дальнейшего изучения мы рекомендуем следовать этим [модулям и учебным путям Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +- Начинайте с предварительной викторины. +- Читайте лекцию и выполняйте задания, делая паузы и размышляя на каждом этапе проверки знаний. +- Старайтесь создавать проекты, понимая уроки, а не просто запуская код решения; однако код решения доступен в папках `/solution` каждого проектно-ориентированного урока. +- Пройдите итоговую викторину. +- Выполните вызов. +- Выполните задание. +- После завершения группы уроков посетите [Доску обсуждений](https://github.com/microsoft/ML-For-Beginners/discussions) и «учитесь вслух», заполнив соответствующую рубрику PAT. PAT — это инструмент оценки прогресса, который вы заполняете для углубления обучения. Вы также можете реагировать на другие PAT, чтобы учиться вместе. -**Преподаватели**, мы [включили несколько предложений](for-teachers.md) о том, как использовать этот курс. +> Для дальнейшего изучения рекомендуем пройти эти [модули и учебные пути Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). + +**Учителя**, мы включили [некоторые рекомендации](for-teachers.md) по использованию этой программы. --- -## Видеоуроки +## Видеообзоры -Некоторые уроки доступны в формате коротких видео. Вы можете найти их в самих уроках или на [плейлисте ML for Beginners на YouTube-канале Microsoft Developer](https://aka.ms/ml-beginners-videos), нажав на изображение ниже. +Некоторые уроки доступны в формате коротких видео. Вы можете найти их встроенными в уроки или на [плейлисте ML for Beginners на канале Microsoft Developer в YouTube](https://aka.ms/ml-beginners-videos), нажав на изображение ниже. -[![Баннер ML for beginners](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ru.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ru.png)](https://aka.ms/ml-beginners-videos) --- ## Знакомьтесь с командой -[![Промо-видео](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif от** [Мохита Джайсала](https://linkedin.com/in/mohitjaisal) +**Гифка от** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) > 🎥 Нажмите на изображение выше, чтобы посмотреть видео о проекте и людях, которые его создали! @@ -92,120 +96,128 @@ CO_OP_TRANSLATOR_METADATA: ## Педагогика -Мы выбрали два педагогических принципа при создании этого курса: обеспечение того, чтобы он был **проектно-ориентированным** и включал **частые тесты**. Кроме того, этот курс имеет общую **тему**, чтобы придать ему целостность. +При создании этой программы мы выбрали два педагогических принципа: обеспечить практическую **проектно-ориентированную** работу и включить **частые викторины**. Кроме того, программа имеет общую **тему** для связности. -Обеспечивая связь контента с проектами, процесс становится более увлекательным для студентов, а усвоение концепций усиливается. Кроме того, тест с низкими ставками перед занятием настраивает студента на изучение темы, а второй тест после занятия обеспечивает дальнейшее закрепление материала. Этот курс был разработан как гибкий и увлекательный, и его можно проходить полностью или частично. Проекты начинаются с простых и становятся все более сложными к концу 12-недельного цикла. Этот курс также включает постскриптум о реальных приложениях машинного обучения, который можно использовать как дополнительный материал или как основу для обсуждения. +Обеспечение соответствия контента проектам делает процесс более увлекательным для студентов и улучшает усвоение концепций. Низкоуровневая викторина перед занятием настраивает студента на изучение темы, а вторая викторина после занятия способствует дальнейшему закреплению материала. Эта программа разработана быть гибкой и интересной, её можно проходить полностью или частично. Проекты начинаются с простых и становятся всё более сложными к концу 12-недельного цикла. В программу также включён послесловие о реальных применениях МО, которое можно использовать как дополнительный материал или для обсуждения. -> Ознакомьтесь с нашим [Кодексом поведения](CODE_OF_CONDUCT.md), [руководством по внесению изменений](CONTRIBUTING.md), [руководством по переводу](TRANSLATIONS.md) и [руководством по устранению неполадок](TROUBLESHOOTING.md). Мы будем рады вашим конструктивным отзывам! +> Ознакомьтесь с нашими [Правилами поведения](CODE_OF_CONDUCT.md), [Руководством по участию](CONTRIBUTING.md), [Переводом](TRANSLATIONS.md) и [Руководством по устранению неполадок](TROUBLESHOOTING.md). Мы приветствуем ваши конструктивные отзывы! ## Каждый урок включает -- необязательный скетчноут -- необязательное дополнительное видео -- видеоруководство (только для некоторых уроков) -- [разогревающий тест перед лекцией](https://ff-quizzes.netlify.app/en/ml/) -- письменный урок -- для проектно-ориентированных уроков — пошаговые инструкции по созданию проекта -- проверки знаний -- задание -- дополнительное чтение -- [тест после лекции](https://ff-quizzes.netlify.app/en/ml/) +- необязательные скетчноуты +- необязательное дополнительное видео +- видеообзор (только для некоторых уроков) +- [предварительную разминку-викторину](https://ff-quizzes.netlify.app/en/ml/) +- письменный урок +- для проектно-ориентированных уроков — пошаговые инструкции по созданию проекта +- проверки знаний +- вызов +- дополнительное чтение +- задание +- [итоговую викторину](https://ff-quizzes.netlify.app/en/ml/) -> **Примечание о языках**: Эти уроки в основном написаны на Python, но многие из них также доступны на R. Чтобы пройти урок на R, перейдите в папку `/solution` и найдите уроки на R. Они включают расширение .rmd, которое представляет собой **R Markdown** файл, который можно просто определить как встраивание `фрагментов кода` (на R или других языках) и `YAML-заголовка` (который указывает, как форматировать выходные данные, такие как PDF) в `Markdown-документ`. Таким образом, это служит примерной авторской структурой для науки о данных, так как позволяет вам объединять ваш код, его вывод и ваши мысли, записывая их в Markdown. Более того, документы R Markdown могут быть преобразованы в выходные форматы, такие как PDF, HTML или Word. +> **Примечание о языках**: Эти уроки в основном написаны на Python, но многие также доступны на R. Чтобы пройти урок на R, перейдите в папку `/solution` и найдите уроки на R. Они имеют расширение .rmd, что означает **R Markdown** — формат, который представляет собой встраивание `фрагментов кода` (на R или других языках) и `YAML-заголовка` (который управляет форматированием вывода, например PDF) в `Markdown-документ`. Таким образом, это отличный инструмент для авторства в области науки о данных, позволяющий объединять код, его вывод и ваши заметки в одном документе. Кроме того, документы R Markdown можно преобразовывать в форматы вывода, такие как PDF, HTML или Word. -> **Примечание о тестах**: Все тесты содержатся в [папке Quiz App](../../quiz-app), всего 52 теста по три вопроса в каждом. Они связаны с уроками, но приложение для тестов можно запустить локально; следуйте инструкциям в папке `quiz-app`, чтобы запустить локально или развернуть в Azure. +> **Примечание о викторинах**: Все викторины находятся в папке [Quiz App](../../quiz-app), всего 52 викторины по три вопроса каждая. Они связаны с уроками, но приложение викторин можно запустить локально; следуйте инструкциям в папке `quiz-app` для локального хостинга или развертывания в Azure. -| Номер урока | Тема | Группа уроков | Учебные цели | Связанный урок | Автор | +| Номер урока | Тема | Группа уроков | Цели обучения | Связанный урок | Автор | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Введение в машинное обучение | [Введение](1-Introduction/README.md) | Узнайте основные концепции машинного обучения | [Урок](1-Introduction/1-intro-to-ML/README.md) | Мухаммад | -| 02 | История машинного обучения | [Введение](1-Introduction/README.md) | Узнайте историю, лежащую в основе этой области | [Урок](1-Introduction/2-history-of-ML/README.md) | Джен и Эми | -| 03 | Справедливость и машинное обучение | [Введение](1-Introduction/README.md) | Какие важные философские вопросы о справедливости должны учитывать студенты при создании и применении моделей машинного обучения? | [Урок](1-Introduction/3-fairness/README.md) | Томоми | -| 04 | Техники машинного обучения | [Введение](1-Introduction/README.md) | Какие техники используют исследователи для создания моделей машинного обучения? | [Урок](1-Introduction/4-techniques-of-ML/README.md) | Крис и Джен | -| 05 | Введение в регрессию | [Регрессия](2-Regression/README.md) | Начните работать с Python и Scikit-learn для моделей регрессии | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Джен • Эрик Ванжау | -| 06 | Цены на тыквы в Северной Америке 🎃 | [Регрессия](2-Regression/README.md) | Визуализируйте и очистите данные для подготовки к машинному обучению | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Джен • Эрик Ванжау | -| 07 | Цены на тыквы в Северной Америке 🎃 | [Регрессия](2-Regression/README.md) | Постройте модели линейной и полиномиальной регрессии | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Джен и Дмитрий • Эрик Ванжау | -| 08 | Цены на тыквы в Северной Америке 🎃 | [Регрессия](2-Regression/README.md) | Постройте модель логистической регрессии | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Джен • Эрик Ванжау | -| 09 | Веб-приложение 🔌 | [Веб-приложение](3-Web-App/README.md) | Создайте веб-приложение для использования обученной модели | [Python](3-Web-App/1-Web-App/README.md) | Джен | -| 10 | Введение в классификацию | [Классификация](4-Classification/README.md) | Очистите, подготовьте и визуализируйте данные; введение в классификацию | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Джен и Кэсси • Эрик Ванжау | -| 11 | Вкусные азиатские и индийские блюда 🍜 | [Классификация](4-Classification/README.md) | Введение в классификаторы | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Джен и Кэсси • Эрик Ванжау | -| 12 | Вкусные азиатские и индийские блюда 🍜 | [Классификация](4-Classification/README.md) | Дополнительные классификаторы | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Джен и Кэсси • Эрик Ванжау | -| 13 | Вкусные азиатские и индийские блюда 🍜 | [Классификация](4-Classification/README.md) | Создайте веб-приложение рекомендаций, используя вашу модель | [Python](4-Classification/4-Applied/README.md) | Джен | -| 14 | Введение в кластеризацию | [Кластеризация](5-Clustering/README.md) | Очистите, подготовьте и визуализируйте данные; введение в кластеризацию | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Джен • Эрик Ванжау | -| 15 | Исследование музыкальных вкусов Нигерии 🎧 | [Кластеризация](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) | Джен • Эрик Ванжау | -| 16 | Введение в обработку естественного языка ☕️ | [Обработка естественного языка](6-NLP/README.md) | Узнайте основы обработки естественного языка, создавая простого бота | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Стивен | -| 17 | Общие задачи NLP ☕️ | [Обработка естественного языка](6-NLP/README.md) | Углубите свои знания NLP, изучив общие задачи, связанные с языковыми структурами | [Python](6-NLP/2-Tasks/README.md) | Стивен | -| 18 | Перевод и анализ настроений ♥️ | [Обработка естественного языка](6-NLP/README.md) | Перевод и анализ настроений с произведениями Джейн Остин | [Python](6-NLP/3-Translation-Sentiment/README.md) | Стивен | -| 19 | Романтические отели Европы ♥️ | [Обработка естественного языка](6-NLP/README.md) | Анализ настроений с отзывами об отелях 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Стивен | -| 20 | Романтические отели Европы ♥️ | [Обработка естественного языка](6-NLP/README.md) | Анализ настроений с отзывами об отелях 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Стивен | -| 21 | Введение в прогнозирование временных рядов | [Временные ряды](7-TimeSeries/README.md) | Введение в прогнозирование временных рядов | [Python](7-TimeSeries/1-Introduction/README.md) | Франческа | -| 22 | ⚡️ Использование электроэнергии в мире ⚡️ - прогнозирование временных рядов с ARIMA | [Временные ряды](7-TimeSeries/README.md) | Прогнозирование временных рядов с использованием ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Франческа | -| 23 | ⚡️ Использование электроэнергии в мире ⚡️ - прогнозирование временных рядов с SVR | [Временные ряды](7-TimeSeries/README.md) | Прогнозирование временных рядов с использованием регрессора опорных векторов | [Python](7-TimeSeries/3-SVR/README.md) | Анирбан | -| 24 | Введение в обучение с подкреплением | [Обучение с подкреплением](8-Reinforcement/README.md)| Введение в обучение с подкреплением с использованием Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Дмитрий | -| 25 | Помогите Петру избежать волка! 🐺 | [Обучение с подкреплением](8-Reinforcement/README.md)| Обучение с подкреплением в Gym | [Python](8-Reinforcement/2-Gym/README.md) | Дмитрий | -| Постскриптум | Сценарии и приложения машинного обучения | [ML в реальном мире](9-Real-World/README.md) | Интересные и показательные примеры реального применения классического машинного обучения | [Урок](9-Real-World/1-Applications/README.md) | Команда | -| Постскриптум | Отладка моделей машинного обучения с использованием панели RAI | [ML в реальном мире](9-Real-World/README.md) | Отладка моделей машинного обучения с использованием компонентов панели ответственного ИИ | [Урок](9-Real-World/2-Debugging-ML-Models/README.md) | Рут Якобу | +| 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-средних | [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) | Изучите основы обработки естественного языка, создав простого бота | [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-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Помогите Питеру избежать волка! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Обучение с подкреплением в Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Реальные сценарии и применения машинного обучения | [ML in the Wild](9-Real-World/README.md) | Интересные и познавательные реальные применения классического машинного обучения | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Отладка моделей машинного обучения с помощью панели RAI | [ML in the Wild](9-Real-World/README.md) | Отладка моделей машинного обучения с использованием компонентов панели Responsible 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`. +Вы можете использовать эту документацию офлайн с помощью [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). +Найдите PDF с учебной программой и ссылками [здесь](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Другие курсы +## 🎒 Другие курсы -Наша команда создает и другие курсы! Ознакомьтесь: +Наша команда выпускает и другие курсы! Ознакомьтесь: -### Azure / Edge / MCP / Agents -[![AZD для начинающих](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI для начинающих](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP для начинающих](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI Agents для начинающих](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + ### Серия по генеративному ИИ -[![Генеративный ИИ для начинающих](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Генеративный ИИ (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Генеративный ИИ (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) [![Генеративный ИИ (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### Основное обучение -[![ML для начинающих](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science для начинающих](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI для начинающих](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Кибербезопасность для начинающих](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Веб-разработка для начинающих](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT для начинающих](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Разработка XR для начинающих](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Машинное обучение для начинающих](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Наука о данных для начинающих](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![ИИ для начинающих](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Кибербезопасность для начинающих](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Веб-разработка для начинающих](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![Интернет вещей для начинающих](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![Разработка XR для начинающих](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Серия Copilot -[![Copilot для парного программирования с ИИ](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot для C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Приключения с Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + +### Серия Copilot +[![Copilot для совместного программирования с ИИ](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot для C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Приключения Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) -## Получение помощи +## Получение помощи -Если вы столкнулись с трудностями или у вас есть вопросы о создании приложений с ИИ, присоединяйтесь к обсуждениям с другими учащимися и опытными разработчиками в сообществе MCP. Это поддерживающее сообщество, где приветствуются вопросы и свободно делятся знаниями. +Если вы застряли или у вас есть вопросы по созданию приложений с ИИ. Присоединяйтесь к другим учащимся и опытным разработчикам в обсуждениях о MCP. Это поддерживающее сообщество, где вопросы приветствуются, а знания свободно делятся. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Если у вас есть отзывы о продукте или возникли ошибки при разработке, посетите: +Если у вас есть отзывы о продукте или ошибки при разработке, посетите: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Отказ от ответственности**: -Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. +Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обращаться к профессиональному переводу, выполненному человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/sk/README.md b/translations/sk/README.md index fd2891fca..6b728d366 100644 --- a/translations/sk/README.md +++ b/translations/sk/README.md @@ -1,214 +1,223 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Podpora viacerých jazykov +### 🌐 Podpora viacerých jazykov -#### Podporované cez GitHub Action (Automatizované a vždy aktuálne) +#### Podporované cez GitHub Action (automatizované a vždy aktuálne) - -[Arabčina](../ar/README.md) | [Bengálčina](../bn/README.md) | [Bulharčina](../bg/README.md) | [Barmčina (Mjanmarsko)](../my/README.md) | [Čínština (zjednodušená)](../zh/README.md) | [Čínština (tradičná, Hongkong)](../hk/README.md) | [Čínština (tradičná, Macao)](../mo/README.md) | [Čínština (tradičná, Taiwan)](../tw/README.md) | [Chorvátčina](../hr/README.md) | [Čeština](../cs/README.md) | [Dánčina](../da/README.md) | [Holandčina](../nl/README.md) | [Estónčina](../et/README.md) | [Fínčina](../fi/README.md) | [Francúzština](../fr/README.md) | [Nemčina](../de/README.md) | [Gréčtina](../el/README.md) | [Hebrejčina](../he/README.md) | [Hindčina](../hi/README.md) | [Maďarčina](../hu/README.md) | [Indonézština](../id/README.md) | [Taliančina](../it/README.md) | [Japončina](../ja/README.md) | [Kórejčina](../ko/README.md) | [Litovčina](../lt/README.md) | [Malajčina](../ms/README.md) | [Maráthčina](../mr/README.md) | [Nepálčina](../ne/README.md) | [Nigérijský pidgin](../pcm/README.md) | [Nórčina](../no/README.md) | [Perzština (Farsi)](../fa/README.md) | [Poľština](../pl/README.md) | [Portugalčina (Brazília)](../br/README.md) | [Portugalčina (Portugalsko)](../pt/README.md) | [Pandžábčina (Gurmukhi)](../pa/README.md) | [Rumunčina](../ro/README.md) | [Ruština](../ru/README.md) | [Srbčina (cyrilika)](../sr/README.md) | [Slovenčina](./README.md) | [Slovinčina](../sl/README.md) | [Španielčina](../es/README.md) | [Swahilčina](../sw/README.md) | [Švédčina](../sv/README.md) | [Tagalog (Filipínčina)](../tl/README.md) | [Tamilčina](../ta/README.md) | [Thajčina](../th/README.md) | [Turečtina](../tr/README.md) | [Ukrajinčina](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamčina](../vi/README.md) - + +[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](./README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + -#### Pripojte sa k našej komunite +#### Pridajte sa k našej komunite -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Máme prebiehajúcu sériu Discord Learn with AI, dozviete sa viac a pripojte sa k nám na [Learn with AI Series](https://aka.ms/learnwithai/discord) od 18. do 30. septembra 2025. Získate tipy a triky na používanie GitHub Copilot pre Data Science. +Máme prebiehajúcu sériu Learn with AI na Discorde, dozviete sa viac a pripojte sa k nám na [Learn with AI Series](https://aka.ms/learnwithai/discord) od 18. do 30. septembra 2025. Dostanete tipy a triky na používanie GitHub Copilot pre Data Science. -![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.sk.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.sk.png) -# Strojové učenie pre začiatočníkov - Kurikulum +# Strojové učenie pre začiatočníkov - učebný plán -> 🌍 Cestujte po svete, keď objavujeme strojové učenie prostredníctvom kultúr sveta 🌍 +> 🌍 Cestujte po svete, zatiaľ čo skúmame strojové učenie prostredníctvom svetových kultúr 🌍 -Cloud Advocates v Microsoft s radosťou ponúkajú 12-týždňové, 26-lekčné kurikulum o **strojovom učení**. V tomto kurikule sa naučíte o tom, čo sa niekedy nazýva **klasické strojové učenie**, pričom sa primárne používa knižnica Scikit-learn a vyhýba sa hlbokému učeniu, ktoré je pokryté v našom [kurikule AI pre začiatočníkov](https://aka.ms/ai4beginners). Spojte tieto lekcie s naším kurikulom ['Data Science for Beginners'](https://aka.ms/ds4beginners), tiež! +Cloud Advocates v Microsoft s potešením ponúkajú 12-týždňový, 26-lekčný učebný plán zameraný na **strojové učenie**. V tomto učebnom pláne sa naučíte o tom, čo sa niekedy nazýva **klasické strojové učenie**, pričom primárne používame knižnicu Scikit-learn a vyhýbame sa hlbokému učeniu, ktoré je pokryté v našom [učebnom pláne AI pre začiatočníkov](https://aka.ms/ai4beginners). Tieto lekcie môžete kombinovať aj s naším ['Data Science pre začiatočníkov' učebným plánom](https://aka.ms/ds4beginners). -Cestujte s nami po svete, keď aplikujeme tieto klasické techniky na údaje z rôznych oblastí sveta. Každá lekcia obsahuje kvízy pred a po lekcii, písomné pokyny na dokončenie lekcie, riešenie, úlohu a ďalšie. Náš projektovo orientovaný prístup vám umožní učiť sa pri budovaní, čo je osvedčený spôsob, ako si nové zručnosti lepšie zapamätať. +Cestujte s nami po svete, keď aplikujeme tieto klasické techniky na dáta z rôznych oblastí sveta. Každá lekcia obsahuje pred a po lekcii kvízy, písomné inštrukcie na dokončenie lekcie, riešenie, zadanie a ďalšie. Naša projektovo orientovaná pedagogika vám umožní učiť sa počas tvorby, čo je overený spôsob, ako si nové zručnosti udržať. -**✍️ Srdečné poďakovanie našim autorom** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu a Amy Boyd +**✍️ Srdečné poďakovanie našim autorom** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu a Amy Boyd -**🎨 Poďakovanie aj našim ilustrátorom** Tomomi Imura, Dasani Madipalli a Jen Looper +**🎨 Poďakovanie aj našim ilustrátorom** Tomomi Imura, Dasani Madipalli a Jen Looper -**🙏 Špeciálne poďakovanie 🙏 našim Microsoft Student Ambassador autorom, recenzentom a prispievateľom obsahu**, najmä Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila a Snigdha Agarwal +**🙏 Špeciálne poďakovanie 🙏 našim Microsoft Student Ambassador autorom, recenzentom a prispievateľom obsahu**, najmä Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila a Snigdha Agarwal -**🤩 Extra vďaka Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi a Vidushi Gupta za naše lekcie v R!** +**🤩 Extra vďaka Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi a Vidushi Gupta za naše lekcie v R!** -# Začíname +# Začíname -Postupujte podľa týchto krokov: -1. **Forknite repozitár**: Kliknite na tlačidlo "Fork" v pravom hornom rohu tejto stránky. -2. **Klonujte repozitár**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Postupujte podľa týchto krokov: +1. **Vytvorte fork repozitára**: Kliknite na tlačidlo "Fork" v pravom hornom rohu tejto stránky. +2. **Naklonujte repozitár**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [nájdite všetky ďalšie zdroje pre tento kurz v našej kolekcii Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) - -> 🔧 **Potrebujete pomoc?** Pozrite si náš [Sprievodca riešením problémov](TROUBLESHOOTING.md) pre riešenia bežných problémov s inštaláciou, nastavením a spúšťaním lekcií. - -**[Študenti](https://aka.ms/student-page)**, na použitie tohto kurikula si forknite celý repozitár do svojho GitHub účtu a dokončite cvičenia sami alebo v skupine: - -- Začnite kvízom pred prednáškou. -- Prečítajte si prednášku a dokončite aktivity, zastavte sa a zamyslite sa pri každej kontrole vedomostí. -- Pokúste sa vytvoriť projekty pochopením lekcií namiesto spúšťania riešenia kódu; tento kód je však dostupný v priečinkoch `/solution` v každej projektovo orientovanej lekcii. -- Urobte kvíz po prednáške. -- Dokončite výzvu. -- Dokončite úlohu. -- Po dokončení skupiny lekcií navštívte [Diskusnú tabuľu](https://github.com/microsoft/ML-For-Beginners/discussions) a "učte sa nahlas" vyplnením príslušného PAT rubrika. 'PAT' je nástroj na hodnotenie pokroku, ktorý je rubrikou, ktorú vyplníte na ďalšie učenie. Môžete tiež reagovať na iné PAT, aby sme sa učili spolu. - -> Na ďalšie štúdium odporúčame sledovať tieto [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) moduly a vzdelávacie cesty. - -**Učitelia**, máme [zahrnuté niekoľko návrhov](for-teachers.md) na použitie tohto kurikula. - ---- - -## Video prehliadky +> [nájdite všetky ďalšie zdroje pre tento kurz v našej kolekcii Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -Niektoré lekcie sú dostupné ako krátke videá. Všetky nájdete v lekciách alebo na [ML for Beginners playlist na YouTube kanáli Microsoft Developer](https://aka.ms/ml-beginners-videos) kliknutím na obrázok nižšie. +> 🔧 **Potrebujete pomoc?** Pozrite si náš [Sprievodca riešením problémov](TROUBLESHOOTING.md) pre riešenia bežných problémov s inštaláciou, nastavením a spúšťaním lekcií. -[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.sk.png)](https://aka.ms/ml-beginners-videos) ---- +**[Študenti](https://aka.ms/student-page)**, na používanie tohto učebného plánu si vytvorte fork celého repozitára do svojho GitHub účtu a cvičenia dokončujte sami alebo v skupine: -## Zoznámte sa s tímom +- Začnite prednáškovým kvízom. +- Prečítajte si prednášku a dokončite aktivity, zastavujte sa a zamýšľajte sa pri každej kontrole vedomostí. +- Pokúste sa vytvoriť projekty pochopením lekcií namiesto spúšťania riešenia; kód riešenia je však dostupný v priečinkoch `/solution` v každej lekcii orientovanej na projekt. +- Urobte po prednáške kvíz. +- Dokončite výzvu. +- Dokončite zadanie. +- Po dokončení skupiny lekcií navštívte [Diskusné fórum](https://github.com/microsoft/ML-For-Beginners/discussions) a "učte sa nahlas" vyplnením príslušného hodnotiaceho formulára PAT. 'PAT' je nástroj na hodnotenie pokroku, ktorý vyplníte, aby ste si prehĺbili učenie. Môžete tiež reagovať na iné PAT, aby sme sa mohli učiť spoločne. -[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +> Pre ďalšie štúdium odporúčame sledovať tieto [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) moduly a učebné cesty. -**Gif od** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Učitelia**, pripravili sme [niekoľko návrhov](for-teachers.md) na použitie tohto učebného plánu. -> 🎥 Kliknite na obrázok vyššie pre video o projekte a ľuďoch, ktorí ho vytvorili! +--- ---- +## Video prechádzky -## Pedagogika +Niektoré lekcie sú dostupné ako krátke videá. Nájdete ich priamo v lekciách alebo na [ML for Beginners playlist na Microsoft Developer YouTube kanáli](https://aka.ms/ml-beginners-videos) kliknutím na obrázok nižšie. -Pri tvorbe tohto kurikula sme si zvolili dve pedagogické zásady: zabezpečiť, aby bolo praktické **projektovo orientované** a aby obsahovalo **časté kvízy**. Okrem toho má toto kurikulum spoločnú **tému**, ktorá mu dodáva súdržnosť. +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.sk.png)](https://aka.ms/ml-beginners-videos) -Zabezpečením, že obsah je v súlade s projektmi, je proces pre študentov pútavejší a zlepšuje sa zapamätanie konceptov. Okrem toho nízko-stresový kvíz pred hodinou nastavuje úmysel študenta na učenie sa témy, zatiaľ čo druhý kvíz po hodine zabezpečuje ďalšie zapamätanie. Toto kurikulum bolo navrhnuté tak, aby bolo flexibilné a zábavné a mohlo byť absolvované celé alebo čiastočne. Projekty začínajú malé a postupne sa stávajú zložitejšími na konci 12-týždňového cyklu. Toto kurikulum tiež obsahuje dodatok o reálnych aplikáciách ML, ktorý môže byť použitý ako extra kredit alebo ako základ pre diskusiu. +--- -> Nájdite náš [Kódex správania](CODE_OF_CONDUCT.md), [Prispievanie](CONTRIBUTING.md), [Preklady](TRANSLATIONS.md) a [Riešenie problémov](TROUBLESHOOTING.md) pokyny. Uvítame vašu konštruktívnu spätnú väzbu! +## Spoznajte tím -## Každá lekcia obsahuje +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -- voliteľný sketchnote -- voliteľné doplnkové video -- video prehliadku (len niektoré lekcie) -- [kvíz na zahriatie pred prednáškou](https://ff-quizzes.netlify.app/en/ml/) -- písomnú lekciu -- pre projektovo orientované lekcie, podrobné návody na vytvorenie projektu -- kontroly vedomostí -- výzvu -- doplnkové čítanie -- úlohu -- [kvíz po prednáške](https://ff-quizzes.netlify.app/en/ml/) +**Gif od** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> **Poznámka o jazykoch**: Tieto lekcie sú primárne napísané v Pythone, ale mnohé sú dostupné aj v R. Na dokončenie lekcie v R prejdite do priečinka `/solution` a hľadajte lekcie v R. Obsahujú príponu .rmd, ktorá predstavuje **R Markdown** súbor, ktorý môže byť jednoducho definovaný ako vloženie `code chunks` (R alebo iných jazykov) a `YAML header` (ktorý usmerňuje, ako formátovať výstupy ako PDF) do `Markdown dokumentu`. Ako taký slúži ako príkladný autorovací rámec pre dátovú vedu, pretože vám umožňuje kombinovať váš kód, jeho výstup a vaše myšlienky tým, že ich zapíšete do Markdown. Navyše, R Markdown dokumenty môžu byť vykreslené do výstupných formátov ako PDF, HTML alebo Word. +> 🎥 Kliknite na obrázok vyššie pre video o projekte a ľuďoch, ktorí ho vytvorili! -> **Poznámka o kvízoch**: Všetky kvízy sú obsiahnuté v [priečinku Quiz App](../../quiz-app), celkovo 52 kvízov po tri otázky. Sú prepojené z lekcií, ale aplikáciu kvízov je možné spustiť lokálne; postupujte podľa pokynov v priečinku `quiz-app` na lokálne hosťovanie alebo nasadenie na Azure. +--- -| Číslo lekcie | Téma | Skupina lekcií | Ciele učenia | Prepojená lekcia | Autor | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Úvod do strojového učenia | [Úvod](1-Introduction/README.md) | Naučte sa základné koncepty strojového učenia | [Lekcia](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | História strojového učenia | [Úvod](1-Introduction/README.md) | Zoznámte sa s históriou tohto odboru | [Lekcia](1-Introduction/2-history-of-ML/README.md) | Jen a Amy | -| 03 | Spravodlivosť a strojové učenie | [Úvod](1-Introduction/README.md) | Aké sú dôležité filozofické otázky týkajúce sa spravodlivosti, ktoré by študenti mali zvážiť pri vytváraní a aplikovaní modelov ML? | [Lekcia](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Techniky strojového učenia | [Úvod](1-Introduction/README.md) | Aké techniky používajú výskumníci ML na vytváranie modelov ML? | [Lekcia](1-Introduction/4-techniques-of-ML/README.md) | Chris a Jen | -| 05 | Úvod do regresie | [Regresia](2-Regression/README.md) | Začnite s Pythonom a Scikit-learn pre regresné modely | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Ceny tekvíc v Severnej Amerike 🎃 | [Regresia](2-Regression/README.md) | Vizualizujte a vyčistite údaje na prípravu pre ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Ceny tekvíc v Severnej Amerike 🎃 | [Regresia](2-Regression/README.md) | Vytvorte lineárne a polynomiálne regresné modely | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen a Dmitry • Eric Wanjau | -| 08 | Ceny tekvíc v Severnej Amerike 🎃 | [Regresia](2-Regression/README.md) | Vytvorte logistický regresný model | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Webová aplikácia 🔌 | [Webová aplikácia](3-Web-App/README.md) | Vytvorte webovú aplikáciu na použitie vášho trénovaného modelu | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Úvod do klasifikácie | [Klasifikácia](4-Classification/README.md) | Vyčistite, pripravte a vizualizujte svoje údaje; úvod do klasifikácie | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen a Cassie • Eric Wanjau | -| 11 | Lahodné ázijské a indické kuchyne 🍜 | [Klasifikácia](4-Classification/README.md) | Úvod do klasifikátorov | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen a Cassie • Eric Wanjau | -| 12 | Lahodné ázijské a indické kuchyne 🍜 | [Klasifikácia](4-Classification/README.md) | Viac klasifikátorov | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen a Cassie • Eric Wanjau | -| 13 | Lahodné ázijské a indické kuchyne 🍜 | [Klasifikácia](4-Classification/README.md) | Vytvorte webovú aplikáciu odporúčania pomocou vášho modelu | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Úvod do zhlukovania | [Zhlukovanie](5-Clustering/README.md) | Vyčistite, pripravte a vizualizujte svoje údaje; úvod do zhlukovania | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Skúmanie nigérijských hudobných chutí 🎧 | [Zhlukovanie](5-Clustering/README.md) | Preskúmajte metódu zhlukovania 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 | Úvod do spracovania prirodzeného jazyka ☕️ | [Spracovanie prirodzeného jazyka](6-NLP/README.md)| Naučte sa základy NLP vytvorením jednoduchého bota | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Bežné úlohy NLP ☕️ | [Spracovanie prirodzeného jazyka](6-NLP/README.md)| Prehĺbte svoje znalosti NLP pochopením bežných úloh pri práci so štruktúrami jazyka | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Preklad a analýza sentimentu ♥️ | [Spracovanie prirodzeného jazyka](6-NLP/README.md)| Preklad a analýza sentimentu s Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantické hotely Európy ♥️ | [Spracovanie prirodzeného jazyka](6-NLP/README.md)| Analýza sentimentu s recenziami hotelov 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantické hotely Európy ♥️ | [Spracovanie prirodzeného jazyka](6-NLP/README.md)| Analýza sentimentu s recenziami hotelov 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Úvod do predikcie časových radov | [Časové rady](7-TimeSeries/README.md) | Úvod do predikcie časových radov | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Svetová spotreba energie ⚡️ - predikcia časových radov s ARIMA | [Časové rady](7-TimeSeries/README.md) | Predikcia časových radov s ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Svetová spotreba energie ⚡️ - predikcia časových radov s SVR | [Časové rady](7-TimeSeries/README.md) | Predikcia časových radov s Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Úvod do posilňovacieho učenia | [Posilňovacie učenie](8-Reinforcement/README.md) | Úvod do posilňovacieho učenia s Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Pomôžte Petrovi vyhnúť sa vlkovi! 🐺 | [Posilňovacie učenie](8-Reinforcement/README.md) | Posilňovacie učenie Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Scenáre a aplikácie ML v reálnom svete | [ML v divočine](9-Real-World/README.md) | Zaujímavé a odhaľujúce aplikácie klasického ML v reálnom svete | [Lekcia](9-Real-World/1-Applications/README.md) | Tím | -| Postscript | Ladenie modelov ML pomocou RAI dashboardu | [ML v divočine](9-Real-World/README.md) | Ladenie modelov strojového učenia pomocou komponentov Responsible AI dashboardu | [Lekcia](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +## Pedagogika + +Pri tvorbe tohto učebného plánu sme zvolili dva pedagogické princípy: zabezpečiť, aby bol praktický a **projektovo orientovaný** a aby obsahoval **časté kvízy**. Okrem toho má tento učebný plán spoločnú **tému**, ktorá mu dodáva súdržnosť. + +Zabezpečením, že obsah je zosúladený s projektmi, sa proces pre študentov stáva zaujímavejším a zlepšuje sa zapamätanie si konceptov. Nízko-stávkový kvíz pred hodinou nastavuje zámer študenta učiť sa tému, zatiaľ čo druhý kvíz po hodine zabezpečuje ďalšie zapamätanie. Tento učebný plán bol navrhnutý tak, aby bol flexibilný a zábavný a môže sa absolvovať celý alebo čiastočne. Projekty začínajú malé a postupne sa stávajú zložitejšími do konca 12-týždňového cyklu. Tento učebný plán tiež obsahuje dodatok o reálnych aplikáciách ML, ktorý môže byť použitý ako extra kredit alebo ako základ pre diskusiu. + +> Nájdite naše [Pravidlá správania](CODE_OF_CONDUCT.md), [Príspevky](CONTRIBUTING.md), [Preklady](TRANSLATIONS.md) a [Riešenie problémov](TROUBLESHOOTING.md). Radi prijímame vaše konštruktívne pripomienky! + +## Každá lekcia obsahuje + +- voliteľnú skicu poznámok +- voliteľné doplnkové video +- video prechádzku (len niektoré lekcie) +- [prednáškový rozcvičovací kvíz](https://ff-quizzes.netlify.app/en/ml/) +- písomnú lekciu +- pre projektovo orientované lekcie, krok za krokom návody na vytvorenie projektu +- kontroly vedomostí +- výzvu +- doplnkové čítanie +- zadanie +- [po prednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/) + +> **Poznámka o jazykoch**: Tieto lekcie sú primárne napísané v Pythone, ale mnohé sú dostupné aj v R. Ak chcete dokončiť lekciu v R, choďte do priečinka `/solution` a hľadajte lekcie v R. Obsahujú príponu .rmd, ktorá predstavuje **R Markdown** súbor, ktorý možno jednoducho definovať ako vloženie `kódových blokov` (v R alebo iných jazykoch) a `YAML hlavičky` (ktorá riadi formátovanie výstupov ako PDF) v `Markdown dokumente`. Slúži teda ako vzorový autorský rámec pre dátovú vedu, pretože umožňuje kombinovať kód, jeho výstup a vaše myšlienky tým, že ich môžete zapísať v Markdown. Navyše, R Markdown dokumenty môžu byť prevedené do výstupných formátov ako PDF, HTML alebo Word. + +> **Poznámka o kvízoch**: Všetky kvízy sú obsiahnuté v [priečinku Quiz App](../../quiz-app), celkovo 52 kvízov so 3 otázkami každý. Sú prepojené z lekcií, ale aplikáciu kvízov je možné spustiť lokálne; postupujte podľa inštrukcií v priečinku `quiz-app` pre lokálne hosťovanie alebo nasadenie do Azure. + +| Číslo lekcie | Téma | Skupina lekcií | Ciele učenia | Prepojená lekcia | Autor | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | Úvod do strojového učenia | [Introduction](1-Introduction/README.md) | Naučte sa základné koncepty strojového učenia | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | História strojového učenia | [Introduction](1-Introduction/README.md) | Spoznajte históriu tohto odboru | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Spravodlivosť a strojové učenie | [Introduction](1-Introduction/README.md) | Aké sú dôležité filozofické otázky spravodlivosti, ktoré by študenti mali zvážiť pri tvorbe a aplikácii ML modelov? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Techniky strojového učenia | [Introduction](1-Introduction/README.md) | Aké techniky používajú výskumníci ML na tvorbu ML modelov? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Úvod do regresie | [Regression](2-Regression/README.md) | Začnite s Pythonom a Scikit-learn pre regresné modely | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Ceny tekvíc v Severnej Amerike 🎃 | [Regression](2-Regression/README.md) | Vizualizujte a vyčistite dáta na prípravu pre ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Ceny tekvíc v Severnej Amerike 🎃 | [Regression](2-Regression/README.md) | Vytvorte lineárne a polynomiálne regresné modely | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Ceny tekvíc v Severnej Amerike 🎃 | [Regression](2-Regression/README.md) | Vytvorte logistický regresný model | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Webová aplikácia 🔌 | [Web App](3-Web-App/README.md) | Vytvorte webovú aplikáciu na použitie vášho natrénovaného modelu | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Úvod do klasifikácie | [Classification](4-Classification/README.md) | Vyčistite, pripravte a vizualizujte svoje dáta; úvod do klasifikácie | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Lahodné ázijské a indické kuchyne 🍜 | [Classification](4-Classification/README.md) | Úvod do klasifikátorov | [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 | Lahodné ázijské a indické kuchyne 🍜 | [Classification](4-Classification/README.md) | Viac klasifikátorov | [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 | Lahodné ázijské a indické kuchyne 🍜 | [Classification](4-Classification/README.md) | Vytvorte odporúčaciu webovú aplikáciu pomocou vášho modelu | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Úvod do zhlukovania | [Clustering](5-Clustering/README.md) | Vyčistite, pripravte a vizualizujte svoje dáta; úvod do zhlukovania | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Preskúmanie nigerijských hudobných chutí 🎧 | [Clustering](5-Clustering/README.md) | Preskúmajte metódu K-Means zhlukovania | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Úvod do spracovania prirodzeného jazyka ☕️ | [Natural language processing](6-NLP/README.md) | Naučte sa základy NLP vytvorením jednoduchého bota | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Bežné úlohy NLP ☕️ | [Natural language processing](6-NLP/README.md) | Prehĺbte svoje znalosti NLP pochopením bežných úloh potrebných pri práci s jazykovými štruktúrami | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Preklad a analýza sentimentu ♥️ | [Natural language processing](6-NLP/README.md) | Preklad a analýza sentimentu s Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantické hotely v Európe ♥️ | [Natural language processing](6-NLP/README.md) | Analýza sentimentu s recenziami hotelov 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantické hotely v Európe ♥️ | [Natural language processing](6-NLP/README.md) | Analýza sentimentu s recenziami hotelov 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Úvod do predikcie časových radov | [Time series](7-TimeSeries/README.md) | Úvod do predikcie časových radov | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Svetová spotreba energie ⚡️ - predikcia časových radov s ARIMA | [Time series](7-TimeSeries/README.md) | Predikcia časových radov pomocou ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Svetová spotreba energie ⚡️ - predikcia časových radov s SVR | [Time series](7-TimeSeries/README.md) | Predikcia časových radov pomocou Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Úvod do posilňovacieho učenia | [Reinforcement learning](8-Reinforcement/README.md) | Úvod do posilňovacieho učenia pomocou Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Pomôžte Petrovi vyhnúť sa vlkovi! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Posilňovacie učenie Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Scenáre a aplikácie ML v reálnom svete | [ML in the Wild](9-Real-World/README.md) | Zaujímavé a odhaľujúce aplikácie klasického ML v reálnom svete | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Ladenie modelov v ML pomocou RAI dashboardu | [ML in the Wild](9-Real-World/README.md) | Ladenie modelov v strojovom učení pomocou komponentov Responsible AI dashboardu | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [nájdite všetky ďalšie zdroje pre tento kurz v našej kolekcii Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Offline prístup -Túto dokumentáciu môžete spustiť offline pomocou [Docsify](https://docsify.js.org/#/). Forknite tento repozitár, [nainštalujte Docsify](https://docsify.js.org/#/quickstart) na svojom lokálnom počítači a potom v koreňovom priečinku tohto repozitára zadajte `docsify serve`. Webová stránka bude dostupná na porte 3000 na vašom localhoste: `localhost:3000`. +Túto dokumentáciu môžete spustiť offline pomocou [Docsify](https://docsify.js.org/#/). Vytvorte fork tohto repozitára, [nainštalujte Docsify](https://docsify.js.org/#/quickstart) na svoj lokálny počítač a potom v koreňovom priečinku tohto repozitára zadajte príkaz `docsify serve`. Webová stránka bude dostupná na porte 3000 na vašom localhoste: `localhost:3000`. -## PDF súbory +## PDF -Nájdite PDF verziu kurikula s odkazmi [tu](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Nájdite pdf osnovy s odkazmi [tu](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Ďalšie kurzy +## 🎒 Iné kurzy -Náš tím vytvára aj ďalšie kurzy! Pozrite si: +Náš tím produkuje aj iné kurzy! Pozrite si: -### Azure / Edge / MCP / Agentov -[![AZD pre začiatočníkov](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI pre začiatočníkov](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP pre začiatočníkov](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI agenti pre začiatočníkov](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Generatívna AI séria -[![Generatívna AI pre začiatočníkov](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generatívna AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agenti +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + +### Séria Generatívnej AI +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Generatívna AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) [![Generatívna AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### Základné učenie -[![ML pre začiatočníkov](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science pre začiatočníkov](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI pre začiatočníkov](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Kybernetická bezpečnosť pre začiatočníkov](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Webový vývoj pre začiatočníkov](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT pre začiatočníkov](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR vývoj pre začiatočníkov](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML pre začiatočníkov](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Dátová veda pre začiatočníkov](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI pre začiatočníkov](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Kybernetická bezpečnosť pre začiatočníkov](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Webový vývoj pre začiatočníkov](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT pre začiatočníkov](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR vývoj pre začiatočníkov](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Séria Copilot +[![Copilot pre AI párované programovanie](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot pre C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot dobrodružstvo](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Séria Copilot -[![Copilot pre AI párové programovanie](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot pre C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Dobrodružstvo s Copilotom](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Získanie pomoci +## Získanie pomoci -Ak sa zaseknete alebo máte otázky o vytváraní AI aplikácií, pripojte sa k ostatným študentom a skúseným vývojárom v diskusiách o MCP. Je to podporná komunita, kde sú otázky vítané a vedomosti sa voľne zdieľajú. +Ak sa zaseknete alebo máte otázky ohľadom tvorby AI aplikácií, pripojte sa k ostatným študentom a skúseným vývojárom v diskusiách o MCP. Je to podporná komunita, kde sú otázky vítané a vedomosti sa slobodne zdieľajú. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Ak máte spätnú väzbu na produkt alebo narazíte na chyby pri vývoji, navštívte: +Ak máte spätnú väzbu k produktu alebo chyby počas vývoja, navštívte: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Upozornenie**: -Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, uvedomte si, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou AI prekladateľskej služby [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, majte prosím na pamäti, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Originálny dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sl/README.md b/translations/sl/README.md index 1e2fc9de8..1413ca974 100644 --- a/translations/sl/README.md +++ b/translations/sl/README.md @@ -1,89 +1,92 @@ -[![GitHub licenca](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub prispevki](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub težave](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) [![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Dobrodošli](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub opazovalci](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub vilice](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub zvezdice](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Podpora za več jezikov -#### Podprto prek GitHub Action (Avtomatizirano in vedno posodobljeno) +#### Podprto preko GitHub Action (avtomatizirano in vedno posodobljeno) -[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) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/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](./README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + +[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](./README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + #### Pridružite se naši skupnosti [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Imamo serijo učenja z AI na Discordu, izvedite več in se nam pridružite na [Learn with AI Series](https://aka.ms/learnwithai/discord) od 18. do 30. septembra 2025. Prejeli boste nasvete in trike za uporabo GitHub Copilot za podatkovno znanost. +Imamo tekočo serijo Discord učnih vsebin z AI, več informacij in pridružitev najdete na [Learn with AI Series](https://aka.ms/learnwithai/discord) od 18. do 30. septembra 2025. Prejeli boste nasvete in trike za uporabo GitHub Copilot za podatkovno znanost. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.sl.png) -# Strojno učenje za začetnike - Kurikulum +# Strojno učenje za začetnike - učni načrt -> 🌍 Potujte po svetu, medtem ko raziskujemo strojno učenje skozi prizmo svetovnih kultur 🌍 +> 🌍 Potujte po svetu, medtem ko raziskujemo strojno učenje skozi svetovne kulture 🌍 -Cloud Advocates pri Microsoftu z veseljem ponujajo 12-tedenski, 26-lekcijski kurikulum o **strojnem učenju**. V tem kurikulumu se boste naučili o tem, kar se včasih imenuje **klasično strojno učenje**, pri čemer bomo primarno uporabljali knjižnico Scikit-learn in se izognili globokemu učenju, ki je pokrito v našem [kurikulumu AI za začetnike](https://aka.ms/ai4beginners). Te lekcije združite z našim kurikulom ['Podatkovna znanost za začetnike'](https://aka.ms/ds4beginners), prav tako! +Cloud Advocates pri Microsoftu z veseljem ponujajo 12-tedenski, 26-učniški učni načrt, ki je v celoti posvečen **strojnega učenja**. V tem učnem načrtu se boste naučili tistega, kar se včasih imenuje **klasično strojno učenje**, pri čemer boste večinoma uporabljali knjižnico Scikit-learn in se izogibali globokemu učenju, ki je zajeto v našem [učnem načrtu AI za začetnike](https://aka.ms/ai4beginners). Združite te lekcije tudi z našim [učnim načrtom 'Podatkovna znanost za začetnike'](https://aka.ms/ds4beginners)! -Potujte z nami po svetu, medtem ko uporabljamo te klasične tehnike na podatkih iz različnih delov sveta. Vsaka lekcija vključuje kvize pred in po lekciji, pisna navodila za dokončanje lekcije, rešitev, nalogo in še več. Naša projektno usmerjena pedagogika vam omogoča učenje skozi gradnjo, kar je dokazano učinkovit način za pridobivanje novih veščin. +Potujte z nami po svetu, ko te klasične tehnike uporabljamo na podatkih iz različnih delov sveta. Vsaka lekcija vključuje kvize pred in po lekciji, pisna navodila za dokončanje lekcije, rešitev, nalogo in še več. Naša pedagoška metoda, ki temelji na projektih, vam omogoča učenje med gradnjo, kar je preizkušena metoda za boljše usvajanje novih veščin. -**✍️ Iskrena zahvala našim avtorjem** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu in Amy Boyd +**✍️ Iskrena hvala našim avtorjem** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu in Amy Boyd -**🎨 Zahvala tudi našim ilustratorjem** Tomomi Imura, Dasani Madipalli in Jen Looper +**🎨 Hvala tudi našim ilustratorjem** Tomomi Imura, Dasani Madipalli in Jen Looper -**🙏 Posebna zahvala 🙏 našim Microsoft Student Ambassador avtorjem, recenzentom in prispevalcem vsebine**, zlasti Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila in Snigdha Agarwal +**🙏 Posebna zahvala 🙏 našim Microsoft Student Ambassador avtorjem, recenzentom in prispevkarjem vsebin**, zlasti Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila in Snigdha Agarwal -**🤩 Dodatna zahvala Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi in Vidushi Gupta za naše lekcije v R!** +**🤩 Dodatna hvala Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi in Vidushi Gupta za naše lekcije v R!** # Začetek Sledite tem korakom: -1. **Forkajte repozitorij**: Kliknite na gumb "Fork" v zgornjem desnem kotu te strani. +1. **Razvejajte repozitorij**: Kliknite na gumb "Fork" v zgornjem desnem kotu te strani. 2. **Klonirajte repozitorij**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [poiščite vse dodatne vire za ta tečaj v naši zbirki Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [vse dodatne vire za ta tečaj najdete v naši zbirki Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +> 🔧 **Potrebujete pomoč?** Preverite naš [Vodnik za odpravljanje težav](TROUBLESHOOTING.md) za rešitve pogostih težav z namestitvijo, nastavitvijo in izvajanjem lekcij. -> 🔧 **Potrebujete pomoč?** Preverite naš [Vodnik za odpravljanje težav](TROUBLESHOOTING.md) za rešitve pogostih težav pri namestitvi, nastavitvi in izvajanju lekcij. -**[Študenti](https://aka.ms/student-page)**, za uporabo tega kurikuluma, forkajte celoten repozitorij v svoj GitHub račun in dokončajte vaje sami ali v skupini: +**[Študenti](https://aka.ms/student-page)**, za uporabo tega učnega načrta razvejajte celoten repozitorij na svoj GitHub račun in dokončajte vaje sami ali v skupini: - Začnite s kvizom pred predavanjem. -- Preberite predavanje in dokončajte aktivnosti, ustavite se in razmislite pri vsakem preverjanju znanja. -- Poskusite ustvariti projekte z razumevanjem lekcij, namesto da bi samo zagnali kodo rešitve; vendar je ta koda na voljo v mapah `/solution` v vsaki projektno usmerjeni lekciji. +- Preberite predavanje in dokončajte aktivnosti, ob vsakem preverjanju znanja se ustavite in premislite. +- Poskusite ustvariti projekte tako, da razumete lekcije, namesto da samo zaženete kodo rešitve; ta koda je na voljo v mapah `/solution` v vsaki lekciji, usmerjeni na projekt. - Opravite kviz po predavanju. - Dokončajte izziv. - Dokončajte nalogo. -- Po dokončanju skupine lekcij obiščite [Diskusijsko ploščo](https://github.com/microsoft/ML-For-Beginners/discussions) in "učite se na glas" tako, da izpolnite ustrezno PAT rubriko. 'PAT' je orodje za ocenjevanje napredka, ki je rubrika, ki jo izpolnite za nadaljnje učenje. Prav tako lahko reagirate na druge PAT-e, da se učimo skupaj. +- Po zaključku skupine lekcij obiščite [Diskusijsko ploščo](https://github.com/microsoft/ML-For-Beginners/discussions) in "učite se na glas" tako, da izpolnite ustrezno ocenjevalno orodje PAT. 'PAT' je Orodje za ocenjevanje napredka, ki je rubrika, ki jo izpolnite za nadaljnje učenje. Prav tako lahko reagirate na druge PAT, da se učimo skupaj. > Za nadaljnje študije priporočamo, da sledite tem [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modulom in učnim potem. -**Učitelji**, vključili smo [nekaj predlogov](for-teachers.md) o tem, kako uporabiti ta kurikulum. +**Učitelji**, vključili smo [nekaj predlogov](for-teachers.md), kako uporabljati ta učni načrt. --- -## Video vodiči +## Video predstavitve -Nekatere lekcije so na voljo kot kratki video posnetki. Vse te najdete v lekcijah ali na [ML za začetnike playlisti na Microsoft Developer YouTube kanalu](https://aka.ms/ml-beginners-videos) s klikom na spodnjo sliko. +Nekatere lekcije so na voljo kot kratki video posnetki. Vse jih lahko najdete v lekcijah ali na [predvajalnem seznamu ML za začetnike na Microsoft Developer YouTube kanalu](https://aka.ms/ml-beginners-videos) s klikom na spodnjo sliko. -[![ML za začetnike banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.sl.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.sl.png)](https://aka.ms/ml-beginners-videos) --- ## Spoznajte ekipo -[![Promocijski video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **Gif avtor** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) @@ -93,120 +96,128 @@ Nekatere lekcije so na voljo kot kratki video posnetki. Vse te najdete v lekcija ## Pedagogika -Pri oblikovanju tega kurikuluma smo izbrali dva pedagoška načela: zagotoviti, da je praktično **projektno usmerjeno** in da vključuje **pogoste kvize**. Poleg tega ima ta kurikulum skupno **temo**, ki mu daje kohezijo. +Pri oblikovanju tega učnega načrta smo izbrali dve pedagoški načeli: zagotoviti, da je praktičen in **projektno usmerjen** ter da vključuje **pogoste kvize**. Poleg tega ima ta učni načrt skupno **temo**, ki mu daje kohezivnost. -Z zagotavljanjem, da se vsebina ujema s projekti, je proces bolj privlačen za študente, koncepti pa se bolje ohranijo. Poleg tega nizko-stresni kviz pred predavanjem usmeri pozornost študenta na učenje teme, medtem ko drugi kviz po predavanju zagotavlja nadaljnjo ohranitev znanja. Ta kurikulum je zasnovan tako, da je prilagodljiv in zabaven ter ga je mogoče jemati v celoti ali delno. Projekti se začnejo majhni in postajajo vse bolj kompleksni do konca 12-tedenskega cikla. Ta kurikulum vključuje tudi dodatek o realnih aplikacijah strojnega učenja, ki se lahko uporabi kot dodatno gradivo ali kot osnova za razpravo. +Z zagotavljanjem, da se vsebina ujema s projekti, je proces za študente bolj zanimiv in izboljša se zadrževanje konceptov. Poleg tega nizko tvegani kviz pred predavanjem usmeri študenta k učenju teme, medtem ko drugi kviz po predavanju zagotavlja nadaljnje zadrževanje. Ta učni načrt je zasnovan tako, da je prilagodljiv in zabaven ter ga je mogoče opraviti v celoti ali delno. Projekti se začnejo majhni in postajajo vse bolj zapleteni do konca 12-tedenskega cikla. Ta učni načrt vključuje tudi dodatek o resničnih aplikacijah ML, ki ga je mogoče uporabiti kot dodatno oceno ali kot osnovo za razpravo. -> Najdite naš [Kodeks ravnanja](CODE_OF_CONDUCT.md), [Prispevanje](CONTRIBUTING.md), [Prevajanje](TRANSLATIONS.md) in [Vodnik za odpravljanje težav](TROUBLESHOOTING.md). Veseli bomo vaših konstruktivnih povratnih informacij! +> Najdite naše [Pravila vedenja](CODE_OF_CONDUCT.md), [Prispevanje](CONTRIBUTING.md), [Prevajanje](TRANSLATIONS.md) in [Odpravljanje težav](TROUBLESHOOTING.md). Veselimo se vaših konstruktivnih povratnih informacij! ## Vsaka lekcija vključuje -- opcijsko sketchnote -- opcijski dopolnilni video -- video vodič (nekatere lekcije) +- neobvezno skiciranje +- neobvezni dodatni video +- video predstavitev (samo nekatere lekcije) - [kviz za ogrevanje pred predavanjem](https://ff-quizzes.netlify.app/en/ml/) - pisno lekcijo -- za projektno usmerjene lekcije, korak-po-korak vodiče za gradnjo projekta -- preverjanje znanja +- za lekcije, usmerjene na projekte, korak-po-korak vodiče za izdelavo projekta +- preverjanja znanja - izziv -- dopolnilno branje +- dodatno branje - nalogo - [kviz po predavanju](https://ff-quizzes.netlify.app/en/ml/) -> **Opomba o jezikih**: Te lekcije so primarno napisane v Pythonu, vendar so mnoge na voljo tudi v R. Za dokončanje lekcije v R pojdite v mapo `/solution` in poiščite lekcije v R. Vključujejo razširitev .rmd, ki predstavlja **R Markdown** datoteko, ki jo lahko preprosto definiramo kot vdelavo `code chunks` (R ali drugih jezikov) in `YAML header` (ki usmerja, kako formatirati izhode, kot so PDF) v `Markdown dokument`. Tako služi kot odličen avtorski okvir za podatkovno znanost, saj vam omogoča kombiniranje kode, njenega izhoda in vaših misli z zapisovanjem v Markdown. Poleg tega je mogoče R Markdown dokumente upodobiti v izhodne formate, kot so PDF, HTML ali Word. +> **Opomba o jezikih**: Te lekcije so večinoma napisane v Pythonu, vendar je veliko lekcij na voljo tudi v R. Za dokončanje lekcije v R pojdite v mapo `/solution` in poiščite lekcije v R. Vsebujejo pripono .rmd, ki predstavlja **R Markdown** datoteko, ki jo lahko preprosto opišemo kot vdelavo `koda blokov` (v R ali drugih jezikih) in `YAML glave` (ki usmerja, kako oblikovati izhode, kot je PDF) v `Markdown dokumentu`. Tako služi kot vzorčni okvir za avtorstvo v podatkovni znanosti, saj vam omogoča združevanje kode, njenega izhoda in vaših misli z zapisovanjem v Markdown. Poleg tega je mogoče R Markdown dokumente pretvoriti v izhodne formate, kot so PDF, HTML ali Word. -> **Opomba o kvizih**: Vsi kvizi so vsebovani v [mapi Quiz App](../../quiz-app), skupaj 52 kvizov s tremi vprašanji vsak. Povezani so znotraj lekcij, vendar je aplikacijo za kvize mogoče zagnati lokalno; sledite navodilom v mapi `quiz-app` za lokalno gostovanje ali namestitev na Azure. +> **Opomba o kvizih**: Vsi kvizi so v [mapi Quiz App](../../quiz-app), skupaj 52 kvizov s po tremi vprašanji. Povezani so znotraj lekcij, vendar je aplikacijo za kvize mogoče zagnati lokalno; sledite navodilom v mapi `quiz-app` za lokalno gostovanje ali namestitev v Azure. | Številka lekcije | Tema | Skupina lekcij | Cilji učenja | Povezana lekcija | Avtor | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Uvod v strojno učenje | [Uvod](1-Introduction/README.md) | Spoznajte osnovne koncepte strojnega učenja | [Lekcija](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Zgodovina strojnega učenja | [Uvod](1-Introduction/README.md) | Spoznajte zgodovino tega področja | [Lekcija](1-Introduction/2-history-of-ML/README.md) | Jen in Amy | -| 03 | Pravičnost in strojno učenje | [Uvod](1-Introduction/README.md) | Katere pomembne filozofske vidike pravičnosti naj učenci upoštevajo pri gradnji in uporabi modelov strojnega učenja? | [Lekcija](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Tehnike strojnega učenja | [Uvod](1-Introduction/README.md) | Katere tehnike uporabljajo raziskovalci strojnega učenja za gradnjo modelov? | [Lekcija](1-Introduction/4-techniques-of-ML/README.md) | Chris in Jen | -| 05 | Uvod v regresijo | [Regresija](2-Regression/README.md) | Začnite s Pythonom in Scikit-learn za modele regresije | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Cene buč v Severni Ameriki 🎃 | [Regresija](2-Regression/README.md) | Vizualizirajte in očistite podatke za pripravo na strojno učenje | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Cene buč v Severni Ameriki 🎃 | [Regresija](2-Regression/README.md) | Zgradite linearne in polinomske regresijske modele | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen in Dmitry • Eric Wanjau | -| 08 | Cene buč v Severni Ameriki 🎃 | [Regresija](2-Regression/README.md) | Zgradite logistični regresijski model | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Spletna aplikacija 🔌 | [Spletna aplikacija](3-Web-App/README.md) | Zgradite spletno aplikacijo za uporabo vašega treniranega modela | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Uvod v klasifikacijo | [Klasifikacija](4-Classification/README.md) | Očistite, pripravite in vizualizirajte podatke; uvod v klasifikacijo | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen in Cassie • Eric Wanjau | -| 11 | Okusne azijske in indijske jedi 🍜 | [Klasifikacija](4-Classification/README.md) | Uvod v klasifikatorje | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen in Cassie • Eric Wanjau | -| 12 | Okusne azijske in indijske jedi 🍜 | [Klasifikacija](4-Classification/README.md) | Več klasifikatorjev | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen in Cassie • Eric Wanjau | -| 13 | Okusne azijske in indijske jedi 🍜 | [Klasifikacija](4-Classification/README.md) | Zgradite spletno aplikacijo za priporočila z uporabo vašega modela | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Uvod v gručenje | [Gručenje](5-Clustering/README.md) | Očistite, pripravite in vizualizirajte podatke; uvod v gručenje | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Raziskovanje nigerijskih glasbenih okusov 🎧 | [Gručenje](5-Clustering/README.md) | Raziskovanje metode 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 | Uvod v obdelavo naravnega jezika ☕️ | [Obdelava naravnega jezika](6-NLP/README.md) | Spoznajte osnove NLP z gradnjo preprostega bota | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Pogoste naloge NLP ☕️ | [Obdelava naravnega jezika](6-NLP/README.md) | Poglobite svoje znanje NLP z razumevanjem pogostih nalog pri delu z jezikovnimi strukturami | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Prevajanje in analiza sentimenta ♥️ | [Obdelava naravnega jezika](6-NLP/README.md) | Prevajanje in analiza sentimenta z Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantični hoteli Evrope ♥️ | [Obdelava naravnega jezika](6-NLP/README.md) | Analiza sentimenta z ocenami hotelov 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantični hoteli Evrope ♥️ | [Obdelava naravnega jezika](6-NLP/README.md) | Analiza sentimenta z ocenami hotelov 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Uvod v napovedovanje časovnih vrst | [Časovne vrste](7-TimeSeries/README.md) | Uvod v napovedovanje časovnih vrst | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Svetovna poraba energije ⚡️ - napovedovanje časovnih vrst z ARIMA | [Časovne vrste](7-TimeSeries/README.md) | Napovedovanje časovnih vrst z ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Svetovna poraba energije ⚡️ - napovedovanje časovnih vrst z SVR | [Časovne vrste](7-TimeSeries/README.md) | Napovedovanje časovnih vrst z regressorjem podpornih vektorjev | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Uvod v učenje z okrepitvijo | [Učenje z okrepitvijo](8-Reinforcement/README.md) | Uvod v učenje z okrepitvijo z Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Pomagajte Petru ubežati volku! 🐺 | [Učenje z okrepitvijo](8-Reinforcement/README.md) | Učenje z okrepitvijo v Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Scenariji in aplikacije strojnega učenja v resničnem svetu | [ML v naravi](9-Real-World/README.md) | Zanimive in razkrivajoče aplikacije klasičnega strojnega učenja | [Lekcija](9-Real-World/1-Applications/README.md) | Ekipa | -| Postscript | Odpravljanje napak modelov v ML z uporabo nadzorne plošče RAI | [ML v naravi](9-Real-World/README.md) | Odpravljanje napak modelov strojnega učenja z uporabo komponent nadzorne plošče odgovorne umetne inteligence | [Lekcija](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +| 01 | Uvod v strojno učenje | [Introduction](1-Introduction/README.md) | Spoznajte osnovne pojme, ki stojijo za strojnim učenjem | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Zgodovina strojnega učenja | [Introduction](1-Introduction/README.md) | Spoznajte zgodovino, ki stoji za tem področjem | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Pravičnost in strojno učenje | [Introduction](1-Introduction/README.md) | Katere so pomembne filozofske teme o pravičnosti, ki bi jih morali študenti upoštevati pri gradnji in uporabi modelov strojnega učenja? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Tehnike za strojno učenje | [Introduction](1-Introduction/README.md) | Katere tehnike uporabljajo raziskovalci strojnega učenja za gradnjo modelov? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Uvod v regresijo | [Regression](2-Regression/README.md) | Začnite z uporabo Pythona in Scikit-learn za regresijske modele | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Cene buč v Severni Ameriki 🎃 | [Regression](2-Regression/README.md) | Vizualizirajte in očistite podatke v pripravi na strojno učenje | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Cene buč v Severni Ameriki 🎃 | [Regression](2-Regression/README.md) | Zgradite linearne in polinomske regresijske modele | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Cene buč v Severni Ameriki 🎃 | [Regression](2-Regression/README.md) | Zgradite logistični regresijski model | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Spletna aplikacija 🔌 | [Web App](3-Web-App/README.md) | Zgradite spletno aplikacijo za uporabo vašega usposobljenega modela | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Uvod v klasifikacijo | [Classification](4-Classification/README.md) | Očistite, pripravite in vizualizirajte svoje podatke; uvod v klasifikacijo | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Sladke azijske in indijske kuhinje 🍜 | [Classification](4-Classification/README.md) | Uvod v klasifikatorje | [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 | Sladke azijske in indijske kuhinje 🍜 | [Classification](4-Classification/README.md) | Več klasifikatorjev | [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 | Sladke azijske in indijske kuhinje 🍜 | [Classification](4-Classification/README.md) | Zgradite priporočilno spletno aplikacijo z uporabo vašega modela | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Uvod v gručenje | [Clustering](5-Clustering/README.md) | Očistite, pripravite in vizualizirajte svoje podatke; uvod v gručenje | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Raziskovanje nigerijskih glasbenih okusov 🎧 | [Clustering](5-Clustering/README.md) | Raziskujte metodo gručenja K-sredin | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Uvod v obdelavo naravnega jezika ☕️ | [Natural language processing](6-NLP/README.md) | Naučite se osnov NLP z gradnjo preprostega bota | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Pogoste naloge NLP ☕️ | [Natural language processing](6-NLP/README.md) | Poglobite svoje znanje NLP z razumevanjem pogostih nalog, potrebnih pri delu z jezikovnimi strukturami | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Prevajanje in analiza sentimenta ♥️ | [Natural language processing](6-NLP/README.md) | Prevajanje in analiza sentimenta z Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantični hoteli Evrope ♥️ | [Natural language processing](6-NLP/README.md) | Analiza sentimenta z ocenami hotelov 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantični hoteli Evrope ♥️ | [Natural language processing](6-NLP/README.md) | Analiza sentimenta z ocenami hotelov 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Uvod v napovedovanje časovnih vrst | [Time series](7-TimeSeries/README.md) | Uvod v napovedovanje časovnih vrst | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Svetovna poraba elektrike ⚡️ - napovedovanje časovnih vrst z ARIMA | [Time series](7-TimeSeries/README.md) | Napovedovanje časovnih vrst z ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Svetovna poraba elektrike ⚡️ - napovedovanje časovnih vrst z SVR | [Time series](7-TimeSeries/README.md) | Napovedovanje časovnih vrst z regresorjem podpornih vektorjev | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Uvod v okrepljeno učenje | [Reinforcement learning](8-Reinforcement/README.md) | Uvod v okrepljeno učenje z Q-učenjem | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Pomagajte Petru, da se izogne volku! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Okrepljeno učenje v telovadnici | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Resnični scenariji in aplikacije ML | [ML in the Wild](9-Real-World/README.md) | Zanimive in razkrivajoče resnične aplikacije klasičnega strojnega učenja | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Odpravljanje napak modelov v ML z RAI nadzorno ploščo | [ML in the Wild](9-Real-World/README.md) | Odpravljanje napak modelov v strojni učenju z uporabo komponent nadzorne plošče Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [poiščite vse dodatne vire za ta tečaj v naši zbirki Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Dostop brez povezave -To dokumentacijo lahko zaženete brez povezave z uporabo [Docsify](https://docsify.js.org/#/). Forkajte to repozitorij, [namestite Docsify](https://docsify.js.org/#/quickstart) na vaš lokalni računalnik, nato pa v korenski mapi tega repozitorija vnesite `docsify serve`. Spletna stran bo na voljo na portu 3000 na vašem localhostu: `localhost:3000`. +To dokumentacijo lahko uporabljate brez povezave z uporabo [Docsify](https://docsify.js.org/#/). Razvejajte ta repozitorij, [namestite Docsify](https://docsify.js.org/#/quickstart) na vaš lokalni računalnik in nato v korenski mapi tega repozitorija vnesite `docsify serve`. Spletna stran bo dostopna na vratih 3000 na vašem lokalnem računalniku: `localhost:3000`. ## PDF-ji -Najdite PDF učnega načrta s povezavami [tukaj](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Najdite pdf učnega načrta s povezavami [tukaj](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Drugi tečaji +## 🎒 Drugi tečaji -Naša ekipa ustvarja tudi druge tečaje! Oglejte si: +Naša ekipa pripravlja tudi druge tečaje! Oglejte si: -### Azure / Edge / MCP / Agentje -[![AZD za začetnike](https://img.shields.io/badge/AZD%20za%20začetnike-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI za začetnike](https://img.shields.io/badge/Edge%20AI%20za%20začetnike-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP za začetnike](https://img.shields.io/badge/MCP%20za%20začetnike-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI agenti za začetnike](https://img.shields.io/badge/AI%20agenti%20za%20začetnike-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Serija generativne umetne inteligence -[![Generativna umetna inteligenca za začetnike](https://img.shields.io/badge/Generativna%20umetna%20inteligenca%20za%20začetnike-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generativna umetna inteligenca (.NET)](https://img.shields.io/badge/Generativna%20umetna%20inteligenca%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generativna umetna inteligenca (Java)](https://img.shields.io/badge/Generativna%20umetna%20inteligenca%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generativna umetna inteligenca (JavaScript)](https://img.shields.io/badge/Generativna%20umetna%20inteligenca%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agenti +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Serija generativne umetne inteligence +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generativna AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generativna AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +--- + ### Osnovno učenje -[![ML za začetnike](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Podatkovna znanost za začetnike](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![UI za začetnike](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Kibernetska varnost za začetnike](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Spletni razvoj za začetnike](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT za začetnike](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR razvoj za začetnike](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML za začetnike](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Podatkovna znanost za začetnike](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI za začetnike](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Kibernetska varnost za začetnike](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Spletni razvoj za začetnike](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT za začetnike](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR razvoj za začetnike](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Serija Copilot +[![Copilot za AI parno programiranje](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot za C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot avantura](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Serija Copilot -[![Copilot za AI parno programiranje](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot za C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot avantura](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Pomoč +## Pridobivanje pomoči -Če se zataknete ali imate kakršna koli vprašanja o gradnji aplikacij z UI, se pridružite drugim učencem in izkušenim razvijalcem v razpravah o MCP. To je podporna skupnost, kjer so vprašanja dobrodošla in znanje se deli brez omejitev. +Če se zataknete ali imate kakršnakoli vprašanja o izdelavi AI aplikacij. Pridružite se drugim učencem in izkušenim razvijalcem v razpravah o MCP. To je podporna skupnost, kjer so vprašanja dobrodošla in se znanje prosto deli. [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Če imate povratne informacije o izdelku ali naletite na napake med gradnjo, obiščite: +Če imate povratne informacije o izdelku ali napake med izdelavo, obiščite: [![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Omejitev odgovornosti**: -Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas opozarjamo, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku velja za avtoritativni vir. Za ključne informacije priporočamo strokovni človeški prevod. Za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda, ne odgovarjamo. \ No newline at end of file diff --git a/translations/sr/README.md b/translations/sr/README.md index 7a258b491..6e55b2899 100644 --- a/translations/sr/README.md +++ b/translations/sr/README.md @@ -1,213 +1,223 @@ -[![GitHub лиценца](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub доприносиоци](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub проблеми](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub захтеви за повлачење](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Добродошли](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub посматрачи](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub форкови](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub звездице](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Подршка за више језика +### 🌐 Подршка за више језика -#### Подржано преко GitHub Action (Аутоматизовано и увек ажурирано) +#### Подржано преко GitHub акције (аутоматизовано и увек ажурирано) -[Арапски](../ar/README.md) | [Бенгалски](../bn/README.md) | [Бугарски](../bg/README.md) | [Бирмански (Мјанмар)](../my/README.md) | [Кинески (поједностављени)](../zh/README.md) | [Кинески (традиционални, Хонг Конг)](../hk/README.md) | [Кинески (традиционални, Макао)](../mo/README.md) | [Кинески (традиционални, Тајван)](../tw/README.md) | [Хрватски](../hr/README.md) | [Чешки](../cs/README.md) | [Дански](../da/README.md) | [Холандски](../nl/README.md) | [Естонски](../et/README.md) | [Фински](../fi/README.md) | [Француски](../fr/README.md) | [Немачки](../de/README.md) | [Грчки](../el/README.md) | [Хебрејски](../he/README.md) | [Хинди](../hi/README.md) | [Мађарски](../hu/README.md) | [Индонежански](../id/README.md) | [Италијански](../it/README.md) | [Јапански](../ja/README.md) | [Корејски](../ko/README.md) | [Литвански](../lt/README.md) | [Малајски](../ms/README.md) | [Марати](../mr/README.md) | [Непалски](../ne/README.md) | [Нигеријски Пиџин](../pcm/README.md) | [Норвешки](../no/README.md) | [Персијски (Фарси)](../fa/README.md) | [Пољски](../pl/README.md) | [Португалски (Бразил)](../br/README.md) | [Португалски (Португал)](../pt/README.md) | [Пенџабски (Гурмуки)](../pa/README.md) | [Румунски](../ro/README.md) | [Руски](../ru/README.md) | [Српски (Ћирилица)](./README.md) | [Словачки](../sk/README.md) | [Словеначки](../sl/README.md) | [Шпански](../es/README.md) | [Свахили](../sw/README.md) | [Шведски](../sv/README.md) | [Тагалог (Филипински)](../tl/README.md) | [Тамилски](../ta/README.md) | [Тајландски](../th/README.md) | [Турски](../tr/README.md) | [Украјински](../uk/README.md) | [Урду](../ur/README.md) | [Вијетнамски](../vi/README.md) +[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)](./README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) -#### Придружите се нашој заједници +#### Придружите се нашој заједници -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Имамо серију учења са вештачком интелигенцијом на Discord-у, сазнајте више и придружите нам се на [Learn with AI Series](https://aka.ms/learnwithai/discord) од 18. до 30. септембра 2025. Добићете савете и трикове за коришћење GitHub Copilot-а за науку о подацима. +Имамо текућу серију учења на Discord-у са вештачком интелигенцијом, сазнајте више и придружите нам се на [Learn with AI Series](https://aka.ms/learnwithai/discord) од 18. до 30. септембра 2025. године. Добићете савете и трикове за коришћење GitHub Copilot-а за Data Science. -![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.sr.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.sr.png) -# Машинско учење за почетнике - Курикулум +# Машинско учење за почетнике - Наставни план -> 🌍 Путујте светом док истражујемо машинско учење кроз културе света 🌍 +> 🌍 Путујте око света док истражујемо Машинско учење кроз културе света 🌍 -Cloud Advocates у Microsoft-у са задовољством нуде 12-недељни, 26-лекцијски курикулум о **машинском учењу**. У овом курикулуму, научићете о ономе што се понекад назива **класично машинско учење**, користећи углавном библиотеку Scikit-learn и избегавајући дубоко учење, које је обухваћено у нашем [AI for Beginners' курикулуму](https://aka.ms/ai4beginners). Упарите ове лекције са нашим ['Data Science for Beginners' курикулумом](https://aka.ms/ds4beginners), такође! +Cloud Advocates у Microsoft-у са задовољством нуде 12-недељни, 26-лекцијски наставни план који се бави **Машинским учењем**. У овом наставном плану научићете о ономе што се понекад назива **класично машинско учење**, користећи углавном библиотеку Scikit-learn и избегавајући дубоко учење, које је обухваћено у нашем [AI for Beginners' наставном плану](https://aka.ms/ai4beginners). Такође упарите ове лекције са нашим ['Data Science for Beginners' наставним планом](https://aka.ms/ds4beginners). -Путујте са нама широм света док примењујемо ове класичне технике на податке из различитих делова света. Свака лекција укључује квизове пре и после лекције, писана упутства за завршетак лекције, решење, задатак и још много тога. Наш приступ заснован на пројектима омогућава вам да учите кроз изградњу, доказан начин да нове вештине остану у памћењу. +Путујте са нама око света док примењујемо ове класичне технике на податке из многих делова света. Свака лекција укључује квизове пре и после лекције, писане инструкције за завршетак лекције, решење, задатак и још много тога. Наша педагогија заснована на пројектима омогућава вам да учите док градите, што је доказани начин да нове вештине остану у памћењу. -**✍️ Срдачна захвалност нашим ауторима** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu и Amy Boyd +**✍️ Велика захвалност нашим ауторима** Јен Лупер, Стивен Хауел, Франческа Лаззери, Томоми Имура, Кеси Бревиу, Дмитриј Сошников, Крис Норинг, Анирбан Мукерџи, Орнела Алтуњан, Рут Јакубу и Ејми Бојд -**🎨 Захвалност и нашим илустраторима** Tomomi Imura, Dasani Madipalli и Jen Looper +**🎨 Захвалност илустраторима** Томоми Имура, Дасани Мадипали и Јен Лупер -**🙏 Посебна захвалност 🙏 нашим Microsoft Student Ambassador ауторима, рецензентима и доприносима садржају**, посебно Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila и Snigdha Agarwal +**🙏 Посебна захвалност 🙏 нашим Microsoft Student Ambassador ауторима, рецензентима и сарадницима садржаја**, нарочито Ришиту Даглију, Мухамаду Сакибу Кхану Инану, Рохану Рају, Александру Петреску, Абхишеку Џаисвалу, Наврин Табасум, Јоану Самуила и Снигдхи Агарвал -**🤩 Додатна захвалност Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi и Vidushi Gupta за наше R лекције!** +**🤩 Посебна захвалност Microsoft Student Ambassadors Ерику Вањау, Јаслину Сонди и Видуши Гупти за наше R лекције!** -# Почетак +# Почетак рада -Пратите ове кораке: -1. **Fork репозиторијума**: Кликните на дугме "Fork" у горњем десном углу ове странице. -2. **Клонирајте репозиторијум**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Пратите ове кораке: +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) +> [пронађите све додатне ресурсе за овај курс у нашој Microsoft Learn колекцији](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +> 🔧 **Треба вам помоћ?** Погледајте наш [Водич за решавање проблема](TROUBLESHOOTING.md) за решења уобичајених проблема са инсталацијом, подешавањем и покретањем лекција. -> 🔧 **Потребна помоћ?** Погледајте наш [Водич за решавање проблема](TROUBLESHOOTING.md) за решења уобичајених проблема са инсталацијом, подешавањем и извођењем лекција. -**[Студенти](https://aka.ms/student-page)**, да бисте користили овај курикулум, форкујте цео репо у свој GitHub налог и завршите вежбе сами или у групи: +**[Студенти](https://aka.ms/student-page)**, да бисте користили овај наставни план, форкујте цео репозиторијум на свој GitHub налог и радите вежбе сами или у групи: -- Почните са квизом пре предавања. -- Прочитајте предавање и завршите активности, паузирајући и размишљајући на сваком провери знања. -- Покушајте да креирате пројекте разумејући лекције уместо да покрећете код решења; међутим, тај код је доступан у `/solution` фасциклама у свакој лекцији заснованој на пројекту. -- Урадите квиз након предавања. -- Завршите изазов. -- Завршите задатак. -- Након завршетка групе лекција, посетите [Дискусиони одбор](https://github.com/microsoft/ML-For-Beginners/discussions) и "учите наглас" попуњавањем одговарајућег PAT рубрика. 'PAT' је алат за процену напретка који је рубрика коју попуњавате како бисте унапредили своје учење. Такође можете реаговати на друге PAT-ове како бисмо учили заједно. +- Почните са квизом пре предавања. +- Прочитајте предавање и завршите активности, правећи паузе и размишљајући на сваком провери знања. +- Покушајте да направите пројекте разумевањем лекција уместо покретања кода решења; међутим, тај код је доступан у фолдерима `/solution` у свакој лекцији оријентисаној на пројекат. +- Урадите квиз после предавања. +- Завршите изазов. +- Завршите задатак. +- Након завршетка групе лекција, посетите [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) и "учите наглас" попуњавајући одговарајућу PAT рубрику. 'PAT' је алат за процену напретка који попуњавате да бисте унапредили своје учење. Такође можете реаговати на друге PAT-ове да бисмо учили заједно. -> За даље учење, препоручујемо праћење ових [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) модула и путања учења. +> За даље учење препоручујемо праћење ових [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) модула и учењских путања. -**Наставници**, укључили смо [неке предлоге](for-teachers.md) о томе како да користите овај курикулум. +**Наставници**, укључили смо [неке предлоге](for-teachers.md) о томе како користити овај наставни план. --- -## Видео водичи +## Видео водичи -Неке од лекција су доступне као кратки видео формати. Све ове можете пронаћи унутар лекција или на [ML for Beginners плејлисти на Microsoft Developer YouTube каналу](https://aka.ms/ml-beginners-videos) кликом на слику испод. +Неке лекције су доступне као кратки видео записи. Све их можете пронаћи унутар лекција или на [ML for Beginners плејлисти на Microsoft Developer YouTube каналу](https://aka.ms/ml-beginners-videos) кликом на слику испод. -[![ML for beginners банер](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.sr.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.sr.png)](https://aka.ms/ml-beginners-videos) --- -## Упознајте тим +## Упознајте тим -[![Промо видео](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif од** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Гиф од** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Кликните на слику изнад за видео о пројекту и људима који су га креирали! +> 🎥 Кликните на слику изнад за видео о пројекту и људима који су га креирали! --- -## Педагогија - -Изабрали смо два педагошка принципа приликом креирања овог курикулума: осигурање да је практичан **заснован на пројектима** и да укључује **честе квизове**. Поред тога, овај курикулум има заједничку **тему** како би му се дала кохезија. - -Осигуравањем да садржај одговара пројектима, процес постаје занимљивији за студенте, а задржавање концепата ће бити побољшано. Поред тога, квиз са ниским улозима пре часа поставља намеру студента ка учењу теме, док други квиз након часа осигурава даље задржавање. Овај курикулум је дизајниран да буде флексибилан и забаван и може се узети у целини или делимично. Пројекти почињу малим и постају све сложенији до краја 12-недељног циклуса. Овај курикулум такође укључује постскриптум о стварним применама машинског учења, који се може користити као додатни кредит или као основа за дискусију. - -> Пронађите наш [Кодекс понашања](CODE_OF_CONDUCT.md), [Упутства за допринос](CONTRIBUTING.md), [Превод](TRANSLATIONS.md) и [Решавање проблема](TROUBLESHOOTING.md). Добродошли су ваши конструктивни коментари! - -## Свака лекција укључује - -- опционални скица-напомена -- опционални додатни видео -- видео водич (само неке лекције) -- [квиз за загревање пре предавања](https://ff-quizzes.netlify.app/en/ml/) -- писана лекција -- за лекције засноване на пројектима, водичи корак по корак како изградити пројекат -- провере знања -- изазов -- додатно читање -- задатак -- [квиз након предавања](https://ff-quizzes.netlify.app/en/ml/) - -> **Напомена о језицима**: Ове лекције су углавном написане на Python-у, али многе су доступне и на R-у. Да бисте завршили R лекцију, идите у `/solution` фасциклу и потражите R лекције. Оне укључују .rmd екстензију која представља **R Markdown** датотеку која се може једноставно дефинисати као уграђивање `кодних делова` (R или других језика) и `YAML заглавља` (које води како форматирати излазе као што су PDF) у `Markdown документ`. Као таква, служи као изванредан оквир за ауторство у науци о подацима јер вам омогућава да комбинујете свој код, његов излаз и своје мисли тако што их записујете у Markdown-у. Штавише, R Markdown документи могу се рендеровати у излазне формате као што су PDF, HTML или Word. - -> **Напомена о квизовима**: Сви квизови се налазе у [Quiz App фасцикли](../../quiz-app), за укупно 52 квиза са по три питања. Они су повезани унутар лекција, али апликација за квиз може се покренути локално; пратите упутства у `quiz-app` фасцикли за локално хостовање или постављање на Azure. - -| Број лекције | Тема | Груписање лекција | Образовни циљеви | Повезана лекција | Аутор | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Увод у машинско учење | [Увод](1-Introduction/README.md) | Научите основне концепте машинског учења | [Лекција](1-Introduction/1-intro-to-ML/README.md) | Мухамед | -| 02 | Историја машинског учења | [Увод](1-Introduction/README.md) | Упознајте историју која стоји иза ове области | [Лекција](1-Introduction/2-history-of-ML/README.md) | Џен и Ејми | -| 03 | Правичност и машинско учење | [Увод](1-Introduction/README.md) | Која су важна филозофска питања о правичности која студенти треба да размотре приликом креирања и примене ML модела? | [Лекција](1-Introduction/3-fairness/README.md) | Томоми | -| 04 | Технике машинског учења | [Увод](1-Introduction/README.md) | Које технике истраживачи користе за креирање ML модела? | [Лекција](1-Introduction/4-techniques-of-ML/README.md) | Крис и Џен | -| 05 | Увод у регресију | [Регресија](2-Regression/README.md) | Почните са Python-ом и Scikit-learn-ом за регресионе моделе | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Џен • Ерик Ванџау | -| 06 | Цене бундева у Северној Америци 🎃 | [Регресија](2-Regression/README.md) | Визуализујте и очистите податке у припреми за ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Џен • Ерик Ванџау | -| 07 | Цене бундева у Северној Америци 🎃 | [Регресија](2-Regression/README.md) | Креирајте линеарне и полиномске регресионе моделе | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Џен и Дмитриј • Ерик Ванџау | -| 08 | Цене бундева у Северној Америци 🎃 | [Регресија](2-Regression/README.md) | Креирајте логистички регресиони модел | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Џен • Ерик Ванџау | -| 09 | Веб апликација 🔌 | [Веб апликација](3-Web-App/README.md) | Креирајте веб апликацију за коришћење вашег обученог модела | [Python](3-Web-App/1-Web-App/README.md) | Џен | -| 10 | Увод у класификацију | [Класификација](4-Classification/README.md) | Очистите, припремите и визуализујте своје податке; увод у класификацију | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Џен и Кеси • Ерик Ванџау | -| 11 | Укусна азијска и индијска јела 🍜 | [Класификација](4-Classification/README.md) | Увод у класификаторе | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Џен и Кеси • Ерик Ванџау | -| 12 | Укусна азијска и индијска јела 🍜 | [Класификација](4-Classification/README.md) | Више класификатора | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Џен и Кеси • Ерик Ванџау | -| 13 | Укусна азијска и индијска јела 🍜 | [Класификација](4-Classification/README.md) | Креирајте веб апликацију за препоруке користећи ваш модел | [Python](4-Classification/4-Applied/README.md) | Џен | -| 14 | Увод у кластерисање | [Кластерисање](5-Clustering/README.md) | Очистите, припремите и визуализујте своје податке; увод у кластерисање | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Џен • Ерик Ванџау | -| 15 | Истраживање музичких укуса у Нигерији 🎧 | [Кластерисање](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) | Џен • Ерик Ванџау | -| 16 | Увод у обраду природног језика ☕️ | [Обрада природног језика](6-NLP/README.md) | Научите основе NLP креирањем једноставног бота | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Стивен | -| 17 | Уобичајени NLP задаци ☕️ | [Обрада природног језика](6-NLP/README.md) | Продубите своје знање о NLP-у разумејући уобичајене задатке у раду са језичким структурама | [Python](6-NLP/2-Tasks/README.md) | Стивен | -| 18 | Превод и анализа сентимента ♥️ | [Обрада природног језика](6-NLP/README.md) | Превод и анализа сентимента са Џејн Остин | [Python](6-NLP/3-Translation-Sentiment/README.md) | Стивен | -| 19 | Романтични хотели у Европи ♥️ | [Обрада природног језика](6-NLP/README.md) | Анализа сентимента са рецензијама хотела 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Стивен | -| 20 | Романтични хотели у Европи ♥️ | [Обрада природног језика](6-NLP/README.md) | Анализа сентимента са рецензијама хотела 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Стивен | -| 21 | Увод у прогнозирање временских серија | [Временске серије](7-TimeSeries/README.md) | Увод у прогнозирање временских серија | [Python](7-TimeSeries/1-Introduction/README.md) | Франческа | -| 22 | ⚡️ Потрошња енергије у свету ⚡️ - прогнозирање са ARIMA | [Временске серије](7-TimeSeries/README.md) | Прогнозирање временских серија са ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Франческа | -| 23 | ⚡️ Потрошња енергије у свету ⚡️ - прогнозирање са SVR | [Временске серије](7-TimeSeries/README.md) | Прогнозирање временских серија са подршком векторских регресора | [Python](7-TimeSeries/3-SVR/README.md) | Анирбан | -| 24 | Увод у учење појачањем | [Учење појачањем](8-Reinforcement/README.md) | Увод у учење појачањем са Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Дмитриј | -| 25 | Помозите Петру да избегне вука! 🐺 | [Учење појачањем](8-Reinforcement/README.md) | Учење појачањем у Gym-у | [Python](8-Reinforcement/2-Gym/README.md) | Дмитриј | -| Постскриптум | Реални сценарији и примене машинског учења | [ML у природи](9-Real-World/README.md) | Занимљиве и откривајуће примене класичног машинског учења | [Лекција](9-Real-World/1-Applications/README.md) | Тим | -| Постскриптум | Отклањање грешака у ML моделима помоћу RAI табле | [ML у природи](9-Real-World/README.md) | Отклањање грешака у машинском учењу помоћу компоненти одговорне AI табле | [Лекција](9-Real-World/2-Debugging-ML-Models/README.md) | Рут Јакубу | +## Педагогија + +Изабрали смо два педагошка начела приликом израде овог наставног плана: обезбеђивање да буде практичан и заснован на **пројектима** и да укључује **честе квизове**. Поред тога, овај наставни план има заједничку **тему** која му даје кохезију. + +Обезбеђивањем да садржај буде усклађен са пројектима, процес је занимљивији за студенте и повећава задржавање концепата. Поред тога, квиз са малим улогом пре часа поставља намеру студента ка учењу теме, док други квиз после часа осигурава даље задржавање. Овај наставни план је дизајниран да буде флексибилан и забаван и може се радити у целини или делимично. Пројекти почињу мали и постају све сложенији до краја 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** фајл који се може једноставно дефинисати као уграђивање `кодних делова` (R или других језика) и `YAML заглавља` (које води како форматирати излаз као што је PDF) у `Markdown документ`. Као такав, служи као примерни оквир за ауторство у науци о подацима јер вам омогућава да комбинујете свој код, његов излаз и своје мисли тако што их пишете у Markdown-у. Штавише, R Markdown документи се могу рендеровати у излазне формате као што су PDF, HTML или Word. + +> **Напомена о квизовима**: Сви квизови се налазе у [Quiz App фолдеру](../../quiz-app), укупно 52 квиза са по три питања. Они су повезани изнутра лекција, али апликација за квизове може се покренути локално; пратите упутства у фолдеру `quiz-app` за локално хостовање или деплој на Azure. + +| Број лекције | Тема | Груписање лекција | Циљеви учења | Повезана лекција | Аутор | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | Увод у машинско учење | [Introduction](1-Introduction/README.md) | Научите основне концепте машинског учења | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Мухаммад | +| 02 | Историја машинског учења | [Introduction](1-Introduction/README.md) | Научите историју која стоји иза ове области | [Lesson](1-Introduction/2-history-of-ML/README.md) | Џен и Ејми | +| 03 | Праведност и машинско учење | [Introduction](1-Introduction/README.md) | Која су важна филозофска питања о праведности која студенти треба да размотре при изградњи и примени ML модела? | [Lesson](1-Introduction/3-fairness/README.md) | Томоми | +| 04 | Технике машинског учења | [Introduction](1-Introduction/README.md) | Које технике истраживачи машинског учења користе за изградњу ML модела? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Крис и Џен | +| 05 | Увод у регресију | [Regression](2-Regression/README.md) | Почните са Питоном и Scikit-learn за регресионе моделе | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Џен • Ерик Вањау | +| 06 | Цене бундеве у Северној Америци 🎃 | [Regression](2-Regression/README.md) | Визуализујте и очистите податке у припреми за ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Џен • Ерик Вањау | +| 07 | Цене бундеве у Северној Америци 🎃 | [Regression](2-Regression/README.md) | Изградите линеарне и полиномијалне регресионе моделе | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Џен и Дмитри • Ерик Вањау | +| 08 | Цене бундеве у Северној Америци 🎃 | [Regression](2-Regression/README.md) | Изградите логистички регресионни модел | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Џен • Ерик Вањау | +| 09 | Веб апликација 🔌 | [Web App](3-Web-App/README.md) | Изградите веб апликацију за коришћење вашег обученог модела | [Python](3-Web-App/1-Web-App/README.md) | Џен | +| 10 | Увод у класификацију | [Classification](4-Classification/README.md) | Очистите, припремите и визуализујте своје податке; увод у класификацију | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Џен и Кеси • Ерик Вањау | +| 11 | Укусне азијске и индијске кухиње 🍜 | [Classification](4-Classification/README.md) | Увод у класификаторе | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Џен и Кеси • Ерик Вањау | +| 12 | Укусне азијске и индијске кухиње 🍜 | [Classification](4-Classification/README.md) | Више класификатора | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Џен и Кеси • Ерик Вањау | +| 13 | Укусне азијске и индијске кухиње 🍜 | [Classification](4-Classification/README.md) | Изградите препоручивачку веб апликацију користећи свој модел | [Python](4-Classification/4-Applied/README.md) | Џен | +| 14 | Увод у кластеровање | [Clustering](5-Clustering/README.md) | Очистите, припремите и визуализујте своје податке; увод у кластеровање | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Џен • Ерик Вањау | +| 15 | Истраживање музичких укуса у Нигерији 🎧 | [Clustering](5-Clustering/README.md) | Истражите K-Means методу кластеровања | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Џен • Ерик Вањау | +| 16 | Увод у обраду природног језика ☕️ | [Natural language processing](6-NLP/README.md) | Научите основе NLP правећи једноставног бота | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Стивен | +| 17 | Уобичајени задаци у NLP ☕️ | [Natural language processing](6-NLP/README.md) | Продубите своје знање о NLP разумевањем уобичајених задатака потребних за рад са језичким структурама | [Python](6-NLP/2-Tasks/README.md) | Стивен | +| 18 | Превод и анализа сентимента ♥️ | [Natural language processing](6-NLP/README.md) | Превод и анализа сентимента са Џејн Остин | [Python](6-NLP/3-Translation-Sentiment/README.md) | Стивен | +| 19 | Романтични хотели Европе ♥️ | [Natural language processing](6-NLP/README.md) | Анализа сентимента са рецензијама хотела 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Стивен | +| 20 | Романтични хотели Европе ♥️ | [Natural language processing](6-NLP/README.md) | Анализа сентимента са рецензијама хотела 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Стивен | +| 21 | Увод у прогнозирање временских серија | [Time series](7-TimeSeries/README.md) | Увод у прогнозирање временских серија | [Python](7-TimeSeries/1-Introduction/README.md) | Франческа | +| 22 | ⚡️ Потрошња електричне енергије у свету ⚡️ - прогнозирање временских серија са ARIMA | [Time series](7-TimeSeries/README.md) | Прогнозирање временских серија са ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Франческа | +| 23 | ⚡️ Потрошња електричне енергије у свету ⚡️ - прогнозирање временских серија са SVR | [Time series](7-TimeSeries/README.md) | Прогнозирање временских серија са Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Анирбан | +| 24 | Увод у учење појачањем | [Reinforcement learning](8-Reinforcement/README.md) | Увод у учење појачањем са Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Дмитри | +| 25 | Помозите Питеру да избегне вука! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Учење појачањем у Gym | [Python](8-Reinforcement/2-Gym/README.md) | Дмитри | +| Postscript | Сценарији и примене ML у стварном свету | [ML in the Wild](9-Real-World/README.md) | Интересне и откривајуће примене класичног ML у стварном свету | [Lesson](9-Real-World/1-Applications/README.md) | Тим | +| Postscript | Дебаговање модела у ML користећи RAI контролну таблу | [ML in the Wild](9-Real-World/README.md) | Дебаговање модела у машинском учењу користећи компоненте контролне табле Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Рут Јакубу | > [пронађите све додатне ресурсе за овај курс у нашој Microsoft Learn колекцији](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -## Офлајн приступ +## Оффлине приступ -Можете покренути ову документацију офлајн користећи [Docsify](https://docsify.js.org/#/). Форкујте овај репо, [инсталирајте Docsify](https://docsify.js.org/#/quickstart) на свој локални рачунар, а затим у коренском фолдеру овог репоа укуцајте `docsify serve`. Вебсајт ће бити доступан на порту 3000 на вашем localhost-у: `localhost:3000`. +Можете покренути ову документацију оффлине користећи [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). -## 🎒 Остали курсеви + +## 🎒 Остали курсеви Наш тим производи и друге курсеве! Погледајте: -### Azure / Edge / MCP / Агенти -[![AZD за почетнике](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI за почетнике](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP за почетнике](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI агенти за почетнике](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Генеративни AI серијал -[![Генеративни AI за почетнике](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Генеративни AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Генеративни AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Генеративни AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Серия генеративне вештачке интелигенције +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +--- + ### Основно учење -[![ML за почетнике](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Наука о подацима за почетнике](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![Вештачка интелигенција за почетнике](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Сајбер безбедност за почетнике](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Веб развој за почетнике](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT за почетнике](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR развој за почетнике](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Сериија Копилот +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot серија -[![Copilot за парно програмирање са вештачком интелигенцијом](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot за C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot авантура](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Добијање помоћи +## Добијање помоћи -Ако запнете или имате питања о креирању апликација са вештачком интелигенцијом, придружите се другим ученицима и искусним програмерима у дискусијама о MCP. То је подржавајућа заједница где су питања добродошла, а знање се слободно дели. +Ако запнете или имате било каквих питања о изради AI апликација. Придружите се другим ученицима и искусним програмерима у дискусијама о MCP-у. То је подржавајућа заједница где су питања добродошла и знање се слободно дели. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Ако имате повратне информације о производу или наиђете на грешке током креирања, посетите: +Ако имате повратне информације о производу или грешке током израде посетите: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Одрицање од одговорности**: -Овај документ је преведен помоћу услуге за превођење уз помоћ вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. +**Одрицање од одговорности**: +Овај документ је преведен коришћењем AI услуге за превођење [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да превод буде тачан, имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитетним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразума или погрешна тумачења која произилазе из коришћења овог превода. \ No newline at end of file diff --git a/translations/sv/README.md b/translations/sv/README.md index 9f1deabe7..a9f4c19d9 100644 --- a/translations/sv/README.md +++ b/translations/sv/README.md @@ -1,8 +1,8 @@ -[Arabiska](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgariska](../bg/README.md) | [Burmesiska (Myanmar)](../my/README.md) | [Kinesiska (Förenklad)](../zh/README.md) | [Kinesiska (Traditionell, Hongkong)](../hk/README.md) | [Kinesiska (Traditionell, Macau)](../mo/README.md) | [Kinesiska (Traditionell, Taiwan)](../tw/README.md) | [Kroatiska](../hr/README.md) | [Tjeckiska](../cs/README.md) | [Danska](../da/README.md) | [Holländska](../nl/README.md) | [Estniska](../et/README.md) | [Finska](../fi/README.md) | [Franska](../fr/README.md) | [Tyska](../de/README.md) | [Grekiska](../el/README.md) | [Hebreiska](../he/README.md) | [Hindi](../hi/README.md) | [Ungerska](../hu/README.md) | [Indonesiska](../id/README.md) | [Italienska](../it/README.md) | [Japanska](../ja/README.md) | [Koreanska](../ko/README.md) | [Litauiska](../lt/README.md) | [Malajiska](../ms/README.md) | [Marathi](../mr/README.md) | [Nepalesiska](../ne/README.md) | [Nigeriansk Pidgin](../pcm/README.md) | [Norska](../no/README.md) | [Persiska (Farsi)](../fa/README.md) | [Polska](../pl/README.md) | [Portugisiska (Brasilien)](../br/README.md) | [Portugisiska (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Rumänska](../ro/README.md) | [Ryska](../ru/README.md) | [Serbiska (Kyrilliska)](../sr/README.md) | [Slovakiska](../sk/README.md) | [Slovenska](../sl/README.md) | [Spanska](../es/README.md) | [Swahili](../sw/README.md) | [Svenska](./README.md) | [Tagalog (Filippinska)](../tl/README.md) | [Tamil](../ta/README.md) | [Thailändska](../th/README.md) | [Turkiska](../tr/README.md) | [Ukrainska](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamesiska](../vi/README.md) +[Arabiska](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgariska](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Kinesiska (Förenklad)](../zh/README.md) | [Kinesiska (Traditionell, Hong Kong)](../hk/README.md) | [Kinesiska (Traditionell, Macau)](../mo/README.md) | [Kinesiska (Traditionell, Taiwan)](../tw/README.md) | [Kroatiska](../hr/README.md) | [Tjeckiska](../cs/README.md) | [Danska](../da/README.md) | [Holländska](../nl/README.md) | [Estniska](../et/README.md) | [Finska](../fi/README.md) | [Franska](../fr/README.md) | [Tyska](../de/README.md) | [Grekiska](../el/README.md) | [Hebreiska](../he/README.md) | [Hindi](../hi/README.md) | [Ungerska](../hu/README.md) | [Indonesiska](../id/README.md) | [Italienska](../it/README.md) | [Japanska](../ja/README.md) | [Kannada](../kn/README.md) | [Koreanska](../ko/README.md) | [Litauiska](../lt/README.md) | [Malajiska](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigeriansk Pidgin](../pcm/README.md) | [Norska](../no/README.md) | [Persiska (Farsi)](../fa/README.md) | [Polska](../pl/README.md) | [Portugisiska (Brasilien)](../br/README.md) | [Portugisiska (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Rumänska](../ro/README.md) | [Ryska](../ru/README.md) | [Serbiska (Kyrilliska)](../sr/README.md) | [Slovakiska](../sk/README.md) | [Slovenska](../sl/README.md) | [Spanska](../es/README.md) | [Swahili](../sw/README.md) | [Svenska](./README.md) | [Tagalog (Filippinska)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thailändska](../th/README.md) | [Turkiska](../tr/README.md) | [Ukrainska](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamesiska](../vi/README.md) -#### Gå med i vår community +#### Gå med i vår gemenskap [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Vi har en pågående Discord-serie om att lära sig med AI, lär dig mer och gå med oss på [Learn with AI Series](https://aka.ms/learnwithai/discord) från 18 - 30 september, 2025. Du får tips och tricks om hur du använder GitHub Copilot för Data Science. +Vi har en pågående Discord-serie "Learn with AI", lär dig mer och gå med oss på [Learn with AI Series](https://aka.ms/learnwithai/discord) från 18 - 30 september 2025. Du får tips och tricks för att använda GitHub Copilot för Data Science. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.sv.png) # Maskininlärning för nybörjare - En kursplan -> 🌍 Res runt i världen när vi utforskar maskininlärning genom världens kulturer 🌍 +> 🌍 Res runt i världen medan vi utforskar maskininlärning genom världens kulturer 🌍 -Cloud Advocates på Microsoft är glada att erbjuda en 12-veckors, 26-lektions kursplan om **maskininlärning**. I denna kursplan kommer du att lära dig om det som ibland kallas **klassisk maskininlärning**, främst med hjälp av Scikit-learn som bibliotek och undvika djupinlärning, vilket täcks i vår [AI för nybörjare-kursplan](https://aka.ms/ai4beginners). Kombinera dessa lektioner med vår ['Data Science för nybörjare-kursplan'](https://aka.ms/ds4beginners), också! +Cloud Advocates på Microsoft är glada att erbjuda en 12-veckors, 26-lektioners kursplan helt om **Maskininlärning**. I denna kursplan lär du dig om det som ibland kallas **klassisk maskininlärning**, med huvudsakligen Scikit-learn som bibliotek och undviker djupinlärning, som täcks i vår [AI för nybörjare-kursplan](https://aka.ms/ai4beginners). Kombinera dessa lektioner med vår ['Data Science för nybörjare'-kursplan](https://aka.ms/ds4beginners) också! -Res med oss runt i världen när vi tillämpar dessa klassiska tekniker på data från många delar av världen. Varje lektion innehåller quiz före och efter lektionen, skriftliga instruktioner för att slutföra lektionen, en lösning, en uppgift och mer. Vår projektbaserade pedagogik låter dig lära dig genom att bygga, ett beprövat sätt för nya färdigheter att fastna. +Res med oss runt världen när vi tillämpar dessa klassiska tekniker på data från många delar av världen. Varje lektion inkluderar för- och efter-lektionsquiz, skriftliga instruktioner för att slutföra lektionen, en lösning, en uppgift och mer. Vår projektbaserade pedagogik låter dig lära dig medan du bygger, ett beprövat sätt för nya färdigheter att "fastna". **✍️ Stort tack till våra författare** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu och Amy Boyd -**🎨 Tack också till våra illustratörer** Tomomi Imura, Dasani Madipalli och Jen Looper +**🎨 Tack även till våra illustratörer** Tomomi Imura, Dasani Madipalli och Jen Looper -**🙏 Speciellt tack 🙏 till våra Microsoft Student Ambassador-författare, granskare och innehållsbidragare**, särskilt Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila och Snigdha Agarwal +**🙏 Särskilt tack 🙏 till våra Microsoft Student Ambassador-författare, granskare och innehållsbidragsgivare**, särskilt Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila och Snigdha Agarwal -**🤩 Extra tacksamhet till Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi och Vidushi Gupta för våra R-lektioner!** +**🤩 Extra tack till Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi och Vidushi Gupta för våra R-lektioner!** -# Kom igång +# Komma igång Följ dessa steg: -1. **Forka repot**: Klicka på "Fork"-knappen längst upp till höger på denna sida. +1. **Fork:a repot**: Klicka på "Fork" knappen uppe till höger på denna sida. 2. **Klona repot**: `git clone https://github.com/microsoft/ML-For-Beginners.git` > [hitta alla ytterligare resurser för denna kurs i vår Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Behöver du hjälp?** Kolla vår [Felsökningsguide](TROUBLESHOOTING.md) för lösningar på vanliga problem med installation, inställning och att köra lektioner. +> 🔧 **Behöver du hjälp?** Kolla vår [Felsökningsguide](TROUBLESHOOTING.md) för lösningar på vanliga problem med installation, uppsättning och att köra lektioner. -**[Studenter](https://aka.ms/student-page)**, för att använda denna kursplan, forka hela repot till ditt eget GitHub-konto och slutför övningarna själv eller med en grupp: +**[Studenter](https://aka.ms/student-page)**, för att använda denna kursplan, fork:a hela repot till ditt eget GitHub-konto och gör övningarna på egen hand eller i grupp: -- Börja med ett quiz före lektionen. -- Läs lektionen och slutför aktiviteterna, pausa och reflektera vid varje kunskapskontroll. -- Försök att skapa projekten genom att förstå lektionerna snarare än att köra lösningskoden; dock finns den koden tillgänglig i `/solution`-mapparna i varje projektorienterad lektion. -- Ta quizet efter lektionen. +- Börja med ett för-lecture quiz. +- Läs lektionen och gör aktiviteterna, pausa och reflektera vid varje kunskapskontroll. +- Försök skapa projekten genom att förstå lektionerna snarare än att bara köra lösningskoden; dock finns den koden tillgänglig i `/solution` mapparna i varje projektorienterad lektion. +- Gör efter-lecture quiz. - Slutför utmaningen. - Slutför uppgiften. -- Efter att ha slutfört en lektionsgrupp, besök [Diskussionsforumet](https://github.com/microsoft/ML-For-Beginners/discussions) och "lär dig högt" genom att fylla i den relevanta PAT-mallen. En 'PAT' är ett Progress Assessment Tool som är en mall du fyller i för att främja ditt lärande. Du kan också reagera på andra PATs så att vi kan lära oss tillsammans. +- Efter att ha slutfört en lektionsgrupp, besök [Diskussionsforumet](https://github.com/microsoft/ML-For-Beginners/discussions) och "lär ut högt" genom att fylla i lämplig PAT-rubrik. En 'PAT' är ett Progress Assessment Tool som är en rubrik du fyller i för att främja ditt lärande. Du kan också reagera på andra PAT:er så att vi kan lära oss tillsammans. > För vidare studier rekommenderar vi att följa dessa [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) moduler och lärvägar. @@ -78,9 +78,9 @@ Följ dessa steg: ## Videogenomgångar -Vissa av lektionerna finns tillgängliga som korta videor. Du hittar alla dessa in-line i lektionerna, eller på [ML för nybörjare spellista på Microsoft Developer YouTube-kanal](https://aka.ms/ml-beginners-videos) genom att klicka på bilden nedan. +Några av lektionerna finns som korta videor. Du kan hitta alla dessa inbäddade i lektionerna, eller på [ML for Beginners spellistan på Microsoft Developer YouTube-kanalen](https://aka.ms/ml-beginners-videos) genom att klicka på bilden nedan. -[![ML för nybörjare banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.sv.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.sv.png)](https://aka.ms/ml-beginners-videos) --- @@ -90,127 +90,134 @@ Vissa av lektionerna finns tillgängliga som korta videor. Du hittar alla dessa **Gif av** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Klicka på bilden ovan för en video om projektet och personerna som skapade det! +> 🎥 Klicka på bilden ovan för en video om projektet och människorna som skapade det! --- ## Pedagogik -Vi har valt två pedagogiska principer när vi byggde denna kursplan: att säkerställa att den är praktisk **projektbaserad** och att den innehåller **frekventa quiz**. Dessutom har denna kursplan ett gemensamt **tema** för att ge den sammanhållning. +Vi har valt två pedagogiska principer när vi byggde denna kursplan: att säkerställa att den är praktiskt **projektbaserad** och att den inkluderar **freventa quiz**. Dessutom har denna kursplan ett gemensamt **tema** för att ge den sammanhang. -Genom att säkerställa att innehållet är kopplat till projekt görs processen mer engagerande för studenter och koncepten blir lättare att komma ihåg. Dessutom sätter ett quiz med låg insats före en klass studentens intention mot att lära sig ett ämne, medan ett andra quiz efter klassen säkerställer ytterligare retention. Denna kursplan är designad för att vara flexibel och rolig och kan tas i sin helhet eller delvis. Projekten börjar små och blir alltmer komplexa i slutet av den 12-veckors cykeln. Kursplanen inkluderar också ett efterord om verkliga tillämpningar av ML, som kan användas som extra kredit eller som grund för diskussion. +Genom att säkerställa att innehållet är kopplat till projekt blir processen mer engagerande för studenter och konceptens retention förbättras. Dessutom sätter ett låginsats-quiz före en lektion studentens intention mot att lära sig ett ämne, medan ett andra quiz efter lektionen säkerställer ytterligare retention. Denna kursplan är designad för att vara flexibel och rolig och kan tas i sin helhet eller delvis. Projekten börjar små och blir alltmer komplexa mot slutet av 12-veckorscykeln. Denna kursplan inkluderar också ett efterord om verkliga tillämpningar av ML, som kan användas som extrakredit eller som grund för diskussion. -> Hitta vår [Uppförandekod](CODE_OF_CONDUCT.md), [Bidragande](CONTRIBUTING.md), [Översättning](TRANSLATIONS.md), och [Felsökning](TROUBLESHOOTING.md) riktlinjer. Vi välkomnar din konstruktiva feedback! +> Hitta våra [Uppförandekod](CODE_OF_CONDUCT.md), [Bidragsregler](CONTRIBUTING.md), [Översättningsriktlinjer](TRANSLATIONS.md) och [Felsökningsriktlinjer](TROUBLESHOOTING.md). Vi välkomnar din konstruktiva feedback! -## Varje lektion innehåller +## Varje lektion inkluderar -- valfri sketchnote +- valfri skissanteckning - valfri kompletterande video -- videogenomgång (vissa lektioner) -- [quiz före lektionen](https://ff-quizzes.netlify.app/en/ml/) +- videogenomgång (endast vissa lektioner) +- [för-lecture uppvärmningsquiz](https://ff-quizzes.netlify.app/en/ml/) - skriftlig lektion -- för projektbaserade lektioner, steg-för-steg guider om hur man bygger projektet +- för projektbaserade lektioner, steg-för-steg guider för att bygga projektet - kunskapskontroller - en utmaning - kompletterande läsning - uppgift -- [quiz efter lektionen](https://ff-quizzes.netlify.app/en/ml/) +- [efter-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -> **En notering om språk**: Dessa lektioner är främst skrivna i Python, men många är också tillgängliga i R. För att slutföra en R-lektion, gå till `/solution`-mappen och leta efter R-lektioner. De inkluderar en .rmd-filändelse som representerar en **R Markdown**-fil som enkelt kan definieras som en inbäddning av `kodblock` (av R eller andra språk) och en `YAML-header` (som styr hur man formaterar utdata som PDF) i ett `Markdown-dokument`. Som sådan fungerar det som en exemplifierande författarram för dataanalys eftersom det låter dig kombinera din kod, dess utdata och dina tankar genom att låta dig skriva ner dem i Markdown. Dessutom kan R Markdown-dokument renderas till utdataformat som PDF, HTML eller Word. +> **En notis om språk**: Dessa lektioner är huvudsakligen skrivna i Python, men många finns också tillgängliga i R. För att slutföra en R-lektion, gå till `/solution` mappen och leta efter R-lektioner. De inkluderar en .rmd-filändelse som representerar en **R Markdown**-fil som enkelt kan definieras som en inbäddning av `kodblock` (av R eller andra språk) och en `YAML-header` (som styr hur utdata formateras, t.ex. PDF) i ett `Markdown-dokument`. Som sådan fungerar det som en exemplifierande författarram för data science eftersom det låter dig kombinera din kod, dess utdata och dina tankar genom att skriva ner dem i Markdown. Dessutom kan R Markdown-dokument renderas till utdataformat som PDF, HTML eller Word. -> **En notering om quiz**: Alla quiz finns i [Quiz App-mappen](../../quiz-app), totalt 52 quiz med tre frågor vardera. De är länkade från lektionerna men quiz-appen kan köras lokalt; följ instruktionerna i `quiz-app`-mappen för att köra lokalt eller distribuera till Azure. +> **En notis om quiz**: Alla quiz finns i [Quiz App-mappen](../../quiz-app), totalt 52 quiz med tre frågor vardera. De länkas från lektionerna men quiz-appen kan köras lokalt; följ instruktionerna i `quiz-app` mappen för att köra lokalt eller distribuera till Azure. -| Lektionsnummer | Ämne | Lektionsgruppering | Lärandemål | Länkad lektion | Författare | +| Lektion Nummer | Ämne | Lektion Grupp | Lärandemål | Länkad Lektion | Författare | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Introduktion till maskininlärning | [Introduktion](1-Introduction/README.md) | Lär dig de grundläggande koncepten bakom maskininlärning | [Lektion](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Maskininlärningens historia | [Introduktion](1-Introduction/README.md) | Lär dig historien bakom detta område | [Lektion](1-Introduction/2-history-of-ML/README.md) | Jen och Amy | -| 03 | Rättvisa och maskininlärning | [Introduktion](1-Introduction/README.md) | Vilka viktiga filosofiska frågor kring rättvisa bör studenter överväga när de bygger och tillämpar ML-modeller? | [Lektion](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Tekniker för maskininlärning | [Introduktion](1-Introduction/README.md) | Vilka tekniker använder ML-forskare för att bygga ML-modeller? | [Lektion](1-Introduction/4-techniques-of-ML/README.md) | Chris och Jen | -| 05 | Introduktion till regression | [Regression](2-Regression/README.md) | Kom igång med Python och Scikit-learn för regressionsmodeller | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Nordamerikanska pumpapriser 🎃 | [Regression](2-Regression/README.md) | Visualisera och rengör data som förberedelse för ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Nordamerikanska pumpapriser 🎃 | [Regression](2-Regression/README.md) | Bygg linjära och polynomiska regressionsmodeller | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen och Dmitry • Eric Wanjau | -| 08 | Nordamerikanska pumpapriser 🎃 | [Regression](2-Regression/README.md) | Bygg en logistisk regressionsmodell | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | En webbapp 🔌 | [Webbapp](3-Web-App/README.md) | Bygg en webbapp för att använda din tränade modell | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Introduktion till klassificering | [Klassificering](4-Classification/README.md) | Rengör, förbered och visualisera din data; introduktion till klassificering | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen och Cassie • Eric Wanjau | -| 11 | Utsökta asiatiska och indiska rätter 🍜 | [Klassificering](4-Classification/README.md) | Introduktion till klassificerare | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen och Cassie • Eric Wanjau | -| 12 | Utsökta asiatiska och indiska rätter 🍜 | [Klassificering](4-Classification/README.md) | Fler klassificerare | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen och Cassie • Eric Wanjau | -| 13 | Utsökta asiatiska och indiska rätter 🍜 | [Klassificering](4-Classification/README.md) | Bygg en rekommendationswebbapp med din modell | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Introduktion till klustring | [Klustring](5-Clustering/README.md) | Rengör, förbered och visualisera din data; introduktion till klustring | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Utforska nigerianska musiksmaker 🎧 | [Klustring](5-Clustering/README.md) | Utforska K-Means klustringsmetod | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Introduktion till naturlig språkbehandling ☕️ | [Naturlig språkbehandling](6-NLP/README.md) | Lär dig grunderna om NLP genom att bygga en enkel bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Vanliga NLP-uppgifter ☕️ | [Naturlig språkbehandling](6-NLP/README.md) | Fördjupa dina kunskaper om NLP genom att förstå vanliga uppgifter som krävs vid hantering av språkstrukturer | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Översättning och sentimentanalys ♥️ | [Naturlig språkbehandling](6-NLP/README.md) | Översättning och sentimentanalys med Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Romantiska hotell i Europa ♥️ | [Naturlig språkbehandling](6-NLP/README.md) | Sentimentanalys med hotellrecensioner 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Romantiska hotell i Europa ♥️ | [Naturlig språkbehandling](6-NLP/README.md) | Sentimentanalys med hotellrecensioner 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Introduktion till tidsserieprognoser | [Tidsserier](7-TimeSeries/README.md) | Introduktion till tidsserieprognoser | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Världens energiförbrukning ⚡️ - tidsserieprognoser med ARIMA | [Tidsserier](7-TimeSeries/README.md) | Tidsserieprognoser med ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Världens energiförbrukning ⚡️ - tidsserieprognoser med SVR | [Tidsserier](7-TimeSeries/README.md) | Tidsserieprognoser med Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Introduktion till förstärkningsinlärning | [Förstärkningsinlärning](8-Reinforcement/README.md) | Introduktion till förstärkningsinlärning med Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Hjälp Peter att undvika vargen! 🐺 | [Förstärkningsinlärning](8-Reinforcement/README.md) | Förstärkningsinlärning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Verkliga ML-scenarier och tillämpningar | [ML i det vilda](9-Real-World/README.md) | Intressanta och avslöjande verkliga tillämpningar av klassisk ML | [Lektion](9-Real-World/1-Applications/README.md) | Team | -| Postscript | Modellfelsökning i ML med RAI-dashboard | [ML i det vilda](9-Real-World/README.md) | Modellfelsökning i maskininlärning med komponenter från Responsible AI-dashboard | [Lektion](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +| 01 | Introduktion till maskininlärning | [Introduction](1-Introduction/README.md) | Lär dig de grundläggande begreppen bakom maskininlärning | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Maskininlärningens historia | [Introduction](1-Introduction/README.md) | Lär dig historien bakom detta område | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Rättvisa och maskininlärning | [Introduction](1-Introduction/README.md) | Vilka är de viktiga filosofiska frågorna kring rättvisa som studenter bör överväga när de bygger och använder ML-modeller? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Tekniker för maskininlärning | [Introduction](1-Introduction/README.md) | Vilka tekniker använder ML-forskare för att bygga ML-modeller? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Introduktion till regression | [Regression](2-Regression/README.md) | Kom igång med Python och Scikit-learn för regressionsmodeller | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Nordamerikanska pumpapriser 🎃 | [Regression](2-Regression/README.md) | Visualisera och rengör data som förberedelse för ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Nordamerikanska pumpapriser 🎃 | [Regression](2-Regression/README.md) | Bygg linjära och polynomiska regressionsmodeller | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Nordamerikanska pumpapriser 🎃 | [Regression](2-Regression/README.md) | Bygg en logistisk regressionsmodell | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | En webbapp 🔌 | [Web App](3-Web-App/README.md) | Bygg en webbapp för att använda din tränade modell | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Introduktion till klassificering | [Classification](4-Classification/README.md) | Rengör, förbered och visualisera dina data; introduktion till klassificering | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Läckra asiatiska och indiska kök 🍜 | [Classification](4-Classification/README.md) | Introduktion till klassificerare | [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 | Läckra asiatiska och indiska kök 🍜 | [Classification](4-Classification/README.md) | Fler klassificerare | [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 | Läckra asiatiska och indiska kök 🍜 | [Classification](4-Classification/README.md) | Bygg en rekommendationswebbapp med din modell | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Introduktion till klustring | [Clustering](5-Clustering/README.md) | Rengör, förbered och visualisera dina data; introduktion till klustring | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Utforska nigerianska musiksmaker 🎧 | [Clustering](5-Clustering/README.md) | Utforska K-Means klustringsmetoden | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Introduktion till naturlig språkbehandling ☕️ | [Natural language processing](6-NLP/README.md) | Lär dig grunderna om NLP genom att bygga en enkel bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Vanliga NLP-uppgifter ☕️ | [Natural language processing](6-NLP/README.md) | Fördjupa dina NLP-kunskaper genom att förstå vanliga uppgifter som krävs vid hantering av språkliga strukturer | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Översättning och sentimentanalys ♥️ | [Natural language processing](6-NLP/README.md) | Översättning och sentimentanalys med Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Romantiska hotell i Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentanalys med hotellrecensioner 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Romantiska hotell i Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentanalys med hotellrecensioner 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Introduktion till tidsserieprognoser | [Time series](7-TimeSeries/README.md) | Introduktion till tidsserieprognoser | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Världens elförbrukning ⚡️ - tidsserieprognoser med ARIMA | [Time series](7-TimeSeries/README.md) | Tidsserieprognoser med ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Världens elförbrukning ⚡️ - tidsserieprognoser med SVR | [Time series](7-TimeSeries/README.md) | Tidsserieprognoser med Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Introduktion till förstärkningsinlärning | [Reinforcement learning](8-Reinforcement/README.md) | Introduktion till förstärkningsinlärning med Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Hjälp Peter att undvika vargen! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Förstärkningsinlärning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Verkliga ML-scenarier och tillämpningar | [ML in the Wild](9-Real-World/README.md) | Intressanta och avslöjande verkliga tillämpningar av klassisk ML | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Modellfelsökning i ML med RAI-dashboard | [ML in the Wild](9-Real-World/README.md) | Modellfelsökning i maskininlärning med Responsible AI-dashboardkomponenter | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [hitta alla ytterligare resurser för denna kurs i vår Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Offlineåtkomst -Du kan köra denna dokumentation offline med hjälp av [Docsify](https://docsify.js.org/#/). Forka detta repo, [installera Docsify](https://docsify.js.org/#/quickstart) på din lokala maskin, och skriv sedan `docsify serve` i root-mappen av detta repo. Webbplatsen kommer att köras på port 3000 på din localhost: `localhost:3000`. +Du kan köra denna dokumentation offline genom att använda [Docsify](https://docsify.js.org/#/). Forka detta repo, [installera Docsify](https://docsify.js.org/#/quickstart) på din lokala dator, och skriv sedan i rotmappen för detta repo `docsify serve`. Webbplatsen kommer att serveras på port 3000 på din localhost: `localhost:3000`. -## PDF:er +## PDF-filer Hitta en pdf av kursplanen med länkar [här](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Andra kurser +## 🎒 Andra kurser Vårt team producerar andra kurser! Kolla in: -### Azure / Edge / MCP / Agents -[![AZD för nybörjare](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI för nybörjare](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP för nybörjare](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI-agenter för nybörjare](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Generativ AI-serie -[![Generativ AI för nybörjare](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generativ AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generativ AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generativ AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Grundläggande lärande -[![ML för Nybörjare](https://img.shields.io/badge/ML%20för%20Nybörjare-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science för Nybörjare](https://img.shields.io/badge/Data%20Science%20för%20Nybörjare-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI för Nybörjare](https://img.shields.io/badge/AI%20för%20Nybörjare-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cybersäkerhet för Nybörjare](https://img.shields.io/badge/Cybersäkerhet%20för%20Nybörjare-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Webbutveckling för Nybörjare](https://img.shields.io/badge/Webbutveckling%20för%20Nybörjare-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT för Nybörjare](https://img.shields.io/badge/IoT%20för%20Nybörjare-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR-utveckling för Nybörjare](https://img.shields.io/badge/XR%20utveckling%20för%20Nybörjare-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +### Generativ AI-serie +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- + +### Kärninlärning +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) -### Copilot-serien -[![Copilot för AI-parprogrammering](https://img.shields.io/badge/Copilot%20för%20AI%20parprogrammering-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot för C#/.NET](https://img.shields.io/badge/Copilot%20för%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Äventyr](https://img.shields.io/badge/Copilot%20Äventyr-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +--- + +### Copilot-serien +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) -## Få hjälp +## Få hjälp -Om du fastnar eller har frågor om att bygga AI-appar. Gå med andra elever och erfarna utvecklare i diskussioner om MCP. Det är en stödjande gemenskap där frågor är välkomna och kunskap delas fritt. +Om du fastnar eller har några frågor om att bygga AI-appar. Gå med i diskussioner med andra elever och erfarna utvecklare om MCP. Det är en stödjande gemenskap där frågor är välkomna och kunskap delas fritt. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Om du har produktfeedback eller stöter på fel under utvecklingen, besök: +Om du har produktfeedback eller stöter på fel under utvecklingen, besök: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, bör det noteras att automatiserade översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning. +**Ansvarsfriskrivning**: +Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file diff --git a/translations/sw/README.md b/translations/sw/README.md index c9edf5312..df5c5a4b8 100644 --- a/translations/sw/README.md +++ b/translations/sw/README.md @@ -1,91 +1,92 @@ -[![Leseni ya GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Wachangiaji wa GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Masuala ya GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Maombi ya kuvuta ya GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Karibu](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Watazamaji wa GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Matawi ya GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Nyota za GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Msaada wa Lugha Nyingi -#### Inasaidiwa kupitia Hatua ya GitHub (Imejiendesha & Daima Imeboreshwa) +#### Inasaidiwa kupitia Kitendo cha GitHub (Kiotomatiki & Kila Wakati Kikiwa Kisasa) -[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) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/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](./README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) +[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](./README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) #### Jiunge na Jamii Yetu [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Tuna mfululizo wa kujifunza na AI unaoendelea kwenye Discord, jifunze zaidi na jiunge nasi katika [Learn with AI Series](https://aka.ms/learnwithai/discord) kuanzia tarehe 18 - 30 Septemba, 2025. Utapata vidokezo na mbinu za kutumia GitHub Copilot kwa Sayansi ya Takwimu. +Tuna mfululizo wa kujifunza kwenye Discord kuhusu AI unaoendelea, jifunze zaidi na ujiunge nasi kwenye [Mfululizo wa Kujifunza na AI](https://aka.ms/learnwithai/discord) kuanzia 18 - 30 Septemba, 2025. Utapata vidokezo na mbinu za kutumia GitHub Copilot kwa Sayansi ya Data. -![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.sw.png) +![Mfululizo wa Kujifunza na AI](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.sw.png) -# Kujifunza Mashine kwa Kompyuta - Mtaala +# Kujifunza Mashine kwa Waanzilishi - Mtaala -> 🌍 Safiri kote ulimwenguni tunapochunguza Kujifunza Mashine kupitia tamaduni za dunia 🌍 +> 🌍 Safiri kote duniani tunapochunguza Kujifunza Mashine kwa njia ya tamaduni za dunia 🌍 -Wakili wa Wingu wa Microsoft wanayo furaha kutoa mtaala wa wiki 12, masomo 26 kuhusu **Kujifunza Mashine**. Katika mtaala huu, utajifunza kuhusu kile kinachoitwa mara nyingine **kujifunza mashine ya kawaida**, ukitumia hasa maktaba ya Scikit-learn na kuepuka kujifunza kwa kina, ambako kunashughulikiwa katika [mtaala wa AI kwa Kompyuta](https://aka.ms/ai4beginners). Unganisha masomo haya na mtaala wetu wa ['Sayansi ya Takwimu kwa Kompyuta'](https://aka.ms/ds4beginners), pia! +Wahamasishaji wa Cloud katika Microsoft wanafurahia kutoa mtaala wa wiki 12, masomo 26 yote kuhusu **Kujifunza Mashine**. Katika mtaala huu, utajifunza kuhusu kile kinachoitwa mara nyingine **kujifunza mashine cha kawaida**, ukitumia hasa maktaba ya Scikit-learn na kuepuka kujifunza kwa kina, ambacho kinashughulikiwa katika [mtaala wetu wa AI kwa Waanzilishi](https://aka.ms/ai4beginners). Pia weka masomo haya pamoja na mtaala wetu wa ['Sayansi ya Data kwa Waanzilishi'](https://aka.ms/ds4beginners). -Safiri nasi kote ulimwenguni tunapotumia mbinu hizi za kawaida kwa data kutoka maeneo mengi ya dunia. Kila somo linajumuisha maswali ya kabla na baada ya somo, maelekezo ya maandishi ya kukamilisha somo, suluhisho, kazi, na zaidi. Mbinu yetu ya kujifunza kwa miradi inakuwezesha kujifunza huku ukijenga, njia iliyothibitishwa ya kufanya ujuzi mpya 'kubaki'. +Safiri nasi kote duniani tunapotumia mbinu hizi za kawaida kwa data kutoka sehemu nyingi za dunia. Kila somo linajumuisha maswali ya kabla na baada ya somo, maelekezo yaliyoandikwa ya kukamilisha somo, suluhisho, kazi, na zaidi. Mbinu yetu ya kujifunza kwa miradi inakuwezesha kujifunza huku ukijenga, njia iliyothibitishwa ya kufanya ujuzi mpya 'kubaki'. **✍️ Shukrani za dhati kwa waandishi wetu** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu na Amy Boyd -**🎨 Shukrani pia kwa wachoraji wetu** Tomomi Imura, Dasani Madipalli, na Jen Looper +**🎨 Pia shukrani kwa wachoraji wetu** Tomomi Imura, Dasani Madipalli, na Jen Looper **🙏 Shukrani maalum 🙏 kwa waandishi, wakaguzi, na wachangiaji wa maudhui wa Microsoft Student Ambassador**, hasa Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, na Snigdha Agarwal **🤩 Shukrani za ziada kwa Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, na Vidushi Gupta kwa masomo yetu ya R!** -# Kuanza +# Kuanzia Fuata hatua hizi: -1. **Fork Hifadhi**: Bonyeza kitufe cha "Fork" kwenye kona ya juu-kulia ya ukurasa huu. -2. **Clone Hifadhi**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +1. **Fanya Fork ya Hifadhi**: Bonyeza kitufe cha "Fork" kilicho kona ya juu kulia ya ukurasa huu. +2. **Nakili Hifadhi**: `git clone https://github.com/microsoft/ML-For-Beginners.git` > [pata rasilimali zote za ziada kwa kozi hii katika mkusanyiko wetu wa Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Unahitaji msaada?** Angalia [Mwongozo wa Utatuzi wa Matatizo](TROUBLESHOOTING.md) kwa suluhisho za masuala ya kawaida ya usakinishaji, usanidi, na kuendesha masomo. +> 🔧 **Unahitaji msaada?** Angalia [Mwongozo wa Kutatua Matatizo](TROUBLESHOOTING.md) kwa suluhisho za matatizo ya kawaida ya usakinishaji, usanidi, na kuendesha masomo. -**[Wanafunzi](https://aka.ms/student-page)**, kutumia mtaala huu, fork hifadhi nzima kwenye akaunti yako ya GitHub na ukamilishe mazoezi peke yako au na kikundi: -- Anza na jaribio la kabla ya somo. -- Soma somo na ukamilishe shughuli, ukisimama na kutafakari kila ukaguzi wa maarifa. -- Jaribu kuunda miradi kwa kuelewa masomo badala ya kuendesha msimbo wa suluhisho; hata hivyo msimbo huo unapatikana katika folda za `/solution` katika kila somo linalohusiana na mradi. -- Chukua jaribio la baada ya somo. +**[Wanafunzi](https://aka.ms/student-page)**, ili kutumia mtaala huu, fanya fork ya hifadhi nzima kwenye akaunti yako ya GitHub na kamilisha mazoezi peke yako au na kikundi: + +- Anza na mtihani wa kabla ya somo. +- Soma somo na kamilisha shughuli, simama na fikiria kila ukaguzi wa maarifa. +- Jaribu kuunda miradi kwa kuelewa masomo badala ya kuendesha msimbo wa suluhisho; hata hivyo msimbo huo upo katika folda za `/solution` katika kila somo linalolenga mradi. +- Fanya mtihani wa baada ya somo. - Kamilisha changamoto. - Kamilisha kazi. -- Baada ya kukamilisha kikundi cha masomo, tembelea [Bodi ya Majadiliano](https://github.com/microsoft/ML-For-Beginners/discussions) na "jifunze kwa sauti" kwa kujaza rubriki ya PAT inayofaa. 'PAT' ni Chombo cha Tathmini ya Maendeleo ambacho ni rubriki unayojaza ili kuendeleza kujifunza kwako. Unaweza pia kujibu PAT nyingine ili tujifunze pamoja. +- Baada ya kumaliza kundi la masomo, tembelea [Bodi ya Majadiliano](https://github.com/microsoft/ML-For-Beginners/discussions) na "jifunze kwa sauti" kwa kujaza rubriki ya PAT inayofaa. 'PAT' ni Chombo cha Tathmini ya Maendeleo ambacho ni rubriki unayojaza ili kuendeleza kujifunza kwako. Unaweza pia kutoa maoni kwa PAT nyingine ili tujifunze pamoja. > Kwa masomo zaidi, tunapendekeza kufuata moduli na njia za kujifunza za [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). -**Walimu**, tumetoa [mapendekezo kadhaa](for-teachers.md) kuhusu jinsi ya kutumia mtaala huu. +**Walimu**, tumetoa [mapendekezo kadhaa](for-teachers.md) juu ya jinsi ya kutumia mtaala huu. --- -## Maelezo ya Video +## Video za maelekezo -Baadhi ya masomo yanapatikana kama video fupi. Unaweza kupata zote hizi ndani ya masomo, au kwenye [orodha ya ML kwa Kompyuta kwenye kituo cha YouTube cha Microsoft Developer](https://aka.ms/ml-beginners-videos) kwa kubonyeza picha hapa chini. +Baadhi ya masomo yanapatikana kama video fupi. Unaweza kuyapata yote haya ndani ya masomo, au kwenye [orodha ya video za ML kwa Waanzilishi kwenye kituo cha Microsoft Developer YouTube](https://aka.ms/ml-beginners-videos) kwa kubonyeza picha hapa chini. -[![Bango la ML kwa Kompyuta](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.sw.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.sw.png)](https://aka.ms/ml-beginners-videos) --- ## Kutana na Timu -[![Video ya Promo](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) **Gif na** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) @@ -95,120 +96,128 @@ Baadhi ya masomo yanapatikana kama video fupi. Unaweza kupata zote hizi ndani ya ## Mbinu ya Kufundisha -Tumetumia kanuni mbili za kufundisha wakati wa kuunda mtaala huu: kuhakikisha kuwa ni wa vitendo **unaotegemea miradi** na kwamba unajumuisha **maswali ya mara kwa mara**. Aidha, mtaala huu una **mada ya kawaida** ili kuupa mshikamano. +Tumechagua kanuni mbili za kufundisha wakati wa kujenga mtaala huu: kuhakikisha kuwa ni **mradi-msingi** na kwamba inajumuisha **maswali ya mara kwa mara**. Zaidi ya hayo, mtaala huu una **kauli mbiu** ya pamoja ili kuupa mshikamano. -Kwa kuhakikisha kuwa maudhui yanalingana na miradi, mchakato unakuwa wa kuvutia zaidi kwa wanafunzi na uhifadhi wa dhana utaongezeka. Aidha, jaribio la hatari ndogo kabla ya darasa linaweka nia ya mwanafunzi kuelekea kujifunza mada, wakati jaribio la pili baada ya darasa linahakikisha uhifadhi zaidi. Mtaala huu uliundwa kuwa rahisi na wa kufurahisha na unaweza kuchukuliwa kwa ukamilifu au kwa sehemu. Miradi huanza ndogo na kuwa ngumu zaidi mwishoni mwa mzunguko wa wiki 12. Mtaala huu pia unajumuisha maelezo ya mwisho kuhusu matumizi halisi ya ML, ambayo yanaweza kutumika kama alama za ziada au kama msingi wa majadiliano. +Kwa kuhakikisha maudhui yanaendana na miradi, mchakato unakuwa wa kuvutia zaidi kwa wanafunzi na kumbukumbu ya dhana itaimarishwa. Zaidi ya hayo, mtihani wa chini wa hatari kabla ya darasa huweka nia ya mwanafunzi kuelekea kujifunza mada, wakati mtihani wa pili baada ya darasa unahakikisha kumbukumbu zaidi. Mtaala huu umeundwa kuwa rahisi na wa kufurahisha na unaweza kuchukuliwa kwa jumla au sehemu. Miradi huanza ndogo na kuwa ngumu zaidi mwishoni mwa mzunguko wa wiki 12. Mtaala huu pia unajumuisha maelezo ya matumizi halisi ya ML, ambayo yanaweza kutumika kama mkopo wa ziada au kama msingi wa majadiliano. -> Pata [Kanuni za Maadili](CODE_OF_CONDUCT.md), [Kuchangia](CONTRIBUTING.md), [Tafsiri](TRANSLATIONS.md), na [Mwongozo wa Utatuzi wa Matatizo](TROUBLESHOOTING.md). Tunakaribisha maoni yako ya kujenga! +> Pata [Kanuni zetu za Maadili](CODE_OF_CONDUCT.md), [Kushiriki](CONTRIBUTING.md), [Tafsiri](TRANSLATIONS.md), na [Kutatua Matatizo](TROUBLESHOOTING.md). Tunakaribisha maoni yako ya kujenga! ## Kila somo linajumuisha -- sketchnote ya hiari -- video ya ziada ya hiari -- maelezo ya video (baadhi ya masomo tu) -- [jaribio la joto la kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) -- somo la maandishi -- kwa masomo yanayotegemea miradi, mwongozo wa hatua kwa hatua wa jinsi ya kujenga mradi +- sketchnote hiari +- video ya ziada hiari +- video ya maelekezo (masomo mengine tu) +- [mtihani wa kuamsha kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) +- somo lililoandikwa +- kwa masomo ya mradi, mwongozo wa hatua kwa hatua wa jinsi ya kujenga mradi - ukaguzi wa maarifa - changamoto - usomaji wa ziada - kazi -- [jaribio la baada ya somo](https://ff-quizzes.netlify.app/en/ml/) +- [mtihani wa baada ya somo](https://ff-quizzes.netlify.app/en/ml/) -> **Maelezo kuhusu lugha**: Masomo haya yameandikwa hasa kwa Python, lakini mengi pia yanapatikana kwa R. Kukamilisha somo la R, nenda kwenye folda ya `/solution` na tafuta masomo ya R. Yanajumuisha kiendelezi cha .rmd ambacho kinawakilisha faili ya **R Markdown** ambayo inaweza kufafanuliwa kwa urahisi kama kuingiza `vipande vya msimbo` (wa R au lugha nyingine) na `kichwa cha YAML` (kinachoelekeza jinsi ya kuunda matokeo kama PDF) katika `hati ya Markdown`. Kwa hivyo, inatumika kama mfumo bora wa kuandika kwa sayansi ya takwimu kwa kuwa inakuwezesha kuchanganya msimbo wako, matokeo yake, na mawazo yako kwa kukuruhusu kuyaandika kwa Markdown. Aidha, hati za R Markdown zinaweza kutolewa kwa fomati za matokeo kama PDF, HTML, au Word. +> **Kumbuka kuhusu lugha**: Masomo haya yameandikwa hasa kwa Python, lakini mengi pia yanapatikana kwa R. Ili kumaliza somo la R, nenda kwenye folda ya `/solution` na tafuta masomo ya R. Yanajumuisha kiambatisho cha .rmd kinachoonyesha faili ya **R Markdown** ambayo inaweza kufafanuliwa kama kuingiza `vipande vya msimbo` (vya R au lugha nyingine) na `kichwa cha YAML` (kinachoongoza jinsi ya kuunda matokeo kama PDF) katika `nyaraka za Markdown`. Hivyo, hutumika kama mfumo bora wa uandishi kwa sayansi ya data kwa kuwa inakuwezesha kuunganisha msimbo wako, matokeo yake, na mawazo yako kwa kuandika kwa Markdown. Zaidi ya hayo, nyaraka za R Markdown zinaweza kutengenezwa kuwa aina za matokeo kama PDF, HTML, au Word. -> **Maelezo kuhusu maswali**: Maswali yote yamejumuishwa katika [folda ya Quiz App](../../quiz-app), kwa jumla ya maswali 52 ya maswali matatu kila moja. Yameunganishwa kutoka ndani ya masomo lakini programu ya maswali inaweza kuendeshwa ndani; fuata maelekezo katika folda ya `quiz-app` kuendesha ndani au kupeleka kwenye Azure. +> **Kumbuka kuhusu mitihani**: Mitihani yote iko katika [folda ya Quiz App](../../quiz-app), kwa jumla ya mitihani 52 yenye maswali matatu kila moja. Imeunganishwa kutoka ndani ya masomo lakini app ya mtihani inaweza kuendeshwa kwa ndani; fuata maelekezo katika folda ya `quiz-app` ili kuendesha kwa ndani au kuweka kwenye Azure. -| Nambari ya Somo | Mada | Kundi la Somo | Malengo ya Kujifunza | Somo Lililounganishwa | Mwandishi | +| Nambari ya Somo | Mada | Kundi la Somo | Malengo ya Kujifunza | Somo Linalounganishwa | Mwandishi | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Utangulizi wa kujifunza kwa mashine | [Utangulizi](1-Introduction/README.md) | Jifunze dhana za msingi za kujifunza kwa mashine | [Somo](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Historia ya kujifunza kwa mashine | [Utangulizi](1-Introduction/README.md) | Jifunze historia ya uwanja huu | [Somo](1-Introduction/2-history-of-ML/README.md) | Jen na Amy | -| 03 | Haki na kujifunza kwa mashine | [Utangulizi](1-Introduction/README.md) | Ni masuala gani muhimu ya kifalsafa kuhusu haki ambayo wanafunzi wanapaswa kuzingatia wanapojenga na kutumia mifano ya ML? | [Somo](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Mbinu za kujifunza kwa mashine | [Utangulizi](1-Introduction/README.md) | Ni mbinu gani watafiti wa ML wanatumia kujenga mifano ya ML? | [Somo](1-Introduction/4-techniques-of-ML/README.md) | Chris na Jen | -| 05 | Utangulizi wa regression | [Regression](2-Regression/README.md) | Anza na Python na Scikit-learn kwa mifano ya regression | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Bei za malenge Amerika Kaskazini 🎃 | [Regression](2-Regression/README.md) | Onyesha na safisha data kwa maandalizi ya ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Bei za malenge Amerika Kaskazini 🎃 | [Regression](2-Regression/README.md) | Jenga mifano ya regression ya mstari na polynomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen na Dmitry • Eric Wanjau | -| 08 | Bei za malenge Amerika Kaskazini 🎃 | [Regression](2-Regression/README.md) | Jenga mfano wa regression ya logistic | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Programu ya Wavuti 🔌 | [Programu ya Wavuti](3-Web-App/README.md) | Jenga programu ya wavuti kutumia mfano wako uliyojifunza | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Utangulizi wa uainishaji | [Uainishaji](4-Classification/README.md) | Safisha, andaa, na onyesha data yako; utangulizi wa uainishaji | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen na Cassie • Eric Wanjau | -| 11 | Vyakula vitamu vya Asia na India 🍜 | [Uainishaji](4-Classification/README.md) | Utangulizi wa waainishaji | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen na Cassie • Eric Wanjau | -| 12 | Vyakula vitamu vya Asia na India 🍜 | [Uainishaji](4-Classification/README.md) | Waainishaji zaidi | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen na Cassie • Eric Wanjau | -| 13 | Vyakula vitamu vya Asia na India 🍜 | [Uainishaji](4-Classification/README.md) | Jenga programu ya wavuti ya mapendekezo ukitumia mfano wako | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Utangulizi wa clustering | [Clustering](5-Clustering/README.md) | Safisha, andaa, na onyesha data yako; Utangulizi wa clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Kuchunguza ladha za muziki wa Nigeria 🎧 | [Clustering](5-Clustering/README.md) | Chunguza mbinu ya clustering ya 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 | Utangulizi wa usindikaji wa lugha asilia ☕️ | [Usindikaji wa lugha asilia](6-NLP/README.md) | Jifunze misingi kuhusu NLP kwa kujenga bot rahisi | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Kazi za kawaida za NLP ☕️ | [Usindikaji wa lugha asilia](6-NLP/README.md) | Kuimarisha maarifa yako ya NLP kwa kuelewa kazi za kawaida zinazohitajika wakati wa kushughulikia miundo ya lugha | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Tafsiri na uchambuzi wa hisia ♥️ | [Usindikaji wa lugha asilia](6-NLP/README.md) | Tafsiri na uchambuzi wa hisia na Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Hoteli za kimapenzi za Ulaya ♥️ | [Usindikaji wa lugha asilia](6-NLP/README.md) | Uchambuzi wa hisia na hakiki za hoteli 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Hoteli za kimapenzi za Ulaya ♥️ | [Usindikaji wa lugha asilia](6-NLP/README.md) | Uchambuzi wa hisia na hakiki za hoteli 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Utangulizi wa utabiri wa mfululizo wa muda | [Mfululizo wa muda](7-TimeSeries/README.md) | Utangulizi wa utabiri wa mfululizo wa muda | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Matumizi ya Nguvu Duniani ⚡️ - utabiri wa mfululizo wa muda na ARIMA | [Mfululizo wa muda](7-TimeSeries/README.md) | Utabiri wa mfululizo wa muda na ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Matumizi ya Nguvu Duniani ⚡️ - utabiri wa mfululizo wa muda na SVR | [Mfululizo wa muda](7-TimeSeries/README.md) | Utabiri wa mfululizo wa muda na Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Utangulizi wa kujifunza kwa kuimarisha | [Kujifunza kwa kuimarisha](8-Reinforcement/README.md) | Utangulizi wa kujifunza kwa kuimarisha na Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Msaidie Peter kuepuka mbwa mwitu! 🐺 | [Kujifunza kwa kuimarisha](8-Reinforcement/README.md) | Gym ya kujifunza kwa kuimarisha | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Matukio na matumizi ya ML halisi duniani | [ML katika Ulimwengu Halisi](9-Real-World/README.md) | Matumizi ya kuvutia na kufichua ya ML ya kawaida | [Somo](9-Real-World/1-Applications/README.md) | Timu | -| Postscript | Urekebishaji wa Mfano katika ML ukitumia dashibodi ya RAI | [ML katika Ulimwengu Halisi](9-Real-World/README.md) | Urekebishaji wa Mfano katika Kujifunza kwa Mashine ukitumia vipengele vya dashibodi ya AI inayowajibika | [Somo](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [pata rasilimali zote za ziada za kozi hii katika mkusanyiko wetu wa Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 01 | Utangulizi wa kujifunza mashine | [Introduction](1-Introduction/README.md) | Jifunze dhana za msingi nyuma ya kujifunza mashine | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Historia ya kujifunza mashine | [Introduction](1-Introduction/README.md) | Jifunze historia inayosababisha uwanja huu | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Usawa na kujifunza mashine | [Introduction](1-Introduction/README.md) | Ni masuala gani muhimu ya kifalsafa kuhusu usawa ambayo wanafunzi wanapaswa kuyazingatia wanapojenga na kutumia mifano ya ML? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Mbinu za kujifunza mashine | [Introduction](1-Introduction/README.md) | Ni mbinu gani watafiti wa ML hutumia kujenga mifano ya ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Utangulizi wa regression | [Regression](2-Regression/README.md) | Anza na Python na Scikit-learn kwa mifano ya regression | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Bei za malenge ya Amerika Kaskazini 🎃 | [Regression](2-Regression/README.md) | Onyesha na safisha data kwa ajili ya ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Bei za malenge ya Amerika Kaskazini 🎃 | [Regression](2-Regression/README.md) | Jenga mifano ya regression ya mstari na polynomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Bei za malenge ya Amerika Kaskazini 🎃 | [Regression](2-Regression/README.md) | Jenga mfano wa regression ya logistic | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Programu ya Wavuti 🔌 | [Web App](3-Web-App/README.md) | Jenga programu ya wavuti kutumia mfano wako uliopata mafunzo | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Utangulizi wa uainishaji | [Classification](4-Classification/README.md) | Safisha, andaa, na onyesha data yako; utangulizi wa uainishaji | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Vyakula vitamu vya Asia na India 🍜 | [Classification](4-Classification/README.md) | Utangulizi wa waainishaji | [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 | Vyakula vitamu vya Asia na India 🍜 | [Classification](4-Classification/README.md) | Waainishaji zaidi | [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 | Vyakula vitamu vya Asia na India 🍜 | [Classification](4-Classification/README.md) | Jenga programu ya wavuti ya kupendekeza kwa kutumia mfano wako | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Utangulizi wa ugawaji kundi | [Clustering](5-Clustering/README.md) | Safisha, andaa, na onyesha data yako; Utangulizi wa ugawaji kundi | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Kuchunguza Ladha za Muziki za Nigeria 🎧 | [Clustering](5-Clustering/README.md) | Chunguza mbinu ya ugawaji kundi ya 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 | Utangulizi wa usindikaji wa lugha asilia ☕️ | [Natural language processing](6-NLP/README.md) | Jifunze misingi ya NLP kwa kujenga bot rahisi | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Kazi za kawaida za NLP ☕️ | [Natural language processing](6-NLP/README.md) | Zidi maarifa yako ya NLP kwa kuelewa kazi za kawaida zinazohitajika katika kushughulikia miundo ya lugha | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Tafsiri na uchambuzi wa hisia ♥️ | [Natural language processing](6-NLP/README.md) | Tafsiri na uchambuzi wa hisia na Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Hoteli za kimapenzi za Ulaya ♥️ | [Natural language processing](6-NLP/README.md) | Uchambuzi wa hisia kwa mapitio ya hoteli 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Hoteli za kimapenzi za Ulaya ♥️ | [Natural language processing](6-NLP/README.md) | Uchambuzi wa hisia kwa mapitio ya hoteli 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Utangulizi wa utabiri wa mfululizo wa wakati | [Time series](7-TimeSeries/README.md) | Utangulizi wa utabiri wa mfululizo wa wakati | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Matumizi ya Nguvu Duniani ⚡️ - utabiri wa mfululizo wa wakati na ARIMA | [Time series](7-TimeSeries/README.md) | Utabiri wa mfululizo wa wakati kwa kutumia ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Matumizi ya Nguvu Duniani ⚡️ - utabiri wa mfululizo wa wakati na SVR | [Time series](7-TimeSeries/README.md) | Utabiri wa mfululizo wa wakati kwa kutumia Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Utangulizi wa kujifunza kwa kuimarisha | [Reinforcement learning](8-Reinforcement/README.md) | Utangulizi wa kujifunza kwa kuimarisha kwa kutumia Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Msaada kwa Peter kuepuka mbwa mwitu! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Gym ya kujifunza kwa kuimarisha | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Hali halisi za ML na matumizi yake | [ML in the Wild](9-Real-World/README.md) | Matumizi ya kuvutia na ya kufichua ya ML ya kawaida | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Urekebishaji wa Mifano katika ML kwa kutumia dashibodi ya RAI | [ML in the Wild](9-Real-World/README.md) | Urekebishaji wa Mifano katika Kujifunza Mashine kwa kutumia vipengele vya dashibodi ya Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [pata rasilimali zote za ziada kwa kozi hii katika mkusanyiko wetu wa Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Ufikiaji wa nje ya mtandao -Unaweza kuendesha nyaraka hizi nje ya mtandao kwa kutumia [Docsify](https://docsify.js.org/#/). Fork repo hii, [sakinisha Docsify](https://docsify.js.org/#/quickstart) kwenye mashine yako ya ndani, kisha kwenye folda ya mizizi ya repo hii, andika `docsify serve`. Tovuti itahudumiwa kwenye bandari 3000 kwenye localhost yako: `localhost:3000`. +Unaweza kuendesha nyaraka hii nje ya mtandao kwa kutumia [Docsify](https://docsify.js.org/#/). Fanya nakala ya repo hii, [weka Docsify](https://docsify.js.org/#/quickstart) kwenye mashine yako ya ndani, kisha katika folda kuu ya repo hii, andika `docsify serve`. Tovuti itahudumiwa kwenye bandari 3000 kwenye localhost yako: `localhost:3000`. ## PDFs Pata pdf ya mtaala na viungo [hapa](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Kozi Nyingine +## 🎒 Kozi Nyingine -Timu yetu inazalisha kozi nyingine! Angalia: +Timu yetu hutengeneza kozi nyingine! Angalia: -### Azure / Edge / MCP / Mawakala -[![AZD kwa Kompyuta](https://img.shields.io/badge/AZD%20kwa%20Kompyuta-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI kwa Kompyuta](https://img.shields.io/badge/Edge%20AI%20kwa%20Kompyuta-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP kwa Kompyuta](https://img.shields.io/badge/MCP%20kwa%20Kompyuta-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Mawakala wa AI kwa Kompyuta](https://img.shields.io/badge/Mawakala%20wa%20AI%20kwa%20Kompyuta-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- ### Mfululizo wa AI ya Kizazi -[![AI ya Kizazi kwa Kompyuta](https://img.shields.io/badge/AI%20ya%20Kizazi%20kwa%20Kompyuta-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI ya Kizazi (.NET)](https://img.shields.io/badge/AI%20ya%20Kizazi%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![AI ya Kizazi (Java)](https://img.shields.io/badge/AI%20ya%20Kizazi%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![AI ya Kizazi (JavaScript)](https://img.shields.io/badge/AI%20ya%20Kizazi%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- ### Kujifunza Msingi -[![ML kwa Kompyuta](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Sayansi ya Takwimu kwa Kompyuta](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI kwa Kompyuta](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Usalama wa Mtandao kwa Kompyuta](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web Dev kwa Kompyuta](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT kwa Kompyuta](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Maendeleo ya XR kwa Kompyuta](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Mfululizo wa Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Mfululizo wa Copilot -[![Copilot kwa Uprogramu wa Pamoja wa AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot kwa C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Kupata Msaada +## Kupata Msaada -Ikiwa unakwama au una maswali kuhusu kujenga programu za AI. Jiunge na wanafunzi wenzako na watengenezaji wenye uzoefu katika mijadala kuhusu MCP. Ni jamii inayounga mkono ambapo maswali yanakaribishwa na maarifa yanashirikiwa kwa uhuru. +Ikiwa unakumbwa na shida au una maswali yoyote kuhusu kujenga programu za AI. Jiunge na wapenzi wa kujifunza na waendelezaji wenye uzoefu katika mijadala kuhusu MCP. Ni jamii yenye msaada ambapo maswali yanakaribishwa na maarifa yanashirikiwa kwa uhuru. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Ikiwa una maoni kuhusu bidhaa au unakutana na makosa wakati wa kujenga, tembelea: +Ikiwa una maoni kuhusu bidhaa au makosa wakati wa kujenga tembelea: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya kiasili inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. +**Kiarifa cha Kukataa**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake ya asili inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatubebei dhamana kwa kutoelewana au tafsiri potofu zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/ta/README.md b/translations/ta/README.md index 5ad4440c4..f57b0bdd8 100644 --- a/translations/ta/README.md +++ b/translations/ta/README.md @@ -1,8 +1,8 @@ -[அரபு](../ar/README.md) | [பெங்காலி](../bn/README.md) | [பல்கேரியன்](../bg/README.md) | [பர்மீஸ் (மியான்மர்)](../my/README.md) | [சீனம் (எளிமைப்படுத்தப்பட்டது)](../zh/README.md) | [சீனம் (சம்பிரதாய, ஹாங்காங்)](../hk/README.md) | [சீனம் (சம்பிரதாய, மக்காவு)](../mo/README.md) | [சீனம் (சம்பிரதாய, தைவான்)](../tw/README.md) | [குரோஷியன்](../hr/README.md) | [செக்](../cs/README.md) | [டேனிஷ்](../da/README.md) | [டச்சு](../nl/README.md) | [எஸ்டோனியன்](../et/README.md) | [பின்னிஷ்](../fi/README.md) | [பிரெஞ்சு](../fr/README.md) | [ஜெர்மன்](../de/README.md) | [கிரேக்கம்](../el/README.md) | [ஹீப்ரு](../he/README.md) | [இந்தி](../hi/README.md) | [ஹங்கேரியன்](../hu/README.md) | [இந்தோனேஷியன்](../id/README.md) | [இத்தாலியன்](../it/README.md) | [ஜப்பானியன்](../ja/README.md) | [கொரியன்](../ko/README.md) | [லிதுவேனியன்](../lt/README.md) | [மலாய்](../ms/README.md) | [மராத்தி](../mr/README.md) | [நேபாளி](../ne/README.md) | [நைஜீரியன் பிட்ஜின்](../pcm/README.md) | [நார்வேஜியன்](../no/README.md) | [பெர்ஷியன் (பார்ஸி)](../fa/README.md) | [போலிஷ்](../pl/README.md) | [போர்ச்சுகீஸ் (பிரேசில்)](../br/README.md) | [போர்ச்சுகீஸ் (போர்ச்சுகல்)](../pt/README.md) | [பஞ்சாபி (குர்முகி)](../pa/README.md) | [ரோமானியன்](../ro/README.md) | [ரஷியன்](../ru/README.md) | [செர்பியன் (சிரிலிக்)](../sr/README.md) | [ஸ்லோவாக்](../sk/README.md) | [ஸ்லோவேனியன்](../sl/README.md) | [ஸ்பானிஷ்](../es/README.md) | [ஸ்வாஹிலி](../sw/README.md) | [ஸ்வீடிஷ்](../sv/README.md) | [டாகாலோக் (பிலிப்பினோ)](../tl/README.md) | [தமிழ்](./README.md) | [தாய்](../th/README.md) | [துருக்கியம்](../tr/README.md) | [உக்ரேனியன்](../uk/README.md) | [உருது](../ur/README.md) | [வியட்நாமீஸ்](../vi/README.md) +[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](./README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) #### எங்கள் சமூகத்தில் சேரவும் [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -AI கற்றல் தொடரில் எங்கள் டிஸ்கோர்டில் நிகழ்ச்சி நடைபெறுகிறது, மேலும் [AI கற்றல் தொடர்](https://aka.ms/learnwithai/discord) பற்றி 18 - 30 செப்டம்பர், 2025 வரை அறிந்து கொள்ளுங்கள். GitHub Copilot-ஐ தரவியல் அறிவியலுக்காக பயன்படுத்துவதற்கான குறிப்புகள் மற்றும் வழிகாட்டுதல்களை பெறலாம். +எங்களிடம் AI உடன் கற்றல் தொடர்ச்சியான டிஸ்கோர்டு தொடர்ச்சி உள்ளது, மேலும் 2025 செப்டம்பர் 18 - 30 வரை [Learn with AI Series](https://aka.ms/learnwithai/discord) இல் எங்களைச் சேர்ந்துகொள்ளவும். GitHub Copilot ஐ Data Science க்காக பயன்படுத்துவதற்கான குறிப்புகள் மற்றும் நுட்பங்களை நீங்கள் பெறுவீர்கள். -![AI கற்றல் தொடர்](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ta.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ta.png) -# தொடக்கத்திற்கான இயந்திர கற்றல் - ஒரு பாடத்திட்டம் +# ஆரம்பக்காரர்களுக்கான மெஷின் லெர்னிங் - ஒரு பாடத்திட்டம் -> 🌍 உலக கலாச்சாரங்களை அடிப்படையாகக் கொண்டு இயந்திர கற்றலை ஆராய்வதற்காக உலகம் முழுவதும் பயணம் செய்யுங்கள் 🌍 +> 🌍 உலக கலாச்சாரங்களின் வழியாக மெஷின் லெர்னிங்கை ஆராய்ந்து உலகம் முழுவதும் பயணம் செய்யுங்கள் 🌍 -Microsoft இல் Cloud Advocates 12 வாரங்கள், 26 பாடங்கள் கொண்ட **இயந்திர கற்றல்** பற்றிய பாடத்திட்டத்தை வழங்குவதில் மகிழ்ச்சி அடைகின்றனர். இந்த பாடத்திட்டத்தில், **சம்பிரதாய இயந்திர கற்றல்** என அழைக்கப்படும் விஷயங்களை Scikit-learn நூலகத்தை முதன்மையாகப் பயன்படுத்தி, ஆழமான கற்றலை தவிர்த்து கற்றுக்கொள்வீர்கள், இது எங்கள் [AI தொடக்கத்திற்கான பாடத்திட்டத்தில்](https://aka.ms/ai4beginners) உள்ளடக்கப்பட்டுள்ளது. இந்த பாடங்களை எங்கள் ['தரவியல் அறிவியலுக்கான தொடக்கத்திற்கான பாடத்திட்டம்'](https://aka.ms/ds4beginners) உடன் இணைக்கவும்! +Microsoft இல் உள்ள Cloud Advocates குழு 12 வாரங்கள், 26 பாடங்கள் கொண்ட **மெஷின் லெர்னிங்** பற்றிய பாடத்திட்டத்தை வழங்குவதில் மகிழ்ச்சி அடைகிறது. இந்த பாடத்திட்டத்தில், நீங்கள் சில நேரங்களில் **சாதாரண மெஷின் லெர்னிங்** என்று அழைக்கப்படும் விஷயங்களை கற்றுக்கொள்வீர்கள், இதில் முக்கியமாக Scikit-learn நூலகத்தை பயன்படுத்தி, ஆழ்ந்த கற்றல் (deep learning) தவிர்க்கப்படுகிறது, அது எங்கள் [AI for Beginners' curriculum](https://aka.ms/ai4beginners) இல் உள்ளடக்கப்பட்டுள்ளது. இந்த பாடங்களை எங்கள் ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) உடன் இணைத்து கற்றுக்கொள்ளவும். -உலகம் முழுவதும் பயணம் செய்து, இந்த சம்பிரதாய தொழில்நுட்பங்களை பல பகுதிகளிலிருந்து தரவுகளுக்கு பயன்படுத்துங்கள். ஒவ்வொரு பாடமும் பாடத்திற்கு முன் மற்றும் பின் வினாடி வினா, எழுத்து வழிகாட்டுதல்கள், தீர்வு, பணிக்கட்டளை மற்றும் பலவற்றை உள்ளடக்கியது. எங்கள் திட்ட அடிப்படையிலான கற்றல் முறையால் நீங்கள் கட்டமைப்பை உருவாக்குவதன் மூலம் கற்றுக்கொள்வீர்கள், இது புதிய திறன்களை 'நினைவில் நிறுத்த' ஒரு நிரூபிக்கப்பட்ட வழியாகும். +உலகின் பல பகுதிகளிலிருந்து தரவுகளைப் பயன்படுத்தி இந்த சாதாரண தொழில்நுட்பங்களை செயல்படுத்தி உலகம் முழுவதும் எங்களுடன் பயணம் செய்யுங்கள். ஒவ்வொரு பாடத்திலும் முன் மற்றும் பின் தேர்வுகள், பாடத்தைக் முடிக்க எழுதப்பட்ட வழிமுறைகள், தீர்வு, பணிகள் மற்றும் பல உள்ளன. எங்கள் திட்ட அடிப்படையிலான கற்றல் முறையால் நீங்கள் கட்டுமானம் செய்யும் போது கற்றுக்கொள்ள முடியும், இது புதிய திறன்களை நிலைத்திருக்க உதவும். -**✍️ எங்கள் ஆசிரியர்களுக்கு மனமார்ந்த நன்றி** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu மற்றும் Amy Boyd +**✍️ எங்கள் எழுத்தாளர்களுக்கு மனமார்ந்த நன்றி** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu மற்றும் Amy Boyd -**🎨 எங்கள் விளக்கப்படம் உருவாக்குபவர்களுக்கு நன்றி** Tomomi Imura, Dasani Madipalli, மற்றும் Jen Looper +**🎨 எங்கள் வரைபடக்காரர்களுக்கும் நன்றி** Tomomi Imura, Dasani Madipalli மற்றும் Jen Looper -**🙏 Microsoft மாணவர் தூதர்களுக்கு நன்றி 🙏**, குறிப்பாக Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, மற்றும் Snigdha Agarwal +**🙏 எங்கள் Microsoft மாணவர் தூதர்கள் எழுத்தாளர்கள், மதிப்பாய்வாளர்கள் மற்றும் உள்ளடக்க பங்களிப்பாளர்களுக்கு சிறப்பு நன்றி**, குறிப்பாக Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila மற்றும் Snigdha Agarwal -**🤩 Microsoft மாணவர் தூதர்கள் Eric Wanjau, Jasleen Sondhi, மற்றும் Vidushi Gupta எங்கள் R பாடங்களுக்கு கூடுதல் நன்றி!** +**🤩 எங்கள் R பாடங்களுக்கு Microsoft மாணவர் தூதர்கள் Eric Wanjau, Jasleen Sondhi மற்றும் Vidushi Gupta அவர்களுக்கு கூடுதல் நன்றி!** # தொடங்குதல் இந்த படிகளை பின்பற்றவும்: -1. **Repository-ஐ Fork செய்யவும்**: இந்த பக்கத்தின் மேல் வலது மூலையில் உள்ள "Fork" பொத்தானை கிளிக் செய்யவும். -2. **Repository-ஐ Clone செய்யவும்**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +1. **களஞ்சியத்தை Fork செய்யவும்**: இந்த பக்கத்தின் மேல் வலது மூலையில் உள்ள "Fork" பொத்தானை கிளிக் செய்யவும். +2. **களஞ்சியத்தை Clone செய்யவும்**: `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) +> [இந்த பாடத்திட்டத்திற்கான அனைத்து கூடுதல் வளங்களையும் எங்கள் Microsoft Learn தொகுப்பில் காணவும்](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **உதவி தேவை?** நிறுவல், அமைப்பு மற்றும் பாடங்களை இயக்குவதில் பொதுவான சிக்கல்களுக்கு தீர்வுகளுக்கான [Troubleshooting Guide](TROUBLESHOOTING.md)-ஐ பார்க்கவும். +> 🔧 **உதவி தேவைபடுகிறதா?** நிறுவல், அமைப்பு மற்றும் பாடங்களை இயக்குவதில் பொதுவான பிரச்சனைகளுக்கான தீர்வுகளுக்கு எங்கள் [பிரச்சனை தீர்க்கும் வழிகாட்டி](TROUBLESHOOTING.md) ஐப் பாருங்கள். -**[மாணவர்கள்](https://aka.ms/student-page)**, இந்த பாடத்திட்டத்தை பயன்படுத்த, முழு repo-ஐ உங்கள் GitHub கணக்கிற்கு Fork செய்து, பயிற்சிகளை தனியாக அல்லது குழுவுடன் முடிக்கவும்: -- பாடத்திற்கு முன் வினாடி வினாவுடன் தொடங்கவும். -- பாடத்தை படித்து செயல்பாடுகளை முடிக்கவும், ஒவ்வொரு அறிவு சரிபார்ப்பிலும் தற்காலிகமாக நிறுத்தி சிந்திக்கவும். -- பாடங்களை புரிந்து கொண்டு திட்டங்களை உருவாக்க முயற்சிக்கவும்; ஆனால் தீர்வு குறியீடு `/solution` கோப்புறைகளில் கிடைக்கிறது. -- பாடத்திற்கு பின் வினாடி வினாவை எடுத்துக்கொள்ளவும். -- சவால்களை முடிக்கவும். -- பணிக்கட்டளையை முடிக்கவும். -- ஒரு பாடக் குழுவை முடித்த பிறகு, [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions)-ஐ பார்வையிட்டு, PAT rubric-ஐ நிரப்புவதன் மூலம் "கற்றல் வெளிப்படையாக" செய்யுங்கள். PAT என்பது Progress Assessment Tool ஆகும், இது உங்கள் கற்றலை மேம்படுத்த ஒரு rubric ஆகும். மற்ற PAT-களுக்கு நீங்கள் பதிலளிக்கலாம், இதனால் நாம் ஒன்றாக கற்றுக்கொள்ளலாம். +**[மாணவர்கள்](https://aka.ms/student-page)**, இந்த பாடத்திட்டத்தை பயன்படுத்த, முழு களஞ்சியத்தை உங்கள் சொந்த GitHub கணக்கிற்கு fork செய்து தனியாக அல்லது குழுவுடன் பயிற்சிகளை முடிக்கவும்: -> மேலும் கற்றுக்கொள்ள, இந்த [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modules மற்றும் learning paths-ஐ பின்பற்ற பரிந்துரைக்கிறோம். +- முன்-பாடம் தேர்வுடன் தொடங்கவும். +- பாடத்தை படித்து செயல்பாடுகளை முடிக்கவும், ஒவ்வொரு அறிவு சோதனையிலும் நிறுத்தி சிந்திக்கவும். +- தீர்வு குறியீட்டை இயக்குவதற்குப் பதிலாக பாடங்களை புரிந்து கொண்டு திட்டங்களை உருவாக்க முயற்சிக்கவும்; இருப்பினும் அந்த குறியீடு ஒவ்வொரு திட்ட-மைய பாடத்திலும் `/solution` கோப்புறைகளில் கிடைக்கிறது. +- பின்-பாடம் தேர்வை எடுத்துக்கொள்ளவும். +- சவாலை முடிக்கவும். +- பணியை முடிக்கவும். +- ஒரு பாடக் குழுவை முடித்த பிறகு, [பேச்சு பலகை](https://github.com/microsoft/ML-For-Beginners/discussions) ஐப் பார்வையிட்டு, பொருத்தமான PAT மதிப்பீட்டு அட்டவணையை நிரப்பி "பகிர்ந்து கற்றுக்கொள்ளவும்". 'PAT' என்பது முன்னேற்ற மதிப்பீட்டு கருவி ஆகும், இது உங்கள் கற்றலை மேம்படுத்தும் வகையில் நிரப்பும் அட்டவணை. மற்ற PAT களுக்கு நீங்கள் பதிலளித்து நம்முடன் சேர்ந்து கற்றுக்கொள்ளலாம். -**ஆசிரியர்கள்**, இந்த பாடத்திட்டத்தை எப்படி பயன்படுத்துவது என்பதற்கான [சில பரிந்துரைகளை](for-teachers.md) சேர்த்துள்ளோம். +> மேலதிக படிப்புக்கு, இந்த [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) மாடியூல்கள் மற்றும் கற்றல் பாதைகளை பின்பற்ற பரிந்துரைக்கிறோம். + +**ஆசிரியர்கள்**, இந்த பாடத்திட்டத்தை எப்படி பயன்படுத்துவது என்பதற்கான சில பரிந்துரைகளை [இங்கே](for-teachers.md) சேர்த்துள்ளோம். --- -## வீடியோ வழிகாட்டுதல்கள் +## வீடியோ நடைமுறை -சில பாடங்கள் குறுகிய வடிவ வீடியோவாக கிடைக்கின்றன. இவை பாடங்களில் உள்ளே அல்லது [Microsoft Developer YouTube channel-இல் உள்ள ML for Beginners playlist](https://aka.ms/ml-beginners-videos)-இல் காணலாம். +சில பாடங்கள் குறுகிய வடிவ வீடியோவாக கிடைக்கின்றன. இவை அனைத்தையும் பாடங்களில் நேரடியாக அல்லது [Microsoft Developer YouTube சேனலில் உள்ள ML for Beginners பிளேலிஸ்டில்](https://aka.ms/ml-beginners-videos) கீழே உள்ள படத்தை கிளிக் செய்து காணலாம். [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ta.png)](https://aka.ms/ml-beginners-videos) @@ -89,125 +90,134 @@ Microsoft இல் Cloud Advocates 12 வாரங்கள், 26 பாடங **Gif உருவாக்கியவர்** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து திட்டம் மற்றும் அதை உருவாக்கியவர்களைப் பற்றி வீடியோவைப் பாருங்கள்! +> 🎥 திட்டம் மற்றும் அதை உருவாக்கியவர்களைப் பற்றி வீடியோவுக்கு மேலே உள்ள படத்தை கிளிக் செய்யவும்! --- -## கற்றல் முறை +## கற்றல் முறைகள் -இந்த பாடத்திட்டத்தை உருவாக்கும்போது இரண்டு முக்கியமான கற்றல் முறைகளை தேர்ந்தெடுத்துள்ளோம்: இது **திட்ட அடிப்படையிலான** மற்றும் **அடிக்கடி வினாடி வினாக்களை** உள்ளடக்கியது என்பதை உறுதிப்படுத்துதல். மேலும், இந்த பாடத்திட்டம் ஒரு பொதுவான **தீமையை** கொண்டுள்ளது, இது ஒருமைப்பாட்டை வழங்குகிறது. +இந்த பாடத்திட்டத்தை உருவாக்கும்போது, இரண்டு கற்றல் கொள்கைகளை தேர்ந்தெடுத்துள்ளோம்: இது கைமுறை **திட்ட அடிப்படையிலான** மற்றும் அதில் **அடிக்கடி தேர்வுகள்** உள்ளன என்பதை உறுதி செய்தல். கூடுதலாக, இந்த பாடத்திட்டத்திற்கு ஒரே **தீம்** உள்ளது, இது ஒருங்கிணைப்பை வழங்குகிறது. -திட்டங்களுடன் உள்ளடக்கம் ஒத்துப்போகும் வகையில் உறுதிப்படுத்துவதன் மூலம், மாணவர்களுக்கு இது மேலும் ஈர்க்கக்கூடியதாக மாறுகிறது மற்றும் கருத்துக்களின் நினைவாற்றல் அதிகரிக்கப்படும். மேலும், ஒரு வகுப்புக்கு முன் குறைந்த அழுத்தம் கொண்ட வினாடி வினா, ஒரு தலைப்பை கற்றல் நோக்கமாக மாணவரின் கவனத்தை திருப்புகிறது, ஒரு வகுப்புக்கு பின் வினாடி வினா மேலும் நினைவாற்றலை உறுதிப்படுத்துகிறது. இந்த பாடத்திட்டம் நெகிழ்வான மற்றும் மகிழ்ச்சியானதாக வடிவமைக்கப்பட்டுள்ளது மற்றும் முழுமையாக அல்லது பகுதியளவில் எடுத்துக்கொள்ளலாம். 12 வார சுழற்சியின் இறுதியில் திட்டங்கள் சிறியதாக தொடங்கி அதிகமாக சிக்கலானதாக மாறுகின்றன. இந்த பாடத்திட்டம் ML-இன் உண்மையான உலக பயன்பாடுகள் பற்றிய ஒரு பிந்தைய குறிப்பையும் உள்ளடக்கியது, இது கூடுதல் கிரெடிட் அல்லது விவாதத்திற்கான அடிப்படையாக பயன்படுத்தப்படலாம். +உள்ளடக்கம் திட்டங்களுடன் பொருந்தும்படி உறுதி செய்வதன் மூலம், மாணவர்களுக்கு கற்றல் செயல்முறை மேலும் ஈடுபடக்கூடியதாகவும் கருத்துக்களை நினைவில் வைக்க உதவும் வகையிலும் இருக்கும். கூடுதலாக, வகுப்புக்கு முன் ஒரு குறைந்த அழுத்தம் கொண்ட தேர்வு மாணவரின் கற்றல் நோக்கத்தை அமைக்கும், வகுப்புக்குப் பிறகு இரண்டாவது தேர்வு மேலும் நினைவில் வைக்க உதவும். இந்த பாடத்திட்டம் நெகிழ்வானதும், சுவாரஸ்யமானதும் ஆகும் மற்றும் முழுமையாக அல்லது பகுதியாய் எடுத்துக்கொள்ளலாம். திட்டங்கள் சிறியதாக தொடங்கி 12 வார காலக்கட்டத்தின் இறுதிக்குள் அதிகமாக சிக்கலானதாக மாறும். இந்த பாடத்திட்டத்தில் ML இன் உண்மையான உலக பயன்பாடுகள் பற்றிய ஒரு பின்னூட்டமும் உள்ளது, இது கூடுதல் மதிப்பெண் அல்லது விவாதத்திற்கான அடிப்படையாக பயன்படுத்தலாம். -> எங்கள் [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), மற்றும் [Troubleshooting](TROUBLESHOOTING.md) வழிகாட்டுதல்களை காணவும். உங்கள் கட்டமைப்பான கருத்துகளை வரவேற்கிறோம்! +> எங்கள் [நடத்தை விதிகள்](CODE_OF_CONDUCT.md), [பங்களிப்பு](CONTRIBUTING.md), [மொழிபெயர்ப்பு](TRANSLATIONS.md), மற்றும் [பிரச்சனை தீர்க்கும் வழிகாட்டி](TROUBLESHOOTING.md) வழிமுறைகளை காணவும். உங்கள் கட்டுமானமான கருத்துக்களை வரவேற்கிறோம்! -## ஒவ்வொரு பாடமும் உள்ளடக்கியது +## ஒவ்வொரு பாடத்திலும் உள்ளவை -- விருப்பமான sketchnote +- விருப்பமான ஸ்கெட்ச் நோட் - விருப்பமான கூடுதல் வீடியோ -- வீடியோ வழிகாட்டுதல் (சில பாடங்கள் மட்டும்) -- [பாடத்திற்கு முன் வினாடி வினா](https://ff-quizzes.netlify.app/en/ml/) -- எழுத்து பாடம் -- திட்ட அடிப்படையிலான பாடங்களுக்கு, திட்டத்தை உருவாக்குவதற்கான படி படி வழிகாட்டுதல்கள் -- அறிவு சரிபார்ப்புகள் -- ஒரு சவால் +- வீடியோ நடைமுறை (சில பாடங்களில் மட்டும்) +- [முன்-பாடம் வெப்பமூட்டல் தேர்வு](https://ff-quizzes.netlify.app/en/ml/) +- எழுதப்பட்ட பாடம் +- திட்ட அடிப்படையிலான பாடங்களுக்கு, திட்டத்தை கட்டுவதற்கான படி படி வழிகாட்டிகள் +- அறிவு சோதனைகள் +- சவால் - கூடுதல் வாசிப்பு -- பணிக்கட்டளை -- [பாடத்திற்கு பின் வினாடி வினா](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 போன்ற output-களை வடிவமைப்பதற்கான வழிகாட்டுதல்கள்) மற்றும் `Markdown document` ஆகியவற்றின் ஒருங்கிணைப்பாக வரையறுக்கப்படலாம். இது உங்கள் குறியீடு, அதன் output மற்றும் உங்கள் எண்ணங்களை Markdown-இல் எழுத அனுமதிப்பதன் மூலம் தரவியல் அறிவியலுக்கான ஒரு சிறந்த உருவாக்கக் கட்டமைப்பாக செயல்படுகிறது. மேலும், R Markdown ஆவணங்கள் PDF, HTML அல்லது Word போன்ற output வடிவங்களுக்கு மாற்றப்படலாம். +> **மொழிகள் குறித்த குறிப்பு**: இந்த பாடங்கள் முதன்மையாக 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 வினாடி வினாக்கள், ஒவ்வொன்றும் மூன்று கேள்விகள் கொண்டது. அவை பாடங்களில் இருந்து இணைக்கப்பட்டுள்ளன, ஆனால் quiz app-ஐ உள்ளூர் அளவில் இயக்கலாம்; `quiz-app` கோப்புறையில் உள்ள வழிகாட்டுதல்களைப் பின்பற்றி உள்ளூர் அளவில் அல்லது Azure-க்கு deploy செய்யவும். +> **தேர்வுகள் குறித்த குறிப்பு**: அனைத்து தேர்வுகளும் [Quiz App கோப்புறையில்](../../quiz-app) உள்ளன, மொத்தம் 52 தேர்வுகள், ஒவ்வொன்றிலும் மூன்று கேள்விகள் உள்ளன. அவை பாடங்களில் இணைக்கப்பட்டுள்ளன, ஆனால் தேர்வு செயலியை உள்ளூரில் இயக்கலாம்; உள்ளூரில் ஹோஸ்ட் செய்ய அல்லது Azure க்கு வெளியிட `quiz-app` கோப்புறையில் உள்ள வழிமுறைகளை பின்பற்றவும். -| பாட எண் | தலைப்பு | பாட குழுமம் | கற்றல் நோக்கங்கள் | இணைக்கப்பட்ட பாடம் | ஆசிரியர் | +| பாட எண் | தலைப்பு | பாடக் குழு | கற்றல் நோக்கங்கள் | இணைக்கப்பட்ட பாடம் | எழுத்தாளர் | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | மெஷின் லெர்னிங் அறிமுகம் | [Introduction](1-Introduction/README.md) | மெஷின் லெர்னிங் அடிப்படை கருத்துகளை கற்றுக்கொள்ளுங்கள் | [Lesson](1-Introduction/1-intro-to-ML/README.md) | முஹம்மது | -| 02 | மெஷின் லெர்னிங் வரலாறு | [Introduction](1-Introduction/README.md) | இந்த துறையின் அடிப்படையான வரலாற்றை கற்றுக்கொள்ளுங்கள் | [Lesson](1-Introduction/2-history-of-ML/README.md) | ஜென் மற்றும் ஏமி | -| 03 | நியாயம் மற்றும் மெஷின் லெர்னிங் | [Introduction](1-Introduction/README.md) | மெஷின் லெர்னிங் மாதிரிகளை உருவாக்கும் மற்றும் பயன்படுத்தும் போது மாணவர்கள் கவனிக்க வேண்டிய முக்கிய தத்துவ பிரச்சினைகள் என்ன? | [Lesson](1-Introduction/3-fairness/README.md) | தோமோமி | -| 04 | மெஷின் லெர்னிங் தொழில்நுட்பங்கள் | [Introduction](1-Introduction/README.md) | மெஷின் லெர்னிங் மாதிரிகளை உருவாக்க மெஷின் லெர்னிங் ஆராய்ச்சியாளர்கள் எந்த தொழில்நுட்பங்களை பயன்படுத்துகிறார்கள்? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | கிறிஸ் மற்றும் ஜென் | -| 05 | ரிக்ரெஷன் அறிமுகம் | [Regression](2-Regression/README.md) | ரிக்ரெஷன் மாதிரிகளுக்கு பைதான் மற்றும் ஸ்கிகிட்-லெர்னுடன் தொடங்குங்கள் | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | ஜென் • எரிக் வான்ஜௌ | -| 06 | வட அமெரிக்க கும்மட்டிகாய் விலைகள் 🎃 | [Regression](2-Regression/README.md) | மெஷின் லெர்னிங்கிற்கு தயாராக தரவை காட்சிப்படுத்தி சுத்தம் செய்யுங்கள் | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | ஜென் • எரிக் வான்ஜௌ | -| 07 | வட அமெரிக்க கும்மட்டிகாய் விலைகள் 🎃 | [Regression](2-Regression/README.md) | நேரியல் மற்றும் பாலினோமியல் ரிக்ரெஷன் மாதிரிகளை உருவாக்குங்கள் | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | ஜென் மற்றும் திமித்ரி • எரிக் வான்ஜௌ | -| 08 | வட அமெரிக்க கும்மட்டிகாய் விலைகள் 🎃 | [Regression](2-Regression/README.md) | ஒரு லாஜிஸ்டிக் ரிக்ரெஷன் மாதிரியை உருவாக்குங்கள் | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | ஜென் • எரிக் வான்ஜௌ | +| 01 | இயந்திரக் கற்றலுக்கான அறிமுகம் | [Introduction](1-Introduction/README.md) | இயந்திரக் கற்றலின் அடிப்படைக் கருத்துக்களை கற்றுக்கொள்ளுங்கள் | [Lesson](1-Introduction/1-intro-to-ML/README.md) | முஹம்மது | +| 02 | இயந்திரக் கற்றலின் வரலாறு | [Introduction](1-Introduction/README.md) | இந்த துறையின் பின்னணியில் உள்ள வரலாற்றை கற்றுக்கொள்ளுங்கள் | [Lesson](1-Introduction/2-history-of-ML/README.md) | ஜென் மற்றும் ஏமி | +| 03 | நியாயம் மற்றும் இயந்திரக் கற்றல் | [Introduction](1-Introduction/README.md) | இயந்திரக் கற்றல் மாதிரிகளை உருவாக்கும் மற்றும் பயன்படுத்தும் போது மாணவர்கள் கவனிக்க வேண்டிய நியாயம் தொடர்பான முக்கிய தத்துவக் கேள்விகள் என்ன? | [Lesson](1-Introduction/3-fairness/README.md) | தோமோமி | +| 04 | இயந்திரக் கற்றலுக்கான தொழில்நுட்பங்கள் | [Introduction](1-Introduction/README.md) | இயந்திரக் கற்றல் ஆராய்ச்சியாளர்கள் இயந்திரக் கற்றல் மாதிரிகளை உருவாக்க எந்த தொழில்நுட்பங்களை பயன்படுத்துகிறார்கள்? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | கிரிஸ் மற்றும் ஜென் | +| 05 | பின்வட்டம் அறிமுகம் | [Regression](2-Regression/README.md) | பின்வட்ட மாதிரிகளுக்கான Python மற்றும் Scikit-learn உடன் துவங்குங்கள் | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | ஜென் • எரிக் வான்ஜாவ் | +| 06 | வட அமெரிக்க பரங்கிக்காய் விலை 🎃 | [Regression](2-Regression/README.md) | இயந்திரக் கற்றலுக்கான தரவை காட்சிப்படுத்தி சுத்தம் செய்யுங்கள் | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | ஜென் • எரிக் வான்ஜாவ் | +| 07 | வட அமெரிக்க பரங்கிக்காய் விலை 🎃 | [Regression](2-Regression/README.md) | நேரியல் மற்றும் பன்முக பின்வட்ட மாதிரிகளை உருவாக்குங்கள் | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | ஜென் மற்றும் ட்மிட்ரி • எரிக் வான்ஜாவ் | +| 08 | வட அமெரிக்க பரங்கிக்காய் விலை 🎃 | [Regression](2-Regression/README.md) | ஒரு லாஜிஸ்டிக் பின்வட்ட மாதிரியை உருவாக்குங்கள் | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | ஜென் • எரிக் வான்ஜாவ் | | 09 | ஒரு வலை பயன்பாடு 🔌 | [Web App](3-Web-App/README.md) | உங்கள் பயிற்சி பெற்ற மாதிரியை பயன்படுத்த ஒரு வலை பயன்பாட்டை உருவாக்குங்கள் | [Python](3-Web-App/1-Web-App/README.md) | ஜென் | -| 10 | வகைப்பாடு அறிமுகம் | [Classification](4-Classification/README.md) | உங்கள் தரவை சுத்தம் செய்யுங்கள், தயாராக்கவும், காட்சிப்படுத்தவும்; வகைப்பாட்டிற்கு அறிமுகம் | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | ஜென் மற்றும் காச்சி • எரிக் வான்ஜௌ | -| 11 | சுவையான ஆசிய மற்றும் இந்திய உணவுகள் 🍜 | [Classification](4-Classification/README.md) | வகைப்பாட்டாளர்களுக்கு அறிமுகம் | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | ஜென் மற்றும் காச்சி • எரிக் வான்ஜௌ | -| 12 | சுவையான ஆசிய மற்றும் இந்திய உணவுகள் 🍜 | [Classification](4-Classification/README.md) | மேலும் வகைப்பாட்டாளர்கள் | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | ஜென் மற்றும் காச்சி • எரிக் வான்ஜௌ | -| 13 | சுவையான ஆசிய மற்றும் இந்திய உணவுகள் 🍜 | [Classification](4-Classification/README.md) | உங்கள் மாதிரியைப் பயன்படுத்தி ஒரு பரிந்துரை வலை பயன்பாட்டை உருவாக்குங்கள் | [Python](4-Classification/4-Applied/README.md) | ஜென் | -| 14 | கிளஸ்டரிங் அறிமுகம் | [Clustering](5-Clustering/README.md) | உங்கள் தரவை சுத்தம் செய்யுங்கள், தயாராக்கவும், காட்சிப்படுத்தவும்; கிளஸ்டரிங்கிற்கு அறிமுகம் | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | ஜென் • எரிக் வான்ஜௌ | -| 15 | நைஜீரிய இசை விருப்பங்களை ஆராயுங்கள் 🎧 | [Clustering](5-Clustering/README.md) | கே-மீன்ஸ் கிளஸ்டரிங் முறையை ஆராயுங்கள் | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | ஜென் • எரிக் வான்ஜௌ | -| 16 | இயற்கை மொழி செயலாக்கத்திற்கு அறிமுகம் ☕️ | [Natural language processing](6-NLP/README.md) | ஒரு எளிய பாட்டை உருவாக்குவதன் மூலம் NLP பற்றிய அடிப்படைகளை கற்றுக்கொள்ளுங்கள் | [Python](6-NLP/1-Introduction-to-NLP/README.md) | ஸ்டீபன் | -| 17 | பொதுவான NLP பணிகள் ☕️ | [Natural language processing](6-NLP/README.md) | மொழி அமைப்புகளுடன் வேலை செய்யும்போது தேவையான பொதுவான பணிகளைப் புரிந்து கொண்டு உங்கள் NLP அறிவை ஆழமாக்குங்கள் | [Python](6-NLP/2-Tasks/README.md) | ஸ்டீபன் | +| 10 | வகைப்பாட்டுக்கான அறிமுகம் | [Classification](4-Classification/README.md) | உங்கள் தரவை சுத்தம் செய்து, தயார் செய்து, காட்சிப்படுத்துங்கள்; வகைப்பாட்டுக்கான அறிமுகம் | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | ஜென் மற்றும் காச்சி • எரிக் வான்ஜாவ் | +| 11 | சுவையான ஆசிய மற்றும் இந்திய சமையல்கள் 🍜 | [Classification](4-Classification/README.md) | வகைப்பாட்டாளர்களுக்கான அறிமுகம் | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | ஜென் மற்றும் காச்சி • எரிக் வான்ஜாவ் | +| 12 | சுவையான ஆசிய மற்றும் இந்திய சமையல்கள் 🍜 | [Classification](4-Classification/README.md) | மேலும் வகைப்பாட்டாளர்கள் | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | ஜென் மற்றும் காச்சி • எரிக் வான்ஜாவ் | +| 13 | சுவையான ஆசிய மற்றும் இந்திய சமையல்கள் 🍜 | [Classification](4-Classification/README.md) | உங்கள் மாதிரியை பயன்படுத்தி பரிந்துரைக்கும் வலை பயன்பாட்டை உருவாக்குங்கள் | [Python](4-Classification/4-Applied/README.md) | ஜென் | +| 14 | குழுக்களுக்கான அறிமுகம் | [Clustering](5-Clustering/README.md) | உங்கள் தரவை சுத்தம் செய்து, தயார் செய்து, காட்சிப்படுத்துங்கள்; குழுக்களுக்கான அறிமுகம் | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | ஜென் • எரிக் வான்ஜாவ் | +| 15 | நைஜீரிய இசை ருசிகளை ஆராய்தல் 🎧 | [Clustering](5-Clustering/README.md) | K-மீன்ஸ் குழுக்கள்முறை ஆராயுங்கள் | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | ஜென் • எரிக் வான்ஜாவ் | +| 16 | இயற்கை மொழி செயலாக்கத்திற்கு அறிமுகம் ☕️ | [Natural language processing](6-NLP/README.md) | ஒரு எளிய பாட்டை உருவாக்கி இயற்கை மொழி செயலாக்கத்தின் அடிப்படைகளை கற்றுக்கொள்ளுங்கள் | [Python](6-NLP/1-Introduction-to-NLP/README.md) | ஸ்டீபன் | +| 17 | பொதுவான NLP பணிகள் ☕️ | [Natural language processing](6-NLP/README.md) | மொழி அமைப்புகளுடன் வேலை செய்யும்போது தேவையான பொதுவான பணிகளைப் புரிந்து கொண்டு உங்கள் NLP அறிவை ஆழப்படுத்துங்கள் | [Python](6-NLP/2-Tasks/README.md) | ஸ்டீபன் | | 18 | மொழிபெயர்ப்பு மற்றும் உணர்ச்சி பகுப்பாய்வு ♥️ | [Natural language processing](6-NLP/README.md) | ஜேன் ஆஸ்டினுடன் மொழிபெயர்ப்பு மற்றும் உணர்ச்சி பகுப்பாய்வு | [Python](6-NLP/3-Translation-Sentiment/README.md) | ஸ்டீபன் | -| 19 | ஐரோப்பாவின் காதலான ஹோட்டல்கள் ♥️ | [Natural language processing](6-NLP/README.md) | ஹோட்டல் விமர்சனங்களுடன் உணர்ச்சி பகுப்பாய்வு 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | ஸ்டீபன் | -| 20 | ஐரோப்பாவின் காதலான ஹோட்டல்கள் ♥️ | [Natural language processing](6-NLP/README.md) | ஹோட்டல் விமர்சனங்களுடன் உணர்ச்சி பகுப்பாய்வு 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | ஸ்டீபன் | -| 21 | நேரம் தொடர் முன்னறிவிப்பு அறிமுகம் | [Time series](7-TimeSeries/README.md) | நேரம் தொடர் முன்னறிவிப்பு அறிமுகம் | [Python](7-TimeSeries/1-Introduction/README.md) | பிரான்செஸ்கா | -| 22 | ⚡️ உலக மின்சார பயன்பாடு ⚡️ - ARIMA உடன் நேரம் தொடர் முன்னறிவிப்பு | [Time series](7-TimeSeries/README.md) | ARIMA உடன் நேரம் தொடர் முன்னறிவிப்பு | [Python](7-TimeSeries/2-ARIMA/README.md) | பிரான்செஸ்கா | -| 23 | ⚡️ உலக மின்சார பயன்பாடு ⚡️ - SVR உடன் நேரம் தொடர் முன்னறிவிப்பு | [Time series](7-TimeSeries/README.md) | ஆதரவு வெக்டர் ரிக்ரெசருடன் நேரம் தொடர் முன்னறிவிப்பு | [Python](7-TimeSeries/3-SVR/README.md) | அனிர்பன் | -| 24 | பலகூறு கற்றலுக்கு அறிமுகம் | [Reinforcement learning](8-Reinforcement/README.md) | Q-லெர்னிங் மூலம் பலகூறு கற்றலுக்கு அறிமுகம் | [Python](8-Reinforcement/1-QLearning/README.md) | திமித்ரி | -| 25 | பீட்டரை ஓநாயை தவிர்க்க உதவுங்கள்! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | பலகூறு கற்றல் ஜிம் | [Python](8-Reinforcement/2-Gym/README.md) | திமித்ரி | -| Postscript | உண்மையான உலக மெஷின் லெர்னிங் சூழல்கள் மற்றும் பயன்பாடுகள் | [ML in the Wild](9-Real-World/README.md) | பாரம்பரிய மெஷின் லெர்னிங்கின் சுவாரஸ்யமான மற்றும் வெளிப்படையான உண்மையான உலக பயன்பாடுகள் | [Lesson](9-Real-World/1-Applications/README.md) | குழு | -| Postscript | RAI டாஷ்போர்டை பயன்படுத்தி மெஷின் லெர்னிங் மாதிரிகளை பிழை திருத்துதல் | [ML in the Wild](9-Real-World/README.md) | பொறுப்பான AI டாஷ்போர்டு கூறுகளைப் பயன்படுத்தி மெஷின் லெர்னிங் மாதிரிகளை பிழை திருத்துதல் | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | ரூத் யாகுபு | - -> [இந்த பாடநெறிக்கான கூடுதல் வளங்களை எங்கள் Microsoft Learn தொகுப்பில் காணவும்](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 19 | ஐரோப்பிய காதல் விடுதிகள் ♥️ | [Natural language processing](6-NLP/README.md) | விடுதி விமர்சனங்களுடன் உணர்ச்சி பகுப்பாய்வு 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | ஸ்டீபன் | +| 20 | ஐரோப்பிய காதல் விடுதிகள் ♥️ | [Natural language processing](6-NLP/README.md) | விடுதி விமர்சனங்களுடன் உணர்ச்சி பகுப்பாய்வு 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | ஸ்டீபன் | +| 21 | கால வரிசை முன்னறிவிப்பிற்கு அறிமுகம் | [Time series](7-TimeSeries/README.md) | கால வரிசை முன்னறிவிப்பிற்கு அறிமுகம் | [Python](7-TimeSeries/1-Introduction/README.md) | பிரான்செஸ்கா | +| 22 | ⚡️ உலக சக்தி பயன்பாடு ⚡️ - ARIMA உடன் கால வரிசை முன்னறிவிப்பு | [Time series](7-TimeSeries/README.md) | ARIMA உடன் கால வரிசை முன்னறிவிப்பு | [Python](7-TimeSeries/2-ARIMA/README.md) | பிரான்செஸ்கா | +| 23 | ⚡️ உலக சக்தி பயன்பாடு ⚡️ - SVR உடன் கால வரிசை முன்னறிவிப்பு | [Time series](7-TimeSeries/README.md) | ஆதரவு வெக்டர் பின்வட்டியுடன் கால வரிசை முன்னறிவிப்பு | [Python](7-TimeSeries/3-SVR/README.md) | அனிர்பன் | +| 24 | பலவீனக் கற்றலுக்கான அறிமுகம் | [Reinforcement learning](8-Reinforcement/README.md) | Q-கற்றலுடன் பலவீனக் கற்றலுக்கான அறிமுகம் | [Python](8-Reinforcement/1-QLearning/README.md) | ட்மிட்ரி | +| 25 | பீட்டர் ஓநாயைத் தவிர்க்க உதவுங்கள்! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | பலவீனக் கற்றல் ஜிம் | [Python](8-Reinforcement/2-Gym/README.md) | ட்மிட்ரி | +| Postscript | உண்மையான உலக இயந்திரக் கற்றல் சூழல்கள் மற்றும் பயன்பாடுகள் | [ML in the Wild](9-Real-World/README.md) | பாரம்பரிய இயந்திரக் கற்றலின் சுவாரஸ்யமான மற்றும் வெளிப்படுத்தும் உண்மையான உலக பயன்பாடுகள் | [Lesson](9-Real-World/1-Applications/README.md) | குழு | +| Postscript | RAI டாஷ்போர்டைப் பயன்படுத்தி இயந்திரக் கற்றலில் மாதிரி பிழைத்திருத்தல் | [ML in the Wild](9-Real-World/README.md) | பொறுப்பான AI டாஷ்போர்டு கூறுகளைப் பயன்படுத்தி இயந்திரக் கற்றலில் மாதிரி பிழைத்திருத்தல் | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | ரூத் யாகுபு | + +> [இந்த பாடத்திட்டத்திற்கான அனைத்து கூடுதல் வளங்களையும் எங்கள் Microsoft Learn தொகுப்பில் காண்க](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## ஆஃப்லைன் அணுகல் -இந்த ஆவணங்களை ஆஃப்லைனில் இயக்க [Docsify](https://docsify.js.org/#/) ஐப் பயன்படுத்தலாம். இந்த ரெப்போவை ஃபார்க் செய்யவும், உங்கள் உள்ளூர் கணினியில் [Docsify ஐ நிறுவவும்](https://docsify.js.org/#/quickstart), பின்னர் இந்த ரெப்போவின் மூல கோப்புறையில் `docsify serve` என தட்டச்சு செய்யவும். இணையதளம் உங்கள் லோகல் ஹோஸ்டில்: `localhost:3000` இல் 3000 போர்டில் வழங்கப்படும். +[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) காணவும். +பாடத்திட்டத்தின் PDF ஐ இணைப்புகளுடன் [இங்கே](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) காண்க. + -## 🎒 பிற பாடநெறிகள் +## 🎒 பிற பாடநெறிகள் எங்கள் குழு பிற பாடநெறிகளையும் உருவாக்குகிறது! பாருங்கள்: -### Azure / Edge / MCP / ஏஜென்ட்கள் + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + +### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) [![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) [![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### ஜெனரேட்டிவ் AI தொடர் + +### உருவாக்கும் AI தொடர் [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - -### மையக் கற்றல் -[![ML தொடக்கத்திற்கான பாடங்கள்](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![தகவல் அறிவியல் தொடக்கத்திற்கான பாடங்கள்](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI தொடக்கத்திற்கான பாடங்கள்](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![சைபர் பாதுகாப்பு தொடக்கத்திற்கான பாடங்கள்](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![வலை வளர்ச்சி தொடக்கத்திற்கான பாடங்கள்](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT தொடக்கத்திற்கான பாடங்கள்](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR வளர்ச்சி தொடக்கத்திற்கான பாடங்கள்](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +### முக்கியக் கற்றல் +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### கோபைலட் தொடர் +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot தொடர் -[![AI இணை நிரலாக்கத்திற்கான Copilot](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![C#/.NET-க்கு Copilot](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot சாகசம்](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +## உதவி பெறுதல் -## உதவி பெறுதல் +நீங்கள் சிக்கலில் இருந்தால் அல்லது AI செயலிகளை உருவாக்குவதில் ஏதேனும் கேள்விகள் இருந்தால், MCP பற்றி விவாதங்களில் பங்கேற்க fellow learners மற்றும் அனுபவமிக்க டெவலப்பர்களுடன் சேருங்கள். கேள்விகள் வரவேற்கப்படுகின்றன மற்றும் அறிவு சுதந்திரமாக பகிரப்படுகிறது என்ற ஆதரவான சமூகமாக இது உள்ளது. -AI பயன்பாடுகளை உருவாக்குவதில் சிக்கலாக இருந்தால் அல்லது கேள்விகள் இருந்தால், MCP பற்றிய விவாதங்களில் மற்ற பயிற்சியாளர்கள் மற்றும் அனுபவமுள்ள டெவலப்பர்களுடன் சேருங்கள். இது ஒரு ஆதரவு சமூகமாகும், கேள்விகள் வரவேற்கப்படுகின்றன மற்றும் அறிவு இலவசமாக பகிரப்படுகிறது. - -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -தயாரிப்பு கருத்துகள் அல்லது பிழைகள் இருந்தால், கீழே உள்ள இணைப்பில் செல்லவும்: +உற்பத்தி கருத்து அல்லது பிழைகள் இருந்தால், கட்டுமானத்தின் போது பார்வையிடவும்: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**அறிவிப்பு**: -இந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையை பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கிறோம், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கக்கூடும் என்பதை கவனத்தில் கொள்ளவும். அதன் சொந்த மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்களுக்கும் அல்லது தவறான விளக்கங்களுக்கும் நாங்கள் பொறுப்பல்ல. +**குறிப்பு**: +இந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) மூலம் மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சித்தாலும், தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கக்கூடும் என்பதை தயவுசெய்து கவனிக்கவும். அசல் ஆவணம் அதன் சொந்த மொழியில் அதிகாரப்பூர்வ மூலமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பை பரிந்துரைக்கிறோம். இந்த மொழிபெயர்ப்பின் பயன்பாட்டால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கும் நாங்கள் பொறுப்பேற்கமாட்டோம். \ No newline at end of file diff --git a/translations/te/1-Introduction/1-intro-to-ML/README.md b/translations/te/1-Introduction/1-intro-to-ML/README.md new file mode 100644 index 000000000..13d91ef6e --- /dev/null +++ b/translations/te/1-Introduction/1-intro-to-ML/README.md @@ -0,0 +1,161 @@ + +# మెషీన్ లెర్నింగ్ పరిచయం + +## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +--- + +[![ML for beginners - Introduction to Machine Learning for Beginners](https://img.youtube.com/vi/6mSx_KJxcHI/0.jpg)](https://youtu.be/6mSx_KJxcHI "ML for beginners - Introduction to Machine Learning for Beginners") + +> 🎥 ఈ పాఠం ద్వారా పనిచేసే చిన్న వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి. + +క్లాసికల్ మెషీన్ లెర్నింగ్ పై ఈ కోర్సుకు స్వాగతం! మీరు ఈ విషయం గురించి పూర్తిగా కొత్తవారైనా, లేదా ఒక అనుభవజ్ఞులైన ML ప్రాక్టిషనర్ అయినా, మేము మీకు జాయిన్ కావడం ఆనందంగా ఉంది! మేము మీ ML అధ్యయనానికి స్నేహపూర్వక ప్రారంభ స్థలాన్ని సృష్టించాలని కోరుకుంటున్నాము మరియు మీ [ఫీడ్‌బ్యాక్](https://github.com/microsoft/ML-For-Beginners/discussions) ను అంచనా వేయడానికి, స్పందించడానికి మరియు చేర్చడానికి సంతోషిస్తాము. + +[![Introduction to ML](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Introduction to ML") + +> 🎥 వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి: MIT యొక్క జాన్ గుట్‌టాగ్ మెషీన్ లెర్నింగ్‌ను పరిచయం చేస్తున్నారు + +--- +## మెషీన్ లెర్నింగ్‌తో ప్రారంభం + +ఈ పాఠ్యాంశం ప్రారంభించడానికి ముందు, మీ కంప్యూటర్‌ను స్థానికంగా నోట్బుక్స్ నడపడానికి సెట్ చేయాలి. + +- **ఈ వీడియోలతో మీ మెషీన్‌ను కాన్ఫిగర్ చేయండి**. మీ సిస్టమ్‌లో [Python ను ఎలా ఇన్‌స్టాల్ చేయాలో](https://youtu.be/CXZYvNRIAKM) మరియు అభివృద్ధి కోసం [టెక్స్ట్ ఎడిటర్‌ను ఎలా సెట్ చేయాలో](https://youtu.be/EU8eayHWoZg) తెలుసుకోడానికి క్రింది లింకులను ఉపయోగించండి. +- **Python నేర్చుకోండి**. ఈ కోర్సులో ఉపయోగించే డేటా సైంటిస్టులకు ఉపయోగకరమైన ప్రోగ్రామింగ్ భాష అయిన [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) యొక్క ప్రాథమిక అవగాహన కలిగి ఉండటం సిఫార్సు చేయబడింది. +- **Node.js మరియు JavaScript నేర్చుకోండి**. వెబ్ యాప్స్ నిర్మాణంలో ఈ కోర్సులో JavaScript ను కొన్ని సార్లు ఉపయోగిస్తాము, కాబట్టి [node](https://nodejs.org) మరియు [npm](https://www.npmjs.com/) ఇన్‌స్టాల్ చేయాలి, అలాగే Python మరియు JavaScript అభివృద్ధికి [Visual Studio Code](https://code.visualstudio.com/) అందుబాటులో ఉండాలి. +- **GitHub ఖాతా సృష్టించండి**. మీరు ఇక్కడ [GitHub](https://github.com) లో మమ్మల్ని కనుగొన్నందున, మీకు ఇప్పటికే ఖాతా ఉండవచ్చు, లేకపోతే ఒకటి సృష్టించి ఈ పాఠ్యాంశాన్ని ఫోర్క్ చేసుకోండి. (మాకు ఒక స్టార్ ఇవ్వడం మర్చిపోకండి 😊) +- **Scikit-learn ను అన్వేషించండి**. ఈ పాఠాలలో సూచించే ML లైబ్రరీల సమాహారం అయిన [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) తో పరిచయం అవ్వండి. + +--- +## మెషీన్ లెర్నింగ్ అంటే ఏమిటి? + +'మెషీన్ లెర్నింగ్' అనే పదం ఈ రోజుల్లో అత్యంత ప్రాచుర్యం పొందిన మరియు తరచుగా ఉపయోగించే పదాలలో ఒకటి. మీరు టెక్నాలజీతో కొంత పరిచయం ఉన్నట్లయితే, మీరు ఈ పదాన్ని కనీసం ఒకసారి వినే అవకాశం ఉంది, మీరు ఏ రంగంలో పనిచేస్తున్నా సరే. అయితే మెషీన్ లెర్నింగ్ యొక్క యాంత్రికత చాలా మందికి రహస్యమే. ఒక మెషీన్ లెర్నింగ్ ప్రారంభకుడికి, ఈ విషయం కొన్నిసార్లు భయంకరంగా అనిపించవచ్చు. అందుకే, మెషీన్ లెర్నింగ్ నిజంగా ఏమిటి అనే దానిని అర్థం చేసుకోవడం మరియు దాన్ని ప్రాక్టికల్ ఉదాహరణల ద్వారా దశలవారీగా నేర్చుకోవడం ముఖ్యం. + +--- +## హైప్ కర్వ్ + +![ml hype curve](../../../../translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.te.png) + +> గూగుల్ ట్రెండ్స్ 'మెషీన్ లెర్నింగ్' పదం యొక్క తాజా 'హైప్ కర్వ్' ను చూపిస్తుంది + +--- +## ఒక రహస్యమైన విశ్వం + +మనం ఆసక్తికరమైన రహస్యాలతో నిండిన విశ్వంలో జీవిస్తున్నాము. స్టీఫెన్ హాకింగ్, ఆల్బర్ట్ ఐన్‌స్టీన్ వంటి గొప్ప శాస్త్రవేత్తలు మరియు మరెన్నో వారు మన చుట్టూ ఉన్న ప్రపంచ రహస్యాలను వెలికితీయడానికి అర్థవంతమైన సమాచారాన్ని వెతుకుతూ తమ జీవితాలను అంకితం చేశారు. ఇది మానవుల నేర్చుకునే స్వభావం: ఒక మానవ శిశువు కొత్త విషయాలను నేర్చుకుంటూ, వారి ప్రపంచ నిర్మాణాన్ని సంవత్సరాలుగా తెలుసుకుంటూ పెద్దవాడవుతుంది. + +--- +## పిల్లల మెదడు + +పిల్లల మెదడు మరియు ఇంద్రియాలు వారి చుట్టూ ఉన్న వాస్తవాలను గ్రహించి, జీవితం యొక్క దాగి ఉన్న నమూనాలను క్రమంగా నేర్చుకుంటాయి, ఇవి పిల్లలకు నేర్చుకున్న నమూనాలను గుర్తించడానికి తార్కిక నియమాలను రూపొందించడంలో సహాయపడతాయి. మానవ మెదడు యొక్క నేర్చుకునే ప్రక్రియ మానవులను ఈ ప్రపంచంలో అత్యంత సున్నితమైన జీవిగా చేస్తుంది. దాగి ఉన్న నమూనాలను కనుగొని, ఆ నమూనాలపై సృజనాత్మకత చూపుతూ నిరంతరం నేర్చుకోవడం మన జీవితకాలం మొత్తం మనల్ని మెరుగుపరుస్తుంది. ఈ నేర్చుకునే సామర్థ్యం మరియు అభివృద్ధి చెందే సామర్థ్యం [బ్రెయిన్ ప్లాస్టిసిటీ](https://www.simplypsychology.org/brain-plasticity.html) అనే భావనతో సంబంధం కలిగి ఉంది. ఉపరితలంగా, మానవ మెదడు యొక్క నేర్చుకునే ప్రక్రియ మరియు మెషీన్ లెర్నింగ్ భావనల మధ్య కొన్ని ప్రేరణాత్మక సమానతలను గీయవచ్చు. + +--- +## మానవ మెదడు + +[మానవ మెదడు](https://www.livescience.com/29365-human-brain.html) వాస్తవ ప్రపంచం నుండి విషయాలను గ్రహించి, గ్రహించిన సమాచారాన్ని ప్రాసెస్ చేసి, తార్కిక నిర్ణయాలు తీసుకుని, పరిస్థితుల ఆధారంగా కొన్ని చర్యలను నిర్వహిస్తుంది. దీన్ని మేధోమయంగా ప్రవర్తించడం అంటారు. మేధోమయ ప్రవర్తనా ప్రక్రియ యొక్క ఒక ప్రతిరూపాన్ని యంత్రానికి ప్రోగ్రామ్ చేస్తే, దాన్ని కృత్రిమ మేధస్సు (AI) అంటారు. + +--- +## కొన్ని పదజాలం + +పదాలు గందరగోళంగా ఉండవచ్చు, కానీ మెషీన్ లెర్నింగ్ (ML) కృత్రిమ మేధస్సు యొక్క ఒక ముఖ్యమైన ఉపసమూహం. **ML ప్రత్యేక అల్గోరిథమ్స్ ఉపయోగించి గ్రహించిన డేటా నుండి అర్థవంతమైన సమాచారాన్ని కనుగొని దాగి ఉన్న నమూనాలను గుర్తించి, తార్కిక నిర్ణయ ప్రక్రియను బలపరచడంలో ఆసక్తి కలిగి ఉంటుంది**. + +--- +## AI, ML, డీప్ లెర్నింగ్ + +![AI, ML, deep learning, data science](../../../../translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.te.png) + +> AI, ML, డీప్ లెర్నింగ్ మరియు డేటా సైన్స్ మధ్య సంబంధాలను చూపించే డయాగ్రామ్. ఇన్ఫోగ్రాఫిక్ [జెన్ లూపర్](https://twitter.com/jenlooper) ద్వారా, ఈ గ్రాఫిక్ ఆధారంగా [ఇది](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) + +--- +## కవర్ చేయాల్సిన భావనలు + +ఈ పాఠ్యాంశంలో, ప్రారంభకుడు తెలుసుకోవలసిన మెషీన్ లెర్నింగ్ యొక్క ప్రాథమిక భావనలను మాత్రమే కవర్ చేయబోతున్నాము. మేము 'క్లాసికల్ మెషీన్ లెర్నింగ్' అని పిలిచే వాటిని ప్రధానంగా Scikit-learn ఉపయోగించి కవర్ చేస్తాము, ఇది చాలా మంది విద్యార్థులు ప్రాథమికాలు నేర్చుకోవడానికి ఉపయోగించే అద్భుతమైన లైబ్రరీ. కృత్రిమ మేధస్సు లేదా డీప్ లెర్నింగ్ యొక్క విస్తృత భావనలను అర్థం చేసుకోవడానికి, మెషీన్ లెర్నింగ్ యొక్క బలమైన ప్రాథమిక జ్ఞానం అవసరం, అందుకే మేము దీన్ని ఇక్కడ అందించాలనుకుంటున్నాము. + +--- +## ఈ కోర్సులో మీరు నేర్చుకుంటారు: + +- మెషీన్ లెర్నింగ్ యొక్క ప్రాథమిక భావనలు +- ML చరిత్ర +- ML మరియు న్యాయం +- రిగ్రెషన్ ML సాంకేతికతలు +- క్లాసిఫికేషన్ ML సాంకేతికతలు +- క్లస్టరింగ్ ML సాంకేతికతలు +- సహజ భాషా ప్రాసెసింగ్ ML సాంకేతికతలు +- టైమ్ సిరీస్ ఫోర్కాస్టింగ్ ML సాంకేతికతలు +- రీఇన్ఫోర్స్‌మెంట్ లెర్నింగ్ +- ML కోసం వాస్తవ ప్రపంచ అనువర్తనాలు + +--- +## మేము కవర్ చేయనిదే + +- డీప్ లెర్నింగ్ +- న్యూరల్ నెట్‌వర్క్స్ +- AI + +మంచి నేర్చుకునే అనుభవం కోసం, మేము న్యూరల్ నెట్‌వర్క్స్, 'డీప్ లెర్నింగ్' - న్యూరల్ నెట్‌వర్క్స్ ఉపయోగించి బహుళ-పొరల మోడల్ నిర్మాణం - మరియు AI యొక్క క్లిష్టతలను తప్పించుకుంటాము, ఇవి వేరే పాఠ్యాంశంలో చర్చిస్తాము. మేము ఈ పెద్ద రంగంలో డేటా సైన్స్ పై దృష్టి పెట్టే రాబోయే పాఠ్యాంశాన్ని కూడా అందిస్తాము. + +--- +## ఎందుకు మెషీన్ లెర్నింగ్ నేర్చుకోవాలి? + +సిస్టమ్స్ దృష్టికోణం నుండి, మెషీన్ లెర్నింగ్ అనేది డేటా నుండి దాగి ఉన్న నమూనాలను నేర్చుకుని, మేధోమయ నిర్ణయాలు తీసుకోవడంలో సహాయపడే ఆటోమేటెడ్ సిస్టమ్స్ సృష్టించడం అని నిర్వచించబడింది. + +ఈ ప్రేరణ మానవ మెదడు బయట ప్రపంచం నుండి గ్రహించే డేటా ఆధారంగా కొన్ని విషయాలను ఎలా నేర్చుకుంటుందో దానితో సన్నిహితంగా ప్రేరేపించబడింది. + +✅ ఒక నిమిషం ఆలోచించండి, ఒక వ్యాపారం ఎందుకు హార్డ్-కోడ్ చేసిన నియమాల ఇంజిన్ సృష్టించడంకంటే మెషీన్ లెర్నింగ్ వ్యూహాలను ఉపయోగించాలనుకుంటుంది. + +--- +## మెషీన్ లెర్నింగ్ అనువర్తనాలు + +మెషీన్ లెర్నింగ్ అనువర్తనాలు ఇప్పుడు దాదాపు ప్రతిదీ చోట్ల ఉన్నాయి, మరియు మన సమాజాల్లో ప్రవహిస్తున్న డేటా లాంటివి, మన స్మార్ట్ ఫోన్లు, కనెక్ట్ అయిన పరికరాలు మరియు ఇతర సిస్టమ్స్ ద్వారా ఉత్పత్తి అవుతున్నాయి. ఆధునిక మెషీన్ లెర్నింగ్ అల్గోరిథమ్స్ యొక్క అపారమైన సామర్థ్యాన్ని పరిగణనలోకి తీసుకుంటే, పరిశోధకులు బహుళ-పరిమాణ మరియు బహుళ-శాస్త్రీయ వాస్తవ జీవిత సమస్యలను గొప్ప సానుకూల ఫలితాలతో పరిష్కరించడానికి వారి సామర్థ్యాన్ని అన్వేషిస్తున్నారు. + +--- +## అన్వయించిన ML ఉదాహరణలు + +**మీరు మెషీన్ లెర్నింగ్‌ను అనేక విధాల ఉపయోగించవచ్చు**: + +- రోగి వైద్య చరిత్ర లేదా నివేదికల నుండి వ్యాధి సంభావ్యతను అంచనా వేయడానికి. +- వాతావరణ డేటాను ఉపయోగించి వాతావరణ సంఘటనలను అంచనా వేయడానికి. +- ఒక టెక్స్ట్ యొక్క భావాన్ని అర్థం చేసుకోవడానికి. +- ప్రచారం వ్యాప్తిని ఆపడానికి ఫేక్ న్యూస్‌ను గుర్తించడానికి. + +ఫైనాన్స్, ఆర్థిక శాస్త్రం, భూగర్భ శాస్త్రం, అంతరిక్ష అన్వేషణ, బయోమెడికల్ ఇంజనీరింగ్, జ్ఞాన శాస్త్రం మరియు మానవ శాస్త్రాలలో కూడా తమ రంగంలోని క్లిష్టమైన, డేటా-ప్రాసెసింగ్ భారమైన సమస్యలను పరిష్కరించడానికి మెషీన్ లెర్నింగ్‌ను అనుసరించారు. + +--- +## ముగింపు + +మెషీన్ లెర్నింగ్ వాస్తవ ప్రపంచం లేదా ఉత్పత్తి చేసిన డేటా నుండి అర్థవంతమైన అవగాహనలను కనుగొని నమూనాలను స్వయంచాలకంగా కనుగొంటుంది. ఇది వ్యాపారం, ఆరోగ్యం, ఆర్థిక అనువర్తనాలలో అత్యంత విలువైనదిగా నిరూపించుకుంది. + +సమీప భవిష్యత్తులో, మెషీన్ లెర్నింగ్ యొక్క ప్రాథమికాలను అర్థం చేసుకోవడం ఏ రంగం నుండి వచ్చిన వారికైనా తప్పనిసరి అవుతుంది, ఎందుకంటే దీని విస్తృతమైన స్వీకరణ ఉంది. + +--- +# 🚀 సవాలు + +[Excalidraw](https://excalidraw.com/) వంటి ఆన్‌లైన్ యాప్ లేదా కాగితం మీద, AI, ML, డీప్ లెర్నింగ్ మరియు డేటా సైన్స్ మధ్య తేడాలను మీ అవగాహనను స్కెచ్ చేయండి. ఈ సాంకేతికతలు ఏ సమస్యలను పరిష్కరించడంలో మంచి అనుభవం కలిగి ఉన్నాయో కొన్ని ఆలోచనలు జోడించండి. + +# [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +--- +# సమీక్ష & స్వీయ అధ్యయనం + +క్లౌడ్‌లో ML అల్గోరిథమ్స్‌తో ఎలా పని చేయాలో మరింత తెలుసుకోవడానికి, ఈ [లెర్నింగ్ పాత్](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott) ను అనుసరించండి. + +ML ప్రాథమికాల గురించి ఒక [లెర్నింగ్ పాత్](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-77952-leestott) తీసుకోండి. + +--- +# అసైన్‌మెంట్ + +[Get up and running](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/1-Introduction/1-intro-to-ML/assignment.md b/translations/te/1-Introduction/1-intro-to-ML/assignment.md new file mode 100644 index 000000000..5086969a5 --- /dev/null +++ b/translations/te/1-Introduction/1-intro-to-ML/assignment.md @@ -0,0 +1,25 @@ + +# Get Up and Running + +## సూచనలు + +ఈ గ్రేడ్ లేని అసైన్‌మెంట్‌లో, మీరు Python పై పునఃసమీక్ష చేయాలి మరియు మీ వాతావరణాన్ని సెట్ చేసి నోట్బుక్స్ నడపగలగాలి. + +ఈ [Python Learning Path](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) తీసుకోండి, ఆపై ఈ పరిచయ వీడియోలను చూసి మీ సిస్టమ్స్ సెట్ చేయండి: + +https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/1-Introduction/2-history-of-ML/README.md b/translations/te/1-Introduction/2-history-of-ML/README.md new file mode 100644 index 000000000..321335761 --- /dev/null +++ b/translations/te/1-Introduction/2-history-of-ML/README.md @@ -0,0 +1,167 @@ + +# మెషీన్ లెర్నింగ్ చరిత్ర + +![మెషీన్ లెర్నింగ్ చరిత్ర యొక్క సారాంశం స్కెచ్ నోట్‌లో](../../../../translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.te.png) +> స్కెచ్ నోట్ [టోమోమీ ఇమురా](https://www.twitter.com/girlie_mac) ద్వారా + +## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +--- + +[![ప్రారంభికుల కోసం ML - మెషీన్ లెర్నింగ్ చరిత్ర](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "ప్రారంభికుల కోసం ML - మెషీన్ లెర్నింగ్ చరిత్ర") + +> 🎥 ఈ పాఠం ద్వారా పనిచేసే చిన్న వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి. + +ఈ పాఠంలో, మేము మెషీన్ లెర్నింగ్ మరియు ఆర్టిఫిషియల్ ఇంటెలిజెన్స్ చరిత్రలో ప్రధాన మైలురాళ్లను పరిశీలిస్తాము. + +ఆర్టిఫిషియల్ ఇంటెలిజెన్స్ (AI) రంగంగా చరిత్ర మెషీన్ లెర్నింగ్ చరిత్రతో అనుసంధానంగా ఉంది, ఎందుకంటే ML ఆధారంగా ఉన్న అల్గోరిథమ్స్ మరియు కంప్యూటేషనల్ అభివృద్ధులు AI అభివృద్ధికి సహకరించాయి. ఈ రంగాలు 1950లలో ప్రత్యేక పరిశోధనా ప్రాంతాలుగా crystallize కావడం ప్రారంభమైనప్పటికీ, ముఖ్యమైన [అల్గోరిథమిక్, గణాంక, గణిత, కంప్యూటేషనల్ మరియు సాంకేతిక ఆవిష్కరణలు](https://wikipedia.org/wiki/Timeline_of_machine_learning) ఈ కాలాన్ని మించి మరియు సమాంతరంగా ఉన్నాయి. వాస్తవానికి, ఈ ప్రశ్నల గురించి మనుషులు [నూరేళ్లుగా](https://wikipedia.org/wiki/History_of_artificial_intelligence) ఆలోచిస్తున్నారు: ఈ వ్యాసం 'ఆలోచించే యంత్రం' అనే ఆలోచన యొక్క చారిత్రక మేధో ఆధారాలను చర్చిస్తుంది. + +--- +## ముఖ్యమైన ఆవిష్కరణలు + +- 1763, 1812 [బేస్ సిద్ధాంతం](https://wikipedia.org/wiki/Bayes%27_theorem) మరియు దాని పూర్వీకులు. ఈ సిద్ధాంతం మరియు దాని అనువర్తనాలు అనుమానాన్ని ఆధారపడి, ఒక సంఘటన జరిగే సంభావ్యతను వివరించును. +- 1805 [లీస్ట్ స్క్వేర్ సిద్ధాంతం](https://wikipedia.org/wiki/Least_squares) ఫ్రెంచ్ గణిత శాస్త్రజ్ఞుడు అడ్రియన్-మారీ లెజాండ్రే ద్వారా. ఈ సిద్ధాంతం, మీరు మా రిగ్రెషన్ యూనిట్‌లో నేర్చుకుంటారు, డేటా ఫిట్టింగ్‌లో సహాయపడుతుంది. +- 1913 [మార్కోవ్ చైన్స్](https://wikipedia.org/wiki/Markov_chain), రష్యన్ గణిత శాస్త్రజ్ఞుడు ఆండ్రే మార్కోవ్ పేరుతో, ఒక గత స్థితిపై ఆధారపడి సంభవించే సంఘటనల శ్రేణిని వివరించడానికి ఉపయోగిస్తారు. +- 1957 [పర్సెప్ట్రాన్](https://wikipedia.org/wiki/Perceptron) అమెరికన్ సైకాలజిస్ట్ ఫ్రాంక్ రోజెన్‌బ్లాట్ ఆవిష్కరించిన ఒక రేఖీయ వర్గీకరణ పద్ధతి, దీని ఆధారంగా డీప్ లెర్నింగ్ అభివృద్ధి జరిగింది. + +--- + +- 1967 [నియరెస్ట్ నైబర్](https://wikipedia.org/wiki/Nearest_neighbor) మొదట రూట్లను మ్యాప్ చేయడానికి రూపొందించిన అల్గోరిథం. ML సందర్భంలో ఇది నమూనాలను గుర్తించడానికి ఉపయోగిస్తారు. +- 1970 [బ్యాక్‌ప్రొపగేషన్](https://wikipedia.org/wiki/Backpropagation) [ఫీడ్‌ఫార్వర్డ్ న్యూరల్ నెట్‌వర్క్స్](https://wikipedia.org/wiki/Feedforward_neural_network) శిక్షణకు ఉపయోగిస్తారు. +- 1982 [రికరెంట్ న్యూరల్ నెట్‌వర్క్స్](https://wikipedia.org/wiki/Recurrent_neural_network) ఫీడ్‌ఫార్వర్డ్ న్యూరల్ నెట్‌వర్క్స్ నుండి ఉద్భవించిన కృత్రిమ న్యూరల్ నెట్‌వర్క్స్, ఇవి కాలానుగుణ గ్రాఫ్‌లను సృష్టిస్తాయి. + +✅ కొంత పరిశోధన చేయండి. ML మరియు AI చరిత్రలో మరే ఇతర తేదీలు కీలకమైనవిగా కనిపిస్తున్నాయా? + +--- +## 1950: ఆలోచించే యంత్రాలు + +అలన్ ట్యూరింగ్, 2019లో [ప్రజల చేత](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 20వ శతాబ్దంలో గొప్ప శాస్త్రవేత్తగా ఎన్నుకోబడిన అసాధారణ వ్యక్తి, 'ఆలోచించే యంత్రం' అనే భావనకు పునాది వేసినవాడిగా గుర్తించబడ్డాడు. ఈ భావనకు సంబంధించిన అనుమానాలను మరియు తన స్వంత అనుభవ ఆధారాలను ఎదుర్కొంటూ, [ట్యూరింగ్ టెస్ట్](https://www.bbc.com/news/technology-18475646) ను సృష్టించాడు, దీన్ని మీరు మా NLP పాఠాలలో అన్వేషిస్తారు. + +--- +## 1956: డార్ట్‌మౌత్ సమ్మర్ రీసెర్చ్ ప్రాజెక్ట్ + +"డార్ట్‌మౌత్ సమ్మర్ రీసెర్చ్ ప్రాజెక్ట్ ఆర్టిఫిషియల్ ఇంటెలిజెన్స్ పై ఒక ప్రాముఖ్యమైన సంఘటన," మరియు ఇక్కడే 'ఆర్టిఫిషియల్ ఇంటెలిజెన్స్' అనే పదం రూపొందించబడింది ([మూలం](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). + +> నేర్చుకునే ప్రతి అంశం లేదా ఇంటెలిజెన్స్ యొక్క ఏ ఇతర లక్షణం సూత్రంగా అంతగా ఖచ్చితంగా వివరించబడవచ్చు, అప్పుడు ఒక యంత్రం దాన్ని అనుకరించగలదు. + +--- + +ముఖ్య పరిశోధకుడు, గణిత శాస్త్ర ప్రొఫెసర్ జాన్ మెకార్తీ, "నేర్చుకునే ప్రతి అంశం లేదా ఇంటెలిజెన్స్ యొక్క ఏ ఇతర లక్షణం సూత్రంగా అంతగా ఖచ్చితంగా వివరించబడవచ్చు, అప్పుడు ఒక యంత్రం దాన్ని అనుకరించగలదు" అనే ఊహాపోకును ఆధారంగా ముందుకు సాగాలని ఆశించాడు. పాల్గొనేవారిలో మరొక ప్రముఖుడు మార్విన్ మిన్స్కీ కూడా ఉన్నారు. + +ఈ వర్క్‌షాప్ "సింబాలిక్ పద్ధతుల పెరుగుదల, పరిమిత డొమైన్‌లపై కేంద్రీకృత వ్యవస్థలు (ప్రారంభ నిపుణుల వ్యవస్థలు), మరియు డెడక్టివ్ వ్యవస్థలు వర్సెస్ ఇండక్టివ్ వ్యవస్థలు" వంటి చర్చలను ప్రారంభించి ప్రోత్సహించిందని గుర్తించబడింది ([మూలం](https://wikipedia.org/wiki/Dartmouth_workshop)). + +--- +## 1956 - 1974: "సువర్ణ యుగం" + +1950ల నుండి మధ్య 70ల వరకు, AI అనేక సమస్యలను పరిష్కరించగలదని ఆశలు ఎక్కువగా ఉండేవి. 1967లో, మార్విన్ మిన్స్కీ ధైర్యంగా "ఒక తరం లోపల ... 'ఆర్టిఫిషియల్ ఇంటెలిజెన్స్' సృష్టించే సమస్య సార్వత్రికంగా పరిష్కరించబడుతుంది" అని ప్రకటించాడు. (మిన్స్కీ, మార్విన్ (1967), కంప్యూటేషన్: ఫైనైట్ అండ్ ఇన్ఫినైట్ మెషీన్స్, ఎంగిల్వుడ్ క్లిఫ్స్, N.J.: ప్రెంటిస్-హాల్) + +ప్రాకృతిక భాషా ప్రాసెసింగ్ పరిశోధన అభివృద్ధి చెందింది, శోధన మెరుగుపడింది మరియు శక్తివంతమైంది, మరియు 'మైక్రో-ప్రపంచాలు' అనే భావన సృష్టించబడింది, ఇక్కడ సాదా పనులు సాదా భాషా సూచనలతో పూర్తయ్యాయి. + +--- + +ప్రభుత్వ సంస్థల ద్వారా పరిశోధనకు మంచి నిధులు అందించబడ్డాయి, కంప్యూటేషన్ మరియు అల్గోరిథమ్స్‌లో పురోగతి సాధించబడింది, మరియు తెలివైన యంత్రాల నమూనాలు నిర్మించబడ్డాయి. ఈ యంత్రాలలో కొన్ని: + +* [షేకీ రోబోట్](https://wikipedia.org/wiki/Shakey_the_robot), ఇది చురుకైన విధంగా పనులు చేయగలదు మరియు నిర్ణయాలు తీసుకోగలదు. + + ![షేకీ, ఒక తెలివైన రోబోట్](../../../../translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.te.jpg) + > 1972లో షేకీ + +--- + +* ఎలిజా, ఒక ప్రారంభ 'చాటర్‌బాట్', ప్రజలతో సంభాషించగలదు మరియు ప్రాథమిక 'థెరపిస్ట్'గా పనిచేయగలదు. మీరు NLP పాఠాలలో ఎలిజా గురించి మరింత తెలుసుకుంటారు. + + ![ఎలిజా, ఒక బాట్](../../../../translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.te.png) + > ఎలిజా యొక్క ఒక వెర్షన్, ఒక చాట్‌బాట్ + +--- + +* "బ్లాక్స్ వరల్డ్" అనేది ఒక మైక్రో-ప్రపంచం ఉదాహరణ, ఇక్కడ బ్లాక్స్‌ను క్రమబద్ధీకరించి, యంత్రాలను నిర్ణయాలు తీసుకోవడానికి శిక్షణ ఇవ్వడం పరీక్షించబడింది. [SHRDLU](https://wikipedia.org/wiki/SHRDLU) వంటి లైబ్రరీలతో అభివృద్ధి భాషా ప్రాసెసింగ్‌ను ముందుకు తీసుకెళ్లింది. + + [![SHRDLUతో బ్లాక్స్ వరల్డ్](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLUతో బ్లాక్స్ వరల్డ్") + + > 🎥 వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి: SHRDLUతో బ్లాక్స్ వరల్డ్ + +--- +## 1974 - 1980: "AI శీతాకాలం" + +1970ల మధ్యలో, 'తెలివైన యంత్రాలు' తయారీలో ఉన్న క్లిష్టత తక్కువగా అంచనా వేయబడిందని మరియు అందుబాటులో ఉన్న కంప్యూట్ శక్తి పరిమితి కారణంగా వాగ్దానం అధికంగా చూపబడిందని స్పష్టమైంది. నిధులు తగ్గిపోయాయి మరియు రంగంపై నమ్మకం తగ్గింది. నమ్మకాన్ని ప్రభావితం చేసిన కొన్ని సమస్యలు: + +--- +- **పరిమితులు**. కంప్యూట్ శక్తి చాలా పరిమితంగా ఉంది. +- **కాంబినేటోరియల్ పేలుడు**. కంప్యూటర్లకు ఎక్కువగా అడిగిన కొద్దీ శిక్షణకు అవసరమైన పారామితులు గణనీయంగా పెరిగాయి, కానీ కంప్యూట్ శక్తి మరియు సామర్థ్యం సమాంతరంగా అభివృద్ధి కాలేదు. +- **డేటా కొరత**. అల్గోరిథమ్స్‌ను పరీక్షించడం, అభివృద్ధి చేయడం మరియు మెరుగుపరచడం లో డేటా కొరత అడ్డంకిగా నిలిచింది. +- **మనం సరైన ప్రశ్నలు అడుగుతున్నామా?**. అడిగే ప్రశ్నలపై కూడా సందేహాలు వచ్చాయి. పరిశోధకులు తమ విధానాలపై విమర్శలు ఎదుర్కొన్నారు: + - ట్యూరింగ్ టెస్టులు 'చైనీస్ రూమ్ థియరీ' వంటి ఆలోచనల ద్వారా ప్రశ్నించబడ్డాయి, ఇది "డిజిటల్ కంప్యూటర్ ప్రోగ్రామింగ్ భాషను అర్థం చేసుకున్నట్లు కనిపించవచ్చు కానీ నిజమైన అర్థం ఇవ్వలేడు" అని సూచిస్తుంది. ([మూలం](https://plato.stanford.edu/entries/chinese-room/)) + - "థెరపిస్ట్" ఎలిజా వంటి ఆర్టిఫిషియల్ ఇంటెలిజెన్సెస్‌ను సమాజంలో ప్రవేశపెట్టడంపై నైతికత ప్రశ్నించబడింది. + +--- + +అదే సమయంలో, వివిధ AI ఆలోచనా పాఠశాలలు ఏర్పడటం ప్రారంభమయ్యాయి. ["స్క్రఫీ" వర్సెస్ "నీట్ AI"](https://wikipedia.org/wiki/Neats_and_scruffies) మధ్య విభేదం ఏర్పడింది. _స్క్రఫీ_ ప్రయోగశాలలు గంటల తరబడి ప్రోగ్రామ్లను సవరించి కావలసిన ఫలితాలు పొందేవి. _నీట్_ ప్రయోగశాలలు "తర్కం మరియు అధికారిక సమస్య పరిష్కారంపై" దృష్టి పెట్టేవి. ఎలిజా మరియు SHRDLU ప్రసిద్ధ _స్క్రఫీ_ వ్యవస్థలు. 1980లలో, ML వ్యవస్థలను పునరుత్పాదకంగా చేయాలనే డిమాండ్ పెరిగినప్పుడు, _నీట్_ విధానం ముందంజలోకి వచ్చింది ఎందుకంటే దాని ఫలితాలు మరింత వివరణాత్మకంగా ఉంటాయి. + +--- +## 1980ల నిపుణుల వ్యవస్థలు + +రంగం పెరిగేకొద్దీ, వ్యాపారానికి దాని లాభం స్పష్టమైంది, మరియు 1980లలో 'నిపుణుల వ్యవస్థలు' విస్తరించాయి. "నిపుణుల వ్యవస్థలు ఆర్టిఫిషియల్ ఇంటెలిజెన్స్ (AI) సాఫ్ట్‌వేర్ యొక్క మొదటి విజయవంతమైన రూపాలలో ఒకటిగా ఉన్నాయి." ([మూలం](https://wikipedia.org/wiki/Expert_system)). + +ఈ రకం వ్యవస్థ వాస్తవానికి _హైబ్రిడ్_, ఇది భాగంగా వ్యాపార అవసరాలను నిర్వచించే నియమాల ఇంజిన్ మరియు నియమాల వ్యవస్థను ఉపయోగించి కొత్త వాస్తవాలను తేల్చుకునే ఇన్ఫరెన్స్ ఇంజిన్ కలిగి ఉంటుంది. + +ఈ యుగంలో న్యూరల్ నెట్‌వర్క్స్ పై పెరుగుతున్న దృష్టి కూడా కనిపించింది. + +--- +## 1987 - 1993: AI 'చిల్' + +ప్రత్యేక నిపుణుల వ్యవస్థల హార్డ్వేర్ విస్తరణ చాలా ప్రత్యేకంగా మారింది. వ్యక్తిగత కంప్యూటర్ల పెరుగుదల ఈ పెద్ద, ప్రత్యేక, కేంద్రీకృత వ్యవస్థలతో పోటీ పడింది. కంప్యూటింగ్ ప్రజలందరికీ అందుబాటులోకి వచ్చింది, ఇది పెద్ద డేటా విప్లవానికి దారితీసింది. + +--- +## 1993 - 2011 + +ఈ కాలం ML మరియు AIకి కొత్త యుగాన్ని తెచ్చింది, ఇది ముందుగా డేటా మరియు కంప్యూట్ శక్తి కొరత కారణంగా ఏర్పడిన సమస్యలను పరిష్కరించగలిగింది. డేటా పరిమాణం వేగంగా పెరిగింది మరియు విస్తృతంగా అందుబాటులోకి వచ్చింది, ముఖ్యంగా 2007లో స్మార్ట్‌ఫోన్ ఆవిర్భావంతో. కంప్యూట్ శక్తి గణనీయంగా పెరిగింది, అల్గోరిథమ్స్ కూడా అభివృద్ధి చెందాయి. రంగం పూర్వపు స్వేచ్ఛా దశల నుండి ఒక నిజమైన శాస్త్రంగా మారింది. + +--- +## ఇప్పుడు + +ఈ రోజుల్లో మెషీన్ లెర్నింగ్ మరియు AI మన జీవితాల ప్రతి భాగాన్ని స్పర్శిస్తున్నాయి. ఈ యుగం ఈ అల్గోరిథమ్స్ మనుషుల జీవితాలపై కలిగించే ప్రమాదాలు మరియు అవకాశాలను జాగ్రత్తగా అర్థం చేసుకోవాలని కోరుతుంది. మైక్రోసాఫ్ట్ బ్రాడ్ స్మిత్ చెప్పినట్లుగా, "సమాచార సాంకేతికత ప్రైవసీ మరియు వ్యక్తి అభివ్యక్తి స్వేచ్ఛ వంటి మౌలిక మానవ హక్కుల రక్షణకు సంబంధించిన అంశాలను తీసుకువస్తుంది. ఈ ఉత్పత్తులను సృష్టించే సాంకేతిక సంస్థలపై బాధ్యత పెరుగుతుంది. మా దృష్టిలో, ఇది ఆలోచనాత్మక ప్రభుత్వ నియంత్రణ మరియు అనుకూల ఉపయోగాల చుట్టూ నిబంధనల అభివృద్ధిని కూడా కోరుతుంది" ([మూలం](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). + +--- + +భవిష్యత్తు ఏమి తెచ్చిపెడుతుందో చూడాలి, కానీ ఈ కంప్యూటర్ వ్యవస్థలు మరియు అవి నడిపే సాఫ్ట్‌వేర్ మరియు అల్గోరిథమ్స్‌ను అర్థం చేసుకోవడం ముఖ్యం. ఈ పాఠ్యక్రమం మీకు మెరుగైన అవగాహన ఇవ్వాలని మేము ఆశిస్తున్నాము, తద్వారా మీరు స్వయంగా నిర్ణయం తీసుకోవచ్చు. + +[![డీప్ లెర్నింగ్ చరిత్ర](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "డీప్ లెర్నింగ్ చరిత్ర") +> 🎥 ఈ లెక్చర్‌లో డీప్ లెర్నింగ్ చరిత్రను యాన్ లెకన్ చర్చిస్తున్న వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి + +--- +## 🚀సవాలు + +ఈ చారిత్రక క్షణాలలో ఒకదానిలో లోతుగా పరిశోధన చేయండి మరియు వాటి వెనుక ఉన్న వ్యక్తుల గురించి మరింత తెలుసుకోండి. ఆసక్తికరమైన వ్యక్తిత్వాలు ఉన్నాయి, మరియు ఎలాంటి శాస్త్రీయ ఆవిష్కరణ కూడా సాంస్కృతిక ఖాళీలో సృష్టించబడలేదు. మీరు ఏమి కనుగొంటారు? + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +--- +## సమీక్ష & స్వీయ అధ్యయనం + +ఇక్కడ చూడటానికి మరియు వినటానికి అంశాలు ఉన్నాయి: + +[ఈ పోडकాస్ట్‌లో ఎమీ బాయిడ్ AI అభివృద్ధిని చర్చిస్తున్నారు](http://runasradio.com/Shows/Show/739) + +[![ఎమీ బాయిడ్ ద్వారా AI చరిత్ర](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "ఎమీ బాయిడ్ ద్వారా AI చరిత్ర") + +--- + +## అసైన్‌మెంట్ + +[టైమ్‌లైన్ సృష్టించండి](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/1-Introduction/2-history-of-ML/assignment.md b/translations/te/1-Introduction/2-history-of-ML/assignment.md new file mode 100644 index 000000000..bbb5f2401 --- /dev/null +++ b/translations/te/1-Introduction/2-history-of-ML/assignment.md @@ -0,0 +1,27 @@ + +# టైమ్‌లైన్ సృష్టించండి + +## సూచనలు + +[ఈ రిపో](https://github.com/Digital-Humanities-Toolkit/timeline-builder) ఉపయోగించి, అల్గోరిథమ్స్, గణితం, గణాంకాలు, AI, లేదా ML చరిత్రలోని ఏదైనా అంశం లేదా వాటి కలయికపై ఒక టైమ్‌లైన్ సృష్టించండి. మీరు ఒక వ్యక్తి, ఒక ఆలోచన, లేదా దీర్ఘకాలిక ఆలోచనల వ్యవధిపై దృష్టి పెట్టవచ్చు. మల్టీమీడియా అంశాలను జోడించడం తప్పనిసరి. + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైనది | సరిపడినది | మెరుగుదల అవసరం | +| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- | +| | GitHub పేజీగా ఒక డిప్లాయ్ చేసిన టైమ్‌లైన్ అందించబడింది | కోడ్ అసంపూర్ణంగా ఉంది మరియు డిప్లాయ్ చేయబడలేదు | టైమ్‌లైన్ అసంపూర్ణం, బాగా పరిశోధించబడలేదు మరియు డిప్లాయ్ చేయబడలేదు | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/1-Introduction/3-fairness/README.md b/translations/te/1-Introduction/3-fairness/README.md new file mode 100644 index 000000000..7fee47f72 --- /dev/null +++ b/translations/te/1-Introduction/3-fairness/README.md @@ -0,0 +1,172 @@ + +# బాధ్యతాయుత AIతో మెషీన్ లెర్నింగ్ పరిష్కారాలను నిర్మించడం + +![మెషీన్ లెర్నింగ్‌లో బాధ్యతాయుత AI యొక్క సారాంశం స్కెచ్ నోట్](../../../../translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.te.png) +> స్కెచ్ నోట్: [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## పరిచయం + +ఈ పాఠ్యक्रमంలో, మీరు మెషీన్ లెర్నింగ్ మన రోజువారీ జీవితాలను ఎలా ప్రభావితం చేస్తుందో మరియు చేస్తోంది అనేది కనుగొనడం ప్రారంభిస్తారు. ఇప్పటికీ, వ్యవస్థలు మరియు మోడల్స్ ఆరోగ్య సంరక్షణ నిర్ధారణలు, రుణ ఆమోదాలు లేదా మోసం గుర్తింపు వంటి రోజువారీ నిర్ణయాల పనుల్లో పాల్గొంటున్నాయి. కాబట్టి, ఈ మోడల్స్ విశ్వసనీయ ఫలితాలను అందించడానికి బాగా పనిచేయడం ముఖ్యం. ఏ సాఫ్ట్‌వేర్ అప్లికేషన్ లాగా, AI వ్యవస్థలు కూడా అంచనాలను మించిపోవచ్చు లేదా అనుచిత ఫలితాన్ని కలిగించవచ్చు. అందుకే AI మోడల్ యొక్క ప్రవర్తనను అర్థం చేసుకోవడం మరియు వివరించడం చాలా అవసరం. + +మీరు ఈ మోడల్స్ నిర్మించడానికి ఉపయోగిస్తున్న డేటా కొన్ని జనాభా గుంపులను, ఉదాహరణకు జాతి, లింగం, రాజకీయ దృష్టికోణం, మతం లేకుండా లేదా అసమానంగా ప్రతిబింబిస్తే ఏమవుతుంది అని ఊహించండి. మోడల్ అవుట్‌పుట్ కొన్ని జనాభా గుంపులను ప్రాధాన్యం ఇస్తే ఏమవుతుంది? అప్లికేషన్‌కు దాని పరిణామం ఏమిటి? అదనంగా, మోడల్ ప్రతికూల ఫలితాన్ని కలిగించి ప్రజలకు హానికరంగా ఉంటే ఏమవుతుంది? AI వ్యవస్థ ప్రవర్తనకు ఎవరు బాధ్యత వహిస్తారు? ఈ పాఠ్యక్రమంలో మనం ఈ ప్రశ్నలను పరిశీలిస్తాము. + +ఈ పాఠంలో మీరు: + +- మెషీన్ లెర్నింగ్‌లో న్యాయసమ్మతత మరియు న్యాయసమ్మతత సంబంధిత హానుల ప్రాముఖ్యతపై అవగాహన పెంచుకోండి. +- విశ్వసనీయత మరియు భద్రతను నిర్ధారించడానికి అవుట్లయర్స్ మరియు అసాధారణ పరిస్థితులను పరిశీలించే ఆచరణకు పరిచయం పొందండి. +- సమగ్ర వ్యవస్థలను రూపకల్పన చేయడం ద్వారా అందరినీ శక్తివంతం చేయాల్సిన అవసరాన్ని అర్థం చేసుకోండి. +- డేటా మరియు ప్రజల గోప్యత మరియు భద్రతను రక్షించడం ఎంత ముఖ్యమో తెలుసుకోండి. +- AI మోడల్స్ ప్రవర్తనను వివరించడానికి గ్లాస్ బాక్స్ దృష్టికోణం ఉండటం ప్రాముఖ్యతను చూడండి. +- AI వ్యవస్థలపై నమ్మకాన్ని నిర్మించడానికి బాధ్యత ఎంత అవసరమో జాగ్రత్తగా ఉండండి. + +## ముందస్తు అర్హత + +ముందస్తుగా, "బాధ్యతాయుత AI సూత్రాలు" నేర్చుకునే మార్గాన్ని తీసుకోండి మరియు క్రింద వీడియోను చూడండి: + +బాధ్యతాయుత AI గురించి మరింత తెలుసుకోడానికి ఈ [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) ను అనుసరించండి + +[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") + +> 🎥 వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి: Microsoft's Approach to Responsible AI + +## న్యాయసమ్మతత + +AI వ్యవస్థలు అందరితో సమానంగా వ్యవహరించాలి మరియు సమానమైన ప్రజా గుంపులపై వేరువేరు ప్రభావాలు చూపకుండా ఉండాలి. ఉదాహరణకు, AI వ్యవస్థలు వైద్య చికిత్స, రుణ దరఖాస్తులు లేదా ఉద్యోగం గురించి మార్గదర్శనం అందిస్తే, సమాన లక్షణాలు, ఆర్థిక పరిస్థితులు లేదా వృత్తిపరమైన అర్హతలున్న అందరికీ అదే సిఫార్సులు ఇవ్వాలి. మనలో ప్రతి ఒక్కరూ మన నిర్ణయాలు మరియు చర్యలపై ప్రభావం చూపే వారసత్వ పక్షపాతాలను కలిగి ఉంటాము. ఈ పక్షపాతాలు AI వ్యవస్థలను శిక్షణ ఇచ్చే డేటాలో స్పష్టంగా ఉండవచ్చు. ఈ రకమైన మానిప్యులేషన్ అనుకోకుండా కూడా జరిగే అవకాశం ఉంది. మీరు డేటాలో పక్షపాతాన్ని ప్రవేశపెడుతున్నప్పుడు అది తెలుసుకోవడం చాలా కష్టం. + +**“అన్యాయత”** అనేది జాతి, లింగం, వయస్సు లేదా వికలాంగత స్థితి వంటి ప్రమాణాల ప్రకారం నిర్వచించబడిన ప్రజా గుంపుకు ప్రతికూల ప్రభావాలు లేదా “హానులు” ను సూచిస్తుంది. ప్రధాన న్యాయసమ్మతత సంబంధిత హానులను ఈ విధంగా వర్గీకరించవచ్చు: + +- **విభజన**, ఉదాహరణకు ఒక లింగం లేదా జాతి మరొకదానిపై ప్రాధాన్యం పొందడం. +- **సేవా నాణ్యత**. మీరు ఒక నిర్దిష్ట పరిస్థితికి డేటాను శిక్షణ ఇస్తే కానీ వాస్తవం చాలా క్లిష్టమైనదైతే, అది తక్కువ పనితీరు కలిగిన సేవకు దారితీస్తుంది. ఉదాహరణకు, చర్మం గాఢంగా ఉన్న వ్యక్తులను గుర్తించలేని హ్యాండ్ సోప్ డిస్పెన్సర్. [సూచన](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **అవమానం**. అన్యాయంగా విమర్శించడం మరియు ఏదైనా లేదా ఎవరోను లేబుల్ చేయడం. ఉదాహరణకు, ఒక చిత్రం లేబెలింగ్ సాంకేతికత చర్మం గాఢంగా ఉన్న వ్యక్తుల చిత్రాలను గోరిల్లాలుగా తప్పుగా లేబుల్ చేసింది. +- **అధిక లేదా తక్కువ ప్రాతినిధ్యం**. ఒక నిర్దిష్ట గుంపు ఒక నిర్దిష్ట వృత్తిలో కనిపించకపోవడం, మరియు ఆ సేవ లేదా ఫంక్షన్ ఆ గుంపును ప్రోత్సహించడం హానికరంగా మారడం. +- **స్టీరియోటైపింగ్**. ఒక గుంపును ముందుగా కేటాయించిన లక్షణాలతో అనుసంధానం చేయడం. ఉదాహరణకు, ఆంగ్లం మరియు టర్కిష్ మధ్య భాషా అనువాద వ్యవస్థలో లింగానికి సంబంధించిన స్టీరియోటైపికల్ పదాల కారణంగా తప్పులు ఉండవచ్చు. + +![translation to Turkish](../../../../translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.te.png) +> టర్కిష్‌కు అనువాదం + +![translation back to English](../../../../translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.te.png) +> ఇంగ్లీష్‌కు తిరిగి అనువాదం + +AI వ్యవస్థలను రూపకల్పన మరియు పరీక్షల సమయంలో, AI న్యాయసమ్మతమైనదిగా ఉండాలని మరియు పక్షపాత లేదా వివక్షాత్మక నిర్ణయాలు తీసుకోకుండా ప్రోగ్రామ్ చేయబడకూడదని నిర్ధారించాలి, ఇవి మానవులు కూడా చేయకూడదు. AI మరియు మెషీన్ లెర్నింగ్‌లో న్యాయసమ్మతతను హామీ చేయడం ఒక క్లిష్టమైన సామాజిక సాంకేతిక సవాలు. + +### విశ్వసనీయత మరియు భద్రత + +నమ్మకాన్ని నిర్మించడానికి, AI వ్యవస్థలు సాధారణ మరియు అనూహ్య పరిస్థితులలో విశ్వసనీయంగా, భద్రంగా మరియు సుసంగతంగా ఉండాలి. AI వ్యవస్థలు వివిధ పరిస్థితుల్లో ఎలా ప్రవర్తిస్తాయో, ముఖ్యంగా అవుట్లయర్స్ ఉన్నప్పుడు తెలుసుకోవడం ముఖ్యం. AI పరిష్కారాలను నిర్మించేటప్పుడు, AI పరిష్కారాలు ఎదుర్కొనే విస్తృత పరిస్థితులను ఎలా నిర్వహించాలో పెద్ద దృష్టి పెట్టాలి. ఉదాహరణకు, స్వయం-చాలించే కారు ప్రజల భద్రతను అత్యంత ప్రాధాన్యతగా ఉంచాలి. అందువల్ల, కారును నడిపించే AI రాత్రి, మెరుపులు లేదా మంచు తుఫానులు, పిల్లలు వీధి దాటడం, పెంపుడు జంతువులు, రోడ్డు నిర్మాణాలు వంటి అన్ని సాధ్యమైన పరిస్థితులను పరిగణలోకి తీసుకోవాలి. AI వ్యవస్థ విస్తృత పరిస్థితులను విశ్వసనీయంగా మరియు భద్రంగా ఎలా నిర్వహించగలదో, డేటా శాస్త్రవేత్త లేదా AI అభివృద్ధికర్త ఆ వ్యవస్థ రూపకల్పన లేదా పరీక్ష సమయంలో ఎంత ముందస్తుగా ఆలోచించారో ప్రతిబింబిస్తుంది. + +> [🎥 వీడియో కోసం ఇక్కడ క్లిక్ చేయండి: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) + +### సమగ్రత + +AI వ్యవస్థలు అందరినీ పాల్గొనడానికి మరియు శక్తివంతం చేయడానికి రూపకల్పన చేయబడాలి. AI వ్యవస్థలను రూపకల్పన మరియు అమలు చేసే సమయంలో, డేటా శాస్త్రవేత్తలు మరియు AI అభివృద్ధికర్తలు అనుకోకుండా ప్రజలను బహిష్కరించే అవకాశమున్న అడ్డంకులను గుర్తించి పరిష్కరిస్తారు. ఉదాహరణకు, ప్రపంచంలో 1 బిలియన్ మంది వికలాంగులు ఉన్నారు. AI అభివృద్ధితో, వారు తమ రోజువారీ జీవితాల్లో విస్తృత సమాచారం మరియు అవకాశాలను సులభంగా పొందగలుగుతారు. అడ్డంకులను పరిష్కరించడం ద్వారా, అందరికీ లాభదాయకమైన మెరుగైన అనుభవాలతో AI ఉత్పత్తులను ఆవిష్కరించడానికి మరియు అభివృద్ధి చేయడానికి అవకాశాలు సృష్టించబడతాయి. + +> [🎥 వీడియో కోసం ఇక్కడ క్లిక్ చేయండి: AIలో సమగ్రత](https://www.microsoft.com/videoplayer/embed/RE4vl9v) + +### భద్రత మరియు గోప్యత + +AI వ్యవస్థలు భద్రంగా ఉండాలి మరియు ప్రజల గోప్యతను గౌరవించాలి. ప్రజలు తమ గోప్యత, సమాచారం లేదా జీవితం ప్రమాదంలో పడే వ్యవస్థలపై తక్కువ నమ్మకం కలిగి ఉంటారు. మెషీన్ లెర్నింగ్ మోడల్స్ శిక్షణకు, ఉత్తమ ఫలితాలను అందించడానికి డేటాపై ఆధారపడతాము. అందులో, డేటా మూలం మరియు సమగ్రతను పరిగణలోకి తీసుకోవాలి. ఉదాహరణకు, డేటా వినియోగదారు సమర్పించినదా లేదా ప్రజలకు అందుబాటులో ఉన్నదా? తదుపరి, డేటాతో పని చేసే సమయంలో, గోప్యమైన సమాచారాన్ని రక్షించగలిగే మరియు దాడులను నిరోధించగల AI వ్యవస్థలను అభివృద్ధి చేయడం అత్యంత ముఖ్యం. AI విస్తృతంగా ఉపయోగించబడుతున్నందున, గోప్యతను రక్షించడం మరియు వ్యక్తిగత మరియు వ్యాపార సమాచారాన్ని భద్రపరచడం మరింత కీలకంగా మరియు క్లిష్టంగా మారుతోంది. గోప్యత మరియు డేటా భద్రతా సమస్యలు AIకి ప్రత్యేక శ్రద్ధ అవసరం ఎందుకంటే AI వ్యవస్థలు ప్రజల గురించి ఖచ్చితమైన మరియు సమాచారంతో కూడిన అంచనాలు మరియు నిర్ణయాలు తీసుకోవడానికి డేటా యాక్సెస్ అవసరం. + +> [🎥 వీడియో కోసం ఇక్కడ క్లిక్ చేయండి: AIలో భద్రత](https://www.microsoft.com/videoplayer/embed/RE4voJF) + +- పరిశ్రమగా, GDPR (సాధారణ డేటా రక్షణ నియంత్రణ) వంటి నియమావళుల ద్వారా గోప్యత మరియు భద్రతలో గణనీయమైన పురోగతులు సాధించాము. +- అయినప్పటికీ, AI వ్యవస్థలతో, వ్యవస్థలను మరింత వ్యక్తిగతంగా మరియు సమర్థవంతంగా చేయడానికి మరింత వ్యక్తిగత డేటా అవసరం మరియు గోప్యత మధ్య ఉన్న ఉద్వేగాన్ని అంగీకరించాలి. +- ఇంటర్నెట్‌తో కనెక్ట్ అయిన కంప్యూటర్ల జన్మతో పోలిస్తే, AIకి సంబంధించిన భద్రతా సమస్యల సంఖ్యలో కూడా భారీ పెరుగుదల కనిపిస్తోంది. +- అదే సమయంలో, భద్రతను మెరుగుపరచడానికి AI ఉపయోగించబడుతున్నది. ఉదాహరణకు, ఆధునిక యాంటీ-వైరస్ స్కానర్లు ఎక్కువగా AI హ్యూరిస్టిక్స్ ఆధారంగా పనిచేస్తున్నాయి. +- మన డేటా సైన్స్ ప్రక్రియలు తాజా గోప్యత మరియు భద్రతా ఆచారాలతో సజీవంగా కలిసిపోవాలి. + +### పారదర్శకత + +AI వ్యవస్థలు అర్థమయ్యే విధంగా ఉండాలి. పారదర్శకతలో ముఖ్యమైన భాగం AI వ్యవస్థల మరియు వాటి భాగాల ప్రవర్తనను వివరించడం. AI వ్యవస్థల అర్థం పెరగడానికి వాటి పనితీరు ఎలా మరియు ఎందుకు జరుగుతుందో వాటి భాగస్వాములు అర్థం చేసుకోవాలి, తద్వారా వారు పనితీరు సమస్యలు, భద్రత మరియు గోప్యతా సమస్యలు, పక్షపాతాలు, బహిష్కరణా ఆచారాలు లేదా అనుకోని ఫలితాలను గుర్తించగలుగుతారు. AI వ్యవస్థలను ఉపయోగించే వారు ఎప్పుడు, ఎందుకు, ఎలా వాటిని అమలు చేస్తారో నిజాయితీగా మరియు స్పష్టంగా ఉండాలి. అలాగే వారు ఉపయోగించే వ్యవస్థల పరిమితులను కూడా తెలియజేయాలి. ఉదాహరణకు, ఒక బ్యాంక్ తన వినియోగదారుల రుణ నిర్ణయాలను మద్దతు ఇవ్వడానికి AI వ్యవస్థను ఉపయోగిస్తే, ఫలితాలను పరిశీలించడం మరియు ఏ డేటా వ్యవస్థ సిఫార్సులకు ప్రభావం చూపుతుందో అర్థం చేసుకోవడం ముఖ్యం. ప్రభుత్వాలు పరిశ్రమలలో AI నియంత్రణ ప్రారంభిస్తున్నాయి, కాబట్టి డేటా శాస్త్రవేత్తలు మరియు సంస్థలు AI వ్యవస్థ నియంత్రణ అవసరాలు తీర్చుతుందా లేదా అనేది వివరించాలి, ముఖ్యంగా అనుచిత ఫలితాలు ఉన్నప్పుడు. + +> [🎥 వీడియో కోసం ఇక్కడ క్లిక్ చేయండి: AIలో పారదర్శకత](https://www.microsoft.com/videoplayer/embed/RE4voJF) + +- AI వ్యవస్థలు చాలా క్లిష్టమైనవి కావడంతో అవి ఎలా పనిచేస్తాయో అర్థం చేసుకోవడం మరియు ఫలితాలను అనువదించడం కష్టం. +- ఈ అర్థం లేకపోవడం ఈ వ్యవస్థలను నిర్వహించడం, ఆపరేషన్ చేయడం మరియు డాక్యుమెంటేషన్ చేయడంపై ప్రభావం చూపుతుంది. +- ముఖ్యంగా, ఈ అర్థం లేకపోవడం ఈ వ్యవస్థలు ఉత్పత్తి చేసే ఫలితాల ఆధారంగా తీసుకునే నిర్ణయాలపై ప్రభావం చూపుతుంది. + +### బాధ్యత + +AI వ్యవస్థలను రూపకల్పన మరియు అమలు చేసే వారు వారి వ్యవస్థలు ఎలా పనిచేస్తాయో బాధ్యత వహించాలి. ముఖచిత్ర గుర్తింపు వంటి సున్నితమైన సాంకేతికతలతో బాధ్యత అవసరం మరింత కీలకం. ఇటీవల, ముఖచిత్ర గుర్తింపు సాంకేతికతకు పెరుగుతున్న డిమాండ్ ఉంది, ముఖ్యంగా మిస్సింగ్ పిల్లలను కనుగొనడంలో ఈ సాంకేతికత ఉపయోగపడుతుందని భావించే చట్ట అమలాదారుల నుండి. అయితే, ఈ సాంకేతికతలు ప్రభుత్వాలు తమ పౌరుల ప్రాథమిక స్వేచ్ఛలను ప్రమాదంలో పెట్టడానికి ఉపయోగించవచ్చు, ఉదాహరణకు నిర్దిష్ట వ్యక్తులపై నిరంతర పర్యవేక్షణను సులభతరం చేయడం. అందువల్ల, డేటా శాస్త్రవేత్తలు మరియు సంస్థలు వారి AI వ్యవస్థ వ్యక్తులు లేదా సమాజంపై ఎలా ప్రభావం చూపుతుందో బాధ్యత వహించాలి. + +[![ముఖచిత్ర గుర్తింపు ద్వారా భారీ పర్యవేక్షణపై ప్రముఖ AI పరిశోధకుడు హెచ్చరిస్తున్నారు](../../../../translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.te.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") + +> 🎥 వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి: ముఖచిత్ర గుర్తింపు ద్వారా భారీ పర్యవేక్షణ హెచ్చరికలు + +మొత్తానికి, మన తరం, సమాజానికి AI తీసుకువస్తున్న మొదటి తరం, కంప్యూటర్లు ప్రజలకు బాధ్యత వహించేటట్లు ఎలా నిర్ధారించుకోవాలి మరియు కంప్యూటర్లు రూపకల్పన చేసే వారు అందరికి బాధ్యత వహించేటట్లు ఎలా నిర్ధారించుకోవాలి అనే ప్రశ్నలు మనకు పెద్ద సవాలు. + +## ప్రభావం అంచనా + +మెషీన్ లెర్నింగ్ మోడల్ శిక్షణకు ముందు, AI వ్యవస్థ యొక్క ఉద్దేశ్యం ఏమిటి; దాని ఉద్దేశించిన ఉపయోగం ఏమిటి; ఎక్కడ అమలు చేయబడుతుంది; మరియు ఎవరు వ్యవస్థతో పరస్పరం చేస్తారు అనే విషయాలను అర్థం చేసుకోవడానికి ప్రభావం అంచనాను నిర్వహించడం ముఖ్యం. ఇవి వ్యవస్థను సమీక్షించే వారు లేదా పరీక్షకులు పరిగణలోకి తీసుకోవాల్సిన అంశాలను తెలుసుకోవడానికి సహాయపడతాయి, తద్వారా వారు సంభావ్య ప్రమాదాలు మరియు ఆశించిన పరిణామాలను గుర్తించగలుగుతారు. + +ప్రభావం అంచనా నిర్వహించే సమయంలో దృష్టి పెట్టాల్సిన ప్రాంతాలు: + +* **వ్యక్తులపై ప్రతికూల ప్రభావం**. ఏవైనా పరిమితులు లేదా అవసరాలు, మద్దతు లేని ఉపయోగం లేదా వ్యవస్థ పనితీరును అడ్డుకునే ఏవైనా పరిమితులు ఉన్నాయా అని తెలుసుకోవడం ముఖ్యం, తద్వారా వ్యవస్థ వ్యక్తులకు హాని కలిగించే విధంగా ఉపయోగించబడకుండా ఉండాలి. +* **డేటా అవసరాలు**. వ్యవస్థ డేటాను ఎలా మరియు ఎక్కడ ఉపయోగిస్తుందో అర్థం చేసుకోవడం సమీక్షకులకు మీరు జాగ్రత్తగా ఉండాల్సిన డేటా అవసరాలను (ఉదా: GDPR లేదా HIPPA డేటా నియమాలు) పరిశీలించడానికి సహాయపడుతుంది. అదనంగా, శిక్షణకు డేటా మూలం లేదా పరిమాణం సరిపోతుందా అని పరిశీలించండి. +* **ప్రభావం సారాంశం**. వ్యవస్థ ఉపయోగం వల్ల సంభవించే సంభావ్య హానుల జాబితాను సేకరించండి. ML జీవనచక్రం అంతటా గుర్తించిన సమస్యలు తగ్గించబడ్డాయా లేదా పరిష్కరించబడ్డాయా అని సమీక్షించండి. +* ఆరు ప్రధాన సూత్రాల కోసం **ప్రయోజన లక్ష్యాలు**. ప్రతి సూత్రం నుండి లక్ష్యాలు చేరుకున్నాయా లేదా లోపాలు ఉన్నాయా అని అంచనా వేయండి. + +## బాధ్యతాయుత AIతో డీబగ్గింగ్ + +సాఫ్ట్‌వేర్ అప్లికేషన్‌ను డీబగ్గింగ్ చేయడం లాగా, AI వ్యవస్థను డీబగ్గింగ్ చేయడం కూడా వ్యవస్థలో సమస్యలను గుర్తించి పరిష్కరించే అవసరమైన ప్రక్రియ. మోడల్ అంచనాల ప్రకారం కాకుండా లేదా బాధ్యతాయుతంగా పనిచేయకపోవడానికి అనేక కారణాలు ఉండవచ్చు. చాలా సాంప్రదాయ మోడల్ పనితీరు ప్రమాణాలు మోడల్ పనితీరు యొక్క పరిమాణాత్మక సమాహారాలు మాత్రమే, ఇవి బాధ్యతాయుత AI సూత్రాలను ఎలా ఉల్లంఘిస్తున్నాయో విశ్లేషించడానికి సరిపోదు. అదనంగా, మెషీన్ లెర్నింగ్ మోడల్ ఒక బ్లాక్ బాక్స్ లాగా ఉంటుంది, దాని ఫలితానికి కారణమయ్యే అంశాలను అర్థం చేసుకోవడం లేదా తప్పు చేసినప్పుడు వివరణ ఇవ్వడం కష్టం. ఈ కోర్సులో తరువాత, బాధ్యతాయుత AI డాష్‌బోర్డును ఉపయోగించి AI వ్యవస్థలను డీబగ్గింగ్ చేయడం నేర్చుకుంటాము. డాష్‌బోర్డు డేటా శాస్త్రవేత్తలు మరియు AI అభివృద్ధికర్తలకు సమగ్ర సాధనం అందిస్తుంది: + +* **లోపాల విశ్లేషణ**. వ్యవస్థ న్యాయసమ్మతత లేదా విశ్వసనీయతను ప్రభావితం చేసే మోడల్ లోపాల పంపిణీని గుర్తించడానికి. +* **మోడల్ అవలోకనం**. డేటా కోహార్ట్లలో మోడల్ పనితీరులో ఉన్న వ్యత్యాసాలను కనుగొనడానికి. +* **డేటా విశ్లేషణ**. డేటా పంపిణీని అర్థం చేసుకోవడానికి మరియు న్యాయసమ్మతత, సమగ్రత మరియు విశ్వసనీయత సమస్యలకు దారితీసే ఏవైనా పక్షపాతాలను గుర్తించడానికి. +* **మోడల్ వివరణాత్మకత**. మోడల్ అంచనాలను ప్రభావితం చేసే అంశాలను అర్థం చేసుకోవడానికి. ఇది మోడల్ ప్రవర్తనను వివరించడంలో సహాయపడుతుంది, ఇది పారదర్శకత మరియు బాధ్యతకు ముఖ్యమైనది. + +## 🚀 సవాలు + +హానులు మొదట్లోనే ప్రవేశించకుండా ఉండేందుకు, మనం: + +- వ్యవస్థలపై పనిచేసే వ్యక్తులలో వివిధ నేపథ్యాలు మరియు దృష్టికోణాలను కలిగి ఉండాలి +- మన సమాజం వైవిధ్యాన్ని ప్రతిబింబించే డేటాసెట్‌లలో పెట్టుబడి పెట్టాలి +- బాధ్యతాయుత AI సంభవించినప్పుడు గుర్తించడం మరియు సరిచేయడం కోసం మెషీన్ లెర్నింగ్ జీవనచక్రం అంతటా మెరుగైన పద్ధతులను అభివృద్ధి చేయాలి + +మోడల్ నిర్మాణం మరియు ఉపయోగంలో మోడల్ నమ్మకహీనత స్పష్టంగా కనిపించే వాస్తవ జీవిత పరిస్థితులను ఆలోచించండి. మేము ఇంకేమి పరిగణించాలి? + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) +## సమీక్ష & స్వీయ అధ్యయనం + +ఈ పాఠంలో, మీరు మెషీన్ లెర్నింగ్‌లో న్యాయం మరియు అన్యాయం యొక్క కొన్ని ప్రాథమిక సూత్రాలను నేర్చుకున్నారు. + +ఈ అంశాలలో మరింత లోతుగా తెలుసుకోవడానికి ఈ వర్క్‌షాప్‌ను చూడండి: + +- బాధ్యతాయుత AI కోసం ప్రయత్నం: Besmira Nushi, Mehrnoosh Sameki మరియు Amit Sharma ద్వారా సూత్రాలను ఆచరణలోకి తీసుకురావడం + +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") + +> 🎥 వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి: Besmira Nushi, Mehrnoosh Sameki, మరియు Amit Sharma ద్వారా RAI Toolbox: బాధ్యతాయుత AI నిర్మాణానికి ఓ ఓపెన్-సోర్స్ ఫ్రేమ్‌వర్క్ + +ఇంకా చదవండి: + +- Microsoft యొక్క RAI వనరుల కేంద్రం: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) + +- Microsoft యొక్క FATE పరిశోధనా గ్రూప్: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) + +RAI Toolbox: + +- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox) + +Azure Machine Learning యొక్క న్యాయాన్ని నిర్ధారించడానికి ఉపయోగించే సాధనాల గురించి చదవండి: + +- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) + +## అసైన్‌మెంట్ + +[RAI Toolbox ను అన్వేషించండి](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/1-Introduction/3-fairness/assignment.md b/translations/te/1-Introduction/3-fairness/assignment.md new file mode 100644 index 000000000..0f4242c8e --- /dev/null +++ b/translations/te/1-Introduction/3-fairness/assignment.md @@ -0,0 +1,27 @@ + +# బాధ్యతాయుత AI టూల్‌బాక్స్‌ను అన్వేషించండి + +## సూచనలు + +ఈ పాఠంలో మీరు బాధ్యతాయుత AI టూల్‌బాక్స్ గురించి తెలుసుకున్నారు, ఇది "డేటా శాస్త్రవేత్తలకు AI వ్యవస్థలను విశ్లేషించడానికి మరియు మెరుగుపరచడానికి సహాయపడే ఓపెన్-సోర్స్, కమ్యూనిటీ-చాలిత ప్రాజెక్ట్." ఈ అసైన్‌మెంట్ కోసం, RAI టూల్‌బాక్స్ యొక్క [నోట్‌బుక్స్](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) లో ఒకదాన్ని అన్వేషించి, మీ కనుగొనిన విషయాలను ఒక పేపర్ లేదా ప్రెజెంటేషన్‌లో నివేదించండి. + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతం | సరిపోతుంది | మెరుగుదల అవసరం | +| -------- | --------- | -------- | ----------------- | +| | Fairlearn యొక్క వ్యవస్థలు, నడిపించిన నోట్‌బుక్ మరియు దాన్ని నడిపిన తర్వాత తీసుకున్న తీరులను చర్చిస్తూ ఒక పేపర్ లేదా పవర్‌పాయింట్ ప్రెజెంటేషన్ అందించబడింది | తీరులు లేకుండా ఒక పేపర్ అందించబడింది | ఎలాంటి పేపర్ అందించబడలేదు | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/1-Introduction/4-techniques-of-ML/README.md b/translations/te/1-Introduction/4-techniques-of-ML/README.md new file mode 100644 index 000000000..a8c993b2b --- /dev/null +++ b/translations/te/1-Introduction/4-techniques-of-ML/README.md @@ -0,0 +1,134 @@ + +# మెషీన్ లెర్నింగ్ సాంకేతికతలు + +మెషీన్ లెర్నింగ్ మోడల్స్ మరియు అవి ఉపయోగించే డేటాను నిర్మించడం, ఉపయోగించడం మరియు నిర్వహించడం అనేది అనేక ఇతర అభివృద్ధి వర్క్‌ఫ్లోల నుండి చాలా భిన్నమైన ప్రక్రియ. ఈ పాఠంలో, మేము ఈ ప్రక్రియను సులభతరం చేస్తాము, మరియు మీరు తెలుసుకోవలసిన ప్రధాన సాంకేతికతలను వివరించబోతున్నాము. మీరు: + +- మెషీన్ లెర్నింగ్ ఆధారిత ప్రక్రియలను ఉన్నత స్థాయిలో అర్థం చేసుకుంటారు. +- 'మోడల్స్', 'పూర్వానుమానాలు', మరియు 'శిక్షణ డేటా' వంటి ప్రాథమిక భావనలను అన్వేషిస్తారు. + +## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") + +> 🎥 ఈ పాఠం ద్వారా పనిచేసే చిన్న వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి. + +## పరిచయం + +ఉన్నత స్థాయిలో, మెషీన్ లెర్నింగ్ (ML) ప్రక్రియలను సృష్టించే కళ అనేక దశలతో కూడి ఉంటుంది: + +1. **ప్రశ్నను నిర్ణయించండి**. చాలా ML ప్రక్రియలు సాధారణ కండిషనల్ ప్రోగ్రామ్ లేదా నియమాల ఆధారిత ఇంజిన్ ద్వారా సమాధానం ఇవ్వలేని ప్రశ్న అడగడం ద్వారా ప్రారంభమవుతాయి. ఈ ప్రశ్నలు తరచుగా డేటా సేకరణ ఆధారంగా పూర్వానుమానాల చుట్టూ ఉంటాయి. +2. **డేటాను సేకరించి సిద్ధం చేయండి**. మీ ప్రశ్నకు సమాధానం ఇవ్వడానికి, మీరు డేటా అవసరం. మీ డేటా నాణ్యత మరియు కొన్నిసార్లు పరిమాణం మీ ప్రారంభ ప్రశ్నకు మీరు ఎంత బాగా సమాధానం ఇవ్వగలరో నిర్ణయిస్తుంది. డేటాను దృశ్యీకరించడం ఈ దశలో ముఖ్యమైన అంశం. ఈ దశలో డేటాను శిక్షణ మరియు పరీక్షా సమూహాలుగా విభజించడం కూడా ఉంటుంది. +3. **శిక్షణ పద్ధతిని ఎంచుకోండి**. మీ ప్రశ్న మరియు డేటా స్వభావం ఆధారంగా, మీరు మీ డేటాను ప్రతిబింబించే మరియు దాని పై ఖచ్చితమైన పూర్వానుమానాలు చేయగలిగే మోడల్‌ను శిక్షణ ఇవ్వడానికి ఎలా శిక్షణ ఇవ్వాలనే నిర్ణయించుకోవాలి. ఇది మీ ML ప్రక్రియలో ప్రత్యేక నైపుణ్యం మరియు తరచుగా అనేక ప్రయోగాలు అవసరమయ్యే భాగం. +4. **మోడల్‌ను శిక్షణ ఇవ్వండి**. మీ శిక్షణ డేటాను ఉపయోగించి, మీరు వివిధ అల్గోరిథమ్స్ ఉపయోగించి డేటాలో నమూనాలను గుర్తించే మోడల్‌ను శిక్షణ ఇస్తారు. మోడల్ అంతర్గత బరువులను ఉపయోగించి, డేటా యొక్క కొన్ని భాగాలను ప్రాధాన్యం ఇవ్వడానికి సర్దుబాటు చేయవచ్చు. +5. **మోడల్‌ను మూల్యాంకనం చేయండి**. మీరు సేకరించిన డేటా నుండి ఇప్పటివరకు చూడని డేటా (మీ పరీక్షా డేటా) ఉపయోగించి మోడల్ ఎలా పనిచేస్తుందో చూడండి. +6. **పారామీటర్ ట్యూనింగ్**. మీ మోడల్ పనితీరు ఆధారంగా, మీరు మోడల్ శిక్షణకు ఉపయోగించే అల్గోరిథమ్స్ ప్రవర్తనను నియంత్రించే వివిధ పారామీటర్లను మార్చి ప్రక్రియను మళ్లీ చేయవచ్చు. +7. **పూర్వానుమానం చేయండి**. మీ మోడల్ ఖచ్చితత్వాన్ని పరీక్షించడానికి కొత్త ఇన్‌పుట్‌లను ఉపయోగించండి. + +## ఏ ప్రశ్న అడగాలి + +కంప్యూటర్లు డేటాలో దాగి ఉన్న నమూనాలను కనుగొనడంలో ప్రత్యేక నైపుణ్యం కలిగి ఉంటాయి. ఈ ఉపయోగం, ఒక నిర్దిష్ట డొమైన్ గురించి ప్రశ్నలు ఉన్న పరిశోధకులకు చాలా సహాయకరం, వీటిని సులభంగా కండిషనల్ నియమాల ఇంజిన్ సృష్టించడం ద్వారా సమాధానం ఇవ్వలేము. ఉదాహరణకు, ఒక ఆక్చ్యూరియల్ పని కోసం, డేటా సైంటిస్ట్ పొగతాగేవారు మరియు పొగతాగని వారి మరణాలపై చేతితో తయారు చేసిన నియమాలను నిర్మించవచ్చు. + +అయితే, మరిన్ని వేరియబుల్స్ ఈ సమీకరణలో చేర్చినప్పుడు, గత ఆరోగ్య చరిత్ర ఆధారంగా భవిష్యత్ మరణాల రేట్లను పూర్వానుమానించడానికి ML మోడల్ మరింత సమర్థవంతంగా ఉండవచ్చు. మరింత సంతోషకరమైన ఉదాహరణగా, ఒక నిర్దిష్ట ప్రదేశంలో ఏప్రిల్ నెలకు వాతావరణ పూర్వానుమానాలు చేయడం, ఇందులో అక్షాంశం, రేఖాంశం, వాతావరణ మార్పు, సముద్రానికి సమీపత, జెట్ స్ట్రీమ్ నమూనాలు మరియు మరిన్ని డేటా ఉంటాయి. + +✅ ఈ [స్లైడ్ డెక్](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) వాతావరణ మోడల్స్ పై ML వాడకం కోసం చారిత్రక దృష్టికోణాన్ని అందిస్తుంది. + +## నిర్మాణానికి ముందు పనులు + +మీ మోడల్‌ను నిర్మించడం ప్రారంభించే ముందు, మీరు పూర్తి చేయవలసిన కొన్ని పనులు ఉన్నాయి. మీ ప్రశ్నను పరీక్షించడానికి మరియు మోడల్ పూర్వానుమానాల ఆధారంగా ఒక హైపోథసిస్ రూపొందించడానికి, మీరు కొన్ని అంశాలను గుర్తించి కాన్ఫిగర్ చేయాలి. + +### డేటా + +మీ ప్రశ్నకు ఏదైనా స్థాయిలో సమాధానం ఇవ్వడానికి, మీరు సరైన రకమైన మంచి పరిమాణంలో డేటా అవసరం. ఈ సమయంలో మీరు చేయవలసిన రెండు విషయాలు: + +- **డేటాను సేకరించండి**. డేటా విశ్లేషణలో న్యాయసమ్మతతపై గత పాఠాన్ని గుర్తుంచుకుని, జాగ్రత్తగా డేటాను సేకరించండి. ఈ డేటా మూలాలను, దాని లోపభూయిష్టతలను తెలుసుకోండి మరియు మూలాన్ని డాక్యుమెంట్ చేయండి. +- **డేటాను సిద్ధం చేయండి**. డేటా సిద్ధం ప్రక్రియలో అనేక దశలు ఉంటాయి. మీరు డేటాను సేకరించి, వేర్వేరు మూలాల నుండి వచ్చినట్లయితే సాధారణీకరించవలసి ఉంటుంది. మీరు డేటా నాణ్యత మరియు పరిమాణాన్ని మెరుగుపరచడానికి వివిధ పద్ధతులు ఉపయోగించవచ్చు, ఉదాహరణకు స్ట్రింగ్స్‌ను సంఖ్యలుగా మార్చడం ([క్లస్టరింగ్](../../5-Clustering/1-Visualize/README.md) లో చేయడం లాంటిది). మీరు కొత్త డేటాను కూడా సృష్టించవచ్చు, అసలు డేటా ఆధారంగా ([వర్గీకరణ](../../4-Classification/1-Introduction/README.md) లో చేయడం లాంటిది). మీరు డేటాను శుభ్రపరచి సవరించవచ్చు ([వెబ్ యాప్](../../3-Web-App/README.md) పాఠం ముందు). చివరగా, మీరు శిక్షణ సాంకేతికతలపై ఆధారపడి డేటాను యాదృచ్ఛికంగా మార్చి కలపవలసి ఉండవచ్చు. + +✅ డేటాను సేకరించి ప్రాసెస్ చేసిన తర్వాత, దాని ఆకారం మీ ఉద్దేశించిన ప్రశ్నను పరిష్కరించగలదా అని ఒక క్షణం పరిశీలించండి. మీ డేటా మీ పని లో బాగా పనిచేయకపోవచ్చు, ఇది మేము మా [క్లస్టరింగ్](../../5-Clustering/1-Visualize/README.md) పాఠాలలో కనుగొంటాము! + +### లక్షణాలు మరియు లక్ష్యం + +[లక్షణం](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) అనేది మీ డేటా యొక్క కొలవదగిన లక్షణం. అనేక డేటాసెట్‌లలో ఇది 'తేదీ', 'పరిమాణం' లేదా 'రంగు' వంటి కాలమ్ శీర్షికగా వ్యక్తమవుతుంది. మీ లక్షణ వేరియబుల్, సాధారణంగా కోడ్‌లో `X` గా సూచించబడుతుంది, మోడల్ శిక్షణకు ఉపయోగించే ఇన్‌పుట్ వేరియబుల్‌ను సూచిస్తుంది. + +లక్ష్యం మీరు పూర్వానుమానం చేయదలచిన విషయం. లక్ష్యం సాధారణంగా కోడ్‌లో `y` గా సూచించబడుతుంది, ఇది మీరు మీ డేటాకు అడగదలచిన ప్రశ్నకు సమాధానం సూచిస్తుంది: డిసెంబర్‌లో, ఏ **రంగు** గుమ్మడికాయలు చౌకగా ఉంటాయి? సాన్ ఫ్రాన్సిస్కోలో, ఏ ప్రాంతాల్లో ఉత్తమ రియల్ ఎస్టేట్ **ధర** ఉంటుంది? కొన్నిసార్లు లక్ష్యాన్ని లేబుల్ అట్రిబ్యూట్ అని కూడా పిలుస్తారు. + +### మీ లక్షణ వేరియబుల్‌ను ఎంచుకోవడం + +🎓 **లక్షణ ఎంపిక మరియు లక్షణ ఉత్పత్తి** మోడల్ నిర్మిస్తున్నప్పుడు మీరు ఏ వేరియబుల్ ఎంచుకోవాలో ఎలా తెలుసుకుంటారు? మీరు ఎక్కువగా పనితీరు ఉన్న మోడల్ కోసం సరైన వేరియబుల్స్ ఎంచుకోవడానికి లక్షణ ఎంపిక లేదా లక్షణ ఉత్పత్తి ప్రక్రియలోకి వెళ్తారు. అవి ఒకే విషయం కాదు: "లక్షణ ఉత్పత్తి అసలు లక్షణాల ఫంక్షన్ల నుండి కొత్త లక్షణాలను సృష్టిస్తుంది, అయితే లక్షణ ఎంపిక లక్షణాల ఉపసమితిని తిరిగి ఇస్తుంది." ([మూలం](https://wikipedia.org/wiki/Feature_selection)) + +### మీ డేటాను దృశ్యీకరించండి + +డేటా సైంటిస్ట్ టూల్‌కిట్‌లో ఒక ముఖ్యమైన అంశం అనేక అద్భుతమైన లైబ్రరీలు వంటి Seaborn లేదా MatPlotLib ఉపయోగించి డేటాను దృశ్యీకరించడం. మీ డేటాను దృశ్య రూపంలో ప్రదర్శించడం దాగి ఉన్న సంబంధాలను కనుగొనడానికి సహాయపడవచ్చు. మీ దృశ్యీకరణలు పక్షపాతం లేదా అసమతులిత డేటాను కూడా కనుగొనడంలో సహాయపడవచ్చు ([వర్గీకరణ](../../4-Classification/2-Classifiers-1/README.md) లో మేము కనుగొంటాము). + +### మీ డేటాసెట్‌ను విభజించండి + +శిక్షణకు ముందు, మీరు మీ డేటాసెట్‌ను రెండు లేదా అంతకంటే ఎక్కువ భాగాలుగా విభజించాలి, ఇవి అసమాన పరిమాణాలైనప్పటికీ డేటాను బాగా ప్రతిబింబించాలి. + +- **శిక్షణ**. డేటాసెట్ ఈ భాగం మీ మోడల్‌కు సరిపోతుంది, దీని ద్వారా మోడల్ శిక్షణ పొందుతుంది. ఇది అసలు డేటాసెట్‌లో ఎక్కువ భాగాన్ని కలిగి ఉంటుంది. +- **పరీక్ష**. పరీక్షా డేటాసెట్ స్వతంత్ర డేటా సమూహం, తరచుగా అసలు డేటా నుండి సేకరించబడినది, దీన్ని మీరు నిర్మించిన మోడల్ పనితీరును నిర్ధారించడానికి ఉపయోగిస్తారు. +- **ధృవీకరణ**. ధృవీకరణ సెట్ అనేది చిన్న స్వతంత్ర ఉదాహరణల సమూహం, దీన్ని మీరు మోడల్ యొక్క హైపర్‌పారామీటర్లను లేదా నిర్మాణాన్ని మెరుగుపరచడానికి ఉపయోగిస్తారు. మీ డేటా పరిమాణం మరియు మీరు అడుగుతున్న ప్రశ్న ఆధారంగా, మీరు ఈ మూడవ సెట్‌ను నిర్మించాల్సిన అవసరం ఉండకపోవచ్చు ([టైమ్ సిరీస్ ఫోర్కాస్టింగ్](../../7-TimeSeries/1-Introduction/README.md) లో మేము గమనిస్తాము). + +## మోడల్ నిర్మాణం + +మీ శిక్షణ డేటాను ఉపయోగించి, మీరు వివిధ అల్గోరిథమ్స్ ఉపయోగించి మీ డేటా యొక్క గణాంకాత్మక ప్రాతినిధ్యంగా ఒక మోడల్‌ను **శిక్షణ** ఇవ్వడం లక్ష్యం. మోడల్ శిక్షణ డేటాను చూసి, దాని లోపల ఉన్న నమూనాలను గుర్తించి, అంచనాలు వేస్తుంది, వాటిని ధృవీకరిస్తుంది మరియు అంగీకరిస్తుంది లేదా తిరస్కరిస్తుంది. + +### శిక్షణ పద్ధతిని నిర్ణయించండి + +మీ ప్రశ్న మరియు డేటా స్వభావం ఆధారంగా, మీరు శిక్షణ ఇవ్వడానికి ఒక పద్ధతిని ఎంచుకుంటారు. ఈ కోర్సులో మేము ఉపయోగించే [Scikit-learn డాక్యుమెంటేషన్](https://scikit-learn.org/stable/user_guide.html) ద్వారా మీరు మోడల్ శిక్షణకు అనేక మార్గాలను అన్వేషించవచ్చు. మీ అనుభవం ఆధారంగా, మీరు ఉత్తమ మోడల్ నిర్మించడానికి అనేక పద్ధతులను ప్రయత్నించవలసి ఉండవచ్చు. డేటా సైంటిస్ట్‌లు మోడల్ పనితీరును అంచనా వేయడానికి, దాన్ని చూడని డేటాతో పరీక్షించి, ఖచ్చితత్వం, పక్షపాతం మరియు ఇతర నాణ్యతను తగ్గించే సమస్యలను పరిశీలించి, ఆ పని కోసం సరైన శిక్షణ పద్ధతిని ఎంచుకుంటారు. + +### మోడల్‌ను శిక్షణ ఇవ్వండి + +మీ శిక్షణ డేటాతో, మీరు దాన్ని 'ఫిట్' చేయడానికి సిద్ధంగా ఉంటారు. మీరు అనేక ML లైబ్రరీలలో 'model.fit' కోడ్‌ను కనుగొంటారు - ఈ సమయంలో మీరు మీ లక్షణ వేరియబుల్‌ను విలువల శ్రేణిగా (సాధారణంగా 'X') మరియు లక్ష్య వేరియబుల్‌ను (సాధారణంగా 'y') పంపిస్తారు. + +### మోడల్‌ను మూల్యాంకనం చేయండి + +శిక్షణ ప్రక్రియ పూర్తయిన తర్వాత (పెద్ద మోడల్ శిక్షణకు అనేక పునరావృతాలు లేదా 'ఎపోక్స్' అవసరం కావచ్చు), మీరు పరీక్షా డేటాను ఉపయోగించి మోడల్ నాణ్యతను అంచనా వేయగలుగుతారు. ఈ డేటా మోడల్ ముందుగా విశ్లేషించని అసలు డేటా ఉపసమితి. మీరు మీ మోడల్ నాణ్యత గురించి మెట్రిక్స్ పట్టికను ప్రింట్ చేయవచ్చు. + +🎓 **మోడల్ ఫిట్టింగ్** + +మెషీన్ లెర్నింగ్ సందర్భంలో, మోడల్ ఫిట్టింగ్ అనేది మోడల్ యొక్క అంతర్గత ఫంక్షన్ ఖచ్చితత్వాన్ని సూచిస్తుంది, ఇది పరిచయమయ్యే డేటాను విశ్లేషించడానికి ప్రయత్నిస్తుంది. + +🎓 **అండర్‌ఫిట్టింగ్** మరియు **ఓవర్‌ఫిట్టింగ్** సాధారణ సమస్యలు, ఇవి మోడల్ నాణ్యతను తగ్గిస్తాయి, ఎందుకంటే మోడల్ సరైన రీతిలో సరిపోలడం లేదా ఎక్కువగా సరిపోలడం లేదు. ఓవర్‌ఫిట్ మోడల్ శిక్షణ డేటాను చాలా బాగా పూర్వానుమానిస్తుంది, ఎందుకంటే అది డేటా వివరాలు మరియు శబ్దాన్ని బాగా నేర్చుకుంది. అండర్‌ఫిట్ మోడల్ ఖచ్చితంగా లేదు, ఎందుకంటే అది తన శిక్షణ డేటాను లేదా ఇప్పటి వరకు 'చూసిన' డేటాను సరిగ్గా విశ్లేషించలేకపోతుంది. + +![overfitting model](../../../../translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.te.png) +> ఇన్ఫోగ్రాఫిక్ [జెన్ లూపర్](https://twitter.com/jenlooper) ద్వారా + +## పారామీటర్ ట్యూనింగ్ + +మీ ప్రారంభ శిక్షణ పూర్తయిన తర్వాత, మోడల్ నాణ్యతను గమనించి, దాని 'హైపర్‌పారామీటర్లను' సర్దుబాటు చేయడం ద్వారా మెరుగుపరచాలని పరిగణించండి. ఈ ప్రక్రియ గురించి మరింత చదవండి [డాక్యుమెంటేషన్‌లో](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). + +## పూర్వానుమానం + +ఇది మీరు పూర్తిగా కొత్త డేటాను ఉపయోగించి మీ మోడల్ ఖచ్చితత్వాన్ని పరీక్షించే క్షణం. 'అప్లైడ్' ML సెట్టింగ్‌లో, మీరు ప్రొడక్షన్‌లో మోడల్ ఉపయోగించడానికి వెబ్ ఆస్తులను నిర్మిస్తున్నప్పుడు, ఈ ప్రక్రియలో యూజర్ ఇన్‌పుట్ (ఉదాహరణకు బటన్ నొక్కడం) సేకరించి, వేరియబుల్ సెట్ చేసి, మోడల్‌కు ఇన్ఫరెన్స్ లేదా మూల్యాంకన కోసం పంపడం ఉండవచ్చు. + +ఈ పాఠాలలో, మీరు ఈ దశలను ఉపయోగించి ఎలా సిద్ధం చేయాలో, నిర్మించాలో, పరీక్షించాలో, మూల్యాంకనం చేయాలో, మరియు పూర్వానుమానం చేయాలో తెలుసుకుంటారు - డేటా సైంటిస్ట్ యొక్క అన్ని చర్యలు మరియు మరిన్ని, మీరు 'ఫుల్ స్టాక్' ML ఇంజనీర్‌గా మారే ప్రయాణంలో. + +--- + +## 🚀సవాలు + +ML ప్రాక్టిషనర్ దశలను ప్రతిబింబించే ఒక ఫ్లో చార్ట్ డ్రా చేయండి. మీరు ప్రస్తుతంలో ఈ ప్రక్రియలో ఎక్కడ ఉన్నారు? మీరు ఎక్కడ కష్టాన్ని ఎదుర్కొంటారని భావిస్తున్నారు? మీకు ఏది సులభంగా అనిపిస్తుంది? + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +డేటా సైంటిస్ట్‌లు వారి రోజువారీ పనిని చర్చించే ఇంటర్వ్యూలను ఆన్‌లైన్‌లో వెతకండి. ఇక్కడ [ఒకటి](https://www.youtube.com/watch?v=Z3IjgbbCEfs) ఉంది. + +## అసైన్‌మెంట్ + +[డేటా సైంటిస్ట్‌ను ఇంటర్వ్యూ చేయండి](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము. + \ No newline at end of file diff --git a/translations/te/1-Introduction/4-techniques-of-ML/assignment.md b/translations/te/1-Introduction/4-techniques-of-ML/assignment.md new file mode 100644 index 000000000..ae781d9a2 --- /dev/null +++ b/translations/te/1-Introduction/4-techniques-of-ML/assignment.md @@ -0,0 +1,27 @@ + +# డేటా సైంటిస్ట్‌ను ఇంటర్వ్యూ చేయండి + +## సూచనలు + +మీ కంపెనీలో, యూజర్ గ్రూప్‌లో, లేదా మీ స్నేహితులు లేదా సహ విద్యార్థుల మధ్య, ప్రొఫెషనల్‌గా డేటా సైంటిస్ట్‌గా పనిచేసే ఎవరో ఒకరితో మాట్లాడండి. వారి రోజువారీ పనుల గురించి ఒక చిన్న పేపర్ (500 పదాలు) రాయండి. వారు నిపుణులా ఉంటారా, లేక 'ఫుల్ స్టాక్'గా పనిచేస్తారా? + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైనది | సరిపడినది | మెరుగుదల అవసరం | +| -------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | --------------------- | +| | సరైన పొడవు ఉన్న వ్యాసం, మూలాలతో కూడినది, .doc ఫైల్‌గా సమర్పించబడింది | వ్యాసం సరైన మూలాలతో లేకపోవడం లేదా అవసరమైన పొడవు కంటే తక్కువగా ఉండటం | వ్యాసం సమర్పించబడలేదు | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/1-Introduction/README.md b/translations/te/1-Introduction/README.md new file mode 100644 index 000000000..f77d949d5 --- /dev/null +++ b/translations/te/1-Introduction/README.md @@ -0,0 +1,38 @@ + +# మెషీన్ లెర్నింగ్ పరిచయం + +ఈ పాఠ్యాంశంలో, మీరు మెషీన్ లెర్నింగ్ రంగానికి ఆధారమైన మూల భావనలను, అది ఏమిటి, మరియు పరిశోధకులు దీని తో పని చేయడానికి ఉపయోగించే చరిత్ర మరియు సాంకేతికతలను తెలుసుకుంటారు. ఈ కొత్త ML ప్రపంచాన్ని కలిసి అన్వేషిద్దాం! + +![globe](../../../translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.te.jpg) +> ఫోటో బిల్ ఆక్స్ఫర్డ్ ద్వారా అన్స్ప్లాష్ + +### పాఠాలు + +1. [మెషీన్ లెర్నింగ్ పరిచయం](1-intro-to-ML/README.md) +1. [మెషీన్ లెర్నింగ్ మరియు AI చరిత్ర](2-history-of-ML/README.md) +1. [న్యాయం మరియు మెషీన్ లెర్నింగ్](3-fairness/README.md) +1. [మెషీన్ లెర్నింగ్ సాంకేతికతలు](4-techniques-of-ML/README.md) +### క్రెడిట్స్ + +"మెషీన్ లెర్నింగ్ పరిచయం" ను ♥️ తో [ముహమ్మద్ సకీబ్ ఖాన్ ఇనాన్](https://twitter.com/Sakibinan), [ఒర్నెల్లా ఆల్టున్యాన్](https://twitter.com/ornelladotcom) మరియు [జెన్ లూపర్](https://twitter.com/jenlooper) సహా ఒక బృందం రాశారు + +"మెషీన్ లెర్నింగ్ చరిత్ర" ను ♥️ తో [జెన్ లూపర్](https://twitter.com/jenlooper) మరియు [ఏమీ బాయిడ్](https://twitter.com/AmyKateNicho) రాశారు + +"న్యాయం మరియు మెషీన్ లెర్నింగ్" ను ♥️ తో [టోమోమీ ఇమురా](https://twitter.com/girliemac) రాశారు + +"మెషీన్ లెర్నింగ్ సాంకేతికతలు" ను ♥️ తో [జెన్ లూపర్](https://twitter.com/jenlooper) మరియు [క్రిస్ నోరింగ్](https://twitter.com/softchris) రాశారు + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/2-Regression/1-Tools/README.md b/translations/te/2-Regression/1-Tools/README.md new file mode 100644 index 000000000..6fa2a285e --- /dev/null +++ b/translations/te/2-Regression/1-Tools/README.md @@ -0,0 +1,241 @@ + +# రిగ్రెషన్ మోడల్స్ కోసం Python మరియు Scikit-learn తో ప్రారంభించండి + +![Summary of regressions in a sketchnote](../../../../translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.te.png) + +> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ఈ పాఠం R లో అందుబాటులో ఉంది!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) + +## పరిచయం + +ఈ నాలుగు పాఠాలలో, మీరు రిగ్రెషన్ మోడల్స్ ఎలా నిర్మించాలో తెలుసుకుంటారు. వీటి ఉపయోగం గురించి త్వరలో చర్చిస్తాము. కానీ మీరు ఏదైనా చేయకముందు, ప్రారంభించడానికి సరైన సాధనాలు మీ వద్ద ఉన్నాయో లేదో నిర్ధారించుకోండి! + +ఈ పాఠంలో, మీరు నేర్చుకుంటారు: + +- స్థానిక మెషీన్ లెర్నింగ్ పనుల కోసం మీ కంప్యూటర్‌ను ఎలా కాన్ఫిగర్ చేయాలో. +- Jupyter నోట్బుక్స్‌తో ఎలా పని చేయాలో. +- Scikit-learn ఉపయోగించడం, ఇన్‌స్టాలేషన్ సహా. +- లీనియర్ రిగ్రెషన్‌ను ఒక ప్రాక్టికల్ వ్యాయామంతో అన్వేషించడం. + +## ఇన్‌స్టాలేషన్లు మరియు కాన్ఫిగరేషన్లు + +[![ML for beginners - Setup your tools ready to build Machine Learning models](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML for beginners -Setup your tools ready to build Machine Learning models") + +> 🎥 ML కోసం మీ కంప్యూటర్‌ను కాన్ఫిగర్ చేయడం గురించి చిన్న వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి. + +1. **Python ఇన్‌స్టాల్ చేయండి**. మీ కంప్యూటర్‌లో [Python](https://www.python.org/downloads/) ఇన్‌స్టాల్ అయి ఉందని నిర్ధారించుకోండి. మీరు అనేక డేటా సైన్స్ మరియు మెషీన్ లెర్నింగ్ పనుల కోసం Python ఉపయోగిస్తారు. చాలా కంప్యూటర్ సిస్టమ్స్ ఇప్పటికే Python ఇన్‌స్టాలేషన్ కలిగి ఉంటాయి. కొంతమంది వినియోగదారుల కోసం సులభతరం చేయడానికి ఉపయోగకరమైన [Python కోడింగ్ ప్యాక్స్](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) కూడా అందుబాటులో ఉన్నాయి. + + Python యొక్క కొన్ని ఉపయోగాలు ఒక వెర్షన్ అవసరం అవుతాయి, మరికొన్ని వేరే వెర్షన్ అవసరం అవుతాయి. అందుకే, [వర్చువల్ ఎన్విరాన్‌మెంట్](https://docs.python.org/3/library/venv.html) లో పని చేయడం ఉపయోగకరం. + +2. **Visual Studio Code ఇన్‌స్టాల్ చేయండి**. మీ కంప్యూటర్‌లో Visual Studio Code ఇన్‌స్టాల్ అయి ఉందని నిర్ధారించుకోండి. ప్రాథమిక ఇన్‌స్టాలేషన్ కోసం [Visual Studio Code ఇన్‌స్టాల్ చేయడం](https://code.visualstudio.com/) గురించి సూచనలను అనుసరించండి. ఈ కోర్సులో మీరు Visual Studio Code లో Python ఉపయోగించబోతున్నారు, కాబట్టి Python అభివృద్ధి కోసం [Visual Studio Code ను ఎలా కాన్ఫిగర్ చేయాలో](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) తెలుసుకోవడం మంచిది. + + > ఈ [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) సేకరణ ద్వారా Python తో సౌకర్యంగా అవ్వండి + > + > [![Setup Python with Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Setup Python with Visual Studio Code") + > + > 🎥 పై చిత్రాన్ని క్లిక్ చేసి VS Code లో Python ఉపయోగించడం గురించి వీడియో చూడండి. + +3. **Scikit-learn ఇన్‌స్టాల్ చేయండి**, [ఈ సూచనలను](https://scikit-learn.org/stable/install.html) అనుసరించండి. మీరు Python 3 ఉపయోగిస్తున్నారని నిర్ధారించుకోవాలి, అందుకే వర్చువల్ ఎన్విరాన్‌మెంట్ ఉపయోగించడం సిఫార్సు చేయబడింది. మీరు M1 Mac పై ఈ లైబ్రరీని ఇన్‌స్టాల్ చేస్తుంటే, పై లింకులో ప్రత్యేక సూచనలు ఉన్నాయి. + +1. **Jupyter Notebook ఇన్‌స్టాల్ చేయండి**. మీరు [Jupyter ప్యాకేజీని ఇన్‌స్టాల్ చేయాలి](https://pypi.org/project/jupyter/). + +## మీ ML రచనా వాతావరణం + +మీరు Python కోడ్ అభివృద్ధి చేయడానికి మరియు మెషీన్ లెర్నింగ్ మోడల్స్ సృష్టించడానికి **నోట్బుక్స్** ఉపయోగించబోతున్నారు. ఈ రకమైన ఫైల్ డేటా సైంటిస్టులకు సాధారణ సాధనం, మరియు అవి వారి సఫిక్స్ లేదా ఎక్స్‌టెన్షన్ `.ipynb` ద్వారా గుర్తించబడతాయి. + +నోట్బుక్స్ అనేవి ఒక ఇంటరాక్టివ్ వాతావరణం, ఇది డెవలపర్‌కు కోడ్ రాయడమే కాకుండా, కోడ్ చుట్టూ గమనికలు మరియు డాక్యుమెంటేషన్ కూడా జోడించడానికి అనుమతిస్తుంది, ఇది ప్రయోగాత్మక లేదా పరిశోధన-ఆధారిత ప్రాజెక్టులకు చాలా సహాయకరం. + +[![ML for beginners - Set up Jupyter Notebooks to start building regression models](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML for beginners - Set up Jupyter Notebooks to start building regression models") + +> 🎥 ఈ వ్యాయామం ద్వారా పని చేయడానికి పై చిత్రాన్ని క్లిక్ చేయండి. + +### వ్యాయామం - నోట్బుక్‌తో పని చేయండి + +ఈ ఫోల్డర్‌లో, మీరు _notebook.ipynb_ ఫైల్‌ను కనుగొంటారు. + +1. Visual Studio Code లో _notebook.ipynb_ ను తెరవండి. + + Python 3+ తో Jupyter సర్వర్ ప్రారంభమవుతుంది. మీరు నోట్బుక్‌లో `run` చేయగల కోడ్ భాగాలను కనుగొంటారు. ప్లే బటన్ లాంటి ఐకాన్‌ను ఎంచుకుని కోడ్ బ్లాక్‌ను నడపవచ్చు. + +1. `md` ఐకాన్‌ను ఎంచుకుని కొంత మార్క్డౌన్ జోడించండి, మరియు ఈ క్రింది టెక్స్ట్ **# Welcome to your notebook** ను జోడించండి. + + తరువాత, కొంత Python కోడ్ జోడించండి. + +1. కోడ్ బ్లాక్‌లో **print('hello notebook')** టైప్ చేయండి. +1. కోడ్ నడపడానికి ఎరోను ఎంచుకోండి. + + మీరు ఈ ముద్రిత స్టేట్‌మెంట్‌ను చూడగలరు: + + ```output + hello notebook + ``` + +![VS Code with a notebook open](../../../../translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.te.jpg) + +మీరు మీ కోడ్‌ను వ్యాఖ్యలతో కలిపి నోట్బుక్‌ను స్వయంగా డాక్యుమెంట్ చేయవచ్చు. + +✅ ఒక వెబ్ డెవలపర్ వాతావరణం మరియు డేటా సైంటిస్ట్ వాతావరణం ఎంత భిన్నమో ఒక నిమిషం ఆలోచించండి. + +## Scikit-learn తో ప్రారంభం + +ఇప్పుడు Python మీ స్థానిక వాతావరణంలో సెట్ అయింది, మరియు మీరు Jupyter నోట్బుక్స్‌తో సౌకర్యంగా ఉన్నారు, Scikit-learn (దీనిని `sci` అని ఉచ్చరించండి, `science` లాగా) తో కూడా సౌకర్యంగా అవ్వండి. Scikit-learn మీకు ML పనులు చేయడానికి సహాయపడే [విస్తృత API](https://scikit-learn.org/stable/modules/classes.html#api-ref) అందిస్తుంది. + +వారి [వెబ్‌సైట్](https://scikit-learn.org/stable/getting_started.html) ప్రకారం, "Scikit-learn అనేది ఓపెన్ సోర్స్ మెషీన్ లెర్నింగ్ లైబ్రరీ, ఇది సూపర్వైజ్డ్ మరియు అన్‌సూపర్వైజ్డ్ లెర్నింగ్‌ను మద్దతు ఇస్తుంది. ఇది మోడల్ ఫిట్టింగ్, డేటా ప్రీప్రాసెసింగ్, మోడల్ సెలెక్షన్ మరియు మూల్యాంకనం, మరియు అనేక ఇతర ఉపకరణాలను కూడా అందిస్తుంది." + +ఈ కోర్సులో, మీరు Scikit-learn మరియు ఇతర సాధనాలను ఉపయోగించి మెషీన్ లెర్నింగ్ మోడల్స్ నిర్మించి 'సాంప్రదాయ మెషీన్ లెర్నింగ్' పనులు చేస్తారు. న్యూరల్ నెట్‌వర్క్స్ మరియు డీప్ లెర్నింగ్‌ను మేము ఉద్దేశపూర్వకంగా తప్పించుకున్నాము, అవి మా రాబోయే 'AI for Beginners' పాఠ్యాంశంలో బాగా కవర్ చేయబడతాయి. + +Scikit-learn మోడల్స్ నిర్మించడం మరియు వాటిని ఉపయోగానికి మూల్యాంకనం చేయడం సులభం చేస్తుంది. ఇది ప్రధానంగా సంఖ్యాత్మక డేటాను ఉపయోగించడంపై దృష్టి సారిస్తుంది మరియు విద్యార్థుల కోసం ఉపయోగించడానికి సిద్ధంగా ఉన్న అనేక డేటాసెట్‌లను కలిగి ఉంటుంది. ఇది విద్యార్థులు ప్రయత్నించడానికి ముందుగా నిర్మించిన మోడల్స్‌ను కూడా కలిగి ఉంది. ముందుగా ప్యాకేజ్డ్ డేటాను లోడ్ చేయడం మరియు Scikit-learn తో ప్రాథమిక డేటాతో ఒక బిల్ట్-ఇన్ ఎస్టిమేటర్ ఉపయోగించి మొదటి ML మోడల్‌ను అన్వేషిద్దాం. + +## వ్యాయామం - మీ మొదటి Scikit-learn నోట్బుక్ + +> ఈ ట్యుటోరియల్ Scikit-learn వెబ్‌సైట్‌లోని [లీనియర్ రిగ్రెషన్ ఉదాహరణ](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) నుండి ప్రేరణ పొందింది. + + +[![ML for beginners - Your First Linear Regression Project in Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML for beginners - Your First Linear Regression Project in Python") + +> 🎥 ఈ వ్యాయామం ద్వారా పని చేయడానికి పై చిత్రాన్ని క్లిక్ చేయండి. + +ఈ పాఠానికి సంబంధించిన _notebook.ipynb_ ఫైల్‌లో, 'trash can' ఐకాన్‌ను నొక్కి అన్ని సెల్స్‌ను క్లియర్ చేయండి. + +ఈ విభాగంలో, మీరు Scikit-learn లో నేర్చుకునే ప్రయోజనాల కోసం నిర్మించిన డయాబెటిస్ గురించి చిన్న డేటాసెట్‌తో పని చేస్తారు. మీరు డయాబెటిక్ రోగుల కోసం చికిత్సను పరీక్షించాలనుకుంటున్నారని ఊహించండి. మెషీన్ లెర్నింగ్ మోడల్స్ వేరియబుల్స్ కలయికల ఆధారంగా ఏ రోగులు చికిత్సకు మెరుగ్గా స్పందిస్తారో నిర్ణయించడంలో సహాయపడవచ్చు. ఒక చాలా ప్రాథమిక రిగ్రెషన్ మోడల్ కూడా, దృశ్యీకరించినప్పుడు, వేరియబుల్స్ గురించి సమాచారం చూపించి మీ సైద్ధాంతిక క్లినికల్ ట్రయల్స్‌ను సక్రమంగా నిర్వహించడంలో సహాయపడవచ్చు. + +✅ రిగ్రెషన్ పద్ధతుల అనేక రకాలు ఉన్నాయి, మీరు ఎంచుకునేది మీరు కోరుకునే సమాధానంపై ఆధారపడి ఉంటుంది. మీరు ఒక వ్యక్తి వయస్సుకు అనుగుణంగా ఎత్తును అంచనా వేయాలనుకుంటే, మీరు లీనియర్ రిగ్రెషన్ ఉపయోగిస్తారు, ఎందుకంటే మీరు **సంఖ్యాత్మక విలువ** కోసం చూస్తున్నారు. మీరు ఒక వంటకాన్ని వెగన్‌గా పరిగణించాలా లేదా అనేది తెలుసుకోవాలనుకుంటే, మీరు **వర్గీకరణ** కోసం చూస్తున్నారు కాబట్టి లాజిస్టిక్ రిగ్రెషన్ ఉపయోగిస్తారు. మీరు తర్వాత లాజిస్టిక్ రిగ్రెషన్ గురించి మరింత తెలుసుకుంటారు. డేటా నుండి అడగగల కొన్ని ప్రశ్నల గురించి మరియు ఏ పద్ధతులు ఎక్కువగా సరిపోతాయో కొంచెం ఆలోచించండి. + +ఈ పనిని ప్రారంభిద్దాం. + +### లైబ్రరీలను దిగుమతి చేసుకోండి + +ఈ పనికి కొన్ని లైబ్రరీలను దిగుమతి చేసుకుంటాము: + +- **matplotlib**. ఇది ఉపయోగకరమైన [గ్రాఫింగ్ టూల్](https://matplotlib.org/) మరియు లైన్ ప్లాట్ సృష్టించడానికి ఉపయోగిస్తాము. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) అనేది Python లో సంఖ్యాత్మక డేటాను నిర్వహించడానికి ఉపయోగకరమైన లైబ్రరీ. +- **sklearn**. ఇది [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) లైబ్రరీ. + +మీ పనులకు సహాయపడే కొన్ని లైబ్రరీలను దిగుమతి చేసుకోండి. + +1. క్రింది కోడ్ టైప్ చేసి దిగుమతులు జోడించండి: + + ```python + import matplotlib.pyplot as plt + import numpy as np + from sklearn import datasets, linear_model, model_selection + ``` + + పై కోడ్‌లో మీరు `matplotlib`, `numpy` ను దిగుమతి చేసుకుంటున్నారు మరియు `sklearn` నుండి `datasets`, `linear_model` మరియు `model_selection` ను దిగుమతి చేసుకుంటున్నారు. `model_selection` డేటాను ట్రైనింగ్ మరియు టెస్ట్ సెట్లుగా విభజించడానికి ఉపయోగిస్తారు. + +### డయాబెటిస్ డేటాసెట్ + +బిల్ట్-ఇన్ [డయాబెటిస్ డేటాసెట్](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 నమూనాల డేటాను కలిగి ఉంది, 10 ఫీచర్ వేరియబుల్స్‌తో, వాటిలో కొన్ని: + +- వయస్సు: సంవత్సరాలలో వయస్సు +- bmi: బాడీ మాస్ ఇండెక్స్ +- bp: సగటు రక్తపోటు +- s1 tc: T-సెల్స్ (తెల్ల రక్త కణాల ఒక రకం) + +✅ ఈ డేటాసెట్ 'sex' అనే ఫీచర్ వేరియబుల్‌ను కలిగి ఉంది, ఇది డయాబెటిస్ పరిశోధనలో ముఖ్యమైనది. అనేక వైద్య డేటాసెట్‌లు ఈ రకమైన ద్విభాగ వర్గీకరణను కలిగి ఉంటాయి. ఈ వర్గీకరణలు జనాభాలోని కొన్ని భాగాలను చికిత్సల నుండి ఎలా తప్పించవచ్చు అనేది కొంచెం ఆలోచించండి. + +ఇప్పుడు, X మరియు y డేటాను లోడ్ చేయండి. + +> 🎓 గుర్తుంచుకోండి, ఇది సూపర్వైజ్డ్ లెర్నింగ్, కాబట్టి 'y' అనే లక్ష్యాన్ని అవసరం. + +కొత్త కోడ్ సెల్‌లో, `load_diabetes()` ను పిలిచి డయాబెటిస్ డేటాసెట్‌ను లోడ్ చేయండి. ఇన్‌పుట్ `return_X_y=True` అంటే `X` డేటా మ్యాట్రిక్స్ అవుతుంది, మరియు `y` రిగ్రెషన్ లక్ష్యం అవుతుంది. + +1. డేటా మ్యాట్రిక్స్ ఆకారం మరియు మొదటి అంశాన్ని చూపించడానికి కొన్ని ప్రింట్ కమాండ్లను జోడించండి: + + ```python + X, y = datasets.load_diabetes(return_X_y=True) + print(X.shape) + print(X[0]) + ``` + + మీరు పొందుతున్నది ఒక టుపుల్. మీరు టుపుల్ యొక్క మొదటి రెండు విలువలను వరుసగా `X` మరియు `y` కు కేటాయిస్తున్నారు. [టుపుల్స్ గురించి మరింత తెలుసుకోండి](https://wikipedia.org/wiki/Tuple). + + ఈ డేటాలో 442 అంశాలు ఉన్నాయి, అవి 10 అంశాల అర్రేలుగా ఆకారంలో ఉన్నాయి: + + ```text + (442, 10) + [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 + -0.04340085 -0.00259226 0.01990842 -0.01764613] + ``` + + ✅ డేటా మరియు రిగ్రెషన్ లక్ష్యం మధ్య సంబంధం గురించి కొంచెం ఆలోచించండి. లీనియర్ రిగ్రెషన్ ఫీచర్ X మరియు లక్ష్య వేరియబుల్ y మధ్య సంబంధాలను అంచనా వేస్తుంది. డయాబెటిస్ డేటాసెట్ కోసం [లక్ష్యం](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ఏమిటి అని డాక్యుమెంటేషన్‌లో చూడండి? ఈ డేటాసెట్ ఏం చూపిస్తోంది? + +2. తరువాత, ఈ డేటాసెట్‌లోని 3వ కాలమ్‌ను ఎంచుకుని ప్లాట్ చేయడానికి ఒక భాగాన్ని ఎంచుకోండి. మీరు అన్ని వరుసలను ఎంచుకోవడానికి `:` ఆపరేటర్ ఉపయోగించి, తరువాత 3వ కాలమ్‌ను సూచిక (2) ఉపయోగించి ఎంచుకోవచ్చు. ప్లాటింగ్ కోసం అవసరమైన 2D అర్రేగా డేటాను మార్చడానికి `reshape(n_rows, n_columns)` ఉపయోగించవచ్చు. ఒక పారామీటర్ -1 అయితే, ఆ కొలత ఆటోమేటిక్‌గా లెక్కించబడుతుంది. + + ```python + X = X[:, 2] + X = X.reshape((-1,1)) + ``` + + ✅ ఎప్పుడైనా డేటా ఆకారాన్ని తనిఖీ చేయడానికి ప్రింట్ చేయండి. + +3. ఇప్పుడు మీరు ప్లాట్ చేయడానికి డేటా సిద్ధంగా ఉన్నందున, ఈ డేటాసెట్‌లో సంఖ్యల మధ్య తార్కిక విభజనను యంత్రం నిర్ణయించగలదా అని చూడండి. దీని కోసం, మీరు డేటా (X) మరియు లక్ష్యం (y) రెండింటినీ టెస్ట్ మరియు ట్రైనింగ్ సెట్లుగా విభజించాలి. Scikit-learn దీనిని సులభంగా చేయడానికి ఒక విధానం కలిగి ఉంది; మీరు టెస్ట్ డేటాను ఒక నిర్దిష్ట పాయింట్ వద్ద విభజించవచ్చు. + + ```python + X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) + ``` + +4. ఇప్పుడు మీరు మీ మోడల్‌ను ట్రైన్ చేయడానికి సిద్ధంగా ఉన్నారు! లీనియర్ రిగ్రెషన్ మోడల్‌ను లోడ్ చేసి, `model.fit()` ఉపయోగించి మీ X మరియు y ట్రైనింగ్ సెట్లతో ట్రైన్ చేయండి: + + ```python + model = linear_model.LinearRegression() + model.fit(X_train, y_train) + ``` + + ✅ `model.fit()` అనేది TensorFlow వంటి అనేక ML లైబ్రరీలలో కనిపించే ఫంక్షన్. + +5. తరువాత, టెస్ట్ డేటా ఉపయోగించి `predict()` ఫంక్షన్ ద్వారా అంచనాను సృష్టించండి. ఇది డేటా గ్రూపుల మధ్య లైన్ డ్రా చేయడానికి ఉపయోగించబడుతుంది. + + ```python + y_pred = model.predict(X_test) + ``` + +6. ఇప్పుడు డేటాను ప్లాట్‌లో చూపించాల్సిన సమయం. Matplotlib ఈ పనికి చాలా ఉపయోగకరమైన సాధనం. అన్ని X మరియు y టెస్ట్ డేటా యొక్క స్కాటర్‌ప్లాట్ సృష్టించి, అంచనాను ఉపయోగించి మోడల్ డేటా గ్రూపుల మధ్య సరైన చోట లైన్ డ్రా చేయండి. + + ```python + plt.scatter(X_test, y_test, color='black') + plt.plot(X_test, y_pred, color='blue', linewidth=3) + plt.xlabel('Scaled BMIs') + plt.ylabel('Disease Progression') + plt.title('A Graph Plot Showing Diabetes Progression Against BMI') + plt.show() + ``` + + ![a scatterplot showing datapoints around diabetes](../../../../translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.te.png) + ✅ ఇక్కడ ఏమి జరుగుతుందో కొంచెం ఆలోచించండి. ఒక సరళ రేఖ అనేక చిన్న డాటా బిందువుల ద్వారా నడుస్తోంది, కానీ అది నిజంగా ఏమి చేస్తోంది? మీరు ఈ రేఖను ఉపయోగించి కొత్త, చూడని డాటా పాయింట్ ప్లాట్ యొక్క y అక్షానికి సంబంధించి ఎక్కడ సరిపోతుందో ఎలా అంచనా వేయాలో చూడగలరా? ఈ మోడల్ యొక్క ప్రాక్టికల్ ఉపయోగాన్ని పదాలలో వ్యక్తం చేయడానికి ప్రయత్నించండి. + +అభినందనలు, మీరు మీ మొదటి లీనియర్ రిగ్రెషన్ మోడల్‌ను నిర్మించారు, దానితో ఒక అంచనాను సృష్టించారు, మరియు దాన్ని ఒక ప్లాట్‌లో ప్రదర్శించారు! + +--- +## 🚀సవాలు + +ఈ డేటాసెట్ నుండి వేరే వేరియబుల్‌ను ప్లాట్ చేయండి. సూచన: ఈ లైన్‌ను సవరించండి: `X = X[:,2]`. ఈ డేటాసెట్ లక్ష్యాన్ని దృష్టిలో ఉంచుకుని, మధుమేహం వ్యాధిగా ఎలా అభివృద్ధి చెందుతుందో మీరు ఏమి కనుగొనగలరు? +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +ఈ ట్యుటోరియల్‌లో, మీరు సింపుల్ లీనియర్ రిగ్రెషన్‌తో పని చేశారు, యూనివేరియట్ లేదా మల్టిపుల్ లీనియర్ రిగ్రెషన్ కాకుండా. ఈ పద్ధతుల మధ్య తేడాల గురించి కొంచెం చదవండి, లేదా [ఈ వీడియో](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) చూడండి. + +రిగ్రెషన్ కాన్సెప్ట్ గురించి మరింత చదవండి మరియు ఈ సాంకేతికత ద్వారా ఏ రకమైన ప్రశ్నలకు సమాధానం ఇవ్వగలమో ఆలోచించండి. మీ అవగాహనను లోతుగా చేసుకోవడానికి ఈ [ట్యుటోరియల్](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) తీసుకోండి. + +## అసైన్‌మెంట్ + +[వేరే డేటాసెట్](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/2-Regression/1-Tools/assignment.md b/translations/te/2-Regression/1-Tools/assignment.md new file mode 100644 index 000000000..770d2d96f --- /dev/null +++ b/translations/te/2-Regression/1-Tools/assignment.md @@ -0,0 +1,29 @@ + +# Scikit-learn తో రిగ్రెషన్ + +## సూచనలు + +Scikit-learn లోని [Linnerud dataset](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) ను పరిశీలించండి. ఈ డేటాసెట్‌లో బహుళ [లక్ష్యాలు](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset) ఉన్నాయి: 'ఇది ఒక ఫిట్‌నెస్ క్లబ్‌లో ఇరవై మధ్య వయస్కుల నుండి సేకరించిన మూడు వ్యాయామ (డేటా) మరియు మూడు శారీరక (లక్ష్యం) వేరియబుల్స్ కలిగి ఉంది'. + +మీ స్వంత మాటల్లో, వెయిస్ట్‌లైన్ మరియు ఎంత సిటప్‌లు పూర్తయ్యాయో మధ్య సంబంధాన్ని చిత్రించగల రిగ్రెషన్ మోడల్‌ను ఎలా సృష్టించాలో వివరించండి. ఈ డేటాసెట్‌లోని ఇతర డేటాపాయింట్ల కోసం కూడా అదే చేయండి. + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతం | సరిపోతుంది | మెరుగుదల అవసరం | +| ------------------------------ | ----------------------------------- | ----------------------------- | -------------------------- | +| వివరణాత్మక పేరాగ్రాఫ్ సమర్పించండి | బాగా రాసిన పేరాగ్రాఫ్ సమర్పించబడింది | కొన్ని వాక్యాలు సమర్పించబడ్డాయి | వివరణ అందించబడలేదు | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/2-Regression/1-Tools/notebook.ipynb b/translations/te/2-Regression/1-Tools/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/te/2-Regression/1-Tools/solution/Julia/README.md b/translations/te/2-Regression/1-Tools/solution/Julia/README.md new file mode 100644 index 000000000..65f2c2b96 --- /dev/null +++ b/translations/te/2-Regression/1-Tools/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ఇది తాత్కాలిక ప్లేస్‌హోల్డర్‌입니다 + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb b/translations/te/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb new file mode 100644 index 000000000..51a1820fa --- /dev/null +++ b/translations/te/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb @@ -0,0 +1,454 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_1-R.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "c18d3bd0bd8ae3878597e89dcd1fa5c1", + "translation_date": "2025-12-19T16:29:38+00:00", + "source_file": "2-Regression/1-Tools/solution/R/lesson_1-R.ipynb", + "language_code": "te" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# రిగ్రెషన్ మోడల్ నిర్మించండి: రిగ్రెషన్ మోడల్స్ కోసం R మరియు Tidymodels తో ప్రారంభించండి\n" + ], + "metadata": { + "id": "YJUHCXqK57yz" + } + }, + { + "cell_type": "markdown", + "source": [ + "## రిగ్రెషన్ పరిచయం - పాఠం 1\n", + "\n", + "#### దాన్ని దృష్టిలో పెట్టుకోవడం\n", + "\n", + "✅ రిగ్రెషన్ పద్ధతుల అనేక రకాలు ఉన్నాయి, మీరు ఎంచుకునే పద్ధతి మీరు కోరుకునే సమాధానంపై ఆధారపడి ఉంటుంది. మీరు ఒక నిర్దిష్ట వయస్సు ఉన్న వ్యక్తి యొక్క సాధ్యమైన ఎత్తును అంచనా వేయాలనుకుంటే, మీరు `లీనియర్ రిగ్రెషన్` ఉపయోగిస్తారు, ఎందుకంటే మీరు **సంఖ్యాత్మక విలువ** కోసం చూస్తున్నారు. మీరు ఒక వంటకాన్ని వెగన్‌గా పరిగణించాలా లేదా అనేది తెలుసుకోవాలనుకుంటే, మీరు **వర్గీకరణ కేటగిరీ** కోసం చూస్తున్నారు కాబట్టి మీరు `లాజిస్టిక్ రిగ్రెషన్` ఉపయోగిస్తారు. లాజిస్టిక్ రిగ్రెషన్ గురించి మీరు తర్వాత మరింత తెలుసుకుంటారు. డేటా నుండి మీరు అడగగల కొన్ని ప్రశ్నల గురించి కొంచెం ఆలోచించండి, మరియు ఈ పద్ధతులలో ఏది ఎక్కువగా అనుకూలమో.\n", + "\n", + "ఈ విభాగంలో, మీరు [డయాబెటిస్ గురించి చిన్న డేటాసెట్](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html) తో పని చేస్తారు. మీరు డయాబెటిక్ రోగులకు చికిత్స పరీక్షించాలనుకుంటున్నారని ఊహించుకోండి. మెషీన్ లెర్నింగ్ మోడల్స్ వేరియబుల్స్ యొక్క కలయికల ఆధారంగా ఏ రోగులు చికిత్సకు మెరుగ్గా స్పందిస్తారో నిర్ణయించడంలో మీకు సహాయపడవచ్చు. ఒక చాలా ప్రాథమిక రిగ్రెషన్ మోడల్ కూడా, దృశ్యీకరించినప్పుడు, మీ స 이యతాత్మక క్లినికల్ ట్రయల్స్‌ను నిర్వహించడంలో సహాయపడే వేరియబుల్స్ గురించి సమాచారం చూపవచ్చు.\n", + "\n", + "అందువల్ల, ఈ పనిని ప్రారంభిద్దాం!\n", + "\n", + "

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

@allison_horst చేత కళాకృతి
\n", + "\n", + "\n" + ], + "metadata": { + "id": "LWNNzfqd6feZ" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 1. మన టూల్ సెట్‌ను లోడ్ చేయడం\n", + "\n", + "ఈ పనికి, మనకు క్రింది ప్యాకేజీలు అవసరం:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) అనేది డేటా సైన్స్‌ను వేగవంతం చేయడానికి, సులభతరం చేయడానికి మరియు మరింత సరదాగా మార్చడానికి రూపొందించిన [R ప్యాకేజీల సేకరణ](https://www.tidyverse.org/packages).\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ఫ్రేమ్‌వర్క్ అనేది మోడలింగ్ మరియు మెషీన్ లెర్నింగ్ కోసం [ప్యాకేజీల సేకరణ](https://www.tidymodels.org/packages/).\n", + "\n", + "మీరు వాటిని ఇన్‌స్టాల్ చేసుకోవచ్చు:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\"))`\n", + "\n", + "క్రింది స్క్రిప్ట్ ఈ మాడ్యూల్‌ను పూర్తి చేయడానికి అవసరమైన ప్యాకేజీలు మీ వద్ద ఉన్నాయా లేదా అని తనిఖీ చేస్తుంది మరియు కొన్నివి లేవంటే వాటిని మీ కోసం ఇన్‌స్టాల్ చేస్తుంది.\n" + ], + "metadata": { + "id": "FIo2YhO26wI9" + } + }, + { + "cell_type": "code", + "execution_count": 2, + "source": [ + "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n", + "pacman::p_load(tidyverse, tidymodels)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Loading required package: pacman\n", + "\n" + ] + } + ], + "metadata": { + "id": "cIA9fz9v7Dss", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "2df7073b-86b2-4b32-cb86-0da605a0dc11" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఇప్పుడు, ఈ అద్భుతమైన ప్యాకేజీలను లోడ్ చేసి మన ప్రస్తుత R సెషన్‌లో అందుబాటులో ఉంచుకుందాం. (ఇది కేవలం ఉదాహరణ కోసం, `pacman::p_load()` ఇప్పటికే మీ కోసం అది చేసింది)\n" + ], + "metadata": { + "id": "gpO_P_6f9WUG" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# load the core Tidyverse packages\r\n", + "library(tidyverse)\r\n", + "\r\n", + "# load the core Tidymodels packages\r\n", + "library(tidymodels)\r\n" + ], + "outputs": [], + "metadata": { + "id": "NLMycgG-9ezO" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 2. మధుమేహ డేటాసెట్\n", + "\n", + "ఈ వ్యాయామంలో, మేము మధుమేహ డేటాసెట్‌పై అంచనాలు వేయడం ద్వారా మా రిగ్రెషన్ నైపుణ్యాలను ప్రదర్శించబోతున్నాము. [మధుమేహ డేటాసెట్](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.rwrite1.txt) లో మధుమేహం గురించి `442 నమూనాలు` ఉన్నాయి, 10 సూచిక ఫీచర్ వేరియబుల్స్‌తో, `వయస్సు`, `లింగం`, `శరీర ద్రవ్యం సూచిక`, `సగటు రక్తపోటు`, మరియు `ఆరు రక్త సీరమ్ కొలతలు` అలాగే ఒక ఫలిత వేరియబుల్ `y`: ప్రాథమిక స్థితి తర్వాత ఒక సంవత్సరం లో వ్యాధి పురోగతి యొక్క పరిమాణాత్మక కొలత.\n", + "\n", + "|పరిశీలనల సంఖ్య|442|\n", + "|----------------------|:---|\n", + "|సూచికల సంఖ్య|మొదటి 10 కాలమ్స్ సంఖ్యాత్మక సూచికలు|\n", + "|ఫలితం/లక్ష్యం|11వ కాలమ్ ప్రాథమిక స్థితి తర్వాత ఒక సంవత్సరం లో వ్యాధి పురోగతి యొక్క పరిమాణాత్మక కొలత|\n", + "|సూచిక సమాచారం|- వయస్సు సంవత్సరాలలో\n", + "||- లింగం\n", + "||- bmi శరీర ద్రవ్యం సూచిక\n", + "||- bp సగటు రక్తపోటు\n", + "||- s1 tc, మొత్తం సీరమ్ కొలెస్ట్రాల్\n", + "||- s2 ldl, తక్కువ సాంద్రత లిపోప్రోటీన్లు\n", + "||- s3 hdl, అధిక సాంద్రత లిపోప్రోటీన్లు\n", + "||- s4 tch, మొత్తం కొలెస్ట్రాల్ / HDL\n", + "||- s5 ltg, సీరమ్ ట్రైగ్లిసరైడ్స్ స్థాయి యొక్క లాగ్ కావచ్చు\n", + "||- s6 glu, రక్తంలో చక్కెర స్థాయి|\n", + "\n", + "\n", + "\n", + "\n", + "> 🎓 గుర్తుంచుకోండి, ఇది పర్యవేక్షిత అభ్యాసం, మరియు మాకు 'y' అనే పేరుతో లక్ష్యం అవసరం.\n", + "\n", + "R తో డేటాను నిర్వహించడానికి ముందు, మీరు డేటాను R యొక్క మెమరీలో దిగుమతి చేసుకోవాలి, లేదా R డేటాను దూరంగా యాక్సెస్ చేయడానికి ఉపయోగించే కనెక్షన్‌ను నిర్మించాలి.\n", + "\n", + "> [readr](https://readr.tidyverse.org/) ప్యాకేజ్, ఇది Tidyverse భాగం, R లో చతురస్ర డేటాను వేగంగా మరియు స్నేహపూర్వకంగా చదవడానికి ఒక మార్గాన్ని అందిస్తుంది.\n", + "\n", + "ఇప్పుడు, ఈ మూల URL నుండి అందించిన మధుమేహ డేటాసెట్‌ను లోడ్ చేద్దాం: \n", + "\n", + "అలాగే, `glimpse()` ఉపయోగించి మా డేటాపై ఒక సానిటీ చెక్ నిర్వహించి, `slice()` ఉపయోగించి మొదటి 5 వరుసలను ప్రదర్శిస్తాము.\n", + "\n", + "మరింత ముందుకు వెళ్లేముందు, R కోడ్‌లో మీరు తరచుగా ఎదుర్కొనే ఒక విషయం పరిచయం చేద్దాం 🥁🥁: పైప్ ఆపరేటర్ `%>%`\n", + "\n", + "పైప్ ఆపరేటర్ (`%>%`) ఒక ఆబ్జెక్టును ఫంక్షన్ లేదా కాల్ ఎక్స్‌ప్రెషన్‌కు ముందుకు పంపుతూ లాజికల్ క్రమంలో ఆపరేషన్లను నిర్వహిస్తుంది. మీరు పైప్ ఆపరేటర్‌ను మీ కోడ్‌లో \"అప్పుడు\" అని చెప్పడం లాగా భావించవచ్చు.\n" + ], + "metadata": { + "id": "KM6iXLH996Cl" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Import the data set\r\n", + "diabetes <- read_table2(file = \"https://www4.stat.ncsu.edu/~boos/var.select/diabetes.rwrite1.txt\")\r\n", + "\r\n", + "\r\n", + "# Get a glimpse and dimensions of the data\r\n", + "glimpse(diabetes)\r\n", + "\r\n", + "\r\n", + "# Select the first 5 rows of the data\r\n", + "diabetes %>% \r\n", + " slice(1:5)" + ], + "outputs": [], + "metadata": { + "id": "Z1geAMhM-bSP" + } + }, + { + "cell_type": "markdown", + "source": [ + "`glimpse()` మనకు ఈ డేటాలో 442 వరుసలు మరియు 11 కాలమ్స్ ఉన్నాయని చూపిస్తుంది, అన్ని కాలమ్స్ డేటా టైప్ `double` గా ఉన్నాయి\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "> glimpse() మరియు slice() ఫంక్షన్లు [`dplyr`](https://dplyr.tidyverse.org/) లో ఉన్నాయి. Dplyr, Tidyverse భాగంగా, డేటా మానిప్యులేషన్ యొక్క ఒక వ్యాకరణం, ఇది సాధారణ డేటా మానిప్యులేషన్ సవాళ్లను పరిష్కరించడానికి సహాయపడే సజావుగా ఉండే క్రియాపదాల సెట్‌ను అందిస్తుంది\n", + "\n", + "
\n", + "\n", + "ఇప్పుడు మన దగ్గర డేటా ఉన్నందున, ఈ వ్యాయామం కోసం ఒక ఫీచర్ (`bmi`) పై దృష్టి సారిద్దాం. దీని కోసం మనం కావలసిన కాలమ్స్‌ను ఎంచుకోవాలి. కాబట్టి, మనం దీన్ని ఎలా చేస్తాం?\n", + "\n", + "[`dplyr::select()`](https://dplyr.tidyverse.org/reference/select.html) మనకు డేటా ఫ్రేమ్‌లో కాలమ్స్‌ను *ఎంచుకోవడానికి* (అవసరమైతే పేరు మార్చడానికి) అనుమతిస్తుంది.\n" + ], + "metadata": { + "id": "UwjVT1Hz-c3Z" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Select predictor feature `bmi` and outcome `y`\r\n", + "diabetes_select <- diabetes %>% \r\n", + " select(c(bmi, y))\r\n", + "\r\n", + "# Print the first 5 rows\r\n", + "diabetes_select %>% \r\n", + " slice(1:10)" + ], + "outputs": [], + "metadata": { + "id": "RDY1oAKI-m80" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 3. శిక్షణ మరియు పరీక్ష డేటా\n", + "\n", + "పర్యవేక్షిత అభ్యాసంలో డేటాను రెండు ఉపసమూహాలుగా *విభజించడం* సాధారణ ఆచారం; ఒకటి (సాధారణంగా పెద్దది) మోడల్‌ను శిక్షణ ఇవ్వడానికి ఉపయోగించే సెట్, మరియు మరొక చిన్న \"హోల్డ్-బ్యాక్\" సెట్ మోడల్ ఎలా ప్రదర్శించిందో చూడటానికి ఉపయోగిస్తారు.\n", + "\n", + "ఇప్పుడు మనకు డేటా సిద్ధంగా ఉన్నందున, ఈ డేటాసెట్‌లోని సంఖ్యల మధ్య తార్కికమైన విభజనను యంత్రం సహాయంతో నిర్ణయించగలమా అని చూడవచ్చు. మనం Tidymodels ఫ్రేమ్‌వర్క్‌లో భాగమైన [rsample](https://tidymodels.github.io/rsample/) ప్యాకేజీని ఉపయోగించి, డేటాను *ఎలా* విభజించాలో సమాచారం కలిగిన ఒక ఆబ్జెక్ట్‌ను సృష్టించవచ్చు, మరియు ఆపై సృష్టించిన శిక్షణ మరియు పరీక్ష సెట్‌లను తీసుకోవడానికి రెండు మరిన్ని rsample ఫంక్షన్లను ఉపయోగించవచ్చు:\n" + ], + "metadata": { + "id": "SDk668xK-tc3" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "set.seed(2056)\r\n", + "# Split 67% of the data for training and the rest for tesing\r\n", + "diabetes_split <- diabetes_select %>% \r\n", + " initial_split(prop = 0.67)\r\n", + "\r\n", + "# Extract the resulting train and test sets\r\n", + "diabetes_train <- training(diabetes_split)\r\n", + "diabetes_test <- testing(diabetes_split)\r\n", + "\r\n", + "# Print the first 3 rows of the training set\r\n", + "diabetes_train %>% \r\n", + " slice(1:10)" + ], + "outputs": [], + "metadata": { + "id": "EqtHx129-1h-" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 4. Tidymodels తో లీనియర్ రిగ్రెషన్ మోడల్‌ను శిక్షణ ఇవ్వండి\n", + "\n", + "ఇప్పుడు మనం మన మోడల్‌ను శిక్షణ ఇవ్వడానికి సిద్ధంగా ఉన్నాము!\n", + "\n", + "Tidymodels లో, మీరు `parsnip()` ఉపయోగించి మోడల్స్‌ను మూడు భావనలను పేర్కొనడం ద్వారా నిర్దేశిస్తారు:\n", + "\n", + "- మోడల్ **రకం** లీనియర్ రిగ్రెషన్, లాజిస్టిక్ రిగ్రెషన్, డెసిషన్ ట్రీ మోడల్స్ మరియు ఇతర మోడల్స్‌ను వేరుచేస్తుంది.\n", + "\n", + "- మోడల్ **మోడ్** రిగ్రెషన్ మరియు వర్గీకరణ వంటి సాధారణ ఎంపికలను కలిగి ఉంటుంది; కొన్ని మోడల్ రకాలు వీటిలో ఏదైనా మోడ్‌ను మద్దతు ఇస్తాయి, మరికొన్ని ఒక్క మోడ్ మాత్రమే కలిగి ఉంటాయి.\n", + "\n", + "- మోడల్ **ఇంజిన్** అనేది మోడల్‌ను ఫిట్ చేయడానికి ఉపయోగించే గణనాత్మక సాధనం. ఇవి తరచుగా R ప్యాకేజీలు, ఉదాహరణకు **`\"lm\"`** లేదా **`\"ranger\"`**\n", + "\n", + "ఈ మోడలింగ్ సమాచారం మోడల్ స్పెసిఫికేషన్‌లో సేకరించబడుతుంది, కాబట్టి ఒకదాన్ని నిర్మిద్దాం!\n" + ], + "metadata": { + "id": "sBOS-XhB-6v7" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Build a linear model specification\r\n", + "lm_spec <- \r\n", + " # Type\r\n", + " linear_reg() %>% \r\n", + " # Engine\r\n", + " set_engine(\"lm\") %>% \r\n", + " # Mode\r\n", + " set_mode(\"regression\")\r\n", + "\r\n", + "\r\n", + "# Print the model specification\r\n", + "lm_spec" + ], + "outputs": [], + "metadata": { + "id": "20OwEw20--t3" + } + }, + { + "cell_type": "markdown", + "source": [ + "మోడల్‌ను *స్పెసిఫై* చేసిన తర్వాత, మోడల్‌ను సాధారణంగా ఒక ఫార్ములా మరియు కొంత డేటా ఉపయోగించి [`fit()`](https://parsnip.tidymodels.org/reference/fit.html) ఫంక్షన్ ద్వారా `estimated` లేదా `trained` చేయవచ్చు.\n", + "\n", + "`y ~ .` అంటే మనం `y` ను అంచనా వేయబడే పరిమాణం/లక్ష్యంగా ఫిట్ చేస్తాము, ఇది అన్ని ప్రిడిక్టర్లు/ఫీచర్లు అంటే `.` ద్వారా వివరించబడుతుంది (ఈ సందర్భంలో, మనకు ఒకే ఒక ప్రిడిక్టర్ ఉంది: `bmi`)\n" + ], + "metadata": { + "id": "_oDHs89k_CJj" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Build a linear model specification\r\n", + "lm_spec <- linear_reg() %>% \r\n", + " set_engine(\"lm\") %>%\r\n", + " set_mode(\"regression\")\r\n", + "\r\n", + "\r\n", + "# Train a linear regression model\r\n", + "lm_mod <- lm_spec %>% \r\n", + " fit(y ~ ., data = diabetes_train)\r\n", + "\r\n", + "# Print the model\r\n", + "lm_mod" + ], + "outputs": [], + "metadata": { + "id": "YlsHqd-q_GJQ" + } + }, + { + "cell_type": "markdown", + "source": [ + "మోడల్ అవుట్పుట్ నుండి, మనం శిక్షణ సమయంలో నేర్చుకున్న గుణకాలను చూడవచ్చు. అవి నిజమైన మరియు అంచనా వేరియబుల్ మధ్య మొత్తం లోతైన పొరపాటు తక్కువగా ఉండే ఉత్తమ సరళి యొక్క గుణకాలను సూచిస్తాయి.\n", + "
\n", + "\n", + "## 5. పరీక్ష సెట్ పై అంచనాలు చేయండి\n", + "\n", + "ఇప్పుడు మనం ఒక మోడల్ శిక్షణ ఇచ్చినందున, దాన్ని ఉపయోగించి పరీక్ష డేటాసెట్ కోసం వ్యాధి పురోగతిని y అంచనా వేయవచ్చు [parsnip::predict()](https://parsnip.tidymodels.org/reference/predict.model_fit.html) ఉపయోగించి. ఇది డేటా సమూహాల మధ్య సరళి గీయడానికి ఉపయోగించబడుతుంది.\n" + ], + "metadata": { + "id": "kGZ22RQj_Olu" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make predictions for the test set\r\n", + "predictions <- lm_mod %>% \r\n", + " predict(new_data = diabetes_test)\r\n", + "\r\n", + "# Print out some of the predictions\r\n", + "predictions %>% \r\n", + " slice(1:5)" + ], + "outputs": [], + "metadata": { + "id": "nXHbY7M2_aao" + } + }, + { + "cell_type": "markdown", + "source": [ + "వాహ్! 💃🕺 మేము ఒక మోడల్‌ను శిక్షణ ఇచ్చాము మరియు దాన్ని ఉపయోగించి అంచనాలు చేసాము!\n", + "\n", + "అంచనాలు చేయడంలో, tidymodels సంప్రదాయం ఎప్పుడూ ఫలితాల యొక్క టిబుల్/డేటా ఫ్రేమ్‌ను ప్రమాణీకృత కాలమ్ పేర్లతో ఉత్పత్తి చేయడం. ఇది అసలు డేటా మరియు అంచనాలను కలిపి తరువాతి ఆపరేషన్ల కోసం ఉపయోగించదగిన ఫార్మాట్‌లో ఉంచడం సులభం చేస్తుంది, ఉదాహరణకు ప్లాటింగ్.\n", + "\n", + "`dplyr::bind_cols()` అనేది బహుళ డేటా ఫ్రేమ్‌లను కాలమ్‌లుగా సమర్థవంతంగా బంధిస్తుంది.\n" + ], + "metadata": { + "id": "R_JstwUY_bIs" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Combine the predictions and the original test set\r\n", + "results <- diabetes_test %>% \r\n", + " bind_cols(predictions)\r\n", + "\r\n", + "\r\n", + "results %>% \r\n", + " slice(1:5)" + ], + "outputs": [], + "metadata": { + "id": "RybsMJR7_iI8" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 6. మోడల్ ఫలితాలను చిత్రీకరించండి\n", + "\n", + "ఇప్పుడు, దీన్ని దృశ్యరూపంలో చూడాల్సిన సమయం 📈. టెస్ట్ సెట్‌లోని అన్ని `y` మరియు `bmi` విలువల scatter plot ను సృష్టిస్తాము, ఆపై మోడల్ డేటా గ్రూపింగ్‌ల మధ్య సరైన స్థలంలో prediction లను ఉపయోగించి ఒక రేఖను గీయుతాము.\n", + "\n", + "R లో గ్రాఫ్‌లను తయారు చేయడానికి అనేక విధానాలు ఉన్నాయి, కానీ `ggplot2` అత్యంత అందమైన మరియు బహుముఖమైన వాటిలో ఒకటి. ఇది **స్వతంత్ర భాగాలను కలిపి** గ్రాఫ్‌లను రూపొందించడానికి అనుమతిస్తుంది.\n" + ], + "metadata": { + "id": "XJbYbMZW_n_s" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Set a theme for the plot\r\n", + "theme_set(theme_light())\r\n", + "# Create a scatter plot\r\n", + "results %>% \r\n", + " ggplot(aes(x = bmi)) +\r\n", + " # Add a scatter plot\r\n", + " geom_point(aes(y = y), size = 1.6) +\r\n", + " # Add a line plot\r\n", + " geom_line(aes(y = .pred), color = \"blue\", size = 1.5)" + ], + "outputs": [], + "metadata": { + "id": "R9tYp3VW_sTn" + } + }, + { + "cell_type": "markdown", + "source": [ + "> ✅ ఇక్కడ ఏమి జరుగుతుందో కొంచెం ఆలోచించండి. ఒక సరళ రేఖ అనేక చిన్న డాటా బిందువుల ద్వారా నడుస్తోంది, కానీ అది నిజంగా ఏమి చేస్తోంది? మీరు ఈ రేఖను ఉపయోగించి కొత్త, చూడని డాటా పాయింట్ ప్లాట్ యొక్క y అక్షానికి సంబంధించి ఎక్కడ సరిపోతుందో ఎలా అంచనా వేయగలరో చూడగలరా? ఈ మోడల్ యొక్క ప్రాక్టికల్ ఉపయోగాన్ని పదాలలో వ్యక్తం చేయడానికి ప్రయత్నించండి.\n", + "\n", + "అభినందనలు, మీరు మీ మొదటి లీనియర్ రిగ్రెషన్ మోడల్‌ను నిర్మించారు, దానితో ఒక అంచనాను సృష్టించారు, మరియు దాన్ని ఒక ప్లాట్‌లో ప్రదర్శించారు!\n" + ], + "metadata": { + "id": "zrPtHIxx_tNI" + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/te/2-Regression/1-Tools/solution/notebook.ipynb b/translations/te/2-Regression/1-Tools/solution/notebook.ipynb new file mode 100644 index 000000000..ccd251953 --- /dev/null +++ b/translations/te/2-Regression/1-Tools/solution/notebook.ipynb @@ -0,0 +1,677 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## డయాబెటిస్ డేటాసెట్ కోసం లీనియర్ రిగ్రెషన్ - పాఠం 1\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "అవసరమైన లైబ్రరీలను దిగుమతి చేసుకోండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from sklearn import datasets, linear_model, model_selection\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "డయాబెటిస్ డేటాసెట్‌ను లోడ్ చేయండి, `X` డేటా మరియు `y` ఫీచర్లుగా విభజించండి.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(442, 10)\n", + "[ 0.03807591 0.05068012 0.06169621 0.02187239 -0.0442235 -0.03482076\n", + " -0.04340085 -0.00259226 0.01990749 -0.01764613]\n" + ] + } + ], + "source": [ + "X, y = datasets.load_diabetes(return_X_y=True)\n", + "print(X.shape)\n", + "print(X[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ఈ వ్యాయామం కోసం లక్ష్యంగా ఒకే ఒక లక్షణాన్ని ఎంచుకోండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(442,)\n" + ] + } + ], + "source": [ + "# Selecting the 3rd feature\n", + "X = X[:, 2]\n", + "print(X.shape)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(442, 1)\n", + "[[ 0.06169621]\n", + " [-0.05147406]\n", + " [ 0.04445121]\n", + " [-0.01159501]\n", + " [-0.03638469]\n", + " [-0.04069594]\n", + " [-0.04716281]\n", + " [-0.00189471]\n", + " [ 0.06169621]\n", + " [ 0.03906215]\n", + " [-0.08380842]\n", + " [ 0.01750591]\n", + " [-0.02884001]\n", + " [-0.00189471]\n", + " [-0.02560657]\n", + " [-0.01806189]\n", + " [ 0.04229559]\n", + " [ 0.01211685]\n", + " [-0.0105172 ]\n", + " [-0.01806189]\n", + " [-0.05686312]\n", + " [-0.02237314]\n", + " [-0.00405033]\n", + " [ 0.06061839]\n", + " [ 0.03582872]\n", + " [-0.01267283]\n", + " [-0.07734155]\n", + " [ 0.05954058]\n", + " [-0.02129532]\n", + " [-0.00620595]\n", + " [ 0.04445121]\n", + " [-0.06548562]\n", + " [ 0.12528712]\n", + " [-0.05039625]\n", + " [-0.06332999]\n", + " [-0.03099563]\n", + " [ 0.02289497]\n", + " [ 0.01103904]\n", + " [ 0.07139652]\n", + " [ 0.01427248]\n", + " [-0.00836158]\n", + " [-0.06764124]\n", + " [-0.0105172 ]\n", + " [-0.02345095]\n", + " [ 0.06816308]\n", + " [-0.03530688]\n", + " [-0.01159501]\n", + " [-0.0730303 ]\n", + " [-0.04177375]\n", + " [ 0.01427248]\n", + " [-0.00728377]\n", + " [ 0.0164281 ]\n", + " [-0.00943939]\n", + " [-0.01590626]\n", + " [ 0.0250506 ]\n", + " [-0.04931844]\n", + " [ 0.04121778]\n", + " [-0.06332999]\n", + " [-0.06440781]\n", + " [-0.02560657]\n", + " [-0.00405033]\n", + " [ 0.00457217]\n", + " [-0.00728377]\n", + " [-0.0374625 ]\n", + " [-0.02560657]\n", + " [-0.02452876]\n", + " [-0.01806189]\n", + " [-0.01482845]\n", + " [-0.02991782]\n", + " [-0.046085 ]\n", + " [-0.06979687]\n", + " [ 0.03367309]\n", + " [-0.00405033]\n", + " [-0.02021751]\n", + " [ 0.00241654]\n", + " [-0.03099563]\n", + " [ 0.02828403]\n", + " [-0.03638469]\n", + " [-0.05794093]\n", + " [-0.0374625 ]\n", + " [ 0.01211685]\n", + " [-0.02237314]\n", + " [-0.03530688]\n", + " [ 0.00996123]\n", + " [-0.03961813]\n", + " [ 0.07139652]\n", + " [-0.07518593]\n", + " [-0.00620595]\n", + " [-0.04069594]\n", + " [-0.04824063]\n", + " [-0.02560657]\n", + " [ 0.0519959 ]\n", + " [ 0.00457217]\n", + " [-0.06440781]\n", + " [-0.01698407]\n", + " [-0.05794093]\n", + " [ 0.00996123]\n", + " [ 0.08864151]\n", + " [-0.00512814]\n", + " [-0.06440781]\n", + " [ 0.01750591]\n", + " [-0.04500719]\n", + " [ 0.02828403]\n", + " [ 0.04121778]\n", + " [ 0.06492964]\n", + " [-0.03207344]\n", + " [-0.07626374]\n", + " [ 0.04984027]\n", + " [ 0.04552903]\n", + " [-0.00943939]\n", + " [-0.03207344]\n", + " [ 0.00457217]\n", + " [ 0.02073935]\n", + " [ 0.01427248]\n", + " [ 0.11019775]\n", + " [ 0.00133873]\n", + " [ 0.05846277]\n", + " [-0.02129532]\n", + " [-0.0105172 ]\n", + " [-0.04716281]\n", + " [ 0.00457217]\n", + " [ 0.01750591]\n", + " [ 0.08109682]\n", + " [ 0.0347509 ]\n", + " [ 0.02397278]\n", + " [-0.00836158]\n", + " [-0.06117437]\n", + " [-0.00189471]\n", + " [-0.06225218]\n", + " [ 0.0164281 ]\n", + " [ 0.09618619]\n", + " [-0.06979687]\n", + " [-0.02129532]\n", + " [-0.05362969]\n", + " [ 0.0433734 ]\n", + " [ 0.05630715]\n", + " [-0.0816528 ]\n", + " [ 0.04984027]\n", + " [ 0.11127556]\n", + " [ 0.06169621]\n", + " [ 0.01427248]\n", + " [ 0.04768465]\n", + " [ 0.01211685]\n", + " [ 0.00564998]\n", + " [ 0.04660684]\n", + " [ 0.12852056]\n", + " [ 0.05954058]\n", + " [ 0.09295276]\n", + " [ 0.01535029]\n", + " [-0.00512814]\n", + " [ 0.0703187 ]\n", + " [-0.00405033]\n", + " [-0.00081689]\n", + " [-0.04392938]\n", + " [ 0.02073935]\n", + " [ 0.06061839]\n", + " [-0.0105172 ]\n", + " [-0.03315126]\n", + " [-0.06548562]\n", + " [ 0.0433734 ]\n", + " [-0.06225218]\n", + " [ 0.06385183]\n", + " [ 0.03043966]\n", + " [ 0.07247433]\n", + " [-0.0191397 ]\n", + " [-0.06656343]\n", + " [-0.06009656]\n", + " [ 0.06924089]\n", + " [ 0.05954058]\n", + " [-0.02668438]\n", + " [-0.02021751]\n", + " [-0.046085 ]\n", + " [ 0.07139652]\n", + " [-0.07949718]\n", + " [ 0.00996123]\n", + " [-0.03854032]\n", + " [ 0.01966154]\n", + " [ 0.02720622]\n", + " [-0.00836158]\n", + " [-0.01590626]\n", + " [ 0.00457217]\n", + " [-0.04285156]\n", + " [ 0.00564998]\n", + " [-0.03530688]\n", + " [ 0.02397278]\n", + " [-0.01806189]\n", + " [ 0.04229559]\n", + " [-0.0547075 ]\n", + " [-0.00297252]\n", + " [-0.06656343]\n", + " [-0.01267283]\n", + " [-0.04177375]\n", + " [-0.03099563]\n", + " [-0.00512814]\n", + " [-0.05901875]\n", + " [ 0.0250506 ]\n", + " [-0.046085 ]\n", + " [ 0.00349435]\n", + " [ 0.05415152]\n", + " [-0.04500719]\n", + " [-0.05794093]\n", + " [-0.05578531]\n", + " [ 0.00133873]\n", + " [ 0.03043966]\n", + " [ 0.00672779]\n", + " [ 0.04660684]\n", + " [ 0.02612841]\n", + " [ 0.04552903]\n", + " [ 0.04013997]\n", + " [-0.01806189]\n", + " [ 0.01427248]\n", + " [ 0.03690653]\n", + " [ 0.00349435]\n", + " [-0.07087468]\n", + " [-0.03315126]\n", + " [ 0.09403057]\n", + " [ 0.03582872]\n", + " [ 0.03151747]\n", + " [-0.06548562]\n", + " [-0.04177375]\n", + " [-0.03961813]\n", + " [-0.03854032]\n", + " [-0.02560657]\n", + " [-0.02345095]\n", + " [-0.06656343]\n", + " [ 0.03259528]\n", + " [-0.046085 ]\n", + " [-0.02991782]\n", + " [-0.01267283]\n", + " [-0.01590626]\n", + " [ 0.07139652]\n", + " [-0.03099563]\n", + " [ 0.00026092]\n", + " [ 0.03690653]\n", + " [ 0.03906215]\n", + " [-0.01482845]\n", + " [ 0.00672779]\n", + " [-0.06871905]\n", + " [-0.00943939]\n", + " [ 0.01966154]\n", + " [ 0.07462995]\n", + " [-0.00836158]\n", + " [-0.02345095]\n", + " [-0.046085 ]\n", + " [ 0.05415152]\n", + " [-0.03530688]\n", + " [-0.03207344]\n", + " [-0.0816528 ]\n", + " [ 0.04768465]\n", + " [ 0.06061839]\n", + " [ 0.05630715]\n", + " [ 0.09834182]\n", + " [ 0.05954058]\n", + " [ 0.03367309]\n", + " [ 0.05630715]\n", + " [-0.06548562]\n", + " [ 0.16085492]\n", + " [-0.05578531]\n", + " [-0.02452876]\n", + " [-0.03638469]\n", + " [-0.00836158]\n", + " [-0.04177375]\n", + " [ 0.12744274]\n", + " [-0.07734155]\n", + " [ 0.02828403]\n", + " [-0.02560657]\n", + " [-0.06225218]\n", + " [-0.00081689]\n", + " [ 0.08864151]\n", + " [-0.03207344]\n", + " [ 0.03043966]\n", + " [ 0.00888341]\n", + " [ 0.00672779]\n", + " [-0.02021751]\n", + " [-0.02452876]\n", + " [-0.01159501]\n", + " [ 0.02612841]\n", + " [-0.05901875]\n", + " [-0.03638469]\n", + " [-0.02452876]\n", + " [ 0.01858372]\n", + " [-0.0902753 ]\n", + " [-0.00512814]\n", + " [-0.05255187]\n", + " [-0.02237314]\n", + " [-0.02021751]\n", + " [-0.0547075 ]\n", + " [-0.00620595]\n", + " [-0.01698407]\n", + " [ 0.05522933]\n", + " [ 0.07678558]\n", + " [ 0.01858372]\n", + " [-0.02237314]\n", + " [ 0.09295276]\n", + " [-0.03099563]\n", + " [ 0.03906215]\n", + " [-0.06117437]\n", + " [-0.00836158]\n", + " [-0.0374625 ]\n", + " [-0.01375064]\n", + " [ 0.07355214]\n", + " [-0.02452876]\n", + " [ 0.03367309]\n", + " [ 0.0347509 ]\n", + " [-0.03854032]\n", + " [-0.03961813]\n", + " [-0.00189471]\n", + " [-0.03099563]\n", + " [-0.046085 ]\n", + " [ 0.00133873]\n", + " [ 0.06492964]\n", + " [ 0.04013997]\n", + " [-0.02345095]\n", + " [ 0.05307371]\n", + " [ 0.04013997]\n", + " [-0.02021751]\n", + " [ 0.01427248]\n", + " [-0.03422907]\n", + " [ 0.00672779]\n", + " [ 0.00457217]\n", + " [ 0.03043966]\n", + " [ 0.0519959 ]\n", + " [ 0.06169621]\n", + " [-0.00728377]\n", + " [ 0.00564998]\n", + " [ 0.05415152]\n", + " [-0.00836158]\n", + " [ 0.114509 ]\n", + " [ 0.06708527]\n", + " [-0.05578531]\n", + " [ 0.03043966]\n", + " [-0.02560657]\n", + " [ 0.10480869]\n", + " [-0.00620595]\n", + " [-0.04716281]\n", + " [-0.04824063]\n", + " [ 0.08540807]\n", + " [-0.01267283]\n", + " [-0.03315126]\n", + " [-0.00728377]\n", + " [-0.01375064]\n", + " [ 0.05954058]\n", + " [ 0.02181716]\n", + " [ 0.01858372]\n", + " [-0.01159501]\n", + " [-0.00297252]\n", + " [ 0.01750591]\n", + " [-0.02991782]\n", + " [-0.02021751]\n", + " [-0.05794093]\n", + " [ 0.06061839]\n", + " [-0.04069594]\n", + " [-0.07195249]\n", + " [-0.05578531]\n", + " [ 0.04552903]\n", + " [-0.00943939]\n", + " [-0.03315126]\n", + " [ 0.04984027]\n", + " [-0.08488624]\n", + " [ 0.00564998]\n", + " [ 0.02073935]\n", + " [-0.00728377]\n", + " [ 0.10480869]\n", + " [-0.02452876]\n", + " [-0.00620595]\n", + " [-0.03854032]\n", + " [ 0.13714305]\n", + " [ 0.17055523]\n", + " [ 0.00241654]\n", + " [ 0.03798434]\n", + " [-0.05794093]\n", + " [-0.00943939]\n", + " [-0.02345095]\n", + " [-0.0105172 ]\n", + " [-0.03422907]\n", + " [-0.00297252]\n", + " [ 0.06816308]\n", + " [ 0.00996123]\n", + " [ 0.00241654]\n", + " [-0.03854032]\n", + " [ 0.02612841]\n", + " [-0.08919748]\n", + " [ 0.06061839]\n", + " [-0.02884001]\n", + " [-0.02991782]\n", + " [-0.0191397 ]\n", + " [-0.04069594]\n", + " [ 0.01535029]\n", + " [-0.02452876]\n", + " [ 0.00133873]\n", + " [ 0.06924089]\n", + " [-0.06979687]\n", + " [-0.02991782]\n", + " [-0.046085 ]\n", + " [ 0.01858372]\n", + " [ 0.00133873]\n", + " [-0.03099563]\n", + " [-0.00405033]\n", + " [ 0.01535029]\n", + " [ 0.02289497]\n", + " [ 0.04552903]\n", + " [-0.04500719]\n", + " [-0.03315126]\n", + " [ 0.097264 ]\n", + " [ 0.05415152]\n", + " [ 0.12313149]\n", + " [-0.08057499]\n", + " [ 0.09295276]\n", + " [-0.05039625]\n", + " [-0.01159501]\n", + " [-0.0277622 ]\n", + " [ 0.05846277]\n", + " [ 0.08540807]\n", + " [-0.00081689]\n", + " [ 0.00672779]\n", + " [ 0.00888341]\n", + " [ 0.08001901]\n", + " [ 0.07139652]\n", + " [-0.02452876]\n", + " [-0.0547075 ]\n", + " [-0.03638469]\n", + " [ 0.0164281 ]\n", + " [ 0.07786339]\n", + " [-0.03961813]\n", + " [ 0.01103904]\n", + " [-0.04069594]\n", + " [-0.03422907]\n", + " [ 0.00564998]\n", + " [ 0.08864151]\n", + " [-0.03315126]\n", + " [-0.05686312]\n", + " [-0.03099563]\n", + " [ 0.05522933]\n", + " [-0.06009656]\n", + " [ 0.00133873]\n", + " [-0.02345095]\n", + " [-0.07410811]\n", + " [ 0.01966154]\n", + " [-0.01590626]\n", + " [-0.01590626]\n", + " [ 0.03906215]\n", + " [-0.0730303 ]]\n" + ] + } + ], + "source": [ + "#Reshaping to get a 2D array\n", + "X = X.reshape(-1, 1)\n", + "print(X.shape)\n", + "print(X)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`X` మరియు `y` కోసం శిక్షణ మరియు పరీక్ష డేటాను విభజించండి.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "మోడల్‌ను ఎంచుకుని దాన్ని శిక్షణ డేటాతో సరిపోల్చండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "LinearRegression()" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model = linear_model.LinearRegression()\n", + "model.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "పరీక్షా డేటాను ఉపయోగించి ఒక రేఖను అంచనా వేయండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "y_pred = model.predict(X_test)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ఫలితాలను ఒక గ్రాఫ్‌లో ప్రదర్శించండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABbmUlEQVR4nO3de3wU1f0//tcQIHIxiQmBALsQUdSigNYLxn6iSaECaj/5NKTawAfRWi2IbUBRS71gtIrKp5rUj5dqK7ZfXfwAWcVS8ALuYtCIQEERvAC/cAtJoCBJQAhkc35/rLtmk92dmd2Z2ZnZ1/Px2Edl92Tm7CTd894z7/M+khBCgIiIiMhEuiW6A0RERESdMUAhIiIi02GAQkRERKbDAIWIiIhMhwEKERERmQ4DFCIiIjIdBihERERkOgxQiIiIyHS6J7oDsWhvb8f+/ftx+umnQ5KkRHeHiIiIFBBCoKWlBYMGDUK3btHnSCwZoOzfvx9OpzPR3SAiIqIY7N27Fw6HI2obSwYop59+OgD/G0xLS0twb4iIiEiJ5uZmOJ3O4DgejSUDlMBtnbS0NAYoREREFqMkPYNJskRERGQ6DFCIiIjIdBigEBERkekwQCEiIiLTYYBCREREpqMqQHn++ecxatSo4OqZvLw8rFy5Mvh6QUEBJEkKeUyfPj3kGHv27MG1116L3r17o3///rj77rvR1tamzbshIiIiW1C1zNjhcODxxx/H8OHDIYTA3/72NxQVFWHTpk04//zzAQC33norHn744eDP9O7dO/jfPp8P1157LXJycvDRRx+hvr4eN954I3r06IHHHntMo7dEREREVicJIUQ8B8jMzMSCBQtwyy23oKCgABdeeCEqKirCtl25ciWuu+467N+/HwMGDAAAvPDCC7j33ntx8OBB9OzZU9E5m5ubkZ6ejqamJtZBISIisgg143fMOSg+nw+vv/46jh07hry8vODzr732Gvr164cLLrgAc+fOxbfffht8raamBiNHjgwGJwAwfvx4NDc3Y+vWrRHP1draiubm5pAHERERac/n88Hr9WLRokXwer3w+XwJ6YfqSrJbtmxBXl4eTpw4gb59++KNN97AiBEjAACTJ0/G0KFDMWjQIHz22We499578dVXX8HtdgMAGhoaQoITAMF/NzQ0RDzn/PnzUV5errarREREpILb7UZZWRn2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X_test, y_test, color='black')\n", + "plt.plot(X_test, y_pred, color='blue', linewidth=3)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "16ff1a974f6e4348e869e4a7d366b86a", + "translation_date": "2025-12-19T16:27:59+00:00", + "source_file": "2-Regression/1-Tools/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/te/2-Regression/2-Data/README.md b/translations/te/2-Regression/2-Data/README.md new file mode 100644 index 000000000..28f28651f --- /dev/null +++ b/translations/te/2-Regression/2-Data/README.md @@ -0,0 +1,228 @@ + +# Scikit-learn ఉపయోగించి రిగ్రెషన్ మోడల్ నిర్మించండి: డేటాను సిద్ధం చేయండి మరియు విజువలైజ్ చేయండి + +![డేటా విజువలైజేషన్ ఇన్ఫోగ్రాఫిక్](../../../../translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.te.png) + +ఇన్ఫోగ్రాఫిక్ [దాసాని మడిపల్లి](https://twitter.com/dasani_decoded) ద్వారా + +## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ఈ పాఠం R లో అందుబాటులో ఉంది!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) + +## పరిచయం + +Scikit-learn తో మెషీన్ లెర్నింగ్ మోడల్ నిర్మాణాన్ని ప్రారంభించడానికి మీరు అవసరమైన టూల్స్ సెట్ చేసుకున్న తర్వాత, మీరు మీ డేటాను ప్రశ్నించడానికి సిద్ధంగా ఉన్నారు. డేటాతో పని చేయడం మరియు ML పరిష్కారాలను వర్తింపజేయడం సమయంలో, మీ డేటాసెట్ యొక్క సామర్థ్యాలను సరిగ్గా అన్‌లాక్ చేయడానికి సరైన ప్రశ్నను అడగడం చాలా ముఖ్యం. + +ఈ పాఠంలో, మీరు నేర్చుకుంటారు: + +- మోడల్-నిర్మాణం కోసం మీ డేటాను ఎలా సిద్ధం చేయాలి. +- డేటా విజువలైజేషన్ కోసం Matplotlib ను ఎలా ఉపయోగించాలి. + +## మీ డేటాకు సరైన ప్రశ్న అడగడం + +మీరు సమాధానం కావలసిన ప్రశ్న మీకు ఉపయోగించే ML అల్గోరిథమ్స్ రకాన్ని నిర్ణయిస్తుంది. మీరు పొందే సమాధానం నాణ్యత మీ డేటా స్వభావంపై బలంగా ఆధారపడి ఉంటుంది. + +ఈ పాఠం కోసం అందించిన [డేటాను](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) చూడండి. మీరు ఈ .csv ఫైల్‌ను VS Code లో తెరవవచ్చు. ఒక వేగవంతమైన పరిశీలనలోనే ఖాళీలు మరియు స్ట్రింగ్స్ మరియు న్యూమరిక్ డేటా మిశ్రమం ఉన్నట్లు కనిపిస్తుంది. 'Package' అనే విచిత్రమైన కాలమ్ కూడా ఉంది, ఇందులో డేటా 'sacks', 'bins' మరియు ఇతర విలువల మిశ్రమం. వాస్తవానికి, డేటా కొంత గందరగోళంగా ఉంది. + +[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") + +> 🎥 ఈ పాఠం కోసం డేటాను సిద్ధం చేయడాన్ని చూపించే చిన్న వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి. + +వాస్తవానికి, పూర్తిగా ఉపయోగించడానికి సిద్ధంగా ఉన్న డేటాసెట్‌ను బహుమతిగా పొందడం చాలా సాధారణం కాదు. ఈ పాఠంలో, మీరు ప్రామాణిక Python లైబ్రరీలను ఉపయోగించి రా డేటాసెట్‌ను ఎలా సిద్ధం చేయాలో నేర్చుకుంటారు. మీరు డేటాను విజువలైజ్ చేయడానికి వివిధ సాంకేతికతలను కూడా నేర్చుకుంటారు. + +## కేసు అధ్యయనం: 'పంప్కిన్ మార్కెట్' + +ఈ ఫోల్డర్‌లో మీరు రూట్ `data` ఫోల్డర్‌లో [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) అనే .csv ఫైల్‌ను కనుగొంటారు, ఇది నగరాల వారీగా వర్గీకరించిన పంప్కిన్ మార్కెట్ గురించి 1757 లైన్ల డేటాను కలిగి ఉంది. ఇది యునైటెడ్ స్టేట్స్ డిపార్ట్‌మెంట్ ఆఫ్ అగ్రికల్చర్ పంపిణీ చేసే [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) నుండి తీసుకున్న రా డేటా. + +### డేటా సిద్ధం చేయడం + +ఈ డేటా పబ్లిక్ డొమైన్‌లో ఉంది. USDA వెబ్ సైట్ నుండి ప్రతి నగరానికి వేర్వేరు ఫైళ్లలో డౌన్లోడ్ చేసుకోవచ్చు. చాలా వేర్వేరు ఫైళ్లను నివారించడానికి, మేము అన్ని నగరాల డేటాను ఒక స్ప్రెడ్షీట్‌లో కలిపాము, అందువల్ల మేము ఇప్పటికే డేటాను కొంతమేర _సిద్ధం_ చేసాము. తరువాత, డేటాను మరింత దగ్గరగా పరిశీలిద్దాం. + +### పంప్కిన్ డేటా - ప్రారంభ తాత్త్వికాలు + +ఈ డేటా గురించి మీరు ఏమి గమనించారు? మీరు ఇప్పటికే స్ట్రింగ్స్, నంబర్లు, ఖాళీలు మరియు విచిత్రమైన విలువల మిశ్రమం ఉన్నట్లు చూశారు, వాటిని అర్థం చేసుకోవాలి. + +రిగ్రెషన్ సాంకేతికతను ఉపయోగించి ఈ డేటాకు మీరు ఏ ప్రశ్న అడగవచ్చు? "నిర్దిష్ట నెలలో అమ్మకానికి ఉన్న పంప్కిన్ ధరను అంచనా వేయండి" అని ఎలా ఉంటుంది? డేటాను మళ్లీ చూసినప్పుడు, ఈ పనికి అవసరమైన డేటా నిర్మాణాన్ని సృష్టించడానికి మీరు కొన్ని మార్పులు చేయాలి. + +## వ్యాయామం - పంప్కిన్ డేటాను విశ్లేషించండి + +డేటాను ఆకారంలోకి తెచ్చేందుకు చాలా ఉపయోగకరమైన పాండాస్ ([Pandas](https://pandas.pydata.org/)) ను ఉపయోగించి ఈ పంప్కిన్ డేటాను విశ్లేషించండి మరియు సిద్ధం చేయండి. + +### మొదట, మిస్సింగ్ తేదీలను తనిఖీ చేయండి + +ముందుగా మిస్సింగ్ తేదీలను తనిఖీ చేయడానికి చర్యలు తీసుకోవాలి: + +1. తేదీలను నెల ఫార్మాట్‌కు మార్చండి (ఇవి US తేదీలు, కాబట్టి ఫార్మాట్ `MM/DD/YYYY`). +2. నెలను కొత్త కాలమ్‌గా తీసుకోండి. + +Visual Studio Code లో _notebook.ipynb_ ఫైల్‌ను తెరవండి మరియు స్ప్రెడ్షీట్‌ను కొత్త Pandas డేటాఫ్రేమ్‌లో దిగుమతి చేసుకోండి. + +1. మొదటి ఐదు వరుసలను చూడడానికి `head()` ఫంక్షన్‌ను ఉపయోగించండి. + + ```python + import pandas as pd + pumpkins = pd.read_csv('../data/US-pumpkins.csv') + pumpkins.head() + ``` + + ✅ చివరి ఐదు వరుసలను చూడడానికి మీరు ఏ ఫంక్షన్ ఉపయోగిస్తారు? + +1. ప్రస్తుత డేటాఫ్రేమ్‌లో మిస్సింగ్ డేటా ఉందా అని తనిఖీ చేయండి: + + ```python + pumpkins.isnull().sum() + ``` + + మిస్సింగ్ డేటా ఉంది, కానీ ఇది ప్రస్తుత పనికి ప్రభావం చూపకపోవచ్చు. + +1. మీ డేటాఫ్రేమ్‌తో పని చేయడం సులభం కావడానికి, మీరు అవసరమైన కాలమ్స్ మాత్రమే `loc` ఫంక్షన్ ఉపయోగించి ఎంచుకోండి, ఇది ఒరిజినల్ డేటాఫ్రేమ్ నుండి వరుసలు (మొదటి పారామీటర్‌గా) మరియు కాలమ్స్ (రెండవ పారామీటర్‌గా) తీసుకుంటుంది. క్రింద ఉన్న `:` అన్నది "అన్ని వరుసలు" అని అర్థం. + + ```python + columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] + pumpkins = pumpkins.loc[:, columns_to_select] + ``` + +### రెండవది, పంప్కిన్ సగటు ధరను నిర్ణయించండి + +నిర్దిష్ట నెలలో పంప్కిన్ సగటు ధరను ఎలా నిర్ణయించాలో ఆలోచించండి. ఈ పనికి మీరు ఏ కాలమ్స్ ఎంచుకుంటారు? సూచన: మీరు 3 కాలమ్స్ అవసరం. + +పరిష్కారం: `Low Price` మరియు `High Price` కాలమ్స్ సగటు తీసుకుని కొత్త Price కాలమ్‌ను పూరించండి, మరియు Date కాలమ్‌ను నెల మాత్రమే చూపించేలా మార్చండి. అదృష్టవశాత్తు, పై తనిఖీ ప్రకారం, తేదీలు లేదా ధరల కోసం మిస్సింగ్ డేటా లేదు. + +1. సగటు లెక్కించడానికి, క్రింది కోడ్ జోడించండి: + + ```python + price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 + + month = pd.DatetimeIndex(pumpkins['Date']).month + + ``` + + ✅ మీరు `print(month)` ఉపయోగించి ఏ డేటా అయినా తనిఖీ చేయడానికి ప్రింట్ చేయవచ్చు. + +2. ఇప్పుడు, మీ మార్చిన డేటాను కొత్త Pandas డేటాఫ్రేమ్‌లో కాపీ చేయండి: + + ```python + new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) + ``` + + మీ డేటాఫ్రేమ్‌ను ప్రింట్ చేస్తే, మీరు కొత్త రిగ్రెషన్ మోడల్ నిర్మించడానికి శుభ్రమైన, సజావుగా ఉన్న డేటాసెట్‌ను చూడగలుగుతారు. + +### కానీ వేచి ఉండండి! ఇక్కడ ఒక విచిత్ర విషయం ఉంది + +`Package` కాలమ్‌ను చూస్తే, పంప్కిన్లు అనేక వేర్వేరు ఆకృతుల్లో అమ్మబడుతున్నాయి. కొన్ని '1 1/9 బుషెల్' కొలతలలో, కొన్ని '1/2 బుషెల్' కొలతలలో, కొన్ని ఒక్కొక్క పంప్కిన్‌కు, కొన్ని పౌండ్లకు, మరియు కొన్ని విభిన్న వెడల్పుల పెద్ద బాక్స్‌లలో అమ్మబడుతున్నాయి. + +> పంప్కిన్లను సరిగ్గా తూగడం చాలా కష్టం అనిపిస్తుంది + +మూల డేటాలో లోతుగా చూస్తే, `Unit of Sale` 'EACH' లేదా 'PER BIN' ఉన్న వాటికి `Package` రకం అంగుళం, బిన్ లేదా 'each' అని ఉంటుంది. పంప్కిన్లను సరిగ్గా తూగడం చాలా కష్టం కనుక, `Package` కాలమ్‌లో 'bushel' స్ట్రింగ్ ఉన్న పంప్కిన్లను మాత్రమే ఎంచుకుని ఫిల్టర్ చేద్దాం. + +1. ఫైల్ ప్రారంభంలో, మొదటి .csv దిగుమతి కింద ఫిల్టర్ జోడించండి: + + ```python + pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] + ``` + + ఇప్పుడు మీరు డేటాను ప్రింట్ చేస్తే, మీరు బుషెల్ ద్వారా పంప్కిన్లను కలిగిన సుమారు 415 వరుసల డేటాను మాత్రమే పొందుతున్నారని చూడగలుగుతారు. + +### కానీ వేచి ఉండండి! ఇంకా ఒక పని చేయాలి + +మీరు గమనించారా, బుషెల్ పరిమాణం వరుసల వారీగా మారుతుంది? మీరు ధరలను బుషెల్‌కు అనుగుణంగా సాధారణీకరించాలి, కాబట్టి ధరలను బుషెల్‌కు సరిపడేలా గణితం చేయండి. + +1. కొత్త_pumpkins డేటాఫ్రేమ్ సృష్టించిన తర్వాత ఈ లైన్లను జోడించండి: + + ```python + new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) + + new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) + ``` + +✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) ప్రకారం, బుషెల్ బరువు ఉత్పత్తి రకంపై ఆధారపడి ఉంటుంది, ఎందుకంటే ఇది వాల్యూమ్ కొలత. "ఉదాహరణకు, టమోటాలు బుషెల్ 56 పౌండ్ల బరువు ఉండాలి... ఆకులు మరియు ఆకుకూరలు తక్కువ బరువుతో ఎక్కువ స్థలం తీసుకుంటాయి, కాబట్టి స్పినాచ్ బుషెల్ 20 పౌండ్లే ఉంటుంది." ఇది చాలా క్లిష్టం! బుషెల్-టు-పౌండ్ మార్పిడి చేయకుండా, బుషెల్ ప్రకారం ధర నిర్ణయిద్దాం. ఈ పంప్కిన్ బుషెల్ అధ్యయనం మీ డేటా స్వభావాన్ని అర్థం చేసుకోవడం ఎంత ముఖ్యమో చూపిస్తుంది! + +ఇప్పుడు, మీరు బుషెల్ కొలత ఆధారంగా యూనిట్ ధరలను విశ్లేషించవచ్చు. మీరు డేటాను మరలా ప్రింట్ చేస్తే, అది ఎలా సాధారణీకరించబడిందో చూడవచ్చు. + +✅ మీరు గమనించారా, సగం బుషెల్ ద్వారా అమ్మే పంప్కిన్లు చాలా ఖరీదైనవి? ఎందుకని మీరు అర్థం చేసుకోగలరా? సూచన: చిన్న పంప్కిన్లు పెద్ద వాటికంటే చాలా ఎక్కువ ధర కలిగి ఉంటాయి, ఎందుకంటే పెద్ద హాలో పాయ్ పంప్కిన్ తీసుకునే ఉపయోగించని స్థలం కారణంగా బుషెల్‌కు చాలా ఎక్కువ చిన్న పంప్కిన్లు ఉంటాయి. + +## విజువలైజేషన్ వ్యూహాలు + +డేటా సైంటిస్ట్ పాత్రలో భాగంగా వారు పని చేస్తున్న డేటా నాణ్యత మరియు స్వభావాన్ని ప్రదర్శించడం ఉంటుంది. దీని కోసం, వారు తరచుగా ఆసక్తికరమైన విజువలైజేషన్లు, ప్లాట్లు, గ్రాఫ్లు మరియు చార్ట్లు సృష్టిస్తారు, డేటా వివిధ కోణాలను చూపిస్తూ. ఈ విధంగా, వారు بصریంగా సంబంధాలు మరియు గ్యాప్స్ చూపగలుగుతారు, ఇవి ఇతరथा కనుగొనడం కష్టం. + +[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") + +> 🎥 ఈ పాఠం కోసం డేటాను విజువలైజ్ చేయడాన్ని చూపించే చిన్న వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి. + +విజువలైజేషన్లు డేటాకు అత్యంత అనుకూలమైన మెషీన్ లెర్నింగ్ సాంకేతికతను నిర్ణయించడంలో కూడా సహాయపడతాయి. ఉదాహరణకు, ఒక స్కాటర్‌ప్లాట్ ఒక రేఖను అనుసరిస్తున్నట్లయితే, ఆ డేటా లీనియర్ రిగ్రెషన్ వ్యాయామానికి మంచి అభ్యర్థిగా ఉంటుంది. + +Jupyter నోట్బుక్స్‌లో బాగా పనిచేసే ఒక డేటా విజువలైజేషన్ లైబ్రరీ [Matplotlib](https://matplotlib.org/) (ముందటి పాఠంలో మీరు చూసినది). + +> [ఈ ట్యుటోరియల్స్](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) లో డేటా విజువలైజేషన్ పై మరింత అనుభవం పొందండి. + +## వ్యాయామం - Matplotlib తో ప్రయోగం చేయండి + +మీరు సృష్టించిన కొత్త డేటాఫ్రేమ్‌ను ప్రదర్శించడానికి కొన్ని ప్రాథమిక ప్లాట్లు సృష్టించడానికి ప్రయత్నించండి. ఒక ప్రాథమిక లైన్ ప్లాట్ ఏమి చూపిస్తుంది? + +1. ఫైల్ ప్రారంభంలో, Pandas దిగుమతి కింద Matplotlib ను దిగుమతి చేసుకోండి: + + ```python + import matplotlib.pyplot as plt + ``` + +1. మొత్తం నోట్బుక్‌ను రీఫ్రెష్ చేయడానికి మళ్లీ నడపండి. +1. నోట్బుక్ చివరలో, డేటాను బాక్స్‌గా ప్లాట్ చేయడానికి ఒక సెల్ జోడించండి: + + ```python + price = new_pumpkins.Price + month = new_pumpkins.Month + plt.scatter(price, month) + plt.show() + ``` + + ![ధర మరియు నెల సంబంధాన్ని చూపించే స్కాటర్‌ప్లాట్](../../../../translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.te.png) + + ఇది ఉపయోగకరమైన ప్లాట్నా? ఇందులో ఏదైనా ఆశ్చర్యకరమైనది ఉందా? + + ఇది ప్రత్యేకంగా ఉపయోగకరం కాదు, ఎందుకంటే ఇది మీ డేటాను ఒక నెలలో పాయింట్ల విస్తరణగా మాత్రమే ప్రదర్శిస్తుంది. + +### దీన్ని ఉపయోగకరంగా చేయండి + +చార్ట్లు ఉపయోగకరమైన డేటాను ప్రదర్శించాలంటే, మీరు సాధారణంగా డేటాను ఏదో విధంగా గ్రూప్ చేయాలి. నెలలను y అక్షంగా చూపించే మరియు డేటా పంపిణీని ప్రదర్శించే ప్లాట్ సృష్టించడానికి ప్రయత్నిద్దాం. + +1. గ్రూప్ చేసిన బార్ చార్ట్ సృష్టించడానికి ఒక సెల్ జోడించండి: + + ```python + new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') + plt.ylabel("Pumpkin Price") + ``` + + ![ధర మరియు నెల సంబంధాన్ని చూపించే బార్ చార్ట్](../../../../translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.te.png) + + ఇది మరింత ఉపయోగకరమైన డేటా విజువలైజేషన్! ఇది పంప్కిన్ ధర సెప్టెంబర్ మరియు అక్టోబర్‌లో అత్యధికంగా ఉంటుందని సూచిస్తుంది. ఇది మీ అంచనాకు సరిపోతుందా? ఎందుకు లేదా ఎందుకు కాదు? + +--- + +## 🚀సవాలు + +Matplotlib అందించే వివిధ రకాల విజువలైజేషన్లను అన్వేషించండి. రిగ్రెషన్ సమస్యలకు ఏ రకాలు అత్యంత అనుకూలంగా ఉంటాయి? + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +డేటాను విజువలైజ్ చేయడానికి అనేక మార్గాలను పరిశీలించండి. వివిధ లైబ్రరీల జాబితాను తయారుచేసి, ఏవి ఏ రకాల పనులకు ఉత్తమం అవుతాయో గమనించండి, ఉదాహరణకు 2D విజువలైజేషన్లు vs. 3D విజువలైజేషన్లు. మీరు ఏమి కనుగొంటారు? + +## అసైన్‌మెంట్ + +[విజువలైజేషన్ అన్వేషణ](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/2-Regression/2-Data/assignment.md b/translations/te/2-Regression/2-Data/assignment.md new file mode 100644 index 000000000..9337c86b1 --- /dev/null +++ b/translations/te/2-Regression/2-Data/assignment.md @@ -0,0 +1,25 @@ + +# విజువలైజేషన్ల అన్వేషణ + +డేటా విజువలైజేషన్ కోసం అందుబాటులో ఉన్న అనేక విభిన్న లైబ్రరీలు ఉన్నాయి. ఈ పాఠంలో ఉన్న Pumpkin డేటాను ఉపయోగించి matplotlib మరియు seaborn తో కొన్ని విజువలైజేషన్లు సృష్టించండి ఒక నమూనా నోట్‌బుక్‌లో. ఏ లైబ్రరీలు ఉపయోగించడానికి సులభంగా ఉంటాయి? + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతం | సరిపోతుంది | మెరుగుదల అవసరం | +| -------- | --------- | -------- | ----------------- | +| | రెండు అన్వేషణలు/విజువలైజేషన్లతో కూడిన నోట్‌బుక్ సమర్పించబడింది | ఒక అన్వేషణ/విజువలైజేషన్‌తో కూడిన నోట్‌బుక్ సమర్పించబడింది | నోట్‌బుక్ సమర్పించబడలేదు | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారులు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/2-Regression/2-Data/notebook.ipynb b/translations/te/2-Regression/2-Data/notebook.ipynb new file mode 100644 index 000000000..9c941ebd3 --- /dev/null +++ b/translations/te/2-Regression/2-Data/notebook.ipynb @@ -0,0 +1,46 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3-final" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python3", + "display_name": "Python 3", + "language": "python" + }, + "coopTranslator": { + "original_hash": "1b2ab303ac6c604a34c6ca7a49077fc7", + "translation_date": "2025-12-19T16:18:09+00:00", + "source_file": "2-Regression/2-Data/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/te/2-Regression/2-Data/solution/Julia/README.md b/translations/te/2-Regression/2-Data/solution/Julia/README.md new file mode 100644 index 000000000..bb68b6c3d --- /dev/null +++ b/translations/te/2-Regression/2-Data/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ఇది తాత్కాలిక ప్లేస్‌హోల్డర్‌입니다 + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/2-Regression/2-Data/solution/R/lesson_2-R.ipynb b/translations/te/2-Regression/2-Data/solution/R/lesson_2-R.ipynb new file mode 100644 index 000000000..87524ef9c --- /dev/null +++ b/translations/te/2-Regression/2-Data/solution/R/lesson_2-R.ipynb @@ -0,0 +1,673 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_2-R.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "f3c335f9940cfd76528b3ef918b9b342", + "translation_date": "2025-12-19T16:33:34+00:00", + "source_file": "2-Regression/2-Data/solution/R/lesson_2-R.ipynb", + "language_code": "te" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# రిగ్రెషన్ మోడల్ నిర్మించండి: డేటాను సిద్ధం చేయండి మరియు విజువలైజ్ చేయండి\n", + "\n", + "## **పంప్కిన్స్ కోసం లీనియర్ రిగ్రెషన్ - పాఠం 2**\n", + "#### పరిచయం\n", + "\n", + "ఇప్పుడు మీరు Tidymodels మరియు Tidyverse తో మెషీన్ లెర్నింగ్ మోడల్ నిర్మాణాన్ని ప్రారంభించడానికి అవసరమైన టూల్స్ తో సెట్ అయ్యారు, మీరు మీ డేటాను ప్రశ్నించడానికి సిద్ధంగా ఉన్నారు. మీరు డేటాతో పని చేస్తూ ML పరిష్కారాలను వర్తింపజేస్తున్నప్పుడు, మీ డేటాసెట్ యొక్క సామర్థ్యాలను సరిగ్గా అన్లాక్ చేయడానికి సరైన ప్రశ్నను అడగడం చాలా ముఖ్యం.\n", + "\n", + "ఈ పాఠంలో, మీరు నేర్చుకుంటారు:\n", + "\n", + "- మోడల్-నిర్మాణం కోసం మీ డేటాను ఎలా సిద్ధం చేయాలి.\n", + "\n", + "- డేటా విజువలైజేషన్ కోసం `ggplot2` ను ఎలా ఉపయోగించాలి.\n", + "\n", + "మీరు అడగవలసిన ప్రశ్న మీకు ఉపయోగపడే ML అల్గోరిథమ్స్ రకాన్ని నిర్ణయిస్తుంది. మరియు మీరు పొందే సమాధానం యొక్క నాణ్యత మీ డేటా స్వభావంపై బలంగా ఆధారపడి ఉంటుంది.\n", + "\n", + "ప్రాక్టికల్ వ్యాయామం ద్వారా దీన్ని చూద్దాం.\n", + "\n", + "\n", + "

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

కళాకృతి @allison_horst
\n" + ], + "metadata": { + "id": "Pg5aexcOPqAZ" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 1. పంప్కిన్స్ డేటాను దిగుమతి చేసుకోవడం మరియు టిడీవర్స్‌ను పిలవడం\n", + "\n", + "ఈ పాఠాన్ని స్లైస్ చేయడానికి మరియు డైస్ చేయడానికి క్రింది ప్యాకేజీలు అవసరం:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) అనేది డేటా సైన్స్‌ను వేగవంతం చేయడానికి, సులభతరం చేయడానికి మరియు మరింత సరదాగా మార్చడానికి రూపొందించిన [R ప్యాకేజీల సేకరణ](https://www.tidyverse.org/packages)!\n", + "\n", + "మీరు వాటిని ఇన్‌స్టాల్ చేసుకోవచ్చు:\n", + "\n", + "`install.packages(c(\"tidyverse\"))`\n", + "\n", + "క్రింది స్క్రిప్ట్ ఈ మాడ్యూల్‌ను పూర్తి చేయడానికి అవసరమైన ప్యాకేజీలు మీ వద్ద ఉన్నాయా లేదా అని తనిఖీ చేస్తుంది మరియు కొన్నివి లేవంటే వాటిని మీ కోసం ఇన్‌స్టాల్ చేస్తుంది.\n" + ], + "metadata": { + "id": "dc5WhyVdXAjR" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n", + "pacman::p_load(tidyverse)" + ], + "outputs": [], + "metadata": { + "id": "GqPYUZgfXOBt" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఇప్పుడు, కొన్ని ప్యాకేజీలను ప్రారంభించి ఈ పాఠం కోసం అందించిన [డేటా](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)ని లోడ్ చేద్దాం!\n" + ], + "metadata": { + "id": "kvjDTPDSXRr2" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load the core Tidyverse packages\n", + "library(tidyverse)\n", + "\n", + "# Import the pumpkins data\n", + "pumpkins <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/2-Regression/data/US-pumpkins.csv\")\n", + "\n", + "\n", + "# Get a glimpse and dimensions of the data\n", + "glimpse(pumpkins)\n", + "\n", + "\n", + "# Print the first 50 rows of the data set\n", + "pumpkins %>% \n", + " slice_head(n =50)" + ], + "outputs": [], + "metadata": { + "id": "VMri-t2zXqgD" + } + }, + { + "cell_type": "markdown", + "source": [ + "A quick `glimpse()` వెంటనే చూపిస్తుంది कि ఖాళీలు మరియు స్ట్రింగ్స్ (`chr`) మరియు సంఖ్యా డేటా (`dbl`) మిశ్రమం ఉన్నాయి. `Date` టైపు క్యారెక్టర్ మరియు ఒక విచిత్రమైన కాలమ్ ఉంది `Package` అని, అక్కడ డేటా `sacks`, `bins` మరియు ఇతర విలువల మిశ్రమం. డేటా, వాస్తవానికి, కొంత గందరగోళం 😤.\n", + "\n", + "వాస్తవానికి, పూర్తిగా ఉపయోగించడానికి సిద్ధంగా ఉన్న డేటాసెట్‌ను బహుమతిగా పొందడం చాలా సాధారణం కాదు ML మోడల్‌ను బాక్స్ నుండి సృష్టించడానికి. కానీ చింతించకండి, ఈ పాఠంలో, మీరు మౌలిక R లైబ్రరీలను ఉపయోగించి ఒక రా డేటాసెట్‌ను ఎలా సిద్ధం చేయాలో నేర్చుకుంటారు 🧑‍🔧. మీరు డేటాను విజువలైజ్ చేయడానికి వివిధ సాంకేతికతలను కూడా నేర్చుకుంటారు.📈📊\n", + "
\n", + "\n", + "> ఒక రిఫ్రెషర్: పైప్ ఆపరేటర్ (`%>%`) ఒక ఆబ్జెక్టును ఫంక్షన్ లేదా కాల్ ఎక్స్‌ప్రెషన్‌కు ముందుకు పంపడం ద్వారా లాజికల్ క్రమంలో ఆపరేషన్లను నిర్వహిస్తుంది. మీరు పైప్ ఆపరేటర్‌ను మీ కోడ్‌లో \"మరియు తరువాత\" అని చెప్పడం అని భావించవచ్చు.\n" + ], + "metadata": { + "id": "REWcIv9yX29v" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 2. లేని డేటా కోసం తనిఖీ చేయండి\n", + "\n", + "డేటా శాస్త్రవేత్తలు ఎదుర్కొనే అత్యంత సాధారణ సమస్యలలో ఒకటి అసంపూర్ణ లేదా లేని డేటా. R లో లేని లేదా తెలియని విలువలను ప్రత్యేక సెంటినెల్ విలువతో సూచిస్తారు: `NA` (అందుబాటులో లేదు).\n", + "\n", + "కాబట్టి డేటా ఫ్రేమ్ లో లేని విలువలు ఉన్నాయో లేదో ఎలా తెలుసుకోవాలి?\n", + "
\n", + "- ఒక సరళమైన విధానం base R ఫంక్షన్ `anyNA` ఉపయోగించడం, ఇది లాజికల్ ఆబ్జెక్టులు `TRUE` లేదా `FALSE` ను తిరిగి ఇస్తుంది.\n" + ], + "metadata": { + "id": "Zxfb3AM5YbUe" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "pumpkins %>% \n", + " anyNA()" + ], + "outputs": [], + "metadata": { + "id": "G--DQutAYltj" + } + }, + { + "cell_type": "markdown", + "source": [ + "చాలా బాగుంది, కొంత డేటా లేమి ఉంది అనిపిస్తోంది! అది ప్రారంభించడానికి మంచి స్థలం.\n", + "\n", + "- మరో మార్గం `is.na()` ఫంక్షన్ ఉపయోగించడం, ఇది ఏ వ్యక్తిగత కాలమ్ అంశాలు లేమి ఉన్నాయో లాజికల్ `TRUE` తో సూచిస్తుంది.\n" + ], + "metadata": { + "id": "mU-7-SB6YokF" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "pumpkins %>% \n", + " is.na() %>% \n", + " head(n = 7)" + ], + "outputs": [], + "metadata": { + "id": "W-DxDOR4YxSW" + } + }, + { + "cell_type": "markdown", + "source": [ + "సరే, పని పూర్తయింది కానీ ఇలాంటి పెద్ద డేటా ఫ్రేమ్‌తో, ప్రతి వరుస మరియు కాలమ్‌ను వ్యక్తిగతంగా సమీక్షించడం అనర్థకంగా మరియు ప్రాయోగికంగా అసాధ్యం అవుతుంది😴.\n", + "\n", + "- మరింత సులభమైన విధానం ప్రతి కాలమ్ కోసం లేని విలువల మొత్తం లెక్కించడం అవుతుంది:\n" + ], + "metadata": { + "id": "xUWxipKYY0o7" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "pumpkins %>% \n", + " is.na() %>% \n", + " colSums()" + ], + "outputs": [], + "metadata": { + "id": "ZRBWV6P9ZArL" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఇంకా బాగుంది! కొంత డేటా మిస్సవుంది, కానీ ఈ పనికి అది పెద్ద సమస్య కాకపోవచ్చు. మరింత విశ్లేషణ ఏమి తెస్తుందో చూద్దాం.\n", + "\n", + "> అద్భుతమైన ప్యాకేజీలు మరియు ఫంక్షన్లతో పాటు, R కి చాలా మంచి డాక్యుమెంటేషన్ ఉంది. ఉదాహరణకు, ఫంక్షన్ గురించి మరింత తెలుసుకోవడానికి `help(colSums)` లేదా `?colSums` ఉపయోగించండి.\n" + ], + "metadata": { + "id": "9gv-crB6ZD1Y" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 3. Dplyr: డేటా మానిప్యులేషన్ యొక్క వ్యాకరణం\n", + "\n", + "\n", + "

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

@allison_horst చేత కళాకృతి
\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "o4jLY5-VZO2C" + } + }, + { + "cell_type": "markdown", + "source": [ + "[`dplyr`](https://dplyr.tidyverse.org/), Tidyverseలో ఒక ప్యాకేజ్, డేటా మానిప్యులేషన్ యొక్క వ్యాకరణం, ఇది మీకు సాధారణ డేటా మానిప్యులేషన్ సవాళ్లను పరిష్కరించడంలో సహాయపడే సुसंगతమైన క్రియాపదాల సమితిని అందిస్తుంది. ఈ విభాగంలో, మనం dplyr యొక్క కొన్ని క్రియాపదాలను పరిశీలించబోతున్నాము!\n", + "
\n" + ], + "metadata": { + "id": "i5o33MQBZWWw" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::select()\n", + "\n", + "`select()` అనేది `dplyr` ప్యాకేజీలో ఉన్న ఒక ఫంక్షన్, ఇది మీరు నిలుపుకోవడానికి లేదా తప్పించుకోవడానికి కాలమ్స్‌ను ఎంచుకోవడంలో సహాయపడుతుంది.\n", + "\n", + "మీ డేటా ఫ్రేమ్‌తో పని చేయడం సులభం చేయడానికి, `select()` ఉపయోగించి దాని కొన్ని కాలమ్స్‌ను తొలగించండి, మీరు అవసరం ఉన్న కాలమ్స్ మాత్రమే నిలుపుకోండి.\n", + "\n", + "ఉదాహరణకు, ఈ వ్యాయామంలో, మా విశ్లేషణలో `Package`, `Low Price`, `High Price` మరియు `Date` కాలమ్స్ ఉంటాయి. ఈ కాలమ్స్‌ను ఎంచుకుందాం.\n" + ], + "metadata": { + "id": "x3VGMAGBZiUr" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Select desired columns\n", + "pumpkins <- pumpkins %>% \n", + " select(Package, `Low Price`, `High Price`, Date)\n", + "\n", + "\n", + "# Print data set\n", + "pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "F_FgxQnVZnM0" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::mutate()\n", + "\n", + "`mutate()` అనేది `dplyr` ప్యాకేజీలో ఒక ఫంక్షన్, ఇది మీరు ఉన్న కాలమ్స్‌ను ఉంచుతూ కొత్త కాలమ్స్‌ను సృష్టించడానికి లేదా మార్చడానికి సహాయపడుతుంది.\n", + "\n", + "mutate యొక్క సాధారణ నిర్మాణం:\n", + "\n", + "`data %>% mutate(new_column_name = what_it_contains)`\n", + "\n", + "`Date` కాలమ్‌ను ఉపయోగించి క్రింది ఆపరేషన్లను చేయడం ద్వారా `mutate` ను ప్రయత్నిద్దాం:\n", + "\n", + "1. తేదీలను (ప్రస్తుతం character రకం) నెల ఫార్మాట్‌కు మార్చండి (ఇవి US తేదీలు, కాబట్టి ఫార్మాట్ `MM/DD/YYYY`).\n", + "\n", + "2. తేదీల నుండి నెలను కొత్త కాలమ్‌గా తీసుకోండి.\n", + "\n", + "R లో, [lubridate](https://lubridate.tidyverse.org/) ప్యాకేజీ Date-time డేటాతో పని చేయడం సులభతరం చేస్తుంది. కాబట్టి, `dplyr::mutate()`, `lubridate::mdy()`, `lubridate::month()` ఉపయోగించి పై లక్ష్యాలను ఎలా సాధించాలో చూద్దాం. తరువాతి ఆపరేషన్లలో మళ్లీ అవసరం లేకపోవడంతో Date కాలమ్‌ను తీసివేయవచ్చు.\n" + ], + "metadata": { + "id": "2KKo0Ed9Z1VB" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load lubridate\n", + "library(lubridate)\n", + "\n", + "pumpkins <- pumpkins %>% \n", + " # Convert the Date column to a date object\n", + " mutate(Date = mdy(Date)) %>% \n", + " # Extract month from Date\n", + " mutate(Month = month(Date)) %>% \n", + " # Drop Date column\n", + " select(-Date)\n", + "\n", + "# View the first few rows\n", + "pumpkins %>% \n", + " slice_head(n = 7)" + ], + "outputs": [], + "metadata": { + "id": "5joszIVSZ6xe" + } + }, + { + "cell_type": "markdown", + "source": [ + "వాహ్! 🤩\n", + "\n", + "తర్వాత, మనం కొత్త కాలమ్ `Price` ను సృష్టిద్దాం, ఇది ఒక పంప్కిన్ యొక్క సగటు ధరను సూచిస్తుంది. ఇప్పుడు, కొత్త Price కాలమ్‌ను నింపడానికి `Low Price` మరియు `High Price` కాలమ్‌ల సగటును తీసుకుందాం.\n", + "
\n" + ], + "metadata": { + "id": "nIgLjNMCZ-6Y" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Create a new column Price\n", + "pumpkins <- pumpkins %>% \n", + " mutate(Price = (`Low Price` + `High Price`)/2)\n", + "\n", + "# View the first few rows of the data\n", + "pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "Zo0BsqqtaJw2" + } + }, + { + "cell_type": "markdown", + "source": [ + "యీస్!💪\n", + "\n", + "\"కానీ వేచి ఉండండి!\", మీరు `View(pumpkins)` తో మొత్తం డేటా సెట్‌ను స్కిమ్ చేసిన తర్వాత చెప్పగలరు, \"ఇక్కడ ఏదో విచిత్రం ఉంది!\"🤔\n", + "\n", + "మీరు `Package` కాలమ్‌ను చూస్తే, పంప్కిన్లు అనేక వేర్వేరు ఆకృతుల్లో అమ్మబడుతున్నాయి. కొన్ని `1 1/9 బుషెల్` కొలతలలో, కొన్ని `1/2 బుషెల్` కొలతలలో, కొన్ని ఒక్కో పంప్కిన్‌కు, కొన్ని పౌండ్‌కు, మరియు కొన్ని విభిన్న వెడల్పుల పెద్ద బాక్స్‌లలో అమ్మబడుతున్నాయి.\n", + "\n", + "దీనిని నిర్ధారిద్దాం:\n" + ], + "metadata": { + "id": "p77WZr-9aQAR" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Verify the distinct observations in Package column\n", + "pumpkins %>% \n", + " distinct(Package)" + ], + "outputs": [], + "metadata": { + "id": "XISGfh0IaUy6" + } + }, + { + "cell_type": "markdown", + "source": [ + "అద్భుతం!👏\n", + "\n", + "పంప్కిన్లు సతతంగా తూగడం చాలా కష్టం అనిపిస్తోంది, కాబట్టి `Package` కాలమ్‌లో *bushel* అనే స్ట్రింగ్ ఉన్న పంప్కిన్లను మాత్రమే ఎంచుకుని వాటిని కొత్త డేటా ఫ్రేమ్ `new_pumpkins` లో ఉంచుదాం.\n", + "
\n" + ], + "metadata": { + "id": "7sMjiVujaZxY" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::filter() మరియు stringr::str_detect()\n", + "\n", + "[`dplyr::filter()`](https://dplyr.tidyverse.org/reference/filter.html): మీ షరతులను తీరుస్తున్న **పంక్తులు** మాత్రమే కలిగిన డేటా ఉపసెట్‌ను సృష్టిస్తుంది, ఈ సందర్భంలో, `Package` కాలమ్‌లో *bushel* స్ట్రింగ్ ఉన్న పంప్కిన్లు.\n", + "\n", + "[stringr::str_detect()](https://stringr.tidyverse.org/reference/str_detect.html): స్ట్రింగ్‌లో ఒక నమూనా ఉన్నదో లేదో గుర్తిస్తుంది.\n", + "\n", + "[`stringr`](https://github.com/tidyverse/stringr) ప్యాకేజ్ సాధారణ స్ట్రింగ్ ఆపరేషన్ల కోసం సులభమైన ఫంక్షన్లను అందిస్తుంది.\n" + ], + "metadata": { + "id": "L8Qfcs92ageF" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Retain only pumpkins with \"bushel\"\n", + "new_pumpkins <- pumpkins %>% \n", + " filter(str_detect(Package, \"bushel\"))\n", + "\n", + "# Get the dimensions of the new data\n", + "dim(new_pumpkins)\n", + "\n", + "# View a few rows of the new data\n", + "new_pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "hy_SGYREampd" + } + }, + { + "cell_type": "markdown", + "source": [ + "మీరు చూడవచ్చు మనం సుమారు 415 వరుసల డేటా వరకు తగ్గించుకున్నాము, వాటిలో బషెల్ ద్వారా పంప్కిన్లు ఉన్నాయి.🤩\n", + "
\n" + ], + "metadata": { + "id": "VrDwF031avlR" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::case_when()\n", + "\n", + "**కానీ వేచి ఉండండి! ఇంకా ఒక విషయం చేయాల్సి ఉంది**\n", + "\n", + "మీరు గమనించారా, బషెల్ పరిమాణం ప్రతి వరుసకు మారుతుంది? మీరు ధరలను సాధారణీకరించాలి, అంటే 1 1/9 లేదా 1/2 బషెల్‌కు కాకుండా ప్రతి బషెల్‌కు ధర చూపించాలి. దీని కోసం కొంత గణితం చేయాల్సి ఉంది.\n", + "\n", + "మనం కొన్ని షరతుల ఆధారంగా Price కాలమ్‌ను *mutate* చేయడానికి [`case_when()`](https://dplyr.tidyverse.org/reference/case_when.html) ఫంక్షన్‌ను ఉపయోగిస్తాము. `case_when` అనేది అనేక `if_else()` స్టేట్మెంట్లను వెక్టరైజ్ చేయడానికి అనుమతిస్తుంది.\n" + ], + "metadata": { + "id": "mLpw2jH4a0tx" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Convert the price if the Package contains fractional bushel values\n", + "new_pumpkins <- new_pumpkins %>% \n", + " mutate(Price = case_when(\n", + " str_detect(Package, \"1 1/9\") ~ Price/(1 + 1/9),\n", + " str_detect(Package, \"1/2\") ~ Price/(1/2),\n", + " TRUE ~ Price))\n", + "\n", + "# View the first few rows of the data\n", + "new_pumpkins %>% \n", + " slice_head(n = 30)" + ], + "outputs": [], + "metadata": { + "id": "P68kLVQmbM6I" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఇప్పుడు, మనం వారి బషెల్ కొలత ఆధారంగా యూనిట్ ధరను విశ్లేషించవచ్చు. అయితే, పంప్కిన్ బషెల్లపై ఈ మొత్తం అధ్యయనం మీ డేటా స్వభావాన్ని `అర్థం చేసుకోవడం` ఎంత `ముఖ్యమైనది` అనేది చూపిస్తుంది!\n", + "\n", + "> ✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) ప్రకారం, బషెల్ బరువు ఉత్పత్తి రకంపై ఆధారపడి ఉంటుంది, ఎందుకంటే ఇది పరిమాణ కొలత. \"ఉదాహరణకు, టమోటాల బషెల్ బరువు 56 పౌండ్లు ఉండాలి... ఆకులు మరియు ఆకుకూరలు తక్కువ బరువుతో ఎక్కువ స్థలం తీసుకుంటాయి, కాబట్టి పాలకూర బషెల్ బరువు కేవలం 20 పౌండ్లు.\" ఇది అంతా చాలా క్లిష్టమైనది! బషెల్-టు-పౌండ్ మార్పిడి చేయకుండా, బషెల్ ప్రకారం ధర నిర్ణయిద్దాం. అయితే, పంప్కిన్ బషెల్లపై ఈ మొత్తం అధ్యయనం మీ డేటా స్వభావాన్ని అర్థం చేసుకోవడం ఎంత ముఖ్యమైనదో చూపిస్తుంది!\n", + ">\n", + "> ✅ మీరు గమనించారా, సగం బషెల్ ద్వారా అమ్మే పంప్కిన్లు చాలా ఖరీదైనవి? మీరు ఎందుకు అనుకుంటున్నారా? సూచన: చిన్న పంప్కిన్లు పెద్దవాటికంటే చాలా ఎక్కువ ధర కలిగి ఉంటాయి, ఎందుకంటే ఒక పెద్ద గుండ్రటి పాయ్ పంప్కిన్ తీసుకునే ఉపయోగించని స్థలం కారణంగా, బషెల్‌కు చాలా ఎక్కువ చిన్న పంప్కిన్లు ఉంటాయి.\n", + "
\n" + ], + "metadata": { + "id": "pS2GNPagbSdb" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఇప్పుడు చివరగా, సాహసోపేతంగా 💁‍♀️, మనం Month కాలమ్‌ను మొదటి స్థానానికి కూడా మార్చుకుందాం అంటే `Package` కాలమ్ `ముందు`.\n", + "\n", + "కాలమ్ స్థానాలను మార్చడానికి `dplyr::relocate()` ఉపయోగిస్తారు.\n" + ], + "metadata": { + "id": "qql1SowfbdnP" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Create a new data frame new_pumpkins\n", + "new_pumpkins <- new_pumpkins %>% \n", + " relocate(Month, .before = Package)\n", + "\n", + "new_pumpkins %>% \n", + " slice_head(n = 7)" + ], + "outputs": [], + "metadata": { + "id": "JJ1x6kw8bixF" + } + }, + { + "cell_type": "markdown", + "source": [ + "చాలా బాగుంది!👌 ఇప్పుడు మీకు ఒక శుభ్రమైన, క్రమబద్ధమైన డేటాసెట్ ఉంది, దానిపై మీరు మీ కొత్త రిగ్రెషన్ మోడల్‌ను నిర్మించవచ్చు!\n", + "
\n" + ], + "metadata": { + "id": "y8TJ0Za_bn5Y" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 4. ggplot2 తో డేటా విజువలైజేషన్\n", + "\n", + "

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

ఇన్ఫోగ్రాఫిక్ - దసాని మడిపల్లి
\n", + "\n", + "\n", + "\n", + "\n", + "ఇలా ఒక *జ్ఞానవంతమైన* మాట ఉంది:\n", + "\n", + "> \"సాధారణ గ్రాఫ్ డేటా విశ్లేషకుడి మనసుకు ఇతర ఏ పరికరం కంటే ఎక్కువ సమాచారం తీసుకొచ్చింది.\" --- జాన్ టుకీ\n", + "\n", + "డేటా సైంటిస్ట్ పాత్రలో ఒక భాగం వారు పని చేస్తున్న డేటా యొక్క నాణ్యత మరియు స్వభావాన్ని ప్రదర్శించడం. దీని కోసం, వారు తరచుగా ఆసక్తికరమైన విజువలైజేషన్లు, లేదా ప్లాట్లు, గ్రాఫ్లు, మరియు చార్ట్లు సృష్టిస్తారు, డేటా యొక్క వివిధ కోణాలను చూపిస్తూ. ఈ విధంగా, వారు بصریంగా సంబంధాలు మరియు గ్యాప్స్ చూపగలుగుతారు, ఇవి లేకపోతే కనుగొనడం కష్టం.\n", + "\n", + "విజువలైజేషన్లు డేటాకు అత్యంత అనుకూలమైన మెషీన్ లెర్నింగ్ సాంకేతికతను నిర్ణయించడంలో కూడా సహాయపడతాయి. ఉదాహరణకు, ఒక స్కాటర్‌ప్లాట్ ఒక రేఖను అనుసరిస్తున్నట్లు కనిపిస్తే, ఆ డేటా లీనియర్ రిగ్రెషన్ వ్యాయామానికి మంచి అభ్యర్థిగా ఉంటుంది.\n", + "\n", + "R అనేక గ్రాఫ్ తయారీ వ్యవస్థలను అందిస్తుంది, కానీ [`ggplot2`](https://ggplot2.tidyverse.org/index.html) అత్యంత అందమైన మరియు బహుముఖమైన వాటిలో ఒకటి. `ggplot2` మీరు **స్వతంత్ర భాగాలను కలిపి** గ్రాఫ్‌లను రూపొందించడానికి అనుమతిస్తుంది.\n", + "\n", + "Price మరియు Month కాలమ్స్ కోసం ఒక సాదా స్కాటర్ ప్లాట్ తో ప్రారంభిద్దాం.\n", + "\n", + "కాబట్టి ఈ సందర్భంలో, మేము [`ggplot()`](https://ggplot2.tidyverse.org/reference/ggplot.html) తో ప్రారంభించి, ఒక డేటాసెట్ మరియు ఎస్తెటిక్స్ మ్యాపింగ్ ( [`aes()`](https://ggplot2.tidyverse.org/reference/aes.html) తో) అందించి, తరువాత స్కాటర్ ప్లాట్ల కోసం [`geom_point()`](https://ggplot2.tidyverse.org/reference/geom_point.html) వంటి లేయర్లు జోడిస్తాము.\n" + ], + "metadata": { + "id": "mYSH6-EtbvNa" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Set a theme for the plots\n", + "theme_set(theme_light())\n", + "\n", + "# Create a scatter plot\n", + "p <- ggplot(data = new_pumpkins, aes(x = Price, y = Month))\n", + "p + geom_point()" + ], + "outputs": [], + "metadata": { + "id": "g2YjnGeOcLo4" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఇది ఉపయోగకరమైన ప్లాట్ కాదా 🤷? దీని గురించి ఏదైనా ఆశ్చర్యంగా ఉందా?\n", + "\n", + "ఇది ప్రత్యేకంగా ఉపయోగకరం కాదు ఎందుకంటే ఇది మీ డేటాను ఒక నిర్దిష్ట నెలలో పాయింట్ల విస్తరణగా మాత్రమే ప్రదర్శిస్తుంది.\n", + "
\n" + ], + "metadata": { + "id": "Ml7SDCLQcPvE" + } + }, + { + "cell_type": "markdown", + "source": [ + "### **మనం దీన్ని ఉపయోగకరంగా ఎలా చేస్తాము?**\n", + "\n", + "చార్ట్లు ఉపయోగకరమైన డేటాను ప్రదర్శించడానికి, మీరు సాధారణంగా డేటాను ఏదో విధంగా సమూహీకరించాలి. ఉదాహరణకు, మన కేసులో, ప్రతి నెలకు గుమ్మడికాయల సగటు ధరను కనుగొనడం మన డేటాలోని అంతర్గత నమూనాలపై మరింత అవగాహనను అందిస్తుంది. ఇది మాకు మరొక **dplyr** ఫ్లైబైకి దారితీస్తుంది:\n", + "\n", + "#### `dplyr::group_by() %>% summarize()`\n", + "\n", + "R లో సమూహీకృత సమ్మేళనం సులభంగా లెక్కించవచ్చు\n", + "\n", + "`dplyr::group_by() %>% summarize()`\n", + "\n", + "- `dplyr::group_by()` విశ్లేషణ యూనిట్‌ను పూర్తి డేటాసెట్ నుండి వ్యక్తిగత సమూహాలకు మార్చుతుంది, ఉదాహరణకు ప్రతి నెలకు.\n", + "\n", + "- `dplyr::summarize()` మీరు పేర్కొన్న సమ్మరీ గణాంకాల కోసం ప్రతి సమూహీకరణ వేరియబుల్‌కు ఒక కాలమ్ మరియు ఒక కొత్త డేటా ఫ్రేమ్‌ను సృష్టిస్తుంది.\n", + "\n", + "ఉదాహరణకు, మనం `dplyr::group_by() %>% summarize()` ను ఉపయోగించి గుమ్మడికాయలను **Month** కాలమ్ ఆధారంగా సమూహాలుగా విభజించి, ప్రతి నెలకు **సగటు ధర** కనుగొనవచ్చు.\n" + ], + "metadata": { + "id": "jMakvJZIcVkh" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Find the average price of pumpkins per month\r\n", + "new_pumpkins %>%\r\n", + " group_by(Month) %>% \r\n", + " summarise(mean_price = mean(Price))" + ], + "outputs": [], + "metadata": { + "id": "6kVSUa2Bcilf" + } + }, + { + "cell_type": "markdown", + "source": [ + "సంక్షిప్తంగా!✨\n", + "\n", + "నెలల వంటి వర్గీకరణ లక్షణాలను బార్ ప్లాట్ 📊 ఉపయోగించి మెరుగ్గా ప్రదర్శించవచ్చు. బార్ చార్ట్స్ కోసం బాధ్యత వహించే లేయర్లు `geom_bar()` మరియు `geom_col()` ఉన్నాయి. మరింత తెలుసుకోవడానికి `?geom_bar` ను చూడండి.\n", + "\n", + "ఒకటి తయారు చేద్దాం!\n" + ], + "metadata": { + "id": "Kds48GUBcj3W" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Find the average price of pumpkins per month then plot a bar chart\r\n", + "new_pumpkins %>%\r\n", + " group_by(Month) %>% \r\n", + " summarise(mean_price = mean(Price)) %>% \r\n", + " ggplot(aes(x = Month, y = mean_price)) +\r\n", + " geom_col(fill = \"midnightblue\", alpha = 0.7) +\r\n", + " ylab(\"Pumpkin Price\")" + ], + "outputs": [], + "metadata": { + "id": "VNbU1S3BcrxO" + } + }, + { + "cell_type": "markdown", + "source": [ + "🤩🤩 ఇది మరింత ఉపయోగకరమైన డేటా విజువలైజేషన్! ఇది సప్టెంబర్ మరియు అక్టోబర్ నెలల్లో గుమ్మడికాయల ధర అత్యధికంగా ఉంటుందని సూచిస్తున్నట్లు కనిపిస్తోంది. ఇది మీ అంచనాకు సరిపోతుందా? ఎందుకు లేదా ఎందుకు కాదు?\n", + "\n", + "రెండవ పాఠం పూర్తి చేసినందుకు అభినందనలు 👏! మీరు మీ డేటాను మోడల్ నిర్మాణానికి సిద్ధం చేసారు, ఆపై విజువలైజేషన్ల ద్వారా మరిన్ని అవగాహనలను కనుగొన్నారు!\n" + ], + "metadata": { + "id": "zDm0VOzzcuzR" + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/te/2-Regression/2-Data/solution/notebook.ipynb b/translations/te/2-Regression/2-Data/solution/notebook.ipynb new file mode 100644 index 000000000..03d7e6587 --- /dev/null +++ b/translations/te/2-Regression/2-Data/solution/notebook.ipynb @@ -0,0 +1,439 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## పంప్కిన్స్ కోసం లీనియర్ రిగ్రెషన్ - పాఠం 2\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
70BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN9/24/1615.015.015.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
71BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN9/24/1618.018.018.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
72BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/1/1618.018.018.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
73BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/1/1617.017.017.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
74BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/8/1615.015.015.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade \\\n", + "70 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "71 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "72 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "73 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "74 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "\n", + " Date Low Price High Price Mostly Low ... Unit of Sale Quality \\\n", + "70 9/24/16 15.0 15.0 15.0 ... NaN NaN \n", + "71 9/24/16 18.0 18.0 18.0 ... NaN NaN \n", + "72 10/1/16 18.0 18.0 18.0 ... NaN NaN \n", + "73 10/1/16 17.0 17.0 17.0 ... NaN NaN \n", + "74 10/8/16 15.0 15.0 15.0 ... NaN NaN \n", + "\n", + " Condition Appearance Storage Crop Repack Trans Mode Unnamed: 24 \\\n", + "70 NaN NaN NaN NaN N NaN NaN \n", + "71 NaN NaN NaN NaN N NaN NaN \n", + "72 NaN NaN NaN NaN N NaN NaN \n", + "73 NaN NaN NaN NaN N NaN NaN \n", + "74 NaN NaN NaN NaN N NaN NaN \n", + "\n", + " Unnamed: 25 \n", + "70 NaN \n", + "71 NaN \n", + "72 NaN \n", + "73 NaN \n", + "74 NaN \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", + "\n", + "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n", + "\n", + "pumpkins.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "City Name 0\n", + "Type 406\n", + "Package 0\n", + "Variety 0\n", + "Sub Variety 167\n", + "Grade 415\n", + "Date 0\n", + "Low Price 0\n", + "High Price 0\n", + "Mostly Low 24\n", + "Mostly High 24\n", + "Origin 0\n", + "Origin District 396\n", + "Item Size 114\n", + "Color 145\n", + "Environment 415\n", + "Unit of Sale 404\n", + "Quality 415\n", + "Condition 415\n", + "Appearance 415\n", + "Storage 415\n", + "Crop 415\n", + "Repack 0\n", + "Trans Mode 415\n", + "Unnamed: 24 415\n", + "Unnamed: 25 391\n", + "dtype: int64" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pumpkins.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Month Package Low Price High Price Price\n", + "70 9 1 1/9 bushel cartons 15.00 15.0 13.50\n", + "71 9 1 1/9 bushel cartons 18.00 18.0 16.20\n", + "72 10 1 1/9 bushel cartons 18.00 18.0 16.20\n", + "73 10 1 1/9 bushel cartons 17.00 17.0 15.30\n", + "74 10 1 1/9 bushel cartons 15.00 15.0 13.50\n", + "... ... ... ... ... ...\n", + "1738 9 1/2 bushel cartons 15.00 15.0 30.00\n", + "1739 9 1/2 bushel cartons 13.75 15.0 28.75\n", + "1740 9 1/2 bushel cartons 10.75 15.0 25.75\n", + "1741 9 1/2 bushel cartons 12.00 12.0 24.00\n", + "1742 9 1/2 bushel cartons 12.00 12.0 24.00\n", + "\n", + "[415 rows x 5 columns]\n" + ] + } + ], + "source": [ + "\n", + "# A set of new columns for a new dataframe. Filter out nonmatching columns\n", + "columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']\n", + "pumpkins = pumpkins.loc[:, columns_to_select]\n", + "\n", + "# Get an average between low and high price for the base pumpkin price\n", + "price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2\n", + "\n", + "# Convert the date to its month only\n", + "month = pd.DatetimeIndex(pumpkins['Date']).month\n", + "\n", + "# Create a new dataframe with this basic data\n", + "new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})\n", + "\n", + "# Convert the price if the Package contains fractional bushel values\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)\n", + "\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)\n", + "\n", + "print(new_pumpkins)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "price = new_pumpkins.Price\n", + "month = new_pumpkins.Month\n", + "plt.scatter(price, month)\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Pumpkin Price')" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')\n", + "plt.ylabel(\"Pumpkin Price\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + }, + "kernelspec": { + "display_name": "Python 3.7.0 64-bit ('3.7')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", + "translation_date": "2025-12-19T16:31:41+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/te/2-Regression/3-Linear/README.md b/translations/te/2-Regression/3-Linear/README.md new file mode 100644 index 000000000..5853f1c14 --- /dev/null +++ b/translations/te/2-Regression/3-Linear/README.md @@ -0,0 +1,383 @@ + +# Scikit-learn ఉపయోగించి రిగ్రెషన్ మోడల్ నిర్మించండి: రిగ్రెషన్ నాలుగు విధానాలు + +![లీనియర్ vs పాలినోమియల్ రిగ్రెషన్ ఇన్ఫోగ్రాఫిక్](../../../../translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.te.png) +> ఇన్ఫోగ్రాఫిక్ [దాసాని మడిపల్లి](https://twitter.com/dasani_decoded) ద్వారా +## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ఈ పాఠం R లో అందుబాటులో ఉంది!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### పరిచయం + +ఇప్పటివరకు మీరు రిగ్రెషన్ అంటే ఏమిటి అనేది పంప్కిన్ ధరల డేటాసెట్ నుండి సేకరించిన నమూనా డేటాతో అన్వేషించారు, దీన్ని ఈ పాఠం మొత్తం ఉపయోగిస్తాము. మీరు Matplotlib ఉపయోగించి దాన్ని విజువలైజ్ కూడా చేసారు. + +ఇప్పుడు మీరు ML కోసం రిగ్రెషన్ లో మరింత లోతుగా ప్రవేశించడానికి సిద్ధంగా ఉన్నారు. విజువలైజేషన్ డేటాను అర్థం చేసుకోవడానికి సహాయపడుతుంది, కానీ మెషీన్ లెర్నింగ్ యొక్క నిజమైన శక్తి _మోడల్స్ శిక్షణ_ నుండి వస్తుంది. మోడల్స్ చరిత్రాత్మక డేటాపై శిక్షణ పొందుతాయి, డేటా ఆధారిత సంబంధాలను ఆటోమేటిక్‌గా పట్టుకోవడానికి, మరియు మోడల్ ఇప్పటివరకు చూడని కొత్త డేటాకు ఫలితాలను అంచనా వేయడానికి వీలు కల్పిస్తాయి. + +ఈ పాఠంలో, మీరు రెండు రకాల రిగ్రెషన్ గురించి మరింత తెలుసుకుంటారు: _బేసిక్ లీనియర్ రిగ్రెషన్_ మరియు _పాలినోమియల్ రిగ్రెషన్_, మరియు ఈ సాంకేతికతల వెనుక ఉన్న కొన్ని గణిత శాస్త్రం. ఆ మోడల్స్ మాకు వివిధ ఇన్‌పుట్ డేటాపై ఆధారపడి పంప్కిన్ ధరలను అంచనా వేయడానికి సహాయపడతాయి. + +[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") + +> 🎥 లీనియర్ రిగ్రెషన్ యొక్క సంక్షిప్త వీడియో అవలోకనానికి పై చిత్రం క్లిక్ చేయండి. + +> ఈ పాఠ్యాంశం మొత్తం, మేము గణితంపై కనీస జ్ఞానం ఉన్నట్లు భావించి, ఇతర రంగాల నుండి వచ్చిన విద్యార్థులకు సులభంగా అర్థమయ్యేలా చేయడానికి ప్రయత్నిస్తాము, కాబట్టి గమనికలు, 🧮 కాల్ అవుట్లు, చిత్రాలు మరియు ఇతర అభ్యాస సాధనాలను గమనించండి. + +### ముందస్తు అవగాహన + +మీకు ఇప్పటివరకు పరిశీలిస్తున్న పంప్కిన్ డేటా నిర్మాణం గురించి పరిచయం కలిగి ఉండాలి. మీరు ఈ పాఠం యొక్క _notebook.ipynb_ ఫైల్‌లో ముందుగా లోడ్ చేసి శుభ్రపరిచిన డేటాను కనుగొనవచ్చు. ఆ ఫైల్‌లో, పంప్కిన్ ధర బషెల్‌కు ప్రదర్శించబడుతుంది. మీరు Visual Studio Code లో కర్నెల్స్‌లో ఈ నోట్‌బుక్స్ నడపగలగాలి. + +### సిద్ధం కావడం + +మరలా గుర్తు చేసుకోవడానికి, మీరు ఈ డేటాను లోడ్ చేస్తున్నారంటే దానిపై ప్రశ్నలు అడగడానికి. + +- పంప్కిన్లను కొనుగోలు చేయడానికి ఉత్తమ సమయం ఎప్పుడు? +- మినీ పంప్కిన్ల కేసు ధర ఎంత ఉండవచ్చు? +- వాటిని అర్ధ బషెల్ బాస్కెట్లలో కొనాలా లేదా 1 1/9 బషెల్ బాక్స్ ద్వారా కొనాలా? +మనం ఈ డేటాలో మరింత లోతుగా వెళ్దాం. + +మునుపటి పాఠంలో, మీరు Pandas డేటా ఫ్రేమ్ సృష్టించి, అసలు డేటాసెట్‌లోని భాగాన్ని బషెల్ ద్వారా ధరను ప్రమాణీకరించి నింపారు. అయితే, మీరు సుమారు 400 డేటాపాయింట్లు మాత్రమే సేకరించగలిగారు మరియు అవి కేవలం శరదృతువు నెలల కోసం మాత్రమే. + +ఈ పాఠం యొక్క సహాయక నోట్‌బుక్‌లో ముందుగా లోడ్ చేసిన డేటాను చూడండి. డేటా ముందుగా లోడ్ చేయబడింది మరియు నెల డేటాను చూపించడానికి ప్రారంభ స్కాటర్‌ప్లాట్ రూపొందించబడింది. డేటా స్వభావం గురించి మరింత వివరాలు తెలుసుకోవడానికి మరింత శుభ్రపరచడం చేయవచ్చు. + +## లీనియర్ రిగ్రెషన్ లైన్ + +పాఠం 1 లో మీరు నేర్చుకున్నట్లుగా, లీనియర్ రిగ్రెషన్ వ్యాయామం యొక్క లక్ష్యం ఒక లైన్‌ను ప్లాట్ చేయగలగడం: + +- **వేరియబుల్ సంబంధాలను చూపించండి**. వేరియబుల్స్ మధ్య సంబంధాన్ని చూపించండి +- **అంచనాలు చేయండి**. కొత్త డేటాపాయింట్ ఆ లైన్‌కు సంబంధించి ఎక్కడ పడుతుందో ఖచ్చితంగా అంచనా వేయండి. + +**లీస్ట్-స్క్వేర్ రిగ్రెషన్**లో ఈ రకమైన లైన్ డ్రా చేయడం సాధారణం. 'లీస్ట్-స్క్వేర్' అనే పదం అంటే రిగ్రెషన్ లైన్ చుట్టూ ఉన్న అన్ని డేటాపాయింట్లు స్క్వేర్ చేసి, వాటిని జోడించడం. ఆ తుది మొత్తం సాధ్యమైనంత తక్కువగా ఉండాలి, ఎందుకంటే మేము తప్పుల సంఖ్యను తక్కువగా ఉంచాలనుకుంటున్నాము, అంటే `లీస్ట్-స్క్వేర్`. + +మేము ఈ విధంగా చేస్తాము ఎందుకంటే మేము మా డేటా పాయింట్లన్నింటి నుండి కనీస సమ్మిళిత దూరం కలిగిన లైన్‌ను మోడల్ చేయాలనుకుంటున్నాము. దిశ కాకుండా పరిమాణం గురించి ఆందోళన కలిగినందున, జోడించే ముందు పదాలను స్క్వేర్ చేస్తాము. + +> **🧮 గణితం చూపించండి** +> +> ఈ లైన్, _లైన్ ఆఫ్ బెస్ట్ ఫిట్_ అని పిలవబడుతుంది, [సమీకరణ](https://en.wikipedia.org/wiki/Simple_linear_regression) ద్వారా వ్యక్తం చేయవచ్చు: +> +> ``` +> Y = a + bX +> ``` +> +> `X` అనేది 'వివరణాత్మక వేరియబుల్'. `Y` అనేది 'ఆధారిత వేరియబుల్'. లైన్ యొక్క స్లోప్ `b` మరియు `a` y-ఇంటర్సెప్ట్, అంటే `X = 0` ఉన్నప్పుడు `Y` విలువ. +> +>![స్లోప్ లెక్కించండి](../../../../translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.te.png) +> +> మొదట, స్లోప్ `b` లెక్కించండి. ఇన్ఫోగ్రాఫిక్ [జెన్ లూపర్](https://twitter.com/jenlooper) ద్వారా +> +> మరొక మాటలో చెప్పాలంటే, మా పంప్కిన్ డేటా యొక్క అసలు ప్రశ్నకు సంబంధించి: "నెల వారీగా పంప్కిన్ ధర అంచనా వేయండి", `X` ధరకు సూచిస్తుంది మరియు `Y` అమ్మకాల నెలకు సూచిస్తుంది. +> +>![సమీకరణ పూర్తి చేయండి](../../../../translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.te.png) +> +> Y విలువ లెక్కించండి. మీరు సుమారు $4 చెల్లిస్తుంటే, అది ఏప్రిల్ కావాలి! ఇన్ఫోగ్రాఫిక్ [జెన్ లూపర్](https://twitter.com/jenlooper) ద్వారా +> +> లైన్ లెక్కించే గణితం స్లోప్‌ను చూపించాలి, ఇది ఇంటర్సెప్ట్‌పై ఆధారపడి ఉంటుంది, అంటే `X = 0` ఉన్నప్పుడు `Y` ఎక్కడ ఉంటుంది. +> +> ఈ విలువల లెక్కింపు పద్ధతిని మీరు [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) వెబ్‌సైట్‌లో చూడవచ్చు. అలాగే [ఈ లీస్ట్-స్క్వేర్ కాలిక్యులేటర్](https://www.mathsisfun.com/data/least-squares-calculator.html) ను సందర్శించి సంఖ్యల విలువలు లైన్‌పై ఎలా ప్రభావం చూపిస్తాయో చూడండి. + +## సహసంబంధం + +మరొక పదం అర్థం చేసుకోవాలి అంటే **సహసంబంధ గుణకం** X మరియు Y వేరియబుల్స్ మధ్య. స్కాటర్‌ప్లాట్ ఉపయోగించి మీరు ఈ గుణకాన్ని త్వరగా విజువలైజ్ చేయవచ్చు. డేటాపాయింట్లు ఒక సూటిగా పడ్డ స్కాటర్‌ప్లాట్‌కు ఉన్నత సహసంబంధం ఉంటుంది, కానీ డేటాపాయింట్లు X మరియు Y మధ్య ఎక్కడైనా పడ్డ స్కాటర్‌ప్లాట్‌కు తక్కువ సహసంబంధం ఉంటుంది. + +మంచి లీనియర్ రిగ్రెషన్ మోడల్ అనేది లీస్ట్-స్క్వేర్ రిగ్రెషన్ పద్ధతితో రిగ్రెషన్ లైన్ ఉన్నప్పుడు 1 కి దగ్గరగా ఉన్న (0 కంటే ఎక్కువ) సహసంబంధ గుణకం కలిగి ఉంటుంది. + +✅ ఈ పాఠం సహాయక నోట్‌బుక్ నడపండి మరియు నెల నుండి ధర స్కాటర్‌ప్లాట్ చూడండి. పంప్కిన్ అమ్మకాల కోసం నెల మరియు ధర మధ్య డేటా మీ విజువల్ అర్థం ప్రకారం అధిక లేదా తక్కువ సహసంబంధం ఉందా? మీరు `నెల` బదులు మరింత సూక్ష్మమైన కొలత ఉపయోగిస్తే, ఉదాహరణకు *సంవత్సరంలో రోజు* (అంటే సంవత్సర ప్రారంభం నుండి గడిచిన రోజుల సంఖ్య), అది మారుతుందా? + +క్రింది కోడ్‌లో, మేము డేటాను శుభ్రపరిచినట్లు భావిస్తాము, మరియు `new_pumpkins` అనే డేటా ఫ్రేమ్ పొందాము, ఇది ఈ క్రింది విధంగా ఉంటుంది: + +ID | నెల | సంవత్సరం లో రోజు | రకం | నగరం | ప్యాకేజీ | తక్కువ ధర | ఎక్కువ ధర | ధర +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | పై టైప్ | బాల్టిమోర్ | 1 1/9 బషెల్ కార్టన్లు | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | పై టైప్ | బాల్టిమోర్ | 1 1/9 బషెల్ కార్టన్లు | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | పై టైప్ | బాల్టిమోర్ | 1 1/9 బషెల్ కార్టన్లు | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | పై టైప్ | బాల్టిమోర్ | 1 1/9 బషెల్ కార్టన్లు | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | పై టైప్ | బాల్టిమోర్ | 1 1/9 బషెల్ కార్టన్లు | 15.0 | 15.0 | 13.636364 + +> డేటాను శుభ్రపరచడానికి కోడ్ [`notebook.ipynb`](notebook.ipynb) లో అందుబాటులో ఉంది. మేము మునుపటి పాఠంలో చేసిన శుభ్రపరిచే దశలను అమలు చేసాము, మరియు `DayOfYear` కాలమ్‌ను క్రింది వ్యక్తీకరణతో లెక్కించాము: + +```python +day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) +``` + +లీనియర్ రిగ్రెషన్ వెనుక గణితాన్ని మీరు అర్థం చేసుకున్న తర్వాత, పంప్కిన్ ప్యాకేజీలలో ఏది ఉత్తమ ధర కలిగి ఉంటుందో అంచనా వేయడానికి రిగ్రెషన్ మోడల్ సృష్టిద్దాం. సెలవుల పంప్కిన్ ప్యాచ్ కోసం పంప్కిన్లు కొనుగోలు చేసే వారు ఈ సమాచారాన్ని ఉపయోగించి తమ కొనుగోళ్లను ఆప్టిమైజ్ చేసుకోవచ్చు. + +## సహసంబంధం కోసం వెతుకుతున్నాం + +[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") + +> 🎥 సహసంబంధం యొక్క సంక్షిప్త వీడియో అవలోకనానికి పై చిత్రం క్లిక్ చేయండి. + +మునుపటి పాఠం నుండి మీరు చూసినట్లయితే, వివిధ నెలల సగటు ధర ఇలా ఉంటుంది: + +నెల వారీ సగటు ధర + +ఇది కొంత సహసంబంధం ఉండాలని సూచిస్తుంది, మరియు మేము `నెల` మరియు `ధర` మధ్య లేదా `DayOfYear` మరియు `ధర` మధ్య సంబంధాన్ని అంచనా వేయడానికి లీనియర్ రిగ్రెషన్ మోడల్ శిక్షణ ఇవ్వవచ్చు. క్రింది స్కాటర్ ప్లాట్ ఆ తర్వాత సంబంధాన్ని చూపిస్తుంది: + +ధర vs. సంవత్సరం లో రోజు స్కాటర్ ప్లాట్ + +`corr` ఫంక్షన్ ఉపయోగించి సహసంబంధం ఉందా చూద్దాం: + +```python +print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) +print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) +``` + +సహసంబంధం చాలా తక్కువగా ఉంది, `నెల` ద్వారా -0.15 మరియు `DayOfMonth` ద్వారా -0.17, కానీ మరో ముఖ్యమైన సంబంధం ఉండవచ్చు. వివిధ పంప్కిన్ రకాల ధరల వేర్వేరు క్లస్టర్లు ఉన్నట్లు కనిపిస్తోంది. ఈ హైపోథసిస్ నిర్ధారించడానికి, ప్రతి పంప్కిన్ వర్గాన్ని వేరే రంగుతో ప్లాట్ చేద్దాం. `scatter` ప్లాటింగ్ ఫంక్షన్‌కు `ax` పారామీటర్ ఇవ్వడం ద్వారా అన్ని పాయింట్లను ఒకే గ్రాఫ్‌లో ప్లాట్ చేయవచ్చు: + +```python +ax=None +colors = ['red','blue','green','yellow'] +for i,var in enumerate(new_pumpkins['Variety'].unique()): + df = new_pumpkins[new_pumpkins['Variety']==var] + ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) +``` + +ధర vs. సంవత్సరం లో రోజు రంగు స్కాటర్ ప్లాట్ + +మా పరిశీలన ప్రకారం, రకం అమ్మకాల తేదీ కంటే మొత్తం ధరపై ఎక్కువ ప్రభావం చూపుతుంది. దీన్ని బార్ గ్రాఫ్‌తో చూడవచ్చు: + +```python +new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') +``` + +ధర vs రకం బార్ గ్రాఫ్ + +ఇప్పుడు మనం కేవలం ఒక పంప్కిన్ రకం, 'పై టైప్' పై దృష్టి పెట్టి, తేదీ ధరపై ఎలాంటి ప్రభావం చూపుతుందో చూద్దాం: + +```python +pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] +pie_pumpkins.plot.scatter('DayOfYear','Price') +``` +ధర vs. సంవత్సరం లో రోజు స్కాటర్ ప్లాట్ + +ఇప్పుడు `corr` ఫంక్షన్ ఉపయోగించి `ధర` మరియు `DayOfYear` మధ్య సహసంబంధం లెక్కిస్తే, సుమారు `-0.27` వస్తుంది - అంటే అంచనా వేయగల మోడల్ శిక్షణ ఇవ్వడం అర్థం. + +> లీనియర్ రిగ్రెషన్ మోడల్ శిక్షణకు ముందు, మా డేటా శుభ్రంగా ఉందని నిర్ధారించుకోవడం ముఖ్యం. లీనియర్ రిగ్రెషన్ లో మిస్సింగ్ విలువలతో పని చేయడం సరిగా ఉండదు, కాబట్టి అన్ని ఖాళీ సెల్స్ తొలగించడం మంచిది: + +```python +pie_pumpkins.dropna(inplace=True) +pie_pumpkins.info() +``` + +మరొక విధానం ఖాళీ విలువలను సంబంధిత కాలమ్ యొక్క సగటు విలువలతో భర్తీ చేయడం. + +## సింపుల్ లీనియర్ రిగ్రెషన్ + +[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") + +> 🎥 లీనియర్ మరియు పాలినోమియల్ రిగ్రెషన్ యొక్క సంక్షిప్త వీడియో అవలోకనానికి పై చిత్రం క్లిక్ చేయండి. + +మా లీనియర్ రిగ్రెషన్ మోడల్ శిక్షణకు, మేము **Scikit-learn** లైబ్రరీని ఉపయోగిస్తాము. + +```python +from sklearn.linear_model import LinearRegression +from sklearn.metrics import mean_squared_error +from sklearn.model_selection import train_test_split +``` + +మేము మొదట ఇన్‌పుట్ విలువలు (ఫీచర్లు) మరియు అంచనా వేయాల్సిన అవుట్‌పుట్ (లేబుల్) ను వేర్వేరు numpy అర్రేలలో విడగొడతాము: + +```python +X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) +y = pie_pumpkins['Price'] +``` + +> గమనించండి, లీనియర్ రిగ్రెషన్ ప్యాకేజీ సరిగ్గా అర్థం చేసుకోవడానికి ఇన్‌పుట్ డేటాపై `reshape` చేయాల్సి వచ్చింది. లీనియర్ రిగ్రెషన్ 2D-అర్రేను ఇన్‌పుట్‌గా ఆశిస్తుంది, ఇందులో ప్రతి వరుస ఒక ఫీచర్ వెక్టర్‌కు సరిపోతుంది. మన కేసులో, ఒక్క ఇన్‌పుట్ ఉన్నందున, N×1 ఆకారంలో అర్రే కావాలి, ఇక్కడ N డేటాసెట్ పరిమాణం. + +తర్వాత, మేము డేటాను శిక్షణ మరియు పరీక్ష డేటాసెట్‌లుగా విభజించాలి, తద్వారా శిక్షణ తర్వాత మోడల్‌ను ధృవీకరించవచ్చు: + +```python +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) +``` + +చివరగా, లీనియర్ రిగ్రెషన్ మోడల్ శిక్షణ రెండు కోడ్ లైన్లలోనే జరుగుతుంది. మేము `LinearRegression` ఆబ్జెక్ట్‌ను నిర్వచించి, `fit` మెథడ్ ఉపయోగించి మా డేటాకు అనుగుణంగా చేస్తాము: + +```python +lin_reg = LinearRegression() +lin_reg.fit(X_train,y_train) +``` + +`fit` చేసిన తర్వాత `LinearRegression` ఆబ్జెక్ట్‌లో రిగ్రెషన్ యొక్క అన్ని కోఎఫిషియెంట్లు ఉంటాయి, వాటిని `.coef_` ప్రాపర్టీ ద్వారా యాక్సెస్ చేయవచ్చు. మన కేసులో, ఒక్క కోఎఫిషియెంట్ ఉంటుంది, అది సుమారు `-0.017` ఉంటుంది. అంటే ధరలు కాలంతో కొంత తగ్గుతున్నట్లు కనిపిస్తుంది, రోజుకు సుమారు 2 సెంట్లు. మేము రిగ్రెషన్ యొక్క Y-అక్షంతో ఇంటర్సెక్షన్ పాయింట్‌ను `lin_reg.intercept_` ద్వారా కూడా పొందవచ్చు - ఇది మన కేసులో సుమారు `21` ఉంటుంది, సంవత్సర ప్రారంభంలో ధరను సూచిస్తుంది. +మా మోడల్ ఎంత ఖచ్చితంగా ఉందో చూడటానికి, మేము టెస్ట్ డేటాసెట్‌పై ధరలను అంచనా వేయవచ్చు, ఆపై మా అంచనాలు ఆశించిన విలువలకు ఎంత దగ్గరగా ఉన్నాయో కొలవవచ్చు. ఇది మినీ స్క్వేర్ ఎర్రర్ (MSE) మెట్రిక్స్ ఉపయోగించి చేయవచ్చు, ఇది ఆశించిన మరియు అంచనా విలువల మధ్య అన్ని చదరపు తేడాల సగటు. + +```python +pred = lin_reg.predict(X_test) + +mse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +``` + +మా పొరపాటు సుమారు 2 పాయింట్ల చుట్టూ ఉంది, ఇది సుమారు 17%. చాలా బాగాలేదు. మోడల్ నాణ్యతకు మరో సూచిక **నిర్ణయ సహగుణం** (coefficient of determination), ఇది ఇలా పొందవచ్చు: + +```python +score = lin_reg.score(X_train,y_train) +print('Model determination: ', score) +``` + +విలువ 0 అయితే, అంటే మోడల్ ఇన్‌పుట్ డేటాను పరిగణలోకి తీసుకోదు, మరియు *చెత్త లీనియర్ అంచనా వేయగలిగే* మోడల్‌గా పనిచేస్తుంది, ఇది ఫలితాల సగటు విలువ మాత్రమే. విలువ 1 అంటే మేము అన్ని ఆశించిన అవుట్‌పుట్‌లను పూర్తిగా అంచనా వేయగలమని అర్థం. మా సందర్భంలో, సహగుణం సుమారు 0.06, ఇది చాలా తక్కువ. + +మేము టెస్ట్ డేటాను రిగ్రెషన్ లైన్‌తో కలిసి ప్లాట్ చేయవచ్చు, మా సందర్భంలో రిగ్రెషన్ ఎలా పనిచేస్తుందో మెరుగ్గా చూడటానికి: + +```python +plt.scatter(X_test,y_test) +plt.plot(X_test,pred) +``` + +Linear regression + +## పాలినోమియల్ రిగ్రెషన్ + +లీనియర్ రిగ్రెషన్ యొక్క మరో రకం పాలినోమియల్ రిగ్రెషన్. కొన్ని సార్లు వేరియబుల్స్ మధ్య లీనియర్ సంబంధం ఉంటుంది - వాల్యూమ్ లో పెద్ద పంక్‌కిన్ ఉంటే ధర ఎక్కువ - కానీ కొన్ని సార్లు ఈ సంబంధాలను ప్లేన్ లేదా సూటి రేఖగా చిత్రీకరించలేము. + +✅ ఇక్కడ [మరిన్ని ఉదాహరణలు](https://online.stat.psu.edu/stat501/lesson/9/9.8) ఉన్నాయి, ఇవి పాలినోమియల్ రిగ్రెషన్ ఉపయోగించవచ్చు + +తేదీ మరియు ధర మధ్య సంబంధాన్ని మరోసారి చూడండి. ఈ స్కాటర్‌ప్లాట్ తప్పనిసరిగా సూటి రేఖతో విశ్లేషించాల్సినదిగా అనిపిస్తుందా? ధరలు మారవచ్చునా? ఈ సందర్భంలో, మీరు పాలినోమియల్ రిగ్రెషన్ ప్రయత్నించవచ్చు. + +✅ పాలినోమియల్స్ అనేవి ఒకటి లేదా ఎక్కువ వేరియబుల్స్ మరియు సహగుణాలతో కూడిన గణితీయ వ్యక్తీకరణలు + +పాలినోమియల్ రిగ్రెషన్ వక్రీకృత రేఖను సృష్టించి, నాన్‌లీనియర్ డేటాకు మెరుగైన సరిపోయేలా చేస్తుంది. మా సందర్భంలో, ఇన్‌పుట్ డేటాలో స్క్వేర్ చేసిన `DayOfYear` వేరియబుల్‌ను చేర్చితే, మేము మా డేటాను ఒక పారబాలిక్ వక్రీకరణతో సరిపోల్చగలము, ఇది సంవత్సరంలో ఒక నిర్దిష్ట బిందువులో కనిష్ఠం ఉంటుంది. + +Scikit-learn ఒక సహాయక [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) కలిగి ఉంది, ఇది డేటా ప్రాసెసింగ్ యొక్క వివిధ దశలను కలిపేందుకు ఉపయోగపడుతుంది. ఒక **pipeline** అనేది **estimators** యొక్క గొలుసు. మా సందర్భంలో, మేము మొదట మా మోడల్‌కు పాలినోమియల్ ఫీచర్లను జోడించి, ఆపై రిగ్రెషన్‌ను ట్రెయిన్ చేసే pipeline సృష్టిస్తాము: + +```python +from sklearn.preprocessing import PolynomialFeatures +from sklearn.pipeline import make_pipeline + +pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) + +pipeline.fit(X_train,y_train) +``` + +`PolynomialFeatures(2)` ఉపయోగించడం అంటే మేము ఇన్‌పుట్ డేటా నుండి అన్ని రెండవ-డిగ్రీ పాలినోమియల్స్‌ను చేర్చుతాము. మా సందర్భంలో ఇది కేవలం `DayOfYear`2 మాత్రమే, కానీ రెండు ఇన్‌పుట్ వేరియబుల్స్ X మరియు Y ఉంటే, ఇది X2, XY మరియు Y2 ను జోడిస్తుంది. మేము కావాలంటే ఎక్కువ డిగ్రీ పాలినోమియల్స్ కూడా ఉపయోగించవచ్చు. + +Pipelines ను అసలు `LinearRegression` ఆబ్జెక్ట్ లాగా ఉపయోగించవచ్చు, అంటే మేము pipeline ను `fit` చేసి, ఆపై `predict` ఉపయోగించి అంచనా ఫలితాలు పొందవచ్చు. ఇక్కడ టెస్ట్ డేటా మరియు సన్నిహిత వక్రీకరణ వక్రాన్ని చూపించే గ్రాఫ్ ఉంది: + +Polynomial regression + +పాలినోమియల్ రిగ్రెషన్ ఉపయోగించి, మేము కొంచెం తక్కువ MSE మరియు ఎక్కువ నిర్ణయ సహగుణం పొందవచ్చు, కానీ గణనీయంగా కాదు. మేము ఇతర ఫీచర్లను కూడా పరిగణలోకి తీసుకోవాలి! + +> మీరు గమనించవచ్చు, కనిష్ఠ పంక్‌కిన్ ధరలు హాలోవీన్ సమీపంలో ఉంటాయి. దీన్ని మీరు ఎలా వివరిస్తారు? + +🎃 అభినందనలు, మీరు ఇప్పుడు పాయ్ పంక్‌కిన్ ధర అంచనా వేయగలిగే మోడల్ సృష్టించారు. మీరు అన్ని పంక్‌కిన్ రకాల కోసం ఇదే ప్రక్రియను పునరావృతం చేయవచ్చు, కానీ అది కష్టమైన పని. ఇప్పుడు మనం మా మోడల్‌లో పంక్‌కిన్ రకాన్ని ఎలా పరిగణలోకి తీసుకోవాలో నేర్చుకుందాం! + +## వర్గీకృత ఫీచర్లు + +స идеల్ ప్రపంచంలో, మేము ఒకే మోడల్ ఉపయోగించి వివిధ పంక్‌కిన్ రకాల ధరలను అంచనా వేయగలగాలి. అయితే, `Variety` కాలమ్ `Month` లాంటి కాలమ్స్ నుండి కొంత భిన్నంగా ఉంటుంది, ఎందుకంటే ఇది సంఖ్యాత్మక విలువలు కాకుండా ఉంటుంది. ఇలాంటి కాలమ్స్‌ను **వర్గీకృత** (categorical) అంటారు. + +[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") + +> 🎥 పై చిత్రాన్ని క్లిక్ చేసి వర్గీకృత ఫీచర్ల ఉపయోగంపై చిన్న వీడియో అవలోకనం చూడండి. + +ఇక్కడ మీరు వేరియటీపై సగటు ధర ఎలా ఆధారపడి ఉందో చూడవచ్చు: + +Average price by variety + +వేరియటీని పరిగణలోకి తీసుకోవడానికి, ముందుగా దాన్ని సంఖ్యాత్మక రూపంలోకి మార్చాలి, లేదా **ఎంకోడ్** చేయాలి. దీని కోసం కొన్ని మార్గాలు ఉన్నాయి: + +* సాదా **సంఖ్యాత్మక ఎంకోడింగ్** వేరియటీల పట్టికను సృష్టించి, ఆ పట్టికలోని సూచికతో వేరియటీ పేరును మార్చుతుంది. ఇది లీనియర్ రిగ్రెషన్‌కు ఉత్తమ ఆలోచన కాదు, ఎందుకంటే లీనియర్ రిగ్రెషన్ సూచిక యొక్క అసలు సంఖ్యాత్మక విలువను తీసుకుని, దానిని కొంత సహగుణంతో గుణించి ఫలితానికి జోడిస్తుంది. మా సందర్భంలో, సూచిక సంఖ్య మరియు ధర మధ్య సంబంధం స్పష్టంగా నాన్-లీనియర్, ఎప్పటికైనా సూచికలు నిర్దిష్ట రీతిలో క్రమబద్ధీకరించినా కూడా. +* **వన్-హాట్ ఎంకోడింగ్** `Variety` కాలమ్‌ను 4 వేర్వేరు కాలమ్స్‌గా మార్చుతుంది, ఒక్కో వేరియటీకి ఒకటి. ప్రతి కాలమ్‌లో ఆ వరుస ఆ వేరియటీకి చెందినదైతే `1`, లేకపోతే `0` ఉంటుంది. అంటే లీనియర్ రిగ్రెషన్‌లో నాలుగు సహగుణాలు ఉంటాయి, ఒక్కో పంక్‌కిన్ వేరియటీకి ఒకటి, ఆ ప్రత్యేక వేరియటీకి "ప్రారంభ ధర" (లేదా "అదనపు ధర") బాధ్యత వహిస్తుంది. + +క్రింది కోడ్ వన్-హాట్ ఎంకోడింగ్ ఎలా చేయాలో చూపిస్తుంది: + +```python +pd.get_dummies(new_pumpkins['Variety']) +``` + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 + +వన్-హాట్ ఎంకోడెడ్ వేరియటీని ఇన్‌పుట్‌గా ఉపయోగించి లీనియర్ రిగ్రెషన్ ట్రెయిన్ చేయడానికి, మేము కేవలం `X` మరియు `y` డేటాను సరిగ్గా ప్రారంభించాలి: + +```python +X = pd.get_dummies(new_pumpkins['Variety']) +y = new_pumpkins['Price'] +``` + +మిగతా కోడ్ మేము పైగా లీనియర్ రిగ్రెషన్ ట్రెయిన్ చేయడానికి ఉపయోగించినదే. మీరు ప్రయత్నిస్తే, సగటు చదరపు పొరపాటు సుమారు అదే ఉంటుంది, కానీ నిర్ణయ సహగుణం చాలా ఎక్కువగా ఉంటుంది (~77%). మరింత ఖచ్చితమైన అంచనాల కోసం, మేము మరిన్ని వర్గీకృత ఫీచర్లు మరియు సంఖ్యాత్మక ఫీచర్లు, ఉదాహరణకు `Month` లేదా `DayOfYear` కూడా పరిగణలోకి తీసుకోవచ్చు. ఒక పెద్ద ఫీచర్ అర్రే పొందడానికి, మేము `join` ఉపయోగించవచ్చు: + +```python +X = pd.get_dummies(new_pumpkins['Variety']) \ + .join(new_pumpkins['Month']) \ + .join(pd.get_dummies(new_pumpkins['City'])) \ + .join(pd.get_dummies(new_pumpkins['Package'])) +y = new_pumpkins['Price'] +``` + +ఇక్కడ మేము `City` మరియు `Package` రకాలను కూడా పరిగణలోకి తీసుకుంటున్నాము, ఇది మాకు MSE 2.84 (10%) మరియు నిర్ణయ సహగుణం 0.94 ఇస్తుంది! + +## అన్నింటినీ కలిపి + +ఉత్తమ మోడల్ తయారుచేయడానికి, మేము పై ఉదాహరణలోని కలిపిన (వన్-హాట్ ఎంకోడెడ్ వర్గీకృత + సంఖ్యాత్మక) డేటాను పాలినోమియల్ రిగ్రెషన్‌తో కలిపి ఉపయోగించవచ్చు. మీ సౌకర్యానికి పూర్తి కోడ్ ఇక్కడ ఉంది: + +```python +# శిక్షణ డేటాను సెట్ చేయండి +X = pd.get_dummies(new_pumpkins['Variety']) \ + .join(new_pumpkins['Month']) \ + .join(pd.get_dummies(new_pumpkins['City'])) \ + .join(pd.get_dummies(new_pumpkins['Package'])) +y = new_pumpkins['Price'] + +# శిక్షణ-పరీక్ష విభజన చేయండి +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + +# పైప్‌లైన్‌ను సెట్ చేసి శిక్షణ ఇవ్వండి +pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) +pipeline.fit(X_train,y_train) + +# పరీక్ష డేటాకు ఫలితాలను అంచనా వేయండి +pred = pipeline.predict(X_test) + +# MSE మరియు నిర్ణయాన్ని లెక్కించండి +mse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +ఇది సుమారు 97% నిర్ణయ సహగుణం మరియు MSE=2.23 (~8% అంచనా పొరపాటు) ఇస్తుంది. + +| మోడల్ | MSE | నిర్ణయ సహగుణం | +|-------|-----|---------------| +| `DayOfYear` లీనియర్ | 2.77 (17.2%) | 0.07 | +| `DayOfYear` పాలినోమియల్ | 2.73 (17.0%) | 0.08 | +| `Variety` లీనియర్ | 5.24 (19.7%) | 0.77 | +| అన్ని ఫీచర్లు లీనియర్ | 2.84 (10.5%) | 0.94 | +| అన్ని ఫీచర్లు పాలినోమియల్ | 2.23 (8.25%) | 0.97 | + +🏆 బాగుంది! మీరు ఒక పాఠంలో నాలుగు రిగ్రెషన్ మోడల్స్ సృష్టించి, మోడల్ నాణ్యతను 97%కి పెంచారు. రిగ్రెషన్ చివరి భాగంలో, మీరు వర్గాలను నిర్ణయించడానికి లాజిస్టిక్ రిగ్రెషన్ గురించి నేర్చుకుంటారు. + +--- +## 🚀సవాలు + +ఈ నోట్‌బుక్‌లో వివిధ వేరియబుల్స్‌ను పరీక్షించి, సహసంబంధం మోడల్ ఖచ్చితత్వానికి ఎలా అనుగుణంగా ఉందో చూడండి. + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +ఈ పాఠంలో మేము లీనియర్ రిగ్రెషన్ గురించి నేర్చుకున్నాము. ఇతర ముఖ్యమైన రిగ్రెషన్ రకాలు కూడా ఉన్నాయి. స్టెప్వైజ్, రిడ్జ్, లాస్సో మరియు ఎలాస్టిక్‌నెట్ సాంకేతికతల గురించి చదవండి. మరింత నేర్చుకోవడానికి మంచి కోర్సు [స్టాన్‌ఫర్డ్ స్టాటిస్టికల్ లెర్నింగ్ కోర్సు](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) + +## అసైన్‌మెంట్ + +[మోడల్ నిర్మించండి](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము. + \ No newline at end of file diff --git a/translations/te/2-Regression/3-Linear/assignment.md b/translations/te/2-Regression/3-Linear/assignment.md new file mode 100644 index 000000000..e4c87475d --- /dev/null +++ b/translations/te/2-Regression/3-Linear/assignment.md @@ -0,0 +1,27 @@ + +# రిగ్రెషన్ మోడల్ సృష్టించండి + +## సూచనలు + +ఈ పాఠంలో మీరు లీనియర్ మరియు పాలినోమియల్ రిగ్రెషన్ రెండింటినీ ఉపయోగించి మోడల్‌ను ఎలా నిర్మించాలో చూపించారు. ఈ జ్ఞానాన్ని ఉపయోగించి, ఒక డేటాసెట్‌ను కనుగొనండి లేదా Scikit-learn యొక్క బిల్ట్-ఇన్ సెట్‌లలో ఒకదాన్ని ఉపయోగించి కొత్త మోడల్‌ను నిర్మించండి. మీరు ఎంచుకున్న సాంకేతికత ఎందుకు ఎంచుకున్నారో మీ నోట్‌బుక్‌లో వివరించండి, మరియు మీ మోడల్ యొక్క ఖచ్చితత్వాన్ని ప్రదర్శించండి. అది ఖచ్చితంగా లేకపోతే, ఎందుకు అనేదాన్ని వివరించండి. + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతంగా | సరిపడా | మెరుగుదల అవసరం | +| -------- | ------------------------------------------------------------ | -------------------------- | ------------------------------- | +| | బాగా డాక్యుమెంటెడ్ పరిష్కారంతో పూర్తి నోట్‌బుక్‌ను అందిస్తుంది | పరిష్కారం అసంపూర్ణం | పరిష్కారం లోపభూయిష్టం లేదా బగ్గీ | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/2-Regression/3-Linear/notebook.ipynb b/translations/te/2-Regression/3-Linear/notebook.ipynb new file mode 100644 index 000000000..97af78247 --- /dev/null +++ b/translations/te/2-Regression/3-Linear/notebook.ipynb @@ -0,0 +1,128 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pumpkin Pricing\n", + "\n", + "Load up required libraries and dataset. Convert the data to a dataframe containing a subset of the data: \n", + "\n", + "- బస్సెల్ ద్వారా ధర పెట్టబడిన పంప్కిన్లను మాత్రమే పొందండి\n", + "- తేదీని నెలగా మార్చండి\n", + "- ధరను గరిష్ట మరియు కనిష్ట ధరల సగటుగా లెక్కించండి\n", + "- ధరను బస్సెల్ పరిమాణం ప్రకారం ప్రతిబింబించేలా మార్చండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from datetime import datetime\n", + "\n", + "pumpkins = pd.read_csv('../data/US-pumpkins.csv')\n", + "\n", + "pumpkins.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n", + "\n", + "columns_to_select = ['Package', 'Variety', 'City Name', 'Low Price', 'High Price', 'Date']\n", + "pumpkins = pumpkins.loc[:, columns_to_select]\n", + "\n", + "price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2\n", + "\n", + "month = pd.DatetimeIndex(pumpkins['Date']).month\n", + "day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)\n", + "\n", + "new_pumpkins = pd.DataFrame(\n", + " {'Month': month, \n", + " 'DayOfYear' : day_of_year, \n", + " 'Variety': pumpkins['Variety'], \n", + " 'City': pumpkins['City Name'], \n", + " 'Package': pumpkins['Package'], \n", + " 'Low Price': pumpkins['Low Price'],\n", + " 'High Price': pumpkins['High Price'], \n", + " 'Price': price})\n", + "\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/1.1\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price*2\n", + "\n", + "new_pumpkins.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ఒక ప్రాథమిక స్కాటర్ప్లాట్ మనకు ఆగస్టు నుండి డిసెంబర్ వరకు మాత్రమే నెలల డేటా ఉందని గుర్తుచేస్తుంది. రేఖీయంగా నిర్ణయాలు తీసుకోవడానికి మనకు ఎక్కువ డేటా అవసరం కావచ్చు.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.scatter('Month','Price',data=new_pumpkins)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "plt.scatter('DayOfYear','Price',data=new_pumpkins)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3-final" + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "b032d371c75279373507f003439a577e", + "translation_date": "2025-12-19T16:17:26+00:00", + "source_file": "2-Regression/3-Linear/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/te/2-Regression/3-Linear/solution/Julia/README.md b/translations/te/2-Regression/3-Linear/solution/Julia/README.md new file mode 100644 index 000000000..696f44391 --- /dev/null +++ b/translations/te/2-Regression/3-Linear/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ఇది తాత్కాలిక ప్లేస్‌హోల్డర్‌입니다 + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb b/translations/te/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb new file mode 100644 index 000000000..a32c76f74 --- /dev/null +++ b/translations/te/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb @@ -0,0 +1,1086 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_3-R.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "5015d65d61ba75a223bfc56c273aa174", + "translation_date": "2025-12-19T16:22:50+00:00", + "source_file": "2-Regression/3-Linear/solution/R/lesson_3-R.ipynb", + "language_code": "te" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# రిగ్రెషన్ మోడల్ నిర్మించండి: లీనియర్ మరియు పాలినోమియల్ రిగ్రెషన్ మోడల్స్\n" + ], + "metadata": { + "id": "EgQw8osnsUV-" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Linear and Polynomial Regression for Pumpkin Pricing - పాఠం 3\n", + "

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

ఇన్ఫోగ్రాఫిక్ - దసాని మడిపల్లి
\n", + "\n", + "\n", + "\n", + "\n", + "#### పరిచయం\n", + "\n", + "ఇప్పటివరకు మీరు పంప్కిన్ ధరల డేటాసెట్ నుండి సేకరించిన నమూనా డేటాతో రిగ్రెషన్ అంటే ఏమిటి అనేది అన్వేషించారు. మీరు దీన్ని `ggplot2` ఉపయోగించి విజువలైజ్ కూడా చేసారు.💪\n", + "\n", + "ఇప్పుడు మీరు ML కోసం రిగ్రెషన్ లో మరింత లోతుగా ప్రవేశించడానికి సిద్ధంగా ఉన్నారు. ఈ పాఠంలో, మీరు రెండు రకాల రిగ్రెషన్ గురించి మరింత తెలుసుకుంటారు: *మూలభూత లీనియర్ రిగ్రెషన్* మరియు *పోలినోమియల్ రిగ్రెషన్*, మరియు ఈ సాంకేతికతల వెనుక ఉన్న కొన్ని గణిత శాస్త్రం కూడా తెలుసుకుంటారు.\n", + "\n", + "> ఈ పాఠ్యक्रमం అంతటా, మేము గణితంపై కనీస జ్ఞానం ఉన్నట్లు భావించి, ఇతర రంగాల నుండి వచ్చిన విద్యార్థులకు సులభంగా అర్థమయ్యేలా చేయడానికి గమనికలు, 🧮 కాలౌట్స్, చిత్రాలు మరియు ఇతర అభ్యాస సాధనాలను ఉపయోగిస్తాము.\n", + "\n", + "#### సిద్ధత\n", + "\n", + "మరొకసారి గుర్తు చేసుకోవడానికి, మీరు ఈ డేటాను లోడ్ చేస్తున్నది దానిపై ప్రశ్నలు అడగడానికి.\n", + "\n", + "- పంప్కిన్లను కొనుగోలు చేయడానికి ఉత్తమ సమయం ఎప్పుడు?\n", + "\n", + "- మినీచర్ పంప్కిన్ల కేసు ధర ఎంత ఆశించవచ్చు?\n", + "\n", + "- వాటిని అర్ధ-బషెల్ బాస్కెట్లలో కొనాలా లేదా 1 1/9 బషెల్ బాక్స్ ద్వారా? ఈ డేటాను మరింత లోతుగా పరిశీలిద్దాం.\n", + "\n", + "మునుపటి పాఠంలో, మీరు ఒక `tibble` (డేటా ఫ్రేమ్ యొక్క ఆధునిక రూపం) సృష్టించి, అసలు డేటాసెట్ లోని భాగాన్ని బషెల్ ప్రకారం ధరలను సాంద్రీకరించి నింపారు. అయితే, అలా చేయడం వలన మీరు సుమారు 400 డేటా పాయింట్లు మాత్రమే సేకరించగలిగారు మరియు కేవలం శరదృతువు నెలల కోసం మాత్రమే. డేటా స్వభావం గురించి మరింత వివరాలు పొందడానికి దీన్ని మరింత శుభ్రపరచగలమా? చూద్దాం... 🕵️‍♀️\n", + "\n", + "ఈ పనికి, మేము క్రింది ప్యాకేజీలను అవసరం:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) అనేది డేటా సైన్స్ ను వేగవంతం, సులభం మరియు మరింత సరదాగా చేయడానికి రూపొందించిన [R ప్యాకేజీల సేకరణ](https://www.tidyverse.org/packages).\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ఫ్రేమ్‌వర్క్ అనేది మోడలింగ్ మరియు మెషీన్ లెర్నింగ్ కోసం [ప్యాకేజీల సేకరణ](https://www.tidymodels.org/packages/).\n", + "\n", + "- `janitor`: [janitor ప్యాకేజీ](https://github.com/sfirke/janitor) మురికి డేటాను పరిశీలించడానికి మరియు శుభ్రపరచడానికి సులభమైన చిన్న సాధనాలను అందిస్తుంది.\n", + "\n", + "- `corrplot`: [corrplot ప్యాకేజీ](https://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html) అనేది సహసంబంధ మ్యాట్రిక్స్ పై విజువల్ అన్వేషణ సాధనం, ఇది ఆటోమేటిక్ వేరియబుల్ పునఃక్రమణను మద్దతు ఇస్తుంది, వేరియబుల్స్ మధ్య దాగి ఉన్న నమూనాలను గుర్తించడంలో సహాయపడుతుంది.\n", + "\n", + "మీరు వాటిని ఇన్‌స్టాల్ చేసుకోవచ్చు:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"janitor\", \"corrplot\"))`\n", + "\n", + "క్రింది స్క్రిప్ట్ మీరు ఈ మాడ్యూల్ పూర్తి చేయడానికి అవసరమైన ప్యాకేజీలు ఉన్నాయా లేదా అని తనిఖీ చేస్తుంది మరియు అవి లేనప్పుడు వాటిని ఇన్‌స్టాల్ చేస్తుంది.\n" + ], + "metadata": { + "id": "WqQPS1OAsg3H" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "suppressWarnings(if (!require(\"pacman\")) install.packages(\"pacman\"))\n", + "\n", + "pacman::p_load(tidyverse, tidymodels, janitor, corrplot)" + ], + "outputs": [], + "metadata": { + "id": "tA4C2WN3skCf", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "c06cd805-5534-4edc-f72b-d0d1dab96ac0" + } + }, + { + "cell_type": "markdown", + "source": [ + "మేము తర్వాత ఈ అద్భుతమైన ప్యాకేజీలను లోడ్ చేసి, వాటిని మా ప్రస్తుత R సెషన్‌లో అందుబాటులో ఉంచుతాము. (ఇది కేవలం ఉదాహరణ కోసం, `pacman::p_load()` ఇప్పటికే మీ కోసం అది చేసింది)\n", + "\n", + "## 1. ఒక రేఖీయ రిగ్రెషన్ రేఖ\n", + "\n", + "మీరు పాఠం 1లో నేర్చుకున్నట్లుగా, ఒక రేఖీయ రిగ్రెషన్ వ్యాయామం యొక్క లక్ష్యం:\n", + "\n", + "- **వేరియబుల్ సంబంధాలను చూపించండి**. వేరియబుల్స్ మధ్య సంబంధాన్ని చూపించండి\n", + "\n", + "- **అంచనాలు చేయండి**. కొత్త డేటా పాయింట్ ఆ రేఖకు సంబంధించి ఎక్కడ పడుతుందో ఖచ్చితంగా అంచనా వేయండి.\n", + "\n", + "ఈ రకం రేఖను గీయడానికి, మేము **లీస్ట్-స్క్వేర్ రిగ్రెషన్** అనే గణాంక సాంకేతికతను ఉపయోగిస్తాము. `least-squares` అనే పదం అంటే రిగ్రెషన్ రేఖ చుట్టూ ఉన్న అన్ని డేటా పాయింట్లను స్క్వేర్ చేసి వాటిని జోడించడం. Ideally, ఆ తుది మొత్తం όσο తక్కువగా ఉంటే మంచిది, ఎందుకంటే మేము తక్కువ తప్పిదాల సంఖ్యను కోరుకుంటాము, లేదా `least-squares`. అందువల్ల, బెస్ట్ ఫిట్ రేఖ అనేది స్క్వేర్ చేసిన తప్పిదాల మొత్తం విలువను తక్కువగా ఇస్తుంది - అందుకే దీనిని *least squares regression* అంటారు.\n", + "\n", + "మేము ఇలా చేస్తాము ఎందుకంటే మేము మా అన్ని డేటా పాయింట్ల నుండి తక్కువ సమ్మిళిత దూరం ఉన్న రేఖను మోడల్ చేయాలనుకుంటున్నాము. దిశ కాకుండా పరిమాణం గురించి ఆందోళన కలిగినందున, జోడించే ముందు పదాలను స్క్వేర్ చేస్తాము.\n", + "\n", + "> **🧮 నాకు గణితం చూపించండి**\n", + ">\n", + "> ఈ రేఖ, *బెస్ట్ ఫిట్ రేఖ* అని పిలవబడుతుంది, [ఒక సమీకరణ](https://en.wikipedia.org/wiki/Simple_linear_regression) ద్వారా వ్యక్తం చేయవచ్చు:\n", + ">\n", + "> Y = a + bX\n", + ">\n", + "> `X` అనేది '`వివరణాత్మక వేరియబుల్` లేదా `ప్రమాణకర్త`'. `Y` అనేది '`ఆధారిత వేరియబుల్` లేదా `ఫలితం`'. రేఖ యొక్క స్లోప్ `b` మరియు `a` y-ఇంటర్సెప్ట్, అంటే `X = 0` ఉన్నప్పుడు `Y` విలువ.\n", + ">\n", + "\n", + "> ![](../../../../../../2-Regression/3-Linear/solution/images/slope.png \"slope = $y/x$\")\n", + " ఇన్ఫోగ్రాఫిక్: జెన్ లూపర్\n", + ">\n", + "> మొదట, స్లోప్ `b` ను లెక్కించండి.\n", + ">\n", + "> మరొక మాటలో చెప్పాలంటే, మా పంప్కిన్ డేటా యొక్క అసలు ప్రశ్నను సూచిస్తూ: \"ప్రతి బుషెల్ పంప్కిన్ ధరను నెల వారీగా అంచనా వేయండి\", `X` ధరను సూచిస్తుంది మరియు `Y` అమ్మకాల నెలను సూచిస్తుంది.\n", + ">\n", + "> ![](../../../../../../translated_images/calculation.989aa7822020d9d0ba9fc781f1ab5192f3421be86ebb88026528aef33c37b0d8.te.png)\n", + " ఇన్ఫోగ్రాఫిక్: జెన్ లూపర్\n", + "> \n", + "> Y విలువను లెక్కించండి. మీరు సుమారు \\$4 చెల్లిస్తుంటే, అది తప్పకుండా ఏప్రిల్!\n", + ">\n", + "> రేఖను లెక్కించే గణితం స్లోప్ ను చూపించాలి, ఇది ఇంటర్సెప్ట్ పై ఆధారపడి ఉంటుంది, లేదా `X = 0` ఉన్నప్పుడు `Y` ఎక్కడ ఉంటుంది.\n", + ">\n", + "> ఈ విలువల లెక్కింపు పద్ధతిని మీరు [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) వెబ్ సైట్‌లో చూడవచ్చు. అలాగే [ఈ Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) ను సందర్శించి సంఖ్యల విలువలు రేఖపై ఎలా ప్రభావం చూపిస్తాయో చూడండి.\n", + "\n", + "అంతగా భయంకరంగా లేదు కదా? 🤓\n", + "\n", + "#### సహసంబంధం\n", + "\n", + "మరొక పదం అర్థం చేసుకోవాలి అంటే, ఇచ్చిన X మరియు Y వేరియబుల్స్ మధ్య **సహసంబంధ గుణకం**. స్కాటర్ప్లాట్ ఉపయోగించి, మీరు ఈ గుణకాన్ని త్వరగా దృశ్యీకరించవచ్చు. డేటాపాయింట్లు ఒక సూటి రేఖలో చక్కగా పడి ఉంటే అధిక సహసంబంధం ఉంటుంది, కానీ X మరియు Y మధ్య ఎక్కడైనా చెలరేగిన డేటాపాయింట్లు ఉంటే తక్కువ సహసంబంధం ఉంటుంది.\n", + "\n", + "ఒక మంచి రేఖీయ రిగ్రెషన్ మోడల్ అనేది లీస్ట్-స్క్వేర్ రిగ్రెషన్ పద్ధతితో రిగ్రెషన్ రేఖతో ఉన్న అధిక (0 కంటే 1కి దగ్గరగా) సహసంబంధ గుణకం కలిగి ఉంటుంది.\n" + ], + "metadata": { + "id": "cdX5FRpvsoP5" + } + }, + { + "cell_type": "markdown", + "source": [ + "## **2. డేటాతో నృత్యం: మోడలింగ్ కోసం ఉపయోగించే డేటా ఫ్రేమ్ సృష్టించడం**\n", + "\n", + "

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

@allison_horst చేత కళాకృతి
\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "WdUKXk7Bs8-V" + } + }, + { + "cell_type": "markdown", + "source": [ + "Load up required libraries and dataset. Convert the data to a data frame containing a subset of the data:\n", + "\n", + "- బస్సెల్ ద్వారా ధర పెట్టబడిన పంప్కిన్లను మాత్రమే పొందండి\n", + "\n", + "- తేదీని నెలగా మార్చండి\n", + "\n", + "- ధరను గరిష్ట మరియు కనిష్ట ధరల సగటుగా లెక్కించండి\n", + "\n", + "- ధరను బస్సెల్ పరిమాణం ప్రకారం ప్రతిబింబించేలా మార్చండి\n", + "\n", + "> మేము ఈ దశలను [మునుపటి పాఠం](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/2-Data/solution/lesson_2-R.ipynb)లో కవర్ చేసాము.\n" + ], + "metadata": { + "id": "fMCtu2G2s-p8" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load the core Tidyverse packages\n", + "library(tidyverse)\n", + "library(lubridate)\n", + "\n", + "# Import the pumpkins data\n", + "pumpkins <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/2-Regression/data/US-pumpkins.csv\")\n", + "\n", + "\n", + "# Get a glimpse and dimensions of the data\n", + "glimpse(pumpkins)\n", + "\n", + "\n", + "# Print the first 50 rows of the data set\n", + "pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "ryMVZEEPtERn" + } + }, + { + "cell_type": "markdown", + "source": [ + "శుద్ధమైన సాహసోపేత భావనలో, మేము మురికి డేటాను పరిశీలించడానికి మరియు శుభ్రపరచడానికి సులభమైన ఫంక్షన్లను అందించే [`janitor package`](../../../../../../2-Regression/3-Linear/solution/R/github.com/sfirke/janitor) ను అన్వేషిద్దాం. ఉదాహరణకు, మన డేటా కోసం కాలమ్ పేర్లను చూద్దాం:\n" + ], + "metadata": { + "id": "xcNxM70EtJjb" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Return column names\n", + "pumpkins %>% \n", + " names()" + ], + "outputs": [], + "metadata": { + "id": "5XtpaIigtPfW" + } + }, + { + "cell_type": "markdown", + "source": [ + "🤔 మనం మెరుగుపరచవచ్చు. ఈ కాలమ్ పేర్లను `friendR` గా మార్చడానికి వాటిని [snake_case](https://en.wikipedia.org/wiki/Snake_case) నియమానికి అనుగుణంగా `janitor::clean_names` ఉపయోగించి మార్చుదాం. ఈ ఫంక్షన్ గురించి మరింత తెలుసుకోవడానికి: `?clean_names`\n" + ], + "metadata": { + "id": "IbIqrMINtSHe" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Clean names to the snake_case convention\n", + "pumpkins <- pumpkins %>% \n", + " clean_names(case = \"snake\")\n", + "\n", + "# Return column names\n", + "pumpkins %>% \n", + " names()" + ], + "outputs": [], + "metadata": { + "id": "a2uYvclYtWvX" + } + }, + { + "cell_type": "markdown", + "source": [ + "చాలా tidyR 🧹! ఇప్పుడు, గత పాఠంలో ఉన్నట్లుగా `dplyr` ఉపయోగించి డేటాతో నృత్యం చేద్దాం! 💃\n" + ], + "metadata": { + "id": "HfhnuzDDtaDd" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Select desired columns\n", + "pumpkins <- pumpkins %>% \n", + " select(variety, city_name, package, low_price, high_price, date)\n", + "\n", + "\n", + "\n", + "# Extract the month from the dates to a new column\n", + "pumpkins <- pumpkins %>%\n", + " mutate(date = mdy(date),\n", + " month = month(date)) %>% \n", + " select(-date)\n", + "\n", + "\n", + "\n", + "# Create a new column for average Price\n", + "pumpkins <- pumpkins %>% \n", + " mutate(price = (low_price + high_price)/2)\n", + "\n", + "\n", + "# Retain only pumpkins with the string \"bushel\"\n", + "new_pumpkins <- pumpkins %>% \n", + " filter(str_detect(string = package, pattern = \"bushel\"))\n", + "\n", + "\n", + "# Normalize the pricing so that you show the pricing per bushel, not per 1 1/9 or 1/2 bushel\n", + "new_pumpkins <- new_pumpkins %>% \n", + " mutate(price = case_when(\n", + " str_detect(package, \"1 1/9\") ~ price/(1.1),\n", + " str_detect(package, \"1/2\") ~ price*2,\n", + " TRUE ~ price))\n", + "\n", + "# Relocate column positions\n", + "new_pumpkins <- new_pumpkins %>% \n", + " relocate(month, .before = variety)\n", + "\n", + "\n", + "# Display the first 5 rows\n", + "new_pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "X0wU3gQvtd9f" + } + }, + { + "cell_type": "markdown", + "source": [ + "చాలా బాగుంది!👌 ఇప్పుడు మీకు ఒక శుభ్రమైన, క్రమబద్ధమైన డేటా సెట్ ఉంది, దానిపై మీరు మీ కొత్త రిగ్రెషన్ మోడల్‌ను నిర్మించవచ్చు!\n", + "\n", + "ఒక స్కాటర్ ప్లాట్ కావాలా?\n" + ], + "metadata": { + "id": "UpaIwaxqth82" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Set theme\n", + "theme_set(theme_light())\n", + "\n", + "# Make a scatter plot of month and price\n", + "new_pumpkins %>% \n", + " ggplot(mapping = aes(x = month, y = price)) +\n", + " geom_point(size = 1.6)\n" + ], + "outputs": [], + "metadata": { + "id": "DXgU-j37tl5K" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఒక స్కాటర్ ప్లాట్ మనకు ఆగస్టు నుండి డిసెంబర్ వరకు మాత్రమే నెలల డేటా ఉందని గుర్తు చేస్తుంది. రేఖీయంగా నిర్ణయాలు తీసుకోవడానికి మనకు ఎక్కువ డేటా అవసరం కావచ్చు.\n", + "\n", + "మళ్లీ మన మోడలింగ్ డేటాను చూద్దాం:\n" + ], + "metadata": { + "id": "Ve64wVbwtobI" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Display first 5 rows\n", + "new_pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "HFQX2ng1tuSJ" + } + }, + { + "cell_type": "markdown", + "source": [ + "మనం `city` లేదా `package` కాలమ్స్, ఇవి character టైపు ఉన్నవి, ఆధారంగా ఒక పంప్కిన్ యొక్క `price` ను అంచనా వేయాలనుకుంటే ఏమవుతుంది? లేదా మరింత సులభంగా, ఉదాహరణకు `package` మరియు `price` మధ్య (ఇరువురి ఇన్‌పుట్లు సంఖ్యాత్మకంగా ఉండాలని అవసరం ఉన్న) సంబంధాన్ని ఎలా కనుగొనగలం? 🤷🤷\n", + "\n", + "మిషన్ లెర్నింగ్ మోడల్స్ టెక్స్ట్ విలువల కంటే సంఖ్యాత్మక లక్షణాలతో ఉత్తమంగా పనిచేస్తాయి, కాబట్టి సాధారణంగా మీరు వర్గీకరణ లక్షణాలను సంఖ్యాత్మక ప్రాతినిధ్యాలలోకి మార్చాలి.\n", + "\n", + "దీని అర్థం ఏమిటంటే, మోడల్ సమర్థవంతంగా ఉపయోగించుకునేందుకు మన ప్రిడిక్టర్లను పునఃరూపకల్పన చేయడానికి ఒక మార్గాన్ని కనుగొనాలి, దీనిని `feature engineering` అని పిలుస్తారు.\n" + ], + "metadata": { + "id": "7hsHoxsStyjJ" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 3. మోడలింగ్ కోసం డేటాను ప్రీప్రాసెసింగ్ చేయడం రిసిపీలతో 👩‍🍳👨‍🍳\n", + "\n", + "మోడల్‌ను సమర్థవంతంగా ఉపయోగించడానికి ప్రిడిక్టర్ విలువలను పునఃరూపకల్పన చేసే కార్యకలాపాలను `ఫీచర్ ఇంజనీరింగ్` అని పిలుస్తారు.\n", + "\n", + "వివిధ మోడల్స్‌కు వేర్వేరు ప్రీప్రాసెసింగ్ అవసరాలు ఉంటాయి. ఉదాహరణకు, లీస్ట్ స్క్వేర్‌లు `కేటగిరికల్ వేరియబుల్స్` ను ఎన్‌కోడ్ చేయడం అవసరం, ఉదాహరణకు నెల, రకం మరియు city_name. ఇది సాదారణంగా `కేటగిరికల్ విలువల`తో ఉన్న కాలమ్‌ను ఒకటి లేదా అంతకంటే ఎక్కువ `సంఖ్యాత్మక కాలమ్స్` గా మార్చడం, అవి అసలు కాలమ్ స్థానాన్ని తీసుకుంటాయి.\n", + "\n", + "ఉదాహరణకు, మీ డేటాలో క్రింది కేటగిరికల్ ఫీచర్ ఉంటుందని అనుకోండి:\n", + "\n", + "| city |\n", + "|:-------:|\n", + "| Denver |\n", + "| Nairobi |\n", + "| Tokyo |\n", + "\n", + "ప్రతి కేటగిరీకి ప్రత్యేకమైన పూర్తి సంఖ్య విలువను ప్రతిస్థాపించడానికి *ఆర్డినల్ ఎన్‌కోడింగ్* ను మీరు వర్తింపజేయవచ్చు, ఇలా:\n", + "\n", + "| city |\n", + "|:----:|\n", + "| 0 |\n", + "| 1 |\n", + "| 2 |\n", + "\n", + "మరి మనం కూడా మన డేటాకు ఇదే చేస్తాము!\n", + "\n", + "ఈ విభాగంలో, మేము మరో అద్భుతమైన Tidymodels ప్యాకేజీని పరిశీలిస్తాము: [recipes](https://tidymodels.github.io/recipes/) - ఇది మీ డేటాను **మోడల్ శిక్షణకు ముందు** ప్రీప్రాసెస్ చేయడంలో సహాయపడటానికి రూపొందించబడింది. ఒక రిసిపీ అనేది మోడలింగ్ కోసం డేటాను సిద్ధం చేయడానికి ఏ దశలను వర్తించాలో నిర్వచించే ఒక ఆబ్జెక్ట్.\n", + "\n", + "ఇప్పుడు, ప్రిడిక్టర్ కాలమ్స్‌లోని అన్ని ఆబ్జర్వేషన్లకు ప్రత్యేకమైన పూర్తి సంఖ్యను ప్రతిస్థాపించడం ద్వారా మన డేటాను మోడలింగ్ కోసం సిద్ధం చేసే రిసిపీని సృష్టిద్దాం:\n" + ], + "metadata": { + "id": "AD5kQbcvt3Xl" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Specify a recipe\n", + "pumpkins_recipe <- recipe(price ~ ., data = new_pumpkins) %>% \n", + " step_integer(all_predictors(), zero_based = TRUE)\n", + "\n", + "\n", + "# Print out the recipe\n", + "pumpkins_recipe" + ], + "outputs": [], + "metadata": { + "id": "BNaFKXfRt9TU" + } + }, + { + "cell_type": "markdown", + "source": [ + "అద్భుతం! 👏 మనం కేవలం ఒక అవుట్‌కమ్ (ధర) మరియు దాని అనుగుణమైన ప్రిడిక్టర్లను నిర్దేశించే మొదటి రెసిపీని సృష్టించాము, మరియు అన్ని ప్రిడిక్టర్ కాలమ్స్‌ను ఒక సెట్ ఇంటిజర్లుగా ఎన్‌కోడ్ చేయాలని కూడా పేర్కొన్నాము 🙌! దీన్ని త్వరగా విభజిద్దాం:\n", + "\n", + "- `recipe()` కాల్‌ను ఒక ఫార్ములాతో ఉపయోగించడం వలన రెసిపీకి వేరియబుల్స్ యొక్క *పాత్రలు* తెలియజేస్తుంది, `new_pumpkins` డేటాను సూచనగా తీసుకుంటూ. ఉదాహరణకు, `price` కాలమ్‌కు `outcome` పాత్ర కేటాయించబడింది, మిగతా కాలమ్స్‌కు `predictor` పాత్ర కేటాయించబడింది.\n", + "\n", + "- `step_integer(all_predictors(), zero_based = TRUE)` అన్నది అన్ని ప్రిడిక్టర్లను 0 నుండి ప్రారంభమయ్యే సంఖ్యలతో ఒక సెట్ ఇంటిజర్లుగా మార్చాలని సూచిస్తుంది.\n", + "\n", + "మీకు ఇలా అనిపించవచ్చు: \"ఇది చాలా చల్లగా ఉంది!! కానీ నేను రెసిపీలు నిజంగా నేను ఆశిస్తున్న విధంగా పనిచేస్తున్నాయా అని నిర్ధారించుకోవాలంటే? 🤔\"\n", + "\n", + "అది అద్భుతమైన ఆలోచన! మీరు మీ రెసిపీని నిర్వచించిన తర్వాత, డేటాను ప్రీప్రాసెస్ చేయడానికి అవసరమైన పారామీటర్లను అంచనా వేయవచ్చు, మరియు ఆపై ప్రాసెస్ చేసిన డేటాను తీసుకోవచ్చు. మీరు సాధారణంగా Tidymodels ఉపయోగించినప్పుడు ఇది అవసరం ఉండదు (మనం కొద్దిసేపట్లో సాధారణ పద్ధతిని చూస్తాము -> `workflows`), కానీ రెసిపీలు మీరు ఆశిస్తున్న విధంగా పనిచేస్తున్నాయా అని నిర్ధారించుకోవడానికి sanity check చేయాలనుకుంటే ఇది ఉపయోగపడుతుంది.\n", + "\n", + "దానికి, మీరు రెండు మరిన్ని క్రియలు అవసరం: `prep()` మరియు `bake()` మరియు ఎప్పుడూ లాగా, మన చిన్న R స్నేహితులు [`Allison Horst`](https://github.com/allisonhorst/stats-illustrations) మీకు దీన్ని బాగా అర్థం చేసుకోవడంలో సహాయపడతారు!\n", + "\n", + "

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

Artwork by @allison_horst
\n" + ], + "metadata": { + "id": "KEiO0v7kuC9O" + } + }, + { + "cell_type": "markdown", + "source": [ + "[`prep()`](https://recipes.tidymodels.org/reference/prep.html): శిక్షణ సెట్ నుండి అవసరమైన పారామితులను అంచనా వేస్తుంది, ఇవి తర్వాత ఇతర డేటా సెట్‌లపై వర్తించవచ్చు. ఉదాహరణకు, ఒక నిర్దిష్ట predictor కాలమ్ కోసం, ఏ పరిశీలనకు integer 0 లేదా 1 లేదా 2 మొదలైనవి కేటాయించబడతాయి.\n", + "\n", + "[`bake()`](https://recipes.tidymodels.org/reference/bake.html): ఒక prepped రెసిపీ తీసుకుని ఆపరేషన్లను ఏదైనా డేటా సెట్‌పై వర్తింపజేస్తుంది.\n", + "\n", + "అంటే, మనం మన రెసిపీలను prep చేసి bake చేయాలి, తద్వారా నిజంగా అర్థమవుతుంది, predictor కాలమ్‌లు మొదట encode చేయబడతాయని, ఆ తర్వాత మోడల్ ఫిట్ అవుతుందని.\n" + ], + "metadata": { + "id": "Q1xtzebuuTCP" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Prep the recipe\n", + "pumpkins_prep <- prep(pumpkins_recipe)\n", + "\n", + "# Bake the recipe to extract a preprocessed new_pumpkins data\n", + "baked_pumpkins <- bake(pumpkins_prep, new_data = NULL)\n", + "\n", + "# Print out the baked data set\n", + "baked_pumpkins %>% \n", + " slice_head(n = 10)" + ], + "outputs": [], + "metadata": { + "id": "FGBbJbP_uUUn" + } + }, + { + "cell_type": "markdown", + "source": [ + "వూ-హూ!🥳 ప్రాసెస్ చేసిన డేటా `baked_pumpkins` లోని అన్ని ప్రిడిక్టర్లు ఎన్‌కోడ్ చేయబడ్డాయి, ఇది నిజంగా మా రెసిపీగా నిర్వచించిన ప్రీప్రాసెసింగ్ దశలు ఆశించినట్లుగా పనిచేస్తాయని నిర్ధారిస్తుంది. ఇది మీకు చదవడం కష్టం చేస్తుంది కానీ Tidymodels కోసం చాలా అర్థవంతంగా ఉంటుంది! ఏ ఆబ్జర్వేషన్ అనేది సంబంధిత ఇంటిజర్‌కు మ్యాప్ చేయబడిందో కనుగొనడానికి కొంత సమయం తీసుకోండి.\n", + "\n", + "ఇది కూడా చెప్పదగ్గ విషయం ఏమిటంటే `baked_pumpkins` అనేది మేము లెక్కింపులు చేయగల డేటా ఫ్రేమ్.\n", + "\n", + "ఉదాహరణకు, మీ డేటా రెండు పాయింట్ల మధ్య మంచి సహసంబంధం (correlation) కనుగొనడానికి ప్రయత్నిద్దాం, తద్వారా మంచి ప్రిడిక్టివ్ మోడల్ నిర్మించవచ్చు. దీని కోసం మేము `cor()` ఫంక్షన్‌ను ఉపయోగిస్తాము. ఫంక్షన్ గురించి మరింత తెలుసుకోవడానికి `?cor()` టైప్ చేయండి.\n" + ], + "metadata": { + "id": "1dvP0LBUueAW" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Find the correlation between the city_name and the price\n", + "cor(baked_pumpkins$city_name, baked_pumpkins$price)\n", + "\n", + "# Find the correlation between the package and the price\n", + "cor(baked_pumpkins$package, baked_pumpkins$price)\n" + ], + "outputs": [], + "metadata": { + "id": "3bQzXCjFuiSV" + } + }, + { + "cell_type": "markdown", + "source": [ + "అవసరమైనంతవరకు, సిటీ మరియు ధర మధ్య బలహీన సంబంధం మాత్రమే ఉంది. అయితే ప్యాకేజీ మరియు దాని ధర మధ్య కొంత మెరుగైన సంబంధం ఉంది. అది అర్థం అవుతుంది కదా? సాధారణంగా, ఉత్పత్తి పెట్టె పెద్దదైతే, ధర ఎక్కువగా ఉంటుంది.\n", + "\n", + "మనం ఇదే సమయంలో, `corrplot` ప్యాకేజీ ఉపయోగించి అన్ని కాలమ్స్ యొక్క సంబంధ మ్యాట్రిక్స్‌ను కూడా విజువలైజ్ చేయడానికి ప్రయత్నిద్దాం.\n" + ], + "metadata": { + "id": "BToPWbgjuoZw" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load the corrplot package\n", + "library(corrplot)\n", + "\n", + "# Obtain correlation matrix\n", + "corr_mat <- cor(baked_pumpkins %>% \n", + " # Drop columns that are not really informative\n", + " select(-c(low_price, high_price)))\n", + "\n", + "# Make a correlation plot between the variables\n", + "corrplot(corr_mat, method = \"shade\", shade.col = NA, tl.col = \"black\", tl.srt = 45, addCoef.col = \"black\", cl.pos = \"n\", order = \"original\")" + ], + "outputs": [], + "metadata": { + "id": "ZwAL3ksmutVR" + } + }, + { + "cell_type": "markdown", + "source": [ + "🤩🤩 చాలా మెరుగైంది.\n", + "\n", + "ఇప్పుడు ఈ డేటా గురించి అడగవలసిన మంచి ప్రశ్న: '`నిర్దిష్టమైన పంప్కిన్ ప్యాకేజీకి నేను ఎంత ధర ఆశించవచ్చు?`' మనం దీని మీద నేరుగా దృష్టి సారిద్దాం!\n", + "\n", + "> గమనిక: మీరు **`bake()`** ద్వారా ప్రిపేర్ చేసిన రెసిపీ **`pumpkins_prep`** ను **`new_data = NULL`** తో ఉపయోగిస్తే, మీరు ప్రాసెస్ చేసిన (అంటే ఎన్‌కోడ్ చేసిన) శిక్షణ డేటాను పొందుతారు. ఉదాహరణకు, మీకు మరో డేటా సెట్ ఉంటే, ఉదాహరణకు టెస్ట్ సెట్, మరియు మీరు ఒక రెసిపీ దానిని ఎలా ప్రీ-ప్రాసెస్ చేస్తుందో చూడాలనుకుంటే, మీరు సాదారణంగా **`pumpkins_prep`** ను **`new_data = test_set`** తో బేక్ చేస్తారు.\n", + "\n", + "## 4. లీనియర్ రిగ్రెషన్ మోడల్ నిర్మించండి\n", + "\n", + "

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

ఇన్ఫోగ్రాఫిక్ - దసాని మడిపల్లి
\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "YqXjLuWavNxW" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఇప్పుడు మనం ఒక రెసిపీని నిర్మించి, డేటా సరైన విధంగా ప్రీ-ప్రాసెస్ అవుతుందని నిజం చేసుకున్నాము, ఇప్పుడు మనం ఒక రిగ్రెషన్ మోడల్‌ను నిర్మిద్దాం ఈ ప్రశ్నకు సమాధానం చెప్పడానికి: `ఒక నిర్దిష్ట పంప్కిన్ ప్యాకేజీకి నేను ఎలాంటి ధర ఆశించవచ్చు?`\n", + "\n", + "#### శిక్షణ సెట్ ఉపయోగించి లీనియర్ రిగ్రెషన్ మోడల్‌ను శిక్షణ ఇవ్వండి\n", + "\n", + "మీకు ఇప్పటికే అర్థమై ఉండవచ్చు, *price* కాలమ్ `ఫలితం` వేరియబుల్ కాగా *package* కాలమ్ `పరిశీలన` వేరియబుల్.\n", + "\n", + "దీనిని చేయడానికి, ముందుగా డేటాను 80% శిక్షణకు మరియు 20% పరీక్ష సెట్‌కు విభజిస్తాము, ఆపై పరిశీలన కాలమ్‌ను ఒక సమూహం పూర్తి సంఖ్యలుగా ఎన్‌కోడ్ చేసే రెసిపీని నిర్వచిస్తాము, తరువాత మోడల్ స్పెసిఫికేషన్‌ను నిర్మిస్తాము. మనం రెసిపీని ప్రిప్ మరియు బేక్ చేయము ఎందుకంటే అది డేటాను ఆశించినట్లుగా ప్రీప్రాసెస్ చేస్తుందని మనకు ఇప్పటికే తెలుసు.\n" + ], + "metadata": { + "id": "Pq0bSzCevW-h" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "set.seed(2056)\n", + "# Split the data into training and test sets\n", + "pumpkins_split <- new_pumpkins %>% \n", + " initial_split(prop = 0.8)\n", + "\n", + "\n", + "# Extract training and test data\n", + "pumpkins_train <- training(pumpkins_split)\n", + "pumpkins_test <- testing(pumpkins_split)\n", + "\n", + "\n", + "\n", + "# Create a recipe for preprocessing the data\n", + "lm_pumpkins_recipe <- recipe(price ~ package, data = pumpkins_train) %>% \n", + " step_integer(all_predictors(), zero_based = TRUE)\n", + "\n", + "\n", + "\n", + "# Create a linear model specification\n", + "lm_spec <- linear_reg() %>% \n", + " set_engine(\"lm\") %>% \n", + " set_mode(\"regression\")" + ], + "outputs": [], + "metadata": { + "id": "CyoEh_wuvcLv" + } + }, + { + "cell_type": "markdown", + "source": [ + "చాలా బాగుంది! ఇప్పుడు మన దగ్గర ఒక రెసిపీ మరియు ఒక మోడల్ స్పెసిఫికేషన్ ఉన్నప్పుడు, వాటిని ఒక ఆబ్జెక్ట్‌గా బండిల్ చేయడానికి ఒక మార్గం కనుగొనాలి, ఇది మొదట డేటాను ప్రీప్రాసెస్ చేస్తుంది (ప్రీప్+బేక్ వెనుకనుండి), ప్రీప్రాసెస్ చేసిన డేటాపై మోడల్‌ను ఫిట్ చేస్తుంది మరియు పోస్ట్-ప్రాసెసింగ్ కార్యకలాపాలకు కూడా అనుమతిస్తుంది. మీ మనశ్శాంతికి ఇది ఎలా ఉంది!🤩\n", + "\n", + "Tidymodels లో, ఈ సౌకర్యవంతమైన ఆబ్జెక్ట్‌ను [`workflow`](https://workflows.tidymodels.org/) అని పిలుస్తారు మరియు ఇది మీ మోడలింగ్ భాగాలను సౌకర్యవంతంగా కలిగి ఉంటుంది! ఇది *Python* లో మనం *pipelines* అని పిలిచేది.\n", + "\n", + "కాబట్టి, అన్ని వాటిని ఒక workflow లో బండిల్ చేద్దాం!📦\n" + ], + "metadata": { + "id": "G3zF_3DqviFJ" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Hold modelling components in a workflow\n", + "lm_wf <- workflow() %>% \n", + " add_recipe(lm_pumpkins_recipe) %>% \n", + " add_model(lm_spec)\n", + "\n", + "# Print out the workflow\n", + "lm_wf" + ], + "outputs": [], + "metadata": { + "id": "T3olroU3v-WX" + } + }, + { + "cell_type": "markdown", + "source": [ + "👌 అదనంగా, ఒక వర్క్‌ఫ్లోను కూడా ఒక మోడల్‌ను సరిపోయే/శిక్షణ ఇవ్వగలిగే విధంగా చేయవచ్చు.\n" + ], + "metadata": { + "id": "zd1A5tgOwEPX" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Train the model\n", + "lm_wf_fit <- lm_wf %>% \n", + " fit(data = pumpkins_train)\n", + "\n", + "# Print the model coefficients learned \n", + "lm_wf_fit" + ], + "outputs": [], + "metadata": { + "id": "NhJagFumwFHf" + } + }, + { + "cell_type": "markdown", + "source": [ + "మోడల్ అవుట్పుట్ నుండి, మనం శిక్షణ సమయంలో నేర్చుకున్న గుణకాలను చూడవచ్చు. అవి నిజమైన మరియు అంచనా వేరియబుల్ మధ్య కనిష్ట మొత్తం లోపాన్ని ఇస్తున్న ఉత్తమ సరళి గుణకాలను సూచిస్తాయి.\n", + "\n", + "\n", + "#### పరీక్ష సెట్ ఉపయోగించి మోడల్ పనితీరును అంచనా వేయండి\n", + "\n", + "మోడల్ ఎలా పని చేసింది అనేది చూడాల్సిన సమయం 📏! మనం దీన్ని ఎలా చేస్తాము?\n", + "\n", + "ఇప్పుడు మేము మోడల్‌ను శిక్షణ ఇచ్చినందున, `parsnip::predict()` ఉపయోగించి test_set కోసం అంచనాలు చేయవచ్చు. ఆపై ఈ అంచనాలను నిజమైన లేబుల్ విలువలతో పోల్చి మోడల్ ఎంత బాగా (లేదా బాగా కాకపోవచ్చు!) పని చేస్తుందో అంచనా వేయవచ్చు.\n", + "\n", + "ముందుగా test set కోసం అంచనాలు చేయడం ప్రారంభిద్దాం, ఆపై ఆ కాలమ్స్‌ను test set కు బైండ్ చేద్దాం.\n" + ], + "metadata": { + "id": "_4QkGtBTwItF" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make predictions for the test set\n", + "predictions <- lm_wf_fit %>% \n", + " predict(new_data = pumpkins_test)\n", + "\n", + "\n", + "# Bind predictions to the test set\n", + "lm_results <- pumpkins_test %>% \n", + " select(c(package, price)) %>% \n", + " bind_cols(predictions)\n", + "\n", + "\n", + "# Print the first ten rows of the tibble\n", + "lm_results %>% \n", + " slice_head(n = 10)" + ], + "outputs": [], + "metadata": { + "id": "UFZzTG0gwTs9" + } + }, + { + "cell_type": "markdown", + "source": [ + "అవును, మీరు కేవలం ఒక మోడల్‌ను శిక్షణ ఇచ్చి దాన్ని ఉపయోగించి అంచనాలు చేసారు!🔮 ఇది ఎంత మంచిదో చూద్దాం, మోడల్ పనితీరును అంచనా వేయండి!\n", + "\n", + "Tidymodels లో, మనం దీన్ని `yardstick::metrics()` ఉపయోగించి చేస్తాము! లీనియర్ రిగ్రెషన్ కోసం, మనం క్రింది మెట్రిక్స్ పై దృష్టి పెట్టుదాం:\n", + "\n", + "- `Root Mean Square Error (RMSE)`: [MSE](https://en.wikipedia.org/wiki/Mean_squared_error) యొక్క వర్గమూలం. ఇది లేబుల్ యొక్క అదే యూనిట్‌లో (ఈ సందర్భంలో, పంప్కిన్ ధర) ఒక సార్వత్రిక మెట్రిక్‌ను ఇస్తుంది. విలువ తక్కువగా ఉంటే, మోడల్ బాగుంటుంది (సాధారణంగా, ఇది అంచనాలు తప్పు అయ్యే సగటు ధరను సూచిస్తుంది!)\n", + "\n", + "- `Coefficient of Determination (సాధారణంగా R-squared లేదా R2 గా పిలవబడుతుంది)`: ఇది ఒక సంబంధిత మెట్రిక్, ఇందులో విలువ ఎక్కువగా ఉంటే, మోడల్ బాగా సరిపోతుంది. సారాంశంగా, ఈ మెట్రిక్ అంచనా వేయబడిన మరియు వాస్తవ లేబుల్ విలువల మధ్య వ్యత్యాసం ఎంత భాగాన్ని మోడల్ వివరిస్తుందో సూచిస్తుంది.\n" + ], + "metadata": { + "id": "0A5MjzM7wW9M" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Evaluate performance of linear regression\n", + "metrics(data = lm_results,\n", + " truth = price,\n", + " estimate = .pred)" + ], + "outputs": [], + "metadata": { + "id": "reJ0UIhQwcEH" + } + }, + { + "cell_type": "markdown", + "source": [ + "మోడల్ పనితీరు ఇక్కడ ఉంది. ప్యాకేజ్ మరియు ధర యొక్క స్కాటర్ ప్లాట్‌ను విజువలైజ్ చేసి, అప్పుడు చేసిన అంచనాలను ఉపయోగించి ఉత్తమ సరిపోయే రేఖను ఓవర్‌లే చేయడం ద్వారా మేము మెరుగైన సూచన పొందగలమా చూద్దాం.\n", + "\n", + "దీనర్థం, ప్యాకేజ్ కాలమ్‌ను ఎన్‌కోడ్ చేయడానికి టెస్ట్ సెట్‌ను ప్రిప్ చేసి బేక్ చేయాలి, ఆపై దీన్ని మా మోడల్ చేసిన అంచనాలకు బైండ్ చేయాలి.\n" + ], + "metadata": { + "id": "fdgjzjkBwfWt" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Encode package column\n", + "package_encode <- lm_pumpkins_recipe %>% \n", + " prep() %>% \n", + " bake(new_data = pumpkins_test) %>% \n", + " select(package)\n", + "\n", + "\n", + "# Bind encoded package column to the results\n", + "lm_results <- lm_results %>% \n", + " bind_cols(package_encode %>% \n", + " rename(package_integer = package)) %>% \n", + " relocate(package_integer, .after = package)\n", + "\n", + "\n", + "# Print new results data frame\n", + "lm_results %>% \n", + " slice_head(n = 5)\n", + "\n", + "\n", + "# Make a scatter plot\n", + "lm_results %>% \n", + " ggplot(mapping = aes(x = package_integer, y = price)) +\n", + " geom_point(size = 1.6) +\n", + " # Overlay a line of best fit\n", + " geom_line(aes(y = .pred), color = \"orange\", size = 1.2) +\n", + " xlab(\"package\")\n", + " \n" + ], + "outputs": [], + "metadata": { + "id": "R0nw719lwkHE" + } + }, + { + "cell_type": "markdown", + "source": [ + "అద్భుతం! మీరు చూడగలిగినట్లుగా, లీనియర్ రిగ్రెషన్ మోడల్ ఒక ప్యాకేజీ మరియు దాని సంబంధిత ధర మధ్య సంబంధాన్ని బాగా సాధారణీకరించదు.\n", + "\n", + "🎃 అభినందనలు, మీరు కొన్ని రకాల పంప్కిన్ల ధరను అంచనా వేయడంలో సహాయపడగల మోడల్‌ను సృష్టించారు. మీ సెలవుల పంప్కిన్ ప్యాచ్ అందంగా ఉంటుంది. కానీ మీరు బహుశా మెరుగైన మోడల్‌ను సృష్టించవచ్చు!\n", + "\n", + "## 5. పాలినోమియల్ రిగ్రెషన్ మోడల్‌ను నిర్మించండి\n", + "\n", + "

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

దాసాని మడిపల్లి ద్వారా ఇన్ఫోగ్రాఫిక్
\n" + ], + "metadata": { + "id": "HOCqJXLTwtWI" + } + }, + { + "cell_type": "markdown", + "source": [ + "కొన్నిసార్లు మన డేటాకు రేఖీయ సంబంధం ఉండకపోవచ్చు, కానీ మనం ఇంకా ఫలితాన్ని అంచనా వేయాలనుకుంటాము. పాలినోమియల్ రిగ్రెషన్ మనకు మరింత సంక్లిష్టమైన రేఖీయేతర సంబంధాల కోసం అంచనాలు చేయడంలో సహాయపడుతుంది.\n", + "\n", + "ఉదాహరణకు మన పంప్కిన్ డేటా సెట్‌లో ప్యాకేజీ మరియు ధర మధ్య సంబంధాన్ని తీసుకోండి. కొన్ని సార్లు వేరియబుల్స్ మధ్య రేఖీయ సంబంధం ఉంటుంది - వాల్యూమ్ లో పెద్ద పంప్కిన్ ఉంటే, ధర ఎక్కువగా ఉంటుంది - కానీ కొన్ని సార్లు ఈ సంబంధాలను ఒక సమతలంగా లేదా సరళ రేఖగా చిత్రీకరించలేము.\n", + "\n", + "> ✅ ఇక్కడ [మరిన్ని ఉదాహరణలు](https://online.stat.psu.edu/stat501/lesson/9/9.8) ఉన్నాయి, ఇవి పాలినోమియల్ రిగ్రెషన్ ఉపయోగించవచ్చు\n", + ">\n", + "> గత ప్లాట్‌లో వేరైటీ మరియు ధర మధ్య సంబంధాన్ని మరోసారి చూడండి. ఈ స్కాటర్‌ప్లాట్ తప్పనిసరిగా సరళ రేఖ ద్వారా విశ్లేషించబడాలా? కావచ్చు కాదు. ఈ సందర్భంలో, మీరు పాలినోమియల్ రిగ్రెషన్ ప్రయత్నించవచ్చు.\n", + ">\n", + "> ✅ పాలినోమియల్స్ అనేవి ఒకటి లేదా ఎక్కువ వేరియబుల్స్ మరియు కోఎఫిషియెంట్లతో కూడిన గణితీయ వ్యక్తీకరణలు\n", + "\n", + "#### శిక్షణ సెట్ ఉపయోగించి పాలినోమియల్ రిగ్రెషన్ మోడల్ శిక్షణ ఇవ్వండి\n", + "\n", + "పాలినోమియల్ రిగ్రెషన్ రేఖీయేతర డేటాకు మెరుగైన సరిపోయేలా *వంకర రేఖ* సృష్టిస్తుంది.\n", + "\n", + "పాలినోమియల్ మోడల్ అంచనాలు చేయడంలో మెరుగ్గా పనిచేస్తుందో లేదో చూద్దాం. మనం ముందుగా చేసినట్లే కొంత సమానమైన ప్రక్రియను అనుసరిద్దాం:\n", + "\n", + "- మన డేటాను మోడలింగ్‌కు సిద్ధం చేయడానికి చేయవలసిన ప్రీప్రాసెసింగ్ దశలను నిర్దేశించే ఒక రెసిపీ సృష్టించండి, అంటే: ప్రిడిక్టర్లను ఎంకోడ్ చేయడం మరియు డిగ్రీ *n* పాలినోమియల్స్ లెక్కించడం\n", + "\n", + "- ఒక మోడల్ స్పెసిఫికేషన్ తయారు చేయండి\n", + "\n", + "- రెసిపీ మరియు మోడల్ స్పెసిఫికేషన్‌ను ఒక వర్క్‌ఫ్లోలో బండిల్ చేయండి\n", + "\n", + "- వర్క్‌ఫ్లోను ఫిట్ చేసి మోడల్ సృష్టించండి\n", + "\n", + "- టెస్ట్ డేటాపై మోడల్ పనితీరును అంచనా వేయండి\n", + "\n", + "మనం వెంటనే ప్రారంభిద్దాం!\n" + ], + "metadata": { + "id": "VcEIpRV9wzYr" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Specify a recipe\r\n", + "poly_pumpkins_recipe <-\r\n", + " recipe(price ~ package, data = pumpkins_train) %>%\r\n", + " step_integer(all_predictors(), zero_based = TRUE) %>% \r\n", + " step_poly(all_predictors(), degree = 4)\r\n", + "\r\n", + "\r\n", + "# Create a model specification\r\n", + "poly_spec <- linear_reg() %>% \r\n", + " set_engine(\"lm\") %>% \r\n", + " set_mode(\"regression\")\r\n", + "\r\n", + "\r\n", + "# Bundle recipe and model spec into a workflow\r\n", + "poly_wf <- workflow() %>% \r\n", + " add_recipe(poly_pumpkins_recipe) %>% \r\n", + " add_model(poly_spec)\r\n", + "\r\n", + "\r\n", + "# Create a model\r\n", + "poly_wf_fit <- poly_wf %>% \r\n", + " fit(data = pumpkins_train)\r\n", + "\r\n", + "\r\n", + "# Print learned model coefficients\r\n", + "poly_wf_fit\r\n", + "\r\n", + " " + ], + "outputs": [], + "metadata": { + "id": "63n_YyRXw3CC" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### మోడల్ పనితీరు అంచనా వేయండి\n", + "\n", + "👏👏మీరు ఒక పాలినోమియల్ మోడల్ నిర్మించారు, ఇప్పుడు టెస్ట్ సెట్‌పై అంచనాలు చేద్దాం!\n" + ], + "metadata": { + "id": "-LHZtztSxDP0" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make price predictions on test data\r\n", + "poly_results <- poly_wf_fit %>% predict(new_data = pumpkins_test) %>% \r\n", + " bind_cols(pumpkins_test %>% select(c(package, price))) %>% \r\n", + " relocate(.pred, .after = last_col())\r\n", + "\r\n", + "\r\n", + "# Print the results\r\n", + "poly_results %>% \r\n", + " slice_head(n = 10)" + ], + "outputs": [], + "metadata": { + "id": "YUFpQ_dKxJGx" + } + }, + { + "cell_type": "markdown", + "source": [ + "వూ-హూ, మోడల్ టెస్ట్_సెట్ పై ఎలా ప్రదర్శించిందో `yardstick::metrics()` ఉపయోగించి అంచనా వేయండి.\n" + ], + "metadata": { + "id": "qxdyj86bxNGZ" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "metrics(data = poly_results, truth = price, estimate = .pred)" + ], + "outputs": [], + "metadata": { + "id": "8AW5ltkBxXDm" + } + }, + { + "cell_type": "markdown", + "source": [ + "🤩🤩 చాలా మెరుగైన పనితీరు.\n", + "\n", + "`rmse` సుమారు 7 నుండి సుమారు 3 కి తగ్గింది, ఇది వాస్తవ ధర మరియు అంచనా ధర మధ్య లోపం తగ్గిన సూచన. మీరు దీన్ని *సడలించిన* అర్థంలో అర్థం చేసుకోవచ్చు అంటే సగటున, తప్పు అంచనాలు సుమారు \\$3 తప్పు ఉంటాయి. `rsq` సుమారు 0.4 నుండి 0.8 కి పెరిగింది.\n", + "\n", + "ఈ అన్ని ప్రమాణాలు పోలినామియల్ మోడల్ లీనియర్ మోడల్ కంటే చాలా మెరుగ్గా పనిచేస్తుందని సూచిస్తున్నాయి. మంచి పని!\n", + "\n", + "ఇప్పుడు దీన్ని విజువలైజ్ చేయగలమో చూద్దాం!\n" + ], + "metadata": { + "id": "6gLHNZDwxYaS" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Bind encoded package column to the results\r\n", + "poly_results <- poly_results %>% \r\n", + " bind_cols(package_encode %>% \r\n", + " rename(package_integer = package)) %>% \r\n", + " relocate(package_integer, .after = package)\r\n", + "\r\n", + "\r\n", + "# Print new results data frame\r\n", + "poly_results %>% \r\n", + " slice_head(n = 5)\r\n", + "\r\n", + "\r\n", + "# Make a scatter plot\r\n", + "poly_results %>% \r\n", + " ggplot(mapping = aes(x = package_integer, y = price)) +\r\n", + " geom_point(size = 1.6) +\r\n", + " # Overlay a line of best fit\r\n", + " geom_line(aes(y = .pred), color = \"midnightblue\", size = 1.2) +\r\n", + " xlab(\"package\")\r\n" + ], + "outputs": [], + "metadata": { + "id": "A83U16frxdF1" + } + }, + { + "cell_type": "markdown", + "source": [ + "మీ డేటాకు బాగా సరిపోయే వంకర రేఖను మీరు చూడవచ్చు! 🤩\n", + "\n", + "`geom_smooth` కు ఈ విధంగా ఒక పాలినోమియల్ సూత్రాన్ని పంపించడం ద్వారా మీరు దీన్ని మరింత మృదువుగా చేయవచ్చు:\n" + ], + "metadata": { + "id": "4U-7aHOVxlGU" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make a scatter plot\r\n", + "poly_results %>% \r\n", + " ggplot(mapping = aes(x = package_integer, y = price)) +\r\n", + " geom_point(size = 1.6) +\r\n", + " # Overlay a line of best fit\r\n", + " geom_smooth(method = lm, formula = y ~ poly(x, degree = 4), color = \"midnightblue\", size = 1.2, se = FALSE) +\r\n", + " xlab(\"package\")" + ], + "outputs": [], + "metadata": { + "id": "5vzNT0Uexm-w" + } + }, + { + "cell_type": "markdown", + "source": [ + "సాఫ్ట్ వంకరలా!🤩\n", + "\n", + "కొత్త అంచనాను ఇలా చేయవచ్చు:\n" + ], + "metadata": { + "id": "v9u-wwyLxq4G" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make a hypothetical data frame\r\n", + "hypo_tibble <- tibble(package = \"bushel baskets\")\r\n", + "\r\n", + "# Make predictions using linear model\r\n", + "lm_pred <- lm_wf_fit %>% predict(new_data = hypo_tibble)\r\n", + "\r\n", + "# Make predictions using polynomial model\r\n", + "poly_pred <- poly_wf_fit %>% predict(new_data = hypo_tibble)\r\n", + "\r\n", + "# Return predictions in a list\r\n", + "list(\"linear model prediction\" = lm_pred, \r\n", + " \"polynomial model prediction\" = poly_pred)\r\n" + ], + "outputs": [], + "metadata": { + "id": "jRPSyfQGxuQv" + } + }, + { + "cell_type": "markdown", + "source": [ + "`polynomial model` అంచనా అర్థం చేసుకోవచ్చు, ఎందుకంటే `price` మరియు `package` యొక్క scatter plots ఉన్నాయి! మరియు, ఇది గత మోడల్ కంటే మెరుగైన మోడల్ అయితే, అదే డేటాను చూసి, మీరు ఈ ఎక్కువ ఖర్చైన పంప్కిన్ల కోసం బడ్జెట్ చేయాలి!\n", + "\n", + "🏆 బాగుంది! మీరు ఒక పాఠంలో రెండు regression మోడల్స్ సృష్టించారు. regression పై చివరి విభాగంలో, మీరు వర్గాలను నిర్ణయించడానికి logistic regression గురించి నేర్చుకుంటారు.\n", + "\n", + "## **🚀సవాలు**\n", + "\n", + "ఈ నోట్‌బుక్‌లో వివిధ వేరియబుల్స్‌ను పరీక్షించి చూడండి, correlation మోడల్ ఖచ్చితత్వానికి ఎలా అనుగుణంగా ఉందో తెలుసుకోండి.\n", + "\n", + "## [**పాఠం తర్వాత క్విజ్**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/)\n", + "\n", + "## **సమీక్ష & స్వీయ అధ్యయనం**\n", + "\n", + "ఈ పాఠంలో మనం Linear Regression గురించి నేర్చుకున్నాము. Regression యొక్క ఇతర ముఖ్యమైన రకాలు కూడా ఉన్నాయి. Stepwise, Ridge, Lasso మరియు Elasticnet సాంకేతికతల గురించి చదవండి. మరింత తెలుసుకోవడానికి మంచి కోర్సు [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).\n", + "\n", + "మీరు అద్భుతమైన Tidymodels ఫ్రేమ్‌వర్క్‌ను ఎలా ఉపయోగించాలో మరింత తెలుసుకోవాలనుకుంటే, దయచేసి క్రింది వనరులను చూడండి:\n", + "\n", + "- Tidymodels వెబ్‌సైట్: [Tidymodels తో ప్రారంభించండి](https://www.tidymodels.org/start/)\n", + "\n", + "- Max Kuhn మరియు Julia Silge, [*Tidy Modeling with R*](https://www.tmwr.org/)*.*\n", + "\n", + "###### **ధన్యవాదాలు:**\n", + "\n", + "[Allison Horst](https://twitter.com/allison_horst?lang=en) R ను మరింత ఆహ్లాదకరంగా మరియు ఆకర్షణీయంగా చేసే అద్భుతమైన చిత్రణలను సృష్టించినందుకు. ఆమె మరిన్ని చిత్రణలను ఆమె [గ్యాలరీ](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM) లో చూడండి.\n" + ], + "metadata": { + "id": "8zOLOWqMxzk5" + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/te/2-Regression/3-Linear/solution/notebook.ipynb b/translations/te/2-Regression/3-Linear/solution/notebook.ipynb new file mode 100644 index 000000000..8825e36af --- /dev/null +++ b/translations/te/2-Regression/3-Linear/solution/notebook.ipynb @@ -0,0 +1,1117 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## లీనియర్ మరియు పాలినోమియల్ రిగ్రెషన్ పంప్కిన్ ధరల కోసం - పాఠం 3\n", + "\n", + "అవసరమైన లైబ్రరీలు మరియు డేటాసెట్‌ను లోడ్ చేయండి. డేటాను ఒక డేటాఫ్రేమ్‌గా మార్చండి, ఇందులో డేటా యొక్క ఉపసమితి ఉంటుంది:\n", + "\n", + "- బషెల్ ద్వారా ధర పెట్టబడిన పంప్కిన్లను మాత్రమే పొందండి\n", + "- తేదీని నెలగా మార్చండి\n", + "- ధరను గరిష్ట మరియు కనిష్ట ధరల సగటుగా లెక్కించండి\n", + "- ధరను బషెల్ పరిమాణం ప్రకారం ప్రతిబింబించేలా మార్చండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade Date \\\n", + "0 BALTIMORE NaN 24 inch bins NaN NaN NaN 4/29/17 \n", + "1 BALTIMORE NaN 24 inch bins NaN NaN NaN 5/6/17 \n", + "2 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "3 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "4 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 11/5/16 \n", + "\n", + " Low Price High Price Mostly Low ... Unit of Sale Quality Condition \\\n", + "0 270.0 280.0 270.0 ... NaN NaN NaN \n", + "1 270.0 280.0 270.0 ... NaN NaN NaN \n", + "2 160.0 160.0 160.0 ... NaN NaN NaN \n", + "3 160.0 160.0 160.0 ... NaN NaN NaN \n", + "4 90.0 100.0 90.0 ... NaN NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 Unnamed: 25 \n", + "0 NaN NaN NaN E NaN NaN NaN \n", + "1 NaN NaN NaN E NaN NaN NaN \n", + "2 NaN NaN NaN N NaN NaN NaN \n", + "3 NaN NaN NaN N NaN NaN NaN \n", + "4 NaN NaN NaN N NaN NaN NaN \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from datetime import datetime\n", + "\n", + "pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", + "pumpkins.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MonthDayOfYearVarietyCityPackageLow PriceHigh PricePrice
709267PIE TYPEBALTIMORE1 1/9 bushel cartons15.015.013.636364
719267PIE TYPEBALTIMORE1 1/9 bushel cartons18.018.016.363636
7210274PIE TYPEBALTIMORE1 1/9 bushel cartons18.018.016.363636
7310274PIE TYPEBALTIMORE1 1/9 bushel cartons17.017.015.454545
7410281PIE TYPEBALTIMORE1 1/9 bushel cartons15.015.013.636364
\n", + "
" + ], + "text/plain": [ + " Month DayOfYear Variety City Package Low Price \\\n", + "70 9 267 PIE TYPE BALTIMORE 1 1/9 bushel cartons 15.0 \n", + "71 9 267 PIE TYPE BALTIMORE 1 1/9 bushel cartons 18.0 \n", + "72 10 274 PIE TYPE BALTIMORE 1 1/9 bushel cartons 18.0 \n", + "73 10 274 PIE TYPE BALTIMORE 1 1/9 bushel cartons 17.0 \n", + "74 10 281 PIE TYPE BALTIMORE 1 1/9 bushel cartons 15.0 \n", + "\n", + " High Price Price \n", + "70 15.0 13.636364 \n", + "71 18.0 16.363636 \n", + "72 18.0 16.363636 \n", + "73 17.0 15.454545 \n", + "74 15.0 13.636364 " + ] + }, + "execution_count": 168, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n", + "\n", + "new_columns = ['Package', 'Variety', 'City Name', 'Month', 'Low Price', 'High Price', 'Date']\n", + "pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1)\n", + "\n", + "price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2\n", + "\n", + "month = pd.DatetimeIndex(pumpkins['Date']).month\n", + "day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)\n", + "\n", + "new_pumpkins = pd.DataFrame(\n", + " {'Month': month, \n", + " 'DayOfYear' : day_of_year, \n", + " 'Variety': pumpkins['Variety'], \n", + " 'City': pumpkins['City Name'], \n", + " 'Package': pumpkins['Package'], \n", + " 'Low Price': pumpkins['Low Price'],\n", + " 'High Price': pumpkins['High Price'], \n", + " 'Price': price})\n", + "\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/1.1\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price*2\n", + "\n", + "new_pumpkins.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ఒక స్కాటర్ప్లాట్ మనకు ఆగస్టు నుండి డిసెంబర్ వరకు మాత్రమే నెలల డేటా ఉందని గుర్తుచేస్తుంది. రేఖీయంగా నిర్ణయాలు తీసుకోవడానికి మనకు ఎక్కువ డేటా అవసరం కావచ్చు.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAkT0lEQVR4nO3dfXRV9Z3v8fc3EB7kYcAQA+Wh0IZSUWLqzWVARi+W+lQdodXOtHcQZ41dOGumc1tn5graXqc67Ywybe2009Urtb3F2mnrkhYVtEIj1NoRNTAQEFQyhRpoCBihgEJIyPf+cXZiHs5Jzsbss0/O/rzWOivnfM/Z53zdhm9+57d/D+buiIhIchTFnYCIiOSWCr+ISMKo8IuIJIwKv4hIwqjwi4gkzOC4E8jGuHHjfOrUqXGnISIyoGzZsuUNdy/tHh8QhX/q1KnU1NTEnYaIyIBiZr9NF1dXj4hIwqjwi4gkjAq/iEjCqPCLiCSMCr+ISMKo8EuHphPNbK8/StOJ5rhTEZEIDYjhnBK9x7YdYNnqWoqLimhpa2PFDRVcXzkx7rREJAJq8QtNJ5pZtrqWUy1tHG9u5VRLG7evrlXLX6RAqfAL+4+cpLio669CcVER+4+cjCkjEYmSCr8waexwWtrausRa2tqYNHZ4TBmJSJRU+IWSkUNZcUMFQwcb5xQPYuhgY8UNFZSMHBp3aiISARV+ASC1AaeBBT9FpGBFWvjNbJ+Z7TCzbWZWE8TONbMNZrYn+Dk2yhykb+0Xd5tb23j79BmaW3VxV6SQ5aLFf7m7V7p7VfB4OVDt7tOB6uCxxEgXd0WSJY6unoXAquD+KmBRDDlIJ7q4K5IsURd+B9ab2RYzWxrEyty9ASD4eV7EOUgf2i/uDisuYtTQwQwrLtLFXZECFvXM3Xnu/jszOw/YYGavZHtg8IdiKcCUKVOiyk8C11dOZF75OPYfOcmkscNV9EUKWKQtfnf/XfDzEPAzYDbQaGYTAIKfhzIcu9Ldq9y9qrS0x85hEoGSkUO5aPIYFX2RAhdZ4TezEWY2qv0+cCWwE3gcuDl42c3AY1HlICIiPUXZ1VMG/MzM2j/n393952b2EvCImd0CvA58IsIcRESkm8gKv7v/BrgoTbwJWBDV54qISO80c1dEJGFU+KVDzd4mvrb+VWr2NsWdiohESBuxCACLH9zMc3Wpgv+NZ+q4tLyEH3x6TsxZiUgU1OIXavY2dRT9dr+qa1LLX6RAqfALz+55I1RcRAY2FX7hsunjQsVFZGBT4ReqppVwaXlJl9il5SVUTSvJcISIDGQq/ALAjVWTGTKoiCGDjCGDivhE1eS4UxKRiKjwS8dGLKfPtHH6jHP6jDZiESlkKvyijVjOUvWugyx7dDvVuw7GnYpIKBrHL9qI5Sxcef8mXmt8C4Cf1OxnRtkInr5tfqw5iWRLLX7p2IhlyCBj6OBUP782YsmsetfBjqLf7tXGt9TylwFDhV8AqNn3JqfPOM2tqX7+mt++GXdKeWv9rsZQcZF8o8Iv1DUe56HNr3eJPfT869Q1Ho8po/x25cyyUHGRfKPCL2yrPxoqnnQLZo5nRtmILrEZZSNYMHN8TBmJhKOLu0Ll5DGh4gJP3zaf6l0HWb+rkStnlqnoy4ASeYvfzAaZ2X+a2drg8RfN7ICZbQtuH406B+ldedkolsztuqH9krlTKC8bFVNGA8OCmeO578aLVPSz1HSime31RzU/JA/kosX/WWA3MLpT7H53/0oOPluydM/CWSyZM5Vt9UepnDxGRV/61WPbDrBsdS3FRUW0tLWx4oYKrq+cGHdaiRVpi9/MJgHXAg9G+TnSP8rLRnFj1WQVfelX7TPDT7W0cby5lVMtmhket6i7er4O3A60dYt/xsxqzex7ZjY23YFmttTMasys5vDhwxGnKSJR0czw/BNZ4Tez64BD7r6l21PfBt4PVAINwFfTHe/uK929yt2rSktLo0pTRCKmmeH5J8oW/zzgejPbB/wY+LCZPezuje5+xt3bgO8AsyPMQURi1j4zfFhxEaOGDmZYcZFmhscssou77n4HcAeAmc0H/t7dF5vZBHdvCF72MWBnVDmISH64vnIi88rHsf/ISSaNHa6iH7M4xvGvMLNKwIF9wK0x5CAiOVYycqgKfp7ISeF3903ApuD+Tbn4TBERSU9LNoiIJIwKv4hIwqjwi4gkjAq/iEjCqPCLiCSMCr+ISMKo8EsHLZsbztLvv8AHv/AkS7//QtypDAh1jcd5tKZeO7vlAW3EIoCWzQ1r6vJ1HffXv/IGU5evY9+918aYUX67a82OLtt7Lpk7hXsWzooxo2RTi1+0bG5ImVr4avmnpz2d848Kv2jZ3JCerWsKFU867emcf1T4RcvmhnRZeUmoeNJpT+f8o8IvWjY3pJV//oeh4kmnPZ3zj7l73Dn0qaqqymtqauJOo+A1nWjWsrkhLP3+Czxb18Rl5SUq+lmoazyuPZ1zzMy2uHtVj7gKv4hIYcpU+NXVIyKSMJEXfjMbZGb/aWZrg8fnmtkGM9sT/Ey72brkniZwhfPlJ3Yy959/wZef0CZy2ViztZ5Pr3qJNVvr404l8SLv6jGzvwWqgNHufp2ZrQDedPd7zWw5MNbdl/X2HurqiZ4mcIXzvuXr6DwOqgj4jSZwZTTnnzZw8NjpjscTRg/h+TuviDGjZIilq8fMJgHXAg92Ci8EVgX3VwGLosxB+qYJXOF8+YmdtHWLtQVx6WnN1vouRR+g4dhptfxjFHVXz9eB26HLv5Oy9s3Wg5/npTvQzJaaWY2Z1Rw+fDjiNJNNE7jCWbvzYKh40q3dkeF8ZYhL9CIr/GZ2HXDI3beczfHuvtLdq9y9qrS0tJ+zk840gSuc6y4cHyqedNfNynC+MsQlelG2+OcB15vZPuDHwIfN7GGg0cwmAAQ/D0WYg2RBE7jC+fwfX9jjH05REJeeFl08mQmjh3SJTRg9hEUXT44pI8nJOH4zmw/8fXBx91+Apk4Xd89199t7O14Xd3NDE7jC+fITO1m78yDXXTheRT8La7bWs3bHQa6bNV5FP0dincDVrfCXAI8AU4DXgU+4+5u9Ha/CLyISXqbCn5P1+N19E7ApuN8ELMjF54qISE+auSsikjAFXfg1EzWcBzbu4Zp/fZYHNu6JO5UBQVsJykBVsFsvaiZqOOd/4UlOtqau9+xuOM7Xq/ew+0sfjTmr/KWtBGUgK8gWv2aihvPAxj0dRb/dyVZXyz8DbSUoA11BFn7NRA1nTW1DqHjSaStBGegKsvBrJmo4iyomhIonnbYSlIGuIAu/ZqKGc+vl0xk+2LrEhg82br18ekwZ5TdtJSgDXUHvwKWZqOE8sHEPa2obWFQxQUU/C9pKUPKdtl4U6WdqWEi+i3Xmrkih0XBhGcgKso9fJEoaLiwDnQq/dFj0zV/yvuXrWPTNX8adSl7TcOGzo5n0+UNdPQLA1OXrOu5vO3CCqcvXsU97yKY1aexwjje3dokdb27VcOFeqGssv6jFLxlb+Gr5p/dnK/8jVDzp1DWWf1T4hdoDJ0LFk+6VQ2+HiiedusbyT5R77g4zsxfNbLuZvWxmdwfxL5rZATPbFty0EljMKiaODBVPug+ed06oeNJpJn3+ibLF3wx82N0vAiqBq81sTvDc/e5eGdyejDAHycKav/kfoeJJ9/O/vTxUPOnaZ9IPHVzUcdNM+nhFVvg9pb2voDi45f9ssYT6o/KSLo8v7fZY5N2o2fcmza1tHbea3/a626pELNI+fjMbZGbbgEPABnd/IXjqM2ZWa2bfM7OxUeYgfavZ28RzdU1dYr+qa6Jmb1OGI5Jt6fdfCBVPOi1jnX8iLfzufsbdK4FJwGwzuxD4NvB+Ut0/DcBX0x1rZkvNrMbMag4fPhxlmon37J43QsWT7tm69H8QM8WTTstY55+cjOpx96OkNlu/2t0bgz8IbcB3gNkZjlnp7lXuXlVaWpqLNBPrsunjQsWT7rIM3WCZ4kmnZazzT5SjekrNbExwfzjwEeAVM+u8yPvHgJ1R5SDZqZqWvmBliifdyj//w1DxpMu0cqlWNI1PlC3+CcBGM6sFXiLVx78WWGFmO4L45cBtEeYgWfj7n2wNFU+6//nAr0PFk06/X/knsiUb3L0W+FCa+E1RfaacnQ27D4WKJ92Lvz0aKp50+v3KP5q5K1xx/nmh4kk3+71jQsWTTr9f+UeFX/jKn14cKp50/37rvFDxpNPvV/5R4RcA/mDYoF4fi7wb40cP6fJ4QrfHklsq/MLD/7GX35860yX2+1NnePg/9saUUX6r+Id1oeJJt2ZrPQePne4Sazh2mjVb62PKSLIq/Gb2ATOrNrOdweMKM/tCtKlJrjxW2xAqnnTHMqwmnCmedGt3HAwVl+hl2+L/DnAH0AIdI3Y+GVVSklsLKyaEiifd6Axri2WKJ911s8aHikv0si3857j7i91irWlfKQPO4kumpe3jX3zJtJgyym+1d6ffmSxTPOkWXTy5R5/+hNFDWHTx5JgykmwL/xtm9n6C1TXN7EZS6+xIgVjYbRu8hR/Stni9+ddPVnZ5/I1uj6Wr5++8gq//SQUfOf88vv4nFTx/5xVxp5Ro5t73Sslm9j5gJXAJcATYCyx2932RZheoqqrympqaXHxUItU1Hucj9z/bI/6L2y7TtPo0mk40M+++ZzjV8s7mIsOKi/j1sg9rjXnJK2a2xd2rusezmrnr7r8BPmJmI4Aid9d6qgWkt9UTVfh7at9K8BTvFP72rQRV+GUgyHZUzz+Z2Rh3f8vdj5vZWDP7UtTJSW5o9cRwtJWgDHTZ9vFfEyytDIC7HwG0V26BGDtiCIOKrEtsUJExdoQm2aTTvpVgEWCk/hFpK8G+1TUe59Gaem3AkgeyXaRtkJkNdfdm6FhmWb/lBWL/kZMUGXSewlVkqOuiF/9nzY6Ojh4PHl9fqQvimdy1ZkeXXbiWzJ3CPQtnxZhRsmXb4n8YqDazW8zsL4ANwKro0pJcamk9Q8uZrhf5W844La1nMhyRbJrpHI62Xsw/WRV+d18BfBk4H7gA+McgJgXghb3pN77OFE86zXQOR1sv5p+s1+N396eApyLMRWRAWFgxgZf2HUkbl540eCD/9NriN7Pngp/HzexYp9txMzvWx7HDzOxFM9tuZi+b2d1B/Fwz22Bme4KfY/vvP0fOxlUXpJ86nymedJrpHE552SiWzJ3SJbZk7hQNFY5Rry1+d/+j4OfZ/B9qBj7s7ifMrBh4zsyeAj4OVLv7vWa2HFgOLDuL95d+oj1Rw0vXxy+Z3bNwFkvmTGVb/VEqJ4/R71bM+uzjN7Oi9lU5w/CUE8HD4uDmwELeuTC8ClgU9r2lf12+ojpUPOm05+7ZKS8bxY1Vk1X080Cfhd/d24DtZjalr9d2Z2aDzGwbcIjUZusvAGXu3hC8dwOQdv81M1tqZjVmVnP48OGwHy0h7H3zVKh40mnPXRnosh3OOQF4OViT//H2W18HufsZd68EJgGzzezCbBNz95XuXuXuVaWlpdkeJmdh2rnDQsWTTnvuykCX7aieu9/Nh7j7UTPbBFwNNJrZBHdvMLMJpL4NSIw23r6Aqct77h618fYFMWST//791nlpz5f23JWBoq9RPcPM7HPAJ4APAr9291+23/o4ttTMxgT3hwMfAV4BHgduDl52M/DYu/ovkH6x795rmRismT5x9BD23au15Xuz795ruWTaGAYXwSXTxuh8yYDSV4t/Faldt34FXAPMBD6b5XtPAFaZ2SBSf2Aecfe1ZvY88IiZ3QK8TuqPisTsrjU7OBDsi3rg2GnuemyHptT3QS18Gaj6Kvwz3X0WgJl9F+i+C1dGwfaMH0oTbwLUh5BHMk2pXzJnqkZgiBSgvi7utrTfcXdttVigNKVeJFn6avFf1GmGrgHDg8dGaqj+6Eizk5zQlPqz84Wfbueplxu55oIyvvTxi+JORyRrfc3cHdTb81IYystGMaNsBK82vtURm1E2Qt08veg8qufhF/fz8Iv7dYFXBoxsx/FLAatrPN6l6AO82viWls3N4As/3R4qLpJvVPhFffwhPfVyY6i4SL5R4RfGnlMcKp5011xQFioukm9U+IUjb7eEiiddpgu5usArA4UKv2hUz1nYd++1LJ49iZIRxSyePUkXdmVAyXoHLilc7RtlPPR8182wNaqnd1/6+EV86eNxZyESngq/ANooQyRJVPilQ3nZKBV8kQRQH7+ISMKo8EuHusbjPFpTr4lbIgVOXT0CpJZl7rxC55K5U7Qss0iBUotfMi7LrJa/SGGKrPCb2WQz22hmu83sZTP7bBD/opkdMLNtwe2jUeUg2dGSDSLJEmVXTyvwd+6+1cxGAVvMbEPw3P3u/pUIP1tC0AQukWSJrPC7ewPQENw/bma7gYlRfZ6cvbEjhqQ2WOgUsyAuIoUnJ338ZjaV1DaMLwShz5hZrZl9z8zGZjhmqZnVmFnN4cOHc5FmYu0/cpKRQ7u2AUYOHcz+IydjykhEohR54TezkcBq4HPufgz4NvB+oJLUN4KvpjvO3Ve6e5W7V5WWlkadZqJNGjuclra2LrGWtjYmjR0eU0YiEqVIC7+ZFZMq+j90958CuHuju59x9zbgO8DsKHOQvpWMHMqKGyoYbDDIYLDBihsqKBk5NO7URCQCUY7qMeC7wG53/1qn+IROL/sYsDOqHCR7/7ZxD60OZxxaHb61cU/cKYlIRKIc1TMPuAnYYWbbgtidwKfMrJLUtcR9wK0R5iBZqN51kNfSbL1YvesgC2aOjykrEYlKlKN6niM1OKS7J6P6TDk763el3zJw/a5GFX6RAqSZu8KVM9NvGZgpLiIDmwq/sGDmeGaUjegSm1E2Qq19kQKlRdoEgKdvm0/1roOs39XIlTPLVPRFCpgKv3RYMHO8Cr5IAqirR0QkYVT4RUQSRoVfOmgHLpFkUB+/ANqBSyRJ1OIX7cAlkjAq/KIduEQSRoVftAOXSMKo8AvlZaNYMndKl9iSuVMoLxsVU0YiEiVd3BUA7lk4iyVzprKt/iiVk8eo6IsUMBV+6VBeNkoFPwQtcRGOzld4TSea2X/kJJPGDu/XjZFU+EXOwpX3b+rYw+AnNfuZUTaCp2+bH2tO+UznK7zHth1g2epaiouKaGlrY8UNFVxfObFf3jvKHbgmm9lGM9ttZi+b2WeD+LlmtsHM9gQ/0262LpKvetu4RnrS+Qqv6UQzy1bXcqqljePNrZxqaeP21bU0nWjul/eP8uJuK/B37n4+MAf4azObCSwHqt19OlAdPJY8ULO3ia+tf5WavU1xp5LXetu4RnrS+Qpv/5GTFBd1Lc/FRUXsP3KyX94/ssLv7g3uvjW4fxzYDUwEFgKrgpetAhZFlYNkb/GDm7nxgc1845k6bnxgMzc9uDnulPKWNq4JR+crvEljh9PS1tYl1tLWxqSxw/vl/XMynNPMpgIfAl4Ayty9AVJ/HIDzcpGDZFazt4nn6rq28n9V16SWfwbauCYcna/wSkYOZcUNFQwrLmLU0MEMKy5ixQ0V/XaBN/KLu2Y2ElgNfM7dj5ml24Y37XFLgaUAU6ZM6ePV8m48u+eNjPGqaSU5zmZg0MY14eh8hXd95UTmlY+LZFSPuXu/vVmPNzcrBtYCT7v714LYq8B8d28wswnAJnef0dv7VFVVeU1NTWR5Jl3N3iZufKBn186jt85R4RcZwMxsi7tXdY9HOarHgO8Cu9uLfuBx4Obg/s3AY1HlINmpmlbCpeVdC/yl5SUq+n1Ys7WeT696iTVb6+NOZUBoOtHM9vqj/TYyRc5elF0984CbgB1mti2I3QncCzxiZrcArwOfiDAHydKeQ11X4qw7pJU5ezPnnzZw8NhpAH6x+xD3/fwVnr/zipizyl9RjkmX8KIc1fOcu5u7V7h7ZXB70t2b3H2Bu08Pfr4ZVQ6SnTVb6zuKWLuGY6fVks1A5yucqMekS3gFvUibvlpmZ+2O9BNpMsWTTucrnKjHpEt4BVv4H9t2gHn3PcPiB19g3n3P8Pi2A3GnlLeum5V+hEWmeNLpfIUT9Zh0Ca8gC7++WobT+PtToeJJt+jiyUwYPaRLbMLoISy6eHJMGeW3qMekS3gFuUhb+1fLU7zTymj/aqlftp7W1DZkjN96+fQcZzMwPH/nFazZWs/aHQe5btZ4Ff0+RDkmXcIryMKvr5bhLKqYwO6GnqN4FlVMiCGbgWPRxZNV8EMoGTlUBT9PFGRXT/tXy6GDjXOKBzF0sOmrZS9uvXw6wwd3nVE9fLCptS9SoAqy8AOk5iMbWPBTevXfpp7b5XFVt8fSk1YzDaeu8TiP1tRT16g5InEryK6e9ou7za3vdPfcvrqWeeXj1OpPo7dF2jR7N73FD27uOGffeKaOS8tL+MGn58ScVf66a80OHtr8esfjJXOncM/CWTFmlGwF2eLXuOFwelukTXrSaqbh1DUe71L0AR56/nW1/GNUkIVfF3fDuWz6uFDxpNMfynC21R8NFZfoFWTh17jhcDJ156ibJz39oQyncvKYUHGJXkH28YPGDYfx5Sd2Zox//o8vzHE2+e9Xrx3KGNcfy57Ky0axZO4UHnq+ax9/edmoGLNKtoIt/KBxw9lauzPD2jM7D6rwp/HIlv0Z47dddX6OsxkY7lk4iyVzprKt/iiVk8eo6MesILt6JJzrLsyw9kyGeNJNGnNOqLiklJeN4saqySr6eUCFX/jT2e8NFU+68d3W6ekrLil/8/BLXHDXU/zNwy/FncqAUb3rIMse3U71rv5d+bWgu3okO8/VHc4YV+usp5r634eKC0xdvq7j/hM7D/HE8nXsu/faGDPKf1fev4nXGt8C4Cc1+5lRNoKnb5vfL+8d5daL3zOzQ2a2s1Psi2Z2wMy2BbePRvX5kr2jb7eEiifdmdYzoeJJl6mFr5Z/ZtW7DnYU/XavNr7Vby3/KLt6vg9cnSZ+f+cduSL8fMnSW6dbQ8WTrunt9OclUzzpnnkt/fyGTHGB9bsaQ8XDinLrxWcBbas4AFw1M/1F3EzxpJv1npGh4kn34Q+kn9+QKS5w5cyyUPGw4ri4+xkzqw26gsZmepGZLTWzGjOrOXw4fR+09I+qaSVpV+fUmPT07l50Uah40n1z8X8PFRdYMHM8M8pGdInNKBvBgn5qjOW68H8beD9QCTQAX830Qndf6e5V7l5VWlqao/SSqXrXQU62epfYyVbv95EEhWLS2OEMK+76T2dYcZGWBOnFvnuvpXxc6vyUjxuuC7tZePq2+dxx1Qc4f8Io7rjqA/12YRdyXPjdvdHdz7h7G/AdYHYuP1/Si7o/sdCUjBzKqZaua0GdamnTZMFeTL9jHXVvpBZJrHvjJNPvWNfHEbL4wc3889OvsbvhOP/89Gvc9ODmfnvvnBZ+M+u8pdPHgPRrBUhOzXrP6FDxpPvCT7eHiifd/U/vpqXrF0paPBWX9KJeATbK4Zw/Ap4HZpjZfjO7BVhhZjvMrBa4HLgtqs+X7A0bkn46R6Z40j31cvpvQpniSfdYbfouw0xxiX4F2ChH9XzK3Se4e7G7T3L377r7Te4+y90r3P16d0+/y7fklFZPDOeaC9KPrMgUT7qFFekvSGaKS/QrwGrJBpGQLv9g+gKfKZ50mRau04J2mVVNK+HS8q6j6i4tL+m3kXb6Li+9bpShJRt66u1ieH8NtyskmUaHVe86qPPVix98eg41e5t4ds8bXDZ9XL8Or1aLX9TVE1LUk2sKjUaNnb2qaSX87ZUz+n1OjQq/dGyU0Zk2ysgs6sk1hUZ/KPOPuXvfr4pZVVWV19TUxJ1GwatrPK6NMkKo3nWQ9bsauXJmmYp+H666fxOvdlp0rD9XmpTMzGyLu1f1iKvwi0gu6A9l7mUq/Lq4K3KWmk40a0/nEBbMHK+CnydU+EXOwmPbDrBsdS3FRUW0tLWx4oYKrq+cGHdaIlnRxV2RkJpONLNsdS2nWto43tzKqZY2bl9dS9OJ5rhTE8mKCr9ISPuPnKS4qOs/neKiIvYfORlTRiLhqPCLhDRp7HBa2rquztnS1qZlmWXAUOEXCalk5FBW3FBBcREMKoLiIlhxQ4Uu8Pah6UQz2+uPqkssD+jirshZ+LeNe2hfkv8M8K2Ne3Rxtxe6GJ5f1OIXCal610Fe6zQZCeDVxre0Y1kGuhief1T4RULS2jPh6GJ4/olyI5bvmdkhM9vZKXaumW0wsz3Bz4ybrYvkK609E44uhuefKFv83weu7hZbDlS7+3SgOngsMqBokbZw2i+GDysuYtTQwQwrLtLF8JhFulaPmU0F1rr7hcHjV4H57t4Q7L+7yd1n9PU+WqtH8pHWnglHS1zkXr6s1VPWvt1iUPzPy/RCM1sKLAWYMmVKppeJxEZrz4RTMnKoCn6eyNuLu+6+0t2r3L2qtLQ07nRERApGrgt/Y9DFQ/DzUI4/X0Qk8XJd+B8Hbg7u3ww8luPPFxFJvCiHc/4IeB6YYWb7zewW4F7gCjPbA1wRPBYRkRyK7OKuu38qw1MLovpMERHp24DYetHMDgO/PcvDxwFv9GM6/UV5haO8wlFe4eRrXvDucnuvu/cYHTMgCv+7YWY16caxxk15haO8wlFe4eRrXhBNbnk7nFNERKKhwi8ikjBJKPwr404gA+UVjvIKR3mFk695QQS5FXwfv4iIdJWEFr+IiHSiwi8ikjAFU/jN7DYze9nMdprZj8xsWLfnzcy+YWZ1ZlZrZhfnSV7zzez3ZrYtuN2Vo7w+G+T0spl9Ls3zcZ2vvvLKyfl6NxsJmdnVZvZqcO76dc+Jd5nXPjPbEZy3fl3nPENenwj+P7aZWcbhiDGcr2zzyvX5+hczeyX49/YzMxuT4dh3f77cfcDfgInAXmB48PgR4M+7veajwFOAAXOAF/Ikr/mk9izI5fm6ENgJnENq9vYvgOl5cL6yySsn5wu4DLgY2NkptgJYHtxfDtyX5rhBwH8B7wOGANuBmXHnFTy3DxiXw/N1PjAD2ARUZTgujvPVZ14xna8rgcHB/fui/P0qmBY/qUIx3MwGkyocv+v2/ELgIU/ZDIxpXyk05rzicD6w2d3fdvdW4JfAx7q9Jo7zlU1eOeHuzwJvdgsvBFYF91cBi9IcOhuoc/ffuPtp4MfBcXHnFal0ebn7bnd/tY9Dc36+sswrUhnyWh/83gNsBialObRfzldBFH53PwB8BXgdaAB+7+7ru71sIlDf6fH+IBZ3XgBzzWy7mT1lZhdEmVNgJ3CZmZWY2TmkWveTu70m5+cry7wg9+erXZeNhIB0GwnFcd6yyQvAgfVmtsVSGx3lgzjOV7biPF9/Qeobd3f9cr4KovAHfZoLgWnAe4ARZra4+8vSHBrpWNYs89pKaj2Ni4BvAmuizAlSLR5SXyU3AD8n9XWxtdvLcn6+sswr5+crpJyftxDmufvFwDXAX5vZZXEnhM5XD2b2eVK/9z9M93SaWOjzVRCFH/gIsNfdD7t7C/BT4JJur9lP19bjJKLvdukzL3c/5u4ngvtPAsVmNi7ivHD377r7xe5+GamvnHu6vSSO89VnXnGdr0A2GwnFcd6y2uDI3X8X/DwE/IxUt0HcYvk9y0Yc58vMbgauA/7Mg079bvrlfBVK4X8dmGNm55iZkVr6eXe31zwOLAlGq8wh1e3SEHdeZjY+eA4zm03q/0lTxHlhwX7HZjYF+Djwo24vieN89ZlXXOcrkM1GQi8B081smpkNAT4ZHBdrXmY2wsxGtd8ndSFxZ/fXxSCO89WnOM6XmV0NLAOud/e3M7ysf85XFFes47gBdwOvkPqf8wNgKPCXwF8GzxvwLVJXxHfQy9X8HOf1GeBlUt0am4FLcpTXr4BdwecuCGL5cL76yisn54vUH5wGoIVUK+sWoASoJvUtpBo4N3jte4AnOx37UeC14Nx9Ph/yIjUKZHtwezlHeX0suN8MNAJP58n56jOvmM5XHan++23B7f9Gdb60ZIOISMIUSlePiIhkSYVfRCRhVPhFRBJGhV9EJGFU+EVEEkaFXwQwMzezH3R6PNjMDpvZ2rN8vzFm9ledHs8/2/cS6W8q/CIpbwEXmtnw4PEVwIF38X5jgL/q60UicVDhF3nHU8C1wf1P0WnWsKXWvF8TrJW+2cwqgvgXg7XVN5nZb8zsfwWH3Au8P1jL/V+C2EgzezRYc/2H7TOQRXJNhV/kHT8GPmmpzXIqgBc6PXc38J/uXgHcCTzU6bkPAleRWsvlH8ysmNS6+P/l7pXu/r+D130I+Bwwk9TM0HkR/reIZKTCLxJw91pgKqnW/pPdnv4jUktu4O7PACVm9gfBc+vcvdnd3yC1QFpZho940d33u3sbqSn5U/v1P0AkS4PjTkAkzzxOag+F+aTWwGnX23K4zZ1iZ8j87yrb14lESi1+ka6+B9zj7ju6xZ8F/gxSI3SAN9z9WC/vcxwYFUWCIu+WWhwinbj7fuBf0zz1ReD/mVkt8DbvLIOc6X2azOzXwWbaTwHr+jtXkbOl1TlFRBJGXT0iIgmjwi8ikjAq/CIiCaPCLyKSMCr8IiIJo8IvIpIwKvwiIgnz/wEDeg/76NO6rgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "new_pumpkins.plot.scatter('Month','Price')" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "new_pumpkins.plot.scatter('DayOfYear','Price')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "మనం చూడాలి సంబంధం ఉందా:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-0.14878293554077535\n", + "-0.16673322492745407\n" + ] + } + ], + "source": [ + "print(new_pumpkins['Month'].corr(new_pumpkins['Price']))\n", + "print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "కోరిలేషన్ చాలా తక్కువగా కనిపిస్తోంది, కానీ మరొక ముఖ్యమైన సంబంధం ఉంది - ఎందుకంటే పై ప్లాట్‌లో ధర పాయింట్లు కొన్ని ప్రత్యేక క్లస్టర్లను కలిగి ఉన్నట్లు కనిపిస్తున్నాయి. వేర్వేరు పంప్కిన్ రకాలను చూపించే ఒక ప్లాట్ తయారు చేద్దాం:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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5sxSZs68nu9975ccemg3RBzH3RbOOOMMrr32Wh577DHASb8sEnpOPGmZVRv1hg8/kZqaLyPqff755yxbtozbbrutwTZt2jSWLl3KF198wbx58zj55JMZP348AB07duThhx9ueNIAOPXUU1m8eDH79u1jx44dfP755xQWFja7V5cuXTjttNNYsGBBg+2pp55q+Fs/99xznHfeeVxyySURZ0kfffTRdOzYkc2bN0f7Z4mJDRs20KdPn4bjEfE+ymKO30gCBQXN/+H37XPsXjF5cnT21ojUqnfs5UB/YJy7bz1u1bKeQ72z2b17NytWrOCEE06IqHfZZcVs27aZnTu3ce65TohI1Vl0/eabb24IF0yZMiWixvHHH88nn3wCOD/MwZP4y8vv55JLCjnpJEdn/fr1De8Fp5AuLCxk/vz5zbRFGvXee+9VvvnNyRHTPK9evbohDFJPfUhk1apVrFq1ilGjRoVcM3DgQHbs2MG2bdvc+wljx47ltdde48UXX2TixIkR611cXNzg1NevX8+aNWsa0krX/+AWFxdHXAPhgw8+4Oijj+awww4L+/6UKVMa/jY333xzxHKEI9xnd/3111NSUsIZZ5zBHXfcEfJZxIqFeoyEk5/vxN1LSpyW/r59zrGXyyxMmODE+INWG2T48NjCPOA45EAgNDwTCEC3bjVACVDnbrjHY4HIFYqs13g8YsQIKisrKS8vbzWOu3HjOrZu/TcHDgh79uwgEOhM//6O448U6mlKcLqW3Fyn76WqynHal156I7fddhM9ezrvFwT9Src11HPDDWfw739vpEePw7j++hkR0zyrKtL0cSPIHul9IMR+ySWX8OCDD7J161buvfdefv3rX4e9ZsKECVx33XVs27aNp59+mosuuoicnBw2btzI559/zimnnIKI0L59e1auXMmwYcMAJzfR448/zj/+8Q9effXViPUOF+ppK+E+u29961sN93zllVc47rjjWLlyJfGsU2ItfiMpFBc7TmXhQmcfIYoRFytWwIIFzg/MggXOcTwceywMGuQsjj5okHMMlUDTZmuua49FL5SJEydy0003RQzz1DN16lR++cvpFBdfzDPP/BfDh9PgpNvKhx9+GJLbpWdPGnR6945eryl//esiKiurGDnyWJ59dlpEvWOPPZYPP/yQg0FxqoMHD/LRRx8xZMgQjj32WJrm6vrH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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax=None\n", + "colors = ['red','blue','green','yellow']\n", + "for i,var in enumerate(new_pumpkins['Variety'].unique()):\n", + " ax = new_pumpkins[new_pumpkins['Variety']==var].plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ప్రస్తుతం, మనం ఒక రకమైనదానిపై మాత్రమే దృష్టి పెట్టుదాం - **పై టైప్**.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-0.2669192282197318\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 174, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']\n", + "print(pie_pumpkins['DayOfYear'].corr(pie_pumpkins['Price']))\n", + "pie_pumpkins.plot.scatter('DayOfYear','Price')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### లీనియర్ రిగ్రెషన్\n", + "\n", + "మేము లీనియర్ రిగ్రెషన్ మోడల్‌ను శిక్షణ ఇవ్వడానికి Scikit Learn ఉపయోగిస్తాము:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.77 (17.2%)\n" + ] + } + ], + "source": [ + "X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)\n", + "y = pie_pumpkins['Price']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + "lin_reg = LinearRegression()\n", + "lin_reg.fit(X_train,y_train)\n", + "\n", + "pred = lin_reg.predict(X_test)\n", + "\n", + "mse = np.sqrt(mean_squared_error(y_test,pred))\n", + "print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 177, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X_test,y_test)\n", + "plt.plot(X_test,pred)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "రేఖీయ రిగ్రెషన్ గుణకాలు నుండి రేఖ యొక్క వక్రీకరణాన్ని నిర్ణయించవచ్చు:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([-0.01751876]), 21.133734359909326)" + ] + }, + "execution_count": 178, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lin_reg.coef_, lin_reg.intercept_" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "మేము శిక్షణ పొందిన మోడల్‌ను ధరను అంచనా వేయడానికి ఉపయోగించవచ్చు:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([16.64893156])" + ] + }, + "execution_count": 179, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pumpkin price on programmer's day\n", + "\n", + "lin_reg.predict([[256]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### పాలినోమియల్ రిగ్రెషన్\n", + "\n", + "కొన్నిసార్లు ఫీచర్లు మరియు ఫలితాల మధ్య సంబంధం స్వభావతః నాన్-లీనియర్ ఉంటుంది. ఉదాహరణకు, పంప్కిన్ ధరలు శీతాకాలంలో (నెలలు=1,2) ఎక్కువగా ఉండవచ్చు, ఆపై వేసవిలో (నెలలు=5-7) తగ్గి, మళ్లీ పెరుగుతాయి. లీనియర్ రిగ్రెషన్ ఈ సంబంధాన్ని సరిగ్గా కనుగొనలేకపోతుంది.\n", + "\n", + "ఈ సందర్భంలో, అదనపు ఫీచర్లను జోడించడం గురించి ఆలోచించవచ్చు. సులభమైన మార్గం ఇన్‌పుట్ ఫీచర్ల నుండి పాలినోమియల్స్ ఉపయోగించడం, ఇది **పాలినోమియల్ రిగ్రెషన్** కు దారితీస్తుంది. Scikit Learn లో, మేము పైప్లైన్లను ఉపయోగించి ఆటోమేటిక్‌గా పాలినోమియల్ ఫీచర్లను ముందుగా లెక్కించవచ్చు: \n" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.73 (17.0%)\n", + "Model determination: 0.07639977655280217\n" + ] + }, + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())\n", + "\n", + "pipeline.fit(X_train,y_train)\n", + "\n", + "pred = pipeline.predict(X_test)\n", + "\n", + "mse = np.sqrt(mean_squared_error(y_test,pred))\n", + "print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n", + "\n", + "score = pipeline.score(X_train,y_train)\n", + "print('Model determination: ', score)\n", + "\n", + "plt.scatter(X_test,y_test)\n", + "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ఎన్‌కోడింగ్ రకాలు\n", + "\n", + "ఆదర్శ ప్రపంచంలో, మేము ఒకే మోడల్ ఉపయోగించి వివిధ పంప్కిన్ రకాలకు ధరలను అంచనా వేయగలగాలి. రకాన్ని పరిగణనలోకి తీసుకోవడానికి, ముందుగా దాన్ని సంఖ్యాత్మక రూపంలోకి మార్చాలి, లేదా **ఎన్‌కోడ్** చేయాలి. దీని కోసం మనకు కొన్ని మార్గాలు ఉన్నాయి:\n", + "\n", + "* సాదా సంఖ్యాత్మక ఎన్‌కోడింగ్, ఇది వివిధ రకాల పట్టికను నిర్మించి, ఆ పట్టికలోని సూచికతో రకం పేరును మార్చుతుంది. ఇది లీనియర్ రిగ్రెషన్ కోసం ఉత్తమ ఆలోచన కాదు, ఎందుకంటే లీనియర్ రిగ్రెషన్ సూచిక యొక్క సంఖ్యాత్మక విలువను పరిగణలోకి తీసుకుంటుంది, మరియు ఆ సంఖ్యాత్మక విలువ ధరతో సంఖ్యాత్మకంగా సంబంధం ఉండకపోవచ్చు.\n", + "* వన్-హాట్ ఎన్‌కోడింగ్, ఇది `Variety` కాలమ్‌ను 4 వేర్వేరు కాలమ్స్‌తో మార్చుతుంది, ప్రతి రకానికి ఒకటి, ఆ కాలమ్‌లో సంబంధిత వరుస ఆ రకానికి చెందినదైతే 1 ఉంటుంది, లేకపోతే 0 ఉంటుంది.\n", + "\n", + "క్రింది కోడ్ ఒక రకాన్ని వన్-హాట్ ఎన్‌కోడ్ చేయడం ఎలా చేయాలో చూపిస్తుంది:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FAIRYTALEMINIATUREMIXED HEIRLOOM VARIETIESPIE TYPE
700001
710001
720001
730001
740001
...............
17380100
17390100
17400100
17410100
17420100
\n", + "

415 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " FAIRYTALE MINIATURE MIXED HEIRLOOM VARIETIES PIE TYPE\n", + "70 0 0 0 1\n", + "71 0 0 0 1\n", + "72 0 0 0 1\n", + "73 0 0 0 1\n", + "74 0 0 0 1\n", + "... ... ... ... ...\n", + "1738 0 1 0 0\n", + "1739 0 1 0 0\n", + "1740 0 1 0 0\n", + "1741 0 1 0 0\n", + "1742 0 1 0 0\n", + "\n", + "[415 rows x 4 columns]" + ] + }, + "execution_count": 181, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.get_dummies(new_pumpkins['Variety'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### రేఖీయ రిగ్రెషన్ వేరియటీపై\n", + "\n", + "మేము ఇప్పుడు పై కోడ్‌ను అదే విధంగా ఉపయోగించబోతున్నాము, కానీ `DayOfYear` బదులు మా వన్-హాట్-ఎంకోడ్ చేసిన వేరియటీని ఇన్‌పుట్‌గా ఉపయోగిస్తాము:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "metadata": {}, + "outputs": [], + "source": [ + "X = pd.get_dummies(new_pumpkins['Variety'])\n", + "y = new_pumpkins['Price']" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 5.24 (19.7%)\n", + "Model determination: 0.774085281105197\n" + ] + } + ], + "source": [ + "def run_linear_regression(X,y):\n", + " X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + " lin_reg = LinearRegression()\n", + " lin_reg.fit(X_train,y_train)\n", + "\n", + " pred = lin_reg.predict(X_test)\n", + "\n", + " mse = np.sqrt(mean_squared_error(y_test,pred))\n", + " print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n", + "\n", + " score = lin_reg.score(X_train,y_train)\n", + " print('Model determination: ', score)\n", + "\n", + "run_linear_regression(X,y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "మేము అదే విధంగా ఇతర లక్షణాలను కూడా ప్రయత్నించవచ్చు, మరియు వాటిని సంఖ్యాత్మక లక్షణాలతో కలపవచ్చు, ఉదాహరణకు `Month` లేదా `DayOfYear`:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.84 (10.5%)\n", + "Model determination: 0.9401096672643048\n" + ] + } + ], + "source": [ + "X = pd.get_dummies(new_pumpkins['Variety']) \\\n", + " .join(new_pumpkins['Month']) \\\n", + " .join(pd.get_dummies(new_pumpkins['City'])) \\\n", + " .join(pd.get_dummies(new_pumpkins['Package']))\n", + "y = new_pumpkins['Price']\n", + "\n", + "run_linear_regression(X,y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### పాలినోమియల్ రిగ్రెషన్\n", + "\n", + "పాలినోమియల్ రిగ్రెషన్‌ను ఒక-హాట్-ఎన్‌కోడ్ చేసిన వర్గీకరణ లక్షణాలతో కూడా ఉపయోగించవచ్చు. పాలినోమియల్ రిగ్రెషన్‌ను శిక్షణ ఇవ్వడానికి కోడ్ మునుపటి విధంగా ఉంటుంది.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.23 (8.25%)\n", + "Model determination: 0.9652870784724543\n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + "\n", + "pipeline.fit(X_train,y_train)\n", + "\n", + "pred = pipeline.predict(X_test)\n", + "\n", + "mse = np.sqrt(mean_squared_error(y_test,pred))\n", + "print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n", + "\n", + "score = pipeline.score(X_train,y_train)\n", + "print('Model determination: ', score)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5" + }, + "kernelspec": { + "display_name": "Python 3.7.0 64-bit ('3.7')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.5" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", + "translation_date": "2025-12-19T16:19:13+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/te/2-Regression/4-Logistic/README.md b/translations/te/2-Regression/4-Logistic/README.md new file mode 100644 index 000000000..fb02cf608 --- /dev/null +++ b/translations/te/2-Regression/4-Logistic/README.md @@ -0,0 +1,409 @@ + +# వర్గాలను అంచనా వేయడానికి లాజిస్టిక్ రిగ్రెషన్ + +![లాజిస్టిక్ vs. లీనియర్ రిగ్రెషన్ ఇన్ఫోగ్రాఫిక్](../../../../translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.te.png) + +## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ఈ పాఠం R లో అందుబాటులో ఉంది!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html) + +## పరిచయం + +రిగ్రెషన్ పై ఈ చివరి పాఠంలో, ఒక ప్రాథమిక _క్లాసిక్_ ML సాంకేతికత అయిన లాజిస్టిక్ రిగ్రెషన్ ను చూద్దాం. మీరు ఈ సాంకేతికతను ద్విభాగ వర్గాలను అంచనా వేయడానికి నమూనాలు కనుగొనడానికి ఉపయోగిస్తారు. ఈ కాండీ చాక్లెట్ కాదా? ఈ వ్యాధి సంక్రమణీయమా? ఈ కస్టమర్ ఈ ఉత్పత్తిని ఎంచుకుంటాడా? + +ఈ పాఠంలో మీరు నేర్చుకుంటారు: + +- డేటా విజువలైజేషన్ కోసం కొత్త లైబ్రరీ +- లాజిస్టిక్ రిగ్రెషన్ సాంకేతికతలు + +✅ ఈ రకమైన రిగ్రెషన్ తో పని చేయడంపై మీ అవగాహనను ఈ [Learn మాడ్యూల్](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott) లో మరింత లోతుగా పెంచుకోండి + +## ముందస్తు అవసరాలు + +పంప్కిన్ డేటాతో పని చేసినందున, ఇప్పుడు మనకు ఒక ద్విభాగ వర్గం ఉంది అని తెలుసుకున్నాం: `Color`. + +కొన్ని వేరియబుల్స్ ఇచ్చినప్పుడు, ఒక పంప్కిన్ ఏ రంగులో ఉండే అవకాశం ఉందో అంచనా వేయడానికి లాజిస్టిక్ రిగ్రెషన్ మోడల్ నిర్మిద్దాం (ఆరెంజ్ 🎃 లేదా వైట్ 👻). + +> రిగ్రెషన్ గురించి ఉన్న పాఠం సమూహంలో ద్విభాగ వర్గీకరణ గురించి ఎందుకు మాట్లాడుతున్నాం? భాషా సౌలభ్యం కోసం మాత్రమే, ఎందుకంటే లాజిస్టిక్ రిగ్రెషన్ [నిజానికి వర్గీకరణ పద్ధతి](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), అయినా లీనియర్ ఆధారితది. తదుపరి పాఠం సమూహంలో డేటాను వర్గీకరించే ఇతర మార్గాలను తెలుసుకోండి. + +## ప్రశ్న నిర్వచించండి + +మన ప్రయోజనాల కోసం, దీన్ని ద్విభాగంగా వ్యక్తీకరిస్తాము: 'వైట్' లేదా 'వైట్ కాదు'. మా డేటాసెట్‌లో 'స్ట్రైప్డ్' అనే వర్గం కూడా ఉంది కానీ దాని ఉదాహరణలు చాలా తక్కువగా ఉన్నందున దాన్ని ఉపయోగించము. నల్ విలువలను తొలగించిన తర్వాత అది కనబడదు. + +> 🎃 సరదా విషయం, కొన్నిసార్లు వైట్ పంప్కిన్లను 'గోస్ట్' పంప్కిన్లు అంటాము. అవి తీయడం అంత సులభం కాదు, అందుకే ఆరెంజ్ పంప్కిన్లంతా ప్రాచుర్యం పొందలేదు కానీ అవి చల్లగా కనిపిస్తాయి! కాబట్టి మన ప్రశ్నను ఇలా కూడా మార్చుకోవచ్చు: 'గోస్ట్' లేదా 'గోస్ట్ కాదు'. 👻 + +## లాజిస్టిక్ రిగ్రెషన్ గురించి + +లాజిస్టిక్ రిగ్రెషన్, మీరు ముందుగా నేర్చుకున్న లీనియర్ రిగ్రెషన్ నుండి కొన్ని ముఖ్యమైన మార్గాల్లో భిన్నంగా ఉంటుంది. + +[![ML ప్రారంభకులకు - మెషీన్ లెర్నింగ్ వర్గీకరణ కోసం లాజిస్టిక్ రిగ్రెషన్ అర్థం చేసుకోవడం](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "ML ప్రారంభకులకు - మెషీన్ లెర్నింగ్ వర్గీకరణ కోసం లాజిస్టిక్ రిగ్రెషన్ అర్థం చేసుకోవడం") + +> 🎥 లాజిస్టిక్ రిగ్రెషన్ పై చిన్న వీడియో అవలోకనం కోసం పై చిత్రాన్ని క్లిక్ చేయండి. + +### ద్విభాగ వర్గీకరణ + +లాజిస్టిక్ రిగ్రెషన్ లీనియర్ రిగ్రెషన్ లాంటి లక్షణాలను అందించదు. మొదటిది ద్విభాగ వర్గం గురించి అంచనా ఇస్తుంది ("వైట్ లేదా వైట్ కాదు") కానీ రెండవది నిరంతర విలువలను అంచనా వేయగలదు, ఉదాహరణకు పంప్కిన్ మూలం మరియు పంట కోత సమయం ఇచ్చినప్పుడు, _దాని ధర ఎంత పెరుగుతుందో_. + +![Pumpkin classification Model](../../../../translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.te.png) +> ఇన్ఫోగ్రాఫిక్: [దాసాని మడిపల్లి](https://twitter.com/dasani_decoded) + +### ఇతర వర్గీకరణలు + +మల్టినోమియల్ మరియు ఆర్డినల్ సహా ఇతర రకాల లాజిస్టిక్ రిగ్రెషన్ ఉన్నాయి: + +- **మల్టినోమియల్**, అంటే ఒక కంటే ఎక్కువ వర్గాలు ఉండటం - "ఆరెంజ్, వైట్, మరియు స్ట్రైప్డ్". +- **ఆర్డినల్**, అంటే క్రమబద్ధమైన వర్గాలు, ఉదాహరణకు మన పంప్కిన్లు పరిమాణాల క్రమంలో (మినీ, చిన్న, మధ్య, పెద్ద, ఎక్స్ ఎల్, డబుల్ ఎక్స్ ఎల్) ఉంటే ఉపయోగపడుతుంది. + +![మల్టినోమియల్ vs ఆర్డినల్ రిగ్రెషన్](../../../../translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.te.png) + +### వేరియబుల్స్ తప్పనిసరిగా సంబంధం ఉండాల్సిన అవసరం లేదు + +లీనియర్ రిగ్రెషన్ ఎక్కువ సంబంధిత వేరియబుల్స్ తో బాగా పనిచేస్తుంది అని గుర్తుంచుకోండి? లాజిస్టిక్ రిగ్రెషన్ మాత్రం విరుద్ధం - వేరియబుల్స్ సరిపోవాల్సిన అవసరం లేదు. ఇది కొంతమేర బలహీన సంబంధాలు ఉన్న డేటాకు సరిపోతుంది. + +### మీరు చాలా శుభ్రమైన డేటా అవసరం + +లాజిస్టిక్ రిగ్రెషన్ ఎక్కువ డేటా ఉపయోగిస్తే మరింత ఖచ్చితమైన ఫలితాలు ఇస్తుంది; మన చిన్న డేటాసెట్ ఈ పనికి సరిపోదు, దాన్ని గమనించండి. + +[![ML ప్రారంభకులకు - లాజిస్టిక్ రిగ్రెషన్ కోసం డేటా విశ్లేషణ మరియు సిద్ధత](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "ML ప్రారంభకులకు - లాజిస్టిక్ రిగ్రెషన్ కోసం డేటా విశ్లేషణ మరియు సిద్ధత") + +> 🎥 లీనియర్ రిగ్రెషన్ కోసం డేటా సిద్ధత పై చిన్న వీడియో అవలోకనం కోసం పై చిత్రాన్ని క్లిక్ చేయండి + +✅ లాజిస్టిక్ రిగ్రెషన్ కు అనుకూలమైన డేటా రకాలను గురించి ఆలోచించండి + +## వ్యాయామం - డేటాను శుభ్రపరచండి + +ముందుగా, డేటాను కొంచెం శుభ్రపరచండి, నల్ విలువలను తొలగించి కొన్ని కాలమ్స్ మాత్రమే ఎంచుకోండి: + +1. క్రింది కోడ్ జోడించండి: + + ```python + + columns_to_select = ['City Name','Package','Variety', 'Origin','Item Size', 'Color'] + pumpkins = full_pumpkins.loc[:, columns_to_select] + + pumpkins.dropna(inplace=True) + ``` + + మీ కొత్త డేటాఫ్రేమ్ ను ఎప్పుడైనా చూడవచ్చు: + + ```python + pumpkins.info + ``` + +### విజువలైజేషన్ - వర్గీకరణ ప్లాట్ + +ఇప్పటికే మీరు [స్టార్టర్ నోట్‌బుక్](./notebook.ipynb) లో పంప్కిన్ డేటాను మళ్లీ లోడ్ చేసి, కొన్ని వేరియబుల్స్ తో కూడిన డేటాసెట్ ను నిలుపుకున్నారు, అందులో `Color` కూడా ఉంది. ఇప్పుడు మనం వేరే లైబ్రరీ ఉపయోగించి డేటాఫ్రేమ్ ను విజువలైజ్ చేద్దాం: [Seaborn](https://seaborn.pydata.org/index.html), ఇది Matplotlib పై నిర్మించబడింది, మనం ముందుగా ఉపయోగించాము. + +Seaborn మీ డేటాను విజువలైజ్ చేయడానికి కొన్ని చక్కటి మార్గాలను అందిస్తుంది. ఉదాహరణకు, మీరు ప్రతి `Variety` మరియు `Color` కోసం డేటా పంపిణీలను వర్గీకరణ ప్లాట్ లో పోల్చవచ్చు. + +1. `catplot` ఫంక్షన్ ఉపయోగించి ఇలాంటి ప్లాట్ సృష్టించండి, మన పంప్కిన్ డేటా `pumpkins` ఉపయోగించి, ప్రతి పంప్కిన్ వర్గానికి రంగు మ్యాపింగ్ (ఆరెంజ్ లేదా వైట్) నిర్దేశించండి: + + ```python + import seaborn as sns + + palette = { + 'ORANGE': 'orange', + 'WHITE': 'wheat', + } + + sns.catplot( + data=pumpkins, y="Variety", hue="Color", kind="count", + palette=palette, + ) + ``` + + ![విజువలైజ్ చేసిన డేటా గ్రిడ్](../../../../translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.te.png) + + డేటాను పరిశీలించి, మీరు Color డేటా Variety తో ఎలా సంబంధం ఉన్నదో చూడవచ్చు. + + ✅ ఈ వర్గీకరణ ప్లాట్ ఇచ్చినప్పుడు, మీరు ఊహించగల కొన్ని ఆసక్తికర అన్వేషణలు ఏమిటి? + +### డేటా ప్రీ-ప్రాసెసింగ్: ఫీచర్ మరియు లేబుల్ ఎంకోడింగ్ +మన పంప్కిన్ల డేటాసెట్ లో అన్ని కాలమ్స్ స్ట్రింగ్ విలువలు కలిగి ఉన్నాయి. వర్గీకరణ డేటాతో పని చేయడం మనుషులకు సులభం కానీ యంత్రాలకు కాదు. మెషీన్ లెర్నింగ్ అల్గోరిథమ్స్ సంఖ్యలతో బాగా పనిచేస్తాయి. అందుకే ఎంకోడింగ్ డేటా ప్రీ-ప్రాసెసింగ్ దశలో చాలా ముఖ్యమైన దశ, ఇది వర్గీకరణ డేటాను సంఖ్యాత్మక డేటాగా మార్చడానికి సహాయపడుతుంది, ఎలాంటి సమాచారం కోల్పోకుండా. మంచి ఎంకోడింగ్ మంచి మోడల్ నిర్మాణానికి దారితీస్తుంది. + +ఫీచర్ ఎంకోడింగ్ కోసం రెండు ప్రధాన రకాల ఎంకోడర్లు ఉన్నాయి: + +1. ఆర్డినల్ ఎంకోడర్: ఇది ఆర్డినల్ వేరియబుల్స్ కు సరిపోతుంది, అవి వర్గీకరణ వేరియబుల్స్, వాటి డేటా తార్కిక క్రమంలో ఉంటుంది, మన డేటాసెట్ లో `Item Size` కాలమ్ లాంటిది. ఇది ప్రతి వర్గం ఒక సంఖ్యతో ప్రాతినిధ్యం వహించే మ్యాపింగ్ సృష్టిస్తుంది, అది ఆ కాలమ్ లో వర్గం క్రమం. + + ```python + from sklearn.preprocessing import OrdinalEncoder + + item_size_categories = [['sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo']] + ordinal_features = ['Item Size'] + ordinal_encoder = OrdinalEncoder(categories=item_size_categories) + ``` + +2. వర్గీకరణ ఎంకోడర్: ఇది నామినల్ వేరియబుల్స్ కు సరిపోతుంది, అవి వర్గీకరణ వేరియబుల్స్, వాటి డేటా తార్కిక క్రమంలో ఉండదు, మన డేటాసెట్ లో `Item Size` తప్ప అన్ని ఫీచర్స్. ఇది వన్-హాట్ ఎంకోడింగ్, అంటే ప్రతి వర్గం ఒక బైనరీ కాలమ్ తో ప్రాతినిధ్యం వహిస్తుంది: ఎంకోడెడ్ వేరియబుల్ 1 అవుతుంది ఆ పంప్కిన్ ఆ Variety కి చెందితే, లేకపోతే 0. + + ```python + from sklearn.preprocessing import OneHotEncoder + + categorical_features = ['City Name', 'Package', 'Variety', 'Origin'] + categorical_encoder = OneHotEncoder(sparse_output=False) + ``` +తర్వాత, `ColumnTransformer` ఉపయోగించి అనేక ఎంకోడర్లను ఒకే దశలో కలిపి సరైన కాలమ్స్ కు వర్తింపజేస్తారు. + +```python + from sklearn.compose import ColumnTransformer + + ct = ColumnTransformer(transformers=[ + ('ord', ordinal_encoder, ordinal_features), + ('cat', categorical_encoder, categorical_features) + ]) + + ct.set_output(transform='pandas') + encoded_features = ct.fit_transform(pumpkins) +``` +మరొకవైపు, లేబుల్ ఎంకోడింగ్ కోసం, మనం scikit-learn `LabelEncoder` క్లాస్ ఉపయోగిస్తాము, ఇది లేబుల్స్ ను 0 నుండి n_classes-1 (ఇక్కడ 0 మరియు 1) మధ్య విలువలుగా సాధారణీకరించడానికి సహాయపడే యుటిలిటీ క్లాస్. + +```python + from sklearn.preprocessing import LabelEncoder + + label_encoder = LabelEncoder() + encoded_label = label_encoder.fit_transform(pumpkins['Color']) +``` +ఫీచర్స్ మరియు లేబుల్ ఎంకోడింగ్ చేసిన తర్వాత, వాటిని కొత్త డేటాఫ్రేమ్ `encoded_pumpkins` లో విలీనం చేయవచ్చు. + +```python + encoded_pumpkins = encoded_features.assign(Color=encoded_label) +``` +✅ `Item Size` కాలమ్ కోసం ఆర్డినల్ ఎంకోడర్ ఉపయోగించడంలో లాభాలు ఏమిటి? + +### వేరియబుల్స్ మధ్య సంబంధాలను విశ్లేషించండి + +ఇప్పుడు మనం డేటాను ప్రీ-ప్రాసెస్ చేశాము, ఫీచర్స్ మరియు లేబుల్ మధ్య సంబంధాలను విశ్లేషించి, ఫీచర్స్ ఇచ్చినప్పుడు మోడల్ లేబుల్ ను ఎంత బాగా అంచనా వేయగలదో అర్థం చేసుకోవచ్చు. +ఇలాంటి విశ్లేషణ చేయడానికి ఉత్తమ మార్గం డేటాను ప్లాట్ చేయడం. మళ్లీ Seaborn `catplot` ఫంక్షన్ ఉపయోగించి `Item Size`, `Variety` మరియు `Color` మధ్య సంబంధాలను వర్గీకరణ ప్లాట్ లో చూపిస్తాము. డేటాను మెరుగ్గా ప్లాట్ చేయడానికి ఎంకోడెడ్ `Item Size` కాలమ్ మరియు ఎంకోడింగ్ చేయని `Variety` కాలమ్ ఉపయోగిస్తాము. + +```python + palette = { + 'ORANGE': 'orange', + 'WHITE': 'wheat', + } + pumpkins['Item Size'] = encoded_pumpkins['ord__Item Size'] + + g = sns.catplot( + data=pumpkins, + x="Item Size", y="Color", row='Variety', + kind="box", orient="h", + sharex=False, margin_titles=True, + height=1.8, aspect=4, palette=palette, + ) + g.set(xlabel="Item Size", ylabel="").set(xlim=(0,6)) + g.set_titles(row_template="{row_name}") +``` +![విజువలైజ్ చేసిన డేటా క్యాట్‌ప్లాట్](../../../../translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.te.png) + +### స్వార్మ్ ప్లాట్ ఉపయోగించండి + +Color ఒక ద్విభాగ వర్గం (వైట్ లేదా కాదు) కావడంతో, దానికి 'విశేషమైన విజువలైజేషన్ దృష్టికోణం' అవసరం. ఈ వర్గం మరియు ఇతర వేరియబుల్స్ మధ్య సంబంధాన్ని చూపడానికి ఇతర మార్గాలు ఉన్నాయి. + +Seaborn ప్లాట్లతో వేరియబుల్స్ ను పక్కపక్కన చూపవచ్చు. + +1. విలువల పంపిణీ చూపడానికి 'స్వార్మ్' ప్లాట్ ప్రయత్నించండి: + + ```python + palette = { + 0: 'orange', + 1: 'wheat' + } + sns.swarmplot(x="Color", y="ord__Item Size", data=encoded_pumpkins, palette=palette) + ``` + + ![విజువలైజ్ చేసిన డేటా స్వార్మ్](../../../../translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.te.png) + +**జాగ్రత్త**: పై కోడ్ ఒక హెచ్చరికను ఉత్పత్తి చేయవచ్చు, ఎందుకంటే seaborn ఇంత పెద్ద డేటా పాయింట్లను స్వార్మ్ ప్లాట్ లో చూపించలేకపోవచ్చు. ఒక పరిష్కారం 'size' పారామీటర్ ఉపయోగించి మార్కర్ పరిమాణం తగ్గించడం. అయితే, ఇది ప్లాట్ చదవడాన్ని ప్రభావితం చేస్తుంది. + +> **🧮 గణితం చూపించండి** +> +> లాజిస్టిక్ రిగ్రెషన్ 'మాక్సిమమ్ లైక్లిహుడ్' సూత్రంపై ఆధారపడి ఉంటుంది, [సిగ్మాయిడ్ ఫంక్షన్లు](https://wikipedia.org/wiki/Sigmoid_function) ఉపయోగించి. ఒక 'సిగ్మాయిడ్ ఫంక్షన్' ప్లాట్ లో 'S' ఆకారంలో ఉంటుంది. ఇది ఒక విలువ తీసుకుని 0 మరియు 1 మధ్య ఎక్కడో మ్యాప్ చేస్తుంది. దీని వక్రరేఖను 'లాజిస్టిక్ వక్రరేఖ' అంటారు. దీని సూత్రం ఇలా ఉంటుంది: +> +> ![లాజిస్టిక్ ఫంక్షన్](../../../../translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.te.png) +> +> ఇక్కడ సిగ్మాయిడ్ మధ్యబిందువు x యొక్క 0 పాయింట్ వద్ద ఉంటుంది, L వక్రరేఖ గరిష్ట విలువ, k వక్రత యొక్క తీవ్రత. ఫంక్షన్ ఫలితం 0.5 కంటే ఎక్కువ అయితే, ఆ లేబుల్ '1' అనే ద్విభాగ ఎంపికకు ఇవ్వబడుతుంది. లేకపోతే, '0' గా వర్గీకరించబడుతుంది. + +## మీ మోడల్ నిర్మించండి + +ఈ ద్విభాగ వర్గీకరణను కనుగొనడానికి మోడల్ నిర్మించడం Scikit-learn లో ఆశ్చర్యకరంగా సులభం. + +[![ML ప్రారంభకులకు - డేటా వర్గీకరణ కోసం లాజిస్టిక్ రిగ్రెషన్](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "ML ప్రారంభకులకు - డేటా వర్గీకరణ కోసం లాజిస్టిక్ రిగ్రెషన్") + +> 🎥 లీనియర్ రిగ్రెషన్ మోడల్ నిర్మాణం పై చిన్న వీడియో అవలోకనం కోసం పై చిత్రాన్ని క్లిక్ చేయండి + +1. మీరు వర్గీకరణ మోడల్ లో ఉపయోగించదలచిన వేరియబుల్స్ ఎంచుకుని, `train_test_split()` పిలిచి ట్రైనింగ్ మరియు టెస్ట్ సెట్ లను విడగొట్టండి: + + ```python + from sklearn.model_selection import train_test_split + + X = encoded_pumpkins[encoded_pumpkins.columns.difference(['Color'])] + y = encoded_pumpkins['Color'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + + ``` + +2. ఇప్పుడు మీరు మీ మోడల్ ను ట్రైన్ చేయవచ్చు, ట్రైనింగ్ డేటాతో `fit()` పిలిచి, ఫలితాన్ని ప్రింట్ చేయండి: + + ```python + from sklearn.metrics import f1_score, classification_report + from sklearn.linear_model import LogisticRegression + + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('F1-score: ', f1_score(y_test, predictions)) + ``` + + మీ మోడల్ స్కోర్బోర్డ్ ను చూడండి. ఇది చెడిగా లేదు, మీరు సుమారు 1000 వరుసల డేటా మాత్రమే కలిగి ఉన్నప్పటికీ: + + ```output + precision recall f1-score support + + 0 0.94 0.98 0.96 166 + 1 0.85 0.67 0.75 33 + + accuracy 0.92 199 + macro avg 0.89 0.82 0.85 199 + weighted avg 0.92 0.92 0.92 199 + + Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 + 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 0 0 0 1 0 0 0 0 0 0 0 0 1 1] + F1-score: 0.7457627118644068 + ``` + +## కన్ఫ్యూజన్ మ్యాట్రిక్స్ ద్వారా మెరుగైన అవగాహన + +మీరు పై అంశాలను ప్రింట్ చేసి స్కోర్బోర్డ్ నివేదిక పొందవచ్చు [terms](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report), కానీ మోడల్ పనితీరును అర్థం చేసుకోవడానికి [కన్ఫ్యూజన్ మ్యాట్రిక్స్](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) ఉపయోగించడం సులభం. + +> 🎓 '[కన్ఫ్యూజన్ మ్యాట్రిక్స్](https://wikipedia.org/wiki/Confusion_matrix)' (లేదా 'ఎర్రర్ మ్యాట్రిక్స్') అనేది మీ మోడల్ నిజమైన మరియు తప్పుడు పాజిటివ్ మరియు నెగటివ్ లను వ్యక్తం చేసే పట్టిక, తద్వారా అంచనాల ఖచ్చితత్వాన్ని కొలుస్తుంది. + +1. కన్ఫ్యూజన్ మ్యాట్రిక్స్ ఉపయోగించడానికి, `confusion_matrix()` పిలవండి: + + ```python + from sklearn.metrics import confusion_matrix + confusion_matrix(y_test, predictions) + ``` + + మీ మోడల్ కన్ఫ్యూజన్ మ్యాట్రిక్స్ ను చూడండి: + + ```output + array([[162, 4], + [ 11, 22]]) + ``` + +Scikit-learn లో, కన్ఫ్యూజన్ మ్యాట్రిక్స్ లో వరుసలు (అక్షం 0) నిజమైన లేబుల్స్, కాలమ్స్ (అక్షం 1) అంచనా లేబుల్స్. + +| | 0 | 1 | +| :---: | :---: | :---: | +| 0 | TN | FP | +| 1 | FN | TP | + +ఇక్కడ ఏమి జరుగుతోంది? మన మోడల్ పంప్కిన్లను రెండు ద్విభాగ వర్గాలుగా వర్గీకరించమని అడిగితే, 'వైట్' మరియు 'వైట్ కాదు' వర్గాలు. + +- మీ మోడల్ ఒక పంప్కిన్ ను 'వైట్ కాదు' అని అంచనా వేసి, అది నిజంగా 'వైట్ కాదు' వర్గానికి చెందితే, దాన్ని నిజమైన నెగటివ్ అంటాము, ఇది ఎడమ పై సంఖ్యతో చూపబడుతుంది. +- మీ మోడల్ ఒక పంప్కిన్ ను 'వైట్' అని అంచనా వేసి, అది నిజంగా 'వైట్ కాదు' వర్గానికి చెందితే, దాన్ని తప్పుడు పాజిటివ్ అంటాము, ఇది ఎడమ కింద సంఖ్యతో చూపబడుతుంది. +- మీ మోడల్ ఒక పంప్కిన్ ను 'వైట్ కాదు' అని అంచనా వేసి, అది నిజంగా 'వైట్' వర్గానికి చెందితే, దాన్ని తప్పుడు నెగటివ్ అంటాము, ఇది కుడి పై సంఖ్యతో చూపబడుతుంది. +- మీ మోడల్ ఒక పంప్కిన్ ను 'వైట్' అని అంచనా వేసి, అది నిజంగా 'వైట్' వర్గానికి చెందితే, దాన్ని నిజమైన పాజిటివ్ అంటాము, ఇది కుడి కింద సంఖ్యతో చూపబడుతుంది. +మీరు ఊహించినట్లుగా, నిజమైన పాజిటివ్స్ మరియు నిజమైన నెగటివ్స్ సంఖ్య ఎక్కువగా ఉండటం మరియు తప్పు పాజిటివ్స్ మరియు తప్పు నెగటివ్స్ సంఖ్య తక్కువగా ఉండటం మంచిది, ఇది మోడల్ మెరుగ్గా పనిచేస్తుందని సూచిస్తుంది. + +కన్ఫ్యూజన్ మ్యాట్రిక్స్ precision మరియు recall కు ఎలా సంబంధించిందో తెలుసుకుందాం? పైగా ప్రింట్ చేసిన classification report లో precision (0.85) మరియు recall (0.67) చూపించబడింది. + +Precision = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461 + +Recall = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666 + +✅ ప్రశ్న: కన్ఫ్యూజన్ మ్యాట్రిక్స్ ప్రకారం, మోడల్ ఎలా పని చేసింది? జవాబు: బాగుంది; నిజమైన నెగటివ్స్ మంచి సంఖ్యలో ఉన్నాయి కానీ కొన్ని తప్పు నెగటివ్స్ కూడా ఉన్నాయి. + +ముందుగా చూచిన పదాలను మళ్లీ చూడండి, కన్ఫ్యూజన్ మ్యాట్రిక్స్ లో TP/TN మరియు FP/FN మ్యాపింగ్ సహాయంతో: + +🎓 Precision: TP/(TP + FP) తిరిగి పొందిన ఉదాహరణలలో సంబంధిత ఉదాహరణల శాతం (ఉదా: ఏ లేబుల్స్ బాగా లేబుల్ చేయబడ్డాయో) + +🎓 Recall: TP/(TP + FN) సంబంధిత ఉదాహరణలలో తిరిగి పొందిన వాటి శాతం, బాగా లేబుల్ అయినా లేదా కాకపోయినా + +🎓 f1-score: (2 * precision * recall)/(precision + recall) precision మరియు recall యొక్క బరువు కలిగిన సగటు, ఉత్తమం 1 మరియు చెత్తది 0 + +🎓 Support: ప్రతి లేబుల్ తిరిగి పొందిన సందర్భాల సంఖ్య + +🎓 Accuracy: (TP + TN)/(TP + TN + FP + FN) నమూనా కోసం సరిగ్గా అంచనా వేసిన లేబుల్స్ శాతం + +🎓 Macro Avg: ప్రతి లేబుల్ కోసం బరువు లేని సగటు గణన, లేబుల్ అసమతుల్యతను పరిగణలోకి తీసుకోదు + +🎓 Weighted Avg: ప్రతి లేబుల్ కోసం సగటు గణన, లేబుల్ అసమతుల్యతను పరిగణలోకి తీసుకుని వాటి support (ప్రతి లేబుల్ కోసం నిజమైన ఉదాహరణల సంఖ్య) తో బరువు వేస్తుంది + +✅ మీరు మీ మోడల్ తప్పు నెగటివ్స్ సంఖ్యను తగ్గించాలని అనుకుంటే ఏ మెట్రిక్ ను గమనించాలి అనుకుంటున్నారా? + +## ఈ మోడల్ యొక్క ROC వక్రాన్ని దృశ్యీకరించండి + +[![ML for beginners - Analyzing Logistic Regression Performance with ROC Curves](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves") + +> 🎥 పై చిత్రాన్ని క్లిక్ చేసి ROC వక్రాలపై చిన్న వీడియో అవలోకనం చూడండి + +మరి ఒక దృశ్యీకరణ చేద్దాం, దీనిని 'ROC' వక్రం అంటారు: + +```python +from sklearn.metrics import roc_curve, roc_auc_score +import matplotlib +import matplotlib.pyplot as plt +%matplotlib inline + +y_scores = model.predict_proba(X_test) +fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1]) + +fig = plt.figure(figsize=(6, 6)) +plt.plot([0, 1], [0, 1], 'k--') +plt.plot(fpr, tpr) +plt.xlabel('False Positive Rate') +plt.ylabel('True Positive Rate') +plt.title('ROC Curve') +plt.show() +``` + +Matplotlib ఉపయోగించి, మోడల్ యొక్క [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) లేదా ROC ను ప్లాట్ చేయండి. ROC వక్రాలు తరచుగా క్లాసిఫయర్ అవుట్పుట్ ను నిజమైన మరియు తప్పు పాజిటివ్స్ పరంగా చూడటానికి ఉపయోగిస్తారు. "ROC వక్రాలు సాధారణంగా Y అక్షంపై నిజమైన పాజిటివ్ రేటును, X అక్షంపై తప్పు పాజిటివ్ రేటును చూపిస్తాయి." కాబట్టి వక్రం యొక్క తిప్పట మరియు మధ్య రేఖ మరియు వక్రం మధ్య ఉన్న స్థలం ముఖ్యం: మీరు త్వరగా పైకి వెళ్లి రేఖను దాటే వక్రం కావాలి. మన కేసులో, మొదట కొన్ని తప్పు పాజిటివ్స్ ఉన్నాయి, ఆ తర్వాత రేఖ సరిగ్గా పైకి వెళ్లి దాటుతుంది: + +![ROC](../../../../translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.te.png) + +చివరగా, Scikit-learn యొక్క [`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) ఉపయోగించి వాస్తవ 'Area Under the Curve' (AUC) ను లెక్కించండి: + +```python +auc = roc_auc_score(y_test,y_scores[:,1]) +print(auc) +``` +ఫలితం `0.9749908725812341`. AUC 0 నుండి 1 వరకు ఉంటుంది, మీరు పెద్ద స్కోరు కావాలి, ఎందుకంటే 100% సరిగ్గా అంచనా వేసే మోడల్ కు AUC 1 ఉంటుంది; ఈ సందర్భంలో, మోడల్ _చాలా బాగుంది_. + +భవిష్యత్తు తరగతుల్లో మీరు మీ మోడల్ స్కోర్లు మెరుగుపరచడానికి ఎలా పునరావృతం చేయాలో నేర్చుకుంటారు. కానీ ఇప్పటికీ, అభినందనలు! మీరు ఈ రిగ్రెషన్ పాఠాలు పూర్తి చేసారు! + +--- +## 🚀సవాలు + +లాజిస్టిక్ రిగ్రెషన్ గురించి ఇంకా చాలా తెలుసుకోవాల్సి ఉంది! కానీ నేర్చుకోవడానికి ఉత్తమ మార్గం ప్రయోగం చేయడం. ఈ రకమైన విశ్లేషణకు అనువైన డేటాసెట్ కనుగొని దానితో మోడల్ నిర్మించండి. మీరు ఏమి నేర్చుకుంటారు? సూచన: ఆసక్తికరమైన డేటాసెట్ల కోసం [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) ప్రయత్నించండి. + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +లాజిస్టిక్ రిగ్రెషన్ యొక్క కొన్ని ప్రాక్టికల్ ఉపయోగాలపై [స్టాన్‌ఫర్డ్ నుండి ఈ పేపర్](https://web.stanford.edu/~jurafsky/slp3/5.pdf) మొదటి కొన్ని పేజీలను చదవండి. ఇప్పటివరకు నేర్చుకున్న రిగ్రెషన్ పనులలో ఏది ఏ పనికి బాగా సరిపోతుందో ఆలోచించండి. ఏది ఉత్తమంగా పనిచేస్తుంది? + +## అసైన్‌మెంట్ + +[ఈ రిగ్రెషన్ మళ్లీ ప్రయత్నించడం](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/2-Regression/4-Logistic/assignment.md b/translations/te/2-Regression/4-Logistic/assignment.md new file mode 100644 index 000000000..b8c2c7a35 --- /dev/null +++ b/translations/te/2-Regression/4-Logistic/assignment.md @@ -0,0 +1,26 @@ + +# కొంత రిగ్రెషన్ మళ్లీ ప్రయత్నించడం + +## సూచనలు + +పాఠంలో, మీరు పంప్కిన్ డేటా యొక్క ఒక ఉపసమితిని ఉపయోగించారు. ఇప్పుడు, అసలు డేటాకు తిరిగి వెళ్లి, దాన్ని శుభ్రపరిచి మరియు ప్రమాణీకరించి, మొత్తం డేటాను ఉపయోగించి లాజిస్టిక్ రిగ్రెషన్ మోడల్ నిర్మించడానికి ప్రయత్నించండి. +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైనది | సరిపడినది | మెరుగుదల అవసరం | +| -------- | ----------------------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------- | +| | బాగా వివరించబడిన మరియు బాగా పనిచేసే మోడల్ ఉన్న నోట్‌బుక్ అందించబడింది | కనీసంగా పనిచేసే మోడల్ ఉన్న నోట్‌బుక్ అందించబడింది | తక్కువ పనితీరు గల మోడల్ లేదా మోడల్ లేని నోట్‌బుక్ అందించబడింది | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/2-Regression/4-Logistic/notebook.ipynb b/translations/te/2-Regression/4-Logistic/notebook.ipynb new file mode 100644 index 000000000..f7163eb5e --- /dev/null +++ b/translations/te/2-Regression/4-Logistic/notebook.ipynb @@ -0,0 +1,269 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## పంప్కిన్ రకాలు మరియు రంగు\n", + "\n", + "అవసరమైన లైబ్రరీలు మరియు డేటాసెట్‌ను లోడ్ చేయండి. డేటాను ఒక డేటాఫ్రేమ్‌గా మార్చండి, ఇది డేటా యొక్క ఉపసమితిని కలిగి ఉంటుంది:\n", + "\n", + "రంగు మరియు రకం మధ్య సంబంధాన్ని చూద్దాం\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade Date \\\n", + "0 BALTIMORE NaN 24 inch bins NaN NaN NaN 4/29/17 \n", + "1 BALTIMORE NaN 24 inch bins NaN NaN NaN 5/6/17 \n", + "2 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "3 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "4 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 11/5/16 \n", + "\n", + " Low Price High Price Mostly Low ... Unit of Sale Quality Condition \\\n", + "0 270.0 280.0 270.0 ... NaN NaN NaN \n", + "1 270.0 280.0 270.0 ... NaN NaN NaN \n", + "2 160.0 160.0 160.0 ... NaN NaN NaN \n", + "3 160.0 160.0 160.0 ... NaN NaN NaN \n", + "4 90.0 100.0 90.0 ... NaN NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 Unnamed: 25 \n", + "0 NaN NaN NaN E NaN NaN NaN \n", + "1 NaN NaN NaN E NaN NaN NaN \n", + "2 NaN NaN NaN N NaN NaN NaN \n", + "3 NaN NaN NaN N NaN NaN NaN \n", + "4 NaN NaN NaN N NaN NaN NaN \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "full_pumpkins = pd.read_csv('../data/US-pumpkins.csv')\n", + "\n", + "full_pumpkins.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "dee08c2b49057b0de8b6752c4dbca368", + "translation_date": "2025-12-19T16:18:23+00:00", + "source_file": "2-Regression/4-Logistic/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/te/2-Regression/4-Logistic/solution/Julia/README.md b/translations/te/2-Regression/4-Logistic/solution/Julia/README.md new file mode 100644 index 000000000..eee3ed623 --- /dev/null +++ b/translations/te/2-Regression/4-Logistic/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ఇది తాత్కాలిక ప్లేస్‌హోల్డర్. + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb b/translations/te/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb new file mode 100644 index 000000000..845cf8450 --- /dev/null +++ b/translations/te/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb @@ -0,0 +1,686 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## లాజిస్టిక్ రిగ్రెషన్ మోడల్ నిర్మాణం - పాఠం 4\n", + "\n", + "![లాజిస్టిక్ vs. లీనియర్ రిగ్రెషన్ ఇన్ఫోగ్రాఫిక్](../../../../../../translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.te.png)\n", + "\n", + "#### **[పూర్వ-ఉపన్యాస క్విజ్](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/15/)**\n", + "\n", + "#### పరిచయం\n", + "\n", + "రిగ్రెషన్ పై ఈ చివరి పాఠంలో, ఒక ప్రాథమిక *క్లాసిక్* ఎంఎల్ సాంకేతికత అయిన లాజిస్టిక్ రిగ్రెషన్‌ను పరిశీలిస్తాము. మీరు ఈ సాంకేతికతను ద్విభాగ వర్గీకరణలను అంచనా వేయడానికి ఉపయోగిస్తారు. ఈ కాండీ చాక్లెట్ కాదా? ఈ వ్యాధి సంక్రమణీయమా? ఈ కస్టమర్ ఈ ఉత్పత్తిని ఎంచుకుంటాడా?\n", + "\n", + "ఈ పాఠంలో, మీరు నేర్చుకుంటారు:\n", + "\n", + "- లాజిస్టిక్ రిగ్రెషన్ సాంకేతికతలు\n", + "\n", + "✅ ఈ రకమైన రిగ్రెషన్‌తో పని చేయడంపై మీ అవగాహనను ఈ [Learn module](https://learn.microsoft.com/training/modules/introduction-classification-models/?WT.mc_id=academic-77952-leestott) లో మరింత లోతుగా తెలుసుకోండి\n", + "\n", + "## ముందస్తు అవసరాలు\n", + "\n", + "పంప్కిన్ డేటాతో పని చేసినందున, ఇప్పుడు మనకు ఒక ద్విభాగ వర్గం ఉందని తెలుసు: `Color`.\n", + "\n", + "కొన్ని వేరియబుల్స్ ఇచ్చినప్పుడు, *ఏ రంగులో ఉండే అవకాశం ఉన్నదో* (ఆరెంజ్ 🎃 లేదా వైట్ 👻) అంచనా వేయడానికి లాజిస్టిక్ రిగ్రెషన్ మోడల్ నిర్మిద్దాం.\n", + "\n", + "> రిగ్రెషన్ గురించి ఉన్న పాఠం సమూహంలో ద్విభాగ వర్గీకరణ గురించి ఎందుకు మాట్లాడుతున్నాం? భాషా సౌలభ్యం కోసం మాత్రమే, ఎందుకంటే లాజిస్టిక్ రిగ్రెషన్ [నిజానికి వర్గీకరణ పద్ధతి](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), అయినప్పటికీ ఇది లీనియర్ ఆధారితది. తదుపరి పాఠం సమూహంలో డేటాను వర్గీకరించే ఇతర మార్గాలను తెలుసుకోండి.\n", + "\n", + "ఈ పాఠం కోసం, క్రింది ప్యాకేజీలు అవసరం:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) అనేది డేటా సైన్స్‌ను వేగవంతం, సులభం మరియు మరింత సరదాగా చేయడానికి రూపొందించిన [R ప్యాకేజీల సేకరణ](https://www.tidyverse.org/packages)!\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ఫ్రేమ్‌వర్క్ అనేది మోడలింగ్ మరియు మెషీన్ లెర్నింగ్ కోసం [ప్యాకేజీల సేకరణ](https://www.tidymodels.org/packages/)!\n", + "\n", + "- `janitor`: [janitor ప్యాకేజీ](https://github.com/sfirke/janitor) మురికి డేటాను పరిశీలించడానికి మరియు శుభ్రం చేయడానికి సులభమైన సాధనాలు అందిస్తుంది.\n", + "\n", + "- `ggbeeswarm`: [ggbeeswarm ప్యాకేజీ](https://github.com/eclarke/ggbeeswarm) ggplot2 ఉపయోగించి బీస్వార్మ్-స్టైల్ ప్లాట్లను సృష్టించడానికి పద్ధతులు అందిస్తుంది.\n", + "\n", + "మీరు వాటిని ఇన్‌స్టాల్ చేసుకోవచ్చు:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"janitor\", \"ggbeeswarm\"))`\n", + "\n", + "వేరే విధంగా, క్రింది స్క్రిప్ట్ ఈ మాడ్యూల్ పూర్తి చేయడానికి అవసరమైన ప్యాకేజీలు మీ వద్ద ఉన్నాయా లేదా అని తనిఖీ చేసి, లేనప్పుడు వాటిని ఇన్‌స్టాల్ చేస్తుంది.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\n", + "\n", + "pacman::p_load(tidyverse, tidymodels, janitor, ggbeeswarm)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **ప్రశ్నను నిర్వచించండి**\n", + "\n", + "మా ప్రయోజనాల కోసం, దీన్ని బైనరీగా వ్యక్తం చేస్తాము: 'తెల్ల' లేదా 'తెల్ల కాదు'. మా డేటాసెట్‌లో 'పట్టుదల' అనే వర్గం కూడా ఉంది కానీ దాని ఉదాహరణలు చాలా తక్కువగా ఉన్నందున, దాన్ని ఉపయోగించము. డేటాసెట్ నుండి నల్ విలువలను తీసివేస్తే అది కనుమరుగవుతుంది.\n", + "\n", + "> 🎃 సరదా విషయం, మేము కొన్నిసార్లు తెల్ల పండ్లను 'భూతం' పండ్లుగా పిలుస్తాము. అవి తీయడం చాలా సులభం కాదు, అందువల్ల అవి ఆరెంజ్ పండ్లంతా ప్రాచుర్యం పొందలేదు కానీ అవి చల్లగా కనిపిస్తాయి! కాబట్టి మేము మా ప్రశ్నను ఇలా కూడా పునఃరూపకల్పన చేయవచ్చు: 'భూతం' లేదా 'భూతం కాదు'. 👻\n", + "\n", + "## **లాజిస్టిక్ రిగ్రెషన్ గురించి**\n", + "\n", + "లాజిస్టిక్ రిగ్రెషన్, మీరు ముందుగా నేర్చుకున్న లీనియర్ రిగ్రెషన్ నుండి కొన్ని ముఖ్యమైన మార్గాల్లో భిన్నంగా ఉంటుంది.\n", + "\n", + "#### **బైనరీ వర్గీకరణ**\n", + "\n", + "లాజిస్టిక్ రిగ్రెషన్ లీనియర్ రిగ్రెషన్ వంటి లక్షణాలను అందించదు. ముందటి ఒక `బైనరీ వర్గం` (\"ఆరెంజ్ లేదా ఆరెంజ్ కాదు\") గురించి అంచనాను అందిస్తుంది, అయితే తర్వాతి `కొనసాగుతున్న విలువలను` అంచనా వేయగలదు, ఉదాహరణకు పండ్ల ఉత్పత్తి ప్రాంతం మరియు కోత సమయం ఇచ్చినప్పుడు, *దాని ధర ఎంత పెరుగుతుంది*.\n", + "\n", + "![Infographic by Dasani Madipalli](../../../../../../translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.te.png)\n", + "\n", + "### ఇతర వర్గీకరణలు\n", + "\n", + "మల్టినోమియల్ మరియు ఆర్డినల్ సహా ఇతర రకాల లాజిస్టిక్ రిగ్రెషన్ ఉన్నాయి:\n", + "\n", + "- **మల్టినోమియల్**, ఇది ఒక కంటే ఎక్కువ వర్గాలు కలిగి ఉంటుంది - \"ఆరెంజ్, తెల్ల, మరియు పట్టుదల\".\n", + "\n", + "- **ఆర్డినల్**, ఇది క్రమబద్ధమైన వర్గాలను కలిగి ఉంటుంది, మన ఫలితాలను తార్కికంగా క్రమబద్ధీకరించాలనుకుంటే ఉపయోగపడుతుంది, ఉదాహరణకు మన పండ్లు పరిమాణాల పరిమిత సంఖ్య (మినీ, చిన్న, మధ్య, పెద్ద, ఎక్స్ ఎల్, ఎక్స్ ఎక్స్ ఎల్) ద్వారా క్రమబద్ధీకరించబడ్డాయి.\n", + "\n", + "![Multinomial vs ordinal regression](../../../../../../translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.te.png)\n", + "\n", + "#### **వేరియబుల్స్ అనుసంధానం అవసరం లేదు**\n", + "\n", + "లీనియర్ రిగ్రెషన్ ఎక్కువ అనుసంధానమైన వేరియబుల్స్‌తో మెరుగ్గా పనిచేస్తుందని గుర్తుంచుకోండి? లాజిస్టిక్ రిగ్రెషన్ మాత్రం విరుద్ధం - వేరియబుల్స్ సరిపోవాల్సిన అవసరం లేదు. ఇది కొంతమేర బలహీన అనుసంధానాలు ఉన్న ఈ డేటాకు సరిపోతుంది.\n", + "\n", + "#### **మీకు చాలా శుభ్రమైన డేటా అవసరం**\n", + "\n", + "లాజిస్టిక్ రిగ్రెషన్ ఎక్కువ డేటా ఉపయోగిస్తే మరింత ఖచ్చితమైన ఫలితాలను ఇస్తుంది; మా చిన్న డేటాసెట్ ఈ పనికి అనుకూలం కాదు, కాబట్టి దాన్ని గమనించండి.\n", + "\n", + "✅ లాజిస్టిక్ రిగ్రెషన్‌కు బాగా సరిపోయే డేటా రకాల గురించి ఆలోచించండి\n", + "\n", + "## వ్యాయామం - డేటాను శుభ్రం చేయండి\n", + "\n", + "ముందుగా, డేటాను కొంత శుభ్రం చేయండి, నల్ విలువలను తీసివేసి కొన్ని కాలమ్స్ మాత్రమే ఎంచుకోండి:\n", + "\n", + "1. క్రింది కోడ్‌ను జోడించండి:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Load the core tidyverse packages\n", + "library(tidyverse)\n", + "\n", + "# Import the data and clean column names\n", + "pumpkins <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/2-Regression/data/US-pumpkins.csv\") %>% \n", + " clean_names()\n", + "\n", + "# Select desired columns\n", + "pumpkins_select <- pumpkins %>% \n", + " select(c(city_name, package, variety, origin, item_size, color)) \n", + "\n", + "# Drop rows containing missing values and encode color as factor (category)\n", + "pumpkins_select <- pumpkins_select %>% \n", + " drop_na() %>% \n", + " mutate(color = factor(color))\n", + "\n", + "# View the first few rows\n", + "pumpkins_select %>% \n", + " slice_head(n = 5)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "మీ కొత్త డేటాఫ్రేమ్‌ను ఎప్పుడైనా ఒకసారి చూడవచ్చు, క్రింద చూపినట్లుగా [*glimpse()*](https://pillar.r-lib.org/reference/glimpse.html) ఫంక్షన్‌ను ఉపయోగించి:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "pumpkins_select %>% \n", + " glimpse()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "మనం నిజంగా బైనరీ వర్గీకరణ సమస్యను చేయబోతున్నామనే దాన్ని నిర్ధారిద్దాం:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Subset distinct observations in outcome column\n", + "pumpkins_select %>% \n", + " distinct(color)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### విజువలైజేషన్ - వర్గీకృత ప్లాట్\n", + "ఇప్పటికే మీరు మళ్లీ పంప్కిన్ డేటాను లోడ్ చేసి, కొన్ని వేరియబుల్స్‌ను, వాటిలో కలర్‌ను కూడా కలిగి ఉన్న డేటాసెట్‌ను సంరక్షించడానికి శుభ్రపరిచారు. ggplot లైబ్రరీని ఉపయోగించి నోట్‌బుక్‌లో డేటాఫ్రేమ్‌ను విజువలైజ్ చేద్దాం.\n", + "\n", + "ggplot లైబ్రరీ మీ డేటాను విజువలైజ్ చేయడానికి కొన్ని చక్కటి మార్గాలను అందిస్తుంది. ఉదాహరణకు, మీరు వర్గీకృత ప్లాట్‌లో ప్రతి Variety మరియు Color కోసం డేటా పంపిణీలను పోల్చవచ్చు.\n", + "\n", + "1. geombar ఫంక్షన్‌ను ఉపయోగించి, మా పంప్కిన్ డేటాను ఉపయోగించి, ప్రతి పంప్కిన్ వర్గం (ఆరెంజ్ లేదా వైట్) కోసం కలర్ మ్యాపింగ్‌ను నిర్దేశిస్తూ అలాంటి ప్లాట్‌ను సృష్టించండి:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "python" + } + }, + "outputs": [], + "source": [ + "# Specify colors for each value of the hue variable\n", + "palette <- c(ORANGE = \"orange\", WHITE = \"wheat\")\n", + "\n", + "# Create the bar plot\n", + "ggplot(pumpkins_select, aes(y = variety, fill = color)) +\n", + " geom_bar(position = \"dodge\") +\n", + " scale_fill_manual(values = palette) +\n", + " labs(y = \"Variety\", fill = \"Color\") +\n", + " theme_minimal()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "డేటాను పరిశీలించడం ద్వారా, మీరు కలర్ డేటా వేరైటీకి ఎలా సంబంధించిందో చూడవచ్చు.\n", + "\n", + "✅ ఈ వర్గీకరణ ప్లాట్ ఇచ్చినప్పుడు, మీరు ఊహించగల కొన్ని ఆసక్తికరమైన అన్వేషణలు ఏమిటి?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### డేటా ప్రీ-ప్రాసెసింగ్: ఫీచర్ ఎంకోడింగ్\n", + "\n", + "మన పంప్కిన్స్ డేటాసెట్‌లో అన్ని కాలమ్స్‌కు స్ట్రింగ్ విలువలు ఉన్నాయి. వర్గీకృత డేటాతో పని చేయడం మనుషులకు సులభం కానీ యంత్రాలకు కాదు. యంత్ర అభ్యాస అల్గోరిథమ్స్ సంఖ్యలతో బాగా పనిచేస్తాయి. అందుకే ఎంకోడింగ్ డేటా ప్రీ-ప్రాసెసింగ్ దశలో చాలా ముఖ్యమైన దశ, ఎందుకంటే ఇది వర్గీకృత డేటాను సంఖ్యాత్మక డేటాగా మార్చడానికి సహాయపడుతుంది, ఎలాంటి సమాచారం కోల్పోకుండా. మంచి ఎంకోడింగ్ మంచి మోడల్ నిర్మాణానికి దారితీస్తుంది.\n", + "\n", + "ఫీచర్ ఎంకోడింగ్ కోసం రెండు ప్రధాన రకాల ఎంకోడర్లు ఉన్నాయి:\n", + "\n", + "1. ఆర్డినల్ ఎంకోడర్: ఇది ఆర్డినల్ వేరియబుల్స్‌కు బాగా సరిపోతుంది, ఇవి వర్గీకృత వేరియబుల్స్, వాటి డేటా తార్కిక క్రమాన్ని అనుసరిస్తుంది, మన డేటాసెట్‌లోని `item_size` కాలమ్ లాగా. ఇది ప్రతి వర్గాన్ని ఒక సంఖ్యతో ప్రతినిధ్యం చేస్తుంది, అది ఆ వర్గం కాలమ్‌లో ఉన్న క్రమం.\n", + "\n", + "2. వర్గీకృత ఎంకోడర్: ఇది నామినల్ వేరియబుల్స్‌కు బాగా సరిపోతుంది, ఇవి వర్గీకృత వేరియబుల్స్, వాటి డేటా తార్కిక క్రమాన్ని అనుసరించదు, మన డేటాసెట్‌లో `item_size` తప్ప అన్ని ఫీచర్ల లాగా. ఇది వన్-హాట్ ఎంకోడింగ్, అంటే ప్రతి వర్గం ఒక బైనరీ కాలమ్‌తో ప్రతినిధ్యం చేయబడుతుంది: ఎంకోడెడ్ వేరియబుల్ 1 అవుతుంది ఆ పంప్కిన్ ఆ వేరియటీకి చెందితే, లేకపోతే 0.\n", + "\n", + "Tidymodels మరో మంచి ప్యాకేజీని అందిస్తుంది: [recipes](https://recipes.tidymodels.org/) - డేటాను ప్రీప్రాసెస్ చేయడానికి ప్యాకేజీ. మనం ఒక `recipe` నిర్వచిస్తాము, ఇది అన్ని ప్రిడిక్టర్ కాలమ్స్‌ను ఒక సెట్ సంఖ్యలుగా ఎంకోడ్ చేయాలని సూచిస్తుంది, `prep` ద్వారా అవసరమైన పరిమాణాలు మరియు గణాంకాలను అంచనా వేస్తుంది, చివరగా `bake` ద్వారా కొత్త డేటాకు ఆ గణనలను వర్తింపజేస్తుంది.\n", + "\n", + "> సాధారణంగా, recipes మోడలింగ్ కోసం ప్రీప్రాసెసర్‌గా ఉపయోగిస్తారు, ఇది డేటా సెట్‌పై ఏ దశలు వర్తించాలో నిర్వచిస్తుంది, మోడలింగ్‌కు సిద్ధం చేయడానికి. ఆ సందర్భంలో మీరు `workflow()` ఉపయోగించడం **అత్యంత సిఫార్సు** చేయబడుతుంది, మానవీయంగా prep మరియు bake ఉపయోగించి recipe అంచనా వేయడం కాకుండా. మనం ఈ విషయాలను కొద్దిసేపట్లో చూడబోతున్నాము.\n", + ">\n", + "> అయితే ఇప్పటికీ, మనం recipes + prep + bake ఉపయోగించి డేటా విశ్లేషణకు సిద్ధం చేయడానికి ఏ దశలు వర్తించాలో సూచిస్తున్నాము, ఆ దశలు వర్తించిన ప్రీప్రాసెస్ చేసిన డేటాను తీసుకోవడానికి.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Preprocess and extract data to allow some data analysis\n", + "baked_pumpkins <- recipe(color ~ ., data = pumpkins_select) %>%\n", + " # Define ordering for item_size column\n", + " step_mutate(item_size = ordered(item_size, levels = c('sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo'))) %>%\n", + " # Convert factors to numbers using the order defined above (Ordinal encoding)\n", + " step_integer(item_size, zero_based = F) %>%\n", + " # Encode all other predictors using one hot encoding\n", + " step_dummy(all_nominal(), -all_outcomes(), one_hot = TRUE) %>%\n", + " prep(data = pumpkin_select) %>%\n", + " bake(new_data = NULL)\n", + "\n", + "# Display the first few rows of preprocessed data\n", + "baked_pumpkins %>% \n", + " slice_head(n = 5)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "✅ ఐటెమ్ సైజ్ కాలమ్ కోసం ఆర్డినల్ ఎంకోడర్ ఉపయోగించడంలో有哪些 లాభాలు?\n", + "\n", + "### వేరియబుల్స్ మధ్య సంబంధాలను విశ్లేషించండి\n", + "\n", + "ఇప్పుడు మనం మన డేటాను ప్రీ-ప్రాసెస్ చేసినందున, ఫీచర్లు మరియు లేబుల్ మధ్య సంబంధాలను విశ్లేషించి, ఫీచర్లు ఇచ్చినప్పుడు మోడల్ లేబుల్‌ను ఎంత బాగా అంచనా వేయగలదో అర్థం చేసుకోవచ్చు. ఈ రకమైన విశ్లేషణను చేయడానికి ఉత్తమ మార్గం డేటాను ప్లాట్ చేయడం. \n", + "మనం మళ్లీ ggplot geom_boxplot_ ఫంక్షన్‌ను ఉపయోగించి, ఐటెమ్ సైజ్, వైవిధ్యం మరియు రంగు మధ్య సంబంధాలను వర్గీకృత ప్లాట్‌లో చూడబోతున్నాము. డేటాను మెరుగ్గా ప్లాట్ చేయడానికి, మనం ఎంకోడెడ్ ఐటెమ్ సైజ్ కాలమ్ మరియు ఎంకోడెడ్ కాని వైవిధ్యం కాలమ్‌ను ఉపయోగించబోతున్నాము.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Define the color palette\n", + "palette <- c(ORANGE = \"orange\", WHITE = \"wheat\")\n", + "\n", + "# We need the encoded Item Size column to use it as the x-axis values in the plot\n", + "pumpkins_select_plot<-pumpkins_select\n", + "pumpkins_select_plot$item_size <- baked_pumpkins$item_size\n", + "\n", + "# Create the grouped box plot\n", + "ggplot(pumpkins_select_plot, aes(x = `item_size`, y = color, fill = color)) +\n", + " geom_boxplot() +\n", + " facet_grid(variety ~ ., scales = \"free_x\") +\n", + " scale_fill_manual(values = palette) +\n", + " labs(x = \"Item Size\", y = \"\") +\n", + " theme_minimal() +\n", + " theme(strip.text = element_text(size = 12)) +\n", + " theme(axis.text.x = element_text(size = 10)) +\n", + " theme(axis.title.x = element_text(size = 12)) +\n", + " theme(axis.title.y = element_blank()) +\n", + " theme(legend.position = \"bottom\") +\n", + " guides(fill = guide_legend(title = \"Color\")) +\n", + " theme(panel.spacing = unit(0.5, \"lines\"))+\n", + " theme(strip.text.y = element_text(size = 4, hjust = 0)) \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### స్వార్మ్ ప్లాట్ ఉపయోగించండి\n", + "\n", + "రంగు ఒక ద్విముఖి వర్గం (తెల్లటి లేదా కాదు) కావడంతో, దాన్ని విజువలైజేషన్ కోసం 'ఒక [ప్రత్యేక విధానం](https://github.com/rstudio/cheatsheets/blob/main/data-visualization.pdf)' అవసరం.\n", + "\n", + "రంగు మరియు item_size సంబంధిత పంపిణీని చూపించడానికి `swarm plot` ప్రయత్నించండి.\n", + "\n", + "మేము [ggbeeswarm ప్యాకేజ్](https://github.com/eclarke/ggbeeswarm) ఉపయోగించబోతున్నాము, ఇది ggplot2 ఉపయోగించి బీస్వార్మ్-శైలి ప్లాట్లను సృష్టించడానికి పద్ధతులను అందిస్తుంది. బీస్వార్మ్ ప్లాట్లు సాధారణంగా ఒకదానితో ఒకటి ముడిపడే పాయింట్లను పక్కపక్కన పడేలా చూపించే విధానం.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Create beeswarm plots of color and item_size\n", + "baked_pumpkins %>% \n", + " mutate(color = factor(color)) %>% \n", + " ggplot(mapping = aes(x = color, y = item_size, color = color)) +\n", + " geom_quasirandom() +\n", + " scale_color_brewer(palette = \"Dark2\", direction = -1) +\n", + " theme(legend.position = \"none\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ఇప్పుడు మనకు రంగు యొక్క ద్విభాగ వర్గాలు మరియు పెద్ద పరిమాణాల సమూహం మధ్య సంబంధం గురించి ఒక ఆలోచన ఉన్నందున, ఒక నిర్దిష్ట పంప్కిన్ యొక్క సాధ్యమైన రంగును నిర్ణయించడానికి లాజిస్టిక్ రిగ్రెషన్‌ను పరిశీలిద్దాం.\n", + "\n", + "## మీ మోడల్‌ను నిర్మించండి\n", + "\n", + "మీ వర్గీకరణ మోడల్‌లో ఉపయోగించాలనుకునే వేరియబుల్స్‌ను ఎంచుకుని, డేటాను శిక్షణ మరియు పరీక్ష సెట్లుగా విభజించండి. [rsample](https://rsample.tidymodels.org/), Tidymodels‌లో ఒక ప్యాకేజ్, సమర్థవంతమైన డేటా విభజన మరియు రీసాంప్లింగ్ కోసం మౌలిక సదుపాయాలను అందిస్తుంది:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Split data into 80% for training and 20% for testing\n", + "set.seed(2056)\n", + "pumpkins_split <- pumpkins_select %>% \n", + " initial_split(prop = 0.8)\n", + "\n", + "# Extract the data in each split\n", + "pumpkins_train <- training(pumpkins_split)\n", + "pumpkins_test <- testing(pumpkins_split)\n", + "\n", + "# Print out the first 5 rows of the training set\n", + "pumpkins_train %>% \n", + " slice_head(n = 5)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "🙌 మేము ఇప్పుడు శిక్షణ ఫీచర్లను శిక్షణ లేబుల్ (రంగు) కు సరిపోల్చడం ద్వారా ఒక మోడల్‌ను శిక్షణ ఇవ్వడానికి సిద్ధంగా ఉన్నాము.\n", + "\n", + "మోడలింగ్‌కు సిద్ధం చేసుకోవడానికి మా డేటాపై నిర్వహించాల్సిన ప్రీప్రాసెసింగ్ దశలను నిర్దేశించే ఒక రెసిపీని సృష్టించడం ప్రారంభిస్తాము అంటే: వర్గీకృత వేరియబుల్స్‌ను ఒక సెట్ ఇంటిజర్లుగా ఎంకోడ్ చేయడం. `baked_pumpkins` లాగా, మేము ఒక `pumpkins_recipe` సృష్టిస్తాము కానీ దాన్ని `prep` మరియు `bake` చేయము ఎందుకంటే అది ఒక వర్క్‌ఫ్లోలో బండిల్ చేయబడుతుంది, మీరు కొన్ని దశలలోనే చూడబోతున్నారు.\n", + "\n", + "Tidymodels లో లాజిస్టిక్ రిగ్రెషన్ మోడల్‌ను నిర్దేశించడానికి అనేక మార్గాలు ఉన్నాయి. `?logistic_reg()` చూడండి. ప్రస్తుతానికి, మేము డిఫాల్ట్ `stats::glm()` ఇంజిన్ ద్వారా లాజిస్టిక్ రిగ్రెషన్ మోడల్‌ను నిర్దేశిస్తాము.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Create a recipe that specifies preprocessing steps for modelling\n", + "pumpkins_recipe <- recipe(color ~ ., data = pumpkins_train) %>% \n", + " step_mutate(item_size = ordered(item_size, levels = c('sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo'))) %>%\n", + " step_integer(item_size, zero_based = F) %>% \n", + " step_dummy(all_nominal(), -all_outcomes(), one_hot = TRUE)\n", + "\n", + "# Create a logistic model specification\n", + "log_reg <- logistic_reg() %>% \n", + " set_engine(\"glm\") %>% \n", + " set_mode(\"classification\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ఇప్పుడు మనకు ఒక రెసిపీ మరియు ఒక మోడల్ స్పెసిఫికేషన్ ఉన్నప్పుడు, వాటిని ఒక ఆబ్జెక్ట్‌గా బండిల్ చేయడానికి ఒక మార్గాన్ని కనుగొనాలి, ఇది మొదట డేటాను ప్రీప్రాసెస్ చేస్తుంది (ప్రీప్+బేక్ వెనుకన ఉన్నవి), ప్రీప్రాసెస్ చేసిన డేటాపై మోడల్‌ను ఫిట్ చేస్తుంది మరియు పోస్ట్-ప్రాసెసింగ్ కార్యకలాపాలకు కూడా అనుమతిస్తుంది.\n", + "\n", + "Tidymodelsలో, ఈ సౌకర్యవంతమైన ఆబ్జెక్ట్‌ను [`workflow`](https://workflows.tidymodels.org/) అని పిలుస్తారు మరియు ఇది మీ మోడలింగ్ భాగాలను సౌకర్యవంతంగా కలిగి ఉంటుంది.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Bundle modelling components in a workflow\n", + "log_reg_wf <- workflow() %>% \n", + " add_recipe(pumpkins_recipe) %>% \n", + " add_model(log_reg)\n", + "\n", + "# Print out the workflow\n", + "log_reg_wf\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ఒక వర్క్‌ఫ్లో *నిర్దేశించబడిన* తర్వాత, ఒక మోడల్‌ను [`fit()`](https://tidymodels.github.io/parsnip/reference/fit.html) ఫంక్షన్ ఉపయోగించి `శిక్షణ` ఇవ్వవచ్చు. వర్క్‌ఫ్లో ఒక రెసిపీని అంచనా వేస్తుంది మరియు శిక్షణకు ముందు డేటాను ప్రీప్రాసెస్ చేస్తుంది, కాబట్టి మనం prep మరియు bake ఉపయోగించి అది చేయాల్సిన అవసరం ఉండదు.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Train the model\n", + "wf_fit <- log_reg_wf %>% \n", + " fit(data = pumpkins_train)\n", + "\n", + "# Print the trained workflow\n", + "wf_fit\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "మోడల్ ప్రింట్ అవుట్ శిక్షణ సమయంలో నేర్చుకున్న గుణకాలను చూపిస్తుంది.\n", + "\n", + "ఇప్పుడు మేము శిక్షణ డేటాను ఉపయోగించి మోడల్‌ను శిక్షణ ఇచ్చినందున, [parsnip::predict()](https://parsnip.tidymodels.org/reference/predict.model_fit.html) ఉపయోగించి పరీక్షా డేటాపై అంచనాలు చేయవచ్చు. మన పరీక్షా సెట్ కోసం లేబుల్స్ మరియు ప్రతి లేబుల్ కోసం సంభావ్యతలను అంచనా వేయడానికి మోడల్‌ను ఉపయోగించడం ప్రారంభిద్దాం. సంభావ్యత 0.5 కంటే ఎక్కువగా ఉన్నప్పుడు, అంచనా తరగతి `WHITE` అవుతుంది, లేకపోతే `ORANGE`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Make predictions for color and corresponding probabilities\n", + "results <- pumpkins_test %>% select(color) %>% \n", + " bind_cols(wf_fit %>% \n", + " predict(new_data = pumpkins_test)) %>%\n", + " bind_cols(wf_fit %>%\n", + " predict(new_data = pumpkins_test, type = \"prob\"))\n", + "\n", + "# Compare predictions\n", + "results %>% \n", + " slice_head(n = 10)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "చాలా బాగుంది! ఇది లాజిస్టిక్ రిగ్రెషన్ ఎలా పనిచేస్తుందో మరింత అవగాహనను అందిస్తుంది.\n", + "\n", + "### గందరగోళ మ్యాట్రిక్స్ ద్వారా మెరుగైన అవగాహన\n", + "\n", + "ప్రతి అంచనాను దాని సంబంధిత \"గ్రౌండ్ ట్రూత్\" వాస్తవ విలువతో పోల్చడం మోడల్ ఎంత బాగా అంచనా వేస్తుందో నిర్ణయించడానికి చాలా సమర్థవంతమైన మార్గం కాదు. అదృష్టవశాత్తు, Tidymodels వద్ద మరికొన్ని చిట్కాలు ఉన్నాయి: [`yardstick`](https://yardstick.tidymodels.org/) - పనితీరు ప్రమాణాలను ఉపయోగించి మోడల్స్ యొక్క సమర్థతను కొలవడానికి ఉపయోగించే ప్యాకేజ్.\n", + "\n", + "వర్గీకరణ సమస్యలకు సంబంధించిన ఒక పనితీరు ప్రమాణం [`confusion matrix`](https://wikipedia.org/wiki/Confusion_matrix). ఒక గందరగోళ మ్యాట్రిక్స్ వర్గీకరణ మోడల్ ఎంత బాగా పనిచేస్తుందో వివరిస్తుంది. ఒక గందరగోళ మ్యాట్రిక్స్ ప్రతి తరగతిలో ఎన్ని ఉదాహరణలు మోడల్ సరిగ్గా వర్గీకరించిందో పట్టిక రూపంలో చూపిస్తుంది. మన సందర్భంలో, ఇది ఎన్ని నారింజ పండ్లు నారింజగా వర్గీకరించబడ్డాయో మరియు ఎన్ని తెల్ల పండ్లు తెల్లగా వర్గీకరించబడ్డాయో చూపిస్తుంది; గందరగోళ మ్యాట్రిక్స్ మీరు ఎన్ని తప్పు వర్గాలలో వర్గీకరించబడ్డాయో కూడా చూపిస్తుంది.\n", + "\n", + "yardstick నుండి [**`conf_mat()`**](https://tidymodels.github.io/yardstick/reference/conf_mat.html) ఫంక్షన్ ఈ గమనించిన మరియు అంచనా వర్గాల క్రాస్-టాబ్యులేషన్‌ను లెక్కిస్తుంది.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Confusion matrix for prediction results\n", + "conf_mat(data = results, truth = color, estimate = .pred_class)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "మనం కాంఫ్యూజన్ మ్యాట్రిక్స్‌ను అర్థం చేసుకుందాం. మన మోడల్‌ను రెండు బైనరీ వర్గాలుగా పంప్కిన్లను వర్గీకరించమని అడిగారు, వర్గం `white` మరియు వర్గం `not-white`\n", + "\n", + "- మీ మోడల్ ఒక పంప్కిన్‌ను white గా అంచనా వేస్తే మరియు అది వాస్తవానికి 'white' వర్గానికి చెందితే, దాన్ని `true positive` అంటాము, ఇది పై ఎడమ సంఖ్య ద్వారా చూపబడుతుంది.\n", + "\n", + "- మీ మోడల్ ఒక పంప్కిన్‌ను not white గా అంచనా వేస్తే మరియు అది వాస్తవానికి 'white' వర్గానికి చెందితే, దాన్ని `false negative` అంటాము, ఇది కింద ఎడమ సంఖ్య ద్వారా చూపబడుతుంది.\n", + "\n", + "- మీ మోడల్ ఒక పంప్కిన్‌ను white గా అంచనా వేస్తే మరియు అది వాస్తవానికి 'not-white' వర్గానికి చెందితే, దాన్ని `false positive` అంటాము, ఇది పై కుడి సంఖ్య ద్వారా చూపబడుతుంది.\n", + "\n", + "- మీ మోడల్ ఒక పంప్కిన్‌ను not white గా అంచనా వేస్తే మరియు అది వాస్తవానికి 'not-white' వర్గానికి చెందితే, దాన్ని `true negative` అంటాము, ఇది కింద కుడి సంఖ్య ద్వారా చూపబడుతుంది.\n", + "\n", + "| Truth |\n", + "|:-----:|\n", + "\n", + "\n", + "| | | |\n", + "|---------------|--------|-------|\n", + "| **Predicted** | WHITE | ORANGE |\n", + "| WHITE | TP | FP |\n", + "| ORANGE | FN | TN |\n", + "\n", + "మీరు ఊహించినట్లుగా, ఎక్కువ true positives మరియు true negatives ఉండటం మంచిది, మరియు తక్కువ false positives మరియు false negatives ఉండటం మంచిది, ఇది మోడల్ మెరుగ్గా పనిచేస్తుందని సూచిస్తుంది.\n", + "\n", + "కాంఫ్యూజన్ మ్యాట్రిక్స్ ఉపయోగకరంగా ఉంటుంది ఎందుకంటే ఇది ఇతర మెట్రిక్స్‌కు దారి తీస్తుంది, ఇవి వర్గీకరణ మోడల్ పనితీరును మెరుగ్గా అంచనా వేయడంలో సహాయపడతాయి. వాటిలో కొన్ని ఇక్కడ ఉన్నాయి:\n", + "\n", + "🎓 Precision: `TP/(TP + FP)` ఇది అంచనా వేయబడిన పాజిటివ్స్‌లో వాస్తవానికి పాజిటివ్ అయిన వాటి భాగాన్ని నిర్వచిస్తుంది. దీనిని [positive predictive value](https://en.wikipedia.org/wiki/Positive_predictive_value \"Positive predictive value\") అని కూడా పిలుస్తారు.\n", + "\n", + "🎓 Recall: `TP/(TP + FN)` ఇది వాస్తవానికి పాజిటివ్ అయిన నమూనాల సంఖ్యలో నుండి పాజిటివ్ ఫలితాల భాగాన్ని నిర్వచిస్తుంది. దీనిని `sensitivity` అని కూడా పిలుస్తారు.\n", + "\n", + "🎓 Specificity: `TN/(TN + FP)` ఇది వాస్తవానికి నెగటివ్ అయిన నమూనాల సంఖ్యలో నుండి నెగటివ్ ఫలితాల భాగాన్ని నిర్వచిస్తుంది.\n", + "\n", + "🎓 Accuracy: `TP + TN/(TP + TN + FP + FN)` ఒక నమూనా కోసం సరిగ్గా అంచనా వేయబడిన లేబుల్స్ శాతం.\n", + "\n", + "🎓 F Measure: precision మరియు recall యొక్క బరువు సగటు, ఉత్తమం 1 మరియు చెత్తది 0.\n", + "\n", + "ఈ మెట్రిక్స్‌లను లెక్కించుకుందాం!\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Combine metric functions and calculate them all at once\n", + "eval_metrics <- metric_set(ppv, recall, spec, f_meas, accuracy)\n", + "eval_metrics(data = results, truth = color, estimate = .pred_class)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ఈ మోడల్ యొక్క ROC వక్రాన్ని దృశ్యీకరించండి\n", + "\n", + "మనం మరొక దృశ్యీకరణ చేయబోతున్నాము, దీనిని [`ROC వక్రం`](https://en.wikipedia.org/wiki/Receiver_operating_characteristic) అంటారు:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Make a roc_curve\n", + "results %>% \n", + " roc_curve(color, .pred_ORANGE) %>% \n", + " autoplot()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ROC వక్రరేఖలు తరచుగా ఒక వర్గీకర్త యొక్క అవుట్పుట్‌ను నిజమైన మరియు తప్పుడు పాజిటివ్‌ల పరంగా చూడటానికి ఉపయోగిస్తారు. ROC వక్రరేఖలు సాధారణంగా Y అక్షంపై `True Positive Rate`/సెన్సిటివిటీ మరియు X అక్షంపై `False Positive Rate`/1-స్పెసిఫిసిటీని చూపిస్తాయి. కాబట్టి, వక్రరేఖ యొక్క తిప్పట మరియు మధ్య రేఖ మరియు వక్రరేఖ మధ్య ఉన్న స్థలం ముఖ్యం: మీరు త్వరగా పైకి వెళ్లి రేఖను దాటే వక్రరేఖను కోరుకుంటారు. మన సందర్భంలో, మొదట తప్పుడు పాజిటివ్‌లు ఉంటాయి, ఆపై రేఖ సరిగ్గా పైకి వెళ్లి దాటుతుంది.\n", + "\n", + "చివరగా, వాస్తవంలో వక్రరేఖ క్రింద ప్రాంతాన్ని లెక్కించడానికి `yardstick::roc_auc()` ను ఉపయోగిద్దాం. AUC ని అర్థం చేసుకోవడానికి ఒక మార్గం ఏమిటంటే, మోడల్ యాదృచ్ఛిక పాజిటివ్ ఉదాహరణను యాదృచ్ఛిక నెగటివ్ ఉదాహరణ కంటే ఎక్కువ ర్యాంక్ చేసే అవకాశంగా భావించవచ్చు.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Calculate area under curve\n", + "results %>% \n", + " roc_auc(color, .pred_ORANGE)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ఫలితం సుమారు `0.975`. AUC 0 నుండి 1 వరకు ఉంటుందని, మీరు పెద్ద స్కోరు కావాలి, ఎందుకంటే 100% సరిగ్గా అంచనా వేయగల మోడల్‌కు AUC 1 ఉంటుంది; ఈ సందర్భంలో, మోడల్ *చాలా బాగుంది*.\n", + "\n", + "భవిష్యత్తు వర్గాల్లో వర్గీకరణలపై మీరు మీ మోడల్ స్కోర్లను ఎలా మెరుగుపరచాలో నేర్చుకుంటారు (ఈ సందర్భంలో అసమతుల్య డేటాతో ఎలా వ్యవహరించాలో).\n", + "\n", + "## 🚀సవాలు\n", + "\n", + "లాజిస్టిక్ రిగ్రెషన్ గురించి ఇంకా చాలా విషయాలు తెలుసుకోవాలి! కానీ నేర్చుకోవడానికి ఉత్తమ మార్గం అనుభవించడం. ఈ రకమైన విశ్లేషణకు అనువైన డేటాసెట్‌ను కనుగొని దానితో మోడల్ నిర్మించండి. మీరు ఏమి నేర్చుకుంటారు? సూచన: ఆసక్తికరమైన డేటాసెట్ల కోసం [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) ను ప్రయత్నించండి.\n", + "\n", + "## సమీక్ష & స్వీయ అధ్యయనం\n", + "\n", + "లాజిస్టిక్ రిగ్రెషన్ యొక్క కొన్ని ప్రాక్టికల్ ఉపయోగాలపై [స్టాన్‌ఫోర్డ్ నుండి ఈ పేపర్](https://web.stanford.edu/~jurafsky/slp3/5.pdf) మొదటి కొన్ని పేజీలను చదవండి. ఇప్పటి వరకు మనం అధ్యయనం చేసిన రిగ్రెషన్ పనులలో ఏది ఏ పనికి బాగా సరిపోతుందో ఆలోచించండి. ఏది ఉత్తమంగా పనిచేస్తుంది?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.\n\n" + ] + } + ], + "metadata": { + "anaconda-cloud": "", + "kernelspec": { + "display_name": "R", + "langauge": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "3.4.1" + }, + "coopTranslator": { + "original_hash": "feaf125f481a89c468fa115bf2aed580", + "translation_date": "2025-12-19T16:39:14+00:00", + "source_file": "2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/te/2-Regression/4-Logistic/solution/notebook.ipynb b/translations/te/2-Regression/4-Logistic/solution/notebook.ipynb new file mode 100644 index 000000000..cd9dcf33b --- /dev/null +++ b/translations/te/2-Regression/4-Logistic/solution/notebook.ipynb @@ -0,0 +1,1261 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Logistic Regression - పాఠం 4\n", + "\n", + "అవసరమైన లైబ్రరీలు మరియు డేటాసెట్‌ను లోడ్ చేయండి. డేటాను డేటాఫ్రేమ్‌గా మార్చండి, ఇది డేటా యొక్క ఉపసమితిని కలిగి ఉంటుంది:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade Date \n", + "0 BALTIMORE NaN 24 inch bins NaN NaN NaN 4/29/17 \\\n", + "1 BALTIMORE NaN 24 inch bins NaN NaN NaN 5/6/17 \n", + "2 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "3 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "4 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 11/5/16 \n", + "\n", + " Low Price High Price Mostly Low ... Unit of Sale Quality Condition \n", + "0 270.0 280.0 270.0 ... NaN NaN NaN \\\n", + "1 270.0 280.0 270.0 ... NaN NaN NaN \n", + "2 160.0 160.0 160.0 ... NaN NaN NaN \n", + "3 160.0 160.0 160.0 ... NaN NaN NaN \n", + "4 90.0 100.0 90.0 ... NaN NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 Unnamed: 25 \n", + "0 NaN NaN NaN E NaN NaN NaN \n", + "1 NaN NaN NaN E NaN NaN NaN \n", + "2 NaN NaN NaN N NaN NaN NaN \n", + "3 NaN NaN NaN N NaN NaN NaN \n", + "4 NaN NaN NaN N NaN NaN NaN \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "full_pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", + "\n", + "full_pumpkins.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NamePackageVarietyOriginItem SizeColor
2BALTIMORE24 inch binsHOWDEN TYPEDELAWAREmedORANGE
3BALTIMORE24 inch binsHOWDEN TYPEVIRGINIAmedORANGE
4BALTIMORE24 inch binsHOWDEN TYPEMARYLANDlgeORANGE
5BALTIMORE24 inch binsHOWDEN TYPEMARYLANDlgeORANGE
6BALTIMORE36 inch binsHOWDEN TYPEMARYLANDmedORANGE
\n", + "
" + ], + "text/plain": [ + " City Name Package Variety Origin Item Size Color\n", + "2 BALTIMORE 24 inch bins HOWDEN TYPE DELAWARE med ORANGE\n", + "3 BALTIMORE 24 inch bins HOWDEN TYPE VIRGINIA med ORANGE\n", + "4 BALTIMORE 24 inch bins HOWDEN TYPE MARYLAND lge ORANGE\n", + "5 BALTIMORE 24 inch bins HOWDEN TYPE MARYLAND lge ORANGE\n", + "6 BALTIMORE 36 inch bins HOWDEN TYPE MARYLAND med ORANGE" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Select the columns we want to use\n", + "columns_to_select = ['City Name','Package','Variety', 'Origin','Item Size', 'Color']\n", + "pumpkins = full_pumpkins.loc[:, columns_to_select]\n", + "\n", + "# Drop rows with missing values\n", + "pumpkins.dropna(inplace=True)\n", + "\n", + "pumpkins.head()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# మన డేటాను చూద్దాం!\n", + "\n", + "దాన్ని Seaborn తో విజువలైజ్ చేయడం ద్వారా\n" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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S0tLab1CCxcuxAcffIBXXnkFbm5uGDZsGF555RW89dZbBtd1cnLCjBkzMGjQIFy6dAleXl4AYHDuomRnZyM7O1t6nJ6eXqJxRERU/THQEMzMzHD79u2nuuaQIUOwefNmDB06FL1798bp06dx5syZYseYmZkBAHJycsq0Znh4OD755BO9dssOi2BlaQ7bBv5lmpeIiKoe76F5jomiiN27d+PXX39F586di+1br149affFwsICPj4+5V5/+fLlOH36NMaOHYvly5fDwcGhyL4pKSn44osvULduXWl3BgCmTJkiq8vCwgIHDhwwOEdoaCjS0tKk4/r16+W+BiIiqh64Q/Mc2rFjBywsLJCbm4uCggK8+eabmDVrVrFjDhw4ILs3pUaNGuWuw9HREe+99x62bNmCnj17GuxTr149iKKI//77D82aNcPGjRthYmIinZ80aRKCg4NlY+rWrWtwLrVaDbVaXe66iYio+mGgeQ5ptVpERkbCxMQEderUgUr15B8Dd3f3Et1DU1oqlarY9Q8cOAArKys4OjoavNnX3t4eHh4eFV4XEREpCwPNc8jc3FwxIaCyghQRET1bGGioRG7duoWsrCxZm52dXYW89FQeGRkZep+HU7NmTb23mBMR0bONNwVTiXh5ecHJyUl2/PHHH1VdFmbMmKFX1+TJk6u6LCIiesoEURTFqi6CqCqkp6fD2toaV05u4du2iYgUjjs0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4/LZteu7Z1tfy27mJiBSOOzRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4/KRgeu5dXdUElmYlz/Zuw65UYjVERFQW3KEhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCml4OBgCIIgHXZ2dggMDMSpU6dk/QRBwJYtW2RtcXFxeO211+Dg4ABTU1M0aNAAAwYMwP79+4td083NDYIgYO3atXrnfHx8IAgCVq5cqXcu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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "# Specify colors for each values of the hue variable\n", + "palette = {\n", + " 'ORANGE': 'orange',\n", + " 'WHITE': 'wheat',\n", + "}\n", + "# Plot a bar plot to visualize how many pumpkins of each variety are orange or white\n", + "sns.catplot(\n", + " data=pumpkins, y=\"Variety\", hue=\"Color\", kind=\"count\",\n", + " palette=palette, \n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# డేటా ప్రీ-ప్రాసెసింగ్\n", + "\n", + "డేటాను మెరుగ్గా ప్లాట్ చేయడానికి మరియు మోడల్‌ను శిక్షణ ఇవ్వడానికి ఫీచర్లు మరియు లేబుల్స్‌ను ఎన్‌కోడ్ చేద్దాం\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['med', 'lge', 'sml', 'xlge', 'med-lge', 'jbo', 'exjbo'],\n", + " dtype=object)" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Let's look at the different values of the 'Item Size' column\n", + "pumpkins['Item Size'].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import OrdinalEncoder\n", + "# Encode the 'Item Size' column using ordinal encoding\n", + "item_size_categories = [['sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo']]\n", + "ordinal_features = ['Item Size']\n", + "ordinal_encoder = OrdinalEncoder(categories=item_size_categories)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import OneHotEncoder\n", + "# Encode all the other features using one-hot encoding\n", + "categorical_features = ['City Name', 'Package', 'Variety', 'Origin']\n", + "categorical_encoder = OneHotEncoder(sparse_output=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ord__Item Sizecat__City Name_ATLANTAcat__City Name_BALTIMOREcat__City Name_BOSTONcat__City Name_CHICAGOcat__City Name_COLUMBIAcat__City Name_DALLAScat__City Name_DETROITcat__City Name_LOS ANGELEScat__City Name_MIAMI...cat__Origin_MICHIGANcat__Origin_NEW JERSEYcat__Origin_NEW YORKcat__Origin_NORTH CAROLINAcat__Origin_OHIOcat__Origin_PENNSYLVANIAcat__Origin_TENNESSEEcat__Origin_TEXAScat__Origin_VERMONTcat__Origin_VIRGINIA
21.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
31.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.01.0
43.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
53.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
61.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
\n", + "

5 rows × 48 columns

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

5 rows × 49 columns

\n", + "
" + ], + "text/plain": [ + " ord__Item Size cat__City Name_ATLANTA cat__City Name_BALTIMORE \n", + "2 1.0 0.0 1.0 \\\n", + "3 1.0 0.0 1.0 \n", + "4 3.0 0.0 1.0 \n", + "5 3.0 0.0 1.0 \n", + "6 1.0 0.0 1.0 \n", + "\n", + " cat__City Name_BOSTON cat__City Name_CHICAGO cat__City Name_COLUMBIA \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__City Name_DALLAS cat__City Name_DETROIT cat__City Name_LOS ANGELES \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__City Name_MIAMI ... cat__Origin_NEW JERSEY cat__Origin_NEW YORK \n", + "2 0.0 ... 0.0 0.0 \\\n", + "3 0.0 ... 0.0 0.0 \n", + "4 0.0 ... 0.0 0.0 \n", + "5 0.0 ... 0.0 0.0 \n", + "6 0.0 ... 0.0 0.0 \n", + "\n", + " cat__Origin_NORTH CAROLINA cat__Origin_OHIO cat__Origin_PENNSYLVANIA \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__Origin_TENNESSEE cat__Origin_TEXAS cat__Origin_VERMONT \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__Origin_VIRGINIA Color \n", + "2 0.0 0 \n", + "3 1.0 0 \n", + "4 0.0 0 \n", + "5 0.0 0 \n", + "6 0.0 0 \n", + "\n", + "[5 rows x 49 columns]" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.preprocessing import LabelEncoder\n", + "# Encode the 'Color' column using label encoding\n", + "label_encoder = LabelEncoder()\n", + "encoded_label = label_encoder.fit_transform(pumpkins['Color'])\n", + "encoded_pumpkins = encoded_features.assign(Color=encoded_label)\n", + "encoded_pumpkins.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ORANGE', 'WHITE']" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Let's look at the mapping between the encoded values and the original values\n", + "list(label_encoder.inverse_transform([0, 1]))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# లక్షణాలు మరియు లేబుల్ మధ్య సంబంధాలను విశ్లేషించడం\n" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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drtdw4cPN7s0t/DII4+oZ8+eeuaZZzR06FBt27ZNixcv1uLFi8vdp4eHh373u99p0KBBGj58uPLz87V06VI9+OCDrndioFxeeeUVo1mzZoanp6fRtWtXY+vWrWaX5BYSEhIMSSW2UaNGmV3ar15p112SsWTJErNLcwtjxowxQkJCDE9PT6NRo0bGbbfdZnzxxRdml+XWIiMjjUmTJpldhlsYNmyYERgYaHh6ehpNmjQxhg0bZhw6dMjsstzKZ599ZrRv397w8vIyIiIijMWLF1e4z8zMTGPYsGFGw4YNjaCgIOPhhx828vLyXD6fdWIBAABgOUwnAAAAQJX74YcfXDrO1bm2jMQCAACgytntdscTuUqLn5f3FxcXu9QfI7EAAACoFuvWrVPDhg0lScePH9fQoUP11VdfSZLOnDmjvn37utwXIRYAAADVol27do6nnvr4+Mhmszme2pWZmVmmvlgnFgAAAJZDiAUAAECVq+zbsAixAAAAqHI2m+26+0o75moIsQDgBo4cOSKbzaaUlBSzSwHgppYtW6a6des63rdo0UI5OTmO9w0aNNCWLVtc7o8QCwDlMHr0aN11112O91FRUZo8ebJp9aSlpelPf/qTgoKC5O3traZNm2rw4ME6cOCAJCk4OFjp6ek8IhWAaYYOHSovL6+rttvtdnXt2tXl/lidAAAs7uLFi+rfv79at26tFStWKDAwUMePH9eqVat09uxZSZd+OAQEBJhbKABUIkZiAaCCRo8eraSkJL300kuy2Wyy2Ww6cuSIJGnPnj0aNGiQfHx81LhxY40cOVKnT592nBsVFaUJEyZo8uTJqlevnho3bqzXX39d586dU0xMjHx9fRUWFqZVq1Zd9fP37t2rw4cPa+HCherevbtCQkLUq1cvzZ49W927d5dUcjrB6NGjHbVeuSUmJkqSCgoKNHXqVDVp0kS1a9dWt27dHG0A8EtAiAWACnrppZfUo0cPjR07Vunp6UpPT1dwcLDOnj2rvn37qnPnzkpOTtbq1at18uRJDR061On8t956Sw0bNtS2bds0YcIEjRs3TkOGDFHPnj21c+dO3X777Ro5cqT++9//lvr5jRo1Uo0aNfThhx+qqKjI5Zov15qenq5JkybJ399fERERkqTx48dry5YtWr58ub799lsNGTJEAwcO1MGDByt2sQCgkvDYWQAoh9GjR+vs2bP6+OOPJV0aUe3UqZPmzZvnOGb27NnatGmT1qxZ49h3/PhxBQcHKzU1VeHh4YqKilJRUZE2bdokSSoqKpKfn5/uvvtuvf3225KkjIwMBQYGasuWLY6R1Z9bsGCBHnvsMdntdnXp0kV9+vTRiBEj1KJFC0mXRmKbN2+uXbt2qVOnTk7nrlixQiNGjNC6devUq1cvHT16VC1atNDRo0cVFBTkOK5fv37q2rWrnnnmmYpePgCoMEZiAaCKfPPNN0pISJCPj49juzzSefjwYcdxl59WI12au9qgQQPdcMMNjn2Xn25zrafZxMbGKiMjQ0uXLlWPHj30wQcfqF27dlq7du01a9y1a5dGjhyp+fPnq1evXpKk3bt3q6ioSOHh4U61JyUlOdUNAGbixi4AqCJ5eXmKjo7Ws88+W6ItMDDQ8bpmzZpObTabzWnf5XUTi4uLr/l5vr6+io6OVnR0tGbPnq0BAwZo9uzZ6t+/f6nHZ2Rk6M4779QDDzyg+++/36luu92uHTt2yG63O53j4+NzzRoAoLoQYgGgEnh6epaYj3rjjTfqo48+UmhoqDw8qvfbrc1mU0REhL766qtS2/Pz8zV48GBFREToxRdfdGrr3LmzioqKlJmZqVtvvbU6ygWAMmM6AQBUgtDQUH399dc6cuSITp8+reLiYsXGxurMmTMaPny4tm/frsOHD2vNmjWKiYlx+QYsV6SkpGjw4MH68MMPtW/fPh06dEjx8fF64403NHjw4FLPeeihh3Ts2DG9/PLLOnXqlDIyMpSRkaELFy4oPDxcI0aM0H333acVK1YoLS1N27ZtU1xcnP79739XWt0AUBGMxAJAJZg6dapGjRqltm3b6vz580pLS1NoaKg2b96sxx9/XLfffrsKCgoUEhKigQMHqkaNyhtDaNq0qUJDQzVr1izHUlqX3z/yyCOlnpOUlKT09HS1bdvWaX9CQoKioqK0ZMkSzZ49W3/5y1/0448/qmHDhurevbt+97vfVVrdAFARrE4AAAAAy2E6AQAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBwPswsAAADAr19MTIxLxy1ZssSl42yGYRgVKQgAAAC4nrvvvtvx+ty5c9qwYYOio6Md+woKCrRq1SoVFxe71B8hFgAAANUqLS1NHTp0UG5urmPfqVOnFBAQoKKiIpf6YE4sAAAAqlXNmjV18eJFp335+fny8HB9pishtpwMw1BOTo4YyAYAACiboKAgGYahdevWOfb95z//UbNmzVzugxu7yik3N1d+fn46efKk6tSpY3Y5bsUwDBUUFEiSvLy8ZLPZTK7IfXH9AQDlUaNGDY0YMULR0dEaMGCAzp8/r3Xr1mnmzJku98Gc2HLKycmRn5+fBgwYoJo1a5pdDmCKDz74QN7e3maXAQCwoPPnz2vWrFlav369PD09deedd+rRRx9VjRquTRRgJBYAAADVrlatWpozZ065zyfEVtCM/t+pvo/ZVbiXgkKbnlzdVpL09MB98vLgjwnV6UJRDT2xqo3ZZQAALCYpKcml4yIjI106jhBbQTVrFMvLgzmBZvHyMAix1c619fuAXxvm4wMV07dvXxmGcc3/dgzDcHmdWEJsBV0o4psYALiDgoICDRkyRBLzwYHyyMrKqtT+CLEAAACocpW9mlO51ok9duyYxowZo6CgIHl6eiokJESTJk3STz/95DgmKipKNptNNptN3t7eCg8PV1xcXKnrqm7ZskV2u1133HFHibYjR47IZrPJ39/f6akOktSpU6cSSzEcOnRIY8aMUbNmzeTl5aUmTZrotttu09KlS1VYWOg47nJtP9+WL19enksCAACAa0hKSnJpc1WZR2K///579ejRQ+Hh4Vq2bJmaN2+uvXv36tFHH9WqVau0detW1a9fX5I0duxYPfXUUyooKNCGDRv04IMPqm7duho3bpxTn/Hx8ZowYYLi4+N14sQJBQUFlfjc3NxcPf/885o1a9ZVa9u2bZv69eundu3aacGCBYqIiJAkJScna8GCBWrfvr06duzoOH7JkiUaOHCgUx9169Yt6yUBAADAdZQ2J7a091U2JzY2Nlaenp764osvVKtWLUlSs2bN1LlzZ7Vs2VJPPvmkXn31VUnSb37zGwUEBEiSYmJiNH/+fK1du9YpxObl5em9995TcnKyMjIy9Oabb+qJJ54o8bkTJkzQiy++qNjYWPn7+5doNwxDo0ePVnh4uDZv3uy0xlirVq00fPjwEqPAdevWddQHwDVX/meUn59vXiFANbvy3ztLrAPlk5qaqsaNG0u69Nf2W265RceOHZPNZtOpU6cUHh7ucl9lCrFnzpzRmjVr9PTTTzsC7GUBAQEaMWKE3nvvPS1cuNCpzTAMffnllzpw4IBatWrl1Pb+++8rIiJCrVu31r333qvJkydr+vTpJe5cGz58uNauXaunnnpK8+fPL1FbSkqK9u/fr2XLll11kdyK3ElaUFDguCtVuvSwA8AdXXkz48iRI02sBDBPQUFBiZ+DAK6vTp06jrmxPj4+MgxDfn5+ki79oliWXxDLNCf24MGDMgxDbdqUvkZkmzZtlJWVpVOnTkmSFi5cKB8fH3l5eal3794qLi7WxIkTnc6Jj4/XvffeK0kaOHCgsrOzS50PYbPZNGfOHC1evFiHDx8u0f7dd99Jklq3bu3Yl5mZKR8fH8f283A9fPhwp3YfHx8dPXq01K8tLi5Ofn5+ji04OPhqlwkAAABVrFyrE7iakkeMGKEnn3xSWVlZmjFjhnr27KmePXs62lNTU7Vt2zatXLnyUjEeHho2bJji4+MVFRVVor8BAwbolltu0V//+le9++671/38Bg0aKCUlRdKlG80uXLjg1D537lz169fPaV9p83Elafr06ZoyZYrjfU5ODkEWbsnT/r///t955x2WGYLbyM/Pd/z1wcvLy+RqAOup7Gk4ZQqxYWFhstls2r9/v37/+9+XaN+/f7/q1aunRo0aSZL8/PwUFhYm6dK0gbCwMHXv3t0RHOPj41VYWOgUHA3DkJeXl+bPn+8YXr7SnDlz1KNHDz366KNO+y9PU0hNTVXnzp0lSXa73fH5Hh4lv9SAgABH+/V4eXnxTQuQdOWsHG9vb0Is3BIPOgDK7uf/3dSsWVOhoaHXPOZayjSdoEGDBurfv78WLlyo8+fPO7VlZGRo6dKlGjZsWKkF+Pj4aNKkSZo6daoMw1BhYaHefvttvfDCC0pJSXFs33zzjYKCgrRs2bJSa+jatavuvvtuTZs2zWl/586dFRERoeeff97lu9oAAABQPbZs2aIGDRo43gcHB2v37t2O9/7+/kpPT3e5vzJPJ5g/f7569uypAQMGaPbs2U5LbDVp0kRPP/30Vc996KGH9Pe//10fffSRPDw8lJWVpfvvv7/EiOs999yj+Ph4Pfzww6X28/TTT6tdu3ZOo6s2m01LlixR//791atXL02fPl1t2rTRxYsXtXHjRp06dUp2u92pn7NnzyojI8Npn6+vr2rXrl3WywIAAIBr6Nq163WPKW0Fqqsp88MOWrVqpeTkZLVo0UJDhw5Vy5Yt9eCDD6pPnz7asmWLY43Y0tSvX1/33XefZs6cqfj4ePXr16/UKQP33HOPkpOT9e2335baT3h4uMaMGVNieZ/u3btrx44dat26tWJjY9W2bVv17NlTy5Yt09y5c0usTxsTE6PAwECn7ZVXXinT9bhyfiAA4NfLy8tLH3zwgT744AOmlwG/ADaDxe7KJScnR35+fkqeG6IGvsyNqk4FhTZN/bydJOn53+2Vlwf/hKvTldef58cDAMxSrtUJ8D8XimqooPD6x6HyFBTaSn2N6nGhqFxPqwYAoFIRYito1tpw1axZ0+wy3NaTq9uaXQIAAKgE//3vf/Xcc89pxowZLh3PkAoAAABMl5eXp1mzZrl8PCOxFfT22287Hp+G6mEYhuMRwF5eXqzXaCJubgEAVKay/EwnxFYQi72bg2eWm+fKXyIAAKhMZVlvgBALoEwKCgo0ZMgQSaxOAABwXYsWLa4ZUouKisrUHyEWQJlcuT5zfn4+IRYA4JLJkydfsz0vL0//93//53J/hFgAAABUuYkTJ16zPTMzs0whltUJAAAAYDmEWABlUlxcXOprAAAqqiyrExBiAZRJbm5uqa8BAKiICxcuqG/fvi4fX+UhdtGiRfL19VVh4f+ezZqXl6eaNWsqKirK6djExETZbDYdPnxYoaGhmjdvXon+Zs6cqU6dOpX6PjQ0VDab7arb6NGjJemq7cuXL6/krx4AAADX8/bbb6tDhw6y2+0un1PlN3b16dNHeXl5Sk5OVvfu3SVJmzZtUkBAgL7++munu5sTEhLUrFkztWzZslyftX37dsfyDF999ZXuuecepaamOh5GcOXaokuWLNHAgQOdzq9bt265PhcAAABld+rUKT300ENat26dXnjhBY0dO9blc6s8xLZu3VqBgYFKTEx0hNjExEQNHjxYGzZs0NatWx0jsomJierTp0+5P6tRo0aO1/Xr15ck+fv7lxpO69atq4CAgHJ/FgAAAFz380fKFhYW6rXXXlP79u21e/duhYSElKm/alliq0+fPkpISNC0adMkXRpxfeyxx1RUVKSEhARFRUXp/Pnz+vrrrzVmzJjqKKnMCgoKnJ5SlJOTY2I1AAAA1vLJJ584vS8sLFRWVpbuvvvuMgdYqRpD7OTJk1VYWKjz589r165dioyM1MWLF7Vo0SJJ0pYtW1RQUOA0Evv444+XWC/swoULatu2bYVrGj58eIl5F/v27VOzZs1KPT4uLq7EbxAAAABwzc6dO0vs++yzzzR27FitWLFC8fHxat68ucv9VcvqBFFRUTp37py2b9+uTZs2KTw8XI0aNVJkZKRjXmxiYqJatGjhFCIfffRRpaSkOG0PP/xwpdQ0d+7cEn0HBQVd9fjp06crOzvbsR07dqxS6gAAAHBX0dHR2rt3rxo0aKAOHTpo4cKFLp9bLSOxYWFhatq0qRISEpSVlaXIyEhJUlBQkIKDg/XVV18pISGhxLIKDRs2VFhYmNO+y3NdKyogIKBE39fi5eUlLy+vSvlsAAAAXNKgQQN98MEHevfddxUbG6s///nPLp1XbevE9unTR4mJiUpMTHRaWqt3795atWqVtm3bVqGbugAAAGBdf/rTn7R3716Xj6+WkVjpUoiNjY3VxYsXHSOxkhQZGanx48frwoUL1Rpiz549q4yMDKd9vr6+ql27drXVAAAA4C6SkpJcOu5a0zuvVK0h9vz584qIiFDjxo0d+yMjI5Wbm+tYiqu6xMTElNgXFxfnWEEBAAAAladv374yDMPxaNkrX19mGIbLjzS3GYZhVHqVbiAnJ0d+fn7Kzs52PEwBcAdnzpzRqFGjJElvvfVWpc1TBwD8ul25POmRI0d0yy236Pjx4459p06dUnh4uOPBVddTbSOxAH4datSoUeprAACu5cpBP19fXxUXFzvtO3/+vMoytspPIAAAAFQrf39/nT9/Xunp6Y59Bw8elL+/v8t9MBILoEy8vb1LfQ0AgKtq166tTp066Q9/+IOmTp2q/Px8PfXUU7rllltc7oM5seXEnFi4K8MwHI9g9vLyKjEpHwAAV2zfvl333HOPfvzxR0lS27Zt9emnn7r81C5CbDllZ2erbt26OnbsGCEWAAC4DV9f30obwCgsLFRqaqo8PT0VFhZWpn4JseX0/fffq2XLlmaXAQAAUK0yMzPVqFEjs8tgTmx5XV5W6OjRo/Lz8zO5GveTk5Oj4OBgRsJNwvU3F9ffPFx7c3H9zXX5+nt6epbrfFemCRiGoSNHjrjUHyG2nC4vLeTn58d/SCaqU6cO199EXH9zcf3Nw7U3F9ffXOWdSnD06FE99dRT8vX1lSSdPn1azz33nJ599llJUl5env7v//7P5f4IsQAAAKgWDzzwgOPJrd9//73mzp2riRMnSro0TaEsIZZ1YgEAAGA5hNhy8vLy0owZM+Tl5WV2KW6J628urr+5uP7m4dqbi+tvrl/a9Wd1AgAAAFQ5u92uEydOOE0n6NSpk3JyciRdmk4QGBiooqIil/pjJBYAAABV7qGHHtJvfvMbx/smTZpo1apVjve+vr6Ki4tzuT9GYgEAAGA5jMQCAADAcgix5bRgwQKFhobK29tb3bp107Zt28wuyS1s3LhR0dHRCgoKks1m08cff2x2SW4jLi5ON998s3x9feXv76+77rpLqampZpflNl599VV16NDBsT5mjx49nP4Mh+o1Z84c2Ww2TZ482exS3MLMmTNls9mctoiICLPLcis//vij7r33XjVo0EC1atXSDTfcoOTkZFNrIsSWw3vvvacpU6ZoxowZ2rlzpzp27KgBAwYoMzPT7NJ+9c6dO6eOHTtqwYIFZpfidpKSkhQbG6utW7dq7dq1unjxom6//XadO3fO7NLcQtOmTTVnzhzt2LFDycnJ6tu3rwYPHqy9e/eaXZrb2b59u1577TV16NDB7FLcSrt27ZSenu7YvvzyS7NLchtZWVnq1auXatasqVWrVmnfvn164YUXVK9ePVPrYk5sOXTr1k0333yz5s+fL0kqLi5WcHCwJkyYoGnTpplcnfuw2WxauXKl7rrrLrNLcUunTp2Sv7+/kpKS1Lt3b7PLcUv169fXc889p/vvv9/sUtxGXl6ebrzxRi1cuFCzZ89Wp06dNG/ePLPL+tWbOXOmPv74Y6WkpJhdiluaNm2aNm/erE2bNpldihNGYsvowoUL2rFjh/r16+fYV6NGDfXr109btmwxsTKgemVnZ0u6FKRQvYqKirR8+XKdO3dOPXr0MLsctxIbG6s77rjD6WcAqsfBgwcVFBSkFi1aaMSIETp69KjZJbmNTz/9VF26dNGQIUPk7++vzp076/XXXze7LEJsWZ0+fVpFRUWONc4ua9y4sTIyMkyqCqhexcXFmjx5snr16qX27dubXY7b2L17t3x8fOTl5aWHH35YK1euVNu2bc0uy20sX75cO3fuLNMSQKgc3bp105tvvqnVq1fr1VdfVVpamm699Vbl5uaaXZpb+P777/Xqq6+qVatWWrNmjcaNG6eJEyfqrbfeMrUuD1M/HYAlxcbGas+ePcxJq2atW7dWSkqKsrOz9eGHH2rUqFFKSkoiyFaDY8eOadKkSVq7dq28vb3NLsftDBo0yPG6Q4cO6tatm0JCQvT+++8znaYaFBcXq0uXLnrmmWckSZ07d9aePXu0aNEijRo1yrS6GIkto4YNG8put+vkyZNO+0+ePKmAgACTqgKqz/jx4/X5558rISFBTZs2Nbsct+Lp6amwsDDddNNNiouLU8eOHfXSSy+ZXZZb2LFjhzIzM3XjjTfKw8NDHh4eSkpK0ssvvywPDw+XnzCEylG3bl2Fh4fr0KFDZpfiFgIDA0v8stymTRvTp3QQYsvI09NTN910k9avX+/YV1xcrPXr1zM3Db9qhmFo/PjxWrlypTZs2KDmzZubXZLbKy4uVkFBgdlluIXbbrtNu3fvVkpKimPr0qWLRowYoZSUFNntdrNLdCt5eXk6fPiwAgMDzS7FLfTq1avEkorfffedQkJCTKroEqYTlMOUKVM0atQodenSRV27dtW8efN07tw5xcTEmF3ar15eXp7Tb95paWlKSUlR/fr11axZMxMr+/WLjY3Vu+++q08++US+vr6OOeB+fn6qVauWydX9+k2fPl2DBg1Ss2bNlJubq3fffVeJiYlas2aN2aW5BV9f3xLzv2vXrq0GDRowL7waTJ06VdHR0QoJCdGJEyc0Y8YM2e12DR8+3OzS3MIjjzyinj176plnntHQoUO1bds2LV68WIsXLza3MAPl8sorrxjNmjUzPD09ja5duxpbt241uyS3kJCQYEgqsY0aNcrs0n71SrvukowlS5aYXZpbGDNmjBESEmJ4enoajRo1Mm677Tbjiy++MLsstxYZGWlMmjTJ7DLcwrBhw4zAwEDD09PTaNKkiTFs2DDj0KFDZpflVj777DOjffv2hpeXlxEREWEsXrzY7JIM1okFAACA5TAnFgAAAJZDiAUAAIDlEGIBAABgOYRYAAAAWA4hFgAAAJZDiAUAAIDlEGIBAABgOYRYAAAAWA4hFgDcwJEjR2Sz2ZSSkmJ2KQBQKQixAFAOo0eP1l133eV4HxUVpcmTJ5tWT1pamv70pz8pKChI3t7eatq0qQYPHqwDBw5IkoKDg5Wenq727dubViMAVCYPswsAAFTMxYsX1b9/f7Vu3VorVqxQYGCgjh8/rlWrVuns2bOSJLvdroCAAHMLBYBKxEgsAFTQ6NGjlZSUpJdeekk2m002m01HjhyRJO3Zs0eDBg2Sj4+PGjdurJEjR+r06dOOc6OiojRhwgRNnjxZ9erVU+PGjfX666/r3LlziomJka+vr8LCwrRq1aqrfv7evXt1+PBhLVy4UN27d1dISIh69eql2bNnq3v37pJKTicYPXq0o9Yrt8TERElSQUGBpk6dqiZNmqh27drq1q2bow0AfgkIsQBQQS+99JJ69OihsWPHKj09Xenp6QoODtbZs2fVt29fde7cWcnJyVq9erVOnjypoUOHOp3/1ltvqWHDhtq2bZsmTJigcePGaciQIerZs6d27typ22+/XSNHjtR///vfUj+/UaNGqlGjhj788EMVFRW5XPPlWtPT0zVp0iT5+/srIiJCkjR+/Hht2bJFy5cv17fffqshQ4Zo4MCBOnjwYMUuFgBUEpthGIbZRQCA1YwePVpnz57Vxx9/LOnSiGqnTp00b948xzGzZ8/Wpk2btGbNGse+48ePKzg4WKmpqQoPD1dUVJSKioq0adMmSVJRUZH8/Px099136+2335YkZWRkKDAwUFu2bHGMrP7cggUL9Nhjj8lut6tLly7q06ePRowYoRYtWki6NBLbvHlz7dq1S506dXI6d8WKFRoxYoTWrVunXr166ejRo2rRooWOHj2qoKAgx3H9+vVT165d9cwzz1T08gFAhTESCwBV5JtvvlFCQoJ8fHwc2+WRzsOHDzuO69Chg+O13W5XgwYNdMMNNzj2NW7cWJKUmZl51c+KjY1VRkaGli5dqh49euiDDz5Qu3bttHbt2mvWuGvXLo0cOVLz589Xr169JEm7d+9WUVGRwsPDnWpPSkpyqhsAzMSNXQBQRfLy8hQdHa1nn322RFtgYKDjdc2aNZ3abDab0z6bzSZJKi4uvubn+fr6Kjo6WtHR0Zo9e7YGDBig2bNnq3///qUen5GRoTvvvFMPPPCA7r//fqe67Xa7duzYIbvd7nSOj4/PNWsAgOpCiAWASuDp6VliPuqNN96ojz76SKGhofLwqN5vtzabTREREfrqq69Kbc/Pz9fgwYMVERGhF1980amtc+fOKioqUmZmpm699dbqKBcAyozpBABQCUJDQ/X111/ryJEjOn36tIqLixUbG6szZ85o+PDh2r59uw4fPqw1a9YoJibG5RuwXJGSkqLBgwfrww8/1L59+3To0CHFx8frjTfe0ODBg0s956GHHtKxY8f08ssv69SpU8rIyFBGRoYuXLig8PBwjRgxQvfdd59WrFihtLQ0bdu2TXFxcfr3v/9daXUDQEUwEgsAlWDq1KkaNWqU2rZtq/PnzystLU2hoaHavHmzHn/8cd1+++0qKChQSEiIBg4cqBo1Km8MoWnTpgoNDdWsWbMcS2ldfv/II4+Uek5SUpLS09PVtm1bp/0JCQmKiorSkiVLNHv2bP3lL3/Rjz/+qIYNG6p79+763e9+V2l1A0BFsDoBAAAALIfpBAAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAyyHEAgAAwHIIsQAAALAcQiwAAAAshxALAAAAy/EwuwAAAAD8+sXExLh03JIlS1w6zmYYhlGRggAAAIDrsdvtGjhwoLy8vCRJ586d04YNGxQdHS1JKigo0KpVq1RcXOxSf4RYAAAAVDm73a4TJ06ocePGkqS0tDR16NBBubm5kqRTp06pcePGLodY5sQCAACg2v18HLWs46qEWAAAAFQ5X19fZWVlOd5nZWXp3LlzysvLkyRlZGSofv36LvdHiAUAAECVi4iI0CuvvKLi4mIVFxdr4cKFCgoK0tSpU7V582Y9+eSTuvnmm13ujzmxAAAAqHIff/yx/vCHP6h27doqLi5W7dq1tXr1av3xj3/UwYMHFRwcrM8++0w33HCDS/0RYgEAAFAtNm7cqM8++0y1atXS2LFjFRwcLEn66aef1KBBgzL1RYgFAACA5TAnFgAAAJbDE7sAAABQ5ex2u0vLaLm6TiwhFgAAAFVu5cqVldofc2IBAABgOYzEAgAAoNocO3ZMH374oQ4ePChJatWqlf7whz84VipwFSOxAAAAqBbz58/XX/7yFxUWFsrPz0+GYSgnJ0ceHh6aO3eu/vznP7vcF6sTAAAAoMpt2LBBkydP1vjx45Wenq4zZ84oKytL6enpmjhxoiZMmKCEhASX+2MkFgAAAFXud7/7nRo2bKg333yz1PYxY8bo1KlT+uyzz1zqj5FYAAAAVLmvv/5ao0ePvmr7fffdp6+//trl/gixAAAAqHI5OTlq3ry54/1///tfrVixwvG+ZcuWys3Ndbk/QiwAAACqXIMGDXTmzBnH+4yMDI0aNcrxPjs7W02bNnW5P5bYAgAAQJXr0aOH3nnnHdWrV082m03Hjx93at+wYYO6dOnicn/c2AUAAIAqt27dOg0YMMDx6Fmbzabf/OY3jikEN998s1588UXdeuutLvVHiAUAAEC12Lt3r4qKihzv7Xa72rVrV66+CLEAAACwHG7sAgAAgOUQYgEAAGA5hFgAAABYDiEWAAAAlkOILSfDMJSTkyPuiwMAAKh+POygnHJzc+Xn56fs7GzVqVPH7HIAAAB+0Vq0aHHdwT/DMHTkyBGX+iPEAoCFGIahgoICs8twS1de+zp16qhGDf6YCZTF5MmTr9p28uRJLV26VEePHnW5P0IsAFhIQUGBhgwZYnYZbu+dd95R3bp1zS4DsJSJEyc6vS8qKtK///1vLVmyRGvWrFFkZKT+8Y9/uNwfIRYAAADV5sCBA3rjjTf0r3/9S7Vr11ZMTIzmz5+vJk2alKkfQiwAWNQzg/bL015sdhluI6/ArplrI8wuA7C0rKwstWvXTr1799by5cvVu3fvcvdFiAUAC7nypoiaNYrl5cEKKdWloJBfGMx05ZxkLy8v2Ww2kytCefzmN7/RH//4R3388ceaMWOGYmJiNGTIENWqVavMfTErHQAs5Mqbui4U8UMc7uPyfPAhQ4Zwc6OFeXl5aenSpUpPT9fQoUP18ssvKzAwUA899JC+/vrrMvVVrhB77NgxjRkzRkFBQfL09FRISIgmTZqkn376yXFMVFSUbDabbDabvL29FR4erri4uFKXVtiyZYvsdrvuuOOOEm1HjhyRzWaTv7+/cnNzndo6deqkmTNnOu07dOiQxowZo2bNmsnLy0tNmjTRbbfdpqVLl6qwsNBx3OXafr4tX768TNdi7ty5ZToelePZZ59VdHS0nn32WbNLAQAAZVSnTh2NGzdOycnJ2rhxo2rVqqU77rhD7dq1c7mPMofY77//Xl26dNHBgwe1bNkyHTp0SIsWLdL69evVo0cPnTlzxnHs2LFjlZ6ertTUVE2fPl1/+9vftGjRohJ9xsfHa8KECdq4caNOnDhR6ufm5ubq+eefv2Zt27Zt04033qj9+/drwYIF2rNnjxITE/XAAw/o1Vdf1d69e52OX7JkidLT0522u+66q0zXY8uWLcrMzCzTOaiYzMxMffnll5KkL7/8kusPAIAF1K9fX/Xq1SuxRUZG6u2339aFCxe0f/9+l/sr85zY2NhYeXp66osvvnDMX2jWrJk6d+6sli1b6sknn9Srr74q6dK8h4CAAEly3Hm2du1ajRs3ztFfXl6e3nvvPSUnJysjI0NvvvmmnnjiiRKfO2HCBL344ouKjY2Vv79/iXbDMDR69GiFh4dr8+bNTuv3tWrVSsOHDy8xCly3bl1HfRXx+OOPa8mSJRXuB655/PHHS7zn+gMA8Mv20ksvVeqTTssUYs+cOaM1a9bo6aefLjEBNyAgQCNGjNB7772nhQsXOrUZhqEvv/xSBw4cUKtWrZza3n//fUVERKh169a69957NXnyZE2fPr3EhO3hw4dr7dq1euqppzR//vwStaWkpGj//v1atmzZVRegrqpJ4KdPn9b69et12223VUn/+J/169fr9OnTTvu4/gCqxRU/e/Pz85Wfn29eLW7oyuvNI9+t6Y9//KNq1qxZaf2VKcQePHhQhmGoTZs2pba3adNGWVlZOnXqlCRp4cKF+uc//6kLFy7o4sWL8vb2LrHQbXx8vO69915J0sCBA5Wdna2kpCRFRUU5HWez2TRnzhxFR0frkUceUcuWLZ3av/vuO0lS69atHfsyMzPVokULx/t//OMf+vOf/+x4P3z4cNntdqd+9u3bp2bNmpX42goKCpwmkufk5Di1v/LKK4qKiirRHypPUVGRXnnllVLbuP4AqtqVN9KNHTvWxEpQUFBQrrvZYa4mTZroT3/6k+6//37dcMMNFe6vXDd2ufob0IgRI5SSkqLNmzdr0KBBevLJJ9WzZ09He2pqqrZt26bhw4dLkjw8PDRs2DDFx8eX2t+AAQN0yy236K9//atLn9+gQQOlpKQoJSVFdevW1YULF5za586d62i/vAUFBZXaV1xcnPz8/BxbcHCwU3tRUZFWr17tUl0on9WrV6uoqKjUNq4/AAC/bNOmTdO2bdvUuXNndevWTa+99lqJm/bLokwjsWFhYbLZbNq/f79+//vfl2jfv3+/6tWrp0aNGkmS/Pz8FBYWJunStIGwsDB1795d/fr1k3RpFLawsNApOBqGIS8vL82fP19+fn4lPmPOnDnq0aOHHn30Uaf9l6cppKamqnPnzpIku93u+HwPj5JfakBAgKP9eqZPn64pU6Y43ufk5DgFWbvdroEDB7rUF8pn4MCBev3110sNslx/AFXN0/6/AZzXX3+dx85Ws/z8fI0cOVLSpWWaYD1TpkzRlClTtHnzZkVGRio/P19TpkzRH/7wB40ZM0aRkZFl6q9MIbZBgwbq37+/Fi5cqEceecRpKD8jI0NLly7VfffdV+rcUx8fH02aNElTp07Vrl27VFRUpLffflsvvPCCbr/9dqdj77rrLi1btkwPP/xwiX66du2qu+++W9OmTXPa37lzZ0VEROj555/X0KFDrzovtry8vLyu+R/NxIkT+VN2FbPb7ZowYYLmzZtXoo3rD6DKXfGjzdvbW97e3ubV4uZ40IG11atXTzabTd9884327Nmjd955RyNHjpS3t7diYmI0ffp0l/opc9KbP3++CgoKNGDAAG3cuFHHjh3T6tWr1b9/fzVp0kRPP/30Vc996KGH9N133+mjjz7S559/rqysLN1///1q376903bPPfdcdUqBJD399NPasGGDUlNTHftsNpuWLFmi1NRU9erVS59++qkOHjyoffv2adGiRTp16lSJkHP27FllZGQ4befOnSvrJVHDhg3Vt2/fMp+HsrvtttvUsGFDp31cfwAArKl9+/Z69tlnlZaWpiFDhrg8ZVQqR4ht1aqVkpOT1aJFCw0dOlQtW7bUgw8+qD59+mjLli2qX7/+Vc+tX7++7rvvPs2cOVPx8fHq169fqVMG7rnnHiUnJ+vbb78ttZ/w8HCNGTOmxJ2h3bt3144dO9S6dWvFxsaqbdu26tmzp5YtW6a5c+c6Le0lXVr2KzAw0Gm72o1D18KC+9Xr59eb6w8AgDV98803evTRRxUSEqKPP/64TD/Ty7xOrCSFhITozTffvOYxiYmJpe4v7WEHP9e1a1enm8dKu5Hstdde02uvvVZif3h4+HVru1qf5dGjR49S161F1fH399ctt9yiL7/8UrfccgvXH27lymlNV87RBH7tvLy89MEHHzhew7p++uknGYahG264QUePHtWQIUP04Ycfqnv37mXqp1whFv/zyCOPmF2CW3r88cdLPPQAcAdXzgVkWiDcyeXH2MO6nnvuOX300UdKTk5Wjx49NGbMGA0bNky/+c1vytUfIRYALOpCUQ1JxWaX4TYuFlXuDcOAu3nxxRc1cuRIvf322woPD69wf4RYALCoJ1aV/uAZAPglOn78uOMm+6ysLB08eFA2m01hYWGqV69emfvj10oAAABUObvdrrS0NP32t79Vw4YN1b17d3Xr1k0NGzbUb3/7W/3www9l6s9m8ADicsnJyZGfn5+ys7NVp04ds8sB4CYMw3B6BDaqz5XXvk6dOpW+Hjnwa3fy5EndeOON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dWulpKQoOztbH374oUaNGqWkpCSCbDU4duyYJk2apLVr18rb29vsctzOoEGDHK87dOigbt26KSQkRO+//z7TaapBcXGxunTpomeeeUaS1LlzZ+3Zs0eLFi3SqFGjXO4nJibmuscYhqE333zTpf4YiS2jhg0bym636+TJk077T548qYCAAJOqAqrP+PHj9fnnnyshIaFMf/ZBxXl6eiosLEw33XST4uLi1LFjR7300ktml+UWduzYoczMTN14443y8PCQh4eHkpKS9PLLL8vDw0NFRUVml+hW6tatq/DwcB06dMjsUtxCYGBgiV+W27RpU+YpHdnZ2Y7txIkT+te//uW0LzMzU2+//bbL/TESW0aenp666aabtH79escNRcXFxVq/fr3Gjx9vbnFAFTIMQxMmTNDKlSuVmJio5s2bm12S2ysuLlZBQYHZZbiF2267Tbt373baFxMTo4iICD3++OOy2+0mVeae8vLydPjwYY0cOdLsUtxCr169Siyp+N133ykkJKRM/axYscLxOi0tTR06dHDad+rUqTINCBJiy2HKlCkaNWqUunTpoq5du2revHk6d+6cS8PkqJi8vDyn37zT0tKUkpKi+vXrq1mzZiZW9usXGxurd999V5988ol8fX0dc8D9/PxUq1Ytk6v79Zs+fboGDRqkZs2aKTc3V++++64SExO1Zs0as0tzC76+viXmf9euXVsNGjRgXng1mDp1qqKjoxUSEqITJ05oxowZstvtGj58uNmluYVHHnlEPXv21DPPPKOhQ4dq27ZtWrx4sRYvXlzuPmvWrKmLFy867cvPzy/b0mkGyuWVV14xmjVrZnh6ehpdu3Y1tm7danZJbiEhIcGQVGIbNWqU2aX96pV23SUZS5YsMbs0tzBmzBgjJCTE8PT0NBo1amTcdtttxhdffGF2WW4tMjLSmDRpktlluIVhw4YZgYGBhqenp9GkSRNj2LBhxqFDh8wuy6189tlnRvv27Q0vLy8jIiLCWLx4cYX6KyoqMjw9PY21a9c69i1atMgICwtzuQ/WiQUAAEC1GzNmjJYtW6YBAwbo/PnzWrdunWbOnKm//vWvLp1PiAUAAEC1O3/+vGbNmqX169fL09NTd955px599FHVqOHaugOEWAAAAFgON3YBAACgyiUlJbl0XGRkpEvHMRILAACAKme322UYhmw2m2Nfae+Li4td6o+HHQAAAKBapKamKisrS1lZWdq1a5d8fHx05swZZWVl6bvvvnMKtNfDdAIAAABUizp16qhOnTqSJB8fHxmGIT8/P0mX1oktywQBRmIBAABgOYRYAAAAVLnKvg2LEAsAbuDIkSOy2WxKSUkxuxQAburn811r1qyp0NDQax5zLYRYACiH0aNH66677nK8j4qK0uTJk02rJy0tTX/6058UFBQkb29vNW3aVIMHD9aBAwckScHBwUpPT1f79u1NqxGAe9uyZYsaNGjgeB8cHKzdu3c73vv7+ys9Pd3l/rixCwAs7uLFi+rfv79at26tFStWKDAwUMePH9eqVat09uxZSZeWtgkICDC3UABurWvXrtc9xt/f3+X+GIkFgAoaPXq0kpKS9NJLL8lms8lms+nIkSOSpD179mjQoEHy8fFR48aNNXLkSJ0+fdpxblRUlCZMmKDJkyerXr16aty4sV5//XWdO3dOMTEx8vX1VVhYmFatWnXVz9+7d68OHz6shQsXqnv37goJCVGvXr00e/Zsde/eXVLJ6QSjR4921HrllpiYKEkqKCjQ1KlT1aRJE9WuXVvdunVztAHALwEhFgAq6KWXXlKPHj00duxYpaenKz09XcHBwTp79qz69u2rzp07Kzk5WatXr9bJkyc1dOhQp/PfeustNWzYUNu2bdOECRM0btw4DRkyRD179tTOnTt1++23a+TIkfrvf/9b6uc3atRINWrU0IcffqiioiKXa75ca3p6uiZNmiR/f39FRERIksaPH68tW7Zo+fLl+vbbbzVkyBANHDhQBw8erNjFAoBKwhO7AKAcRo8erbNnz+rjjz+WdGlEtVOnTpo3b57jmNmzZ2vTpk1as2aNY9/x48cVHBys1NRUhYeHKyoqSkVFRdq0aZMkqaioSH5+frr77rv19ttvS5IyMjIUGBioLVu2OEZWf27BggV67LHHZLfb1aVLF/Xp00cjRoxQixYtJF0aiW3evLl27dqlTp06OZ27YsUKjRgxQuvWrVOvXr109OhRtWjRQkePHlVQUJDjuH79+qlr16565plnKnr5AKDCGIkFgCryzTffKCEhQT4+Po7t8kjn4cOHHcd16NDB8dput6tBgwa64YYbHPsaN24sScrMzLzqZ8XGxiojI0NLly5Vjx499MEHH6hdu3Zau3btNWvctWuXRo4cqfnz56tX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69y5c2aX5haaNm2qOXPmaMeOHUpOTlbfvn01ePBg7d271+zS3M727dv12muvqUOHDmaX4lbatWun9PR0x/bll1+aXZLbyMrKUq9evVSzZk2tWrVK+/bt0wsvvKB69epV2mf8/ClgLj0VzECZde3a1YiNjXW8LyoqMoKCgoy4uDgTq3I/koyVK1eaXYbbyszMNCQZSUlJZpfiturVq2f885//NLsMt5Kbm2u0atXKWLt2rREZGWlMmjTJ7JLcwowZM4yOHTuaXYbbevzxx41bbrml0vpr06aNcfr0acf7rKwspwx19uxZY9CgQdfth5HYMrpw4YJ27Nihfv36OfbVqFFD/fr105YtW0ysDKhe2dnZkqT69eubXIn7KSoq0vLly3Xu3Dn16NHD7HLcSmxsrO644w6nnwGoHgcPHlRQUJBatGihESNG6OjRo2aX5DY+/fRTdenSRUOGDJG/v786d+6s119/vdz97du3Tw0aNHC8r1u3rqZNm+Z47+fnp//85z/X7YcQW0anT59WUVGR4466yxo3bqyMjAyTqgKqV3FxsSZPnqxevXqpffv2ZpfjNnbv3i0fHx95eXnp4Ycf1sqVK9W2bVuzy3Iby5cv186dOxUXF2d2KW6nW7duevPNN7V69Wq9+uqrSktL06233uq4mx1V6/vvv9err76qVq1aac2aNRo3bpwmTpyot956y9S6eNgBgDKLjY3Vnj17mJNWzVq3bq2UlBRlZ2frww8/1KhRo5SUlESQrQbHjh3TpEmTtHbtWnl7e5tdjtsZNGiQ43WHDh3UrVs3hYSE6P3339f9999vYmXuobi4WF26dNEzzzwjSercubP27NmjRYsWadSoUabVxUhsGTVs2FB2u10nT5502n/y5EkFBASYVBVQfcaPH6/PP/9cCQkJatq0qdnluBVPT0+FhYXppptuUlxcnDp27KiXXnrJ7LLcwo4dO5SZmakbb7xRHh4e8vDwUFJSkl5++WV5eHhcdz1LVK66desqPDxchw4dMrsUtxAYGFjil+U2bdqYPqWDEFtGnp6euummm7R+/XrHvuLiYq1fv565afhVMwxD48eP18qVK7VhwwY1b97c7JLcXnFxsQoKCswuwy3cdttt2r17t1JSUhxbly5dNGLECKWkpMhut5tdolvJy8vT4cOHFRgYaHYpbqFXr14lllT87rvvFBIS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0blz5zRy5Eh5enpaXffwww8rMTFRTz31VJntTJ8+XW3btrXqNTWZTFq0aJF69+6t8PBwTZ48Wa1bt9aVK1e0fv16nTp1Smaz2aqd8+fPKzs72+qYh4eH6tSpU97HAgAAABts2bJFnTt3LnX82qQBx48fV1xcnNasWXPDdso9JrZVq1ZKT09XQECAHn30UbVs2VJPPvmkoqKitGnTJsscsWWpX7++HnvsMU2dOlWJiYnq1atXqQArXQ2x6enp+uGHH8psJygoSCNGjNClS5esjnfr1k3btm1TcHCw4uPj1aZNG3Xv3l1LlizRW2+9VWp+2ri4OPn4+Fhts2fPLu8jAQAAgI3KCrDXfPjhh2rfvn2pjseymAwWgK6QvLw8eXp6auubfmpwO0vPwnkUFpk08V9tJUmvP7Bbbi78FgLncOmKSc/+++qv/U8//bTUVJMAKu7UqVMaNWqUvvnmG73xxht64oknbnpPuYcTwNqVkhoqLLr5dcBvRWGRqczPwG/dlZL//8fLW5l3HHB2v159taioSO+++67atWunnTt3ys/Pz6Z2CLG36OU1QapZs6a9ywDs4sVVbexdAgDAwXz55ZdW+0VFRTp37pwGDRpkc4CVCLEAAACoRt9//32pY1999ZWeeOIJff7550pMTFSLFi1u2g5jYivo2pjYkydPMmcsnIphGCosLJR0df5k/lkVzohf+0DlO3v2rEaNGqVVq1bptdde0x//+McbXk+IraBrITY3N5cQCwAAUEk++eQTxcfH69y5cze8rkLLzgIA4GwMw9ClS5d06dIlm5dfB1B+/fv3v+E0XNcQYgEAsEFhYaEGDx6swYMHW4bUAKh8Fy9e1Nq1a296HSEWAAAb/HKBnV8vtgOg+hFiAQAA4HCYYgsAABuUlJSU+RlA+ZjN5koZV06IBQDABvn5+Vaf69evb8dqAMe1cuXKG57Pzc1VbGzsTdup8uEECxYskIeHh4qK/n9t1oKCAtWsWVORkZFW16akpMhkMunw4cPy9/fXrFmzSrU3depUdezYscx9f39/mUym627Dhw+XpOueX7p0aSX/9AAAAPilBx988IZbnz59bGqnyntio6KiVFBQoPT0dHXr1k2StGHDBnl7e2vLli26dOmSatWqJUlKTk5W8+bN1bJlywp919atW1VcXCxJ+u677/Twww9r//79lnlca9eu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xAIAAKDKff7555bPx44dU2RkpK5cuaKgoCDNnDmz3O0xJhYAAADV5vjx44qMjFSTJk20du1azZ8/X3/961/L3Q49sQAAAKgWJ06cUFRUlHx9fZWUlKQ6deroyy+/1P3336/69evr8ccft7ktQiwAAACqXFZWliIjI9W4cWOtWrVKderUkSRFRkZqyZIlGjJkiOrWratHHnnEpvZMhmEYVVkwAAAAEBISIi8vL61evVru7u6lzn/44YcaNWqULl68aFN79MQCAACgynl5eWnVqlVlBlhJeuyxx3TmzBmb26MnFgAAAFWuoKDgugG2IgixAAAAqHK2LHZgGIY++OADm9ojxAIAAKDKDRo06LrniouL9c033+jixYsqKSmxqT3GxAIAAKDK/XKxg1/68ssv9cILL6hWrVqaMmWKze2x2AEAAACq3YYNG9S9e3dFR0frgQce0I8//qjnnnvO5vsJsQAAAKg2u3btUv/+/XXvvfeqbdu2OnTokF577TV5enqWqx1CLAAAAKrcTz/9pNjYWHXs2FEuLi7auXOn3nvvPfn6+laoPV7sAgAAQJWrVauWatSooaefflphYWHXvW7AgAE2tUeIBQAAQJVzcXHRzWKnYRg2z05AiAUAAIDDYUwsAAAAHA7zxAIAAKDa7NmzR/v371deXl6Z52NjY21qh+EEAAAAqHJ5eXl69NFHtWbNGrm4uKhOnTqlrjEMQ+fOnbOpPXpiAQAAUOWmTJminJwcbdu2TR07drzl9uiJBQAAQJULCgrSggUL1LNnz0ppjxe7AAAAUOVOnDihgICASmuPEAsAAIAq17RpU+3bt6/S2mNMLAAAAKrcoEGDNGHCBLm6uurOO++Up6fnLbXHmFgAAABUuf/+97964okntHTp0huu3MWKXQAAAPifk5WVpQMHDig3N7fM8w8++KBN7RBiK8gwDOXn58vDw0Mmk8ne5QAAADgVxsRWUH5+vjw9PZWbm6vbb7/d3uUAAAA4hLS0NH3yySc6cOCATCaTAgMDFRMToy5dupSrHWYnAADABoZh6NKlS7p06dINx/MBuL5JkyYpLCxMixYtUlZWlk6cOKEPPvhA3bp104svvliutgixAADYoLCwUIMHD9bgwYNVWFho73IAh7N8+XK9+eabmjVrls6ePavt27dr+/btOnv2rN555x399a9/1YoVK2xujxAL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "palette = {\n", + " 'ORANGE': 'orange',\n", + " 'WHITE': 'wheat',\n", + "}\n", + "# We need the encoded Item Size column to use it as the x-axis values in the plot\n", + "pumpkins['Item Size'] = encoded_pumpkins['ord__Item Size']\n", + "\n", + "g = sns.catplot(\n", + " data=pumpkins,\n", + " x=\"Item Size\", y=\"Color\", row='Variety',\n", + " kind=\"box\", orient=\"h\",\n", + " sharex=False, margin_titles=True,\n", + " height=1.8, aspect=4, palette=palette,\n", + ")\n", + "# Defining axis labels \n", + "g.set(xlabel=\"Item Size\", ylabel=\"\").set(xlim=(0,6))\n", + "g.set_titles(row_template=\"{row_name}\")\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ఇప్పుడు మనం ఒక నిర్దిష్ట సంబంధంపై దృష్టి సారిద్దాం: అంశం పరిమాణం మరియు రంగు!\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings(action='ignore', category=UserWarning, module='seaborn')" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGwCAYAAACHJU4LAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB9+0lEQVR4nO3deXQc1Z33/3dV9aatZcnaF1tesTEYL3gLdmzAxDAOkEDCPgES8jwTiJMZMkxgzu8MhFmAMUlIgkOWYSDJQIAwLE54MAEvbLHBbGFzAjZeZFuLV+1qqZffH1dSd6m7Zcu2UBs+r3N0wP3tunVv1e263666V7JisVgMERERkQxkD3cFRERERNJRoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLM9wV+BoRKNRdu/eTV5eHpZlDXd1RERE5DDEYjFaWlqoqKjAtge+Z3JcJyq7d++murp6uKshIiIiR6C2tpaqqqoB33NcJyp5eXmAaWgwGBzm2oiIiMjhaG5uprq6um8cH8hxnaj0Pu4JBoNKVERERI4zhzNtQ5NpRUREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjDXsv0J/165dfPe73+Xpp5+mvb2d8ePHc99993HqqacOd9U+2SIhqP1fOPg25E2E0ZeAJzseb3wR6laBNwg1l0N2wh+Nat0G238L4Tao/DwUzY3HultNrHULFMyA6i+C7TWxWBR2r4I9L0KgDMZcAf6R8W0Pvge1j5r/r/4SjJgSj4X2wbYHoKMOihdAxdlg9eTZ0W6ofRwOvAG542D0peDNjW+7dwPs+gN4ckwstyYea99pyu1uhvKzoWRBPBZuh+0PQ8tfYcRUqL4QHH9PW2JQ/xw0rAF/sWlLoGSwZ0FERA7BisViseHa+YEDB5g+fTqnn3463/jGNyguLubDDz9k3LhxjBs37pDbNzc3k5+fT1NTk/7Wz2B07oXVi6DpvfhrOTWweB1kj4JXroGP/jses31w2sNQ/QXY9hCs/1uIhePxCdfBrLuhZTM8twg6dsVjBdPhzNXg5MAL55vkp5c3HxY9DcXzYNOd8OYN7npO+0848QaTaKw9G7qb4rHyJfDZlRBph9VnmiSlV1YlnLkWghPgtWXwwd3xmOWBeb+Gmkth55Pw0kUQ7YrHx14Nc+6F9h2mLW3b4rH8KaZcXwG89GXY+UQ85smBhX+A0kUpD7mIiMQNZvwe1kTlxhtv5OWXX+bFF188ou2VqByhjd+ED1ckvz7qyzDmKnh+aXLMPxKWboKV4yDckhw/cx1sWg67n0qOTb7BJEKvXZccy58CC38Pvx9v7rgksmw4dzM8f647qep16gqTSGxanhyrWGr2u3pRcsyTB+dtgacmmzs1/S18CrbeDzt+lxybcB2MnAUbrkqO5Y6Fcz+M3+kREZGUBjN+D+sVdeXKlZx66ql8+ctfpqSkhOnTp/PLX/4y7ftDoRDNzc2uHzkCiXcCXK8/CbueTB0L7YMP70mdpIB5jFT3dPr97UxTbtN7sOW/k5MUMK9tvjd1knKocuuehh3/mzoWbjFtSZWk9JW7Mk3s8fT7bP0IDr6TOiYiIkdkWBOVjz76iHvuuYcJEybwzDPP8I1vfINvfetb/OpXv0r5/ttuu438/Py+n+rq6o+5xp8QvfMs+rP95iftdtkDxAJgedPH0u0TwMlKH/McYp/pyrW84AkMsO0hyrV9g4/BwMdPREQGbVgTlWg0yowZM/iP//gPpk+fzv/5P/+Hr3/96/zsZz9L+f6bbrqJpqamvp/a2tqPucafEDWXp3n9MvOTSk4NTPymmQSbxDJljroo9bajL0u/z+IFMP7rJgHoz/abWPGC5Nihyh11EdRcYerWX6DMtCWnJvW2NQOUW3N5+ljBDMiflDomIiJHZFgTlfLyck488UTXa5MnT2bHjh0p3+/3+wkGg64fOQJT/hkqPu9+rXgBTLvDrOCZdkd8pQ6YgX3+I+YOxYJHwV8Uj9k+mHkXFJwCM38II+e4y62+ECZdD6MvhonLcCUOeRNg3v0QKIbPPGAmpPby5JjXAsXmPXkTEwq1TKJRc4kpu/pL7n2OnGPqUjAVZv7IfQfEXwTzf2faMv937sTL8sC023uOwe3JCVLFUnPsqs6Fyf/knouSU2PqKyIix9SwTqa97LLLqK2tdU2m/Yd/+AdeeeUV/vSnPx1ye02mPUr73+hZnnyCWXmTqKPOLL/1BqH8HHASBvtIJ+x+2ixPLv9c8rLcxpegdbO5w1Aw1R1r2QJ7XoKscihb7B7su5tNuQAV55h994pFTX066qB4PuT1WxV24O348uSSfglGZyPU/dEkPxXnuO/eRLrMSqTuJlOfrHL3tnvWx5cnF85wx1q3QePzpv1lZ4E97Kv9RUSOC8fNqp+NGzfymc98hu9973tcdNFFvPrqq3z961/nF7/4BZdfnub2egIlKiIiIsef42bVz6xZs3j88cf57W9/y0knncS//uu/ctdddx1WkiIiIiKffMN6R+Vo6Y6KiIjI8ee4uaMiIiIiMhAlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsz3Du/JZbbuF73/ue67UTTjiBv/zlL8NUo34e9ANd8X9f3AHbH4Gm9yB/Coy+CJxAPN6wFuqeBX8h1FwOWeXxWMsW2P4QRDqh+gtQODMe626GbQ9C2zYYORsqzwO759TEorDrKdj7MmRVwZjLwVcQ3/bAn6H2MbAcGH0xBE+IxzobYev/QGgPlJ4OZWeBZZlYJAS1/wsH34a8iTD6EvBkx7dtfBHqVoE3aNqSXRWPtW6D7b+FcBtUfh6K5ia0pdXEWrdAwQyo/iLY3nhbdq+CPS9CoAzGXAH+kfFtD74HtY+a/6/+EoyYEo+F9sG2B6CjDooXQMXZYPXk2dFuqH0cDrwBueNg9KXgzY1vu3cD7PoDeHJMLLcmHmvfacrtbobys6FkQTwWboftD0PLX2HEVKi+EBx/T1tiUP8cNKwBf7FpS6Akvm3zX822sQhUXwAFp8RjXQdg6wPQsROKPmOOYV9bwrBrJex7FXJqoOYycw567X8dap8w9Rh9KeSNi8c66kxbQvuh/CxzzntFOo9d3930X7D9Z/H4uO/AnDv5pIt07CXSsRfL8eLJqcTyxI9ftLuNSNtuYrEonuxSbP+Ivlgs2k24dTexcDu2fwROdilWz/mOxWJEOhqJdu7H8gRMuY4vXm6omXB7HRYWTk4Fti/er2OREOHWXcQiIZxAEXZWEVbP5zsWixBpqyfa1YztzcHJqcSynXhbOvcRad+DZXtwciuxPVkJbWk3bYmGcbJLcQLx600sGibSuotouB3bl4+TU+ZqS7SjkUjnfizHjye3yt2WrhYibXUAODnl2L68hLZ09bSlEydQiJ1VktCWaE9bmrA92Ti5lVh2fOiKdB4g0t5g2pJTge2NX8ei4Q4irbt62lKME4hfb2LRCJG23US7W7F9wZ62OPG2dPaebz+e3Eqs3s8+EO1qNceIGJ7scmx//DMai3QRbttFLNyJ7S/oOd8JbWlvIBo6iOXJxpNbgdV7fQSioYOE2xuwsHFyK7C9OfFyw52m3Eg3TlYRTlZRv7bUEe1uwfbm4eSUu8738c6KxWKx4dr5LbfcwqOPPspzzz3X95rH46GoqGiAreKam5vJz8+nqamJYDB46A0G40Hr0O/JmwBnroOsMvjTFWaA7uVkwYLHzIC65T549etm0Oo1+Z9g+h1mcF5zJnQ2xGMj58IZfwTLA+v+BhrXxWP+kXD6H6FwBrxzK7xzc0KFLDj1JzDxOmhYB8+fC+HWeLjqfJj/KHQdhNWLzKDVK6cGFq+D7FHwyjXw0X/HY7YPTnvYDFLbHoL1fwuxcDw+4TqYdTe0bIbnFkHHrnisYDqcuRqcHHjhfJP89PLmw6KnoXgebLoT3rzBfXyn/SeceINJNNaeDd1N8Vj5EvjsSoi0w+ozTZLSK6sSzlwLwQnw2jL44O6EQ+SBeb+Gmkth55Pw0kUQTUhGx14Nc+6F9h2mLW3b4rH8KaZcXwG89GXY+UQ85smBhX+A0kXwwU/htW8CCR+tk2+Bk2+G/W/C2rNM4tWrZKE5DrEIrDkL9m2IxwIlcMYak7S9dSO8f0dCW2yY/UsY91XY/Qy8+EWIdMTjoy+Bzzxg+tZzC6Hlw3jsaPpuKp6RcNHegd9znIrFYnTteZNI2+74i5aNv+RUnOwSwi21dO19m8Tz7ckfh69wMtGuFjrrN5gvBj1s/wj8ZXMBi1DDq0Q7E/qC7SVQNhfbn0/3gQ/oPviBqy7ekSfhDdYQ6dhLqGGj67w42aX4SmZCNExn3Xpi3S3x6nqy8JfNw/Jk0bX3bSKttQml2vhKZuDJKSPcuouuPW+525I3Gl/RyUS72wjVrScW6YyX6wsSKJsLtodQw0aiHXsSivXgL52DEyigu2kL3fs3udtSMBnviHFEOg8QanjFJOm9m2YV4y+dBdEInfUbiHXFP/uWE8BfPhfbm0vXvncJN29LKNXCVzwNT24l4bZ6uhrfAKLxY5Rbja9oKrFwB6H69cTC8c+L5c0jUD4XbC9dja8TaU+4JlsO/tJZOFlFdDdvo3vfu+62jJiIt2Ai0VCTOd/R7nhbAoX4S+cAMUL1G4iGDiYcIx+B8nnYvjy69m8i3LTFVa6vaCqevFFE2hsJNb5mvuz1tiWnAl/xdIiEzPkOt8Wr68nBXz4POyGZzjSDGb+HPVF54okneOutt45o+yFLVH4/HVoOs05jr4KKpWbg6i+rAs5+E1aONt9G+1uy0QzOiYlIr5NvMYNf/8EboHAWzLsfnpqSHLO9cN5WeO6z0PpRcnzu/bBvI3y4Ijk26ssw5ip4fmlyzD8Slm6CleMg3JIcP3MdbFoOu59Kjk2+wSRCr12XHMufAgt/D78f7/oQAmYgPnezSbgSk6pep64wicSm5cmxiqVmv6sXJcc8eXDeFnhqsjth6LXwKdh6P+z4XXJswnUwchZsuCo5ljsWFr8AK8e4LlR9lr4H66+C/RuTY9OXmztU79ySHCtZZOLPzEqOOQE4bzusmg4du5Pj839nzslH9yfHjqbvpnLZsF1KhlS4bXfPgOdmOX78FQvo3Lkmue8C/or5dO/f5E5EenhHTATbSRq8AWxfPr7iaXTuej5FbSwCVWf0DLLtSVFf0SnmW3nL9qSYk1OOJ7fKJDhJO/USqFpEZ+1a95eQ3raUzaO7aQvRjsakmCd/LJYnO2nwBjP4+0tnmWOUQqDqDEING11JVS/vyJOIhdsJNyVfx+ysErz54wjVr08u1PIQqDqdzl3rUn4O/aWzCLfu7Lu742pL3mhs/wi69v45RbHZ+Mvm9bQlua8HKhfStectoglJVV9bCidDNJKUeALYgZF4CycT2v1SirbY5hjtfpFYQrLby1cyg0h7I5HWnUkxJ7cKf/G05DIzxGDG72F99APw4YcfUlFRQSAQYN68edx2222MGjUq5XtDoRChUPxkNTc3D02lDjdJAXMbPtWgBGbg+PCe9Bf67b9NnaSA+bbuyUkd278Rtv4mdSzaDZt/kTpJ6S13X4oLFZg7DImPlRKF9pm2pEpSwDxGqns6/T5zxqSONb0HW+5NeaEnFoXN96ZOUnrLbUu+IAOmLjljU8fCLaYtqZKU3nJ3rkwTezx1QgDmmG/+Rfr+sPXXqZMUMI+uEu+GJGpcZx69pBLphM33pK9T7ePpz8vR9N1PkUhbQ8rXY5GQSQhS9V0g0ro7ZZICEG6v73vM0F+0q4lwioGnZ6+EW7anTFIAIu31REPJAyWYdiQ+ZnDvtNvcmUiRpACE2+pSJil95SY8bnHVtruFcMuO1PsEwi07UiYpptx6Ymk+E9GORsKe1PskFibcsi1t3w63N7jvliTus70+ZUJgim0n3LqDVEkKQLh1Z8okBXrakuauZLRzH+HWXSljxKLmGKWpU6StnkjiXazEWJo2Ho+GdTLtnDlzuP/++1m1ahX33HMPW7duZcGCBbS0pO64t912G/n5+X0/1dXVH3ONU3D8YPvTx9MlGwBOtplbkoo9ULmW2TbtPgeI2f74PItB7ZOB9+kEwEpzEXQC6fd5qHIHastA5VpeGOi256HaYvsGH4ND1DcHSPNIcaByLcc8jkm7z4H62EBtOcT59g5Q7qeJlf4yaVkDfNezbNKdb8uyByw37XXhkPt00pd7iH0esi0DlGsdYVsYYB6FmWNxpG0Z6PjZA5Q7wPEDLAZoy0DtHPAYWQPWd+ByD3G+PyGGtSXnnHMOX/7yl5k6dSpLlizh//2//8fBgwd55JFHUr7/pptuoqmpqe+ntrY25fuO2ui/O/z31lxuflIJTjLzRXyFyTHLhjFfMfNGBltu+edg3NVmvkV/nlwY/3dmIutgy625zPykklMDE79pJsEmsUyZoy5Kve3oy9Lvs3gBjP+6e2JnL9tvYsULkmOHKnfURVBzBSkHikCZaUtOTeptawYod6DjVzDDHHtPbnLM8phzVr5k8OVWnQ9jr0x94fEVwIRrITh58OUequ9OSNN3P2U8uZUpX7e8uXiCNfHJ4v23y6vCyS5NGXNyKtOWa2cV48mrJmXftRw8+aOxfPmpy82txElTrie3AicnTVs8WTjBmrSJvze3CienPGXMk1uZtlzbX4g3OCp137VsvHmjsP2p+5iTU5H2GDk55XjzqlLGcPw4wTFYntTJ/UDHfqDjZ/ny8eSPTpM4WHjyqrGzilNuO9AxcrJLe853CrYXb7AGy5vimtJTridNuelePx5lVMo1YsQIJk6cyObNm1PG/X4/wWDQ9TMkTrvn8N5Xthim3gplZ5g5JYkdOLsKTnsIPFkw/xH3IxXbD7N+biZ7nrrCTDhNVHO5GXzGXg3jrsF1wcqfYiZQZleZ+SaJ37S9QbNPX76ZRJn4uMWyzZyNqnNhyj9Dxefd+yxeANPuMCt4pt3hvvgGykwbPAFY8Cj4EyY72z6YeZdZ1TLzhzByjrvc6gth0vVmRdLEZe625E0wc20Cxaa+iXcGPDnmtUCxeU/exIRCLZNo1Fxiyq7+knufI+eYuhRMhZk/ct9R8BeZeRuegPlvYuJleWDa7T3H4PbkBKliqTl2VeeaydCJF9+cGlNfX76ZeJy4UsfJgrn3mXM2+xfmHCa2Zdw15lxPuLYnuUpQMM30kbzxps8k3gHxFfS0Jduc98SVWZYDJ91s+ubUW01fTXSkfTfdHaHyNEnqJ4CTVWTmlCS03XIC+ItnYNkO/pKZ7s+LZeMrmortzcU38iQsn/s65eRU4gnW4ORW4+S6ByjLm2e29WThKz7F3ccsD/6SGVi2F3/xdKx+d+88+WPxZJfizR+PnVXiitn+QryFk3ECBXgLJrnaguPHVzITu68tiXfgbLyFU7D9QXyFU1yrmQCc7DKz39wKk7QltsWTg6/4FCzHbyZ9JvYxy8FXPL0ndgpWv7t3nmCNGYTzx+JkuxMk2z/C1MUXxFs4BdcwZvvw97TFVzKzX+Jl4S2YZI5B4aSkBMnMexmPJ7sUT/44V8zyZJljbnvxl8xwf0m0bHzFp5hzVjQVy5vn2rb3PHuCNUnJiuUL4ht5ErY3B1/RVPf5tr34S2b29LEZWK4vcxaeERNM3yyYiB1wL0CxA+b1T4phnUzbX2trK6NGjeKWW27hW9/61iHfP6SrfgBeuBJ2/tr8f9YY+OJHsPdVaH4fgidC0Wz3+9t3Qv0as8SzfIn74hVuh91Pm2f+FWe7l+XGYtD4vJkYWjjLvSwXzFLXvRvMAFJ6RnyJMZilrrtXmeXM5ee4l+VGw1D/rFmmXLLQvSwXYP8bPcuTTzArbxJ11Jnlt96gKTdhmSGRTtOWcJu5uxNwXxRpfAlaN5s7DAVT3bGWLbDnJbP8tWyx+4PZ3WzKBag4xz3Yx6KmPh11UDzfvSwX4MDb8eXJJf0SjM5GqPujSX4qznHfvYl0mZVI3U2mPln9vjXuWR9fnlzY7y5V6zZz3gIlZul3wpJJulvN3JBo2JzvxME+FjPLmttroWiee0k5QNP78eXJJQvd5zu0z5xvJ2DakjhYRbuh7hmzPLnsDHfiAse27yauivuETqLtLxruINqxD8vxYmcVu27lx6IRIh2NEIvgZJW4luWapa77iIU7sP0jXMtywSx1jYYOYHmysAMj+5ayglnqGunYA5Zlyk3oY7FYlGjHXmKREHZgpGtZLkA01ES0qxnLm+taYgxmqWukYy/YHpzskgHaUuxalgsQ6dxPrLsN25+P3S8Ji3a3maXWTsC1XNqU202k3cyncLKLXfNlzNLmvcQindiBQteyXHOMmomGmrC82a4lxuYYhXqOkdNzjJyEcqNE2hshGsbJKnItKTdtOUCsZ3my7XffpYp2txPt3Ifl+HvakniMwj3HKNZzjNKd7wLXknLTlpae5cnpzndj2rZEO/YQi3RjZ410LSkHiIQOEOtqxfLl4vjTzDXMIMfNqp9//Md/5Nxzz2X06NHs3r2bm2++mbfeeov333+f4uLUt9ASDXmiIiIiIsfccbPqZ+fOnVx66aXs27eP4uJi5s+fz4YNGw4rSREREZFPvmFNVB56KM2SSxEREREybDKtiIiISCIlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsz3BXINHtt9/OTTfdxLe//W3uuuuu4a4OPGi5/31xB2x/BJreg/wpMPoicALxeMNaqHsW/IVQczlklcdjLVtg+0MQ6YTqL0DhzHisuxm2PQht22DkbKg8D+yeUxOLwq6nYO/LkFUFYy4HX0F82wN/htrHwHJg9MUQPCEe62yErf8DoT1QejqUnQVWT5siIaj9Xzj4NuRNhNGXgCc7vm3ji1C3CrxB05bsqnisdRts/y2E26Dy81A0N6EtrSbWugUKZkD1F8H2xtuyexXseRECZTDmCvCPjG978D2ofdT8f/WXYMSUeCy0D7Y9AB11ULwAKs4GqyfPjnZD7eNw4A3IHQejLwVvbnzbvRtg1x/Ak2NiuTXxWPtOU253M5SfDSUL4rFwO2x/GFr+CiOmQvWF4Ph72hKD+uegYQ34i01bAiXxbZv/araNRaD6Aig4JR7rOgBbH4COnVD0GXMM+9oShl0rYd+rkFMDNZeZc9Br/+tQ+4Spx+hLIW9cPNZRZ9oS2g/lZ5lz3ivSeez67qolwL54nHK4bDcyeLFYjEhHI9HO/VieAJ6cSizH1xePhpoJt9dhYeHkVGD74v06FgkRbt1FLBLCCRRhZxVh9Xy+Y7EIkbZ6ol3N2N4cnJxKLNvp2zbSuY9I+x4s24OTW4ntyYrvs7udSNtuYtEwTnYpTiB+vYlFw0RadxENt2P78nFyyrB6+m4sFiPa0Uikcz+W48eTW+VuS1cLkbY6AJyccmxfXkJbunra0okTKMTOKkloS7SnLU3Ynmyc3EosOz50RToPEGlvMG3JqcD2xq9j0XAHkdZdPW0pxgnErzexaIRI226i3a3YvmBPW5x4Wzr3EunY29OWSqzezz4Q7Wo1x4gYnuxybH/8MxqLdBFu20Us3IntL8DJLnW3pb2BaOgglicbT24FVu/1EYiGDhJub8DCxsmtwPbmpOw3nzZWLBaLDXclADZu3MhFF11EMBjk9NNPP6xEpbm5mfz8fJqamggGg4d8/6D0T1JSyZsAZ66DrDL40xVmgO7lZMGCx8yAuuU+ePXrZtDqNfmfYPodZnBecyZ0NsRjI+fCGX8EywPr/gYa18Vj/pFw+h+hcAa8cyu8c3NChSw49Scw8TpoWAfPnwvh1ni46nyY/yh0HYTVi8yg1SunBhavg+xR8Mo18NF/x2O2D0572AxS2x6C9X8LsXA8PuE6mHU3tGyG5xZBx654rGA6nLkanBx44XyT/PTy5sOip6F4Hmy6E968wX18p/0nnHiDSTTWng3dTfFY+RL47EqItMPqM02S0iurEs5cC8EJ8Noy+ODuhEPkgXm/hppLYeeT8NJFEO2Kx8deDXPuhfYdpi1t2+Kx/CmmXF8BvPRl2PlEPObJgYV/gNJF8MFP4bVvAgkfrZNvgZNvhv1vwtqzTOLVq2ShOQ6xCKw5C/ZtiMcCJXDGGpO0vXUjvH9HQltsmP1LGPdV2P0MvPhFiHTE46Mvgc88YPrWcwuh5cN47Gj6bjqXZcSl5LgRi0YINbxKtDOhL9heAmVzsf35dB/4gO6DH7i28Y48CW+whkjHXkING13nxckuxVcyE6JhOuvWE+tu6YtZniz8ZfOwPFl07X2bSGttQqk2vpIZeHLKCLfuomvPWyT2XU/eaHxFJxPtbiNUt55YpDNeri9IoGwu2B5CDRuJduxJKNaDv3QOTqCA7qYtdO/f5G5LwWS8I8YR6TxAqOEVk6T3bppVjL90FkQjdNZvINYV/+xbTgB/+Vxsby5d+94l3LwtoVQLX/E0PLmVhNvq6Wp8A4jGj1FuNb6iqcTCHYTq1xMLxz8vljePQPlcsL10Nb5OpD3hmmw5+Etn4WQV0d28je5977rbMmIi3oKJRENNdNZvMF+eetsSKMRfOgeIEarfQDR0MOEY+QiUz8P25dG1fxPhpi2ucn1FU/HkjeKTaDDjd0YkKq2trcyYMYOf/vSn/Nu//RvTpk0b3kTlcJKUXmOvgoqlZuDqL6sCzn4TVo4230b7W7LRDM6JiUivk28xg1//wRugcBbMux+empIcs71w3lZ47rPQ+lFyfO79sG8jfLgiOTbqyzDmKnh+aXLMPxKWboKV4yDckhw/cx1sWg67n0qOTb7BJEKvXZccy58CC38Pvx9v7rgksmw4d7NJuBKTql6nrjCJxKblybGKpWa/qxclxzx5cN4WeGqyO2HotfAp2Ho/7PhdcmzCdTByFmy4KjmWOxYWvwArx7guVH2Wvgfrr4L9G5Nj05ebO1Tv3JIcK1lk4s/MSo45AThvO6yaDh0p7mrM/505Jx/dnxw7mr6bihKVQUk1eAPYvnx8xdPo3PV8iq0sAlVn9Ayy7UlRX9Ep5lt5y/akmJNTjie3yiQ4STv1EqhaRGftWveXkB7+snl0N20h2tGYFPPkj8XyZCcN3mAGf3/pLDp3rknRFkxbGja6kqpe3pEnEQu3E25Kvo7ZWSV488cRql+fXKjlIVB1Op271qX8HPpLZxFu3dl3d8fVlrzR2P4RdO39c4pis/GXzetpS3JfD1QupGvPW0QTkqq+thROhmgkKfEEsAMj8RZOJrT7pRRtscmqXuy6M/VJMZjxOyMe/Vx33XUsXbqUxYsX82//9m9p3xcKhQiFQn3/bm5u/jiqN7DaJ1IPSmAGjg/vSX+h3/7b1EkKmG/rnjS3/fZvhK2/SR2LdsPmX6ROUnrL3ZfiQgXmDkPiY6VEoX2mLamSFDCPkeqeTr/PnDGpY03vwZZ7k5MUMK9tvjd1ktJbblvyBRkwdckZmzoWbjFtSZWk9Ja7c2Wa2OOpEwIwx3zzL9L3h62/SZ2kgHl0lXg3JFHjOvPoJZVIp2lLujrVPp7+vBxN35WjFmmrT/l6tKuJcOvONFvFCLfuSJmkAETa64mGkgdKs78G12MG9067zZ2JFEkKQLitLmWS0lduwuMWV227Wwi37Ei9TyDcsiNlkmLKrSeW5jMR7Wgk7Em9T2Jhwi3b0vbtcHuD+25J4j7b64lFQiljsXB7T1tSJ+Th1p0pkxToaUuau5LRzn1EWtN8fmNRIh178ORWpo5/Sgx7ovLQQw/xxhtvsHFjmgt4gttuu43vfe97H0OtBsHxg+1PH0+XbAA42WZuSaoObA9UrmW2HajcdGx/fJ7FoPZ5iHKdAFheiKX4kDuB9Ps8VLnpLkaHKtfygieQOnaofToB87grmqYt9gDfbg55XixSXuicQPrHK5YD9gBtGbCPDVDfo+m7cvSsAdYyWE760AAxLCd9uZY94D4ta4DhoHfbVF8oLLtvnkraOqVjD9BO2yEWOdK2DHT8bMw6klRtGeD49dQpfXCgmI1FLE2KYx2iL2jNy7AegdraWr797W/zwAMPEAgMcCHucdNNN9HU1NT3U1tbe8htjszIQ7+lV83l5ieV4CQzX8RXmByzbBjzFTNvZLDlln8Oxl1t5lv058mFCX9nJrIOttyay8xPKjk1MPGbZhJsEsuUOeqi1NuOviz9PosXwPivuyd29rL9Jla8IDl2qHJHXQQ1V5i69RcoM23JqUm9bc0A5Q50/ApmmGPvyU2OWR5zzsqXDL7cqvNh3FWpL1i+Aph4LQQnD77cI+27ckyk+5ZsZxXjyasmZd+1HDzB0Vi+/JTbOrmVOGnK9eRW4OSkjlmeLJxgTdrE35tbhZNTnjLmya1MW67tL8QbHJW671o23rxR2P7UfczJqUh7jJyccrx5VSljOH6c4BishAnC7m0r05c7wPGzfPl4gqPTJCQWnrxq7KzilNsOdIyc7NKe852C7cXJKkkd+xQZ1kTl9ddfp7GxkRkzZuDxePB4PDz//PP8+Mc/xuPxEIm4v2H6/X6CwaDrZ0hctvfw3le2GKbeCmVnmDkliR04uwpOewg8WTD/EfcjFdsPs35uJnueusJMOE1UczlMuNZM7Bx3Da4LVv4UM4Eyu8rMN3ESPozeoNmnL99Mokx83GLZZs5G1bkw5Z+h4vPufRYvgGl3mBU80+6Ir9QBM7DPf8TcoVjwKPiLEtrig5l3mVUtM38II+e4y62+ECZdb1YkTVzmbkveBDPXJlBs6pv4Dd6TY14LFJv35E1MKNQyiUbNJabs6i+59zlyjqlLwVSY+SP3HQV/kZm34QmY/yYmXpYHpt3ecwxuT06QKpaaY1d1rpkMnXjxzakx9fXlm4nHiSt1nCyYe585Z7N/Yc5hYlvGXWPO9YRre5KrBAXTTB/JG2/6TOIdEF9BT1uyzXlPXJllOXDSzaZvTr3V9NVER9p300o9KEh6Tm41Tq57gLK8efiKpmJ7svAVn+LuY5YHf8kMLNuLv3g6Vr+7jZ78sXiyS/Hmj8fuN7jZ/kK8hZNxAgV4Cybh+hw6fnwlM7FtB3/JzH534Gy8hVOw/UF8hVOw/SPcbcguM/vNrcATrHG3xZODr/gULMePr3i6u49ZDr7i6T2xU7D6rW7xBGvw5FbiyR+Lk+1OkGz/CFMXXxBv4RRcw5jtw9/TFl/JzH6Jl4W3YJI5BoWTkhIkM+9lPJ7sUjz541wxy5NljrntxV8yw/0l0bLxFZ9izlnRVCxvnmvb3vPsCdYkJSuWL4hv5EnY3hx8RVPd59v24i+ZOfBdnE+JYZ1M29LSwvbt7jkGV199NZMmTeK73/0uJ5100oDbD+mqH4AHg0DC89PLYrD3VWh+H4InQtFs9/vbd0L9GrPEs3yJe7APt8Pup80z/4qz3ctyYzFofN5MDC2c5V6WC2ap694NZgApPSO+xBjMUtfdq8xy5vJz3Mtyo2Gof9YsUy5Z6F6WC7D/jZ7lySeYlTeJOurM8ltv0JSbOJkr0mnaEm4zd3cC/TL+xpegdbO5w1Aw1R1r2QJ7XjLLX8sWuz+Y3c2mXICKc9yDfSxq6tNRB8Xz3ctyAQ68HV+eXNIvwehshLo/muSn4hz33ZtIl1mJ1N1k6pPV71vjnvXx5cmF/e5StW4z5y1QYpZ+JyyZpLvVzA2Jhs35ThzsYzGzrLm9FormuZeUAzS9H1+eXLLQfb5D+8z5dgKmLYmDVbQb6p4xy5PLznAnLnBs+27ihHNNoj0q0a5WoqEDWJ4s7MDIvqWsYJa6Rjr2gGXhZJW4luXGYlGiHXuJRULYgZGuZbkA0VAT0a5mLG+ua4kxQCzcSaRjL9genOwS16ObWDRCpKMRYhGcrGLXslyASOd+Yt1t2P58bJ/7uhvtbjNLrZ2Aa7m0KbebSLtZFeRkF7vmy5ilzXuJRTqxA4VJy3KjXc1EQ01Y3mzXEmNzjEI9x8jpOUZOQrlRIu2NEA3jZBVh9XscHOk8QKxnebLtd9+lina3E+3ch+X4e9qSeIzCPcco1nOM4tdHs7R5H7FwB7a/wLWk3LSlpWd5crrz3ZiyLZ80x92qn0SLFi0a/lU/IiIiMmQGM35rlo6IiIhkrGFf9dPfunXrhrsKIiIikiGO6I7KwYMH+a//+i9uuukm9u/fD8Abb7zBrl27DrGliIiIyOEb9B2Vt99+m8WLF5Ofn8+2bdv4+te/TmFhIY899hg7duzg17/+9VDUU0RERD6FBn1H5frrr+eqq67iww8/dP3uk7/5m7/hhRdeOKaVExERkU+3QScqGzdu5P/+3/+b9HplZSX19al/JbSIiIjIkRh0ouL3+1P+jZ0PPviA4uLUv5VPRERE5EgMOlE577zzuPXWW+nuNn/wybIsduzYwXe/+10uvPDCY15BERER+fQadKLy/e9/n9bWVkpKSujo6GDhwoWMHz+evLw8/v3f/30o6igiIiKfUoNe9ZOfn8+zzz7LSy+9xNtvv01rayszZsxg8eLFh95YREREZBAGnajs2LGD0tJS5s+fz/z58/tej8Vi1NbWMmrUqGNaQREREfn0GvSjn5qaGmbMmMGWLVtcrzc2NjJmzJg0W4mIiIgM3hH9ZtrJkycze/ZsVq9e7Xo9w/6+oYiIiBznBp2oWJbFT3/6U/6//+//Y+nSpfz4xz92xURERESOlUHPUem9a/IP//APTJo0iUsvvZR33nmHf/mXfznmlRMREZFPt6P668nnnHMOf/rTnzjvvPN49dVXj1WdRERERIAjSFQWLlyIz+fr+/eJJ57IK6+8wgUXXKA5KiIiIocpEon0/fLUTyKfz4dtH9FUWBcrdhxnF83NzeTn59PU1EQwGBzu6oiIiBxSLBajvr6egwcPDndVhpRt24wZM8Z1c6PXYMbvw7qj0tzc3FdQqr/zk0gJg4iISHq9SUpJSQnZ2dmfyIUo0WiU3bt3U1dXx6hRo46qjYeVqBQUFFBXV0dJSQkjRoxIucNYLIZlWUQikSOujIiIyCdZJBLpS1JGjhw53NUZUsXFxezevZtwOIzX6z3icg4rUVmzZg2FhYUArF279oh3JiIi8mnWOyclOzt7mGsy9Hof+UQikaFPVBYuXJjy/0VERGTwPomPe/o7Vm087Om4e/fuZfv27a7X3nvvPa6++mouuugiHnzwwWNSIREREZFeh52oLFu2zPVbaBsbG1mwYAEbN24kFApx1VVX8Zvf/GZIKikiIiKfToedqGzYsIHzzjuv79+//vWvKSws5K233uLJJ5/kP/7jP1ixYsWQVFJERESOzi233MK0adOGuxqDdtiJSn19PTU1NX3/XrNmDRdccAEej5nmct555/Hhhx8e8wqKiIiIGYeXLVvG2LFj8fv9VFdXc+655yb9geBPmsNOVILBoOuX07z66qvMmTOn79+WZREKhY5p5URERAS2bdvGzJkzWbNmDcuXL+edd95h1apVnH766Vx33XUfWz2G4zfpHnaiMnfuXH784x8TjUZ59NFHaWlp4YwzzuiLf/DBB1RXVw9JJUVERD7Nrr32WizL4tVXX+XCCy9k4sSJTJkyheuvv54NGzYAsGPHDs4//3xyc3MJBoNcdNFFNDQ0pC0zGo1y6623UlVVhd/vZ9q0aaxataovvm3bNizL4uGHH2bhwoUEAgEeeOCBIW9rf4edqPzrv/4rK1euJCsri4svvph/+qd/oqCgoC/+0EMPaemyiIjIMbZ//35WrVrFddddR05OTlJ8xIgRRKNRzj//fPbv38/zzz/Ps88+y0cffcTFF1+cttwf/ehHfP/73+fOO+/k7bffZsmSJSmncdx44418+9vfZtOmTSxZsuSYt+9QDvuPEk6dOpVNmzbx8ssvU1ZW5nrsA3DJJZdw4oknHvMKioiIfJpt3ryZWCzGpEmT0r5n9erVvPPOO2zdurXv6cavf/1rpkyZwsaNG5k1a1bSNnfeeSff/e53ueSSSwC44447WLt2LXfddZdrcczf//3fc8EFFxzjVh2+Qf315KKiIs4///yUsaVLlx6TComIiEjc4fzt4E2bNlFdXe2agnHiiScyYsQINm3alJSoNDc3s3v3bk477TTX66eddhp//vOfXa+deuqpR1H7o3f0f39ZREREhsyECROwLIu//OUvw7L/VI+bPk5KVERERDJYYWEhS5YsYcWKFbS1tSXFDx48yOTJk6mtraW2trbv9ffff5+DBw+mnJYRDAapqKjg5Zdfdr3+8ssvZ9w0jkE9+hEREZGP34oVKzjttNOYPXs2t956K1OnTiUcDvPss89yzz338P7773PyySdz+eWXc9dddxEOh7n22mtZuHBh2kc3N9xwAzfffDPjxo1j2rRp3Hfffbz11lvDsrJnIEpUREREMtzYsWN54403+Pd//3e+853vUFdXR3FxMTNnzuSee+7BsiyefPJJli1bxmc/+1ls2+bss8/mJz/5Sdoyv/Wtb9HU1MR3vvMdGhsbOfHEE1m5ciUTJkz4GFt2aFbscGbppNDY2EhjYyPRaNT1+tSpU49JxQ5Hc3Mz+fn5NDU1EQwGP7b9ioiIHInOzk62bt3KmDFjCAQCw12dITVQWwczfg/6jsrrr7/OlVdeyaZNm/pmIluWRSwWw7IsIpHIYIsUERERSWnQicpXv/pVJk6cyL333ktpaSmWZQ1FvUREREQGn6h89NFH/O///i/jx48fivqIiIiI9Bn08uQzzzwz6ZfBiIiIiAyFQd9R+a//+i+uvPJK3n33XU466SS8Xq8rft555x2zyomIiMin26ATlfXr1/Pyyy/z9NNPJ8U0mVZERESOpUE/+lm2bBlXXHEFdXV1RKNR14+SFBERETmWBp2o7Nu3j3/4h3+gtLR0KOojIiIi0mfQicoFF1zA2rVrh6IuIiIiIi6DnqMyceJEbrrpJl566SVOPvnkpMm03/rWt45Z5UREROTT7YhW/eTm5vL888/z/PPPu2KWZSlRERER+ThEI7DnReiog6xyKF4AtjPku12xYgXLly+nvr6eU045hZ/85CfMnj17yPY36ERl69atx2zn99xzD/fccw/btm0DYMqUKfzLv/wL55xzzjHbx1F5sN9v3b24A7Y/Ak3vQf4UGH0ROAl/v6BhLdQ9C/5CqLncdJxeLVtg+0MQ6YTqL0DhzHisuxm2PQht22DkbKg8D+yeUxOLwq6nYO/LkFUFYy4HX0F82wN/htrHwHJg9MUQPCEe62yErf8DoT1QejqUnQW9v0k4EoLa/4WDb0PeRBh9CXiy49s2vgh1q8AbNG3JrorHWrfB9t9CuA0qPw9FcxPa0mpirVugYAZUfxFsb7wtu1eZD1agDMZcAf6R8W0Pvge1j5r/r/4SjJgSj4X2wbYHzAeyeAFUnA1Wz5PLaDfUPg4H3oDccTD6UvDmxrfduwF2/QE8OSaWWxOPte805XY3Q/nZULIgHgu3w/aHoeWvMGIqVF8Ijr+nLTGofw4a1oC/2LQlUBLftvmvZttYBKovgIJT4rGuA7D1AejYCUWfMcewry1h2LUS9r0KOTVQc5k5B732vw61T5h6jL4U8sbFYx11pi2h/VB+ljnnvSKdx67vrur/l1i9cFkXcvyIdO4j0r4Hy/bg5FZie7L6YtHudiJtu4lFwzjZpTiB+PUmFg0Tad1FNNyO7cvHySnD6um7sViMaEcjkc79WI4fT24VluOLl9vVQqStDgAnpxzblxcvN9JFuHUXsUgnTqAQO6uk77eex2JRIm31RLuasD3ZOLmVWHZ86Ip0HiDS3mDaklOB7Y1fx6LhDiKtu3raUowTiF9vYtEIkbbdRLtbsX3BnrY48bZ07iXSsbenLZVYvZ/9TFH7GLz+bXMN65VdBTN/ZK45Q+Thhx/m+uuv52c/+xlz5szhrrvuYsmSJfz1r3+lpKTk0AUcgSP+o4RdXV1s3bqVcePG4fEc2R9h/v3vf4/jOEyYMIFYLMavfvUrli9fzptvvsmUKVMOuf2Q/lHC/klKKnkT4Mx1kFUGf7rCDNC9nCxY8JgZULfcB69+3QxavSb/E0y/wwzOa86EzoZ4bORcOOOPYHlg3d9A47p4zD8STv8jFM6Ad26Fd25OqJAFp/4EJl4HDevg+XMh3BoPV50P8x+FroOwepEZtHrl1MDidZA9Cl65Bj7673jM9sFpD5tBattDsP5vIRaOxydcB7PuhpbN8Nwi6NgVjxVMhzNXg5MDL5xvkp9e3nxY9DQUz4NNd8KbN7iP77T/hBNvMInG2rOhuykeK18Cn10JkXZYfaZJUnplVcKZayE4AV5bBh/cnXCIPDDv11BzKex8El66CKIJg+zYq2HOvdC+w7SlbVs8lj/FlOsrgJe+DDufiMc8ObDwD1C6CD74Kbz2TSDho3XyLXDyzbD/TVh7lkm8epUsNMchFoE1Z8G+DfFYoATOWGOStrduhPfvSGiLDbN/CeO+CrufgRe/CJGOeHz0JfCZB0zfem4htHwYjx1N303nsiO6lMjHKBaL0bX3bSKttQmv2vhKZuDJKSPcuouuPW+R2Hc9eaPxFZ1MtLuNUN16YpHOvpjlCxIomwu2h1DDRqIdexKK9eAvnYMTKKC7aQvd+ze56uItmIx3xDginQcINbxikvTeTbOK8ZfOgmiEzvoNxLrin33LCeAvn4vtzaVr37uEm7cllGrhK56GJ7eScFs9XY1vAPE/nOvkVuMrmkos3EGofj2xcPzzYnnzCJTPBdtLV+PrRNoTrsmWg790Fk5W0WEe6fSOyR8lrH0MXvwSrmsMAD3j1oJHhyxZmTNnDrNmzeLuu811NRqNUl1dzbJly7jxxhtd7z1Wf5Rw0IlKe3s7y5Yt41e/+hUAH3zwAWPHjmXZsmVUVlYmVXSwCgsLWb58OV/72tcO+d4hS1QOJ0npNfYqqFhqBq7+sirg7Ddh5WjzbbS/JRvN4JyYiPQ6+RYz+PUfvAEKZ8G8++GpFMmc7YXztsJzn4XWj5Ljc++HfRvhwxXJsVFfhjFXwfNLk2P+kbB0E6wcB+GW5PiZ62DTctj9VHJs8g0mEXrtuuRY/hRY+Hv4/XhzxyWRZcO5m03ClZhU9Tp1hUkkNi1PjlUsNftdvSg55smD87bAU5PdCUOvhU/B1vthx++SYxOug5GzYMNVybHcsbD4BVg5xtzl6W/pe7D+Kti/MTk2fbm5Q/XOLcmxkkUm/sys5JgTgPO2w6rp0LE7OT7/d+acfHR/cuxo+m4qSlQyXqS9gVBDiv5newlULaKzdq37S0gPf9k8upu2EO1oTIp58sdiebLp3vduUszy5uEvnUXnzjUp6xOoOoNQw0Zi3cnXFO/Ik4iF2wk3JV/H7KwSvPnjCNWvTy7U8hCoOp3OXetSfg79pbMIt+7su7vjakveaGz/CLr2Jv/2dcuTTaDq9KP++3ZHnahEI7Cyxn0nxcUyd1bO23rMHwN1dXWRnZ3No48+yhe+8IW+16+88koOHjzIk08+6Xr/sP315Jtuuok///nPrFu3jrPPPrvv9cWLF3PLLbcccaISiUT43e9+R1tbG/PmzUv5nlAoRCgU6vt3c3PzEe3rmKp9IvWgBGbg+PCe9Bf67Q+lTlLAfFv35KSO7d8IW3+TOhbths2/SJ2k9Ja7L8WFCswdhsTHSolC+0xbUiUpYB4j1SX/EsC+feaMSR1reg+23JucpIB5bfO9qZOU3nLbtqeO1T1tHgOlEm4xbUmVpPSWu3NlmtjjqRMCMMd88y/S94etv06dpIB5dJV4NyRR4zrTV1KJdJq2pKtT7ePpz8vR9F05LrnuEiSKdps7EymSFIBwe13KJAUg0taAlfC4JVGsu4Vwy4609Qm37EiZpJhy64ml+UxEOxoJe1Lvk1iYcMu2tH073N6Q9jhE2uuJRUIpY7FwO7GuFiz/Mb57P1h7XhwgSQGIQXuteV/pomO667179xKJRJJ+PUlpaSl/+ctfjum+Eg06UXniiSd4+OGHmTt3riuznDJlClu2bBl0Bd555x3mzZtHZ2cnubm5PP7445x44okp33vbbbfxve99b9D7GFKOH+wBnl160yQbYG6xW07q2+r2QOVa4KT5kMLAMdsfn2cxqH0eolwnAJYXYik+5E4g/T4PVW66i9GhyrW8R75PJ2Aed0XTtMX2Jb/ea8D65mBuzaa48+AE0j9esRzTV9Luc6A+NkB9D9V3BypXjk9W+t9IYVnphwML22yb6guFZffNU0m98QDf6geIWbZDLJKmXMs+RFsGKNeyMb+ZI1VbnAHLHTD2celIvhN0VO87Dgz6qO/ZsyflhJm2trYjuiV2wgkn8NZbb/HKK6/wjW98gyuvvJL3338/5Xtvuukmmpqa+n5qa2tTvu9jVXO5+UklOMk8KvAVJscsG8Z8xcwbGWy55Z+DcVeb+Rb9eXJhwt+ZiayDLbfmMvOTSk4NTPymmQSbxDJljroo9bajL0u/z+IFMP7r7omdvWy/iRUvSI4dqtxRF0HNFfQ9s00UKDNtyalJvW3NAOUOdPwKZsD4vzPnoD/LY85Z+ZLBl1t1Poy9MvVF0lcAE6+F4OTBl3uovjsxTd+V45aTU5nydcuThROsSZvce3KrcHLK08Qq05Zr+wvxBkel7ruWjTc4Ctufuo85ORV4clOX6+SU482rShnD8eMEx2B5Uif3Tk5l+nJzK3HSxCxfPrYvxWf745aV+jwc8fsGoaioCMdxaGhw35FqaGigrCzV2HBsDDpROfXUU3nqqfg8hN7k5L/+67/SPrIZiM/nY/z48cycOZPbbruNU045hR/96Ecp3+v3+wkGg66fIXG4z9rLFsPUW6HsDDOnJDGLz66C0x4CTxbMf8T9SMX2w6yfm8mep64wE04T1VwOE641EzvHXYNrsM2fYiZQZleZ+SaJ37S9QbNPX76ZRJn4uMWyzZyNqnNhyj9Dxefd+yxeANPuMCt4pt0RX6kDZmCf/wh4AmaSlj9hQpntg5l3mVUtM38II+e4y62+ECZdb1YkTVzmbkveBDPXJlBs6pv4Dd6TY14LFJv35E1MKNQyiUbNJabs6i+59zlyjqlLwVQzAz7xjoK/yMzb8ATMfxMTL8sD027vOQa3JydIFUvNsas610yGTrz45tSY+vryzcTjxJU6ThbMvc+cs9m/MOcwsS3jrjHnesK1PclVgoJppo/kjTd9JvEOiK+gpy3Z5rwnrsyyHDjpZtM3p95q+mqiI+27clxzAgV4Cybh+hw6fnwlM7FtB3/JzH534Gy8hVOw/UF8hVOw/SPc5WWX4ckfiye3Ak+wxhWzPDn4ik/Bcvz4iqe7+5jl4Cue3hM7BavfnWdPsAZPbiWe/LE42e4B1/aPMHXxBfEWTsE1jNk+/D1t8ZXM7Jd4WXgLJpljUDgpKUEy817G48kuxZPvfmxsebLwF/e7Tg+X4gU9n/V0NwYsyK5O/wXvKPh8PmbOnMnq1av7XotGo6xevfqIxv/DNejJtC+99BLnnHMOV1xxBffffz//9//+X95//33+9Kc/8fzzzzNz5sxDFzKAM844g1GjRnH//fcf8r1DuuoHkifVXhaDva9C8/sQPBGK+q0bb98J9WvMEs/yJe7BPtwOu582z/wrznYvy43FoPF5MzG0cJZ7WS6Ypa57N5jOWXpGfIkxmKWuu1eZ5czl57iX5UbDUP+sWaZcstC9LBdg/xs9y5NPMCtvEnXUmeW33qApN2GZIZFO05Zwm7m7E+h3h63xJWjdbO4wFEx1x1q2wJ6XTLZfttg92Hc3m3IBKs5xD/axqKlPRx0Uz3cvywU48HZ8eXJJvw9oZyPU/dEkPxXnuO/eRLrMSqTuJlOf/t9C9qyPL08u7HeXqnWbOW+BErP0O2HJJN2tZm5INGzOd+JgH4uZZc3ttVA0z72kHKDp/fjy5JKF7vMd2mfOtxMwbUl81BTthrpnzPLksjPciQsc276b+NnQJNrjTizcSaRjL9genOwS16ObWDRCpKMRYhGcrOKkZbmRzv3Eutuw/fnYPvd1N9rdRrRzP5YTwM4qct1lj0W7ibSbVUFOdjFWQh8zS5v3Eot0YgcKsfslLtGuZqKhJixvtmuJMUAsEiLSsQcsByerBCthAmksFiXS3gjRME5WEZbHfec20nmAWM/yZNuf368t7UQ792E5/p62HJvHPsd21Q+4HyUP/aqfhx9+mCuvvJKf//znzJ49m7vuuotHHnmEv/zlL0lzV4Zt1Q/Ali1buP322/nzn/9Ma2srM2bM4Lvf/S4nn3zyoMq56aabOOeccxg1ahQtLS08+OCD3HHHHTzzzDOcddZZh9x+yBMVERGRY+iYJCqQ5veoVJs73EP4e1QA7r777r5f+DZt2jR+/OMfM2fOnKT3DWuicqx87WtfY/Xq1dTV1ZGfn8/UqVP57ne/e1hJCihRERGR48sxS1Rg2H4z7eEatuXJjuNQV1eXNKF23759lJSUEIkcxi+G6nHvvfcOdvciIiICJik5xkuQM9GgH7qluwETCoXw+QZYtikiIiIySId9R+XHP/4xYFb59P5hwl6RSIQXXniBSZMmHfsaioiIyKfWYScqP/zhDwFzR+VnP/sZjhN/Dubz+aipqeFnP/vZsa+hiIiIfGoddqLS+1eTTz/9dB577DEKCvS7FURERGRoDXoy7dq1a4eiHiIiIiJJDjtRuf766w/rfT/4wQ+OuDIiIiIiiQ47UXnzzTcP+Z6j/fPXIiIiIokOO1HRIx8RERH5uA3Z36wOBoN89NFHQ1W8iIiIfAoMWaIyjL+ZX0RE5BMvFosR6dhLuHUXkY69Qz7uvvDCC5x77rlUVFRgWRZPPPHEkO6v16BX/YiIiMjwCrfV0b3vPWKRzr7XLCeAd+QUPDnlA2x55Nra2jjllFP46le/ygUXDO0fPkykREVEROQ4Em6ro6vx9aTXY5FO83rJzCFJVs455xzOOeecY17uoQzZox8RERE5tmKxGN373hvwPd373vtETb9QoiIiInKciHbucz3uSSUW6STaue9jqtHQU6IiIiJynIhFQsf0fceDIUtUOjo66OjoGKriRUREPnUsx39M33c8GLJEJSsri6ysrKEqXkRE5FPHDozEcgIDvsdyAtiBkR9TjYaeVv2IiIgcJyzLwjtySspVP728I6cMyZ+0aW1tZfPmzX3/3rp1K2+99RaFhYWMGjXqmO+vlxIVERGR44gnpxxKZn7sv0fltdde4/TTT+/7d+8fK77yyiu5//77h2SfoERFRETkuOPJKcfJLutZBRTCcvzmsdAQ/nHgRYsWDcuy5yFLVPSXlEVERIaOZVk4WUXDXY0hp7/1IyIiIhlryBKVp59+msrKyqEqXkRERD4FDuvRT++EmcPxgx/8AID58+cfWY1EREREehxWovLmm2+6/v3GG28QDoc54YQTAPjggw9wHIeZM2ce+xqKiIh8wkSj0eGuwpA7VlNADitRWbt2bd///+AHPyAvL49f/epXFBQUAHDgwAGuvvpqFixYcEwqJSIi8knk8/mwbZvdu3dTXFyMz+f7RC4+icVi7Nmzx/zeF6/3qMqyYoNMeSorK/njH//IlClTXK+/++67fO5zn2P37t1HVaHBaG5uJj8/n6amJoLB4Me2XxERkSPV1dVFXV0d7e3tw12VIWVZFlVVVeTm5ibFBjN+D3p5cnNzM3v27El6fc+ePbS0tAy2OBERkU8Vn8/HqFGjCIfDRCKR4a7OkPF6vTiOc9TlDDpR+eIXv8jVV1/N97//fWbPng3AK6+8wg033MAFF1xw1BUSERH5pOt9JHK0j0U+DQadqPzsZz/jH//xH7nsssvo7u42hXg8fO1rX2P58uXHvIIiIiLy6TWoOSqRSISXX36Zk08+GZ/Px5YtWwAYN24cOTk5Q1bJdDRHRURE5PgzZHNUHMfhc5/7HJs2bWLMmDFMnTr1qCoqIiIiMpBB/2bak046iY8++mgo6iIiIiLiMuhE5d/+7d/4x3/8R/7whz9QV1dHc3Oz60dERETkWBn071Gx7Xhuk/hLamKxGJZlfaxLrTRHRURE5PgzpL9HJfG31IqIiIgMpUEnKgsXLhyKeoiIiIgkGXSiAnDw4EHuvfdeNm3aBMCUKVP46le/Sn5+/jGtnIiIiHy6DXoy7Wuvvca4ceP44Q9/yP79+9m/fz8/+MEPGDduHG+88cZQ1FFEREQ+pQY9mXbBggWMHz+eX/7yl3g85oZMOBzmmmuu4aOPPuKFF14Ykoqmosm0IiIix5/BjN+DTlSysrJ48803mTRpkuv1999/n1NPPfVj/WuQSlRERESOP4MZvwf96CcYDLJjx46k12tra8nLyxtscSIiIiJpDTpRufjii/na177Gww8/TG1tLbW1tTz00ENcc801XHrppUNRRxEREfmUGvSqnzvvvBPLsvjKV75COBwGwOv18o1vfIPbb7/9mFdQREREPr0GPUelV3t7u+uvJ2dnZx/Tih0OzVERERE5/gzpb6btlZ2dzcknn3ykmwNw22238dhjj/GXv/yFrKwsPvOZz3DHHXdwwgknHFW5x8yDlvvfF3fA9keg6T3InwKjLwInEI83rIW6Z8FfCDWXQ1Z5PNayBbY/BJFOqP4CFM6Mx7qbYduD0LYNRs6GyvPA7jk1sSjsegr2vgxZVTDmcvAVxLc98GeofQwsB0ZfDMGEY9fZCFv/B0J7oPR0KDsLev/sQSQEtf8LB9+GvIkw+hLwJCSbjS9C3SrwBk1bsqvisdZtsP23EG6Dys9D0dyEtrSaWOsWKJgB1V8E2xtvy+5VsOdFCJTBmCvAPzK+7cH3oPZR8//VX4IRU+Kx0D7Y9gB01EHxAqg4G6yeJ5fRbqh9HA68AbnjYPSl4M2Nb7t3A+z6A3hyTCy3Jh5r32nK7W6G8rOhZEE8Fm6H7Q9Dy19hxFSovhAcf09bYlD/HDSsAX+xaUugJL5t81/NtrEIVF8ABafEY10HYOsD0LETij5jjmFfW8KwayXsexVyaqDmMnMOeu1/HWqfMPUYfSnkjYvHOupMW0L7ofwsc857RTqPXd9941ZoXBmPV1wKix5EMkcsFiHSVk+0qxnbm4OTU4llO33xSOc+Iu17sGwPTm4ltierLxbtbifStptYNIyTXYoTiF9vYtEwkdZdRMPt2L58nJwyrJ6+G4vFiHY0Euncj+X48eRWYTm+eLldLUTa6gBwcsqxffE5jbFIF+HWXcQinTiBQuyskr4/0RKLRXva0oTtycbJrcSy40NXpPMAkfYG05acCmxv/DoWDXcQad3V05ZinED8ehOLRoi07Sba3YrtC/a0xYm3pXMvkY69PW2pxOr97MvH7ojvqBwLZ599NpdccgmzZs0iHA7zz//8z7z77ru8//775OTkHHL7Ib2j0j9JSSVvApy5DrLK4E9XmAG6l5MFCx4zA+qW++DVr5tBq9fkf4Lpd5jBec2Z0NkQj42cC2f8ESwPrPsbaFwXj/lHwul/hMIZ8M6t8M7NCRWy4NSfwMTroGEdPH8uhFvj4arzYf6j0HUQVi8yg1avnBpYvA6yR8Er18BH/x2P2T447WEzSG17CNb/LcTC8fiE62DW3dCyGZ5bBB274rGC6XDmanBy4IXzTfLTy5sPi56G4nmw6U548wb38Z32n3DiDSbRWHs2dDfFY+VL4LMrIdIOq880SUqvrEo4cy0EJ8Bry+CDuxMOkQfm/RpqLoWdT8JLF0G0Kx4fezXMuRfad5i2tG2Lx/KnmHJ9BfDSl2HnE/GYJwcW/gFKF8EHP4XXvgkkfLROvgVOvhn2vwlrzzKJV6+SheY4xCKw5izYtyEeC5TAGWtM0vbWjfD+HQltsWH2L2HcV2H3M/DiFyHSEY+PvgQ+84DpW88thJYP47Gj6bsp+eGyzkO8Rz4OsUgXnXXriXW39L1mebLwl83D8mTRtfdtIq21CVvY+Epm4MkpI9y6i649b5HYdz15o/EVnUy0u41Q3Xpikfh5tnxBAmVzwfYQathItGNPQrEe/KVzcAIFdDdtoXv/Jlc9vQWT8Y4YR6TzAKGGV0yS3rtpVjH+0lkQjdBZv4FYV/yzbzkB/OVzsb25dO17l3DztoRSLXzF0/DkVhJuq6er8Q0g2hd1cqvxFU0lFu4gVL+eWDj+ebG8eQTK54LtpavxdSLtCddky8FfOgsnq+hQh18O05AuTx5Ke/bsoaSkhOeff57Pfvazh3z/kCUqv6uA7rrDe+/Yq6BiqRm4+suqgLPfhJWjzbfR/pZsNINzYiLS6+RbzODXf/AGKJwF8+6Hp6Ykx2wvnLcVnvsstH6UHJ97P+zbCB+uSI6N+jKMuQqeX5oc84+EpZtg5TgItyTHz1wHm5bD7qeSY5NvMInQa9clx/KnwMLfw+/HmzsuiSwbzt1sEq7EpKrXqStMIrFpeXKsYqnZ7+pFyTFPHpy3BZ6a7E4Yei18CrbeDzt+lxybcB2MnAUbrkqO5Y6FxS/AyjHmLk9/S9+D9VfB/o3JsenLzR2qd25JjpUsMvFnZiXHnACctx1WTYeO3cnx+b8z5+Sj+5NjR9N3U7ksYy4ln2pde98h3LI96XUnpxxPbhWhhhT9z/YSqFxE58617i8hPfxl8+hu2kK0ozEp5skfi+XJpnvfu0kxy5uHv3QWnTvXpKxroOoMQg0bXUlVL+/Ik4iF2wk3JV/H7KwSvPnjCNWvTy7U8hCoPp3OnetSfg79pbMIt+7su7vjakveaGz/CLr2/jlFsdkEqk53/TFeOXIfy6OfodDUZLLmwsLClPFQKEQoFOr7d3Nz89BU5HCTFDC34VMNSmAGjg/vSX+h3/5Q6iQFzLd1T5q7Svs3wtbfpI5Fu2HzL1InKb3l7ktxoQJzhyHxsVKi0D7TllRJCpjHSHVPp99nzpjUsab3YMt/JycpYF7bcm/qJKW33LbkCzJg6pIzNnUs3GLakipJ6S1358o0scdTJwRgjvnmX6TvD1t/kzpJAfPoKvFuSKLGdaavpBLpNG1JV6fax9Ofl6Ppu5KxXHcCEl9va8DqfQzbX7TbJDcpkhSAcHtdyiSlr1xv6jmKse4Wwi3Jv86ir9yWHSmTFFNuPbE0n4loRyPhNPskFibcvD1t3w63N6Q/Ru31xCKhlLFYuJ1YVwuWX/MhP26DXp48VKLRKH//93/PaaedxkknnZTyPbfddhv5+fl9P9XV1R9zLVNw/GAP8OwyXbIB5ha75aSO2QOVa4EzwORlzwAx2x+fZzGofTLwPp0AWGkugk4g/T7BHIcj3We6ci0veAKpY4dTru0bfOyQ5WYDab6NDVSu5YA9QFsG7GMDteUo+q5kLivNZd2y08egb65JyhgDbGvZA26b9hp3iJiZUzPAPgcYvqyByrXsAcp1BjxGA8ZkyGTMUb/uuut49913eeihNN8cgZtuuommpqa+n9ra2rTvPSrFKR59pFNzuflJJTjJzBfxpbhDZNkw5itm3shgyy3/HIy72sy36M+TC+P/zkxkHWy5NZeZn1RyamDiN80k2CSWKXPURam3HX1Z+n0WL4DxX3dP7Oxl+02seEFy7FDljroIaq4gZWIQKDNtyalJvW3NAOUOdPwKZsCEvzPnoD/LY85Z+ZLBl1t1Poy7KvVF0lcAE6+F4OTBl3ukfVcympNbmfJ1T24FTk7qmOXJwgmOSZv4e3KrcHLK08Qq05Zr+wvxBkel7ruWjTc4Ctufuo85ORV40rTFySnHk1eVMobjxwnWYHlSfwFycirTl5tbmfb4Wb58bF+Kz7YMuYxIVL75zW/yhz/8gbVr11JVlabzAX6/n2Aw6PoZEmf94fDeV7YYpt4KZWeYOSWJWXx2FZz2EHiyYP4j7kcqth9m/dxM9jx1hZlwmqjmcphwrZnYOe4aXINt/hQzgTK7ysw3Sbwb4Q2affryzSTKxMctlm3mbFSdC1P+GSo+795n8QKYdodZwTPtjvhKHTAD+/xHzB2KBY+CP2FCme2DmXeZVS0zfwgj57jLrb4QJl1vViRNXOZuS94EM9cmUGzqm/gN3pNjXgsUm/fkTUwo1DKJRs0lpuzqL7n3OXKOqUvBVJj5I/cdBX+RmbfhCZj/JiZelgem3d5zDG5PTpAqlppjV3WumQydePHNqTH19eWbiceJK3WcLJh7nzlns39hzmFiW8ZdY871hGt7kqsEBdNMH8kbb/pM4h0QX0FPW7LNeU9cmWU5cNLNpm9OvdX01URH2nfTKZh/6PfIx8KbPx47q8T1mu0vxFs4GSdQgLdgEq7PoePHVzIT23bwl8zsdwfOxls4BdsfxFc4Bds/wlWuk12GJ38sntwKPMEaV8zy5OArPgXL8eMrnu7uY5aDr3h6T+wULK/77p0nWIMntxJP/licbHeCZPtHmLr4gngLp+Aaxmwf/p62+Epm9ku8LLwFk8wxKJyUlCCZeS/j8WSX4skf54pZniz8xf2u0/KxGdbJtLFYjGXLlvH444+zbt06JkyYMKjth/z3qKw6A/avNf9vBeHSJtj7KjS/D8EToWi2+/3tO6F+jVniWb7EPdiH22H30+aZf8XZ7mW5sRg0Pm8mhhbOci/LBbPUde8GM4CUnhFfYgxmqevuVWY5c/k57mW50TDUP2uWKZcsdC/LBdj/Rs/y5BPMyptEHXVm+a03aMpNWGZIpNO0Jdxm7u4E3BdFGl+C1s3mDkPBVHesZQvsecksfy1b7B7su5tNuQAV57gH+1jU1KejDornu5flAhx4O748uaRfgtHZCHV/NMlPxTnuuzeRLrMSqbvJ1Cer37fGPevjy5ML+92lat1mzlugxCz9TlgySXermRsSDZvznTjYx2JmWXN7LRTNcy8pB2h6P748uWSh+3yH9pnz7QRMWxIf80W7oe4Zszy57Ax34gLHtu8mrorTJNqMFA01Ee1qxvLmupYYA8TCnUQ69oLtwckucT26iUUjRDoaIRbBySpOWpYb6dxPrLsN25+P7XNfd6PdbUQ792M5AeysItfE01i0m0i7WRXkZBe75suYpc17iUU6sQOF2P0Sl2hXM9FQE5Y327XEGCAWCRHp2AOWg5NV4lqGHYtFibQ3QjSMk1WE1e9xcKTzALGe5cm2P79fW9qJdu7Dcvw9bcmI7/WfGMfNqp9rr72WBx98kCeffNL1u1Py8/PJyhpg3kIP/cI3ERGR489xk6ikW+Z13333cdVVVx1yeyUqIiIix5/jZnlyBv0KFxEREclAeugmIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMZSoiIiIiIZS4mKiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhnLM5w7f+GFF1i+fDmvv/46dXV1PP7443zhC18Yziq5PWi5/31xB2x/BJreg/wpMPoicALxeMNaqHsW/IVQczlklcdjLVtg+0MQ6YTqL0DhzHisuxm2PQht22DkbKg8D+yeUxOLwq6nYO/LkFUFYy4HX0F82wN/htrHwHJg9MUQPCEe62yErf8DoT1QejqUnQVWT5siIaj9Xzj4NuRNhNGXgCc7vm3ji1C3CrxB05bsqnisdRts/y2E26Dy81A0N6EtrSbWugUKZkD1F8H2xtuyexXseRECZTDmCvCPjG978D2ofdT8f/WXYMSUeCy0D7Y9AB11ULwAKs4GqyfPjnZD7eNw4A3IHQejLwVvbnzbvRtg1x/Ak2NiuTXxWPtOU253M5SfDSUL4rFwO2x/GFr+CiOmQvWF4Ph72hKD+uegYQ34i01bAiXxbZv/araNRaD6Aig4JR7rOgBbH4COnVD0GXMM+9oShl0rYd+rkFMDNZeZc9Br/+tQ+4Spx+hLIW9cPNZRZ9oS2g/lZ5lz3ivSeez67qqlQEM8TjVctgP55ItFw0RadxENt2P78nFyyrB6+m4sFiPa0Uikcz+W48eTW4Xl+Pq2jXa1EGmrA8DJKcf25cXLjXQRbt1FLNKJEyjEzirB6rlWxWJRIm31RLuasD3ZOLmVWHZ86Ip0HiDS3oBle3ByKrC98etYNNxBpHUXsWgYJ7sYJ5BwvZHjhhWLxWLDtfOnn36al19+mZkzZ3LBBRcMOlFpbm4mPz+fpqYmgsHgoTcYjP5JSip5E+DMdZBVBn+6wgzQvZwsWPCYGVC33Aevft0MWr0m/xNMv8MMzmvOhM6EC//IuXDGH8HywLq/gcZ18Zh/JJz+RyicAe/cCu/cnFAhC079CUy8DhrWwfPnQrg1Hq46H+Y/Cl0HYfUiM2j1yqmBxesgexS8cg189N/xmO2D0x42g9S2h2D930IsHI9PuA5m3Q0tm+G5RdCxKx4rmA5nrgYnB1443yQ/vbz5sOhpKJ4Hm+6EN29wH99p/wkn3mASjbVnQ3dTPFa+BD67EiLtsPpMk6T0yqqEM9dCcAK8tgw+uDvhEHlg3q+h5lLY+SS8dBFEu+LxsVfDnHuhfYdpS9u2eCx/iinXVwAvfRl2PhGPeXJg4R+gdBF88FN47ZtAwkfr5Fvg5Jth/5uw9iyTePUqWWiOQywCa86CfRvisUAJnLHGJG1v3Qjv35HQFhtm/xLGfRV2PwMvfhEiHfH46EvgMw+YvvXcQmj5MB47mr6bzmXDdimRj0G0u41Q3Xpikc6+1yxfkEDZXLA9hBo2Eu3YE9/A9uAvnYMTKKC7aQvd+ze5yvMWTMY7YhyRzgOEGl4xSXrvplnF+EtnQTRCZ/0GYl3xz77lBPCXz8X25tK1713CzdsSSrXwFU/Dk1tJuK2ersY3gGhf1Mmtxlc0tS8JkuEzmPF7WBOVRJZlZU6icjhJSq+xV0HFUjNw9ZdVAWe/CStHm2+j/S3ZaAbnxESk18m3mMGv/+ANUDgL5t0PT01JjtleOG8rPPdZaP0oOT73fti3ET5ckRwb9WUYcxU8vzQ55h8JSzfBynEQbkmOn7kONi2H3U8lxybfYBKh165LjuVPgYW/h9+PN3dcElk2nLvZJFyJSVWvU1eYRGLT8uRYxVKz39WLkmOePDhvCzw12Z0w9Fr4FGy9H3b8Ljk24ToYOQs2XJUcyx0Li1+AlWPMXZ7+lr4H66+C/RuTY9OXmztU79ySHCtZZOLPzEqOOQE4bzusmg4du5Pj839nzslH9yfHjqbvpqJE5ROts/5Voh2NSa978sdiebLp3vduUszy5uEvnUXnzjUpywxUnUGoYSOx7uRrinfkScTC7YSbkq9jdlYJ3vxxhOrXJxdqeQhUnU7nrnUpP4f+0lk42aUp6yMfn8GM38P66GewQqEQoVCo79/Nzc3DWJsetU+kHpTADBwf3pP+Qr/9odRJCphv656c1LH9G2Hrb1LHot2w+Repk5TecvelGCjB3GFIfKyUKLTPtCVVkgLmMVLd0+n3mTMmdazpPdhyb3KSAua1zfemTlJ6y23bnjpW97R5DJRKuMW0JVWS0lvuzpVpYo+nTgjAHPPNv0jfH7b+JnWSAubRVeLdkESN60xfSSXSCZvvSV+n2sfTn5ej6bvyqRKLRVMmKQCRtgashMctru26Wwi3pH8sGG7ZkTJJMeXWE0vzmYh2NBJOs09iYcIt29L27XB7gxKV48xxNZn2tttuIz8/v++nurp6uKtk5grY/vRxb5pkA8wtdstJHbMHKtcCJ82HFAaO2f74PItB7fMQ5ToBsLzpY+n2eahyPYfYZ7pyLe+R79MJmMddg40dstxsIM3duoHKtRywA6ljkD6hPVS5h+q7A5Urnz5WmuHCsvvmqaSOp7nGAdjpY5btkHaIsmysAYYva4B9DlhXyUjH1Rm76aabaGpq6vupra0doj0NItuuudz8pBKcZB4V+AqTY5YNY75i5o0Mttzyz8G4q818i/48uTDh78xE1sGWW3OZ+UklpwYmftNMgk1imTJHXZR629GXpd9n8QIY/3X3xM5ett/Eihckxw5V7qiLoOYKUiYGgTLTlpya1NvWDFDuQMevYIY59p7c5JjlMeesfMngy606H8ZdlXqg8BXAhGshOHnw5R6q705M03flU8eybJyc8pQxT24lTk5lypjtL8QbHJW671o23rxR2P7UfczJqcCTm7pcJ6ccT15VyhiOHyc4BsuTlWbb1GVK5jquEhW/308wGHT9DInL6g/vfWWLYeqtUHaGmVOSmMVnV8FpD4EnC+Y/4n6kYvth1s/NZM9TV5gJp4lqLjeDz9irYdw1uAbb/ClmAmV2lZlv4iR8GL1Bs09fvplEmfi4xbLNnI2qc2HKP0PF5937LF4A0+4wK3im3RFfqQNmYJ//CHgCsOBR8BcltMUHM+8yq1pm/hBGznGXW30hTLrerEiauMzdlrwJZq5NoNjUN/EbvCfHvBYoNu/Jm5hQqGUSjZpLTNnVX3Lvc+QcU5eCqTDzR+47Cv4iM2/DEzD/TUy8LA9Mu73nGNyenCBVLDXHrupcMxk68eKbU2Pq68s3E48TV+o4WTD3PnPOZv/CnMPEtoy7xpzrCdf2JFcJCqaZPpI33vSZxDsgvoKetmSb8564Msty4KSbTd+ceqvpq4mOtO+mlXfot8hxzVc4Bds/wvWak12GJ38sntwKPMEaV8zy5OArPgXL8eMrnu7uY5aDr3h6T+wUrH53nj3BGjy5lXjyx+JkuxMk2z/C1MUXxFs4BdcwZvvwl8zEth18JTP73VW18BZMwgkcTn+WTKLJtAN5sBA4EP/3ZTHY+yo0vw/BE6Fotvv97Tuhfo1Z4lm+xD3Yh9th99PmmX/F2e5lubEYND5vJoYWznIvywWz1HXvBjOAlJ4RX2IMZqnr7lVmOXP5Oe5ludEw1D9rlimXLHQvywXY/0bP8uQTzMqbRB11ZvmtN2jKTVhmSKTTtCXcZu7uJC7LBWh8CVo3mzsMBVPdsZYtsOcls/y1bLF7sO9uNuUCVJzjHuxjUVOfjjoonu9elgtw4O348uSSfglGZyPU/dEkPxXnuO/eRLrMSqTuJlOfrH7fGvesjy9PLux3l6p1mzlvgRKz9DthySTdrWZuSDRsznfiYB+LmWXN7bVQNM+9pByg6f348uSShe7zHdpnzrcTMG1JfDQW7Ya6Z8zy5LIz3IkLHNu+mzjhXJNoP1UinfuJdbdh+/Oxfe7rbrS7jWjnfiwngJ1V5FpdE4t2E2k3q4Kc7GKshD5mljbvJRbpxA4UYvdLXKJdzURDTVje7KQlxrFIiEjHHrAcnKySnkdGveVGibQ3QjSMk1WE5RngEap8rI6bVT+tra1s3rwZgOnTp/ODH/yA008/ncLCQkaNGnXI7Yc8UREREZFj7rhZ9fPaa69x+unxX0p1/fXXA3DllVdy//33D1OtREREJFMMa6KyaNEiMuTJk4iIiGSg42oyrYiIiHy6KFERERGRjKVERURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjKVERURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjKVERURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVE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txPt3Ifl+HvakniMwj3HKNZzjNKd7wLXknLTlpae5cnpzndj2rZEO/YQi3RjZ410LSkHjmnfTVwVd6wn0fY6rlb9PPzww1x55ZX8/Oc/Z/bs2dx111088sgj/OUvf0mau9LfkCcqIiIicswdN6t+AC6++GL27NnDv/zLv1BfX8+0adNYtWrVIZMUERER+eQb9jsqR0N3VERERI4/gxm/j6tVPyIiIvLpokRFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjDXsv0L/aPT+Ut3m5uZhromIiIgcrt5x+3B+Of5xnai0tLQAUF1dfYh3ioiISKZpaWkhPz9/wPcc13/rJxqNsnv3bvLy8lx/Kls+mZqbm6murqa2tlZ/20nkE0af70+XWCxGS0sLFRUV2PbAs1CO6zsqtm1TVVU13NWQj1kwGNSFTOQTSp/vT49D3Unppcm0IiIikrGUqIiIiEjGUqIixw2/38/NN9+M3+8f7qqIyDGmz7ekc1xPphUREZFPNt1RERERkYylREVEREQylhIVERERyVhKVERERCRjKVGR48aKFSuoqakhEAgwZ84cXn311eGukogcpRdeeIFzzz2XiooKLMviiSeeGO4qSYZRoiLHhYcffpjrr7+em2++mTfeeINTTjmFJUuW0NjYONxVE5Gj0NbWximnnMKKFSuGuyqSobQ8WY4Lc+bMYdasWdx9992A+TtP1dXVLFu2jBtvvHGYaycix4JlWTz++ON84QtfGO6qSAbRHRXJeF1dXbz++ussXry47zXbtlm8eDHr168fxpqJiMhQU6IiGW/v3r1EIhFKS0tdr5eWllJfXz9MtRIRkY+DEhURERHJWEpUJOMVFRXhOA4NDQ2u1xsaGigrKxumWomIyMdBiYpkPJ/Px8yZM1m9enXfa9FolNWrVzNv3rxhrJmIiAw1z3BXQORwXH/99Vx55ZWceuqpzJ49m7vuuou2tjauvvrq4a6aiByF1tZWNm/e3PfvrVu38tZbb1FYWMioUaOGsWaSKbQ8WY4bd999N8uXL6e+vp5p06bx4x//mDlz5gx3tUTkKKxbt47TTz896fUrr7yS+++//+OvkGQcJSoiIiKSsTRHRURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEMtott9zCtGnThrsaIjJMlKiIyJCqr69n2bJljB07Fr/fT3V1Neeee67rj0yKiKSjP0ooIkNm27ZtnHbaaYwYMYLly5dz8skn093dzTPPPMN1113HX/7yl4+lHt3d3Xi93o9lXyJybOmOiogMmWuvvRbLsnj11Ve58MILmThxIlOmTOH6669nw4YNAOzYsYPzzz+f3NxcgsEgF110EQ0NDWnLjEaj3HrrrVRVVeH3+5k2bRqrVq3qi2/btg3Lsnj44YdZuHAhgUCABx54YMjbKiJDQ4mKiAyJ/fv3s2rVKq677jpycnKS4iNGjCAajXL++eezf/9+nn/+eZ599lk++ugjLr744rTl/uhHP+L73/8+d955J2+//TZLlizhvPPO48MPP3S978Ybb+Tb3/42mzZtYsmSJce8fSLy8dCjHxEZEps3byYWizFp0qS071m9ejXvvPMOW7dupbq6GoBf//rXTJkyhY0bNzJr1qykbe68806++93vcskllwBwxx13sHbtWu666y5WrFjR976///u/54ILLjjGrRKRj5vuqIjIkIjFYod8z6ZNm6iuru5LUgBOPPFERowYwaZNm5Le39zczO7duznttNNcr5922mlJ7z/11FOPsOYikkmUqIjIkJgwYQKWZX1sE2b7S/W4SUSOP0pURGRIFBYWsmTJElasWEFbW1tS/ODBg0yePJna2lpqa2v7Xn///fc5ePAgJ554YtI2wWCQiooKXn75ZdfrL7/8csr3i8jxT3NURGTIrFixgtNOO43Zs2dz6623MnXqVMLhMM8++yz33HMP77//PieffDKXX345d911F+FwmGuvvZaFCxemfXRzww03cPPNNzNu3DimTZvGfffdx1tvvaWVPSKfUEpURGTIjB07ljfeeIN///d/5zvf+Q51dXUUFxczc+ZM7rnnHizL4sknn2TZsmV89rOfxbZtzj77bH7yk5+kLfNb3/oWTU1NfOc736GxsZETTzyRlStXMmHChI+xZSLycbFihzPjTURERGQYaI6KiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMb6/wHCnL2DXQSZ/gAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Suppressing warning message claiming that a portion of points cannot be placed into the plot due to the high number of data points\n", + "import warnings\n", + "warnings.filterwarnings(action='ignore', category=UserWarning, module='seaborn')\n", + "\n", + "palette = {\n", + " 0: 'orange',\n", + " 1: 'wheat'\n", + "}\n", + "sns.swarmplot(x=\"Color\", y=\"ord__Item Size\", hue=\"Color\", data=encoded_pumpkins, palette=palette)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**జాగ్రత్త**: హెచ్చరికలను నిర్లక్ష్యం చేయడం ఉత్తమ ఆచారం కాదు మరియు సాధ్యమైనప్పుడు దాన్ని నివారించాలి. హెచ్చరికలు తరచుగా మన కోడ్‌ను మెరుగుపరచడానికి మరియు సమస్యను పరిష్కరించడానికి సహాయపడే ఉపయోగకరమైన సందేశాలను కలిగి ఉంటాయి. \n", + "మనం ఈ నిర్దిష్ట హెచ్చరికను నిర్లక్ష్యం చేస్తున్న కారణం ప్లాట్ యొక్క పఠనీయతను హామీ ఇవ్వడమే. ప్యాలెట్ రంగుతో సారూప్యతను ఉంచుతూ, తగ్గించిన మార్కర్ పరిమాణంతో అన్ని డేటా పాయింట్లను ప్లాట్ చేయడం స్పష్టమైన విజువలైజేషన్‌ను సృష్టించదు.\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# మీ మోడల్‌ను నిర్మించండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "# X is the encoded features\n", + "X = encoded_pumpkins[encoded_pumpkins.columns.difference(['Color'])]\n", + "# y is the encoded label\n", + "y = encoded_pumpkins['Color']\n", + "\n", + "# Split the data into training and test sets\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.94 0.98 0.96 166\n", + " 1 0.85 0.67 0.75 33\n", + "\n", + " accuracy 0.92 199\n", + " macro avg 0.89 0.82 0.85 199\n", + "weighted avg 0.92 0.92 0.92 199\n", + "\n", + "Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0\n", + " 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0\n", + " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0\n", + " 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1\n", + " 0 0 0 1 0 0 0 0 0 0 0 0 1 1]\n", + "F1-score: 0.7457627118644068\n" + ] + } + ], + "source": [ + "from sklearn.metrics import f1_score, classification_report \n", + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "# Train a logistic regression model on the pumpkin dataset\n", + "model = LogisticRegression()\n", + "model.fit(X_train, y_train)\n", + "predictions = model.predict(X_test)\n", + "\n", + "# Evaluate the model and print the results\n", + "print(classification_report(y_test, predictions))\n", + "print('Predicted labels: ', predictions)\n", + "print('F1-score: ', f1_score(y_test, predictions))" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[162, 4],\n", + " [ 11, 22]])" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.metrics import confusion_matrix\n", + "confusion_matrix(y_test, predictions)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhgAAAIjCAYAAABBOWJ+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABgUElEQVR4nO3dd1gUV8MF8LOUZelqsItBjTV2jcYKKgoWFDWKJUKIvUc0tqjYoibWxKDGFqwRNGqMjQiC3WhE7CX2BiixgHR27/eHL/tJBGVxl9lyfs/DE3aY2T07ETjcuTMjE0IIEBEREWmRmdQBiIiIyPiwYBAREZHWsWAQERGR1rFgEBERkdaxYBAREZHWsWAQERGR1rFgEBERkdaxYBAREZHWsWAQERGR1rFgEBERkdaxYBCZgODgYMhkMvWHhYUFypYtiy+++AIPHz7MdRshBDZs2ICWLVuiSJEisLGxQa1atTBz5kwkJyfn+Vo7duxA+/bt4eTkBLlcjjJlyqBnz544ePBgvrKmpaVh8eLFaNy4MRwdHaFQKFClShWMGDEC169fL9D7J6LCJ+O9SIiMX3BwMPz9/TFz5kxUqFABaWlpOHnyJIKDg+Hi4oKLFy9CoVCo11cqlejTpw9CQ0PRokULdOvWDTY2Njhy5Ag2b96MGjVqIDw8HCVLllRvI4TAl19+ieDgYNSrVw+fffYZSpUqhdjYWOzYsQNnzpzBsWPH0LRp0zxzJiQkwNPTE2fOnEGnTp3g7u4OOzs7XLt2DVu2bEFcXBwyMjJ0uq+ISEsEERm9X375RQAQp0+fzrF8woQJAoAICQnJsXzOnDkCgBg3btwbz7Vr1y5hZmYmPD09cyyfP3++ACC++uoroVKp3thu/fr14q+//nprzo4dOwozMzOxbdu2N76WlpYmxo4d+9bt8yszM1Okp6dr5bmIKHcsGEQmIK+CsXv3bgFAzJkzR70sJSVFFC1aVFSpUkVkZmbm+nz+/v4CgDhx4oR6m2LFiolq1aqJrKysAmU8efKkACAGDhyYr/VdXV2Fq6vrG8v9/PzEhx9+qH58+/ZtAUDMnz9fLF68WFSsWFGYmZmJkydPCnNzczF9+vQ3nuPq1asCgFi6dKl62bNnz8To0aNFuXLlhFwuF5UqVRLz5s0TSqVS4/dKZAo4B4PIhN25cwcAULRoUfWyo0eP4tmzZ+jTpw8sLCxy3c7X1xcAsHv3bvU2T58+RZ8+fWBubl6gLLt27QIA9OvXr0Dbv8svv/yCpUuXYtCgQVi4cCFKly4NV1dXhIaGvrFuSEgIzM3N0aNHDwBASkoKXF1dsXHjRvj6+uLHH39Es2bNMGnSJAQEBOgkL5Ghy/2nBxEZpRcvXiAhIQFpaWn466+/MGPGDFhZWaFTp07qdS5fvgwAqFOnTp7Pk/21K1eu5PhvrVq1CpxNG8/xNg8ePMCNGzdQvHhx9TIfHx8MHjwYFy9eRM2aNdXLQ0JC4Orqqp5jsmjRIty8eRNnz55F5cqVAQCDBw9GmTJlMH/+fIwdOxbOzs46yU1kqDiCQWRC3N3dUbx4cTg7O+Ozzz6Dra0tdu3ahXLlyqnXSUpKAgDY29vn+TzZX0tMTMzx37dt8y7aeI636d69e45yAQDdunWDhYUFQkJC1MsuXryIy5cvw8fHR71s69ataNGiBYoWLYqEhAT1h7u7O5RKJQ4fPqyTzESGjCMYRCYkKCgIVapUwYsXL7B27VocPnwYVlZWOdbJ/gWfXTRy898S4uDg8M5t3uX15yhSpEiBnycvFSpUeGOZk5MT2rRpg9DQUMyaNQvAq9ELCwsLdOvWTb3eP//8g/Pnz79RULI9fvxY63mJDB0LBpEJadSoERo2bAgA8Pb2RvPmzdGnTx9cu3YNdnZ2AIDq1asDAM6fPw9vb+9cn+f8+fMAgBo1agAAqlWrBgC4cOFCntu8y+vP0aJFi3euL5PJIHI5y16pVOa6vrW1da7Le/XqBX9/f8TExKBu3boIDQ1FmzZt4OTkpF5HpVKhbdu2GD9+fK7PUaVKlXfmJTI1PERCZKLMzc0xd+5cPHr0CD/99JN6efPmzVGkSBFs3rw5z1/W69evBwD13I3mzZujaNGi+PXXX/Pc5l28vLwAABs3bszX+kWLFsXz58/fWH737l2NXtfb2xtyuRwhISGIiYnB9evX0atXrxzrVKpUCS9fvoS7u3uuH+XLl9foNYlMAQsGkQlzc3NDo0aNsGTJEqSlpQEAbGxsMG7cOFy7dg3ffPPNG9vs2bMHwcHB8PDwwKeffqreZsKECbhy5QomTJiQ68jCxo0bcerUqTyzNGnSBJ6enli9ejV27tz5xtczMjIwbtw49eNKlSrh6tWrePLkiXrZuXPncOzYsXy/fwAoUqQIPDw8EBoaii1btkAul78xCtOzZ0+cOHECYWFhb2z//PlzZGVlafSaRKaAV/IkMgHZV/I8ffq0+hBJtm3btqFHjx5Yvnw5hgwZAuDVYQYfHx/89ttvaNmyJbp37w5ra2scPXoUGzduRPXq1REREZHjSp4qlQpffPEFNmzYgPr166uv5BkXF4edO3fi1KlTOH78OJo0aZJnzidPnqBdu3Y4d+4cvLy80KZNG9ja2uKff/7Bli1bEBsbi/T0dACvzjqpWbMm6tSpg/79++Px48dYsWIFSpYsicTERPUpuHfu3EGFChUwf/78HAXldZs2bcLnn38Oe3t7uLm5qU+ZzZaSkoIWLVrg/Pnz+OKLL9CgQQMkJyfjwoUL2LZtG+7cuZPjkAoRgVfyJDIFeV1oSwghlEqlqFSpkqhUqVKOi2QplUrxyy+/iGbNmgkHBwehUCjExx9/LGbMmCFevnyZ52tt27ZNtGvXThQrVkxYWFiI0qVLCx8fHxEVFZWvrCkpKWLBggXik08+EXZ2dkIul4vKlSuLkSNHihs3buRYd+PGjaJixYpCLpeLunXrirCwsLdeaCsviYmJwtraWgAQGzduzHWdpKQkMWnSJPHRRx8JuVwunJycRNOmTcWCBQtERkZGvt4bkSnhCAYRERFpHedgEBERkdaxYBAREZHWsWAQERGR1rFgEBERkdaxYBAREZHWsWAQERGR1pncvUhUKhUePXoEe3t7yGQyqeMQEREZDCEEkpKSUKZMGZiZvX2MwuQKxqNHj+Ds7Cx1DCIiIoN1//59lCtX7q3rmFzByL699P3799W3hyYiIqJ3S0xMhLOzs/p36duYXMHIPizi4ODAgkFERFQA+ZliwEmeREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1khaMw4cPw8vLC2XKlIFMJsPOnTvfuU1UVBTq168PKysrfPTRRwgODtZ5TiIiItKMpAUjOTkZderUQVBQUL7Wv337Njp27IhWrVohJiYGX331FQYMGICwsDAdJyUiIiJNWEj54u3bt0f79u3zvf6KFStQoUIFLFy4EABQvXp1HD16FIsXL4aHh4euYhoVIQSi7z3Dk6R0qaMQEVEh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isTERGRlZSEtLQ0pKSmwsbF543kCAgIwYMAAbNiwQT3MX6lSJQCvDp+cP38emzZtUq8vhIBKpcLt27dRvXr1XLO9ePECdnZ2UKlUSEtLQ/PmzbF69WokJibi0aNHaNasWY71mzVrhnPnzgF4dXijbdu2qFq1Kjw9PdGpUye0a9fuvfZV3759MXDgQCxbtgxWVlbYtGkTevXqBTMzM/X7PHbsWI4RC6VS+db9BgBVq1bFrl27kJaWho0bNyImJgYjR47MsU5QUBDWrl2Le/fuITU1FRkZGahbt+5b8547dw43btyAvb19juVpaWm4efNmAfYAkf5hwSDSU7a2tvjoo49yLLtz5w46deqEoUOH4ttvv0WxYsVw9OhR9O/fHxkZGbn+opw+fTr69OmDPXv2YN++fQgMDMSWLVvQtWtXvHz5EoMHD8aoUaPe2K58+fJ5ZrO3t0d0dDTMzMxQunRpWFtbAwASExPf+b7q16+P27dvY9++fQgPD0fPnj3h7u6Obdu2vXPbvHh5eUEIgT179uCTTz7BkSNHsHjxYvXXX758iRkzZqBbt25vbKtQKPJ8Xrlcrv5/MG/ePHTs2BEzZszArFmzAABbtmzBuHHjsHDhQjRp0gT29vaYP38+/vrrr7fmffnyJRo0aJCj2GXTl4m8RO+LBYPIgJw5cwYqlQoLFy5U/3Wefbz/bapUqYIqVapgzJgx6N27N3755Rd07doV9evXx+XLl98oMu9iZmaW6zYODg4oU6YMjh07BldXV/XyY8eOoVGjRjnW8/HxgY+PDz777DN4enri6dOnKFasWI7ny57voFQq35pHoVCgW7du2LRpE27cuIGqVauifv366q/Xr18f165d0/h9/teUKVPQunVrDB06VP0+mzZtimHDhqnX+e8IhFwufyN//fr1ERISghIlSsDBweG9MhHpK07yJDIgH330ETIzM7F06VLcunULGzZswIoVK/JcPzU1FSNGjEBUVBTu3r2LY8eO4fTp0+pDHxMmTMDx48cxYsQIxMTE4J9//sHvv/+u8STP13399df47rvvEBISgmvXrmHixImIiYnB6NGjAQCLFi3Cr7/+iqtXr+L69evYunUrSpUqlevFwUqUKAFra2vs378f8fHxePHiRZ6v27dvX+zZswdr165VT+7MNm3aNKxfvx4zZszApUuXcOXKFWzZsgVTpkzR6L01adIEtWvXxpw5cwAAlStXxt9//42wsDBcv34dU6dOxenTp3Ns4+LigvPnz+PatWtISEhAZmYm+vbtCycnJ3Tp0gVHjhzB7du3ERUVhVGjRuHBgwcaZSLSW1JPAiGiN+U2MTDbokWLROnSpYW1tbXw8PAQ69evFwDEs2fPhBA5J2Gmp6eLXr16CWdnZyGXy0WZMmXEiBEjckzgPHXqlGjbtq2ws7MTtra2onbt2m9M0nzdfyd5/pdSqRTTp08XZcuWFZaWlqJOnTpi37596q+vXLlS1K1bV9ja2goHBwfRpk0bER0drf46XpvkKYQQq1atEs7OzsLMzEy4urrmuX+USqUoXbq0ACBu3rz5Rq79+/eLpk2bCmtra+Hg4CAaNWokVq5cmef7CAwMFHXq1Hlj+a+//iqsrKzEvXv3RFpamvjiiy+Eo6OjKFKkiBg6dKiYOHFiju0eP36s3r8ARGRkpBBCiNjYWOHr6yucnJyElZWVqFixohg4cKB48eJFnpmIDIlMCCGkrThERERkbHiIhIiIiLSOBYOIiIi0jgWDiIiItI4Fg4iIiLSOBYOIiIi0jgWDiIiItI4Fg4iIiLSOBYOIiIi0jgWDiIiItI4Fg4iIiLSOBYOIiIi07v8A1k+hWenkwRsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.metrics import roc_curve, roc_auc_score\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "y_scores = model.predict_proba(X_test)\n", + "# calculate ROC curve\n", + "fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1])\n", + "\n", + "# plot ROC curve\n", + "fig = plt.figure(figsize=(6, 6))\n", + "# Plot the diagonal 50% line\n", + "plt.plot([0, 1], [0, 1], 'k--')\n", + "# Plot the FPR and TPR achieved by our model\n", + "plt.plot(fpr, tpr)\n", + "plt.xlabel('False Positive Rate')\n", + "plt.ylabel('True Positive Rate')\n", + "plt.title('ROC Curve')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9749908725812341\n" + ] + } + ], + "source": [ + "# Calculate AUC score\n", + "auc = roc_auc_score(y_test,y_scores[:,1])\n", + "print(auc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.16" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "vscode": { + "interpreter": { + "hash": "949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1" + } + }, + "coopTranslator": { + "original_hash": "ef50cc584e0b79412610cc7da15e1f86", + "translation_date": "2025-12-19T16:36:51+00:00", + "source_file": "2-Regression/4-Logistic/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/te/2-Regression/README.md b/translations/te/2-Regression/README.md new file mode 100644 index 000000000..2eaaf5f44 --- /dev/null +++ b/translations/te/2-Regression/README.md @@ -0,0 +1,56 @@ + +# మెషీన్ లెర్నింగ్ కోసం రిగ్రెషన్ మోడల్స్ +## ప్రాంతీయ విషయం: ఉత్తర అమెరికాలో పంప్కిన్ ధరల కోసం రిగ్రెషన్ మోడల్స్ 🎃 + +ఉత్తర అమెరికాలో, హాలోవీన్ కోసం పంప్కిన్లను తరచుగా భయంకరమైన ముఖాలుగా కోసి తయారు చేస్తారు. ఈ ఆకర్షణీయమైన కూరగాయల గురించి మరింత తెలుసుకుందాం! + +![jack-o-lanterns](../../../translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.te.jpg) +> ఫోటో బెత్ ట్యూట్ష్మాన్ ద్వారా అన్స్ప్లాష్ లో + +## మీరు నేర్చుకునేది + +[![Introduction to Regression](https://img.youtube.com/vi/5QnJtDad4iQ/0.jpg)](https://youtu.be/5QnJtDad4iQ "Regression Introduction video - Click to Watch!") +> 🎥 ఈ పాఠానికి త్వరిత పరిచయ వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి + +ఈ విభాగంలోని పాఠాలు మెషీన్ లెర్నింగ్ సందర్భంలో రిగ్రెషన్ రకాల గురించి కవర్ చేస్తాయి. రిగ్రెషన్ మోడల్స్ వేరియబుల్స్ మధ్య _సంబంధం_ ను నిర్ణయించడంలో సహాయపడతాయి. ఈ రకం మోడల్ పొడవు, ఉష్ణోగ్రత లేదా వయస్సు వంటి విలువలను అంచనా వేయగలదు, కాబట్టి డేటా పాయింట్లను విశ్లేషిస్తూ వేరియబుల్స్ మధ్య సంబంధాలను కనుగొంటుంది. + +ఈ పాఠాల సిరీస్‌లో, మీరు లీనియర్ మరియు లాజిస్టిక్ రిగ్రెషన్ మధ్య తేడాలను తెలుసుకుంటారు, మరియు ఎప్పుడు ఒకదాన్ని మరొకదానిపై ప్రాధాన్యం ఇవ్వాలో తెలుసుకుంటారు. + +[![ML for beginners - Introduction to Regression models for Machine Learning](https://img.youtube.com/vi/XA3OaoW86R8/0.jpg)](https://youtu.be/XA3OaoW86R8 "ML for beginners - Introduction to Regression models for Machine Learning") + +> 🎥 రిగ్రెషన్ మోడల్స్ పరిచయం చేసే చిన్న వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి. + +ఈ పాఠాల సమూహంలో, మీరు మెషీన్ లెర్నింగ్ పనులను ప్రారంభించడానికి సెట్ అవుతారు, ఇందులో డేటా శాస్త్రవేత్తల సాధారణ వాతావరణం అయిన నోట్‌బుక్స్ నిర్వహణ కోసం విజువల్ స్టూడియో కోడ్‌ను కాన్ఫిగర్ చేయడం కూడా ఉంటుంది. మీరు మెషీన్ లెర్నింగ్ కోసం లైబ్రరీ అయిన స్కైకిట్-లెర్న్‌ను తెలుసుకుంటారు, మరియు ఈ అధ్యాయంలో రిగ్రెషన్ మోడల్స్‌పై దృష్టి పెట్టి మీ మొదటి మోడల్స్‌ను నిర్మిస్తారు. + +> రిగ్రెషన్ మోడల్స్‌తో పని చేయడం గురించి నేర్చుకోవడానికి సహాయపడే ఉపయోగకరమైన లో-కోడ్ టూల్స్ ఉన్నాయి. ఈ పనికి [Azure ML ను ప్రయత్నించండి](https://docs.microsoft.com/learn/modules/create-regression-model-azure-machine-learning-designer/?WT.mc_id=academic-77952-leestott) + +### పాఠాలు + +1. [పని సాధనాలు](1-Tools/README.md) +2. [డేటా నిర్వహణ](2-Data/README.md) +3. [లీనియర్ మరియు పాలినోమియల్ రిగ్రెషన్](3-Linear/README.md) +4. [లాజిస్టిక్ రిగ్రెషన్](4-Logistic/README.md) + +--- +### క్రెడిట్స్ + +"ML with regression" ను ♥️ తో [జెన్ లూపర్](https://twitter.com/jenlooper) రాశారు + +♥️ క్విజ్ సహకారులు: [ముహమ్మద్ సకీబ్ ఖాన్ ఇనాన్](https://twitter.com/Sakibinan) మరియు [ఒర్నెల్లా ఆల్టున్యాన్](https://twitter.com/ornelladotcom) + +పంప్కిన్ డేటాసెట్‌ను [కాగుల్‌లో ఈ ప్రాజెక్ట్](https://www.kaggle.com/usda/a-year-of-pumpkin-prices) సూచించింది మరియు దాని డేటా యునైటెడ్ స్టేట్స్ డిపార్ట్‌మెంట్ ఆఫ్ అగ్రికల్చర్ పంపిణీ చేసే [స్పెషాల్టీ క్రాప్స్ టెర్మినల్ మార్కెట్స్ స్టాండర్డ్ రిపోర్ట్స్](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) నుండి తీసుకోబడింది. మేము వేరియటీ ఆధారంగా రంగు చుట్టూ కొన్ని పాయింట్లను జోడించి పంపిణీని సాధారణం చేసాము. ఈ డేటా పబ్లిక్ డొమైన్‌లో ఉంది. + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము. + \ No newline at end of file diff --git a/translations/te/3-Web-App/1-Web-App/README.md b/translations/te/3-Web-App/1-Web-App/README.md new file mode 100644 index 000000000..959c290c2 --- /dev/null +++ b/translations/te/3-Web-App/1-Web-App/README.md @@ -0,0 +1,361 @@ + +# ML మోడల్ ఉపయోగించడానికి వెబ్ యాప్ నిర్మించండి + +ఈ పాఠంలో, మీరు ఒక డేటా సెట్‌పై ML మోడల్‌ను శిక్షణ ఇస్తారు, ఇది ఈ ప్రపంచానికి చెందినది కాదు: _గత శతాబ్దంలో UFO దర్శనాలు_, NUFORC డేటాబేస్ నుండి సేకరించబడింది. + +మీరు నేర్చుకుంటారు: + +- శిక్షణ పొందిన మోడల్‌ను 'పికిల్' చేయడం ఎలా +- ఆ మోడల్‌ను Flask యాప్‌లో ఎలా ఉపయోగించాలి + +మేము డేటాను శుభ్రపరచడానికి మరియు మా మోడల్‌ను శిక్షణ ఇవ్వడానికి నోట్‌బుక్స్‌ను ఉపయోగించడం కొనసాగిస్తాము, కానీ మీరు ఒక అడుగు ముందుకు తీసుకుని, ఒక మోడల్‌ను 'వనంలో' ఉపయోగించడం అన్వేషించవచ్చు: అంటే, వెబ్ యాప్‌లో. + +ఇది చేయడానికి, మీరు Flask ఉపయోగించి ఒక వెబ్ యాప్‌ను నిర్మించాలి. + +## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## యాప్ నిర్మాణం + +మెషీన్ లెర్నింగ్ మోడల్స్‌ను వినియోగించడానికి వెబ్ యాప్స్‌ను నిర్మించడానికి అనేక మార్గాలు ఉన్నాయి. మీ వెబ్ ఆర్కిటెక్చర్ మీ మోడల్ శిక్షణ విధానాన్ని ప్రభావితం చేయవచ్చు. మీరు ఒక వ్యాపారంలో పనిచేస్తున్నారని ఊహించుకోండి, అక్కడ డేటా సైన్స్ గ్రూప్ ఒక మోడల్‌ను శిక్షణ ఇచ్చింది, దాన్ని మీరు యాప్‌లో ఉపయోగించాలని కోరుకుంటున్నారు. + +### పరిగణనలు + +మీరు అడగవలసిన అనేక ప్రశ్నలు ఉన్నాయి: + +- **ఇది వెబ్ యాప్ లేదా మొబైల్ యాప్?** మీరు మొబైల్ యాప్‌ను నిర్మిస్తున్నట్లయితే లేదా IoT సందర్భంలో మోడల్‌ను ఉపయోగించాల్సిన అవసరం ఉంటే, మీరు [TensorFlow Lite](https://www.tensorflow.org/lite/) ఉపయోగించి ఆండ్రాయిడ్ లేదా iOS యాప్‌లో మోడల్‌ను ఉపయోగించవచ్చు. +- **మోడల్ ఎక్కడ ఉంటుంది?** క్లౌడ్‌లోనా లేదా స్థానికంగా? +- **ఆఫ్లైన్ మద్దతు.** యాప్ ఆఫ్లైన్‌లో పనిచేయాలా? +- **మోడల్ శిక్షణకు ఏ సాంకేతికత ఉపయోగించబడింది?** ఎంచుకున్న సాంకేతికత మీరు ఉపయోగించాల్సిన టూలింగ్‌ను ప్రభావితం చేయవచ్చు. + - **TensorFlow ఉపయోగించడం.** ఉదాహరణకు, మీరు TensorFlow ఉపయోగించి మోడల్‌ను శిక్షణ ఇస్తున్నట్లయితే, ఆ ఎకోసిస్టమ్ [TensorFlow.js](https://www.tensorflow.org/js/) ఉపయోగించి వెబ్ యాప్‌లో ఉపయోగించడానికి TensorFlow మోడల్‌ను మార్చే సామర్థ్యాన్ని అందిస్తుంది. + - **PyTorch ఉపయోగించడం.** మీరు [PyTorch](https://pytorch.org/) వంటి లైబ్రరీ ఉపయోగించి మోడల్‌ను నిర్మిస్తుంటే, మీరు దాన్ని [ONNX](https://onnx.ai/) (Open Neural Network Exchange) ఫార్మాట్‌లో ఎగుమతి చేయవచ్చు, ఇది జావాస్క్రిప్ట్ వెబ్ యాప్స్‌లో ఉపయోగించడానికి [Onnx Runtime](https://www.onnxruntime.ai/) ఉపయోగించవచ్చు. ఈ ఎంపికను భవిష్యత్తు పాఠంలో Scikit-learn శిక్షణ పొందిన మోడల్ కోసం అన్వేషిస్తారు. + - **Lobe.ai లేదా Azure Custom Vision ఉపయోగించడం.** మీరు [Lobe.ai](https://lobe.ai/) లేదా [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77952-leestott) వంటి ML SaaS (సాఫ్ట్‌వేర్ ఆజ్ ఎ సర్వీస్) వ్యవస్థను ఉపయోగించి మోడల్‌ను శిక్షణ ఇస్తుంటే, ఈ రకమైన సాఫ్ట్‌వేర్ అనేక ప్లాట్‌ఫారమ్‌లకు మోడల్‌ను ఎగుమతి చేయడానికి మార్గాలను అందిస్తుంది, మీ ఆన్‌లైన్ అప్లికేషన్ ద్వారా క్లౌడ్‌లో ప్రశ్నించదగిన ప్రత్యేక APIని కూడా నిర్మించవచ్చు. + +మీకు ఒక పూర్తి Flask వెబ్ యాప్‌ను కూడా నిర్మించే అవకాశం ఉంది, ఇది వెబ్ బ్రౌజర్‌లోనే మోడల్‌ను శిక్షణ ఇస్తుంది. ఇది JavaScript సందర్భంలో TensorFlow.js ఉపయోగించి కూడా చేయవచ్చు. + +మా ప్రయోజనాల కోసం, Python ఆధారిత నోట్‌బుక్స్‌తో పని చేస్తున్నందున, అలాంటి నోట్‌బుక్ నుండి శిక్షణ పొందిన మోడల్‌ను Python-నిర్మిత వెబ్ యాప్ చదవగల ఫార్మాట్‌కు ఎగుమతి చేయడానికి మీరు తీసుకోవలసిన దశలను అన్వేషిద్దాం. + +## టూల్ + +ఈ పనికి, మీరు రెండు టూల్స్ అవసరం: Flask మరియు Pickle, ఇవి రెండూ Python పై నడుస్తాయి. + +✅ [Flask](https://palletsprojects.com/p/flask/) అంటే ఏమిటి? దాని సృష్టికర్తలు 'మైక్రో-ఫ్రేమ్‌వర్క్'గా నిర్వచించిన Flask, Python మరియు టెంప్లేటింగ్ ఇంజిన్ ఉపయోగించి వెబ్ పేజీలను నిర్మించడానికి వెబ్ ఫ్రేమ్‌వర్క్‌ల ప్రాథమిక లక్షణాలను అందిస్తుంది. Flask తో నిర్మించడాన్ని అభ్యసించడానికి [ఈ Learn మాడ్యూల్](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-77952-leestott) చూడండి. + +✅ [Pickle](https://docs.python.org/3/library/pickle.html) అంటే ఏమిటి? Pickle 🥒 అనేది Python మాడ్యూల్, ఇది Python ఆబ్జెక్ట్ నిర్మాణాన్ని సీరియలైజ్ మరియు డీసీరియలైజ్ చేస్తుంది. మీరు మోడల్‌ను 'పికిల్' చేస్తే, మీరు దాని నిర్మాణాన్ని వెబ్‌లో ఉపయోగించడానికి సీరియలైజ్ లేదా ఫ్లాటెన్ చేస్తారు. జాగ్రత్తగా ఉండండి: pickle స్వభావంగా సురక్షితం కాదు, కాబట్టి ఫైల్‌ను 'అన్-పికిల్' చేయమని అడిగితే జాగ్రత్తగా ఉండండి. పికిల్ చేసిన ఫైల్‌కు `.pkl` అనే సఫిక్స్ ఉంటుంది. + +## వ్యాయామం - మీ డేటాను శుభ్రపరచండి + +ఈ పాఠంలో మీరు [NUFORC](https://nuforc.org) (నేషనల్ UFO రిపోర్టింగ్ సెంటర్) సేకరించిన 80,000 UFO దర్శనాల డేటాను ఉపయోగిస్తారు. ఈ డేటాలో UFO దర్శనాల కొన్ని ఆసక్తికర వివరణలు ఉన్నాయి, ఉదాహరణకు: + +- **విస్తృత ఉదాహరణ వివరణ.** "రాత్రి గడ్డి పొలంపై ప్రకాశించే కాంతి కిరణం నుండి ఒక మనిషి బయటకు వస్తాడు మరియు టెక్సాస్ ఇన్స్ట్రుమెంట్స్ పార్కింగ్ లాట్ వైపు పరుగెత్తుతాడు". +- **సంక్షిప్త ఉదాహరణ వివరణ.** "లైట్లు మమ్మల్ని వెంబడించాయి". + +[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) స్ప్రెడ్షీట్‌లో `city`, `state` మరియు `country` గురించి కాలమ్స్ ఉన్నాయి, అక్కడ దర్శనం జరిగింది, ఆ వస్తువు యొక్క `shape` మరియు దాని `latitude` మరియు `longitude`. + +ఈ పాఠంలో చేర్చబడిన ఖాళీ [నోట్‌బుక్](notebook.ipynb)లో: + +1. మీరు గత పాఠాలలో చేసినట్లుగా `pandas`, `matplotlib`, మరియు `numpy` ను దిగుమతి చేసుకుని ufos స్ప్రెడ్షీట్‌ను దిగుమతి చేసుకోండి. మీరు ఒక నమూనా డేటా సెట్‌ను చూడవచ్చు: + + ```python + import pandas as pd + import numpy as np + + ufos = pd.read_csv('./data/ufos.csv') + ufos.head() + ``` + +1. ufos డేటాను కొత్త శీర్షికలతో చిన్న డేటాఫ్రేమ్‌గా మార్చండి. `Country` ఫీల్డ్‌లో ఉన్న ప్రత్యేక విలువలను తనిఖీ చేయండి. + + ```python + ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']}) + + ufos.Country.unique() + ``` + +1. ఇప్పుడు, మనం వ్యవహరించాల్సిన డేటా పరిమాణాన్ని తగ్గించడానికి ఏ null విలువలైనా తొలగించి, 1-60 సెకన్ల మధ్య ఉన్న దర్శనాలను మాత్రమే దిగుమతి చేసుకోండి: + + ```python + ufos.dropna(inplace=True) + + ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds'] <= 60)] + + ufos.info() + ``` + +1. దేశాల కోసం టెక్స్ట్ విలువలను సంఖ్యగా మార్చడానికి Scikit-learn యొక్క `LabelEncoder` లైబ్రరీని దిగుమతి చేసుకోండి: + + ✅ LabelEncoder డేటాను అక్షరాల క్రమంలో ఎంకోడ్ చేస్తుంది + + ```python + from sklearn.preprocessing import LabelEncoder + + ufos['Country'] = LabelEncoder().fit_transform(ufos['Country']) + + ufos.head() + ``` + + మీ డేటా ఇలా కనిపించాలి: + + ```output + Seconds Country Latitude Longitude + 2 20.0 3 53.200000 -2.916667 + 3 20.0 4 28.978333 -96.645833 + 14 30.0 4 35.823889 -80.253611 + 23 60.0 4 45.582778 -122.352222 + 24 3.0 3 51.783333 -0.783333 + ``` + +## వ్యాయామం - మీ మోడల్‌ను నిర్మించండి + +ఇప్పుడు మీరు శిక్షణ మరియు పరీక్షా సమూహాలుగా డేటాను విభజించి మోడల్ శిక్షణకు సిద్ధం కావచ్చు. + +1. మీరు శిక్షణ ఇవ్వదలచుకున్న మూడు లక్షణాలను X వెక్టర్‌గా ఎంచుకోండి, మరియు y వెక్టర్ `Country` అవుతుంది. మీరు `Seconds`, `Latitude` మరియు `Longitude` ను ఇన్‌పుట్‌గా ఇచ్చి దేశ ID ను పొందగలగాలి. + + ```python + from sklearn.model_selection import train_test_split + + Selected_features = ['Seconds','Latitude','Longitude'] + + X = ufos[Selected_features] + y = ufos['Country'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + ``` + +1. లాజిస్టిక్ రిగ్రెషన్ ఉపయోగించి మీ మోడల్‌ను శిక్షణ ఇవ్వండి: + + ```python + from sklearn.metrics import accuracy_score, classification_report + from sklearn.linear_model import LogisticRegression + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('Accuracy: ', accuracy_score(y_test, predictions)) + ``` + +ఖచ్చితత్వం చెడుగా లేదు **(సుమారు 95%)**, ఆశ్చర్యకరం కాదు, ఎందుకంటే `Country` మరియు `Latitude/Longitude` పరస్పరం సంబంధం కలిగి ఉంటాయి. + +మీరు సృష్టించిన మోడల్ చాలా విప్లవాత్మకంగా లేదు, ఎందుకంటే మీరు దాని `Latitude` మరియు `Longitude` నుండి ఒక `Country` ను అంచనా వేయగలరు, కానీ ఇది మీరు శుభ్రపరిచిన, ఎగుమతి చేసిన ముడి డేటా నుండి శిక్షణ ఇస్తూ, ఆ మోడల్‌ను వెబ్ యాప్‌లో ఉపయోగించడానికి మంచి వ్యాయామం. + +## వ్యాయామం - మీ మోడల్‌ను 'పికిల్' చేయండి + +ఇప్పుడు, మీ మోడల్‌ను _పికిల్_ చేయడానికి సమయం వచ్చింది! మీరు కొన్ని కోడ్ లైన్లలో ఇది చేయవచ్చు. ఒకసారి _పికిల్_ చేసిన తర్వాత, మీ పికిల్ చేసిన మోడల్‌ను లోడ్ చేసి, సెకన్లు, అక్షాంశం మరియు రేఖాంశం విలువలతో కూడిన నమూనా డేటా అర్రేపై పరీక్షించండి, + +```python +import pickle +model_filename = 'ufo-model.pkl' +pickle.dump(model, open(model_filename,'wb')) + +model = pickle.load(open('ufo-model.pkl','rb')) +print(model.predict([[50,44,-12]])) +``` + +మోడల్ **'3'** ను తిరిగి ఇస్తుంది, ఇది UK కోసం దేశ కోడ్. అద్భుతం! 👽 + +## వ్యాయామం - Flask యాప్ నిర్మించండి + +ఇప్పుడు మీరు మీ మోడల్‌ను పిలిచి సమాన ఫలితాలను మరింత దృశ్యంగా అందించే Flask యాప్‌ను నిర్మించవచ్చు. + +1. మొదటగా, మీ _notebook.ipynb_ ఫైల్ పక్కన **web-app** అనే ఫోల్డర్‌ను సృష్టించండి, అక్కడ మీ _ufo-model.pkl_ ఫైల్ ఉంటుంది. + +1. ఆ ఫోల్డర్‌లో మూడు మరిన్ని ఫోల్డర్లను సృష్టించండి: **static**, దాని లోపల **css** ఫోల్డర్, మరియు **templates**. ఇప్పుడు మీ వద్ద ఈ క్రింది ఫైళ్లు మరియు డైరెక్టరీలు ఉండాలి: + + ```output + web-app/ + static/ + css/ + templates/ + notebook.ipynb + ufo-model.pkl + ``` + + ✅ పూర్తి యాప్‌ను చూడడానికి సొల్యూషన్ ఫోల్డర్‌ను చూడండి + +1. _web-app_ ఫోల్డర్‌లో సృష్టించాల్సిన మొదటి ఫైల్ **requirements.txt**. JavaScript యాప్‌లో _package.json_ లాగా, ఈ ఫైల్ యాప్‌కు అవసరమైన డిపెండెన్సీలను జాబితా చేస్తుంది. **requirements.txt** లో ఈ లైన్లను జోడించండి: + + ```text + scikit-learn + pandas + numpy + flask + ``` + +1. ఇప్పుడు, _web-app_ కు నావిగేట్ చేసి ఈ ఫైల్‌ను నడపండి: + + ```bash + cd web-app + ``` + +1. మీ టెర్మినల్‌లో `pip install` టైప్ చేసి, _requirements.txt_ లో జాబితా చేసిన లైబ్రరీలను ఇన్‌స్టాల్ చేయండి: + + ```bash + pip install -r requirements.txt + ``` + +1. ఇప్పుడు, యాప్‌ను పూర్తి చేయడానికి మూడు మరిన్ని ఫైళ్లను సృష్టించడానికి సిద్ధంగా ఉన్నారు: + + 1. రూట్‌లో **app.py** సృష్టించండి. + 2. _templates_ డైరెక్టరీలో **index.html** సృష్టించండి. + 3. _static/css_ డైరెక్టరీలో **styles.css** సృష్టించండి. + +1. _styles.css_ ఫైల్‌ను కొన్ని శైలులతో నిర్మించండి: + + ```css + body { + width: 100%; + height: 100%; + font-family: 'Helvetica'; + background: black; + color: #fff; + text-align: center; + letter-spacing: 1.4px; + font-size: 30px; + } + + input { + min-width: 150px; + } + + .grid { + width: 300px; + border: 1px solid #2d2d2d; + display: grid; + justify-content: center; + margin: 20px auto; + } + + .box { + color: #fff; + background: #2d2d2d; + padding: 12px; + display: inline-block; + } + ``` + +1. తరువాత, _index.html_ ఫైల్‌ను నిర్మించండి: + + ```html + + + + + 🛸 UFO Appearance Prediction! 👽 + + + + +
+ +
+ +

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

+ +
+ + + + +
+ +

{{ prediction_text }}

+ +
+ +
+ + + + ``` + + ఈ ఫైల్‌లో టెంప్లేటింగ్‌ను గమనించండి. యాప్ అందించే వేరియబుల్స్ చుట్టూ ఉన్న 'మస్టాచ్' సింటాక్స్: `{{}}` ను గమనించండి, ఉదాహరణకు prediction టెక్స్ట్. అలాగే, `/predict` రూట్‌కు prediction పోస్ట్ చేసే ఫారం కూడా ఉంది. + + చివరగా, మోడల్ వినియోగం మరియు prediction ప్రదర్శనను నడిపే Python ఫైల్‌ను నిర్మించడానికి సిద్ధంగా ఉన్నారు: + +1. `app.py` లో ఈ కోడ్ జోడించండి: + + ```python + import numpy as np + from flask import Flask, request, render_template + import pickle + + app = Flask(__name__) + + model = pickle.load(open("./ufo-model.pkl", "rb")) + + + @app.route("/") + def home(): + return render_template("index.html") + + + @app.route("/predict", methods=["POST"]) + def predict(): + + int_features = [int(x) for x in request.form.values()] + final_features = [np.array(int_features)] + prediction = model.predict(final_features) + + output = prediction[0] + + countries = ["Australia", "Canada", "Germany", "UK", "US"] + + return render_template( + "index.html", prediction_text="Likely country: {}".format(countries[output]) + ) + + + if __name__ == "__main__": + app.run(debug=True) + ``` + + > 💡 సూచన: Flask ఉపయోగించి వెబ్ యాప్ నడుపుతున్నప్పుడు [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode) జోడిస్తే, మీరు చేసిన ఏ మార్పు అయినా వెంటనే ప్రతిబింబిస్తుంది, సర్వర్‌ను రీస్టార్ట్ చేయాల్సిన అవసరం లేదు. జాగ్రత్త! ప్రొడక్షన్ యాప్‌లో ఈ మోడ్‌ను ఎనేబుల్ చేయవద్దు. + +మీరు `python app.py` లేదా `python3 app.py` నడిపితే - మీ వెబ్ సర్వర్ స్థానికంగా ప్రారంభమవుతుంది, మరియు మీరు UFOలు ఎక్కడ దర్శించబడ్డాయో తెలుసుకోవడానికి ఒక చిన్న ఫారం నింపవచ్చు! + +అదే ముందు, `app.py` భాగాలను చూడండి: + +1. మొదట, డిపెండెన్సీలు లోడ్ అవుతాయి మరియు యాప్ ప్రారంభమవుతుంది. +1. తరువాత, మోడల్ దిగుమతి చేయబడుతుంది. +1. తరువాత, హోమ్ రూట్‌లో index.html రేండర్ అవుతుంది. + +`/predict` రూట్‌లో, ఫారం పోస్ట్ అయినప్పుడు కొన్ని చర్యలు జరుగుతాయి: + +1. ఫారం వేరియబుల్స్ సేకరించి numpy అర్రేకు మార్చబడతాయి. అవి మోడల్‌కు పంపబడతాయి మరియు prediction తిరిగి వస్తుంది. +2. మేము ప్రదర్శించదలచిన దేశాలు వారి అంచనా దేశ కోడ్ నుండి పఠనీయమైన టెక్స్ట్‌గా మళ్లీ రేండర్ చేయబడతాయి, ఆ విలువ index.html కు తిరిగి పంపబడుతుంది, టెంప్లేట్‌లో ప్రదర్శించడానికి. + +Flask మరియు పికిల్ చేసిన మోడల్‌తో ఈ విధంగా మోడల్‌ను ఉపయోగించడం సాపేక్షంగా సులభం. కఠినమైన విషయం ఏమిటంటే, prediction పొందడానికి మోడల్‌కు పంపాల్సిన డేటా ఆకారాన్ని అర్థం చేసుకోవడం. అది మోడల్ శిక్షణ విధానంపై ఆధారపడి ఉంటుంది. ఈ మోడల్‌కు prediction కోసం మూడు డేటా పాయింట్లు ఇన్‌పుట్ కావాలి. + +ప్రొఫెషనల్ పరిసరంలో, మోడల్‌ను శిక్షణ ఇస్తున్న వారు మరియు దాన్ని వెబ్ లేదా మొబైల్ యాప్‌లో వినియోగిస్తున్న వారు మధ్య మంచి కమ్యూనికేషన్ అవసరం అని మీరు చూడవచ్చు. మన సందర్భంలో, అది ఒక్క వ్యక్తి, మీరు! + +--- + +## 🚀 సవాలు + +నోట్‌బుక్‌లో పని చేయడం మరియు మోడల్‌ను Flask యాప్‌కు దిగుమతి చేసుకోవడం బదులు, మీరు Flask యాప్‌లోనే మోడల్‌ను శిక్షణ ఇస్తే ఎలా ఉంటుంది! మీ Python కోడ్‌ను నోట్‌బుక్‌లోని డేటా శుభ్రపరిచిన తర్వాత, `train` అనే రూట్‌లో యాప్‌లోనే మోడల్‌ను శిక్షణ ఇస్తూ మార్చండి. ఈ పద్ధతిని అనుసరించడంలో లాభాలు మరియు నష్టాలు ఏమిటి? + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +ML మోడల్స్‌ను వినియోగించడానికి వెబ్ యాప్‌ను నిర్మించడానికి అనేక మార్గాలు ఉన్నాయి. మీరు JavaScript లేదా Python ఉపయోగించి వెబ్ యాప్‌ను నిర్మించడానికి ఉపయోగించగల మార్గాల జాబితాను తయారుచేయండి. ఆర్కిటెక్చర్‌ను పరిగణించండి: మోడల్ యాప్‌లోనే ఉండాలా లేదా క్లౌడ్‌లో ఉండాలా? తర్వాతిది అయితే, దానిని ఎలా యాక్సెస్ చేస్తారు? ఒక వర్తింపజేసిన 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/3-Web-App/1-Web-App/assignment.md b/translations/te/3-Web-App/1-Web-App/assignment.md new file mode 100644 index 000000000..0dd525d08 --- /dev/null +++ b/translations/te/3-Web-App/1-Web-App/assignment.md @@ -0,0 +1,27 @@ + +# వేరే మోడల్ ప్రయత్నించండి + +## సూచనలు + +మీరు ఒక శిక్షణ పొందిన రిగ్రెషన్ మోడల్ ఉపయోగించి ఒక వెబ్ యాప్ నిర్మించిన తర్వాత, ముందటి రిగ్రెషన్ పాఠం నుండి ఒక మోడల్ ఉపయోగించి ఈ వెబ్ యాప్‌ను మళ్లీ చేయండి. మీరు శైలి లేదా డిజైన్‌ను పంప్కిన్ డేటాను ప్రతిబింబించేలా వేరుగా ఉంచవచ్చు. మీ మోడల్ శిక్షణ పద్ధతిని ప్రతిబింబించేలా ఇన్‌పుట్‌లను మార్చేటప్పుడు జాగ్రత్తగా ఉండండి. + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైన | సరిపడిన | మెరుగుదల అవసరం | +| -------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | -------------------------------------- | +| | వెబ్ యాప్ ఆశించినట్లుగా నడుస్తుంది మరియు క్లౌడ్‌లో డిప్లాయ్ చేయబడింది | వెబ్ యాప్ లో లోపాలు లేదా అనూహ్య ఫలితాలు కనిపిస్తాయి | వెబ్ యాప్ సరిగ్గా పనిచేయదు | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/3-Web-App/1-Web-App/notebook.ipynb b/translations/te/3-Web-App/1-Web-App/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/te/3-Web-App/1-Web-App/solution/notebook.ipynb b/translations/te/3-Web-App/1-Web-App/solution/notebook.ipynb new file mode 100644 index 000000000..b567f175c --- /dev/null +++ b/translations/te/3-Web-App/1-Web-App/solution/notebook.ipynb @@ -0,0 +1,269 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "5fa2e8f4584c78250ca9729b46562ceb", + "translation_date": "2025-12-19T16:48:13+00:00", + "source_file": "3-Web-App/1-Web-App/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "## యుఎఫ్ఓ దర్శనంపై తెలుసుకోవడానికి రిగ్రెషన్ మోడల్ ఉపయోగించి వెబ్ యాప్ నిర్మించండి\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " datetime city state country shape \\\n", + "0 10/10/1949 20:30 san marcos tx us cylinder \n", + "1 10/10/1949 21:00 lackland afb tx NaN light \n", + "2 10/10/1955 17:00 chester (uk/england) NaN gb circle \n", + "3 10/10/1956 21:00 edna tx us circle \n", + "4 10/10/1960 20:00 kaneohe hi us light \n", + "\n", + " duration (seconds) duration (hours/min) \\\n", + "0 2700.0 45 minutes \n", + "1 7200.0 1-2 hrs \n", + "2 20.0 20 seconds \n", + "3 20.0 1/2 hour \n", + "4 900.0 15 minutes \n", + "\n", + " comments date posted latitude \\\n", + "0 This event took place in early fall around 194... 4/27/2004 29.883056 \n", + "1 1949 Lackland AFB, TX. Lights racing acros... 12/16/2005 29.384210 \n", + "2 Green/Orange circular disc over Chester, En... 1/21/2008 53.200000 \n", + "3 My older brother and twin sister were leaving ... 1/17/2004 28.978333 \n", + "4 AS a Marine 1st Lt. flying an FJ4B fighter/att... 1/22/2004 21.418056 \n", + "\n", + " longitude \n", + "0 -97.941111 \n", + "1 -98.581082 \n", + "2 -2.916667 \n", + "3 -96.645833 \n", + "4 -157.803611 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimecitystatecountryshapeduration (seconds)duration (hours/min)commentsdate postedlatitudelongitude
010/10/1949 20:30san marcostxuscylinder2700.045 minutesThis event took place in early fall around 194...4/27/200429.883056-97.941111
110/10/1949 21:00lackland afbtxNaNlight7200.01-2 hrs1949 Lackland AFB&#44 TX. Lights racing acros...12/16/200529.384210-98.581082
210/10/1955 17:00chester (uk/england)NaNgbcircle20.020 secondsGreen/Orange circular disc over Chester&#44 En...1/21/200853.200000-2.916667
310/10/1956 21:00ednatxuscircle20.01/2 hourMy older brother and twin sister were leaving ...1/17/200428.978333-96.645833
410/10/1960 20:00kaneohehiuslight900.015 minutesAS a Marine 1st Lt. flying an FJ4B fighter/att...1/22/200421.418056-157.803611
\n
" + }, + "metadata": {}, + "execution_count": 23 + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "ufos = pd.read_csv('../data/ufos.csv')\n", + "ufos.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array(['us', nan, 'gb', 'ca', 'au', 'de'], dtype=object)" + ] + }, + "metadata": {}, + "execution_count": 24 + } + ], + "source": [ + "\n", + "ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']})\n", + "\n", + "ufos.Country.unique()\n", + "\n", + "# 0 au, 1 ca, 2 de, 3 gb, 4 us" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\nInt64Index: 25863 entries, 2 to 80330\nData columns (total 4 columns):\n # Column Non-Null Count Dtype \n--- ------ -------------- ----- \n 0 Seconds 25863 non-null float64\n 1 Country 25863 non-null object \n 2 Latitude 25863 non-null float64\n 3 Longitude 25863 non-null float64\ndtypes: float64(3), object(1)\nmemory usage: 1010.3+ KB\n" + ] + } + ], + "source": [ + "ufos.dropna(inplace=True)\n", + "\n", + "ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds'] <= 60)]\n", + "\n", + "ufos.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Seconds Country Latitude Longitude\n", + "2 20.0 3 53.200000 -2.916667\n", + "3 20.0 4 28.978333 -96.645833\n", + "14 30.0 4 35.823889 -80.253611\n", + "23 60.0 4 45.582778 -122.352222\n", + "24 3.0 3 51.783333 -0.783333" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
SecondsCountryLatitudeLongitude
220.0353.200000-2.916667
320.0428.978333-96.645833
1430.0435.823889-80.253611
2360.0445.582778-122.352222
243.0351.783333-0.783333
\n
" + }, + "metadata": {}, + "execution_count": 26 + } + ], + "source": [ + "from sklearn.preprocessing import LabelEncoder\n", + "\n", + "ufos['Country'] = LabelEncoder().fit_transform(ufos['Country'])\n", + "\n", + "ufos.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "\n", + "Selected_features = ['Seconds','Latitude','Longitude']\n", + "\n", + "X = ufos[Selected_features]\n", + "y = ufos['Country']\n", + "\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", + " FutureWarning)\n", + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:469: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n", + " \"this warning.\", FutureWarning)\n", + " precision recall f1-score support\n", + "\n", + " 0 1.00 1.00 1.00 41\n", + " 1 1.00 0.02 0.05 250\n", + " 2 0.00 0.00 0.00 8\n", + " 3 0.94 1.00 0.97 131\n", + " 4 0.95 1.00 0.97 4743\n", + "\n", + " accuracy 0.95 5173\n", + " macro avg 0.78 0.60 0.60 5173\n", + "weighted avg 0.95 0.95 0.93 5173\n", + "\n", + "Predicted labels: [4 4 4 ... 3 4 4]\n", + "Accuracy: 0.9512855209742895\n", + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.\n", + " 'precision', 'predicted', average, warn_for)\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import accuracy_score, classification_report \n", + "from sklearn.linear_model import LogisticRegression\n", + "model = LogisticRegression()\n", + "model.fit(X_train, y_train)\n", + "predictions = model.predict(X_test)\n", + "\n", + "print(classification_report(y_test, predictions))\n", + "print('Predicted labels: ', predictions)\n", + "print('Accuracy: ', accuracy_score(y_test, predictions))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[3]\n" + ] + } + ], + "source": [ + "import pickle\n", + "model_filename = 'ufo-model.pkl'\n", + "pickle.dump(model, open(model_filename,'wb'))\n", + "\n", + "model = pickle.load(open('ufo-model.pkl','rb'))\n", + "print(model.predict([[50,44,-12]]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/te/3-Web-App/README.md b/translations/te/3-Web-App/README.md new file mode 100644 index 000000000..d36bf4d3d --- /dev/null +++ b/translations/te/3-Web-App/README.md @@ -0,0 +1,37 @@ + +# మీ ML మోడల్‌ను ఉపయోగించడానికి వెబ్ యాప్‌ను నిర్మించండి + +ఈ పాఠ్యాంశంలో, మీరు ఒక అన్వయించిన ML అంశాన్ని పరిచయం చేయబడతారు: మీ Scikit-learn మోడల్‌ను ఫైల్‌గా ఎలా సేవ్ చేయాలో, అది వెబ్ అప్లికేషన్‌లో అంచనాలు చేయడానికి ఉపయోగించవచ్చు. మోడల్ సేవ్ అయిన తర్వాత, మీరు దాన్ని Flaskలో నిర్మించిన వెబ్ యాప్‌లో ఎలా ఉపయోగించాలో నేర్చుకుంటారు. మీరు మొదట UFO సాక్ష్యాల గురించి ఉన్న కొన్ని డేటాతో ఒక మోడల్‌ను సృష్టిస్తారు! ఆ తర్వాత, మీరు సెకన్ల సంఖ్య, అక్షాంశం మరియు రేఖాంశం విలువలను ఇన్‌పుట్‌గా ఇచ్చి ఏ దేశం UFO చూసిందని అంచనా వేయగల వెబ్ యాప్‌ను నిర్మిస్తారు. + +![UFO Parking](../../../translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.te.jpg) + +ఫోటో Michael Herren ద్వారా Unsplash + +## పాఠాలు + +1. [వెబ్ యాప్‌ను నిర్మించండి](1-Web-App/README.md) + +## క్రెడిట్స్ + +"వెబ్ యాప్‌ను నిర్మించండి" ను ♥️ తో [Jen Looper](https://twitter.com/jenlooper) రాశారు. + +♥️ క్విజ్‌లు రోహన్ రాజ్ రాశారు. + +డేటాసెట్ [Kaggle](https://www.kaggle.com/NUFORC/ufo-sightings) నుండి తీసుకోబడింది. + +వెబ్ యాప్ ఆర్కిటెక్చర్ భాగంగా సూచించబడింది [ఈ ఆర్టికల్](https://towardsdatascience.com/how-to-easily-deploy-machine-learning-models-using-flask-b95af8fe34d4) మరియు [ఈ రిపో](https://github.com/abhinavsagar/machine-learning-deployment) Abhinav Sagar ద్వారా. + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/4-Classification/1-Introduction/README.md b/translations/te/4-Classification/1-Introduction/README.md new file mode 100644 index 000000000..14b6e8045 --- /dev/null +++ b/translations/te/4-Classification/1-Introduction/README.md @@ -0,0 +1,315 @@ + +# వర్గీకరణకు పరిచయం + +ఈ నాలుగు పాఠాలలో, మీరు క్లాసిక్ మెషీన్ లెర్నింగ్ యొక్క ఒక ప్రాథమిక దృష్టి - _వర్గీకరణ_ ను అన్వేషించబోతున్నారు. ఆసియా మరియు భారతదేశంలోని అన్ని అద్భుతమైన వంటకాల గురించి డేటాసెట్‌తో వివిధ వర్గీకరణ అల్గోరిథమ్స్ ఉపయోగించడం ద్వారా మనం నడవబోతున్నాము. మీరు ఆకలిగా ఉన్నారని ఆశిస్తున్నాము! + +![just a pinch!](../../../../translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.te.png) + +> ఈ పాఠాలలో పాన్-ఆసియన్ వంటకాలను జరుపుకోండి! చిత్రం [జెన్ లూపర్](https://twitter.com/jenlooper) ద్వారా + +వర్గీకరణ అనేది [సూపర్వైజ్డ్ లెర్నింగ్](https://wikipedia.org/wiki/Supervised_learning) యొక్క ఒక రూపం, ఇది రిగ్రెషన్ సాంకేతికతలతో చాలా సామాన్యమైనది. మెషీన్ లెర్నింగ్ డేటాసెట్లను ఉపయోగించి విలువలు లేదా పేర్లను అంచనా వేయడమే అయితే, వర్గీకరణ సాధారణంగా రెండు గుంపులుగా విభజించబడుతుంది: _బైనరీ వర్గీకరణ_ మరియు _బహుళ వర్గీకరణ_. + +[![Introduction to classification](https://img.youtube.com/vi/eg8DJYwdMyg/0.jpg)](https://youtu.be/eg8DJYwdMyg "Introduction to classification") + +> 🎥 వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి: MIT యొక్క జాన్ గుట్‌టాగ్ వర్గీకరణను పరిచయం చేస్తారు + +గమనించండి: + +- **లీనియర్ రిగ్రెషన్** మీరు వేరియబుల్స్ మధ్య సంబంధాలను అంచనా వేయడంలో మరియు కొత్త డేటాపాయింట్ ఆ లైన్‌కు సంబంధించి ఎక్కడ పడుతుందో ఖచ్చితంగా అంచనా వేయడంలో సహాయపడింది. ఉదాహరణకు, మీరు _సెప్టెంబర్ మరియు డిసెంబర్‌లో పంప్కిన్ ధర ఎంత ఉంటుందో అంచనా వేయవచ్చు_. +- **లాజిస్టిక్ రిగ్రెషన్** "బైనరీ వర్గాలు" కనుగొనడంలో సహాయపడింది: ఈ ధర వద్ద, _ఈ పంప్కిన్ నారింజ రంగులో ఉందా లేదా కాదు_? + +వర్గీకరణ వివిధ అల్గోరిథమ్స్ ఉపయోగించి డేటాపాయింట్ యొక్క లేబుల్ లేదా తరగతిని నిర్ణయించడానికి ఇతర మార్గాలను కనుగొంటుంది. మనం ఈ వంటకాల డేటాతో పని చేసి, ఒక సమూహం పదార్థాలను పరిశీలించి, దాని వంటక మూలాన్ని నిర్ణయించగలమా అని చూద్దాం. + +## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ఈ పాఠం R లో అందుబాటులో ఉంది!](../../../../4-Classification/1-Introduction/solution/R/lesson_10.html) + +### పరిచయం + +వర్గీకరణ మెషీన్ లెర్నింగ్ పరిశోధకుడు మరియు డేటా శాస్త్రవేత్త యొక్క ప్రాథమిక కార్యకలాపాలలో ఒకటి. ఒక బైనరీ విలువ ("ఈ ఇమెయిల్ స్పామ్ కాదా?") యొక్క ప్రాథమిక వర్గీకరణ నుండి, కంప్యూటర్ విజన్ ఉపయోగించి సంక్లిష్ట చిత్రం వర్గీకరణ మరియు విభజన వరకు, డేటాను తరగతులుగా వర్గీకరించి దానిపై ప్రశ్నలు అడగడం ఎప్పుడూ ఉపయోగకరం. + +ప్రక్రియను మరింత శాస్త్రీయంగా చెప్పాలంటే, మీ వర్గీకరణ పద్ధతి ఇన్‌పుట్ వేరియబుల్స్ మరియు అవుట్‌పుట్ వేరియబుల్స్ మధ్య సంబంధాన్ని మ్యాప్ చేయగల ఒక అంచనా మోడల్‌ను సృష్టిస్తుంది. + +![binary vs. multiclass classification](../../../../translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.te.png) + +> వర్గీకరణ అల్గోరిథమ్స్ నిర్వహించాల్సిన బైనరీ మరియు బహుళ వర్గ సమస్యలు. ఇన్ఫోగ్రాఫిక్ [జెన్ లూపర్](https://twitter.com/jenlooper) ద్వారా + +మన డేటాను శుభ్రపరచడం, దాన్ని విజువలైజ్ చేయడం మరియు ML పనుల కోసం సిద్ధం చేయడం ప్రారంభించే ముందు, మెషీన్ లెర్నింగ్ డేటాను వర్గీకరించడానికి ఉపయోగించగల వివిధ మార్గాల గురించి కొంత తెలుసుకుందాం. + +[సంఖ్యాశాస్త్రం](https://wikipedia.org/wiki/Statistical_classification) నుండి ఉద్భవించిన వర్గీకరణ క్లాసిక్ మెషీన్ లెర్నింగ్ ఉపయోగించి `smoker`, `weight`, మరియు `age` వంటి లక్షణాలను ఉపయోగించి _X వ్యాధి అభివృద్ధి చెందే అవకాశాన్ని_ నిర్ణయిస్తుంది. మీరు ముందుగా చేసిన రిగ్రెషన్ వ్యాయామాల్లా, ఇది సూపర్వైజ్డ్ లెర్నింగ్ సాంకేతికత, మీ డేటా లేబుల్డ్ ఉంటుంది మరియు ML అల్గోరిథమ్స్ ఆ లేబుల్స్ ఉపయోగించి డేటాసెట్ యొక్క తరగతులు (లక్షణాలు) వర్గీకరించి వాటిని ఒక గుంపు లేదా ఫలితానికి కేటాయిస్తాయి. + +✅ వంటకాల గురించి ఒక డేటాసెట్‌ను ఊహించండి. బహుళ వర్గ మోడల్ ఏమి సమాధానం చెప్పగలదు? బైనరీ మోడల్ ఏమి సమాధానం చెప్పగలదు? మీరు ఒక వంటకం మెంతులు ఉపయోగించే అవకాశం ఉందా అని నిర్ణయించాలనుకుంటే? మీరు ఒక గ్రోసరీ బ్యాగ్‌లో స్టార్ అనీస్, ఆర్టిచోక్స్, కాలీఫ్లవర్, మరియు హోర్సరాడిష్ ఉన్నప్పుడు, మీరు ఒక సాధారణ భారతీయ వంటకం తయారుచేయగలరా? + +[![Crazy mystery baskets](https://img.youtube.com/vi/GuTeDbaNoEU/0.jpg)](https://youtu.be/GuTeDbaNoEU "Crazy mystery baskets") + +> 🎥 వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి. 'Chopped' షో యొక్క మొత్తం భావన 'మిస్టరీ బాస్కెట్' - అక్కడ చెఫ్స్ రాండమ్ పదార్థాలతో వంటకం తయారుచేయాలి. ఖచ్చితంగా ML మోడల్ సహాయపడేది! + +## హలో 'క్లాసిఫయర్' + +ఈ వంటకాల డేటాసెట్ నుండి అడగదలచిన ప్రశ్న వాస్తవానికి **బహుళ వర్గ ప్రశ్న** ఎందుకంటే మనకు అనేక జాతీయ వంటకాలు ఉన్నాయి. పదార్థాల బ్యాచ్ ఇచ్చినప్పుడు, ఈ అనేక తరగతులలో ఏది డేటాకు సరిపోతుంది? + +Scikit-learn వివిధ అల్గోరిథమ్స్ అందిస్తుంది, మీరు పరిష్కరించదలచిన సమస్య రకాన్ని ఆధారంగా డేటాను వర్గీకరించడానికి. తదుపరి రెండు పాఠాలలో, మీరు ఈ అల్గోరిథమ్స్ గురించి తెలుసుకుంటారు. + +## వ్యాయామం - మీ డేటాను శుభ్రపరచి సమతుల్యం చేయండి + +ఈ ప్రాజెక్ట్ ప్రారంభించే ముందు మొదటి పని, మీ డేటాను శుభ్రపరచి **సమతుల్యం** చేయడం, మెరుగైన ఫలితాలు పొందడానికి. ఈ ఫోల్డర్ రూట్‌లో ఉన్న ఖాళీ _notebook.ipynb_ ఫైల్‌తో ప్రారంభించండి. + +మొదట ఇన్‌స్టాల్ చేయవలసినది [imblearn](https://imbalanced-learn.org/stable/). ఇది Scikit-learn ప్యాకేజీ, ఇది డేటాను మెరుగ్గా సమతుల్యం చేయడానికి సహాయపడుతుంది (ఈ పనిని మీరు కొద్దిసేపట్లో నేర్చుకుంటారు). + +1. `imblearn` ఇన్‌స్టాల్ చేయడానికి, ఇలా `pip install` నడపండి: + + ```python + pip install imblearn + ``` + +1. మీ డేటాను దిగుమతి చేసుకోవడానికి మరియు దాన్ని విజువలైజ్ చేయడానికి అవసరమైన ప్యాకేజీలను దిగుమతి చేసుకోండి, అలాగే `imblearn` నుండి `SMOTE` ను దిగుమతి చేసుకోండి. + + ```python + import pandas as pd + import matplotlib.pyplot as plt + import matplotlib as mpl + import numpy as np + from imblearn.over_sampling import SMOTE + ``` + + ఇప్పుడు మీరు డేటాను దిగుమతి చేసుకోవడానికి సిద్ధంగా ఉన్నారు. + +1. తదుపరి పని డేటాను దిగుమతి చేసుకోవడం: + + ```python + df = pd.read_csv('../data/cuisines.csv') + ``` + + `read_csv()` ఉపయోగించి _cusines.csv_ ఫైల్ యొక్క కంటెంట్‌ను చదివి `df` వేరియబుల్‌లో ఉంచుతుంది. + +1. డేటా ఆకారాన్ని తనిఖీ చేయండి: + + ```python + df.head() + ``` + + మొదటి ఐదు వరుసలు ఇలా ఉంటాయి: + + ```output + | | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini | + | --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- | + | 0 | 65 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 1 | 66 | indian | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 2 | 67 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 3 | 68 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 4 | 69 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | + ``` + +1. `info()` పిలిచి ఈ డేటా గురించి సమాచారం పొందండి: + + ```python + df.info() + ``` + + మీ అవుట్‌పుట్ ఇలా ఉంటుంది: + + ```output + + RangeIndex: 2448 entries, 0 to 2447 + Columns: 385 entries, Unnamed: 0 to zucchini + dtypes: int64(384), object(1) + memory usage: 7.2+ MB + ``` + +## వ్యాయామం - వంటకాల గురించి తెలుసుకోవడం + +ఇప్పుడు పని మరింత ఆసక్తికరంగా మారుతుంది. వంటకాల వారీగా డేటా పంపిణీని కనుగొనండి + +1. `barh()` పిలిచి డేటాను బార్లుగా ప్లాట్ చేయండి: + + ```python + df.cuisine.value_counts().plot.barh() + ``` + + ![cuisine data distribution](../../../../translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.te.png) + + వంటకాల సంఖ్య పరిమితి ఉన్నప్పటికీ, డేటా పంపిణీ అసమానంగా ఉంది. మీరు దీన్ని సరిచేయవచ్చు! ముందుగా, మరింత అన్వేషించండి. + +1. వంటకాల వారీగా ఎంత డేటా ఉందో కనుగొని ప్రింట్ చేయండి: + + ```python + thai_df = df[(df.cuisine == "thai")] + japanese_df = df[(df.cuisine == "japanese")] + chinese_df = df[(df.cuisine == "chinese")] + indian_df = df[(df.cuisine == "indian")] + korean_df = df[(df.cuisine == "korean")] + + print(f'thai df: {thai_df.shape}') + print(f'japanese df: {japanese_df.shape}') + print(f'chinese df: {chinese_df.shape}') + print(f'indian df: {indian_df.shape}') + print(f'korean df: {korean_df.shape}') + ``` + + అవుట్‌పుట్ ఇలా ఉంటుంది: + + ```output + thai df: (289, 385) + japanese df: (320, 385) + chinese df: (442, 385) + indian df: (598, 385) + korean df: (799, 385) + ``` + +## పదార్థాలను కనుగొనడం + +ఇప్పుడు మీరు డేటాలో లోతుగా వెళ్ళి వంటకాల వారీగా సాధారణ పదార్థాలు ఏమిటో తెలుసుకోవచ్చు. వంటకాల మధ్య గందరగోళం సృష్టించే పునరావృత డేటాను శుభ్రపరచాలి, కాబట్టి ఈ సమస్య గురించి తెలుసుకుందాం. + +1. పదార్థాల డేటాఫ్రేమ్ సృష్టించడానికి Python లో `create_ingredient()` ఫంక్షన్ సృష్టించండి. ఈ ఫంక్షన్ ఉపయోగకరంలేని కాలమ్‌ను తొలగించి, పదార్థాలను వారి కౌంట్ ఆధారంగా సర్దుతుంది: + + ```python + def create_ingredient_df(df): + ingredient_df = df.T.drop(['cuisine','Unnamed: 0']).sum(axis=1).to_frame('value') + ingredient_df = ingredient_df[(ingredient_df.T != 0).any()] + ingredient_df = ingredient_df.sort_values(by='value', ascending=False, + inplace=False) + return ingredient_df + ``` + + ఇప్పుడు మీరు ఆ ఫంక్షన్ ఉపయోగించి వంటకాల వారీగా టాప్ టెన్ అత్యంత ప్రాచుర్యం పొందిన పదార్థాల ఆలోచన పొందవచ్చు. + +1. `create_ingredient()` పిలిచి `barh()` పిలిచి ప్లాట్ చేయండి: + + ```python + thai_ingredient_df = create_ingredient_df(thai_df) + thai_ingredient_df.head(10).plot.barh() + ``` + + ![thai](../../../../translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.te.png) + +1. జపనీస్ డేటా కోసం అదే చేయండి: + + ```python + japanese_ingredient_df = create_ingredient_df(japanese_df) + japanese_ingredient_df.head(10).plot.barh() + ``` + + ![japanese](../../../../translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.te.png) + +1. ఇప్పుడు చైనీస్ పదార్థాల కోసం: + + ```python + chinese_ingredient_df = create_ingredient_df(chinese_df) + chinese_ingredient_df.head(10).plot.barh() + ``` + + ![chinese](../../../../translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.te.png) + +1. ఇండియన్ పదార్థాలను ప్లాట్ చేయండి: + + ```python + indian_ingredient_df = create_ingredient_df(indian_df) + indian_ingredient_df.head(10).plot.barh() + ``` + + ![indian](../../../../translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.te.png) + +1. చివరగా, కొరియన్ పదార్థాలను ప్లాట్ చేయండి: + + ```python + korean_ingredient_df = create_ingredient_df(korean_df) + korean_ingredient_df.head(10).plot.barh() + ``` + + ![korean](../../../../translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.te.png) + +1. ఇప్పుడు, వేర్వేరు వంటకాల మధ్య గందరగోళం సృష్టించే అత్యంత సాధారణ పదార్థాలను `drop()` పిలిచి తొలగించండి: + + అందరూ అన్నం, వెల్లుల్లి మరియు అల్లం ఇష్టపడతారు! + + ```python + feature_df= df.drop(['cuisine','Unnamed: 0','rice','garlic','ginger'], axis=1) + labels_df = df.cuisine #.unique() + feature_df.head() + ``` + +## డేటాసెట్‌ను సమతుల్యం చేయండి + +ఇప్పుడు మీరు డేటాను శుభ్రపరిచిన తర్వాత, [SMOTE](https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html) - "సింథటిక్ మైనారిటీ ఓవర్-సాంప్లింగ్ టెక్నిక్" - ఉపయోగించి దాన్ని సమతుల్యం చేయండి. + +1. `fit_resample()` పిలవండి, ఈ వ్యూహం ఇంటర్‌పోలేషన్ ద్వారా కొత్త నమూనాలను సృష్టిస్తుంది. + + ```python + oversample = SMOTE() + transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df) + ``` + + మీ డేటాను సమతుల్యం చేయడం ద్వారా, మీరు దాన్ని వర్గీకరించేటప్పుడు మెరుగైన ఫలితాలు పొందుతారు. ఒక బైనరీ వర్గీకరణ గురించి ఆలోచించండి. మీ డేటాలో ఎక్కువ భాగం ఒక తరగతికి చెందినట్లయితే, ML మోడల్ ఆ తరగతిని ఎక్కువగా అంచనా వేయగలదు, ఎందుకంటే దానికి ఎక్కువ డేటా ఉంటుంది. డేటాను సమతుల్యం చేయడం ఏదైనా వక్రీకృత డేటాను తీసుకుని ఈ అసమతుల్యతను తొలగించడంలో సహాయపడుతుంది. + +1. ఇప్పుడు పదార్థాల వారీగా లేబుల్స్ సంఖ్యను తనిఖీ చేయండి: + + ```python + print(f'new label count: {transformed_label_df.value_counts()}') + print(f'old label count: {df.cuisine.value_counts()}') + ``` + + మీ అవుట్‌పుట్ ఇలా ఉంటుంది: + + ```output + new label count: korean 799 + chinese 799 + indian 799 + japanese 799 + thai 799 + Name: cuisine, dtype: int64 + old label count: korean 799 + indian 598 + chinese 442 + japanese 320 + thai 289 + Name: cuisine, dtype: int64 + ``` + + డేటా చక్కగా శుభ్రపరచబడింది, సమతుల్యం చేయబడింది, మరియు చాలా రుచికరంగా ఉంది! + +1. చివరి దశలో, లేబుల్స్ మరియు లక్షణాలను కలిగి ఉన్న మీ సమతుల్య డేటాను కొత్త డేటాఫ్రేమ్‌లో సేవ్ చేయండి, దీన్ని ఫైల్‌గా ఎగుమతి చేయవచ్చు: + + ```python + transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer') + ``` + +1. `transformed_df.head()` మరియు `transformed_df.info()` ఉపయోగించి డేటాను మరొకసారి చూడవచ్చు. భవిష్యత్తు పాఠాల కోసం ఈ డేటా కాపీని సేవ్ చేయండి: + + ```python + transformed_df.head() + transformed_df.info() + transformed_df.to_csv("../data/cleaned_cuisines.csv") + ``` + + ఈ తాజా CSV ఇప్పుడు రూట్ డేటా ఫోల్డర్‌లో కనిపిస్తుంది. + +--- + +## 🚀సవాలు + +ఈ పాఠ్యాంశంలో అనేక ఆసక్తికరమైన డేటాసెట్లు ఉన్నాయి. `data` ఫోల్డర్లలో వెతకండి మరియు ఏవైనా బైనరీ లేదా బహుళ వర్గీకరణకు అనుకూలమైన డేటాసెట్లు ఉన్నాయా చూడండి? మీరు ఆ డేటాసెట్ నుండి ఏ ప్రశ్నలు అడగాలనుకుంటారు? + +## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +SMOTE యొక్క API ను అన్వేషించండి. ఇది ఏ ఉపయోగాల కోసం ఉత్తమంగా ఉపయోగించబడుతుంది? ఇది ఏ సమస్యలను పరిష్కరిస్తుంది? + +## అసైన్‌మెంట్ + +[వర్గీకరణ పద్ధతులను అన్వేషించండి](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారులు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/4-Classification/1-Introduction/assignment.md b/translations/te/4-Classification/1-Introduction/assignment.md new file mode 100644 index 000000000..484bbf72e --- /dev/null +++ b/translations/te/4-Classification/1-Introduction/assignment.md @@ -0,0 +1,27 @@ + +# వర్గీకరణ పద్ధతులను అన్వేషించండి + +## సూచనలు + +[Scikit-learn డాక్యుమెంటేషన్](https://scikit-learn.org/stable/supervised_learning.html)లో మీరు డేటాను వర్గీకరించడానికి అనేక విధానాల జాబితాను కనుగొంటారు. ఈ డాక్యుమెంట్లలో ఒక చిన్న స్కావెంజర్ హంట్ చేయండి: మీ లక్ష్యం వర్గీకరణ పద్ధతులను చూడటం మరియు ఈ పాఠ్యాంశంలో ఉన్న ఒక డేటాసెట్, దానిపై మీరు అడగగల ప్రశ్న, మరియు వర్గీకరణ సాంకేతికతను సరిపోల్చడం. ఒక స్ప్రెడ్షీట్ లేదా .doc ఫైల్‌లో ఒక పట్టికను సృష్టించి, ఆ డేటాసెట్ వర్గీకరణ అల్గోరిథంతో ఎలా పనిచేస్తుందో వివరించండి. + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైనది | సరిపడినది | మెరుగుదల అవసరం | +| -------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| | 5 అల్గోరిథమ్స్‌ను వర్గీకరణ సాంకేతికతతో పాటు సమీక్షిస్తూ ఒక డాక్యుమెంట్ సమర్పించబడింది. సమీక్ష బాగా వివరించబడింది మరియు విస్తృతంగా ఉంది. | 3 అల్గోరిథమ్స్‌ను వర్గీకరణ సాంకేతికతతో పాటు సమీక్షిస్తూ ఒక డాక్యుమెంట్ సమర్పించబడింది. సమీక్ష బాగా వివరించబడింది మరియు విస్తృతంగా ఉంది. | 3 కంటే తక్కువ అల్గోరిథమ్స్‌ను వర్గీకరణ సాంకేతికతతో పాటు సమీక్షిస్తూ ఒక డాక్యుమెంట్ సమర్పించబడింది మరియు సమీక్ష బాగా వివరించబడలేదు లేదా విస్తృతంగా లేదు. | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారులు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/4-Classification/1-Introduction/notebook.ipynb b/translations/te/4-Classification/1-Introduction/notebook.ipynb new file mode 100644 index 000000000..d04c79d90 --- /dev/null +++ b/translations/te/4-Classification/1-Introduction/notebook.ipynb @@ -0,0 +1,41 @@ +{ + "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": "d544ef384b7ba73757d830a72372a7f2", + "translation_date": "2025-12-19T17:02:26+00:00", + "source_file": "4-Classification/1-Introduction/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# రుచికరమైన ఆసియన్లు మరియు భారతీయ వంటకాలు\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/4-Classification/1-Introduction/solution/Julia/README.md b/translations/te/4-Classification/1-Introduction/solution/Julia/README.md new file mode 100644 index 000000000..33d31fa96 --- /dev/null +++ b/translations/te/4-Classification/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/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb b/translations/te/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb new file mode 100644 index 000000000..28d006416 --- /dev/null +++ b/translations/te/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb @@ -0,0 +1,732 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_10-R.ipynb", + "provenance": [], + "collapsed_sections": [] + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "2621e24705e8100893c9bf84e0fc8aef", + "translation_date": "2025-12-19T17:05:54+00:00", + "source_file": "4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb", + "language_code": "te" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# వర్గీకరణ మోడల్ నిర్మించండి: రుచికరమైన ఆసియన్లు మరియు భారతీయ వంటకాలు\n" + ], + "metadata": { + "id": "ItETB4tSFprR" + } + }, + { + "cell_type": "markdown", + "source": [ + "## వర్గీకరణకు పరిచయం: మీ డేటాను శుభ్రపరచండి, సిద్ధం చేయండి, మరియు దృశ్యీకరించండి\n", + "\n", + "ఈ నాలుగు పాఠాలలో, మీరు క్లాసిక్ మెషీన్ లెర్నింగ్ యొక్క ఒక ప్రాథమిక దృష్టిని అన్వేషించబోతున్నారు - *వర్గీకరణ*. ఆసియా మరియు భారతదేశంలోని అన్ని అద్భుతమైన వంటకాల గురించి ఒక డేటాసెట్‌తో వివిధ వర్గీకరణ అల్గోరిథమ్స్ ఉపయోగించడం ద్వారా మనం నడవబోతున్నాము. మీరు ఆకలిగా ఉన్నారని ఆశిస్తున్నాము!\n", + "\n", + "

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

ఈ పాఠాలలో పాన్-ఆసియన్ వంటకాలను జరుపుకోండి! చిత్రం జెన్ లూపర్ ద్వారా
\n", + "\n", + "\n", + "\n", + "\n", + "వర్గీకరణ అనేది [సూపర్వైజ్డ్ లెర్నింగ్](https://wikipedia.org/wiki/Supervised_learning) యొక్క ఒక రూపం, ఇది రిగ్రెషన్ సాంకేతికతలతో చాలా సామాన్యమైనది. వర్గీకరణలో, మీరు ఒక మోడల్‌ను శిక్షణ ఇస్తారు ఏ `వర్గం`కి ఒక అంశం చెందుతుందో అంచనా వేయడానికి. మెషీన్ లెర్నింగ్ అనేది డేటాసెట్లను ఉపయోగించి విలువలు లేదా పేర్లను అంచనా వేయడమే అయితే, వర్గీకరణ సాధారణంగా రెండు గుంపులుగా విభజించబడుతుంది: *బైనరీ వర్గీకరణ* మరియు *బహుళ వర్గీకరణ*.\n", + "\n", + "గమనించండి:\n", + "\n", + "- **లీనియర్ రిగ్రెషన్** మీరు వేరియబుల్స్ మధ్య సంబంధాలను అంచనా వేయడంలో సహాయపడింది మరియు కొత్త డేటాపాయింట్ ఆ రేఖకు సంబంధించి ఎక్కడ పడుతుందో ఖచ్చితంగా అంచనా వేయగలిగింది. ఉదాహరణకు, *సెప్టెంబర్ మరియు డిసెంబర్‌లో ఒక గుమ్మడికాయ ధర ఎంత ఉంటుందో* అంచనా వేయగలిగారు.\n", + "\n", + "- **లాజిస్టిక్ రిగ్రెషన్** మీరు \"బైనరీ వర్గాలు\" కనుగొనడంలో సహాయపడింది: ఈ ధర వద్ద, *ఈ గుమ్మడికాయ నారింజ రంగులో ఉందా లేదా కాదు*?\n", + "\n", + "వర్గీకరణ వివిధ అల్గోరిథమ్స్ ఉపయోగించి డేటాపాయింట్ యొక్క లేబుల్ లేదా వర్గాన్ని నిర్ణయించడానికి ఇతర మార్గాలను కనుగొంటుంది. ఈ వంటకాల డేటాతో పని చేసి, ఒక పదార్థాల సమూహాన్ని పరిశీలించి, దాని వంటక మూలాన్ని నిర్ణయించగలమా అని చూద్దాం.\n", + "\n", + "### [**పాఠం ముందు క్విజ్**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/19/)\n", + "\n", + "### **పరిచయం**\n", + "\n", + "వర్గీకరణ మెషీన్ లెర్నింగ్ పరిశోధకుడు మరియు డేటా శాస్త్రవేత్త యొక్క ప్రాథమిక కార్యకలాపాలలో ఒకటి. ఒక బైనరీ విలువ యొక్క ప్రాథమిక వర్గీకరణ (\"ఈ ఇమెయిల్ స్పామ్ కాదా?\") నుండి, కంప్యూటర్ విజన్ ఉపయోగించి సంక్లిష్ట చిత్రం వర్గీకరణ మరియు విభజన వరకు, డేటాను వర్గాలుగా వర్గీకరించి దానిపై ప్రశ్నలు అడగడం ఎప్పుడూ ఉపయోగకరం.\n", + "\n", + "ప్రక్రియను మరింత శాస్త్రీయంగా చెప్పాలంటే, మీ వర్గీకరణ పద్ధతి ఒక అంచనా మోడల్‌ను సృష్టిస్తుంది, ఇది ఇన్‌పుట్ వేరియబుల్స్ మరియు అవుట్‌పుట్ వేరియబుల్స్ మధ్య సంబంధాన్ని మ్యాప్ చేయడానికి సహాయపడుతుంది.\n", + "\n", + "

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

వర్గీకరణ అల్గోరిథమ్స్ నిర్వహించాల్సిన బైనరీ మరియు బహుళ వర్గ సమస్యలు. ఇన్ఫోగ్రాఫిక్ జెన్ లూపర్ ద్వారా
\n", + "\n", + "\n", + "\n", + "మా డేటాను శుభ్రపరచడం, దృశ్యీకరించడం మరియు మా ML పనుల కోసం సిద్ధం చేయడం ప్రారంభించే ముందు, మెషీన్ లెర్నింగ్ డేటాను వర్గీకరించడానికి ఉపయోగించగల వివిధ మార్గాల గురించి కొంత తెలుసుకుందాం.\n", + "\n", + "[సంఖ్యాశాస్త్రం](https://wikipedia.org/wiki/Statistical_classification) నుండి ఉద్భవించిన, క్లాసిక్ మెషీన్ లెర్నింగ్ ఉపయోగించి వర్గీకరణ `స్మోకర్`, `బరువు`, మరియు `వయస్సు` వంటి లక్షణాలను ఉపయోగించి *X వ్యాధి అభివృద్ధి చెందే అవకాశాన్ని* నిర్ణయిస్తుంది. మీరు ముందుగా చేసిన రిగ్రెషన్ వ్యాయామాలకు సమానమైన సూపర్వైజ్డ్ లెర్నింగ్ సాంకేతికతగా, మీ డేటాకు లేబుల్స్ ఉంటాయి మరియు ML అల్గోరిథమ్స్ ఆ లేబుల్స్‌ను ఉపయోగించి డేటాసెట్ యొక్క వర్గాలు (లేదా 'లక్షణాలు')ను వర్గీకరించి, వాటిని ఒక గుంపు లేదా ఫలితానికి కేటాయిస్తాయి.\n", + "\n", + "✅ వంటకాల గురించి ఒక డేటాసెట్‌ను ఊహించండి. బహుళ వర్గ మోడల్ ఏమి సమాధానం చెప్పగలదు? బైనరీ మోడల్ ఏమి సమాధానం చెప్పగలదు? మీరు ఒక వంటకం మెంతులు ఉపయోగించే అవకాశం ఉందా అని నిర్ణయించాలనుకుంటే? మీరు ఒక గ్రోసరీ బ్యాగ్‌లో స్టార్ అనీస్, ఆర్టిచోక్స్, కాలీఫ్లవర్, మరియు హోర్సరాడిష్ ఉన్నప్పుడు, మీరు ఒక సాధారణ భారతీయ వంటకం తయారు చేయగలరా అని చూడాలనుకుంటే?\n", + "\n", + "### **హలో 'వర్గీకర్త'**\n", + "\n", + "ఈ వంటకాల డేటాసెట్ నుండి అడగదలచిన ప్రశ్న వాస్తవానికి ఒక **బహుళ వర్గ ప్రశ్న**నే, ఎందుకంటే మనకు అనేక జాతీయ వంటకాలు ఉన్నాయి. పదార్థాల ఒక బ్యాచ్ ఇచ్చినప్పుడు, ఈ అనేక వర్గాలలో ఏది డేటాకు సరిపోతుంది?\n", + "\n", + "Tidymodels వివిధ సమస్యలను పరిష్కరించడానికి ఉపయోగించగల అనేక అల్గోరిథమ్స్‌ను అందిస్తుంది. తదుపరి రెండు పాఠాలలో, మీరు ఈ అల్గోరిథమ్స్ గురించి తెలుసుకుంటారు.\n", + "\n", + "#### **ముందస్తు అవసరం**\n", + "\n", + "ఈ పాఠం కోసం, మన డేటాను శుభ్రపరచడానికి, సిద్ధం చేయడానికి మరియు దృశ్యీకరించడానికి క్రింది ప్యాకేజీలను అవసరం:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) అనేది డేటా సైన్స్‌ను వేగవంతం, సులభం మరియు మరింత సరదాగా మార్చడానికి రూపొందించిన [R ప్యాకేజీల సేకరణ](https://www.tidyverse.org/packages)!\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ఫ్రేమ్‌వర్క్ అనేది మోడలింగ్ మరియు మెషీన్ లెర్నింగ్ కోసం [ప్యాకేజీల సేకరణ](https://www.tidymodels.org/packages/)!\n", + "\n", + "- `DataExplorer`: [DataExplorer ప్యాకేజీ](https://cran.r-project.org/web/packages/DataExplorer/vignettes/dataexplorer-intro.html) EDA ప్రక్రియ మరియు నివేదిక సృష్టిని సులభతరం చేయడానికి ఉద్దేశించబడింది.\n", + "\n", + "- `themis`: [themis ప్యాకేజీ](https://themis.tidymodels.org/) అసమతులిత డేటాతో వ్యవహరించడానికి అదనపు రెసిపీలు అందిస్తుంది.\n", + "\n", + "మీరు వాటిని ఇన్‌స్టాల్ చేసుకోవచ్చు:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"DataExplorer\", \"here\"))`\n", + "\n", + "వేరే విధంగా, క్రింది స్క్రిప్ట్ మీరు ఈ మాడ్యూల్ పూర్తి చేయడానికి అవసరమైన ప్యాకేజీలు ఉన్నాయా లేదా అని తనిఖీ చేసి, లేనప్పుడు వాటిని ఇన్‌స్టాల్ చేస్తుంది.\n" + ], + "metadata": { + "id": "ri5bQxZ-Fz_0" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\r\n", + "\r\n", + "pacman::p_load(tidyverse, tidymodels, DataExplorer, themis, here)" + ], + "outputs": [], + "metadata": { + "id": "KIPxa4elGAPI" + } + }, + { + "cell_type": "markdown", + "source": [ + "మేము తరువాత ఈ అద్భుతమైన ప్యాకేజీలను లోడ్ చేసి మా ప్రస్తుత R సెషన్‌లో అందుబాటులో ఉంచుతాము. (ఇది కేవలం ఉదాహరణ కోసం, `pacman::p_load()` ఇప్పటికే మీ కోసం అది చేసింది)\n" + ], + "metadata": { + "id": "YkKAxOJvGD4C" + } + }, + { + "cell_type": "markdown", + "source": [ + "## వ్యాయామం - మీ డేటాను శుభ్రం చేసి సమతుల్యం చేయండి\n", + "\n", + "ఈ ప్రాజెక్ట్ ప్రారంభించే ముందు మొదటి పని, మెరుగైన ఫలితాలు పొందడానికి మీ డేటాను శుభ్రం చేసి **సమతుల్యం** చేయడం\n", + "\n", + "డేటాను పరిచయం చేద్దాం!🕵️\n" + ], + "metadata": { + "id": "PFkQDlk0GN5O" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Import data\r\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/4-Classification/data/cuisines.csv\")\r\n", + "\r\n", + "# View the first 5 rows\r\n", + "df %>% \r\n", + " slice_head(n = 5)\r\n" + ], + "outputs": [], + "metadata": { + "id": "Qccw7okxGT0S" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఆసక్తికరంగా ఉంది! దృష్టిలోకి తీసుకుంటే, మొదటి కాలమ్ ఒక రకమైన `id` కాలమ్ అని అనిపిస్తోంది. డేటా గురించి మరింత సమాచారం పొందుకుందాం.\n" + ], + "metadata": { + "id": "XrWnlgSrGVmR" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Basic information about the data\r\n", + "df %>%\r\n", + " introduce()\r\n", + "\r\n", + "# Visualize basic information above\r\n", + "df %>% \r\n", + " plot_intro(ggtheme = theme_light())" + ], + "outputs": [], + "metadata": { + "id": "4UcGmxRxGieA" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఫలితంలోనుంచి, మనకు తక్షణమే కనిపిస్తుంది మన దగ్గర `2448` వరుసలు మరియు `385` కాలమ్స్ మరియు `0` మిస్సింగ్ విలువలు ఉన్నాయి. మన దగ్గర 1 డిస్క్రీట్ కాలమ్ కూడా ఉంది, *cuisine*.\n", + "\n", + "## వ్యాయామం - వంటకాల గురించి తెలుసుకోవడం\n", + "\n", + "ఇప్పుడు పని మరింత ఆసక్తికరంగా మారుతుంది. వంటకాల ప్రకారం డేటా పంపిణీని కనుగొనుకుందాం.\n" + ], + "metadata": { + "id": "AaPubl__GmH5" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Count observations per cuisine\r\n", + "df %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(n)\r\n", + "\r\n", + "# Plot the distribution\r\n", + "theme_set(theme_light())\r\n", + "df %>% \r\n", + " count(cuisine) %>% \r\n", + " ggplot(mapping = aes(x = n, y = reorder(cuisine, -n))) +\r\n", + " geom_col(fill = \"midnightblue\", alpha = 0.7) +\r\n", + " ylab(\"cuisine\")" + ], + "outputs": [], + "metadata": { + "id": "FRsBVy5eGrrv" + } + }, + { + "cell_type": "markdown", + "source": [ + "రుచుల సంఖ్య పరిమితమే, కానీ డేటా పంపిణీ అసమానంగా ఉంటుంది. మీరు దాన్ని సరిచేయవచ్చు! ఆ పని చేయడానికి ముందు, మరింత అన్వేషించండి.\n", + "\n", + "తర్వాత, ప్రతి రుచిని దాని వ్యక్తిగత టిబుల్‌లో కేటాయించి, ప్రతి రుచికి ఎంత డేటా (పంక్తులు, కాలమ్స్) అందుబాటులో ఉందో తెలుసుకుందాం.\n", + "\n", + "> ఒక [టిబుల్](https://tibble.tidyverse.org/) అనేది ఆధునిక డేటా ఫ్రేమ్.\n", + "\n", + "

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

కళాకృతి @allison_horst ద్వారా
\n" + ], + "metadata": { + "id": "vVvyDb1kG2in" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Create individual tibble for the cuisines\r\n", + "thai_df <- df %>% \r\n", + " filter(cuisine == \"thai\")\r\n", + "japanese_df <- df %>% \r\n", + " filter(cuisine == \"japanese\")\r\n", + "chinese_df <- df %>% \r\n", + " filter(cuisine == \"chinese\")\r\n", + "indian_df <- df %>% \r\n", + " filter(cuisine == \"indian\")\r\n", + "korean_df <- df %>% \r\n", + " filter(cuisine == \"korean\")\r\n", + "\r\n", + "\r\n", + "# Find out how much data is available per cuisine\r\n", + "cat(\" thai df:\", dim(thai_df), \"\\n\",\r\n", + " \"japanese df:\", dim(japanese_df), \"\\n\",\r\n", + " \"chinese_df:\", dim(chinese_df), \"\\n\",\r\n", + " \"indian_df:\", dim(indian_df), \"\\n\",\r\n", + " \"korean_df:\", dim(korean_df))" + ], + "outputs": [], + "metadata": { + "id": "0TvXUxD3G8Bk" + } + }, + { + "cell_type": "markdown", + "source": [ + "Perfect!😋\n", + "\n", + "## **వ్యాయామం - dplyr ఉపయోగించి వంటకాల వారీగా టాప్ పదార్థాలను కనుగొనడం**\n", + "\n", + "ఇప్పుడు మీరు డేటాలో మరింత లోతుగా వెళ్ళి వంటకాల వారీగా సాధారణ పదార్థాలు ఏమిటి తెలుసుకోవచ్చు. వంటకాల మధ్య గందరగోళాన్ని సృష్టించే పునరావృత డేటాను మీరు శుభ్రం చేయాలి, కాబట్టి ఈ సమస్య గురించి తెలుసుకుందాం.\n", + "\n", + "R లో ఒక పదార్థ డేటాఫ్రేమ్‌ను తిరిగి ఇచ్చే `create_ingredient()` అనే ఫంక్షన్‌ను సృష్టించండి. ఈ ఫంక్షన్ ఒక ఉపయోగకరంలేని కాలమ్‌ను తొలగించడం ప్రారంభించి, పదార్థాలను వారి లెక్క ఆధారంగా సర్దుబాటు చేస్తుంది.\n", + "\n", + "R లో ఫంక్షన్ యొక్క ప్రాథమిక నిర్మాణం:\n", + "\n", + "`myFunction <- function(arglist){`\n", + "\n", + "**`...`**\n", + "\n", + "**`return`**`(value)`\n", + "\n", + "`}`\n", + "\n", + "R ఫంక్షన్లకు సంబంధించిన ఒక శుభ్రమైన పరిచయాన్ని మీరు [ఇక్కడ](https://skirmer.github.io/presentations/functions_with_r.html#1) చూడవచ్చు.\n", + "\n", + "మనం వెంటనే ప్రారంభిద్దాం! మనం గత పాఠాలలో నేర్చుకున్న [dplyr క్రియాపదాలు](https://dplyr.tidyverse.org/) ఉపయోగించబోతున్నాము. సారాంశంగా:\n", + "\n", + "- `dplyr::select()`: మీరు ఏ **కాలమ్స్** ఉంచాలో లేదా తీసివేయాలో ఎంచుకోవడంలో సహాయపడుతుంది.\n", + "\n", + "- `dplyr::pivot_longer()`: డేటాను \"పొడిగించడానికి\" సహాయపడుతుంది, పంక్తుల సంఖ్య పెరిగి కాలమ్స్ సంఖ్య తగ్గుతుంది.\n", + "\n", + "- `dplyr::group_by()` మరియు `dplyr::summarise()`: వేర్వేరు సమూహాల కోసం సారాంశ గణాంకాలను కనుగొనడంలో మరియు వాటిని మంచి పట్టికలో ఉంచడంలో సహాయపడతాయి.\n", + "\n", + "- `dplyr::filter()`: మీ షరతులకు అనుగుణంగా ఉన్న పంక్తులనే కలిగిన డేటా ఉపసమితిని సృష్టిస్తుంది.\n", + "\n", + "- `dplyr::mutate()`: కాలమ్స్ సృష్టించడంలో లేదా మార్చడంలో సహాయపడుతుంది.\n", + "\n", + "Allison Horst రాసిన ఈ [*కళ*-తో నిండిన learnr ట్యుటోరియల్](https://allisonhorst.shinyapps.io/dplyr-learnr/#section-welcome) ను చూడండి, ఇది dplyr లో కొన్ని ఉపయోగకరమైన డేటా వ్రాంగ్లింగ్ ఫంక్షన్లను పరిచయం చేస్తుంది *(Tidyverse భాగం)*\n" + ], + "metadata": { + "id": "K3RF5bSCHC76" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Creates a functions that returns the top ingredients by class\r\n", + "\r\n", + "create_ingredient <- function(df){\r\n", + " \r\n", + " # Drop the id column which is the first colum\r\n", + " ingredient_df = df %>% select(-1) %>% \r\n", + " # Transpose data to a long format\r\n", + " pivot_longer(!cuisine, names_to = \"ingredients\", values_to = \"count\") %>% \r\n", + " # Find the top most ingredients for a particular cuisine\r\n", + " group_by(ingredients) %>% \r\n", + " summarise(n_instances = sum(count)) %>% \r\n", + " filter(n_instances != 0) %>% \r\n", + " # Arrange by descending order\r\n", + " arrange(desc(n_instances)) %>% \r\n", + " mutate(ingredients = factor(ingredients) %>% fct_inorder())\r\n", + " \r\n", + " \r\n", + " return(ingredient_df)\r\n", + "} # End of function" + ], + "outputs": [], + "metadata": { + "id": "uB_0JR82HTPa" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఇప్పుడు మనం ఆ ఫంక్షన్‌ను ఉపయోగించి వంటకాల వారీగా టాప్ టెన్ అత్యంత ప్రాచుర్యం పొందిన పదార్థాల ఆలోచన పొందవచ్చు. దీన్ని `thai_df` తో పరీక్షిద్దాం.\n" + ], + "metadata": { + "id": "h9794WF8HWmc" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Call create_ingredient and display popular ingredients\r\n", + "thai_ingredient_df <- create_ingredient(df = thai_df)\r\n", + "\r\n", + "thai_ingredient_df %>% \r\n", + " slice_head(n = 10)" + ], + "outputs": [], + "metadata": { + "id": "agQ-1HrcHaEA" + } + }, + { + "cell_type": "markdown", + "source": [ + "మునుపటి విభాగంలో, మేము `geom_col()` ఉపయోగించాము, ఇప్పుడు మీరు `geom_bar` ను కూడా ఎలా ఉపయోగించవచ్చో చూద్దాం, బార్ చార్ట్స్ సృష్టించడానికి. మరింత చదవడానికి `?geom_bar` ఉపయోగించండి.\n" + ], + "metadata": { + "id": "kHu9ffGjHdcX" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make a bar chart for popular thai cuisines\r\n", + "thai_ingredient_df %>% \r\n", + " slice_head(n = 10) %>% \r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"steelblue\") +\r\n", + " xlab(\"\") + ylab(\"\")" + ], + "outputs": [], + "metadata": { + "id": "fb3Bx_3DHj6e" + } + }, + { + "cell_type": "markdown", + "source": [ + "జపనీస్ డేటా కోసం కూడా అదే చేయండి\n" + ], + "metadata": { + "id": "RHP_xgdkHnvM" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Get popular ingredients for Japanese cuisines and make bar chart\r\n", + "create_ingredient(df = japanese_df) %>% \r\n", + " slice_head(n = 10) %>%\r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"darkorange\", alpha = 0.8) +\r\n", + " xlab(\"\") + ylab(\"\")\r\n" + ], + "outputs": [], + "metadata": { + "id": "019v8F0XHrRU" + } + }, + { + "cell_type": "markdown", + "source": [ + "చైనీస్ వంటకాలు ఏమిటి?\n" + ], + "metadata": { + "id": "iIGM7vO8Hu3v" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Get popular ingredients for Chinese cuisines and make bar chart\r\n", + "create_ingredient(df = chinese_df) %>% \r\n", + " slice_head(n = 10) %>%\r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"cyan4\", alpha = 0.8) +\r\n", + " xlab(\"\") + ylab(\"\")" + ], + "outputs": [], + "metadata": { + "id": "lHd9_gd2HyzU" + } + }, + { + "cell_type": "markdown", + "source": [ + "మనము భారతీయ వంటకాలను చూద్దాం 🌶️.\n" + ], + "metadata": { + "id": "ir8qyQbNH1c7" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Get popular ingredients for Indian cuisines and make bar chart\r\n", + "create_ingredient(df = indian_df) %>% \r\n", + " slice_head(n = 10) %>%\r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"#041E42FF\", alpha = 0.8) +\r\n", + " xlab(\"\") + ylab(\"\")" + ], + "outputs": [], + "metadata": { + "id": "ApukQtKjH5FO" + } + }, + { + "cell_type": "markdown", + "source": [ + "చివరికి, కొరియన్ పదార్థాలను చిత్రీకరించండి.\n" + ], + "metadata": { + "id": "qv30cwY1H-FM" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Get popular ingredients for Korean cuisines and make bar chart\r\n", + "create_ingredient(df = korean_df) %>% \r\n", + " slice_head(n = 10) %>%\r\n", + " ggplot(aes(x = n_instances, y = ingredients)) +\r\n", + " geom_bar(stat = \"identity\", width = 0.5, fill = \"#852419FF\", alpha = 0.8) +\r\n", + " xlab(\"\") + ylab(\"\")" + ], + "outputs": [], + "metadata": { + "id": "lumgk9cHIBie" + } + }, + { + "cell_type": "markdown", + "source": [ + "డేటా విజువలైజేషన్ల నుండి, ఇప్పుడు మనం `dplyr::select()` ఉపయోగించి వేర్వేరు వంటకాల మధ్య గందరగోళం సృష్టించే అత్యంత సాధారణ పదార్థాలను తొలగించవచ్చు.\n", + "\n", + "ప్రతి ఒక్కరూ బియ్యం, వెల్లుల్లి మరియు అల్లం ప్రేమిస్తారు!\n" + ], + "metadata": { + "id": "iO4veMXuIEta" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Drop id column, rice, garlic and ginger from our original data set\r\n", + "df_select <- df %>% \r\n", + " select(-c(1, rice, garlic, ginger))\r\n", + "\r\n", + "# Display new data set\r\n", + "df_select %>% \r\n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "iHJPiG6rIUcK" + } + }, + { + "cell_type": "markdown", + "source": [ + "## రెసిపీలను ఉపయోగించి డేటాను ప్రీప్రాసెస్ చేయడం 👩‍🍳👨‍🍳 - అసమతుల్య డేటాతో వ్యవహరించడం ⚖️\n", + "\n", + "

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

కళాకృతి @allison_horst
\n", + "\n", + "ఈ పాఠం వంటకాల గురించి కావడంతో, మనం `recipes` ను సందర్భంలో పెట్టాలి.\n", + "\n", + "Tidymodels మరో చక్కటి ప్యాకేజీని అందిస్తుంది: `recipes` - డేటాను ప్రీప్రాసెస్ చేయడానికి ఒక ప్యాకేజీ.\n" + ], + "metadata": { + "id": "kkFd-JxdIaL6" + } + }, + { + "cell_type": "markdown", + "source": [ + "మళ్లీ మన వంటకాల పంపిణీని చూద్దాం.\n" + ], + "metadata": { + "id": "6l2ubtTPJAhY" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Distribution of cuisines\r\n", + "old_label_count <- df_select %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(desc(n))\r\n", + "\r\n", + "old_label_count" + ], + "outputs": [], + "metadata": { + "id": "1e-E9cb7JDVi" + } + }, + { + "cell_type": "markdown", + "source": [ + "\n", + "మీరు చూడగలిగినట్లుగా, వంటకాల సంఖ్యలో చాలా అసమానమైన పంపిణీ ఉంది. కొరియన్ వంటకాలు థాయ్ వంటకాల కంటే సుమారు 3 రెట్లు ఎక్కువ ఉన్నాయి. అసమతుల్య డేటా తరచుగా మోడల్ పనితీరుపై ప్రతికూల ప్రభావాలు చూపుతుంది. ఒక ద్విభాగ వర్గీకరణను ఆలోచించండి. మీ డేటా ఎక్కువ భాగం ఒక వర్గం అయితే, ఒక ML మోడల్ ఆ వర్గాన్ని ఎక్కువగా అంచనా వేయడానికి ప్రయత్నిస్తుంది, ఎందుకంటే ఆ వర్గానికి ఎక్కువ డేటా ఉంటుంది. డేటాను సమతుల్యం చేయడం అనేది ఏదైనా వక్రీకృత డేటాను తీసుకుని ఈ అసమతుల్యతను తొలగించడంలో సహాయపడుతుంది. చాలా మోడల్స్ గమనికల సంఖ్య సమానంగా ఉన్నప్పుడు ఉత్తమంగా పనిచేస్తాయి, అందువల్ల అసమతుల్య డేటాతో పోరాడుతాయి.\n", + "\n", + "అసమతుల్య డేటా సెట్‌లను నిర్వహించడానికి ప్రధానంగా రెండు మార్గాలు ఉన్నాయి:\n", + "\n", + "- మైనారిటీ వర్గానికి గమనికలను జోడించడం: `ఓవర్-సాంప్లింగ్` ఉదా: SMOTE అల్గోరిథం ఉపయోగించడం\n", + "\n", + "- మెజారిటీ వర్గం నుండి గమనికలను తొలగించడం: `అండర్-సాంప్లింగ్`\n", + "\n", + "ఇప్పుడు `recipe` ఉపయోగించి అసమతుల్య డేటా సెట్‌లను ఎలా నిర్వహించాలో చూపిద్దాం. ఒక recipe అనేది డేటా విశ్లేషణకు సిద్ధం చేయడానికి డేటా సెట్‌పై ఏ దశలను వర్తించాలో వివరించే ఒక బ్లూప్రింట్‌గా భావించవచ్చు.\n" + ], + "metadata": { + "id": "soAw6826JKx9" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load themis package for dealing with imbalanced data\r\n", + "library(themis)\r\n", + "\r\n", + "# Create a recipe for preprocessing data\r\n", + "cuisines_recipe <- recipe(cuisine ~ ., data = df_select) %>% \r\n", + " step_smote(cuisine)\r\n", + "\r\n", + "cuisines_recipe" + ], + "outputs": [], + "metadata": { + "id": "HS41brUIJVJy" + } + }, + { + "cell_type": "markdown", + "source": [ + "మనం మా ప్రీప్రాసెసింగ్ దశలను విడదీయండి.\n", + "\n", + "- ఫార్ములాతో `recipe()` కాల్ వేరియబుల్స్ యొక్క *పాత్రలను* `df_select` డేటాను సూచనగా ఉపయోగించి రిసిపీకి చెబుతుంది. ఉదాహరణకు `cuisine` కాలమ్‌కు `outcome` పాత్ర కేటాయించబడింది, మిగతా కాలమ్స్‌కు `predictor` పాత్ర కేటాయించబడింది.\n", + "\n", + "- [`step_smote(cuisine)`](https://themis.tidymodels.org/reference/step_smote.html) ఒక రిసిపీ దశ యొక్క *వివరణ* సృష్టిస్తుంది, ఇది ఈ కేసుల సమీప పొరుగువారిని ఉపయోగించి మైనారిటీ తరగతి యొక్క కొత్త ఉదాహరణలను సింథటిక్‌గా ఉత్పత్తి చేస్తుంది.\n", + "\n", + "ఇప్పుడు, మనం ప్రీప్రాసెస్డ్ డేటాను చూడాలనుకుంటే, మనం [**`prep()`**](https://recipes.tidymodels.org/reference/prep.html) మరియు [**`bake()`**](https://recipes.tidymodels.org/reference/bake.html) మా రిసిపీని ఉపయోగించాలి.\n", + "\n", + "`prep()`: శిక్షణ సెట్ నుండి అవసరమైన పారామితులను అంచనా వేస్తుంది, ఇవి తర్వాత ఇతర డేటా సెట్‌లకు వర్తించవచ్చు.\n", + "\n", + "`bake()`: ప్రిప్ చేసిన రిసిపీని తీసుకుని ఆపరేషన్లను ఏదైనా డేటా సెట్‌కు వర్తింపజేస్తుంది.\n" + ], + "metadata": { + "id": "Yb-7t7XcJaC8" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Prep and bake the recipe\r\n", + "preprocessed_df <- cuisines_recipe %>% \r\n", + " prep() %>% \r\n", + " bake(new_data = NULL) %>% \r\n", + " relocate(cuisine)\r\n", + "\r\n", + "# Display data\r\n", + "preprocessed_df %>% \r\n", + " slice_head(n = 5)\r\n", + "\r\n", + "# Quick summary stats\r\n", + "preprocessed_df %>% \r\n", + " introduce()" + ], + "outputs": [], + "metadata": { + "id": "9QhSgdpxJl44" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఇప్పుడు మన వంటకాల పంపిణీని పరిశీలించి, అవి అసమతుల్య డేటాతో పోల్చుకుందాం.\n" + ], + "metadata": { + "id": "dmidELh_LdV7" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Distribution of cuisines\r\n", + "new_label_count <- preprocessed_df %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(desc(n))\r\n", + "\r\n", + "list(new_label_count = new_label_count,\r\n", + " old_label_count = old_label_count)" + ], + "outputs": [], + "metadata": { + "id": "aSh23klBLwDz" + } + }, + { + "cell_type": "markdown", + "source": [ + "యమ్! డేటా బాగుంది, శుభ్రంగా ఉంది, సమతుల్యం ఉంది, మరియు చాలా రుచికరంగా ఉంది 😋!\n", + "\n", + "> సాధారణంగా, ఒక రెసిపీ సాధారణంగా మోడలింగ్ కోసం ప్రీప్రాసెసర్‌గా ఉపయోగించబడుతుంది, ఇది మోడలింగ్ కోసం సిద్ధం చేయడానికి డేటా సెట్‌పై ఏ దశలను వర్తించాలో నిర్వచిస్తుంది. ఆ సందర్భంలో, మానవీయంగా రెసిపీ అంచనా వేయడం బదులు `workflow()` సాధారణంగా ఉపయోగించబడుతుంది (మనం మా గత పాఠాలలో ఇప్పటికే చూసినట్లుగా)\n", + ">\n", + "> అందువల్ల, మీరు సాధారణంగా tidymodels ఉపయోగించినప్పుడు రెసిపీలను **`prep()`** మరియు **`bake()`** చేయాల్సిన అవసరం లేదు, కానీ అవి మీ టూల్‌కిట్‌లో ఉండే సహాయక ఫంక్షన్లు, మా సందర్భంలో ఉన్నట్లుగా రెసిపీలు మీరు ఆశించినట్లుగా పనిచేస్తున్నాయా అని నిర్ధారించుకోవడానికి.\n", + ">\n", + "> మీరు **`bake()`** చేసినప్పుడు ప్రిప్ చేసిన రెసిపీతో **`new_data = NULL`** ఉంటే, మీరు రెసిపీ నిర్వచించినప్పుడు అందించిన డేటాను తిరిగి పొందుతారు, కానీ ప్రీప్రాసెసింగ్ దశల ద్వారా గడిచిన.\n", + "\n", + "ఇప్పుడు భవిష్యత్తు పాఠాలలో ఉపయోగించడానికి ఈ డేటా యొక్క కాపీని సేవ్ చేద్దాం:\n" + ], + "metadata": { + "id": "HEu80HZ8L7ae" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Save preprocessed data\r\n", + "write_csv(preprocessed_df, \"../../../data/cleaned_cuisines_R.csv\")" + ], + "outputs": [], + "metadata": { + "id": "cBmCbIgrMOI6" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఈ తాజా CSV ఇప్పుడు రూట్ డేటా ఫోల్డర్‌లో కనుగొనవచ్చు.\n", + "\n", + "**🚀సవాలు**\n", + "\n", + "ఈ పాఠ్యక్రమంలో అనేక ఆసక్తికరమైన డేటాసెట్‌లు ఉన్నాయి. `data` ఫోల్డర్లలో గూఢచర్య చేయండి మరియు ఏవైనా బైనరీ లేదా బహుళ-వర్గ వర్గీకరణకు అనుకూలమైన డేటాసెట్‌లు ఉన్నాయా అని చూడండి? ఈ డేటాసెట్ నుండి మీరు ఏ ప్రశ్నలు అడగగలరు?\n", + "\n", + "## [**పోస్ట్-లెక్చర్ క్విజ్**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/20/)\n", + "\n", + "## **సమీక్ష & స్వీయ అధ్యయనం**\n", + "\n", + "- [package themis](https://github.com/tidymodels/themis) ను పరిశీలించండి. అసమతుల్య డేటాను నిర్వహించడానికి మేము ఉపయోగించగల ఇతర సాంకేతికతలు ఏమిటి?\n", + "\n", + "- Tidy మోడల్స్ [సూచన వెబ్‌సైట్](https://www.tidymodels.org/start/).\n", + "\n", + "- H. Wickham మరియు G. Grolemund, [*R for Data Science: Visualize, Model, Transform, Tidy, and Import Data*](https://r4ds.had.co.nz/).\n", + "\n", + "#### ధన్యవాదాలు:\n", + "\n", + "[`Allison Horst`](https://twitter.com/allison_horst/) కు R ను మరింత ఆహ్లాదకరంగా మరియు ఆకర్షణీయంగా మార్చే అద్భుతమైన చిత్రణలను సృష్టించినందుకు. ఆమె [గ్యాలరీ](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM) లో మరిన్ని చిత్రణలను కనుగొనండి.\n", + "\n", + "[Cassie Breviu](https://www.twitter.com/cassieview) మరియు [Jen Looper](https://www.twitter.com/jenlooper) కు ఈ మాడ్యూల్ యొక్క అసలు Python సంస్కరణను సృష్టించినందుకు ♥️\n", + "\n", + "

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

Artwork by @allison_horst
\n" + ], + "metadata": { + "id": "WQs5621pMGwf" + } + }, + { + "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/4-Classification/1-Introduction/solution/notebook.ipynb b/translations/te/4-Classification/1-Introduction/solution/notebook.ipynb new file mode 100644 index 000000000..748b22afd --- /dev/null +++ b/translations/te/4-Classification/1-Introduction/solution/notebook.ipynb @@ -0,0 +1,677 @@ +{ + "cells": [ + { + "source": [ + "# రుచికరమైన ఆసియన్లు మరియు భారతీయ వంటకాలు \n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "SMOTEని సక్రియం చేసే Imblearnని ఇన్‌స్టాల్ చేయండి. ఇది క్లాసిఫికేషన్ నిర్వహిస్తున్నప్పుడు అసమతుల్య డేటాను నిర్వహించడంలో సహాయపడే Scikit-learn ప్యాకేజీ. (https://imbalanced-learn.org/stable/)\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: imblearn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imblearn) (0.8.0)\n", + "Requirement already satisfied: numpy>=1.13.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imbalanced-learn->imblearn) (1.19.2)\n", + "Requirement already satisfied: scipy>=0.19.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imbalanced-learn->imblearn) (1.4.1)\n", + "Requirement already satisfied: scikit-learn>=0.24 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imbalanced-learn->imblearn) (0.24.2)\n", + "Requirement already satisfied: joblib>=0.11 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from imbalanced-learn->imblearn) (0.16.0)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from scikit-learn>=0.24->imbalanced-learn->imblearn) (2.1.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib as mpl\n", + "import numpy as np\n", + "from imblearn.over_sampling import SMOTE" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('../../data/cuisines.csv')" + ] + }, + { + "source": [ + "ఈ డేటాసెట్‌లో ఇచ్చిన వంటకాల సమూహం నుండి వివిధ వంటకాలలో ఉన్న అన్ని రకాల పదార్థాలను సూచించే 385 కాలమ్స్ ఉన్నాయి.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 65 indian 0 0 0 0 0 \n", + "1 66 indian 1 0 0 0 0 \n", + "2 67 indian 0 0 0 0 0 \n", + "3 68 indian 0 0 0 0 0 \n", + "4 69 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 385 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
065indian00000000...0000000000
166indian10000000...0000000000
267indian00000000...0000000000
368indian00000000...0000000000
469indian00000000...0000000010
\n

5 rows × 385 columns

\n
" + }, + "metadata": {}, + "execution_count": 4 + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\nRangeIndex: 2448 entries, 0 to 2447\nColumns: 385 entries, Unnamed: 0 to zucchini\ndtypes: int64(384), object(1)\nmemory usage: 7.2+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "korean 799\n", + "indian 598\n", + "chinese 442\n", + "japanese 320\n", + "thai 289\n", + "Name: cuisine, dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ], + "source": [ + "df.cuisine.value_counts()" + ] + }, + { + "source": [ + "బార్ గ్రాఫ్‌లో వంటకాల్ని చూపించండి\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 7 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "df.cuisine.value_counts().plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "thai df: (289, 385)\njapanese df: (320, 385)\nchinese df: (442, 385)\nindian df: (598, 385)\nkorean df: (799, 385)\n" + ] + } + ], + "source": [ + "\n", + "thai_df = df[(df.cuisine == \"thai\")]\n", + "japanese_df = df[(df.cuisine == \"japanese\")]\n", + "chinese_df = df[(df.cuisine == \"chinese\")]\n", + "indian_df = df[(df.cuisine == \"indian\")]\n", + "korean_df = df[(df.cuisine == \"korean\")]\n", + "\n", + "print(f'thai df: {thai_df.shape}')\n", + "print(f'japanese df: {japanese_df.shape}')\n", + "print(f'chinese df: {chinese_df.shape}')\n", + "print(f'indian df: {indian_df.shape}')\n", + "print(f'korean df: {korean_df.shape}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## తరగతి వారీగా టాప్ పదార్థాలు ఏమిటి?\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def create_ingredient_df(df):\n", + " # transpose df, drop cuisine and unnamed rows, sum the row to get total for ingredient and add value header to new df\n", + " ingredient_df = df.T.drop(['cuisine','Unnamed: 0']).sum(axis=1).to_frame('value')\n", + " # drop ingredients that have a 0 sum\n", + " ingredient_df = ingredient_df[(ingredient_df.T != 0).any()]\n", + " # sort df\n", + " ingredient_df = ingredient_df.sort_values(by='value', ascending=False, inplace=False)\n", + " return ingredient_df\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 10 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "thai_ingredient_df = create_ingredient_df(thai_df)\r\n", + "thai_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 11 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "japanese_ingredient_df = create_ingredient_df(japanese_df)\r\n", + "japanese_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 12 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "chinese_ingredient_df = create_ingredient_df(chinese_df)\r\n", + "chinese_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 13 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "indian_ingredient_df = create_ingredient_df(indian_df)\r\n", + "indian_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 14 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "korean_ingredient_df = create_ingredient_df(korean_df)\r\n", + "korean_ingredient_df.head(10).plot.barh()" + ] + }, + { + "source": [ + "అత్యంత సాధారణమైన పదార్థాలను (అన్ని వంటకాలలో సాధారణమైనవి) తీసివేయండి\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 15 + } + ], + "source": [ + "feature_df= df.drop(['cuisine','Unnamed: 0','rice','garlic','ginger'], axis=1)\n", + "labels_df = df.cuisine #.unique()\n", + "feature_df.head()\n" + ] + }, + { + "source": [ + "SMOTE ఓవర్‌సాంప్లింగ్‌తో డేటాను అత్యధిక తరగతికి సమతుల్యం చేయండి. ఇక్కడ మరింత చదవండి: https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "oversample = SMOTE()\n", + "transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "new label count: korean 799\nchinese 799\njapanese 799\nindian 799\nthai 799\nName: cuisine, dtype: int64\nold label count: korean 799\nindian 598\nchinese 442\njapanese 320\nthai 289\nName: cuisine, dtype: int64\n" + ] + } + ], + "source": [ + "print(f'new label count: {transformed_label_df.value_counts()}')\r\n", + "print(f'old label count: {df.cuisine.value_counts()}')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 18 + } + ], + "source": [ + "transformed_feature_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " cuisine almond angelica anise anise_seed apple apple_brandy \\\n", + "0 indian 0 0 0 0 0 0 \n", + "1 indian 1 0 0 0 0 0 \n", + "2 indian 0 0 0 0 0 0 \n", + "3 indian 0 0 0 0 0 0 \n", + "4 indian 0 0 0 0 0 0 \n", + "... ... ... ... ... ... ... ... \n", + "3990 thai 0 0 0 0 0 0 \n", + "3991 thai 0 0 0 0 0 0 \n", + "3992 thai 0 0 0 0 0 0 \n", + "3993 thai 0 0 0 0 0 0 \n", + "3994 thai 0 0 0 0 0 0 \n", + "\n", + " apricot armagnac artemisia ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "... ... ... ... ... ... ... ... \n", + "3990 0 0 0 ... 0 0 0 \n", + "3991 0 0 0 ... 0 0 0 \n", + "3992 0 0 0 ... 0 0 0 \n", + "3993 0 0 0 ... 0 0 0 \n", + "3994 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "... ... ... ... ... ... ... ... \n", + "3990 0 0 0 0 0 0 0 \n", + "3991 0 0 0 0 0 0 0 \n", + "3992 0 0 0 0 0 0 0 \n", + "3993 0 0 0 0 0 0 0 \n", + "3994 0 0 0 0 0 0 0 \n", + "\n", + "[3995 rows x 381 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisia...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
0indian000000000...0000000000
1indian100000000...0000000000
2indian000000000...0000000000
3indian000000000...0000000000
4indian000000000...0000000010
..................................................................
3990thai000000000...0000000000
3991thai000000000...0000000000
3992thai000000000...0000000000
3993thai000000000...0000000000
3994thai000000000...0000000000
\n

3995 rows × 381 columns

\n
" + }, + "metadata": {}, + "execution_count": 19 + } + ], + "source": [ + "# export transformed data to new df for classification\n", + "transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer')\n", + "transformed_df" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\nRangeIndex: 3995 entries, 0 to 3994\nColumns: 381 entries, cuisine to zucchini\ndtypes: int64(380), object(1)\nmemory usage: 11.6+ MB\n" + ] + } + ], + "source": [ + "transformed_df.info()" + ] + }, + { + "source": [ + "భవిష్యత్తులో ఉపయోగించడానికి ఫైల్‌ను సేవ్ చేయండి\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "transformed_df.to_csv(\"../../data/cleaned_cuisines.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "kernelspec": { + "name": "python3", + "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" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "1da12ed6d238756959b8de9cac2a35a2", + "translation_date": "2025-12-19T17:03:46+00:00", + "source_file": "4-Classification/1-Introduction/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/translations/te/4-Classification/2-Classifiers-1/README.md b/translations/te/4-Classification/2-Classifiers-1/README.md new file mode 100644 index 000000000..f56b0103f --- /dev/null +++ b/translations/te/4-Classification/2-Classifiers-1/README.md @@ -0,0 +1,257 @@ + +# వంటకాల వర్గీకరణలు 1 + +ఈ పాఠంలో, మీరు గత పాఠం నుండి సేవ్ చేసిన సమతుల్యమైన, శుభ్రమైన వంటకాల డేటా సెట్‌ను ఉపయోగిస్తారు. + +మీరు ఈ డేటా సెట్‌ను వివిధ వర్గీకరణలతో ఉపయోగించి _ఒక సమూహం పదార్థాల ఆధారంగా ఒక జాతీయ వంటకాన్ని అంచనా వేయడానికి_ ప్రయత్నిస్తారు. ఈ ప్రక్రియలో, వర్గీకరణ పనుల కోసం అల్గోరిథమ్స్‌ను ఎలా ఉపయోగించవచ్చో మీరు మరింత తెలుసుకుంటారు. + +## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ml/) +# సిద్ధత + +మీరు [పాఠం 1](../1-Introduction/README.md) పూర్తి చేశారని అనుకుంటే, ఈ నాలుగు పాఠాల కోసం రూట్ `/data` ఫోల్డర్‌లో _cleaned_cuisines.csv_ ఫైల్ ఉందని నిర్ధారించుకోండి. + +## వ్యాయామం - జాతీయ వంటకాన్ని అంచనా వేయండి + +1. ఈ పాఠంలోని _notebook.ipynb_ ఫోల్డర్‌లో పని చేస్తూ, ఆ ఫైల్‌ను మరియు Pandas లైబ్రరీని దిగుమతి చేసుకోండి: + + ```python + import pandas as pd + cuisines_df = pd.read_csv("../data/cleaned_cuisines.csv") + cuisines_df.head() + ``` + + డేటా ఇలా ఉంటుంది: + +| | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini | +| --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- | +| 0 | 0 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 1 | 1 | indian | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 2 | 2 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 3 | 3 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | + + +1. ఇప్పుడు, మరికొన్ని లైబ్రరీలను దిగుమతి చేసుకోండి: + + ```python + from sklearn.linear_model import LogisticRegression + from sklearn.model_selection import train_test_split, cross_val_score + from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve + from sklearn.svm import SVC + import numpy as np + ``` + +1. X మరియు y కోఆర్డినేట్లను రెండు డేటాఫ్రేమ్‌లుగా విభజించండి. `cuisine` లేబుల్స్ డేటాఫ్రేమ్ కావచ్చు: + + ```python + cuisines_label_df = cuisines_df['cuisine'] + cuisines_label_df.head() + ``` + + ఇది ఇలా కనిపిస్తుంది: + + ```output + 0 indian + 1 indian + 2 indian + 3 indian + 4 indian + Name: cuisine, dtype: object + ``` + +1. ఆ `Unnamed: 0` కాలమ్ మరియు `cuisine` కాలమ్‌ను `drop()` పిలిచి తొలగించండి. మిగతా డేటాను శిక్షణ ఫీచర్లుగా సేవ్ చేయండి: + + ```python + cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1) + cuisines_feature_df.head() + ``` + + మీ ఫీచర్లు ఇలా ఉంటాయి: + +| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini | +| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: | +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | + +ఇప్పుడు మీరు మీ మోడల్‌ను శిక్షణ ఇవ్వడానికి సిద్ధంగా ఉన్నారు! + +## మీ వర్గీకరణకర్తను ఎంచుకోవడం + +మీ డేటా శుభ్రంగా మరియు శిక్షణకు సిద్ధంగా ఉన్నప్పుడు, మీరు ఏ అల్గోరిథం ఉపయోగించాలో నిర్ణయించుకోవాలి. + +Scikit-learn వర్గీకరణను సూపర్వైజ్డ్ లెర్నింగ్ కింద వర్గీకరిస్తుంది, ఆ విభాగంలో మీరు వర్గీకరించడానికి అనేక మార్గాలను కనుగొంటారు. [వివిధత](https://scikit-learn.org/stable/supervised_learning.html) మొదటి చూపులో కొంచెం గందరగోళంగా ఉంటుంది. క్రింది పద్ధతులు అన్ని వర్గీకరణ సాంకేతికతలను కలిగి ఉంటాయి: + +- లీనియర్ మోడల్స్ +- సపోర్ట్ వెక్టర్ మెషీన్స్ +- స్టోకాస్టిక్ గ్రాడియెంట్ డిసెంట్ +- సమీప పొరుగువారు +- గౌసియన్ ప్రాసెస్‌లు +- నిర్ణయ వృక్షాలు +- ఎంసెంబుల్ పద్ధతులు (వోటింగ్ క్లాసిఫయర్) +- మల్టిక్లాస్ మరియు మల్టీఔట్పుట్ అల్గోరిథమ్స్ (మల్టిక్లాస్ మరియు మల్టీలేబుల్ వర్గీకరణ, మల్టిక్లాస్-మల్టీఔట్పుట్ వర్గీకరణ) + +> మీరు [న్యూరల్ నెట్‌వర్క్స్‌ను కూడా వర్గీకరణకు ఉపయోగించవచ్చు](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), కానీ అది ఈ పాఠం పరిధికి బయట ఉంది. + +### ఏ వర్గీకరణకర్తను ఎంచుకోవాలి? + +అయితే, మీరు ఏ వర్గీకరణకర్తను ఎంచుకోవాలి? తరచుగా, అనేక వర్గీకరణకర్తలను పరీక్షించి మంచి ఫలితాన్ని చూసే విధానం ఒక పరీక్షా మార్గం. Scikit-learn ఒక [పక్కపక్కన పోలిక](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html)ను సృష్టించిన డేటాసెట్‌పై అందిస్తుంది, ఇందులో KNeighbors, SVC రెండు విధాలుగా, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB మరియు QuadraticDiscrinationAnalysis పోల్చబడతాయి, ఫలితాలు విజువలైజ్ చేయబడ్డాయి: + +![వర్గీకరణకర్తల పోలిక](../../../../translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.te.png) +> Scikit-learn డాక్యుమెంటేషన్‌లో రూపొందించిన ప్లాట్లు + +> AutoML ఈ సమస్యను క్లౌడ్‌లో ఈ పోలికలను నడిపించి, మీ డేటాకు ఉత్తమ అల్గోరిథం ఎంచుకునే అవకాశం ఇస్తూ సులభంగా పరిష్కరిస్తుంది. దీన్ని [ఇక్కడ](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott) ప్రయత్నించండి + +### మెరుగైన దృష్టికోణం + +అనుమానించకుండా అంచనా వేయడం కంటే మెరుగైన మార్గం, ఈ డౌన్లోడ్ చేసుకునే [ML చీట్ షీట్](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)లోని ఆలోచనలను అనుసరించడం. ఇక్కడ, మన మల్టిక్లాస్ సమస్య కోసం కొన్ని ఎంపికలు ఉన్నాయి: + +![మల్టిక్లాస్ సమస్యల కోసం చీట్ షీట్](../../../../translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.te.png) +> మైక్రోసాఫ్ట్ యొక్క అల్గోరిథం చీట్ షీట్‌లోని ఒక భాగం, మల్టిక్లాస్ వర్గీకరణ ఎంపికలను వివరించడం + +✅ ఈ చీట్ షీట్‌ను డౌన్లోడ్ చేసుకుని, ప్రింట్ చేసి, మీ గోడపై పెట్టుకోండి! + +### తర్కం + +మన వద్ద ఉన్న పరిమితులను దృష్టిలో ఉంచుకుని వివిధ దృష్టికోణాలను తర్కం చేయగలమా చూద్దాం: + +- **న్యూరల్ నెట్‌వర్క్స్ చాలా భారమైనవి**. మన శుభ్రమైన, కానీ కనిష్ట డేటాసెట్ మరియు నోట్బుక్స్ ద్వారా స్థానికంగా శిక్షణ నడుపుతున్నందున, న్యూరల్ నెట్‌వర్క్స్ ఈ పనికి చాలా భారమైనవి. +- **రెండు-వర్గ వర్గీకరణకర్త లేదు**. మేము రెండు-వర్గ వర్గీకరణకర్తను ఉపయోగించము, కాబట్టి ఒకటి-వర్సెస్-అల్ (one-vs-all) తప్పు అవుతుంది. +- **నిర్ణయ వృక్షం లేదా లాజిస్టిక్ రిగ్రెషన్ పనిచేయవచ్చు**. ఒక నిర్ణయ వృక్షం పనిచేయవచ్చు, లేదా మల్టిక్లాస్ డేటాకు లాజిస్టిక్ రిగ్రెషన్. +- **మల్టిక్లాస్ బూస్టెడ్ నిర్ణయ వృక్షాలు వేరే సమస్యను పరిష్కరిస్తాయి**. మల్టిక్లాస్ బూస్టెడ్ నిర్ణయ వృక్షం ప్రధానంగా నాన్‌పారామెట్రిక్ పనులకు అనుకూలం, ఉదా: ర్యాంకింగ్స్ నిర్మాణం కోసం, కాబట్టి మనకు ఉపయోగకరం కాదు. + +### Scikit-learn ఉపయోగించడం + +మనం Scikit-learn ఉపయోగించి మన డేటాను విశ్లేషించబోతున్నాము. అయితే, Scikit-learnలో లాజిస్టిక్ రిగ్రెషన్ ఉపయోగించడానికి అనేక మార్గాలు ఉన్నాయి. [పారామీటర్లను](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression) చూడండి. + +మూలంగా రెండు ముఖ్యమైన పారామీటర్లు ఉన్నాయి - `multi_class` మరియు `solver` - ఇవి Scikit-learnకి లాజిస్టిక్ రిగ్రెషన్ చేయమని అడిగేటప్పుడు నిర్దేశించాలి. `multi_class` విలువ ఒక నిర్దిష్ట ప్రవర్తనను అమలు చేస్తుంది. solver విలువ అనేది ఏ అల్గోరిథం ఉపయోగించాలో సూచిస్తుంది. అన్ని solverలు అన్ని `multi_class` విలువలతో జత కాబోవు. + +డాక్యుమెంటేషన్ ప్రకారం, మల్టిక్లాస్ సందర్భంలో శిక్షణ అల్గోరిథం: + +- **ఒకటి-వర్సెస్-రెస్ట్ (OvR) పద్ధతిని ఉపయోగిస్తుంది**, `multi_class` ఎంపిక `ovr`గా ఉంటే +- **క్రాస్-ఎంట్రోపీ నష్టం ఉపయోగిస్తుంది**, `multi_class` ఎంపిక `multinomial`గా ఉంటే. (ప్రస్తుతం `multinomial` ఎంపిక ‘lbfgs’, ‘sag’, ‘saga’ మరియు ‘newton-cg’ solverలతో మాత్రమే మద్దతు ఇస్తుంది.)" + +> 🎓 ఇక్కడ 'పద్ధతి' అంటే 'ovr' (ఒకటి-వర్సెస్-రెస్ట్) లేదా 'multinomial'. లాజిస్టిక్ రిగ్రెషన్ అసలు బైనరీ వర్గీకరణకు రూపొందించబడినందున, ఈ పద్ధతులు మల్టిక్లాస్ వర్గీకరణ పనులను మెరుగ్గా నిర్వహించడానికి సహాయపడతాయి. [మూలం](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/) + +> 🎓 'solver' అనేది "ఆప్టిమైజేషన్ సమస్యలో ఉపయోగించే అల్గోరిథం" అని నిర్వచించబడింది. [మూలం](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression). + +Scikit-learn ఈ పట్టికను అందిస్తుంది, వివిధ డేటా నిర్మాణాల సవాళ్లను solverలు ఎలా నిర్వహిస్తాయో వివరించడానికి: + +![solverలు](../../../../translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.te.png) + +## వ్యాయామం - డేటాను విభజించండి + +మీరు ఇటీవల ఒక పాఠంలో లాజిస్టిక్ రిగ్రెషన్ గురించి నేర్చుకున్నందున, మొదటి శిక్షణ ప్రయత్నానికి లాజిస్టిక్ రిగ్రెషన్‌పై దృష్టి పెట్టవచ్చు. +`train_test_split()` పిలిచి మీ డేటాను శిక్షణ మరియు పరీక్షా సమూహాలుగా విభజించండి: + +```python +X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3) +``` + +## వ్యాయామం - లాజిస్టిక్ రిగ్రెషన్ వర్తించండి + +మీరు మల్టిక్లాస్ సందర్భాన్ని ఉపయోగిస్తున్నందున, ఏ _పద్ధతి_ ఉపయోగించాలో మరియు ఏ _solver_ సెట్ చేయాలో ఎంచుకోవాలి. మల్టిక్లాస్ సెట్టింగ్‌తో మరియు **liblinear** solverతో LogisticRegression ఉపయోగించి శిక్షణ ఇవ్వండి. + +1. multi_class ను `ovr`గా మరియు solver ను `liblinear`గా సెట్ చేసి లాజిస్టిక్ రిగ్రెషన్ సృష్టించండి: + + ```python + lr = LogisticRegression(multi_class='ovr',solver='liblinear') + model = lr.fit(X_train, np.ravel(y_train)) + + accuracy = model.score(X_test, y_test) + print ("Accuracy is {}".format(accuracy)) + ``` + + ✅ తరచుగా డిఫాల్ట్‌గా సెట్ అయ్యే `lbfgs` వంటి వేరే solverను ప్రయత్నించండి + + > గమనిక, అవసరమైతే మీ డేటాను ఫ్లాటెన్ చేయడానికి Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) ఫంక్షన్ ఉపయోగించండి. + + ఖచ్చితత్వం **80%** కంటే ఎక్కువగా మంచి ఉంది! + +1. మీరు ఈ మోడల్‌ను ఒక డేటా వరుస (#50) పరీక్షించి చూడవచ్చు: + + ```python + print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}') + print(f'cuisine: {y_test.iloc[50]}') + ``` + + ఫలితం ముద్రించబడుతుంది: + + ```output + ingredients: Index(['cilantro', 'onion', 'pea', 'potato', 'tomato', 'vegetable_oil'], dtype='object') + cuisine: indian + ``` + + ✅ వేరే రో నంబర్ ప్రయత్నించి ఫలితాలను తనిఖీ చేయండి + +1. మరింత లోతుగా పరిశీలిస్తే, మీరు ఈ అంచనాకు ఖచ్చితత్వాన్ని తనిఖీ చేయవచ్చు: + + ```python + test= X_test.iloc[50].values.reshape(-1, 1).T + proba = model.predict_proba(test) + classes = model.classes_ + resultdf = pd.DataFrame(data=proba, columns=classes) + + topPrediction = resultdf.T.sort_values(by=[0], ascending = [False]) + topPrediction.head() + ``` + + ఫలితం ముద్రించబడింది - భారతీయ వంటకం ఇది అత్యుత్తమ అంచనా, మంచి సంభావ్యతతో: + + | | 0 | + | -------: | -------: | + | indian | 0.715851 | + | chinese | 0.229475 | + | japanese | 0.029763 | + | korean | 0.017277 | + | thai | 0.007634 | + + ✅ ఈ మోడల్ భారతీయ వంటకం అని ఎందుకు చాలా నమ్మకం కలిగి ఉందో మీరు వివరించగలరా? + +1. మీరు రిగ్రెషన్ పాఠాలలో చేసినట్లుగా క్లాసిఫికేషన్ రిపోర్ట్ ముద్రించి మరింత వివరాలు పొందండి: + + ```python + y_pred = model.predict(X_test) + print(classification_report(y_test,y_pred)) + ``` + + | | precision | recall | f1-score | support | + | ------------ | --------- | ------ | -------- | ------- | + | chinese | 0.73 | 0.71 | 0.72 | 229 | + | indian | 0.91 | 0.93 | 0.92 | 254 | + | japanese | 0.70 | 0.75 | 0.72 | 220 | + | korean | 0.86 | 0.76 | 0.81 | 242 | + | thai | 0.79 | 0.85 | 0.82 | 254 | + | accuracy | 0.80 | 1199 | | | + | macro avg | 0.80 | 0.80 | 0.80 | 1199 | + | weighted avg | 0.80 | 0.80 | 0.80 | 1199 | + +## 🚀సవాలు + +ఈ పాఠంలో, మీరు శుభ్రపరిచిన డేటాను ఉపయోగించి పదార్థాల శ్రేణి ఆధారంగా జాతీయ వంటకాన్ని అంచనా వేయగల యంత్ర అభ్యాస మోడల్‌ను నిర్మించారు. డేటాను వర్గీకరించడానికి Scikit-learn అందించే అనేక ఎంపికలను చదవడానికి కొంత సమయం తీసుకోండి. 'solver' అనే భావనలో మరింత లోతుగా వెళ్ళి దాని వెనుక జరిగే ప్రక్రియలను అర్థం చేసుకోండి. + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +లాజిస్టిక్ రిగ్రెషన్ వెనుక గణితాన్ని మరింత లోతుగా తెలుసుకోండి [ఈ పాఠంలో](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf) +## అసైన్‌మెంట్ + +[solvers ను అధ్యయనం చేయండి](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/4-Classification/2-Classifiers-1/assignment.md b/translations/te/4-Classification/2-Classifiers-1/assignment.md new file mode 100644 index 000000000..eebba6aed --- /dev/null +++ b/translations/te/4-Classification/2-Classifiers-1/assignment.md @@ -0,0 +1,25 @@ + +# పరిష్కారకులను అధ్యయనం చేయండి +## సూచనలు + +ఈ పాఠంలో మీరు యంత్ర అభ్యాస ప్రక్రియతో అల్గోరిథమ్స్ జతచేసే వివిధ పరిష్కారకుల గురించి నేర్చుకున్నారు, అవి ఖచ్చితమైన మోడల్‌ను సృష్టిస్తాయి. పాఠంలో పేర్కొన్న పరిష్కారకులను పరిశీలించి రెండు ఎంచుకోండి. మీ స్వంత మాటల్లో, ఈ రెండు పరిష్కారకులను పోల్చి, వ్యత్యాసాలను వివరించండి. అవి ఏ రకమైన సమస్యలను పరిష్కరిస్తాయి? అవి వివిధ డేటా నిర్మాణాలతో ఎలా పనిచేస్తాయి? ఒకదానిని మరొకదానిపై ఎందుకు ఎంచుకుంటారు? +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైనది | సరిపడినది | మెరుగుదల అవసరం | +| -------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------ | ---------------------------- | +| | రెండు పరిష్కారకులపై ఒక్కో పేరాగ్రాఫ్‌తో కూడిన .doc ఫైల్ సమర్పించబడింది, అవి ఆలోచనాత్మకంగా పోల్చబడ్డాయి. | ఒక్క పేరాగ్రాఫ్‌తో కూడిన .doc ఫైల్ సమర్పించబడింది | అసైన్‌మెంట్ పూర్తి కాలేదు | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/4-Classification/2-Classifiers-1/notebook.ipynb b/translations/te/4-Classification/2-Classifiers-1/notebook.ipynb new file mode 100644 index 000000000..9384d3b59 --- /dev/null +++ b/translations/te/4-Classification/2-Classifiers-1/notebook.ipynb @@ -0,0 +1,41 @@ +{ + "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": "68829b06b4dcd512d3327849191f4d7f", + "translation_date": "2025-12-19T17:03:17+00:00", + "source_file": "4-Classification/2-Classifiers-1/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# వర్గీకరణ మోడల్స్ నిర్మించండి\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/4-Classification/2-Classifiers-1/solution/Julia/README.md b/translations/te/4-Classification/2-Classifiers-1/solution/Julia/README.md new file mode 100644 index 000000000..a9c1385c0 --- /dev/null +++ b/translations/te/4-Classification/2-Classifiers-1/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/4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb b/translations/te/4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb new file mode 100644 index 000000000..89f392a21 --- /dev/null +++ b/translations/te/4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb @@ -0,0 +1,1302 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_11-R.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "6ea6a5171b1b99b7b5a55f7469c048d2", + "translation_date": "2025-12-19T17:19:50+00:00", + "source_file": "4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb", + "language_code": "te" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# వర్గీకరణ మోడల్ నిర్మించండి: రుచికరమైన ఆసియన్లు మరియు భారతీయ వంటకాలు\n" + ], + "metadata": { + "id": "zs2woWv_HoE8" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Cuisine classifiers 1\n", + "\n", + "ఈ పాఠంలో, మనం వివిధ తరగతీకరణాలను పరిశీలించబోతున్నాము *ఒక సమూహం పదార్థాల ఆధారంగా ఒక నిర్దిష్ట జాతీయ వంటకాన్ని అంచనా వేయడానికి.* ఇది చేస్తూ, మనం తరగతీకరణ పనుల కోసం అల్గోరిథమ్స్ ఎలా ఉపయోగించవచ్చో మరింత తెలుసుకుంటాము.\n", + "\n", + "### [**పాఠం ముందు క్విజ్**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/21/)\n", + "\n", + "### **తయారీ**\n", + "\n", + "ఈ పాఠం మన [మునుపటి పాఠం](https://github.com/microsoft/ML-For-Beginners/blob/main/4-Classification/1-Introduction/solution/lesson_10-R.ipynb) పై ఆధారపడి ఉంది, అందులో:\n", + "\n", + "- ఆసియా మరియు భారతదేశంలోని అద్భుతమైన వంటకాల గురించి డేటాసెట్ ఉపయోగించి తరగతీకరణలకు సున్నితమైన పరిచయాన్ని ఇచ్చాము 😋.\n", + "\n", + "- మన డేటాను సిద్ధం చేయడానికి మరియు శుభ్రపరచడానికి కొన్ని [dplyr క్రియాపదాలు](https://dplyr.tidyverse.org/) ను పరిశీలించాము.\n", + "\n", + "- ggplot2 ఉపయోగించి అందమైన విజువలైజేషన్లు తయారు చేసాము.\n", + "\n", + "- అసమతులిత డేటాను ఎలా నిర్వహించాలో [recipes](https://recipes.tidymodels.org/articles/Simple_Example.html) ఉపయోగించి ప్రీప్రాసెసింగ్ ద్వారా చూపించాము.\n", + "\n", + "- మన రిసిపీ పనిచేస్తుందో లేదో నిర్ధారించడానికి `prep` మరియు `bake` ఎలా చేయాలో చూపించాము.\n", + "\n", + "#### **ముందస్తు అవసరాలు**\n", + "\n", + "ఈ పాఠం కోసం, మన డేటాను శుభ్రపరచడానికి, సిద్ధం చేయడానికి మరియు విజువలైజ్ చేయడానికి క్రింది ప్యాకేజీలు అవసరం:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) అనేది డేటా సైన్స్‌ను వేగవంతం, సులభం మరియు మరింత సరదాగా మార్చడానికి రూపొందించిన [R ప్యాకేజీల సేకరణ](https://www.tidyverse.org/packages).\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ఫ్రేమ్‌వర్క్ అనేది మోడలింగ్ మరియు మెషీన్ లెర్నింగ్ కోసం [ప్యాకేజీల సేకరణ](https://www.tidymodels.org/packages/).\n", + "\n", + "- `themis`: [themis ప్యాకేజీ](https://themis.tidymodels.org/) అసమతులిత డేటాను నిర్వహించడానికి అదనపు రిసిపీ స్టెప్స్ అందిస్తుంది.\n", + "\n", + "- `nnet`: [nnet ప్యాకేజీ](https://cran.r-project.org/web/packages/nnet/nnet.pdf) ఒకే హిడెన్ లేయర్ ఉన్న ఫీడ్-ఫార్వర్డ్ న్యూరల్ నెట్‌వర్క్‌లను అంచనా వేయడానికి మరియు మల్టినోమియల్ లాజిస్టిక్ రిగ్రెషన్ మోడల్స్ కోసం ఫంక్షన్లు అందిస్తుంది.\n", + "\n", + "మీరు వాటిని ఇన్‌స్టాల్ చేసుకోవచ్చు:\n" + ], + "metadata": { + "id": "iDFOb3ebHwQC" + } + }, + { + "cell_type": "markdown", + "source": [ + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"DataExplorer\", \"here\"))`\n", + "\n", + "వికల్పంగా, క్రింది స్క్రిప్ట్ మీరు ఈ మాడ్యూల్‌ను పూర్తి చేయడానికి అవసరమైన ప్యాకేజీలు ఉన్నాయా లేదా అని తనిఖీ చేస్తుంది మరియు అవి లేనప్పుడు వాటిని మీ కోసం ఇన్‌స్టాల్ చేస్తుంది.\n" + ], + "metadata": { + "id": "4V85BGCjII7F" + } + }, + { + "cell_type": "code", + "execution_count": 2, + "source": [ + "suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\r\n", + "\r\n", + "pacman::p_load(tidyverse, tidymodels, themis, here)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Loading required package: pacman\n", + "\n" + ] + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "an5NPyyKIKNR", + "outputId": "834d5e74-f4b8-49f9-8ab5-4c52ff2d7bc8" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఇప్పుడు, మనం వెంటనే ప్రారంభిద్దాం!\n", + "\n", + "## 1. డేటాను శిక్షణ మరియు పరీక్ష సెట్లుగా విభజించండి.\n", + "\n", + "మనం మా గత పాఠం నుండి కొన్ని దశలను ఎంచుకోవడం ప్రారంభిస్తాము.\n", + "\n", + "### `dplyr::select()` ఉపయోగించి వేరే వంటకాల మధ్య గందరగోళాన్ని సృష్టించే అత్యంత సాధారణ పదార్థాలను తొలగించండి.\n", + "\n", + "ప్రతి ఒక్కరూ బియ్యం, వెల్లుల్లి మరియు అల్లం ఇష్టపడతారు!\n" + ], + "metadata": { + "id": "0ax9GQLBINVv" + } + }, + { + "cell_type": "code", + "execution_count": 3, + "source": [ + "# Load the original cuisines data\r\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/4-Classification/data/cuisines.csv\")\r\n", + "\r\n", + "# Drop id column, rice, garlic and ginger from our original data set\r\n", + "df_select <- df %>% \r\n", + " select(-c(1, rice, garlic, ginger)) %>%\r\n", + " # Encode cuisine column as categorical\r\n", + " mutate(cuisine = factor(cuisine))\r\n", + "\r\n", + "# Display new data set\r\n", + "df_select %>% \r\n", + " slice_head(n = 5)\r\n", + "\r\n", + "# Display distribution of cuisines\r\n", + "df_select %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(desc(n))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "New names:\n", + "* `` -> ...1\n", + "\n", + "\u001b[1m\u001b[1mRows: \u001b[1m\u001b[22m\u001b[34m\u001b[34m2448\u001b[34m\u001b[39m \u001b[1m\u001b[1mColumns: \u001b[1m\u001b[22m\u001b[34m\u001b[34m385\u001b[34m\u001b[39m\n", + "\n", + "\u001b[36m──\u001b[39m \u001b[1m\u001b[1mColumn specification\u001b[1m\u001b[22m \u001b[36m────────────────────────────────────────────────────────\u001b[39m\n", + "\u001b[1mDelimiter:\u001b[22m \",\"\n", + "\u001b[31mchr\u001b[39m (1): cuisine\n", + "\u001b[32mdbl\u001b[39m (384): ...1, almond, angelica, anise, anise_seed, apple, apple_brandy, a...\n", + "\n", + "\n", + "\u001b[36mℹ\u001b[39m Use \u001b[30m\u001b[47m\u001b[30m\u001b[47m`spec()`\u001b[47m\u001b[30m\u001b[49m\u001b[39m to retrieve the full column specification for this data.\n", + "\u001b[36mℹ\u001b[39m Specify the column types or set \u001b[30m\u001b[47m\u001b[30m\u001b[47m`show_col_types = FALSE`\u001b[47m\u001b[30m\u001b[49m\u001b[39m to quiet this message.\n", + "\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine almond angelica anise anise_seed apple apple_brandy apricot armagnac\n", + "1 indian 0 0 0 0 0 0 0 0 \n", + "2 indian 1 0 0 0 0 0 0 0 \n", + "3 indian 0 0 0 0 0 0 0 0 \n", + "4 indian 0 0 0 0 0 0 0 0 \n", + "5 indian 0 0 0 0 0 0 0 0 \n", + " artemisia ⋯ whiskey white_bread white_wine whole_grain_wheat_flour wine wood\n", + "1 0 ⋯ 0 0 0 0 0 0 \n", + "2 0 ⋯ 0 0 0 0 0 0 \n", + "3 0 ⋯ 0 0 0 0 0 0 \n", + "4 0 ⋯ 0 0 0 0 0 0 \n", + "5 0 ⋯ 0 0 0 0 0 0 \n", + " yam yeast yogurt zucchini\n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "5 0 0 1 0 " + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 381\n", + "\n", + "| cuisine <fct> | almond <dbl> | angelica <dbl> | anise <dbl> | anise_seed <dbl> | apple <dbl> | apple_brandy <dbl> | apricot <dbl> | armagnac <dbl> | artemisia <dbl> | ⋯ ⋯ | whiskey <dbl> | white_bread <dbl> | white_wine <dbl> | whole_grain_wheat_flour <dbl> | wine <dbl> | wood <dbl> | yam <dbl> | yeast <dbl> | yogurt <dbl> | zucchini <dbl> |\n", + "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", + "| indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| indian | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 381\n", + "\\begin{tabular}{lllllllllllllllllllll}\n", + " cuisine & almond & angelica & anise & anise\\_seed & apple & apple\\_brandy & apricot & armagnac & artemisia & ⋯ & whiskey & white\\_bread & white\\_wine & whole\\_grain\\_wheat\\_flour & wine & wood & yam & yeast & yogurt & zucchini\\\\\n", + " & & & & & & & & & & ⋯ & & & & & & & & & & \\\\\n", + "\\hline\n", + "\t indian & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t indian & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t indian & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t indian & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t indian & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 381
cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiawhiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
<fct><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
indian0000000000000000000
indian1000000000000000000
indian0000000000000000000
indian0000000000000000000
indian0000000000000000010
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine n \n", + "1 korean 799\n", + "2 indian 598\n", + "3 chinese 442\n", + "4 japanese 320\n", + "5 thai 289" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| cuisine <fct> | n <int> |\n", + "|---|---|\n", + "| korean | 799 |\n", + "| indian | 598 |\n", + "| chinese | 442 |\n", + "| japanese | 320 |\n", + "| thai | 289 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " cuisine & n\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t korean & 799\\\\\n", + "\t indian & 598\\\\\n", + "\t chinese & 442\\\\\n", + "\t japanese & 320\\\\\n", + "\t thai & 289\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
cuisinen
<fct><int>
korean 799
indian 598
chinese 442
japanese320
thai 289
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 735 + }, + "id": "jhCrrH22IWVR", + "outputId": "d444a85c-1d8b-485f-bc4f-8be2e8f8217c" + } + }, + { + "cell_type": "markdown", + "source": [ + "సరే! ఇప్పుడు, డేటాను 70% శిక్షణకు మరియు 30% పరీక్షకు విభజించడానికి సమయం వచ్చింది. శిక్షణ మరియు ధృవీకరణ డేటాసెట్‌లలో ప్రతి వంటకపు నిష్పత్తిని నిలుపుకోవడానికి `stratification` సాంకేతికతను కూడా ఉపయోగిస్తాము.\n", + "\n", + "[rsample](https://rsample.tidymodels.org/), Tidymodels‌లోని ఒక ప్యాకేజ్, సమర్థవంతమైన డేటా విభజన మరియు రీసాంప్లింగ్ కోసం మౌలిక సదుపాయాలను అందిస్తుంది:\n" + ], + "metadata": { + "id": "AYTjVyajIdny" + } + }, + { + "cell_type": "code", + "execution_count": 4, + "source": [ + "# Load the core Tidymodels packages into R session\r\n", + "library(tidymodels)\r\n", + "\r\n", + "# Create split specification\r\n", + "set.seed(2056)\r\n", + "cuisines_split <- initial_split(data = df_select,\r\n", + " strata = cuisine,\r\n", + " prop = 0.7)\r\n", + "\r\n", + "# Extract the data in each split\r\n", + "cuisines_train <- training(cuisines_split)\r\n", + "cuisines_test <- testing(cuisines_split)\r\n", + "\r\n", + "# Print the number of cases in each split\r\n", + "cat(\"Training cases: \", nrow(cuisines_train), \"\\n\",\r\n", + " \"Test cases: \", nrow(cuisines_test), sep = \"\")\r\n", + "\r\n", + "# Display the first few rows of the training set\r\n", + "cuisines_train %>% \r\n", + " slice_head(n = 5)\r\n", + "\r\n", + "\r\n", + "# Display distribution of cuisines in the training set\r\n", + "cuisines_train %>% \r\n", + " count(cuisine) %>% \r\n", + " arrange(desc(n))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Training cases: 1712\n", + "Test cases: 736" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine almond angelica anise anise_seed apple apple_brandy apricot armagnac\n", + "1 chinese 0 0 0 0 0 0 0 0 \n", + "2 chinese 0 0 0 0 0 0 0 0 \n", + "3 chinese 0 0 0 0 0 0 0 0 \n", + "4 chinese 0 0 0 0 0 0 0 0 \n", + "5 chinese 0 0 0 0 0 0 0 0 \n", + " artemisia ⋯ whiskey white_bread white_wine whole_grain_wheat_flour wine wood\n", + "1 0 ⋯ 0 0 0 0 1 0 \n", + "2 0 ⋯ 0 0 0 0 1 0 \n", + "3 0 ⋯ 0 0 0 0 0 0 \n", + "4 0 ⋯ 0 0 0 0 0 0 \n", + "5 0 ⋯ 0 0 0 0 0 0 \n", + " yam yeast yogurt zucchini\n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "5 0 0 0 0 " + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 381\n", + "\n", + "| cuisine <fct> | almond <dbl> | angelica <dbl> | anise <dbl> | anise_seed <dbl> | apple <dbl> | apple_brandy <dbl> | apricot <dbl> | armagnac <dbl> | artemisia <dbl> | ⋯ ⋯ | whiskey <dbl> | white_bread <dbl> | white_wine <dbl> | whole_grain_wheat_flour <dbl> | wine <dbl> | wood <dbl> | yam <dbl> | yeast <dbl> | yogurt <dbl> | zucchini <dbl> |\n", + "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "| chinese | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ⋯ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 381\n", + "\\begin{tabular}{lllllllllllllllllllll}\n", + " cuisine & almond & angelica & anise & anise\\_seed & apple & apple\\_brandy & apricot & armagnac & artemisia & ⋯ & whiskey & white\\_bread & white\\_wine & whole\\_grain\\_wheat\\_flour & wine & wood & yam & yeast & yogurt & zucchini\\\\\n", + " & & & & & & & & & & ⋯ & & & & & & & & & & \\\\\n", + "\\hline\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\t chinese & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & ⋯ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 381
cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiawhiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
<fct><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
chinese0000000000000100000
chinese0000000000000100000
chinese0000000000000000000
chinese0000000000000000000
chinese0000000000000000000
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine n \n", + "1 korean 559\n", + "2 indian 418\n", + "3 chinese 309\n", + "4 japanese 224\n", + "5 thai 202" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| cuisine <fct> | n <int> |\n", + "|---|---|\n", + "| korean | 559 |\n", + "| indian | 418 |\n", + "| chinese | 309 |\n", + "| japanese | 224 |\n", + "| thai | 202 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " cuisine & n\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t korean & 559\\\\\n", + "\t indian & 418\\\\\n", + "\t chinese & 309\\\\\n", + "\t japanese & 224\\\\\n", + "\t thai & 202\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
cuisinen
<fct><int>
korean 559
indian 418
chinese 309
japanese224
thai 202
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 535 + }, + "id": "w5FWIkEiIjdN", + "outputId": "2e195fd9-1a8f-4b91-9573-cce5582242df" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 2. అసమతుల్య డేటాతో వ్యవహరించడం\n", + "\n", + "మూల డేటా సెట్‌లో మరియు మా శిక్షణ సెట్‌లో మీరు గమనించగలిగినట్లుగా, వంటకాల సంఖ్యలో చాలా అసమానమైన పంపిణీ ఉంది. కొరియన్ వంటకాలు థాయ్ వంటకాల కంటే *దాదాపు* 3 రెట్లు ఎక్కువగా ఉన్నాయి. అసమతుల్య డేటా తరచుగా మోడల్ పనితీరుపై ప్రతికూల ప్రభావాలు చూపుతుంది. చాలా మోడల్స్ గమనికల సంఖ్య సమానంగా ఉన్నప్పుడు ఉత్తమంగా పనిచేస్తాయి, అందువల్ల అసమతుల్య డేటాతో సమస్యలు ఎదుర్కొంటాయి.\n", + "\n", + "అసమతుల్య డేటా సెట్‌లతో వ్యవహరించడానికి ప్రధానంగా రెండు మార్గాలు ఉన్నాయి:\n", + "\n", + "- మైనారిటీ తరగతికి గమనికలను జోడించడం: `ఓవర్-సాంప్లింగ్` ఉదాహరణకు SMOTE అల్గోరిథం ఉపయోగించడం, ఇది ఈ కేసుల సమీప పొరుగువారిని ఉపయోగించి మైనారిటీ తరగతికి కొత్త ఉదాహరణలను సృజనాత్మకంగా ఉత్పత్తి చేస్తుంది.\n", + "\n", + "- మెజారిటీ తరగతిలోని గమనికలను తొలగించడం: `అండర్-సాంప్లింగ్`\n", + "\n", + "మా గత పాఠంలో, మేము `recipe` ఉపయోగించి అసమతుల్య డేటా సెట్‌లతో ఎలా వ్యవహరించాలో చూపించాము. ఒక రిసిపీ అనేది డేటా విశ్లేషణకు సిద్ధం చేయడానికి డేటా సెట్‌పై ఏ దశలను వర్తింపజేయాలో వివరించే బ్లూప్రింట్‌గా భావించవచ్చు. మా సందర్భంలో, మా `training set` కోసం వంటకాల సంఖ్యలో సమాన పంపిణీ ఉండాలని మేము కోరుకుంటున్నాము. దీని కోసం నేరుగా ప్రారంభిద్దాం.\n" + ], + "metadata": { + "id": "daBi9qJNIwqW" + } + }, + { + "cell_type": "code", + "execution_count": 5, + "source": [ + "# Load themis package for dealing with imbalanced data\r\n", + "library(themis)\r\n", + "\r\n", + "# Create a recipe for preprocessing training data\r\n", + "cuisines_recipe <- recipe(cuisine ~ ., data = cuisines_train) %>% \r\n", + " step_smote(cuisine)\r\n", + "\r\n", + "# Print recipe\r\n", + "cuisines_recipe" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Data Recipe\n", + "\n", + "Inputs:\n", + "\n", + " role #variables\n", + " outcome 1\n", + " predictor 380\n", + "\n", + "Operations:\n", + "\n", + "SMOTE based on cuisine" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 200 + }, + "id": "Az6LFBGxI1X0", + "outputId": "29d71d85-64b0-4e62-871e-bcd5398573b6" + } + }, + { + "cell_type": "markdown", + "source": [ + "మీరు ఖచ్చితంగా ముందుకు వెళ్లి నిర్ధారించవచ్చు (prep+bake ఉపయోగించి) రెసిపీ మీరు ఆశించినట్లుగా పనిచేస్తుందని - అన్ని వంటక లేబుళ్లకు `559` పరిశీలనలు ఉన్నాయి.\n", + "\n", + "మనం ఈ రెసిపీని మోడలింగ్ కోసం ప్రీప్రాసెసర్‌గా ఉపయోగించబోతున్నందున, ఒక `workflow()` మన కోసం అన్ని prep మరియు bake చేస్తుంది, కాబట్టి మనం రెసిపీని మానవీయంగా అంచనా వేయాల్సిన అవసరం లేదు.\n", + "\n", + "ఇప్పుడు మేము ఒక మోడల్ శిక్షణ ఇవ్వడానికి సిద్ధంగా ఉన్నాము 👩‍💻👨‍💻!\n", + "\n", + "## 3. మీ క్లాసిఫైయర్‌ను ఎంచుకోవడం\n", + "\n", + "

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

@allison_horst చేత కళాకృతి
\n" + ], + "metadata": { + "id": "NBL3PqIWJBBB" + } + }, + { + "cell_type": "markdown", + "source": [ + "ఇప్పుడు మనం ఈ పని కోసం ఏ అల్గోరిథమ్ ఉపయోగించాలో నిర్ణయించుకోవాలి 🤔.\n", + "\n", + "Tidymodels లో, [`parsnip package`](https://parsnip.tidymodels.org/index.html) వివిధ ఇంజిన్ల (ప్యాకేజీల) మధ్య మోడల్స్‌తో పని చేయడానికి సुसंगత ఇంటర్‌ఫేస్‌ను అందిస్తుంది. దయచేసి parsnip డాక్యుమెంటేషన్‌ను చూడండి [మోడల్ రకాలు & ఇంజిన్లు](https://www.tidymodels.org/find/parsnip/#models) మరియు వాటి అనుగుణమైన [మోడల్ ఆర్గ్యుమెంట్లు](https://www.tidymodels.org/find/parsnip/#model-args) గురించి తెలుసుకోండి. మొదటి చూపులో ఈ వైవిధ్యం కొంచెం గందరగోళంగా ఉంటుంది. ఉదాహరణకు, క్రింది పద్ధతులు అన్ని వర్గీకరణ సాంకేతికతలను కలిగి ఉంటాయి:\n", + "\n", + "- C5.0 రూల్-బేస్డ్ వర్గీకరణ మోడల్స్\n", + "\n", + "- ఫ్లెక్సిబుల్ డిస్క్రిమినెంట్ మోడల్స్\n", + "\n", + "- లీనియర్ డిస్క్రిమినెంట్ మోడల్స్\n", + "\n", + "- రెగ్యులరైజ్డ్ డిస్క్రిమినెంట్ మోడల్స్\n", + "\n", + "- లాజిస్టిక్ రిగ్రెషన్ మోడల్స్\n", + "\n", + "- మల్టినోమియల్ రిగ్రెషన్ మోడల్స్\n", + "\n", + "- నైవ్ బేస్ మోడల్స్\n", + "\n", + "- సపోర్ట్ వెక్టర్ మెషీన్స్\n", + "\n", + "- నేరెస్ట్ నైబర్స్\n", + "\n", + "- డెసిషన్ ట్రీస్\n", + "\n", + "- ఎన్‌సెంబుల్ పద్ధతులు\n", + "\n", + "- న్యూరల్ నెట్‌వర్క్స్\n", + "\n", + "జాబితా ఇంకా కొనసాగుతుంది!\n", + "\n", + "### **ఏ క్లాసిఫయర్ ఎంచుకోవాలి?**\n", + "\n", + "అయితే, మీరు ఏ క్లాసిఫయర్ ఎంచుకోవాలి? తరచుగా, అనేక మోడల్స్‌ను అమలు చేసి మంచి ఫలితాన్ని చూసే విధానం పరీక్షించడానికి ఒక మార్గం.\n", + "\n", + "> AutoML ఈ సమస్యను క్లౌడ్‌లో ఈ పోలికలను అమలు చేయడం ద్వారా సులభంగా పరిష్కరిస్తుంది, మీ డేటాకు ఉత్తమ అల్గోరిథమ్ ఎంచుకోవడానికి అనుమతిస్తుంది. దీన్ని ఇక్కడ ప్రయత్నించండి [ఇక్కడ](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)\n", + "\n", + "అలాగే, క్లాసిఫయర్ ఎంపిక మన సమస్యపై ఆధారపడి ఉంటుంది. ఉదాహరణకు, ఫలితం `రెండు తరగతుల కంటే ఎక్కువ`గా వర్గీకరించవచ్చు, మన కేసులో ఉన్నట్లయితే, మీరు `బైనరీ వర్గీకరణ`కి బదులుగా `మల్టిక్లాస్ వర్గీకరణ అల్గోరిథమ్` ఉపయోగించాలి.\n", + "\n", + "### **మరింత మెరుగైన దృష్టికోణం**\n", + "\n", + "అనుమానంగా ఊహించడంకంటే మెరుగైన మార్గం, ఈ డౌన్లోడ్ చేసుకునే [ML చీట్ షీట్](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)లోని ఆలోచనలను అనుసరించడం. ఇక్కడ, మన మల్టిక్లాస్ సమస్య కోసం మనకు కొన్ని ఎంపికలు ఉన్నాయి:\n", + "\n", + "

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

మైక్రోసాఫ్ట్ యొక్క అల్గోరిథమ్ చీట్ షీట్‌లోని ఒక భాగం, మల్టిక్లాస్ వర్గీకరణ ఎంపికలను వివరించడం
\n" + ], + "metadata": { + "id": "a6DLAZ3vJZ14" + } + }, + { + "cell_type": "markdown", + "source": [ + "### **తర్కం**\n", + "\n", + "మనం ఉన్న పరిమితుల ఆధారంగా వివిధ విధానాల ద్వారా ఎలా తర్కం చేయగలమో చూద్దాం:\n", + "\n", + "- **డీప్ న్యూరల్ నెట్‌వర్క్లు చాలా భారమైనవి**. మనం కలిగి ఉన్న శుభ్రమైన, కానీ కనిష్ట డేటాసెట్ మరియు మనం నోట్బుక్స్ ద్వారా స్థానికంగా శిక్షణ నడుపుతున్నందున, డీప్ న్యూరల్ నెట్‌వర్క్లు ఈ పనికి చాలా భారమైనవి.\n", + "\n", + "- **రెండు-వర్గాల వర్గీకర్త లేదు**. మనం రెండు-వర్గాల వర్గీకర్తను ఉపయోగించము, కాబట్టి ఒకటి-వర్సెస్-అల్ పద్ధతిని తప్పిస్తాము.\n", + "\n", + "- **డిసిషన్ ట్రీ లేదా లాజిస్టిక్ రిగ్రెషన్ పనిచేయవచ్చు**. డిసిషన్ ట్రీ పనిచేయవచ్చు, లేదా బహుళ వర్గాల డేటాకు బహుళనామ రిగ్రెషన్/బహుళ వర్గాల లాజిస్టిక్ రిగ్రెషన్ ఉపయోగించవచ్చు.\n", + "\n", + "- **బహుళ వర్గాల బూస్టెడ్ డిసిషన్ ట్రీలు వేరే సమస్యను పరిష్కరిస్తాయి**. బహుళ వర్గాల బూస్టెడ్ డిసిషన్ ట్రీ అనేది నాన్‌పారామెట్రిక్ పనులకు అనుకూలంగా ఉంటుంది, ఉదా: ర్యాంకింగ్స్ నిర్మించడానికి రూపొందించిన పనులు, కాబట్టి ఇది మనకు ఉపయోగకరం కాదు.\n", + "\n", + "అలాగే, సాధారణంగా మరింత సంక్లిష్టమైన మెషీన్ లెర్నింగ్ మోడల్స్ (ఉదా: ఎంసెంబుల్ పద్ధతులు) ప్రారంభించే ముందు, ఏం జరుగుతుందో అర్థం చేసుకోవడానికి సాధారణమైన మోడల్‌ను నిర్మించడం మంచిది. కాబట్టి ఈ పాఠం కోసం, మనం `బహుళనామ రిగ్రెషన్` మోడల్‌తో ప్రారంభిస్తాము.\n", + "\n", + "> లాజిస్టిక్ రిగ్రెషన్ అనేది ఫలిత వేరియబుల్ వర్గీకృత (లేదా నామమాత్ర) అయినప్పుడు ఉపయోగించే సాంకేతికత. బైనరీ లాజిస్టిక్ రిగ్రెషన్‌లో ఫలిత వేరియబుల్స్ సంఖ్య రెండు, అయితే బహుళనామ లాజిస్టిక్ రిగ్రెషన్‌లో రెండు కంటే ఎక్కువ. మరింత చదవడానికి [అడ్వాన్స్డ్ రిగ్రెషన్ మెథడ్స్](https://bookdown.org/chua/ber642_advanced_regression/multinomial-logistic-regression.html) చూడండి.\n", + "\n", + "## 4. బహుళనామ లాజిస్టిక్ రిగ్రెషన్ మోడల్‌ను శిక్షణ మరియు మూల్యాంకనం చేయండి.\n", + "\n", + "Tidymodelsలో, `parsnip::multinom_reg()`, బహుళ వర్గాల డేటాను బహుళనామ పంపిణీ ఉపయోగించి లీనియర్ ప్రిడిక్టర్లతో అంచనా వేయడానికి మోడల్‌ను నిర్వచిస్తుంది. ఈ మోడల్‌ను సరిపెట్టడానికి మీరు ఉపయోగించగల వివిధ మార్గాలు/ఇంజిన్ల కోసం `?multinom_reg()` చూడండి.\n", + "\n", + "ఈ ఉదాహరణకు, మనం డిఫాల్ట్ [nnet](https://cran.r-project.org/web/packages/nnet/nnet.pdf) ఇంజిన్ ద్వారా బహుళనామ రిగ్రెషన్ మోడల్‌ను సరిపెట్టబోతున్నాము.\n", + "\n", + "> నేను `penalty` విలువను యాదృచ్ఛికంగా ఎంచుకున్నాను. ఈ విలువను ఎంచుకోవడానికి మెరుగైన మార్గాలు ఉన్నాయి, అంటే `resampling` మరియు `tuning` మోడల్‌ను ఉపయోగించడం, దీని గురించి మనం తర్వాత చర్చిస్తాము.\n", + ">\n", + "> మోడల్ హైపర్‌పారామీటర్లను ఎలా ట్యూన్ చేయాలో తెలుసుకోవాలనుకుంటే [Tidymodels: Get Started](https://www.tidymodels.org/start/tuning/) చూడండి.\n" + ], + "metadata": { + "id": "gWMsVcbBJemu" + } + }, + { + "cell_type": "code", + "execution_count": 6, + "source": [ + "# Create a multinomial regression model specification\r\n", + "mr_spec <- multinom_reg(penalty = 1) %>% \r\n", + " set_engine(\"nnet\", MaxNWts = 2086) %>% \r\n", + " set_mode(\"classification\")\r\n", + "\r\n", + "# Print model specification\r\n", + "mr_spec" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Multinomial Regression Model Specification (classification)\n", + "\n", + "Main Arguments:\n", + " penalty = 1\n", + "\n", + "Engine-Specific Arguments:\n", + " MaxNWts = 2086\n", + "\n", + "Computational engine: nnet \n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 166 + }, + "id": "Wq_fcyQiJvfG", + "outputId": "c30449c7-3864-4be7-f810-72a003743e2d" + } + }, + { + "cell_type": "markdown", + "source": [ + "అద్భుతమైన పని 🥳! ఇప్పుడు మనకు ఒక రెసిపీ మరియు ఒక మోడల్ స్పెసిఫికేషన్ ఉన్నప్పుడు, వాటిని ఒక ఆబ్జెక్ట్‌గా బండిల్ చేయడానికి ఒక మార్గాన్ని కనుగొనాలి, ఇది మొదట డేటాను ప్రీప్రాసెస్ చేస్తుంది, ఆపై ప్రీప్రాసెస్ చేసిన డేటాపై మోడల్‌ను ఫిట్ చేస్తుంది మరియు అలాగే సంభావ్య పోస్ట్-ప్రాసెసింగ్ కార్యకలాపాలకు అనుమతిస్తుంది. Tidymodelsలో, ఈ సౌకర్యవంతమైన ఆబ్జెక్ట్‌ను [`workflow`](https://workflows.tidymodels.org/) అని పిలుస్తారు మరియు ఇది మీ మోడలింగ్ భాగాలను సౌకర్యవంతంగా కలిగి ఉంటుంది! Pythonలో దీన్ని *pipelines* అని పిలుస్తాం.\n", + "\n", + "కాబట్టి మనం అన్నింటినీ ఒక workflowలో బండిల్ చేద్దాం!📦\n" + ], + "metadata": { + "id": "NlSbzDfgJ0zh" + } + }, + { + "cell_type": "code", + "execution_count": 7, + "source": [ + "# Bundle recipe and model specification\r\n", + "mr_wf <- workflow() %>% \r\n", + " add_recipe(cuisines_recipe) %>% \r\n", + " add_model(mr_spec)\r\n", + "\r\n", + "# Print out workflow\r\n", + "mr_wf" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "══ Workflow ════════════════════════════════════════════════════════════════════\n", + "\u001b[3mPreprocessor:\u001b[23m Recipe\n", + "\u001b[3mModel:\u001b[23m multinom_reg()\n", + "\n", + "── Preprocessor ────────────────────────────────────────────────────────────────\n", + "1 Recipe Step\n", + "\n", + "• step_smote()\n", + "\n", + "── Model ───────────────────────────────────────────────────────────────────────\n", + "Multinomial Regression Model Specification (classification)\n", + "\n", + "Main Arguments:\n", + " penalty = 1\n", + "\n", + "Engine-Specific Arguments:\n", + " MaxNWts = 2086\n", + "\n", + "Computational engine: nnet \n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 333 + }, + "id": "Sc1TfPA4Ke3_", + "outputId": "82c70013-e431-4e7e-cef6-9fcf8aad4a6c" + } + }, + { + "cell_type": "markdown", + "source": [ + "వర్క్‌ఫ్లోస్ 👌👌! ఒక **`workflow()`** ను ఒక మోడల్‌ను సరిపోల్చే విధంగా సరిపోల్చవచ్చు. కాబట్టి, మోడల్‌ను శిక్షణ ఇవ్వడానికి సమయం వచ్చింది!\n" + ], + "metadata": { + "id": "TNQ8i85aKf9L" + } + }, + { + "cell_type": "code", + "execution_count": 8, + "source": [ + "# Train a multinomial regression model\n", + "mr_fit <- fit(object = mr_wf, data = cuisines_train)\n", + "\n", + "mr_fit" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "══ Workflow [trained] ══════════════════════════════════════════════════════════\n", + "\u001b[3mPreprocessor:\u001b[23m Recipe\n", + "\u001b[3mModel:\u001b[23m multinom_reg()\n", + "\n", + "── Preprocessor ────────────────────────────────────────────────────────────────\n", + "1 Recipe Step\n", + "\n", + "• step_smote()\n", + "\n", + "── Model ───────────────────────────────────────────────────────────────────────\n", + "Call:\n", + "nnet::multinom(formula = ..y ~ ., data = data, decay = ~1, MaxNWts = ~2086, \n", + " trace = FALSE)\n", + "\n", + "Coefficients:\n", + " (Intercept) almond angelica anise anise_seed apple\n", + "indian 0.19723325 0.2409661 0 -5.004955e-05 -0.1657635 -0.05769734\n", + "japanese 0.13961959 -0.6262400 0 -1.169155e-04 -0.4893596 -0.08585717\n", + "korean 0.22377347 -0.1833485 0 -5.560395e-05 -0.2489401 -0.15657804\n", + "thai -0.04336577 -0.6106258 0 4.903828e-04 -0.5782866 0.63451105\n", + " apple_brandy apricot armagnac artemisia artichoke asparagus\n", + "indian 0 0.37042636 0 -0.09122797 0 -0.27181970\n", + "japanese 0 0.28895643 0 -0.12651100 0 0.14054037\n", + "korean 0 -0.07981259 0 0.55756709 0 -0.66979948\n", + "thai 0 -0.33160904 0 -0.10725182 0 -0.02602152\n", + " avocado bacon baked_potato balm banana barley\n", + "indian -0.46624197 0.16008055 0 0 -0.2838796 0.2230625\n", + "japanese 0.90341344 0.02932727 0 0 -0.4142787 2.0953906\n", + "korean -0.06925382 -0.35804134 0 0 -0.2686963 -0.7233404\n", + "thai -0.21473955 -0.75594439 0 0 0.6784880 -0.4363320\n", + " bartlett_pear basil bay bean beech\n", + "indian 0 -0.7128756 0.1011587 -0.8777275 -0.0004380795\n", + "japanese 0 0.1288697 0.9425626 -0.2380748 0.3373437611\n", + "korean 0 -0.2445193 -0.4744318 -0.8957870 -0.0048784496\n", + "thai 0 1.5365848 0.1333256 0.2196970 -0.0113078024\n", + " beef beef_broth beef_liver beer beet\n", + "indian -0.7985278 0.2430186 -0.035598065 -0.002173738 0.01005813\n", + "japanese 0.2241875 -0.3653020 -0.139551027 0.128905553 0.04923911\n", + "korean 0.5366515 -0.6153237 0.213455197 -0.010828645 0.27325423\n", + "thai 0.1570012 -0.9364154 -0.008032213 -0.035063746 -0.28279823\n", + " bell_pepper bergamot berry bitter_orange black_bean\n", + "indian 0.49074330 0 0.58947607 0.191256164 -0.1945233\n", + "japanese 0.09074167 0 -0.25917977 -0.118915977 -0.3442400\n", + "korean -0.57876763 0 -0.07874180 -0.007729435 -0.5220672\n", + "thai 0.92554006 0 -0.07210196 -0.002983296 -0.4614426\n", + " black_currant black_mustard_seed_oil black_pepper black_raspberry\n", + "indian 0 0.38935801 -0.4453495 0\n", + "japanese 0 -0.05452887 -0.5440869 0\n", + "korean 0 -0.03929970 0.8025454 0\n", + "thai 0 -0.21498372 -0.9854806 0\n", + " black_sesame_seed black_tea blackberry blackberry_brandy\n", + "indian -0.2759246 0.3079977 0.191256164 0\n", + "japanese -0.6101687 -0.1671913 -0.118915977 0\n", + "korean 1.5197674 -0.3036261 -0.007729435 0\n", + "thai -0.1755656 -0.1487033 -0.002983296 0\n", + " blue_cheese blueberry bone_oil bourbon_whiskey brandy\n", + "indian 0 0.216164294 -0.2276744 0 0.22427587\n", + "japanese 0 -0.119186087 0.3913019 0 -0.15595599\n", + "korean 0 -0.007821986 0.2854487 0 -0.02562342\n", + "thai 0 -0.004947048 -0.0253658 0 -0.05715244\n", + "\n", + "...\n", + "and 308 more lines." + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "GMbdfVmTKkJI", + "outputId": "adf9ebdf-d69d-4a64-e9fd-e06e5322292e" + } + }, + { + "cell_type": "markdown", + "source": [ + "మోడల్ శిక్షణ సమయంలో నేర్చుకున్న గుణకాలను అవుట్పుట్ చూపిస్తుంది.\n", + "\n", + "### శిక్షణ పొందిన మోడల్‌ను మూల్యాంకనం చేయండి\n", + "\n", + "మోడల్ ఎలా ప్రదర్శించిందో చూడడానికి సమయం వచ్చింది 📏 టెస్ట్ సెట్‌పై దీన్ని మూల్యాంకనం చేయడం ద్వారా! టెస్ట్ సెట్‌పై అంచనాలు వేయడం ప్రారంభిద్దాం.\n" + ], + "metadata": { + "id": "tt2BfOxrKmcJ" + } + }, + { + "cell_type": "code", + "execution_count": 9, + "source": [ + "# Make predictions on the test set\n", + "results <- cuisines_test %>% select(cuisine) %>% \n", + " bind_cols(mr_fit %>% predict(new_data = cuisines_test))\n", + "\n", + "# Print out results\n", + "results %>% \n", + " slice_head(n = 5)" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine .pred_class\n", + "1 indian thai \n", + "2 indian indian \n", + "3 indian indian \n", + "4 indian indian \n", + "5 indian indian " + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| cuisine <fct> | .pred_class <fct> |\n", + "|---|---|\n", + "| indian | thai |\n", + "| indian | indian |\n", + "| indian | indian |\n", + "| indian | indian |\n", + "| indian | indian |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " cuisine & .pred\\_class\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t indian & thai \\\\\n", + "\t indian & indian\\\\\n", + "\t indian & indian\\\\\n", + "\t indian & indian\\\\\n", + "\t indian & indian\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
cuisine.pred_class
<fct><fct>
indianthai
indianindian
indianindian
indianindian
indianindian
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "id": "CqtckvtsKqax", + "outputId": "e57fe557-6a68-4217-fe82-173328c5436d" + } + }, + { + "cell_type": "markdown", + "source": [ + "చాలా బాగుంది! Tidymodels లో, మోడల్ పనితీరును అంచనా వేయడం [yardstick](https://yardstick.tidymodels.org/) ఉపయోగించి చేయవచ్చు - ఇది పనితీరు మెట్రిక్స్ ఉపయోగించి మోడల్స్ యొక్క సమర్థతను కొలవడానికి ఉపయోగించే ప్యాకేజ్. మనం లాజిస్టిక్ రిగ్రెషన్ పాఠంలో చేసినట్లే, మొదట కన్‌ఫ్యూజన్ మ్యాట్రిక్స్ లెక్కించడముతో ప్రారంభిద్దాం.\n" + ], + "metadata": { + "id": "8w5N6XsBKss7" + } + }, + { + "cell_type": "code", + "execution_count": 10, + "source": [ + "# Confusion matrix for categorical data\n", + "conf_mat(data = results, truth = cuisine, estimate = .pred_class)\n" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " Truth\n", + "Prediction chinese indian japanese korean thai\n", + " chinese 83 1 8 15 10\n", + " indian 4 163 1 2 6\n", + " japanese 21 5 73 25 1\n", + " korean 15 0 11 191 0\n", + " thai 10 11 3 7 70" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 133 + }, + "id": "YvODvsLkK0iG", + "outputId": "bb69da84-1266-47ad-b174-d43b88ca2988" + } + }, + { + "cell_type": "markdown", + "source": [ + "బహుళ తరగతులతో వ్యవహరించేటప్పుడు, దీన్ని సాధారణంగా హీట్ మ్యాప్‌గా దృశ్యీకరించడం మరింత సులభంగా ఉంటుంది, ఇలా:\n" + ], + "metadata": { + "id": "c0HfPL16Lr6U" + } + }, + { + "cell_type": "code", + "execution_count": 11, + "source": [ + "update_geom_defaults(geom = \"tile\", new = list(color = \"black\", alpha = 0.7))\n", + "# Visualize confusion matrix\n", + "results %>% \n", + " conf_mat(cuisine, .pred_class) %>% \n", + " autoplot(type = \"heatmap\")" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "plot without title" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAADAFBMVEUAAAABAQECAgIDAwMEBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUWFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////isF19AAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3deWBU9b3//0+ibApWrbYuvYorXaxoaatWvVqpqG2HsCmLBAqoVXBDjCKbKMqOQUDFFVxKqyhVFLUqWKJsxg3Lz2IFGilLiEqptMX0hpzvnJkMCbx5/W5vz5k5Z+D5/OOc85nEz3w8Mw9mMjmo84gocC7qBRDtCQGJKISARBRCQCIKISARhRCQiEIISEQhBCSiEAISUQgBiSiEgEQUQkAiCiEgEYUQkIhCCEhEIQQkohACElEIAYkohIBEFEJAIgohIBGFEJCIQijHkLb+NUZVRb2Ahn26OeoVNCxWpyZWi/mbeGbnGNJl42PUmbNiVM+7nohRlz4ao/o/HqOuFc/sHEMasShGdfwsRt3+1qYYNXJ9jLq9MkZNE89sIMUkIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSbI+EVLQktatJvB8FpNGtv9LoqMteTx7d/f2vND6h5M3oIS07xT0XxjyhQJpx+sGNj79pbfCJgkJ6o7V72t/f4FKdFSmkRa3dnNTBgnYHNPneY7GCVPvB1ggg3ezaTZraq+C8RYvGF7a64cbW7rLIIU1sdmR8IE1ynX4957qC9pFDGtvsiDSkywsn+D0eJaRxycWkIC1pcdzYSecUzIwTpP+0YJBOONJ/CTqncP6iI49YsGjRwqMOjhrSS03GTY0PpJNaVia3P92nImJIc5vcWZqG1LVFoInCgPRCkzF3pyF1bLa8snLdd1pGC+nTOy8uvvdLr+iVEZ2KF/hv7WoTC0f07zvf8zaP79Vl8CrPe+2qzsX3Vu8YZgHS8cf624sKF5RdO84/+plbEDGk8oWfxQjSt7/pb7vu80ngmYJBWvTa+jpIPz0ickhLFlSmIa1vVuSPR7lXI4V0w9jN6wdM94qu+fCfj3XZ5v+MVDRwi/dKl23eoPFfVD/es3pj+/e3b7xudmaYDUjD3C+fmz+6aee64Zsnfz3QdOF82BAjSFPckOV/nrFfv+AzBf6woQ7SWa3Wr18dLaRkaUiL3FB/MMdNjhLS6sTG5KbcK3ra8zYmKlKQ5nrepsQnqxKbkz8zdStblVjtedu9zDD5zyxpn+wPIUJadFsz5wp7pz5i+P1vH2i372gg7dT9+yfPz/WVwScKC1Lrlh0PdAddvyYOkJ5zd/mDN9ywKCG92b42tS9anHwvl/g4BSl9WJZINbv2ng4ls9Z7mWHye9/4cbL3QoR0T/MzRt91SWHqI4bJzh0+KdBsex6kZw/4yYzfXL7PzfGB1LKw20P3F7mL4gDpSTfVHyxzN0YJaVH77WlIS+ohpQ+XJjJv4zbNG9mhrH64uwJBeuPwE/0Xo66FTya3L44f2ragF5AatPGo7/ovRlcULo0NpLff87dd3ZwYQHrOTfIHZW54lJDWJCo876MXdgNpbWJl8usbvZotyd30wZlhFiA97VJwJrjMLL9wDwGpvrfddf7uCXdPbCCle8IFmi8kSEvcLf7gqfQLU1SQvEEjKtddd+9uIHlDS6pqXuzy+at9Pq7dPGRKZpgVSD383Wg3+PkbHkyTugVI9ZW7/v7uEXdXbCCtXOlv73fjYgBpQ4uf+4MhrixSSFvu6NJz2rbdQdo8ruslJSu82ll9Ova6+++ZYRYgvdH8mDeSuw7usRcLT/WPLnGTgVTfxq+02pjc9Xa/jwukdwsv9AfnFbwRA0iVlzZ5p7Jy7bHfDjTXHnGt3UB32qgJFxe2XbSo2H332pLzC77zRsSQ5pWW9nADSkvfiQOkTXe6Hz/wxOWFRcFnCgbp2QkTurorJ0xYvL6Paztu1OmuX6DpgkGaO2lSN9d/0qRlle8dfPTQO37QaA6QFo06qWmjlleWLVr0Zkmrps2O7fFqoNlCgNQ7fS2ZezAWkDY9+P39Gp8wZH3wiYJB6ll3Vu5dv3ZM6xZNT5kYaLaAkHrVLWZ6ZeWiC1s0Pe2ZQLPtIZDCjau/ZVz9rQKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEgqINmAJAOSCkg2IMmApAKSDUgyIKmAZAOSDEiqmEDqOSJGnXJfjOpw+z0xqtOUGNU76rPRsMvEMzvHkEa+GqMuHBajznv8tRg1IOoFNGzgKzFqiHhm5xjSvZ/GqF/MjFHd3on6zWXD7ox6AQ27oypG3Sue2UCKSUCSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyhQTpraYHhzDLL/7zp/3YY9zg1MFDHQ7Z92sXz0ge3fTt5o2O6j0jWkjLTnHPhTFPGJDmt23e/OTSquAThQFpXcl/NW45bFPwiUKEVJN4f6fxpkTFrjdlGVLVmS5aSL0bH1wH6QeFF155puswc+b1BUf37HWi6xQppInNjowNpJcbtbx90jnuluAzhQEpsc9V0y9xJcEnChFS7Qdbd4W0601ZhjSp8bmRQhrWqPiyNKQS1y25/f43Z8z82qEPzJz58GEHRAnppSbjpsYG0o8O+ONnn1V9Z7+NgWcKAdJsd1ty+/Mzg78kZfGtXRLSv/29oUD6wwEll0YKadyomXWQftT0ofRND/e4zt+d7R6IEFL5ws/iA2nydH/bx/0p8EwhQOrSfF3wSVKF+9auNrFwRP++8z1v9aAuVy9Mv7WrGN6964gN3o4vZQ/SRSeujxZSsjpIh540c2aDH4tmnPDV/3TCkD5siA+kdOceGnyOECAdfW5VVWXwaapC/xmpaOAW75Uu22r7lW6rGpKGdGXptn+MKfEyX8oepIcK5n0aE0gzCs7t8/WC/S9KvQw9dNfw0/e5BkgNe9jdHnyS4JA2FfaadEzBQf0/iR+kuf5buk/+mNjoeUvSkLZ+6XmLO9RmvpT8xgVtkr0dNqQ/HdL307hAut8deuxVN15Y0Ma/qcS5Q274jyfcIyH9utlFsfjUrsId9b0Hnrqq8Gfxg7TY8zYnPi5rv93zPklDWj6kuLhboibzpeQ3lvdM9mHYkLoeviY2kB50zacndz9xtya3U6+/7LSCBJDqG7dPpw0hTBMc0l/cQWuSu8vcK7GDtCSlZX77Ws9bk4K0odPsam+pD2lJBtJuCg7pqYKHKyoquh1csS4GkGY2+6a/HeT61N3cPkUKSKmudIM+DWOeEH5GanGmv/2NuyvwTNmBtDxR6XllKUhlRTWe92j2IfVzdZ0fB0itDvO317orphQP948Gur5AqmtgQWkIs3wWCqQzjve3j7l7As+UHUjVPUq3rrs5BWllYsW/Fg5OVGUb0tsv+LU74IU34wCplytJbs8oHD+14Jv+p3ftUmMgJXvahfWJRQiQxrunk9su+7wVeKbsQPI+ur7z1e8k/uzfNKN7jylbB3bblGVI6aL9GWlonz5nu4v69Jkw86GWTdr3+6E7f+bMn7nju/c+veC4//QaoTAgzSst7eEGlJYGnyq4gcrjDipN9V7gqUKAtK71foPuLnKXB59pz7rWLmJIP657d3nVzJn3tv3KPocVJ/XM6H1046bfuGj6fzpnGJB6163rwcAzBYf0UeYt+GOBpwrjEqGP+3yt0XFj43WtXZC4+lvF1d8yrv62AUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAckGJBWQZECyAUkFJBmQbEBSAUkGJBuQVECSAcl28S9jVKt2Mer4blGfjob9KOoFNOxnV8Soi8QzO8eQ7loVo7r/JUYNf/KNGDXkTzFq1PoYNU08s3MMafLaGNUz6rcJDbvtmWUxanhFjIrV+8z7xDMbSDEJSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIs/yBt6n1EoUsFpFwHJFn+Qbp437a9+6UCUq4Dkiz/IH312WwBAtL/FpBk+QdpvyogRRWQZPkH6ezXgRRVQJLlH6S3f7gYSBEFJFn+QTrzv9x+R6cCUq4Dkiz/IJ3dNhOQch2QZPkHKfsBSQUkWT5C+uyFBx56+Qsg5T4gyfIP0vZBjfzLGvYfD6ScByRZ/kEa7zo+/OIL91/gHgVSrgOSLP8gfeuG9P6K7wEp1wFJln+QmsxP7+c1A1KuA5Is/yDt/3x6/2xzIOU6IMnyD9JZP672d9vanQukXAckWf5Bmldw1JWjbr/8iMJXgZTrgCTLP0jeb7/pf/z93XnZcgQkGZBkeQjJ89a/VV6ZNUZA0gFJlpeQshyQVECS5RmkVqO9VjsCUq4DkizPIJ1W6p22IyDlOiDJ8gxSTgKSCkiy/IPU5sP0/ulvASnXAUmWf5BceWr3P7c1BlKuA5Is3yC5+rhoNecBSZZvkN6/2xWl/uuQl434C5ByHZBk+QbJ8y74U7YAAel/C0iy/IPkbZyS3FTdtglIOQ9IsvyDtPIw/1OGCnfYaiDlOiDJ8g9Sh+Pf8ncfHt8JSLkOSLL8g3ToI+n9/S2AlOuAJMs/SM2eSO9/tV9MIc07t3nzk8ZW+Ie/P9k9GT2kkvSvC86OGtJrmV9cjF+2bNoPvtL4xMFLo4T0/Dn773/SmDUVFdenV3Vm9JCWneKeC2OefwvSjy6o8Xdf/ODMzC01ifdjBOnZfY8eNuYsd2PycHSzI+IA6ZeFd/n9OmpIbw5JdX7Br5ZNKmx1402nuCsihPTbfY8eOvosN6iiom/hWL+ZkUOa2OzIHEJ6ueDYASNH9Dm08OXMLbUfbI0RpNNbvLt2bcW391uz9rdNRk2KA6TuBwSfI10Yb+1eP7TDsmXfOLJs2bJFRx8cIaTTWrxdUbHmW/utqri4RaCJQoP0UpNxU3MIyXuljf9CfHJc/4bs+Lv9bbFbvrbsd2tjAelnRwafI10YkC458NVliwdO9A9/7sqigzRusr/t6d6ruPDweEAqX/hZTiF53mcf/H8N/4vF/lu7iuHdu47Y4FUnXh7cr+9SLzOuTSwc0b/vfM/bPL5Xl8GrPO+1qzoX31u9Y5gFSOnOPiS1iwWks1tVVa0NPk1VKJCeLCzJHC5tfVigqcL4sOHsQyoqzjyxomJlDCAlyzGkXfIhXVm67R9jSpKH1/3Ve7XDlszYKxq4xXulyzZv0Pgvqh/vWb2x/fvbN143OzNM/sP/XJfsy7Ah3eeGxQfSKcd0PsgdNOgvsYB0/qFvpPZvzH34gn3HRg3pHje0ouLklkUHuoOu/WhvgrTbvyHrQ9qatLC4Q21N4jnP2971lczYK5rreZsSn6xKbE7+LNWtbFVidfLrXmaY/IcXtEn2dsiQZjZrVxEfSMcU9pj5UEf30+AzBYf0ZOGg9MFU5w4vDTZXcEiPNDt/TUVFy8JL7r8n4S7YmyDt9m/I+pCWDyku7paoqUksS95w1azM2CtanHxbl/i4LJFqdu09HUpmrfcyw+T3rrg52c4XSQSGNGqfotVr4wPp/RX+trubG3im4JC6Nn49ffC7icPPL/hFtJBu36f9x8ndknJ/cLF7ai+CtNuSkDZ0ml3tLfUh+f9fzCt+nRl7RUtSkJYmquu+edO8kR3K6oe7Kyikfu7aT9bGCFK637hRgecIDGnp13/UYNTXzYgSUl93zZ/rR4+6EUB6v6yoxvMe9SE97XnVnV/LjDOQ1iZWJr9xo1ezJbmbPjgzzAqkqwvG7jiOBaTVq/3tQ25i4JkCQ3rE3eLvXip5xN/d5YZGCGlAwZj0wYoV/vYeN3ovgrR/g3b8DdkkpJWJFf9aODhRVZMYUFE9q+PfMuMMJG9oSVXNi10+f7XPx7Wbh0zJDLMB6VduZP0gDpA+KLzI37UtWBI9pKvdr/zd7wq/tyS56+qmRgfp8cwr0LLCdv7u3ILX9yJIXZO1anRG5w6nFLS5ugEkb0b3HlO2Duy2IfHiTZ37lXuZ8aYMpM3jul5SssKrndWnY6+7/54ZZgHSmmMPHDvOb8naOePGXeJ+OW7cm9FCqurnzp8w+gx3efCZAkP6uft9at/bnXz9ze0KTloSGaRVxxw4JnVBw6KK3u680SN/6PoEmS4MSPNKS3u4AaWl7+QAUrLZJ23wdyu/ObchpB2H74g5/g8FgvR+5oKyB9deWnc0LWJIG8efckDTU0uDTxQc0tmF6f3Swa2aNjuu5+uBJgsE6d3M4/RAxeo7Tm7RtPW4QI7CgNQ788zJDaSTnkrv72tdd8P2jxI7PnWLHlLYcfW3jKu/Vf8WpMavpfezm9TdsLDDqFog5SQgyfIP0hGXpna1XQ8PTgZI/7eAJMs/SLe67147atSAb7nBQMp1QJLlH6TacYf7P5EdMrwGSLkOSLL8g5Sk9Mmypau3Z4sRkHRAkuUjpG1vzfnU+x8g5T4gyfIQ0sQWzi3xhvwia5SApAKSLP8gPeDaT09CenTf8UDKdUCS5R+kk6/0tiUhebecCKRcByRZ/kFq+moa0u8aASnXAUmWf5C+9nwa0lMHACnXAUmWf5B+cs4/fUifn9QOSLkOSLL8g/T6Psdf5/r2PqDRm0DKdUCS5R8k77VT/Ssbfvj7bDkCkgxIsjyE5Hmb3ntvc9YYAUkHJFn+QToje/+JVSD9LwFJln+QvjEJSFEFJFn+QXruW7/9F5CiCUiy/IN09ndd4yOO9gNSrgOSLP8gnXle27qAlOuAJMs/SNkPSCogyfIO0rZlb24BUkQBSZZvkCa3cK5R/y/FNwIpuwFJlmeQnnEtbxh2lrtafCOQshuQZHkG6eyW/v8utm+jvwEpioAkyzNIzYf727dc1i5YBdL/X0CS5Rkkd7+/3eBeFt8JpKwGJFm+QXrQ3250LwEpioAkAxKQ/v2AJMs3SLcsSTbPlfo7IOU6IMnyDVLDgJTrgCTLM0i3NgxIuQ5IsjyDlJOApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZAOSCkgyINmApAKSDEg2IKmAJAOSDUgqIMmAZOvQM0Yd/4sYdWq7TjHqB5fGqJ/2iVEXimd2jiFNWR+jij+PUaOWboxRiWkxanTUj03DYvKKBCQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiQbkFRAkgHJBiQVkGRAsgFJBSQZkGxAUgFJBiRbUEhvtHZP+/sbXKqzIodUduEBTdr8KoSJAkNa1No9s+tRFJBGHOWuSx1cf3zjxifcsPNtkUEK7XEKBVJN4p1oIY1tdkQa0uWFE/wejxrS2y2OmzD53IIngs8UFNK45Kl5ZpejKCB1a3xQGs2V7shLLj1s35sa3hYZpPAepz0C0twmd5amIXVtEWii0CB1bvbh559vOumY4DMFhPR8k9GT03zqj6KANKjRJT3TaA498K5p0ya0aNXwtsgghfc47RGQFr22vg7ST4+IBaSqZh393Wj3euCpAkJaPH9jHZ/6oygg3XrLtDSaMe4sf9y2YHz9bZFBCvFxCg1SzbCRNX8d36tzyYfe9sTv+k32No/v1WXwKs+rGN6964gNXm1i4Yj+fednBVKyOkhntVq/fnX0kJa54f5urpsaeKrgHzbU84kQUrI0mjvcef6gixtYf1tkkEJ8nEKDVFrypTfo1i1fPtz1b17RwFX/9AaN/6L68Z7V3pWl2/4xpsRL3rjFe6XLtuS3f74s2d+yAql1y44HuoOuXxMxpBfc3f5uiRsReKo9DdLU/Y7yB23cZTGAFOLjFBakJ/p/4a1OrPW86osXeEVPet6qxGbPq+1W5m390vMWd6j1iuZ63qbEJ8lvX9Am2dtZgdSysNtD9xe5iyKG9Iy7z9+9424KPNWeBmlawv33yNsuaOH6xgBSiI9TSJDGJv7geW+2r00O+v/GKyrzvLJEqtne8iHFxd0SNV7RYs/bnPcB240AABDoSURBVPg4+R2rpyRblxVIb7/nb7u6OdFCmucm+7vF7tbAU+1xkO4+r8C5b13qrowBpBAfp5Ag9RsxsKYO0lVPeEVLPG9pojr1tQ2dZlcnBzWpG9OQdlNYkNI94UZGC+ltN8zfzUn/gReoPQ7StGljS+5M/ow0LAaQQnycQoJUvrXPI94a/43bts7zU2bWJlYmv7LRKyuq8bxHcwVp5Up/e78bFy2kT1sk/N1wtzjwVHsgJL/v7jclBpBCfJxC+7BhRYd3vZKRX2y7r+c/Uma8oSVVNS92+XxlYsW/Fg5OVOUE0ruFF/qD8wreiBbS58VNln/++YZjvxN8pj0O0umHTp42bXDhORZX7iGF+DiF93ukx4u3VN3R89Lbkj/8pCBtHtf1kpIVnjeje48pWwd225RFSM9OmNDVXTlhwuL1fVzbcaNOd/0CTRcCpD98teXwMT9sNDf4TAEhzZ04sZu7auLEpQ2OooB0Q48ep7u2PXqMnHZFwQnFHZp/dWzD2yKDFN7jtEdca9czfYWdu3f92jGtWzQ9ZWKg2UK51m7ZRS2anvFcCBMFhFRcd2rua3AUBaSz6u69z7Rpfb7RqPlpd+58W1SQwnuc9ghIIcfV3zKu/lYByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSRUTSB2LY9SJfWJUm469Y1TLs2NUIurHpmEXimd2jiFNq4xRvaP+c79ht77zWYwatSlGXV8eo24Xz2wgxSQgyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSDYgqYAkA5INSCogyYBkA5IKSDIg2YCkApIMSLagkBa1dnNSBwvaHdDke49FCym5mGd2PYoW0pz/PrjJSZM+DT5RcEh/cnXNjBbSgsw6JpSXzzq7eeOT7oo1pKIlOw1rEu9nBdK4ZkekIS1pcdzYSecUzIwSkr+YZ3Y5ihbSrMKTx0443Q2OA6R1d6UqKng9WkiLh6Y6v2BW+Zz9j7p56GkFE+MKafnHBlLtB1uzAemFJmPuTkPq2Gx5ZeW677SMENLzTUZPTvOpP4oYUsuj13322cbjD40DpHSrDy8OPkkIb+0WHtqxvPyCpi+Vly894RtxhXTbiwaSLBikJQsq05DWNyvyx6Pcq9FBWjx/Yx2f+qNoIVXe8YS/6+HWxQbSZQd/FHySECB1PXB++bKm5/uHg9wT8YQ0pH2n672iV0Z0Kl7geRXDu3cdsSFrb+0q6yAtckP9wRw3OTpIyer5xAJSuk9P+0bwSUKC9Gbh2BBmCQ5pduHN5eVPuwH+8XQ3Ip6QvH7+K9I1H/7zsS7bvCtLt/1jTEkdpPXPJKvKBqTn3F3+4A03DEg7tWH5y50bzQw+T0iQOhz+lxBmCQ6p3aGLyssfcMP846fc1XGG9LTnbUxUeFu/9LzFHWrTkBa0SfZ2NiA96ab6g2XuRiDt1DPOHfWbEOYJB9KbhXeGMU1gSLMLb0xup7nb/MGz7vI4Q1rseZsTH3vLhxQXd0vUZP8VaZI/KHPDgbRTH/1qaseCgcHnCQfS5Y1XhzFNYEjdGi9Mbh90Q/3BU+6aOENakoK0odPsam9pBtJuCgnSEneLP3gq/cIEpJ0a5F4NPEcokCqP+EkY0wSG9NbXz/R3c1x/f3dP+oUp3pDKimo879HsQ9rQ4uf+YIgrA1J9fxz3O3/3azc5HpBecpPCmCYwpBnpl6Jl+5/n7wa4p2IKqf/Df89AWplY8a+FgxNV2YZUeWmTdyor1x777UBz7WmQPio8syq5+6V7Jh6Qhrvgv4z1CwrpGjcrte/Q+Pny8kX/dUKgybIIaW7nPhlI3ozuPaZsHdhtQ3YgzZ00qZvrP2nSssr3Dj566B0/aDQnQkhzJ07s5q6aOHFpg6NoIX12nfvhqImdCr5fFQ9I3d2aMKYJDCnhFqb28w48csCgk/edHldI/5eCQepVd9nU9MrKRRe2aHraM4FmCwipuG4x9zU4ihjSp5NObrb/t66uCD5TKJAuKAxjluCQ/ruw7uDpc/Zvcup9wSbbIyCFHFd/y7j6WwUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkFZBsQJIBSQUkG5BkQFIByQYkGZBUQLIBSQYkVUwgzXg8Rg2MegENGzY16hU07NqoF9CwWD1O08QzO8eQiPbMgEQUQkAiCiEgEYUQkIhCCEhEIQQkohACElEIAYkohIBEFEJAIgohIBGFEJCIQghIRCGUl5CmTY56BQ2ad+emqJdQ34d3Lo16CfV9eeesqJfQoBl3ZnX6vISUaBf1Chp0R5uPo15Cfa+2eTzqJdS3tc3VUS+hQb2/n9XpgRQ0IKmAFPeApAKSDEg2IKmAJAMSUfwDElEIAYkohPIDUtGS1K4m8X7ECzFL2JSoyPmqYnAaTDWJd6Jegq7u6ZMpK+cvryDVfrA14oWYJSQh5XxVMTgNpthCWv6xgZSV85dXkGJYElLUS4hFsYV024u5efrEHNKnd15cfO+XXtErIzoVL/Bfk2sTC0f07zvf8zaP79Vl8CrPe+2qzsX3Vu8YZruGS1g9qMvVC9Nv7SqGd+86YoO340vZXkPmDqsTLw/u13epZxaQ69PjQ6oZNrLmr+N7dS750Nue+F2/yTvuNadnZ+eGtO90febpk1nH3vjW7oaxm9cPmO4VXfPhPx/rss0/A0UDt3ivdNnmDRr/RfXjPas3tn9/+8brZmeGWV9QgyXU9ivdVjUkDenK0m3/GFPi7Vhd1tdQd4c1iev+6r3aYYtZQK5Pjw+ptORLb9CtW758uOvfkutY9c8d95rTs7NL/fxXpPTTp/6k7XWQVic2JjflXtHTnrcx/ZQtmuu/n/pkVWJz8s1ut7JVidWet93LDLO+ogZL+KO/uCXpVW390vMWd6jNfCn7a6i7w5rEc8l//a6v7LqAnJ+eJKQn+n+RfMDWel71xQu8oie9+nvN6dnZpRSk9NOn/qTtdZDebF+b2hctTr5ZSXycehanD8sSqWbX3tOhZNZ6LzPM+ooaLqH9ds/7JA1p+ZDi4m6JmsyXsr+GujusSSxL3nDVrF0XkPPTU5MYm/hD5gHr/xuvKIl2x73m9OzsUgpS3f3uOGl7HaRF/nPVS/+0mIGUPlyayLxP2TRvZIey+mGWa7CE+f6TZk0K0oZOs6u9pf5TZUluIGXusCaRfI54V/x61wXk/PTUJPqNGFhTB+mqJ1LryNxrbs/OLvV7ccfTp/6k7XWQ1vifiX30wm4grU2sTH59o1ezJbmbPjgzzHoNlrA8Uen/qetDKiuq8bxHcwgpc4c1ieS7lurOr+26gJyfnppE+dY+jyQfsOQbt22d56fWkbnX3J6dXWoAqf6k7XWQvEEjKtddd+9uIHlDS6pqXuzy+at9Pq7dPGRKZpj1BTVYQnWP0q3rbk5BWplY8a+FgxNVOYOUucOaxICK6lkd/2YWkOvT43/YsKLDu17JyC+23dfzH+lPnOvuNbdnZ5f6P/z3zP3Wn7S9D9KWO7r0nLZtd5A2j+t6SckKr3ZWn4697v57Zpj1Gi7ho+s7X/1O4s/+TTO695iydWC3TbmClLnDDYkXb+rcr9wzC8j16Un9Hunx4i1Vd/S89LZ1db+6ydxrTs/OLs3t3GfHA7bjpO19kGg3NfgTNba/B93rAlLetf0j/zPtdECKS0DKuxZ2GFWbOQZSXAISUQgBiSiEgEQUQkAiCiEgEYUQkPK3X7pMp+32622Pzu169uqAlL+9PnXq1Gtd5+TWXNb9nv+4AimHASm/e92V7u7mKUDKcUDK7+ognXn28984w2vd2j8u+qp3QfLtXhuv7XFrLmze/JLsX8lLQMr36iCdd/I373mhHtKfilz5h17blq1HP3tjwS+iXeFeEpDyuzpIbd2c5HYHJK+f23Hjj74W4fL2noCU32UgNf6XZyE19a/J61UY4fL2noCU32UgHeFvd4V0tD/sx0OcizjL+V0G0tH+FkjRxVnO73aCdOpJ/vY0IEUQZzm/2wnSeYckfyja1CwJ6TL3P0DKaZzl/G4nSJPdmMp3f/ydJKQR7rangZTLOMv53U6Qqm84sknr5we08Ly/nNqoFZByGWeZKISARBRCQCIKISARhRCQiEIISEQhBCSiEAISUQgBiSiEgEQUQkAiCiEgEYXQ/wMhANIDIZLX1QAAAABJRU5ErkJggg==" + }, + "metadata": { + "image/png": { + "width": 420, + "height": 420 + } + } + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 436 + }, + "id": "HsAtwukyLsvt", + "outputId": "3032a224-a2c8-4270-b4f2-7bb620317400" + } + }, + { + "cell_type": "markdown", + "source": [ + "కన్ఫ్యూజన్ మ్యాట్రిక్స్ ప్లాట్‌లో గాఢమైన చతురస్రాలు ఎక్కువ కేసుల సంఖ్యను సూచిస్తాయి, మరియు మీరు ఆశిస్తున్నట్లుగా, అంచనా వేయబడిన మరియు వాస్తవ లేబుల్ ఒకటే ఉన్న కేసులను సూచించే గాఢమైన చతురస్రాల диагోనల్ రేఖను చూడవచ్చు.\n", + "\n", + "ఇప్పుడు కన్ఫ్యూజన్ మ్యాట్రిక్స్ కోసం సారాంశ గణాంకాలను లెక్కించుకుందాం.\n" + ], + "metadata": { + "id": "oOJC87dkLwPr" + } + }, + { + "cell_type": "code", + "execution_count": 12, + "source": [ + "# Summary stats for confusion matrix\n", + "conf_mat(data = results, truth = cuisine, estimate = .pred_class) %>% \n", + "summary()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " .metric .estimator .estimate\n", + "1 accuracy multiclass 0.7880435\n", + "2 kap multiclass 0.7276583\n", + "3 sens macro 0.7780927\n", + "4 spec macro 0.9477598\n", + "5 ppv macro 0.7585583\n", + "6 npv macro 0.9460080\n", + "7 mcc multiclass 0.7292724\n", + "8 j_index macro 0.7258524\n", + "9 bal_accuracy macro 0.8629262\n", + "10 detection_prevalence macro 0.2000000\n", + "11 precision macro 0.7585583\n", + "12 recall macro 0.7780927\n", + "13 f_meas macro 0.7641862" + ], + "text/markdown": [ + "\n", + "A tibble: 13 × 3\n", + "\n", + "| .metric <chr> | .estimator <chr> | .estimate <dbl> |\n", + "|---|---|---|\n", + "| accuracy | multiclass | 0.7880435 |\n", + "| kap | multiclass | 0.7276583 |\n", + "| sens | macro | 0.7780927 |\n", + "| spec | macro | 0.9477598 |\n", + "| ppv | macro | 0.7585583 |\n", + "| npv | macro | 0.9460080 |\n", + "| mcc | multiclass | 0.7292724 |\n", + "| j_index | macro | 0.7258524 |\n", + "| bal_accuracy | macro | 0.8629262 |\n", + "| detection_prevalence | macro | 0.2000000 |\n", + "| precision | macro | 0.7585583 |\n", + "| recall | macro | 0.7780927 |\n", + "| f_meas | macro | 0.7641862 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 13 × 3\n", + "\\begin{tabular}{lll}\n", + " .metric & .estimator & .estimate\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t accuracy & multiclass & 0.7880435\\\\\n", + "\t kap & multiclass & 0.7276583\\\\\n", + "\t sens & macro & 0.7780927\\\\\n", + "\t spec & macro & 0.9477598\\\\\n", + "\t ppv & macro & 0.7585583\\\\\n", + "\t npv & macro & 0.9460080\\\\\n", + "\t mcc & multiclass & 0.7292724\\\\\n", + "\t j\\_index & macro & 0.7258524\\\\\n", + "\t bal\\_accuracy & macro & 0.8629262\\\\\n", + "\t detection\\_prevalence & macro & 0.2000000\\\\\n", + "\t precision & macro & 0.7585583\\\\\n", + "\t recall & macro & 0.7780927\\\\\n", + "\t f\\_meas & macro & 0.7641862\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 13 × 3
.metric.estimator.estimate
<chr><chr><dbl>
accuracy multiclass0.7880435
kap multiclass0.7276583
sens macro 0.7780927
spec macro 0.9477598
ppv macro 0.7585583
npv macro 0.9460080
mcc multiclass0.7292724
j_index macro 0.7258524
bal_accuracy macro 0.8629262
detection_prevalencemacro 0.2000000
precision macro 0.7585583
recall macro 0.7780927
f_meas macro 0.7641862
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 494 + }, + "id": "OYqetUyzL5Wz", + "outputId": "6a84d65e-113d-4281-dfc1-16e8b70f37e6" + } + }, + { + "cell_type": "markdown", + "source": [ + "మనం ఖచ్చితత్వం, సున్నితత్వం, ppv వంటి కొన్ని ప్రమాణాలపై దృష్టి సారిస్తే, ప్రారంభానికి మనం బాగా తప్పలేదు 🥳!\n", + "\n", + "## 4. లోతుగా పరిశీలించడం\n", + "\n", + "ఒక సున్నితమైన ప్రశ్న అడుద్దాం: ఒక నిర్దిష్ట రకమైన వంటకాన్ని అంచనా ఫలితంగా ఎంచుకోవడానికి ఏ ప్రమాణం ఉపయోగించబడుతుంది?\n", + "\n", + "బాగుంది, లాజిస్టిక్ రిగ్రెషన్ వంటి గణాంక యంత్ర అభ్యాస అల్గోరిథమ్లు `సంభావ్యత` ఆధారంగా ఉంటాయి; కాబట్టి వాస్తవానికి ఒక వర్గీకర్త ద్వారా అంచనా వేయబడేది అనేక సాధ్యమైన ఫలితాలపై ఒక సంభావ్యత పంపిణీ. అత్యధిక సంభావ్యత కలిగిన వర్గం ఆ గమనికలకు అత్యంత సాధ్యమైన ఫలితంగా ఎంచుకోబడుతుంది.\n", + "\n", + "కఠిన వర్గ అంచనాలు మరియు సంభావ్యతలను రెండింటినీ చేయడం ద్వారా దీన్ని చర్యలో చూద్దాం.\n" + ], + "metadata": { + "id": "43t7vz8vMJtW" + } + }, + { + "cell_type": "code", + "execution_count": 13, + "source": [ + "# Make hard class prediction and probabilities\n", + "results_prob <- cuisines_test %>%\n", + " select(cuisine) %>% \n", + " bind_cols(mr_fit %>% predict(new_data = cuisines_test)) %>% \n", + " bind_cols(mr_fit %>% predict(new_data = cuisines_test, type = \"prob\"))\n", + "\n", + "# Print out results\n", + "results_prob %>% \n", + " slice_head(n = 5)" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " cuisine .pred_class .pred_chinese .pred_indian .pred_japanese .pred_korean\n", + "1 indian thai 1.551259e-03 0.4587877 5.988039e-04 2.428503e-04\n", + "2 indian indian 2.637133e-05 0.9999488 6.648651e-07 2.259993e-05\n", + "3 indian indian 1.049433e-03 0.9909982 1.060937e-03 1.644947e-05\n", + "4 indian indian 6.237482e-02 0.4763035 9.136702e-02 3.660913e-01\n", + "5 indian indian 1.431745e-02 0.9418551 2.945239e-02 8.721782e-03\n", + " .pred_thai \n", + "1 5.388194e-01\n", + "2 1.577948e-06\n", + "3 6.874989e-03\n", + "4 3.863391e-03\n", + "5 5.653283e-03" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 7\n", + "\n", + "| cuisine <fct> | .pred_class <fct> | .pred_chinese <dbl> | .pred_indian <dbl> | .pred_japanese <dbl> | .pred_korean <dbl> | .pred_thai <dbl> |\n", + "|---|---|---|---|---|---|---|\n", + "| indian | thai | 1.551259e-03 | 0.4587877 | 5.988039e-04 | 2.428503e-04 | 5.388194e-01 |\n", + "| indian | indian | 2.637133e-05 | 0.9999488 | 6.648651e-07 | 2.259993e-05 | 1.577948e-06 |\n", + "| indian | indian | 1.049433e-03 | 0.9909982 | 1.060937e-03 | 1.644947e-05 | 6.874989e-03 |\n", + "| indian | indian | 6.237482e-02 | 0.4763035 | 9.136702e-02 | 3.660913e-01 | 3.863391e-03 |\n", + "| indian | indian | 1.431745e-02 | 0.9418551 | 2.945239e-02 | 8.721782e-03 | 5.653283e-03 |\n", + "\n" + ], + "text/latex": [ + "A tibble: 5 × 7\n", + "\\begin{tabular}{lllllll}\n", + " cuisine & .pred\\_class & .pred\\_chinese & .pred\\_indian & .pred\\_japanese & .pred\\_korean & .pred\\_thai\\\\\n", + " & & & & & & \\\\\n", + "\\hline\n", + "\t indian & thai & 1.551259e-03 & 0.4587877 & 5.988039e-04 & 2.428503e-04 & 5.388194e-01\\\\\n", + "\t indian & indian & 2.637133e-05 & 0.9999488 & 6.648651e-07 & 2.259993e-05 & 1.577948e-06\\\\\n", + "\t indian & indian & 1.049433e-03 & 0.9909982 & 1.060937e-03 & 1.644947e-05 & 6.874989e-03\\\\\n", + "\t indian & indian & 6.237482e-02 & 0.4763035 & 9.136702e-02 & 3.660913e-01 & 3.863391e-03\\\\\n", + "\t indian & indian & 1.431745e-02 & 0.9418551 & 2.945239e-02 & 8.721782e-03 & 5.653283e-03\\\\\n", + "\\end{tabular}\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 7
cuisine.pred_class.pred_chinese.pred_indian.pred_japanese.pred_korean.pred_thai
<fct><fct><dbl><dbl><dbl><dbl><dbl>
indianthai 1.551259e-030.45878775.988039e-042.428503e-045.388194e-01
indianindian2.637133e-050.99994886.648651e-072.259993e-051.577948e-06
indianindian1.049433e-030.99099821.060937e-031.644947e-056.874989e-03
indianindian6.237482e-020.47630359.136702e-023.660913e-013.863391e-03
indianindian1.431745e-020.94185512.945239e-028.721782e-035.653283e-03
\n" + ] + }, + "metadata": {} + } + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "id": "xdKNs-ZPMTJL", + "outputId": "68f6ac5a-725a-4eff-9ea6-481fef00e008" + } + }, + { + "cell_type": "markdown", + "source": [ + "మంచిది!\n", + "\n", + "✅ మోడల్ మొదటి పరిశీలన థాయ్ అని pretty sure గా ఎందుకు అనుకుంటుందో మీరు వివరించగలరా?\n", + "\n", + "## **🚀సవాలు**\n", + "\n", + "ఈ పాఠంలో, మీరు శుభ్రపరిచిన డేటాను ఉపయోగించి ఒక మెషీన్ లెర్నింగ్ మోడల్‌ను నిర్మించారు, ఇది ఒక శ్రేణి పదార్థాల ఆధారంగా జాతీయ వంటకాన్ని అంచనా వేయగలదు. డేటాను వర్గీకరించడానికి Tidymodels అందించే [చాలా ఎంపికలను](https://www.tidymodels.org/find/parsnip/#models) మరియు మల్టినోమియల్ రిగ్రెషన్‌ను సరిపెట్టడానికి [ఇతర మార్గాలను](https://parsnip.tidymodels.org/articles/articles/Examples.html#multinom_reg-models) చదవడానికి కొంత సమయం తీసుకోండి.\n", + "\n", + "#### ధన్యవాదాలు:\n", + "\n", + "[`Allison Horst`](https://twitter.com/allison_horst/) కు, R ను మరింత ఆహ్లాదకరంగా మరియు ఆకర్షణీయంగా చేసే అద్భుతమైన చిత్రణలను సృష్టించినందుకు. ఆమె [గ్యాలరీ](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM) లో మరిన్ని చిత్రణలను చూడండి.\n", + "\n", + "[Cassie Breviu](https://www.twitter.com/cassieview) మరియు [Jen Looper](https://www.twitter.com/jenlooper) కు, ఈ మాడ్యూల్ యొక్క అసలు Python వెర్షన్ సృష్టించినందుకు ♥️\n", + "\n", + "
\n", + "కొన్ని జోకులు చెప్పాలనుకున్నా, నేను ఫుడ్ పన్స్ అర్థం చేసుకోలేను 😅.\n", + "\n", + "
\n", + "\n", + "సంతోషంగా నేర్చుకోండి,\n", + "\n", + "[Eric](https://twitter.com/ericntay), గోల్డ్ మైక్రోసాఫ్ట్ లెర్న్ స్టూడెంట్ అంబాసిడర్.\n" + ], + "metadata": { + "id": "2tWVHMeLMYdM" + } + }, + { + "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/4-Classification/2-Classifiers-1/solution/notebook.ipynb b/translations/te/4-Classification/2-Classifiers-1/solution/notebook.ipynb new file mode 100644 index 000000000..ab031fcf2 --- /dev/null +++ b/translations/te/4-Classification/2-Classifiers-1/solution/notebook.ipynb @@ -0,0 +1,281 @@ +{ + "cells": [ + { + "source": [ + "# వర్గీకరణ మోడల్స్ నిర్మించండి\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 1 + } + ], + "source": [ + "import pandas as pd\n", + "cuisines_df = pd.read_csv(\"../../data/cleaned_cuisines.csv\")\n", + "cuisines_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve\n", + "from sklearn.svm import SVC\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian\n", + "Name: cuisine, dtype: object" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ], + "source": [ + "cuisines_label_df = cuisines_df['cuisine']\n", + "cuisines_label_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 4 + } + ], + "source": [ + "cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)\n", + "cuisines_feature_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Accuracy is 0.8181818181818182\n" + ] + } + ], + "source": [ + "lr = LogisticRegression(multi_class='ovr',solver='liblinear')\n", + "model = lr.fit(X_train, np.ravel(y_train))\n", + "\n", + "accuracy = model.score(X_test, y_test)\n", + "print (\"Accuracy is {}\".format(accuracy))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "ingredients: Index(['artemisia', 'black_pepper', 'mushroom', 'shiitake', 'soy_sauce',\n 'vegetable_oil'],\n dtype='object')\ncuisine: korean\n" + ] + } + ], + "source": [ + "# test an item\n", + "print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')\n", + "print(f'cuisine: {y_test.iloc[50]}')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " 0\n", + "korean 0.392231\n", + "chinese 0.372872\n", + "japanese 0.218825\n", + "thai 0.013427\n", + "indian 0.002645" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
0
korean0.392231
chinese0.372872
japanese0.218825
thai0.013427
indian0.002645
\n
" + }, + "metadata": {}, + "execution_count": 8 + } + ], + "source": [ + "#rehsape to 2d array and transpose\n", + "test= X_test.iloc[50].values.reshape(-1, 1).T\n", + "# predict with score\n", + "proba = model.predict_proba(test)\n", + "classes = model.classes_\n", + "# create df with classes and scores\n", + "resultdf = pd.DataFrame(data=proba, columns=classes)\n", + "\n", + "# create df to show results\n", + "topPrediction = resultdf.T.sort_values(by=[0], ascending = [False])\n", + "topPrediction.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n\n chinese 0.75 0.73 0.74 223\n indian 0.93 0.88 0.90 255\n japanese 0.78 0.78 0.78 253\n korean 0.87 0.86 0.86 236\n thai 0.76 0.84 0.80 232\n\n accuracy 0.82 1199\n macro avg 0.82 0.82 0.82 1199\nweighted avg 0.82 0.82 0.82 1199\n\n" + ] + } + ], + "source": [ + "y_pred = model.predict(X_test)\r\n", + "print(classification_report(y_test,y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ డాక్యుమెంట్‌ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల డాక్యుమెంట్ దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "kernelspec": { + "name": "python3", + "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" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "9408506dd864f2b6e334c62f80c0cfcc", + "translation_date": "2025-12-19T17:18:12+00:00", + "source_file": "4-Classification/2-Classifiers-1/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/translations/te/4-Classification/3-Classifiers-2/README.md b/translations/te/4-Classification/3-Classifiers-2/README.md new file mode 100644 index 000000000..4b4c12869 --- /dev/null +++ b/translations/te/4-Classification/3-Classifiers-2/README.md @@ -0,0 +1,251 @@ + +# వంటక వర్గీకరణలు 2 + +ఈ రెండవ వర్గీకరణ పాఠంలో, మీరు సంఖ్యాత్మక డేటాను వర్గీకరించడానికి మరిన్ని మార్గాలను అన్వేషిస్తారు. మీరు ఒక వర్గీకర్తను మరొకదానితో పోల్చినప్పుడు కలిగే ప్రభావాల గురించి కూడా తెలుసుకుంటారు. + +## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +### ముందస్తు అర్హత + +ముందటి పాఠాలు మీరు పూర్తి చేశారని మరియు మీ `data` ఫోల్డర్‌లో _cleaned_cuisines.csv_ అనే శుభ్రపరిచిన డేటాసెట్ ఉందని మేము అనుకుంటున్నాము, ఇది ఈ 4-పాఠాల ఫోల్డర్ యొక్క రూట్‌లో ఉంది. + +### సిద్ధం + +మేము మీ _notebook.ipynb_ ఫైల్‌లో శుభ్రపరిచిన డేటాసెట్‌ను లోడ్ చేసి, మోడల్ నిర్మాణ ప్రక్రియ కోసం X మరియు y డేటాఫ్రేమ్‌లుగా విభజించాము. + +## ఒక వర్గీకరణ మ్యాప్ + +ముందుగా, మీరు మైక్రోసాఫ్ట్ యొక్క చీట్ షీట్ ఉపయోగించి డేటాను వర్గీకరించేటప్పుడు మీకు ఉన్న వివిధ ఎంపికల గురించి తెలుసుకున్నారు. Scikit-learn ఒక సమానమైన, కానీ మరింత సూక్ష్మమైన చీట్ షీట్ అందిస్తుంది, ఇది మీ అంచనాదారులను (ఇంకో పేరు వర్గీకర్తలు) మరింత సన్నిహితంగా తగ్గించడంలో సహాయపడుతుంది: + +![ML Map from Scikit-learn](../../../../translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.te.png) +> సూచన: [ఈ మ్యాప్‌ను ఆన్‌లైన్‌లో సందర్శించండి](https://scikit-learn.org/stable/tutorial/machine_learning_map/) మరియు దారిలో క్లిక్ చేసి డాక్యుమెంటేషన్ చదవండి. + +### ప్రణాళిక + +మీ డేటాను స్పష్టంగా అర్థం చేసుకున్న తర్వాత ఈ మ్యాప్ చాలా సహాయకారి, ఎందుకంటే మీరు దాని మార్గాలను అనుసరించి నిర్ణయం తీసుకోవచ్చు: + +- మాకు >50 నమూనాలు ఉన్నాయి +- మేము ఒక వర్గాన్ని అంచనా వేయాలనుకుంటున్నాము +- మాకు లేబుల్ చేయబడిన డేటా ఉంది +- మాకు 100K కన్నా తక్కువ నమూనాలు ఉన్నాయి +- ✨ మేము లీనియర్ SVC ఎంచుకోవచ్చు +- అది పనిచేయకపోతే, ఎందుకంటే మాకు సంఖ్యాత్మక డేటా ఉంది + - మేము ✨ KNeighbors Classifier ప్రయత్నించవచ్చు + - అది పనిచేయకపోతే, ✨ SVC మరియు ✨ Ensemble Classifiers ప్రయత్నించండి + +ఇది అనుసరించడానికి చాలా సహాయకారి మార్గం. + +## వ్యాయామం - డేటాను విభజించండి + +ఈ మార్గాన్ని అనుసరించి, మేము ఉపయోగించడానికి కొన్ని లైబ్రరీలను దిగుమతి చేసుకోవడం ప్రారంభించాలి. + +1. అవసరమైన లైబ్రరీలను దిగుమతి చేసుకోండి: + + ```python + from sklearn.neighbors import KNeighborsClassifier + from sklearn.linear_model import LogisticRegression + from sklearn.svm import SVC + from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier + from sklearn.model_selection import train_test_split, cross_val_score + from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve + import numpy as np + ``` + +1. మీ శిక్షణ మరియు పరీక్ష డేటాను విభజించండి: + + ```python + X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3) + ``` + +## లీనియర్ SVC వర్గీకర్త + +సపోర్ట్-వెక్టర్ క్లస్టరింగ్ (SVC) అనేది సపోర్ట్-వెక్టర్ మెషీన్ల కుటుంబానికి చెందిన ML సాంకేతికత (ఇంకా తెలుసుకోండి). ఈ పద్ధతిలో, మీరు లేబుల్స్‌ను ఎలా క్లస్టర్ చేయాలో నిర్ణయించడానికి 'కర్నెల్'ను ఎంచుకోవచ్చు. 'C' పారామీటర్ 'రెగ్యులరైజేషన్'కి సంబంధించినది, ఇది పారామీటర్ల ప్రభావాన్ని నియంత్రిస్తుంది. కర్నెల్ అనేది [చాలా](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) రకాలలో ఒకటి; ఇక్కడ మేము లీనియర్ SVC ఉపయోగించడానికి 'linear' గా సెట్ చేసాము. Probability డిఫాల్ట్‌గా 'false'; ఇక్కడ probability అంచనాలు సేకరించడానికి 'true' గా సెట్ చేసాము. డేటాను షఫుల్ చేయడానికి మరియు probability లను పొందడానికి రాండమ్ స్టేట్‌ను '0' గా సెట్ చేసాము. + +### వ్యాయామం - లీనియర్ SVC వర్తించండి + +వర్గీకర్తల అర్రేను సృష్టించడం ప్రారంభించండి. పరీక్షల సమయంలో మీరు ఈ అర్రేకు క్రమంగా జోడిస్తారు. + +1. లీనియర్ SVC తో ప్రారంభించండి: + + ```python + C = 10 + # వేర్వేరు వర్గీకరణలను సృష్టించండి. + classifiers = { + 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0) + } + ``` + +2. లీనియర్ SVC ఉపయోగించి మీ మోడల్‌ను శిక్షణ ఇవ్వండి మరియు నివేదికను ప్రింట్ చేయండి: + + ```python + n_classifiers = len(classifiers) + + for index, (name, classifier) in enumerate(classifiers.items()): + classifier.fit(X_train, np.ravel(y_train)) + + y_pred = classifier.predict(X_test) + accuracy = accuracy_score(y_test, y_pred) + print("Accuracy (train) for %s: %0.1f%% " % (name, accuracy * 100)) + print(classification_report(y_test,y_pred)) + ``` + + ఫలితం చాలా బాగుంది: + + ```output + Accuracy (train) for Linear SVC: 78.6% + precision recall f1-score support + + chinese 0.71 0.67 0.69 242 + indian 0.88 0.86 0.87 234 + japanese 0.79 0.74 0.76 254 + korean 0.85 0.81 0.83 242 + thai 0.71 0.86 0.78 227 + + accuracy 0.79 1199 + macro avg 0.79 0.79 0.79 1199 + weighted avg 0.79 0.79 0.79 1199 + ``` + +## K-నెయిబర్స్ వర్గీకర్త + +K-నెయిబర్స్ అనేది "నెయిబర్స్" కుటుంబానికి చెందిన ML పద్ధతి, ఇది పర్యవేక్షిత మరియు పర్యవేక్షణలేని రెండింటికీ ఉపయోగించవచ్చు. ఈ పద్ధతిలో, ముందుగా నిర్దేశించిన సంఖ్యలో పాయింట్లు సృష్టించబడతాయి మరియు డేటా ఈ పాయింట్ల చుట్టూ సేకరించబడుతుంది, తద్వారా సాధారణీకృత లేబుల్స్‌ను అంచనా వేయవచ్చు. + +### వ్యాయామం - K-నెయిబర్స్ వర్గీకర్తను వర్తించండి + +ముందటి వర్గీకర్త బాగుంది మరియు డేటాతో బాగా పనిచేసింది, కానీ మేము మెరుగైన ఖచ్చితత్వం పొందవచ్చని అనుకుంటున్నాము. K-నెయిబర్స్ వర్గీకర్తను ప్రయత్నించండి. + +1. మీ వర్గీకర్త అర్రేలో ఒక లైన్ జోడించండి (లీనియర్ SVC అంశం తర్వాత కామా జోడించండి): + + ```python + 'KNN classifier': KNeighborsClassifier(C), + ``` + + ఫలితం కొంచెం తక్కువగా ఉంది: + + ```output + Accuracy (train) for KNN classifier: 73.8% + precision recall f1-score support + + chinese 0.64 0.67 0.66 242 + indian 0.86 0.78 0.82 234 + japanese 0.66 0.83 0.74 254 + korean 0.94 0.58 0.72 242 + thai 0.71 0.82 0.76 227 + + accuracy 0.74 1199 + macro avg 0.76 0.74 0.74 1199 + weighted avg 0.76 0.74 0.74 1199 + ``` + + ✅ [K-నెయిబర్స్ గురించి తెలుసుకోండి](https://scikit-learn.org/stable/modules/neighbors.html#neighbors) + +## సపోర్ట్ వెక్టర్ వర్గీకర్త + +సపోర్ట్-వెక్టర్ వర్గీకర్తలు [సపోర్ట్-వెక్టర్ మెషీన్](https://wikipedia.org/wiki/Support-vector_machine) కుటుంబానికి చెందిన ML పద్ధతులు, ఇవి వర్గీకరణ మరియు రిగ్రెషన్ పనుల కోసం ఉపయోగిస్తారు. SVMలు "శిక్షణ ఉదాహరణలను స్థలంలో పాయింట్లుగా మ్యాప్ చేస్తాయి" రెండు వర్గాల మధ్య దూరాన్ని గరిష్టం చేయడానికి. తరువాతి డేటాను ఈ స్థలంలో మ్యాప్ చేసి వారి వర్గాన్ని అంచనా వేస్తారు. + +### వ్యాయామం - సపోర్ట్ వెక్టర్ వర్గీకర్తను వర్తించండి + +కొంచెం మెరుగైన ఖచ్చితత్వం కోసం సపోర్ట్ వెక్టర్ వర్గీకర్తను ప్రయత్నిద్దాం. + +1. K-నెయిబర్స్ అంశం తర్వాత కామా జోడించి, ఈ లైన్ జోడించండి: + + ```python + 'SVC': SVC(), + ``` + + ఫలితం చాలా బాగుంది! + + ```output + Accuracy (train) for SVC: 83.2% + precision recall f1-score support + + chinese 0.79 0.74 0.76 242 + indian 0.88 0.90 0.89 234 + japanese 0.87 0.81 0.84 254 + korean 0.91 0.82 0.86 242 + thai 0.74 0.90 0.81 227 + + accuracy 0.83 1199 + macro avg 0.84 0.83 0.83 1199 + weighted avg 0.84 0.83 0.83 1199 + ``` + + ✅ [సపోర్ట్-వెక్టర్స్ గురించి తెలుసుకోండి](https://scikit-learn.org/stable/modules/svm.html#svm) + +## ఎన్‌సెంబుల్ వర్గీకర్తలు + +ముందటి పరీక్ష చాలా బాగుండగా కూడా, చివరి వరకు ఈ మార్గాన్ని అనుసరించుకుందాం. కొన్ని 'ఎన్‌సెంబుల్ వర్గీకర్తలు', ముఖ్యంగా రాండమ్ ఫారెస్ట్ మరియు అడాబూస్ట్ ప్రయత్నిద్దాం: + +```python + 'RFST': RandomForestClassifier(n_estimators=100), + 'ADA': AdaBoostClassifier(n_estimators=100) +``` + +ఫలితం చాలా బాగుంది, ముఖ్యంగా రాండమ్ ఫారెస్ట్ కోసం: + +```output +Accuracy (train) for RFST: 84.5% + precision recall f1-score support + + chinese 0.80 0.77 0.78 242 + indian 0.89 0.92 0.90 234 + japanese 0.86 0.84 0.85 254 + korean 0.88 0.83 0.85 242 + thai 0.80 0.87 0.83 227 + + accuracy 0.84 1199 + macro avg 0.85 0.85 0.84 1199 +weighted avg 0.85 0.84 0.84 1199 + +Accuracy (train) for ADA: 72.4% + precision recall f1-score support + + chinese 0.64 0.49 0.56 242 + indian 0.91 0.83 0.87 234 + japanese 0.68 0.69 0.69 254 + korean 0.73 0.79 0.76 242 + thai 0.67 0.83 0.74 227 + + accuracy 0.72 1199 + macro avg 0.73 0.73 0.72 1199 +weighted avg 0.73 0.72 0.72 1199 +``` + +✅ [ఎన్‌సెంబుల్ వర్గీకర్తల గురించి తెలుసుకోండి](https://scikit-learn.org/stable/modules/ensemble.html) + +ఈ మెషీన్ లెర్నింగ్ పద్ధతి "చాలా బేస్ అంచనాదారుల అంచనాలను కలిపి" మోడల్ నాణ్యతను మెరుగుపరుస్తుంది. మా ఉదాహరణలో, మేము రాండమ్ ట్రీలు మరియు అడాబూస్ట్ ఉపయోగించాము. + +- [రాండమ్ ఫారెస్ట్](https://scikit-learn.org/stable/modules/ensemble.html#forest), ఒక సగటు పద్ధతి, 'డిసిషన్ ట్రీల' 'ఫారెస్ట్'ను నిర్మిస్తుంది, ఇది ఓవర్‌ఫిట్టింగ్ నివారించడానికి యాదృచ్ఛికతతో నింపబడింది. n_estimators పారామీటర్ ట్రీల సంఖ్యకు సెట్ చేయబడింది. + +- [అడాబూస్ట్](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) ఒక వర్గీకర్తను డేటాసెట్‌కు సరిపోల్చి, ఆ వర్గీకర్త యొక్క కాపీలను అదే డేటాసెట్‌కు సరిపోల్చుతుంది. ఇది తప్పుగా వర్గీకరించిన అంశాల బరువులపై దృష్టి సారించి, తదుపరి వర్గీకర్త సరిపోల్చడాన్ని సరిచేస్తుంది. + +--- + +## 🚀సవాలు + +ఈ ప్రతి సాంకేతికతకు మీరు సర్దుబాటు చేయగల పెద్ద సంఖ్యలో పారామీటర్లు ఉన్నాయి. ప్రతి ఒకటి యొక్క డిఫాల్ట్ పారామీటర్లను పరిశోధించి, ఈ పారామీటర్ల సర్దుబాటు మోడల్ నాణ్యతకు ఏమి అర్థం అవుతుందో ఆలోచించండి. + +## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +ఈ పాఠాలలో చాలా జార్గన్ ఉంది, కాబట్టి [ఈ జాబితా](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?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/4-Classification/3-Classifiers-2/assignment.md b/translations/te/4-Classification/3-Classifiers-2/assignment.md new file mode 100644 index 000000000..b1b43e8ba --- /dev/null +++ b/translations/te/4-Classification/3-Classifiers-2/assignment.md @@ -0,0 +1,27 @@ + +# పారామీటర్ ప్లే + +## సూచనలు + +ఈ క్లాసిఫైయర్లతో పని చేసే సమయంలో డిఫాల్ట్‌గా సెట్ చేయబడిన అనేక పారామీటర్లు ఉంటాయి. VS కోడ్‌లోని ఇంటెలిసెన్స్ మీకు వాటిని లోతుగా తెలుసుకోవడంలో సహాయపడుతుంది. ఈ పాఠంలో ఒక ML క్లాసిఫికేషన్ సాంకేతికతను ఎంచుకుని వివిధ పారామీటర్ విలువలను సర్దుబాటు చేస్తూ మోడల్స్‌ను మళ్లీ శిక్షణ ఇవ్వండి. కొన్ని మార్పులు మోడల్ నాణ్యతకు ఎలా సహాయపడతాయో, మరికొన్ని ఎలా దెబ్బతీస్తాయో వివరించే నోట్‌బుక్‌ను నిర్మించండి. మీ సమాధానంలో వివరంగా ఉండండి. + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైనది | సరిపడినది | మెరుగుదల అవసరం | +| -------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | ----------------------------- | +| | ఒక క్లాసిఫైయర్ పూర్తిగా నిర్మించబడిన నోట్‌బుక్ మరియు దాని పారామీటర్లను సర్దుబాటు చేసి మార్పులను టెక్స్ట్‌బాక్స్‌లలో వివరించినది | ఒక నోట్‌బుక్ భాగంగా లేదా బాగా వివరించబడలేదు | ఒక నోట్‌బుక్ బగ్గీ లేదా లోపభూయిష్టమైనది | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/4-Classification/3-Classifiers-2/notebook.ipynb b/translations/te/4-Classification/3-Classifiers-2/notebook.ipynb new file mode 100644 index 000000000..362008336 --- /dev/null +++ b/translations/te/4-Classification/3-Classifiers-2/notebook.ipynb @@ -0,0 +1,165 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# వర్గీకరణ మోడల్ నిర్మించండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 9 + } + ], + "source": [ + "import pandas as pd\n", + "cuisines_df = pd.read_csv(\"../data/cleaned_cuisines.csv\")\n", + "cuisines_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian\n", + "Name: cuisine, dtype: object" + ] + }, + "metadata": {}, + "execution_count": 10 + } + ], + "source": [ + "cuisines_label_df = cuisines_df['cuisine']\n", + "cuisines_label_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 11 + } + ], + "source": [ + "cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)\n", + "cuisines_feature_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "kernelspec": { + "name": "python3", + "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" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "15a83277036572e0773229b5f21c1e12", + "translation_date": "2025-12-19T17:02:44+00:00", + "source_file": "4-Classification/3-Classifiers-2/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/translations/te/4-Classification/3-Classifiers-2/solution/Julia/README.md b/translations/te/4-Classification/3-Classifiers-2/solution/Julia/README.md new file mode 100644 index 000000000..129f3e67d --- /dev/null +++ b/translations/te/4-Classification/3-Classifiers-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/4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb b/translations/te/4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb new file mode 100644 index 000000000..7862e0723 --- /dev/null +++ b/translations/te/4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb @@ -0,0 +1,655 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "lesson_12-R.ipynb", + "provenance": [], + "collapsed_sections": [] + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "fab50046ca413a38939d579f8432274f", + "translation_date": "2025-12-19T17:10:44+00:00", + "source_file": "4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb", + "language_code": "te" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "jsFutf_ygqSx" + }, + "source": [ + "# వర్గీకరణ మోడల్ నిర్మించండి: రుచికరమైన ఆసియన్లు మరియు భారతీయ వంటకాలు\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HD54bEefgtNO" + }, + "source": [ + "## వంటక వర్గీకరణలు 2\n", + "\n", + "ఈ రెండవ వర్గీకరణ పాఠంలో, వర్గీకరణాత్మక డేటాను వర్గీకరించడానికి `మరిన్ని మార్గాలు` గురించి పరిశీలిస్తాము. ఒక వర్గీకర్తను మరొకదానిపై ఎంచుకోవడంలో ఉన్న ప్రభావాల గురించి కూడా నేర్చుకుంటాము.\n", + "\n", + "### [**పూర్వ-ఉపన్యాస క్విజ్**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/23/)\n", + "\n", + "### **ముందస్తు అవసరం**\n", + "\n", + "మేము మీరు గత పాఠాలు పూర్తి చేశారని అనుకుంటున్నాము ఎందుకంటే మేము ముందుగా నేర్చుకున్న కొన్ని భావనలను కొనసాగించబోతున్నాము.\n", + "\n", + "ఈ పాఠం కోసం, మేము క్రింది ప్యాకేజీలను అవసరం:\n", + "\n", + "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) అనేది డేటా సైన్స్‌ను వేగవంతం, సులభం మరియు మరింత సరదాగా చేయడానికి రూపొందించిన [R ప్యాకేజీల సేకరణ](https://www.tidyverse.org/packages).\n", + "\n", + "- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ఫ్రేమ్‌వర్క్ అనేది మోడలింగ్ మరియు మెషీన్ లెర్నింగ్ కోసం [ప్యాకేజీల సేకరణ](https://www.tidymodels.org/packages/).\n", + "\n", + "- `themis`: [themis ప్యాకేజీ](https://themis.tidymodels.org/) అసమతుల్య డేటాతో వ్యవహరించడానికి అదనపు రెసిపీలు అందిస్తుంది.\n", + "\n", + "మీరు వాటిని ఇన్‌స్టాల్ చేసుకోవచ్చు:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"kernlab\", \"themis\", \"ranger\", \"xgboost\", \"kknn\"))`\n", + "\n", + "వేరే విధంగా, క్రింది స్క్రిప్ట్ మీరు ఈ మాడ్యూల్ పూర్తి చేయడానికి అవసరమైన ప్యాకేజీలు ఉన్నాయా లేదా అని తనిఖీ చేసి, అవి లేనప్పుడు వాటిని ఇన్‌స్టాల్ చేస్తుంది.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "vZ57IuUxgyQt" + }, + "source": [ + "suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\n", + "\n", + "pacman::p_load(tidyverse, tidymodels, themis, kernlab, ranger, xgboost, kknn)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "z22M-pj4g07x" + }, + "source": [ + "ఇప్పుడు, మనం వెంటనే ప్రారంభిద్దాం!\n", + "\n", + "## **1. ఒక వర్గీకరణ మ్యాప్**\n", + "\n", + "మన [మునుపటి పాఠంలో](https://github.com/microsoft/ML-For-Beginners/tree/main/4-Classification/2-Classifiers-1), మేము ఈ ప్రశ్నను పరిష్కరించడానికి ప్రయత్నించాము: మనం అనేక మోడల్స్ మధ్య ఎలా ఎంచుకోవాలి? చాలా మేరకు, ఇది డేటా లక్షణాలు మరియు మనం పరిష్కరించదలచుకున్న సమస్య రకంపై ఆధారపడి ఉంటుంది (ఉదాహరణకు వర్గీకరణ లేదా రిగ్రెషన్?)\n", + "\n", + "మునుపటి పాఠంలో, మైక్రోసాఫ్ట్ యొక్క చీట్ షీట్ ఉపయోగించి డేటాను వర్గీకరించేటప్పుడు మీకు ఉన్న వివిధ ఎంపికల గురించి నేర్చుకున్నాము. పైథాన్ యొక్క మెషీన్ లెర్నింగ్ ఫ్రేమ్‌వర్క్, స్కైకిట్-లెర్న్, ఒక సమానమైన కానీ మరింత సూక్ష్మమైన చీట్ షీట్‌ను అందిస్తుంది, ఇది మీ అంచనాదారులను (మరొక పదం వర్గీకరణకర్తలకు) మరింత సన్నిహితంగా తగ్గించడంలో సహాయపడుతుంది:\n", + "\n", + "

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

\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "u1i3xRIVg7vG" + }, + "source": [ + "> సూచన: [ఈ మ్యాప్‌ను ఆన్‌లైన్‌లో సందర్శించండి](https://scikit-learn.org/stable/tutorial/machine_learning_map/) మరియు దారిలో క్లిక్ చేసి డాక్యుమెంటేషన్ చదవండి.\n", + ">\n", + "> [Tidymodels సూచిక సైట్](https://www.tidymodels.org/find/parsnip/#models) కూడా వివిధ రకాల మోడళ్ల గురించి అద్భుతమైన డాక్యుమెంటేషన్ అందిస్తుంది.\n", + "\n", + "### **ప్రణాళిక** 🗺️\n", + "\n", + "మీ డేటాను స్పష్టంగా అర్థం చేసుకున్న తర్వాత ఈ మ్యాప్ చాలా సహాయకారి, ఎందుకంటే మీరు దాని మార్గాల ద్వారా 'నడవచ్చు' నిర్ణయం తీసుకోవడానికి:\n", + "\n", + "- మాకు \\>50 నమూనాలు ఉన్నాయి\n", + "\n", + "- మేము ఒక వర్గాన్ని అంచనా వేయాలనుకుంటున్నాము\n", + "\n", + "- మాకు లేబుల్ చేయబడిన డేటా ఉంది\n", + "\n", + "- మాకు 100K కన్నా తక్కువ నమూనాలు ఉన్నాయి\n", + "\n", + "- ✨ మేము లీనియర్ SVC ఎంచుకోవచ్చు\n", + "\n", + "- అది పనిచేయకపోతే, ఎందుకంటే మాకు సంఖ్యాత్మక డేటా ఉంది\n", + "\n", + " - మేము ✨ KNeighbors క్లాసిఫైయర్ ప్రయత్నించవచ్చు\n", + "\n", + " - అది పనిచేయకపోతే, ✨ SVC మరియు ✨ ఎంసెంబుల్ క్లాసిఫైయర్లను ప్రయత్నించండి\n", + "\n", + "ఇది అనుసరించడానికి చాలా సహాయకారి మార్గం. ఇప్పుడు, [tidymodels](https://www.tidymodels.org/) మోడలింగ్ ఫ్రేమ్‌వర్క్ ఉపయోగించి నేరుగా ప్రారంభిద్దాం: ఇది మంచి గణాంక పద్ధతిని ప్రోత్సహించడానికి అభివృద్ధి చేయబడిన R ప్యాకేజీల సుసंगత మరియు సౌలభ్యమైన సేకరణ 😊.\n", + "\n", + "## 2. డేటాను విభజించి అసమతుల్య డేటా సెట్‌ను నిర్వహించండి.\n", + "\n", + "మా గత పాఠాల నుండి, మనం తెలుసుకున్నాము మన వంటకాలలో సాధారణ పదార్థాల సమూహం ఉంది. అలాగే, వంటకాల సంఖ్యలో అసమాన పంపిణీ ఉంది.\n", + "\n", + "మేము ఈ సమస్యలను ఇలా పరిష్కరిస్తాము\n", + "\n", + "- `dplyr::select()` ఉపయోగించి వేర్వేరు వంటకాల మధ్య గందరగోళం సృష్టించే అత్యంత సాధారణ పదార్థాలను తొలగించడం.\n", + "\n", + "- `over-sampling` అల్గోరిథం వర్తింపజేసి డేటాను మోడలింగ్‌కు సిద్ధం చేసే `recipe` ఉపయోగించడం.\n", + "\n", + "మేము ఈ విషయాలను గత పాఠంలో ఇప్పటికే చూశాము కాబట్టి ఇది చాలా సులభం 🥳!\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "6tj_rN00hClA" + }, + "source": [ + "# Load the core Tidyverse and Tidymodels packages\n", + "library(tidyverse)\n", + "library(tidymodels)\n", + "\n", + "# Load the original cuisines data\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/4-Classification/data/cuisines.csv\")\n", + "\n", + "# Drop id column, rice, garlic and ginger from our original data set\n", + "df_select <- df %>% \n", + " select(-c(1, rice, garlic, ginger)) %>%\n", + " # Encode cuisine column as categorical\n", + " mutate(cuisine = factor(cuisine))\n", + "\n", + "\n", + "# Create data split specification\n", + "set.seed(2056)\n", + "cuisines_split <- initial_split(data = df_select,\n", + " strata = cuisine,\n", + " prop = 0.7)\n", + "\n", + "# Extract the data in each split\n", + "cuisines_train <- training(cuisines_split)\n", + "cuisines_test <- testing(cuisines_split)\n", + "\n", + "# Display distribution of cuisines in the training set\n", + "cuisines_train %>% \n", + " count(cuisine) %>% \n", + " arrange(desc(n))" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zFin5yw3hHb1" + }, + "source": [ + "### అసమతుల్య డేటాతో వ్యవహరించడం\n", + "\n", + "అసమతుల్య డేటా తరచుగా మోడల్ పనితీరుపై ప్రతికూల ప్రభావాలు చూపుతుంది. చాలా మోడల్స్ గమనికల సంఖ్య సమానంగా ఉన్నప్పుడు ఉత్తమంగా పనిచేస్తాయి, అందువల్ల అసమతుల్య డేటాతో సమస్యలు ఎదుర్కొంటాయి.\n", + "\n", + "అసమతుల్య డేటా సెట్‌లతో వ్యవహరించడానికి ప్రధానంగా రెండు మార్గాలు ఉన్నాయి:\n", + "\n", + "- మైనారిటీ క్లాస్‌కు గమనికలు జోడించడం: `ఓవర్-సాంప్లింగ్` ఉదాహరణకు SMOTE అల్గోరిథం ఉపయోగించడం, ఇది ఈ కేసుల సమీప పొరుగువారిని ఉపయోగించి మైనారిటీ క్లాస్ యొక్క కొత్త ఉదాహరణలను సృజనాత్మకంగా ఉత్పత్తి చేస్తుంది.\n", + "\n", + "- మెజారిటీ క్లాస్ నుండి గమనికలు తీసివేయడం: `అండర్-సాంప్లింగ్`\n", + "\n", + "మా గత పాఠంలో, మేము `recipe` ఉపయోగించి అసమతుల్య డేటా సెట్‌లతో ఎలా వ్యవహరించాలో చూపించాము. ఒక recipe అనేది డేటా విశ్లేషణకు సిద్ధం చేయడానికి డేటా సెట్‌పై ఏ దశలను వర్తించాలో వివరించే బ్లూప్రింట్‌గా భావించవచ్చు. మా సందర్భంలో, మా `training set` కోసం వంటకాల సంఖ్యలో సమాన పంపిణీ ఉండాలని మేము కోరుకుంటున్నాము. దీని కోసం నేరుగా ప్రారంభిద్దాం.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "cRzTnHolhLWd" + }, + "source": [ + "# Load themis package for dealing with imbalanced data\n", + "library(themis)\n", + "\n", + "# Create a recipe for preprocessing training data\n", + "cuisines_recipe <- recipe(cuisine ~ ., data = cuisines_train) %>%\n", + " step_smote(cuisine) \n", + "\n", + "# Print recipe\n", + "cuisines_recipe" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KxOQ2ORhhO81" + }, + "source": [ + "ఇప్పుడు మేము మోడల్స్‌ను శిక్షణ ఇవ్వడానికి సిద్ధంగా ఉన్నాము 👩‍💻👨‍💻!\n", + "\n", + "## 3. మల్టినోమియల్ రిగ్రెషన్ మోడల్స్ కంటే మించి\n", + "\n", + "మా గత పాఠంలో, మేము మల్టినోమియల్ రిగ్రెషన్ మోడల్స్‌ను చూశాము. వర్గీకరణ కోసం మరింత సౌకర్యవంతమైన కొన్ని మోడల్స్‌ను పరిశీలిద్దాం.\n", + "\n", + "### సపోర్ట్ వెక్టర్ మెషీన్లు.\n", + "\n", + "వర్గీకరణ సందర్భంలో, `సపోర్ట్ వెక్టర్ మెషీన్లు` అనేది ఒక మెషీన్ లెర్నింగ్ సాంకేతికత, ఇది తరగతులను \"మంచిగా\" వేరు చేసే *హైపర్ప్లేన్* ను కనుగొనడానికి ప్రయత్నిస్తుంది. ఒక సులభమైన ఉదాహరణను చూద్దాం:\n", + "\n", + "

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

https://commons.wikimedia.org/w/index.php?curid=22877598
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "C4Wsd0vZhXYu" + }, + "source": [ + "H1~ తరగతులను వేరుచేయదు. H2~ వేరుచేస్తుంది, కానీ కేవలం చిన్న మార్జిన్‌తో మాత్రమే. H3~ వాటిని గరిష్ట మార్జిన్‌తో వేరుచేస్తుంది.\n", + "\n", + "#### లీనియర్ సపోర్ట్ వెక్టర్ క్లాసిఫైయర్\n", + "\n", + "సపోర్ట్-వెక్టర్ క్లస్టరింగ్ (SVC) అనేది ML సాంకేతికతల సపోర్ట్-వెక్టర్ యంత్రాల కుటుంబంలో ఒక పిల్లవాడు. SVCలో, హైపర్ప్లేన్‌ను శిక్షణ పరిశీలనలలో `అధిక భాగాన్ని` సరిగా వేరుచేయడానికి ఎంచుకుంటారు, కానీ కొన్ని పరిశీలనలను `తప్పుగా వర్గీకరించవచ్చు`. కొన్ని పాయింట్లను తప్పు వైపున ఉంచుకోవడానికి అనుమతించడం ద్వారా, SVM అవుట్లయర్లకు మరింత రాబస్ట్గా మారుతుంది కాబట్టి కొత్త డేటాకు మెరుగైన సాధారణీకరణ ఉంటుంది. ఈ ఉల్లంఘనను నియంత్రించే పారామీటర్‌ను `cost` అని పిలుస్తారు, దీని డిఫాల్ట్ విలువ 1 (చూడండి `help(\"svm_poly\")`).\n", + "\n", + "పోలినోమియల్ SVM మోడల్‌లో `degree = 1` సెట్ చేసి లీనియర్ SVCని సృష్టిద్దాం.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "vJpp6nuChlBz" + }, + "source": [ + "# Make a linear SVC specification\n", + "svc_linear_spec <- svm_poly(degree = 1) %>% \n", + " set_engine(\"kernlab\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle specification and recipe into a worklow\n", + "svc_linear_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(svc_linear_spec)\n", + "\n", + "# Print out workflow\n", + "svc_linear_wf" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rDs8cWNkhoqu" + }, + "source": [ + "ఇప్పుడు మనం ప్రీప్రాసెసింగ్ దశలు మరియు మోడల్ స్పెసిఫికేషన్‌ను *workflow* లో నమోదు చేసుకున్నాము, కాబట్టి మనం linear SVC ను శిక్షణ ఇవ్వగలము మరియు ఫలితాలను అంచనా వేయగలము. పనితీరు ప్రమాణాల కోసం, మనం క్రింది వాటిని అంచనా వేయగల metric set ను సృష్టిద్దాం: `accuracy`, `sensitivity`, `Positive Predicted Value` మరియు `F Measure`\n", + "\n", + "> `augment()` ఇచ్చిన డేటాకు అంచనాల కోసం కాలమ్(లు)ను జోడిస్తుంది.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "81wiqcwuhrnq" + }, + "source": [ + "# Train a linear SVC model\n", + "svc_linear_fit <- svc_linear_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "# Create a metric set\n", + "eval_metrics <- metric_set(ppv, sens, accuracy, f_meas)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "svc_linear_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0UFQvHf-huo3" + }, + "source": [ + "#### సపోర్ట్ వెక్టర్ మెషీన్\n", + "\n", + "సపోర్ట్ వెక్టర్ మెషీన్ (SVM) అనేది తరగతుల మధ్య రేఖీయమైన సరిహద్దును మించిపోయే సపోర్ట్ వెక్టర్ క్లాసిఫయర్ యొక్క విస్తరణ. సారాంశంగా, SVMలు తరగతుల మధ్య రేఖీయ కాని సంబంధాలకు అనుగుణంగా ఫీచర్ స్థలాన్ని విస్తరించడానికి *కర్నెల్ ట్రిక్* ను ఉపయోగిస్తాయి. SVMలు ఉపయోగించే ఒక ప్రముఖ మరియు అత్యంత అనుకూలమైన కర్నెల్ ఫంక్షన్ *రేడియల్ బేసిస్ ఫంక్షన్* (Radial basis function). మన డేటాపై ఇది ఎలా ప్రదర్శిస్తుందో చూద్దాం.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-KX4S8mzhzmp" + }, + "source": [ + "set.seed(2056)\n", + "\n", + "# Make an RBF SVM specification\n", + "svm_rbf_spec <- svm_rbf() %>% \n", + " set_engine(\"kernlab\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle specification and recipe into a worklow\n", + "svm_rbf_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(svm_rbf_spec)\n", + "\n", + "\n", + "# Train an RBF model\n", + "svm_rbf_fit <- svm_rbf_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "svm_rbf_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QBFSa7WSh4HQ" + }, + "source": [ + "మంచిది 🤩!\n", + "\n", + "> ✅ దయచేసి చూడండి:\n", + ">\n", + "> - [*సపోర్ట్ వెక్టర్ మెషీన్లు*](https://bradleyboehmke.github.io/HOML/svm.html), R తో హ్యాండ్స్-ఆన్ మెషీన్ లెర్నింగ్\n", + ">\n", + "> - [*సపోర్ట్ వెక్టర్ మెషీన్లు*](https://www.statlearning.com/), R లో అనువర్తనాలతో గణాంకీయ లెర్నింగ్ కు పరిచయం\n", + ">\n", + "> మరింత చదవడానికి.\n", + "\n", + "### సమీప పొరుగుల వర్గీకరణ\n", + "\n", + "*K*-సమీప పొరుగుడు (KNN) అనేది ఒక అల్గోరిథం, ఇందులో ప్రతి పరిశీలన దాని *సమానత్వం* ఆధారంగా ఇతర పరిశీలనలకు అంచనా వేయబడుతుంది.\n", + "\n", + "మన డేటాకు ఒకటి సరిపెట్టుకుందాం.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "k4BxxBcdh9Ka" + }, + "source": [ + "# Make a KNN specification\n", + "knn_spec <- nearest_neighbor() %>% \n", + " set_engine(\"kknn\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle recipe and model specification into a workflow\n", + "knn_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(knn_spec)\n", + "\n", + "# Train a boosted tree model\n", + "knn_wf_fit <- knn_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "knn_wf_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HaegQseriAcj" + }, + "source": [ + "ఈ మోడల్ అంతగా బాగా పనిచేయడం లేదు అనిపిస్తోంది. మోడల్ యొక్క ఆర్గ్యుమెంట్లను మార్చడం (చూడండి `help(\"nearest_neighbor\")`) మోడల్ పనితీరును మెరుగుపరచవచ్చు. దయచేసి దీన్ని ప్రయత్నించండి.\n", + "\n", + "> ✅ దయచేసి చూడండి:\n", + ">\n", + "> - [Hands-on Machine Learning with R](https://bradleyboehmke.github.io/HOML/)\n", + ">\n", + "> - [An Introduction to Statistical Learning with Applications in R](https://www.statlearning.com/)\n", + ">\n", + "> *K*-Nearest Neighbors క్లాసిఫైయర్ల గురించి మరింత తెలుసుకోవడానికి.\n", + "\n", + "### ఎన్‌సెంబుల్ క్లాసిఫైయర్లు\n", + "\n", + "ఎన్‌సెంబుల్ అల్గోరిథమ్స్ అనేవి అనేక బేస్ ఎస్టిమేటర్లను కలిపి ఒక ఆప్టిమల్ మోడల్‌ను ఉత్పత్తి చేస్తాయి, ఇది క్రింది విధంగా ఉంటుంది:\n", + "\n", + "`bagging`: బేస్ మోడల్స్ సేకరణపై *సగటు ఫంక్షన్* ను వర్తింపజేయడం\n", + "\n", + "`boosting`: ఒకదానిపై మరొకటి నిర్మించి ప్రిడిక్టివ్ పనితీరును మెరుగుపరచే మోడల్స్ సీక్వెన్స్‌ను నిర్మించడం.\n", + "\n", + "మనం మొదట రాండమ్ ఫారెస్ట్ మోడల్‌ను ప్రయత్నిద్దాం, ఇది పెద్ద సంఖ్యలో డిసిషన్ ట్రీలను నిర్మించి, మెరుగైన మొత్తం మోడల్ కోసం సగటు ఫంక్షన్‌ను వర్తింపజేస్తుంది.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "49DPoVs6iK1M" + }, + "source": [ + "# Make a random forest specification\n", + "rf_spec <- rand_forest() %>% \n", + " set_engine(\"ranger\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle recipe and model specification into a workflow\n", + "rf_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(rf_spec)\n", + "\n", + "# Train a random forest model\n", + "rf_wf_fit <- rf_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "rf_wf_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RGVYwC_aiUWc" + }, + "source": [ + "బాగుంది 👏!\n", + "\n", + "మనం Boosted Tree మోడల్‌తో కూడా ప్రయోగం చేద్దాం.\n", + "\n", + "Boosted Tree అనేది ఒక ఎంసెంబుల్ పద్ధతి, ఇది ఒక వరుసగా నిర్ణయ వృక్షాలను సృష్టిస్తుంది, ప్రతి వృక్షం గత వృక్షాల ఫలితాలపై ఆధారపడి, దోషాన్ని క్రమంగా తగ్గించడానికి ప్రయత్నిస్తుంది. ఇది తప్పుగా వర్గీకరించబడిన అంశాల బరువులపై దృష్టి సారించి, తదుపరి వర్గీకర్తకు సరైన సరిపోయేలా సర్దుబాటు చేస్తుంది.\n", + "\n", + "ఈ మోడల్‌ను సరిపెట్టడానికి వివిధ మార్గాలు ఉన్నాయి (`help(\"boost_tree\")` చూడండి). ఈ ఉదాహరణలో, మనం `xgboost` ఇంజిన్ ద్వారా Boosted trees ను సరిపెట్టబోతున్నాం.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Py1YWo-micWs" + }, + "source": [ + "# Make a boosted tree specification\n", + "boost_spec <- boost_tree(trees = 200) %>% \n", + " set_engine(\"xgboost\") %>% \n", + " set_mode(\"classification\")\n", + "\n", + "# Bundle recipe and model specification into a workflow\n", + "boost_wf <- workflow() %>% \n", + " add_recipe(cuisines_recipe) %>% \n", + " add_model(boost_spec)\n", + "\n", + "# Train a boosted tree model\n", + "boost_wf_fit <- boost_wf %>% \n", + " fit(data = cuisines_train)\n", + "\n", + "\n", + "# Make predictions and Evaluate model performance\n", + "boost_wf_fit %>% \n", + " augment(new_data = cuisines_test) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zNQnbuejigZM" + }, + "source": [ + "> ✅ దయచేసి చూడండి:\n", + ">\n", + "> - [సామాజిక శాస్త్రజ్ఞుల కోసం మెషీన్ లెర్నింగ్](https://cimentadaj.github.io/ml_socsci/tree-based-methods.html#random-forests)\n", + ">\n", + "> - [R తో హ్యాండ్స్-ఆన్ మెషీన్ లెర్నింగ్](https://bradleyboehmke.github.io/HOML/)\n", + ">\n", + "> - [R లో అనువర్తనాలతో గణాంకీయ లెర్నింగ్ కు పరిచయం](https://www.statlearning.com/)\n", + ">\n", + "> - - xgboost కు మంచి ప్రత్యామ్నాయం అయిన AdaBoost మోడల్ ను పరిశీలిస్తుంది.\n", + ">\n", + "> ఎంసెంబుల్ క్లాసిఫైయర్ల గురించి మరింత తెలుసుకోవడానికి.\n", + "\n", + "## 4. అదనపు - బహుళ మోడల్స్ ను పోల్చడం\n", + "\n", + "మేము ఈ ప్రయోగశాలలో చాలా మోడల్స్ ను ఫిట్ చేసాము 🙌. వేర్వేరు ప్రీప్రాసెసర్ల సెట్‌లు మరియు/లేదా మోడల్ స్పెసిఫికేషన్ల నుండి అనేక వర్క్‌ఫ్లోలను సృష్టించడం మరియు ఆపై పనితీరు మెట్రిక్స్ ను ఒక్కొక్కటిగా లెక్కించడం కష్టంగా లేదా భారంగా మారవచ్చు.\n", + "\n", + "ఇది పరిష్కరించగలమా అని చూద్దాం, ట్రైనింగ్ సెట్ పై వర్క్‌ఫ్లోల జాబితాను ఫిట్ చేసే ఒక ఫంక్షన్ సృష్టించి, ఆపై టెస్ట్ సెట్ ఆధారంగా పనితీరు మెట్రిక్స్ ను తిరిగి ఇస్తుంది. జాబితాలోని ప్రతి అంశానికి ఫంక్షన్లను వర్తింపజేయడానికి [purrr](https://purrr.tidyverse.org/) ప్యాకేజీ నుండి `map()` మరియు `map_dfr()` ను ఉపయోగిస్తాము.\n", + "\n", + "> [`map()`](https://purrr.tidyverse.org/reference/map.html) ఫంక్షన్లు అనేక for లూప్‌లను మరింత సంక్షిప్తంగా మరియు చదవడానికి సులభంగా ఉండే కోడ్‌తో మార్చడానికి అనుమతిస్తాయి. [`map()`](https://purrr.tidyverse.org/reference/map.html) ఫంక్షన్ల గురించి తెలుసుకోవడానికి ఉత్తమ స్థలం R ఫర్ డేటా సైన్స్ లోని [ఇటరేషన్ అధ్యాయం](http://r4ds.had.co.nz/iteration.html).\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Qzb7LyZnimd2" + }, + "source": [ + "set.seed(2056)\n", + "\n", + "# Create a metric set\n", + "eval_metrics <- metric_set(ppv, sens, accuracy, f_meas)\n", + "\n", + "# Define a function that returns performance metrics\n", + "compare_models <- function(workflow_list, train_set, test_set){\n", + " \n", + " suppressWarnings(\n", + " # Fit each model to the train_set\n", + " map(workflow_list, fit, data = train_set) %>% \n", + " # Make predictions on the test set\n", + " map_dfr(augment, new_data = test_set, .id = \"model\") %>%\n", + " # Select desired columns\n", + " select(model, cuisine, .pred_class) %>% \n", + " # Evaluate model performance\n", + " group_by(model) %>% \n", + " eval_metrics(truth = cuisine, estimate = .pred_class) %>% \n", + " ungroup()\n", + " )\n", + " \n", + "} # End of function" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Fwa712sNisDA" + }, + "source": [ + "మన ఫంక్షన్‌ను పిలిచి, మోడల్స్ మధ్య ఖచ్చితత్వాన్ని పోల్చుకుందాం.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "3i4VJOi2iu-a" + }, + "source": [ + "# Make a list of workflows\n", + "workflow_list <- list(\n", + " \"svc\" = svc_linear_wf,\n", + " \"svm\" = svm_rbf_wf,\n", + " \"knn\" = knn_wf,\n", + " \"random_forest\" = rf_wf,\n", + " \"xgboost\" = boost_wf)\n", + "\n", + "# Call the function\n", + "set.seed(2056)\n", + "perf_metrics <- compare_models(workflow_list = workflow_list, train_set = cuisines_train, test_set = cuisines_test)\n", + "\n", + "# Print out performance metrics\n", + "perf_metrics %>% \n", + " group_by(.metric) %>% \n", + " arrange(desc(.estimate)) %>% \n", + " slice_head(n=7)\n", + "\n", + "# Compare accuracy\n", + "perf_metrics %>% \n", + " filter(.metric == \"accuracy\") %>% \n", + " arrange(desc(.estimate))\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KuWK_lEli4nW" + }, + "source": [ + "\n", + "[**workflowset**](https://workflowsets.tidymodels.org/) ప్యాకేజ్ వినియోగదారులకు పెద్ద సంఖ్యలో మోడల్స్ సృష్టించడానికి మరియు సులభంగా ఫిట్ చేయడానికి అనుమతిస్తుంది కానీ ఇది ఎక్కువగా `cross-validation` వంటి రీసాంప్లింగ్ సాంకేతికతలతో పనిచేయడానికి రూపొందించబడింది, ఇది మనం ఇంకా కవర్ చేయాల్సి ఉంది.\n", + "\n", + "## **🚀సవాలు**\n", + "\n", + "ఈ సాంకేతికతలలో ప్రతి ఒక్కదానికి మీరు సర్దుబాటు చేయగల పెద్ద సంఖ్యలో పారామితులు ఉంటాయి ఉదాహరణకు SVMs లో `cost`, KNN లో `neighbors`, Random Forest లో `mtry` (యాదృచ్ఛికంగా ఎంపిక చేసిన ప్రిడిక్టర్లు).\n", + "\n", + "ప్రతి ఒక్కటి యొక్క డిఫాల్ట్ పారామితులను పరిశోధించి, ఈ పారామితులను సర్దుబాటు చేయడం మోడల్ నాణ్యతకు ఏమి అర్థం అవుతుందో ఆలోచించండి.\n", + "\n", + "ఒక నిర్దిష్ట మోడల్ మరియు దాని పారామితుల గురించి మరింత తెలుసుకోవడానికి, ఉపయోగించండి: `help(\"model\")` ఉదా: `help(\"rand_forest\")`\n", + "\n", + "> ప్రాక్టికల్ లో, మనం సాధారణంగా ఈ విలువలలో *ఉత్తమ విలువలను* అంచనా వేస్తాము అనేక మోడల్స్ ను ఒక `సిమ్యులేటెడ్ డేటా సెట్` పై శిక్షణ ఇచ్చి, ఈ మోడల్స్ ఎంత బాగా ప్రదర్శిస్తాయో కొలిచి. ఈ ప్రక్రియను **ట్యూనింగ్** అంటారు.\n", + "\n", + "### [**పోస్ట్-లెక్చర్ క్విజ్**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/24/)\n", + "\n", + "### **సమీక్ష & స్వీయ అధ్యయనం**\n", + "\n", + "ఈ పాఠాలలో చాలా జార్గన్ ఉంది, కాబట్టి [ఈ జాబితా](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) ఉపయోగకరమైన పదజాలాన్ని సమీక్షించడానికి ఒక నిమిషం తీసుకోండి!\n", + "\n", + "#### ధన్యవాదాలు:\n", + "\n", + "[`Allison Horst`](https://twitter.com/allison_horst/) కు R ను మరింత ఆహ్లాదకరంగా మరియు ఆకర్షణీయంగా మార్చే అద్భుతమైన చిత్రణలను సృష్టించినందుకు. ఆమె మరిన్ని చిత్రణలను ఆమె [గ్యాలరీ](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM) లో చూడండి.\n", + "\n", + "[Cassie Breviu](https://www.twitter.com/cassieview) మరియు [Jen Looper](https://www.twitter.com/jenlooper) కు ఈ మాడ్యూల్ యొక్క ఒరిజినల్ పైథాన్ వెర్షన్ సృష్టించినందుకు ♥️\n", + "\n", + "సంతోషంగా నేర్చుకోండి,\n", + "\n", + "[Eric](https://twitter.com/ericntay), గోల్డ్ మైక్రోసాఫ్ట్ లెర్న్ స్టూడెంట్ అంబాసిడర్.\n", + "\n", + "

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

Artwork by @allison_horst
\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/4-Classification/3-Classifiers-2/solution/notebook.ipynb b/translations/te/4-Classification/3-Classifiers-2/solution/notebook.ipynb new file mode 100644 index 000000000..a8a095381 --- /dev/null +++ b/translations/te/4-Classification/3-Classifiers-2/solution/notebook.ipynb @@ -0,0 +1,304 @@ +{ + "cells": [ + { + "source": [ + "# మరిన్ని వర్గీకరణ మోడల్స్ నిర్మించండి\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 1 + } + ], + "source": [ + "import pandas as pd\n", + "cuisines_df = pd.read_csv(\"../../data/cleaned_cuisines.csv\")\n", + "cuisines_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian\n", + "Name: cuisine, dtype: object" + ] + }, + "metadata": {}, + "execution_count": 2 + } + ], + "source": [ + "cuisines_label_df = cuisines_df['cuisine']\n", + "cuisines_label_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 3 + } + ], + "source": [ + "cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)\n", + "cuisines_feature_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# వేరే వేరే వర్గీకరణలను ప్రయత్నించండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.svm import SVC\n", + "from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier\n", + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "C = 10\n", + "# Create different classifiers.\n", + "classifiers = {\n", + " 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0),\n", + " 'KNN classifier': KNeighborsClassifier(C),\n", + " 'SVC': SVC(),\n", + " 'RFST': RandomForestClassifier(n_estimators=100),\n", + " 'ADA': AdaBoostClassifier(n_estimators=100)\n", + " \n", + "}\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Accuracy (train) for Linear SVC: 76.4% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.64 0.66 0.65 242\n", + " indian 0.91 0.86 0.89 236\n", + " japanese 0.72 0.73 0.73 245\n", + " korean 0.83 0.75 0.79 234\n", + " thai 0.75 0.82 0.78 242\n", + "\n", + " accuracy 0.76 1199\n", + " macro avg 0.77 0.76 0.77 1199\n", + "weighted avg 0.77 0.76 0.77 1199\n", + "\n", + "Accuracy (train) for KNN classifier: 70.7% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.65 0.63 0.64 242\n", + " indian 0.84 0.81 0.82 236\n", + " japanese 0.60 0.81 0.69 245\n", + " korean 0.89 0.53 0.67 234\n", + " thai 0.69 0.75 0.72 242\n", + "\n", + " accuracy 0.71 1199\n", + " macro avg 0.73 0.71 0.71 1199\n", + "weighted avg 0.73 0.71 0.71 1199\n", + "\n", + "Accuracy (train) for SVC: 80.1% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.71 0.69 0.70 242\n", + " indian 0.92 0.92 0.92 236\n", + " japanese 0.77 0.78 0.77 245\n", + " korean 0.87 0.77 0.82 234\n", + " thai 0.75 0.86 0.80 242\n", + "\n", + " accuracy 0.80 1199\n", + " macro avg 0.80 0.80 0.80 1199\n", + "weighted avg 0.80 0.80 0.80 1199\n", + "\n", + "Accuracy (train) for RFST: 82.8% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.80 0.75 0.77 242\n", + " indian 0.90 0.91 0.90 236\n", + " japanese 0.82 0.78 0.80 245\n", + " korean 0.85 0.82 0.83 234\n", + " thai 0.78 0.89 0.83 242\n", + "\n", + " accuracy 0.83 1199\n", + " macro avg 0.83 0.83 0.83 1199\n", + "weighted avg 0.83 0.83 0.83 1199\n", + "\n", + "Accuracy (train) for ADA: 71.1% \n", + " precision recall f1-score support\n", + "\n", + " chinese 0.60 0.57 0.58 242\n", + " indian 0.87 0.84 0.86 236\n", + " japanese 0.71 0.60 0.65 245\n", + " korean 0.68 0.78 0.72 234\n", + " thai 0.70 0.78 0.74 242\n", + "\n", + " accuracy 0.71 1199\n", + " macro avg 0.71 0.71 0.71 1199\n", + "weighted avg 0.71 0.71 0.71 1199\n", + "\n" + ] + } + ], + "source": [ + "n_classifiers = len(classifiers)\n", + "\n", + "for index, (name, classifier) in enumerate(classifiers.items()):\n", + " classifier.fit(X_train, np.ravel(y_train))\n", + "\n", + " y_pred = classifier.predict(X_test)\n", + " accuracy = accuracy_score(y_test, y_pred)\n", + " print(\"Accuracy (train) for %s: %0.1f%% \" % (name, accuracy * 100))\n", + " print(classification_report(y_test,y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "kernelspec": { + "name": "python3", + "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" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "7ea2b714669c823a596d986ba2d5739f", + "translation_date": "2025-12-19T17:09:02+00:00", + "source_file": "4-Classification/3-Classifiers-2/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/translations/te/4-Classification/4-Applied/README.md b/translations/te/4-Classification/4-Applied/README.md new file mode 100644 index 000000000..141eb5356 --- /dev/null +++ b/translations/te/4-Classification/4-Applied/README.md @@ -0,0 +1,331 @@ + +# వంటక సిఫార్సు వెబ్ యాప్ నిర్మించండి + +ఈ పాఠంలో, మీరు గత పాఠాలలో నేర్చుకున్న కొన్ని సాంకేతికతలను ఉపయోగించి మరియు ఈ సిరీస్ అంతటా ఉపయోగించిన రుచికరమైన వంటక డేటాసెట్‌తో ఒక వర్గీకరణ మోడల్‌ను నిర్మిస్తారు. అదనంగా, మీరు ఒక చిన్న వెబ్ యాప్‌ను నిర్మించి, సేవ్ చేసిన మోడల్‌ను ఉపయోగించడానికి Onnx యొక్క వెబ్ రన్‌టైమ్‌ను ఉపయోగిస్తారు. + +యంత్ర అభ్యాసం యొక్క అత్యంత ఉపయోగకరమైన ప్రాయోగిక ఉపయోగాలలో ఒకటి సిఫార్సు వ్యవస్థలను నిర్మించడం, మరియు మీరు ఈ దిశలో మొదటి అడుగు వేయవచ్చు! + +[![ఈ వెబ్ యాప్‌ను ప్రదర్శించడం](https://img.youtube.com/vi/17wdM9AHMfg/0.jpg)](https://youtu.be/17wdM9AHMfg "Applied ML") + +> 🎥 వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి: జెన్ లూపర్ వర్గీకరించిన వంటక డేటాను ఉపయోగించి వెబ్ యాప్‌ను నిర్మిస్తున్నారు + +## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +ఈ పాఠంలో మీరు నేర్చుకుంటారు: + +- మోడల్‌ను ఎలా నిర్మించి Onnx మోడల్‌గా సేవ్ చేయాలి +- మోడల్‌ను పరిశీలించడానికి Netron ను ఎలా ఉపయోగించాలి +- మీ మోడల్‌ను వెబ్ యాప్‌లో ఇన్ఫరెన్స్ కోసం ఎలా ఉపయోగించాలి + +## మీ మోడల్‌ను నిర్మించండి + +అప్లైడ్ ML వ్యవస్థలను నిర్మించడం మీ వ్యాపార వ్యవస్థల కోసం ఈ సాంకేతికతలను ఉపయోగించుకోవడంలో ముఖ్యమైన భాగం. మీరు మీ వెబ్ అప్లికేషన్లలో మోడల్స్‌ను ఉపయోగించవచ్చు (అవసరమైతే ఆఫ్‌లైన్ సందర్భంలో కూడా ఉపయోగించవచ్చు) Onnx ఉపయోగించి. + +[మునుపటి పాఠంలో](../../3-Web-App/1-Web-App/README.md), మీరు UFO సైట్‌ల గురించి రిగ్రెషన్ మోడల్‌ను నిర్మించి, దాన్ని "పికిల్" చేసి, Flask యాప్‌లో ఉపయోగించారు. ఈ ఆర్కిటెక్చర్ తెలుసుకోవడం చాలా ఉపయోగకరం అయినప్పటికీ, ఇది పూర్తి-స్టాక్ Python యాప్, మరియు మీ అవసరాలు JavaScript అప్లికేషన్ ఉపయోగించడాన్ని కూడా కలిగి ఉండవచ్చు. + +ఈ పాఠంలో, మీరు ఇన్ఫరెన్స్ కోసం ఒక ప్రాథమిక JavaScript ఆధారిత వ్యవస్థను నిర్మించవచ్చు. అయితే, ముందుగా మీరు ఒక మోడల్‌ను శిక్షణ ఇచ్చి, దాన్ని Onnx కోసం మార్చాలి. + +## వ్యాయామం - వర్గీకరణ మోడల్ శిక్షణ + +ముందుగా, మనం ఉపయోగించిన శుభ్రపరిచిన వంటక డేటాసెట్‌ను ఉపయోగించి వర్గీకరణ మోడల్‌ను శిక్షణ ఇవ్వండి. + +1. ఉపయోగకరమైన లైబ్రరీలను దిగుమతి చేసుకోవడం ప్రారంభించండి: + + ```python + !pip install skl2onnx + import pandas as pd + ``` + + మీ Scikit-learn మోడల్‌ను Onnx ఫార్మాట్‌కు మార్చడానికి '[skl2onnx](https://onnx.ai/sklearn-onnx/)' అవసరం. + +1. తరువాత, మీరు గత పాఠాలలో చేసినట్లుగా, `read_csv()` ఉపయోగించి CSV ఫైల్‌ను చదవడం ద్వారా మీ డేటాతో పని చేయండి: + + ```python + data = pd.read_csv('../data/cleaned_cuisines.csv') + data.head() + ``` + +1. మొదటి రెండు అవసరం లేని కాలమ్స్‌ను తీసివేసి మిగిలిన డేటాను 'X'గా సేవ్ చేయండి: + + ```python + X = data.iloc[:,2:] + X.head() + ``` + +1. లేబుల్స్‌ను 'y'గా సేవ్ చేయండి: + + ```python + y = data[['cuisine']] + y.head() + + ``` + +### శిక్షణ రొటీన్ ప్రారంభించండి + +మనం మంచి ఖచ్చితత్వం కలిగిన 'SVC' లైబ్రరీని ఉపయోగిస్తాము. + +1. Scikit-learn నుండి సరైన లైబ్రరీలను దిగుమతి చేసుకోండి: + + ```python + from sklearn.model_selection import train_test_split + from sklearn.svm import SVC + from sklearn.model_selection import cross_val_score + from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report + ``` + +1. శిక్షణ మరియు పరీక్ష సెట్లను వేరు చేయండి: + + ```python + X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3) + ``` + +1. మీరు గత పాఠంలో చేసినట్లుగా SVC వర్గీకరణ మోడల్‌ను నిర్మించండి: + + ```python + model = SVC(kernel='linear', C=10, probability=True,random_state=0) + model.fit(X_train,y_train.values.ravel()) + ``` + +1. ఇప్పుడు, మీ మోడల్‌ను పరీక్షించండి, `predict()` ను పిలవండి: + + ```python + y_pred = model.predict(X_test) + ``` + +1. మోడల్ నాణ్యతను తనిఖీ చేయడానికి వర్గీకరణ నివేదికను ముద్రించండి: + + ```python + print(classification_report(y_test,y_pred)) + ``` + + మునుపటి విధంగా, ఖచ్చితత్వం మంచి ఉంది: + + ```output + precision recall f1-score support + + chinese 0.72 0.69 0.70 257 + indian 0.91 0.87 0.89 243 + japanese 0.79 0.77 0.78 239 + korean 0.83 0.79 0.81 236 + thai 0.72 0.84 0.78 224 + + accuracy 0.79 1199 + macro avg 0.79 0.79 0.79 1199 + weighted avg 0.79 0.79 0.79 1199 + ``` + +### మీ మోడల్‌ను Onnx కు మార్చండి + +సరైన టెన్సర్ సంఖ్యతో మార్చడం నిర్ధారించండి. ఈ డేటాసెట్‌లో 380 పదార్థాలు ఉన్నాయి, కాబట్టి మీరు `FloatTensorType` లో ఆ సంఖ్యను సూచించాలి: + +1. 380 టెన్సర్ సంఖ్యతో మార్చండి. + + ```python + from skl2onnx import convert_sklearn + from skl2onnx.common.data_types import FloatTensorType + + initial_type = [('float_input', FloatTensorType([None, 380]))] + options = {id(model): {'nocl': True, 'zipmap': False}} + ``` + +1. onx సృష్టించి **model.onnx** ఫైల్‌గా సేవ్ చేయండి: + + ```python + onx = convert_sklearn(model, initial_types=initial_type, options=options) + with open("./model.onnx", "wb") as f: + f.write(onx.SerializeToString()) + ``` + + > గమనిక, మీరు మీ మార్చే స్క్రిప్ట్‌లో [ఆప్షన్లు](https://onnx.ai/sklearn-onnx/parameterized.html) ఇవ్వవచ్చు. ఈ సందర్భంలో, 'nocl' ను True గా మరియు 'zipmap' ను False గా ఇచ్చాము. ఇది వర్గీకరణ మోడల్ కావడంతో, ZipMap ను తీసివేయవచ్చు, ఇది డిక్షనరీల జాబితాను ఉత్పత్తి చేస్తుంది (అవసరం లేదు). `nocl` అనేది మోడల్‌లో తరగతి సమాచారాన్ని సూచిస్తుంది. `nocl` ను 'True' గా సెట్ చేసి మీ మోడల్ పరిమాణాన్ని తగ్గించండి. + +పూర్తి నోట్‌బుక్‌ను నడిపితే ఇప్పుడు Onnx మోడల్ నిర్మించి ఈ ఫోల్డర్‌లో సేవ్ చేస్తుంది. + +## మీ మోడల్‌ను వీక్షించండి + +Onnx మోడల్స్ Visual Studio కోడ్‌లో చాలా స్పష్టంగా కనిపించవు, కానీ చాలా పరిశోధకులు ఉపయోగించే ఒక మంచి ఉచిత సాఫ్ట్‌వేర్ ఉంది, ఇది మోడల్ సరిగ్గా నిర్మించబడిందో లేదో చూడటానికి ఉపయోగపడుతుంది. [Netron](https://github.com/lutzroeder/Netron) డౌన్లోడ్ చేసి మీ model.onnx ఫైల్‌ను తెరవండి. మీరు మీ సాదారణ మోడల్‌ను దాని 380 ఇన్‌పుట్లు మరియు వర్గీకరణతో చూడవచ్చు: + +![Netron visual](../../../../translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.te.png) + +Netron మీ మోడల్స్‌ను వీక్షించడానికి సహాయక సాధనం. + +ఇప్పుడు మీరు ఈ చక్కని మోడల్‌ను వెబ్ యాప్‌లో ఉపయోగించడానికి సిద్ధంగా ఉన్నారు. మీరు మీ ఫ్రిజ్‌లో ఉన్న మిగిలిన పదార్థాల కలయికను చూసి, మీ మోడల్ నిర్ణయించిన వంటకం ఏదో తెలుసుకోవడానికి ఉపయోగపడే యాప్‌ను నిర్మిద్దాం. + +## సిఫార్సు వెబ్ అప్లికేషన్ నిర్మించండి + +మీ మోడల్‌ను నేరుగా వెబ్ యాప్‌లో ఉపయోగించవచ్చు. ఈ ఆర్కిటెక్చర్ స్థానికంగా మరియు అవసరమైతే ఆఫ్‌లైన్‌లో కూడా నడపడానికి అనుమతిస్తుంది. మీరు `model.onnx` ఫైల్‌ను సేవ్ చేసిన అదే ఫోల్డర్‌లో `index.html` ఫైల్‌ను సృష్టించడం ప్రారంభించండి. + +1. ఈ _index.html_ ఫైల్‌లో క్రింది మార్కప్‌ను జోడించండి: + + ```html + + +
+ Cuisine Matcher +
+ + ... + + + ``` + +1. ఇప్పుడు, `body` ట్యాగ్‌లలో, కొన్ని పదార్థాలను ప్రతిబింబించే చెక్‌బాక్స్‌ల జాబితాను చూపించడానికి కొంత మార్కప్ జోడించండి: + + ```html +

Check your refrigerator. What can you create?

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ +
+ ``` + + ప్రతి చెక్‌బాక్స్‌కు ఒక విలువ ఇవ్వబడింది గమనించండి. ఇది డేటాసెట్ ప్రకారం పదార్థం కనుగొనబడిన సూచికను సూచిస్తుంది. ఉదాహరణకు, ఆపిల్ ఈ అక్షరాల క్రమంలో ఐదవ కాలమ్‌లో ఉంది, కాబట్టి దాని విలువ '4' (0 నుండి లెక్కించడం ప్రారంభిస్తాం). మీరు [పదార్థాల స్ప్రెడ్షీట్](../../../../4-Classification/data/ingredient_indexes.csv) ను చూడవచ్చు ఒక పదార్థం సూచిక తెలుసుకోవడానికి. + + index.html ఫైల్‌లో మీ పని కొనసాగిస్తూ, చివరి మూసివేత `` తర్వాత మోడల్ పిలవబడే స్క్రిప్ట్ బ్లాక్‌ను జోడించండి. + +1. మొదట, [Onnx Runtime](https://www.onnxruntime.ai/) ను దిగుమతి చేసుకోండి: + + ```html + + ``` + + > Onnx Runtime అనేది విస్తృత హార్డ్‌వేర్ ప్లాట్‌ఫారమ్‌లపై మీ Onnx మోడల్స్‌ను నడపడానికి ఉపయోగిస్తారు, ఆప్టిమైజేషన్లు మరియు APIతో సహా. + +1. Runtime సిద్ధంగా ఉన్న తర్వాత, మీరు దాన్ని పిలవవచ్చు: + + ```html + + ``` + +ఈ కోడ్‌లో కొన్ని విషయాలు జరుగుతున్నాయి: + +1. మీరు 380 సాధ్యమైన విలువల (1 లేదా 0) అrrayని సృష్టించారు, ఇది మోడల్‌కు ఇన్ఫరెన్స్ కోసం పంపబడుతుంది, చెక్‌బాక్స్ ఎంచుకున్నదో లేదో ఆధారంగా. +2. మీరు చెక్‌బాక్స్‌ల అrray మరియు వాటిని ఎంచుకున్నదో లేదో తెలుసుకునే `init` ఫంక్షన్‌ను సృష్టించారు, ఇది యాప్ ప్రారంభంలో పిలవబడుతుంది. చెక్‌బాక్స్ ఎంచుకున్నప్పుడు, `ingredients` అrray ఎంచుకున్న పదార్థాన్ని ప్రతిబింబించడానికి మార్చబడుతుంది. +3. మీరు `testCheckboxes` ఫంక్షన్‌ను సృష్టించారు, ఇది ఏదైనా చెక్‌బాక్స్ ఎంచుకున్నదో లేదో తనిఖీ చేస్తుంది. +4. మీరు బటన్ నొక్కినప్పుడు `startInference` ఫంక్షన్‌ను ఉపయోగించి, ఏదైనా చెక్‌బాక్స్ ఎంచుకున్నట్లయితే ఇన్ఫరెన్స్ ప్రారంభిస్తారు. +5. ఇన్ఫరెన్స్ రొటీన్‌లో: + 1. మోడల్‌ను అసింక్రనస్‌గా లోడ్ చేయడం + 2. మోడల్‌కు పంపడానికి టెన్సర్ నిర్మాణం సృష్టించడం + 3. మీరు శిక్షణ సమయంలో సృష్టించిన `float_input` ఇన్‌పుట్‌ను ప్రతిబింబించే 'feeds' సృష్టించడం (ఆ పేరు Netron ద్వారా ధృవీకరించవచ్చు) + 4. ఈ 'feeds' ను మోడల్‌కు పంపించి ప్రతిస్పందన కోసం వేచివుండడం + +## మీ అప్లికేషన్‌ను పరీక్షించండి + +Visual Studio Codeలో మీ index.html ఫైల్ ఉన్న ఫోల్డర్‌లో టెర్మినల్ సెషన్‌ను తెరవండి. మీరు [http-server](https://www.npmjs.com/package/http-server) ను గ్లోబల్‌గా ఇన్‌స్టాల్ చేసుకున్నారని నిర్ధారించుకుని, ప్రాంప్ట్ వద్ద `http-server` టైప్ చేయండి. ఒక localhost తెరుచుకుంటుంది మరియు మీరు మీ వెబ్ యాప్‌ను వీక్షించవచ్చు. వివిధ పదార్థాల ఆధారంగా ఏ వంటకం సిఫార్సు అవుతుందో తనిఖీ చేయండి: + +![ingredient web app](../../../../translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.te.png) + +అభినందనలు, మీరు కొన్ని ఫీల్డ్స్‌తో 'సిఫార్సు' వెబ్ యాప్‌ను సృష్టించారు. ఈ వ్యవస్థను మరింత అభివృద్ధి చేసేందుకు కొంత సమయం కేటాయించండి! + +## 🚀సవాలు + +మీ వెబ్ యాప్ చాలా సాదారణంగా ఉంది, కాబట్టి [ingredient_indexes](../../../../4-Classification/data/ingredient_indexes.csv) డేటా నుండి పదార్థాలు మరియు వాటి సూచికలను ఉపయోగించి దీన్ని మరింత అభివృద్ధి చేయండి. ఏ రుచుల కలయికలు ఒక నిర్దిష్ట జాతీయ వంటకం తయారుచేస్తాయో తెలుసుకోండి? + +## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +ఈ పాఠం ఆహార పదార్థాల కోసం సిఫార్సు వ్యవస్థను సృష్టించే ఉపయోగకరతను తాకింది, కానీ ML అప్లికేషన్ల ఈ విభాగం ఉదాహరణలతో చాలా సంపన్నంగా ఉంది. ఈ వ్యవస్థలు ఎలా నిర్మించబడతాయో మరింత చదవండి: + +- https://www.sciencedirect.com/topics/computer-science/recommendation-engine +- https://www.technologyreview.com/2014/08/25/171547/the-ultimate-challenge-for-recommendation-engines/ +- https://www.technologyreview.com/2015/03/23/168831/everything-is-a-recommendation/ + +## అసైన్‌మెంట్ + +[కొత్త సిఫార్సు యాప్ నిర్మించండి](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/4-Classification/4-Applied/assignment.md b/translations/te/4-Classification/4-Applied/assignment.md new file mode 100644 index 000000000..c95509c3b --- /dev/null +++ b/translations/te/4-Classification/4-Applied/assignment.md @@ -0,0 +1,27 @@ + +# సిఫార్సుదారుడిని నిర్మించండి + +## సూచనలు + +ఈ పాఠంలో మీ వ్యాయామాలను బట్టి, మీరు ఇప్పుడు Onnx Runtime మరియు మార్చిన Onnx మోడల్ ఉపయోగించి జావాస్క్రిప్ట్ ఆధారిత వెబ్ యాప్‌ను ఎలా నిర్మించాలో తెలుసుకున్నారు. ఈ పాఠాల నుండి లేదా ఇతర మూలాల నుండి డేటాను ఉపయోగించి కొత్త సిఫార్సుదారుడిని నిర్మించడంలో ప్రయోగించండి (దయచేసి క్రెడిట్ ఇవ్వండి). వివిధ వ్యక్తిత్వ లక్షణాలను బట్టి పెట్ సిఫార్సుదారుడిని లేదా వ్యక్తి మూడ్ ఆధారంగా సంగీత జానర్ సిఫార్సుదారుడిని సృష్టించవచ్చు. సృజనాత్మకంగా ఉండండి! + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైనది | సరిపడినది | మెరుగుదల అవసరం | +| -------- | ---------------------------------------------------------------------- | ------------------------------------- | --------------------------------- | +| | ఒక వెబ్ యాప్ మరియు నోట్బుక్ అందించబడ్డాయి, రెండూ బాగా డాక్యుమెంటెడ్ మరియు నడుస్తున్నవి | వాటిలో ఒకటి లేకపోవడం లేదా లోపం కలిగి ఉండటం | రెండూ లేకపోవడం లేదా లోపం కలిగి ఉండటం | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/4-Classification/4-Applied/notebook.ipynb b/translations/te/4-Classification/4-Applied/notebook.ipynb new file mode 100644 index 000000000..38cfb5d4a --- /dev/null +++ b/translations/te/4-Classification/4-Applied/notebook.ipynb @@ -0,0 +1,41 @@ +{ + "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": "2f3e0d9e9ac5c301558fb8bf733ac0cb", + "translation_date": "2025-12-19T17:03:01+00:00", + "source_file": "4-Classification/4-Applied/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# వంటక సిఫారసు యంత్రం నిర్మించండి\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/4-Classification/4-Applied/solution/notebook.ipynb b/translations/te/4-Classification/4-Applied/solution/notebook.ipynb new file mode 100644 index 000000000..53b35eabb --- /dev/null +++ b/translations/te/4-Classification/4-Applied/solution/notebook.ipynb @@ -0,0 +1,292 @@ +{ + "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')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "49325d6dd12a3628fc64fa7ccb1a80ff", + "translation_date": "2025-12-19T17:17:53+00:00", + "source_file": "4-Classification/4-Applied/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# వంటక సిఫారసు యంత్రం నిర్మించండి\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: skl2onnx in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (1.8.0)\n", + "Requirement already satisfied: protobuf in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (3.8.0)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.19.2)\n", + "Requirement already satisfied: onnx>=1.2.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.9.0)\n", + "Requirement already satisfied: six in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from skl2onnx) (1.12.0)\n", + "Requirement already satisfied: onnxconverter-common<1.9,>=1.6.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.8.1)\n", + "Requirement already satisfied: scikit-learn>=0.19 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (0.24.2)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.4.1)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from protobuf->skl2onnx) (45.1.0)\n", + "Requirement already satisfied: typing-extensions>=3.6.2.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from onnx>=1.2.1->skl2onnx) (3.10.0.0)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from scikit-learn>=0.19->skl2onnx) (2.1.0)\n", + "Requirement already satisfied: joblib>=0.11 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from scikit-learn>=0.19->skl2onnx) (0.16.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "!pip install skl2onnx" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd \n" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 60 + } + ], + "source": [ + "data = pd.read_csv('../../data/cleaned_cuisines.csv')\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 61 + } + ], + "source": [ + "X = data.iloc[:,2:]\n", + "X.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " cuisine\n", + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
cuisine
0indian
1indian
2indian
3indian
4indian
\n
" + }, + "metadata": {}, + "execution_count": 62 + } + ], + "source": [ + "y = data[['cuisine']]\n", + "y.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.svm import SVC\n", + "from sklearn.model_selection import cross_val_score\n", + "from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "SVC(C=10, kernel='linear', probability=True, random_state=0)" + ] + }, + "metadata": {}, + "execution_count": 65 + } + ], + "source": [ + "model = SVC(kernel='linear', C=10, probability=True,random_state=0)\n", + "model.fit(X_train,y_train.values.ravel())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "y_pred = model.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n\n chinese 0.72 0.70 0.71 236\n indian 0.91 0.88 0.89 243\n japanese 0.80 0.75 0.77 240\n korean 0.80 0.81 0.81 230\n thai 0.76 0.85 0.80 250\n\n accuracy 0.80 1199\n macro avg 0.80 0.80 0.80 1199\nweighted avg 0.80 0.80 0.80 1199\n\n" + ] + } + ], + "source": [ + "print(classification_report(y_test,y_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "from skl2onnx import convert_sklearn\n", + "from skl2onnx.common.data_types import FloatTensorType\n", + "\n", + "initial_type = [('float_input', FloatTensorType([None, 380]))]\n", + "options = {id(model): {'nocl': True, 'zipmap': False}}\n", + "onx = convert_sklearn(model, initial_types=initial_type, options=options)\n", + "with open(\"./model.onnx\", \"wb\") as f:\n", + " f.write(onx.SerializeToString())\n", + "\n", + "\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/4-Classification/README.md b/translations/te/4-Classification/README.md new file mode 100644 index 000000000..68d6fd73c --- /dev/null +++ b/translations/te/4-Classification/README.md @@ -0,0 +1,43 @@ + +# వర్గీకరణతో ప్రారంభించడం + +## ప్రాంతీయ విషయం: రుచికరమైన ఆసియా మరియు భారతీయ వంటకాలు 🍜 + +ఆసియా మరియు భారతదేశంలో, ఆహార సంప్రదాయాలు చాలా వైవిధ్యంగా ఉంటాయి, మరియు చాలా రుచికరంగా ఉంటాయి! వారి పదార్థాలను అర్థం చేసుకోవడానికి ప్రాంతీయ వంటకాల గురించి డేటాను చూద్దాం. + +![Thai food seller](../../../translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.te.jpg) +> ఫోటో లిషెంగ్ చాంగ్ ద్వారా అన్స్ప్లాష్లో + +## మీరు నేర్చుకునేది + +ఈ విభాగంలో, మీరు మీ ముందటి రిగ్రెషన్ అధ్యయనంపై ఆధారపడి, డేటాను మెరుగ్గా అర్థం చేసుకోవడానికి ఉపయోగించగల ఇతర వర్గీకరణకర్తలను నేర్చుకుంటారు. + +> వర్గీకరణ మోడళ్లతో పని చేయడాన్ని నేర్చుకోవడానికి సహాయపడే ఉపయోగకరమైన తక్కువ-కోడ్ టూల్స్ ఉన్నాయి. ఈ పనికి [Azure ML ను ప్రయత్నించండి](https://docs.microsoft.com/learn/modules/create-classification-model-azure-machine-learning-designer/?WT.mc_id=academic-77952-leestott) + +## పాఠాలు + +1. [వర్గీకరణకు పరిచయం](1-Introduction/README.md) +2. [ఇంకా వర్గీకరణకర్తలు](2-Classifiers-1/README.md) +3. [మరిన్ని వర్గీకరణకర్తలు](3-Classifiers-2/README.md) +4. [అప్లైడ్ ML: వెబ్ యాప్ నిర్మాణం](4-Applied/README.md) + +## క్రెడిట్స్ + +"వర్గీకరణతో ప్రారంభించడం" ను ♥️ తో [క్యాసీ బ్రేవియూ](https://www.twitter.com/cassiebreviu) మరియు [జెన్ లూపర్](https://www.twitter.com/jenlooper) రాశారు + +రుచికరమైన వంటకాల డేటాసెట్ [కాగుల్](https://www.kaggle.com/hoandan/asian-and-indian-cuisines) నుండి సేకరించబడింది. + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/5-Clustering/1-Visualize/README.md b/translations/te/5-Clustering/1-Visualize/README.md new file mode 100644 index 000000000..d75f73861 --- /dev/null +++ b/translations/te/5-Clustering/1-Visualize/README.md @@ -0,0 +1,348 @@ + +# క్లస్టరింగ్ పరిచయం + +క్లస్టరింగ్ అనేది [అనియంత్రిత అభ్యాసం](https://wikipedia.org/wiki/Unsupervised_learning) యొక్క ఒక రకం, ఇది ఒక డేటాసెట్ లేబుల్ చేయబడలేదు లేదా దాని ఇన్‌పుట్లు ముందుగా నిర్వచించిన అవుట్‌పుట్లతో సరిపోలడం లేదు అని ఊహిస్తుంది. ఇది వివిధ అల్గోరిథమ్లను ఉపయోగించి లేబుల్ చేయబడని డేటాను వర్గీకరించి, డేటాలో కనిపించే నమూనాల ప్రకారం సమూహాలను అందిస్తుంది. + +[![No One Like You by PSquare](https://img.youtube.com/vi/ty2advRiWJM/0.jpg)](https://youtu.be/ty2advRiWJM "No One Like You by PSquare") + +> 🎥 పై చిత్రాన్ని క్లిక్ చేయండి వీడియో కోసం. మీరు క్లస్టరింగ్‌తో మెషీన్ లెర్నింగ్ అధ్యయనం చేస్తున్నప్పుడు, కొన్ని నైజీరియన్ డాన్స్ హాల్ ట్రాక్స్‌ను ఆస్వాదించండి - ఇది 2014లో PSquare నుండి అత్యధిక రేటింగ్ పొందిన పాట. + +## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +### పరిచయం + +[క్లస్టరింగ్](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) డేటా అన్వేషణకు చాలా ఉపయోగకరం. నైజీరియన్ ప్రేక్షకులు సంగీతాన్ని ఎలా వినుతారో దాని లోపల ధోరణులు మరియు నమూనాలను కనుగొనడంలో ఇది సహాయపడుతుందో చూద్దాం. + +✅ క్లస్టరింగ్ ఉపయోగాల గురించి ఒక నిమిషం ఆలోచించండి. వాస్తవ జీవితంలో, మీరు ఒక బట్టల గుంపు ఉన్నప్పుడు మరియు మీ కుటుంబ సభ్యుల బట్టలను వర్గీకరించాల్సినప్పుడు క్లస్టరింగ్ జరుగుతుంది 🧦👕👖🩲. డేటా సైన్స్‌లో, క్లస్టరింగ్ ఒక వినియోగదారుడి అభిరుచులను విశ్లేషించేటప్పుడు లేదా ఏదైనా లేబుల్ చేయబడని డేటాసెట్ లక్షణాలను నిర్ణయించేటప్పుడు జరుగుతుంది. క్లస్టరింగ్, ఒక విధంగా, గందరగోళాన్ని అర్థం చేసుకోవడంలో సహాయపడుతుంది, ఒక మోజు డ్రాయర్ లాగా. + +[![Introduction to ML](https://img.youtube.com/vi/esmzYhuFnds/0.jpg)](https://youtu.be/esmzYhuFnds "Introduction to Clustering") + +> 🎥 పై చిత్రాన్ని క్లిక్ చేయండి వీడియో కోసం: MIT యొక్క జాన్ గుట్‌టాగ్ క్లస్టరింగ్‌ను పరిచయం చేస్తారు + +వృత్తిపరమైన పరిసరాల్లో, క్లస్టరింగ్ మార్కెట్ విభజన, వయస్సు గుంపులు ఏ వస్తువులు కొనుగోలు చేస్తాయో నిర్ణయించడం వంటి విషయాలను నిర్ణయించడానికి ఉపయోగించవచ్చు. మరో ఉపయోగం అనామలీ గుర్తింపు, ఉదాహరణకు క్రెడిట్ కార్డ్ లావాదేవీల డేటాసెట్ నుండి మోసం గుర్తించడానికి. లేదా మీరు క్లస్టరింగ్‌ను వైద్య స్కాన్ల బ్యాచ్‌లో ట్యూమర్లను గుర్తించడానికి ఉపయోగించవచ్చు. + +✅ బ్యాంకింగ్, ఈ-కామర్స్ లేదా వ్యాపార పరిసరాల్లో మీరు క్లస్టరింగ్‌ను 'వనంలో' ఎలా ఎదుర్కొన్నారో ఒక నిమిషం ఆలోచించండి. + +> 🎓 ఆసక్తికరంగా, క్లస్టర్ విశ్లేషణ 1930లలో మానవ శాస్త్రం మరియు మానసిక శాస్త్రం రంగాలలో ప్రారంభమైంది. మీరు దీన్ని ఎలా ఉపయోగించారో ఊహించగలరా? + +వేరే విధంగా, మీరు శోధన ఫలితాలను వర్గీకరించడానికి ఉపయోగించవచ్చు - ఉదాహరణకు షాపింగ్ లింకులు, చిత్రాలు లేదా సమీక్షల ద్వారా. క్లస్టరింగ్ పెద్ద డేటాసెట్ ఉన్నప్పుడు మరియు మీరు దానిని తగ్గించి మరింత సూక్ష్మ విశ్లేషణ చేయాలనుకుంటే ఉపయోగకరం, కాబట్టి ఈ సాంకేతికతను ఇతర మోడల్స్ నిర్మించకముందు డేటా గురించి తెలుసుకోవడానికి ఉపయోగించవచ్చు. + +✅ ఒకసారి మీ డేటా క్లస్టర్లలో సక్రమంగా ఏర్పాటు చేసిన తర్వాత, మీరు దానికి క్లస్టర్ ID కేటాయిస్తారు, మరియు ఈ సాంకేతికత డేటాసెట్ గోప్యతను కాపాడటంలో ఉపయోగకరంగా ఉంటుంది; మీరు డేటా పాయింట్‌ను మరింత వెల్లడించే గుర్తింపు డేటా ద్వారా కాకుండా దాని క్లస్టర్ ID ద్వారా సూచించవచ్చు. మీరు మరే ఇతర కారణాలు గుర్తించగలరా ఎందుకు మీరు క్లస్టర్ ID ద్వారా దానిని గుర్తించాలనుకుంటారు? + +ఈ [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott) లో క్లస్టరింగ్ సాంకేతికతలపై మీ అవగాహనను లోతుగా చేసుకోండి +## క్లస్టరింగ్ ప్రారంభం + +[Scikit-learn పెద్ద శ్రేణి](https://scikit-learn.org/stable/modules/clustering.html) పద్ధతులను క్లస్టరింగ్ కోసం అందిస్తుంది. మీరు ఎంచుకునే రకం మీ ఉపయోగ కేసుపై ఆధారపడి ఉంటుంది. డాక్యుమెంటేషన్ ప్రకారం, ప్రతి పద్ధతికి వివిధ లాభాలు ఉన్నాయి. ఇక్కడ Scikit-learn మద్దతు ఇచ్చే పద్ధతులు మరియు వాటి సరైన ఉపయోగాల సరళమైన పట్టిక ఉంది: + +| పద్ధతి పేరు | ఉపయోగం | +| :--------------------------- | :--------------------------------------------------------------------- | +| K-Means | సాధారణ ప్రయోజనం, సూచనాత్మక | +| Affinity propagation | చాలా, అసమాన క్లస్టర్లు, సూచనాత్మక | +| Mean-shift | చాలా, అసమాన క్లస్టర్లు, సూచనాత్మక | +| Spectral clustering | కొద్దిగా, సమాన క్లస్టర్లు, ప్రత్యక్షాత్మక | +| Ward hierarchical clustering | చాలా, పరిమిత క్లస్టర్లు, ప్రత్యక్షాత్మక | +| Agglomerative clustering | చాలా, పరిమిత, నాన్ యూక్లిడియన్ దూరాలు, ప్రత్యక్షాత్మక | +| DBSCAN | నాన్-ఫ్లాట్ జ్యామితి, అసమాన క్లస్టర్లు, ప్రత్యక్షాత్మక | +| OPTICS | నాన్-ఫ్లాట్ జ్యామితి, మార్పిడి సాంద్రతతో అసమాన క్లస్టర్లు, ప్రత్యక్షాత్మక | +| Gaussian mixtures | ఫ్లాట్ జ్యామితి, సూచనాత్మక | +| BIRCH | పెద్ద డేటాసెట్ అవుట్లయర్స్‌తో, సూచనాత్మక | + +> 🎓 మనం క్లస్టర్లు ఎలా సృష్టిస్తామో అనేది డేటా పాయింట్లను సమూహాలుగా ఎలా సేకరిస్తామో చాలా సంబంధం కలిగి ఉంటుంది. కొన్ని పదజాలాన్ని వివరించుకుందాం: +> +> 🎓 ['ప్రత్యక్షాత్మక' vs. 'సూచనాత్మక'](https://wikipedia.org/wiki/Transduction_(machine_learning)) +> +> ప్రత్యక్షాత్మక నిర్ధారణ అనేది నిర్దిష్ట పరీక్ష కేసులకు మ్యాప్ అయ్యే పరిశీలించిన శిక్షణ కేసుల నుండి ఉత్పన్నమవుతుంది. సూచనాత్మక నిర్ధారణ సాధారణ నియమాలకు మ్యాప్ అయ్యే శిక్షణ కేసుల నుండి ఉత్పన్నమవుతుంది, అవి తరువాత మాత్రమే పరీక్ష కేసులకు వర్తింపజేయబడతాయి. +> +> ఉదాహరణ: మీ దగ్గర ఒక డేటాసెట్ భాగంగా మాత్రమే లేబుల్ చేయబడింది అని ఊహించండి. కొన్ని వస్తువులు 'రికార్డులు', కొన్ని 'సీడీలు', మరియు కొన్ని ఖాళీగా ఉన్నాయి. ఖాళీలకు లేబుళ్లు ఇవ్వడం మీ పని. మీరు సూచనాత్మక దృష్టికోణాన్ని ఎంచుకుంటే, మీరు 'రికార్డులు' మరియు 'సీడీలు' కోసం మోడల్ శిక్షణ ఇస్తారు, మరియు ఆ లేబుళ్లను లేబుల్ చేయబడని డేటాకు వర్తింపజేస్తారు. ఈ దృష్టికోణం వాస్తవానికి 'కాసెట్‌లు' అయిన వస్తువులను వర్గీకరించడంలో ఇబ్బంది పడుతుంది. ప్రత్యక్షాత్మక దృష్టికోణం, మరోవైపు, ఈ తెలియని డేటాను సమర్థవంతంగా నిర్వహిస్తుంది, ఇది సమాన వస్తువులను సమూహాలుగా కూర్చి, ఆ సమూహానికి లేబుల్ వర్తింపజేస్తుంది. ఈ సందర్భంలో, క్లస్టర్లు 'వృత్తాకార సంగీత వస్తువులు' మరియు 'చతురస్ర సంగీత వస్తువులు'ని ప్రతిబింబించవచ్చు. +> +> 🎓 ['నాన్-ఫ్లాట్' vs. 'ఫ్లాట్' జ్యామితి](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering) +> +> గణిత శాస్త్ర పదజాలం నుండి ఉద్భవించిన, నాన్-ఫ్లాట్ vs. ఫ్లాట్ జ్యామితి అనేది పాయింట్ల మధ్య దూరాలను 'ఫ్లాట్' ([యూక్లిడియన్](https://wikipedia.org/wiki/Euclidean_geometry)) లేదా 'నాన్-ఫ్లాట్' (నాన్-యూక్లిడియన్) జ్యామితి పద్ధతుల ద్వారా కొలవడాన్ని సూచిస్తుంది. +> +>'ఫ్లాట్' ఈ సందర్భంలో యూక్లిడియన్ జ్యామితిని సూచిస్తుంది (దాని భాగాలు 'ప్లేన్' జ్యామితిగా బోధించబడతాయి), మరియు నాన్-ఫ్లాట్ అనేది నాన్-యూక్లిడియన్ జ్యామితి. జ్యామితి మెషీన్ లెర్నింగ్‌కు ఏమి సంబంధం? గణితంలో ఆధారపడిన రెండు రంగాలుగా, క్లస్టర్లలో పాయింట్ల మధ్య దూరాలను కొలవడానికి సాధారణ మార్గం ఉండాలి, అది 'ఫ్లాట్' లేదా 'నాన్-ఫ్లాట్' విధంగా చేయవచ్చు, డేటా స్వభావం ఆధారంగా. [యూక్లిడియన్ దూరాలు](https://wikipedia.org/wiki/Euclidean_distance) రెండు పాయింట్ల మధ్య రేఖా భాగం పొడవుగా కొలవబడతాయి. [నాన్-యూక్లిడియన్ దూరాలు](https://wikipedia.org/wiki/Non-Euclidean_geometry) వక్రరేఖపై కొలవబడతాయి. మీ డేటా, దృశ్యరూపంలో, ఒక సమతలంపై లేనట్టుగా కనిపిస్తే, మీరు దానిని నిర్వహించడానికి ప్రత్యేక అల్గోరిథం అవసరం కావచ్చు. +> +![ఫ్లాట్ vs నాన్-ఫ్లాట్ జ్యామితి ఇన్ఫోగ్రాఫిక్](../../../../translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.te.png) +> ఇన్ఫోగ్రాఫిక్ [దాసాని మడిపల్లి](https://twitter.com/dasani_decoded) ద్వారా +> +> 🎓 ['దూరాలు'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf) +> +> క్లస్టర్లు వాటి దూర మ్యాట్రిక్స్ ద్వారా నిర్వచించబడతాయి, ఉదా: పాయింట్ల మధ్య దూరాలు. ఈ దూరం కొన్ని మార్గాల్లో కొలవబడవచ్చు. యూక్లిడియన్ క్లస్టర్లు పాయింట్ విలువల సగటు ద్వారా నిర్వచించబడతాయి, మరియు 'సెంట్రాయిడ్' లేదా కేంద్ర పాయింట్ కలిగి ఉంటాయి. దూరాలు ఆ సెంట్రాయిడ్ దూరం ద్వారా కొలవబడతాయి. నాన్-యూక్లిడియన్ దూరాలు 'క్లస్ట్రాయిడ్స్'ను సూచిస్తాయి, అంటే ఇతర పాయింట్లకు అత్యంత సమీపమైన పాయింట్. క్లస్ట్రాయిడ్స్ వివిధ రకాలుగా నిర్వచించబడవచ్చు. +> +> 🎓 ['పరిమిత'](https://wikipedia.org/wiki/Constrained_clustering) +> +> [పరిమిత క్లస్టరింగ్](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) ఈ అనియంత్రిత పద్ధతిలో 'సెమీ-సూపర్వైజ్డ్' అభ్యాసాన్ని పరిచయం చేస్తుంది. పాయింట్ల మధ్య సంబంధాలు 'లింక్ చేయకూడదు' లేదా 'లింక్ చేయాలి' అని గుర్తించబడతాయి కాబట్టి కొన్ని నియమాలు డేటాసెట్‌పై బలవంతంగా అమలవుతాయి. +> +>ఉదాహరణ: ఒక అల్గోరిథం లేబుల్ చేయబడని లేదా సెమీ-లేబుల్ చేయబడిన డేటా బ్యాచ్‌పై స్వేచ్ఛగా అమలవుతే, అది ఉత్పత్తి చేసే క్లస్టర్లు తక్కువ నాణ్యత కలిగి ఉండవచ్చు. పై ఉదాహరణలో, క్లస్టర్లు 'వృత్తాకార సంగీత వస్తువులు', 'చతురస్ర సంగీత వస్తువులు', 'త్రిభుజాకార వస్తువులు' మరియు 'కుకీలు'గా వర్గీకరించవచ్చు. కొన్ని పరిమితులు లేదా నియమాలు ("వస్తువు ప్లాస్టిక్‌తో తయారవాలి", "వస్తువు సంగీతం ఉత్పత్తి చేయగలగాలి") ఇవ్వబడితే, ఇది అల్గోరిథం మెరుగైన ఎంపికలు చేయడానికి సహాయపడుతుంది. +> +> 🎓 'సాంద్రత' +> +> 'శబ్దం' ఉన్న డేటాను 'సాంద్రంగా' పరిగణిస్తారు. దాని ప్రతి క్లస్టర్‌లో పాయింట్ల మధ్య దూరాలు పరిశీలనలో ఎక్కువ లేదా తక్కువ సాంద్రత లేదా 'గొడవ'గా ఉండవచ్చు, కాబట్టి ఈ డేటాను సరైన క్లస్టరింగ్ పద్ధతితో విశ్లేషించాలి. [ఈ వ్యాసం](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) K-Means క్లస్టరింగ్ మరియు HDBSCAN అల్గోరిథమ్లను ఉపయోగించి అసమాన క్లస్టర్ సాంద్రతతో శబ్దం ఉన్న డేటాసెట్‌ను అన్వేషించడంలో తేడాను చూపిస్తుంది. + +## క్లస్టరింగ్ అల్గోరిథమ్లు + +100కి పైగా క్లస్టరింగ్ అల్గోరిథమ్లు ఉన్నాయి, మరియు వాటి ఉపయోగం డేటా స్వభావంపై ఆధారపడి ఉంటుంది. కొన్ని ప్రధానమైన వాటిని చర్చిద్దాం: + +- **హైరార్కికల్ క్లస్టరింగ్**. ఒక వస్తువు దాని సమీప వస్తువుతో సమీపత ఆధారంగా వర్గీకరించబడితే, దూరం ఆధారంగా క్లస్టర్లు ఏర్పడతాయి. Scikit-learn యొక్క అగ్లోమెరేటివ్ క్లస్టరింగ్ హైరార్కికల్. + + ![హైరార్కికల్ క్లస్టరింగ్ ఇన్ఫోగ్రాఫిక్](../../../../translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.te.png) + > ఇన్ఫోగ్రాఫిక్ [దాసాని మడిపల్లి](https://twitter.com/dasani_decoded) ద్వారా + +- **సెంట్రాయిడ్ క్లస్టరింగ్**. ఈ ప్రాచుర్యం పొందిన అల్గోరిథం 'k' లేదా ఏర్పరచాల్సిన క్లస్టర్ల సంఖ్యను ఎంచుకోవాలి, ఆ తర్వాత అల్గోరిథం క్లస్టర్ కేంద్ర పాయింట్‌ను నిర్ణయించి ఆ పాయింట్ చుట్టూ డేటాను సేకరిస్తుంది. [K-means క్లస్టరింగ్](https://wikipedia.org/wiki/K-means_clustering) సెంట్రాయిడ్ క్లస్టరింగ్ యొక్క ప్రాచుర్యం పొందిన వెర్షన్. కేంద్రం సమీప సగటు ద్వారా నిర్ణయించబడుతుంది, అందుకే పేరు. క్లస్టర్ నుండి చతురస్ర దూరం తగ్గించబడుతుంది. + + ![సెంట్రాయిడ్ క్లస్టరింగ్ ఇన్ఫోగ్రాఫిక్](../../../../translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.te.png) + > ఇన్ఫోగ్రాఫిక్ [దాసాని మడిపల్లి](https://twitter.com/dasani_decoded) ద్వారా + +- **వితరణ ఆధారిత క్లస్టరింగ్**. గణాంక నమూనాలపై ఆధారపడి, వితరణ ఆధారిత క్లస్టరింగ్ ఒక డేటా పాయింట్ ఒక క్లస్టర్‌కు చెందే సంభావ్యతను నిర్ణయించి, దానికి అనుగుణంగా కేటాయిస్తుంది. గౌసియన్ మిశ్రమ పద్ధతులు ఈ రకానికి చెందుతాయి. + +- **సాంద్రత ఆధారిత క్లస్టరింగ్**. డేటా పాయింట్లు వారి సాంద్రత లేదా ఒకరితో ఒకరు సమూహంగా ఉండటం ఆధారంగా క్లస్టర్లకు కేటాయించబడతాయి. సమూహం నుండి దూరంగా ఉన్న డేటా పాయింట్లు అవుట్లయర్స్ లేదా శబ్దంగా పరిగణించబడతాయి. DBSCAN, Mean-shift మరియు OPTICS ఈ రకమైన క్లస్టరింగ్‌కు చెందుతాయి. + +- **గ్రిడ్ ఆధారిత క్లస్టరింగ్**. బహుమాణ డేటాసెట్‌ల కోసం, ఒక గ్రిడ్ సృష్టించి డేటాను గ్రిడ్ సెల్‌ల మధ్య విభజించి క్లస్టర్లు సృష్టిస్తారు. + +## వ్యాయామం - మీ డేటాను క్లస్టర్ చేయండి + +క్లస్టరింగ్ సాంకేతికత సరైన దృశ్యీకరణతో చాలా సహాయపడుతుంది, కాబట్టి మన సంగీత డేటాను దృశ్యీకరించడం ప్రారంభిద్దాం. ఈ వ్యాయామం మనకు ఈ డేటా స్వభావానికి ఏ క్లస్టరింగ్ పద్ధతిని సమర్థవంతంగా ఉపయోగించాలో నిర్ణయించడంలో సహాయపడుతుంది. + +1. ఈ ఫోల్డర్‌లోని [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/notebook.ipynb) ఫైల్‌ను తెరవండి. + +1. మంచి డేటా దృశ్యీకరణ కోసం `Seaborn` ప్యాకేజీని దిగుమతి చేసుకోండి. + + ```python + !pip install seaborn + ``` + +1. [_nigerian-songs.csv_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/data/nigerian-songs.csv) నుండి పాటల డేటాను జోడించండి. పాటల గురించి కొంత డేటాతో డేటాఫ్రేమ్‌ను లోడ్ చేయండి. లైబ్రరీలను దిగుమతి చేసుకుని డేటాను ప్రదర్శించడానికి సిద్ధంగా ఉండండి: + + ```python + import matplotlib.pyplot as plt + import pandas as pd + + df = pd.read_csv("../data/nigerian-songs.csv") + df.head() + ``` + + మొదటి కొన్ని లైన్ల డేటాను తనిఖీ చేయండి: + + | | name | album | artist | artist_top_genre | release_date | length | popularity | danceability | acousticness | energy | instrumentalness | liveness | loudness | speechiness | tempo | time_signature | + | --- | ------------------------ | ---------------------------- | ------------------- | ---------------- | ------------ | ------ | ---------- | ------------ | ------------ | ------ | ---------------- | -------- | -------- | ----------- | ------- | -------------- | + | 0 | Sparky | Mandy & The Jungle | Cruel Santino | alternative r&b | 2019 | 144000 | 48 | 0.666 | 0.851 | 0.42 | 0.534 | 0.11 | -6.699 | 0.0829 | 133.015 | 5 | + | 1 | shuga rush | EVERYTHING YOU HEARD IS TRUE | Odunsi (The Engine) | afropop | 2020 | 89488 | 30 | 0.71 | 0.0822 | 0.683 | 0.000169 | 0.101 | -5.64 | 0.36 | 129.993 | 3 | + | 2 | LITT! | LITT! | AYLØ | ఇండీ ఆర్&బి | 2018 | 207758 | 40 | 0.836 | 0.272 | 0.564 | 0.000537 | 0.11 | -7.127 | 0.0424 | 130.005 | 4 | + | 3 | Confident / Feeling Cool | Enjoy Your Life | Lady Donli | నైజీరియన్ పాప్ | 2019 | 175135 | 14 | 0.894 | 0.798 | 0.611 | 0.000187 | 0.0964 | -4.961 | 0.113 | 111.087 | 4 | + | 4 | wanted you | rare. | Odunsi (The Engine) | ఆఫ్రోపాప్ | 2018 | 152049 | 25 | 0.702 | 0.116 | 0.833 | 0.91 | 0.348 | -6.044 | 0.0447 | 105.115 | 4 | + +1. డేటాఫ్రేమ్ గురించి కొంత సమాచారం పొందండి, `info()` ను పిలవండి: + + ```python + df.info() + ``` + + అవుట్పుట్ ఇలా ఉంటుంది: + + ```output + + RangeIndex: 530 entries, 0 to 529 + Data columns (total 16 columns): + # Column Non-Null Count Dtype + --- ------ -------------- ----- + 0 name 530 non-null object + 1 album 530 non-null object + 2 artist 530 non-null object + 3 artist_top_genre 530 non-null object + 4 release_date 530 non-null int64 + 5 length 530 non-null int64 + 6 popularity 530 non-null int64 + 7 danceability 530 non-null float64 + 8 acousticness 530 non-null float64 + 9 energy 530 non-null float64 + 10 instrumentalness 530 non-null float64 + 11 liveness 530 non-null float64 + 12 loudness 530 non-null float64 + 13 speechiness 530 non-null float64 + 14 tempo 530 non-null float64 + 15 time_signature 530 non-null int64 + dtypes: float64(8), int64(4), object(4) + memory usage: 66.4+ KB + ``` + +1. నల్ విలువల కోసం డబుల్-చెక్ చేయండి, `isnull()` ను పిలవడం ద్వారా మరియు మొత్తం 0 అని నిర్ధారించండి: + + ```python + df.isnull().sum() + ``` + + బాగుంది: + + ```output + name 0 + album 0 + artist 0 + artist_top_genre 0 + release_date 0 + length 0 + popularity 0 + danceability 0 + acousticness 0 + energy 0 + instrumentalness 0 + liveness 0 + loudness 0 + speechiness 0 + tempo 0 + time_signature 0 + dtype: int64 + ``` + +1. డేటాను వివరించండి: + + ```python + df.describe() + ``` + + | | విడుదల తేదీ | పొడవు | ప్రాచుర్యం | డ్యాన్సబిలిటీ | అకౌస్టిక్‌నెస్ | ఎనర్జీ | ఇన్‌స్ట్రుమెంటల్‌నెస్ | లైవ్‌నెస్ | లౌడ్నెస్ | స్పీచినెస్ | టెంపో | టైమ్ సిగ్నేచర్ | + | ----- | ------------ | ----------- | ---------- | ------------ | ------------ | -------- | ---------------- | -------- | --------- | ----------- | ---------- | -------------- | + | కౌంట్ | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | + | సగటు | 2015.390566 | 222298.1698 | 17.507547 | 0.741619 | 0.265412 | 0.760623 | 0.016305 | 0.147308 | -4.953011 | 0.130748 | 116.487864 | 3.986792 | + | స్టాండర్డ్ డెవియేషన్ | 3.131688 | 39696.82226 | 18.992212 | 0.117522 | 0.208342 | 0.148533 | 0.090321 | 0.123588 | 2.464186 | 0.092939 | 23.518601 | 0.333701 | + | కనిష్ఠం | 1998 | 89488 | 0 | 0.255 | 0.000665 | 0.111 | 0 | 0.0283 | -19.362 | 0.0278 | 61.695 | 3 | + | 25% | 2014 | 199305 | 0 | 0.681 | 0.089525 | 0.669 | 0 | 0.07565 | -6.29875 | 0.0591 | 102.96125 | 4 | + | 50% | 2016 | 218509 | 13 | 0.761 | 0.2205 | 0.7845 | 0.000004 | 0.1035 | -4.5585 | 0.09795 | 112.7145 | 4 | + | 75% | 2017 | 242098.5 | 31 | 0.8295 | 0.403 | 0.87575 | 0.000234 | 0.164 | -3.331 | 0.177 | 125.03925 | 4 | + | గరిష్ఠం | 2020 | 511738 | 73 | 0.966 | 0.954 | 0.995 | 0.91 | 0.811 | 0.582 | 0.514 | 206.007 | 5 | + +> 🤔 మనం క్లస్టరింగ్‌తో పని చేస్తున్నప్పుడు, లేబుల్డ్ డేటా అవసరం లేని ఒక అన్‌సూపర్వైజ్డ్ పద్ధతి, ఎందుకు ఈ డేటాను లేబుల్స్‌తో చూపిస్తున్నాం? డేటా అన్వేషణ దశలో అవి ఉపయోగకరంగా ఉంటాయి, కానీ క్లస్టరింగ్ అల్గోరిథమ్స్ పనిచేయడానికి అవి అవసరం కాదు. మీరు కాలమ్ హెడ్డర్లను తీసేసి కాలమ్ నంబర్ ద్వారా డేటాను సూచించవచ్చు. + +డేటా యొక్క సాధారణ విలువలను చూడండి. ప్రాచుర్యం '0' కావచ్చు, అంటే ర్యాంకింగ్ లేని పాటలు. వాటిని త్వరలో తీసివేద్దాం. + +1. అత్యంత ప్రాచుర్యం ఉన్న జానర్లను కనుగొనడానికి బార్ప్లాట్ ఉపయోగించండి: + + ```python + import seaborn as sns + + top = df['artist_top_genre'].value_counts() + plt.figure(figsize=(10,7)) + sns.barplot(x=top[:5].index,y=top[:5].values) + plt.xticks(rotation=45) + plt.title('Top genres',color = 'blue') + ``` + + ![most popular](../../../../translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.te.png) + +✅ మీరు ఎక్కువ టాప్ విలువలు చూడాలనుకుంటే, టాప్ `[:5]` ను పెద్ద విలువగా మార్చండి లేదా అన్ని చూడటానికి తీసివేయండి. + +గమనించండి, టాప్ జానర్ 'Missing' గా ఉంటే, అంటే Spotify దాన్ని వర్గీకరించలేదు, కాబట్టి దాన్ని తీసివేయండి. + +1. మిస్సింగ్ డేటాను ఫిల్టర్ చేసి తీసివేయండి + + ```python + df = df[df['artist_top_genre'] != 'Missing'] + top = df['artist_top_genre'].value_counts() + plt.figure(figsize=(10,7)) + sns.barplot(x=top.index,y=top.values) + plt.xticks(rotation=45) + plt.title('Top genres',color = 'blue') + ``` + + ఇప్పుడు జానర్లను మళ్లీ తనిఖీ చేయండి: + + ![most popular](../../../../translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.te.png) + +1. ఇప్పటి వరకు, టాప్ మూడు జానర్లు ఈ డేటాసెట్‌ను ఆధిపత్యం చేస్తాయి. `afro dancehall`, `afropop`, మరియు `nigerian pop` పై దృష్టి పెట్టండి, అదనంగా 0 ప్రాచుర్యం విలువ ఉన్న ఏదైనా డేటాను తీసివేయండి (అంటే డేటాసెట్‌లో ప్రాచుర్యం తో వర్గీకరించబడలేదు మరియు మన ప్రయోజనాలకు శబ్దం గా పరిగణించవచ్చు): + + ```python + df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')] + df = df[(df['popularity'] > 0)] + top = df['artist_top_genre'].value_counts() + plt.figure(figsize=(10,7)) + sns.barplot(x=top.index,y=top.values) + plt.xticks(rotation=45) + plt.title('Top genres',color = 'blue') + ``` + +1. డేటా ఏదైనా బలమైన సంబంధం కలిగి ఉందా అని త్వరిత పరీక్ష చేయండి: + + ```python + corrmat = df.corr(numeric_only=True) + f, ax = plt.subplots(figsize=(12, 9)) + sns.heatmap(corrmat, vmax=.8, square=True) + ``` + + ![correlations](../../../../translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.te.png) + + ఒకే బలమైన సంబంధం `energy` మరియు `loudness` మధ్య ఉంది, ఇది ఆశ్చర్యకరం కాదు, ఎందుకంటే శబ్దమైన సంగీతం సాధారణంగా చాలా శక్తివంతంగా ఉంటుంది. మిగతా సంబంధాలు తక్కువ బలంగా ఉన్నాయి. ఈ డేటాను క్లస్టరింగ్ అల్గోరిథం ఎలా ఉపయోగిస్తుందో చూడటం ఆసక్తికరం. + + > 🎓 సంబంధం కారణాన్ని సూచించదు! మనకు సంబంధం ఉన్నదని సాక్ష్యం ఉంది కానీ కారణం ఉన్నదని లేదు. ఒక [వినోదాత్మక వెబ్ సైట్](https://tylervigen.com/spurious-correlations) ఈ విషయాన్ని హైలైట్ చేస్తుంది. + +ఈ డేటాసెట్‌లో పాట యొక్క భావిత ప్రాచుర్యం మరియు డ్యాన్సబిలిటీ మధ్య ఏదైనా సమీకరణ ఉందా? ఒక FacetGrid చూపిస్తుంది, జానర్‌ను పక్కన పెట్టినా, సెంట్రిక్ సర్కిల్స్ సరిపోతున్నాయి. నైజీరియన్ రుచులు ఈ జానర్ కోసం ఒక నిర్దిష్ట డ్యాన్సబిలిటీ స్థాయిలో సమీకరించవచ్చా? + +✅ వేరే డేటాపాయింట్లు (energy, loudness, speechiness) మరియు మరిన్ని లేదా వేరే సంగీత జానర్లను ప్రయత్నించండి. మీరు ఏమి కనుగొంటారు? `df.describe()` పట్టికను చూడండి డేటా పాయింట్ల సాధారణ వ్యాప్తిని తెలుసుకోవడానికి. + +### వ్యాయామం - డేటా పంపిణీ + +ఈ మూడు జానర్లు వారి డ్యాన్సబిలిటీ భావనలో ప్రాచుర్యం ఆధారంగా గణనీయంగా భిన్నమా? + +1. మన టాప్ మూడు జానర్ల డేటా పంపిణీని ప్రాచుర్యం మరియు డ్యాన్సబిలిటీ కోసం ఒక నిర్దిష్ట x మరియు y అక్షాలపై పరిశీలించండి. + + ```python + sns.set_theme(style="ticks") + + g = sns.jointplot( + data=df, + x="popularity", y="danceability", hue="artist_top_genre", + kind="kde", + ) + ``` + + మీరు సెంట్రిక్ సర్కిల్స్ కనుగొనవచ్చు, ఒక సాధారణ సమీకరణ పాయింట్ చుట్టూ, పాయింట్ల పంపిణీని చూపిస్తూ. + + > 🎓 ఈ ఉదాహరణలో KDE (కర్నెల్ డెన్సిటీ ఎస్టిమేట్) గ్రాఫ్ ఉపయోగించబడింది, ఇది డేటాను నిరంతర ప్రాబబిలిటీ డెన్సిటీ వక్రంగా ప్రదర్శిస్తుంది. ఇది బహుళ పంపిణీలతో పని చేసే సమయంలో డేటాను అర్థం చేసుకోవడానికి సహాయపడుతుంది. + + సాధారణంగా, ఈ మూడు జానర్లు వారి ప్రాచుర్యం మరియు డ్యాన్సబిలిటీ పరంగా సడలిన సరిపోలికలో ఉంటాయి. ఈ సడలిన సరిపోలిక డేటాలో క్లస్టర్లను నిర్ణయించడం ఒక సవాలు: + + ![distribution](../../../../translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.te.png) + +1. ఒక స్కాటర్ ప్లాట్ సృష్టించండి: + + ```python + sns.FacetGrid(df, hue="artist_top_genre", height=5) \ + .map(plt.scatter, "popularity", "danceability") \ + .add_legend() + ``` + + అదే అక్షాల స్కాటర్‌ప్లాట్ ఒక సమానమైన సమీకరణ నమూనాను చూపిస్తుంది + + ![Facetgrid](../../../../translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.te.png) + +సాధారణంగా, క్లస్టరింగ్ కోసం, మీరు డేటా క్లస్టర్లను చూపించడానికి స్కాటర్‌ప్లాట్లను ఉపయోగించవచ్చు, కాబట్టి ఈ రకమైన విజువలైజేషన్‌ను నేర్చుకోవడం చాలా ఉపయోగకరం. తదుపరి పాఠంలో, మనం ఈ ఫిల్టర్ చేసిన డేటాను తీసుకుని k-means క్లస్టరింగ్ ఉపయోగించి ఈ డేటాలో ఆసక్తికరమైన రీతిలో ఓవర్‌ల్యాప్ అయ్యే గ్రూపులను కనుగొంటాము. + +--- + +## 🚀సవాలు + +తదుపరి పాఠానికి సిద్ధంగా, మీరు కనుగొనగల మరియు ఉత్పత్తి వాతావరణంలో ఉపయోగించగల వివిధ క్లస్టరింగ్ అల్గోరిథమ్స్ గురించి ఒక చార్ట్ తయారుచేయండి. క్లస్టరింగ్ ఏ రకాల సమస్యలను పరిష్కరించడానికి ప్రయత్నిస్తోంది? + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +క్లస్టరింగ్ అల్గోరిథమ్స్‌ను వర్తింపజేసే ముందు, మనం నేర్చుకున్నట్లుగా, మీ డేటాసెట్ స్వభావాన్ని అర్థం చేసుకోవడం మంచిది. ఈ విషయంపై మరింత చదవండి [ఇక్కడ](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html) + +[ఈ సహాయక వ్యాసం](https://www.freecodecamp.org/news/8-clustering-algorithms-in-machine-learning-that-all-data-scientists-should-know/) వివిధ డేటా ఆకారాలపై వివిధ క్లస్టరింగ్ అల్గోరిథమ్స్ ఎలా ప్రవర్తిస్తాయో మీకు చూపిస్తుంది. + +## అసైన్‌మెంట్ + +[క్లస్టరింగ్ కోసం ఇతర విజువలైజేషన్లపై పరిశోధన చేయండి](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/5-Clustering/1-Visualize/assignment.md b/translations/te/5-Clustering/1-Visualize/assignment.md new file mode 100644 index 000000000..8d89bc38d --- /dev/null +++ b/translations/te/5-Clustering/1-Visualize/assignment.md @@ -0,0 +1,27 @@ + +# క్లస్టరింగ్ కోసం ఇతర విజువలైజేషన్లపై పరిశోధన + +## సూచనలు + +ఈ పాఠంలో, మీరు క్లస్టరింగ్‌కు సిద్ధం చేసుకునేందుకు మీ డేటాను ప్లాట్ చేయడంలో సహాయపడే కొన్ని విజువలైజేషన్ సాంకేతికతలతో పని చేశారు. ప్రత్యేకంగా, స్కాటర్‌ప్లాట్లు వస్తువుల సమూహాలను కనుగొనడంలో ఉపయోగకరంగా ఉంటాయి. స్కాటర్‌ప్లాట్లు సృష్టించడానికి వివిధ మార్గాలు మరియు వివిధ లైబ్రరీలను పరిశోధించి, మీ పని ఒక నోట్బుక్‌లో డాక్యుమెంట్ చేయండి. మీరు ఈ పాఠం నుండి, ఇతర పాఠాల నుండి లేదా మీరు స్వయంగా పొందిన డేటాను ఉపయోగించవచ్చు (అయితే దాని మూలాన్ని మీ నోట్బుక్‌లో క్రెడిట్ చేయండి). స్కాటర్‌ప్లాట్లను ఉపయోగించి కొంత డేటాను ప్లాట్ చేసి, మీరు కనుగొన్న విషయాలను వివరించండి. + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైనది | సరిపడినది | మెరుగుదల అవసరం | +| -------- | -------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ----------------------------------- | +| | ఐదు బాగా డాక్యుమెంట్ చేయబడిన స్కాటర్‌ప్లాట్లతో కూడిన నోట్బుక్ అందించబడింది | ఐదు కన్నా తక్కువ స్కాటర్‌ప్లాట్లతో కూడిన మరియు తక్కువగా డాక్యుమెంట్ చేయబడిన నోట్బుక్ అందించబడింది | అసంపూర్ణమైన నోట్బుక్ అందించబడింది | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/5-Clustering/1-Visualize/notebook.ipynb b/translations/te/5-Clustering/1-Visualize/notebook.ipynb new file mode 100644 index 000000000..6c6061ee5 --- /dev/null +++ b/translations/te/5-Clustering/1-Visualize/notebook.ipynb @@ -0,0 +1,52 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python383jvsc74a57bd0e134e05457d34029b6460cd73bbf1ed73f339b5b6d98c95be70b69eba114fe95", + "display_name": "Python 3.8.3 64-bit (conda)" + }, + "coopTranslator": { + "original_hash": "40e0707e96b3e1899a912776006264f9", + "translation_date": "2025-12-19T16:50:39+00:00", + "source_file": "5-Clustering/1-Visualize/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# స్పాటిఫై నుండి సేకరించిన నైజీరియన్ సంగీతం - ఒక విశ్లేషణ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "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/5-Clustering/1-Visualize/solution/Julia/README.md b/translations/te/5-Clustering/1-Visualize/solution/Julia/README.md new file mode 100644 index 000000000..38faf0b83 --- /dev/null +++ b/translations/te/5-Clustering/1-Visualize/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/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb b/translations/te/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb new file mode 100644 index 000000000..ccb98d403 --- /dev/null +++ b/translations/te/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb @@ -0,0 +1,500 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "## **స్పాటిఫై నుండి సేకరించిన నైజీరియన్ సంగీతం - ఒక విశ్లేషణ**\n", + "\n", + "క్లస్టరింగ్ అనేది [అనియంత్రిత అభ్యాసం](https://wikipedia.org/wiki/Unsupervised_learning) యొక్క ఒక రకం, ఇది ఒక డేటాసెట్ లేబుల్ చేయబడలేదు లేదా దాని ఇన్‌పుట్లు ముందుగా నిర్వచించిన అవుట్‌పుట్లతో సరిపోలడం లేదని ఊహిస్తుంది. ఇది వివిధ అల్గోరిథమ్లను ఉపయోగించి లేబుల్ చేయబడని డేటాను వర్గీకరించి, డేటాలో కనిపించే నమూనాల ప్రకారం సమూహాలను అందిస్తుంది.\n", + "\n", + "[**పూర్వ-లెక్చర్ క్విజ్**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/27/)\n", + "\n", + "### **పరిచయం**\n", + "\n", + "[క్లస్టరింగ్](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) డేటా అన్వేషణకు చాలా ఉపయోగకరం. నైజీరియన్ ప్రేక్షకులు సంగీతాన్ని ఎలా వినుతారో దాని లోపల ట్రెండ్లు మరియు నమూనాలను కనుగొనడంలో ఇది సహాయపడుతుందో చూద్దాం.\n", + "\n", + "> ✅ క్లస్టరింగ్ ఉపయోగాల గురించి ఒక నిమిషం ఆలోచించండి. నిజ జీవితంలో, మీరు ఒక బట్టల గుంపు ఉన్నప్పుడు మీ కుటుంబ సభ్యుల బట్టలను వర్గీకరించాల్సినప్పుడు క్లస్టరింగ్ జరుగుతుంది 🧦👕👖🩲. డేటా సైన్స్‌లో, క్లస్టరింగ్ ఒక వినియోగదారుడి ఇష్టాలను విశ్లేషించేటప్పుడు లేదా ఏదైనా లేబుల్ చేయబడని డేటాసెట్ లక్షణాలను నిర్ణయించేటప్పుడు జరుగుతుంది. క్లస్టరింగ్ ఒక విధంగా గందరగోళాన్ని అర్థం చేసుకోవడంలో సహాయపడుతుంది, ఒక సాక్స్ డ్రాయర్ లాగా.\n", + "\n", + "వృత్తిపరమైన పరిసరాల్లో, మార్కెట్ విభజన, వయస్సు గుంపులు ఏ వస్తువులు కొనుగోలు చేస్తాయో నిర్ణయించడం వంటి విషయాలను నిర్ణయించడానికి క్లస్టరింగ్ ఉపయోగించవచ్చు. మరో ఉపయోగం అనామలీ గుర్తింపు, ఉదాహరణకు క్రెడిట్ కార్డ్ లావాదేవీల డేటాసెట్ నుండి మోసం గుర్తించడానికి. లేదా మీరు క్లస్టరింగ్‌ను వైద్య స్కాన్ల బ్యాచ్‌లో ట్యూమర్లను గుర్తించడానికి ఉపయోగించవచ్చు.\n", + "\n", + "✅ బ్యాంకింగ్, ఈ-కామర్స్ లేదా వ్యాపార పరిసరాల్లో మీరు క్లస్టరింగ్‌ను 'వనంలో' ఎలా ఎదుర్కొన్నారో ఒక నిమిషం ఆలోచించండి.\n", + "\n", + "> 🎓 ఆసక్తికరంగా, క్లస్టర్ విశ్లేషణ 1930లలో మానవ శాస్త్రం మరియు మానసిక శాస్త్రం రంగాలలో ప్రారంభమైంది. మీరు దీన్ని ఎలా ఉపయోగించారో ఊహించగలరా?\n", + "\n", + "వేరే విధంగా, మీరు శోధన ఫలితాలను వర్గీకరించడానికి ఉపయోగించవచ్చు - ఉదాహరణకు షాపింగ్ లింకులు, చిత్రాలు లేదా సమీక్షల ద్వారా. క్లస్టరింగ్ పెద్ద డేటాసెట్ ఉన్నప్పుడు దాన్ని తగ్గించడానికి మరియు మరింత సూక్ష్మ విశ్లేషణ చేయడానికి ఉపయోగపడుతుంది, కాబట్టి ఈ సాంకేతికత ఇతర మోడల్స్ నిర్మించక ముందు డేటా గురించి తెలుసుకోవడానికి ఉపయోగపడుతుంది.\n", + "\n", + "✅ ఒకసారి మీ డేటా క్లస్టర్లలో సక్రమంగా ఏర్పడిన తర్వాత, మీరు దానికి క్లస్టర్ ID కేటాయిస్తారు, మరియు ఈ సాంకేతికత డేటాసెట్ గోప్యతను కాపాడటంలో ఉపయోగపడుతుంది; మీరు ఒక డేటా పాయింట్‌ను మరింత వెల్లడించే గుర్తింపు డేటా ద్వారా కాకుండా దాని క్లస్టర్ ID ద్వారా సూచించవచ్చు. మీరు మరెన్ని కారణాలు గుర్తించగలరా, ఎందుకు మీరు క్లస్టర్ ID ద్వారా దాన్ని గుర్తించాలనుకుంటారు?\n", + "\n", + "### క్లస్టరింగ్ ప్రారంభించడం\n", + "\n", + "> 🎓 మేము క్లస్టర్లను ఎలా సృష్టిస్తామో అది డేటా పాయింట్లను సమూహాలుగా ఎలా సేకరిస్తామో చాలా సంబంధం కలిగి ఉంటుంది. కొన్ని పదజాలాలను వివరించుకుందాం:\n", + ">\n", + "> 🎓 ['ట్రాన్స్‌డక్టివ్' vs. 'ఇండక్టివ్'](https://wikipedia.org/wiki/Transduction_(machine_learning))\n", + ">\n", + "> ట్రాన్స్‌డక్టివ్ ఇన్ఫరెన్స్ అనేది నిర్దిష్ట పరీక్ష కేసులకు మ్యాప్ అయ్యే పరిశీలించిన శిక్షణ కేసుల నుండి ఉత్పన్నమవుతుంది. ఇండక్టివ్ ఇన్ఫరెన్స్ సాధారణ నియమాలకు మ్యాప్ అయ్యే శిక్షణ కేసుల నుండి ఉత్పన్నమవుతుంది, అవి తర్వాత మాత్రమే పరీక్ష కేసులకు వర్తింపజేయబడతాయి.\n", + ">\n", + "> ఉదాహరణ: మీరు ఒక డేటాసెట్‌ను కలిగి ఉన్నారు, అది భాగంగా మాత్రమే లేబుల్ చేయబడింది. కొన్ని 'రికార్డులు', కొన్ని 'సీడీలు', మరియు కొన్ని ఖాళీగా ఉన్నాయి. మీ పని ఖాళీలకు లేబుల్స్ ఇవ్వడం. మీరు ఇండక్టివ్ పద్ధతిని ఎంచుకుంటే, మీరు 'రికార్డులు' మరియు 'సీడీలు' కోసం ఒక మోడల్‌ను శిక్షణ ఇస్తారు, మరియు ఆ లేబుల్స్‌ను లేబుల్ చేయబడని డేటాకు వర్తింపజేస్తారు. ఈ పద్ధతి నిజంగా 'కాసెట్స్' అయిన వాటిని వర్గీకరించడంలో ఇబ్బంది పడుతుంది. మరోవైపు, ట్రాన్స్‌డక్టివ్ పద్ధతి ఈ తెలియని డేటాను మరింత సమర్థవంతంగా నిర్వహిస్తుంది, ఇది సమానమైన అంశాలను సమూహాలుగా కలిపి ఆ సమూహానికి లేబుల్‌ను వర్తింపజేస్తుంది. ఈ సందర్భంలో, క్లస్టర్లు 'వృత్తాకార సంగీత వస్తువులు' మరియు 'చతురస్ర సంగీత వస్తువులు'ని ప్రతిబింబించవచ్చు.\n", + ">\n", + "> 🎓 ['నాన్-ఫ్లాట్' vs. 'ఫ్లాట్' జ్యామితి](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering)\n", + ">\n", + "> గణిత శాస్త్ర పదజాలం నుండి ఉద్భవించిన, నాన్-ఫ్లాట్ vs. ఫ్లాట్ జ్యామితి అనేది పాయింట్ల మధ్య దూరాలను 'ఫ్లాట్' ([యూక్లిడియన్](https://wikipedia.org/wiki/Euclidean_geometry)) లేదా 'నాన్-ఫ్లాట్' (నాన్-యూక్లిడియన్) జ్యామితి పద్ధతుల ద్వారా కొలవడాన్ని సూచిస్తుంది.\n", + ">\n", + "> ఇక్కడ 'ఫ్లాట్' అనగా యూక్లిడియన్ జ్యామితి (దాని భాగాలు 'ప్లేన్' జ్యామితిగా బోధించబడతాయి), మరియు నాన్-ఫ్లాట్ అనగా నాన్-యూక్లిడియన్ జ్యామితి. జ్యామితి కి మెషీన్ లెర్నింగ్ తో సంబంధం ఏమిటి? గణిత శాస్త్రంలో ఆధారపడిన రెండు రంగాలుగా, క్లస్టర్లలో పాయింట్ల మధ్య దూరాలను కొలవడానికి ఒక సాధారణ మార్గం ఉండాలి, అది 'ఫ్లాట్' లేదా 'నాన్-ఫ్లాట్' విధంగా చేయవచ్చు, డేటా స్వభావం ఆధారంగా. [యూక్లిడియన్ దూరాలు](https://wikipedia.org/wiki/Euclidean_distance) రెండు పాయింట్ల మధ్య రేఖా భాగం పొడవుగా కొలవబడతాయి. [నాన్-యూక్లిడియన్ దూరాలు](https://wikipedia.org/wiki/Non-Euclidean_geometry) వక్రరేఖపై కొలవబడతాయి. మీ డేటా, దృశ్యరూపంలో, ఒక ప్లేన్ పై లేనట్టుగా కనిపిస్తే, మీరు దాన్ని నిర్వహించడానికి ప్రత్యేక అల్గోరిథం అవసరం కావచ్చు.\n", + "\n", + "

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

ఇన్ఫోగ్రాఫిక్ - దాసాని మడిపల్లి
\n", + "\n", + "\n", + "\n", + "> 🎓 ['దూరాలు'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf)\n", + ">\n", + "> క్లస్టర్లు వాటి దూర మ్యాట్రిక్స్ ద్వారా నిర్వచించబడతాయి, ఉదా: పాయింట్ల మధ్య దూరాలు. ఈ దూరం కొలవడంలో కొన్ని మార్గాలు ఉన్నాయి. యూక్లిడియన్ క్లస్టర్లు పాయింట్ విలువల సగటు ద్వారా నిర్వచించబడతాయి, మరియు 'సెంట్రాయిడ్' లేదా కేంద్ర పాయింట్ కలిగి ఉంటాయి. దూరాలు ఆ సెంట్రాయిడ్ దూరం ద్వారా కొలవబడతాయి. నాన్-యూక్లిడియన్ దూరాలు 'క్లస్ట్రాయిడ్స్' కు సంబంధించినవి, అంటే ఇతర పాయింట్లకు అత్యంత సమీపమైన పాయింట్. క్లస్ట్రాయిడ్స్ వివిధ రకాలుగా నిర్వచించబడవచ్చు.\n", + ">\n", + "> 🎓 ['కన్స్ట్రెయిన్డ్'](https://wikipedia.org/wiki/Constrained_clustering)\n", + ">\n", + "> [కన్స్ట్రెయిన్డ్ క్లస్టరింగ్](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) ఈ అనియంత్రిత పద్ధతిలో 'సెమీ-సూపర్వైజ్డ్' లెర్నింగ్‌ను పరిచయం చేస్తుంది. పాయింట్ల మధ్య సంబంధాలు 'లింక్ చేయకూడదు' లేదా 'లింక్ చేయాలి' అని గుర్తించబడతాయి, కాబట్టి కొన్ని నియమాలు డేటాసెట్‌పై అమలవుతాయి.\n", + ">\n", + "> ఉదాహరణ: ఒక అల్గోరిథం లేబుల్ చేయబడని లేదా సెమీ-లేబుల్ చేయబడిన డేటా బ్యాచ్‌పై స్వేచ్ఛగా అమలవుతే, అది ఉత్పత్తి చేసే క్లస్టర్లు తక్కువ నాణ్యత కలిగి ఉండవచ్చు. పై ఉదాహరణలో, క్లస్టర్లు 'వృత్తాకార సంగీత వస్తువులు', 'చతురస్ర సంగీత వస్తువులు', 'త్రిభుజాకార వస్తువులు' మరియు 'కుకీస్' గా వర్గీకరించవచ్చు. కొన్ని నియమాలు లేదా నియమాలను (\"వస్తువు ప్లాస్టిక్‌తో తయారవాలి\", \"వస్తువు సంగీతం ఉత్పత్తి చేయగలగాలి\") ఇవ్వడం ద్వారా అల్గోరిథం మెరుగైన ఎంపికలు చేయడానికి 'కన్స్ట్రెయిన్' చేయవచ్చు.\n", + ">\n", + "> 🎓 'డెన్సిటీ'\n", + ">\n", + "> 'నాయిసీ'గా పరిగణించబడే డేటా 'డెన్స్' గా పరిగణించబడుతుంది. దాని ప్రతి క్లస్టర్‌లో పాయింట్ల మధ్య దూరాలు పరిశీలనలో ఎక్కువ లేదా తక్కువగా ఉండవచ్చు, లేదా 'గొడవ'గా ఉండవచ్చు, కాబట్టి ఈ డేటాను సరైన క్లస్టరింగ్ పద్ధతితో విశ్లేషించాలి. [ఈ వ్యాసం](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) K-Means క్లస్టరింగ్ మరియు HDBSCAN అల్గోరిథమ్లను ఉపయోగించి అసమానమైన క్లస్టర్ డెన్సిటీ ఉన్న నాయిసీ డేటాసెట్‌ను అన్వేషించడంలో తేడాను చూపిస్తుంది.\n", + "\n", + "ఈ [లెర్న్ మాడ్యూల్](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott) లో క్లస్టరింగ్ సాంకేతికతలపై మీ అవగాహనను లోతుగా పెంచుకోండి\n", + "\n", + "### **క్లస్టరింగ్ అల్గోరిథమ్లు**\n", + "\n", + "100కి పైగా క్లస్టరింగ్ అల్గోరిథమ్లు ఉన్నాయి, మరియు వాటి ఉపయోగం డేటా స్వభావంపై ఆధారపడి ఉంటుంది. కొన్ని ప్రధాన అల్గోరిథమ్లను చర్చిద్దాం:\n", + "\n", + "- **హైరార్కికల్ క్లస్టరింగ్**. ఒక వస్తువు దాని సమీపంలోని వస్తువుతో సమీపత ఆధారంగా వర్గీకరించబడితే, దూరం ఆధారంగా క్లస్టర్లు ఏర్పడతాయి. హైరార్కికల్ క్లస్టరింగ్ రెండు క్లస్టర్లను పునరావృతంగా కలిపే విధంగా ఉంటుంది.\n", + "\n", + "\n", + "

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

ఇన్ఫోగ్రాఫిక్ - దాసాని మడిపల్లి
\n", + "\n", + "\n", + "\n", + "- **సెంట్రాయిడ్ క్లస్టరింగ్**. ఈ ప్రాచుర్యం పొందిన అల్గోరిథం 'k' అనే క్లస్టర్ల సంఖ్యను ఎంచుకోవాలి, ఆ తర్వాత అల్గోరిథం ఒక క్లస్టర్ కేంద్ర పాయింట్‌ను నిర్ణయించి ఆ పాయింట్ చుట్టూ డేటాను సేకరిస్తుంది. [K-means క్లస్టరింగ్](https://wikipedia.org/wiki/K-means_clustering) సెంట్రాయిడ్ క్లస్టరింగ్ యొక్క ఒక ప్రాచుర్యం పొందిన వెర్షన్, ఇది డేటా సెట్‌ను ముందుగా నిర్వచించిన K గుంపులుగా విడగొడుతుంది. కేంద్రం సమీప సగటు ద్వారా నిర్ణయించబడుతుంది, అందుకే పేరు. క్లస్టర్ నుండి చతురస్ర దూరం తగ్గించబడుతుంది.\n", + "\n", + "

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

ఇన్ఫోగ్రాఫిక్ - దాసాని మడిపల్లి
\n", + "\n", + "\n", + "\n", + "- **వితరణ ఆధారిత క్లస్టరింగ్**. గణాంక నమూనాలపై ఆధారపడి, వితరణ ఆధారిత క్లస్టరింగ్ ఒక డేటా పాయింట్ ఒక క్లస్టర్‌కు చెందే సంభావ్యతను నిర్ణయించి దానికి అనుగుణంగా కేటాయిస్తుంది. గౌసియన్ మిశ్రమ పద్ధతులు ఈ రకానికి చెందుతాయి.\n", + "\n", + "- **సాంద్రత ఆధారిత క్లస్టరింగ్**. డేటా పాయింట్లు వారి సాంద్రత లేదా ఒకరితో ఒకరు సమూహాలుగా ఉండటం ఆధారంగా క్లస్టర్లకు కేటాయించబడతాయి. సమూహం నుండి దూరంగా ఉన్న డేటా పాయింట్లు అవుట్లయర్స్ లేదా శబ్దంగా పరిగణించబడతాయి. DBSCAN, Mean-shift మరియు OPTICS ఈ రకమైన క్లస్టరింగ్‌కు చెందుతాయి.\n", + "\n", + "- **గ్రిడ్ ఆధారిత క్లస్టరింగ్**. బహుముఖ డేటాసెట్‌ల కోసం, ఒక గ్రిడ్ సృష్టించి డేటాను గ్రిడ్ సెల్స్ మధ్య విభజించి క్లస్టర్లు సృష్టిస్తారు.\n", + "\n", + "క్లస్టరింగ్ గురించి నేర్చుకోవడానికి ఉత్తమ మార్గం మీరు స్వయంగా ప్రయత్నించడం, కాబట్టి ఈ వ్యాయామంలో మీరు అదే చేస్తారు.\n", + "\n", + "ఈ మాడ్యూల్‌ను పూర్తి చేయడానికి కొన్ని ప్యాకేజీలను అవసరం. మీరు వాటిని ఇన్‌స్టాల్ చేయవచ్చు: `install.packages(c('tidyverse', 'tidymodels', 'DataExplorer', 'summarytools', 'plotly', 'paletteer', 'corrplot', 'patchwork'))`\n", + "\n", + "వేరే విధంగా, క్రింది స్క్రిప్ట్ ఈ మాడ్యూల్ పూర్తి చేయడానికి అవసరమైన ప్యాకేజీలు మీ వద్ద ఉన్నాయా లేదా అని తనిఖీ చేసి, కొన్నీ లేనప్పుడు వాటిని ఇన్‌స్టాల్ చేస్తుంది.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\r\n", + "\r\n", + "pacman::p_load('tidyverse', 'tidymodels', 'DataExplorer', 'summarytools', 'plotly', 'paletteer', 'corrplot', 'patchwork')\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## వ్యాయామం - మీ డేటాను క్లస్టర్ చేయండి\n", + "\n", + "క్లస్టరింగ్ ఒక సాంకేతికతగా సరైన విజువలైజేషన్ ద్వారా చాలా సహాయపడుతుంది, కాబట్టి మన సంగీత డేటాను విజువలైజ్ చేయడం ప్రారంభిద్దాం. ఈ వ్యాయామం మనకు ఈ డేటా స్వభావానికి ఏ క్లస్టరింగ్ పద్ధతిని అత్యంత సమర్థవంతంగా ఉపయోగించాలో నిర్ణయించడంలో సహాయపడుతుంది.\n", + "\n", + "డేటాను దిగుమతి చేసుకోవడం ద్వారా ప్రారంభిద్దాం.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load the core tidyverse and make it available in your current R session\r\n", + "library(tidyverse)\r\n", + "\r\n", + "# Import the data into a tibble\r\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/5-Clustering/data/nigerian-songs.csv\")\r\n", + "\r\n", + "# View the first 5 rows of the data set\r\n", + "df %>% \r\n", + " slice_head(n = 5)\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "కొన్నిసార్లు, మన డేటా గురించి కొంచెం ఎక్కువ సమాచారం కావచ్చు. మనం [*glimpse()*](https://pillar.r-lib.org/reference/glimpse.html) ఫంక్షన్ ఉపయోగించి `డేటా` మరియు `దాని నిర్మాణం` ను చూడవచ్చు:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Glimpse into the data set\r\n", + "df %>% \r\n", + " glimpse()\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "చాలా బాగుంది!💪\n", + "\n", + "మనం గమనించవచ్చు `glimpse()` మీకు మొత్తం వరుసల సంఖ్య (పరిశీలనలు) మరియు కాలమ్స్ (వేరియబుల్స్) ఇస్తుంది, ఆపై, ప్రతి వేరియబుల్ పేరుతో పాటు ఆ వేరియబుల్ యొక్క మొదటి కొన్ని ఎంట్రీలను ఒక వరుసలో చూపిస్తుంది. అదనంగా, వేరియబుల్ యొక్క *డేటా టైపు* ప్రతి వేరియబుల్ పేరుకు వెంటనే `< >` లో ఇవ్వబడుతుంది.\n", + "\n", + "`DataExplorer::introduce()` ఈ సమాచారాన్ని సుస్పష్టంగా సారాంశం చేయగలదు:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Describe basic information for our data\r\n", + "df %>% \r\n", + " introduce()\r\n", + "\r\n", + "# A visual display of the same\r\n", + "df %>% \r\n", + " plot_intro()\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "అద్భుతం! మన డేటాలో ఎటువంటి మిస్సింగ్ విలువలు లేవని మనం ఇప్పుడే తెలుసుకున్నాము.\n", + "\n", + "మనం ఇదే సమయంలో, సాధారణ కేంద్ర ధోరణి గణాంకాలు (ఉదా: [సగటు](https://en.wikipedia.org/wiki/Arithmetic_mean) మరియు [మధ్యమం](https://en.wikipedia.org/wiki/Median)) మరియు వ్యాప్తి కొలతలు (ఉదా: [స్టాండర్డ్ డివియేషన్](https://en.wikipedia.org/wiki/Standard_deviation)) ను `summarytools::descr()` ఉపయోగించి పరిశీలించవచ్చు.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Describe common statistics\r\n", + "df %>% \r\n", + " descr(stats = \"common\")\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "డేటా యొక్క సాధారణ విలువలను చూద్దాం. ప్రాచుర్యం `0` కావచ్చు, అంటే ర్యాంకింగ్ లేని పాటలను చూపిస్తుంది. వాటిని త్వరలోనే తొలగిస్తాము.\n", + "\n", + "> 🤔 మనం లేబుల్ చేయబడిన డేటా అవసరం లేని, క్లస్టరింగ్ అనే అనుసూచిత పద్ధతితో పని చేస్తుంటే, ఈ డేటాను లేబుల్స్‌తో ఎందుకు చూపిస్తున్నాం? డేటా అన్వేషణ దశలో అవి ఉపయోగకరంగా ఉంటాయి, కానీ క్లస్టరింగ్ అల్గోరిథమ్స్ పనిచేయడానికి అవి అవసరం కాదు.\n", + "\n", + "### 1. ప్రాచుర్యం ఉన్న జానర్లను అన్వేషించండి\n", + "\n", + "ఇప్పుడు మనం అత్యంత ప్రాచుర్యం ఉన్న జానర్లను 🎶 కనుగొనడానికి, అవి కనిపించే సందర్భాల సంఖ్యను లెక్కించుకుందాం.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Popular genres\r\n", + "top_genres <- df %>% \r\n", + " count(artist_top_genre, sort = TRUE) %>% \r\n", + "# Encode to categorical and reorder the according to count\r\n", + " mutate(artist_top_genre = factor(artist_top_genre) %>% fct_inorder())\r\n", + "\r\n", + "# Print the top genres\r\n", + "top_genres\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "అది బాగానే జరిగింది! వారు అంటారు ఒక చిత్రం డేటా ఫ్రేమ్ యొక్క వెయ్యి వరుసల విలువను కలిగి ఉంటుంది (నిజానికి ఎవరూ అలాంటి మాటలు చెప్పరు 😅). కానీ మీరు అర్థం చేసుకున్నట్లేనా, కదా?\n", + "\n", + "వర్గీకృత డేటాను (అక్షర లేదా ఫ్యాక్టర్ వేరియబుల్స్) దృశ్యీకరించడానికి ఒక మార్గం బార్ప్లాట్లు ఉపయోగించడం. టాప్ 10 జానర్ల బార్ప్లాట్ తయారు చేద్దాం:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Change the default gray theme\r\n", + "theme_set(theme_light())\r\n", + "\r\n", + "# Visualize popular genres\r\n", + "top_genres %>%\r\n", + " slice(1:10) %>% \r\n", + " ggplot(mapping = aes(x = artist_top_genre, y = n,\r\n", + " fill = artist_top_genre)) +\r\n", + " geom_col(alpha = 0.8) +\r\n", + " paletteer::scale_fill_paletteer_d(\"rcartocolor::Vivid\") +\r\n", + " ggtitle(\"Top genres\") +\r\n", + " theme(plot.title = element_text(hjust = 0.5),\r\n", + " # Rotates the X markers (so we can read them)\r\n", + " axis.text.x = element_text(angle = 90))\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ఇప్పుడు మనకు `missing` జానర్లున్నాయని గుర్తించడం చాలా సులభం 🧐!\n", + "\n", + "> ఒక మంచి విజువలైజేషన్ మీరు ఆశించని విషయాలను చూపిస్తుంది, లేదా డేటా గురించి కొత్త ప్రశ్నలను రేకెత్తిస్తుంది - హాడ్లీ విక్హామ్ మరియు గారెట్ గ్రోలెమండ్, [R For Data Science](https://r4ds.had.co.nz/introduction.html)\n", + "\n", + "గమనిక, టాప్ జానర్ `Missing`గా వర్ణించబడితే, అంటే Spotify దాన్ని వర్గీకరించలేదు, కాబట్టి దాన్ని తొలగిద్దాం.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Visualize popular genres\r\n", + "top_genres %>%\r\n", + " filter(artist_top_genre != \"Missing\") %>% \r\n", + " slice(1:10) %>% \r\n", + " ggplot(mapping = aes(x = artist_top_genre, y = n,\r\n", + " fill = artist_top_genre)) +\r\n", + " geom_col(alpha = 0.8) +\r\n", + " paletteer::scale_fill_paletteer_d(\"rcartocolor::Vivid\") +\r\n", + " ggtitle(\"Top genres\") +\r\n", + " theme(plot.title = element_text(hjust = 0.5),\r\n", + " # Rotates the X markers (so we can read them)\r\n", + " axis.text.x = element_text(angle = 90))\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "చిన్న డేటా అన్వేషణ నుండి, ఈ డేటాసెట్‌ను టాప్ మూడు జానర్లు ఆధిపత్యం వహిస్తున్నాయని తెలుసుకుంటాము. మనం `afro dancehall`, `afropop`, మరియు `nigerian pop` పై దృష్టి సారిద్దాం, అదనంగా 0 ప్రాచుర్యం విలువ ఉన్న ఏదైనా డేటాను తొలగించడానికి ఫిల్టర్ చేయండి (అర్థం ఇది డేటాసెట్‌లో ప్రాచుర్యం తో వర్గీకరించబడలేదు మరియు మన ప్రయోజనాల కోసం శబ్దంగా పరిగణించవచ్చు):\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "nigerian_songs <- df %>% \r\n", + " # Concentrate on top 3 genres\r\n", + " filter(artist_top_genre %in% c(\"afro dancehall\", \"afropop\",\"nigerian pop\")) %>% \r\n", + " # Remove unclassified observations\r\n", + " filter(popularity != 0)\r\n", + "\r\n", + "\r\n", + "\r\n", + "# Visualize popular genres\r\n", + "nigerian_songs %>%\r\n", + " count(artist_top_genre) %>%\r\n", + " ggplot(mapping = aes(x = artist_top_genre, y = n,\r\n", + " fill = artist_top_genre)) +\r\n", + " geom_col(alpha = 0.8) +\r\n", + " paletteer::scale_fill_paletteer_d(\"ggsci::category10_d3\") +\r\n", + " ggtitle(\"Top genres\") +\r\n", + " theme(plot.title = element_text(hjust = 0.5))\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "మన డేటా సెట్‌లో సంఖ్యాత్మక వేరియబుల్స్ మధ్య ఏదైనా స్పష్టమైన రేఖీయ సంబంధం ఉందో లేదో చూద్దాం. ఈ సంబంధాన్ని గణితంగా [correlation statistic](https://en.wikipedia.org/wiki/Correlation) ద్వారా కొలుస్తారు.\n", + "\n", + "correlation statistic అనేది -1 మరియు 1 మధ్య విలువ, ఇది సంబంధం యొక్క బలాన్ని సూచిస్తుంది. 0 కంటే పైగా ఉన్న విలువలు *ధనాత్మక* సంబంధాన్ని సూచిస్తాయి (ఒక వేరియబుల్ యొక్క అధిక విలువలు మరొక వేరియబుల్ యొక్క అధిక విలువలతో సాధారణంగా కలుస్తాయి), 0 కంటే తక్కువ విలువలు *ప్రతికూల* సంబంధాన్ని సూచిస్తాయి (ఒక వేరియబుల్ యొక్క అధిక విలువలు మరొక వేరియబుల్ యొక్క తక్కువ విలువలతో సాధారణంగా కలుస్తాయి).\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Narrow down to numeric variables and fid correlation\r\n", + "corr_mat <- nigerian_songs %>% \r\n", + " select(where(is.numeric)) %>% \r\n", + " cor()\r\n", + "\r\n", + "# Visualize correlation matrix\r\n", + "corrplot(corr_mat, order = 'AOE', col = c('white', 'black'), bg = 'gold2') \r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "డేటా బలంగా సంబంధం లేదు, తప్ప `energy` మరియు `loudness` మధ్య మాత్రమే, ఇది అర్థం చేసుకోవడానికి సులభం, ఎందుకంటే గట్టిగా ఉన్న సంగీతం సాధారణంగా చాలా శక్తివంతంగా ఉంటుంది. `Popularity` కు `release date` తో సంబంధం ఉంది, ఇది కూడా అర్థం చేసుకోవడానికి సులభం, ఎందుకంటే తాజా పాటలు ఎక్కువగా ప్రాచుర్యం పొందినవే కావచ్చు. Length మరియు energy కూడా సంబంధం ఉన్నట్లు కనిపిస్తున్నాయి.\n", + "\n", + "ఈ డేటాను క్లస్టరింగ్ అల్గోరిథం ఎలా విశ్లేషిస్తుందో చూడటం ఆసక్తికరం!\n", + "\n", + "> 🎓 గమనిక: సంబంధం కారణాన్ని సూచించదు! మనకు సంబంధం ఉన్నదని సాక్ష్యం ఉంది కానీ కారణం ఉన్నదని సాక్ష్యం లేదు. ఒక [వినోదాత్మక వెబ్ సైట్](https://tylervigen.com/spurious-correlations) ఈ విషయాన్ని హైలైట్ చేసే కొన్ని విజువల్స్ కలిగి ఉంది.\n", + "\n", + "### 2. డేటా పంపిణీని అన్వేషించండి\n", + "\n", + "మనం మరింత సున్నితమైన ప్రశ్నలు అడుద్దాం. వారి ప్రాచుర్యం ఆధారంగా జానర్ల డాన్స్ చేయగలిగే సామర్థ్యం గ్రహణలో గణనీయంగా భిన్నమా? మనం టాప్ మూడు జానర్ల డేటా పంపిణీని ప్రాచుర్యం మరియు డాన్స్ చేయగలిగే సామర్థ్యం కోసం ఇచ్చిన x మరియు y అక్షాలపై [density plots](https://www.khanacademy.org/math/ap-statistics/density-curves-normal-distribution-ap/density-curves/v/density-curves) ఉపయోగించి పరిశీలిద్దాం.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Perform 2D kernel density estimation\r\n", + "density_estimate_2d <- nigerian_songs %>% \r\n", + " ggplot(mapping = aes(x = popularity, y = danceability, color = artist_top_genre)) +\r\n", + " geom_density_2d(bins = 5, size = 1) +\r\n", + " paletteer::scale_color_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n", + " xlim(-20, 80) +\r\n", + " ylim(0, 1.2)\r\n", + "\r\n", + "# Density plot based on the popularity\r\n", + "density_estimate_pop <- nigerian_songs %>% \r\n", + " ggplot(mapping = aes(x = popularity, fill = artist_top_genre, color = artist_top_genre)) +\r\n", + " geom_density(size = 1, alpha = 0.5) +\r\n", + " paletteer::scale_fill_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n", + " paletteer::scale_color_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n", + " theme(legend.position = \"none\")\r\n", + "\r\n", + "# Density plot based on the danceability\r\n", + "density_estimate_dance <- nigerian_songs %>% \r\n", + " ggplot(mapping = aes(x = danceability, fill = artist_top_genre, color = artist_top_genre)) +\r\n", + " geom_density(size = 1, alpha = 0.5) +\r\n", + " paletteer::scale_fill_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n", + " paletteer::scale_color_paletteer_d(\"RSkittleBrewer::wildberry\")\r\n", + "\r\n", + "\r\n", + "# Patch everything together\r\n", + "library(patchwork)\r\n", + "density_estimate_2d / (density_estimate_pop + density_estimate_dance)\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "మేము చూస్తున్నాము, జానర్‌ను పరిగణనలోకి తీసుకోకుండా, సెంట్రిక్ సర్కిల్స్ సరిపోతున్నాయి. ఈ జానర్ కోసం నైజీరియన్ రుచులు ఒక నిర్దిష్ట డ్యాన్సబిలిటీ స్థాయిలో కలిసిపోతాయా?\n", + "\n", + "సాధారణంగా, ఈ మూడు జానర్లు వారి ప్రాచుర్యం మరియు డ్యాన్సబిలిటీ పరంగా సరిపోతున్నాయి. ఈ సడలించిన సరిపోలిన డేటాలో క్లస్టర్లను నిర్ణయించడం ఒక సవాలు అవుతుంది. ఒక స్కాటర్ ప్లాట్ దీనిని మద్దతు ఇస్తుందో లేదో చూద్దాం.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# A scatter plot of popularity and danceability\r\n", + "scatter_plot <- nigerian_songs %>% \r\n", + " ggplot(mapping = aes(x = popularity, y = danceability, color = artist_top_genre, shape = artist_top_genre)) +\r\n", + " geom_point(size = 2, alpha = 0.8) +\r\n", + " paletteer::scale_color_paletteer_d(\"futurevisions::mars\")\r\n", + "\r\n", + "# Add a touch of interactivity\r\n", + "ggplotly(scatter_plot)\r\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "అదే అక్షాల స్కాటర్‌ప్లాట్ సమానమైన సమీకరణ నమూనాను చూపిస్తుంది.\n", + "\n", + "సాధారణంగా, క్లస్టరింగ్ కోసం, మీరు డేటా క్లస్టర్లను చూపించడానికి స్కాటర్‌ప్లాట్లను ఉపయోగించవచ్చు, కాబట్టి ఈ రకమైన విజువలైజేషన్‌ను నైపుణ్యం సాధించడం చాలా ఉపయోగకరం. తదుపరి పాఠంలో, మేము ఈ ఫిల్టర్ చేయబడిన డేటాను తీసుకుని k-మీన్ క్లస్టరింగ్‌ను ఉపయోగించి ఈ డేటాలో ఆసక్తికరమైన విధాలుగా ఓవర్లాప్ అయ్యే గ్రూపులను కనుగొంటాము.\n", + "\n", + "## **🚀 సవాలు**\n", + "\n", + "తదుపరి పాఠానికి సిద్ధంగా ఉండటానికి, మీరు ప్రొడక్షన్ వాతావరణంలో కనుగొనగల మరియు ఉపయోగించగల వివిధ క్లస్టరింగ్ అల్గోరిథమ్ల గురించి ఒక చార్ట్ తయారు చేయండి. క్లస్టరింగ్ ఏ రకమైన సమస్యలను పరిష్కరించడానికి ప్రయత్నిస్తోంది?\n", + "\n", + "## [**పోస్ట్-లెక్చర్ క్విజ్**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/28/)\n", + "\n", + "## **సమీక్ష & స్వీయ అధ్యయనం**\n", + "\n", + "మీరు క్లస్టరింగ్ అల్గోరిథమ్లను వర్తింపజేసే ముందు, మేము నేర్చుకున్నట్లుగా, మీ డేటాసెట్ స్వభావాన్ని అర్థం చేసుకోవడం మంచి ఆలోచన. ఈ విషయంపై మరింత చదవండి [ఇక్కడ](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html)\n", + "\n", + "క్లస్టరింగ్ సాంకేతికతలపై మీ అవగాహనను లోతుగా చేసుకోండి:\n", + "\n", + "- [Tidymodels మరియు ఫ్రెండ్స్ ఉపయోగించి క్లస్టరింగ్ మోడల్స్‌ను శిక్షణ మరియు మూల్యాంకనం చేయడం](https://rpubs.com/eR_ic/clustering)\n", + "\n", + "- బ్రాడ్లీ బోహ్మ్కే & బ్రాండన్ గ్రీన్‌వెల్, [*Hands-On Machine Learning with R*](https://bradleyboehmke.github.io/HOML/)*.*\n", + "\n", + "## **అసైన్‌మెంట్**\n", + "\n", + "[క్లస్టరింగ్ కోసం ఇతర విజువలైజేషన్లపై పరిశోధన చేయండి](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/assignment.md)\n", + "\n", + "## ధన్యవాదాలు:\n", + "\n", + "[జెన్ లూపర్](https://www.twitter.com/jenlooper) ఈ మాడ్యూల్ యొక్క అసలు పైథాన్ వెర్షన్ సృష్టించినందుకు ♥️\n", + "\n", + "[`దాసాని మడిపల్లి`](https://twitter.com/dasani_decoded) మెషీన్ లెర్నింగ్ కాన్సెప్ట్‌లను మరింత అర్థమయ్యేలా మరియు సులభంగా అర్థం చేసుకునేలా చేసే అద్భుతమైన చిత్రణలను సృష్టించినందుకు.\n", + "\n", + "సంతోషకరమైన అభ్యాసం,\n", + "\n", + "[ఎరిక్](https://twitter.com/ericntay), గోల్డ్ మైక్రోసాఫ్ట్ లెర్న్ స్టూడెంట్ అంబాసిడర్.\n" + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "anaconda-cloud": "", + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "3.4.1" + }, + "coopTranslator": { + "original_hash": "99c36449cad3708a435f6798cfa39972", + "translation_date": "2025-12-19T16:59:31+00:00", + "source_file": "5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/te/5-Clustering/1-Visualize/solution/notebook.ipynb b/translations/te/5-Clustering/1-Visualize/solution/notebook.ipynb new file mode 100644 index 000000000..59f7550cf --- /dev/null +++ b/translations/te/5-Clustering/1-Visualize/solution/notebook.ipynb @@ -0,0 +1,831 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# స్పాటిఫై నుండి సేకరించిన నైజీరియన్ సంగీతం - ఒక విశ్లేషణ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: seaborn in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (0.11.2)\n", + "Requirement already satisfied: matplotlib>=2.2 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from seaborn) (3.5.0)\n", + "Requirement already satisfied: numpy>=1.15 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from seaborn) (1.21.4)\n", + "Requirement already satisfied: pandas>=0.23 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from seaborn) (1.3.4)\n", + "Requirement already satisfied: scipy>=1.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from seaborn) (1.7.2)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (4.28.1)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (2.4.7)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (1.3.2)\n", + "Requirement already satisfied: pillow>=6.2.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (8.4.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (0.11.0)\n", + "Requirement already satisfied: packaging>=20.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (21.2)\n", + "Requirement already satisfied: setuptools-scm>=4 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (6.3.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from matplotlib>=2.2->seaborn) (2.8.2)\n", + "Requirement already satisfied: pytz>=2017.3 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from pandas>=0.23->seaborn) (2021.3)\n", + "Requirement already satisfied: six>=1.5 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from python-dateutil>=2.7->matplotlib>=2.2->seaborn) (1.16.0)\n", + "Requirement already satisfied: tomli>=1.0.0 in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from setuptools-scm>=4->matplotlib>=2.2->seaborn) (1.2.2)\n", + "Requirement already satisfied: setuptools in /Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages (from setuptools-scm>=4->matplotlib>=2.2->seaborn) (59.1.1)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "!pip install seaborn" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
0SparkyMandy & The JungleCruel Santinoalternative r&b2019144000480.6660.85100.4200.5340000.1100-6.6990.0829133.0155
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
2LITT!LITT!AYLØindie r&b2018207758400.8360.27200.5640.0005370.1100-7.1270.0424130.0054
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
\n", + "
" + ], + "text/plain": [ + " name album \\\n", + "0 Sparky Mandy & The Jungle \n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "2 LITT! LITT! \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "0 Cruel Santino alternative r&b 2019 144000 48 \n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "2 AYLØ indie r&b 2018 207758 40 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "\n", + " speechiness tempo time_signature \n", + "0 0.0829 133.015 5 \n", + "1 0.3600 129.993 3 \n", + "2 0.0424 130.005 4 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv(\"../../data/nigerian-songs.csv\")\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "డేటాఫ్రేమ్ గురించి సమాచారం పొందండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 530 entries, 0 to 529\n", + "Data columns (total 16 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 name 530 non-null object \n", + " 1 album 530 non-null object \n", + " 2 artist 530 non-null object \n", + " 3 artist_top_genre 530 non-null object \n", + " 4 release_date 530 non-null int64 \n", + " 5 length 530 non-null int64 \n", + " 6 popularity 530 non-null int64 \n", + " 7 danceability 530 non-null float64\n", + " 8 acousticness 530 non-null float64\n", + " 9 energy 530 non-null float64\n", + " 10 instrumentalness 530 non-null float64\n", + " 11 liveness 530 non-null float64\n", + " 12 loudness 530 non-null float64\n", + " 13 speechiness 530 non-null float64\n", + " 14 tempo 530 non-null float64\n", + " 15 time_signature 530 non-null int64 \n", + "dtypes: float64(8), int64(4), object(4)\n", + "memory usage: 66.4+ KB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "నల్ విలువల కోసం రెండుసార్లు తనిఖీ చేయండి.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "name 0\n", + "album 0\n", + "artist 0\n", + "artist_top_genre 0\n", + "release_date 0\n", + "length 0\n", + "popularity 0\n", + "danceability 0\n", + "acousticness 0\n", + "energy 0\n", + "instrumentalness 0\n", + "liveness 0\n", + "loudness 0\n", + "speechiness 0\n", + "tempo 0\n", + "time_signature 0\n", + "dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "డేటా యొక్క సాధారణ విలువలను చూడండి. ప్రాచుర్యం '0' కావచ్చు - మరియు ఆ విలువతో అనేక వరుసలు ఉన్నాయి అని గమనించండి.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
release_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
count530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000530.000000
mean2015.390566222298.16981117.5075470.7416190.2654120.7606230.0163050.147308-4.9530110.130748116.4878643.986792
std3.13168839696.82225918.9922120.1175220.2083420.1485330.0903210.1235882.4641860.09293923.5186010.333701
min1998.00000089488.0000000.0000000.2550000.0006650.1110000.0000000.028300-19.3620000.02780061.6950003.000000
25%2014.000000199305.0000000.0000000.6810000.0895250.6690000.0000000.075650-6.2987500.059100102.9612504.000000
50%2016.000000218509.00000013.0000000.7610000.2205000.7845000.0000040.103500-4.5585000.097950112.7145004.000000
75%2017.000000242098.50000031.0000000.8295000.4030000.8757500.0002340.164000-3.3310000.177000125.0392504.000000
max2020.000000511738.00000073.0000000.9660000.9540000.9950000.9100000.8110000.5820000.514000206.0070005.000000
\n", + "
" + ], + "text/plain": [ + " release_date length popularity danceability acousticness \\\n", + "count 530.000000 530.000000 530.000000 530.000000 530.000000 \n", + "mean 2015.390566 222298.169811 17.507547 0.741619 0.265412 \n", + "std 3.131688 39696.822259 18.992212 0.117522 0.208342 \n", + "min 1998.000000 89488.000000 0.000000 0.255000 0.000665 \n", + "25% 2014.000000 199305.000000 0.000000 0.681000 0.089525 \n", + "50% 2016.000000 218509.000000 13.000000 0.761000 0.220500 \n", + "75% 2017.000000 242098.500000 31.000000 0.829500 0.403000 \n", + "max 2020.000000 511738.000000 73.000000 0.966000 0.954000 \n", + "\n", + " energy instrumentalness liveness loudness speechiness \\\n", + "count 530.000000 530.000000 530.000000 530.000000 530.000000 \n", + "mean 0.760623 0.016305 0.147308 -4.953011 0.130748 \n", + "std 0.148533 0.090321 0.123588 2.464186 0.092939 \n", + "min 0.111000 0.000000 0.028300 -19.362000 0.027800 \n", + "25% 0.669000 0.000000 0.075650 -6.298750 0.059100 \n", + "50% 0.784500 0.000004 0.103500 -4.558500 0.097950 \n", + "75% 0.875750 0.000234 0.164000 -3.331000 0.177000 \n", + "max 0.995000 0.910000 0.811000 0.582000 0.514000 \n", + "\n", + " tempo time_signature \n", + "count 530.000000 530.000000 \n", + "mean 116.487864 3.986792 \n", + "std 23.518601 0.333701 \n", + "min 61.695000 3.000000 \n", + "25% 102.961250 4.000000 \n", + "50% 112.714500 4.000000 \n", + "75% 125.039250 4.000000 \n", + "max 206.007000 5.000000 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "వర్గాలను పరిశీలిద్దాం. చాలా సంఖ్యలో 'లేకపోవడం'గా సూచించబడ్డాయి, అంటే అవి డేటాసెట్‌లో ఏ వర్గీకరణలోనూ లేవు.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlYAAAHbCAYAAAAJY9SEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAsIElEQVR4nO3debyt9dz/8ddbpzI20EETGRKZwpHMGVJyU6ZUJN25C0Uh81CmW4RkCLmLTCXTLXT/lFA3bkPSQETRdKSOBkMpOn1+f3yvzXKcOtN3t9Y++/V8PPbjrH2ta639qWvvtd7rO6aqkCRJ0oq72bgLkCRJWlkYrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJ0ybhzyNf1yf8ZeT7Z4+7PknqLS4QKummkHAe8PwqvjHuWpZHwpwqrht3HZImmy1Wkm5yCasnvDfht8PXexNWH+7bMuGihNcm/D7hvBtr3Uq4S8LJCX9K+EbCBxM+NXL/FgnfS7gy4fSELUfu+3bCWxK+Ozz++IR1hvs2SqiE3RMuAL45HP/3hJ8nXJHw9YQ7D8eTcHDCpQl/TDgz4T7T839Q0qQyWEkah9cBWwCbAfcHNgdeP3L/HYF1gPWBXYHDEja5gef6DPBD4HbAAcAuU3ckrA98DXgrcFtgP+ALCXNHHr8zsBtwe2C14ZxRjwbuBWydsB3wWuBpwFzgf4GjhvOeADwKuAewJrADcNkS/j9IWskYrCSNw7OBN1dxaRULgDcxEogGb6ji2ipOooWjHRZ9koQ7AQ8G3ljFX6v4DnDsyCnPAY6r4rgqrq/iBOAUYNuRcz5WxS+r+AtwDC3sjTqgiquG+18AvL2Knw/dgv8JbDa0Wv0NuA1wTyDDORcv+/8aSTOZwUrSOKwHnD/y/fnDsSlXVHHVjdw/+jyXV3H1yLELR27fGXjm0A14ZcKVwCOAdUfO+d3I7auBWy/yMxZ9vkNGnutyIMD6VXwT+ADwQeDShMMS1lhMzZJWYgYrSePwW1pImXKn4diUtRNudSP3T7kYuG3CLUeObThy+0Lgk1WsNfJ1qyoOXIZaR2f4XAjsucjz3aKK7wFU8b4qHgRsSusSfMUy/BxJKwGDlaRxOAp4fcLcYbD4G+EfA84Hb0pYLeGRwL8Bn1v0Sao4n9a1d8Bw7kOBJ4+c8ingyQlbJ6yScPNhcPwGy1n3h4HXJNwbIGHNhGcOtx+c8JCEVYGrgGuA65fz50iaoeaMuwBJs9JbgTWAM4bvPzccm/I74ApaK9XVwAuq+MUNPNezgY/TBor/EPgssApAFRcOA87fSQtzC4dzXrg8RVfxpYRbA0cP46r+AJww1L8GcDBwV1qo+jpw0PL8HEkzl+tYSZoow3IIn6pavlalhM8Cv6hi/66FSdJSsCtQ0ow2dMHdLeFmCdsA2wH/PeayJM1SdgVKmunuCHyRto7VRcALq/jJeEuSNFvZFShJktSJXYGSJEmdGKwkSZI6mYgxVuuss05ttNFG4y5DkiRpiX784x//vqrmLu6+iQhWG220Eaeccsq4y5AkSVqiJOff0H12BUqSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOpkz7gKW1YNe8YlxlzAr/Pig5467BEmSZhxbrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHWyxGCV5OZJfpjk9CQ/S/Km4fhdkvwgyTlJPptkteH46sP35wz3bzTN/w2SJEkTYWlarK4FHltV9wc2A7ZJsgXwDuDgqro7cAWw+3D+7sAVw/GDh/MkSZJWeksMVtX8efh21eGrgMcCnx+OHwlsP9zebvie4f7HJUmvgiVJkibVUo2xSrJKktOAS4ETgHOBK6vquuGUi4D1h9vrAxcCDPf/Abhdx5olSZIm0lIFq6paWFWbARsAmwP3XNEfnGSPJKckOWXBggUr+nSSJEljt0yzAqvqSuBbwEOBtZLMGe7aAJg/3J4PbAgw3L8mcNlinuuwqppXVfPmzp27fNVLkiRNkKWZFTg3yVrD7VsAWwE/pwWsZwyn7Qp8ebh97PA9w/3frKrqWLMkSdJEmrPkU1gXODLJKrQgdkxVfTXJWcDRSd4K/AQ4fDj/cOCTSc4BLgd2nIa6JUmSJs4Sg1VVnQE8YDHHf00bb7Xo8WuAZ3apTpIkaQZx5XVJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKmTJQarJBsm+VaSs5L8LMk+w/EDksxPctrwte3IY16T5JwkZyfZejr/AyRJkibFnKU45zrg5VV1apLbAD9OcsJw38FV9a7Rk5NsCuwI3BtYD/hGkntU1cKehUuSJE2aJbZYVdXFVXXqcPtPwM+B9W/kIdsBR1fVtVX1G+AcYPMexUqSJE2yZRpjlWQj4AHAD4ZDeyc5I8kRSdYejq0PXDjysItYTBBLskeSU5KcsmDBgmWvXJIkacIsdbBKcmvgC8C+VfVH4EPA3YDNgIuBdy/LD66qw6pqXlXNmzt37rI8VJIkaSItVbBKsiotVH26qr4IUFWXVNXCqroe+Cj/6O6bD2w48vANhmOSJEkrtaWZFRjgcODnVfWekePrjpz2VOCnw+1jgR2TrJ7kLsDGwA/7lSxJkjSZlmZW4MOBXYAzk5w2HHstsFOSzYACzgP2BKiqnyU5BjiLNqNwL2cESpKk2WCJwaqqvgNkMXcddyOPeRvwthWoS5IkacZx5XVJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktTJEoNVkg2TfCvJWUl+lmSf4fhtk5yQ5FfDv2sPx5PkfUnOSXJGkgdO93+EJEnSJFiaFqvrgJdX1abAFsBeSTYFXg2cWFUbAycO3wM8Edh4+NoD+FD3qiVJkibQEoNVVV1cVacOt/8E/BxYH9gOOHI47Uhg++H2dsAnqvk+sFaSdXsXLkmSNGmWaYxVko2ABwA/AO5QVRcPd/0OuMNwe33gwpGHXTQcW/S59khySpJTFixYsKx1S5IkTZylDlZJbg18Adi3qv44el9VFVDL8oOr6rCqmldV8+bOnbssD5UkSZpISxWskqxKC1WfrqovDocvmeriG/69dDg+H9hw5OEbDMckSZJWakszKzDA4cDPq+o9I3cdC+w63N4V+PLI8ecOswO3AP4w0mUoSZK00pqzFOc8HNgFODPJacOx1wIHAsck2R04H9hhuO84YFvgHOBqYLeeBUuSJE2qJQarqvoOkBu4+3GLOb+AvVawLkmSpBnHldclSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInSwxWSY5IcmmSn44cOyDJ/CSnDV/bjtz3miTnJDk7ydbTVbgkSdKkWZoWq48D2yzm+MFVtdnwdRxAkk2BHYF7D485NMkqvYqVJEmaZEsMVlV1MnD5Uj7fdsDRVXVtVf0GOAfYfAXqkyRJmjFWZIzV3knOGLoK1x6OrQ9cOHLORcOxf5FkjySnJDllwYIFK1CGJEnSZFjeYPUh4G7AZsDFwLuX9Qmq6rCqmldV8+bOnbucZUiSJE2O5QpWVXVJVS2squuBj/KP7r75wIYjp24wHJMkSVrpLVewSrLuyLdPBaZmDB4L7Jhk9SR3ATYGfrhiJUqSJM0Mc5Z0QpKjgC2BdZJcBOwPbJlkM6CA84A9AarqZ0mOAc4CrgP2qqqF01K5JEnShFlisKqqnRZz+PAbOf9twNtWpChJkqSZyJXXJUmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJ0sMVkmOSHJpkp+OHLttkhOS/Gr4d+3heJK8L8k5Sc5I8sDpLF6SJGmSLE2L1ceBbRY59mrgxKraGDhx+B7gicDGw9cewIf6lClJkjT5lhisqupk4PJFDm8HHDncPhLYfuT4J6r5PrBWknU71SpJkjTRlneM1R2q6uLh9u+AOwy31wcuHDnvouGYJEnSSm+FB69XVQG1rI9LskeSU5KcsmDBghUtQ5IkaeyWN1hdMtXFN/x76XB8PrDhyHkbDMf+RVUdVlXzqmre3Llzl7MMSZKkybG8wepYYNfh9q7Al0eOP3eYHbgF8IeRLkNJkqSV2pwlnZDkKGBLYJ0kFwH7AwcCxyTZHTgf2GE4/ThgW+Ac4Gpgt2moWZIkaSItMVhV1U43cNfjFnNuAXutaFGSJEkzkSuvS5IkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE6WuNyC1NMFb77vuEtY6d3pjWeOuwRJmrVssZIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUicFKkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOpmzIg9Och7wJ2AhcF1VzUtyW+CzwEbAecAOVXXFipUpSZI0+VYoWA0eU1W/H/n+1cCJVXVgklcP37+qw8+RNGYPf//Dx13CSu+7L/7uuEuQtAKmoytwO+DI4faRwPbT8DMkSZImzooGqwKOT/LjJHsMx+5QVRcPt38H3GEFf4YkSdKMsKJdgY+oqvlJbg+ckOQXo3dWVSWpxT1wCGJ7ANzpTndawTIkSZLGb4VarKpq/vDvpcCXgM2BS5KsCzD8e+kNPPawqppXVfPmzp27ImVIkiRNhOUOVkluleQ2U7eBJwA/BY4Fdh1O2xX48ooWKUmSNBOsSFfgHYAvJZl6ns9U1f9L8iPgmCS7A+cDO6x4mZIkSZNvuYNVVf0auP9ijl8GPG5FipIkSZqJXHldkiSpE4OVJElSJwYrSZKkTgxWkiRJnRisJEmSOjFYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqxGAlSZLUyZxxFyBJmn4nPerR4y5hpffok08adwmaALZYSZIkdWKwkiRJ6sRgJUmS1InBSpIkqRODlSRJUicGK0mSpE4MVpIkSZ0YrCRJkjoxWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRODFaSJEmdGKwkSZI6mTPuAiRJ0o37wMu/Mu4SVnp7v/vJXZ7HFitJkqRODFaSJEmdGKwkSZI6MVhJkiR1YrCSJEnqZNqCVZJtkpyd5Jwkr56unyNJkjQppiVYJVkF+CDwRGBTYKckm07Hz5IkSZoU09VitTlwTlX9uqr+ChwNbDdNP0uSJGkipKr6P2nyDGCbqnr+8P0uwEOqau+Rc/YA9hi+3QQ4u3shk2Md4PfjLkLLzes3c3ntZjav38y1sl+7O1fV3MXdMbaV16vqMOCwcf38m1KSU6pq3rjr0PLx+s1cXruZzes3c83mazddXYHzgQ1Hvt9gOCZJkrTSmq5g9SNg4yR3SbIasCNw7DT9LEmSpIkwLV2BVXVdkr2BrwOrAEdU1c+m42fNELOiy3Ml5vWbubx2M5vXb+aatdduWgavS5IkzUauvC5JktSJwUqSJKkTg9UMlOSuSVYfdx2SJOmfGaxmmCRrA/sBrzNcSdINS5Jx16DZx2A1gyTZqKquAL4ArAnsZ7iaPL6YzyxJHpTELbdWMklSVZXk4Ul2T/K4YfkfzQCjr6PD/sMzhsFqhkiyFvCuJK+rqhOBLwLrYbgam6k//CT3HV681wcYXswNVxNs5NrNo22t9YYk2463KvU0/B0+BvgkcHfgvcBLktx9rIVpiaZC8XD7ecATZlIoNljNHFcB7wPunWS/qjoJOAbD1ViMfBp+PO06vAV4S5KXj74oaDIN1+6JwFHA6bRFjV+U5OnjrUy9JNkEeAGwb1W9BtgV2BjYaqyFaYlGQtVewD7A2VX11/FWtfQMVhNu6pN1Vf0N+D7wQWCLRcLV7YE3Gq5uOsMb8wOBVwDbV9Vjgc/RtnKyW2lmmAe8vqoOBfanhay9kmwz3rK0IjIAHgXcDdg6ya2q6lTaNd5jGKuqCZbk9sAutJ1bzkvy9CQvGFqZJ5rBaoIt0hy6JkBVfRd4D/DQkXD1VWA14NZjK3aWGZqlHw08Blh/OPwd4I/Ag8dVl27YYrpnbwk8D6CqLgV+APwV+I8km9+01WlFjVzfdYA5VfVR4G1AaG/OAL8D/jQc0wRJMjfJFsPtbYA7AicABwMfB3YANgMeO6YSl9q0bGmjPkZC1UuAxwGXJTm+qo4eXkP2SfLGqnpzku9U1V/GWe/KbqT7b1Xgb7TWw7WBVyW5oqp+kuQ0YOcktwT+Ypfg5Biu3YNpQfjrwH8C705ySFXtA9yK1uW+ALgr8MOxFatlNlzfbYE3A/OTXAXsTruuuybZmfae986qunyMpWrxVgVen6RoDQU7AF8BzgVOrqpfD1vlzUtys6q6foy13iiD1YRL8gLg6cCzgYNobwS3q6oPJpkD7J7ktr5QTL/hhfvJwFNp3a8H0bpiLwOOTXIErQXroKq6enyVatRIIN4S+DBwKfAU4LO0cYsHJDkJWJfWjfsU4N7jqVbLK8m9gLcCewOnAZ8BPlZVOya5BtgaOLOqvjqc71jICVJVv03yf7ThFR+oqj/QPtz8EP4+iP35wM6THKrArsCJluTmwLW0N/JnALcAngO8PMkLq+pkYE9D1U0jyYOAdwD/Rev22wW4P23W0adorYofqaqvzLTpwSujoWVxKhBvRlv/7UlV9SjgPOAJwDpV9Qza39UjaIF5N+DT46hZK+Ra4Czg1Kq6uqq2B9YdBkD/N62r9/5JdjRUTYbFdM9/lfa3+Pgk+42c93DgzsBzquqsm7DE5WKL1QRZtHmzqq4BPpZkQ2AbYPeqmp/kdNoMpqOq6soxlTsb3Qv4YVV9D/hekmcArwK+BbwbuJjWgnh6Vf10jHXOekluBxyd5ClDF/lDgS2B+9G6Ft4N7As8J8lqVXV8krsAzwSeUVW/GE/lWlojLZGr0BoJLqe1Os6jffABOJqWra9LciStC/9bhqrxW2QM8bNoYx5/VVVfTXI5cMjQnXsu7UPQW2fK+53BakIk2aCqLhpuvxi4C/Bb4DD+MeDyLkmeBFwC7DFTfslmqpEX7qnAexawbZJ5VXVKVX0+bWHJjavqpCSfA64H/jDWwkVVXZbk+cBGSf5aVR9KchvawPTLh+t1MK3b4aLhMb9J8qqqumqctWvpDH+b2wHPpQ1GP4g27vH9SQ4HrqF1C+4znP834MgxlatFjISqvWmtVB8AvpFkt6o6Ksmew7E5wPNm0vtdDO7jNTSFrkEbE/B24AzauI//on26Xoe2/sqewAOBBwHPrqozxlHvbJO2TtVDgStpM1ReQGuZmg+cTZu+/bSp65FklapaOJ5qBf98DZK8DngjcK+Rwa9bAe+rqhOnQvOkD4bVv0pyT9rr5Ntpr5MH0Lrn/0YbT7UB8PmqOn5cNerGJbk/beHW7WnhandgLdoEgw8Pk4BuPtOGuxisJkSShwGH01pFPlhV30yyHq2raQ1gr6q6Osmaw6A+TbOhX/8IWrfRc2n9/+cDc4GH0WYbfbSqjnXMxmQYaWXcArh0CFOvAl4KPLyqzk3yclq42hm40kA18yS5D+3v8uyqeslwbGvatPxHVtU5YyxPN2Bxr5NJ1qGNb9y3qrZMshvtvfAZVfXFcdS5ohy8PkZTA/eGX7bv0RL7vYFtoc2SAA4EFgIfHD5VG6puAknuAbyI1rJxGO0T1e2A+1XV+6pqR1rztKFqggyhampF9aktht5BW/vt5CT3qKp3M0z6MFTNWL+kDZG4V5KNk6xeVV+n7aM6d7ylaXEWGVP16CTbJlm7qn4PrE7rAYC2FuBngZ+MqdQVZovVmCzyS/Z42to582nrIv0Pbcr+R4b770h7z7hkXPXONsOb80toM41eOoy/WQM4CXhWVf1yrAVqsYYB6F+hhd5TktwXWLWqTh1arl4JbFCu+TZjTXX1DrM+Dwf+AnyDtozGUcB2VfWjcdaoG5bkpbQlhM4AtqB1/60B/DttketNgCdX1W/GVuQKMliN2fBLtj1tZtmjaYui3ZU2yPLDVfXesRU3i4x0Id0VuJo2w2gT2ti2C2ifhEPb/PpJVXXh2IrVP1nkQ8qtaAtEXk5ruXgALRx/oqo+leTudhPNXCN/p3OGmX6r0QasP5j2oedrwwxPW5EnUJL7AW+qqqcm2Qf4t6raKm1NxvsA96XNvD77Rp9owtkVOEZJNgW2rqpHA2sCV9DGfPyANqZnlyRrjbHEWWOkC+mrtG6jH9Fm9x1Fm779OdoL+KsMVZNj5I122yT701ovLqBNuz+etv3F12gTPwBm7Kfg2WhkuMTGQ8s9AEOomlNtY94XAafQpuufaqiaHFPXb8TFwOlJPkob8vLE4fh2wFlV9cmZHqrAYHWTWswv2V+BC5K8FrgHbUXZvyXZrqp+CDxsJk0xncmGF+23Av9RVTvTgtSxwK9os46+B3yb1rK4uGupMRhC1VNoe8KdWlXXV9UhVbV3VR1HC1TPA/7fcL4zNmeIkdC8Ne1v8b9pm2TfHf4pXP2NFq5uD7wGlxGaCEOX7VRL8m2HQeqXAxsBdwd2Ha7hc2kzd283tmI7syvwJrJId8V2tDFV3we+RFt4ctPhl+z5tOUVtq+qy8ZW8CwwMtX+wbSVuA8E9q9/rCf2fmBhVe2btn7YU2kDKj9SVdeNq+7ZLsm6wAOq6rhhnM0RwDtprVEPoW1JczBwW2B/4Iiq+vK46tXySzKPNjP6NcAdaBN8zgX+e6pLd2TM1Wq0lfR/O7aCBfy9N+YOVfWtJC+j/U3eHngTrUHhubT3wKLNsN6xqn42rnp7M1jdxIZ1dPagrX10TpLH0nZevz0taO1IW7bflbunSZJbTA1eTvII4FDaIoL7AseNTBp4FrBZVb1m+P4JwOlOIhivtI12zwN+W1VXJvkEbbunWwA/o6319uuq2iPJetX2ILN7aIZJW9D1QGCbqrrbcOyRwE60iT6fm5pEEtchmyhJ3kRbR+y7tOu1A631+OXAx2jbC92b9r538kweqL44Bqub0NCEfTiw09SnquET91q0T2JXAP+3MvQxT6ph/Zv3Av9GG4fzYdoigh8dWq4Ooy0EeiXwLOC1VfW18VSrUUnuDMwdZvutCRwCfBn4Ou1anVZVP0myCW2R3R2r6orxVaxltWgAHrmW5wAvHlqYt6RtSv+fK9sb8kw30n17M+B1tMkjfx2WpyFtfbkv0Qat/3iMpU4rx1hNo8WMw/k9bfDeaklWG34J/0ZbaPK9VfVxQ9X0GULsvrQ1UtYCHklbM+VZSdYfpmjvDPyaNgPwpVX1NcdTjVeaNWifcj+d5PHV1nP7X1pAfmJVfWwIVU8HPg8caqiaWUbelLdKsnuS5w+vhy+mtUa+Z2iZ+jbwSkPVZBkNxUPr4duAE4G1kzw2yS2r6vu0D0NrjLHUaWeL1TRZZEzVOsBVwHXAMcDxVfWh4b6dacssvKzco2xaDcHq9cDdaDul7wmsQhvTdh1wSFVdPL4KdWOSvJ02Q/M64AND6N2F9vfz7WE5hXcOt4+z+2/mGBnv+CTaZJFX0LqMPlNV+w2t/W8FLq+qF9n1N1kWeb/bmfbB9dqqOjzJvsBmtO7b3wBvALZcmYOxsyemwSK/ZC+j9TGfTpvVsjfwuaHb6Tpgc2AXQ9X0mmodTPIdWqD6dlWdNdz3JVrLx6uT/KdjqCZHklWHVl1oszLXoi2g+/wkVNUnk1wPPCnJVVX1yuFxhqoZIG1B15tV22poHdrr4w60WdLnAc9MW51797TlNFaHv7eIaEKMvN+9ENgN+BSwXZKnV9W2aRsq70UbZrHVyhyqwK7AaTHyS/Zg2oC9F9PW0tmX9on7CbSWq/+jDWI/czyVzg4jXQx3pS0a+TTgZkneOrxofxc4jhZ01xpjqRqRtsnu4UkeMxw6nrbe2xa0BXRflGSbqvo0bZzVuVOPNVTNGA8Dbpe2Jc3vaRN7VqPNHnsE8BhgtyQfqKqzy83nJ8owlmrq9hxa6/FLq237tTWwMMn7hwlBnwTeVbNg1wpbrKbJMNvsi7Tupe8nuQXwJ1oT93pTXYGafkOoegptRe5zaGOoPkKbofKSJO+rqv9Ncma5btgkuT3D/plJPgxcT5t2vxNtvNXNaa2MN6uqI8dXppZXVX06ya2BHyV5TlWdkbb5/I+HrsE70hbs/fp4K9Wi0havXg84a2hEuBj4G21ZjCmvoDUoUFUH3cQljo0tVp0sOsC5qr5DS+g7JFlnmN5/Mm0m01ZJ1nZQ9E1jmInyBmBr2oyUF9FaDd9F+4T18rSFBq8cW5H6F1V1MvAo4J7Ab2lbPR1Nu34b0AapH0ZbD0czyNRrX9rin/ehvVZ+dJi1ex6wZpJDaVtJfbmqTvD1cuJsAvxbkiNpYx4voi3E+5Ekmw/nPBS4e5Jbzqbr5+D1DhYZU/U44DbACVV1VZKDaV0X21XVpcMA6lWr6uoxljyrJNmAtrTC2rQBsDvTllm4HPg4sKDctHViDW++7wXuR5u+vQ3w3ao6cQjELtY6Aw1vvofQuo6+P4xH3Zm2dyq0631VVZ00phJ1I4b3so/RFv98bVV9YDi+J//YZuhBwLNrJVr8c2kYrDrKP3bt/hWtOfQdVXVSkoNog6MfVVV+uh6TJG8DLq2qQ9K2UXgJ8PSqOn/MpWkJhtli7wK2qKo/LDKoXTNMkg1pq+NfXlV7jBx/GfAfwDPLRZInzqKzMZM8ENiK9qH1TODoaqvgP5C2vNB1NQtXwneM1QoY+v+vqKprk2xFm+3wiCSvpg3K3G1ozHpFkmtp61UZrMbnTGDP4ZPW04B9DFUzw7C0wkLgl0nu6RpVM951wBm0mWPbVNXUXo7vSbIKTiKZSFOhKsmuwKrABVX1jiQvoPXM/CnJ2rRemw/O1kkktlgth6GveC5tjMd/0aaWrg3cmjaTZVda8+jHaJtNvrKqvjWeajUlbZHJp9KuzRHliuozztByddWwSKRmiJGZuQ+lvXZeQJtE8jza1ibHVNWJYyxRS2mYCPRu4NO0rr5vVtXBafvcPgR4HPDk2db9N8oWq+WTYbzUW4CX0RZC+yxwWZJ/B/6nqq5J8l3aJpM2aU+AqvojcGSST1fb8Nq1jmaYqTDstZtZhlD1BNqYqvcwbGsCHAssBJ6Xtpny8WMsU0uQtiDv5sBTqurnSR4EvGn4c3xvkk8Ca8z2IS8Gq+Uw0sd8S9pWC0ekLdf/MeB7wKFJ7kGbEfHM2f5LNoEWgmsdzWReu5ljWOtoLdrCvE8FbgucBZxaVZck+Rxt4U93PZgwIy2NUx9k7kSbYPBt4OfAacD+wMFJVquqd+JwF7sCl1eSZwGvAp5Im8XyXOBQ2j50D6cN6PtUVf1iXDVK0qRI8iraAq+Ppc0UOzfJ82jL0JznauqTZZHZ7hvTxlNdO/TK7EdrNPjZsDDofYDLqurCMZY8MWyxWn63A06utv3JR5JcRltT55ZV9VHAKcKSZrUkm9GWmnkTbfLOLsBjhlB1f9qH03Oq6tdjLFOLMRKqprYZujTJfFoL1RzgqCS7VNXptJYrDQxWy+8CYLNhjaT5VfX5YQr/k5McXVV/GnN9knSTG+k+eiTwTGDrJJdW1RvTtinaP8l1tI15XzUspqwJlLaDyJ60HpiNaLPdP0TrDlwP+FCSLavqr2MrcgIZrJbf/wLPpm0a+pMkt6QNVN/HUCVptpkKVEOoehRt1tjewHzgMWn7Ae4wvFmvTVut+8dORJgci7kWC4HTqup3SS6h7YDwAOAhVXVA2h6OhqpFGKxuxA39wQ+rPf8hyV60NP8IYGNgv6o67yYuU5LGKm1/v3sl+XZVLaQNcv5AVX05yYm01ql3DC+ph4w+1lA1GRYZU/Vi4I7AQbSemd2GyVkXJLmetp3N94HLxlbwBDNY3YBFfsm2AwJcX1XHDlP151TV5UneUW2z0FtV1VXjrVqSxuLBtB0nbjV08/0BOCDJMVX1myTfo61b9egkC6rqM+MsVv9q5P3uP2gb1J9aVVcm2Q/YL8kmwC+B+wMHjD5G/8xNmG/AyC/ZC4C30BL6B5K8crj/umEa8dQvlnv/SZqVqurLwO9oM6O3B46n7cd5yDCu6n60/Tp/Baw/pjK1BMOMvxfQZrkvTHJ74ERgX9qMzk2AXarqN2MrcgawxWoRi7RU3Zw2G2LXqvpJkmOAryf5c1UdOjo92OQuabYZfb0cWvBPAp4A/JW2CGiAT9K2sNkdeCCw1bCt1HW+bo7XIu9369AaCJ5SVfOTvAK4ZmhE+HNVvXCsxc4gBqsbMLRUnU1r+rxF2uaTvxmmnu443uokafyGgeqPBu5L29rko0n+TNs26vqqOijJocPpmwNvBJ5abqA9douEqr2Bu9IC8BeHU64Cbj0MhdknybZVdel4qp1ZDFaDJJtU1dnDC8XTaNOEd6INznspbXbLJcCGwC2H7RcWjq9iSRqPkSUVHkLr/jsLmJfku0O4Wgg8Z1g88gu0ldcfRlvT6udjK1x/NxKqXkTrmdkJOBVYL8mBwDXA+2nLKjzXULX0XHkdSLI1bW2OB9LGAbwbOLeqXjzcfwRtevBVtD7m3arK/f8kzVpJNgfeTNtk/owkO9LC05lDuNoJOGtYQJJhyxOn5k+QtI3p3wO8gdaYsC1tS5pbA2fSWh53rqqzxlbkDDTrW6yGT1Sb036xNqVNC/4WsF2SJ1fVV6rq34dPZqvQFgM9f2wFS9JkWAt4PG3xyDOAzwPXM4yhqqpD4Z/WtzJUTZiq+uOwbNA9aV20j0kS4FLgN8ATbKladrM+WA0D884FXk9bDO0xtCbQv9BWUV9YVcdV1Q/GWackTZKqOn4YNvH2JL+tqqOSfJ72AfT0kfPsFplg1fb/uxqYk+S+tBXWvwkcbKhaPrM+WA3OoM2G+COwZlX9PskXaZ++dklybVWdONYKJWnCVNWxw7pVbxm6+o4Ejhp3XVpmFwBfpXULrkfbYNkNlZfTrBxjtchsiNWAhVW1cFgI7bHA/lX1o2EfwCcCX62qi8dYsiRNrCRPAQ6kdQ3+bnQpGs0MwxIYd6TN5pw/7npmslkXrBYzxXRTWkvVAVV1TZLXAg8BDqyq/3P2nyQtWZK5VbVg3HVI4zbrgtWUYYrps2i7dJ8KfAN4Y1Wdm+StwN2B51XVNWMsU5IkzSCzMljdwBTTS2lLLbywqs5JcruqcoNJSZK01GZlsAJIsjptiul7R6aYLgA+QusWdGVgSZK0TGbtrMDFTDG9M22zyY8YqiRJ0vKYtS1W8PdWq31pM1mmppi6wqwkSVouszpYgVNMJUlSP7M+WEmSJPVys3EXIEmStLIwWEmSJHVisJIkSerEYCVJktSJwUqSJKkTg5UkSVInBitJkqRO/j/0nFv+UbvkvAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top[:5].index,y=top[:5].values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "'Missing' జానర్లను తీసివేయండి, ఎందుకంటే అది Spotifyలో వర్గీకరించబడలేదు.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df = df[df['artist_top_genre'] != 'Missing']\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ముఖ్యమైన మూడు జానర్లు డేటాసెట్‌లో అత్యధిక భాగాన్ని కలిగి ఉన్నారు, కాబట్టి వాటిపై దృష్టి పెట్టుదాం.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n", + "df = df[(df['popularity'] > 0)]\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "డేటా బలంగా సంబంధం లేదు, ఎలాగంటే ఎనర్జీ మరియు లౌడ్నెస్ మధ్య మాత్రమే, ఇది అర్థం చేసుకోవడానికి సరైనది. ప్రాచుర్యం విడుదల తేదీకి సంబంధం కలిగి ఉంది, ఇది కూడా అర్థం చేసుకోవడానికి సరైనది, ఎందుకంటే తాజా పాటలు ఎక్కువగా ప్రాచుర్యం పొందవచ్చు. పొడవు మరియు ఎనర్జీకి సంబంధం ఉన్నట్లు కనిపిస్తోంది - కావచ్చు చిన్న పాటలు ఎక్కువ ఎనర్జీ కలిగి ఉంటాయా?\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "corrmat = df.corr()\n", + "f, ax = plt.subplots(figsize=(12, 9))\n", + "sns.heatmap(corrmat, vmax=.8, square=True);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "వారి ప్రాచుర్యం ఆధారంగా నృత్య సామర్థ్యం యొక్క గ్రహణలో జానర్లు గణనీయంగా భిన్నమా? ఇచ్చిన x మరియు y అక్షాలపై ప్రాచుర్యం మరియు నృత్య సామర్థ్యం కోసం మా టాప్ మూడు జానర్ల డేటా పంపిణీని పరిశీలించండి.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaQAAAGkCAYAAAB+TFE1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOydd3gc1dWH39m+q9Xuqvde3eTeG7bBdAwm9A6BBEJJvtASSggJCYQk1IQSCBBIqKaYjgvuvTfZktV71/Y+8/2x0tpCkrst28z7PPvM7MydmbNl7m/uveeeI0iSJCEjIyMjIzPAKAbaABkZGRkZGZAFSUZGRkbmJEEWJBkZGRmZkwJZkGRkZGRkTgpkQZKRkZGROSmQBUlGRkZG5qRAFiQZGRkZmZMC1UAbICNzuIiSiD8YwBf04Q368AX9+AKhZfd7b8CHL9j98qNRqjFpIzHrIkmOTMCkjUQQhIH+KDIyMvshC5LMgODyuWlyttLhttLpsdLhtuL0uXAHvLgDHjx+D+6AF4/fgyfg3U9sQgJztBg1EeREZzAsoZCihEFkWFJkgZKRGWAEOVKDzPGm1dXO7pa9lLZVUmtroNbWQIfb2qucVqVFr9KiV+nQqbXoVDr0Ki06lRaNSoNWqUGjVKNVadB0rytD6z22qfbbp9KgUajxBX3YvA7a3Vbq7Y3UWBvY3bqXOlsjAKmmJM7ImsD0zAmYdaYT/RXJyMggC5LMccDld7O1cReb6newq6WUFmcbEBKc1MhEUsyJpJqSSDTGEa23YNGbsehMaJTqE25ru6uTjfXbWVq5hpK2ctRKNWflTGVO4Wyi9OYTbo+MzI8ZWZBkjgl2r4PVNZtYX7eVHc17CIpBIjURDI7PZ1BcLoWxuWRaUlEoTl4/mlpbA/OLF7Csai1KhZI5hbO5uHA2GpVmoE2TkflRIAuSzBHjC/rZVL+dZZVr2dywg6AkkmSMZ0xKEWNThpMfk31SC1B/NDpaeG/7fFZVbyAhIpZbRl/FiKTBA22WjMxpjyxIMoeFJEkUt+xledU6VtdsxOV3E6UzMyVjLFMzxp9WzgE7mnbz+sb3qbM3MjtnGteNuBSt3FqSkTluyIIkc0jYvA6WVqxhYflyGuzNaFVaxqeOYFrGeIbGF5ySLaFDwR/08972+Xy+ZyHJkQn8cuJPyYxKHWizZGROS2RBkukXSZLY3bqXBWUrWFOziYAYoCA2h7NypjIudQQ6lXagTTxh7GjazQtr38Tpc/GzMdcyNXPcQJskI3PaIQuSTC9EUWRt3WY+Lf6Wio4aDGo90zLGc2bOFNItKQNt3oDR6bHxzKrXKG4p5by8GVw74lJUCuVAmyUjc9ogC5JMmIAYZFnlGj7b/R0N9maSjPFcWHgWUzLG/qhaQwciIAZ5Z+vHfFWymEFxufxq0q1Y5HlLMjLHBFmQZJAkic0NO3h7y8fU2RvJikrjkkHnMC5lxGk7NnS0rKhax8vr3yFSY+S+KT8jOzpjoE2SkTnlkQXpR06rs51XN/yXLY27SIqM57rhcxmdXHTaeModTyo6anh6xctYvXZuH3stUzLkcSUZmaNBFqQfKZIk8X3FKt7a/BEiElcOvZCzc6ejUsrhDQ8Hq8fG31f9i+KWvVxUeBZXD7tYblXKyBwhsiD9CPEEvLy07m1W12xkSHw+t4+9jnhj7ECbdcoSCAZ4c/OHfFe2jBGJg7l74s0YNREDbZaMzCmHLEg/MhrtzTy98hVqbQ1cNWwOFxWehUKQn+iPBQvLlvP6pveJM0Rz/5TbSTUnDbRJMjKnFLIg/YjY21bJn5a9CMAvJ95CUeKgAbbo9GN3y17+tvJVfEE/d064kbEpwwfaJBmZUwZZkH4k7GjazV9WvIxJa+ThM+4h0Rg30CadtrS62vnrilco76jmnLwzuHb43AGJZC4jc6ohC9KPgE31O/jbyldIjIznoel3Ea23DLRJpz2+oJ//bfuUr0oWk25O4c7xN5AZlTbQZsnInNTIgnSas6u5hCeWvUiqKZFHpt+DUSsPtp9INjfs4J/r3sbudXBR4Vn8ZPB5cjoLGZl+kAXpNKasvYrHv3+WaIOF38/8NSatcaBN+lHi8Dp5e+vHfF+xiviIGK4ZfgkTUkfJc71kZH6ALEinKY2OFh5a+Bd0Ki1/mHkv0QbLQJv0o2dH0x7e3Pwh1dY68mOyuXLYhQyJL5CFSUamC1mQTkOcPhcPL3waq9fOE2feT1Jk/ECbJNOFKIosqVzD+9vn0+GxkhudycWDzmZ08jCUcqBWmR85siCdZgTEIE8u+wc7W0p4ZPrdDI7PH2iTZPrAF/SzpGI183d/R7OzjWi9hZnZk5iZNZnYiOiBNk9GZkCQBek049+b3ueb0iXcPvY6ZmRPGmhzZA5CUAyysX47i8pXsKVhFwgwInEw0zLHMzZ5uOwAIfOjQhak04hllWt5ce2bnJ8/ixtG/mSgzZE5TFqcbSwqX8nSyjW0uTrQq3VMSB3F9MzxFMblyhE1ZE57ZEE6TajsqOXhRX8hNzqTR864Rx6POIURJZHilr0srVzDmppNeAJe4gzRTM0cx7SM8SSbEgfaRBmZ44IsSKcBDp+T33z3JD7Rz1OzfysnjDuN8AZ8rK/bwrLKtWxtKkaSJPKiM5maOZ7J6WOIlF35ZU4jZEE6xRElkaeWv8S2pmJ+P+P/yI/NHmiTZI4THW4rK6rWs6xyDVXWOtQKFVMzxnF+wSzSzMkDbZ6MzFEjC9Ipzkc7v+SDHV9w86grOCfvjIE2R+YEUdlRy4KyZSytXIMv6Gd44mAuLDiTYQmF8rwmmVMWWZBOYbY07OTPy/7BlIyx3Dn+Rrki+hFi9zpYULacb0qX0OmxURibw2VDL2CoPOFW5hREFqRTlGZnGw989ydi9VH88cz70cruwT9q/EE/i8tX8UnxN7S7OxkUl8tlQy5gaELBQJsmI3PIyIJ0CuIL+nl00V9pdLTw5FkPkihHYpDpwhf0s7h8JZ8Uf0OH28qQ+HyuGHoRhXE5A22ajMxBkQXpFOTl9e+wuHwl90/5OWPkBHAyfeAL+llYtpxPir/F6rExMmkIVwy9iOzo9IE2TUamX2RBOsVYXL6Kl9e/zSWDzuGqojkDbY7MSY4n4OWb0iV8tvs7nD4X41NHcsXQC+X06jInJbIgnUKUt1fxyKK/UhiXy0PT7kKhkGfuyxwaLp+bL0oW8sWeRXiDPqZmjOOyIeeTIGcOljmJkAXpFKHd1clvFj6JUlDy5OzfyLmNZI4Im9fBZ8Xf8s3epYhikJnZk7l08HlyehKZkwJZkE4BPAEvv1v8Nxrszfxx1n2kW1IG2iSZU5x2dycf7/qaReUrUQgKzs6ZxsWDzsakixxo02R+xMiCdJIjiiJ/X/0v1tdt5YEptzMqedhAmyRzGtHsaOWjnV+xtGoNWqWGM7OncF7BTGINcgoMmROPLEgnMZIk8eqG/7GofAU3jryM8/JnDrRJMqcpdbZG5u38ilU1GxGAieljuLDgTLKi0gbaNJkfEbIgnaRIksQ7Wz/m8z0LmTv4HK4cdnw86oJBkU6Hlzarh3abhw6bB5vLh9sTwOUN4PYG8PqCiKLUZReIXX8ZhSCgUSvQqJVdLwUaVWhd27Vdq1ai1SjD65qu99of7NOolSgVB48sIIoSgaCIPyASCIrh9e6XLxDE7xfx+oP4A0F8fhGfP4gvIPZ+7w92lQsd173PH+h5vD8QRBQP7ftUKEClVIReqtBSHV4Xwvu6P7tOq0Kn6VrXdK+r0He912qV6DUqIvRqjHo1Wo3yuEZgaHW281XJYhaWr8AT8DIsoYBz8mYwKmmoHEFe5rgjC9JJiCRJfLDjC+bt+oqzc6dz86grjroS8ngDVDbYqGiwUd/ioLbZQX2Lg8Z2V1hs9ketUqDXqtBrVWg1ShSCgCCA0L0ERJEeFXf3eiB4ZH8phUIgpEn7rkHX9QACAZFgH7YeLoIAalVINNUq5T5RVSm6titRh8U1tO1QxBJCYr2/WAYCUg/h3CegQTy+rpc3cMifS6UUwuJk1GuIMITWTREaok06oiK1RJl0REXqiDJpMUVoD9n2/XH6XCwsW8HXpd/T7u4kRh/FrJzJzMyeTLTectjnk5E5FGRBOskQJZE3N33IN3uXMDNrEreNveawE7OJokRVo40dZW2UVHdQVtdJXbOD7jpPo1aSEhdBcpyR5NgI4qIMxJh0oQqtqxJTq47cpTwoSqFWiD+I1xdqhXi71n1d6/vv6173B8Ww/RBqjUmEBBpCItnd2lB3tz66liqlIiwePxQUjSr0XqtWolYpUSmFky7Omz8g4vUF8PiC4VapZ7/3Trcfh9uPw+XD4fbve+/243T5sTq9uDyBXudVKASiIrXERxlIiDGQEG0gMTqChBgDybERRJt0B/wuujPaLihbxtbGYhSCgjEpRczMmszwxEFyq0nmmCIL0kmEL+jn5XVvs6J6PRcWnMm1w+ceUsUZFCUq6q3sKGtjR1kruyrasLv8AMSYdeSkWMhJNZOTYiYr2UysRY/iCJ6aZU5uPL4AnXYvHTYvHfZQ92uH3Uur1U1Tu4umdhdtnW72b4xF6NWkJ0SS1vVKT4wkPSGSGHNvoWq0N7OwfAXfl6/C7nNi1pmYkj6WaZnjybSknnQiL3PqIQvSSUKzs42/r3yV8o5qri66mDmFs/u9wYNBkbI6KzvKWtle1kZxRRvOrqfjpJgIhubEhF7ZscRHG07kx5A5yfEHRFo6XTS1uahvcVDVZKemyU51ox2b0xcuF6FTkZNqITvFTE6qhdxUM8mxRhQKgUAwwObGnSytXMPG+u0ExSBp5mSmZ45ncvpYYgxRA/gJZU5lZEE6CVhft5WX1r2NKIncOf6GXvHp/AGRvTWd7ChvZUdZG8WVbbi9QQBS4oxdAhTLsJwYYsz6gfgIB0QK+Am6bIg+N5Lfi+j3IPm6lx5EvxcpGABJBFFE+sESQFAoQaEILZXK0FJQIigUoFCiUGsR1FoUGl1o2fU+tK5DUGtCx8j0i9XhpbpLnCobbJTVdlLZYMMfCP0Geq2SrOSQQOWkmMlNtWA2w7r6zSyrXEdJWzkAeTFZjE8dyfjUEXIkCJnDQhakAaTd1cm/N7/PutotZFhS+fWkW0mMjMfl8bO7qoNdFW3sKm9nT3UHPn9IgNITIxmaHRKgodkxRJl0A2K7JEmIHicBa0voZWshYG0l6LKFxMdlI+gOrUs+z1FcqbuVeAycGdRaFFoDCl0ECm0ECp0h/F7Zva17v26/dW2onKDW/ui6pQJBkZomO2W1VspqOymrs1Jeb8XrC/0fNSoFWclmslPNxMYo6FRUU+raRpW1GoBMSyrjUkcwPHEwOVEZcrgrmQMiC9IAYPPY+aJkEd+ULiEgipybcS7p6qGUVHWys6KNijorogQKAbJTzAzOimFIduhlNmpPiI2SJCG6bPg7m7vEpuvV9d5vbUXyunocI6g0KCPMKPQmlIZIlAYTCoMJpcGEUh+JQqtHUOtCrReNLtRy0YRaMChVCIIi1ArqWiIowgIQai0FkcTuZTDUihKDSMEAUsC3r7Xl94aXkt+D6PeFlj43oseF6HEieruXToIeJ6LHBWJvp4AeKJQotPougdonVGFh2/8VFrKe5QXNgZ0ITgWCokRds53yOitldVb21nZSXmcNO1WolAIp8Qb0Ji92ZR2tVCAYbBh1OoYlFDI8YRDDEgcRZ4g+5b8LmWOLLEgnCEmS2NNcwVc717G2pByf3UBkMAWvw4DLHbqRNWolhRlRDM6KYXBWNAUZURh06uNjjxgkaG8nYGsjYG3Bb23eJzrWZgLWVqSAr8cxgtaA2hyHyhyHyhzftYwLb1MYTKdsBSNJElLAFxIs736C1f3yunq++trmdYe6HQ+EoAh1K2r0IbHqWu57b0Ch0XWJlx6FVhfa1lVW2P8Y9ckjbqIo0dju7NGSKqvtDDvXAOgjgohaG0FNJ4LegckE+alxDE7KJD8mi+zoDHSqE/PAJXNyIgvSMUSSJJxuP21WD21WD9XNneysqaOisZO2Dh8Bt5buLiiVUiAzOeT51t0nn51iRqU8ui4NSZKQfO5Q15nTSsDRTtDWRsDW2vUKrQcdnb0qT4XBhMoUh9oSFxab/YVHqYs4KttOd0LfvacPofqhgLlD42k+d3hd9LoQfZ7wtoMKGwBCl0CFBEyhCa0L3evdIvYD8eu9zYCg0YZapsf4+2jpdFNWa6Wy3kpNs4OaJju1zfaec9VUXgStG4XWQ0SERKxFR3KMiYz4WLLj48mMjSc2wiJ39/0IkAWJru4pKfSUFwyK4TkzP1x6fAEcbj82p5dOhwery4PN6cXqCLna2hwBAj/s9VEEUOjcWCwK8pJjGZOVQ0F6LGkJkaiUitAcGzGIFPQjBQKhZdDf1Q3lD73CFZerRwUmda13j9sEnVZElw0p6O/1GQWVBpUpBqUpFpUpBlVk19IUGxYchWZgxqNkehJurXldXb+9p8dvL4X/A/uWkq/7/+HpKhMSONHrOkRxIyRS+7XKBK0ehUoTcghR7XspfvBeUGtQqLTh9X371AgKJYJSCQpV17qKIAKtNj+1rW5qW11UNlmpbu6gpcONwyEhin20+pR+VJoAWp2EwaAkQq/AoFMTodNg1GswGbSY9AZMBi1GvQa9Roteo+5aatCp1aE5a11z2eRpDycnp6QgBQIBGhsbD1jG6vDywgdbcHr8BEWJYFBCEiWCkoQohl5BUULsen+4CIjoFD50gh+d4MOocBOpcGNUeDEpvZiVXqJUoaU6/OQpgtQ10VOSIBgAMcgRDdgLyq6nYy1KnRFBF4nSYAyN1eiMoTEcfSQKgxlVZBSCNuKk6d6ROXFIkgRBf2hczedG9HlDLTG/p2tczbOvZeb3dnk/uhG9XiS/e99DUdCHFPAjBvwQ8IMUPIZWCiAoQBnynHQKejoDeqyiDoeowhnU4BA1OEUNrqAGp6TBJWrwSWpEjrDVJIihCCDCfvde13r39q6gISgEAZPOiFJQ7BetZN+91L3avWV4fhxzz8g9qAmJiYmoVKojs/805ZQUpNraWmbNmjXQZsjIyMgcMYsWLSI1NXWgzTipOCUF6VBaSEdKY2Mj11xzDf/9739JTEw8Ltc4Xsi2Dwyy7QPDqWw7yC2kvjglvw2VSnXcnywSExNP2acX2faBQbZ9YDiVbZfpiey2IiMjIyNzUiALkoyMjIzMSYEsSDIyMjIyJwWyIP0Ak8nEnXfeiclkGmhTDhvZ9oFBtn1gOJVtl+mbU9LLTkZGRkbm9ENuIcnIyMjInBTIgiQjIyMjc1JwSgpSIBCgtraWQK/AcTIyMjKnDz+2uu6UFKTGxkZmzZp13KI1yMjIyJwM/NjquuMuSA6HgwsuuIDa2tpe+xYuXMicOXO46KKLuOOOO7BarcfbHBkZGRmZk5TjKkhbt27lqquuorKystc+h8PBY489xquvvsr8+fMpKCjghRdeOJ7myMjIyMicxBzXWHYffPABv/vd77j//vt77fP7/Tz22GMkJCQAUFBQwOeff96rnM1mw2az9dj2Y2m+ysjI/HiQ67rjLEhPPPFEv/uioqI488wzAfB4PLz66qtcd911vcq99dZbvPjii8fNRhkZGZmTAbmuOwmifdvtdu644w4KCwu55JJLeu2/4YYbem3vDjsvI/Njw+/3U1tbi8fjGWhTZA4BnU5HamoqarX6oGXlum6ABam5uZlbbrmFCRMm8Nvf/rbPMiaTSQ4NIiPTRW1tLZGRkWRmZsoZgE9yJEmira2N2tpasrKyDlperusG0O07GAzy85//nHPPPZeHHnpIvrlkZA4Bj8dDTEyMfL+cAgiCQExMjNyaPQxOeAvp1ltv5e6776axsZFdu3YRDAb59ttvARg6dOgBx51kZGSQxegUQv6tDo8TIkiLFy8Or//rX/8CYNiwYezevftEXF5GRkZG5hTglIzUICMjc+zYtm0bjz76KADbt2/n7rvvPuTyx6KcjEw3siDJyPzI2bt3L01NTUCo5+L5558/5PLHopyMTDcD7vYtIyNzfBBFkT/96U9s3boVp9OJJEn88Y9/5MMPP6Szs5OamhqGDx/OqlWrsNvt/OY3v+Hiiy/mD3/4A1988QUbNmzgySefRBRFAH72s59RVFTE888/Hy7/5z//uc9rNzQ09Cr3/vvv8/bbb6NQKIiNjeWRRx4hKyuLBx98EEEQKCsro729ncmTJ/Pwww8f0FU6GAzyl7/8hcWLFxMZGUlRURFlZWW8/fbb2O12nnjiCUpKSvD7/UycOJH7778flUrFsGHDuO2221i5ciXNzc1cf/313HjjjXz88cd89NFHuN1ujEYjb7/9Nh9++CHvvvsuoihisVh45JFHyMnJOS6/lUwX0ilITU2NlJ+fL9XU1Ay0KTIyJ5Rdu3YdctlNmzZJd911lxQMBiVJkqRXXnlF+tnPfiY98MAD0g033BAuN2/ePOm2226TJEmS1qxZI51//vmSJEnS9ddfL33xxReSJElScXGx9Nhjj/UqfyD2L7dq1SrpzDPPlNra2sL7zj33XEkURemBBx6QLr74YsnhcEher1e65pprpLfffvuA53733Xela665RvJ4PJLX65Vuvvlm6dprr5UkSZIefPBB6T//+Y8kSZIUCASke++9V3r11VclSZKk/Pz88Lm3b98uDR06VPJ4PNK8efOksWPHSna7XZIkSVq7dq109dVXSy6XS5IkSVq+fLl07rnnHvQz98Xh/GY/5MdW18ktJBmZ05SRI0diNpt57733qKmpYe3atURERGCxWBg9evRBjz/33HN5/PHHWbx4MZMmTeL//u//jtiW5cuXc9555xEdHQ3A3LlzeeKJJ8JBly+55BIiIiIAmDNnDosWLeLaa6/t93xLly5lzpw5aLVaAK644grefvttAJYsWcL27dv56KOPAHq5Xc+aNQuAIUOG4PP5cLlcQCh8mdFoDJ+jqqqKK6+8Mnyc1Wqls7MTi8VyxN+DzIGRBUlG5jRlyZIlPPHEE9x0003MmjWL7Oxs5s+fD4DBYDjo8VdeeSUzZsxg5cqVLF++nBdffDF8/OEiSVKf27rz/CiVyh7bFYoDD2+rVD2rrv3Li6LIc889F+5es9lsPdyvu0Wse1u3bft/J6IoMmfOHO67777w++bmZsxm80E+qczRIDs1yMicpqxcuZIZM2Zw9dVXM2zYMBYuXEgwGOxVTqlU9pkA7sorr6S4uJi5c+fyhz/8AZvNhtVq7bf8gc47ZcoUvvrqK9rb2wGYN28eFouFjIwMAL7++mt8Ph9er5dPPvmEGTNmHPDc06dPZ/78+fh8PgKBAJ988kl435QpU3jzzTeRJAmfz8ftt9/OO++8c1B792fy5Ml8+eWXNDc3A/Duu+9yww03HNY5ZA4fWZBkZE5TrrzyStavX8+FF17IFVdcQVpaGrW1tWEnhW5GjhxJeXk5v/jFL3psv/fee3n++ee5+OKLuf7667nzzjtJTU3tt/wP2b/c5MmTufHGG7nhhhs4//zz+fTTT3nllVfCLRudTsfVV1/NhRdeyJgxY7j00ksPeO65c+dSVFTExRdfzJVXXolarUav1wPw0EMP4XK5uPDCC7nwwgvJz8/npz/96WF9d1OnTuXWW2/l5ptv5sILL+SLL77gxRdflCe6HmcEqa+29ElObW0ts2bNYtGiRaSmpg60OTIyJ4zi4mIGDRo00GYcUx588EHy8vK45ZZbDvmYFStW0NbWxpw5cwD44x//iFarDXexnUwczW/2Y6vr5DEkGRmZI6K8vJxf/epXfe7Lysri2WefParzX3311Tidzj73/fOf/+T111/n9ddfJxgMUlhYyGOPPXZU15MZeGRBkpGROSKys7P57LPPjvo8Tz75ZJ/b//e//x3wuDfeeOOory1zciGPIcnIyMjInBTIgiQjIyMjc1IgC5KMjIyMzEmBLEgyMjIyMicFsiDJyMjIyJwUyIIkIyNzTHn++eeZNWuW7AUnc9jIbt8yMjLHlM8++4zXXnuNrKysgTZF5hRDFiQZmVOUxRuqWbCu+ric+6xx6cwck37AMoFAgMcee4zS0lJaW1vJysoiOTmZpqYmfvGLX/C3v/2Nm266iSFDhtDa2spHH33E66+/zvz581EqlUyePJn77ruPhoYGbr/9dtLS0qiqqiI5OZmnn34ai8XC999/z7PPPosoiqSlpfH4448TGxvLzJkzmTlzJhs2bADgT3/6E4MHDz4u34XMiUPuspORkTkiNm/ejFqt5v3332fBggV4vV4mT55MfHw8r776KoMGDaKjo4PbbruNzz77jFWrVrF48WI+/vhjPvnkE6qqqnjvvfcAKCkp4YYbbuDLL78kJyeHF198kba2Nh599FH+8Y9/8PnnnzNq1Cgef/zx8PUtFguffvopd999Nw888MBAfQ0yxxC5hSQjc4oyc8zBWzHHk7Fjx2KxWPjvf/9LeXk5lZWV4dxC+zN8+HAA1qxZw/nnn49OpwPg0ksv5dNPP2X69OlkZmYyfvx4AC6++GLuvfdeJk+eTFFRUTiG2xVXXMGrr74aPu/ll18OwMyZM3nwwQdpb28P51uSOTWRW0gyMjJHxKJFi7j33nvR6XTMnTuXsWPH9pn3qFuAfhhlHAinp9g/v5EkSSiVyl7l98+f9MNjRFHskVNJ5tREFiQZGZkjYvXq1Zx77rlceumlxMbGsn79+j7zLXUzYcIEvvzySzweD4FAgHnz5jFhwgQAKioqKC4uBkK5kqZNm8bw4cPZunVrOKvs+++/H25FAXz55ZcALFiwgJycHDl53mmA3GUnIyNzRFx22WXce++9fPPNN2g0GkaMGBEWj76YMWMGxcXFXHrppQQCAaZOncq1115LY2MjZrOZ559/nurqagoKCvjjH/+IwWDg8ccf584778Tv95OcnMwTTzwRPt+mTZv46KOP0Ov1/QZolTm1kAVJRkbmiCgoKODzzz/vtX3/lBR79uzpse+OO+7gjjvu6HWMXq/npZde6rW925uuL37961//KHIE/ZiQu+xkZGRkZE4K5BaSjIzMgJKamsrixYsP65jDLS9zaiC3kGRkZGRkTgpkQZKRkZGROSmQBUlGRkZG5qRAFiQZGRkZmZMCWZBkZGSOKU1NTdx6663H5FzPPfccixYtOibnkjn5kb3sZGRkjikJCQn861//Oibnuueee47JeWRODWRBkpGROSLWrl3LK6+8gk6no6ysjIKCAv7617/S3NzM9ddfz+LFi2lsbOTee+/FarWSn5/P+vXrWbZsGU6nk8cff5zS0lKCwSC33norF1xwQTgSeGdnJzNmzKC5uZlx48Yxd+5cnnnmGVavXo3VaiUqKooXXniBuLg4pkyZwtlnn83GjRtRKpU8++yzpKWl9bC1v3QVFRUVPProo3R2dmIwGHjooYcoKiriwQcfRBAESkpKcDgc3H777Vx88cUD8C3/uJAFSUbmFMW+bQn2rcdnPk7k8JlEFp1x0HKbN2/m66+/Jj4+nssvv5wVK1aQn58f3v/EE09w7rnncs0117BgwQK++OILAF566SWGDBnCU089hcPh4MorrwxHBW9qauKrr75CpVLx4IMPAlBVVUV5eTnvvfceCoWC+++/n88//5ybb76ZlpYWJk6cyCOPPMKTTz7Jf//73/Bx+9OdrmLx4sU88MADfP7559x3333cdtttzJ49my1btnDPPffw7bffhu147733aGtrY+7cuUyePJm4uLij/WqPiL6C1p6OyGNIMjIyR0xeXh6JiYkoFApycnKwWq099q9cuZI5c+YAcNZZZ2EymQBYtWoV7733HnPmzOGaa67B5XJRWloKwODBg3tE8gbIyMjggQce4MMPP+TJJ59ky5YtPVJdTJ06NWzPD23oZv90FU1NTTQ2NlJdXc3s2bMBGDFiBGazmfLycgDmzp2LWq0mMTGRUaNGsXHjxqP6ro6OH4cgyS0kGZlTlMiiMw6pFXM80Wq14XVBEHo9ySuVyj6f7kVR5Omnn2bIkCEAtLa2Yjab+fzzz8PpKvZnx44d/PrXv+bGG2/k7LPPRqFQ9Dhvtx192dDND9NVBIPBXmUlSQpHLN8/nYUoir1E8oQS8A/ctU8gcgtJRkbmuDFp0qRwANalS5dis9mAUCqKd999F4Dm5mYuuugiGhoa+j3P+vXrGTduHFdddRW5ubmsXLnygKku+uKH6SpSUlJIS0vju+++A2DLli20traSl5cHwNdff40kSdTV1bFt2zZGjx59eB/+GCIGfxyCJLeQZGRkjhu//e1veeCBB/jggw8oLCwMd9ndeeedPPbYY1xwwQUEg0Huu+8+0tPTw04HP+S8887jzjvv5MILL0StVlNQUHDAVBd90Ve6iqeffprHHnuMF154AbVazQsvvIBGowHA4/Fw6aWX4vP5ePzxx4mKijqKb+LocDl6Z+I9LZFOQWpqaqT8/HyppqZmoE2RkTmh7Nq1a6BNOCzeeustqbS0VJIkSdqxY4d0ySWXDIgdM2bMOKz64oEHHpDmzZt3TK59NL9Zd123esnSY2LLyc5xbyF1e9C8/PLLvXKXFBcX8/DDD+NwOBgzZgy///3vB7afVua0R5IkvAEvLr8HT8CDN+jHH/QTlLrHEwRUCiUqhRKNSoNepSNCrUer0iIIwkCbf8qRkZHB//3f/6FQKNBqtfzhD38YaJNOSaxW50CbcEI4rrX/1q1befjhh6msrOxz/3333ccf//hHRowYwW9/+1s++OADrr766uNpksxpjCRJWD02Gh2tNDtbaXW10+7qpNXdQYe7k06PDbvXSUAMHPa51QoVJl0k0XoLcYZo4o2xxEfEkhwZT4opEbPOdBw+0anP9OnTmT59+kCbcdjpKk62DLStVvtAm3BCOK6C9MEHH/C73/2O+++/v9e+uro6PB4PI0aMAEIuls8//3wvQbLZbOGB0G4aGxuPm80yJz+iKNLkbKXGWk+drZE6eyN11kbq7U24A54eZY2aCGIMUUTrzWRYUjFpI4nURBCh0aNTadEoNWiUahSCAoUgIAFBUSQg+vEGfbj9Xlx+Fzavg063jXZ3J+Ud1ayt3UxQEsPXMetMZEelkR2VQU50OnkxWSdUpCRJQpQkRDG0HnrtcxYWAEEIeaEpFAKKrqXMycOB6rqmDlmQjponnnii333Nzc09JpnFxcXR1NTUq9xbb73Fiy++eFzskzn56fTYqLHWU2Otp9paT1VnLTXWenz7eR1F6c2kmpKYnjmBpMh4kiLjiYuIIdYQjValOS52iaJIq7uDelsTtbYGqjprKe+oZkvjrrArcVJkPIPi8hgcl8fg+DxiDdFHdC2vP0hjm5Omdhcqb4DWTjeBoEgwKBEQQ0tRlA57pooggEohoFIqUKkUqLteGpUSjVopC9YJ5kB1XWOnp8/tpxsDNmAj9TFXoK8++htuuIFLLrmkx7bGxkauueaa42abzIlFlETa3Z002JuptzVRbw9V8tWddVi9+54MIzURZFhSOStnGmnmZNLNySSbEjCo9SfcZoVCQXxEDPERMYxIGhze7g34qOiopqStnF0te1lTs4nF5SsBSDTGMTShkCHxeQyJy8eiN4ePkySJDruX6kYb1U126pod1LU4qGt20GrdVxnde2kqnQ4vKoWAUhkSD6VGQKEUUO7X+uluDe1PqBXVNddG7HoFRQJBCY8viMPl79GiUqsV6DQq9BolOq0KjVqJzPHjQHVdu0Ps56jTiwETpISEBFpbW8PvW1paiI+P71XOZDKFXUVlTi0CwQBOvwunz4Xd58TudWD12On02OhwW2l1d9DiaKXJ2dqjxaNVaUmNTGRk8lDSzSlkWFJIMydj1kae9I4FWpWGwrhcCuNyuahwNqIkUt1Zz87mPWxv3sPK6vUsLFsOgEUdQ0QwgYDVQmu9DodVTUgKIEKnIiXeyNDcWFLijCTFRJAQYyDoaCQnxXxcvgdJkvAHRHz+IF5/EK8viNPtx+b0AaBWKYjQqYjQq9FrVSf9b3GqcaC6rsP943gYGDBBSklJQavVsnHjRkaPHs2nn37KtGnTBsocmX5w+z20uTpod3di9dixee04fC6cfhcuvxtPwIs34MXj9+IJeHEHPKGl34P/AM4DkZoIovUWEoxxDE8cTGJXV1tyZALRestpU9lZHT7amtS46tJQ1pvR1+fT6axHEdlGm6mdzsgSiAxAAUQpDKQaU8mPyyQ/PpF0SzKJxnhUin2VUXFx03H7bgRBQKMOddcZu7ZJkoQvIOL2BHB5/FidPjodPpQKgUiDmsgIDTqN7Bl7vHEGdDTZOkkwWQbalOPKCf8n3Xrrrdx9990MGzaMv/71rzz88MM4nU4GDx7M9ddff6LNkemi022lvKOGamsdtbYGGuzNNDpasHsdvcoKCOjVIXdonUqLTqVFq9Ji0kWiU2nRq3To1DoMah0GtZ4ItYFIbQSRWiMmrRGLzoRaqT7un0mSJFx+Nx0eKzaPHbvPidPnxhPw4Au7e4uAhEJQoFKo0Cg16FVaIjSGkK16MzH6qIOORYmiRGO7k/I6K+V1VirqbZTXWWm37etui4/Sk5VsZtqIcWQlm8hKNhNr0VFra6CkrYyS1grKOqr4unwBX5WFOs+UgoJEY3yXV18MI9T5OLzOLtd0FUqF8riKtyAIaNVKtGollkgtoijh8vixu/aJk06jxGzUEmlQh215/vnn+eyzz7j22mu56aabjsqGF154AYC77rrrqD/PgaitrQ1HKT9UZs6cyX/+8x/WrVvHunXrjqN3nsCCbdu4dsrp/dB+QgRp/x94/zwphYWFfPTRRyfCBJn9kCSJBnsTO5r3UNyyl5LWclpc7eH90XoLSZHxjE8ZQbwxllhDNNF6MxadCZM2EoNGj0LoHXVKCvrxNlXha64i0N5AwF6D6HYgBkJdPoJShag1YI0wozLForYkoo5NQR2dhKA4si4JURJpcbZRZ2uk3t5Mo6OZFmcbLc52WlzteAPeAx4vIIBw8GjKJq2RRGOoFZcYkYA2GIXfbqSpOUhFfUiA3N5Qi1CpEEiNN1KUF0tOioWcFDNZKWaM+r5FODMqlcyoVGbnhtyjfQEftbZGam0N1NoaqLc10eRspaS1jLz0VJqc+7q6BUClUIUFSqVQoVaqUCvUqJUhwTqWKBQCRoMGo0FDMCh2CZOXpnYXbVaBqEgdpggNn332Ga+99hpZWVnH9Po/Zlbu2SsLkszpQSAYYEfzHjbUbWNL406anW1AyEOtICaHc/NnkB2VQYYlhQiN4ZDPG3TZcBavxlmyHk/1TqQu8UGhQmW0oNBHIqhDk0pFr4tARyMBpxXJuy8UiqDSoEnMRpeSjy5tELr0wSj1xl7XcvicVHbUUNlZR3VnHTW2emqtDXiDvnAZg1pPQkQsyZEJFCUOIkYfRZTejKmrdWbQGDCodGhUGlQKZVhYQwP9wZCrd8CDw+ui02OnqrWZypYmaq0t1De3Utq0BUm1n8eTT48hMo68kWkMSchnTGYumUnmo3IA0Kg0ZEenkx2d3mvfzl27SDUlERCDLK9cy/LqdSEXb6Twcn8EBBSCIuTu3eXaLnDwFtWMrElMz5pwwDKSJPLXp/5ASUkJra1tJKem8+Cjf+b1l5+lsbGRX/ziF/ztb3/jpptuYsiQIbS2tvLRRx/x+uuvM3/+fJRKJZMnT+a+++7rEcgU4LXXXuODDz4gKioKk8lEUVERAO+88w6fffYZbrcbQRB49tlnycnJYebMmVx00UWsWLECt9vNU089xdChQykuLubRRx/F4/FgNpv561//SmJiIq+++ipff/01wWCQKVOmcN999wGhcEG/+tWvKC0txWQy8Y9//IOoqKh+r3uiMCq9NDRCVWctGZbUgx9wiiIL0mmMKInsbC5hedU61tdtxelzoVVpGRZfwEWFsylKHERCROxBu3yCotTlZizS3ZAINFfg2vgF7j1rQQygjk4icsSZ6NIHoU3IQmWJP2CrJ+hxEmhvwNdag7epEm9dKdYNX2FdOx9JUOBJzqI5KZ0mk4maoIvKzlpaukQUQvN+0s1JzMqeTJo5mRRTEsmmBCI1EYfdheUPiDS2OalttlPT5KCm2U5NU2jd5w8CWgQhlcToAoqSIkmO1hIR5SKg6aDRXc/e9kpKXSspbVjJgjYDQ+LyGZpQQFFCIUmRCce0S00hCGhVGrSAXq1Dreh9C4thgRJD65JEUNoXiFSBAoVCgVJQ9NnSPVQ2b96MWq3mgw8+QBRFrr/+esp3b+L/7nuIDevW8Ps/PUN2Tg4dHR3cdtttjB8/nqVLl7J48WI+/vhjVCoVd911F++9914Pr9nt27czb948PvnkEwRB4IorrqCoqAiHw8HChQt5++230el0PPfcc/zvf//jkUceAUL5jj766CPefvttXnnlFV544QXuvfde7r33XmbMmMH//vc/3nrrLSZOnMiOHTv46KOPEASB++67j/nz5zN69Gja29u56aabKCoq4u677+arr75izpw5B7zuiSBbZ2W3LZt5O7/h/yb/9IRd90QjC9JpSKurncXlK1lSsYZWVzt6tY4xyUVMTBtNUeIgxKBAU5uL6ioXGzsqaLN56LR76XR4sTt9ONx+XJ4AHl8Ary9IUNz31B2jsHORYSMjNNV4JDVrvbms9+fR5opF16xCu8mFXrsHg66MCJ2aCL2aSIOGSIMao0GDKWLfy2xMRR2dgjU1m+qcAio7qqlqKaPG3oRdtEPnToQOidggpOksTE8eQ172WLJjMg866VSURGweO+1uK50eG802Ky02G+1OJ1anC7vLg8Ptx+H243QHkYIKpKAKAipMWiNJ5mhmZSWSlxRHRpKJ9IRIdNr+b5dWZzu7WkrZ0byHnU17WFe3BYBYQ3RYnIYmFGI5hpNlp2dNOGgrphtREvEGQq2/bgcUCQmloCBCY8CoiUB3mOGRxo4di8Vi4b///S/l5eVUVVUR9HtJjTeiVAgEgiI1TaExyGFdLZw1a9Zw/vnnh1NMXHrppXz66ac9BGndunVMnz6diIgIAM455xxEUcRoNPK3v/2NL7/8ksrKSpYvX86gQYPCx+2fE+m7776jvb2dlpYWZsyYARCedP/UU0+xbds25s6dC4RaRcnJyYwePZr4+Phwayw3N5eOjo6DXvdEkK1ppdhbyKqSPZyXX0Zh3IlrnZ1IZEE6TZAkieKWvXxVupgNdduQJImhCYWclXY2OncKNY0uPtti5x/Ni3vMa4HQuIDFqMVi1GKK0BBj1mPQqdBrVWg1StQqJWqlRGL9chJrFiIpFDQkn0ljwmR0aBjf5Srs8QXx+AK4vQFcngBN7S7sbh8unwsPDgSNG4XOhaB1I+icoZfGQ3cdKIhKNKKZCDLJVsYRrzST57WR5CjDXLMH5e5SxJWLqIwZhDN+GPaofDokL62eFjp8LXT627EHOnGLdrw4QTjA3A1JAK0AWglVVM9uLg9QAVR4YUN9BAm2WFLqE0kzJ5MVlUZ2VDpGbUSPY2IjopkWMZ5pmeMBaHK0sLWxmG1Nxayv28qSitUApJqSGBSXS0FsDvmx2YfUQj0WKAQFerUOvVoH+tDEXlfAHXbJt3kdqJWqrkgWRpSKg7ecFi1axPPPP8/111/P3Llz6ejoQJKkcDSIlDgjWkNo3KzVFiBRFUQUe/8mgUBPb0xBEHqUU6lU+Hw+GhoauO6667j22muZNm0asbGxFBcXh8vtnxMJQK3uOWbn9Xppbm4mGAxyww03hJ0tbDYbSqWSjo6OHrE0u3MrHey6J4IsQqk5dO40Xtv4Ln8+64ET4hh0opEF6RRHlEQ21G3jk+JvKGuvQqfUk6Ecga8xlS2bAqwLdAAd6DRK0hIiGZYbS3KckeTYCBKiDcRFGbAYtQeclR+wt9P8yd/x1BQTUTiRmLNuIivCTKfXRqfbRqfHhtVjw+q1d63bET023B4rQbcVAl72T7mmVeowq6OIUMSjk8yo/WYErwm/S4fLHcTh9tPo8VPhDbDUG4kojUCpGEx6ZCWxhgZUUiVtnVU0uVT49rNb8msQfBGoRTNGIRWjMhKT1kS0wUy8yUJSlJnkKDMpcWZMhn2J5URJxB8M4Pa7cfhd2DwOOj1WWl3tNDlaaXS0sKN5D8uq1oaPSTTGkR+bzaDYXIbE55NgjOshLAnGOGbnxjE7dxqiKFLRWcP2pt0Ut5Syono9C7rmIkVqIsiMSiPdnEKaOYkUUyJJkUfW9Xg4KBQKjJoIjJoIREnE6QuFR2pzddDhtoa9IQ/kFLF69WrOPfdcLr30Upqamli/fj0TJ07c7xoCCTEh4Q4ERGqa7YwYNYY3Xv8XV1xxBSqVinnz5jFhQs9W3sSJE7nnnnu466670Gg0LFiwgOnTp7N9+3YyMjK48cYb8fl8vPzyy0RH9x/9IjIyksTERFauXMnkyZP57LPPWLduHeeddx7PP/88l19+OVqtll/84hdccskljBs3rs/zHO51jwcmyUp6QiR48qm2fsb/tn3GDSN/ckJtOBHIgnSKIkoiq6s38v62L2l0NaEKGPHXDcHdnIxdoSY3NYJzJ0WTl2YhN81CUkzEYYWCCYpBGh0tVFZtYe+aebQJIs4Rw7EpPbQvfrJPd3AIjWtYtCYsehOZljRGJg0lWm8hPiKGuK7IBsaDVLa+gI/KzlrK2qsoa6+ivKOaensTjZJIIxChtpCssTDeFyC+vZmEznbi/EHM8VkYcoZhyB2FOikbp9+D1WvH7nXi9Lvw+DtoCDZTUx+K7B1y9VaiVWkxqPVEaiOw6Ewkxcb3WRF3O1Xsba+itK2CrQ27WFYZEql9XXODKEochEm7zylDoVCQE51BTnQGFw86G1EUqbbWU9JWTnlHNZUdNXxXtgz/fpOD9SodsYaoUBw+QxTReksosGswEm/AF3bIOBaipRAURGqNRGqNeANeOj1dDxleOxatCbPO1GeL6bLLLuPee+/lm2++QaPRMGLEiH5zFKUlGGloc5E7eCzjJxZz6aWXEggEmDp1Ktdee22PsoMGDeKGG27gJz/5CSaTieTkZAAmT57Mu+++y3nnnYdGo6GoqCic9rw/uvMd/eUvfyEqKoq//OUvxMfHs3v3bi6//HKCwSBTp07lkksuoa6urs9zHMl1jwfTiuJ4Z0E5s0fP4MuSRRTEZjMhbdQJt+N4IkgH83c9CamtrWXWrFksWrSoV0qL0x1RFPlqxzo+2f0FdqkN0R1BoD6HTEMho/ITGJEfR0FGNNrD8PIKikGqOmspaatgb3slVR211NmbekTFjlDpiDfGEW0IVYxRejMWXcgV3KIzYdZFYtZGojnM2HEun5vKzhoqOmqo6FrW2RoRuwKXmnUmcqLSyezqKsuOTidGHxXu1mmwN1NZt4Pq6q3UtdfQ4nPQqVJgUykIHmFlLQgC0ToLCcZYkk2JpJuTybCkkGVJQ6fe19aTJIl6exM7mvawozn0cvpcCAhkRqWGxakgNgfNQbpXRFGk2dlKvb2JenvIdb3V1R6KWO4OzaOSkLgz5xpSstNCdnanylCqUCtUqJVqNEo1GqWmx2TaI8EX9NPh7sThc6EUlEQbLEfdahNFiaZ2Fw63H4tRQ6xFf9pMgD4QxcXFRzzm1F3XvTk3n/TbXuTnL27hytl5FCu/pKKzht+d8UvyY7OPscUDh9xCOkWwOrzMW72JRXXf4Nc3I3kMpElTmV0wifGXJhIVqTv4SbqQJIk6WyObGnawvWk3e1rL8HTN1+mOWj3EEI9x2wqS9FEMveQBzNHJR2W/w+ekwd5MXdf8mhprA9XWOtpcHeEyFp2JrKh0xqYUdUXNzghHbfAEvFR21LKudgsVHTVUd4Ym8O4fDcISYSIhLokCEYwOB4b2ZiJcdiKCIgatEVNiNsakPAzJ+Wjj0pAUCgLBAJ6u/Eh2376I3i2uNprsLayu2RgO9SMgkGZOJj8mi0FxeQyJzyfFlEiKKZGz86YjiiLlHdVsbdzFtqbdfLFnIZ/t/g61QkVe1zGFcTnkRWdh0PSMv6dQKEiMjCcxMp6+nnkDYpBOj5X68joSjLEExCBBMYhfDBAQAzh8rrCIA6GWn1KDTq1Dr9KhUaoPq/LXKNUkGOMwB7y0uTpocbZh9zqIi4g5qLj2h0IhkBhjoNXqptPuQ5IgLurHIUrHglh9kKE5MSzbVM9ffvkzHl78V55c/k8eOeMesqLSBtq8Y4IsSCc5e2s7mbdsJ+valqGIq0ap1TA+6kxunnQeUcZDDyoqSRKlbRWsqtnI+rqtYRfqFFMi0zLHUxibS2FsDjGGKHxNFdS//QgqcxzJVz2O0nBwzzBPV8XV6mqnxdlGs7ON5q44dU2OVhy+fQnGVAoVKaZEBsXmkmZOJjMqlSxLWjjYaCAYoNpax8b6bextq6KsvZJae2N48qpZG0lmVCrnJJxBmjmZ1C6X7x8GWZUkiUBHA+7KHXhqivFU7yKweyMuwK3SoEnMQpuUQ1RSDolJuaiTMnu5qkuSRIfbSkVnDWVdXXWrajaysHwFEIroPSyhkOGJgxkSn09uTCa5MZlcOuQ83H4PxS2lbG/aw66WEj4u/hppV1ckcGM8GVGpZJhDcfqSIxOIj4jpt4WpUiiJNUTTomzCqInos0xQDOIL+vAG/XgDPrwBL06/O3y8Qa0nQmNAr9IdsgjoVFqSIxOw+5y0uzqotTZ0tY5NRyQkgiAQaw6JUIfNiyDwo2kpHS2i18WM0Wm88MEWGpsDPDz9Lh77/hkeX/Isj0y/m+zojIE28aiRu+xOQiRJYntZKx8sLGFH+1Y0GXsQVH4mp0zi5rGX9PLwOhBNjha+r1jN8sq1tLjaUSlUFCUOYnTSMEYmD+mVEiHg6KDu3/eDoCDlxj+jigzt9/g9NDpaaXK20ORo3a9LKSRCTp+rx3mUgoLYrjGjBGMcica4rmR2ScRHxITHaERRpN7eFB4vKmuvpLKzNtzyMWmN5ERnkhOd3tVll0GU7siDiwZsrXjqSvDW7sFTvxdfY3l4Mq+g1qFJyESbmI02KQdtUjbqmJReIiWKIpWdtexsLmFH8x52tZTiDXhRCgryYrIoShxMUUIhOdEZPcaiXH43e9sqKW2roLyjmqrO2vAE5W4sOhMxhihi9FHhrtHwS2fGUW+lsLAQhUKxX86j0C0s0DvKdyAYwBXw4PK7cfndSJKESqEMhXHSGFEpD/2ZNCAGw7+1TqUlPiLmiD29JEkKt5RizTqiTIfewj+VkCSJ3bt3H5Muu6IbH4b0UVz/2DfMHp/Bz+YW0exo5fffP4Pd5+T/Jt3WI/L8qYgsSCcZu6va+c+XxeyoqcGQuwvR2EJOVCY/H3fNIc/QFkWRDfXb+HbvErY37UEQBIoSBjElfSxjU4f3m65BEoPU/Pd3VLdW4ppxOXWiJ5QEz95Ih9vao6xBrSfOEE1MRDSx+tDge6whmtiIKOIMMUTrLSh+MBDuCXiptYZyB1V21nZFXagNR1rQqrRkR6WTE51BbnQmudEZxEXEHNenZ0kM4m+tw9tYjrexDG9DOb6mCiR/qAtTUGtDApWShy6lAG1qASpjVI9zBIIB9rSVh7rqGoup6KhBQkKv0jEoLpfB8XkUxuaSFZXWqwL3+D3U2ZuotzXR7GylxdlOg72FVkcHNp8dr9jTRf/y1HMoTM5HZ4wAlCAqQFKAqETqWlcoQKlQoFKGch2pVUq0agUajQJf0Ivd58TldyMQSmBo0ZsPuRtOkiQcPhetrnYkJGIN0Uc8tiRJoTElu8tPcmwEEf2EVjpVkSSJtrY27Hb7EYdQ2l+Qhl71f0QWzeCp/6xn295W3vrd2aiUCtpdnfx5+T+osdbz09FXcmbO1GP8SU4ccpfdSUJLh5s3vtjJ8i21RKY2EzlyJwoFXDP8CmbnTjukGfWegJfF5Sv5qmQxzc42YgxRXD70QmZkTSTGENXnMaFupb3sailhR9laqlVWAsmRsOdrtCotaaYkihIGhWK4GeNJNMYSb4ztt9tIkiTsXgel7RXU25qoszdSa2ukztpAs7Mt/DSvV+nIsKQwM3syWVFp5ERnkBKZ2EvEDgdPwEurqz3sumzzOnD6XLj9HnxBH4GuaAUKQYFGoUan1mLURGDSGomKiyUuoyD01K9Q4m+r7xKoMrz1e7Gu/wrrmvkAqKOT0WUMQZ9VhD5zGCp9JEPi8xkSn8/VRRdj8zrY0bSbHU2h1tOmhh0AKBVKMswpZEalkRaZjE6KwufQ0dEGdS0KalsMNLSKuL2R+z6UIojBGMBkEdFFBNlQY0VHExatDoRQNIb9wwUJKFCgROgSK1Gkx8RmpSIU0VutEgjgoy5QiyRJ6FRaItSGQ/7+g6KI3eegNliNVqXBqIk4oqgP3XmgGmolok3aQ5r/dCqh0+mO2UOz2BVua8aYNFZsrWfT7mbGDUkk2mDh8Zm/5tnVr/Hqhv+xt62Sm0dfecRjfQOJLEgDTFCU+Hx5Ge98sxsJH7mTq6jzlzAoNpdfjLuBeGPsQc/hCXj5tnQp8/cswO51UBCbw7XD5zI2ZXif7sv19ibW125lU8N2SlrLCUoiKkFJitvDFH0cKYXnEqNORC+Y8AdCidzwA53Q5lBgUznwCy24JSsO0UqHt51mZyuNjmaaHK24usYtIDRelBQZT050BtOzJpBmTibDnEK8MfaIw9aEPPNqqbbWUd2VxrzB3kSnx9arbPeEUI1SjUro6iaUJHyiH08/KTLiDNGkmpPJtKSSM3g0uVMvJVkdgbepAk/1LjzVu3DsWol98wIQFOhSCzDkjyNi0ATU5nhMWiOT0scwKX0MAFWtLazcu4Pi5nIa2uqpaF2PpNwXf08SFSiJQJ8QSXKamRiDhURzDKmWGNJj4kg0R2PWmfr0nJMkCavHRrW1nsrOGva2VbGntYwOT6hFm25OYWzyCNK1hbQ0CWwva2VraT1ubxCzUcPUMbFIcWUsq1iJUqHkJ4PP4/yCWYfkpSeKIvP3LOD97e9i1pm4c/wNDE0oPLQfcT8a25zc8/clZCaZ+NMdU1DKmWr7RPSEBGlUQTymCA2LN9YwbkgiEJpu8cCUO/hg5+d8vOsbKjpquGfizSSbEgfS5MNG7rIbQOpbHPz93U3sqepg6BA1ttjVtHnauXzoBVxcePZBn1YDYpCFZcuZt+trrB4bwxMHc+ngcymMy+1VttnZxoqqdaysWk+NLTTr26KKI8KfjNgZxcVt3xMlOviz9SJcUtekUUFE0DlR6B0IekdoqXMi6FwIin0eXZIooAgY0EkmIlUW4gyxpEclUpiYzrD0NIx6bS97DhV/0E9FRw2lXS7p5e3VNDiaw/sj1HpSTUkkmRJINMYRHxFDjCGKKJ0Zky7yoAP43oAPm9dOm6uTVlcbjY5W6m2NVFnrqLc1dqWnCIlUYVxoEuzQ+ALiDFF46/fiKtuEq2QDvuZKAJRJ+XTEj2aXkEtpg4fyuk7abfsijsda9GQmR5IYr8Rg8aDUu/EKNto87bQ622lzd4ZdvPdHQMCsiyTGEEVcREzXmFwCqaYk0szJPdJjdHtRbm7Yyfq6LexuLQNgWEIB5+bNZFj8YLaWtLJwfTVrdzSgUCiYPiEKZ/RWtjbtIMOcwu3jrjvkQfLy9iqeW/NvGuzNnJ8/i6uGXXTY7v+LN1TzzLubue3iYVw49fRxYz5awl12lw8jf/oFxJx5IwCvfLyNb9dW8Z/HzukVRX5j/XZeXPsm/qCfa4fPPeQelpMBWZAGiO831vDPj7aiUiqYdZaapS1fYFDr+eWkWxgUl3fQ4zfV7+CtLR/SYG9mSHw+Vw67iILYnvGtAsEA6+q28vWepexpD03kU7qjcTfHI3YkIPn0REVqmWkqZ6p7EWszzqc5Lgar1ESrr5FWT3M4KKeAQIw+hhhdLFGaaIxKC1rJjDIQgd+lpdPuo7XTTVO7i5YOF/v1EoXzAOWkmMlJs5CfFoUlsm+Rsnkd7GktC71ayijrqA7Ph4rWW8iNziQ7Op1MSyoZltTjmszPF/RT2SWGe1rLKW4pDadUj4+IYXBsATHKNALWaNoqGzA0bGawVEKi0opHUlGsHERL8mQSM7PJSTWTlWTCaDh4Rd3t4h2KgmGlw22jw9NJu6uT1i4X7GZXG0Gx67cRBFJNSRTE5jA0Pp9hCYVE7jcxt9XZztLKNSwsW0Gbu4NUUxI/GXIeE9JG0drh4YNFJSxYV41Rr+asszSsbl+AzWvn0iHnc8mgsw8phYUn4OWdrR/z3d5lJEcmcMe46w9rfowkSfzu1dXsqe7glQfP7Pf/8WOju677z7XjyB45kbgL7gCgpLqDXz+3jDsvG8HZE3o/OLS7O3l53dtsadxFUcIgbh93Xb/d9icTsiCdYAJBkdc/28EXKysYnB3NsImdzC/9ioKYbH49+baw63N/tLk6+Pem91lft5WkyHiuH/ETRiUN7VEpO3xOPtq6kMUVy/BILkSvnmBLChGeLIamplGQEUVumgWLRWRP207WrnqXMp0KhxD6KxjUenKiM8iKSg+7JaeYEg7Zo8ofEGlqd4YiZzfZqWywUVFvpa7FEY4WHh9toCDDQkqKgMrUSXuwgZLWcursjUCoqy87Kp382GwKYrPJi84i2mA5/C/8GNE9AL+qZA+baoupdlbgVjchqAJIEqh8FuJUaQyKzWOiyUBCw3rce1ZDMEjE4ElETbkMTdyxmysSFIM0OVuptTZ0ddVVsqetHLffg4BAYVwOE9NGMyl9TDhqRFAMsrpmI5/s+oYaWwPZUencOPJyCuNyqGqw8cIHW9hT3cGZE5OQkrezqmYDhbE53D3x5l7emP2xrbGYl9a/Tburk3PyzuDKYReF4ucdAjVNdu786/ecNzGTn80tOuLv5nSiu65755ZppOcUkHDpvUDo/3j7U4uwROp48hdT+jxWkiQWlC3n7S3zUCqUXDnsIs7KmXrMc2QdS2RBOoG4PH6e+s8GNu1p5qKpWUgp21lYvoIpGeO4fey1B6zwJUliUflK3t4yj6AU5CdDzueC/Fk93HbbnFZeWfEpW9s3ICkCBK2xJElDmJ47krGDk8hIjKTJ0cKqmo2sq91CeUc1AKZAkKFJQxiWMZqCuBySIxOOSxO/3WFnZWkxW+tLqbJWYZWaQNU1lhJQEyHFk2XKZHT6IKYVDiFSN3CuwMGgSEW9jV0VbRRXtlNc2U5bV1BavVZJXloUBRkWTHEunKpGSjpKKWkrJygGEQSBTEsqeaYUUtrbiN6zmRi3B3PRGURNvxpV5PF5UhVFkbKOKjY37GBtzWZqbA2oFCompo3i/PxZ4fxKoiiyono97277jDZ3BzOzJ3Pt8EvQK/W8/XUx877fy5hBCUybAW9seQ+VQsWd429kVPLQQ7LD5Xfz7rbP+G7vMqL0Zm4Y+RMmpI46pJbsix9uYdH6Gl5/+CyiT1NX8MOhu6773+3nkBwfTdLVvwvve3/BHt75ZjevP3QW8dH95zBrtDfz6ob/saN5D2nmZG4aeTlDEwpOhPmHjSxIJwib08fv/rWa8jort186lGJxMatrNnLxoLO5aticA96sVo+Nl9a/w6b67QyNL+BnY68hwRi3b7/TyXPfz2OHbT2SIoDGmcaMtDOYM3YkcVF63H4PK6rW833FKva2VwKQF5PFmITBJH7/EZkJeSRd8dAx/bwev4fKzjoqOqop66iivL2aOltjeGwkOTKB/Jhskgyp4Iiivk6guKKd6iZ7qMWhFMhNtTAoK4aCjCgKM6KIMR/aRGBvwIfVa+/ysHPjFwOIktgVakcV8ijTGDBrI9GrQ2NMHXYPJVUd7KnuYE9VByXVHXh8oS6xuCg9gzKiGZwVzaCsGDKSTH0OvHsCXkpayylu2cvu1r3sbasMu7SrUZDg8REfEElPHUpG4WQSjPHERURj0kYel27Hqs5aFpWvZGnFGtwBDyMSB3PlsDlhYfIEvHy080u+2LMIi87EHeOupyhxEF+vquCf87YxqSiJ6y5O57k1r1PVWcvcwedw+ZALD9kTr6S1nNc2vktlZy1D4vO5YcRlZEYd+H6tb3Xw8ycXccWZBVxzzuE7SJxudNd1795zCQk6iZSbnwrva2xzcuufFnLTBUOYO6P3uPH+SJLEurot/GfzR7S42pmQNorrh19KbMSJDRJ7MGRBOgE43H4eemklNU127r9+NCs7v2Bt7WauHX4JFxXOPuCxxS2lPLvqdRw+J9cMv4Rz8s4It14CgSAvL/mWZY0LQO3B6EvnimEXMnv4EARBoN7exFcli1lWuRZPwEuaOZnpmROYlD6aWEM01nVf0LbgDZJv/DO6lPwj+mzdKcSrrfVUd9ZRZa2jqqOWRkdLWHzMOlMouGhUOnkxWeRGZ/Y7udfh8rGrop2d5aGWSWlNJ4FgyLEgxqwjJ8VCVrKJtEQjmkgXLtppcjVRb2+iydFKq7MtHJ3gUFBIKiSfnoBLj+iOQPBEkmRMYmhKJoMzYxmcFUNc1KFHxNifoBikztYYCqDaWUt1awU1bdVYhWCPcmqFiii9uWsirCW8HmOwEKMPOTFE6c1H5ZX4XdkyPt+9ALvPyRmZE7lm+MXhnFJl7VW8uPZN6myNXFR4FlcOm8MXyyt4ff5Orjt3EBefkcnrm97n+4pVDEso5J4JN2PSRR7kqiFEUWRh+Qre3z4fh8/FjKyJXD7sQqL1ln6Peexfq6lssPH6w7N/9B533XXd+/dfTYyvlbTbX+ix/5fPLEGpEPjbPdMP6Xy+gI/5exbwSfG3CMDFg87mooKzDtsJ5XghC9JxxusP8ugrqyip7uChm8ay1vYdSyvXcP2In3BBwawDHvtN6RLe2vwh8RGx/GrSrT2eLteVlvP8qv/g0zWh8Udz3fCfcPawkUDoyXjezq9ZW7sZpULJlPSxzM6dRk50RvhJXBKD1PzzTlSmGJKv/+MhfRarx0ZVZx011nqqrfXUWOupsTXgDezzIkuIiCXDkkpmVCqZllBA1Cj9kUdW8AeClNVZ2VJRw7b6Emqd1bgUrQgG2z5PP0lAGTCilUwYFJHoBCMaQY9S1CIGlXi94HIHsDq8uHxeUAYRlH4UGh9GcxCd0Y+kduAQO8NOHBqlumsMK4fC2BwK43L6nXt1OEiSRNv2JZQueYs2gviHTsYRHUeH20q7uzO83D8tO4REK9EYR4o5iQxzCjnRGeTFZB1WunmXz83Hxd/wZcki9CodN468jKkZ4xAEAV/Ax5tbPmJh2XIKYnP45cRbeH1eGau21fPMr6aTlWxmcflKXt/4HiZtJL+a9NPDclpw+Jx8vPNrvt67BJWg5IKCM7mo8Kw+x5eWba7l6Xc28uc7JjM05+DTHk5nuuu6Dx+5BXPrbjJ++e8e+z9cVMJ/vio+aLfdD2lxtvH21o9ZU7OJOEM014/8CeNSRgx4CCdZkI4jkiTxt/9uYunmWu6/bgxVwjrm7/6Oy4acz2VDL+j3OFEUeXPLh3xTuoRRycO4e/xN4WCcgaDI0199yib7YgQEzkg+k59NvQClUkmzo5X/bf+MVdUb0Kt1nJN7Bufmz+gzS6mrdCONH/yJ+Ln3Yhw0sdf+dlcne9srKWuvCkfj3n+eT6TWGHZ4SDMnk9710h3iAPbB6PTYwlG0dzWX0OhoAUJCkWVJJ06bhEGMQXKbcNu02BwBbE4fTo8ff0AkKEooBQGtRoleqyLSoCHarCPOoicpNoKUOCOp8UY0+0VFD4pBGuzNVHTUUNZeSWl7JeUd1aFxIQTSLSkMictjcHw+g+PzjkqgAvYOWj5/HnfFNoxFZxB77s9QdD2lSpKE2++h3d1Jq6udZmcbTY4W6u1N1FobaHK2AoSjio9MGsK4lJFkRaUdUoVSa2vglXXvsKetnAlpo/jZmGvCwraiaj2vbPgvepWWn4+6mb/9q5ysZBN//PlkACo6avj7yldpdbVz7fC5nJc/87AqsUZHC//b9ilrajZh0hq5dPB5nJUztcdYqMvj5+pHvubi6TnceMGQQz736Uh3XTfvj3cSUbaSrAff67G/odXJbX9eyK1zhnLRtMPPIruzuYQ3Nn1AtbWOYQkF3DjyctLMRxdI+WiQBek4Mn9ZGf/6bAfXnltIfHYbL61/m9k507hl9JX93sQBMciLa95gVc1Gzs+fxXXD54b77Fttdh747J/YNZWYxCQenv0zMmMS8AV8fFL8LfN3f4cgCJyfP4sLC888YIXZ+OGTeOtKSb/rFVAoQ0nomvaws7mE3a1ltLtDUbgVKIg3xJNmSiE7Oo3c2HQyo1IOmkL8cPEEvOxu2cu2xmK2Ne2m2hrKTWNQ6xkcl8eguDwGxeWSGZV21KkVDgdfwMfe9ip2tZSyq7mEPW3l+IN+BAQyLCkh2+LzKIjNOez05JIk0rHsAzpXfIg2JZ+EnzyAymg56HEuv5vy9iqKW/ayvWk3JW0ViJJIcmQCM7MnMTN78kHFct+k1vnEGqL5v8m3hSNGV3fW8fTKV2hzdTDGOIvvFwo8fddUCjND4w1On4t/rPsPG+q2MjZlOLePu+6wxXlvWyX/3fYJO5tLSDTGcXXRxYxPHRm+L+5/YTmSJPH03dMO67ynG9113cd/uQ/9jq/JeuA9BFVP56efP7mQpFgjv/vpoaWz/yFBMciCsuW8v+Nz3H4P5+RO57KhFxxW6/tYIQvScaKqwcYvn1nKqIJ4rro4gUcX/41Bcbn8dtqd/bpdBsQgz61+vc/xpd31tfx+0QsE1DbGRE3jvtlXoBAU7G4p46X1/6HB3syU9LFcO3zuQd2jg04r5c/fSvOIKawzWNjesgtHsCtWnV9LwBaF6LAgOixIrkiQ9tmrUgrERRlIiTOSlWyiID2KIdkxhzS/Zn+6UzVsayruSoFRTkAMoFaoKIjNoShxEEPjC8iOSj+qcELHGn/Qz972SnY2l7CzuYSStopwYr0EYxx50ZnkRGeQHZ1Ohjm1V5qJvnDuXkPzZ8+hjIwm6apHUEcd3ux6u9fButotLK1cw+7WMrRKDWflTuPiwtkHHespaS3nmVWvYfc5uGPc9eHoEg6vk2dW/4vtTXugOZvxMTP49dVjwsdJksSXJYv479ZPiNZbuGfiLYedl0eSJLY07uSdLR9TY2tgcFweN468nMyoVP716Xa+WVPFh386/7ASS55udNd1nz77CNpNn5Dxy3+jjOg5NeSf87by/YYa3v3jeaiUR36v2LwO3t8+n4VlKzBqI7h62BxmZE06ofefLEjHgaAocd/zy2jucPH0PZP406q/EpCC/GX2b3tMWNwfURJ5ce1brKhaxw0jfsL5+40vbaou4anl/0RC5OpBV3PxqAmIoshHu75k3q6viTVE87Mx11CUePCIwhUdNXy69B22OytxqBRIogLRGoPel0x6RBaZ0UnEWgyYIjTotSqUSgFRlPD4gjhcPtptHpraXdQ2O6husiOKEoIA+elRTByaxPRRqcRaelfCoiRSY63vipBdwq7mknCIoQxLKkUJhRQlDmJQbO5RD7D6gn46PTZsHjvugAdf0B/2stMo1ejVulBQUZ3pkOfI9EcgGKC8o5rdrXspaQ1Fk2h3d4b3xxqiSTMnkRSZQHJXPMD4iBhiDdE9uqk8dSU0vv8EglJD0rWPoYlJOSJ7Kjtq+WLPQpZXr0On0nLZkPM5N2/GAeeedHps/H3lq+xuLePyoRdy6eBzEQSBgBjkjU3vh9Ktdybw+vUPEKnv+duWtlXw3OrXaXV1cMXQC5kzaPZhO18ExSCLy1fx3o75OHxOzs6dTqx7BP/6eDevP3wW8VEn/kn9ZKG7rpv/0p9Rr/4vqT9/AU1Mzy61lVvrefI/6/nr3VMpyDh6r7mKjhre2PQ+u1vLyI5K56ZRl/eadH+8kAXpOPDtmipe/HALv75mNMWB71lSuZrHZ/76gD/qf7d+wme7v+PKYRcxd/C54e2b63bz5LJ/IPnV3D3uZ0wpLMDudfDs6tfZ3rSb6ZkTuHnUFQesWEVRZE3tJt7f8i0N7loUIuQ4g4i6s5hRMJrR+UmH7FK9P15/kJLqDraVtrJhdxN7azoRhFCsrQumZhAZ42ZPWzm7W/ZS3Lo3nKIiISKWoQmFDE0IheE50u6/7lTn3V5sddYGGh0t4WgKh4JBrSc+IoakyATSzElkWEK5mWIMUUc8wNvptlLeUUNVZ23Y8aPB3oRvvxTlAgIWvYlYQzRxhmhiI2KIFgWUaz4nNigw5KrH0cUceV9+ra2Bt7fMY3PDTrKj0rlrwk2kHCCumT/o55X1/2VZ1VpmZk/m1tFXoVQokSSJV5Z/xqL6b0mOSOH3Z97Va/K2y+fm1Q3/ZVXNRobGF3DnhBsP6EXXHw6vk/d2zGfB3uVEqI207cjnz9ddwuCsmMM+1+lCd133xevPolz6Gsk3PYUuuaeLd1O7i58+sYA7Li3i3ElHFlX8h0iSxMrqDbyz9WPa3Z1MyxjPNcMvIeogE/ePFlmQjjE+f5Db/ryQWIue6y6P44mlzzOncDbXDL+k32NWVK3n+TX/5sycqdw6+qpwRbintZzfLXyGgEfLXaN/zvRhuTQ5WvjT0hdpcbXz09FXMTN7Ur/nFSWRlVUbeHfb57S6WxE9BizOLO6xLSN+9AUknHX9MfnMoiTS5GhlQ9UeVpTupNJajajtRFDsS0ZXGJfLoK5YcHERR1bBePweilv3sqNpD8Ute6noqA7HmovURJBqTibJGNflJm3BpDViUOvRqjQoBAWiJOIP+nH5PTh8Tjrc1i6ngdau9A/7opGbtEZyozPJj82mMDaH3OjMo2q5iZJIh9tKk6OVJkcLLa5Q7LruNOWtro4eKeOVUmiuVmZMKHNuYWwOmZa0w+o+kSSJNbWbeG3je/gCPm4dczXTMscfsPz7O+bz8a5vGJcygnsm3oxaqcbl8XPNX99Al7edaIOJ30y7k1RzUq9jv69YzRub3kejVPOL8TcwKnnY4X9RdLW6Vr5Js7uZ4dGjuW/G9SeNW/KJpruu+/LtV1AseIHEqx7FkD28RxlJkrj6ka+ZPDyZOy8bcUyv7/F7+HT3t8zfvRCVQsllQy7g3PwZx20cV472fYxZtL6aNquHu68czr83vUSiMe6AHnV1tkZeWf8OhbE53DzqirAY1dub+OP3LxLwargo5WqmD8ul1tbA498/S0AM8ugZv6Qwrv8WV0lrOa9vei+Um8cVibptDDdMmcnEyHpaP/0ec+G4I/p8oiTS6GihoqOa8vZqyjuqqeioCXe/aZRq8tPSUXvzKNkN1uYIskfkcf3MoYed70aSJKo6a9ncsJMtjbvCkRBUChV5MZlcWHhWV96kzKNyLe/GE/BS3VnX5WUXyg67f+qInKgMBsXlMiguj4LY7MMa9FUIilDiPUMUg+N7xyoUJZFOt41mZys1NTso3TCf5mArOwJulletA0K5i0YkDmZS+mhGJA09aKUgCAIT00ZTEJvD86v/zYtr36TaWs/VRXP67FYTBIErh83BpI3kzc0f8pcVL3Hv5J9j0GlI0eZidKbQplvGw4ue5v4pt/f4HIIgMDN7EgWx2Ty7+nWeXP5PLsifxdXDLznsyisvJotfjb6Hez/8F1vZyMOLmrh/yu0n3STOE4lCE+oBEX+QCBNC331GkomapkPvGThUdGodVw6bwxlZk3hz0we8vXUeSyvX8NPRVx2w/jlSZEE6hkiSxBcrK8hNNdNEMQ32Zh6ceke/eUmCYpAX176JRqnml5N+Gr5xXT43Ty79J15fkBTHbK6ZNZJGRwuPf/8sAI/P/HWvJ9RuvAEf/9v2KV+Xfo+WCHxlRYyIH8Gvfj4Ks1FLy5ffoNAa0KYcPICrJEm0uToo6Yq0XdZeRWVHDe5AKISOWqEi3ZLCpPQx5EZnkB2VQZo5KTxe4Z4V4P0Fe/hkyV62lbXymxvGkptqOeA1nT4X25t2s6lhB1sadoZdzTMtqZyfP4uihEIKYnN6RLc+VuhUWvJjs3sMztu9DkraKkLdji17+aJkEZ/t/g4BgTRzMoWxORTE5pAXk0mCMe6IRVEhKIg2WIg2WCiMy2VyZBqNHz6JIX8sqgvuZ3drGVsbi9lUv50V1esx60zMzpnKufkzDurhFq238PAZ9/DGpveZv/s7Oj1Wbh97Xb/jSuflz0Sv0vHy+nd4cvk/eHDqL8hMMrOzIsBfrrifPy17kT8ufZ67J9zEhLRRPY5NMSXyxJn38/aWeXxRsojStgp+NfnWw+7CUylUBGoKuWTMeBY1f8ZvFjzJb6bdGY4y8WNDodEhApK370nfCdEGtpW2HLfrJxrjeGDqHayv28obmz/g0cV/ZWbWJK4efkk4VuKxQBakY0hZrZXqRjs/u3QQH+96jSHx+YxM6j/+15cliyhrr+KXE38avmElSeLlDe/Q5GzBWzqWO2+ZhNPv5ImlLxAUg/z+AGJUZ2vkbytfpdbWQLZ2BDtXxnLBxDx+evGw8Ix3d9UOdOlDeqXl7qbZ0cq2pt3saN7DnpYy2rrcv9UKFZmWVKZmjiM7KoPsqHRSzUkHfPrVa1XceMEQJgxN4qm3N/DAiyt44PoxjBu8bywjKAYpa69iW1MxWxt2UdJegSRJRKj1FCUOZmTSEIYnDj7ufdf9Eak1Mjp5GKO7up+8AR+lbRXsbt3L7pYyllWt5buyZUCoBZMTHcp4m2lJI8OSSkJE7BF5KRnyRhM963raF75JVFIuUybPZUrGOAJikK2Nu1hQtpwPd37JFyWL+Mng8zkv/8COCyqFkp+OvooovYUPdnyOKEncOf6Gfh0QZmRPQqVQ8eK6N3lq+T/JTTiLpZvdRKrM/GHmvTy14iWeWfUat465qleGUo1SzS2jr2RQXB4vrX+bB7/7M/dN+Tl5MYc+vuELhCYoF1gKmFl0P39a+iK/X/IMD0+/+7DOc7rQLUiiz9Pn/oRoA202D/6AiFp1fLziBEFgXOoIihIK+WjX13y5ZyEb67dz29hrGJsy/OAnOARkQTqGrNhah1IhEDTXYK2x8+uht/X7xNzpsfHRzq8YlTyMifs9Za6oWs+amk0omwYxKnUQOSlmnlj2PO2uDn4341f9itG2xmL+tvJV1EoVV+Vcz7/fbWbmmDRuu2RY2IaAvYNARyOm0WeHjwt1i9WxqmYD6+u2UmcLRduO0pkZFJ9HYWwOeTFZZJhTeniFHQ6FmdH8/ZfTePz1tfzpzTXceFkqisgOdjWXUNyyF3cgFKE6OyqdSwadw4jEIeTFZJ6UUYm1Kg1DEwrCwSmDYpBaW0NXvqYqytqr+LT4O8SusS21Uk1aV86iVFMSKaZEUk2JxB+CUJnHXYC3vpSOpe+iTx+ELm0QKoUyLJBVnbX8b9tnvL11HquqN3DPxJtJjIzv93yCIPCTIeehEATe2z4fo8bAzaOu6Lf81MxxSEi8uPZNnEYJyKShzUlWspmHp9/N31f9i1c3/A9f0M95+TN7HT8pfTSppkT+suIlHvv+GX458ZZDrrhc7tB4WoReTaoplj/MupfHvn+GPy19gT+eef8BHTRORwR1d5dd3y0ks1GLJIHT7T/uqTt0ah3XDr+EaRnj+Mfat3h6xctMyxzPzSOvOKRpDgdCFqRjyMbdzQzOjub7qoXkRmf2mSivm492fok/6OeGET8JC4bD6+TNLR+SpE+hvCqd83+axae7v2V70x5+Pva6fud5rKnZxHOrXyfFlMT9k2/n4Rc3kxIXwR0/Gd5DEL11ewDQpRbi8XtYUrmGRWUrqLLWoRAUDInP48zsKQxPGkxKZOIxCSNi8zrY21ZJSVs5pmFlaBPK+V95qLJJioxnSsbYUAUfX9CvS/yR4Al4aXa00ubuwOoJBVr1Bf1ISCgFZTjtdpTeTKwhihhD9BEN1CoVSjK6cjN1txR8QT811vpwmKUaaz3bGotZWrkmfJxaoSLVnESWJY3s6HRyozPJsKT2EGFBEIg77+d4G8po/vRZUm/9Owrdvu65DEsqv5n2C9bUbOKVDf/lwQVP9hrb6YtLBp2Dw+vki5JFpEQmcnZe/3HQpmWOx+V38+9N76POdFHXPI6sZDNalYb7Jv+MZ9e8zpubP0QhKDgn74xex6dbUvjTmQ/w5PJ/8reVr3Ln+BuZkjH2oN9rpyMUjsoUEeqajTFE8cgZ9/DbBU/y9IqXefKsB49ZVJBTAUGpAoUqnMb8h+g0of+NxxcATkwuqXRLCk+ceT/zdn3NJ8XfUNpawa8n30a65cimLIAsSMcMp9tPVaONM2caWGFv4s7xN/Zbtt3dyeLyVczInkzSfk+0H+36CofPSZ50Dk06D7GJAf628EsmpY1mRlbv8D4Amxt28Nzq18mJzuS30+5kU3E7Da1OfnvjOLTqnhWst6EMr1LJ5+17+Grtyzj9brKi0vjp6CuZkDb6qPuCXX43lR01lLWHInyXtVWGw9woBAUZ5hTOyJrImrVeJHs0j//yHMzGo795XD43e9sr9wt1VEuLs+2wzqFUKEmNTCSrSxwKYrNJMycfUUBTjVIdCib7g4yrTp+LOlsjtbZGam0NVHfWsb5uK4srVgGhMayihEGMSx3BmJQiDGo9Cq2B+Dn3UP/WQ7QtfJO4C37R63oT0kaRHZ3Bn5e9yBNLn+eh6XcxOL7/YLmCIHDt8LnU25t4c8uH5ERnkBuT2W/5c/LOoMXRyed8y5KaZUwZcRUAKqWKX078KX9f9S/+vel9jJqIPsXGpIvk0TPu4cnl/+SFtW+gU2kYc5CWUoc91DW1fwqK+IgYfjXpVh7//lne2foJPx1z1QHPcbqh0OqQ+umy02lDVbnbG+hz//FCpVRxxbALKUos5JlVr/HQwr9w+7jrmZQ++sjOd4zt+9FSXm9FksCqKkev0jEhdWS/ZReWLScoBrmo8KzwtnZ3Jwv2LuOMzIls+x6GZMfy9taP0Km0Pbzv9qfGWs/fV71GujmF306/E4Naz7LNdUSbdIwf0rNLQ5IkVjTt5LOMGOy7vmJMchEXDzr7sGfXd+P2e0KpJbrEp6Kjmgb7vtTisYZosqPTmZUzhfyYLLKjM9CpQuJzdpqVXz+3jH98tJXf3DD2sFpioiTSaG+mtCsh3Z7WMmqtDWF37SRjPHnRmczMmkRiZByxhmgsOhMRGgMapQYFAkFJxB3w4PA66fBYaXG202Bvoqqzlo3121lSsRoIjQkNTxzEqKRhDE8afNSCHaEx9HKakCSJFlc7e9sq2NFcwqb67ayr24JWqeHMnKnMKTwLS0o+lolz6Fz1Ccah09Bn9nanjo+I4fGZv+bRxX/jLyte5snZvyFxvxQlP0ShUHDnhBu579sneGHtGzw9+6EDulZfM+Iivtq4nW3ScopbxoSzGqsUSn458RaeWPoCL637D4nGuD7FTafW8eDUO/j9kmd5bvW/eeLM+w/4JN3a6UGjVvbyzBwSn885eWfwTekSZudOO6qn8VMNhcbQb5edXhOqyj3eYJ/7jzeD4vJ4avZv+fvKV3lu9es4fA5m5x5aBPL9kQXpGFHf4gQkKhyljE4p6vfmFkWRReUrGZE0uEeF8VXJ9wSkIBcVzOabD9eSPzjI6qbd3Djysj7Dv/gCPv6+8l/oVFoemHoHBnWo73ZXRRtjBiX0CLdi9zp4ad3bbBA6yFTo+M2sew74RPxDJEmi3t7E7pa97GkrZ29bZY/cRjGGKLKj0pmWMZ7s6HSyo9IPONk1O8XMdecW8sYXu1i5rZ4pw/uuVDwBL/W2RmqsDVRZQ7mV9ncx16t05MdmMTFtNPkxWeREZxySK7aK0FiQRWfqcz5Nk7OVPS1lbG/ezdaGXays3oBCUDA8cRBT0scxNqXomHUXCYJAfEQM8RExTEofgyiJlLZVsKBsOV+Xfs/i8pX8dPRVTJ5yGY7i1bR+/Sqpt/0doQ/PzUitkd9Mu5MHvn2CF9e8yeOzfn3AFp5RE8Ed467nD0ue49Pd33L50Av7LasQFOSI0ykLfs7za97g7+c8Gp6MrVGquXfybTz43Z95ZtW/ePqch8P/x/3RqXU8MOV27vvuTzy35t88ddZv+h2XbOl0EWfR9/mwctmQ81lSsZpPir/hnom39Gvz6YZCq0Psx8tO26PLbmCI0pt55Ix7+Pvq10Jz34J+Lig487DOIQvSMaLd6kaIsOLwOxl1AM+6nS0ldLit3DTy8vC2QDDA9+UrGZsyHK1kQhQlKoObiNKbe3kwdfPBzi+oszfy8PS7w7HrPL4AVoePlLh9T/K1tgaeWvZP2twdnN9i54LhM4k5BDFy+JxsadjJpoadbG/ajbXL/TpSE0FeTBaT0keHYrYdRHz6Y860HJZuruPV+ZuITvBi83fS7Gyl0dFKk6OZenszba6OcHm1QkW6eZ+LeW50JqmmpGMeZ0sQBBKNcSQa45ieNQFREilvr2Zd3RZWVK3nhbVvoFfrmJU9hXPyziD+CCf59odCUFDQ5Up+6eDzeHn927yw9g06hs/lzNm30Pj+E1jXf4Vlwpw+j4+PiOGGkZfxz3X/YVX1xoOO1wxLKGRS2mjm717A7NzpBwwQm5MUw65Nw2gvXMOHO77g+pE/Ce+L1Bq5Z+ItPLL4r7y3bT43j+7bWcKiN/OzMdfwlxUv8XXpEi4s7LvCau5wE99PHiqjNoIzsiayoGw5Lr+7T/E7HRE0+v5bSF1ddgMpSAAalYZ7J/+M59f8m/9smUdcRAzjD9Bb9ENkQTpGONx+dNGdABQl9J/pcn3dVtRKdQ938K1Nxdh9TmZmTcLtDSDoHDR4q7hq2Jw+5zDV25v4cs8iZmZN6hG/LhgMtVi63T6rO+v4/ZJnUSDw0PCr0H/4d7QHCEfjD/pZX7eNpZVr2Na4i6AkEqk1UpRQyJD4AgbH5ZIUmXBYXWxBMUirq51GRwtNjpZQpAJnK82OVjrSW/EEPTy29Ktw+UhNBInGOIbE5ZMUGR/ySjMnkWSMHxCvO4WgIDcmk9yYTK4cdhF7Wsv4bu8yvipZzNel33N+/ix+Mvjc4zLAnhQZz6Nn/JLn17zBO1s/Jn/mvZhzRtK5ch6Rw2ei1PcdOHVa5ng+2/0dX5YsOiQHgiuGXcTq2k18XfI9VxX1LXQAeekW/EvMTIgfzdd7l3Bu/oweUTfyY7M5K2cq35Ut47z8Gf16/I1JKaIoYRDzd3/HuXln9NlKam53kTOsb49SgPGpI/i69Ht2NpccM5fjkx2FSoMY8PW5T6ftmvs3QF12+6NSKLlz/I20Odt5cc2bpM5OOmSvSFmQjhG+gIjC2ElSZOIBIyzvbNrD4LjcHhM719duQa/WUZQwiKZ2D8qYhlCuo34cGebt/AqVQsWVP6g89FoVKqVAp91Lq6udPy59HrVCxWMzfkVkfSVNgMqS0Ot8br+Hb/cu5auSxXR6bMQYoji/YBbjU0eSE51xSAP7/qCfOlsj1dZ6am0N1NoaabA10ehsISjuu0nUSjXxhhjijbEUxOawu9TD3jIf910xjRHpGUftNno8UQiKrjQYeVwz/BI+2P4F83d/x9bGXTx6xj3H1EuwG6VCyR3jrmdXSylf7FnIXTOupe61e+lc/SkxM6/r184ZWRN5Z+sntLk6iDFEHfAaSZHxjEwaypLK1Vwx7MJ+f++C9FCkhDRGsVnaxNelS7h+xKU9ylw6+DwWl6/im71LuXHkZf1e89z8GTy1/J9sayruFWLI4w3ltjpQUNWc6EwEBKo6a380goRSjeTp28suPIY0wC2kbjRKNfdO+Tn/9/XveX3jezxyxj2H9CArC9IxQgBEnZWsqP6765w+F7W2xnCIfwiNWWxtKqYoYRAqpQqjXo0yqok4TUqfk0E73FZWVW/g7LwzenWvKBQC6QkmSmvbeWblF3gDPp44834SI+Ox2jcBoDLte6KVJIklFav537ZPsXrtDE8cxB3511OUMOiAXWGiKFJtraekrZy97ZWUt1dTZ2sIx5VTCgoSI+NJNiUwJqWIpK4o14nGOCx6U48Kz1rg5fanFvHxV82Mv7PgwF/ySUSsIZo7xoe8iZ5e8TJvb/2YO8YdXmxASZJweUKZbO0uH15/EFGUUCoUGHQqTBFaok1atCoNg+PyKO+oRpuQiXHIFGwbvsEy/qJeqQi6KYwNTTmo6Kg5qCABTE4bw6b67VR01PTyDuwmLkpPfLSB8kofI3OHsrJ6PdcNn9ujoonSmxmZNIQ1NZt6TGn4IcMSClEr1exo2tNLkFo6Q91S/XXZQWgMMFIbQbvbetDPdrogqNRI+wXo3Z/wGNJJ0ELqJkpv5qqiOby28T021m9nTErRQY+RBekYoVKLEHQfsGla0VGDhNTDoaDN3UGbq4M5XbmPRIUbhcGBWew7MOXyqrUEJZHZuX0nLivKi+WrvQtQtlfyq0k/DQ/aBx0dIChQGkIiZvM6+MfaN9ncsJOC2Bzun3r7AWfAt7ra2VS/nS2NxT1SR0RqjeREpTM6eRjplmQyzKkkRsYf8pwes1HLbZcU8bf/buSdr4u54fzBh3TcycKIpCHkx2ZT1lbZbxlJkmjpdFNWa6WiPhTNo67FQVO786BdLAqFQFJMBL6MWrRaJTVNduInX4pj5wqsG74ienrfrs/mrla6w+c8pM8xKD4kYHvbKvsVJIDhubGs2t7ALVOHsaF+Gw32JpJ/8J8fnjiY9XVbaXG2EW/sOwW5RqkmOTKBentTr32tXYIUd5C0EwpBgSiePBXw8UZQqqAfQdJ1tZBc3r73DxSzsqcwb9fXLChbLgvSiUTQecADUbr+n0ZrbQ0APVIEV3bUAJAdFYrRVdpeCYC7ve/B5bU1m8mJyiA5snfXG8CooWa+cZSRpstjYtq+uQBBtw2F3oigUNJgb+aPS5+n023l5lFXMDt3Wp/dNE6fi+VV61hetY7StgoA4iJimJA2isFxoSgOcRExRz2B9oxRqewoa+WjxaUkxhg4e0LmUZ3vRLKudgu7Wko5P29fpAKXx09JdQfFlR3sqWqntKYTmzPU9y8IkBgTSqE+LDeWWLMeS6QWU4QGrUaJQhAIBEVcngCdDi8tHS52teyhXNFER3ked6xcTFJMBLeaC2H911gmzUWh7j2XqzvVx6Hme4rRR6FSqGhxtR+w3Ij8OBasq0bpDbXMam2NvQSp+6GsydnaryBBKPWHJ+Dttb3NGhKkGPOBU6o4fC6Mx6Gb9GRFUKqRgn13ySkUAnqt6oTPQzoYSoWS6ZkT+Gz3dzh8zoPGXTyugvT555/z0ksv4ff7ufHGG7nmmmt67N+5cyePPvoofr+fpKQknn76aUymY5sa+0Sh1YWe1BTB/m+iFmcbaqWaKN2+bpb6rrk73Tdxd+rumkp6xaVy+Jzsba/i0iHn9XuNnfb1CAqRll0ZeM4JhCfMiR4nSl0EzY5WHvv+7+G4eH25f3e4rXy2+zsWla/EG/CSYU7hqmFzGJ864rCdGkRRxOl34faHEuV1p1hQCAq0Kg0GtZ4IjYGfXVJEa6ebFz/cSpvVwxVnFYTj752MBMUgnxR/y4c7vyA9Mo143whe/HALuyvbqW6yI0kh8UlLiGTc4ERy0yzkpJrJTDKFn2YPhZLWcr5ftpwUfSL/d8PNbC/tYPW2Bv5Xmc5dkcW8+/JbjDj/UoZk9/T229NaDoSiORwKgiCgVqh6pMDoi+F5cQgCVNSEhMTudfQqo1WGxkd9/TzNd+PyuYjpI4J3m7X3pNgf0uhoJiAGSD5AqKTTDUGpQgr0/50adCrcnpNLkACGxhfwafG3lLdXHzSJ6HETpKamJp555hk+/vhjNBoNV155JePHjyc3d184nSeeeIK7776b6dOn8+STT/L666/zq1/96niZdFyJMIY83Jy9788wnR4bFp2pR4Xe5upAr9KF58802luIVJto9gjsKm9jeP6+uUpl7VVISAzqJySRP+hncfkqBkcPYeN6Fe8t2MONFwwBQPJ58Ku1PLviJXxBP7+f8X+9JhUGxSCf71nIvJ1fERADTE4fy3n5M8g+QBcOhFKv11obqOysoc7WSIO9mRZnG+3uTmxeR3i+Un8IgoBFayI2M5r0SBUfbqtgZfk2fn7ONIZlnTwxyyRJorXTw5q9u5lf+SlWsRmhI4Xd6/PZLe4kQqeiICOayUXJFGREU5ARddgpN7oJBAPM37OAD3d8QWxEDL+ddidxERbS4iycNymL1s4RNPx7C+mdG3nwHwmMyIvjpguHkJ1iRpREFpavIMOccsDJsfvjC/hwBzwHfYI1G7XkplrYXtYEsfTp+ej0h1pnhgO0zgLBAA2OZob24ZHabvNg1KvRqPvv9t3RXAJwwjKZngyExpD6FxyDToXrJBSkzK6Holpbw8AJ0qpVq5gwYQIWiwWAs88+m2+++YY777wzXEYURZzOUB+32+3GbO49QGuz2bDZbD22NTY2Hi+zjxhTZOjmaW7t2y0TwOl3Y1T37Be3ee09vPI6PJ3EG6OxapQs31rXQ5CqO+sByLKk9Xn+7U27cficXDR+OtEdfj5ZspdxQxIZnBWDFPTzpT5IjbWe3067q5cYtbk6+Puqf1HaVsHYlOFcN3xuv267kiRR0VHD5oYd7GjeQ2lbRfhpWKVQkWCMJT4ilpzoDMw6E5HaCAxqPRqlGqVCiYBAUAriDfhw+d3YvA463Faana0EDE2o0620sIfH1yxBvzKGooQhXDJiKjlxJ25Wvs3po67ZQU2znaoGG5UNNsob2/FG70SZUAUBDVG2iQyLHUb+iGgKM6NIi4/sMSH5SAiIQVZVb+DDnV/S5GhhQtoobht9NUZtT6GItRhQTz2fiO/+zS9mRvGfNZ386pklXDAlm/i8Jmqs9fzyMCaNVnbWApDWT/De/RlVEM9H68rQxNKnw0StNdQ1nWTsv/VS0vWf6SunTofdS9QBWkcAK6s3kGSM77fr+lTkYHXdgbrsAAw6NU73yTWGBIQftp195HL6IcdNkJqbm4mL21eZxsfHs23bth5lHnzwQW666Sb+9Kc/odfr+eCDD3qd56233uLFF188XmYeMzTqrrk/jf03kfxBX695RW6/B4Nq383n8LqIMliYOCyJFVvq+OlFQ8Pdbk3OFiI0hl6VUzebG3aiVWkZllBA4RzYUdbGU/9Zz99/OZ0G0csKlZezc6czIqmn40CdrZE/LHkOl9/NLyfe0sMLcH9aXe0sKlvJ8qq1NDvbEBDItKQyK3sKeTFZZEWlkWiMO+r5Qjavg12NZXyzbRO720tY176UdYuXovHFkBcxgklpY8hIMBMXpcccoT0sEZAkCY8viM3pw+rw0m7z0NbppqXTTXOHm4Y2J42tThz73dhajZL4NAeqwRsJ4mBM/DhuGXspMcZj171s9dj4vmI135Yupc3dQYYlld9Ou5MRSUP6PcY4ZBptC99irK6SKb+5kv98XcyXW9ej8WygIKqgxxjiwVhXtxWFoGBw3MHzZA3Pj2Pezk5g39Pv/uxo3kN8REyvVOf7s6ZmE2qFiqKE3k/MnXYvUQeIWF3ZUUtxSynXFF1yTAIAnywcrK4TlKp+vewg1MVZ23zsk/QdLYIgdD2Eigcte9wEqa/M6Pv/eTweDw899BBvvfUWRUVFvPHGGzzwwAO8+uqrPY654YYbuOSSnum/Gxsbe41HDTTdn620phNJkvq8UURJ6uVOHRCDPSYGeoJetEoNsydksmRjLd9vquXciZkAdLptROv6v8n3tJaRH5OFWqlGrYSHbhrHfS8s4/evrSElyYUaemWvbXd18sclzxOURP4w694+xxxanG18sOMLVlStQ5QkihILuXTweYxKHnpEURoOhklrZELGcCZkDEcUJdaVVvJN8SpKA9vY6V/E9uJVBBbmEGxNQaFQYIrQEKFTo9cqUauUKBQCCkFAlCQCARFfIIjHF8TtCeBw+wkEe98YKqVAXJSBhGgDU0ekkBxnJDkuguRYAwtrv+Wr0qWkmBK5feztRxz/74cExSBbG4v5vmIVG+q2EpREhsTnc8voKxmVPPSg87+UhkgM2SNw7lpJ9MzrGDsBVgQ3I3oi2f59Gt+aqjin679zIDwBL9+Xr2RU8rBDmktVkB6FKqqFSCG2V3mX3822pt3Myprc7/Fuv4elVWsYnzqyT6eLdpuHQZn9Z4edt+sr9CodZ+ZMOaitpxKHVNf1Ua92E2fRs6Wkud/6Z6Bw+z1ISBgPMazXcSEhIYENGzaE3zc3NxMfv68JX1JSglarpago5Ap4xRVX8Nxzz/U6j8lkOiUcHZRdQmNzeahuspOR2NtmhSDg/0FlKAj0+JOJkoRSUDA4K5rcVDOfLNnL7PEZKBUCTr+r31htoihSa2vkvPwZ4W0ZSSYevH4cf3hrOc0pXiYGND0ChIqSyPNr/o3T7+Lxmb/uJUaiJPL57oV8sPMLBODs3OmcVzDrmIfLORAKhcCEgiwmFGQhSVezoW477237ghrtDmIKWhmingmeSJxuPx5fEH8gSFCUQuIvCBh0KixqLVqNEoNOTYROhdGgwRyhwWzUEmXSEmPWYzH2bml5Az7+uvJltjYWc07eGVw7fG6/2X8Ph0Z7M4srVrG0Yg0dHiuRWiPn5s1gZs5kUk0H7zLbn4jCCVjLNvLWqjf4qnY9OVEZ3DX2Nl7x7uEfH22lucPFdecOOmAF9Vnxd9h9Ti7umnpwMFrcLQjGTlT2Eb32rahahz/oZ2rmuH6P/3bvUtx+D+cXzOq1T5Ik2m2efrvsdrfsZW3tZi4bcv5hpZA/FTikuu4Av2OsRY/bG8Tp9mM0HPuMykdKd1ddhHoABWnSpEm88MILtLe3o9fr+e677/jDH/4Q3p+RkUFjYyPl5eVkZ2ezaNEihg3re+7NqYBW2dXFoAyyeU9zn4KkVmqwe3vOC1EqVAT2m0uhFBSIkoggCFw2K58/v7WepZtqmDkmHX8w0G/q7nZ3JwExQOIP+u1HFcZz4XkRfFMPGc0ebE5fOMfM9+Wr2NVSyu1jryMzque4lMfv4ZnVr7O5YQfjUkZw46jLiDX0/9R6IhAEgbGpRYxJGcbyqnW8vWUeqzwfcMOInzA7d9oxfSoUJZFnV7/Gtsbd/HzstczM7v+J/1DPt6l+B1+Xfs/2pt0IgsDIpKHcnDWR0UnDjij5oSRJlJgjeT0tmtba9ZyZM5UbR16GRqnm0ZvH89LH2/hwUSkA15/X9/yu/2fvvMOjKtM+fJ9pmZmUmfTeeyAJCaH3KoioKApi1/WzrH11i72srrruuq517b03RJDeWyChJJCekN57Mpk+5/tjkkBIIaEISO7r8pLMnHPmzWTmPO/7vM/z+xU1lvBTzhomB40Z9MpvRe56JEhpLPbAZhO7A7nNZmNl7kbCXO0WHn3RYdLzc846knxH9Nnv1NZhxmyx9VnybbFZeS/9K9zVriw8Rin/wkHE3oLfN56djcR1zfpzKiDVdlrQePRRUXk8Z3SF9MADD3DDDTdgNptZvHgxCQkJ3Hbbbdx7773Ex8fzj3/8g/vvvx9RFHF3d+f5558/U8M543QJPHp7yNlzuIbLp/WuhFPLVZSZK3s8ppQ5oLcc9ThRSOUYrfbCiPEjfQkP0PD56px+FbG7aO4UP+1L3cHkUIdSlOCr0/PXN7bx1B8m4KZ14LusVUS5h/WSKDJaTDy/9XXyGo7wh9FLmRN+em/2p4ogCEwNGcconzje2PMJ7+/7ipKWCv6QvPS0ia2uyd9CemUmtyQvOaVgZLPZ2FGaxg9Zv1LRVo27ypUlIxcyI3RityjuUBFFkey6fL49vJLDtXl4yBTcYVQzM2VZ9zFSqYQ/LrZL6ny7IR8vV3Wv9F2zoZWXd7yD1sGFm5OvZjBUt9ex5cguopwS2d8ho6HF0H0j3FmWRlV7LQ9OvK3fz8uP2atpN+lY0o+yeF2TfTbtoe2t0vBT9hpKWyp4ePId3VYmFxKiKA4Uj7rfs/pmPaF+/af2f2sqWu3Nz/7OJ66YPaN9SAsXLmThwp4fvHfffbf739OmTWPatKF7ZpyLOHcWGkSEqNm5tZ7mNmMvK2EXhSPtx62QnOTqHtUnKrmKDrM9QEkkAjcvGMFj/9vJ8q2FyCTSfvtEuoKaStZ7ZnmkuYwQuSMeylYamw089N+tLF6koaGjiZuTru5183h/31fk1Bdy/4Q/nLTR1m+Bi9KZv0y5ky8zlrM8Zy06Uwf3jL/5pJxfj8VsNfND1q/Ee0dz0Ul4unSRW1/Ie+lfUdJcTrDGn3vH38L4wOSTHp/VZmVPxQF+yd1AfsMRNEoXbk66mtHl5bSnrsBm1CNxOHojFwSBO69MpK5Jzzs/ZRIT4kaI71Gljr9v/i9txnaenvngoHX4PjnwPTKpnFlBM9nPYbtNhKsKi9XC15krCNb4MzZgVJ/n1uoaWJW3sdOmpO9WgupG+3fB261neqe4qZzvD69kYlDKhaNd1wfCQCsk7dEV0rlERVs1SplDn5Pl4zm92v0XMF2b+wF+CmwibD9Y0ecxeosB4zGKvS5KZ9pNHd1pO2cHxx7NholRnowb4cM36/OQIEdv7tsx0mqz7031dbOraa/HR+GCYOrgxbsmIJdL+WT7JhQSh146YhnV2Ww+sotFsfPO6WDUhUSQcG3iIq5LvIJdZem8uecTbIOo5hmI3PoiWoxtzIuccVIrQ6vNyucHf+SJDf+i3aTj3vG38OJFjzA5eMxJBaNmQys/ZP3K3b88zis736PV0MatyUt5Y8GzzI+agVPwSLBZMVbm9zpXKhF4cFkyjko5r39zAFEUqdU18OTGf1HVXsvDk+84YZ9ZF3srDpJWcZAr4+bj72pXYOhSoFhTsIUaXT3LEi/vtxjj84M/IgjCgIrilXX2z76fx9FKUrPVzOupH+Hk4MStyX3bWlwQdHVb94PWWYlUInRLL50rVLbW4O/sM6jv0nBAOk04KdTIJDJEuYFQPxc2ppX1OsZNpQWg4Rh5FjeVBhGRZoNdJFKrdKHJ0FMw8rbL47GJUFFlpK0fbbKuogrLcdpeFquFDrO+uwTX38nKv++bioO2BX2DC9+sy+9REfnd4ZV4qt1YPIAaxLnIpTFzWBp/KdtL9vB15opTulZFq733o799kIEwWky8sO1NluesZVbYJP497wkmB485KSv0goZi/rv7Q+5c8QhfZf6Mn4s3f558B69e/DQXRU7rNoF08LfblRsq8vq8jsbJgesvjiW3tInv9uzkb+teoFnfwqNT7z5ho2IXbcZ23k37gmCNP5dEz0bRqSBiNttoM7bz3eGVJHjH9rBVOZacugJ2laVzWczcAcVeS6vb8NAoUSuPFo98e3glpS0V3DnmujOiqH7+MHCDuVQi4K5VnZMrJD+XwfWLDWvZnSYkggR3lZb6jkZmjI7ngxWHKatpI9D7aNNrl3dMXUdjt/5X15ezXteEh9oNd5UrOlMHBouxO0/u7aZm6ZwovsjIQilvxSbaet3guo49Xhusq2FVpbKv4Cyt9Tj5u2GVtxOkDePLtblU1LZz39IkmoyN5NQXcm3CIuSnoZrst2ZR7DzqdI38mL2aUNdAxgcmn9R1zDb7ezbUijqrzcrLO/5HRk02t6dcy6yTKEsWRZF9VYf4KXsNufWFqGRK5oRPYV7EtF6acV1IlY7IXH0w1RT3e93JSd58lJ7Pt0dWE6Dx5aFJ/9fv9foa09t7P6PNpOORqXfbU8ed3ltSqcDXmSvQW4zceIxh3/Hnf37wR1yVmhMWIxSUNxPmr+3+uaixlJ9z1jE9dEKv1fwFh8iAKySwp+3qms6dgGQwG2joaBq0H9LwCuk04uXkTl17PdOTA5BIBDbsLe3xvHen0GRNe93Rcxztj3VVonQHLV1Dj3MXTY/ATaXFKlqpbm7ieJw7JV9ajcc1xnV+fgWVfWZpbqxCZ+rAJtqYkxzJjQvi2Hqggife2UV6eTbAoFR5z0UEQeDW5CVEuoXw1t5PqT3uPRwsLg72SUSXS+5g+T5rFQers7ht9LKTCkYZ1dn8dd0/eHHbmzR2NHFT0lW8fek/uCV5yQmDh8IrGFNtSZ/PHag6zF/WPY/FvRBbfRBPT3940MEIYFXeRvZWHOTahMu7qzHbOlN1HTSyrmgbcyOm9hANPpb9VYfJbShi8YgFAxYjtOpMlNe2Ex1sn6TZRBvvpn2Bi4NTL9+lC5OBq+wAPDSqcypl16XVOVhFjeGAdBrxcvSkWlePq4uSsXHebNhbhtlydD/DVaVBLpVT1XZsQHJHQKC63f6H69Ieqz4maAHIpBIun2APFB+vT+N4XDvTgY365h6PKzvL0Y0yGUhkmBoqutN6CqmcxTMjefi60eSWNPLN9n3IJLLzWo5FJpVx38Q/gAhv7fmkzwbtExHQebMubu69D9gf1W21/Ji9hinBY4fcsNmob+al7W/z9y3/RWfq4K6xN/Dqgme4OGrmoNW6Fe7+mJtrekjLlDSX84+tr/P81teRCAKXB1yL8UgcdY39y1sdz+HaPD49+ANj/BNZEHW0b6iqQQeIbK5Zg6NczdUjLun3Gj9mr8ZT7caMsIkDvlZGgf0zPzLcPinbXrKXwqYSrk+88oQaexcCNrMRQT5wObenq4qGFj0229A/92eCyjZ7+nvYMfYs4OvsSZuxHZ2pg4vGh7D7UDWph6u6S7YlggQfR48eKyS5VI6noxuVnaWRvp36cZWtNXBcpXdKWBif5kBqQQFZR1KICz3aoOogU6BxcKa2vb7HORKJBBcHJ5qN7cjd/TDXleEks6eiDJ3FFVOTAnBSKXh+wyFkZhk6gwWnkxQFPRfwcnTnusQreDf9C7YWpzItdPyQzg/U+KOQKjhQmUO4UywmsxWzxYbFasMmit0TValEQCaVIJdJ+LFgDQIC1yYsOuH1jyWt4iBvpH6M2WZhWcLlLIiaeVLpUpnWG2xWLG2N1EisfHd4FbtK01HLlVyfeCXzIqeRX9rKl2ynua235UNfVLXV8q8d7+Dr7MUfx93YY1O6oLwZtVcjeY0F3JK8pF85q6LGEnLrC7kp6aoTFnSkZ9fiqJITHeSK1Wblm0MrCHUNZFJw31JWFxqi2YjkBBMUd40Si1WkrcOExunsl8ZXtNYgCMKgRX6HA9JpxLdzZVHVVktSdDAeWhXrUkt79BD5OHt1B58u/F18Ke/cSHdUqNEqXbq9k47Fy9EduUSG3NXAG98d5NUHpyOTHl3k+rn4dG/IH4u3owfV7bU4eIegLz6Et1yNXCrvsZpKjvEipdyX9JoqXvx4L0/dNh6p9PxdQM8Kn8SmIzv5IvMnJgQmIyCjoUVPXZOe+hY9jS0GmtqMNLcZadHZHVvbOszo9Gb0BjOySBc2tu/j128HsYku2FAm7cHa7MUtT25F46TAzUWJl5saf08ngnxciArU4uvh2H1TF0WRn7LX8GXmcsJdg7l3wi3dk5GTQabxoFoh5ce0z9jTUIBCpuCy2LlcGjOne3Vh7Zw1D8bWo8XQyvNbX0cQBP4y5a7uPruusR/Ir0ERmoe7szezw6f0e50NRTtQSOVMD5nQ7zEAVquNPVnVjI7xQiqVkFq+n1pdAw+NWnxSBSG/R2wmA4Ji4IDUZdnR0GI4RwJSNd6OHoOeZA0HpNNIV6qrsq2GCPcQZo0J5Jv1edQ2deDV6X7p6+zNvqpDWG3WbhHSABcfMmtysNlsSCQSAjV+3YrJxyKVSAlw8cWmspGzqY2ftxZxxYyjDbhBGj+2FO/uVfQQqPFjb8VBFH7TaD+0FWtbI35OXpS39GzSjQvwZ1/DHg4UVfD5mpx+u/vPZdo6TBRX2tW5HZvjKbCt4Na3PqClxLeXDJiDQoqrswMaRwdcnZUEejvjpJSjUsootxk4oNvMLVeE4q52Qy6TIJVKkAgCgmCvwO3SyitoKeCXSgszw8fhEhpAc5uRhhYDJVVtpB6q7g4EWmcHkqI8mZYcQIF5D99nrWJy0BjuGHv9KUkSFTWW8m3RRtKD3HFoOsJlsXO5JGpWDxV5gJoGe4WmxwDW4GD33Xpuy2s06Zt5Yvr9vWa3RRUt1AsFKCQtXJOwpN+Vj81mY3f5flL8E1ErBn7N9NxaWnUmpo6yT962FKfiqtSQ4nd+7meeCUSzAcmJAlKnwkVjq4Ew/7PfHFvcXEaQZvAq/cMB6TTi7ejRYz9o9pggvl6Xx4a9ZVwzNxoAf2dvrDYrtbqG7hmxv4svFpuFWl09Ps5eBGn8WVe4tTtAHUuwawD7KjMZHTuZr9blMjMlsLsBN8w1iDUFW6hsq+mhiRbuFsLGIztpcbcHTENFLuFuwaSW7+/xGl2utaNHy/l+Yz4T4n2JDOy/RPdsI4oiFXXtZBTUc7iogdySJmoajzYZq1Uy5DGuSD3LWRI5HW83NZ5aFe5aJW4uPUuLj6e0WcOBNZtx8+tgaujAN8UjB1ORVkn4w+xpvTbtzRYb5bVt5JU2kVnQwN6sGraW7EYRdohIx3juGnsjMunJNcqWNJfzdeYK0iozUMuUzGrUsXDsUvwS+i7ZP1TUgJNKjo97//sx7UYdz219jfLWav48+Y4+5YR+3VWE3L+QEE0gY/1H9XutI81ltBnbSRlEddyvO4vROjswOtYbk9XMweosZoVOOm3KG78HbCZDn+7Ax3LsCuls027SUd1e10sJZiCGA9JpRCaV4a52pbpzH8fH3ZGECA82pZWxdE4UgiB0b+5VtFZ3B6SuTfTy1qrOgOSHyWqmRlffK40T5hrE5iO7uHJuAPtfq+PrdbncfoX9hhndefPIrSvsEZDivOyWArliB5FyJYaSw8THjWLjkZ3kNRzp9qSJ9ghHJVPi6tuES7Yv7y0/xAt/nHxOyQaJokhuSRNb9peTeri6u8TVzUVJbIgb8yaEEOanIdjXGTcXJSty5Xx28EcWTPdDOwRl8gAXXxykCo40lzGNgfegcuoKCHML7rOCTC6TEOqnIdRPw0XjQ8irO8KTm1YhN/iQsceXx0t38bcbx3brCw6GRn0zX2YsZ2txKiq5kiUjFzI3IIW61+/EsZ/NbKPZyu5D1YyJ8+43Zdesb+G5ra9T0VrNgxNv69P6oqnVwOaiVCQhepYkLBzws5FbXwhAnGfUgL9PWU0badk1XDM3GplUQnZdIWarmQSf3uZ9FzKiyYCgHvgz3GXb0dI+uH3CM0lho73qsy/Nwv4YDkinGW8njx6FBTNGB/Dq1wfIL2smKsi1R0DqKq8O6DRFK2upIsU/sds8r6S5vFdA6vrjdkjqmTM2iNW7S7hyZiQeWhW+zt5olC4crs3rUXbs5+yNl6M76VWHiQ+KRX8kg6RZ1yGXyNhRurc7IMmlciYGpbCtJJVFs8bw0U+FZBTUkxg5uA3JM4nRbGVdagkrthVRWa9DIZOQFO3FVbOiSIz0wNfdsc+bY1cpcnVb3ZACkkQiwcvRvVf5/fGYLCYKmkpYEDXzhNc0WUy8ufdjtEoXXrz0QfbENPHm9wd55M3tvHzf1BNam9tsNn7N38RXh1ZgtVlZGDOby2MvwknhiM2gow4QbX2rVKxPLUGnN3PRuL5vDmUtlbyw9Q1aje38ZcqdJPr0na79Yk0OeBfh6+hDcj9NsF2UtlTi7OB0Qs2+7zbmo5BLuXhiKAAlndWNg1WQuFCwmY1ITpD6lMukyKQCeuPZd449UJWFXCIbkqvv8Hr4NOPp6N7dUwR2gVSpRGBnhn2/pqtooaLtaPGBWq7CXe1KWWchQ6CLL4IgUNrSu+w4RBuATCIjr76Iq2dFYRNFlm+1z0QFQSDeO4aMmuwe8jmCIDAuIMn+eHAc5sZK5O0tjAtIYmtxKh2mo30LC6NnYbFZaVBmoHFS8Mv2otP7Bg0RURTZsLeU255bx/9+zMTZUcF9S5L49Ol5PHbLOOZPCMHPw6nfmbrebJ8pnswejVLmgMk6cIl0Vl0BVpuVEV4DrwLArjhQ2VbDnWOvx0XpzOyxQTx681hKqtv4bkNv2Z9jqW6v44mN/+LjA98R5xnBK/Of4LrEK7oLFrrK2/t6H3R6M1+tzyMu1I0RYb2tQ3aX7ePR9S9htll4auaD/Qaj/LIm1mWnIVG1c8WIi064cq7T1Z+wuqq4qpVN6WVcPDGkO/Vcq2tAIZXjOoD314WIaDIgnCBlB6BykJ31gGSz2dhTvp8RXlFDEsIdDkinGS9HD5oNrd0KCU5qBfERHuw+dLRIwc/Zu1elXaCLb3eRgUKmwM/Ju88+GLlUTphrEHn1RXi5qZmU4Me6PaUYTPYPYLLvCFqN7RQ0FPc4b2rIOKw2K+lK+02kIz+NS6Jno7cYWJW/8ejYXHy4KGIaG4q2kzhKQlp2DW0dg+9bOZ3o9Gae/SCV/3y1Hy83Nf+4axIv3zuV2WODBtz/6UIURTYf2YmTwpGgfpo2B6LVpDuhh0taxUEUUvkJ01LFTeWsyF3PjNCJPeR6Rsd4M26ED+v2lPbbM7W7bB9/WfM85a1V3DPuZv465Y94H3ejFztL+IU+7Ek+/OUwre1G/nDZyJ4mmWYD7+z9nH/vfJdAjR8vzPlbv+kVo9nKK1/uR+lfjouDM5P6cRU+lmZ964BBRRRF3v0pEyeVnKtnH33/Wg1taBycz6lU8bmAbRBFDXBuBKQD1VnUdTSesPfseIYD0mnGs9MzqKHjqJrCmDhvKup0VHdWOfk6e1PVWfjQRYDGj4q2GmydKZdgrT8lTb318ABiPMMpbCrFZDExf0IIOr2Z3Zn2gJfkOxKpRMru8v09zgnWBhDlHsa6in1IPAPR5ewmzC2Isf6jWJ6zjvpj9PWuib8UX2cvsmzrsMraST3Uu5T8TNNhMPPImzvYl1PLbZeP5KW7pzAy3GPQ59tEG58e+J4D1VlcGTd/yH5DTfoWatrr+nTQ7cJoMbGjLI0Uv4R+farAPlt8J+1znBRqrk+8otfzsSFuNLYaet1EbKKNrzNX8O+d7xLg4sPLFz3GlJCxfbsRG+yipBJlz4KF7QcrWLO7hEXTI3oUqByszuJPa/7OhqIdXBozl6dnPNhvak0URf73QwblTTXYnGqZHT55UO9n+wCGkgCb0svIKKjn+vmxOB/j39NhMaD+nZnvnSqiKCKajINaIUkkdrfks4VNtPH94ZW4qbSMGaDopS+GA9Jpxr3zS32sgOqozj2YjAJ7Ks/byYM2Y3sP5e4AF1/MVnN3ui/ENZC6jkba+xBTjfWMxGKzkN9YzIgwdzw0SrYfPJoSTPSOZVdpei/V60tj5lCjqycrOAxDWTaW1nq7JIso8vaez7qPV8qV/HnKnUgkoIpLY2t2zml6dwbPf77aT0l1K4/dMo5Lp4T3cnMdiIKGYh5f/09+ydvAvIjpzD/GRXewrM7fDMC4fqwUADYUbbc3QUcObFHxS94GChqLuSnp6j4bSHUGMxIBFPKj1XYWq4XXd3/E91mrmBE6kadn/mlAgzNLu30CJHXUdj9WVNHCq1/tJzrYlWvn2Vdlte31/GvHOzy35TVkgpSnZj7AdYmLBgwwK3ccYd2eUkaMbUciCMwZoO/oWI7VYzye+mY97/x0iNgQNy4aH9LjOZPFhIP03DGYOyewmADxhHtIYO83G0yv2Zlie8le8huLWRp/6ZDV7YcD0mmmS9G7SX9UBy3Q2xknlZzcEvtNw7PzxnLshrl/pxpuRZs9lRfcWdhQ2kfaLsYjHEEQOFybZ7f4HunL/rw6TGa7JNDUkHE06Js4VJPb47wU/wTCXINYYajEJED7oW14OXlwY9JiMmqy+ebQL93H+jl78/j0+5DJIUe+gu3FveWKzhQ5xY3syqxi2UUxpMQOTsbIYDawtTiVJzf+i0fWv0htRyN3j7uJm5OvHnJj5ZGmMn7JXc/EoJR+Nd9aDW18f3gVI7yiiPHobcbYhb00+2dS/BP7THOJokhadg2Rga7dTc4Gi5EXt7/J9tK9LI2/lDvGXHfCFYml2b7ilmk6pacadDz93m6c1Ar+duMYDNYOPjnwPff/+jT7qw5x9ciF/HPeY8R6Rg543V2Zlbz7UyYpI9ypFrMZGzBqQLXuY3+v/gKS1Sby7y/2YbXauP+apF6TDZPVhPwkHHR/z3SnZAchJWW1ikjOUrqzur2O9/d9RaRbCFNDxg35/OGAdJrp8kVqMR4NSIIgEBGgpaiiGQBPtX1juf6YtN6xKg9Ad6qopI+A5KhQE6YN4lCNfeWSFO2FyWztDnhj/BNxVjiytmBrj/MkgoQbkxbTYGhhY3AQbQc3Ioois8ImMzN0Ij9k/cqqvKP7SSGugdwQeRs2vSP/TX2ff25/u5fG3plgZ2YVMqmEhVMGttSu1TWwvnAbL2x7k1uX/5nXUz+iUd/CdYlX8OrFTzE1ZNyQ9yFKmyt4fuvrODs4cXPSVX0eYxNtvLX3UzosBm5JXtLva3SY9byy8z0cFWpuT1nW53F7s2s4UtnKnHH2HjCdqYPnNv+XjJoc7hhzPVfEzR/U72CqK0OQOyDTeFDb1MFjb+/EZLby15uS2Fy+ibtXPs7KvA1MDhrDqxc/zeIRF5+w0GNfTi0vfZpOVJArCWN16Mx6LjlGz24gjFYToij2qcX3+epsMgvruX1RAn4evZUwjFYTiuEVUg9spk7TTsWJU3YWq62HgstvRYdZz793vIMEgfsm/uGkFDYGNQ1ZtGgRy5Yt45JLLkGlOvGS8UJGLVchFSS0HmOyBxDk68zqXSXYbGJ3rv7YfSZnhSOOclV3U62rUoOTwpHS49QUuoj3iWFFzjo6zHriQu0rrqziBuIj7DIds8InszxnLdXtdT0qnWI9I5kTPoX1hdsI1zfhUXoYVfBI/pCyjHZzBx/t/5YmfQvXxF+GRCJh2ohI3vlmAuGjG8moPsD9q55iQmAyF0VMI7pzpXa6aWjR46FVonI4+vG02KyUt1SR33CE7PoCcuoKuve9PB3dmR02mXEBo4jxjDipL4JNtLH5yC4+3P8tarmSx6bf2z25OBZRFPki4yfSKzO5KemqfhWurTYr/9n5nr06bvr9fV6rpd3IW99nEOjtxMyUIJoNrTy35TXKW6t4YMIfhmSfYawqQOEVQlVDB4+/vZN2g4F5lwi8lP6SvTnVP5GlIxd2txSciLTsGp7/aA9B3s48eEM8j216jnjvmD4bZfui1WBXndc49FSL2La/gm835HPR+GBmjw3q81y92dA9QRvGTvcK6QRFDVabSHuHaUh9bacDg8XIP7a+QVlLJX+ecidejr2rOQfDoALS448/ztdff82rr77K3Llzueaaa4iMHHipf6EiCAKOCjXtx9iSA/h7OmEyW2lqM+DqrEFA6KElJwgC3k6e3cKrgiAQpPHrs/QbYJRPHD9lr+FQTS5jA0bh7+lIfunR682PnMHK3A38mLWaO8de3+Pc60ddSXZdPl/YRHz2LicxeCQyiZQHJvyBD/Z9zfKcteQ1HOGusdfj7eTJ6Bhfsg858O+HL2N1wSbWF25nR2kaHmo3UvwTSPCOIco9rJdUzckgiiJqZyuN1gp+ydlIZVsVR5rLKG2uwNxp365RuhDrEcGlMXMY4RVFQGeZ/Mlgs9k4UH2Ybw+tpLCphJFe0fxx3I19pqVsoo3PD/7Iitz1zI2YyvzIvvembDYbb+z5hAPVWfxfyrXdjcnHYjRb+cfHe2lpN/LITZNpMjTy9y3/pVHfzF8m38Uo38HLNtlMeoyVhYixc3jy9a1YXEpwHlHMryWtxHvHsDT+UiLdQwd9va37y3nly30E+7rw9G0T+Pzw1+jM+iFZQHTthR6775V9pJFXvtpHbIgbty/qX72h1diOywVtxNcbm9mIACcUV23vMGET+U117FqN7by8/W3yGoq4f8Kt/Zo0DoZBBaTk5GSSk5NpbW1lxYoV3HnnnXh5eXH99dczf/78k37x3ytquYoOc09Pki4tu7omPe4aFS5K517OsD5OnhQ2HfVQCtL6s/nIrj4N+aI8wlHLVaRXZjI2YBRh/lpyS44WUriqNMwJn8KvBZtZEDWzx8xYKXPgr1P+yCOrnuG/xhIeL8skJDAeqUTKH0ZfQ5R7GB/s+5oHf7VbIExMTmRXZhXZ+R1cn3QlV41YwO7y/aSW72dj0Y7uAgB3lSsBGh+8HT1xU2vRODjjqFCjkCq6Nzdtog2T1YzBYkRn6qDN1E6zvpUGfTP1ugZqdQ0YrSakUfDJwVQcFWpCtYFcFDmdMNcgItyC8XbyPKWVmdVmpaiplL0VB9lRspe6jkY81G7cNfYGpoaM63OF1W7S8WbqJ6RVZnBRxDRuTr66zzFYrBZe3/MxO0vTuCb+sj6tKDoMZp7/aA9ZRxp46NrRSBxbeXTDm1hsFp6Yfv+gVyHd1yvcj2iz8O/cZszhuYiKdnycw3gg4dZB9Ud1IXb2tH2w4jBxoe48dss4dpTvZHPxLq6Imz9gxeHxFDeXA/Z2BoDS6lae/WA3nloVj948Frms783uDpOeDrMej0HsU11IiF0B6QQrpC4vpC5NuzNNZWs1/+j077pv/K1MCBx9Stcb9M5ha2sry5cv57vvvsPZ2Zn58+ezfPlyNm3axEsvvXRKg/i9oZIpMZh7akl1SXo0ttofd1W60HycAZyXkwe7y/d3C68Ga/wxWIzU6hp6NRjKJFKSfEeQVpmBzWYj1M+FbQcq0OnNOHZaR1w54mK2lKTywb6veWLG/T1utF5OHjw26Q6e2fwqT+38H/dPtc/KBUFgWuh44r1j+CLjJ37OWYdcuglNrD+fbTMyIf4KlHIl00MnMD10AiarmYKGYgoaiylpLqeitZqCxhJ0x60Q+0NAwNnBETeVFm8nT+K9Y/B28mT99kZKim389dZZRAf3X102EFablWZDK3W6Bqrb6yhvraKosZSCxmIMFiMSQUKCdwzXJi5irP+oPgsHRFEkrTKD99K/pNXQxs1JVzMvcnqfwajdqONfO9/hcG0e1yYs4rLYub2OqarX8fxHeyitaeP+pcnIPWp4cuPHaByceXLG/T0knwaDzSayeevPbPJzo05diI+jF9cnXUeKX8KQgrbFauPtHzJYs7uESQl+PLAsmW2lO/lg/9ck+8UP6HfUF5k1uXg7eaJVaaiq1/H4/3Yhk0p4+v8mDDh7L2u1p6jPZ0+uM4HY2eB9oqKGslr7VkGA55lfYe4sTeN/aZ8jl8h4csYDQ55I9cWgAtKf/vQntm7dyvTp03nqqadISkoC4JprrmHixKE1Pl0IOMgUGI/r8O/qQm/pdNrUKF16OZL6OHlhE23UdzTi7eTZ7c5Z3FTWZ8f7uIAkdpSmcag2lxBf+4yyuKq1uxvf2cGJ6xOv4O29n7EqbyOXRM/ucX6IfxwPu8TyVvNhnt/6GvMiprM04VLUchVuai13j7+Jy+MuYmXuRrbYUml2LubWH/cwPjiBkV7RRLmH4u3kSZxXZK+0lMliotXYjs7cgdFiwipaERAQBAG5RI5S7oCTXI2jQt2ten4s430MPPzaNp58Zxd/vXEMo6K8MFnNtBrbaDPqaDO202psp91k/3ebUUebyf7/FmMbLYZWWoxtPZpNZRIZQRo/poWMJ9YzgnjvGJwHSA0VNpbwRcZPZNbkEKjx4y+T7+xXzqagoZhXdr5Lk6GVu8fd1KvCyK44Uca7yzORSgQeu3UMucZd/LxzHdHuYTw0+fY+95kGorShhhdWvUe9tgWlzYGbR13F3MjJfb6fA9HcZuTFT/dyqLCBxTMjWTw7lI8PfMX6ou0k+Y7ggQl/GJLIaauhjYyabOZHTKemsYNH396B2WLjH3dNGlDYFSC/4QgwLBt0PDazESknLmoor2lDIoCf55kzNDRYjHy8/zs2FG0nyj2M+ybc0u10faoMKiBFRkby6KOP4ubWc6Yqk8n48ssvT8tAfk8opAr0lp4rJKfOxr/2jq6A5NzL86gr6FS11eHt5Emgxg+pIKGoqbTPDe5k35Go5Sq2FO9mWexSAAormnvIw8wInci+ykN8fvBHQrSBjPSO7nGNiMlLuet/97IxOoY1BVvYUZbGZTFzmR02GbVCRYCLL7ePuZbrE6/g8S9/oqQjn93CfjYf2QXYV4MBLj74Onvj6eiOm0qLRumMk8IRtVyFUqawBx1BigDYELHZbJhtFpoMLVS116I3G+kw69GZOtCZO7oDTOD4ZnIranhu1wZk+y1YMff7njvKVTg5OOGicMRD7Uq4axBalQY3lRYvR3e8nDzwdvQ44c3aarOyv+oQq/I2cag2FyeFIzclXcXciGl99lRYrBZ+zF7N91m/4qbS8szMPxHhHtLjmNLqVv73YyYZBfWMCHPnhstD+CL7M/IaipgbPpUbkxYPyZTPYDbw3u7lbC3fikRmY3qTnmuveg6N++Bl/rvIKWnkhY/30tZh5v5rEhHcKnlwzdM061u5LGYuS+MvHXKAW12wGavNyki3JP725nb0Bgt/v2Miwb4nDrgHqrLwd/bpbp8Yxs7Rsu+Bi8ryy5sJ8HbuNyV6quyrPMT76V9S39HE5bEXcfXIhUPuNRqIQQWktLQ07rjjjh6PXX311XzzzTeEhw9eOO9CQS6V0WrsefNUyCTIpAI6vf1xrVJDi8E+g+9KrXQJqVa11TDKNw6FVE6Q1p/CxuI+X0chUzApKIXNxbu5cdRiXJ0dyC9r7nGMIAjcNfYGHtvwT17a/haPTbu3x9Ja7uqDe8Is5h3cyOxlf+GbI9v57OAPfHd4JRODUpgclEKMZyRqhYqnrrqSP726ldYKI/dcF4ZZ0ciRpjLKW6s4XJdHY2nzSVmG937/5LgonHBxcCI6wJO6OiuV1WaUUjVjo4MYGxWEm9oFJwdHnBWOOCkch3zTPBaL1UJOfSF7Kw6ysyydFkMrrioN1yYsYk7ElB7mdMeSVZvHe+lfUd5axeTgsdyavKSHMkFVvY6v1+eyKa0MlVLO7YviUfpW8sLulxEEgfsm3MKkoDGDHqfVZmVj4S4+2f8jRrEDrc6d2xtyCR17+ZCDkSiK/LytiI9+OYyrG1w818Z3le/QUNhEhFsIf5r4fyeVgqnTNbAiZz0JnvG8+lE+ZovI3++YSHiA9oTnthraOFyb22slPwzYTPaU3UB7SFabSG5xI1OSBr/XN1ia9S18uP9bdpWlE+Diy9MzHyTGs//+u5NlwIB07733cuTIEcrKyli4cGH34xaLZdinZADkEnl3RVgXgiCgcpDT0SkPo1W6YLFZaDfputNGWqULarmqh+trpFso20r29OmNBHBRxDTWFW5jbeE24kI9OVTY0CPIAagVKh6bdi9Pbvo3z25+lXvG38zYYxQIXKdcRXvmZjT7NvPYogcpbCxhdf5mdpSmsbFoB2q5ihFeUcR6RnDj1T6893UJr31SyAPXjObW0ZO6r2OxWe2pMkMb7SYdBosRg8WI2WrGeoxqhEwiRS6RI5fKUMocUMmVqOUqHDtTeH3J8GQdaeCjX7LYsLqR9B21zJ+gZs5YLRrl0NoQRFGkQd9EaXMlR5pKya0vJLu+EKPFiFwiI8lvJNNCxpPkO7LfmV9FazVfZi5nT/kBPNVu/GXKXYzu9Pyx2UQyC+tZueMIuw9VIZdKWDglnGnjtXyV/T2ZaTmM8IrirrE3DDrNIYoi+6oO8WH699R21GBr1zBGOYcl7auQanzRTl48pPegpd3Iy99sI7P+MK6jmtBJa1lTIjLCK4o/pFxDsu/IkyoasdisvJ76MaIIWTu8kYrwjz9OIthncKnIjUd2YhVtTAkeO+TX/r1zdA+p/3Lu0upWdAYLsSEnt+faFzbRxsaiHXx+8EdMVjNLRi7kspi5Q5biGiwDXvXPf/4zFRUVPP744zz++OPdj0ul0uGy7wGQS2WYrb3TS04qOR16e0A6KjHU3B2QBEEgwMW3RyovxjOctYVbKW4u6zOvHqT1J9kvnpV5G7gs4jZ2ZFRSWtPW6ybgptby7KyHeGnbW7y843/MjZjKsoTLUctVyJzd0Iy/jObt32JImU94YCx/HHcjt45eSkZ1NvuqDnG4Jpe9FQftFwsHqVXFy7t34ZflybioULyd3bpTdY4KFT5OnihlDsilcuQSGVKJtNdNThRFRFHEIlqx2uz/6c162oztWGwWLDZr9/+lzlZuXOJNXqmCnZkVfJ26nW/2bCfQx4m4EFfCAjQ4OUqx2uxVfCarCb3ZQIdZT5tRR5OhhcaOpu4qvi4CXHyZFjKOBO9YErxjUA6waVzeWsVPWWvYVroHhVTBkpELuSR6NgqpnMLyZnZkVLJlXzm1TXqc1XIWz4xkznh/tlVu5amta5FJZPxh9FJmh08ZdK9UVm0enx9cTn5jEaJBjUPDGO6ZMhG/fW9hMenxuuaxE5q2gb1p8XBtHpty9pNeeQjRUYfCEVxdfLk48GKmBI/F5xQs1G2ijXfTviC7Lh9KRuEsOPPsHyfiN8jNdYPFyMrcDcR7xwy6V+pCQrQYEWQKhAEyAXuz7CoviZGD13wciPKWKt5J+5yc+kJGeEVxW8qyM15sMmBACggIICAggDVr1gwr7w4BB6kCYx8ByVEtp11vvxm6q+xFCI36JkJcjy6xg7T+7CpN617ljPSy7/lk1OT0u9G7dOSl/GXt81RJ9yERHNmyr7xP+3Gt0oWnZj7IlxnLWZW3kdSy/SyKm8essMloJy6iLWMT9avfxf/WfyJIpChlDowNGNW9mmrWt1DUVEpxczllLVUcLi+j2lDMz7m5MIiPhyAICJ0Hiognn95Tg0PnVlgNUNMImxr7PrQr/adROuPt7EWCTxy+zl4EuPgSog04obW2TbRxqCaXVfmb2FeZiUIqZ0HkTCZ4T6G8ysTb3x1mf14tDS0GJAKMivLi+vmxjIv3YW/lPp7Z/iIN+iYmBaVww6jFuKoGZ6mQU1fIt4d+IbM2B8xKTOVxzAqfxHVTHWlb+R8sumZ8lj6Gg3dIn+dbbVbyG4rJqMkiozqHgsZibKIN0SpBYfHiougZzI0dc0pB6NjXejf9SzYd2Ym1MgJvInn2ngm4awa/el2evZYWYxtLRi488cEXIKLJeMKm2D1Z1UQGaof0vveFyWrmx6zV/JSzBpVMyV1jb2BayPjfJAYMGJCuueYavvzyS5KTk3sMputmuW/fvjM+wPMRpcyhV9k3gIujorvKritdU3ucAVyYaxDrC7dR3V6Hr7MXWpWGMNcg9lYc5PLYi/p8vRDXAOZGTGVtwVaiR8xlXWopS+dE9xDr7EIhlXNj0mImB4/hkwPf89H+b/nu8CqmBo8leeIlqFd/RMuelWjHX9rrXK1KQ7IqnuRjLKmPVLbw7vIMMksq0Whg/Cg34iI0CFILRqsJk9XUudKx2m+Ix/j2SAQBiSBBKkiRSqTIuv+TIZPIkEokR/8tSJFKJJ3H2/8vdJ5f26gnt7iZ3JImCsta0RsAmwS1QkmAj5ZAb2f8XZzwclbjrlWidXLAxVGBSt7/x7+ypY5NhbvZXpZKg6EBB4maUEkK1IXw6wEj3+p3A/ZVb2KkJymx3qTEeqNxUrC/6hBPbPqEkuZywlyDuG/CLYPKt4uiyKHaXH7I+tWuU2h1wFwRTbA8njuujMarYitNXy1H6qjB97qnUfr37DFqNrSyv/IQ+6oOkVmTQ4dZb3cpdvTHoTmK5kpn5o4cxa2LE05oBjhYWg1t/Hf3h2TUZGOpDCNUksJTd0/ood59IkqbK/gpZw2Tg8acltLh3yM2i2nAptj6Zj15pU0su+jUXHYP1+bxTtrnVLXVMjV4HDeMuvK0NLwPlgE/la+++ioAv/zyy0CHDXMcaoUaY+eN+Nh9CFdnB0qq7KXeWqULSplDt3ZdFzGd7orZdfndRQ7jA5P5IuMnatrrevngdHFtwuUcrM6iXraDZmMKq3Ye4fJp/d8Ew92CeXrmg+TUFbAqfxNrC7exymbBOcKHiMPLGaUWiA5IIFDjN2AFWKifhufumExGQT3fb8xnzfo6NmwyMDHBl9ljIkiI9EB6hnW1wt1gQuevarXaOFLVSkFZM0UVLZRUt7Izo6pPTyeJAA4KGXKZxC7ZL2vH4liNzaUSwcku62RtdcVal4C+0QejQkGQj5xJie5EBGiJDnYlyMcFqURAFEUya3L4JvUX8hqK8Hb04L4JtzAhcPQJ03M20UZaRQbLs9eQ31iM1KbCVBaDxhjBH6d4EWvJpv3nj2k26HAaORX3OTcjVbsgiiIVbdXsLT9IWsVB8juLX9xUWsYHJjPCM4acTIFfNlfg5uzAk9ckkRx96iuiLtIqMng37QtaDO2YikaS4JbEIzeNRekw+GBnMBt4ddf73dWMw/SNzWwYcIW0fm8pogjTk0+uoEFn6uDTgz+wsWgH3o4ePDbt3h6+Xb8VA35yDhw4MODJ/v7Dud6+cO508WwztvdI0XhoVTS1GjBbbMhlEgJcfHtJA/m7+OCq1HCgOouZYfaCgcnBY/gyczkbi3ZyTcJlfb6mUq7koUm38/iGl9EmHOCLDTImxvvh5Tawr0yMZwQxnhHoTB2kV2ayr3QfGeUH2J+9CrJXIREkeDt54OvkhZejBx6ObriptLiqNGgcnHF2sFe5JUZ6khjpSUlVK6t3F7MpvZyt+yvQOjkwMcGXiQl+jAhzP+Oij1KphIgALRHHVXW1d5iobdLT0KKnuc1IW4eZxo4WaozlNFjKaRDLMdIMgLPgRrBqIrGakQTEeuOhVeGpVaF1duhzH2xfZSbfZ/1KfsMR3FWu3DZ6GTPCJp6wHNZkNbO1eDcrctdT1VaLzOqEvDyMOL2SOYFmfExrsOyooFWQ4Bg9Fu3EK1H4hFLUVEpqwUb2lB+gslMdPtwtmCUjFzLaL55gbQCHihp446sDVNTpmDM2iFsuHYmTauiuuX1R3VbLpwd/YG/FQZwl7nRkjmNSVAwPLhuNXDb4v6/NZuP11I8pb6vm0an3/KYz8fMN0WxEoup7r9BmE1mXWsKoSM8T9nn1xd6Kg7yX9iUtxjYujZnLVSMWDOjvdSYZMCB9+umn/T4nCAJz5/buRB8GtCp7QUFzZ/lwF77ujthEuzVAoLczoa6BbC/d20MaSBAEkv3i2VG6F5PVjEIqt2vG+SWwrnAbi2Iv6nfjPUjrz8OT7+CFrW9CxE6e/ULOv25f0Gfq7ngcFWqmhoxjasg4Wg9sIHfN27SkzKbBy4/y1iqq22rJrivo1V/VxbGVcioXJfGzHejogMZmMxsqD7K2RIJCqiDQU0u4rzuR/h64OTmilDngIHOwV9vJlJ0/K06pjPt4DBYjjaZ66sRaysUqSiwVFOlKutOlCqmcWM8IRvnMZrRf/KD2VSw2K7vL0lmes46S5nI81W7cNnoZ00PH91hRilYzNkMHVoMOm7EDm0FHS3s9G6sPsbG5kDbRjIdBYF6DhfEdJSiFIpCBUKdAHhSLJnku6piJHDE1s6ZsH6lp71PX0YhEkDDCK5L5kTMY45/YLdjb0m7kv18fYP3eUrzd1Dx7+wRGRZ2eVVFNex3Ls9ey6chOZFI5kbLxZOxyYe7YUO5anDgkDx5RFHl/31fsqTjATUlXnZXZ+PmEaDYh0Wj7fO5gfh21TXpuWjBiSNdsMbTywb5v2FWWTrA2gL9M6b/x+7fipAPSMP3joT7qdxTaqbYAdFe+lVS3EujtTLRHOOsKt1HaXNGtygAwITCZDUXbSavIYGKQXRtqUew89la8yC95G1g8YkG/rz3SO5onZtzH85vfpFq2loe/aOTFa65FqRj87Ng5cSaBBem479nIlJuexyHevtEsiiJ6s4FGfTPNhhZajG20GtppM+nQmTroMNt1yPRmA+0mHXoM2JwMODrYy79FREqB0lrYVDvwGORSOapjgpRS3hmspAoUUjlyqRyZRNodyLuq9UxWMwazAZ25g1ZjO82G1l4yRt6OHoS6BjE3YirRHuGEuQYNujG1w6xnY9FOVuVtpL6jEV+llpu9kkgRVYhZ+6nfswmrrgWrvg2bob27XBegXi5lm1ZFurMKi0QgWmdkTKMZb7MaR3dfPEZOROkZiIN3CHKvIIpaKllXmsauLS/T0NGETCIjwTuGxSMWMMY/sYfZn9VqY01qCZ+uykZvtHDljAiWzo0+5b0iURTJqS/g1/zNpJbvRypImR0+BUNZKKu3VXPJpFBuuzx+SAaKNpuN9/d9xbrCbVwWM5eLo2ae0hgvBESzsV/ZoLWpJTir5YyP79u7qy8OVB3mjdSP0Zn1LI2/lEtj5p7WBteTZcBP63PPPcejjz7aqym2i7fffvuMDOp856jiQs+7brCvMzKphNySJiYn+nerJhyozuoRkEZ6ReOhdmNd4dbugBThHsL4gGR+yl7DlOCx/e4lAUR5hPHvBY/x9Jq3qTKmctu3+dw+4SomhSYOqlJGEAQ8F9xJ+XsPUfPjvwm45SUkSkcEQUCtUNkVHDRD01wTRRGzzUKHyUBeeR0ZRdVkldRRXNOIFQsSmRUvdzleHg64aWU4O0uwCRYMZgMGixGj1UiHqYNGSxMmqxmzzYLFZum2ahYEAZkgRSGVo5QrcZSr8HfxYaRXNO5qVzwd3fBx8sLf2XvA0u7+qGyqYNXB5WytzcIgWgk1WLm4sY2Yjlok5NEmkSJzckXq5IrMxR2FTyhSlTMSpSNFNgPLGwrIMdYgiAKyBk/UjaH4xMQTOyesh7V4aXMF20v3smPfR9TpGpBKpIzyieOa+MsY7RffpyX4gbxa3lt+iJLqNhIiPLh9UTxBg+z96Y9mQyvbS/awqWgnZa1VOMpVLIyezcVRM1m1uYqftuWxcEoYt102tJ4lo8XEG6kfs7t8H5fFzGVZwuWnNM4LBZvF2GdTbEu7kd2Hqrh4Uuig1BksVgufZ/zEyrwNBGr8eHz6fedUmf2AAWnChAkAXHRR39Vdw/SNo0KNm0pLyXH7Q3KZlJgQVzLy7dL8biqtvYKu/ECPCjqJRML8yBl8evB78uqLuiuPbkxazMGaLF5P/ZgnZzww4IzGTaXlP5f9hXe3rGFd6Rr+u/d/fJnpxYLYaUwMSkF7At00qcoZ78sfoPLTx6ld8Treix9GOAmfoS4EQUAhlaNQyRkb6czYSPvvZDBZyC1uIrOwnszCeg7tbsZitTfR+rq7ER3iSlyQK5GhWkL9NINKP54urGYje/b9zNriXWSJHQhAQruJGTJXIr2jUYwMRu4RgNzVB6mTtkePSE2jjuUZqWwv20q7pAbRIkesi2CkJplZk6MYE+fdvXpp0rewvWQvW4p3U9pSgUSQEO8dw1WdK6G+ghBAYXkzn6zKZl9uLV5uav56wxgmJpy8FYfO1GFXQC9NI7MmB5toI9IthDvGXMfEoBSUMgdWbi/i6/V5zB0XPORgVK9r5F873qGoqZQbRl05rMgwBPor+96UXobFKjJ37IlTbS2GVv69812y6wqYFzGd6xIXoThLe0X9MWBAmjnTvpRetGgRTU1NHDhwAJlMRmJiIi4upzYD+70T7hZMQadQ5LGMjvHm45VZ1DZ14OWq7q6gq2qr7a6qA5gTPpmfc9by2cEfeHrmnxAEAXe1K/+XsoxXd33AR/u+4dbRSwe8IQiCwP9Nn8eM8jH8Y/mP1Kjy+Wj/t3y8/zsi3EOI944hxiOCcLegPkVGlYExuM++kYZ1H9K8/Xtcp5z+KiilQkZilCeJUfYVn8lsJb+smZziRnJKGjmYV8fmdLuVgVQiEOjtTJi/hlA/DSG+zgT5uODaR7HBqdDUVMnqnZ+xpbmQRpkEJ6vIfLUfc6Jm4BuRguS43iWj2UpReSv5pU1klzaQUXuIDk02EnUbWFWEMIGLR0xlbIw/aqU9NWi1WUmrOMj6oh3srzqEKIpEuoVwS/ISJgQmDyi0WlzVyldrc9mRUYmTSs6tl47g4omhJxWsW43tpFVkkFq+n4yabKw2K56O7lwaM4epweN6rIT35dTyzk+ZjBvhw11XDk1NfF/lId7Y8zEWm4WHJ99Oin/ikMd6IWMv++5Z1CCKImtTS4gOdj2hTmBpcwX/2PYGbcZ27h1/C5ODBy9Z9VsyqATz5s2b+ctf/kJkZCQ2m43S0lJeeeUVxow5N3+pc4FYzwj2VhykoaOph9nbpAQ/Pl6ZxZZ95Vw1K4ppIeP5OvNn1hRs6VH2qpQrWRJ/Ke+kfc7mI7uYEWZXVZ8UNIYjTWX8nLMOR4WapfGXnvDGEBngzv9uv4UfNxfw3c50TE6VVNhaKGhYg8ivwFEvIx8nL7ydPPBQ26vptHHjcajMp2nrVyg8A3GMGX8G3q2jKORSRoS5dwvEiqJIfbOBgvIm8suaKaxoYX9uLRvTyrrPcVTJCfB0wtfTET93R7zd1Xi6qvHQqHDTKHEYxI3aJtrIrDzM6vTvONBRg1UQCJepuDpsElOSLkMQZDS2Gsgu76C6oY6qeh3lte2UVLdSWa/DZrMhdavGIbAQ0bcdrdSNeeFXc1nCFOTHyKy0GtpYX7SdtQVbadQ3o1W6cFnMXKaHjMfPZeA9gLzSJr7dkMfuQ9WoHGQsmRPF5dMihlw9V9tez96Kg+ypOEhOfQGiKOKpdmN+5AwmBCYT4RbS6zNV16Tn5c/TCPJx4U/Xjh50Kb/RYuKLjJ/4NX8TQRp/Hpx027C1xMlg7r1CyiluoqymnXuuHjXgqXn1Rfxj6+s4yBx4ZuZDhLn17dR7LjCogPTqq6/y2WefdcsFHT58mMcff5wffvjhjA7ufKZLYSGzJofpoRO6H/f1cGREmDtrU0u4YkYkrioNE4NS2FC0gyvi5vdwypwZNpFtJXv4aP+3xHhGdK+gliVcjs6k58fs1bSZdNySvOSEG5JymYSrZ0dx0fhglm8tZNXOYjqMejz8jASF2VA6d9BibCCvIRV9H0296nBvHPd+gPuRDbhpvNEqXdCqNLgqNbirtbir3XBXu6IYgmr1YBAEAU9XFZ6uKibEH7ULb24zUlLdSml1G2W1bVTWtXO4qIEt+8o5XgBCrZShcXTASS3HUSVH5SBDqZCikEsxCW3UkE+N5RAdgh6V1Ua8XgXWcbSYAviuxMT7KzbQ1mHqcV2JAN7ujgR6OxEea6TIlkq9sRZ/F18Wj1jK+ICkHtqDNe11rMhZz6biXZitZhK8Y7kleQnJfvED/u0sVhu7D1Xx89YisosbcVTJWTInisumhg+6+VQURY40lZFWeZC95Qe7U8mBLr5cETufsQGjCNEG9DuxEUWR177Zj9li4283julhLT8QOXUFvLX3U6raapkXOZ3rEq847Z+PCwex1wpp3Z4SVA5Spozqfw8op66Q57a+hlbpwuPT7ztpa/HfikF9sgRB6KFdN2LEiNOi6vx7Jkjrj5tKy96Kgz0CEsDCyWG88MledmZUMmWUP4vi5rG9dC8/Zq3mxqSjQpkSQcI9427iL2uf5+Xtb/PMrIdwVKiRCBJuS7kGZwdHfspeQ1lLJfeMuwkvpxNrWGmcHLjh4jiunhXFjoxKNqaVcWBbPTbRGXdNMImRHkSFOOHpBTKlkRZjG036Fhrb6qjJ201rXSmF5g5azHbx1ONxU2nxcfLEz8WHABcfgjR+BGkDTrsltdbZAa2zvffpWMwWK3XNemobO6hvNtDUZqCpzUhLu5H2DjM6vZm61jY6HEoxOZVic6wHEcL1JuJaRIraJlAiC0XpIMNJJSHAy5mRYQ5onR1w1yjxdFXj7abGy1VNaWsZnxz4jj11Bfg4eXJv0i1MDBzdIxDV6Rr49vBKthTvRipImRoyjkuiZp2wKKSmsYN1e0pYl1pKY6sBbzc1t102ktljg7rTfgNhsVrIqssnrTKje6UuCALR7mHcMOpKUvwT+/TY6ovdh6rYn1fH/10ePyhtug6zni8yfmJdwTY8HN14fPp9xHufmoLAMD3N+QxGC9sPVjA50b/fCUJ5SxUvbn8TN5WGp2Y8OGjZqrPJgAGpubkZgJEjR/L++++zdOlSJBIJP/zwA+PHn9nUzfmORJAwPiCJtYXbaDO299ijGR/vS6C3E5+vzmFCvC8BLr7MCJ3I6vxNzAid0KPqxcPRjQcm/oHntr7Oi9ve5JGpd6OUK5EIEpYlXE6Qxp9307/gT2v+zlUjLubiyJmDUuJVOsiYNSaIWWOCaG4zsjermvScWtKyatmUZt+zcVTJCffXEOoXRKjvCKaOGoNi3UtI2xrxu/7vWNRONOlbaOhooqGjibqORmra66hqq2VXWXqPcmtPtRsR7qFEuYcS7RFOiGvgGSkzlcuk+Hk44efR88ZpsBg5UHWYHaWZ7KvMxGyz4OPkSYrBkxEF2QREjMNz2V1IHAZuJAb75vB7+z5n05GdaByc+cPoa5gZNqnH76M3G/gxezW/5G5AAOZHzuDSmDkD+vy0683szKhkc3o5mYX1CAIkR3vxx8WJjI71PmGfT4dZz8HqLPZWZLCvMpMOsx65VE6idyxLRi4k2XfkkJtPRVHkq3V5+Hs6cfHEkBMeu7t8Hx/t+5ZmQyvzIqdzTfylJ1XVOExvjlX63plZhd5oZdaYvtNv7UYd/9j6OnKJjEen3nNeBCMAQRxgqRMTE4MgCH2uhgRBIDs7+4wOrj/Ky8uZNWsWGzZsICDg9Ht/nC5Kmyt4aM3fuS7xCi6NmdPjuT2Hq3n2g1RuWTiCRdMjaDW288CvT+OhduW5WX/uFVR2laXz6q4PCHcN4i9T/9hjxVGna+D9fV+zrzITT0d3roybz5TgsUMyfevCZhMpq20jp7iJgvJmCsqbKa1uw2S2AhAkredul3XopM6kBt6Am5cXvu5qvN3sezddBQaiKNJiaKW0pZLi5nIKGospaCimvsOuguogcyDWI5wRXtGM8Ioi1DXwtDbDgn2/5kB1FnsrDrK/6hAmqxmN0oUJgclMDkjGecsP6PP24Dp1CdrJV51wL04URTYf2cUnB77DYDGyIHoWV8TN7+WXtK/yEO+mfUGDvompweNYmnBpd2/a8TS3GdmTVc2uzCoO5NVisYr4eTgyMyWQGSmBeLkOHCCb9C2kV2ayt+IgmTU5WGwWnBWOjPZLYExAIgnesafUdV9S1crdL2/ijkXxLJjcv85cTXsd76d/xYHqLEK1gdyWsqyXUeEwQ6frXvfRFVHEX/dnnEZMAeCxt3dQ09jBO3+b3ad6yD+3v83+6sM8O/Oh8+rvMOBUOicn55QuvmLFCt566y3MZjM33XQT1157bY/ni4qKePLJJ2lpacHT05N///vfaDTnRyQfDEFaf2I8wllbsIUFUTN73HDHxHkzJs6bz1bnMHaED/6eTtyeci0v7/gfnx38gZuSr+5xrQmBo5EKUl7d/QGPrHuBhybd3t275Onozl+n3MWBqiy+ylzO23s/48uM5UwPncC0kPFD6hmSSASCfVwI9nHhIuylpFabSE2DjtKaNipq29lX6sGYis9JLv6EVw/MRicenQErZBI8XdX4ejji46bG290RH/eRJISOw2e0mg5bOzl1hWTV5XG4No/PM34E7M6zMZ4RxHpGEOkeSphrEKohzqxbDW0UNJaQU19AZnUORU2liIi4KjVMD53A+IBk4jwjEQSoXf4qurw9uM+9Bc2Y/huNu2jsaOatvZ9ysDqLGI9w/m/MtQS49HxfzVYznxz4njUFWwhw8eXvEx/uJRZqtdrIL29mf04t6Tm15JU1IYrg5aZm4ZRwJif6ERmoHTA41ukaSC0/QGr5fvLqixAR8XJ0Z17ENMYEJBLlHnbagvuhIruaxZi4vgsuLFYLv+Rt4NvDK5EKEm5KuoqLIqad9snFMCDI7HtITW0GMgrqWTonus/PyeYju0irzODGUYvPq2AEg9xDMplMbNmyBZ1OB4DVaqW0tJQHHnig33Nqamp45ZVX+OGHH1AoFCxdupRx48YREWFXwRRFkTvvvJNHH32UqVOn8vLLL/POO+/w8MMPn4Zf69xhYcwc/rn9bbaV7OmxlyQIAn9cnMjd/9zEy5+l8eLdUxgbMIr5kTNYlb+JQI0fs8In97jW2IBRPDXjAf614x0eXf8S1yRcxsVRM7vVCkb5xpHoE0tmTQ6r8zezInc9y3PWEujiy2j/BEb5xBHlHjZkcy2pRMDP0+mY/YNIOo6EIP/mBV6K3AVzH6LWIKemQUd1Ywc1jR3UNHSQfaQBnaGnUaGrswO+Ho74ekQzwWM02gjokFVTZSglr6GQ/VWH7O8PAl5OHvi7+OCldkercsFJoUYukSMCJqsJnamDJn0LNbp6yluqaNDbBVGlgoQItxCuGrmAJN+RhLoG9hA4bdz0GbrD23Gbce2ggtH+qkO8vvsjTFYztyQvYW7E1F6CqW3Gdv65/W1y6gtZEDWLZQmXIZfKMVusFFa0kFXUSGZhPVlHGugwWBAEiAzUsuyiGMbG+RDq5zJgEDJYjOwqTWdL8W6y6vIBCNL4c9XISxjrn0igxu+M2AM0tRoQBPB07W1pUNRYwlt7PqWkpYKxAaO4JWlJt4TRMKcfobOoIS2rBlGECfG9J5rtJh2fZfxItEf4eamAMag70wMPPEBZWRl1dXXExcVx8OBBxo4d2NVx586djB8/Hq1WC9iba1evXs3dd98N2Cv11Go1U6dOBeCOO+6gtbW113VaW1t7PV5dXd3ruHOV0X7xhLsG882hX5gYlNKjyshdo+L+pUn8/cM9vPV9BvcuGcX1o66ksq2Gd9O/xMnBkXEBST2uF+keyotz/8b/9n7OJwe+Z0dpGrcmL+2eCQmCQIJPLAk+sTTrW9hVto89FQf4OWcdP2WvQS6VE+kWQpRHGGGuQYS5BuHp6D7km5k6NBGfq/9G9bcvIFv9IqOWPYEstndKp73DRFWDjur6DqobdVTV66is17E/t5YNe8uOOdIZd814wrxkOLrrENStGKVNVLXUkV2b36+GnqNCjbejB7GeEYS4BhDhFkK4W0i/aar2nF007/wR56Q5aCYsGvB3FEWRH7NX81XmzwRr/Hmgn5LldpOOZza/SkVrNctiluFiDubDFTnklTZRWN7S3ejr7+nIlFH+jIryJCHCExfHE6fSDGYDq/I3sTJ3A20mHb5OXiyNv5SJgaNPi5fRiVArZYiifX+rq6rParPyU/Yavj28Eo2DMw9PvoMxw31Fp8yJ7nVdVXaph6vxdFUR0kfv0c8562g36rh12pLz0sNuUAEpOzubtWvX8tRTT3HzzTcjiiJPP/30gOfU1tbi6Xm0isfLy4uMjIzun0tLS/Hw8OAvf/kLWVlZREVF9XCl7eLjjz/m9ddfH+zvc84hESRcm3g5z2x+lRU567hyxMU9nh830pelc6L5al0uvh6OXD07ij9NvI2/b3mN/+x8j/sm3Mr4wOQe52iULjw8+Q52lO7l4wPf88j6F5kYOJrFIxf0SCNpVRrmR81gftQMdKYOsuryOVybR05dASty1nXbijvKVQRpA+wVcRp/grR+BGsDUMoGdiJVhSbge83jVH/9PBUfP4rvNY+h8Oy5yeqkVhCpVvSQx+lCb7RQWddOZb2Oyrp2Kjr/O3xAis7gDDgDQUgkAl5uDnh6yvB0dcDLVY2PqzMB7q74urvgrJYP6stnbq6l7pc3cfCLxGPurQOeY7PZeCf9CzYW7WBy0BjuGHMdCpkCURRp6zBT0xlcy2vb2Nj4Ha1CNZb8ZN7f3Qg04qCQEhGg5ZLJocSEuBEX4oary9BSkEWNJbyy631q2utI8h3J5bFzifGI+E1vNNHB9r2vtOwaZowOpNXQxqu73yezJpeJQSn8YfRSnBRDV5gepjcnutcJcgVGs5X9eXXMGRvU63OgM3WwpmAL4wOTe0iRnU8MKiB5eXkhk8kICQkhLy+P+fPno9frBzynv0KILiwWC3v27OGzzz4jPj6e//znP7zwwgu88MILPc658cYbWbSo50y2urq6137UucxI7xjGBybzQ9avTAhM7tUAec3caKobdXz6azZOajkXTwzlkal3849tb/DKzve4Kekq5kfN6HGOIAhMDh5Lsl88P+esZWXuRnaV7SPFP4EFUTOJ9Yzs8X47KtSM8U/snsmarGZKmysobi6jqKmM0uYKthandq9EBAT8XLwJdw0mwj2EGI9wgrT+vVJVysBYfK9/luovn6Xyk8fwXvxnVMEjB/W+qBxkhAdoCT/OKkIURVp1JirrdFTUtVPVoOsOXEVHWtAZepoaKuRS3DVK3DVKXJ2VaJwUuDg64NLZd6RWyVHJJKi2/BuJzYZl8v9R0WhAEIzYbCI2m4jZasNktmIwWekwmFlV9iMFusOEy1KwFCfybEYaDS0G6ps70But3a8t8ypFHlKJn2ECo5JGE+LrQpi/Bn8v5yGpXx9PZVsNT2/+D2q5iqdmPECcV9SJTzoDxIS4EeDlxLcb8ggPk/LPHW/RaGjhjjHXM7OzWXuY08OJ7nWC3IG80iZMZmufvlbbS/aiNxu47LgCqvOJQQUktVrNihUriImJ4ZtvviEsLKy7JLw/vL29SUtL6/65trYWL6+jb6KnpyfBwcHEx9vdRy+55BLuvffeXtdxcXH5XcgU3ZJ0NZnV2byR+jHPzHqox6avRCJw35IkOvQW3vo+A0EQmD8hhMem3curu97nw/3fUNZSyc3JV/eqnFPLVSyNv4yLo2axKm8Dawu2sbfiYHcp+ZTgMWj7KPlUSOVEuIf02PQURZH6jkZKmsspairjSFMpGTXZbC1JBcDZwYkE7xhG+9ldY7uqyxy8Q/C7+R9Uf/UcVV88i+fFt+OcePL5a0EQ0Dg5oHFyIDa0Z3WaKIq0683UNHRQ29RBXbOe+mY9DS0GGlsNFJY309Ju7LV3Nc0hmysc8/msfRJ7384c8PVlgbnIfY9gLo8kt9aLGucGXJ0dCPByYlSUJ16uqs6qQiUv7H0BP+dInpxx/WlduXxy4HukgpRnZv6p2134bCCVCNx66Uie+WwDj6xdidJBytMzHjzvNsvPB050r5PIHcgpse+TRgf3zjhsK9lDoMbvrFtInAqDCkhPPPEE33zzDQ8//DDfffcd1113HQ8++OCA50ycOJHXXnuNxsZGVCoVa9eu5dlnn+1+PikpicbGRnJycoiJiWHjxo2MGDE0P4/zCa1Kw20py/jPrvf55tAvvYz2ZFIJf70xhec/2sub3x1Eb7BwxYwIHpp0O18d+pmfstdQ1FTK/RNu7XPvwMXBiaXxl7Eodj47S9NYX7iNTw9+z2cZP5DgHcP4gGTGBozqU7OuC0EQ8HR0x9PRvVtrrCtIZdXmk1mTw8HqLHaUpiGXyhnjl8CMsInEe8cg13jhd+Pz1P7wMnW/vIGptgS3WTf0EBw9HQiCgLNagbNaQUSgtt/jLFYbbR0mOgwWdLWVSFd8hclzJLNTljDDBlZRBFG0q4RLJUilAgq5lIK2LL4rPMKUwInccukS1Mr+04E5dYU0G1q5Ofnq0xqMrDYrB6oOc3HkjLMajLqICXfCNeEgHWYr872Hy7nPFoLMgZziRnw9HNE49Uyn17TXkddQdN6rpw8qIIWEhPDnP/+Z1tZW/vOf/wzqwt7e3jzwwAPccMMNmM1mFi9eTEJCArfddhv33nsv8fHxvPHGGzz22GPo9Xp8fHx46aWXTuV3OeeZGJRCRnU2P2avJtI9lBT/hB7Py2VSHrlpLK98uY8PfzlMc7uRmxbEsSzhciLdQ3kz9WMeXvs8N41azMywSX3eBB1kCmaETWRG2EQqWqvZWpzKztI0/pf2Oe+mf8kIryjG+CcyNmDUgE2aXXQFqWmh7kwLHY9NtJHfcITtJXvZUZrGzrJ0/Jy9uThqJtNDJ+Cz9DEa1n1Ey55fMNYcwevyB5E5nfh1TjcyqQRXZyVaJ5Hq9V9jkEqIuOoeZC79q1k0G1p57dcVRLqHcuf4ZSds3O1yaw1zPb3aYHqzAZto66GBeDb5eP93mIR2ws3z+PqXCnydvJiZcu7qof1eEeQK8suaeqmTAByszgLoVQR1vjGogFRUVMQ999xDa2sr3333HTfddBOvv/464eHhA563cOFCFi5c2OOxd999t/vfiYmJfPfddycx7POXW5KXUNxczmu7P+S5OX/u1csil0n407WjcXFU8OPmAuqb9dy/NIkx/on8c95jvJH6Mf9L+5w9FQe4bfQyPBz7brgEux36NQmXsTT+Uo40lbG7fB+p5fv5YN/XfLjvGyLdQxkXkMSEoOR+GzePRyJIiPYIJ9ojnBtGXUlq+X5W5m7kvfQv+f7wKi6Lncvs2Tfg4BtO/a//o+L9h/C6/P5B7yudbnTZO9EXHcB97i0DBiOAbzJXYLAYuWvsDYNSkZB27qdZbdYTHDk0lHIlAgI688D7tL8F5S1VbCnezWUxc1kcdzHPvr+b/3y1H4lEwvTkc7cp/feIzizQ2GrsNvo8lqza/G7ZrvOZQUn2/v3vf+eRRx7B3d0db29vrrvuOp544okzPbbfJQqZgocm345CpuCFrW/QYuhd6i6VCNy+KJ6bFsSx7UAFj729k5Z2Ix5quy7YLclLyKrN50+rn2VN/hZsndVy/SEIAmFuQSxLuJxXL36af89/gqtGXoLJauLTg9/zxxWP8dTGf7OxaEef+nT9IZfKmRw8lufn/IUnpt+Pn4s3H+3/lvtWPkmqowzvG55DolBR9dlTNG7+AtFqOfFFTyNWfRsNa9/HwTccl9HzBjy2Sd/CpiM7mRU2Cf8TqG53Edwp8ZTXh83IqSCTSHFVaajTNZz44DPM9tI9SAQJC6Nn4yCX8tgt4xgZ5sErX6SzM6PybA/vwkGmoKre3gfal55gdl1BZ9P3+VfqfSyDCkjNzc1MmjSp++drr72W9vb2Mzao3zseajf+MvlOmg2tvLjtLYwWU69jBEHgypmR/PWGMRSWN/Pwf7dRUdeORJAwL3I6/5r3OBHuIby/7yue3vQKla2D780KcPFl8YiLeemiR/nvgme4auQlNBtaeXvvZ9z+81/5YN/X1LbXD/p6giAw0juaJ2c8wBPT78NNreWdtM/5276PKbnoGtTx02ne8T0VH/0NU23poK97qjSs+whrRxseC+464V7WluLdWEUbl0TNGvT1g7UBeDt6sK5w22kXG/ZUu3XLLJ1NipsrCHDx7dbAUypkPH7rOCKDXPnnZ+lkHTn7QfNCQJApqOwMSP6ePcvsWwytNBlaCD+Pixm6GLQFqNFo7I6+dXV12GwDz8qHGZgI9xDuHX8LhY0lvLrr/X7TPpMS/XjurknoDGYe/u9Wso/Yb1JeTh48Nu1e7hxzPaUtlTy89nlW5Kw/4WrpeHycPFk84mJemf8kz8x8iNF+Cawr3Ma9q57kjdSPhxSYwF7i/vdZD/PnyXcgl8r5795PeVnRTNmsqzC11lP+wcM0bf8O0Woe0nWHii5nN+2Zm9FOvAIH75ATHp9emUm4a/CQmk0FQeDSmLnkNxwhtXz/yQ+2D1yUzrQZdaf1mieDVJBgsfVc2aocZDxx63i8XFU8/9EeGlrOfmrx944gtSuhAPi49wxIpS32lWqgxq/XeecbgwpIy5Yt49Zbb6WhoYF//etfLFmyhGuuueZMj+13z9iAUdycfDVplRl8uO+bfmfZMcFuvHzvVJzUCh57ewd7s+yrIUEQmBE2kX/Pe4JEnzg+Pfg9z25+lSZ9y5DHIggCMZ7h3Dv+Zt5Y8HfmR85gZ1k69//6NJ8d/AFDHx5JA10rxT+Rl+Y+wr3jb8FsM/NGyRbeiA4mKyKW+i1fUv7un9AXD1x+fbKYm2uoW/UWCp/wQbnc2mw2ihpLiPWMGPJrzQybSLA2gA/3fUO76fQFEJlE1isQnA1iPSOobKshr76ox+Mujgoeu2UcBpOV1789OGxHc4YRZDKa242olbJezsAVndmRoWhWnqsMKiAtXryY++67j4ULF2KxWHj22WdZtmzZmR7bBcG8yOlcGjOXtYVb+TV/U7/H+Xo48s97phDk48xzH+5hx8Gj+XtXlYaHJ93OHWOuo6ChmL+u/QcFDcUnPSY3tZYbkxbz2sXPMDloDD/nrOOBX58hrSLjxCcfg0QiYXLwGF6Z9yT3jLsZBAmfWGt4OTaE9Qoz+V8+Tc33/8TcePr2ImxGPTXfvgiiiPeiBxAGodvXZGjBbLPgexJOplKJlDvHXE+rsY330r86mSH3icFiOCWV7tPFrLDJuKm0/HPH/yhqLOnxXKC3M9fPjyUtu4a07JqzNMILA0EipbXdhMaxt3pKi6ENAQGtw/nfrzmogNTe3s6+fft4+OGHue6669i8eTMdHR0nPnGYQbEs4TLG+CfyyYHvOVST2+9xGicHnrtzElFBrrz0WRq7D1V1PycIAjPDJvHc7D8jl8p4evN/yKw5NbV2N7WWu8bdwLOzHkKtUPHS9rd4ffdHQ14JSCQSpoSM5Z/zHuOvU+4iwC2QXx3hH2FevNuSy/pPHqZm5dtYWupOabw2k57qr5/DVFeG1+UPIHcb3IyxyyHXUdFbQHQwhLkFsXjEAnaWprGzNP2krnE89bpG3FVnv+xbJVfy+PT7kAlSHln/Eu+lf9kjjbtgUihebmp+2FxwFkf5+0eQymnRGXFx6j1JaTG04uzg2MMY8nxlUL/B3/72t25lBhcXuypxX7pzw5wcEkHC3eNuwsfJk9d2f0ibsf+CEbVSzlO3jSciQMNLn6Z17yl1EaT15++zHsbL0Z2Xtr9NcVP5KY8v2iOcF+f8jSvjLmZ76V4eXv1cd9/DUJAIEpL94nl8+v38e94TXBQ5nSKtCx/6uvBI837e+Pphdv/4AvqK/CFf29xUTeXHj2Eoz8Xr8vtRhw++H6Pri2w5hfLty2MvItw1mA/3fX3KqTuDxUhFWw1B2nNjT8DfxYd/znuU2WGT2VC4nXtWPcFL294irSIDQRCZPSaIQ4UNtLQPvkJzmKEhSGW09LdCMrahcRia8eK5yqD6kIqLi3nttdcAcHZ25pFHHuHSSy89owO70FDJldw/4Vb+tu4FPj3wA3eNu6HfY9VKOU/cOp6HX9vG8x/t4ZUHpuGhPTq716o0PDrtHv627gX+s+s9Xrro0R4q4yeDTCpjSfxCUvwTeD31I57b8hpzwqdwXeIVQ/YtAnu++6bkq7k2cRHplZlsK9xOak0OO0wluGz+JyNtDozxTyRx5FwcPQP7LWe16lpoSVtFy+6fEWQKfJY8MqRgBODcKQ460ERgIAxGC01tRub4XcLbh9/glQ3fEOcwGZ3BjN5gwWCyYrJYsVhtiCIIgr1xV6mQ4aSSo3FywNNVRaC3M/6eTuTUFWATbcR4RJ7UeM4ETgpH/pByDVfEzWdNwRY2HtlJWmUGrkoNI7SjQC5wpLKFUVFnXoH8QkSQymltMRLZhzpJq6ENjfL8T9fBIAOSxWKhvb0dJyd7/btOpxvexDwDhLgGsiB6Fity1nNJ9KweVubHo3Fy4PFbxvGnV7fw8ufpPHfnpB5inm4qLXeOuYHnt77GuoKtLIgefDnzQIS7BfPinL/x1aEVrMzdwP6qw9w6eimj/eJP6npyqZzxgcmMD0ymw6xnb/FeduVuJq29ip116cg3pBFphpFKDxJcg/Fy8gRRxKprxlh9BEN5DtisOMZOwH32zchchi6146RwxEHmQO1xfT8ms5XGVoNdJ6/FQEPrUc28xlYDTa0GGluN6I1Hiw/kYX5kWNPZc8AZiahA7SBDqZAil0uRSSVIBLCJdmkjg9FCu96M2XK0MlIuk6CNzUWqkqM0eSJ2yhudK7iptVyTcBlXjbyE/VWH2FC4nR1VW1Emwk9FzQQGXH3OKEz8rpBIadWZ+rQsaTG2ndf6dccyqIB0+eWXc9VVVzFv3jwEQWDdunVcccUVZ3psFySXx1zEmvwtrMrbyB1jrx/w2EBvZ25flMB/vtrPyu1FXDq1p3LGKN84oj3CWV+4/bQFJLA3994w6krGBYzinb2f8+K2N0nxS+CGUVeekkePWq5iWuRUpkVOxWQxcfBIKnsLdpLRWk6W2MA3jQ14VFuI7DARZRKJVnvjOm4hzgkzUHgMXjXAbLHS2GqkscVAY5s92ChsTuzOK6A4bVd3EGrr6N0fppBLcXNxwM1FSaifhtExSrTO9p+1zg60ieG8mfEGd93qybyoqYOyRe8wWKht6qC0uo2csjo2dqzDUu/Jw//dSYivC/MmhDBrTCBKxdCMFc8kMom0Wz1+Y0YOr2/+kVxpJvetOszS+Et7GEcOc+oYkWOxir007MBe1KC9kFJ2t99+OxEREezatQuZTMZDDz3EtGnTzvTYLkicHBwZF5hEavl+bktZdkIr6JkpgWw7UMFnq7OZPMoft+M8dyYEJvPR/m9p6Gg67TPXaI9wXpz7CCvzNvJ91ioe+PVpZodPYVHcvEHp5A2EQqZgTOQUxkROQRRFqtpq2F91mIyqLPbVF7DLakIqdBBFLaNqD5EkFQnWBmA0Walt6qC2SU9dpxp4V4Bp6lzZtHX07oFSREmRKVtQd5jwdlMTG+qGm4sSdxcl7hqV3d5Cq8JRKRswyIiiF1/nu5LTkM984cTfEUEQcFTJCVVpCPXTYHQpREw388ilV1Fb5sDaPaW8/UMGX63N5erZUcybEIJcdm7d6EtLrVjLRvD8spv5NvtHPjnwPVl1Bdw/4dZTThUPY0cn2gOR5riiBpPFhN5i6G5cPt8Z9JRrypQppKSkdKfqmpubu91ghzm9JHjHsrU4laq22hP2FgiCwP8tiuePL23k89U53HP1qB7PdzXLVbfXnZFUikwq47LYuUwLGce3h1eyvnAbG4t2MCtsMpfGzBlQa2+wCIKAn4sPfi4+LIiehdlqZl9ZLjuLD5LdkEt23XK+zFwOZgcsTZ5Ym7yxtbqBKEUiEXB1dsBdo8TXw5G4MHfcXZS4uijtAafTQ+nDzDqKm8t45cZTm2gJgkCoWxDlLUMvZbfarKzI3UC4WzDJAdEIgQLzJ4ZyuKiBz1fn8M5PmazccYT/WxTfpx/O2aCtw8Sa3SWMifUm1MOHhyffwaq8jXx84Dv+s+t9Hpr0f8MrpdNAh80eiFyOK2po7dz3vKCKGj7++GP+9a9/YTbbZ5Zdee3s7OwzOrgLlS6BxLqOhkE1u/l5ODF/YigrtxexaHo4AV5HP5xyiX2Gaj7DOnJd9hqXxszhh6zVrCvcytrCrUwMHM2C6FmnJGsiiiJV9ToO5NdxuKiB3JImaho7ACdgNBqtiMa3BZtzDS1e5Vi8ylFIFIz0imNKSAqj/UagHKDwQhRFKttqTnlV14WLgxMFJ6Fvt61kDzXtdVw/6fYeq7ARYe48d+dE0rJreHf5IZ58ZxeTE/34w2UjcdecXKn66UAURV7/9gB6o4Vr58UA9oDclR7++MB3bCrayazwyWdtjL8X2q327/HxK6QWY5v98QupqOHTTz/lyy+//F37FZ1LdKU5hhJErp4VxbrUEr5ck8vD16d0P95uss+gnBTq0zvIfvB28uTOsddz1YgFrMzbyMaiHWwv3Uu0RzjzI2cwNmDUoJS0bTaRnJJGdmRUsudwNdUN9r43NxclsSFuXDwxhHB/LSF+Lj3y6marmUO1ueytyGBP+X72VR9ALpWT6BNHil88CT6xPZTNbaKNX/M2UdJczi3JS07Le2Cz2U6Yaj0ek9XMN4d+Idw1uNvV91gEQWBMnA+jojz5YVMBX6/PIz2nhmvmxnDJ5LDfPI1ns4m8+1MmOzOquPmSOEL9eppAXhw1kx2laazIXT8ckE4DXQFJ69RzYtUlzqy5kFJ2np6ew8HoN6Sj03ZgKOXUWmcHFk4J47uN+SyeFdl9gyjvlBX5rWXpPRzduDFpMVeNXMCmop2szt/Mf3a9h6tKw9zwqcwOn9znrK6uSc/a1BI2ppVS26RHLpOQGOnJ5dMiSIryxNfDccA9HLlUTpLvSJJ8R/KH5KVk1xeQWr6fvRUHSas4CICrUoOPsycyiZTKtloaOppI9IllVtikfq87FOo7GnFT9nbpHYhf8zZR39HInWMHdp6Vy6QsmRPN1KQA3vkpkw9WHGb1rmJuWBDHhJG+SE7BNn2wtLQb+e/XB9iTVc3l08JZNL235JIgCEwOHsNH+7+lSd+Cax+uxcMMHp3FfqvWOh+3QjJ0rpAupJTdpEmT+OKLL5g1axYODkdno8N7SGeGms5O+MF6FHVxxfQIft1ZzAc/H+aZ2ycgCAL5DUfwdvTAycHxxBc4A6jlKhZEz2J+5Az2Vx9mdf4mvj60gu+zfmVSUAoXR80k1DWQrCMN/LSlkNRDVYhAYqQn186LZfxIH9TKk9sYl0gkjPCKYoRXFDcnXU1ZSyWHanM50lRGna4Bg8VEtHsYKQkJTAoac1rKq202G0eayxgfkDzoc5r1LfyQ9SvJfvHEe8cM6hxfD0eeuHUc6Tm1fLDiEC98vJcwPw1XzIhgUqIfMunpXzGZLTbW7y3ls1+z6TBYuH1RPAsmhfb7vjl19nfpLQZcGQ5Ip0KbRYqTSo5c1nPl3dy9QrqAUnbvvPMOJpOJZ555pvux4T2kM8eR5jIcpAq8HQc2lDseJ7WCay6K5t2fDrEjo5KJCb7k1BUw2i/hxCefYSQSCaP94hntF09FazW/5m9iS3EqW4p342DyorU4ALXJj0XTI5g/MRRvt9ObYhQEgSCt/4C9XaeDgsZidKYORngNvqn184yfMNnM3Dhq8ZBeSxAEUmK9SYr2Yuv+cr5el8vLn6fz/s+HmDUmiKlJ/oT4upxyoG1o0bMpvZxVO49Q16QnNsSNP16V2KdR3LEUNBYjk8iGPLEapjdtZila594l3436ZhzlqnNC9/B0MKiAlJExNFHNYU6N7LoCIt1DT0qbasHEUDallfHW9xk4uXXQZtIx0jv6DIzy5PFz9ibeYTqZZe6UmrMQfEtxiNqHt3MlIbFuuGt7f/HOF7aX7kUmkZHkOziH3Oy6fLYU7+by2IvwPckeLqlEYMboQKYlBZCWU8PqXcX8sLmA7zbl4uZrxC/QjMrZhEJpw1Elx1Xlgr+zDzGeEb1eUxRFmtuMFFa0kFPSyMG8OnJKmgAYGe7OXVcmMjrG64RBrrGjmS3Fuxnrnzhc+n0aaDcLuDr3TuE36Jtx+x01Ig8qIJlMJrZs2YJOZ9foslqtlJaW8sADD5zRwV2ItBhaKWkuZ2n8yUkzSaUSHlw2mgf/s4U3Vm8EF86ZgGSziew+VMXX6/MoqmjBx13NXbMWMSXZj7TK/SzPWcebez7h20O/cFnsXGaETkR+Ht3MOkx6thTvZlzAKBwHUURisVl5L/0rPNRuXBE3/5RfXyIRSIn1QuHaiCoqgwNVh9GLJgpFEJukiBY5AiDITSCxq0MorC64mMNQd4TS0SalvlmP3mjX9JMIEB6g5bp5MUwZ5d+nU2lftJt0vLT9LWyiyJKT/BwP05N2o0BoHyukpo7m01Ydei4wqID0wAMPUFZWRl1dHXFxcRw8eJCxY8ee6bFdkHQpdCd4x570NQK9nXlw2Whe3rEXpdUZpXB29o+6sFhtbDtQwXcb8ymtbsPXw5H7lyYxPTkAaedex+TgsUwKGsP+qsP8kPUr76V/xY9Za1gUN4+ZoRORDcJG4myzKn8TerOBhdGzB3X8L7nrKWup5M+T70ApO7VVoc1mY3vpXn7MWk1FWzVOCkemho4lyXcE4a4htLcKFFe1UVbbZm8cbq+lyVaBzqGMeuUBcDiIRhPAqPAERniOIMxfS7i/Zsj7d7n1hbye+jENHU08NOn2k171DdOTNpPQZ8quQd90xtPQvyWD+pZnZ2ezdu1annrqKW6++WZEUeTpp58+02O7IDlYnY2zwpEw16BTus6EeF+0eSaaa5346xvb+fP1KT36k34LWnUm1qWW8MuOI9Q36wnyceZP145myij/Hrp7XQiCQLLfSJJ8R5BZk8O3h37hvfQv+TlnLVePXMjkoDHnrMR+Y0czP+esZYx/4qB0xarbavn28ErGBowipY8y76GQXZfP++lfU9pSQbA2gHvG3cz4wKQeq0t3Rwj27buwoKa9jg1FO9hYtIMDxpWUNe9kkiYFpS6JcEXwCd9zq83Kodpcfs3fzL7KTDwd3Xl8+r3Eep474rDnOwYLvVRYOkx6mg2tv3kF7ZlkUAHJy8sLmUxGSEgIeXl5zJ8/H71+2Lb4dCOKIpk1OYzwjj7lG68oinRYW5kUM5K0jXru+/cWls6J4rKp4b0cJ08nVpvIocJ6NuwtZcfBSkwWG/HhHtx1ZQKjY7wHVZYsCAIJPrHEe8dwoPowX2X8zOupH/FzzjqWJVxGku/Ic0pwVBRF3k3/Aqto44ZRV57weJto439pnyOTSE+p98lgMfLZwR9YW7AVD7Ub90+4lfGByUNWRvB28mRZwuVcNWIBeysOsqU4lZW5G/g5Zx1quYpwtyACXPzwdHTDUa5GEAT0ZgMN+mbKWirIqS9EbzbgrHBkyciFXBw186QU4IcZGHdNz/e0vNXuh/Z7sC7vYlABSa1Ws2LFCmJiYvjmm28ICwvr9kca5vRR015Ho76ZkV6nvucjImIVbQR4arjxoRm89X0Gn6zKZuWOI1wyOYzZY4L6TAGcDGaLlcNFDaQermZXZhUNLQbUShmzxgRx8aRQQnxPriRVEASSfEeS6BPH7rJ9fJn5My9se5MRXlFcn3jFOaNwvKZgC+mVmdwwajHeg5itri/czuHaPG5Pufak8//lrVX8a8c7VLbWsCBqFkvjLz3lSiu5VM7EoBQmBqXQbtRxoDqLrLp8ihpL2HhkJ0ZLT78jmUSGn7M3k4LGkOgTS7LvyPNqz+984/iAVNopTxX4O7Au72JQAemJJ57g22+/5eGHH+b777/n+uuvHy5oOAPkdcrNxHiEn+DIEyMRJDg7OFHf0Yi7RsVjt4wjo6COr9fl8fHKLD79NZuECA+SoryIC3MjzE8zqJWTKIrUNesprmqloKyZ7OJGsosbMZqsKGQSkqK9uHVhAGNH+uBwmlZiEkHCxKAUxvqPYn3Rdr49vJK/rnuByUFjWJpwGV6OQ7ecOF1k1uTw8f5vSfYdycVRM054fE17HZ8d/IEE71hmnmQj7v6qQ7yy8z0cpAoen34vIwfZuzQUnBwcmRw8hsnBYwD7311n7qDDbABRxEGmwFnhdM6mUH+PHC8TVdJcjoPMAc+z+Pk/3QwYkK6/vmfX+A033IAoikRHR/Prr79yzTXXnPEBXkiUNJcjl8jwd/E5LdeL84xkX2UmJosJhUxBQoQnCRGelFS3sjm9nNTDVXz4y2HAXlHl4arGQ6NE4+SAykGGRBCwiSJGk5W2DhNNbQZqm/QYTfYqLEGAYB8X5owJIinGi4RwD5QOZ674QCaVMS9yOlNDxrE8ey0r8zawu3w/8yKmsShuHs4Og6sCO13k1BXw0va38XP25t7xt5wwVWaz2Xg99WMEQeCOsdedVNpxU9FO3k77jBBNAH+Zchduau1Jjn5oCIKAk8Kxu9l1mN8e9+P2kHLqC4lyD/ldidcOePe47rrrAFi3bh3t7e1ceeWVSKVSli9fjovL76Mz+FyiRlePl6PHkHXQ+mN+5HRSy/fzZebP3DDqyu4bYLCPCzcuiOPGBXE0tOjJK22iqKKVqnodDa16ymvbMZos2GwigkRAqZDipFIQ4OVMcrQ3fp6OBPu4EOrnctIqCqeCWq7imoTLmBsxla8PrWBl/kY2FO1gYcxsLo6aiVp+5gVH95Qf4LXdH+Km1vLY9PtQK078mt9lrSK3vpB7xt18Us2iq/M388G+r0n0ieVPE/9vQMHYYX5fKOVCj8leh0lPaXMFi0dcfBZHdfoZMCBddNFFALz//vt89dVX3cvz6dOns2TJ6RGiHOYobcZ2tKrTF+jjvKK4KGIaK/M20GHWc/2oK3rNcN01KibEq5gQf/5tjLqrXblr7A0sjJ7NV5k/882hX1iVt4kFUTOZFzl9UL1AQ8VsNfP1oRX8nLOOCLcQ/jzlTrSDkG3JqM7m+8OrmBoyjikhQ2+ZWFewjQ/2fU2KfyIPTLh1eK/mAkPr2PNWndtQiIhIjGdvHcHzmUHlV5qamjAajahU9lmgTqejpaXljA7sQsRitQxqpj0Ubk6+GkeFmh+yfmVXWTpTg8cxyncEYa5BaFUufS73bTYbbaZ2WgxtNBlaaNK30GxopVnfQrOxjTZjO+0mHQazEaPVhMVmVyWXSqQopArUciUuDk64KrV4OLrh6+RFgMYXfxefM9K1H6jx4+HJd1DYWMK3h1fy9aEV/JSzlpmhE5kbMfW0pEBFUWR/1WE+OfAdlW01zA6fwk2jFqMYRCFBra6BV3e9j7+LD38YPfQ0987SdN5L/5Jkv3genPCH86Ina5jTi1bd829+sCoLuURGpHvoWRrRmWFQn+xLLrmEq6++mjlz5iCKIqtXr+bqq68+02O74FDIFBjMxhMfOAQkgoSl8ZcyITCZ5Tnr2FK8m7WFWwF7lZSzgyMOUvtN1Wy1oLcY0JsNiIi9rqWSKdEonXFxcEar1KByVuIgVXTbSVhFGyaLCZ1ZT6uxjbKWKpr0Ld3XkgoSgjT+RHmEEecVyQivaFxO475PuFswf51yF8VNZfySu4G1hVv5NX8T0R7hTAkeQ4p/4pCr2vRmA6nl+/k1fxNHmsrwdfLikan3MMo3blDn60wdvLD1DWyijYdPogE2qzaP11M/ItojbDgYXcBonY7+3UVRJK0yg3jvmFNuqD7XGNSn+7777mPEiBHs3r0bgL/+9a/DFuZnAHeVK5m1OWfk2sHaAO4dfzMmi4nCphJKmiuo72ik3ajDaDUB9rJfpcwBJ4UaFwdnNEpntEoXXJUatEqXk9qzMFnN1LTXUdZSRXFzGYWNxWwu3s2agi0ICIS7BZPin8BY/1GDMiMcDCGugdw9/iauG3UFm4/sYmtxKu+lf8V76V8RqPEjxiOcUNcg/Jy9cVNpUMtVSCVSzDYLrYY2anX1lLZUkl2Xz+HafCw2C37O3twx5jqmBo8bdFAwWky8tP0tqtpreXTq3UNWLShvreKf29/G28mDP0+5c1CrsWF+n2jVRzMLZS2V1OoauDz2orM4ojPDoKdbs2fPZvbswUmiDHNyhLgGsrUklYaOpjNiNw72VVisZ+Rv1kWvkMoJ1PgRqPFjYtBowK7hVtRYQkZNNvsqD/FV5s98lfkzgS6+TA4ey5SQsadFIVqrdOHy2Iu4LGYuFa3VpFVmcKgml+2le1lXuO2E5we4+DIvYhpjA5KI9ggbUlWcwWLkn9vfIqeukHsn3Dzk0uxWYzsvbn0TmUTG36bePVzddoHjfExA2tvp63UuqPifbobX/+cQo3zi+ARILd/PxVEzz/ZwzhgyiZQojzCiPMJYPGIBjfpm9pQfYEdpGl9mLuerzJ9J8IlldvhkRvslDMphdiAEQSBA40uAxpfLYy/CJtqo1zVS1V5Lk74FvdmAVbQil8hxdnDCQ+1KgIvvSe/ntRnbeXHbW+Q3HuGusTcwKWjMkM43W828vP1tGvXNPDnjgbPaZzXMuYGz6uitOq0yg0i3kN+l6eFwQDqHCND4Eu4azJqCLcyLmH7BNB26qbTMi5zOvMjp1LTXsaV4N5uKdvGvHe/gqtIwJ3wKs8OnDKqabTBIBAleTh54OQ3Nb2owlDZX8M/OYPLAhD8wPnDwRn1g3x/4X9rn5NQXcv+EW4nyCDvtYxzm/EOttqdrG/XNFDaWnLQbwLnOhXHHO4+4LHYuVW21g0op/R7xdvLk6pELeeOSv/PnyXcSpPHnm0O/cNeKR3kj9WOKm8rO9hD7RBRF1hdu55H1L2KwmnhyxgNDDkYA3x1eydbiVK4eeQkTg1LOwEiHOR9xUtlTdukVmQCMOUVB3nOV4RXSOca4gCTivWP47OAPxHlF/q6EE4eCRCIhxT+BFP8EKttq+DVvE5uLd7OleDcjvKKYHzmDFL+Ec2IVWdlWwwfpX5NRk028dwz3jLsJ7UmkU9YX2mWRpodM4Mq431fD4zCnhrPKvkJKqzyIt6MHAS6/H/26Yzn73+ZheiAIAn8ceyMquZJ/bH2DWl3D2R7SWcfP2ZtbRy/l7YXPc13iFdS01/Pyjv9xz6on+Cl7DS2G1rMyrmZ9Cx/u+4Y/rX6W/IYj3Jq8lEen3XNSwWh32T7eTf+CJN8R/N+Ya88pNfNhzj5OjgoMZgOZNbmk+Cf+bj8fwyukcxA3tZa/Tb2bZza9wuMb/smfJ99J+DmibH02cVSouTRmDguiZrK34iBrCrbwRcZPfH1oBSl+CUwLGcconxFnvFfnSFMZawq2sK04FatoY0boRJbELzzpPa69FQd5ddf7RLqF8sDE2065iGOY3x9KBzkZNTlYbBZG+8Wf7eGcMYYD0jlKqGsgT8/8Ey9se5PHNvyTJSMXcknUrOHGSOyKEOMDkxkfmEx5axUbC3ewtSSV1PL9OMpVjPZLYLR/PPFeMTg5nHq5tCiKlLZUkF6Zya7SdEpaKpBL5UwLGc+lMXPwOQVX1J2laby2+0PCXIN4ZOrdv7tGx2FOD4JExr7KdFRy5e9OLuhYhu9u5zBBWn9enPs33kn7gi8yfmLTkZ0sjlvAxKDRp02A9XwnwMWXG5IWsyxxERnVWewsS2df5SG2lqQiIBCk8SPCPZRQ1wACXHzxcvJAq9T0uwoxWIzUdzRS3VZHaUsFRY2l5NYX0mJsAyDKPYxbkpcwOXjMKfcG/Zq3iY/2f0uMZzh/mXLXbyIKO8x5iiBhf9VhEr3jftcr6OGAdI7j7ODEnyb9H/sqD/H5wR94LfVDvsj8iRmhE5gQOJoAF98zmk82Wc006ptp7GimxdhKi6ENnakDvcWAyWrGZrMBdmsIlUyJs4MjWqULHmo3/Jy9T8sKZTDIJFKS/eJJ9ovHarNS2FhCRk0OOXUF7C5LZ0PR9h7HO8pVKOVKZBIZomjDbLPQYdJ3q1Z04ePkSYJPLCO8oknyHXFaej8sNisf7/+WNQVbSPFP5P7xtwyrMAwzIBW6WpoMLST7jTzbQzmjnNGAtGLFCt566y3MZjM33XQT1157bZ/Hbd68mWeeeYaNGzeeyeGc1yT7jWSUbxz7KjNZU7CF7w//yneHV+Hp6M4Irygi3UIJ1vrj6+yFk8JxUEHKJtpoN+po1LfQqG+ivqOROl0jdboG6nQN1OoaulcGxyOXyFDIFN3irGarGaPF1EsDT6t0IcwtmGj3MEZ4RRHuFnzGV3fSYxpvwZ5ya9A3UdlaQ62uniZ9C21GHQaLEYvNgiAIyCUy1HIVLkpn3FRafJw8T6k5tj/qOxp5ddcH5NYXckn0bK5LWHROVAoOc26TVV8IwCjfEWd5JGeWMxaQampqeOWVV/jhhx9QKBQsXbqUcePGERHRM/9ZX1/Piy++eKaG8btCIkhI8U8kxT+RJn0LeysOcKA6m/SKDDYf2dV9nIPMAa3SBSe5GgeZAqlEioCAxWbBZDWjNxtoN+loM+mwibYeryGVSPFQu+Hl6MZo/wQ81G54qF1xU2nRKl1wcXDCSeHY516WTbShM3XQpG+hVtdAVVstJS3lFDaUsK/S3j+hkitJ8h3JuIBRJPmO/E32TARB6Pw9Tl2O6GQRRZFtJXv4cN/XWEUb90+4dbjPaJhBk99QTJDG/7Q1h5+rnLGAtHPnTsaPH49WqwXs3kqrV6/m7rvv7nHcY489xt13382//vWvPq/T2tpKa2vPst7q6uozMubzCVeVhrkR05gbMQ1RFKnV1VPWUkl1ez0NHU00G1rQmTowHbNykUmkOCrUeKjd7AKqSic0Di64qjS4qexWEVoHl5OesXfZpjs7OBGk9e/xXKuxnazaPPZXHSa9MoOdpWk4yBwY5z+K6aHjifOK+l05Xx5LdVstH+7/hv1Vh4lyD+Pu8Tfh4+R5toc1zDnGQPe6Iy1lzAmbcTaG9ZtyxgJSbW0tnp5Hv3ReXl5kZGT0OOaTTz4hLi6OxMT+u44//vhjXn/99TM1zN8FgiDg7eSJ9zl8k3NxcOqujLPZbGTV5bO9dC+7ytLZWpKKl6M7s8ImMyN0wkn18ZyLtBnb+TF7DavzNyOTSLkp6aoLShJqmKEx0L3OaDER4/H7ra7r4owFJFHs7adz7L5GXl4ea9eu5aOPPhpwxXPjjTeyaNGiHo9VV1f3ux81zLmPRCJhpHc0I72juSXpavZUHGB94Xa+zFzON4dWMDYgibkRU4nzjDwvGwBbDK2sytvE6vzNGCxGpoWM55qEy36XYpjDnD5OdK+L8Qg/G8P6TTljAcnb25u0tLTun2tra/HyOtqvsXr1aurq6rjyyisxm83U1taybNkyvvjiix7XcXFxwcXl9503vZBRyBRMDh7L5OCxVLZWs65wO5uLd7GrLB0/Z29mhk1iasi4cz53LooihY0lrCvcxvaSPVhsVsYFJrE47uJe6cthhumLge51KrnqjFnSnEucsYA0ceJEXnvtNRobG1GpVKxdu5Znn322+/l7772Xe++9F4Dy8nJuuOGGXsFomAsLPxcfbkxazDXxl7KrbB/ri7bz2cEf+DLjJ0b5jmBK8FiS/eLPqebRmvY6dpXtY1vJHspaKnGQOTA9dAILombidxqs04cZBuzfjfMxWzBUzugK6YEHHuCGG27AbDazePFiEhISuO2227j33nuJj//9yl8Mc2ooZAqmhY5nWuh4ylur2HxkN9tKUkmvzEQhlZPoE8dovwRG+cYN2ZL8VDFZTOQ2FJFZk8O+ykOUtlQA9obZ20YvY1JQymkvFR9mGP9TUAM5nxDEvjZ7znHKy8uZNWsWGzZsICAg4GwPZ5jfAJvNRk59ATvL0kmryKBR3wyAv4sPsR4RRLiHEuYaRICLz2mTVzJbzVS21VDSXEFRUymFDcUUNpVisVmQChKiPcJJ8U9kbMCoYRO9Yc4IXfe6J95/jmsnLz7bwznjDCs1DHNeIJFIiPOKIs4riluTl1LaUsHB6mwO1+ayqyyd9Z1KDFJBgreTJz5Onnio3dCqNLg4OOKoUOMgdUAhlSMRBETo0ZelM3XQamynydBCQ0cjte0N1HY0dBfnyKVywrSBXBw1g7hOC3iVXHkW35FhLiR+60zA2WI4IA1z3iEIAsHa/2/vTmOjKhs2jl8DbdlKKYUuPKC8AbENYYuC7CU8ULpRdkNZLAqCgCyWSNjEQMSASFKIJGyi4UNRSkGwBAHZZGmDghrW+kLCIn0ZSi1SaEs7Mz3vBx4m1hateRznHvr/JU2Yc8+cueZOOdec6cw9rdQ6uJWGRMWowqqQ/X6+rv76s278+n/Ku29X/oMC/e8vV/WgvLjG+61jq6Mm9RurWYOmatvsf9Sn9Ut6pkkLPdvk0QoYrB8Ib2lav3a8Q5NCgs+rY6ujfwVF6F9BEer9bOUxp8up++XFKnaUqMxZLofLoYr/nPX41amrgLoBauBfT438G6phQIOn9sO58G215SMDFBKean51/dS0QZNa8x8aT6fashI8TwcBwHC14S3fEoUEADAEhQQAMAKFBAAwAoUEADAChQQAMAKFBAAwAoUEADAChQQAMAKFBAAwAoUEADAChQQAMAKFBAAwAoUEADAChQQAMAKFBAAwAoUEADAChQQAMAKFBAAwAoUEADAChQQAMAKFBAAwAoUEADAChQQAMAKFBAAwAoUEADAChQQAMAKFBAAwAoUEADAChQQAMAKFBAAwAoUEADAChQQAMAKFBAAwAoUEADAChQQAMIJHCykrK0sJCQmKiYlRenp6lfGDBw9q6NChGjJkiKZPn6579+55Mg4AwGAeK6Tbt28rLS1NW7du1e7du7VtEpZtFQAADjxJREFU2zZduXLFPf7gwQMtWbJEGzdu1JdffqnIyEh99NFHnooDADCcn6d2nJ2drR49eig4OFiSFBsbq3379mnGjBmSJIfDoSVLlig8PFySFBkZqaysrCr7KSoqUlFRUaVtdrvdU7EBwCs41nmwkPLz8xUaGuq+HBYWprNnz7ovN23aVAMHDpQkPXz4UBs3btQrr7xSZT9btmzR2rVrPRUTAIzAsc6DhWRZVpVtNputyrb79+9r+vTpioqK0vDhw6uMT5gwocp2u92ucePG/X1hAcDLONZ5sJDCw8N1+vRp9+X8/HyFhYVVuk5+fr4mTZqkHj16aOHChdXuJygoSEFBQZ6KCQBG4FjnwTc19OrVSzk5OSosLFRpaakOHDig6Oho97jL5dLUqVMVHx+vRYsWVXv2BACoPTx6hpSamqqUlBQ5HA6NGjVKnTp10uTJkzVr1izZ7XZdvHhRLpdL+/fvlyR16NBB77//vqciAQAM5rFCkqSkpCQlJSVV2rZp0yZJUseOHZWbm+vJuwcA+BBWagAAGIFCAgAYgUICABiBQgIAGIFCAgAYgUICABiBQgIAGIFCAgAYgUICABiBQgIAGIFCAgAYgUICABiBQgIAGIFCAgAYgUICABiBQgIAGIFCAgAYgUICABiBQgIAGIFCAgAYgUICABiBQgIAGIFCAgAYgUICABiBQgIAGIFCAgAYgUICABiBQgIAGIFCAgAYgUICABiBQgIAGIFCAgAYgUICABiBQgIAGIFCAgAYgUICABiBQgIAGIFCAgAYgUICABiBQgIAGMGjhZSVlaWEhATFxMQoPT29yvilS5c0cuRIxcbGatGiRXI6nZ6MAwAwmMcK6fbt20pLS9PWrVu1e/dubdu2TVeuXKl0nblz52rx4sXav3+/LMtSRkaGp+IAAAznsULKzs5Wjx49FBwcrIYNGyo2Nlb79u1zj+fl5enhw4fq0qWLJGnEiBGVxh8rKirSzZs3K/3Y7XZPxQYAr+BYJ/l5asf5+fkKDQ11Xw4LC9PZs2efOB4aGqrbt29X2c+WLVu0du1aT8UEACNwrPNgIVmWVWWbzWar8fhjEyZM0PDhwytts9vtGjdu3N+QEgDMwLHOg4UUHh6u06dPuy/n5+crLCys0nhBQYH78p07dyqNPxYUFKSgoCBPxQQAI3Cs8+DfkHr16qWcnBwVFhaqtLRUBw4cUHR0tHu8ZcuWqlevns6cOSNJ2rVrV6VxAEDt4rFCCg8PV2pqqlJSUjRs2DANHjxYnTp10uTJk3Xu3DlJ0qpVq7R8+XLFx8ertLRUKSkpnooDADCcx16yk6SkpCQlJSVV2rZp0yb3v6OiopSZmenJCAAAH8FKDQAAI1BIAAAjUEgAACN49G9InuJyuSSp1n2KGcDTIyIiQn5+PnkI9hifnI07d+5IUq36wBiAp8uhQ4fUqlUrb8cwis2qbskEwz18+FDnz59XaGio6tat+7fu+/Eno9PT0xUREfG37tvTyO4dZPcOX84u1ewMyel0ym6315qzKZ98hPXr11fXrl09eh8RERE+++yF7N5Bdu/w5ex/xs/P76l9bNXhTQ0AACNQSAAAI1BIAAAjUEi/ExQUpBkzZvjkqrtk9w6ye4cvZ0f1fPJddgCApw9nSAAAI1BIAAAjUEj/cebMGY0cOVJDhw7VhAkTlJeXJ0kqKirSlClTFB8fr3HjxrlXiTBNVlaWEhISFBMTo/T0dG/H+VNr165VYmKiEhMTtXLlSklSdna2kpKSNGjQIKWlpXk54Z/74IMPNH/+fEnSpUuXNHLkSMXGxmrRokVyOp1eTle9w4cPa8SIEYqLi9OyZcsk+c6879692/0788EHH0jynXlHDVmwLMuy+vfvb126dMmyLMvavn27NXXqVMuyLGvp0qXWhg0bLMuyrC+++MKaPXu2tyI+kd1ut/r372/dvXvXKi4utpKSkqzLly97O9YTnTx50ho9erRVVlZmlZeXWykpKVZWVpbVr18/68aNG5bD4bAmTpxoHT161NtRnyg7O9vq3r27NW/ePMuyLCsxMdH64YcfLMuyrAULFljp6eleTFe9GzduWH369LFu3bpllZeXW2PGjLGOHj3qE/NeUlJidevWzfrll18sh8NhjRo1yjp58qRPzDtqjjMkSeXl5Zo9e7aioqIkSZGRkbp165Yk6ejRo+4vGRw8eLCOHTsmh8PhtazVyc7OVo8ePRQcHKyGDRsqNjZW+/bt83asJwoNDdX8+fMVEBAgf39/tW3bVteuXVPr1q31zDPPyM/PT0lJScY+hl9//VVpaWmaOnWqJCkvL08PHz5Uly5dJEkjRowwMvvXX3+thIQERUREyN/fX2lpaWrQoIFPzLvL5VJFRYVKS0vldDrldDrl5+fnE/OOmqOQJAUEBGjo0KGSpIqKCq1du1YDBw6UJOXn5ys0NFTSo2U8AgMDVVhY6LWs1fltRkkKCwvT7du3vZjoj7Vr1859ELl27Zr27t0rm83mM4/h3XffVWpqqvvtxr+f/9DQUCOzX79+XS6XS5MmTdKQIUO0detWn/ndCQwM1OzZsxUfH6/o6Gi1bNlS/v7+PjHvqLlaV0hfffWVoqOjK/28+uqrkh6dKb399ttyOp164403nriPOnXMmjarmnfu22w2LyT5ay5fvqyJEydq3rx5evbZZ6uMm/gYtm/frhYtWqhnz57ubb4y/y6XSzk5Ofrwww+VkZGhc+fO6ebNm1WuZ2L23Nxc7dixQ0eOHNGJEydUp04dnTx5ssr1TMyOmvPJxVX/G/Hx8YqPj6+yvbi4WNOmTVNwcLDWrVsnf39/SY+eMRYUFCgiIkJOp1MPHjxQcHDwP5z6j4WHh+v06dPuy/n5+QoLC/Nioj935swZzZo1SwsXLlRiYqK+/fZbFRQUuMdNfQx79+7VnTt3NHToUN27d08lJSWy2WyVst+5c8fI7M2bN1fPnj0VEhIiSRowYID27dtXacV8U+f9xIkT6tmzp5o1aybp0ctzmzdv9ol5R82Z9VTfi+bOnavWrVtrzZo1CggIcG/v16+fdu3aJenRwahr167usjJFr169lJOTo8LCQpWWlurAgQOKjo72dqwnunXrlt58802tWrVKiYmJkqTOnTvr6tWr7peV9uzZY+Rj+PTTT7Vnzx7t3r1bs2bN0r///W8tX75c9erV05kzZyRJu3btMjJ7//79deLECRUVFcnlcun48eOKi4vziXmPiopSdna2SkpKZFmWDh8+rJdeeskn5h01V+vOkKpz8eJFHTp0SM8995yGDRsm6dGZ0aZNmzR79mzNnz9fiYmJaty4sVatWuXdsNUIDw9XamqqUlJS5HA4NGrUKHXq1MnbsZ5o8+bNKisr04oVK9zbkpOTtWLFCs2cOVNlZWXq16+f4uLivJjyr1m1apXeeecdFRcXq3379kpJSfF2pCo6d+6s119/XWPHjpXD4VDv3r01ZswYtWnTxvh579Onjy5evKgRI0bI399fHTt21JQpUxQTE2P8vKPmWDoIAGAEXrIDABiBQgIAGIFCAgAYgUICABiBQgIAGIFCAp5g/vz52rx581+6zaFDh9yraB89elRr1qzxRDTgqcTnkIC/0YABAzRgwABJ0rlz53Tv3j0vJwJ8B4UEn3Pq1CmtXLlS4eHh+vnnn1W/fn2tWLFCYWFhWrp0qXJzc2Wz2dS3b1/NmTNHfn5+at++vSZMmKBTp06ppKREc+bM0aBBg7Rz507t379fGzZskKQqlx/LzMzUtm3b5HA4dO/ePU2ePFljx47Vzp07lZmZqdLSUgUGBmr48OHav3+/pk+frs8//1wul0uNGzfW2bNnFRcXp9GjR0uS1q1bp7t372rhwoX/+PwBpqKQ4JMuXryoBQsWqGvXrvrss880d+5ctWvXTsHBwcrKypLD4dC0adP0ySefaMqUKXK5XGrSpIl27typ3NxcjR8/Xl27dq3RfRUXF2v79u3auHGjmjZtqh9//FGvvfaaxo4dK0m6cuWKDh8+rMDAQO3cuVPSo1URkpOTdffuXaWmpurgwYNav369Ro8erYqKCm3fvl0ff/yxx+YH8EX8DQk+KSoqyl0oI0eO1KVLl7Rnzx6NHz9eNptNAQEBSk5O1rFjx9y3GT9+vPu2zz//vL777rsa3VejRo20fv16ffPNN1q9erXWr1+vkpIS93hkZKQCAwP/cB/9+/dXQUGBcnNzdfz4cbVq1Upt2rT5qw8beKpRSPBJv12hWnr0FRC/XwWroqKi0lda//Y2FRUVqlu3rmw2W6XbVffli3a7XcOGDVNeXp5efPFFvfXWW5XGGzZsWKO8ycnJyszM1I4dO5ScnPyntwFqGwoJPik3N1e5ubmSpG3btumFF15QfHy80tPTZVmWysvLlZGRoV69erlv83jV9gsXLujq1avq1q2bQkJCdPnyZZWVlcnpdOrIkSNV7uv8+fMKCQnR9OnT1bdvX/d1XC7XH2asW7dupUJ8+eWXdfDgQV24cEExMTH/7RQATx3+hgSf1Lx5c61evVp5eXkKCQnRypUr1ahRIy1btkxJSUlyOBzq27ev+2vGJen7779XRkaGKioqlJaWpiZNmqh3797q1q2b4uPjFRoaqu7du+unn36qdF+9e/dWZmam4uLi1KBBA3Xq1EkhISG6fv36H2bs2bOnZs6cKX9/fy1evFjNmjVThw4d1LZtW+O+wgQwAat9w+ecOnVK7733nvbs2VPj20RGRionJ8f95XTeUFhYqFGjRik9PV0tWrTwWg7AVLxkB/wDMjIylJCQoJSUFMoIeALOkAAARuAMCQBgBAoJAGAECgkAYAQKCQBgBAoJAGAECgkAYIT/B5VRJ992K6JTAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.set_theme(style=\"ticks\")\n", + "\n", + "# Show the joint distribution using kernel density estimation\n", + "g = sns.jointplot(\n", + " data=df,\n", + " x=\"popularity\", y=\"danceability\", hue=\"artist_top_genre\",\n", + " kind=\"kde\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "సాధారణంగా, ఈ మూడు జానర్లు వారి ప్రాచుర్యం మరియు నృత్య సామర్థ్యం పరంగా సరిపోతాయి. అదే అక్షాల స్కాటర్‌ప్లాట్ సమానమైన సమీకరణ నమూనాను చూపిస్తుంది. ప్రతి జానర్‌కు సంబంధించిన డేటా పంపిణీని తనిఖీ చేయడానికి స్కాటర్‌ప్లాట్ ప్రయత్నించండి.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jenniferlooper/Library/Python/3.8/lib/python/site-packages/seaborn/axisgrid.py:337: UserWarning: The `size` parameter has been renamed to `height`; please update your code.\n", + " warnings.warn(msg, UserWarning)\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.FacetGrid(df, hue=\"artist_top_genre\", size=5) \\\n", + " .map(plt.scatter, \"popularity\", \"danceability\") \\\n", + " .add_legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + }, + "kernelspec": { + "display_name": "Python 3.7.0 64-bit ('3.7')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.9" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "c61deff2839902ac8cb4ed411eb10fee", + "translation_date": "2025-12-19T16:57:20+00:00", + "source_file": "5-Clustering/1-Visualize/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/te/5-Clustering/2-K-Means/README.md b/translations/te/5-Clustering/2-K-Means/README.md new file mode 100644 index 000000000..49eeefafe --- /dev/null +++ b/translations/te/5-Clustering/2-K-Means/README.md @@ -0,0 +1,263 @@ + +# K-Means క్లస్టరింగ్ + +## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +ఈ పాఠంలో, మీరు Scikit-learn మరియు మీరు ముందుగా దిగుమతి చేసుకున్న నైజీరియన్ సంగీత డేటాసెట్ ఉపయోగించి క్లస్టర్లను ఎలా సృష్టించాలో నేర్చుకుంటారు. మేము K-Means క్లస్టరింగ్ యొక్క ప్రాథమిక అంశాలను కవర్ చేస్తాము. మీరు ముందుగా నేర్చుకున్నట్లుగా, క్లస్టర్లతో పని చేయడానికి అనేక మార్గాలు ఉన్నాయి మరియు మీరు ఉపయోగించే పద్ధతి మీ డేటాపై ఆధారపడి ఉంటుంది. K-Means ను ప్రయత్నిస్తాము ఎందుకంటే ఇది అత్యంత సాధారణ క్లస్టరింగ్ సాంకేతికత. మొదలు పెడదాం! + +మీరు నేర్చుకునే పదాలు: + +- సిల్హౌట్ స్కోరింగ్ +- ఎల్బో పద్ధతి +- ఇనర్షియా +- వైవిధ్యం + +## పరిచయం + +[K-Means క్లస్టరింగ్](https://wikipedia.org/wiki/K-means_clustering) సిగ్నల్ ప్రాసెసింగ్ డొమైన్ నుండి ఉద్భవించిన పద్ధతి. ఇది డేటా సమూహాలను 'k' క్లస్టర్లుగా విభజించడానికి మరియు విభజించడానికి ఉపయోగిస్తారు, ఒక శ్రేణి పరిశీలనల ద్వారా. ప్రతి పరిశీలన ఒక నిర్దిష్ట డేటాపాయింట్‌ను దాని సమీప 'మీన' లేదా క్లస్టర్ యొక్క కేంద్ర బిందువు దగ్గరగా సమూహీకరించడానికి పనిచేస్తుంది. + +క్లస్టర్లు [Voronoi డయాగ్రామ్స్](https://wikipedia.org/wiki/Voronoi_diagram) గా దృశ్యమానమవుతాయి, ఇవి ఒక బిందువు (లేదా 'సీడ్') మరియు దాని సంబంధిత ప్రాంతాన్ని కలిగి ఉంటాయి. + +![voronoi diagram](../../../../translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.te.png) + +> ఇన్ఫోగ్రాఫిక్ [Jen Looper](https://twitter.com/jenlooper) ద్వారా + +K-Means క్లస్టరింగ్ ప్రక్రియ [మూడు దశల ప్రక్రియలో అమలు అవుతుంది](https://scikit-learn.org/stable/modules/clustering.html#k-means): + +1. అల్గోరిథం డేటాసెట్ నుండి నమూనాలు తీసుకుని k-సంఖ్యా కేంద్ర బిందువులను ఎంచుకుంటుంది. దీని తర్వాత, ఇది లూప్ చేస్తుంది: + 1. ప్రతి నమూనాను సమీప సెంట్రాయిడ్‌కు కేటాయిస్తుంది. + 2. గత సెంట్రాయిడ్‌లకు కేటాయించిన అన్ని నమూనాల సగటు విలువ తీసుకుని కొత్త సెంట్రాయిడ్‌లను సృష్టిస్తుంది. + 3. ఆపై, కొత్త మరియు పాత సెంట్రాయిడ్‌ల మధ్య తేడాను లెక్కించి, సెంట్రాయిడ్‌లు స్థిరపడేవరకు పునరావృతం చేస్తుంది. + +K-Means ఉపయోగించడంలో ఒక లోపం ఏమిటంటే, మీరు 'k' అంటే సెంట్రాయిడ్‌ల సంఖ్యను నిర్ణయించాలి. అదృష్టవశాత్తు 'ఎల్బో పద్ధతి' మంచి ప్రారంభ విలువను అంచనా వేయడంలో సహాయపడుతుంది. మీరు దీన్ని కొద్దిసేపట్లో ప్రయత్నిస్తారు. + +## ముందస్తు అవసరాలు + +ఈ పాఠంలో మీరు [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/2-K-Means/notebook.ipynb) ఫైల్‌లో పని చేస్తారు, ఇందులో మీరు గత పాఠంలో చేసిన డేటా దిగుమతి మరియు ప్రాథమిక శుభ్రపరిచే పనులు ఉన్నాయి. + +## వ్యాయామం - సిద్ధం కావడం + +మళ్లీ పాటల డేటాను పరిశీలించడం ప్రారంభించండి. + +1. ప్రతి కాలమ్ కోసం `boxplot()` పిలిచి బాక్స్‌ప్లాట్ సృష్టించండి: + + ```python + plt.figure(figsize=(20,20), dpi=200) + + plt.subplot(4,3,1) + sns.boxplot(x = 'popularity', data = df) + + plt.subplot(4,3,2) + sns.boxplot(x = 'acousticness', data = df) + + plt.subplot(4,3,3) + sns.boxplot(x = 'energy', data = df) + + plt.subplot(4,3,4) + sns.boxplot(x = 'instrumentalness', data = df) + + plt.subplot(4,3,5) + sns.boxplot(x = 'liveness', data = df) + + plt.subplot(4,3,6) + sns.boxplot(x = 'loudness', data = df) + + plt.subplot(4,3,7) + sns.boxplot(x = 'speechiness', data = df) + + plt.subplot(4,3,8) + sns.boxplot(x = 'tempo', data = df) + + plt.subplot(4,3,9) + sns.boxplot(x = 'time_signature', data = df) + + plt.subplot(4,3,10) + sns.boxplot(x = 'danceability', data = df) + + plt.subplot(4,3,11) + sns.boxplot(x = 'length', data = df) + + plt.subplot(4,3,12) + sns.boxplot(x = 'release_date', data = df) + ``` + + ఈ డేటా కొంత శబ్దంగా ఉంది: ప్రతి కాలమ్‌ను బాక్స్‌ప్లాట్‌గా పరిశీలించడం ద్వారా మీరు అవుట్లయర్స్‌ను చూడవచ్చు. + + ![outliers](../../../../translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.te.png) + +మీరు డేటాసెట్‌ను పరిశీలించి అవుట్లయర్స్‌ను తొలగించవచ్చు, కానీ అది డేటాను చాలా తక్కువగా చేస్తుంది. + +1. ఇప్పటికీ, మీరు క్లస్టరింగ్ వ్యాయామం కోసం ఉపయోగించబోయే కాలమ్‌లను ఎంచుకోండి. సమాన పరిధులున్న వాటిని ఎంచుకోండి మరియు `artist_top_genre` కాలమ్‌ను సంఖ్యాత్మక డేటాగా ఎన్‌కోడ్ చేయండి: + + ```python + from sklearn.preprocessing import LabelEncoder + le = LabelEncoder() + + X = df.loc[:, ('artist_top_genre','popularity','danceability','acousticness','loudness','energy')] + + y = df['artist_top_genre'] + + X['artist_top_genre'] = le.fit_transform(X['artist_top_genre']) + + y = le.transform(y) + ``` + +1. ఇప్పుడు మీరు ఎన్ని క్లస్టర్లను లక్ష్యంగా పెట్టుకోవాలో ఎంచుకోవాలి. మీరు డేటాసెట్ నుండి 3 పాటల జానర్లను తీసుకున్నారని తెలుసు, కాబట్టి 3 ను ప్రయత్నిద్దాం: + + ```python + from sklearn.cluster import KMeans + + nclusters = 3 + seed = 0 + + km = KMeans(n_clusters=nclusters, random_state=seed) + km.fit(X) + + # ప్రతి డేటా పాయింట్ కోసం క్లస్టర్‌ను అంచనా వేయండి + + y_cluster_kmeans = km.predict(X) + y_cluster_kmeans + ``` + +మీరు డేటాఫ్రేమ్ యొక్క ప్రతి వరుసకు అంచనా వేయబడిన క్లస్టర్ల (0, 1, లేదా 2)తో కూడిన ఒక అర్రే ప్రింట్ అవుతుందని చూస్తారు. + +1. ఈ అర్రే ఉపయోగించి 'సిల్హౌట్ స్కోర్' లెక్కించండి: + + ```python + from sklearn import metrics + score = metrics.silhouette_score(X, y_cluster_kmeans) + score + ``` + +## సిల్హౌట్ స్కోర్ + +1కి దగ్గరగా ఉన్న సిల్హౌట్ స్కోర్ కోసం చూడండి. ఈ స్కోర్ -1 నుండి 1 వరకు మారుతుంది, మరియు స్కోర్ 1 అయితే, క్లస్టర్ సాంద్రంగా ఉంటుంది మరియు ఇతర క్లస్టర్ల నుండి బాగా వేరుగా ఉంటుంది. 0కి సమీపమైన విలువ సమీప క్లస్టర్ల మధ్య నమూనాలు నిర్ణయ సరిహద్దు దగ్గరగా ఉండే ఓవర్‌ల్యాపింగ్ క్లస్టర్లను సూచిస్తుంది. [(మూలం)](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam) + +మన స్కోర్ **.53** ఉంది, అంటే మధ్యలో ఉంది. ఇది మన డేటా ఈ రకమైన క్లస్టరింగ్‌కు ప్రత్యేకంగా అనుకూలంగా లేనట్టుగా సూచిస్తుంది, కానీ మనం కొనసాగుదాం. + +### వ్యాయామం - మోడల్ నిర్మాణం + +1. `KMeans` ను దిగుమతి చేసుకుని క్లస్టరింగ్ ప్రక్రియ ప్రారంభించండి. + + ```python + from sklearn.cluster import KMeans + wcss = [] + + for i in range(1, 11): + kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42) + kmeans.fit(X) + wcss.append(kmeans.inertia_) + + ``` + + ఇక్కడ కొన్ని భాగాలు వివరణ అవసరం. + + > 🎓 range: ఇవి క్లస్టరింగ్ ప్రక్రియ యొక్క పునరావృతాలు + + > 🎓 random_state: "సెంట్రాయిడ్ ప్రారంభానికి రాండమ్ నంబర్ జనరేషన్‌ను నిర్ణయిస్తుంది." [మూలం](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans) + + > 🎓 WCSS: "within-cluster sums of squares" అనేది క్లస్టర్‌లోని అన్ని పాయింట్ల సెంట్రాయిడ్‌కు సగటు చతురస్ర దూరాన్ని కొలుస్తుంది. [మూలం](https://medium.com/@ODSC/unsupervised-learning-evaluating-clusters-bd47eed175ce). + + > 🎓 ఇనర్షియా: K-Means అల్గోరిథమ్స్ 'ఇనర్షియా'ని తగ్గించేలా సెంట్రాయిడ్‌లను ఎంచుకోవడానికి ప్రయత్నిస్తాయి, ఇది "క్లస్టర్లు అంతర్గతంగా ఎంత సुसంబద్ధంగా ఉన్నాయో కొలిచే కొలమానం." [మూలం](https://scikit-learn.org/stable/modules/clustering.html). ఈ విలువ ప్రతి పునరావృతంలో wcss వేరియబుల్‌కు జతచేయబడుతుంది. + + > 🎓 k-means++: [Scikit-learn](https://scikit-learn.org/stable/modules/clustering.html#k-means)లో మీరు 'k-means++' ఆప్టిమైజేషన్‌ను ఉపయోగించవచ్చు, ఇది "సెంట్రాయిడ్‌లను సాధారణంగా ఒకరినొకరు దూరంగా ప్రారంభిస్తుంది, ఇది రాండమ్ ప్రారంభం కంటే మెరుగైన ఫలితాలు ఇస్తుంది." + +### ఎల్బో పద్ధతి + +ముందుగా, మీరు 3 పాటల జానర్లను లక్ష్యంగా పెట్టుకున్నందున 3 క్లస్టర్లను ఎంచుకోవాలని అనుకున్నారు. కానీ అది నిజమేనా? + +1. 'ఎల్బో పద్ధతి' ఉపయోగించి నిర్ధారించండి. + + ```python + plt.figure(figsize=(10,5)) + sns.lineplot(x=range(1, 11), y=wcss, marker='o', color='red') + plt.title('Elbow') + plt.xlabel('Number of clusters') + plt.ylabel('WCSS') + plt.show() + ``` + + మీరు గత దశలో నిర్మించిన `wcss` వేరియబుల్ ఉపయోగించి ఒక చార్ట్ సృష్టించండి, ఇందులో ఎల్బోలో 'వంక' ఎక్కడ ఉందో చూపిస్తుంది, ఇది ఉత్తమ క్లస్టర్ సంఖ్యను సూచిస్తుంది. కావచ్చు అది **3**నే! + + ![elbow method](../../../../translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.te.png) + +## వ్యాయామం - క్లస్టర్లను ప్రదర్శించండి + +1. మళ్లీ ప్రక్రియను ప్రయత్నించండి, ఈసారి మూడు క్లస్టర్లను సెట్ చేసి, క్లస్టర్లను స్కాటర్‌ప్లాట్‌గా ప్రదర్శించండి: + + ```python + from sklearn.cluster import KMeans + kmeans = KMeans(n_clusters = 3) + kmeans.fit(X) + labels = kmeans.predict(X) + plt.scatter(df['popularity'],df['danceability'],c = labels) + plt.xlabel('popularity') + plt.ylabel('danceability') + plt.show() + ``` + +1. మోడల్ యొక్క ఖచ్చితత్వాన్ని తనిఖీ చేయండి: + + ```python + labels = kmeans.labels_ + + correct_labels = sum(y == labels) + + print("Result: %d out of %d samples were correctly labeled." % (correct_labels, y.size)) + + print('Accuracy score: {0:0.2f}'. format(correct_labels/float(y.size))) + ``` + + ఈ మోడల్ యొక్క ఖచ్చితత్వం చాలా మంచిది కాదు, మరియు క్లస్టర్ల ఆకారం మీకు కారణాన్ని సూచిస్తుంది. + + ![clusters](../../../../translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.te.png) + + ఈ డేటా చాలా అసమతుల్యంగా ఉంది, తక్కువ సంబంధం కలిగి ఉంది మరియు కాలమ్ విలువల మధ్య చాలా వైవిధ్యం ఉంది కాబట్టి బాగా క్లస్టర్ చేయడం కష్టం. వాస్తవానికి, ఏర్పడిన క్లస్టర్లు పై పేర్కొన్న మూడు జానర్ వర్గాల ప్రభావంతో లేదా వక్రీకృతమై ఉండవచ్చు. అది ఒక నేర్చుకునే ప్రక్రియ! + + Scikit-learn డాక్యుమెంటేషన్‌లో, మీరు ఇలాంటి మోడల్, అంటే క్లస్టర్లు బాగా వేరుగా లేని మోడల్, 'వైవిధ్యం' సమస్యను కలిగి ఉందని చూడవచ్చు: + + ![problem models](../../../../translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.te.png) + > Scikit-learn నుండి ఇన్ఫోగ్రాఫిక్ + +## వైవిధ్యం + +వైవిధ్యం అంటే "సగటు నుండి చతురస్ర తేడాల సగటు" [(మూలం)](https://www.mathsisfun.com/data/standard-deviation.html). ఈ క్లస్టరింగ్ సమస్య సందర్భంలో, ఇది మన డేటాసెట్ సంఖ్యలు సగటు నుండి కొంత ఎక్కువగా విభిన్నమవుతాయని సూచిస్తుంది. + +✅ ఇది ఈ సమస్యను సరిచేయడానికి మీరు చేయగల అన్ని మార్గాల గురించి ఆలోచించడానికి మంచి సమయం. డేటాను మరింత సవరించాలా? వేరే కాలమ్‌లను ఉపయోగించాలా? వేరే అల్గోరిథమ్ ఉపయోగించాలా? సూచన: [మీ డేటాను స్కేల్ చేయడం](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/) ద్వారా సాధారణీకరించి ఇతర కాలమ్‌లను పరీక్షించండి. + +> ఈ '[వైవిధ్యం క్యాల్క్యులేటర్](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' ను ప్రయత్నించి ఈ భావనను మరింత అర్థం చేసుకోండి. + +--- + +## 🚀సవాలు + +ఈ నోట్‌బుక్‌తో కొంత సమయం గడపండి, పారామితులను సవరించండి. డేటాను మరింత శుభ్రపరిచి (ఉదాహరణకు అవుట్లయర్స్ తొలగించడం) మోడల్ ఖచ్చితత్వాన్ని మెరుగుపరచగలరా? మీరు కొన్ని డేటా నమూనాలకు ఎక్కువ బరువు ఇవ్వడానికి వెయిట్స్ ఉపయోగించవచ్చు. మరేమి చేయగలరు మంచి క్లస్టర్లు సృష్టించడానికి? + +సూచన: మీ డేటాను స్కేల్ చేయడానికి ప్రయత్నించండి. నోట్‌బుక్‌లో కామెంట్ చేసిన కోడ్ ఉంది, ఇది డేటా కాలమ్‌లను పరస్పరం సమాన పరిధిలో ఉండేలా స్టాండర్డ్ స్కేలింగ్ జోడిస్తుంది. మీరు గమనిస్తారు సిల్హౌట్ స్కోర్ తగ్గినా, ఎల్బో గ్రాఫ్‌లో 'కింక్' సాఫీగా మారుతుంది. ఇది డేటాను స్కేల్ చేయకుండా వదిలివేయడం వల్ల తక్కువ వైవిధ్యం ఉన్న డేటాకు ఎక్కువ బరువు వస్తుంది. ఈ సమస్య గురించి మరింత చదవండి [ఇక్కడ](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226). + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +K-Means సిమ్యులేటర్‌ను చూడండి [ఇలా ఒకటి](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/). మీరు ఈ టూల్ ఉపయోగించి నమూనా డేటా పాయింట్లను దృశ్యమానపరచవచ్చు మరియు దాని సెంట్రాయిడ్‌లను నిర్ణయించవచ్చు. మీరు డేటా రాండమ్నెస్, క్లస్టర్ల సంఖ్య మరియు సెంట్రాయిడ్‌ల సంఖ్యను సవరించవచ్చు. ఇది డేటాను ఎలా సమూహీకరించవచ్చో మీకు ఆలోచన ఇస్తుందా? + +అలాగే, స్టాన్ఫోర్డ్ నుండి [K-Means పై ఈ హ్యాండౌట్](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html) ను చూడండి. + +## అసైన్‌మెంట్ + +[వేరే క్లస్టరింగ్ పద్ధతులను ప్రయత్నించండి](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/5-Clustering/2-K-Means/assignment.md b/translations/te/5-Clustering/2-K-Means/assignment.md new file mode 100644 index 000000000..8cf134616 --- /dev/null +++ b/translations/te/5-Clustering/2-K-Means/assignment.md @@ -0,0 +1,27 @@ + +# వేరే క్లస్టరింగ్ పద్ధతులను ప్రయత్నించండి + +## సూచనలు + +ఈ పాఠంలో మీరు K-Means క్లస్టరింగ్ గురించి నేర్చుకున్నారు. కొన్ని సార్లు K-Means మీ డేటాకు అనుకూలంగా ఉండదు. ఈ పాఠాల నుండి లేదా మరేదైనా మూలం నుండి డేటాను ఉపయోగించి (మీ మూలాన్ని సూచించండి) ఒక నోట్‌బుక్ సృష్టించి K-Means ఉపయోగించకుండా వేరే క్లస్టరింగ్ పద్ధతిని చూపండి. మీరు ఏమి నేర్చుకున్నారు? + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైనది | సరిపడినది | మెరుగుదల అవసరం | +| -------- | --------------------------------------------------------------- | -------------------------------------------------------------------- | ---------------------------- | +| | బాగా డాక్యుమెంటెడ్ క్లస్టరింగ్ మోడల్‌తో కూడిన నోట్‌బుక్ అందించబడింది | మంచి డాక్యుమెంటేషన్ లేకుండా మరియు/లేదా అసంపూర్ణంగా ఉన్న నోట్‌బుక్ అందించబడింది | అసంపూర్ణ పని సమర్పించబడింది | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/5-Clustering/2-K-Means/notebook.ipynb b/translations/te/5-Clustering/2-K-Means/notebook.ipynb new file mode 100644 index 000000000..62cd5eaf8 --- /dev/null +++ b/translations/te/5-Clustering/2-K-Means/notebook.ipynb @@ -0,0 +1,233 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "3e5c8ab363e8d88f566d4365efc7e0bd", + "translation_date": "2025-12-19T16:50:15+00:00", + "source_file": "5-Clustering/2-K-Means/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# స్పాటిఫై నుండి సేకరించిన నైజీరియన్ సంగీతం - ఒక విశ్లేషణ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: seaborn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.11.1)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.19.2)\n", + "Requirement already satisfied: pandas>=0.23 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.1.2)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.4.1)\n", + "Requirement already satisfied: matplotlib>=2.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (3.1.0)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2.8.0)\n", + "Requirement already satisfied: pytz>=2017.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2019.1)\n", + "Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (0.10.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (1.1.0)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (2.4.0)\n", + "Requirement already satisfied: six>=1.5 in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from python-dateutil>=2.7.3->pandas>=0.23->seaborn) (1.12.0)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib>=2.2->seaborn) (45.1.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install seaborn" + ] + }, + { + "source": [ + "మనం చివరి పాఠంలో ముగించిన చోట నుండి ప్రారంభించండి, డేటా దిగుమతి చేసుకుని ఫిల్టర్ చేసిన స్థితిలో.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "0 Sparky Mandy & The Jungle \n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "2 LITT! LITT! \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "0 Cruel Santino alternative r&b 2019 144000 48 \n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "2 AYLØ indie r&b 2018 207758 40 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "\n", + " speechiness tempo time_signature \n", + "0 0.0829 133.015 5 \n", + "1 0.3600 129.993 3 \n", + "2 0.0424 130.005 4 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
0SparkyMandy & The JungleCruel Santinoalternative r&b2019144000480.6660.85100.4200.5340000.1100-6.6990.0829133.0155
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
2LITT!LITT!AYLØindie r&b2018207758400.8360.27200.5640.0005370.1100-7.1270.0424130.0054
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
\n
" + }, + "metadata": {}, + "execution_count": 6 + } + ], + "source": [ + "\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "\n", + "df = pd.read_csv(\"../data/nigerian-songs.csv\")\n", + "df.head()" + ] + }, + { + "source": [ + "మేము కేవలం 3 జానర్లపై మాత్రమే దృష్టి సారించబోతున్నాము. బహుశా మేము 3 క్లస్టర్లు నిర్మించగలము!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "metadata": {}, + "execution_count": 7 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n", + "df = df[(df['popularity'] > 0)]\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "5 Kasala Pioneers \n", + "6 Pull Up Everything Pretty \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "5 DRB Lasgidi nigerian pop 2020 184800 26 \n", + "6 prettyboydo nigerian pop 2018 202648 29 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "5 0.803 0.1270 0.525 0.000007 0.1290 -10.034 \n", + "6 0.818 0.4520 0.587 0.004490 0.5900 -9.840 \n", + "\n", + " speechiness tempo time_signature \n", + "1 0.3600 129.993 3 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 \n", + "5 0.1970 100.103 4 \n", + "6 0.1990 95.842 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
5KasalaPioneersDRB Lasgidinigerian pop2020184800260.8030.12700.5250.0000070.1290-10.0340.1970100.1034
6Pull UpEverything Prettyprettyboydonigerian pop2018202648290.8180.45200.5870.0044900.5900-9.8400.199095.8424
\n
" + }, + "metadata": {}, + "execution_count": 8 + } + ], + "source": [ + "df.head()" + ] + }, + { + "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/5-Clustering/2-K-Means/solution/Julia/README.md b/translations/te/5-Clustering/2-K-Means/solution/Julia/README.md new file mode 100644 index 000000000..b18f0511d --- /dev/null +++ b/translations/te/5-Clustering/2-K-Means/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/5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb b/translations/te/5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb new file mode 100644 index 000000000..b613cd0be --- /dev/null +++ b/translations/te/5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb @@ -0,0 +1,642 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "anaconda-cloud": "", + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "3.4.1" + }, + "colab": { + "name": "lesson_14.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "coopTranslator": { + "original_hash": "ad65fb4aad0a156b42216e4929f490fc", + "translation_date": "2025-12-19T16:53:53+00:00", + "source_file": "5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb", + "language_code": "te" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "GULATlQXLXyR" + }, + "source": [ + "## R మరియు Tidy డేటా సూత్రాలను ఉపయోగించి K-Means క్లస్టరింగ్‌ను అన్వేషించండి.\n", + "\n", + "### [**పూర్వ-లెక్చర్ క్విజ్**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/29/)\n", + "\n", + "ఈ పాఠంలో, మీరు Tidymodels ప్యాకేజీ మరియు R ఎకోసిస్టమ్‌లోని ఇతర ప్యాకేజీలను (మేము వాటిని స్నేహితులు 🧑‍🤝‍🧑 అని పిలుస్తాము) ఉపయోగించి క్లస్టర్లను ఎలా సృష్టించాలో నేర్చుకుంటారు, మరియు మీరు ముందుగా దిగుమతి చేసిన నైజీరియన్ సంగీత డేటాసెట్‌ను ఉపయోగిస్తారు. మేము K-Means క్లస్టరింగ్ యొక్క ప్రాథమిక అంశాలను కవర్ చేస్తాము. మీరు ముందుగా నేర్చుకున్నట్లుగా, క్లస్టర్లతో పని చేయడానికి అనేక మార్గాలు ఉన్నాయి మరియు మీరు ఉపయోగించే పద్ధతి మీ డేటాపై ఆధారపడి ఉంటుంది. K-Means ను ప్రయత్నిస్తాము ఎందుకంటే ఇది అత్యంత సాధారణ క్లస్టరింగ్ సాంకేతికత. మొదలు పెడదాం!\n", + "\n", + "మీరు నేర్చుకునే పదాలు:\n", + "\n", + "- సిల్హౌట్ స్కోరింగ్\n", + "\n", + "- ఎల్బో పద్ధతి\n", + "\n", + "- ఇనర్షియా\n", + "\n", + "- వైవిధ్యం\n", + "\n", + "### **పరిచయం**\n", + "\n", + "[K-Means క్లస్టరింగ్](https://wikipedia.org/wiki/K-means_clustering) సిగ్నల్ ప్రాసెసింగ్ డొమైన్ నుండి ఉద్భవించిన పద్ధతి. ఇది డేటా గుంపులను వారి లక్షణాలలో సారూప్యతల ఆధారంగా `k క్లస్టర్లుగా` విభజించడానికి ఉపయోగిస్తారు.\n", + "\n", + "క్లస్టర్లు [Voronoi డయాగ్రామ్స్](https://wikipedia.org/wiki/Voronoi_diagram) గా దృశ్యమానమవుతాయి, ఇవి ఒక పాయింట్ (లేదా 'సీడ్') మరియు దాని సంబంధిత ప్రాంతాన్ని కలిగి ఉంటాయి.\n", + "\n", + "

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

ఇన్ఫోగ్రాఫిక్ జెన్ లూపర్ ద్వారా
\n", + "\n", + "\n", + "K-Means క్లస్టరింగ్ క్రింది దశలను కలిగి ఉంటుంది:\n", + "\n", + "1. డేటా శాస్త్రవేత్త మొదట సృష్టించవలసిన క్లస్టర్ల సంఖ్యను నిర్దేశిస్తారు.\n", + "\n", + "2. తరువాత, అల్గోరిథం డేటా సెట్ నుండి యాదృచ్ఛికంగా K పరిశీలనలను ఎంపిక చేసి అవి క్లస్టర్ల ప్రారంభ కేంద్రాలుగా (అంటే, సెంట్రాయిడ్లు) ఉపయోగిస్తారు.\n", + "\n", + "3. తరువాత, మిగిలిన ప్రతి పరిశీలనను దాని సమీప సెంట్రాయిడ్‌కు కేటాయిస్తారు.\n", + "\n", + "4. తరువాత, ప్రతి క్లస్టర్ యొక్క కొత్త సగటును లెక్కించి సెంట్రాయిడ్‌ను ఆ సగటుకు తరలిస్తారు.\n", + "\n", + "5. ఇప్పుడు కేంద్రాలు పునః లెక్కించబడ్డాయి, ప్రతి పరిశీలనను మరో క్లస్టర్‌కు సమీపంగా ఉందా అని మళ్లీ తనిఖీ చేస్తారు. అన్ని అంశాలను నవీకరించిన క్లస్టర్ సగటులను ఉపయోగించి మళ్లీ కేటాయిస్తారు. క్లస్టర్ కేటాయింపు మరియు సెంట్రాయిడ్ నవీకరణ దశలను పునరావృతంగా చేస్తారు, క్లస్టర్ కేటాయింపులు మారడం ఆగేవరకు (అంటే, సమీకరణ సాధించబడినప్పుడు). సాధారణంగా, ప్రతి కొత్త పునరావృతం సెంట్రాయిడ్‌ల కదలిక తక్కువగా ఉన్నప్పుడు మరియు క్లస్టర్లు స్థిరంగా ఉన్నప్పుడు అల్గోరిథం ముగుస్తుంది.\n", + "\n", + "
\n", + "\n", + "> ప్రారంభ సెంట్రాయిడ్‌లుగా ఉపయోగించే యాదృచ్ఛిక k పరిశీలనల కారణంగా, ప్రతి సారి ఈ ప్రక్రియను అమలు చేసినప్పుడు కొంత భిన్నమైన ఫలితాలు రావచ్చు. అందుకే, ఎక్కువ అల్గోరిథములు అనేక *యాదృచ్ఛిక ప్రారంభాలు* ఉపయోగించి, తక్కువ WCSS ఉన్న పునరావృతాన్ని ఎంచుకుంటాయి. కాబట్టి, *అనుచిత స్థానిక గరిష్ఠాన్ని* నివారించడానికి ఎప్పుడూ K-Means ను అనేక *nstart* విలువలతో నడపడం బలంగా సిఫార్సు చేయబడుతుంది.\n", + "\n", + "
\n", + "\n", + "Allison Horst యొక్క [కళాకృతి](https://github.com/allisonhorst/stats-illustrations) ఉపయోగించి ఈ చిన్న యానిమేషన్ క్లస్టరింగ్ ప్రక్రియను వివరిస్తుంది:\n", + "\n", + "

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

@allison_horst కళాకృతి
\n", + "\n", + "\n", + "\n", + "క్లస్టరింగ్‌లో ఉత్పన్నమయ్యే ఒక ప్రాథమిక ప్రశ్న ఇది: మీ డేటాను ఎన్ని క్లస్టర్లుగా విభజించాలో మీరు ఎలా తెలుసుకుంటారు? K-Means ఉపయోగించడంలో ఒక లోపం ఏమిటంటే, మీరు `k` ను, అంటే `సెంట్రాయిడ్‌ల సంఖ్య` ను నిర్ణయించవలసి ఉంటుంది. అదృష్టవశాత్తు `ఎల్బో పద్ధతి` మంచి ప్రారంభ విలువను అంచనా వేయడంలో సహాయపడుతుంది. మీరు దీన్ని కొద్దిసేపట్లో ప్రయత్నిస్తారు.\n", + "\n", + "### \n", + "\n", + "**ముందస్తు అవసరం**\n", + "\n", + "మేము [మునుపటి పాఠం](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb) నుండి ఆపకుండా కొనసాగుతాము, అక్కడ మేము డేటా సెట్‌ను విశ్లేషించి, అనేక దృశ్యీకరణలు చేశాము మరియు ఆసక్తికరమైన పరిశీలనలకు డేటా సెట్‌ను ఫిల్టర్ చేసాము. దాన్ని తప్పకుండా చూడండి!\n", + "\n", + "ఈ మాడ్యూల్‌ను పూర్తి చేయడానికి కొన్ని ప్యాకేజీలు అవసరం. మీరు వాటిని ఇలాగే ఇన్‌స్టాల్ చేసుకోవచ్చు: `install.packages(c('tidyverse', 'tidymodels', 'cluster', 'summarytools', 'plotly', 'paletteer', 'factoextra', 'patchwork'))`\n", + "\n", + "వేరే విధంగా, క్రింది స్క్రిప్ట్ ఈ మాడ్యూల్‌ను పూర్తి చేయడానికి అవసరమైన ప్యాకేజీలు మీ వద్ద ఉన్నాయా లేదా అని తనిఖీ చేసి, కొన్నివి లేకపోతే వాటిని ఇన్‌స్టాల్ చేస్తుంది.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ah_tBi58LXyi" + }, + "source": [ + "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n", + "\n", + "pacman::p_load('tidyverse', 'tidymodels', 'cluster', 'summarytools', 'plotly', 'paletteer', 'factoextra', 'patchwork')\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7e--UCUTLXym" + }, + "source": [ + "మనం వెంటనే ప్రారంభిద్దాం!\n", + "\n", + "## 1. డేటాతో నృత్యం: 3 అత్యంత ప్రాచుర్యం పొందిన సంగీత శైలులను తగ్గించుకోండి\n", + "\n", + "ఇది మునుపటి పాఠంలో మనం చేసినదానికి ఒక సారాంశం. మనం కొంత డేటాను కట్ చేసి, విశ్లేషిద్దాం!\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Ycamx7GGLXyn" + }, + "source": [ + "# Load the core tidyverse and make it available in your current R session\n", + "library(tidyverse)\n", + "\n", + "# Import the data into a tibble\n", + "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/5-Clustering/data/nigerian-songs.csv\", show_col_types = FALSE)\n", + "\n", + "# Narrow down to top 3 popular genres\n", + "nigerian_songs <- df %>% \n", + " # Concentrate on top 3 genres\n", + " filter(artist_top_genre %in% c(\"afro dancehall\", \"afropop\",\"nigerian pop\")) %>% \n", + " # Remove unclassified observations\n", + " filter(popularity != 0)\n", + "\n", + "\n", + "\n", + "# Visualize popular genres using bar plots\n", + "theme_set(theme_light())\n", + "nigerian_songs %>%\n", + " count(artist_top_genre) %>%\n", + " ggplot(mapping = aes(x = artist_top_genre, y = n,\n", + " fill = artist_top_genre)) +\n", + " geom_col(alpha = 0.8) +\n", + " paletteer::scale_fill_paletteer_d(\"ggsci::category10_d3\") +\n", + " ggtitle(\"Top genres\") +\n", + " theme(plot.title = element_text(hjust = 0.5))\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b5h5zmkPLXyp" + }, + "source": [ + "🤩 అది బాగానే జరిగింది!\n", + "\n", + "## 2. మరిన్ని డేటా అన్వేషణ.\n", + "\n", + "ఈ డేటా ఎంత శుభ్రంగా ఉంది? బాక్స్ ప్లాట్లను ఉపయోగించి అవుట్లయర్లను తనిఖీ చేద్దాం. మేము తక్కువ అవుట్లయర్లతో ఉన్న సంఖ్యాత్మక కాలమ్స్‌పై దృష్టి సారిస్తాము (అయితే మీరు అవుట్లయర్లను శుభ్రం చేయవచ్చు). బాక్స్‌ప్లాట్లు డేటా పరిధిని చూపగలవు మరియు ఏ కాలమ్స్ ఉపయోగించాలో ఎంచుకోవడంలో సహాయపడతాయి. గమనించండి, బాక్స్‌ప్లాట్లు వ్యత్యాసాన్ని చూపవు, ఇది మంచి క్లస్టరబుల్ డేటా యొక్క ముఖ్యమైన అంశం. మరింత చదవడానికి [ఈ చర్చ](https://stats.stackexchange.com/questions/91536/deduce-variance-from-boxplot) చూడండి.\n", + "\n", + "[బాక్స్‌ప్లాట్లు](https://en.wikipedia.org/wiki/Box_plot) సంఖ్యాత్మక డేటా పంపిణీని గ్రాఫికల్‌గా చూపడానికి ఉపయోగిస్తారు, కాబట్టి ప్రాచుర్యం పొందిన సంగీత శైలులతో పాటు అన్ని సంఖ్యాత్మక కాలమ్స్‌ను *ఎంచుకోవడం* ప్రారంభిద్దాం.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "HhNreJKLLXyq" + }, + "source": [ + "# Select top genre column and all other numeric columns\n", + "df_numeric <- nigerian_songs %>% \n", + " select(artist_top_genre, where(is.numeric)) \n", + "\n", + "# Display the data\n", + "df_numeric %>% \n", + " slice_head(n = 5)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uYXrwJRaLXyq" + }, + "source": [ + "ఎలా సెలక్షన్ హెల్పర్ `where` దీన్ని సులభం చేస్తుందో చూడండి 💁? ఇలాంటి ఇతర ఫంక్షన్లను [ఇక్కడ](https://tidyselect.r-lib.org/) అన్వేషించండి.\n", + "\n", + "ప్రతి సంఖ్యా లక్షణానికి బాక్స్‌ప్లాట్ తయారు చేయబోతున్నాము మరియు లూప్‌లను ఉపయోగించకుండా ఉండాలనుకుంటున్నాము, కాబట్టి మన డేటాను *దీర్ఘమైన* ఫార్మాట్‌లో పునఃరూపకల్పన చేద్దాం, ఇది మనకు `facets` - ప్రతి ఉపసమితి డేటాను ప్రదర్శించే ఉపగ్రాఫ్‌లను ఉపయోగించుకునే అవకాశం ఇస్తుంది.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "gd5bR3f8LXys" + }, + "source": [ + "# Pivot data from wide to long\n", + "df_numeric_long <- df_numeric %>% \n", + " pivot_longer(!artist_top_genre, names_to = \"feature_names\", values_to = \"values\") \n", + "\n", + "# Print out data\n", + "df_numeric_long %>% \n", + " slice_head(n = 15)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-7tE1swnLXyv" + }, + "source": [ + "ఇంకా చాలా పొడవుగా! ఇప్పుడు కొంత `ggplots` సమయం! కాబట్టి ఏ `geom` ను ఉపయోగించబోతున్నాం?\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "r88bIsyuLXyy" + }, + "source": [ + "# Make a box plot\n", + "df_numeric_long %>% \n", + " ggplot(mapping = aes(x = feature_names, y = values, fill = feature_names)) +\n", + " geom_boxplot() +\n", + " facet_wrap(~ feature_names, ncol = 4, scales = \"free\") +\n", + " theme(legend.position = \"none\")\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EYVyKIUELXyz" + }, + "source": [ + "Easy-gg!\n", + "\n", + "ఇప్పుడు మనం ఈ డేటా కొంచెం శబ్దంగా ఉందని చూడవచ్చు: ప్రతి కాలమ్‌ను బాక్స్‌ప్లాట్‌గా పరిశీలించడం ద్వారా, మీరు అవుట్లయర్లను చూడవచ్చు. మీరు డేటాసెట్‌ను గమనించి ఈ అవుట్లయర్లను తొలగించవచ్చు, కానీ అది డేటాను చాలా తక్కువగా చేస్తుంది.\n", + "\n", + "ప్రస్తుతం, మనం క్లస్టరింగ్ వ్యాయామం కోసం ఉపయోగించబోయే కాలమ్‌లను ఎంచుకుందాం. సమాన పరిధులున్న సంఖ్యాత్మక కాలమ్‌లను ఎంచుకుందాం. మనం `artist_top_genre` ను సంఖ్యాత్మకంగా ఎన్‌కోడ్ చేయవచ్చు కానీ ఇప్పటికీ దాన్ని వదిలేస్తాము.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-wkpINyZLXy0" + }, + "source": [ + "# Select variables with similar ranges\n", + "df_numeric_select <- df_numeric %>% \n", + " select(popularity, danceability, acousticness, loudness, energy) \n", + "\n", + "# Normalize data\n", + "# df_numeric_select <- scale(df_numeric_select)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "D7dLzgpqLXy1" + }, + "source": [ + "## 3. R లో k-means క్లస్టరింగ్ లెక్కించడం\n", + "\n", + "మనం R లో బిల్ట్-ఇన్ `kmeans` ఫంక్షన్ తో k-means లెక్కించవచ్చు, చూడండి `help(\"kmeans()\")`. `kmeans()` ఫంక్షన్ ప్రాథమిక ఆర్గ్యుమెంట్ గా అన్ని న్యూమరిక్ కాలమ్స్ ఉన్న డేటా ఫ్రేమ్ ను అంగీకరిస్తుంది.\n", + "\n", + "k-means క్లస్టరింగ్ ఉపయోగించే మొదటి దశ చివరి పరిష్కారంలో ఉత్పత్తి చేయబడే క్లస్టర్ల సంఖ్య (k) ను నిర్దేశించడం. మనం డేటాసెట్ నుండి 3 పాట జానర్లను తీసుకున్నామని తెలుసు, కాబట్టి 3 ను ప్రయత్నిద్దాం:\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "uC4EQ5w7LXy5" + }, + "source": [ + "set.seed(2056)\n", + "# Kmeans clustering for 3 clusters\n", + "kclust <- kmeans(\n", + " df_numeric_select,\n", + " # Specify the number of clusters\n", + " centers = 3,\n", + " # How many random initial configurations\n", + " nstart = 25\n", + ")\n", + "\n", + "# Display clustering object\n", + "kclust\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hzfhscWrLXy-" + }, + "source": [ + "kmeans ఆబ్జెక్ట్‌లో `help(\"kmeans()\")` లో బాగా వివరించబడిన అనేక సమాచారం భాగాలు ఉంటాయి. ఇప్పటికీ, కొన్ని విషయాలపై దృష్టి పెట్టుకుందాం. డేటా 65, 110, 111 పరిమాణాల 3 క్లస్టర్లుగా విభజించబడిందని మనం చూస్తున్నాము. అవుట్పుట్‌లో 5 వేరియబుల్స్ అంతటా 3 గ్రూపుల క్లస్టర్ సెంటర్లు (సగటులు) కూడా ఉంటాయి.\n", + "\n", + "క్లస్టరింగ్ వెక్టర్ అనేది ప్రతి పరిశీలనకు క్లస్టర్ కేటాయింపు. అసలు డేటా సెట్‌కు క్లస్టర్ కేటాయింపును జోడించడానికి `augment` ఫంక్షన్‌ను ఉపయోగిద్దాం.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0XwwpFGQLXy_" + }, + "source": [ + "# Add predicted cluster assignment to data set\n", + "augment(kclust, df_numeric_select) %>% \n", + " relocate(.cluster) %>% \n", + " slice_head(n = 10)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NXIVXXACLXzA" + }, + "source": [ + "సరే, మనం ఇప్పుడు మన డేటా సెట్‌ను 3 గ్రూపుల సెట్‌గా విభజించాము. కాబట్టి, మన క్లస్టరింగ్ ఎంత మంచిదో చూద్దాం 🤷? మనం `Silhouette score` ని చూద్దాం\n", + "\n", + "### **Silhouette score**\n", + "\n", + "[Silhouette విశ్లేషణ](https://en.wikipedia.org/wiki/Silhouette_(clustering)) ఫలితంగా వచ్చిన క్లస్టర్ల మధ్య విడిపోవడం దూరాన్ని అధ్యయనం చేయడానికి ఉపయోగించవచ్చు. ఈ స్కోరు -1 నుండి 1 వరకు మారుతుంది, మరియు స్కోరు 1కి దగ్గరగా ఉంటే, క్లస్టర్ సాంద్రంగా ఉంటుంది మరియు ఇతర క్లస్టర్ల నుండి బాగా వేరుగా ఉంటుంది. 0కి దగ్గరగా ఉన్న విలువ సమీప క్లస్టర్లతో decision boundaryకి చాలా దగ్గరగా ఉన్న నమూనాలను సూచిస్తుంది.[source](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam).\n", + "\n", + "సగటు silhouette పద్ధతి వివిధ *k* విలువల కోసం పరిశీలనల సగటు silhouetteని లెక్కిస్తుంది. ఒక అధిక సగటు silhouette స్కోరు మంచి క్లస్టరింగ్‌ను సూచిస్తుంది.\n", + "\n", + "సగటు silhouette వెడల్పును లెక్కించడానికి cluster ప్యాకేజీలోని `silhouette` ఫంక్షన్ ఉపయోగించవచ్చు.\n", + "\n", + "> silhouetteని ఏదైనా [distance](https://en.wikipedia.org/wiki/Distance \"Distance\") మెట్రిక్‌తో లెక్కించవచ్చు, ఉదాహరణకు మనం [మునుపటి పాఠంలో](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb) చర్చించిన [Euclidean distance](https://en.wikipedia.org/wiki/Euclidean_distance \"Euclidean distance\") లేదా [Manhattan distance](https://en.wikipedia.org/wiki/Manhattan_distance \"Manhattan distance\") వంటి.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Jn0McL28LXzB" + }, + "source": [ + "# Load cluster package\n", + "library(cluster)\n", + "\n", + "# Compute average silhouette score\n", + "ss <- silhouette(kclust$cluster,\n", + " # Compute euclidean distance\n", + " dist = dist(df_numeric_select))\n", + "mean(ss[, 3])\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QyQRn97nLXzC" + }, + "source": [ + "మా స్కోరు **.549** ఉంది, కాబట్టి మధ్యలోనే ఉంది. ఇది మా డేటా ఈ రకమైన క్లస్టరింగ్‌కు ప్రత్యేకంగా అనుకూలంగా లేనట్టుగా సూచిస్తుంది. మనం ఈ అనుమానాన్ని దృశ్యరూపంలో నిర్ధారించగలమా చూద్దాం. [factoextra ప్యాకేజ్](https://rpkgs.datanovia.com/factoextra/index.html) క్లస్టరింగ్‌ను దృశ్యీకరించడానికి (`fviz_cluster()`) ఫంక్షన్లను అందిస్తుంది.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "7a6Km1_FLXzD" + }, + "source": [ + "library(factoextra)\n", + "\n", + "# Visualize clustering results\n", + "fviz_cluster(kclust, df_numeric_select)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IBwCWt-0LXzD" + }, + "source": [ + "క్లస్టర్లలో ఉన్న ఓవర్‌ల్యాప్ మన డేటా ఈ రకమైన క్లస్టరింగ్‌కు ప్రత్యేకంగా అనుకూలంగా లేనట్టుగా సూచిస్తుంది కానీ మనం కొనసాగుదాం.\n", + "\n", + "## 4. ఉత్తమ క్లస్టర్లను నిర్ణయించడం\n", + "\n", + "K-Means క్లస్టరింగ్‌లో తరచుగా ఎదురయ్యే ఒక ప్రాథమిక ప్రశ్న ఇది - తెలియని క్లాస్ లేబుల్స్ లేకుండా, మీరు మీ డేటాను ఎన్ని క్లస్టర్లుగా విడగొట్టాలో ఎలా తెలుసుకుంటారు?\n", + "\n", + "మనం తెలుసుకోవడానికి ప్రయత్నించగల ఒక మార్గం డేటా నమూనాను ఉపయోగించి `క్లస్టర్ల సంఖ్య పెరుగుతూ` (ఉదా: 1-10 వరకు) క్లస్టరింగ్ మోడల్స్ సిరీస్‌ను సృష్టించడం, మరియు **సిల్హౌట్ స్కోర్** వంటి క్లస్టరింగ్ మెట్రిక్స్‌ను మూల్యాంకనం చేయడం.\n", + "\n", + "విభిన్న *k* విలువల కోసం క్లస్టరింగ్ అల్గోరిథమ్‌ను గణించి, **Within Cluster Sum of Squares** (WCSS) ను మూల్యాంకనం చేయడం ద్వారా ఉత్తమ క్లస్టర్ల సంఖ్యను నిర్ణయిద్దాం. మొత్తం వితిన్-క్లస్టర్ సమ్ ఆఫ్ స్క్వేర్ (WCSS) క్లస్టరింగ్ యొక్క సన్నిహితతను కొలుస్తుంది మరియు మనం దీన్ని όσο తక్కువగా ఉండాలని కోరుకుంటాము, తక్కువ విలువలు డేటా పాయింట్లు దగ్గరగా ఉన్నట్లు సూచిస్తాయి.\n", + "\n", + "1 నుండి 10 వరకు `k` యొక్క వివిధ ఎంపికల ప్రభావాన్ని ఈ క్లస్టరింగ్‌పై పరిశీలిద్దాం.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "hSeIiylDLXzE" + }, + "source": [ + "# Create a series of clustering models\n", + "kclusts <- tibble(k = 1:10) %>% \n", + " # Perform kmeans clustering for 1,2,3 ... ,10 clusters\n", + " mutate(model = map(k, ~ kmeans(df_numeric_select, centers = .x, nstart = 25)),\n", + " # Farm out clustering metrics eg WCSS\n", + " glanced = map(model, ~ glance(.x))) %>% \n", + " unnest(cols = glanced)\n", + " \n", + "\n", + "# View clustering rsulsts\n", + "kclusts\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "m7rS2U1eLXzE" + }, + "source": [ + "ఇప్పుడు మనకు ప్రతి క్లస్టరింగ్ అల్గోరిథం కోసం సెంటర్ *k* తో మొత్తం వితిన్-క్లస్టర్ సమ్-ఆఫ్-స్క్వేర్ల (tot.withinss) ఉంది, మనం [ఎల్బో పద్ధతి](https://en.wikipedia.org/wiki/Elbow_method_(clustering)) ఉపయోగించి ఆప్టిమల్ క్లస్టర్ల సంఖ్యను కనుగొంటాము. ఈ పద్ధతి క్లస్టర్ల సంఖ్య యొక్క ఫంక్షన్‌గా WCSS ను ప్లాట్ చేయడం మరియు వాడాల్సిన క్లస్టర్ల సంఖ్యగా [వక్ర రేఖ యొక్క ఎల్బో](https://en.wikipedia.org/wiki/Elbow_of_the_curve \"Elbow of the curve\") ను ఎంచుకోవడం కలిగి ఉంటుంది.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "o_DjHGItLXzF" + }, + "source": [ + "set.seed(2056)\n", + "# Use elbow method to determine optimum number of clusters\n", + "kclusts %>% \n", + " ggplot(mapping = aes(x = k, y = tot.withinss)) +\n", + " geom_line(size = 1.2, alpha = 0.8, color = \"#FF7F0EFF\") +\n", + " geom_point(size = 2, color = \"#FF7F0EFF\")\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pLYyt5XSLXzG" + }, + "source": [ + "ప్లాట్ ఒక నుండి రెండు క్లస్టర్లకు సంఖ్య పెరిగినప్పుడు WCSSలో పెద్ద తగ్గుదల (కాబట్టి ఎక్కువ *టైట్‌నెస్*) చూపిస్తుంది, మరియు రెండు నుండి మూడు క్లస్టర్లకు మరింత గమనించదగిన తగ్గుదల ఉంటుంది. ఆ తర్వాత, తగ్గుదల తక్కువగా ఉంటుంది, ఫలితంగా చార్ట్‌లో సుమారు మూడు క్లస్టర్ల వద్ద ఒక `ఎల్బో` 💪 ఉంటుంది. ఇది రెండు నుండి మూడు తగినంతగా వేరు చేసిన డేటా పాయింట్ల క్లస్టర్లు ఉన్నాయని మంచి సూచన.\n", + "\n", + "ఇప్పుడు మనం `k = 3` ఉన్న క్లస్టరింగ్ మోడల్‌ను తీసుకోవచ్చు:\n", + "\n", + "> `pull()`: ఒకే కాలమ్‌ను తీసుకోవడానికి ఉపయోగిస్తారు\n", + ">\n", + "> `pluck()`: జాబితాలు వంటి డేటా నిర్మాణాలను సూచించడానికి ఉపయోగిస్తారు\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "JP_JPKBILXzG" + }, + "source": [ + "# Extract k = 3 clustering\n", + "final_kmeans <- kclusts %>% \n", + " filter(k == 3) %>% \n", + " pull(model) %>% \n", + " pluck(1)\n", + "\n", + "\n", + "final_kmeans\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "l_PDTu8tLXzI" + }, + "source": [ + "చాలా బాగుంది! మనం పొందిన క్లస్టర్లను దృశ్యీకరించుకుందాం. `plotly` ఉపయోగించి కొంత ఇంటరాక్టివిటీ కావాలా?\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "dNcleFe-LXzJ" + }, + "source": [ + "# Add predicted cluster assignment to data set\n", + "results <- augment(final_kmeans, df_numeric_select) %>% \n", + " bind_cols(df_numeric %>% select(artist_top_genre)) \n", + "\n", + "# Plot cluster assignments\n", + "clust_plt <- results %>% \n", + " ggplot(mapping = aes(x = popularity, y = danceability, color = .cluster, shape = artist_top_genre)) +\n", + " geom_point(size = 2, alpha = 0.8) +\n", + " paletteer::scale_color_paletteer_d(\"ggthemes::Tableau_10\")\n", + "\n", + "ggplotly(clust_plt)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6JUM_51VLXzK" + }, + "source": [ + "ప్రతి క్లస్టర్ (వివిధ రంగులతో ప్రాతినిధ్యం వహించబడిన) వేర్వేరు జానర్లను (వివిధ ఆకారాలతో ప్రాతినిధ్యం వహించబడిన) కలిగి ఉంటుందని మనం ఆశించవచ్చు.\n", + "\n", + "మోడల్ యొక్క ఖచ్చితత్వాన్ని చూద్దాం.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "HdIMUGq7LXzL" + }, + "source": [ + "# Assign genres to predefined integers\n", + "label_count <- results %>% \n", + " group_by(artist_top_genre) %>% \n", + " mutate(id = cur_group_id()) %>% \n", + " ungroup() %>% \n", + " summarise(correct_labels = sum(.cluster == id))\n", + "\n", + "\n", + "# Print results \n", + "cat(\"Result:\", label_count$correct_labels, \"out of\", nrow(results), \"samples were correctly labeled.\")\n", + "\n", + "cat(\"\\nAccuracy score:\", label_count$correct_labels/nrow(results))\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "C50wvaAOLXzM" + }, + "source": [ + "ఈ మోడల్ యొక్క ఖచ్చితత్వం చెడుగా లేదు, కానీ గొప్పదిగా లేదు. డేటా K-Means క్లస్టరింగ్‌కు బాగా సరిపోవకపోవచ్చు. ఈ డేటా చాలా అసమతుల్యంగా ఉంది, చాలా తక్కువ సంబంధం ఉంది మరియు కాలమ్ విలువల మధ్య చాలా వ్యత్యాసం ఉంది కాబట్టి బాగా క్లస్టర్ చేయడం కష్టం. వాస్తవానికి, ఏర్పడే క్లస్టర్లు పైగా నిర్వచించిన మూడు జానర్ వర్గాల ద్వారా బలంగా ప్రభావితం లేదా వక్రీకృతమయ్యే అవకాశం ఉంది.\n", + "\n", + "అయితే, అది చాలా నేర్చుకునే ప్రక్రియ!\n", + "\n", + "Scikit-learn డాక్యుమెంటేషన్‌లో, మీరు ఇలాంటి మోడల్, క్లస్టర్లు బాగా వేరుగా లేని, 'వేరియన్స్' సమస్యను కలిగి ఉంటుందని చూడవచ్చు:\n", + "\n", + "

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

Scikit-learn నుండి ఇన్ఫోగ్రాఫిక్
\n", + "\n", + "\n", + "\n", + "## **వేరియన్స్**\n", + "\n", + "వేరియన్స్ అనేది \"సగటు నుండి చదరపు తేడాల సగటు\"గా నిర్వచించబడింది [మూలం](https://www.mathsisfun.com/data/standard-deviation.html). ఈ క్లస్టరింగ్ సమస్య సందర్భంలో, ఇది మా డేటాసెట్ సంఖ్యలు సగటు నుండి కొంత ఎక్కువగా విభిన్నమవుతాయని సూచిస్తుంది.\n", + "\n", + "✅ ఈ సమస్యను సరిచేయడానికి మీరు చేయగల అన్ని మార్గాల గురించి ఆలోచించడానికి ఇది గొప్ప క్షణం. డేటాను కొంచెం సవరించాలా? వేరే కాలమ్స్ ఉపయోగించాలా? వేరే అల్గోరిథం ఉపయోగించాలా? సూచన: దాన్ని సాధారణీకరించడానికి [మీ డేటాను స్కేల్ చేయడం](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/) ప్రయత్నించండి మరియు ఇతర కాలమ్స్‌ను పరీక్షించండి.\n", + "\n", + "> ఈ '[వేరియన్స్ క్యాల్క్యులేటర్](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' ను ప్రయత్నించి ఈ భావనను మరింత అర్థం చేసుకోండి.\n", + "\n", + "------------------------------------------------------------------------\n", + "\n", + "## **🚀సవాలు**\n", + "\n", + "ఈ నోట్‌బుక్‌తో కొంత సమయం గడపండి, పారామితులను సవరించండి. డేటాను మరింత శుభ్రపరచడం ద్వారా (ఉదాహరణకు అవుట్లయర్స్ తొలగించడం) మోడల్ ఖచ్చితత్వాన్ని మెరుగుపరచగలరా? మీరు ఇచ్చిన డేటా నమూనాలకు ఎక్కువ బరువు ఇవ్వడానికి బరువులను ఉపయోగించవచ్చు. మరేమి చేయగలరు మంచి క్లస్టర్లు సృష్టించడానికి?\n", + "\n", + "సూచన: మీ డేటాను స్కేల్ చేయడానికి ప్రయత్నించండి. నోట్‌బుక్‌లో కామెంట్ చేసిన కోడ్ ఉంది, ఇది డేటా కాలమ్స్‌ను పరస్పరం పరిధి పరంగా మరింత సమానంగా చేయడానికి స్టాండర్డ్ స్కేలింగ్‌ను జోడిస్తుంది. సిల్హౌట్ స్కోరు తగ్గినప్పటికీ, ఎల్బో గ్రాఫ్‌లో 'కింక్' సాఫీగా మారుతుంది. ఇది డేటాను స్కేల్ చేయకుండా వదిలివేయడం వల్ల తక్కువ వేరియన్స్ ఉన్న డేటాకు ఎక్కువ బరువు కలుగుతుందని సూచిస్తుంది. ఈ సమస్యపై మరింత చదవండి [ఇక్కడ](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226).\n", + "\n", + "## [**పోస్ట్-లెక్చర్ క్విజ్**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/30/)\n", + "\n", + "## **సమీక్ష & స్వీయ అధ్యయనం**\n", + "\n", + "- K-Means సిమ్యులేటర్‌ను [ఇలా ఒకటి](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/) చూడండి. మీరు ఈ టూల్‌ను ఉపయోగించి నమూనా డేటా పాయింట్లను విజువలైజ్ చేసి దాని సెంట్రాయిడ్లను నిర్ణయించవచ్చు. మీరు డేటా రాండమ్నెస్, క్లస్టర్ల సంఖ్య మరియు సెంట్రాయిడ్ల సంఖ్యను సవరించవచ్చు. ఇది డేటాను ఎలా గ్రూప్ చేయవచ్చో మీకు ఆలోచన ఇస్తుందా?\n", + "\n", + "- అలాగే, స్టాన్ఫోర్డ్ నుండి [K-Means పై ఈ హ్యాండౌట్](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html) చూడండి.\n", + "\n", + "మీరు కొత్తగా పొందిన క్లస్టరింగ్ నైపుణ్యాలను K-Means క్లస్టరింగ్‌కు బాగా సరిపోయే డేటా సెట్‌లపై ప్రయత్నించాలనుకుంటున్నారా? దయచేసి చూడండి:\n", + "\n", + "- [ట్రైన్ మరియు క్లస్టరింగ్ మోడల్స్‌ను మూల్యాంకనం చేయండి](https://rpubs.com/eR_ic/clustering) Tidymodels మరియు స్నేహితులతో\n", + "\n", + "- [K-means క్లస్టర్ విశ్లేషణ](https://uc-r.github.io/kmeans_clustering), UC బిజినెస్ అనలిటిక్స్ R ప్రోగ్రామింగ్ గైడ్\n", + "\n", + "- [tidy డేటా సూత్రాలతో K-means క్లస్టరింగ్](https://www.tidymodels.org/learn/statistics/k-means/)\n", + "\n", + "## **అసైన్‌మెంట్**\n", + "\n", + "[వేరే క్లస్టరింగ్ పద్ధతులను ప్రయత్నించండి](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/2-K-Means/assignment.md)\n", + "\n", + "## ధన్యవాదాలు:\n", + "\n", + "[జెన్ లూపర్](https://www.twitter.com/jenlooper) ఈ మాడ్యూల్ యొక్క అసలు Python వెర్షన్ సృష్టించినందుకు ♥️\n", + "\n", + "[`అలిసన్ హోర్స్ట్`](https://twitter.com/allison_horst/) R ను మరింత ఆహ్లాదకరంగా మరియు ఆకర్షణీయంగా చేసే అద్భుతమైన చిత్రణలను సృష్టించినందుకు. ఆమె [గ్యాలరీ](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM)లో మరిన్ని చిత్రణలను చూడండి.\n", + "\n", + "సంతోషకరమైన అభ్యాసం,\n", + "\n", + "[ఎరిక్](https://twitter.com/ericntay), గోల్డ్ మైక్రోసాఫ్ట్ లెర్న్ స్టూడెంట్ అంబాసిడర్.\n", + "\n", + "

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

@allison_horst చేత కళాకృతి
\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/5-Clustering/2-K-Means/solution/notebook.ipynb b/translations/te/5-Clustering/2-K-Means/solution/notebook.ipynb new file mode 100644 index 000000000..2fb9c83ca --- /dev/null +++ b/translations/te/5-Clustering/2-K-Means/solution/notebook.ipynb @@ -0,0 +1,554 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "e867e87e3129c8875423a82945f4ad5e", + "translation_date": "2025-12-19T16:51:14+00:00", + "source_file": "5-Clustering/2-K-Means/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# స్పాటిఫై నుండి సేకరించిన నైజీరియన్ సంగీతం - ఒక విశ్లేషణ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: seaborn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.11.1)\n", + "Requirement already satisfied: pandas>=0.23 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.1.2)\n", + "Requirement already satisfied: matplotlib>=2.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (3.1.0)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.4.1)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.19.2)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2.8.0)\n", + "Requirement already satisfied: pytz>=2017.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2019.1)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (1.1.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (0.10.0)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (2.4.0)\n", + "Requirement already satisfied: six>=1.5 in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from python-dateutil>=2.7.3->pandas>=0.23->seaborn) (1.12.0)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib>=2.2->seaborn) (45.1.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install seaborn" + ] + }, + { + "source": [ + "మనం చివరి పాఠంలో ముగించిన చోట నుండి ప్రారంభించండి, డేటా దిగుమతి చేసుకుని ఫిల్టర్ చేసిన స్థితిలో.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "0 Sparky Mandy & The Jungle \n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "2 LITT! LITT! \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "0 Cruel Santino alternative r&b 2019 144000 48 \n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "2 AYLØ indie r&b 2018 207758 40 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "\n", + " speechiness tempo time_signature \n", + "0 0.0829 133.015 5 \n", + "1 0.3600 129.993 3 \n", + "2 0.0424 130.005 4 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
0SparkyMandy & The JungleCruel Santinoalternative r&b2019144000480.6660.85100.4200.5340000.1100-6.6990.0829133.0155
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
2LITT!LITT!AYLØindie r&b2018207758400.8360.27200.5640.0005370.1100-7.1270.0424130.0054
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
\n
" + }, + "metadata": {}, + "execution_count": 11 + } + ], + "source": [ + "\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "\n", + "df = pd.read_csv(\"../../data/nigerian-songs.csv\")\n", + "df.head()" + ] + }, + { + "source": [ + "మేము కేవలం 3 జానర్లపై మాత్రమే దృష్టి సారించబోతున్నాము. బహుశా మేము 3 క్లస్టర్లు నిర్మించగలము!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "metadata": {}, + "execution_count": 12 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n", + "df = df[(df['popularity'] > 0)]\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "5 Kasala Pioneers \n", + "6 Pull Up Everything Pretty \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "5 DRB Lasgidi nigerian pop 2020 184800 26 \n", + "6 prettyboydo nigerian pop 2018 202648 29 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "5 0.803 0.1270 0.525 0.000007 0.1290 -10.034 \n", + "6 0.818 0.4520 0.587 0.004490 0.5900 -9.840 \n", + "\n", + " speechiness tempo time_signature \n", + "1 0.3600 129.993 3 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 \n", + "5 0.1970 100.103 4 \n", + "6 0.1990 95.842 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
5KasalaPioneersDRB Lasgidinigerian pop2020184800260.8030.12700.5250.0000070.1290-10.0340.1970100.1034
6Pull UpEverything Prettyprettyboydonigerian pop2018202648290.8180.45200.5870.0044900.5900-9.8400.199095.8424
\n
" + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "df.head()" + ] + }, + { + "source": [ + "ఈ డేటా ఎంత శుభ్రంగా ఉంది? బాక్స్ ప్లాట్లను ఉపయోగించి అవుట్లయర్లను తనిఖీ చేయండి. అవుట్లయర్లు తక్కువగా ఉన్న కాలమ్స్ పై మనం దృష్టి పెట్టబోతున్నాము (అయితే మీరు అవుట్లయర్లను శుభ్రం చేయవచ్చు). బాక్స్ ప్లాట్లు డేటా పరిధిని చూపగలవు మరియు ఏ కాలమ్స్ ఉపయోగించాలో ఎంచుకోవడంలో సహాయపడతాయి. గమనించండి, బాక్స్ ప్లాట్లు వ్యత్యాసాన్ని చూపవు, ఇది మంచి క్లస్టరబుల్ డేటాకు ముఖ్యమైన అంశం (https://stats.stackexchange.com/questions/91536/deduce-variance-from-boxplot)\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 14 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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AAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOTMpx5g16xWq7FcLu9dOz4+HrOZ9gQAAHj5nHmAh/iOAAAAdo1zCgCwLX53AAD7zG+dzxNUfGS5XI7z8/N71y4uLsbJyclEEwEAADwfZx7gIb4jAACAXeOcAgBsi98dAMA+81vn8yQlAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAA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AAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAKrtqYAAACAASURBVAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDirfQ9Qzfr6envy5Mkb1wAAAIbAPQ9wHXsEAABQjfsUAGBRvO4AAIbMa523E1T8ycrKStvY2Oh7DAAAgFvhnge4jj0CAACoxn0KALAoXncAAEPmtc7brfQ9AAAAAAAAAAAAAAAAwKIJKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAAgDiCCgAAAAAAAAAAAAAAII6gAgAAAAAAAAAAAAAAiCOoAAAAAAAAAAAAAAAA4ggqAAAAAAAAAAAAAACAOIIKAAAAAAAAAAAAAAAgjqACAAAAAAAAAAAAAACII6gAAAAAAAAAAAAAAADiCCoAAAAAAAAAAAAAAIA4ggoAAAAAAAAAAAAAACCOoAIAAAAAAAAAAAAAAIgjqAAAAAAAAAAAAAAAAOIIKgAAAAAAAAAAAAAA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AAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMgRVAAAAAAAAAAAAAAAADmCCgAAAAAAAAAAAAAAIEdQAQAAAAAAAAAAAAAA5AgqAAAAAAAAAAAAAACAHEEFAAAAAAAAAAAAAACQI6gAAAAAAAAAAAAAAAByBBUAAAAAAAAAAAAAAECOoAIAAAAAAAAAAAAAAMiZTz3Aulkulx+dvXnzZjx//nzMZvoTAAAAYHstl8uxWCyune3t7dmJAHwmn68AAAAA28W+B4BN47vr0wQVN1xcXHx0dnx8PE5OTsb+/v4EEwEAAACsxmKxGEdHR9fO7EQAPp/PVwAAAIDtYt8DwKbx3fVpkhIAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAAAAAAAAAAAAAAAAcgQVAAAAAAAAAAAAAABAjqACAAAAAAAAAAAAAADIEVQAAAAAAAAAAAAAAAA5ggoAAAAAAAAAAAAAACBHUAEAAAAAAAAAAAAAAOQIKgAAAAAAAAAAAAAAgBxBBQAAAAAAAAAAAAAAkCOoAPibvfuJjeuq/wZ87Lj5ya/SNEZq+6LWYovUIL1ITXYNKxYsQIioiaNEqhDQFJImFFg6RaLuFikhEW1ZISVK0qqoArGhK9JVky4imggQC6SGqmoiZJpatX6uY78bbDnj8Z07M/fM3Lnf55EQ9vjc8+/eOb33jD8xAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQAUAAAAAAAAAAAAAABCOQEVJH330UfrHP/6RlpaW0sLCwvrrCwsLaWlpKS0tLa2/tvZ962vtbCy3VZnW8v0oe3y/7Qyr7rrJMdatrqvWtiLNM0TlfQ5EYb3Lx9wCADRT0X1eu591W77b9te+n5+f37L8Vsd02mevuu/dau1n0++xo4wzl17nzXx3VsUc1WWec/UjR70bPzMdRXU550A9WSMgJu/9wSrz+3WDOied2nFtAECzCVSU9MMf/jD94Ac/SN/97nfTgQMH0vz8fJqfn08HDhxIzz//fHrhhRfS4uJiWlxcTC+88EI6efLkfa/99Kc/TYuLi/fVuVb2hRdeSPPz823LtJbvVKZI2eP7bWdYdddNjrFurHOrr3O1DdSL9zkQhfUuH3MLANBMRfd57X7Wbflu21/7/p///Gfav39/+uijjzaVX9snbz1m4775IPrerdZ+ltnnH2Xtzgvl9XpNenbrrIo5qss85+pHjnrXPifdKixXd3U550A9WSMgJu/9wWrdD+j2ub/qvhS149oAgOYTqOjShx9+mD777LN06tSpNDs7mz777LP097//Pd28eTNduHAhnT9/Pt28eTP99a9/ve+1999/P124cOG+utbK3rx5M83OzrYt01q+U5kiZY/vt51h1V03Oca6sc6tvs7VNlAv3udAFNa7fMwtAEAzFd3ntftZt+W7bX/t+x/96EdpZWUlnThxYlP5tX3y1mM27psPou/dau1nmX3+UdbuvFBer9ekZ7fOqpijusxzrn7kqHftc9JTp05VVucg1eWcA/VkjYCYvPcHq3U/oNvn/qr7UtSOawMAmk+gokc3btxIN2/evO+1ixcvposXL2567dKlSymllC5fvpxu3bqVUkrp1q1b66+nlNbr2lhmo1u3bqXLly8XlilS9vh+26miD02QY6wb67x06dL69bPx68uXL6erV6+GmWeIKtJ6CsRmvcvH3AIANFPRfV67n3Vbvtv2N+5Vrv0rjnfu3El//OMf18tv3Ce/dOnSfT3bnlAAACAASURBVMes7Zu37oHm6Hu3Nrax1s9O+/yjrN14mzjOXHq9Jj27dVbFHNVlnnP1I0e9V69eXV8Lbty4ka5evdp3nYNUl3MO1JM1AmLy3h+s1v2Adr9fN6hz0qkd1wYAxCBQUaF79+6llZWVTa/du3cvpZTS559/ns6cOZNWVlbS6dOn11/faK3M6urq+murq6vpzJkzaXl5ecsyRcoe3287VfShCXKMtbXO5eXl9etn49eff/55mpubCzHPEFWk9RSIzXqXj7kFAGimovu8dj87ffp0On36dOnyne4Z2x2zca9yo1/+8pdpeXl50z758vJy22Na90Cr7nu3Wtto1bR77K3G27Rx5tLrNenZrbMq5qgu85yrHznqXVlZSXNzc/e9Njc3t+kz0rqqyzkH6skaATF57w/W6urqpv2A1t+vK3rur7ovRefetQEAcQhUDNi1a9fSq6++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OAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOAIVAAAAAAAAAAAAAABAOBPD7kDd7NixY9Nrp0+fTjt37hxCbwAAAAAGZ+fOnemtt97a9BoA/bG+AgAAADSL/R4ARo3/dm1NoKLF+PjmP9qxa9eutq8DAAAANMn4+HjatWvXsLsB0DjWVwAAAIBmsd8DwKjx366tSQkAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAWz1K/gAAIABJREFUAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQAAAAAAAAAAAAAAADhCFQA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AAAAAAAoR1ABAAAAAAAAAAAAAACUI6gAAAAAAAAAAAAAAADKEVQAAAAAAAAAAAAAAADlCCoAAAAAAAAAAAAAAIByBBUAAAAAAAAAAAAAAEA5ggoAAAAAAAAAAAAAAKAcQQUAAAAAAAAAAAAAAFCOoAIAAAAAAAAAAAAAAChHUAEAAAAAAAAAAAAAAJQjqAAAAAAAAAAAAAAAAMoRVAAAAAAAAAAAAAAAAOUIKgAAAAAAAAAAAAAAgHIEFQAAAAAAAAAAAAAAQDmCCgAAAAAAAAAAAAAAoBxBBQAAAAAAAAAAAAAAUI6gAgAAAAAAAAAAAAAAKEdQAQAAAAAAAAAAAAAAlCOoAAAAAAAAAAAAAAAAyhFUAAAAAAAAAAAAAAAA5QgqAAAAAAAAAAAAAACAcgQVAAAAAAAAAAAAAABAOYIKAAAAAAAAAAAAAACgHEEFAAAAAAAAAAAAAABQjqACAAAAAAAAAAAAAAAoR1ABAAAAAAAAAAAAAACUI6gAAAAAAAAAAAAAAADKEVQAAAAAAAAAAAAAAADlCCoAAAAAAAAAAAAAAIByBBUAAAAAAAAAAAAAAEA5ggoAAAAAAAAAAAAAAKAcQQUAAAAAAAAAAAAAAFCOoAIAAAAAAAAAAAAAAChHUAEAAAAAAAAAAAAAAJQjqAAAAAAAAAAAAAAAAMoRVAAAAAAAAAAAAAAAAOUIKgAAAAAAAAAAAAAAgHIEFQAAAAAAAAAAAAAAQDmCCgAAAAAAAAAAAAAAoBxBBQAAAAAAAAAAAAAAUI6gAgAAAAAAAAAAAAAAKEdQAQAAAAAAAAAAAAAAlCOoAAAAAAAAAAAAAAAAyhFUAAAAAAAAAAAAAAAA5QgqAAAAAAAAAAAAAACAcgQVAAAAAAAAAAAAAABAOYIKAAAAAAAAAAAAAACgHEEFAAAAAAAAAAAAAABQjqACAAAAAAAAAAAAAAAoR1ABAAAAAAAAAAAAAACUI6gAAAAAAAAAAAAAAADKEVQAAAAAAAAAAAAAAADlCCoAAAAAAAAAAAAAAIByBBUAAAAAAAAAAAAAAEA5ggoAAAAAAAAAAAAAAKAcQQUAAAAAAAAAAAAAAFCOoAIAAAAAAAAAAAAAAChHUAEAAAAAAAAAAAAAAJQjqAAAAAAAAAAAAAAAAMoRVAAAAAAAAAAAAAAAAOUIKgAAAAAAAAAAAAAAgHIE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gHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHC6iy6gbJYtW5beeeedR7YBAJSJngUAKIo+BACo0BcAAADA3K1evbqhbQBAvgQqqnR2dqbly5cXXQYAQF16FgCgKPoQAKBCXwAAAABz19396P99s9Y2ACBfnUUXAAAAAAAAAAAAAAAAsNAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAAAAAAgHAEKgAAAAAAAAAA/pe9Ow+X5yrrBP59fwkBEkgCBIkgEhYVUFSGRcMiQTaFAMoIMi4QhUEYZRTFCYhL1FEQhhFkGRAYAwoIKiEBRQhLkE0JOGyyLwECgSQsISwh25k/qi63c+nbd+v11ufzPPXc6ttVp6r7rVNVfareUwAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAINz8KJXgNmoS7+56FVYnEsvGvu/mv+asMQGXUcAAACAmVja9gbtZXOztNsAAAAAAAAAY0mo2KcOe9/LFr0KS+Vq7ztl0asAAAAAwD63Sm1y2ssAAAAAAAAgObDoFQAAAAAAAAAAAAAAAJg3CRUAAAAAAAAAAAAAc3TEEUds638AwGxJqAAAAAAAAAAAAAAAAAbn4EWvAHt3+OGH5+Uvf/miV2NpXH755bnwwguv8L+rX/3qOXBA/hCTHX744YteBQAAAGBFrFKbnPayxdLmBAAAAMA449oYtSUBwPxJqNgHDhw4kCOPPHLRq7FUrnnNay56FQAAAADYx1atTU57GQAAAAAsl1VrYwSA/UoXZAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAACdn8Y+AAAgAElEQVQAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBkVABAAAAAAAAAAAAAAAMjoQKAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAAAgyOhAgAAAAAAAAAAAAAAGBwJFQAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAAAAAZHQgUAAAAAAAAAAAAAADA4EioAAAAAAAAAAAAAAIDBOXgByzxobeScc85ZwOIBAABYdht+Lx602XSwgrSLAAAAsCVtI+xT2kUAAADY0rzbRaq1NutlXHGBVbdOcuZcFwoAAMAqu01r7R2LXgmYBu0iAAAA7IK2EfYF7SIAAADswszbRQ7MsnAAAAAAAAAAAAAAAIBltIgnVFw5yS36l+cluWyuK8DQHZ31Hi9uk+RzC1wX2IrtlVVhW2WV2F5ZFbbV7pGN1+7H39ta++YiVwamRbvIyrAfHgZx3v/EeP8T4/1PjIdBnPc/Md4dbSPsOyvSLmKftdzEZ7mJz/ISm+UmPstLbJab+Cw38VleqxKbubaLHDzLwsfpP5DHkbIQVTX68nOttbMXtS6wFdsrq8K2yiqxvbIqbKvf8slFrwBMm3aR1WA/PAzivP+J8f4nxvufGA+DOO9/Yrwn2kbYV1ahXcQ+a7mJz3ITn+UlNstNfJaX2Cw38Vlu4rO8Viw2c2sXOTCvBQEAAAAAAAAAAAAAACwLCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHCqtbbodQAAAAAAAAAAAAAAAJgrT6gAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqAAAAAAAAAAAAAACAwZFQAQAAAAAAAAAAAAAADI6ECgAAAAAAAAAAAAAAYHAkVAAAAAAAAAAAAAAAAIMjoQIAAAAAAAAAAAAAABgcCRUAAAAAAAAAAAAAAMDgSKgAAAAAAAAAAAAAAAAGR0IFAAAAAAAAAAAAAAAwOBIqWElVdYOqenJVfbCqvlZVX6yqM6vqt6vq0D2WfaCqbl5VJ1TVM/tyv1lVrR+Om9LHYCBmvL0eWlX3q6r/05f5paq6pKq+UFVvq6qTquroaX0W9rcZb6s3q6pfq6rnV9W/V9XZVXVRv5yPV9VLquq+VVXT+jzsX7PcVics89B+W107HzhrFsth/5nxvvWEkW1yq+GEKX0kgJVVVYdU1UOr6tVVdU7/W/+rVfWhqvqrqrrdNsv5yao6pT+n/Wb/95Sq+slZf4ahqqrvqKrjq+qPqupVVXX+yDHu5F2Ut+cYVtXBVfXwqnpTVZ1XVd+oqo9V1bOr6vt3uk5DN40YT7uNpC/vf/RlfbE/l/tgf253g11/2AGbdl3eUPaufrOJ83TNIsZVddeqOrmqPtrH54Kq+nBV/X1VPaKqrrbF/GI8RdOMcVUdU1V/VlXvrKov9/vsL1bVW6vq96vqO7ZZjhhPUVXduv/+XzNyrvTVvt79VVXdYYflOe8CpqKqDq+qB/b79zf25wYXVNXFVXVuVZ3RHw+uNcVl2odt07ziU1P63devz7ba1veyvstijvGZ6jWLIZznzSM21Z13bzcuE39TD63uTFLdb5nRz3zclMr9L9Wdi3+uuvspPllVf1NVx+6gjH1fd7YyzfhU1RFV9fPV/R56d19HL6nuuP6GqvqtqjpyG+WctZf6t19MOTYn7WC/tuVyquqo6to73lNVX+mH9/T/m9o55jKbVnyq6rhdHHvO2KSsQdWdvX5fu1ie486o1prBsFJDknsnuSBJ22T4UJKb7KH8B08ouyU5btHfgWF1hllur0l+MMmFW2yvrV/+zy76uzAs9zCHfevfbGNbbUnOSHKtRX8fhuUdZr2tTlju/9qwnLMW/V0Yln+Yw771hG3uW1uSExb9fRgMBsMihyQ3SPK+bewv/yJJbVLGgSTP3WL+5yQ5sOjPu9+GLb7zk3dQzlRimOSoJG+fUMZFSR666O9tlYa9xjhTbiNJcpMkH96inOMX/b2t2jCturxJ2Tv+zSbOyx3jJNdI8vJt1OsfFuPVi3GSX0zy9S3K+0KSu21RjhhPN77/so0615I8P8khW5TlvMtgMEx1SHLXbe6jzktyjz0uyz5sCeOTKf7uS3c9cjvr2xb93a5KfPrlnLDd7zVbXLPIQM7z5lR3jtlBXNaGV29S1qDqzoTv9IeTXLLhMx+3xzKvmuQfJ3ynlyX5g22UM4i6M6/4JPnJdMfrrbb5c5LceYuyztpm/Tlr0d/hKsSmL++kHezXJi4nyY/0cdxs/s8mue2iv8NViU+S43YQm7Xh2ZuUNai6s4Pv64w9LsdxZ8xwcGCFVNUtk7wkXYX+apLHJ3lD//qBSf5rku9N8o9VdevW2oW7WczI+CVJ3pvkSklusYdVZ4DmsL0enmStB7a3JHllkneku9B07ST365dxeJIXVtVXWmuv2tOHYl+a07710iT/lm5bfW+Sz6Vr+LlGkpsm+ZUkP5DkTkleUVV3aK1dvpfPxf4zp211s+X+RrrGkkuSXH0a5bK/LWB7vUe6hpzNnL3H8gFWVlVdKV2j4FrPj+9J8r/TJbZdPckdkvxWksOSPDLd/vQJY4r6kyQP6cf/X5InJvlYkhsn+R9JbpnkoenOc39nBh+FzqeSfDDJ3Xcx755jWFUHJTklyW36f70s3Y00X0x30eV3k3xHkmdX1Wf8Dt+V3cR4am0kVXX1dPuM7+n/9Zwkf5vkG0nunOSxfTkvqarbt9betYP1ZN1e6vIV7OY3mzjPxa5jXFVHJDk9ya36f52S5O/T7bMvS3L9dG1I/3lCGWI8e7uKcVXdPsnJ6W5WvTzdzfmnpjsH++50nV7dO8k1k5xaVT/QWvv4mHLEePqu2//9bJK/S/KmdHE+KMmx6c6Zr5fkQemum/3chLKcdwGz8Ol0bazv7MfPSXc8+a4kP5PuvP+oJKdV1W1ba+/e5XLsw3Zn1vGZxbXxdyT5pR2ux6qaV/1Zs+trFgM8z5t1bD6T7d3v9Nisn989f4tph1R3rqCqDiT5yyQHJzk33b58Gv5vknv2429I8tR0degW6Y41N05yUlWd01r7y03WbWh159vMID7XSnLldL9dT0/yz0neneTL6erozyf52SRHJ3nlNr/XU9OdB2zm4j2u81KaYd1Zs9V+7hObvVFV10/yinTnE5emu370yv7t45P8ZpLvTHcv061aa/vuuvsM4nNmtnfseXq6Nr5k62PP0OrO/0nyzAnvf22P5TvujLPojA6DYSdD1nvHuSTJsWPe/+2sZzedtMtl3DbdDRQ/muQq/f9OGin3uEV/D4bVGGa9vSa5XbobNW8+YZr7pjuxb0k+mk16WjUMe5jTvvXgLd4/KMk/jCznPov+XgzLN8xjWx1T5kHpGgVbkt/Levb7WYv+PgzLPcxp33rCSBnHLPozGwwGw7IO6S48ru0v35rkoDHT3CpdY2tL8qWN56/pkuDWeuY5M8lVN7x/aP//tX3/1J+YNeQhyR+mu3Bxnf71MSMxPXmbZUwlhkl+eWTZzxjz/k2y/oSqj2z1W8gwnRhnim0kSf5oZNm/vcmy1ralMxb93a3SMI26PKbMXf1mE+fljnGSF/TzXJQJbUTpOkcau58V4+WNcbqbEtbm+W+bTPPkkWmeLsZzi+8rkzwgY86X+/ePSpeUvPa9/9gm0znvMhgMUx822zdtmOanRvYbL9vlcuzDljQ+me7vvjOGdI4wx/pzwkgZx+xhfQdznjev2GxnPdIlXrQkX9m47xuZblB1Z5Pv4Df67+ADSf50JDbH7aHMHx8p57SN20W68/BPZr3t+hqblDOYujOv+KRLlnhWku+eMM0jR5bz+gnTnZU9tIGt+jCjunPSWjl7XLcXjKzP/ce8/4CR9/dl/GYRn20s88isPwHmIxOmG1TdGfnuT5rhMhx3NhkOBFZEVd02yR37l89rrb1tzGRPTrdjT5Jf73uh3JHW2ttba09rrf1ra+2iXa4uAzeP7bW19tbW2s+21t4/YZpT0/V4knSZg7fcyTLY/+a4b710i/cvS/KkkX/dcbNpGaZ5batj/Hq6Gyw/lOTPplAeA7DA7RWA8W43Mv74/tzzClpr78x6j0NHJrnZhkl+I/nWk14f2Vr7xob5v57uwkn66R6115VmXWvtD1prr2ytfX4PxUwrho/u/34xXYLkxnX9aLonUyXdDTI/vYd1Hoy9xnhabST9Odl/719+IN0527ctK8nz+pd3qqrbbJyG8aZUlzfa8W82cZ6dacS4qu6Q5Bf7l7/bWjttwvLauDYnMZ6dKdXjtXOzL7TWNutp749Gxo/d+KYYz0Zr7fjW2kvHnS/375+f7ikVa35mk6KcdwFTt9m+acM0L093Xpjs/jqTfdguzCM+ro3v3hzrz54N7TxviWJz16w/rezvN+776FTVdyf54/7lwzO93tDXjhmXpks6v8J20Z+Hn9i/PDLdU5I2rtug6s44s4hPa+0lrbWHt9Y+NWGap6Xr7CPpvtej9rrc/WaGdWfPqurodE8aSZJXt9b+buM0rbWXJnl1//IX+3n2jQXG52fTPQEmSf56Tsuk47izCQkVrJKfGhn/q3ETtNYuT5c1mHSV+c6zXinYxDJtr28YGb/xjJbB6lqmbfXCkfGrzGgZrK65b6tVdYOsX8B/eGttaX7Ys/SWad8KQHLIyPjHJ0z3sXHzVFWl6+EwST7YWvvXcTP3/1+7uHnffj6WwLRiWFXfm/Vkm5f2N9KMc/LI+ErfFLMPbdVGcuckR/Tjz+/P2cY5eWRcjBdkD7/ZxHm5/Vr/94IkT99lGWK83NbOsz6x2QSttQuSnL9h+lFivDgTj6XOu4AlsHatacfXmezD5mLX8dkB18Z3bx7x2YrzvPFmHZsHjYw/f0bL2A+ekeRq6bbNN06jwKq6epK79C9f21o7e5NJX5bu6SHJ+G1e3ZlBfHbgjP7vgSQ3nPOyV8EiY7OV+2T9Huqx1/V7J/d/D/Tz7CeLis/asadl/b4JZsxxZzIJFaySO/R/v5bknROmG92x3352qwMTLdP2euWR8S17OGBwlmlbfeDI+AdntAxW1yK21WcmOSzJX7fWzthjWQzLMu1bAVi/ySFJbjRhurWL7C3JR0b+f8Os99C2VWPy2vvXS3LMNteP2ZtWDO8wZrpv01r7XJIP9y8d45fLVm0k24pxul7n1m6KEuPF2e1vNnFeUlV1SNZvYjx97QnSVXVQVV2/qo6pqu3cQCTGy23t3GzTm0yq6vAka716fmjMJGK8OFsdS513AQtTVd+X5If7l7u5zmQfNkNTiM92uTa+C3OMz1ac520w69j0N1audRR2VpJ/mfYy9oOqekCS49M9eejRW0y+E7fJehL5pGPGxUnWEv1u0/cMPmrQdWeG8dkux55NLEFstrLdurMvr+svKj5VdeOsP8H0Ta21s+a1bBx3JpFQwSpZ68Xho+Me4z1i9AfEzTadCmZrmbbXO42Mf2BGy2B1LXRbraqjqurYqnpeksf1/z4/yQuntQz2jbluq1X1wCT3TPKlJL+123IYrEXsW/+qqj5bVRdX1flV9a9V9T+r6np7LBdgP3hx1ntRObGqDto4QVXdMsm9+pcvaq19ZeTtm4+Mb3XRUpvEcppWDHdTzvWr6rAtpmV+tmoj2VaM+3O8j/Yv1fUF2ONvNnFeXj+U9R5X31tVh1fVU9K1FX0q3RMNLqiq06vquAnliPFye1b/91pV9fBNpvm9MdOPEuPFmcqxdMz7zruAXamqQ6vqe6rqN9PdyHNw/9ZTdlGcfdiUTTk+27WTa+M3rap/q6ovV9VFVXV2VZ1aVQ8ac9PYvjPj+Oz2moXzvMy97vxMkkP78b9urbVtzDOoulNVRyZ5av/yxNba+ZOm36HdHDMOTvI9uylnP9adGcdnu9aOPZdk/fvdzI9V1buq6sKq+npVfaKqXlJVP7Xfnno9z9hU1Wuq6tz+uHNuVZ1RVY+pqmtsMeta3bmgT3Ydq7V2TtavM6k7e7ebJyMNpu707l9V7+8/64VV9ZGqen5V3XmP5TruTCChgpXQ9zq11hvRZo+ZSZK01r6UrjfgJLn+LNcLxlmm7bWqfijrNwW9t7UmoYJvWdS22v9waVXVkpyX5K1JfjlJpbtA/tOttS/vZRnsL/PeVvsf1WsNko9prZ23m3IYpgWeBxyX5DuTXCnJtZL8SLpEtY9W1a/ssWyAldY3Av9iuh5Qbp/kzP7i3o9W1V2r6g/SXZg8JMm/59tvzP2ukfGJ+/Yknx4Z1yaxPKYVw92UUxvmY0G22UayFquvbeN36VqMr11VV544JVM1hd9s4ry8Ri/EHUjXg9mvJzly5P+HJLlrktdX1YmblCPGy+3/JnlBP/6MqnpOVd27qm5dVferqlOy3ivin7TWXjumDDFegKo6kOQxI/966ZjJnHcBM1dVJ4xcZ/pauqc8PDnJdfpJnpDkRbso2j5sCmYYn+0se6fXxq+T5LZJjkjXu/j1ktwn3Y1976qqpb/pa6fmGJ/jsrtrFoM9z1tg3Rm9qfUFm051RUOrO09McnSStyR53pTLnvaxZ3B1J7ONz5aq6l5JfrB/+eoNnTWNc8N0HUpcLclV0z3p6gFJTknypn3WWd48Y3O3JNdOd9y5drokl8cn+XhV3XfCfGt1Z6v6l6zXnf1y7WchdadPfviF/uU3kvzdNmcdUt1JunbSm6X7rFdLcpN0x+zXV9UpVXXELst13Jng4K0ngaVw9ZHxr25j+q+le9z71WazOjDRUmyv/QHouUnWel993ITJGaal2FZH/EWSP15QjwEst3lvq09K1xD4tiTP2WUZDNe8t9ePJ3lZuu117YfojZL853S9Cl0lybOqqrXW/nKXywBYea2106rqVumSJR6Sb+/x5vPpekJ+Tmvt6xve28m+/Wsj49oklse0YmhbWFE7aCNZi/F2z+PWXC3JN3e3duzCXn+zifPyuubI+Inpfs/8c5LfT/KeJIen+63zhHQ37jyhqj7YWjt1QzlivMRaa5cleXBVvSLJ7yR5aD+MekOSP90kmSIR40V5VLob55LkZa21d46ZxnkXsEjvSvKw1tqZu5zfPmy29hqfiXZ4bfzyJK9L8k9J3p3kC+ni9p+S/Eq6m9dunuQNVXXb1tqnZrHOS2Za8dnrNQvned9uZnWnqr476z3rv7W1tlXP+oOrO1V1x3S/Vy5N8vBtPsFjJ6Z97BlU3ZlDfLZa/jWTPKN/eVm69ovNXJzktCSvSfK+JBek60Di2CSPSHez8u2TnF5Vx7bWLpjVes/DHGPz3iQvT/L2JJ9Nl1DxfUl+Psnd033H/1BV926tvWrM/LupOyt/zrbgunOHdOcGSXJKa+3CLaYfVN1J1zncaemOtx9Mt22uJQk9PF2i6k8lObWq7tZau2SH5TvuTCChglVxlZHxi7cx/Vqlu+oM1gW2sizb69OT3Loff35r7RVTLp/Vt6ht9ZfS3Txc6U5yb53uJPfXktyoqh7aWvv8HpfB/jK3bbWqfizdE1MW0ujCvjDPfesp6Y7xG7fTM5O8pKqOT3fh4kpJ/ryqTpv0qFKA/ayqDknXc8t9052HbnSddD3ifCJdQ+WonezbRxsBtUksj2nF0LawurbbRrIW452cxyViPDdT+s0mzsvrsJHxqyQ5Pcnx/Q34Sfek02dV1fvSPV3qQJLH97912oZ5EzFeWn2PtQ9KcotNJjk2yUOq6gOttc+MeV+M56yq7pQumSlJzk3XnjuO8y5gHl6e7klWSVfvb5yud9qfTvLiqvqN1tord1Gufdh0zCo+W9nJtfH7bdKT7puq6pnpErcfnK696ClJ7jfVNV2sWcZnGtcshnyet4i68wtZbyvdztMpBlV3+jblv0z3Hf15a+19M1jMtI89g6k7c4rPpOUflOSFSW7Q/+t/ttb+34RZbrtJ/Tmjqp6e5O/TJQDcLMkfJPnNaa7vPM0xNk9prZ005v//luQF/RORnpUu2fK5VXXj1tpFG6bdTd1Z2XqTLL7upHui/JrtHHsGU3d619vk855eVU9L8qokt0yXYPGIdJ0X74TjzgQHFr0CsE2jB7NDtjH92qNhvjGDdYGtLHx7rarHZr1XrzOT/Oq0ymZfWci22lr7RGvtfa2197bW3tRa+/N0j0D8pyTHJzmzqvbFY42Zmrlsq33vRWs/HJ/aWnvPTuaH3tz2ra21CybdQNY3rP9R//LQdD2yAwxOVR2W5LVJHpuu5+snpmtYvXK63q3vnuTN6S66v7yqNja27mTfPvqoWm0Sy2NaMbQtrKAdtpGsxXgn53GJGM/FFH+zifPy2nhR+8SRZIpvaa29Od2NWEl3TN94U74YL7G+F8S3Jbl3ks+ku5B+dLp4XT/dfvrrSR6Y5O1V9f1jihHjOepjcEq6jvouSnL/1tq5m0zuvAuYudbal/vrTO9rrZ3ZWvvb1tr90iXr3Shdb60n7KJo+7ApmGF8NrXTa+Ob3KS29t4lfVkf6v/101V1vWms5zKYZXymdM1isOd5i6g7Wb+p9ZtJXrKddZzw3n6sO7+T5KZJPpXkD2e0jGkfe4ZUd+YRn0memeQn+vFXJvnjSRNvUX8uTJdA9cX+Xw/rb3pfVXOJzaTvtH//2Ume17+8brqnJW20m7qzyvUmWWDdqaqrJLl///Kz6a7dTTSwurPV5/18uid+rT2V4pG7WITjzgQSKlgVo4/22c5jk9Z6strOI2Vg2ha6vfYZtn/av/xgknu21r42YRaGa2n2rX0W+C+lu1h6/XQ3ucGaeW2rj0v3+MdPp8tch91Ymn1r7y+TrF3AuNOkCQH2sZOS3LEff0hr7cTW2gdbaxe31r7SWjs9yZ2TvCHdTbpPqqofGpl/J/v20Z61tUksj2nF0LawYnbRRrIW452cxyViPC/T+s0mzstrdD973hY9O756ZPw2m5QjxkumT4x6cbqk1s8l+dHW2t+01j7fWruktXZ2a+2ZSX4s3YXZ6yZ5/piixHhOquqGSV6T5BpJLkvywNbav0yYxXkXsDCttb9O8nfp7oN5elVdc4dF2IfN0BTiM9Ysro231i7N+g2YyQDa1mcVnzG2umbhPG+DGdad26a7oTZJTtvqxuTt2E91p6pumq6DniR55AzvuZn2sWcQdWeO8dls+Y9P8rD+5ZuSPGBchxA70Vq7IMnf9i8Py/pTl1bKomMzxrNHxqd13FnJepMsRXzuk+TIfvyFe603yf6pO9vVWvt4uqf6JslNquq6OyzCcWeCgxe9ArAdrbWLquoLSa6VZGKv5VV1jaxXwk/Pet1go0Vur1X1X9JlQSfJJ5PcrbV2/l7LZX9atn1ra+38qnpLkrsluW9VXanvyYKBm+O2emL/97VJ7l1V46ZZK/uwqnpgP35ua+31O1wW+9QS7lvP7dfnqCSr3hMQwI5Vd0D/5f7lh1tr427IS2vt0qr6vXRPqjiQ5IQkj+rfPntk0q2epHb9kXFtEstjWjHcWM6k39tr5bQN8zEnu2wjOTvJj6Q73z9yi5sJ1mJ8XmvtmxOmY3qm9ZtNnJfX6H53q33n6LTX3vCeGC+vn8j6b9OntdY+N26i1tp/VNXfpOvh9lZV9UOttXePTCLGc9BflH9tusSWluSXW2unbjGb8y5g0U5N10vtYemOOy/awbz2YbO3l/h8mxlfG3//yPhQ2tanGp9xtnHNwnneeLOIzYNGxl8whfLW7Je686h0vW5/PMmhI20Mo35gZPzHq+rofvwVO7hJeeMx4x0Tpt3q2DOkujOv+HybqjoxyWP6l/+e5PjW2rR6XN8P9WdhsdnEVt/p2Umuk63P/ZL1urPK134WHR/Hnul4f5J79uPXS/e0j+1y3JlAQgWr5P3pepS8SVUd3Gc2j3PTkfEPzH61YKy5b69VdZ90JxsHkpyT5C6ttSE0vLE3y7ZvPa//e2i6hrRzZrgsVss8ttW1R9H9Uj9MclS6HhWT5I1JJFQwatn2rZs+YhtgAK6TZK3Xtkm9XCfJO0fGR/fR79/k/+Nok1hO04rhxnLetY1yPr0EvXANzh7aSN6f9Ue/3zTJv25S/sFJbty/VNfnZ1q/2cR5ef3HyPhBW0w7+v7G31xivLxuNjL+71tM+850CRVJF8fRhAoxnrGqOipdj4c36v/1yNbadm52cN4FLNp5I+M32OG89mGzt5f4XMEcro0PsV19avHZwqTv1nneeFONTVVdKcm3OiFI8s97LXPEfqk7V+7/3ijr7QuT/N7I+A2TbHefvptjz6VJPjKmnCHVnXnF5wqq6r8leUL/8gNJ7tFa+6RtGjwAACAASURBVMpuytrEfqg/C4nNBFt9p+9PcqskR1TV0Zt1/FBV35nk8P6lurMLVfUdSe7Rv/z31tr7dlvWGPuh7uzEXj6v484EBxa9ArADb+7/HpbuQLaZ0cczvWV2qwMTzXV7raq7JHlpukS5L6TrfeNjuy2PQVm2fetopvBSP+aLuVu2bRUmWZrttaqune5msmRnPRMA7BejN1hu1bHIlTaZ7xNZ34du9Zj6H+v/fibJWVutHHMzrRi+eWR803L6Hpu+t3/pnHTO9thGsq0Yp3ts+NqTEMR49YjzkmqtfTLJp/qXx9QmjyHp3Xhk/DMb3hPj5TWNc7NEjGeqqo5I8uokN+//9ZjW2jO2ObvzLmDR9nKdyT5s9qZyHXBO18ZvPjI+lLb1mV+n3cY1C+d54007NvdK96T1JHnRhI7BdmOIdWcvzkxycT8+6ZhxSJIfXZuntXbJhknUnRmrql9M8vT+5ceT3HWKT0Vao/5M31bf6XbrjvtQ9u7nst4WNM2nUyTDqzt7+byOOxNIqGCVvHxkfGwPZFV1IOuPBvpykjfMeqVgE3PbXqvqduke8XjlJBeky4D+j8lzwbcszb61qr4rybH9y0+21i6cxXJYWTPfVltrtdWQ7pHRSbeNrv3/uB1+Fva/pdm3JnlYkrWbkN44o2UALLMvJlnrIerYvieUzYw2+H1ibaS11tL95kqSm1bVj2aM/v9rvbWc2s/HEphWDFtrH856DzoPqKpDN1nkCSPjp+xqpdmVKbSRnNHPlyQPnnAz9wkj42I8J1P8zXZGxHmZ/UP/9/Akd5kw3f1Gxt+84b0zIsbL6hMj43fcYtqx52a9MyLGM9Gf3/xjkv/U/+tPWmt/tt35nXcBS+D+I+Pv3cmM9mFzsev4rJnHtfG+/eiXR/71L9Msf4ntOT7bsNU1izPiPG+cacfmQSPjz59CeUn2V91prZ2wjTaIPxyZ5c4j7521g+VcmOR1/cu79vdMjHO/rPeOP26bPyMDqjvzis+aqrpfkr9Kt/86O91TkaZ603af2L725JivJ3nHNMufl3nHZht+ZWR83HHntCSX9+OTnoh7Qv/38n6elbTg+Kwdey5J8qI9lvUt+6XubFdV3TDJ3fqXH2utbexoZiLHnckkVLAyWmtvT/Km/uVDqurYMZP9VtYfGf3UjZlRVXVcVbV+OHl2a8vQzWt7raofTndx47B0j9W6V2vtndP4DAzDPLbVqvreqvrxSevRn+C+KMkh/b+mnY3MinMewCqZ0771mKq65aT1qKrjk/x+//Ib6Rr6AAaltXZ5ut9MSXLdJI8bN11VXSPJ6I1ir9wwyVOSXNaPP62qrrph/qsmeVr/8tJ+epbLtGL4v/q/10zyxI1vVtWNkzy2f/nRrEAD8X4xjTaS1trFSf6if3mzJI8es5xjkzykf/nG1tqZu15pFkKcl95TklzUj//vqjp84wRV9QtJjutf/mNr7dOj74vxUntduovbSfKIqrrFuImq6ieT/HT/8jNJ3jX6vhjPRt/74ClJbt//66mttd/dRVHOu4Cpq6oTquoqW0zzqCT37F9+IutttGvvb+cagX3YLswrPtP43VdVd66qIye8f6Ukz816+/0rNp5vrpp5xGda1yyGdp43x33b6PTXTPeEiiR5b2vtXZOmH5lvcHVnGvoYr8XnpE0mWztmHJzkGVV10IYyjsp62/WX033PVzC0ujMt24lPVd09yYuTHJTk3HRPpjhrh8v5iY3nFBvev1q6Jy+tPTnmea21b+5kGfvNVrGpqltU1U22KONhSR7av/xcxpxvtdY+l+SF/ct7VNXPjCnn/knu0b/8636eQdvmvm10+u9Psnae8M+ttfO2uZxB1Z2qundN6Biuqq6TrjOatXvrnjlmGsedPdjqcbqwbH493aNfrprkNVX1p+l6871qukyzh/XTfTjJk3e7kKo6YcO/fnhk/Ceq6piR1x9trW3sAQuSGW+vfUPbq5Os/Wj93SQXVNUPTJjt3NbauTtdFvverPet103yuqp6d7pe29+Z7sfKpUmOTneB7iH9eJK8L8kTdvVJ2O/mch4AUzLr7fWYJG+oqrcleUWSd6drxEuSGyX5mX5Y6wng0TvtnQBgH/mjJPdNcmiSk6rqVul6Xvt4kquke2TtbyT57n7617XWXjNaQGvtw1X1pCSPSfd42rdU1Z8l+ViSGyc5MeuNwU9qrX1kth9pWKrqDklGL44cNTJ+k43tOK21kzeWMcUYPj9dT3u3T/KrVXV0kuck+VKS2yb5vXS99lye5L+31i7d/icdrr3GeMptJE9K8rNJvjfJE/sLc3+b7maPOyf5nXTt6t9It+9gm6ZRl6dInGdgSvvrT1XV76e78fAWSd7e76/fk27/er8kj+gn/0qSR22yOmI8A3uNcWvty1X1hHTnZ1dP8taqelqS09MdS6+T7rztv2a9U7jH9EmyG4nx9L04yd378dcned4Wx9KL+17Yr8B5FzAjJyV5clX9Q7qnU30syVfTHU9ukeTns54QdnGSh7XWLhtTzkT2Ybt2UmYcnyn+7ntwktOq6rR0Pet+KN155dWS3Cpd2/3N1+ZP19a/6k7K7OvPMZneNYshneedlDns2zZ4YNZvxNzJ0ymGWHfmorX2+qr623SxuU+S06vqKUk+m247eFzW265PbK19aZOihlR35qK6p1Kdkq7OXJKuDeJKWxx7zm6tfXnD/x6T5IVV9bJcsa4fkeR2SR6e9Rh/KN2+gcluleS5VfWGJK9K9/SeL6Tbxm+abv+59vv2snT7z69tUtbjkvxEkmsneXFV3TrrnW4dn66jxCQ5L935Bzv34JHxnRx7hlZ3npZuH/MPSd6W5Kx0++yj0nUu8ytZb4t7c5Jn7GYhjjsTtNYMhpUaktw73eNi2ibDh5LcZJN5jxuZ7uQJy9is7HHDpuUYDLPcXtM9Emkn22pLctKivxPDcg4z3laP28E2+sok117092FY3mEe5wFbLP+sfv6zFv1dGJZ/WJJ969fSNRAt/PswGAyGRQ5J7pqusXur/ebrklxjkzIOJHneFvM/N8mBRX/e/TYkOXknv30nlDOVGKZrsH77hDIuSvLQRX9vqzTsNcaZchtJupuFPzxh3guSHL/o723VhmnV5S2WcVa2+ZtNnJc7xkken+4Gw83m/3ySY8V49WKc7ia6P98ivi3dDWOPFuO5xnenx9KzJpTlvMtgMEx1GDnP22r4dJK7bVLGcSPTnTxhWfZhSxifTOl3X7Z/PvOeJDdf9He7QvE5bpvL2NY1iwzkPG8esRkz/b/2016a5OgdrOvg6s42vpOTRj73cZtMM7rvOmlCWVdN9wSezb7XyybNP1LOIOrOvOKzoYztDieMKeeMbc57RpLrLfq7W5HYnLDN7/T8JPfdxjr9SJJzJpRzTpIfWfR3tyrx2TDtgXRPH21JvpjkkB2sy6DqTrZ/XvD3SY7cS2ziuDN28IQKVk5r7RVV9YPpspnvleS70jWsfzTJ3yV5emvt6xOKgLmxvbIqZrytviXd4+/umq43n+9K19vcoel6rfhEuoabF7fW3rKXz8H+Z7/KKpnx9vrOJL+Q5Nh0+9bvTHeB7uB0vZz9R7qbgp/bPJ0KIK2111bVTdM9Ge0nk3x/uh4NL0339LQzk7woyWmtbwEcU8blSR7S9wzzsCS3SbfvPb+f/9mttVfN+rOwe9OKYWvt/Kq6Xbres38u3eOMD0vXe8/rkjy1tfYfs/kUzENr7aNVdcskv5rk/ukuChyS7gaGf0oX408ucBWZAnFebq21x/Y9nz4iyR3T/ea5KN0FutOSPK21dsEWZYjxEurPtR5VVX+T5KFJ7pDkBunaCr+a7jfzG9Mdl7/t6QcbyhLjJeW8C5iBe6RrY719uv39dZJcK11vp+cmeVe6TrteutdrBPZhuzK3+EzBn/Xrc2y63vSvneSaSb6ZLmn3HeluUjul7f1JAMtiHvGZ6jWLAZ3nzbXuVNX3pLtpOElOb619bgezD7HuzE1r7RtJ7lVVP5fuZtgfStd+/fkkb0p3TfFt2yhnKHVn1Tw6yV3S1Z/vS7d/PDLJ19OdF/xbuicGvmaz6xN8m39Kd73n2HRPD1vbf1a6m/bfneSf0yWafWWrwlpr/1ZVt0h3Xf+n0j15KenuZzo1yVNaa1+Y8mcYirsk+f/s3XmYJVV9N/DvD0FFBHFDUFRcYoxCVBQTNwSj0biCor4aE8HEXZNINJvhFZNoXhNMosHgLmiMcQUVNW4Rlxijxg2XuERARFQUcVA2gfP+caqdy+XeXmZ6pme6Pp/nuU/f6qo6dW518wz16/M954bD+ze21i5Zwblj+2/nsUnumf55b57+eXdLr5edmeTjSU5Yzr8HS/Hvzmy1Pn6PAAAAAAAAAAAAAAAAlm+Hte4AAAAAAAAAAAAAAADA1iZQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAAAAKMjUAEAAAAAAAAAAAAAAIyOQAUAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAACjI1ABAAAAAAAAAAAAAACMjkAFAAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVADAGquqfaqqDa/DN6Odwyfa2WfVOggAAAAAAAAAjE5VHb0wDmGt+7I9qqqDJsZxHLTW/QEAZhOoAAAAAAAAAAAAAAAARkegAgAAAAAA1jGrWgIAAACT1ArYEqzIAcD2SqACANaJ1trxrbUaXqevdX8AAAAAAAAAgO1Xa+3ohXEIa92X7VFr7ZSJcRynrHV/AIDZBCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACgFVRVTesqv9XVZ+pqh9X1c+q6ntVdWpVvaGqDq+q3abOacPr6GH73lX1jqo6u6ouqqpvVtWxVXWjZfZh/6p6aVV9tap+UlU/Hd4fV1W32opt7FtV/zh89h8N9+K7VfWBqvqjqtprGW3cp6reOZx3cVWdNvRh70XOOXzinu4zY/8pw75Thu0bVdXfVdU3qurCqvphVb23qn5jmZ9zz6p6XlV9uqrOHfp5ZlW9qaruvcS5Vxn6+97hM14y/N58vao+WFV/VlW3mXPurYb7+8WqOn849ztV9bmqenVVPbKqrraczwAAAADrWVUdVFUtyWsmvn3aRP1g4XXQjHMPqao3V9W3hjrNeUMN4DlVde1Frnn80Obpw/aeVXVMVX2tqi6oqrOG2sFtp87bp6pePBx34VBXen1V3WKRax298BmG7d2r6rlV9aWhrnNuVX2oqh61zPu1T1X9/XD++UN/v15VL6uq/ZbTBgAAAGzLVlormH72ntHe6cP+44ft/Yfn+TOH5/tvDOMSrjd13l2n6g7/W1UvqKpdl/EZrlJVj62qk4exAhcP4x0+VlVHVtXOm3p/lrjuvaqPfzlt+GwXVNUZVfWJofZxrxnnHLRY/WXiuJtUHxNy2nA/vlNVJ1XVwcP+pX4O0+NvDhj6+u3h/pxVVa+rql9a4jPevKr+sPp4ldOHz3nh8DnfWFX3m3PePkPfPjTx7Q/N+L06fOKcK9SQFunTUmNhpn8H7zi0fdrw2efds80eHwTA+lGtzfz3AgCWrarukeTkJLstceiDWmsnT5y38I/Qc5O0JEfPOe/Hw7kfnXP9HZIck+QPktScNi5N8tTW2su3YBtXSfK3S7SRJCe01g6fOG+fJKcNm0ck+cUkfzLn3HOS3LO19pUZ1z88G4seN2utnT61/5Qk90zy4STPTnJSkisULSY8q7V2zLwPUFW/meRlSXaZd0ySVyV5Umvt0qlzr5nk3Unusci5SfLW1tphU+c+PMk/J7nqEufu11r74hLHAAAAwLo2/KH+Q0sdl+Tg1topwznXTvKWJFcaBDDh+0ke0lr7xIxrHp/ksUnOSPKQJP+WZM8Zbfw0yf1aax8bBhy8Lcm1Zhz3oyT3aK19aca1jk7ynGHz5knen2ReAONNSX5zuk4x0dZvJ3l5knmTNFyW5KjW2l/P2Q8AAADbvJXWCiafvVtrVxoHMQyGv2mSE5J8MMkrM/vv+V9LH+vw3ap6ZpK/yexxFZ8ZjvvJnP7fJMk7ktxukb5/I8kDWmtfW+SYFamqv08fC7KYH7bWpoMjB2Xj/f55/WXqmHsleXuSa85osyX58/R7utjPYXL8zfeTvCjJjjPauyDJb7TWPjKjjZsl+eaMc6b9c5IjJmssU+NeFnNEa+344ZzjM9SQWmv7zDthGWNhTs/G38FPJPnHTH32yXu2GuODAFh/Zv2jCQDLVn0lgH9ND1Ocn+S49IfB76c/0N0syV2THLpIMw9IcqckX01/aP5C+h/QH57k8cP7k6tq39bamTPO/8ckTxnefyTJ8ekPeRekP0T/QZLbJnlZVX23tfaOLdTGy5M8bnh/dpJjk3w8PRBy/SR3TnLYjPMmPT79fn04PbDwtSS7J/nt4XX9JK9Ocpcl2lnMXulhisvTgxsfS3JJkrsn+b/D9f66qt4zZ7DCI5K8Lv3B8pvD5/xyethjnyS/k+T+w9cNSY6cauLobAxTnJzk9Um+leSiJHskuUOSB6YXBiave4P0h+Srpv9+HZv+MPyDJDsnuWV6YOSQFd4PAAAAWK8+lWS/9GDDXw3fu2+S70wdd1ry8zrPB5Lsnx4g+Jf0SRFOS7JTkgPTn/P3SPLuqrpDa+2MOde+RpIT05/j/yy91nFZkvsN27skeV1V3Se9TvHj9LrEf6X/7eJh6fWYa6dP2vCrS3zWN6bXoV6aHgj5cZJfTvLHSW6V5BHD537G9IlV9YD0WlAl+UmSFw734dL0Os2fpk9K8fyqOq+1dtwSfQEAAIBt1YpqBStwuySPSg8zHJPk1CS7po+heEz6s/kxVfW29IkqFwa+fzX9mfv30scZ7J8eILjSJJRVdd308Q03TnJxklek1xtOTw8j/HqS308fO/Ceqtq/tfbjFX6OK6mqB2ZjmOIL6eNivpJee9g9fSzJvdPHhKy07ZunB0R2Sa9DHJdeJ9mQZN8kz0ryvPR6yXLcd+jHqemhilPTx1Mcmn5vrpFej/mF1tolU+deJX3syHvTJ634cpJzk1wn/ef31OGzPiZ9rMhzJs49K/336oD0MS1J/9l/auoa317m59gUBwx9OzP9d/DT6TWm6ck+V2N8EADrjBUqANgsQ1L+g8PmFVagmDpuxyTXaK1tmPje5D9CM2cZqKrfSvLaYfPNrbVHTO2/T5L3DZu/21p71YxrXz3Ju9JnVjwjyS2nkvKr0caD02cMSJL/THL/1tp5c+7FjSeDITOS+q9I8sQ29Y90Vb0iye8Om/u31j47tf/wLG+Figyf4W6ttbOmjrl7+gNjJXlxa+33p/ZfL70Acq30h+AnzprZsaqelz444vIkt2mtfXVi37fSCxxvaa09fPrcieOu01o7d2L7cekDKJJFVqCoYfnO1tqF89oGAACAMVmqZjBx3MLz/HlJ7t1a++8Zx9w0vfaxV5J/aa395tT+49NnF0z6JAi/2lr736ljnpo+UULSJ2g4L71Occ7UcX+TPnAgmV0LOTpX/OP9o1trb5g6ZtckH03/g/jlSW43WVOoqp3SB17cMD1McY/W2ucW+cwXJLlpa+0HAQAAgO3UCmoFR2d5K1QkfcLJ+7TWLpg65s3pk09elh5C+FCSR7bWLps45irpYYlfTfLDJHtOj0WoqtcneXT6eIeDW2tXCn1U1R3S6wC7JHl+a+3Zc27BslXVa5P81nDdfRdZPeMKYxyG7x2URVaoqKoTs3HSyENbaydN7b/GcP7PwxpLrFCR9MkxDp0OTFTVs7MxRPPQ1tqJU/t3SbJba+3sOZ+v0seJHJ6+8uiNpgMry1mRY+LY47O6K1QkPUBy4CLjdTZ7fBAA69MOa90BALZ7e068v9KSgAtaa5dOhilmeMKsh87W2uuSvGfYPLSq9pw6ZGFWgrfOetAZ2rgoydOGzZsmOXgLtnFBksPmPZwNbc1aZWPB2UmePh2mGBwz8X46Qb9ST58OUwx9+1g2zmww6xpPTg9TnJXkKYs8ND5nOGaH9JU1Ji38DD+6WAenCw0T5/1oXphiOO9CYQoAAABYmaq6ZvpMg0ly1KwwRZIMK1L85bD58OGP7fMcNR2mGLw6faXKpK/G+XvTYYrB5EoQS9VCTp4OUwz9PT/JE4bNHZI8aeqQQ9PDFEnyV9NhiqGNM7Ix2HGNJEcs0RcAAAAYm5Y+QP2CGfv+afh6lSRXTx8fctnkAcP2y4fN6ya5zeT+YaLKRw6bT5sVphja+WySlwybh6/oE8y3MFbhM/PCFMO1p8c4LKqqbpjkQcPmW6bDFEObF2RjXWM5LkpyxIzVJ5LkxekrUCQz6iyttZ/OC1MM+1uSP0wPxuySvirHtuapi43XyeqMDwJgHRKoAGBzTT5Mbeofk0+d90f6wcJygDsmOWjhm1W128T2Wxa7QGvtK+mzIibJXVa5jeumz5KQJG9srU0vhbkSb2mtXTzn+l9NnykxSW6+Gdc4Lz1NP8/Cz2LWNR48fD15Xj+THqBJn7kxmbhXg4XfmUcOsyks18J5166qh6zgPAAAAGBp90yfRCFZokaSjZNq7JTkjnOOaUneNHNHnwjh68Pmj5K8d85xpyU5f9hcqhbymnk7WmufTPKlYXP6j/0L2y0ba1CzvDl9Fs1ZbQAAAMDYfWEYUzHL5yfev3+R4MHkcdN1gAekBzIuyMZJOedZqFvcsKpussSxy7EwVuHAqrrFKrS34OD0z5Qkr5t3UGvt87nivVnM+1tr35/TzvnZWI9ZcsxJVe1UVXtX1S9V1b5VtW/6pBQ/HA653TL7tLWc2VqbO7HnaowPAmD9EqgAYHN9LMk3h/f/UFWfrKo/raq7VdVVl9nGp5bY/8mJ9/tNvL9DNv5b9oaqaou9klxvOHbPVW7j9kkWllRcdNWFZfifJfb/aPi662Zc4+uttcsX2b9QvLjCNYYlNm8/bD5xGffqsOHY6VVFThi+3jXJaVV1bFUdWlXXX6Lf70gPgyTJiVX171X1jKq649A3AAAAYNPdaeL92Us880+uHDn93L/gB0vMzLjwjP+NOSt1Th+3VC1kufWlW03VrPYdvp42Z5WMJMkws+Nnp84BAAAAuq8tsm9yxYDlHjddB1ioW1wjyaVL1C1OnjhvXt1iJV47fL1uki9W1b9W1RFVdcvNbHeyvrDYJKRJ8ulltrnUmJOZ40EWDCGKp1bVJ9In/DwzyZeTnDrx2mM4/Hqz2lhDX1hi/2qMDwJgnRKoAGCztNZ+lr4E4cJMAwckeX560OK8qvq3qnr0EgPeZ6bjJ3xv4v11Jt7vMX3gMk2uirAabUw+JM5d/nCZZi1/OWkhCLE5AYLlXmP6/xOuk75KyEpNr0Lxl+kzPrb0+//UJG9L8v2q+mJVPbeqbjDdSGvth+krZJyVHmA5OMnfpRcOzq2qt1XVAzehfwAAAMDq1EgmLbf+sFq1kOXWlyrJtSe+v1BrWur8JPnu1DkAAABAN/f5fmrCx8XqAJPHTdcBVrtusWyttQ8meVqSC5NcPckj08c8fL2qvl1VL62qTVmtYbI+MXeSh2XuX7DJdZaquk6S/0xybJJfSbLUJKo7L7NPW8uPlti/Zr9DAGz7NmVQJABcQWvty1W1X3qw4kFJDkxyy/SHp/sOryOr6v5zlhZcbBbCxUw+4D0xyceXed7kQ9RqtDEWk/fqlUletMzzLpncGEI4v1NVL0zyqCT3Sp9N4qpJbju8jqyqx7TW3j517keHWR4eluT+6b9reyfZLcmhSQ6tqvcmeWhrbalCAQAAALDR5HP//kl+tszzvr0F+rIpNrW+tFrnAwAAAFvOQt3iB+mTLy7Xaatx8dbaS6rqzUkeneQ+Se6W5FpJbpQ+1uQJVfX81tqfr8b11siLktxxeH9SemjkC+mTUFy0sMJoVX0ryY3TJ63Ylly2xH7jgwCYS6ACgFXRWrss/YHqpCSpqr2S3C999YE7Dq+XpQ96n3al1QgW2X/uxPsfTry/oLX2xRV2e7Xa+MHE+7024fztxeS9r028Vz/XWvtykqOSHFVVV09y9/Tiw28nuWb6Eou3aK2dPXXeRUleP7xSVTdL8oAkT09yq/QAz/OSPGNz+gcAAAAjM1kjOae1tq0EJZbrBknOXGJ/0oMTk38IP3dq/2L2nDoHAAAA2DoW6ha7JvnKMEZlqxomEP2HJP9QVTskuX36GJinJdk9ybOr6lPTE0cuYrI+cf0kZy1y7PU3ocvLVlW7pa+8kSSvb609ZpHDr73IvpVYWC1jhyWO22WVrrca44MAWKeW+scIADZJa+3s1tprktwlyWeGbz+wqmYt+XfAEs1N7p98oPlcNs4eeLdN6ujqtPHZiTYO3MQ2tnmttUuSfGnY3NR7Na/ti1prH2itPS7Js4Zv75zkgcs497TW2rHpvycLgz0esZr9AwAAgO3cclZf+OzE+1V97t9Klltf+vpQ41iwUGu6WVXNHZxQVTslucPUOQAAALC92t5WalyoW1wtyZ3WsiNJ0lq7vLX2mdbaUUl+bWLXSsYqfGni/R3nHtVt6c/8C0l2Gt6/cd5BVXXr9Aky51nJ79X5w9fdlzjuVitoczGrMT4IgHVKoAKALaq19rMkHx42d8zsB6H9quoOM76/4HHD18uSnDLR9jlJPjFsPnqxP3ov0r/VaOPcbFwK8BFVdcOVtrEdecfw9dZVdd8tdI0PTry/3nJPaq1tSPKplZ4HAAAAI3DRxPurzTnmA0kuGN7/XlXVlu3SqnvsvB1VdUCSfYfN9bePyQAAIABJREFUD0ztXtiuJEcs0v5hSa41pw0AAADY3iynVrAteWc2Dob/g7XsyLTW2meycbWJlYxVOCUbV2n4rXkHVdXtktxukzq3fDtOvF9sRYgnLdHOSn6vThu+7lpVvzjrgKq6apKHLdHOsqzG+CAA1i+BCgA2S1Xdo6puucj+qya557D5kyTnzDn05VV1pYeyqnp0kvsPmye11s6eOuSvhq+7JXlLVc1NrlfV1arqqVV19S3QxguGr9dI8uaqulbmqKq95+3bDrwo/eeYJK+pqtsudnBVPaCqfnli+zpV9aAlBmX8+sT7hQfoVNV9q2qvRa51rSR3nj4PAAAAyGQ95RazDmitnZfk2GHzrkn+vqrm/g2hqm5QVb+7el3cbA+uqivNAllV10zysmHz8on3C05K8p3h/bOrar8Zbdw4yTHD5gVJXrMqPQYAAIC1s2StYFvSWvtqkjcPm/+nqo5c7PiqullVPWo1rl1Vj6yqnRfZf6ck1x42lz1WobX27STvGjYPq6pDZrS9c5KXr6C7m+ob2RhYeeysMR1V9aAkT1uinZX8Xn144v0fzjnm75LcaIl2VmI1xgcBsA7tuPQhALCoX0tyVFV9NP1B7wvpoYmd05fde1KS/YdjX9Vau3RGG59OX57w01X1giSnps/4d1iSJw7HnJ/kmdMnttbeXVUvSvL7SQ5M8pWqemmSjyX5YXpy/pZJ7pHkoekPsSdsgTbeWVWvSvI76YMOvlxVxyb5jyQb0mchuFOSRyb5fJLDZ97NbVxr7XtV9dgkb0myV/rP7Pgk70ny7fQlIPdODzYcluTmSR6U/nuR9IfSdyQ5vareluS/kpyR5NKhvQclWRiMcVaSkycu/6gk76yq9yd5X5IvJjk3ya7ps0w+LRsfpF+6mp8bAAAAtnOfTZ8h8OpJ/rKqfpb+PL4wC+JZrbULk/zf9IkxfiW9TnJQVb0iyeeS/DS9JnLbJPdO8hvpNZxXbsXPsZhPJ/mXqrpnet1iQ5JfTvLHSRZmOXxJa+0Lkye11i6pqiekz3S5W5L/qKq/TV9B87L0Os+fJNljOOWZrbUfbOkPAwAAAFvYcmsF25Inp4+7uHmSF1bVQ5K8NsmXklyc5LrpKzncL8m9kpyY5A2rcN0XJHlpVb09yUeSfC29TnLdJHdP8vThuMuy8jrJkenjbhYm7zxu6PeG9HEQf5TkNkk+leSAzfsY87XWflhV707ygPT7976hL2ek10Qelj7O5ZtJdk8yc3WH1tq3qurb6eNGnjm8/2r6vUmS77XWzh+O/WxV/WeSuyR5/DBh6wlJfpzkF5I8If3n+PH0+sxqfM7NHh8EwPokUAHAatgh/Y/t91zkmLcn+dM5+941vJ6T2TP8bUjy4Nba6XPOf0b6wPqjkuyZ5OhF+vHTbHxQW+02npjkwiRPTXLDJM+fc/7nF2l7m9dae9tQmDg+yXXSQzPzlnW8PP1+TdsnvTAwz9lJHtJa+8nU93dKX7Hk/lc+5edemuTFi+wHAACAUWmtnV9VL07/I/z+6RMVTDo4ySmttYur6j7pz/wPTR+EcGzm27AFurupHpEegnjK8Jr21sypRbTW3lVVR6SvXrFrkr8YXpMuS3JUa+24VesxAAAArJHl1gq2dr8W01o7t6ruluRN6QPeDxxe86xm3WL3JI8dXrNcnORJrbVPr6TR1to3hpUpTkwfzP/0bAxoLHhu+ricA9JDMFvKk9ODBTdJn0zj3lP7v5XkkCTvXqKd5yf5pyQ3Sx8rNOmI9LrTgselr1SxR2bf32PSAzOrEqgYrMb4IADWmbnLdQPAMh2TnkQ/Lskn0h+gLhpep6c/yD6wtXbIYrMXtNaOTk+5vyvJ95JcMpz/T0lu21r78CLnttbaX6SviPE36TMSnpv+UHN+ki8neX36g9des/qxSm1c1lp7evqMCC/PxlkJfpbku+kFiCMzY6WN7U1r7Z3pD7/PTPLv6T+zn6UHSk5LX1niyCT7tNY+NHHqGemrVxydfj++muS89BUqfpA+m8Ozkty6tfbfU5d9RpLHJHl1+s/nrPTfkwvT7/UJSe7RWntya+3yAAAAAJP+JMnjk3w0G2seV9JaO7+19rD0gQmvTH92Pz/92f3c9BkRX5I+2cF9tny3l6e1dlqSO6b/0f4rSS5In9HwI0ke01o7bM7KqQvnn5Dk1kleNJz/0/Saw/8meUWSO7TW/nqLfggAAADYupZVK9iWtNa+21o7MMkD08dwfDO9BvCzJOekr2bwwiT3bK09bpUue3D6igZvTV+t85z0OsmG9JU+jklym9ba8ZvSeGvt/emrUbwsfUzFJeljMN6V5H7DeJrdhsN/vKkfYhn9ODM9XPO36WMwLh6u9/n0UMftW2tfXkY7x6WPI3pfku+n36t5x/7PcM2F1TAuSb+//5bkAa21Z23GR5p3zc0eHwTA+lOttbXuAwAjVVUL/wg9d3gABAAAAIBlqaqj01c8TWut1rY3AAAAAFtGVX0gya8l+Vhr7R5r3R8AWG+sUAEAAAAAAAAAAACwjamqGyY5cNj8xFr2BQDWK4EKAAAAAAAAAAAAgK2sqm65yL6dkxyfZKfhW6/dGn0CgLHZca07AAAAAAAAAAAAADBCr6yqXZK8Kcl/Jzk3ya5J7pTkKUkWAhevaq2dujZdBID1TaACAAAAAAAAAAAAWHeqao8ke2zCqZe01r622v2Z407Da54Tkzx9K/UFAEZHoAIAAAAAAAAAAABYj56S5DmbcN4ZSfZZ3a7MdGSSQ5PcK8neSa6fpJJ8P8knkpzQWnv3VugHAIxWtdbWug8AAAAAAAAAAAAAq6qqjs4mBipaa/usbm8AgG2RQAUAAAAAAAAAAAAAADA6O6x1BwAAAAAAAAAAAAAAALY2gQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGZ8etfcGqulqS/YbNc5JctrX7AAAAwDbvKkmuP7w/tbV28Vp2BlaLuggAAADLpDbCuqMuAgAAwDJt1brIVg9UpD8cf2oNrgsAAMD26YAkn17rTsAqURcBAABgpdRGWC/URQAAAFipLV4X2WFLNg4AAAAAAAAAAAAAALAtWosVKs5ZePPJT34ye+211xp0AQAAgG3Z2WefnTvf+c4Lm+csdixsZ9RFAAAAWJLaCOuUuggAAABL2tp1kbUIVFy28GavvfbK3nvvvQZdAAAAYDty2dKHwHZDXQQAAICVUhthvVAXAQAAYKW2eF1khy19AQAAAAAAAAAAAAAAgG2NQAUAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAACjI1ABAAAAAAAAAAAAAACMjkAFAAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAAAAKMjUAEAAAAAAAAAAAAAAIyOQAUAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAACjI1ABAAAAAAAAAAAAAACMjkAFAAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAAAAKMjUAEAAAAAAAAAAAAAAIyOQAUAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAACjI1ABAAAAAAAAAAAAAACMjkAFAAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAAAAKMjUAEAAAAAAAAAAAAAAIyOQAUAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAACjI1ABAAAAAAAAAAAAAACMjkAFAAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAAAAKMjUAEAAAAAAAAAAAAAAIyOQAUAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAACjI1ABAAAAAAAAAAAAAACMjkAFAAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjI5ABQAAAAAAAAAAAAAAMDoCFQAAAAAAAAAAAAAAwOgIVAAAAAAAAAAAAAAAAKOz41p3AABgW3L55Zdnw4YNa92Ndevyyy/P+eeff4Xv7brrrtlhBznfzbXbbru5jwAArEvr/TnNc9Km8xwEAAAAAPOt99rqWlLX3brUgtnSBCoAACZs2LAhhxxyyFp3A1bspJNOyu67777W3QAAgFXnOY15PAcBAAAAwHxqq6wXasFsaeI6AAAAAAAAAAAAAADA6AhUAAAAAAAAAAAAAAAAoyNQAQAAAAAAAAAAAAAAjM6Oa90BAIBt3U/3fWjajldb626sD5delGt+8cQrfOsn+x6a7Hj1NerQ9qkuvTi7fPFta90NAABYM+vqOc1z0rJ4DgIAAACAzbeuaqtrSV13i1ELZi0IVAAALKHteLW0nXZe626sCzXrmzte3f0FAABWZD09p3lOAgAAAAC2lvVUW11L6rqwvuyw1h0AAAAAAAAAAAAAAADY2gQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdAQqAAAAAAAAAAAAAACA0RGoAAAAAAAAAAAAAAAARkegAgAAAAAAAAAAAAAAGB2BCgAAAAAAAAAAAAAAYHQEKgAAAAAAAAAAAAAAgNERqAAAAAAAAAAAAAAAAEZHoAIAAAAAAAAAAAAAABgdgQoAAAAAAAAAAAAAAGB0BCoAAAAAAAAAAAAAAIDREagAAAAAAAAAAAAAAABGR6ACAAAAAAAAAAAAAAAYHYEKAAAAAAAAAAAAAABgdP4/e3fwG2XV7wH8tLdyU4OFcQE3Rv4CYGFi2cHfYCRQE0hYCSZNcOF20AV16YY3XYArE0gsROPeHaykGxPhH5DrAjYNhdiIvNO78L2R4kynffqcPuf09/kkbKYzh29Mf8/MOY9fRqECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIR6ECAAAAAAAAAAAAAAAIZ6rrAAAlGwwGaXV1dcNjMzMzaXJSHw0AqJPPNwC0zXsLAHg/BAAAumdfAgBsxmeF0RQqADaxurqaPvjggw2P/fDDD+ngwYMdJQIA2BmfbwBom/cWAPB+CAAAdM++BADYjM8Ko6mUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShU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AAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAAAAAAAAAAAAAAAA4ShUAADA/7F379HWnHV9wL+/NxcgJCFyUVpAwkVcICqsJkgQ4VVRqwsERClasa9KEVpslaqwrNrUeqOWBVphRbyQIF6gSCJFQaAYigISoBZSCBclUeSSIBJCQhJCpn/MnJz9npy9z97n7LNvz+ez1qx37/fMfp6Z+T3zPDOz5zcbAAAAAAAAAACA5kioAAAAAAAAAAAAAAAAmiOhAgAAAAAAAAAAAAAAaI6ECgAAAAAAAAAAAAAAoDkSKgAAAAAAAAAAAAAAgOZIqAAAAAAAAAAAAAAAAJojoQIAAAAAAAAAAAAAAGiOhAoAAAAAAAAAAAAAAKA5EioAAAAAAAAAAAAAAIDmSKgAAAAAAAAAAAAAAACaI6ECAAAAAAAAAAAAAABojoQKAAAAAAAAAAAAAACgORIqAAAAAAAAAAAAAACA5kioAAAAAAAAAAAAAAAAmiOhAgAAAAAAAAAAAAAAaI6ECgAAAAAAAAAAAAAAoDkSKgAAAAAAAAAAAAAAgOZIqAAAAAAAAAAAAAAAAJojoQIAAAAAAAAAAAAAAGiOhAoAAAAAAAAAAAAAAKA5EioAAAAAAAAAAAAAAIDmSKgAAAAAAAAAAAAAAACaI6ECAAAAAAAAAAAAAABojoQKAAAAAAAAAAAAAACgOScuewEAVtnpp5+eiy666Fb/BwCwrhzfADBvxhYAMB4CAADL57wEAJjEscJ4EioAJjhy5EjOOOOMZS8GAMDcOL4BYN6MLQBgPAQAAJbPeQkAMIljhfGOLHsBAAAAAAAAAAAAAAAAFk1CBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEAAAAAAAAAAAAAADRHQgUAAAAAAAAAAAAAANAcCRUAAAAAAAAAAAAAAEBzJFQAAAAAAAAAAAAAAADNkVABAAAAAAAAAAAAAAA0R0IFAAAAAAAAAAAAAADQHAkVAAAAAAAAAAAAAABAcyRUAAAAAAAAAAAAAAAAzZFQAQAAAAAAAAAAAAAANEdCBQAAAAAAAAAAAAAA0BwJFQAAAAAAAAAAAAAAQHMkVAAAAAAAAAAAAAAAAM2RUAEA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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.figure(figsize=(20,20), dpi=200)\n", + "\n", + "plt.subplot(4,3,1)\n", + "sns.boxplot(x = 'popularity', data = df)\n", + "\n", + "plt.subplot(4,3,2)\n", + "sns.boxplot(x = 'acousticness', data = df)\n", + "\n", + "plt.subplot(4,3,3)\n", + "sns.boxplot(x = 'energy', data = df)\n", + "\n", + "plt.subplot(4,3,4)\n", + "sns.boxplot(x = 'instrumentalness', data = df)\n", + "\n", + "plt.subplot(4,3,5)\n", + "sns.boxplot(x = 'liveness', data = df)\n", + "\n", + "plt.subplot(4,3,6)\n", + "sns.boxplot(x = 'loudness', data = df)\n", + "\n", + "plt.subplot(4,3,7)\n", + "sns.boxplot(x = 'speechiness', data = df)\n", + "\n", + "plt.subplot(4,3,8)\n", + "sns.boxplot(x = 'tempo', data = df)\n", + "\n", + "plt.subplot(4,3,9)\n", + "sns.boxplot(x = 'time_signature', data = df)\n", + "\n", + "plt.subplot(4,3,10)\n", + "sns.boxplot(x = 'danceability', data = df)\n", + "\n", + "plt.subplot(4,3,11)\n", + "sns.boxplot(x = 'length', data = df)\n", + "\n", + "plt.subplot(4,3,12)\n", + "sns.boxplot(x = 'release_date', data = df)" + ] + }, + { + "source": [ + "సమాన పరిధులున్న కొన్ని కాలమ్స్‌ను ఎంచుకోండి. మన జానర్లను సరిగా ఉంచడానికి artist_top_genre కాలమ్‌ను తప్పకుండా చేర్చండి.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import LabelEncoder, StandardScaler\n", + "le = LabelEncoder()\n", + "\n", + "# scaler = StandardScaler()\n", + "\n", + "X = df.loc[:, ('artist_top_genre','popularity','danceability','acousticness','loudness','energy')]\n", + "\n", + "y = df['artist_top_genre']\n", + "\n", + "X['artist_top_genre'] = le.fit_transform(X['artist_top_genre'])\n", + "\n", + "# X = scaler.fit_transform(X)\n", + "\n", + "y = le.transform(y)\n", + "\n" + ] + }, + { + "source": [ + "K-Means క్లస్టరింగ్‌కు ఎన్ని క్లస్టర్లు నిర్మించాలో చెప్పాల్సిన లోపం ఉంది. మాకు మూడు పాట రకాలు ఉన్నట్లు తెలుసు, కాబట్టి మనం 3 పై దృష్టి పెట్టుదాం.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 0, 2, 1, 1, 0, 1, 0, 0,\n", + " 0, 1, 0, 2, 0, 0, 2, 2, 1, 1, 0, 2, 2, 2, 2, 1, 1, 0, 2, 0, 2, 0,\n", + " 2, 0, 0, 1, 1, 2, 1, 0, 0, 2, 2, 2, 2, 1, 1, 0, 1, 2, 2, 1, 2, 2,\n", + " 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 2, 0, 2, 1, 1, 1, 2, 2, 2,\n", + " 2, 1, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 0,\n", + " 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 0, 1, 2, 1, 2,\n", + " 1, 2, 2, 2, 0, 2, 1, 1, 1, 2, 1, 0, 1, 2, 2, 1, 1, 1, 0, 1, 2, 2,\n", + " 2, 1, 1, 0, 1, 2, 1, 1, 1, 1, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2,\n", + " 0, 1, 0, 0, 1, 0, 0, 2, 0, 0, 1, 1, 2, 0, 2, 2, 0, 2, 2, 1, 1, 0,\n", + " 1, 1, 0, 0, 1, 0, 2, 0, 1, 0, 2, 0, 0, 2, 2, 2, 1, 1, 1, 1, 1, 0,\n", + " 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 1, 1, 0, 2, 2, 2,\n", + " 1, 1, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 1, 1, 1, 2, 2, 2,\n", + " 1, 2, 1, 2, 1, 1, 1, 0, 2, 2, 2, 1, 2, 1, 0, 1, 2, 1, 1, 1, 2, 1],\n", + " dtype=int32)" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ], + "source": [ + "\n", + "from sklearn.cluster import KMeans\n", + "\n", + "nclusters = 3 \n", + "seed = 0\n", + "\n", + "km = KMeans(n_clusters=nclusters, random_state=seed)\n", + "km.fit(X)\n", + "\n", + "# Predict the cluster for each data point\n", + "\n", + "y_cluster_kmeans = km.predict(X)\n", + "y_cluster_kmeans" + ] + }, + { + "source": [ + "ఆ సంఖ్యలు మనకు ఎక్కువ అర్థం కావు, కాబట్టి ఖచ్చితత్వాన్ని చూడటానికి 'సిలుయెట్ స్కోర్' తీసుకుందాం. మన స్కోర్ మధ్యలో ఉంది.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.5466747351275563" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ], + "source": [ + "from sklearn import metrics\n", + "score = metrics.silhouette_score(X, y_cluster_kmeans)\n", + "score" + ] + }, + { + "source": [ + "KMeans ను దిగుమతి చేసుకుని ఒక మోడల్‌ను నిర్మించండి.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.cluster import KMeans\n", + "wcss = []\n", + "\n", + "for i in range(1, 11):\n", + " kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42)\n", + " kmeans.fit(X)\n", + " wcss.append(kmeans.inertia_)" + ] + }, + { + "source": [ + "ఆ మోడల్‌ను ఉపయోగించి, ఎల్బో పద్ధతిని ఉపయోగించి, నిర్మించడానికి ఉత్తమ క్లస్టర్ల సంఖ్యను నిర్ణయించండి.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/seaborn/_decorators.py:43: FutureWarning: Pass the following variables as keyword args: x, y. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n FutureWarning\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.figure(figsize=(10,5))\n", + "sns.lineplot(range(1, 11), wcss,marker='o',color='red')\n", + "plt.title('Elbow')\n", + "plt.xlabel('Number of clusters')\n", + "plt.ylabel('WCSS')\n", + "plt.show()" + ] + }, + { + "source": [ + "Looks like 3 is a good number after all. Fit the model again and create a scatterplot of your clusters. They do group in bunches, but they are pretty close together." + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "from sklearn.cluster import KMeans\n", + "kmeans = KMeans(n_clusters = 3)\n", + "kmeans.fit(X)\n", + "labels = kmeans.predict(X)\n", + "plt.scatter(df['popularity'],df['danceability'],c = labels)\n", + "plt.xlabel('popularity')\n", + "plt.ylabel('danceability')\n", + "plt.show()" + ] + }, + { + "source": [ + "ఈ మోడల్ యొక్క ఖచ్చితత్వం చెడుగా లేదు, కానీ గొప్పదీ కాదు. డేటా K-మీన్ క్లస్టరింగ్‌కు బాగా సరిపోవకపోవచ్చు. మీరు వేరే పద్ధతిని ప్రయత్నించవచ్చు.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 811, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Result: 109 out of 286 samples were correctly labeled.\nAccuracy score: 0.38\n" + ] + } + ], + "source": [ + "labels = kmeans.labels_\n", + "\n", + "correct_labels = sum(y == labels)\n", + "\n", + "print(\"Result: %d out of %d samples were correctly labeled.\" % (correct_labels, y.size))\n", + "\n", + "print('Accuracy score: {0:0.2f}'. format(correct_labels/float(y.size)))" + ] + }, + { + "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/5-Clustering/2-K-Means/solution/tester.ipynb b/translations/te/5-Clustering/2-K-Means/solution/tester.ipynb new file mode 100644 index 000000000..84631299b --- /dev/null +++ b/translations/te/5-Clustering/2-K-Means/solution/tester.ipynb @@ -0,0 +1,345 @@ +{ + "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')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "6f92868513e59d321245137c1c4c5311", + "translation_date": "2025-12-19T16:52:10+00:00", + "source_file": "5-Clustering/2-K-Means/solution/tester.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# స్పాటిఫై నుండి సేకరించిన నైజీరియన్ సంగీతం - ఒక విశ్లేషణ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: seaborn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.11.1)\n", + "Requirement already satisfied: pandas>=0.23 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.1.2)\n", + "Requirement already satisfied: matplotlib>=2.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (3.1.0)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.19.2)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.4.1)\n", + "Requirement already satisfied: pytz>=2017.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2019.1)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2.8.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (1.1.0)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (2.4.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (0.10.0)\n", + "Requirement already satisfied: six>=1.5 in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from python-dateutil>=2.7.3->pandas>=0.23->seaborn) (1.12.0)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib>=2.2->seaborn) (45.1.0)\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", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install seaborn" + ] + }, + { + "source": [ + "మనం చివరి పాఠంలో ముగించిన చోట నుండి ప్రారంభించండి, డేటా దిగుమతి చేసుకుని ఫిల్టర్ చేసిన స్థితిలో.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "0 Sparky Mandy & The Jungle \n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "2 LITT! LITT! \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "0 Cruel Santino alternative r&b 2019 144000 48 \n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "2 AYLØ indie r&b 2018 207758 40 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "\n", + " speechiness tempo time_signature \n", + "0 0.0829 133.015 5 \n", + "1 0.3600 129.993 3 \n", + "2 0.0424 130.005 4 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
0SparkyMandy & The JungleCruel Santinoalternative r&b2019144000480.6660.85100.4200.5340000.1100-6.6990.0829133.0155
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
2LITT!LITT!AYLØindie r&b2018207758400.8360.27200.5640.0005370.1100-7.1270.0424130.0054
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
\n
" + }, + "metadata": {}, + "execution_count": 105 + } + ], + "source": [ + "\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import numpy as np\n", + "\n", + "df = pd.read_csv(\"../../data/nigerian-songs.csv\")\n", + "df.head()" + ] + }, + { + "source": [ + "మేము కేవలం 3 జానర్లపై మాత్రమే దృష్టి సారించబోతున్నాము. బహుశా మేము 3 క్లస్టర్లు నిర్మించగలము!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Top genres')" + ] + }, + "metadata": {}, + "execution_count": 106 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n", + "df = df[(df['popularity'] > 0)]\n", + "top = df['artist_top_genre'].value_counts()\n", + "plt.figure(figsize=(10,7))\n", + "sns.barplot(x=top.index,y=top.values)\n", + "plt.xticks(rotation=45)\n", + "plt.title('Top genres',color = 'blue')" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " name album \\\n", + "1 shuga rush EVERYTHING YOU HEARD IS TRUE \n", + "3 Confident / Feeling Cool Enjoy Your Life \n", + "4 wanted you rare. \n", + "5 Kasala Pioneers \n", + "6 Pull Up Everything Pretty \n", + "\n", + " artist artist_top_genre release_date length popularity \\\n", + "1 Odunsi (The Engine) afropop 2020 89488 30 \n", + "3 Lady Donli nigerian pop 2019 175135 14 \n", + "4 Odunsi (The Engine) afropop 2018 152049 25 \n", + "5 DRB Lasgidi nigerian pop 2020 184800 26 \n", + "6 prettyboydo nigerian pop 2018 202648 29 \n", + "\n", + " danceability acousticness energy instrumentalness liveness loudness \\\n", + "1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n", + "3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n", + "4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n", + "5 0.803 0.1270 0.525 0.000007 0.1290 -10.034 \n", + "6 0.818 0.4520 0.587 0.004490 0.5900 -9.840 \n", + "\n", + " speechiness tempo time_signature \n", + "1 0.3600 129.993 3 \n", + "3 0.1130 111.087 4 \n", + "4 0.0447 105.115 4 \n", + "5 0.1970 100.103 4 \n", + "6 0.1990 95.842 4 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signature
1shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.7100.08220.6830.0001690.1010-5.6400.3600129.9933
3Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.79800.6110.0001870.0964-4.9610.1130111.0874
4wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.11600.8330.9100000.3480-6.0440.0447105.1154
5KasalaPioneersDRB Lasgidinigerian pop2020184800260.8030.12700.5250.0000070.1290-10.0340.1970100.1034
6Pull UpEverything Prettyprettyboydonigerian pop2018202648290.8180.45200.5870.0044900.5900-9.8400.199095.8424
\n
" + }, + "metadata": {}, + "execution_count": 107 + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "scaler = StandardScaler()\n", + "\n", + "# X = df.loc[:, ('danceability','energy')]\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "output_type": "error", + "ename": "ValueError", + "evalue": "Unknown label type: 'continuous'", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0;31m# we create an instance of SVM and fit out data. We do not scale our\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0;31m# data since we want to plot the support vectors\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 22\u001b[0;31m \u001b[0mls30\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mLabelSpreading\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_30\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_30\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Label Spreading 30% data'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 23\u001b[0m \u001b[0mls50\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mLabelSpreading\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_50\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_50\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Label Spreading 50% data'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mls100\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mLabelSpreading\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Label Spreading 100% data'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/semi_supervised/_label_propagation.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, X, y)\u001b[0m\n\u001b[1;32m 228\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_validate_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 229\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mX_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 230\u001b[0;31m \u001b[0mcheck_classification_targets\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 231\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 232\u001b[0m \u001b[0;31m# actual graph construction (implementations should override this)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/utils/multiclass.py\u001b[0m in \u001b[0;36mcheck_classification_targets\u001b[0;34m(y)\u001b[0m\n\u001b[1;32m 181\u001b[0m if y_type not in ['binary', 'multiclass', 'multiclass-multioutput',\n\u001b[1;32m 182\u001b[0m 'multilabel-indicator', 'multilabel-sequences']:\n\u001b[0;32m--> 183\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Unknown label type: %r\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0my_type\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 184\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 185\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: Unknown label type: 'continuous'" + ] + } + ], + "source": [ + "from sklearn.svm import SVC\n", + "from sklearn.semi_supervised import LabelSpreading\n", + "from sklearn.semi_supervised import SelfTrainingClassifier\n", + "from sklearn import datasets\n", + "\n", + "X = df[['danceability','acousticness']].values\n", + "y = df['energy'].values\n", + "\n", + "# X = scaler.fit_transform(X)\n", + "\n", + "# step size in the mesh\n", + "h = .02\n", + "\n", + "rng = np.random.RandomState(0)\n", + "y_rand = rng.rand(y.shape[0])\n", + "y_30 = np.copy(y)\n", + "y_30[y_rand < 0.3] = -1 # set random samples to be unlabeled\n", + "y_50 = np.copy(y)\n", + "y_50[y_rand < 0.5] = -1\n", + "# we create an instance of SVM and fit out data. We do not scale our\n", + "# data since we want to plot the support vectors\n", + "ls30 = (LabelSpreading().fit(X, y_30), y_30, 'Label Spreading 30% data')\n", + "ls50 = (LabelSpreading().fit(X, y_50), y_50, 'Label Spreading 50% data')\n", + "ls100 = (LabelSpreading().fit(X, y), y, 'Label Spreading 100% data')\n", + "\n", + "# the base classifier for self-training is identical to the SVC\n", + "base_classifier = SVC(kernel='rbf', gamma=.5, probability=True)\n", + "st30 = (SelfTrainingClassifier(base_classifier).fit(X, y_30),\n", + " y_30, 'Self-training 30% data')\n", + "st50 = (SelfTrainingClassifier(base_classifier).fit(X, y_50),\n", + " y_50, 'Self-training 50% data')\n", + "\n", + "rbf_svc = (SVC(kernel='rbf', gamma=.5).fit(X, y), y, 'SVC with rbf kernel')\n", + "\n", + "# create a mesh to plot in\n", + "x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n", + "y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n", + "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n", + " np.arange(y_min, y_max, h))\n", + "\n", + "color_map = {-1: (1, 1, 1), 0: (0, 0, .9), 1: (1, 0, 0), 2: (.8, .6, 0)}\n", + "\n", + "classifiers = (ls30, st30, ls50, st50, ls100, rbf_svc)\n", + "for i, (clf, y_train, title) in enumerate(classifiers):\n", + " # Plot the decision boundary. For that, we will assign a color to each\n", + " # point in the mesh [x_min, x_max]x[y_min, y_max].\n", + " plt.subplot(3, 2, i + 1)\n", + " Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n", + "\n", + " # Put the result into a color plot\n", + " Z = Z.reshape(xx.shape)\n", + " plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)\n", + " plt.axis('off')\n", + "\n", + " # Plot also the training points\n", + " colors = [color_map[y] for y in y_train]\n", + " plt.scatter(X[:, 0], X[:, 1], c=colors, edgecolors='black')\n", + "\n", + " plt.title(title)\n", + "\n", + "plt.suptitle(\"Unlabeled points are colored white\", y=0.1)\n", + "plt.show()" + ] + }, + { + "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/5-Clustering/README.md b/translations/te/5-Clustering/README.md new file mode 100644 index 000000000..519dbfa3b --- /dev/null +++ b/translations/te/5-Clustering/README.md @@ -0,0 +1,44 @@ + +# మెషీన్ లెర్నింగ్ కోసం క్లస్టరింగ్ మోడల్స్ + +క్లస్టరింగ్ అనేది ఒక మెషీన్ లెర్నింగ్ పని, ఇందులో ఒకదానితో మరొకటి పోలిక ఉన్న వస్తువులను కనుగొని వాటిని క్లస్టర్లు అని పిలవబడే సమూహాలలో గుంపు చేస్తుంది. మెషీన్ లెర్నింగ్‌లో ఇతర పద్ధతుల నుండి క్లస్టరింగ్ వేరుగా ఉండేది ఏమిటంటే, ఇది ఆటోమేటిక్‌గా జరుగుతుంది, వాస్తవానికి, ఇది సూపర్వైజ్డ్ లెర్నింగ్‌కు వ్యతిరేకంగా ఉంటుంది అని చెప్పవచ్చు. + +## ప్రాంతీయ విషయం: నైజీరియన్ ప్రేక్షకుల సంగీత రుచికి క్లస్టరింగ్ మోడల్స్ 🎧 + +నైజీరియాలోని విభిన్న ప్రేక్షకులు విభిన్న సంగీత రుచులు కలిగి ఉన్నారు. Spotify నుండి సేకరించిన డేటాను ఉపయోగించి ([ఈ ఆర్టికల్](https://towardsdatascience.com/country-wise-visual-analysis-of-music-taste-using-spotify-api-seaborn-in-python-77f5b749b421) నుండి ప్రేరణ పొందిన), నైజీరియాలో ప్రాచుర్యం పొందిన కొన్ని సంగీతాలను చూద్దాం. ఈ డేటాసెట్‌లో వివిధ పాటల 'డాన్స్‌బిలిటీ' స్కోరు, 'అకౌస్టిక్‌నెస్', లౌడ్నెస్, 'స్పీచినెస్', ప్రాచుర్యం మరియు ఎనర్జీ గురించి డేటా ఉంది. ఈ డేటాలో నమూనాలను కనుగొనడం ఆసక్తికరం! + +![A turntable](../../../translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.te.jpg) + +> ఫోటో మార్సెలా లాస్కోస్కి ద్వారా అన్స్ప్లాష్లో + +ఈ పాఠమాల సిరీస్‌లో, మీరు క్లస్టరింగ్ సాంకేతికతలను ఉపయోగించి డేటాను విశ్లేషించే కొత్త మార్గాలను కనుగొంటారు. క్లస్టరింగ్ ప్రత్యేకంగా ఉపయోగకరంగా ఉంటుంది, మీ డేటాసెట్‌లో లేబుల్స్ లేకపోతే. లేబుల్స్ ఉంటే, మీరు గత పాఠాలలో నేర్చుకున్న వర్గీకరణ సాంకేతికతలు మరింత ఉపయోగకరంగా ఉండవచ్చు. కానీ లేబుల్స్ లేని డేటాను గుంపు చేయాలనుకుంటే, క్లస్టరింగ్ నమూనాలను కనుగొనడానికి గొప్ప మార్గం. + +> క్లస్టరింగ్ మోడల్స్‌తో పని చేయడం నేర్చుకోవడానికి సహాయపడే ఉపయోగకరమైన లో-కోడ్ టూల్స్ ఉన్నాయి. ఈ పనికి [Azure ML ను ప్రయత్నించండి](https://docs.microsoft.com/learn/modules/create-clustering-model-azure-machine-learning-designer/?WT.mc_id=academic-77952-leestott) + +## పాఠాలు + +1. [క్లస్టరింగ్ పరిచయం](1-Visualize/README.md) +2. [కె-మీన్స్ క్లస్టరింగ్](2-K-Means/README.md) + +## క్రెడిట్స్ + +ఈ పాఠాలు 🎶 [జెన్ లూపర్](https://www.twitter.com/jenlooper) ద్వారా రాయబడ్డాయి, సహాయక సమీక్షలతో [రిషిత్ దాగ్లీ](https://rishit_dagli) మరియు [ముహమ్మద్ సకీబ్ ఖాన్ ఇనాన్](https://twitter.com/Sakibinan). + +[Nigerian Songs](https://www.kaggle.com/sootersaalu/nigerian-songs-spotify) డేటాసెట్ Spotify నుండి స్క్రాప్ చేసి Kaggle నుండి పొందబడింది. + +ఈ పాఠం సృష్టించడంలో సహాయపడిన ఉపయోగకరమైన కె-మీన్స్ ఉదాహరణలు ఈ [ఐరిస్ అన్వేషణ](https://www.kaggle.com/bburns/iris-exploration-pca-k-means-and-gmm-clustering), ఈ [పరిచయ నోట్బుక్](https://www.kaggle.com/prashant111/k-means-clustering-with-python), మరియు ఈ [హైపోథెటికల్ NGO ఉదాహరణ](https://www.kaggle.com/ankandash/pca-k-means-clustering-hierarchical-clustering) ఉన్నాయి. + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము. + \ No newline at end of file diff --git a/translations/te/6-NLP/1-Introduction-to-NLP/README.md b/translations/te/6-NLP/1-Introduction-to-NLP/README.md new file mode 100644 index 000000000..03d22cbdf --- /dev/null +++ b/translations/te/6-NLP/1-Introduction-to-NLP/README.md @@ -0,0 +1,181 @@ + +# సహజ భాషా ప్రాసెసింగ్ పరిచయం + +ఈ పాఠం *సహజ భాషా ప్రాసెసింగ్* యొక్క సంక్షిప్త చరిత్ర మరియు ముఖ్యమైన భావనలను కవర్ చేస్తుంది, ఇది *కంప్యూటేషనల్ లింగ్విస్టిక్స్* యొక్క ఉపశాఖ. + +## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## పరిచయం + +NLP, సాధారణంగా పిలవబడేది, యంత్ర అభ్యాసం అన్వయించబడిన మరియు ఉత్పత్తి సాఫ్ట్‌వేర్‌లో ఉపయోగించిన అత్యంత ప్రసిద్ధ ప్రాంతాలలో ఒకటి. + +✅ మీరు ప్రతిరోజూ ఉపయోగించే సాఫ్ట్‌వేర్‌లో ఏదైనా NLP ఎంబెడ్డెడ్ ఉన్నదని మీరు అనుకుంటున్నారా? మీ వర్డ్ ప్రాసెసింగ్ ప్రోగ్రాములు లేదా మీరు తరచుగా ఉపయోగించే మొబైల్ యాప్స్ గురించి ఏమిటి? + +మీరు నేర్చుకునే విషయాలు: + +- **భాషల ఆలోచన**. భాషలు ఎలా అభివృద్ధి చెందాయో మరియు ప్రధాన అధ్యయన ప్రాంతాలు ఏమిటో. +- **నిర్వచన మరియు భావనలు**. కంప్యూటర్లు టెక్స్ట్‌ను ఎలా ప్రాసెస్ చేస్తాయో, పార్సింగ్, వ్యాకరణం, నామవాచకాలు మరియు క్రియలను గుర్తించడం వంటి నిర్వచనాలు మరియు భావనలు మీరు నేర్చుకుంటారు. ఈ పాఠంలో కొన్ని కోడింగ్ పనులు ఉన్నాయి, మరియు మీరు తర్వాతి పాఠాలలో కోడ్ చేయడం నేర్చుకునే కొన్ని ముఖ్యమైన భావనలు పరిచయం చేయబడ్డాయి. + +## కంప్యూటేషనల్ లింగ్విస్టిక్స్ + +కంప్యూటేషనల్ లింగ్విస్టిక్స్ అనేది అనేక దశాబ్దాలుగా పరిశోధన మరియు అభివృద్ధి చేసే ఒక విభాగం, ఇది కంప్యూటర్లు భాషలతో ఎలా పని చేయగలవో, అర్థం చేసుకోగలవో, అనువదించగలవో మరియు సంభాషించగలవో అధ్యయనం చేస్తుంది. సహజ భాషా ప్రాసెసింగ్ (NLP) అనేది సంబంధిత రంగం, ఇది కంప్యూటర్లు 'సహజ' లేదా మానవ భాషలను ఎలా ప్రాసెస్ చేయగలవో పై దృష్టి సారిస్తుంది. + +### ఉదాహరణ - ఫోన్ డిక్టేషన్ + +మీరు ఎప్పుడైనా టైప్ చేయకుండా మీ ఫోన్‌కు డిక్టేట్ చేసినట్లయితే లేదా వర్చువల్ అసిస్టెంట్‌కు ప్రశ్న అడిగితే, మీ మాటలను టెక్స్ట్ రూపంలోకి మార్చి, మీరు మాట్లాడిన భాష నుండి ప్రాసెస్ లేదా *పార్స్* చేయబడింది. గుర్తించిన కీలకపదాలు ఫోన్ లేదా అసిస్టెంట్ అర్థం చేసుకుని చర్య తీసుకునే ఫార్మాట్‌లో ప్రాసెస్ చేయబడ్డాయి. + +![comprehension](../../../../translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.te.png) +> నిజమైన భాషా అవగాహన కష్టం! చిత్రం [జెన్ లూపర్](https://twitter.com/jenlooper) ద్వారా + +### ఈ సాంకేతికత ఎలా సాధ్యమైంది? + +ఇది సాధ్యమైంది ఎందుకంటే ఎవరో ఒకరు ఈ పని చేయడానికి కంప్యూటర్ ప్రోగ్రామ్ రాశారు. కొన్ని దశాబ్దాల క్రితం, కొన్ని సైన్స్ ఫిక్షన్ రచయితలు ప్రజలు ఎక్కువగా తమ కంప్యూటర్లతో మాట్లాడతారని, మరియు కంప్యూటర్లు ఎప్పుడూ వారు అర్థం చేసుకున్నారని ఊహించారు. దురదృష్టవశాత్తు, ఇది అనుకున్నదానికంటే కష్టం అని తేలింది, మరియు ఇది ఈ రోజు చాలా బాగా అర్థం చేసుకున్న సమస్య అయినప్పటికీ, వాక్య అర్థం అర్థం చేసుకోవడంలో 'పర్ఫెక్ట్' సహజ భాషా ప్రాసెసింగ్ సాధించడంలో గణనీయమైన సవాళ్లు ఉన్నాయి. ఇది హాస్యం అర్థం చేసుకోవడంలో లేదా వాక్యంలో వ్యంగ్య భావనలను గుర్తించడంలో ప్రత్యేకంగా కష్టం. + +ఈ సమయంలో, మీరు పాఠశాల తరగతులను గుర్తు చేసుకుంటున్నారా, అక్కడ ఉపాధ్యాయుడు వాక్యంలోని వ్యాకరణ భాగాలను కవర్ చేశారు. కొన్ని దేశాలలో, విద్యార్థులకు వ్యాకరణం మరియు లింగ్విస్టిక్స్ ప్రత్యేక విషయంగా బోధించబడుతుంది, కానీ చాలా చోట్ల ఈ విషయాలు భాష నేర్చుకునే భాగంగా ఉంటాయి: మీ మొదటి భాష ప్రాథమిక పాఠశాలలో (చదవడం మరియు రాయడం నేర్చుకోవడం) మరియు రెండవ భాష పోస్ట్-ప్రాథమిక లేదా హై స్కూల్‌లో. నామవాచకాలు, క్రియలు లేదా క్రియావిశేషణాలు, విశేషణాలు మధ్య తేడా తెలియకపోయినా ఆందోళన చెందకండి! + +*సింపుల్ ప్రెజెంట్* మరియు *ప్రెజెంట్ ప్రోగ్రెసివ్* మధ్య తేడా మీకు క్లిష్టంగా ఉంటే, మీరు ఒంటరిగా లేరు. ఇది చాలా మందికి, భాష స్థానిక వక్తలకు కూడా కష్టం. మంచి విషయం ఏమిటంటే, కంప్యూటర్లు ఫార్మల్ నియమాలను అమలు చేయడంలో చాలా మంచి, మరియు మీరు ఒక వాక్యాన్ని మానవుడిలా *పార్స్* చేయగల కోడ్ రాయడం నేర్చుకుంటారు. మీరు తర్వాత పరిశీలించే పెద్ద సవాలు వాక్య *అర్థం* మరియు *భావం* అర్థం చేసుకోవడమే. + +## ముందస్తు అవసరాలు + +ఈ పాఠం కోసం, ప్రధాన ముందస్తు అవసరం ఈ పాఠం భాషను చదవడం మరియు అర్థం చేసుకోవడం. ఎటువంటి గణిత సమస్యలు లేదా సమీకరణాలు పరిష్కరించాల్సిన అవసరం లేదు. అసలు రచయిత ఈ పాఠాన్ని ఇంగ్లీష్‌లో రాశారు, కానీ ఇది ఇతర భాషలలో కూడా అనువదించబడింది, కాబట్టి మీరు అనువాదం చదువుతున్నట్లయితే కూడా సరే. వివిధ భాషల వ్యాకరణ నియమాలను పోల్చడానికి కొన్ని ఉదాహరణలు ఉన్నాయి. అవి *అనువదించబడవు*, కానీ వివరణాత్మక వచనం అనువదించబడింది, కాబట్టి అర్థం స్పష్టంగా ఉంటుంది. + +కోడింగ్ పనుల కోసం, మీరు Python ఉపయోగిస్తారు మరియు ఉదాహరణలు Python 3.8 ఉపయోగిస్తున్నాయి. + +ఈ విభాగంలో, మీరు అవసరం మరియు ఉపయోగిస్తారు: + +- **Python 3 అవగాహన**. Python 3లో ప్రోగ్రామింగ్ భాష అవగాహన, ఈ పాఠం ఇన్‌పుట్, లూప్స్, ఫైల్ రీడింగ్, అర్రేస్ ఉపయోగిస్తుంది. +- **Visual Studio Code + ఎక్స్‌టెన్షన్**. మేము Visual Studio Code మరియు దాని Python ఎక్స్‌టెన్షన్ ఉపయోగిస్తాము. మీరు మీ ఇష్టమైన Python IDE కూడా ఉపయోగించవచ్చు. +- **TextBlob**. [TextBlob](https://github.com/sloria/TextBlob) అనేది Python కోసం సరళీకృత టెక్స్ట్ ప్రాసెసింగ్ లైబ్రరీ. TextBlob సైట్‌లో సూచనలను అనుసరించి మీ సిస్టమ్‌లో ఇన్‌స్టాల్ చేయండి (కోర్పోరా కూడా ఇన్‌స్టాల్ చేయండి, క్రింద చూపినట్లుగా): + + ```bash + pip install -U textblob + python -m textblob.download_corpora + ``` + +> 💡 సూచన: మీరు VS Code వాతావరణాల్లో నేరుగా Python నడపవచ్చు. మరిన్ని సమాచారం కోసం [డాక్స్](https://code.visualstudio.com/docs/languages/python?WT.mc_id=academic-77952-leestott) చూడండి. + +## యంత్రాలతో మాట్లాడటం + +కంప్యూటర్లు మానవ భాషను అర్థం చేసుకోవడానికి ప్రయత్నించిన చరిత్ర అనేక దశాబ్దాలుగా ఉంది, మరియు సహజ భాషా ప్రాసెసింగ్‌ను పరిశీలించిన మొదటి శాస్త్రవేత్తలలో ఒకరు *అలన్ ట్యూరింగ్*. + +### 'ట్యూరింగ్ టెస్ట్' + +1950లలో ట్యూరింగ్ *కృత్రిమ మేధస్సు* పరిశోధన చేస్తున్నప్పుడు, ఒక సంభాషణ పరీక్షను మానవుడు మరియు కంప్యూటర్ (టైప్ చేసిన లేఖల ద్వారా) మధ్య ఇవ్వవచ్చా అని పరిశీలించాడు, అందులో సంభాషణలో ఉన్న మానవుడు మరొక మానవుడితోనా లేక కంప్యూటర్‌తోనా మాట్లాడుతున్నాడో తెలియకపోవచ్చు. + +ఒక నిర్దిష్ట సంభాషణ తర్వాత, మానవుడు సమాధానాలు కంప్యూటర్ నుండి వచ్చాయో లేదో నిర్ణయించలేకపోతే, ఆ కంప్యూటర్ *ఆలోచిస్తున్నదని* చెప్పవచ్చా? + +### ప్రేరణ - 'నకిలీ ఆట' + +ఈ ఆలోచన ఒక పార్టీ ఆట నుండి వచ్చింది, దీనిని *ది ఇమిటేషన్ గేమ్* అంటారు, ఇందులో ఒక విచారణకర్త ఒక గదిలో ఒంటరిగా ఉంటాడు మరియు మరో గదిలో ఉన్న ఇద్దరు వ్యక్తులలో ఎవరు పురుషుడు మరియు ఎవరు మహిళ అని నిర్ణయించాలి. విచారణకర్త గమనికలు పంపవచ్చు, మరియు రహస్య వ్యక్తి లింగాన్ని వెల్లడించే విధంగా రాసిన సమాధానాలను తెలుసుకునే ప్రశ్నలు ఆలోచించాలి. ఖచ్చితంగా, మరొక గదిలో ఉన్న ఆటగాళ్లు విచారణకర్తను మోసం చేయడానికి లేదా గందరగోళం చేయడానికి ప్రయత్నిస్తారు, కానీ నిజాయితీగా సమాధానం ఇస్తున్నట్లు కనిపించాలి. + +### ఎలిజా అభివృద్ధి + +1960లలో MIT శాస్త్రవేత్త *జోసెఫ్ వైజెన్‌బౌమ్* [*ఎలిజా*](https://wikipedia.org/wiki/ELIZA) అనే కంప్యూటర్ 'థెరపిస్ట్'ను అభివృద్ధి చేశారు, ఇది మానవుడిని ప్రశ్నించి వారి సమాధానాలను అర్థం చేసుకున్నట్లు కనిపించేది. అయితే, ఎలిజా ఒక వాక్యాన్ని పార్స్ చేసి కొన్ని వ్యాకరణ నిర్మాణాలు మరియు కీలకపదాలను గుర్తించి సరైన సమాధానం ఇవ్వగలిగింది, కానీ వాక్యాన్ని *అర్థం చేసుకుంది* అని చెప్పలేము. ఎలిజాకు "**నేను** దుఃఖంగా ఉన్నాను" అనే వాక్యం ఇచ్చినప్పుడు, అది వాక్యాన్ని పునఃసంఘటించి "మీరు ఎంతకాలంగా దుఃఖంగా ఉన్నారు" అని ప్రతిస్పందించవచ్చు. + +ఇది ఎలిజా ఆ వాక్యాన్ని అర్థం చేసుకుని తదుపరి ప్రశ్న అడుగుతున్నట్లు అనిపించేది, కానీ వాస్తవానికి అది కాలాన్ని మార్చి కొన్ని పదాలు జోడించడం మాత్రమే. ఎలిజా గుర్తించని కీలకపదానికి సమాధానం లేకపోతే, అది అనేక వాక్యాలకు వర్తించే యాదృచ్ఛిక సమాధానం ఇస్తుంది. ఎలిజాను సులభంగా మోసం చేయవచ్చు, ఉదాహరణకు ఒక వినియోగదారు "**మీరు** ఒక సైకిల్" అని రాసినప్పుడు, అది "నేను ఎంతకాలంగా ఒక సైకిల్ను?" అని ప్రతిస్పందించవచ్చు, బదులుగా తగిన సమాధానం ఇవ్వకుండా. + +[![ఎలిజాతో చాట్](https://img.youtube.com/vi/RMK9AphfLco/0.jpg)](https://youtu.be/RMK9AphfLco "ఎలిజాతో చాట్") + +> 🎥 పై చిత్రాన్ని క్లిక్ చేసి అసలు ELIZA ప్రోగ్రామ్ గురించి వీడియో చూడండి + +> గమనిక: మీరు 1966లో ప్రచురించిన [ఎలిజా](https://cacm.acm.org/magazines/1966/1/13317-elizaa-computer-program-for-the-study-of-natural-language-communication-between-man-and-machine/abstract) అసలు వివరణను చదవవచ్చు, మీకు ACM ఖాతా ఉంటే. లేకపోతే, ఎలిజా గురించి [వికీపీడియా](https://wikipedia.org/wiki/ELIZA)లో చదవండి. + +## వ్యాయామం - ప్రాథమిక సంభాషణ బాట్ కోడింగ్ + +ఎలిజా లాంటి సంభాషణ బాట్ అనేది వినియోగదారుల ఇన్‌పుట్‌ను పొందే, అర్థం చేసుకున్నట్లు మరియు తెలివిగా స్పందించే ప్రోగ్రామ్. ఎలిజా లాగా, మా బాట్‌కు తెలివైన సంభాషణ ఉన్నట్లు కనిపించే అనేక నియమాలు ఉండవు. బదులుగా, మా బాట్‌కు ఒకే సామర్థ్యం ఉంటుంది, అది ఏదైనా సాధారణ సంభాషణలో పనిచేసే యాదృచ్ఛిక సమాధానాలతో సంభాషణ కొనసాగించడం. + +### ప్రణాళిక + +సంభాషణ బాట్ నిర్మాణంలో మీ దశలు: + +1. వినియోగదారుని బాట్‌తో ఎలా మాట్లాడాలో సూచనలు ముద్రించండి +2. లూప్ ప్రారంభించండి + 1. వినియోగదారుని ఇన్‌పుట్ స్వీకరించండి + 2. వినియోగదారు ఎగ్జిట్ అడిగితే, బయటకు రండి + 3. వినియోగదారుని ఇన్‌పుట్‌ను ప్రాసెస్ చేసి సమాధానం నిర్ణయించండి (ఈ సందర్భంలో, సమాధానం సాధారణ సమాధానాల జాబితా నుండి యాదృచ్ఛిక ఎంపిక) + 4. సమాధానం ముద్రించండి +3. దశ 2కి తిరిగి లూప్ చేయండి + +### బాట్ నిర్మాణం + +ఇప్పుడు బాట్‌ను సృష్టిద్దాం. కొన్ని వాక్యాలను నిర్వచించడం ప్రారంభిద్దాం. + +1. ఈ బాట్‌ను Pythonలో క్రింది యాదృచ్ఛిక సమాధానాలతో మీరే సృష్టించండి: + + ```python + random_responses = ["That is quite interesting, please tell me more.", + "I see. Do go on.", + "Why do you say that?", + "Funny weather we've been having, isn't it?", + "Let's change the subject.", + "Did you catch the game last night?"] + ``` + + మీకు మార్గనిర్దేశం చేయడానికి కొన్ని నమూనా అవుట్పుట్ (వినియోగదారుని ఇన్‌పుట్ `>` తో ప్రారంభమయ్యే లైన్లలో ఉంటుంది): + + ```output + Hello, I am Marvin, the simple robot. + You can end this conversation at any time by typing 'bye' + After typing each answer, press 'enter' + How are you today? + > I am good thanks + That is quite interesting, please tell me more. + > today I went for a walk + Did you catch the game last night? + > I did, but my team lost + Funny weather we've been having, isn't it? + > yes but I hope next week is better + Let's change the subject. + > ok, lets talk about music + Why do you say that? + > because I like music! + Why do you say that? + > bye + It was nice talking to you, goodbye! + ``` + + ఈ పనికి ఒక సాధ్యమైన పరిష్కారం [ఇక్కడ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/1-Introduction-to-NLP/solution/bot.py) + + ✅ ఆగి ఆలోచించండి + + 1. యాదృచ్ఛిక సమాధానాలు ఎవరికైనా బాట్ నిజంగా అర్థం చేసుకున్నట్లు 'మోసం' చేయగలవని మీరు అనుకుంటున్నారా? + 2. బాట్ మరింత సమర్థవంతంగా ఉండేందుకు ఏ లక్షణాలు అవసరం? + 3. ఒక బాట్ వాక్య అర్థం నిజంగా 'అర్థం చేసుకుంటే', అది సంభాషణలో గత వాక్యాల అర్థాన్ని కూడా 'మరచిపోకుండా' ఉంచాల్సి ఉంటుందా? + +--- + +## 🚀సవాలు + +పై "ఆగి ఆలోచించండి" అంశాలలో ఒకదాన్ని ఎంచుకుని, దాన్ని కోడ్‌లో అమలు చేయడానికి ప్రయత్నించండి లేదా పేపర్‌పై ప్సూడోకోడ్ ఉపయోగించి పరిష్కారం రాయండి. + +తర్వాతి పాఠంలో, సహజ భాషను పార్స్ చేయడానికి మరియు యంత్ర అభ్యాసానికి అనేక ఇతర విధానాలను మీరు నేర్చుకుంటారు. + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +క్రింద ఇచ్చిన సూచనలను మరింత చదవడానికి అవకాశాలుగా చూడండి. + +### సూచనలు + +1. షుబెర్ట్, లెన్హార్ట్, "కంప్యూటేషనల్ లింగ్విస్టిక్స్", *ది స్టాన్ఫర్డ్ ఎన్‌సైక్లోపీడియా ఆఫ్ ఫిలాసఫీ* (స్ప్రింగ్ 2020 ఎడిషన్), ఎడ్వర్డ్ ఎన్. జాల్టా (ఎడిటర్), URL = . +2. ప్రిన్స్టన్ యూనివర్సిటీ "వర్డ్‌నెట్ గురించి." [WordNet](https://wordnet.princeton.edu/). ప్రిన్స్టన్ యూనివర్సిటీ. 2010. + +## అసైన్‌మెంట్ + +[బాట్ కోసం శోధించండి](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/1-Introduction-to-NLP/assignment.md b/translations/te/6-NLP/1-Introduction-to-NLP/assignment.md new file mode 100644 index 000000000..c16975990 --- /dev/null +++ b/translations/te/6-NLP/1-Introduction-to-NLP/assignment.md @@ -0,0 +1,27 @@ + +# బాట్ కోసం శోధించండి + +## సూచనలు + +బాట్లు ఎక్కడా ఉన్నారు. మీ పని: ఒకటిని కనుగొని దాన్ని దత్తత తీసుకోండి! మీరు వాటిని వెబ్ సైట్లలో, బ్యాంకింగ్ అప్లికేషన్లలో, మరియు ఫోన్‌లో కూడా కనుగొనవచ్చు, ఉదాహరణకు మీరు ఆర్థిక సేవల కంపెనీలను సలహా లేదా ఖాతా సమాచారం కోసం కాల్ చేసినప్పుడు. బాట్‌ను విశ్లేషించి మీరు దాన్ని గందరగోళపరచగలరా అని చూడండి. మీరు బాట్‌ను గందరగోళపరచగలిగితే, అది ఎందుకు జరిగిందని మీరు భావిస్తున్నారు? మీ అనుభవం గురించి ఒక చిన్న పత్రాన్ని రాయండి. + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైన | సరిపడిన | మెరుగుదల అవసరం | +| -------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | --------------------- | +| | ఒక పూర్తి పేజీ పత్రం రాయబడింది, అనుమానిత బాట్ నిర్మాణాన్ని వివరించి, దాని అనుభవాన్ని వివరించింది | పత్రం అసంపూర్ణంగా లేదా బాగా పరిశోధించబడలేదు | పత్రం సమర్పించబడలేదు | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలో ఉన్నది అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/6-NLP/2-Tasks/README.md b/translations/te/6-NLP/2-Tasks/README.md new file mode 100644 index 000000000..c1bfd1dfe --- /dev/null +++ b/translations/te/6-NLP/2-Tasks/README.md @@ -0,0 +1,230 @@ + +# సాధారణ సహజ భాషా ప్రాసెసింగ్ పనులు మరియు సాంకేతికతలు + +అధిక భాగం *సహజ భాషా ప్రాసెసింగ్* పనుల కోసం, ప్రాసెస్ చేయవలసిన టెక్స్ట్‌ను విభజించి, పరిశీలించి, ఫలితాలను నియమాలు మరియు డేటా సెట్‌లతో నిల్వ చేయాలి లేదా క్రాస్ రిఫరెన్స్ చేయాలి. ఈ పనులు, ప్రోగ్రామర్‌కు టెక్స్ట్‌లోని పదాలు మరియు పదబంధాల యొక్క _అర్థం_ లేదా _ఉద్దేశ్యం_ లేదా కేవలం _సాంద్రత_ ను పొందడానికి సహాయపడతాయి. + +## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +టెక్స్ట్ ప్రాసెసింగ్‌లో ఉపయోగించే సాధారణ సాంకేతికతలను తెలుసుకుందాం. మెషీన్ లెర్నింగ్‌తో కలిపితే, ఈ సాంకేతికతలు పెద్ద మొత్తంలో టెక్స్ట్‌ను సమర్థవంతంగా విశ్లేషించడంలో సహాయపడతాయి. అయితే, ఈ పనులకు ML వర్తింపజేయకముందు, NLP నిపుణుడు ఎదుర్కొనే సమస్యలను అర్థం చేసుకుందాం. + +## NLPకి సాధారణమైన పనులు + +మీరు పని చేస్తున్న టెక్స్ట్‌ను విశ్లేషించడానికి వివిధ మార్గాలు ఉన్నాయి. మీరు చేయగల పనులు ఉన్నాయి, మరియు ఈ పనుల ద్వారా మీరు టెక్స్ట్‌ను అర్థం చేసుకుని నిర్ణయాలు తీసుకోవచ్చు. మీరు సాధారణంగా ఈ పనులను ఒక క్రమంలో నిర్వహిస్తారు. + +### టోకనైజేషన్ + +బహుశా చాలా NLP అల్గోరిథమ్స్ మొదట చేయవలసిన పని టెక్స్ట్‌ను టోకెన్స్ లేదా పదాలుగా విభజించడం. ఇది సులభంగా అనిపించినప్పటికీ, విరామ చిహ్నాలు మరియు వివిధ భాషల పదాలు, వాక్య విభజనలను పరిగణలోకి తీసుకోవడం కష్టంగా ఉంటుంది. మీరు విభజనలను నిర్ణయించడానికి వివిధ పద్ధతులు ఉపయోగించవలసి ఉంటుంది. + +![tokenization](../../../../translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.te.png) +> **Pride and Prejudice** నుండి ఒక వాక్యాన్ని టోకనైజ్ చేయడం. ఇన్ఫోగ్రాఫిక్ [Jen Looper](https://twitter.com/jenlooper) ద్వారా + +### ఎంబెడ్డింగ్స్ + +[పద ఎంబెడ్డింగ్స్](https://wikipedia.org/wiki/Word_embedding) అనేవి మీ టెక్స్ట్ డేటాను సంఖ్యలుగా మార్చే ఒక విధానం. ఎంబెడ్డింగ్స్ అలా చేయబడతాయి, అర్థం సమానమైన లేదా కలిసి ఉపయోగించే పదాలు సమీపంగా క్లస్టర్ అవుతాయి. + +![word embeddings](../../../../translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.te.png) +> "నేను మీ నర్వ్స్‌కు అత్యంత గౌరవం కలిగి ఉన్నాను, అవి నా పాత స్నేహితులు." - **Pride and Prejudice** లో ఒక వాక్యానికి పద ఎంబెడ్డింగ్స్. ఇన్ఫోగ్రాఫిక్ [Jen Looper](https://twitter.com/jenlooper) ద్వారా + +✅ పద ఎంబెడ్డింగ్స్‌తో ప్రయోగించడానికి [ఈ ఆసక్తికరమైన టూల్](https://projector.tensorflow.org/) ను ప్రయత్నించండి. ఒక పదాన్ని క్లిక్ చేస్తే సమానమైన పదాల క్లస్టర్లు చూపబడతాయి: 'toy' క్లస్టర్‌లో 'disney', 'lego', 'playstation', మరియు 'console' ఉన్నాయి. + +### పార్సింగ్ & పార్ట్-ఆఫ్-స్పీచ్ ట్యాగింగ్ + +ప్రతి టోకనైజ్ చేసిన పదాన్ని భాగంగా ట్యాగ్ చేయవచ్చు - నామవాచకం, క్రియ, లేదా విశేషణం. వాక్యం `the quick red fox jumped over the lazy brown dog` లో fox = నామవాచకం, jumped = క్రియ అని POS ట్యాగ్ చేయవచ్చు. + +![parsing](../../../../translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.te.png) + +> **Pride and Prejudice** నుండి ఒక వాక్యాన్ని పార్స్ చేయడం. ఇన్ఫోగ్రాఫిక్ [Jen Looper](https://twitter.com/jenlooper) ద్వారా + +పార్సింగ్ అనేది వాక్యంలో ఏ పదాలు పరస్పరం సంబంధం ఉన్నాయో గుర్తించడం - ఉదాహరణకు `the quick red fox jumped` అనేది ఒక విశేషణ-నామవాచకం-క్రియ క్రమం, ఇది `lazy brown dog` క్రమం నుండి వేరుగా ఉంటుంది. + +### పదాలు మరియు పదబంధాల సాంద్రతలు + +పెద్ద టెక్స్ట్‌ను విశ్లేషించేటప్పుడు ఉపయోగకరమైన ప్రక్రియ ప్రతి పదం లేదా ఆసక్తి ఉన్న పదబంధం మరియు అవి ఎంతసార్లు కనిపిస్తాయో ఒక నిఘంటువు తయారు చేయడం. వాక్యం `the quick red fox jumped over the lazy brown dog` లో the పదానికి సాంద్రత 2. + +పదాల సాంద్రతను లెక్కించే ఉదాహరణ టెక్స్ట్ చూద్దాం. రుడ్యార్డ్ కిప్లింగ్ కవిత "The Winners" లో ఈ కవితా శ్లోకం ఉంది: + +```output +What the moral? Who rides may read. +When the night is thick and the tracks are blind +A friend at a pinch is a friend, indeed, +But a fool to wait for the laggard behind. +Down to Gehenna or up to the Throne, +He travels the fastest who travels alone. +``` + +పదబంధాల సాంద్రతలు అవసరమైతే కేస్ ఇన్సెన్సిటివ్ లేదా కేస్ సెన్సిటివ్ కావచ్చు, ఉదాహరణకు `a friend` కు సాంద్రత 2, `the` కు 6, మరియు `travels` కు 2. + +### ఎన్-గ్రామ్స్ + +ఒక టెక్స్ట్‌ను ఒక నిర్దిష్ట పొడవు కలిగిన పదాల క్రమాలుగా విభజించవచ్చు, ఒక పదం (యూనిగ్రామ్), రెండు పదాలు (బిగ్రామ్), మూడు పదాలు (ట్రైగ్రామ్) లేదా ఏ సంఖ్యలో పదాలు (ఎన్-గ్రామ్స్). + +ఉదాహరణకు `the quick red fox jumped over the lazy brown dog` ను ఎన్-గ్రామ్ స్కోర్ 2తో విభజిస్తే ఈ క్రింది ఎన్-గ్రామ్స్ వస్తాయి: + +1. the quick +2. quick red +3. red fox +4. fox jumped +5. jumped over +6. over the +7. the lazy +8. lazy brown +9. brown dog + +ఇది వాక్యం మీద స్లైడింగ్ బాక్స్ లాగా ఊహించవచ్చు. ఇక్కడ 3 పదాల ఎన్-గ్రామ్స్ కోసం, ప్రతి వాక్యంలో ఎన్-గ్రామ్ బోల్డ్‌లో ఉంది: + +1. **the quick red** fox jumped over the lazy brown dog +2. the **quick red fox** jumped over the lazy brown dog +3. the quick **red fox jumped** over the lazy brown dog +4. the quick red **fox jumped over** the lazy brown dog +5. the quick red fox **jumped over the** lazy brown dog +6. the quick red fox jumped **over the lazy** brown dog +7. the quick red fox jumped over **the lazy brown** dog +8. the quick red fox jumped over the **lazy brown dog** + +![n-grams sliding window](../../../../6-NLP/2-Tasks/images/n-grams.gif) + +> ఎన్-గ్రామ్ విలువ 3: ఇన్ఫోగ్రాఫిక్ [Jen Looper](https://twitter.com/jenlooper) ద్వారా + +### నామవాచక పదబంధం తీసివేత + +చాలా వాక్యాలలో, ఒక నామవాచకం ఉంటుంది, అది వాక్యపు విషయం లేదా కర్మ. ఆంగ్లంలో, అది తరచుగా 'a' లేదా 'an' లేదా 'the' ముందు ఉండటం ద్వారా గుర్తించవచ్చు. వాక్య అర్థం అర్థం చేసుకోవడానికి 'నామవాచక పదబంధం తీసివేత' ఒక సాధారణ NLP పని. + +✅ "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun." వాక్యంలో నామవాచక పదబంధాలను గుర్తించగలరా? + +వాక్యం `the quick red fox jumped over the lazy brown dog` లో 2 నామవాచక పదబంధాలు ఉన్నాయి: **quick red fox** మరియు **lazy brown dog**. + +### భావ విశ్లేషణ + +ఒక వాక్యం లేదా టెక్స్ట్ భావానికి విశ్లేషించవచ్చు, అది ఎంత *ధనాత్మక* లేదా *నెగటివ్* అనేది. భావం *పోలారిటీ* మరియు *వస్తునిష్ఠత/వ్యక్తిగతత* లో కొలవబడుతుంది. పోలారిటీ -1.0 నుండి 1.0 వరకు (నెగటివ్ నుండి పాజిటివ్) మరియు 0.0 నుండి 1.0 వరకు (అత్యంత వస్తునిష్ఠ నుండి అత్యంత వ్యక్తిగత) కొలవబడుతుంది. + +✅ తర్వాత మీరు మెషీన్ లెర్నింగ్ ఉపయోగించి భావాన్ని నిర్ణయించే వివిధ మార్గాలు నేర్చుకుంటారు, కానీ ఒక మార్గం అంటే మానవ నిపుణుడు పాజిటివ్ లేదా నెగటివ్‌గా వర్గీకరించిన పదాలు మరియు పదబంధాల జాబితాను కలిగి ఉండటం మరియు ఆ మోడల్‌ను టెక్స్ట్‌పై వర్తింపజేసి పోలారిటీ స్కోర్ లెక్కించడం. కొన్ని సందర్భాల్లో ఇది ఎలా పనిచేస్తుందో, మరికొన్ని సందర్భాల్లో తక్కువగా ఎలా పనిచేస్తుందో మీరు చూడగలరా? + +### రూపాంతరం + +రూపాంతరం ద్వారా మీరు ఒక పదాన్ని singular లేదా plural రూపంలో పొందవచ్చు. + +### లెమటైజేషన్ + +*లెమ్మా* అనేది పదాల సమూహానికి మూలం లేదా ప్రధాన పదం, ఉదాహరణకు *flew*, *flies*, *flying* కు క్రియ *fly* అనే లెమ్మా ఉంటుంది. + +NLP పరిశోధకులకు ఉపయోగకరమైన డేటాబేస్‌లు కూడా ఉన్నాయి, ముఖ్యంగా: + +### WordNet + +[WordNet](https://wordnet.princeton.edu/) అనేది పదాలు, సమానార్థకాలు, విరుద్ధార్థకాలు మరియు అనేక ఇతర వివరాల డేటాబేస్, అనేక భాషలలో ప్రతి పదానికి. ఇది అనువాదాలు, స్పెల్ చెకర్లు లేదా ఏ రకమైన భాషా సాధనాలు తయారు చేయడంలో చాలా ఉపయోగకరం. + +## NLP లైబ్రరీలు + +సంతోషకరం, మీరు ఈ సాంకేతికతలన్నింటినీ స్వయంగా నిర్మించాల్సిన అవసరం లేదు, ఎందుకంటే సహజ భాషా ప్రాసెసింగ్ లేదా మెషీన్ లెర్నింగ్‌లో ప్రత్యేకత లేని డెవలపర్లకు చాలా సులభంగా ఉండే అద్భుతమైన Python లైబ్రరీలు అందుబాటులో ఉన్నాయి. తదుపరి పాఠాలలో వీటి మరిన్ని ఉదాహరణలు ఉంటాయి, కానీ ఇక్కడ మీరు తదుపరి పనికి సహాయపడే కొన్ని ఉపయోగకరమైన ఉదాహరణలను నేర్చుకుంటారు. + +### వ్యాయామం - `TextBlob` లైబ్రరీ ఉపయోగించడం + +ఈ రకమైన పనులను ఎదుర్కొనేందుకు సహాయపడే APIలు కలిగిన TextBlob అనే లైబ్రరీని ఉపయోగిద్దాం. TextBlob "పెద్ద [NLTK](https://nltk.org) మరియు [pattern](https://github.com/clips/pattern) పై ఆధారపడి, రెండింటితో బాగా పనిచేస్తుంది." దీని APIలో చాలా ML కూడా ఉంది. + +> గమనిక: TextBlob కోసం ఒక ఉపయోగకరమైన [క్విక్ స్టార్ట్](https://textblob.readthedocs.io/en/dev/quickstart.html#quickstart) గైడ్ ఉంది, ఇది అనుభవజ్ఞులైన Python డెవలపర్లకు సిఫార్సు చేయబడింది + +*నామవాచక పదబంధాలను* గుర్తించేటప్పుడు, TextBlob అనేక ఎక్స్‌ట్రాక్టర్ల ఎంపికలను అందిస్తుంది. + +1. `ConllExtractor` ను పరిశీలించండి. + + ```python + from textblob import TextBlob + from textblob.np_extractors import ConllExtractor + # దిగుమతి చేసుకుని తర్వాత ఉపయోగించడానికి Conll ఎక్స్‌ట్రాక్టర్ సృష్టించండి + extractor = ConllExtractor() + + # తర్వాత మీరు నామవాచక పదబంధ ఎక్స్‌ట్రాక్టర్ అవసరం ఉన్నప్పుడు: + user_input = input("> ") + user_input_blob = TextBlob(user_input, np_extractor=extractor) # డిఫాల్ట్ కాని ఎక్స్‌ట్రాక్టర్ పేర్కొనబడింది అని గమనించండి + np = user_input_blob.noun_phrases + ``` + + > ఇక్కడ ఏమి జరుగుతోంది? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor) అనేది "ConLL-2000 శిక్షణ కార్పస్‌తో శిక్షణ పొందిన చంక్ పార్సింగ్ ఉపయోగించే నామవాచక పదబంధ ఎక్స్‌ట్రాక్టర్." ConLL-2000 అనేది 2000లో జరిగిన సహజ భాషా లెర్నింగ్ పై సదస్సు. ప్రతి సంవత్సరం ఈ సదస్సు ఒక క్లిష్టమైన NLP సమస్యను పరిష్కరించడానికి వర్క్‌షాప్ నిర్వహించేది, 2000లో అది నామ చంకింగ్. వాల్ స్ట్రీట్ జర్నల్‌పై శిక్షణ పొందిన మోడల్, "సెక్షన్లు 15-18 శిక్షణ డేటాగా (211727 టోకెన్స్) మరియు సెక్షన్ 20 పరీక్ష డేటాగా (47377 టోకెన్స్)" ఉపయోగించబడింది. మీరు ఉపయోగించిన విధానాలను [ఇక్కడ](https://www.clips.uantwerpen.be/conll2000/chunking/) మరియు ఫలితాలను [ఇక్కడ](https://ifarm.nl/erikt/research/np-chunking.html) చూడవచ్చు. + +### సవాలు - NLPతో మీ బాట్‌ను మెరుగుపరచడం + +మునుపటి పాఠంలో మీరు చాలా సులభమైన Q&A బాట్‌ను నిర్మించారు. ఇప్పుడు, మీరు మీ ఇన్‌పుట్‌ను భావ విశ్లేషణ కోసం విశ్లేషించి, భావానికి సరిపోయే ప్రతిస్పందనను ముద్రించి, మరింత అనుకూలంగా మారుస్తారు. మీరు `noun_phrase` ను గుర్తించి దాని గురించి మరిన్ని ఇన్‌పుట్ అడగాలి. + +మంచి సంభాషణ బాట్‌ను నిర్మించే మీ దశలు: + +1. బాట్‌తో ఎలా సంభాషించాలో వినియోగదారుని సూచనలు ముద్రించండి +2. లూప్ ప్రారంభించండి + 1. వినియోగదారుని ఇన్‌పుట్ స్వీకరించండి + 2. వినియోగదారు ఎగ్జిట్ అడిగితే, ఎగ్జిట్ అవ్వండి + 3. వినియోగదారుని ఇన్‌పుట్‌ను ప్రాసెస్ చేసి సరైన భావ ప్రతిస్పందన నిర్ణయించండి + 4. భావంలో noun phrase గుర్తించబడితే, దాన్ని బహువచనంలో మార్చి ఆ విషయం గురించి మరిన్ని ఇన్‌పుట్ అడగండి + 5. ప్రతిస్పందన ముద్రించండి +3. దశ 2కి తిరిగి లూప్ చేయండి + +TextBlob ఉపయోగించి భావాన్ని నిర్ణయించే కోడ్ స్నిపెట్ ఇక్కడ ఉంది. నాలుగు *గ్రేడియెంట్లు* మాత్రమే ఉన్నాయి (మీకు కావాలంటే మరిన్ని ఉండవచ్చు): + +```python +if user_input_blob.polarity <= -0.5: + response = "Oh dear, that sounds bad. " +elif user_input_blob.polarity <= 0: + response = "Hmm, that's not great. " +elif user_input_blob.polarity <= 0.5: + response = "Well, that sounds positive. " +elif user_input_blob.polarity <= 1: + response = "Wow, that sounds great. " +``` + +మీకు మార్గదర్శకంగా కొన్ని నమూనా అవుట్పుట్ ఇక్కడ ఉన్నాయి (వినియోగదారుని ఇన్‌పుట్ > తో ప్రారంభమయ్యే లైన్లలో ఉంది): + +```output +Hello, I am Marvin, the friendly robot. +You can end this conversation at any time by typing 'bye' +After typing each answer, press 'enter' +How are you today? +> I am ok +Well, that sounds positive. Can you tell me more? +> I went for a walk and saw a lovely cat +Well, that sounds positive. Can you tell me more about lovely cats? +> cats are the best. But I also have a cool dog +Wow, that sounds great. Can you tell me more about cool dogs? +> I have an old hounddog but he is sick +Hmm, that's not great. Can you tell me more about old hounddogs? +> bye +It was nice talking to you, goodbye! +``` + +ఈ పనికి ఒక సాధ్యమైన పరిష్కారం [ఇక్కడ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/2-Tasks/solution/bot.py) ఉంది + +✅ జ్ఞాన పరీక్ష + +1. అనుకూలమైన ప్రతిస్పందనలు బాట్ నిజంగా అర్థం చేసుకున్నట్లు ఎవరికైనా 'మోసం' చేయగలవా? +2. నామవాచక పదబంధం గుర్తించడం బాట్‌ను మరింత 'నమ్మదగినది' గా చేస్తుందా? +3. వాక్యం నుండి 'నామవాచక పదబంధం' తీసివేత చేయడం ఎందుకు ఉపయోగకరం? + +--- + +మునుపటి జ్ఞాన పరీక్షలో బాట్‌ను అమలు చేసి మిత్రుడిపై పరీక్షించండి. అది వారిని మోసం చేయగలదా? మీరు మీ బాట్‌ను మరింత 'నమ్మదగినది' గా మార్చగలరా? + +## 🚀సవాలు + +మునుపటి జ్ఞాన పరీక్షలోని ఒక పనిని తీసుకుని దాన్ని అమలు చేయండి. బాట్‌ను మిత్రుడిపై పరీక్షించండి. అది వారిని మోసం చేయగలదా? మీరు మీ బాట్‌ను మరింత 'నమ్మదగినది' గా మార్చగలరా? + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +తదుపరి కొన్ని పాఠాలలో మీరు భావ విశ్లేషణ గురించి మరింత నేర్చుకుంటారు. ఈ ఆసక్తికర సాంకేతికతను [KDNuggets](https://www.kdnuggets.com/tag/nlp) వంటి వ్యాసాలలో పరిశోధించండి + +## అసైన్‌మెంట్ + +[బాట్‌ను మాట్లాడించండి](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/2-Tasks/assignment.md b/translations/te/6-NLP/2-Tasks/assignment.md new file mode 100644 index 000000000..ee433c657 --- /dev/null +++ b/translations/te/6-NLP/2-Tasks/assignment.md @@ -0,0 +1,27 @@ + +# ఒక బాట్ తిరిగి మాట్లాడించండి + +## సూచనలు + +గత కొన్ని పాఠాలలో, మీరు చాట్ చేయడానికి ఒక ప్రాథమిక బాట్‌ను ప్రోగ్రామ్ చేసారు. ఈ బాట్ మీరు 'bye' అనేవరకు యాదృచ్ఛిక సమాధానాలు ఇస్తుంది. మీరు సమాధానాలను కొంచెం తక్కువ యాదృచ్ఛికంగా చేయగలరా, మరియు మీరు 'why' లేదా 'how' వంటి ప్రత్యేక విషయాలు చెప్పినప్పుడు సమాధానాలు ప్రేరేపించగలరా? మీరు మీ బాట్‌ను విస్తరించేటప్పుడు ఈ రకమైన పనిని తక్కువ మాన్యువల్‌గా చేయడానికి మెషీన్ లెర్నింగ్ ఎలా సహాయపడుతుందో కొంచెం ఆలోచించండి. మీ పనులను సులభతరం చేయడానికి మీరు NLTK లేదా TextBlob లైబ్రరీలను ఉపయోగించవచ్చు. + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైనది | సరిపడినది | మెరుగుదల అవసరం | +| -------- | --------------------------------------------- | ------------------------------------------------ | ----------------------- | +| | ఒక కొత్త bot.py ఫైల్ అందించబడింది మరియు డాక్యుమెంటేషన్ చేయబడింది | ఒక కొత్త బాట్ ఫైల్ అందించబడింది కానీ దానిలో బగ్స్ ఉన్నాయి | ఫైల్ అందించబడలేదు | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/6-NLP/3-Translation-Sentiment/README.md b/translations/te/6-NLP/3-Translation-Sentiment/README.md new file mode 100644 index 000000000..74fef55f3 --- /dev/null +++ b/translations/te/6-NLP/3-Translation-Sentiment/README.md @@ -0,0 +1,202 @@ + +# అనువాదం మరియు భావ విశ్లేషణ ML తో + +మునుపటి పాఠాలలో మీరు `TextBlob` ఉపయోగించి ఒక ప్రాథమిక బాట్‌ను ఎలా నిర్మించాలో నేర్చుకున్నారు, ఇది MLని వెనుకనుంచి చేర్చి ప్రాథమిక NLP పనులను, ఉదాహరణకు నామవాచక పదబంధాల వెలికితీయడం వంటి పనులను చేస్తుంది. కంప్యూటేషనల్ లింగ్విస్టిక్స్‌లో మరో ముఖ్యమైన సవాలు ఒక వాక్యాన్ని ఒక మాట్లాడే లేదా రాసే భాష నుండి మరొక భాషకు ఖచ్చితంగా _అనువదించడం_. + +## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +అనువాదం చాలా కష్టం, ఎందుకంటే వేలాది భాషలు ఉన్నాయి మరియు ప్రతి భాషకు చాలా భిన్నమైన వ్యాకరణ నియమాలు ఉండవచ్చు. ఒక దృష్టికోణం ఒక భాష, ఉదాహరణకు ఇంగ్లీష్, యొక్క ఫార్మల్ వ్యాకరణ నియమాలను భాషాపరమైన ఆధారపడని నిర్మాణంగా మార్చడం, ఆపై మరొక భాషకు తిరిగి మార్చడం ద్వారా అనువదించడం. ఈ దృష్టికోణం మీరు ఈ క్రింది దశలను తీసుకోవాలని సూచిస్తుంది: + +1. **గుర్తింపు**. ఇన్‌పుట్ భాషలోని పదాలను నామవాచకాలు, క్రియలు మొదలైన వాటిగా గుర్తించడం లేదా ట్యాగ్ చేయడం. +2. **అనువాదం సృష్టించడం**. లక్ష్య భాష ఫార్మాట్‌లో ప్రతి పదానికి ప్రత్యక్ష అనువాదం చేయడం. + +### ఉదాహరణ వాక్యం, ఇంగ్లీష్ నుండి ఐరిష్ + +'ఇంగ్లీష్'లో, వాక్యం _I feel happy_ మూడు పదాలతో ఈ క్రమంలో ఉంటుంది: + +- **విషయం** (I) +- **క్రియా** (feel) +- **విశేషణం** (happy) + +కానీ, 'ఐరిష్' భాషలో అదే వాక్యం చాలా భిన్నమైన వ్యాకరణ నిర్మాణం కలిగి ఉంటుంది - "*happy*" లేదా "*sad*" వంటి భావాలు మీపై *ఉన్నట్లు* వ్యక్తం చేయబడతాయి. + +ఇంగ్లీష్ పదబంధం `I feel happy` ఐరిష్‌లో `Tá athas orm` అవుతుంది. ఒక *నిజమైన* అనువాదం `Happy is upon me` అవుతుంది. + +ఐరిష్ మాట్లాడేవారు ఇంగ్లీష్‌కు అనువదిస్తే `I feel happy` అంటారు, `Happy is upon me` కాదు, ఎందుకంటే వారు వాక్యార్థాన్ని అర్థం చేసుకుంటారు, పదాలు మరియు వాక్య నిర్మాణం వేరు అయినా. + +ఐరిష్‌లో వాక్యానికి ఫార్మల్ క్రమం: + +- **క్రియా** (Tá లేదా is) +- **విశేషణం** (athas, లేదా happy) +- **విషయం** (orm, లేదా upon me) + +## అనువాదం + +సాధారణ అనువాద ప్రోగ్రామ్ పదాలను మాత్రమే అనువదించి, వాక్య నిర్మాణాన్ని పక్కన పెట్టవచ్చు. + +✅ మీరు పెద్దవయసులో రెండో (లేదా మూడో లేదా మరిన్ని) భాష నేర్చుకున్నట్లయితే, మీరు మొదట మీ స్వదేశీ భాషలో ఆలోచించి, ఆ భావాన్ని పదం పదంగా రెండో భాషలో అనువదించి, ఆ అనువాదాన్ని మాట్లాడటం మొదలుపెట్టినట్లే ఉంటుంది. ఇది సాధారణ అనువాద కంప్యూటర్ ప్రోగ్రాములు చేస్తున్న దానికి సమానంగా ఉంటుంది. మీరు ఈ దశను దాటిపోవడం ముఖ్యం, తద్వారా ప్రవాహం సాధించవచ్చు! + +సాధారణ అనువాదం చెడ్డ (మరియు కొన్నిసార్లు హాస్యాస్పద) తప్పు అనువాదాలకు దారితీస్తుంది: `I feel happy` ఐరిష్‌లో నేరుగా అనువదిస్తే `Mise bhraitheann athas` అవుతుంది. దీని అర్థం (నేరుగా) `me feel happy` మరియు ఇది సరైన ఐరిష్ వాక్యం కాదు. ఇంగ్లీష్ మరియు ఐరిష్ రెండు సమీప ద్వీపాలలో మాట్లాడే భాషలు అయినప్పటికీ, అవి చాలా భిన్నమైన వ్యాకరణ నిర్మాణాలు కలిగి ఉంటాయి. + +> మీరు ఐరిష్ భాషా సంప్రదాయాల గురించి కొన్ని వీడియోలు చూడవచ్చు, ఉదాహరణకు [ఇది](https://www.youtube.com/watch?v=mRIaLSdRMMs) + +### మెషీన్ లెర్నింగ్ దృష్టికోణాలు + +ఇప్పటివరకు, మీరు సహజ భాషా ప్రాసెసింగ్‌కు ఫార్మల్ నియమాల దృష్టికోణం గురించి నేర్చుకున్నారు. మరో దృష్టికోణం పదాల అర్థాన్ని పక్కన పెట్టి, _మెషీన్ లెర్నింగ్ ఉపయోగించి నమూనాలను గుర్తించడం_. ఇది అనువాదంలో పనిచేస్తుంది, మీరు మూలం మరియు లక్ష్య భాషలలో చాలా టెక్స్ట్‌లు (ఒక *కోర్పస్* లేదా *కోర్పోరా*) కలిగి ఉంటే. + +ఉదాహరణకు, 1813లో జేన్ ఆస్టెన్ రాసిన ప్రసిద్ధ ఇంగ్లీష్ నవల *Pride and Prejudice* ను పరిగణించండి. మీరు ఆ పుస్తకాన్ని ఇంగ్లీష్‌లో మరియు ఫ్రెంచ్‌లో మానవ అనువాదంతో చూసినప్పుడు, ఒక భాషలో ఉన్న పదబంధాలు మరొక భాషలో _సాంప్రదాయాత్మకంగా_ అనువదించబడ్డాయని గుర్తించవచ్చు. మీరు దీన్ని కొద్దిసేపట్లో చేస్తారు. + +ఉదాహరణకు, ఇంగ్లీష్ పదబంధం `I have no money` ను ఫ్రెంచ్‌కు నేరుగా అనువదిస్తే, అది `Je n'ai pas de monnaie` అవుతుంది. "Monnaie" అనేది ఒక క్లిష్టమైన ఫ్రెంచ్ 'తప్పు సారూప్యం' (false cognate), ఎందుకంటే 'money' మరియు 'monnaie' సమానార్థకాలు కావు. మానవుడు చేసే మంచి అనువాదం `Je n'ai pas d'argent` అవుతుంది, ఎందుకంటే ఇది మీరు డబ్బు లేనట్టుగా అర్థం చెప్పడంలో మెరుగ్గా ఉంటుంది (మరియు 'monnaie' అర్థం 'చిన్న నాణేలు'). + +![monnaie](../../../../translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.te.png) + +> చిత్రం [Jen Looper](https://twitter.com/jenlooper) ద్వారా + +ఒక ML మోడల్‌కు మానవ అనువాదాలు చాలానే ఉంటే, అది రెండు భాషల నిపుణులచే ముందుగా అనువదించబడిన టెక్స్ట్‌లలో సాధారణ నమూనాలను గుర్తించి అనువాద ఖచ్చితత్వాన్ని మెరుగుపరచవచ్చు. + +### వ్యాయామం - అనువాదం + +మీరు వాక్యాలను అనువదించడానికి `TextBlob` ఉపయోగించవచ్చు. ప్రసిద్ధ **Pride and Prejudice** మొదటి వాక్యాన్ని ప్రయత్నించండి: + +```python +from textblob import TextBlob + +blob = TextBlob( + "It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife!" +) +print(blob.translate(to="fr")) + +``` + +`TextBlob` అనువాదంలో మంచి పనితనం చూపిస్తుంది: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!". + +వాస్తవానికి, TextBlob అనువాదం 1932లో V. Leconte మరియు Ch. Pressoir చేసిన ఫ్రెంచ్ అనువాదం కంటే చాలా ఖచ్చితంగా ఉండవచ్చు: + +"C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles." + +ఈ సందర్భంలో, ML ఆధారిత అనువాదం మానవ అనువాదకుడి కంటే మెరుగ్గా పనిచేస్తుంది, ఎందుకంటే మానవుడు అసలు రచయిత మాటల్లో అవసరంలేని పదాలను చేర్చాడు 'స్పష్టత' కోసం. + +> ఇది ఏమిటి? మరియు TextBlob అనువాదం ఎందుకు అంత మంచి? వెనుకనుంచి, ఇది Google translate ఉపయోగిస్తుంది, ఇది లక్షలాది పదబంధాలను విశ్లేషించి ఉత్తమ స్ట్రింగ్స్‌ను అంచనా వేయగల సాంకేతిక AI. ఇక్కడ ఏ మానవీయ చర్య లేదు మరియు `blob.translate` ఉపయోగించడానికి ఇంటర్నెట్ కనెక్షన్ అవసరం. + +✅ మరికొన్ని వాక్యాలు ప్రయత్నించండి. ఏది మెరుగ్గా ఉంది, ML లేదా మానవ అనువాదం? ఏ సందర్భాల్లో? + +## భావ విశ్లేషణ + +మెషీన్ లెర్నింగ్ చాలా బాగా పనిచేసే మరో ప్రాంతం భావ విశ్లేషణ. ఒక non-ML దృష్టికోణం భావాన్ని గుర్తించడానికి 'ధనాత్మక' మరియు 'నెగటివ్' పదాలు, పదబంధాలను గుర్తించడం. ఆపై, కొత్త టెక్స్ట్ ఇచ్చినప్పుడు, ధనాత్మక, నెగటివ్ మరియు న్యూట్రల్ పదాల మొత్తం విలువను లెక్కించి మొత్తం భావాన్ని గుర్తించడం. + +ఈ దృష్టికోణం సులభంగా మోసగించబడుతుంది, మీరు Marvin టాస్క్‌లో చూసినట్లే - వాక్యం `Great, that was a wonderful waste of time, I'm glad we are lost on this dark road` ఒక వ్యంగ్యాత్మక, నెగటివ్ భావ వాక్యం, కానీ సాదా అల్గోరిథం 'great', 'wonderful', 'glad' ను ధనాత్మకంగా, 'waste', 'lost' మరియు 'dark' ను నెగటివ్‌గా గుర్తిస్తుంది. మొత్తం భావం ఈ విరుద్ధ పదాల వల్ల తిప్పబడుతుంది. + +✅ ఒక క్షణం ఆగి మనుష్యులు వ్యంగ్యాన్ని ఎలా వ్యక్తం చేస్తామో ఆలోచించండి. స్వరం ఉచ్చారణ చాలా పాత్ర పోషిస్తుంది. "Well, that film was awesome" అనే పదబంధాన్ని వేర్వేరు రీతుల్లో చెప్పి మీ స్వరం అర్థాన్ని ఎలా వ్యక్తం చేస్తుందో తెలుసుకోండి. + +### ML దృష్టికోణాలు + +ML దృష్టికోణం నెగటివ్ మరియు పాజిటివ్ టెక్స్ట్‌లను - ట్వీట్లు, సినిమా సమీక్షలు లేదా మానవుడు స్కోరు మరియు అభిప్రాయం ఇచ్చిన ఏదైనా - సేకరించడం. ఆపై NLP సాంకేతికతలను అభిప్రాయాలు మరియు స్కోర్లు మీద వర్తింపజేసి నమూనాలు బయటపడతాయి (ఉదా: ధనాత్మక సినిమా సమీక్షల్లో 'Oscar worthy' పదబంధం ఎక్కువగా ఉంటుంది, నెగటివ్ సమీక్షల్లో తక్కువగా, లేదా ధనాత్మక రెస్టారెంట్ సమీక్షల్లో 'gourmet' ఎక్కువగా ఉంటుంది 'disgusting' కంటే). + +> ⚖️ **ఉదాహరణ**: మీరు ఒక రాజకీయ నాయకుడి కార్యాలయంలో పనిచేస్తున్నారని, కొత్త చట్టం చర్చలో ఉందని అనుకోండి. ప్రజలు ఆ చట్టానికి మద్దతుగా లేదా వ్యతిరేకంగా ఇమెయిల్స్ రాస్తారు. మీరు ఆ ఇమెయిల్స్ చదివి రెండు గుంపులుగా, *మద్దతు* మరియు *వ్యతిరేకం* గా వర్గీకరించాల్సి ఉంటుంది. ఇమెయిల్స్ చాలా ఉంటే, వాటన్నింటినీ చదవడం కష్టమవుతుంది. ఒక బాట్ వాటన్నింటినీ చదివి అర్థం చేసుకుని ఏ ఇమెయిల్ ఏ గుంపులో ఉందో చెప్పగలిగితే బాగుండేది కదా? +> +> దీన్ని సాధించడానికి మెషీన్ లెర్నింగ్ ఉపయోగించవచ్చు. మీరు *వ్యతిరేక* ఇమెయిల్స్ మరియు *మద్దతు* ఇమెయిల్స్ కొంత భాగంతో మోడల్‌ను శిక్షణ ఇస్తారు. మోడల్ పదబంధాలు మరియు పదాలను వ్యతిరేక మరియు మద్దతు వైపులుగా అనుసంధానిస్తుంది, *కానీ అది ఏదైనా విషయాన్ని అర్థం చేసుకోదు*, కేవలం కొన్ని పదాలు మరియు నమూనాలు ఒక వైపు ఎక్కువగా కనిపిస్తాయని మాత్రమే తెలుసుకుంటుంది. మీరు శిక్షణలో ఉపయోగించని కొన్ని ఇమెయిల్స్‌తో పరీక్షిస్తారు, మీరు చేసిన నిర్ణయంతో సమానంగా ఉందో చూడండి. మీరు మోడల్ ఖచ్చితత్వంతో సంతృప్తి చెందాక, భవిష్యత్ ఇమెయిల్స్‌ను చదవకుండా ప్రాసెస్ చేయవచ్చు. + +✅ ఈ ప్రక్రియ మీరు మునుపటి పాఠాలలో ఉపయోగించిన ప్రక్రియలకు సమానంగా ఉందా? + +## వ్యాయామం - భావ వాక్యాలు + +భావాన్ని -1 నుండి 1 వరకు *పోలారిటీ*తో కొలుస్తారు, అంటే -1 అత్యంత నెగటివ్ భావం, 1 అత్యంత పాజిటివ్ భావం. భావాన్ని 0 - 1 స్కోర్‌తో కూడా కొలుస్తారు, 0 అంటే ఆబ్జెక్టివిటీ, 1 అంటే సబ్జెక్టివిటీ. + +మళ్ళీ జేన్ ఆస్టెన్ యొక్క *Pride and Prejudice* ను చూడండి. పాఠ్యం [Project Gutenberg](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) వద్ద అందుబాటులో ఉంది. క్రింది నమూనా ప్రోగ్రామ్ పుస్తకంలోని మొదటి మరియు చివరి వాక్యాల భావాన్ని విశ్లేషించి, దాని పోలారిటీ మరియు సబ్జెక్టివిటీ/ఆబ్జెక్టివిటీ స్కోర్‌ను ప్రదర్శిస్తుంది. + +ఈ క్రింది టాస్క్‌లో మీరు `TextBlob` లైబ్రరీ (పై వివరించినది) ఉపయోగించి `sentiment` నిర్ణయించాలి (మీరు మీ స్వంత భావ గణన యంత్రం రాయాల్సిన అవసరం లేదు). + +```python +from textblob import TextBlob + +quote1 = """It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife.""" + +quote2 = """Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them.""" + +sentiment1 = TextBlob(quote1).sentiment +sentiment2 = TextBlob(quote2).sentiment + +print(quote1 + " has a sentiment of " + str(sentiment1)) +print(quote2 + " has a sentiment of " + str(sentiment2)) +``` + +మీకు క్రింది అవుట్పుట్ కనిపిస్తుంది: + +```output +It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want # of a wife. has a sentiment of Sentiment(polarity=0.20952380952380953, subjectivity=0.27142857142857146) + +Darcy, as well as Elizabeth, really loved them; and they were + both ever sensible of the warmest gratitude towards the persons + who, by bringing her into Derbyshire, had been the means of + uniting them. has a sentiment of Sentiment(polarity=0.7, subjectivity=0.8) +``` + +## సవాలు - భావ పోలారిటీ తనిఖీ + +మీ టాస్క్, భావ పోలారిటీ ఉపయోగించి, *Pride and Prejudice* లో పూర్తిగా పాజిటివ్ వాక్యాలు పూర్తిగా నెగటివ్ వాక్యాల కంటే ఎక్కువ ఉన్నాయా అని నిర్ణయించడం. ఈ టాస్క్ కోసం, పోలారిటీ స్కోర్ 1 లేదా -1 ఉన్న వాక్యాలు పూర్తిగా పాజిటివ్ లేదా నెగటివ్ అని భావించవచ్చు. + +**దశలు:** + +1. Project Gutenberg నుండి [Pride and Prejudice](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) .txt ఫైల్ డౌన్లోడ్ చేసుకోండి. ఫైల్ ప్రారంభం మరియు ముగింపు మెటాడేటాను తీసివేసి అసలు పాఠ్యాన్ని మాత్రమే ఉంచండి +2. Pythonలో ఫైల్ తెరిచి కంటెంట్‌ను స్ట్రింగ్‌గా తీసుకోండి +3. పుస్తక స్ట్రింగ్‌తో TextBlob సృష్టించండి +4. పుస్తకంలోని ప్రతి వాక్యాన్ని లూప్‌లో విశ్లేషించండి + 1. పోలారిటీ 1 లేదా -1 అయితే ఆ వాక్యాన్ని పాజిటివ్ లేదా నెగటివ్ సందేశాల జాబితాలో నిల్వ చేయండి +5. చివరలో, అన్ని పాజిటివ్ మరియు నెగటివ్ వాక్యాలను (వేరుగా) మరియు వాటి సంఖ్యను ప్రింట్ చేయండి. + +ఇది ఒక నమూనా [పరిష్కారం](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb). + +✅ జ్ఞాన తనిఖీ + +1. భావం వాక్యంలో ఉపయోగించిన పదాల ఆధారంగా ఉంటుంది, కానీ కోడ్ పదాలను *అర్థం చేసుకుంటుందా*? +2. మీరు భావ పోలారిటీ ఖచ్చితమని అనుకుంటున్నారా, లేదా మరొక మాటల్లో, స్కోర్లతో మీరు *అంగీకరిస్తున్నారా*? + 1. ముఖ్యంగా, ఈ వాక్యాల పూర్తి **పాజిటివ్** పోలారిటీతో మీరు అంగీకరిస్తున్నారా లేదా విరుద్ధంగా ఉన్నారా? + * “What an excellent father you have, girls!” said she, when the door was shut. + * “Your examination of Mr. Darcy is over, I presume,” said Miss Bingley; “and pray what is the result?” “I am perfectly convinced by it that Mr. Darcy has no defect. + * How wonderfully these sort of things occur! + * I have the greatest dislike in the world to that sort of thing. + * Charlotte is an excellent manager, I dare say. + * “This is delightful indeed! + * I am so happy! + * Your idea of the ponies is delightful. + 2. ఈ తర్వాతి 3 వాక్యాలు పూర్తి పాజిటివ్ భావంతో స్కోర్ చేయబడ్డాయి, కానీ సమీపంగా చదివితే అవి పాజిటివ్ వాక్యాలు కావు. భావ విశ్లేషణ అవి పాజిటివ్ వాక్యాలు అని ఎందుకు భావించింది? + * Happy shall I be, when his stay at Netherfield is over!” “I wish I could say anything to comfort you,” replied Elizabeth; “but it is wholly out of my power. + * If I could but see you as happy! + * Our distress, my dear Lizzy, is very great. + 3. ఈ క్రింది వాక్యాల పూర్తి **నెగటివ్** పోలారిటీతో మీరు అంగీకరిస్తున్నారా లేదా విరుద్ధంగా ఉన్నారా? + - Everybody is disgusted with his pride. + - “I should like to know how he behaves among strangers.” “You shall hear then—but prepare yourself for something very dreadful. + - The pause was to Elizabeth’s feelings dreadful. + - It would be dreadful! + +✅ జేన్ ఆస్టెన్ అభిమానులు అర్థం చేసుకుంటారు ఆమె తరచుగా తన పుస్తకాలను ఇంగ్లీష్ రెజెన్సీ సమాజంలోని అర్థరహిత అంశాలను విమర్శించడానికి ఉపయోగిస్తారని. *Pride and Prejudice* లో ప్రధాన పాత్ర ఎలిజబెత్ బెన్నెట్ ఒక చురుకైన సామాజిక పరిశీలకురాలు (రచయితలా) మరియు ఆమె భాష తరచుగా చాలా సున్నితంగా ఉంటుంది. కథలో ప్రేమ ఆసక్తి అయిన మిస్టర్ డార్సీ కూడా ఎలిజబెత్ యొక్క ఆటపాట మరియు చమత్కార భాషా వినియోగాన్ని గమనిస్తాడు: "నేను మీ పరిచయాన్ని చాలాసేపు పొందాను, మీరు నిజానికి మీ స్వంతం కాని అభిప్రాయాలను అప్పుడప్పుడు ప్రకటించడం లో చాలా ఆనందం పొందుతారని తెలుసుకున్నాను." + +--- + +## 🚀సవాలు + +మార్విన్‌ను మరింత మెరుగుపరచడానికి వినియోగదారు ఇన్‌పుట్ నుండి ఇతర లక్షణాలను తీసుకురావచ్చు? + +## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ml/) +## సమీక్ష & స్వీయ అధ్యయనం + +పాఠ్యంతో నుండి భావోద్వేగాన్ని తీసుకోవడానికి అనేక మార్గాలు ఉన్నాయి. ఈ సాంకేతికతను ఉపయోగించే వ్యాపార అనువర్తనాలను ఆలోచించండి. ఇది ఎలా తప్పు కావచ్చు అనేది గురించి ఆలోచించండి. [Azure Text Analysis](https://docs.microsoft.com/azure/cognitive-services/Text-Analytics/how-tos/text-analytics-how-to-sentiment-analysis?tabs=version-3-1?WT.mc_id=academic-77952-leestott) వంటి భావోద్వేగాన్ని విశ్లేషించే సున్నితమైన ఎంటర్ప్రైజ్-సిద్ధమైన వ్యవస్థల గురించి మరింత చదవండి. పై ప్రైడ్ అండ్ ప్రెజుడిస్ వాక్యాలను కొంత పరీక్షించి, ఇది సూక్ష్మతను గుర్తించగలదా చూడండి. + +## అసైన్‌మెంట్ + +[Poetic license](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/3-Translation-Sentiment/assignment.md b/translations/te/6-NLP/3-Translation-Sentiment/assignment.md new file mode 100644 index 000000000..e2584d56e --- /dev/null +++ b/translations/te/6-NLP/3-Translation-Sentiment/assignment.md @@ -0,0 +1,27 @@ + +# కవిత్వ అనుమతి + +## సూచనలు + +[ఈ నోట్‌బుక్](https://www.kaggle.com/jenlooper/emily-dickinson-word-frequency)లో మీరు 500కి పైగా ఎమిలీ డికిన్సన్ కవితలను కనుగొనవచ్చు, ఇవి ముందుగా Azure టెక్స్ట్ అనలిటిక్స్ ఉపయోగించి భావ విశ్లేషణకు అన్వయించబడ్డాయి. ఈ డేటాసెట్‌ను ఉపయోగించి, పాఠంలో వివరించిన సాంకేతికతలను ఉపయోగించి విశ్లేషించండి. ఒక కవిత యొక్క సూచించిన భావం Azure సేవ యొక్క మరింత సున్నితమైన నిర్ణయంతో సరిపోతుందా? మీ అభిప్రాయంలో ఎందుకు లేదా ఎందుకు కాదు? ఏదైనా ఆశ్చర్యం కలిగిస్తుందా? + +## రూబ్రిక్ + +| ప్రమాణాలు | అద్భుతమైన | సరిపడిన | మెరుగుదల అవసరం | +| -------- | -------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------ | +| | రచయిత యొక్క నమూనా అవుట్‌పుట్‌పై బలమైన విశ్లేషణతో ఒక నోట్‌బుక్ అందించబడింది | నోట్‌బుక్ అసంపూర్ణంగా ఉంది లేదా విశ్లేషణ చేయదు | ఎలాంటి నోట్‌బుక్ అందించబడలేదు | + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలో ఉన్నది అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/te/6-NLP/3-Translation-Sentiment/solution/Julia/README.md b/translations/te/6-NLP/3-Translation-Sentiment/solution/Julia/README.md new file mode 100644 index 000000000..2cf89a9d2 --- /dev/null +++ b/translations/te/6-NLP/3-Translation-Sentiment/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/3-Translation-Sentiment/solution/R/README.md b/translations/te/6-NLP/3-Translation-Sentiment/solution/R/README.md new file mode 100644 index 000000000..ea0d8c3ba --- /dev/null +++ b/translations/te/6-NLP/3-Translation-Sentiment/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/3-Translation-Sentiment/solution/notebook.ipynb b/translations/te/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb new file mode 100644 index 000000000..b59fe2f7e --- /dev/null +++ b/translations/te/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb @@ -0,0 +1,100 @@ +{ + "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": "27de2abc0235ebd22080fc8f1107454d", + "translation_date": "2025-12-19T16:49:12+00:00", + "source_file": "6-NLP/3-Translation-Sentiment/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from textblob import TextBlob\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# You should download the book text, clean it, and import it here\n", + "with open(\"pride.txt\", encoding=\"utf8\") as f:\n", + " file_contents = f.read()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "book_pride = TextBlob(file_contents)\n", + "positive_sentiment_sentences = []\n", + "negative_sentiment_sentences = []" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for sentence in book_pride.sentences:\n", + " if sentence.sentiment.polarity == 1:\n", + " positive_sentiment_sentences.append(sentence)\n", + " if sentence.sentiment.polarity == -1:\n", + " negative_sentiment_sentences.append(sentence)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"The \" + str(len(positive_sentiment_sentences)) + \" most positive sentences:\")\n", + "for sentence in positive_sentiment_sentences:\n", + " print(\"+ \" + str(sentence.replace(\"\\n\", \"\").replace(\" \", \" \")))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"The \" + str(len(negative_sentiment_sentences)) + \" most negative sentences:\")\n", + "for sentence in negative_sentiment_sentences:\n", + " print(\"- \" + str(sentence.replace(\"\\n\", \"\").replace(\" \", \" \")))" + ] + }, + { + "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/4-Hotel-Reviews-1/README.md b/translations/te/6-NLP/4-Hotel-Reviews-1/README.md new file mode 100644 index 000000000..b36b9d1aa --- /dev/null +++ b/translations/te/6-NLP/4-Hotel-Reviews-1/README.md @@ -0,0 +1,419 @@ + +# హోటల్ సమీక్షలతో భావ విశ్లేషణ - డేటాను ప్రాసెస్ చేయడం + +ఈ విభాగంలో మీరు గత పాఠాలలోని సాంకేతికతలను ఉపయోగించి పెద్ద డేటాసెట్ యొక్క అన్వేషణాత్మక డేటా విశ్లేషణ చేయబోతున్నారు. వివిధ కాలమ్స్ యొక్క ఉపయోగకరతను బాగా అర్థం చేసుకున్న తర్వాత, మీరు నేర్చుకుంటారు: + +- అవసరం లేని కాలమ్స్‌ను ఎలా తొలగించాలి +- ఉన్న కాలమ్స్ ఆధారంగా కొత్త డేటాను ఎలా లెక్కించాలి +- తుది సవాలు కోసం ఫలిత డేటాసెట్‌ను ఎలా సేవ్ చేయాలి + +## [పూర్వ-పాఠం క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +### పరిచయం + +ఇప్పటివరకు మీరు నేర్చుకున్నది ఏమిటంటే, టెక్స్ట్ డేటా సంఖ్యాత్మక డేటా రకాలతో చాలా భిన్నంగా ఉంటుంది. అది మనుష్యుడు రాసిన లేదా మాట్లాడిన టెక్స్ట్ అయితే, దానిని నమూనాలు మరియు తరచుదలలు, భావం మరియు అర్థం కనుగొనడానికి విశ్లేషించవచ్చు. ఈ పాఠం మీకు ఒక నిజమైన డేటా సెట్ మరియు నిజమైన సవాలు తీసుకువస్తుంది: **[యూరోప్‌లో 515K హోటల్ సమీక్షల డేటా](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)** మరియు ఇందులో [CC0: పబ్లిక్ డొమైన్ లైసెన్స్](https://creativecommons.org/publicdomain/zero/1.0/) ఉంది. ఇది Booking.com నుండి పబ్లిక్ మూలాల నుండి స్క్రాప్ చేయబడింది. డేటాసెట్ సృష్టికర్త జియాషెన్ లియు. + +### సిద్ధం కావడం + +మీకు అవసరం: + +* Python 3 ఉపయోగించి .ipynb నోట్బుక్స్ నడపగల సామర్థ్యం +* pandas +* NLTK, [దాన్ని మీరు స్థానికంగా ఇన్‌స్టాల్ చేయాలి](https://www.nltk.org/install.html) +* Kaggleలో అందుబాటులో ఉన్న డేటాసెట్ [515K హోటల్ సమీక్షల డేటా యూరోప్‌లో](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe). ఇది అన్‌జిప్ చేసినప్పుడు సుమారు 230 MB ఉంటుంది. దీన్ని ఈ NLP పాఠాలతో సంబంధం ఉన్న రూట్ `/data` ఫోల్డర్‌లో డౌన్లోడ్ చేయండి. + +## అన్వేషణాత్మక డేటా విశ్లేషణ + +ఈ సవాలు మీరు భావ విశ్లేషణ మరియు అతిథి సమీక్ష స్కోర్లను ఉపయోగించి హోటల్ సిఫార్సు బాట్‌ను నిర్మిస్తున్నారని అనుకుంటుంది. మీరు ఉపయోగించబోయే డేటాసెట్‌లో 6 నగరాలలో 1493 విభిన్న హోటల్స్ యొక్క సమీక్షలు ఉన్నాయి. + +Python, హోటల్ సమీక్షల డేటాసెట్ మరియు NLTK భావ విశ్లేషణ ఉపయోగించి మీరు తెలుసుకోవచ్చు: + +* సమీక్షలలో అత్యంత తరచుగా ఉపయోగించే పదాలు మరియు పదబంధాలు ఏమిటి? +* హోటల్‌ను వివరిస్తున్న అధికారిక *ట్యాగ్లు* సమీక్ష స్కోర్లతో సంబంధం ఉందా (ఉదా: ఒక హోటల్‌కు *యువ పిల్లలతో కుటుంబం* కోసం మరింత నెగటివ్ సమీక్షలు ఉంటాయా, *సోలో ప్రయాణికుడు* కంటే, ఇది *సోలో ప్రయాణికులకు* మంచిదని సూచించవచ్చా?) +* NLTK భావ స్కోర్లు హోటల్ సమీక్షకుల సంఖ్యాత్మక స్కోర్‌తో 'అంగీకరిస్తాయా'? + +#### డేటాసెట్ + +మీరు డౌన్లోడ్ చేసి స్థానికంగా సేవ్ చేసిన డేటాసెట్‌ను అన్వేషిద్దాం. ఫైల్‌ను VS కోడ్ లేదా Excel వంటి ఎడిటర్‌లో తెరవండి. + +డేటాసెట్‌లో హెడర్లు ఈ విధంగా ఉన్నాయి: + +*Hotel_Address, Additional_Number_of_Scoring, Review_Date, Average_Score, Hotel_Name, Reviewer_Nationality, Negative_Review, Review_Total_Negative_Word_Counts, Total_Number_of_Reviews, Positive_Review, Review_Total_Positive_Word_Counts, Total_Number_of_Reviews_Reviewer_Has_Given, Reviewer_Score, Tags, days_since_review, lat, lng* + +ఇవి పరిశీలించడానికి సులభంగా ఉండే విధంగా ఈ క్రింది విధంగా వర్గీకరించబడ్డాయి: +##### హోటల్ కాలమ్స్ + +* `Hotel_Name`, `Hotel_Address`, `lat` (అక్షాంశం), `lng` (రేఖాంశం) + * *lat* మరియు *lng* ఉపయోగించి Pythonతో హోటల్ స్థానాలను చూపించే మ్యాప్‌ను ప్లాట్ చేయవచ్చు (నెగటివ్ మరియు పాజిటివ్ సమీక్షలకు వర్ణం కోడ్ చేయవచ్చు) + * Hotel_Address మనకు స్పష్టంగా ఉపయోగకరం కాదు, మరియు సులభంగా వర్గీకరించడానికి & శోధించడానికి దీన్ని దేశంతో మార్చవచ్చు + +**హోటల్ మెటా-సమీక్ష కాలమ్స్** + +* `Average_Score` + * డేటాసెట్ సృష్టికర్త ప్రకారం, ఈ కాలమ్ *గత సంవత్సరం చివరి వ్యాఖ్య ఆధారంగా హోటల్ యొక్క సగటు స్కోర్* ను సూచిస్తుంది. ఇది స్కోర్ లెక్కించే అసాధారణ విధానం అనిపిస్తుంది, కానీ ఇది స్క్రాప్ చేసిన డేటా కాబట్టి ప్రస్తుతానికి దీన్ని నిజంగా తీసుకోవచ్చు. + + ✅ ఈ డేటాలోని ఇతర కాలమ్స్ ఆధారంగా, సగటు స్కోర్ లెక్కించే మరో మార్గం మీకు ఏమైనా ఆలోచన ఉందా? + +* `Total_Number_of_Reviews` + * ఈ హోటల్ అందుకున్న సమీక్షల మొత్తం సంఖ్య - ఇది డేటాసెట్‌లోని సమీక్షలకు సంబంధించినదో లేదో (కొడితే కోడ్ రాయకుండా) స్పష్టంగా లేదు. +* `Additional_Number_of_Scoring` + * సమీక్షకుడు సమీక్ష రాయకపోయినా సమీక్ష స్కోర్ ఇచ్చిన సందర్భం + +**సమీక్ష కాలమ్స్** + +- `Reviewer_Score` + - ఇది కనీసం 1 దశాంశ స్థానం కలిగిన సంఖ్యాత్మక విలువ, కనిష్టం 2.5 మరియు గరిష్టం 10 మధ్య + - 2.5 కనిష్ట స్కోర్ ఎందుకు అనేది వివరించబడలేదు +- `Negative_Review` + - సమీక్షకుడు ఏమీ రాయకపోతే, ఈ ఫీల్డ్‌లో "**No Negative**" ఉంటుంది + - సమీక్షకుడు నెగటివ్ సమీక్ష కాలమ్‌లో పాజిటివ్ సమీక్ష రాయవచ్చు (ఉదా: "ఈ హోటల్ గురించి ఏదీ చెడు లేదు") +- `Review_Total_Negative_Word_Counts` + - ఎక్కువ నెగటివ్ పదాల సంఖ్య తక్కువ స్కోర్ సూచిస్తుంది (భావాన్ని తనిఖీ చేయకుండా) +- `Positive_Review` + - సమీక్షకుడు ఏమీ రాయకపోతే, ఈ ఫీల్డ్‌లో "**No Positive**" ఉంటుంది + - సమీక్షకుడు పాజిటివ్ సమీక్ష కాలమ్‌లో నెగటివ్ సమీక్ష రాయవచ్చు (ఉదా: "ఈ హోటల్ గురించి ఏదీ మంచిది లేదు") +- `Review_Total_Positive_Word_Counts` + - ఎక్కువ పాజిటివ్ పదాల సంఖ్య ఎక్కువ స్కోర్ సూచిస్తుంది (భావాన్ని తనిఖీ చేయకుండా) +- `Review_Date` మరియు `days_since_review` + - సమీక్షకు తాజాదనం లేదా పాతదనం కొలమానం వర్తించవచ్చు (పాత సమీక్షలు కొత్తవాటికంటే తక్కువ ఖచ్చితంగా ఉండవచ్చు, ఎందుకంటే హోటల్ నిర్వహణ మారింది, మరమ్మతులు జరిగాయి, లేదా స్విమ్మింగ్ పూల్ జోడించబడింది) +- `Tags` + - ఇవి సమీక్షకుడు అతిథి రకం (ఉదా: సోలో లేదా కుటుంబం), గది రకం, ఉండే కాలం మరియు సమీక్ష ఎలా సమర్పించబడిందో వివరించడానికి ఎంచుకునే చిన్న వివరణలు + - దురదృష్టవశాత్తు, ఈ ట్యాగ్లను ఉపయోగించడం సమస్యాత్మకం, వాటి ఉపయోగకరతను చర్చించే క్రింది విభాగాన్ని చూడండి + +**సమీక్షకుడు కాలమ్స్** + +- `Total_Number_of_Reviews_Reviewer_Has_Given` + - ఇది సిఫార్సు మోడల్‌లో ఒక అంశం కావచ్చు, ఉదా: మీరు గుర్తించగలిగితే ఎక్కువ సమీక్షలు ఇచ్చిన సమీక్షకులు ఎక్కువగా నెగటివ్ సమీక్షలు ఇస్తారని. అయితే, ఏ సమీక్షకుడి సమీక్ష అనేది ప్రత్యేక కోడ్‌తో గుర్తించబడలేదు, కాబట్టి సమీక్షల సమూహంతో లింక్ చేయలేము. 100 లేదా అంతకంటే ఎక్కువ సమీక్షలు ఇచ్చిన 30 సమీక్షకులు ఉన్నారు, కానీ ఇది సిఫార్సు మోడల్‌కు ఎలా సహాయపడుతుందో అర్థం కావడం కష్టం. +- `Reviewer_Nationality` + - కొంతమంది భావిస్తారు కొన్ని జాతులు పాజిటివ్ లేదా నెగటివ్ సమీక్ష ఇవ్వడానికి ఎక్కువ అవకాశం ఉంటుందని. అలాంటి అనుభవాల ఆధారంగా మోడల్స్‌లో జాతి ఆధారిత అభిప్రాయాలు చేర్చడంలో జాగ్రత్త వహించండి. ఇవి జాతీయ (మరియు కొన్నిసార్లు జాతి) సాంప్రదాయాలు, ప్రతి సమీక్షకుడు తన అనుభవం ఆధారంగా సమీక్ష రాశాడు. ఇది వారి గత హోటల్ stays, ప్రయాణ దూరం, వ్యక్తిగత స్వభావం వంటి అనేక దృక్కోణాల ద్వారా ఫిల్టర్ అయి ఉండవచ్చు. వారి జాతి సమీక్ష స్కోర్‌కు కారణమని భావించడం కష్టం. + +##### ఉదాహరణలు + +| సగటు స్కోర్ | మొత్తం సమీక్షల సంఖ్య | సమీక్షకుడి స్కోర్ | నెగటివ్
సమీక్ష | పాజిటివ్ సమీక్ష | ట్యాగ్లు | +| -------------- | ---------------------- | ---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- | +| 7.8 | 1945 | 2.5 | ఇది ప్రస్తుతం హోటల్ కాదు, కానీ నిర్మాణ స్థలం. నేను ఉదయం మొదలుకొని మొత్తం రోజంతా అంగీకారయోగ్యమైన నిర్మాణ శబ్దంతో భయపడ్డాను, దీర్ఘ ప్రయాణం తర్వాత విశ్రాంతి తీసుకుంటూ గదిలో పని చేస్తున్నాను. పక్క గదుల్లో జాక్‌హ్యామర్లు ఉపయోగించి రోజంతా పని జరిగింది. గది మార్చాలని అడిగాను కానీ నిశ్శబ్ద గది అందుబాటులో లేదు. మరింత చెడుగా, నాకు అధిక చార్జ్ చేశారు. నేను సాయంత్రం చెక్ అవుట్ అయ్యాను ఎందుకంటే నాకు చాలా తొందరగా విమానం ఉండేది మరియు సరైన బిల్ అందుకున్నాను. ఒక రోజు తర్వాత హోటల్ నా అనుమతి లేకుండా బుక్ చేసిన ధర కంటే ఎక్కువ చార్జ్ చేసింది. ఇది భయంకరమైన స్థలం. ఇక్కడ బుక్ చేయడం ద్వారా మీకు శిక్ష వేయకండి | ఏమీ లేదు భయంకరమైన స్థలం దూరంగా ఉండండి | వ్యాపార ప్రయాణం జంట స్టాండర్డ్ డబుల్ గది 2 రాత్రులు ఉండటం | + +మీరు చూడగలిగినట్లుగా, ఈ అతిథి ఈ హోటల్‌లో సంతోషంగా ఉండలేదు. హోటల్‌కు మంచి సగటు స్కోర్ 7.8 మరియు 1945 సమీక్షలు ఉన్నాయి, కానీ ఈ సమీక్షకుడు 2.5 ఇచ్చి తన అనుభవం ఎంత నెగటివ్ అనేదాన్ని 115 పదాలతో వర్ణించాడు. వారు Positive_Review కాలమ్‌లో ఏమీ రాయకపోతే, మీరు పాజిటివ్ ఏమీ లేదని ఊహించవచ్చు, కానీ వారు 7 పదాల హెచ్చరిక రాశారు. మనం పదాలను మాత్రమే లెక్కిస్తే లేదా పదాల భావాన్ని పరిగణించకపోతే, సమీక్షకుడి ఉద్దేశం తప్పుడు అర్థం కావచ్చు. ఆశ్చర్యకరం గా, వారి స్కోర్ 2.5 గందరగోళంగా ఉంది, ఎందుకంటే ఆ హోటల్ stay అంత చెడుగా ఉంటే, ఎందుకు ఏదైనా పాయింట్లు ఇస్తారు? డేటాసెట్‌ను సన్నిహితంగా పరిశీలిస్తే, కనీస స్కోర్ 2.5, 0 కాదు. గరిష్ట స్కోర్ 10. + +##### ట్యాగ్లు + +పైన చెప్పినట్లుగా, మొదట చూపులో, `Tags` ఉపయోగించి డేటాను వర్గీకరించడం అర్థం చేసుకోవచ్చు. దురదృష్టవశాత్తు, ఈ ట్యాగ్లు ప్రమాణీకరించబడలేదు, అంటే ఒక హోటల్‌లో ఎంపికలు *సింగిల్ రూమ్*, *ట్విన్ రూమ్*, మరియు *డబుల్ రూమ్* ఉండవచ్చు, కానీ తదుపరి హోటల్‌లో అవి *డీలక్స్ సింగిల్ రూమ్*, *క్లాసిక్ క్వీన్ రూమ్*, మరియు *ఎగ్జిక్యూటివ్ కింగ్ రూమ్* ఉంటాయి. ఇవి ఒకే విషయాలు కావచ్చు, కానీ ఎన్నో వేరియేషన్లు ఉండటం వల్ల ఎంపిక: + +1. అన్ని పదాలను ఒకే ప్రమాణానికి మార్చడానికి ప్రయత్నించడం, ఇది చాలా కష్టం, ఎందుకంటే ప్రతి సందర్భంలో మార్పు మార్గం స్పష్టంగా లేదు (ఉదా: *క్లాసిక్ సింగిల్ రూమ్* అనేది *సింగిల్ రూమ్* కు మ్యాప్ అవుతుంది కానీ *సుపీరియర్ క్వీన్ రూమ్ విత్ కోర్ట్‌యార్డ్ గార్డెన్ లేదా సిటీ వ్యూ* మ్యాప్ చేయడం చాలా కష్టం) + +1. NLP దృష్టికోణం తీసుకుని, ప్రతి హోటల్‌కు వర్తించే *సోలో*, *బిజినెస్ ట్రావెలర్*, లేదా *యువ పిల్లలతో కుటుంబం* వంటి పదాల తరచుదల కొలవడం మరియు దానిని సిఫార్సు లోకి చేర్చడం + +ట్యాగ్లు సాధారణంగా (కానీ ఎప్పుడూ కాదు) ఒకే ఫీల్డ్‌లో 5 నుండి 6 కామాతో విడగొట్టబడిన విలువల జాబితా ఉంటాయి, అవి *ప్రయాణ రకం*, *అతిథుల రకం*, *గది రకం*, *రాత్రుల సంఖ్య*, మరియు *సమీక్ష సమర్పించిన పరికరం రకం* కు సరిపోతాయి. అయితే, కొంతమంది సమీక్షకులు ప్రతి ఫీల్డ్‌ను నింపకపోవచ్చు (ఒకదాన్ని ఖాళీగా వదిలివేయవచ్చు), కాబట్టి విలువలు ఎప్పుడూ ఒకే క్రమంలో ఉండవు. + +ఉదాహరణకు, *గ్రూప్ రకం* తీసుకోండి. `Tags` కాలమ్‌లో ఈ ఫీల్డ్‌లో 1025 ప్రత్యేక అవకాశాలు ఉన్నాయి, దురదృష్టవశాత్తు వాటిలో కొన్నింటి మాత్రమే గ్రూప్‌కు సంబంధించినవి (కొన్ని గది రకానికి సంబంధించినవి). మీరు కుటుంబాన్ని మాత్రమే ఫిల్టర్ చేస్తే, ఫలితాల్లో చాలా *ఫ్యామిలీ రూమ్* రకాలు ఉంటాయి. మీరు *with* పదాన్ని కూడా చేర్చితే, అంటే *Family with* విలువలను లెక్కిస్తే, ఫలితాలు మెరుగ్గా ఉంటాయి, 515,000 ఫలితాల్లో 80,000 కంటే ఎక్కువ "Family with young children" లేదా "Family with older children" పదబంధం కలిగి ఉంటాయి. + +దీని అర్థం ఏమిటంటే, ట్యాగ్స్ కాలమ్ పూర్తిగా ఉపయోగరహితం కాదు, కానీ ఉపయోగకరంగా మార్చడానికి కొంత పని చేయాలి. + +##### సగటు హోటల్ స్కోర్ + +డేటా సెట్‌లో కొన్ని విచిత్రతలు లేదా విరుద్ధతలు ఉన్నాయి, నేను అవి ఏమిటో అర్థం చేసుకోలేకపోతున్నాను, కానీ మీరు మీ మోడల్స్ నిర్మిస్తున్నప్పుడు అవి తెలుసుకోవాలి. మీరు అర్థం చేసుకుంటే, దయచేసి చర్చ విభాగంలో తెలియజేయండి! + +డేటాసెట్‌లో సగటు స్కోర్ మరియు సమీక్షల సంఖ్యకు సంబంధించిన కాలమ్స్: + +1. Hotel_Name +2. Additional_Number_of_Scoring +3. Average_Score +4. Total_Number_of_Reviews +5. Reviewer_Score + +ఈ డేటాసెట్‌లో అత్యధిక సమీక్షలతో ఉన్న హోటల్ *Britannia International Hotel Canary Wharf* 4789 సమీక్షలతో ఉంది. కానీ ఈ హోటల్‌కు సంబంధించిన `Total_Number_of_Reviews` విలువ 9086. మీరు ఊహించవచ్చు సమీక్షలు లేకుండా మరిన్ని స్కోర్లు ఉన్నాయని, కాబట్టి `Additional_Number_of_Scoring` విలువను చేర్చాలి. ఆ విలువు 2682, దీన్ని 4789కి జోడిస్తే 7,471 వస్తుంది, ఇది ఇంకా `Total_Number_of_Reviews` కంటే 1615 తక్కువ. + +`Average_Score` కాలమ్స్ తీసుకుంటే, ఇది డేటాసెట్‌లోని సమీక్షల సగటు అని ఊహించవచ్చు, కానీ Kaggle వివరణ "*గత సంవత్సరం చివరి వ్యాఖ్య ఆధారంగా హోటల్ యొక్క సగటు స్కోర్*" అని ఉంది. ఇది అంత ఉపయోగకరం అనిపించదు, కానీ మేము డేటాసెట్‌లోని సమీక్ష స్కోర్ల ఆధారంగా మా సొంత సగటు లెక్కించవచ్చు. అదే హోటల్ ఉదాహరణగా తీసుకుంటే, సగటు హోటల్ స్కోర్ 7.1 గా ఇవ్వబడింది కానీ లెక్కించిన స్కోర్ (డేటాసెట్‌లోని సగటు సమీక్షకుడి స్కోర్) 6.8. ఇది దగ్గరగా ఉంది, కానీ అదే కాదు, మరియు `Additional_Number_of_Scoring` సమీక్షలలో ఇచ్చిన స్కోర్లు సగటును 7.1కి పెంచినట్టు ఊహించవచ్చు. దురదృష్టవశాత్తు, ఆ అభిప్రాయాన్ని పరీక్షించడానికి లేదా నిరూపించడానికి మార్గం లేకపోవడంతో, `Average_Score`, `Additional_Number_of_Scoring` మరియు `Total_Number_of_Reviews` ను ఆధారంగా లేదా సూచించే డేటా లేకపోతే ఉపయోగించడం లేదా నమ్మకం పెట్టుకోవడం కష్టం. + +మరింత క్లిష్టతకు, రెండవ అత్యధిక సమీక్షలతో ఉన్న హోటల్ లెక్కించిన సగటు స్కోర్ 8.12 మరియు డేటాసెట్ `Average_Score` 8.1. ఇది సరైన స్కోర్ యాదృచ్ఛికమా లేదా మొదటి హోటల్ విరుద్ధతనా? +ఈ హోటల్స్ అవుట్‌లయర్ కావచ్చు అనే అవకాశాన్ని పరిగణనలోకి తీసుకుంటే, మరియు ఎక్కువ భాగం విలువలు సరిపోతాయని (కానీ కొన్ని కారణాల వల్ల సరిపోకపోవచ్చు) మనం డేటాసెట్‌లోని విలువలను అన్వేషించడానికి మరియు విలువల సరైన ఉపయోగం (లేదా ఉపయోగం లేకపోవడం) నిర్ణయించడానికి ఒక చిన్న ప్రోగ్రామ్ రాయబోతున్నాము. + +> 🚨 జాగ్రత్త సూచన +> +> ఈ డేటాసెట్‌తో పని చేస్తున్నప్పుడు మీరు టెక్స్ట్ నుండి ఏదైనా గణన చేయడానికి కోడ్ రాస్తారు, మీరు టెక్స్ట్‌ను స్వయంగా చదవాల్సిన అవసరం లేకుండా. ఇది NLP యొక్క సారాంశం, అర్థం లేదా భావాన్ని మానవుడు చేయకుండా అర్థం చేసుకోవడం. అయితే, మీరు కొన్ని నెగటివ్ సమీక్షలను చదవవచ్చు. నేను మీరు వాటిని చదవకూడదని సూచిస్తాను, ఎందుకంటే మీరు చదవాల్సిన అవసరం లేదు. వాటిలో కొన్ని అర్థరహితమైనవి లేదా సంబంధం లేని నెగటివ్ హోటల్ సమీక్షలు, ఉదాహరణకు "వాతావరణం బాగాలేదు" అనే సమీక్ష, ఇది హోటల్ నియంత్రణలో లేనిది, లేదా ఎవరైనా నియంత్రించలేని విషయం. కానీ కొన్ని సమీక్షలకు నల్ల వైపు కూడా ఉంటుంది. కొన్ని సార్లు నెగటివ్ సమీక్షలు జాతిపితృత్వం, లింగవాదం లేదా వయస్సు ఆధారిత వివక్ష కలిగి ఉంటాయి. ఇది దురదృష్టకరం కానీ ప్రజా వెబ్‌సైట్ నుండి సేకరించిన డేటాసెట్‌లో ఆశించదగిన విషయం. కొన్ని సమీక్షకులు అసహ్యకరమైన, అసౌకర్యకరమైన లేదా బాధాకరమైన సమీక్షలు వదిలిపెడతారు. వాటిని మీరు చదవకుండా కోడ్ భావాన్ని కొలవడం మంచిది. అయితే, ఇలాంటి సమీక్షలు రాయేవారు తక్కువ సంఖ్యలో ఉన్నారు, కానీ ఉన్నారు. + +## వ్యాయామం - డేటా అన్వేషణ +### డేటాను లోడ్ చేయండి + +డేటాను దృష్టిగోచరంగా పరిశీలించడం సరిపోతుంది, ఇప్పుడు మీరు కొంత కోడ్ రాసి కొన్ని సమాధానాలు పొందబోతున్నారు! ఈ విభాగం pandas లైబ్రరీని ఉపయోగిస్తుంది. మీ మొదటి పని CSV డేటాను లోడ్ చేసి చదవగలగడం నిర్ధారించుకోవడం. pandas లైబ్రరీకి వేగవంతమైన CSV లోడర్ ఉంది, ఫలితం ఒక డేటాఫ్రేమ్‌లో ఉంచబడుతుంది, గత పాఠాలలో చేసినట్లుగా. మనం లోడ్ చేస్తున్న CSVలో సగం మించి వరుసలు ఉన్నాయి, కానీ కేవలం 17 కాలమ్స్ మాత్రమే. pandas డేటాఫ్రేమ్‌తో పరస్పరం చర్యలు చేయడానికి అనేక శక్తివంతమైన మార్గాలను అందిస్తుంది, ప్రతి వరుసపై ఆపరేషన్లు చేయగల సామర్థ్యం సహా. + +ఈ పాఠం నుండి, కోడ్ స్నిపెట్లు, కొంత వివరణలు మరియు ఫలితాల అర్థం గురించి చర్చ ఉంటుంది. మీ కోడ్ కోసం చేర్చబడిన _notebook.ipynb_ ఉపయోగించండి. + +మీరు ఉపయోగించబోయే డేటా ఫైల్‌ను లోడ్ చేయడం ప్రారంభిద్దాం: + +```python +# CSV నుండి హోటల్ సమీక్షలను లోడ్ చేయండి +import pandas as pd +import time +# ఫైల్ లోడింగ్ సమయాన్ని లెక్కించడానికి ప్రారంభ మరియు ముగింపు సమయాన్ని ఉపయోగించడానికి టైమ్‌ను దిగుమతి చేసుకుంటోంది +print("Loading data file now, this could take a while depending on file size") +start = time.time() +# df అనేది 'డేటాఫ్రేమ్' - మీరు ఫైల్‌ను డేటా ఫోల్డర్‌కు డౌన్లోడ్ చేసుకున్నారని నిర్ధారించుకోండి +df = pd.read_csv('../../data/Hotel_Reviews.csv') +end = time.time() +print("Loading took " + str(round(end - start, 2)) + " seconds") +``` + +ఇప్పుడు డేటా లోడ్ అయింది, దానిపై కొన్ని ఆపరేషన్లు చేయవచ్చు. ఈ కోడ్‌ను మీ ప్రోగ్రామ్ టాప్‌లో ఉంచండి తదుపరి భాగం కోసం. + +## డేటాను అన్వేషించండి + +ఈ సందర్భంలో, డేటా ఇప్పటికే *శుభ్రంగా* ఉంది, అంటే ఇది పని చేయడానికి సిద్ధంగా ఉంది, మరియు ఇతర భాషల అక్షరాలు లేవు, ఇవి కేవలం ఇంగ్లీష్ అక్షరాలను ఆశించే అల్గోరిథమ్స్‌ను గందరగోళం చేయవచ్చు. + +✅ మీరు కొన్నిసార్లు NLP సాంకేతికతలు వర్తింపజేయడానికి ముందు డేటాను ప్రాథమిక ప్రాసెసింగ్ చేయాల్సి ఉండవచ్చు, కానీ ఈసారి కాదు. మీరు చేయాల్సి ఉంటే, మీరు ఎలా నాన్-ఇంగ్లీష్ అక్షరాలను నిర్వహిస్తారు? + +ఒక క్షణం తీసుకుని డేటా లోడ్ అయిన తర్వాత మీరు కోడ్‌తో దాన్ని అన్వేషించగలరని నిర్ధారించుకోండి. మీరు సాధారణంగా `Negative_Review` మరియు `Positive_Review` కాలమ్స్‌పై దృష్టి పెట్టాలనుకుంటారు. అవి మీ NLP అల్గోరిథమ్స్ ప్రాసెస్ చేయడానికి సహజ టెక్స్ట్‌తో నింపబడ్డాయి. కానీ వేచి ఉండండి! NLP మరియు భావాన్ని ప్రారంభించే ముందు, మీరు క్రింద ఇచ్చిన కోడ్‌ను అనుసరించి డేటాసెట్‌లోని విలువలు మీరు pandas తో లెక్కించిన విలువలకు సరిపోతున్నాయా అని నిర్ధారించుకోండి. + +## డేటాఫ్రేమ్ ఆపరేషన్లు + +ఈ పాఠంలో మొదటి పని డేటాఫ్రేమ్‌ను పరిశీలించి (మార్చకుండా) క్రింది నిర్ధారణలు సరైనవా అని కోడ్ రాయడం. + +> అనేక ప్రోగ్రామింగ్ పనుల్లా, దీన్ని పూర్తి చేయడానికి అనేక మార్గాలు ఉన్నాయి, కానీ మంచి సలహా మీరు తిరిగి ఈ కోడ్‌ను చూడగలిగేటప్పుడు అర్థం చేసుకోవడానికి సులభమైన, సరళమైన మార్గంలో చేయడం. డేటాఫ్రేమ్‌లకు సమగ్ర API ఉంటుంది, ఇది మీరు కోరుకున్న పనిని సమర్థవంతంగా చేయడానికి మార్గం కలిగి ఉంటుంది. + +క్రింది ప్రశ్నలను కోడింగ్ పనులుగా పరిగణించి పరిష్కారం చూడకుండా సమాధానాలు ఇవ్వడానికి ప్రయత్నించండి. + +1. మీరు ఇప్పుడే లోడ్ చేసిన డేటాఫ్రేమ్ యొక్క *ఆకారం* (shape) ను ప్రింట్ చేయండి (ఆకారం అంటే వరుసలు మరియు కాలమ్స్ సంఖ్య) +2. సమీక్షకుల జాతీయతల ఫ్రీక్వెన్సీ కౌంట్ లెక్కించండి: + 1. `Reviewer_Nationality` కాలమ్‌లో ఎన్ని వేర్వేరు విలువలు ఉన్నాయి మరియు అవి ఏమిటి? + 2. డేటాసెట్‌లో అత్యధికంగా కనిపించే సమీక్షకుల జాతీయత ఏది? (దేశం మరియు సమీక్షల సంఖ్య ప్రింట్ చేయండి) + 3. తదుపరి టాప్ 10 అత్యధికంగా కనిపించే జాతీయతలు మరియు వాటి ఫ్రీక్వెన్సీ కౌంట్ ఏమిటి? +3. టాప్ 10 సమీక్షకుల జాతీయతల కోసం అత్యధికంగా సమీక్షించిన హోటల్ ఏది? +4. డేటాసెట్‌లో ప్రతి హోటల్‌కు ఎన్ని సమీక్షలు ఉన్నాయి? (హోటల్ ఫ్రీక్వెన్సీ కౌంట్) +5. డేటాసెట్‌లో ప్రతి హోటల్‌కు `Average_Score` కాలమ్ ఉన్నప్పటికీ, మీరు కూడా సగటు స్కోర్ లెక్కించవచ్చు (ప్రతి హోటల్‌కు డేటాసెట్‌లోని అన్ని సమీక్షకుల స్కోర్ల సగటు). మీ డేటాఫ్రేమ్‌కు `Calc_Average_Score` అనే కొత్త కాలమ్ జోడించండి, ఇందులో లెక్కించిన సగటు ఉంటుంది. +6. ఏ హోటల్స్‌కు (1 దశాంశ స్థాయికి రౌండ్ చేసిన) `Average_Score` మరియు `Calc_Average_Score` ఒకేలా ఉన్నాయా? + 1. ఒక Python ఫంక్షన్ రాయండి, ఇది ఒక Series (ఒక వరుస)ని ఆర్గ్యుమెంట్‌గా తీసుకుని విలువలను పోల్చి, విలువలు సమానంగా లేనప్పుడు సందేశం ప్రింట్ చేస్తుంది. ఆపై `.apply()` మెథడ్ ఉపయోగించి ప్రతి వరుసపై ఆ ఫంక్షన్‌ను అమలు చేయండి. +7. `Negative_Review` కాలమ్‌లో "No Negative" విలువ ఉన్న వరుసల సంఖ్య లెక్కించి ప్రింట్ చేయండి +8. `Positive_Review` కాలమ్‌లో "No Positive" విలువ ఉన్న వరుసల సంఖ్య లెక్కించి ప్రింట్ చేయండి +9. `Positive_Review` కాలమ్‌లో "No Positive" మరియు `Negative_Review` కాలమ్‌లో "No Negative" ఉన్న వరుసల సంఖ్య లెక్కించి ప్రింట్ చేయండి +### కోడ్ సమాధానాలు + +1. మీరు ఇప్పుడే లోడ్ చేసిన డేటాఫ్రేమ్ యొక్క *ఆకారం* (shape) ను ప్రింట్ చేయండి (ఆకారం అంటే వరుసలు మరియు కాలమ్స్ సంఖ్య) + + ```python + print("The shape of the data (rows, cols) is " + str(df.shape)) + > The shape of the data (rows, cols) is (515738, 17) + ``` + +2. సమీక్షకుల జాతీయతల ఫ్రీక్వెన్సీ కౌంట్ లెక్కించండి: + + 1. `Reviewer_Nationality` కాలమ్‌లో ఎన్ని వేర్వేరు విలువలు ఉన్నాయి మరియు అవి ఏమిటి? + 2. డేటాసెట్‌లో అత్యధికంగా కనిపించే సమీక్షకుల జాతీయత ఏది? (దేశం మరియు సమీక్షల సంఖ్య ప్రింట్ చేయండి) + + ```python + # value_counts() ఒక సిరీస్ ఆబ్జెక్ట్‌ను సృష్టిస్తుంది, దీనిలో సూచిక మరియు విలువలు ఉంటాయి, ఈ సందర్భంలో దేశం మరియు వారు సమీక్షకుల జాతి లో కనిపించే సాంఖ్యికత + nationality_freq = df["Reviewer_Nationality"].value_counts() + print("There are " + str(nationality_freq.size) + " different nationalities") + # సిరీస్ యొక్క మొదటి మరియు చివరి వరుసలను ముద్రించండి. అన్ని డేటాను ముద్రించడానికి nationality_freq.to_string() గా మార్చండి + print(nationality_freq) + + There are 227 different nationalities + United Kingdom 245246 + United States of America 35437 + Australia 21686 + Ireland 14827 + United Arab Emirates 10235 + ... + Comoros 1 + Palau 1 + Northern Mariana Islands 1 + Cape Verde 1 + Guinea 1 + Name: Reviewer_Nationality, Length: 227, dtype: int64 + ``` + + 3. తదుపరి టాప్ 10 అత్యధికంగా కనిపించే జాతీయతలు మరియు వాటి ఫ్రీక్వెన్సీ కౌంట్ ఏమిటి? + + ```python + print("The highest frequency reviewer nationality is " + str(nationality_freq.index[0]).strip() + " with " + str(nationality_freq[0]) + " reviews.") + # విలువల ముందు ఒక స్థలం ఉందని గమనించండి, ప్రింటింగ్ కోసం strip() దాన్ని తీసివేస్తుంది + # టాప్ 10 అత్యంత సాధారణ జాతీయతలు మరియు వాటి సాంద్రతలు ఏమిటి? + print("The next 10 highest frequency reviewer nationalities are:") + print(nationality_freq[1:11].to_string()) + + The highest frequency reviewer nationality is United Kingdom with 245246 reviews. + The next 10 highest frequency reviewer nationalities are: + United States of America 35437 + Australia 21686 + Ireland 14827 + United Arab Emirates 10235 + Saudi Arabia 8951 + Netherlands 8772 + Switzerland 8678 + Germany 7941 + Canada 7894 + France 7296 + ``` + +3. టాప్ 10 సమీక్షకుల జాతీయతల కోసం అత్యధికంగా సమీక్షించిన హోటల్ ఏది? + + ```python + # టాప్ 10 జాతీయతల కోసం అత్యధికంగా సమీక్షించిన హోటల్ ఏది + # సాధారణంగా pandas తో మీరు స్పష్టమైన లూప్‌ను నివారిస్తారు, కానీ ప్రమాణాలను ఉపయోగించి కొత్త డేటాఫ్రేమ్ సృష్టించడం చూపించాలనుకున్నాను (పెద్ద మొత్తంలో డేటాతో ఇది చాలా నెమ్మదిగా ఉండవచ్చు కాబట్టి చేయవద్దు) + for nat in nationality_freq[:10].index: + # మొదట, ప్రమాణాలకు సరిపోయే అన్ని వరుసలను కొత్త డేటాఫ్రేమ్‌లో తీసుకోండి + nat_df = df[df["Reviewer_Nationality"] == nat] + # ఇప్పుడు హోటల్ ఫ్రీక్వెన్సీ పొందండి + freq = nat_df["Hotel_Name"].value_counts() + print("The most reviewed hotel for " + str(nat).strip() + " was " + str(freq.index[0]) + " with " + str(freq[0]) + " reviews.") + + The most reviewed hotel for United Kingdom was Britannia International Hotel Canary Wharf with 3833 reviews. + The most reviewed hotel for United States of America was Hotel Esther a with 423 reviews. + The most reviewed hotel for Australia was Park Plaza Westminster Bridge London with 167 reviews. + The most reviewed hotel for Ireland was Copthorne Tara Hotel London Kensington with 239 reviews. + The most reviewed hotel for United Arab Emirates was Millennium Hotel London Knightsbridge with 129 reviews. + The most reviewed hotel for Saudi Arabia was The Cumberland A Guoman Hotel with 142 reviews. + The most reviewed hotel for Netherlands was Jaz Amsterdam with 97 reviews. + The most reviewed hotel for Switzerland was Hotel Da Vinci with 97 reviews. + The most reviewed hotel for Germany was Hotel Da Vinci with 86 reviews. + The most reviewed hotel for Canada was St James Court A Taj Hotel London with 61 reviews. + ``` + +4. డేటాసెట్‌లో ప్రతి హోటల్‌కు ఎన్ని సమీక్షలు ఉన్నాయి? (హోటల్ ఫ్రీక్వెన్సీ కౌంట్) + + ```python + # పాత డేటాఫ్రేమ్ ఆధారంగా కొత్త డేటాఫ్రేమ్‌ను మొదట సృష్టించండి, అవసరం లేని కాలమ్స్‌ను తీసివేయండి + 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) + + # వరుసలను Hotel_Name ద్వారా గ్రూప్ చేసి, వాటిని లెక్కించి ఫలితాన్ని కొత్త కాలమ్ Total_Reviews_Found లో ఉంచండి + hotel_freq_df['Total_Reviews_Found'] = hotel_freq_df.groupby('Hotel_Name').transform('count') + + # అన్ని డూప్లికేట్ వరుసలను తొలగించండి + hotel_freq_df = hotel_freq_df.drop_duplicates(subset = ["Hotel_Name"]) + display(hotel_freq_df) + ``` + | Hotel_Name | Total_Number_of_Reviews | Total_Reviews_Found | + | :----------------------------------------: | :---------------------: | :-----------------: | + | Britannia International Hotel Canary Wharf | 9086 | 4789 | + | Park Plaza Westminster Bridge London | 12158 | 4169 | + | Copthorne Tara Hotel London Kensington | 7105 | 3578 | + | ... | ... | ... | + | Mercure Paris Porte d Orleans | 110 | 10 | + | Hotel Wagner | 135 | 10 | + | Hotel Gallitzinberg | 173 | 8 | + + మీరు గమనించవచ్చు, డేటాసెట్‌లో లెక్కించిన ఫలితాలు `Total_Number_of_Reviews` విలువతో సరిపోలవు. ఈ విలువ హోటల్‌కు ఉన్న మొత్తం సమీక్షల సంఖ్యను సూచించవచ్చు, కానీ అన్ని సమీక్షలు స్క్రాప్ చేయబడలేదు, లేదా మరొక లెక్కింపు. ఈ అస్పష్టత కారణంగా `Total_Number_of_Reviews` మోడల్‌లో ఉపయోగించబడదు. + +5. డేటాసెట్‌లో ప్రతి హోటల్‌కు `Average_Score` కాలమ్ ఉన్నప్పటికీ, మీరు కూడా సగటు స్కోర్ లెక్కించవచ్చు (ప్రతి హోటల్‌కు డేటాసెట్‌లోని అన్ని సమీక్షకుల స్కోర్ల సగటు). మీ డేటాఫ్రేమ్‌కు `Calc_Average_Score` అనే కొత్త కాలమ్ జోడించండి, ఇందులో లెక్కించిన సగటు ఉంటుంది. `Hotel_Name`, `Average_Score`, మరియు `Calc_Average_Score` కాలమ్స్ ప్రింట్ చేయండి. + + ```python + # ఒక వరుసను తీసుకుని దానితో కొన్ని లెక్కింపులు చేసే ఫంక్షన్‌ను నిర్వచించండి + def get_difference_review_avg(row): + return row["Average_Score"] - row["Calc_Average_Score"] + + # 'mean' అనేది 'సగటు' కోసం గణిత పదం + df['Calc_Average_Score'] = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1) + + # రెండు సగటు స్కోర్ల మధ్య తేడాతో కొత్త కాలమ్‌ను జోడించండి + df["Average_Score_Difference"] = df.apply(get_difference_review_avg, axis = 1) + + # Hotel_Name యొక్క అన్ని ప్రతులేని df సృష్టించండి (అంటే ప్రతి హోటల్‌కు ఒక్క వరుస మాత్రమే) + review_scores_df = df.drop_duplicates(subset = ["Hotel_Name"]) + + # తక్కువ మరియు ఎక్కువ సగటు స్కోర్ తేడాను కనుగొనడానికి డేటాఫ్రేమ్‌ను సర్దుబాటు చేయండి + review_scores_df = review_scores_df.sort_values(by=["Average_Score_Difference"]) + + display(review_scores_df[["Average_Score_Difference", "Average_Score", "Calc_Average_Score", "Hotel_Name"]]) + ``` + + మీరు `Average_Score` విలువ గురించి ఆశ్చర్యపోవచ్చు, ఎందుకు అది లెక్కించిన సగటు స్కోర్‌తో కొన్నిసార్లు భిన్నంగా ఉంటుంది. కొన్ని విలువలు సరిపోతున్నాయి, మరికొన్నవి తేడా చూపుతున్నాయి ఎందుకు అనేది మనకు తెలియదు, కాబట్టి మనం కలిగిన సమీక్ష స్కోర్లను ఉపయోగించి సగటు స్వయంగా లెక్కించడం ఉత్తమం. అయితే, తేడాలు సాధారణంగా చాలా చిన్నవే, ఇక్కడ డేటాసెట్ సగటు మరియు లెక్కించిన సగటు మధ్య అత్యధిక తేడా ఉన్న హోటల్స్ ఉన్నాయి: + + | Average_Score_Difference | Average_Score | Calc_Average_Score | Hotel_Name | + | :----------------------: | :-----------: | :----------------: | ------------------------------------------: | + | -0.8 | 7.7 | 8.5 | Best Western Hotel Astoria | + | -0.7 | 8.8 | 9.5 | Hotel Stendhal Place Vend me Paris MGallery | + | -0.7 | 7.5 | 8.2 | Mercure Paris Porte d Orleans | + | -0.7 | 7.9 | 8.6 | Renaissance Paris Vendome Hotel | + | -0.5 | 7.0 | 7.5 | Hotel Royal Elys es | + | ... | ... | ... | ... | + | 0.7 | 7.5 | 6.8 | Mercure Paris Op ra Faubourg Montmartre | + | 0.8 | 7.1 | 6.3 | Holiday Inn Paris Montparnasse Pasteur | + | 0.9 | 6.8 | 5.9 | Villa Eugenie | + | 0.9 | 8.6 | 7.7 | MARQUIS Faubourg St Honor Relais Ch teaux | + | 1.3 | 7.2 | 5.9 | Kube Hotel Ice Bar | + + ఒకే హోటల్‌కు 1 కంటే ఎక్కువ తేడా ఉన్నందున, తేడాను పట్టించుకోకుండా లెక్కించిన సగటు స్కోర్‌ను ఉపయోగించడం మంచిది. + +6. `Negative_Review` కాలమ్‌లో "No Negative" విలువ ఉన్న వరుసల సంఖ్య లెక్కించి ప్రింట్ చేయండి + +7. `Positive_Review` కాలమ్‌లో "No Positive" విలువ ఉన్న వరుసల సంఖ్య లెక్కించి ప్రింట్ చేయండి + +8. `Positive_Review` కాలమ్‌లో "No Positive" మరియు `Negative_Review` కాలమ్‌లో "No Negative" ఉన్న వరుసల సంఖ్య లెక్కించి ప్రింట్ చేయండి + + ```python + # లాంబ్డాలతో: + start = time.time() + no_negative_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" else False , axis=1) + print("Number of No Negative reviews: " + str(len(no_negative_reviews[no_negative_reviews == True].index))) + + no_positive_reviews = df.apply(lambda x: True if x['Positive_Review'] == "No Positive" else False , axis=1) + print("Number of No Positive reviews: " + str(len(no_positive_reviews[no_positive_reviews == True].index))) + + both_no_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" and x['Positive_Review'] == "No Positive" else False , axis=1) + print("Number of both No Negative and No Positive reviews: " + str(len(both_no_reviews[both_no_reviews == True].index))) + end = time.time() + print("Lambdas took " + str(round(end - start, 2)) + " seconds") + + Number of No Negative reviews: 127890 + Number of No Positive reviews: 35946 + Number of both No Negative and No Positive reviews: 127 + Lambdas took 9.64 seconds + ``` + +## మరో విధానం + +లాంబ్డా లేకుండా అంశాలను లెక్కించడానికి మరియు వరుసలను లెక్కించడానికి సం(మొత్తం) ఉపయోగించండి: + + ```python + # లాంబ్డాలు లేకుండా (మీకు రెండింటినీ ఉపయోగించవచ్చని చూపించడానికి వివిధ సూచనల మిశ్రమాన్ని ఉపయోగించడం) + start = time.time() + no_negative_reviews = sum(df.Negative_Review == "No Negative") + print("Number of No Negative reviews: " + str(no_negative_reviews)) + + no_positive_reviews = sum(df["Positive_Review"] == "No Positive") + print("Number of No Positive reviews: " + str(no_positive_reviews)) + + both_no_reviews = sum((df.Negative_Review == "No Negative") & (df.Positive_Review == "No Positive")) + print("Number of both No Negative and No Positive reviews: " + str(both_no_reviews)) + + end = time.time() + print("Sum took " + str(round(end - start, 2)) + " seconds") + + Number of No Negative reviews: 127890 + Number of No Positive reviews: 35946 + Number of both No Negative and No Positive reviews: 127 + Sum took 0.19 seconds + ``` + + మీరు గమనించవచ్చు, `Negative_Review` మరియు `Positive_Review` కాలమ్స్‌లో వరుసలు 127 ఉన్నాయి, వీటిలో "No Negative" మరియు "No Positive" విలువలు ఉన్నాయి. అంటే సమీక్షకుడు హోటల్‌కు సంఖ్యాత్మక స్కోర్ ఇచ్చారు, కానీ పాజిటివ్ లేదా నెగటివ్ సమీక్ష రాయలేదు. అదృష్టవశాత్తు ఇది చాలా తక్కువ వరుసలు (515738లో 127, అంటే 0.02%), కాబట్టి ఇది మన మోడల్ లేదా ఫలితాలను ఏ దిశలోనూ ప్రభావితం చేయదు. కానీ సమీక్షల డేటాసెట్‌లో సమీక్షలు లేకపోవడం ఆశ్చర్యకరం, కాబట్టి ఇలాంటి వరుసలను కనుగొనడం విలువైనది. + +ఇప్పుడు మీరు డేటాసెట్‌ను అన్వేషించారు, తదుపరి పాఠంలో మీరు డేటాను ఫిల్టర్ చేసి భావ విశ్లేషణ జోడిస్తారు. + +--- +## 🚀సవాలు + +ఈ పాఠం, గత పాఠాలలో చూచినట్లుగా, మీ డేటాను మరియు దాని లోపాలను అర్థం చేసుకోవడం ఎంత ముఖ్యమో చూపిస్తుంది. ప్రత్యేకంగా టెక్స్ట్ ఆధారిత డేటా జాగ్రత్తగా పరిశీలించాలి. వివిధ టెక్స్ట్-భారీ డేటాసెట్‌లను పరిశీలించి, మోడల్‌లో పక్షపాతం లేదా త్రుటి భావాన్ని కలిగించే ప్రాంతాలను కనుగొనగలరా చూడండి. + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +[ఈ NLP లెర్నింగ్ పాత్](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) తీసుకోండి, స్పీచ్ మరియు టెక్స్ట్-భారీ మోడల్స్ నిర్మించేటప్పుడు ప్రయత్నించవలసిన టూల్స్ తెలుసుకోండి. + +## అసైన్‌మెంట్ + +[NLTK](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/4-Hotel-Reviews-1/assignment.md b/translations/te/6-NLP/4-Hotel-Reviews-1/assignment.md new file mode 100644 index 000000000..6cfbc6ffd --- /dev/null +++ b/translations/te/6-NLP/4-Hotel-Reviews-1/assignment.md @@ -0,0 +1,21 @@ + +# NLTK + +## సూచనలు + +NLTK అనేది కంప్యూటేషనల్ లింగ్విస్టిక్స్ మరియు NLP లో ఉపయోగించే ప్రసిద్ధ లైబ్రరీ. ఈ అవకాశాన్ని ఉపయోగించి '[NLTK పుస్తకం](https://www.nltk.org/book/)' ను చదవండి మరియు దాని వ్యాయామాలను ప్రయత్నించండి. ఈ అగ్రేడ్ కాని అసైన్‌మెంట్‌లో, మీరు ఈ లైబ్రరీని మరింత లోతుగా తెలుసుకోగలుగుతారు. + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని 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/notebook.ipynb b/translations/te/6-NLP/4-Hotel-Reviews-1/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/te/6-NLP/4-Hotel-Reviews-1/solution/Julia/README.md b/translations/te/6-NLP/4-Hotel-Reviews-1/solution/Julia/README.md new file mode 100644 index 000000000..4745cbd58 --- /dev/null +++ b/translations/te/6-NLP/4-Hotel-Reviews-1/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/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లో ప్రచురించబడిన ఎలిజబెత్ బెన్నెట్ మరియు మిస్టర్ డార్సీతో చర్చిస్తూ కాలంలో వెనక్కి ప్రయాణిస్తారు. ఆ తర్వాత, మీరు యూరోపియన్ హోటల్ సమీక్షల ద్వారా భావ విశ్లేషణ గురించి మరింత తెలుసుకుంటారు. + +![Pride and Prejudice book and tea](../../../translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.te.jpg) +> ఫోటో ఎలైన్ హౌలిన్ ద్వారా అన్స్ప్లాష్లో + +## పాఠాలు + +1. [సహజ భాషా ప్రాసెసింగ్ పరిచయం](1-Introduction-to-NLP/README.md) +2. [సాధారణ NLP పనులు మరియు సాంకేతికతలు](2-Tasks/README.md) +3. [యంత్ర అభ్యాసంతో అనువాదం మరియు భావ విశ్లేషణ](3-Translation-Sentiment/README.md) +4. [మీ డేటాను సిద్ధం చేయడం](4-Hotel-Reviews-1/README.md) +5. [భావ విశ్లేషణ కోసం NLTK](5-Hotel-Reviews-2/README.md) + +## క్రెడిట్స్ + +ఈ సహజ భాషా ప్రాసెసింగ్ పాఠాలు ☕ తో రాసినవి [స్టీఫెన్ హౌల్](https://twitter.com/Howell_MSFT) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని 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 @@ + +# టైమ్ సిరీస్ ఫోర్కాస్టింగ్ పరిచయం + +![స్కెచ్ నోట్‌లో టైమ్ సిరీస్ సారాంశం](../../../../translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.te.png) + +> స్కెచ్ నోట్ [Tomomi Imura](https://www.twitter.com/girlie_mac) ద్వారా + +ఈ పాఠంలో మరియు తదుపరి పాఠంలో, మీరు టైమ్ సిరీస్ ఫోర్కాస్టింగ్ గురించి కొంత తెలుసుకుంటారు, ఇది ఒక ఆసక్తికరమైన మరియు విలువైన భాగం, ఇది ఇతర విషయాల కంటే కొంత తక్కువగా తెలిసినది. టైమ్ సిరీస్ ఫోర్కాస్టింగ్ అనేది ఒక రకమైన 'క్రిస్టల్ బాల్': ధర వంటి ఒక వేరియబుల్ గత ప్రదర్శన ఆధారంగా, మీరు దాని భవిష్యత్తు సామర్థ్య విలువను అంచనా వేయవచ్చు. + +[![టైమ్ సిరీస్ ఫోర్కాస్టింగ్ పరిచయం](https://img.youtube.com/vi/cBojo1hsHiI/0.jpg)](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), ఇది కొన్ని సంవత్సరాల పాటు రోజువారీ గేమ్ కరెన్సీ ఖర్చును చూపిస్తుంది. మీరు పై పేర్కొన్న లక్షణాలలో ఏవైనా ఈ డేటాలో గుర్తించగలరా? + +![ఇన్-గేమ్ కరెన్సీ ఖర్చు](../../../../translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.te.png) + +## వ్యాయామం - విద్యుత్ వినియోగ డేటాతో ప్రారంభం + +గత వినియోగం ఆధారంగా భవిష్యత్తు విద్యుత్ వినియోగాన్ని అంచనా వేయడానికి టైమ్ సిరీస్ నమూనాను సృష్టించడం ప్రారంభిద్దాం. + +> ఈ ఉదాహరణలో డేటా 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() + ``` + + ![energy plot](../../../../translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.te.png) + +4. ఇప్పుడు, 2014 జూలై మొదటి వారాన్ని `[from date]: [to date]` నమూనాలో `energy`కి ఇన్‌పుట్‌గా అందించి ప్లాట్ చేయండి: + + ```python + energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![july](../../../../translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.te.png) + + ఒక అందమైన ప్లాట్! ఈ ప్లాట్లను పరిశీలించి పై పేర్కొన్న లక్షణాలలో ఏవైనా మీరు గుర్తించగలరా? డేటాను దృశ్యీకరించడం ద్వారా మనం ఏమి అర్థం చేసుకోవచ్చు? + +తదుపరి పాఠంలో, మీరు ARIMA నమూనాను సృష్టించి కొన్ని ఫోర్కాస్ట్‌లు తయారు చేస్తారు. + +--- + +## 🚀సవాలు + +టైమ్ సిరీస్ ఫోర్కాస్టింగ్ నుండి లాభపడే అన్ని పరిశ్రమలు మరియు పరిశోధనా రంగాల జాబితాను తయారు చేయండి. ఈ సాంకేతికతలను కళల్లో, ఆర్థిక శాస్త్రంలో, పర్యావరణ శాస్త్రంలో, రిటైల్, పరిశ్రమ, ఆర్థిక రంగాలలో ఎలా ఉపయోగించవచ్చో మీరు ఆలోచించగలరా? మరెక్కడ? + +## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +ఇక్కడ మనం చర్చించకపోయినా, న్యూరల్ నెట్‌వర్క్స్ కొన్నిసార్లు టైమ్ సిరీస్ ఫోర్కాస్టింగ్ యొక్క క్లాసిక్ పద్ధతులను మెరుగుపరచడానికి ఉపయోగిస్తారు. వాటి గురించి [ఈ వ్యాసంలో](https://medium.com/microsoftazure/neural-networks-for-forecasting-financial-and-economic-time-series-6aca370ff412) మరింత చదవండి + +## అసైన్‌మెంట్ + +[మరిన్ని టైమ్ సిరీస్‌లను దృశ్యీకరించండి](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని 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": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
load
2012-01-01 00:00:002698.0
2012-01-01 01:00:002558.0
2012-01-01 02:00:002444.0
2012-01-01 03:00:002402.0
2012-01-01 04:00:002403.0
\n
" + }, + "metadata": {}, + "execution_count": 7 + } + ], + "source": [ + "data_dir = './data'\n", + "energy = load_data(data_dir)[['load']]\n", + "energy.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "అందుబాటులో ఉన్న అన్ని లోడ్ డేటాను (జనవరి 2012 నుండి డిసెంబర్ 2014 వరకు) ప్లాట్ చేయండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2014 జూలై మొదటి వారం ప్లాట్ చేయండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAHiCAYAAABFgonlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXhb5ZU/8O+r3bYkO7bl3YljZ3dCnJBASCCQFkqBgUDpBrRMZ6YLMJ2l26/TTjtDmelMp09nOtNOaUt31tKFtRToQAkpSUhIiJPY2Z14X+VFkiVL1vL+/pBkjHESL5Ku7r3fz/P4IbF07z1Gsa1z3/OeI6SUICIiIiIiIgIAg9IBEBERERERUfZgkkhEREREREQTmCQSERERERHRBCaJRERERERENIFJIhEREREREU1gkkhEREREREQTTEoHoITi4mJZU1OjdBhERERERESKOHDggFtK6ZruMV0miTU1Ndi/f7/SYRARERERESlCCNF2rsdYbkpEREREREQTmCQSERERERHRBCaJRERERERENEGXexKJiIiIiIgAIBwOo7OzE8FgUOlQ0sJms6Gqqgpms3nGxzBJJCIiIiIi3ers7ITD4UBNTQ2EEEqHk1JSSgwODqKzsxOLFy+e8XEsNyUiIiIiIt0KBoMoKirSXIIIAEIIFBUVzXqVlEkiERERERHpmhYTxKS5fG1MEomIiIiIiBRkt9tTcp57770X3/rWt+Z9HiaJRERERERENIFJIhERERERURaQUuILX/gCVq9ejTVr1uDxxx8HAIyOjuLd73431q9fjzVr1uDpp5+eOObrX/86li1bhssvvxwnTpxISRzsbkpERERERATga88242i3N6XnXFXhxD/fWD+j5z7xxBNobGzEoUOH4Ha7sXHjRmzduhUulwtPPvkknE4n3G43Nm3ahJtuuglvvvkmfvnLX6KxsRGRSATr16/HxRdfPO+YuZJIRERERESUBV577TXcdtttMBqNKC0txZVXXok33ngDUkp8+ctfxkUXXYSrr74aXV1d6Ovrw5/+9CfccsstyM3NhdPpxE033ZSSOLiSSEREREREBMx4xS/THnnkEQwMDODAgQMwm82oqamZ9ViL2eBKIhERERERURa44oor8PjjjyMajWJgYAA7d+7EJZdcAo/Hg5KSEpjNZrzy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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "kernel_info": { + "name": "python3" + }, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "dddca9ad9e34435494e0933c218e1579", + "translation_date": "2025-12-19T17: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 తో టైమ్ సిరీస్ ఫోర్కాస్టింగ్ + +మునుపటి పాఠంలో, మీరు టైమ్ సిరీస్ ఫోర్కాస్టింగ్ గురించి కొంత తెలుసుకున్నారు మరియు ఒక డేటాసెట్‌ను లోడ్ చేసుకున్నారు, ఇది ఒక కాల వ్యవధిలో విద్యుత్ లోడ్ మార్పులను చూపిస్తుంది. + +[![Introduction to ARIMA](https://img.youtube.com/vi/IUSk-YDau10/0.jpg)](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() + ``` + + ![training and testing data](../../../../translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.te.png) + + కాబట్టి, ట్రైనింగ్ కోసం తక్కువ సమయ విండో ఉపయోగించడం సరిపోతుంది. + + > గమనిక: ARIMA మోడల్ ఫిట్ చేయడానికి ఉపయోగించే ఫంక్షన్ ఇన్-సాంపుల్ వాలిడేషన్ ఉపయోగిస్తుందని, వాలిడేషన్ డేటాను మినహాయిస్తాము. + +### ట్రైనింగ్ కోసం డేటాను సిద్ధం చేయండి + +ఇప్పుడు, డేటాను ఫిల్టరింగ్ మరియు స్కేలింగ్ చేసి ట్రైనింగ్ కోసం సిద్ధం చేయాలి. మీ డేటాసెట్‌ను అవసరమైన కాలాలు మరియు కాలమ్స్ మాత్రమే కలిగి ఉండేలా ఫిల్టర్ చేయండి, మరియు డేటాను 0,1 మధ్యలో ప్రాజెక్ట్ చేయడానికి స్కేల్ చేయండి. + +1. ఒరిజినల్ డేటాసెట్‌ను పై పేర్కొన్న కాలాలు మరియు 'load' కాలమ్ మరియు తేదీ మాత్రమే కలిగి ఉండేలా ఫిల్టర్ చేయండి: + + ```python + train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']] + test = energy.copy()[energy.index >= test_start_dt][['load']] + + print('Training data shape: ', train.shape) + print('Test data shape: ', test.shape) + ``` + + డేటా ఆకారాన్ని చూడండి: + + ```output + Training data shape: (1416, 1) + Test data shape: (48, 1) + ``` + +1. డేటాను (0, 1) పరిధిలో స్కేల్ చేయండి. + + ```python + scaler = MinMaxScaler() + train['load'] = scaler.fit_transform(train) + train.head(10) + ``` + +1. ఒరిజినల్ మరియు స్కేల్ చేసిన డేటాను విజువలైజ్ చేయండి: + + ```python + energy[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']].rename(columns={'load':'original load'}).plot.hist(bins=100, fontsize=12) + train.rename(columns={'load':'scaled load'}).plot.hist(bins=100, fontsize=12) + plt.show() + ``` + + ![original](../../../../translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.te.png) + + > ఒరిజినల్ డేటా + + ![scaled](../../../../translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.te.png) + + > స్కేల్ చేసిన డేటా + +1. ఇప్పుడు మీరు స్కేల్ చేసిన డేటాను కేలిబ్రేట్ చేసుకున్నందున, టెస్ట్ డేటాను కూడా స్కేల్ చేయండి: + + ```python + test['load'] = scaler.transform(test) + test.head() + ``` + +### ARIMA అమలు చేయండి + +ఇప్పుడు ARIMA అమలు చేయాల్సి ఉంది! మీరు ముందుగా ఇన్‌స్టాల్ చేసిన `statsmodels` లైబ్రరీని ఉపయోగిస్తారు. + +ఇప్పుడు మీరు కొన్ని దశలను అనుసరించాలి + + 1. `SARIMAX()` ను పిలిచి మోడల్ పరామితులు p, d, q మరియు P, D, Q ను అందించి మోడల్ నిర్వచించండి. + 2. ట్రైనింగ్ డేటాకు మోడల్‌ను `fit()` ఫంక్షన్ పిలిచి సిద్ధం చేయండి. + 3. `forecast()` ఫంక్షన్ పిలిచి, ముందస్తు కాలం (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](../../../../translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.te.png) +> +> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/) ను పై సూత్రం ద్వారా నిర్వచించబడిన నిష్పత్తిగా అంచనా ఖచ్చితత్వాన్ని చూపడానికి ఉపయోగిస్తారు. actualt మరియు predictedt మధ్య తేడా actualt తో భాగించబడుతుంది. "ఈ లెక్కింపులో పరమాన్న విలువ ప్రతి అంచనా వేయబడిన సమయ బిందువు కోసం సమీకరించబడుతుంది మరియు సరిపోయిన బిందువుల సంఖ్య n తో భాగించబడుతుంది." [wikipedia](https://wikipedia.org/wiki/Mean_absolute_percentage_error) + +1. సూత్రాన్ని కోడ్‌లో వ్యక్తం చేయండి: + + ```python + if(HORIZON > 1): + eval_df['APE'] = (eval_df['prediction'] - eval_df['actual']).abs() / eval_df['actual'] + print(eval_df.groupby('h')['APE'].mean()) + ``` + +1. ఒక దశ MAPE లెక్కించండి: + + ```python + print('One step forecast MAPE: ', (mape(eval_df[eval_df['h'] == 't+1']['prediction'], eval_df[eval_df['h'] == 't+1']['actual']))*100, '%') + ``` + + ఒక దశ అంచనా MAPE: 0.5570581332313952 % + +1. బహుళ దశ అంచనా MAPE ముద్రించండి: + + ```python + print('Multi-step forecast MAPE: ', mape(eval_df['prediction'], eval_df['actual'])*100, '%') + ``` + + ```output + Multi-step forecast MAPE: 1.1460048657704118 % + ``` + + మంచి తక్కువ సంఖ్య ఉత్తమం: MAPE 10 ఉన్న అంచనా 10% తప్పు అని భావించండి. + +1. కానీ ఎప్పుడూ లాగా, ఈ రకమైన ఖచ్చితత్వ కొలతను దృశ్యంగా చూడటం సులభం, కాబట్టి దీన్ని చిత్రీకరించుకుందాం: + + ```python + if(HORIZON == 1): + ## ఒక దశ ముందస్తు అంచనాను చిత్రీకరించడం + eval_df.plot(x='timestamp', y=['actual', 'prediction'], style=['r', 'b'], figsize=(15, 8)) + + else: + ## బహుళ దశల ముందస్తు అంచనాను చిత్రీకరించడం + plot_df = eval_df[(eval_df.h=='t+1')][['timestamp', 'actual']] + for t in range(1, HORIZON+1): + plot_df['t+'+str(t)] = eval_df[(eval_df.h=='t+'+str(t))]['prediction'].values + + fig = plt.figure(figsize=(15, 8)) + ax = plt.plot(plot_df['timestamp'], plot_df['actual'], color='red', linewidth=4.0) + ax = fig.add_subplot(111) + for t in range(1, HORIZON+1): + x = plot_df['timestamp'][(t-1):] + y = plot_df['t+'+str(t)][0:len(x)] + ax.plot(x, y, color='blue', linewidth=4*math.pow(.9,t), alpha=math.pow(0.8,t)) + + ax.legend(loc='best') + + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![a time series model](../../../../translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.te.png) + +🏆 చాలా మంచి ప్లాట్, మంచి ఖచ్చితత్వం ఉన్న మోడల్‌ను చూపిస్తోంది. బాగుంది! + +--- + +## 🚀సవాలు + +టైమ్ సిరీస్ మోడల్ యొక్క ఖచ్చితత్వాన్ని పరీక్షించే మార్గాలను లోతుగా పరిశీలించండి. ఈ పాఠంలో మేము MAPE గురించి మాట్లాడాము, కానీ మీరు ఉపయోగించగల ఇతర పద్ధతులు ఉన్నాయా? వాటిని పరిశోధించి వ్యాఖ్యానించండి. సహాయక పత్రం [ఇక్కడ](https://otexts.com/fpp2/accuracy.html) లభిస్తుంది + +## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## సమీక్ష & స్వీయ అధ్యయనం + +ఈ పాఠం ARIMA తో టైమ్ సిరీస్ ఫోర్కాస్టింగ్ యొక్క ప్రాథమిక అంశాలను మాత్రమే స్పర్శిస్తుంది. టైమ్ సిరీస్ మోడల్స్ నిర్మించడానికి ఇతర మార్గాలను తెలుసుకోవడానికి [ఈ రిపోజిటరీ](https://microsoft.github.io/forecasting/) మరియు దాని వివిధ మోడల్ రకాలలో లోతుగా తెలుసుకోవడానికి కొంత సమయం కేటాయించండి. + +## అసైన్‌మెంట్ + +[కొత్త ARIMA మోడల్](assignment.md) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/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": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2012-01-01 00:00:002,698.00
2012-01-01 01:00:002,558.00
2012-01-01 02:00:002,444.00
2012-01-01 03:00:002,402.00
2012-01-01 04:00:002,403.00
2012-01-01 05:00:002,453.00
2012-01-01 06:00:002,560.00
2012-01-01 07:00:002,719.00
2012-01-01 08:00:002,916.00
2012-01-01 09:00:003,105.00
\n", + "
" + ], + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2,698.00\n", + "2012-01-01 01:00:00 2,558.00\n", + "2012-01-01 02:00:00 2,444.00\n", + "2012-01-01 03:00:00 2,402.00\n", + "2012-01-01 04:00:00 2,403.00\n", + "2012-01-01 05:00:00 2,453.00\n", + "2012-01-01 06:00:00 2,560.00\n", + "2012-01-01 07:00:00 2,719.00\n", + "2012-01-01 08:00:00 2,916.00\n", + "2012-01-01 09:00:00 3,105.00" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "అందుబాటులో ఉన్న అన్ని లోడ్ డేటాను (జనవరి 2012 నుండి డిసెంబర్ 2014 వరకు) ప్లాట్ చేయండి\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 19, + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## శిక్షణ మరియు పరీక్ష డేటా సెట్‌లను సృష్టించండి\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "source": [ + "train_start_dt = '2014-11-01 00:00:00'\n", + "test_start_dt = '2014-12-30 00:00:00' " + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 21, + "source": [ + "energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \\\n", + " .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \\\n", + " .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 22, + "source": [ + "train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]\n", + "test = energy.copy()[energy.index >= test_start_dt][['load']]\n", + "\n", + "print('Training data shape: ', train.shape)\n", + "print('Test data shape: ', test.shape)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Training data shape: (1416, 1)\n", + "Test data shape: (48, 1)\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "source": [ + "scaler = MinMaxScaler()\n", + "train['load'] = scaler.fit_transform(train)\n", + "train.head(10)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-11-01 00:00:000.10
2014-11-01 01:00:000.07
2014-11-01 02:00:000.05
2014-11-01 03:00:000.04
2014-11-01 04:00:000.06
2014-11-01 05:00:000.10
2014-11-01 06:00:000.19
2014-11-01 07:00:000.31
2014-11-01 08:00:000.40
2014-11-01 09:00:000.48
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-11-01 00:00:00 0.10\n", + "2014-11-01 01:00:00 0.07\n", + "2014-11-01 02:00:00 0.05\n", + "2014-11-01 03:00:00 0.04\n", + "2014-11-01 04:00:00 0.06\n", + "2014-11-01 05:00:00 0.10\n", + "2014-11-01 06:00:00 0.19\n", + "2014-11-01 07:00:00 0.31\n", + "2014-11-01 08:00:00 0.40\n", + "2014-11-01 09:00:00 0.48" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "మూల డేటా vs స్కేల్ చేసిన డేటా:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 24, + "source": [ + "energy[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']].rename(columns={'load':'original load'}).plot.hist(bins=100, fontsize=12)\n", + "train.rename(columns={'load':'scaled load'}).plot.hist(bins=100, fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + }, + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAD7CAYAAACMlyg3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAaCklEQVR4nO3de5RV5Znn8e+PSyjlIhEK1GBZagJeQBQL7ehSM9EWO2omhjjRqOOltaIOsTNZzdLJ0oTYtunOmpl0JEokbTAg2iRpcKKxXYKXVmNPQsE0ERQ0LsHQogIJSCF3n/ljn9JjUUXtU5x9Tp3av89aZ8m+nf285+B5ePfz7ncrIjAzs3zqU+0AzMysepwEzMxyzEnAzCzHnATMzHLMScDMLMf6VTuAUgwfPjwaGxurHYaZWU1ZsmTJhoio72hbTSWBxsZGWlpaqh2GmVlNkbSms22+HGRmlmNOAmZmOeYkYGaWYzVVEzCz2rJr1y7Wrl3L9u3bqx1KLtTV1TFq1Cj69++f+hgnATPLzNq1axk8eDCNjY1IqnY4vVpEsHHjRtauXcuRRx6Z+jhfDjKzzGzfvp1hw4Y5AVSAJIYNG1Zyr8tJwMwy5QRQOd35rJ0EzMxyzDUBM6uYxlt+Vdb3W/1355f1/To8x+rVXHDBBSxfvjz1MVdddRUXXHABX/rSl1Ktr0RMnXESMMuB4h/fSvxwWu3w5SAz67W2bt3K+eefz/jx4xk7dizz5s0DYPHixZx22mmMHz+eU045hS1btrB69WrOOOMMJkyYwIQJE3jhhRf2er89e/YwdepUJk6cyAknnMC9994LJCNzpkyZwpgxYzjnnHN45513uoztySef5KSTTmLcuHFcc8017NixA4Dbb7+diRMnMnbsWJqbm2l7+uOSJUsYP34848eP5+677y7XR1SZJCDpU5K2S3qgaN1XJK2RtFXSw5IOrkQsZpYfjz/+OIcddhjLli1j+fLlnHfeeezcuZMvf/nL/OAHP2DZsmUsWrSIAw44gBEjRrBw4UKWLl3KvHnzuOmmm/Z6v/vuu4+DDjqIxYsXs3jxYn784x/z+uuvs2DBAlatWsVLL73E7NmzO0wgxbZv385VV13FvHnzePHFF9m9ezczZswAYMqUKSxevJjly5ezbds2Hn30UQCuvvpqpk+fzrJly8r6GVWqJ3A3sLhtQdLxwL3AFcBI4D3gngrFYmY5MW7cOBYuXMjNN9/Mc889x0EHHcSqVas49NBDmThxIgBDhgyhX79+7Nq1i+uuu45x48Zx8cUX89JLL+31fk888QSzZ8/mxBNP5NRTT2Xjxo28+uqrPPvss1x66aX07duXww47jM9+9rP7jGvVqlUceeSRjB49GoArr7ySZ599FoCnn36aU089lXHjxvHUU0+xYsUKNm3axKZNmzjzzDMBuOKKK8r2GWVeE5B0CbAJeAH4ZGH1ZcAjEfFsYZ/bgJclDY6ILVnHZGb5MHr0aJYuXcpjjz3Grbfeytlnn81FF13U4b7f//73GTlyJMuWLeP999+nrq5ur30igunTpzNp0qSPrH/sscfKEu/27du58cYbaWlp4fDDD2fatGmZ322daU9A0hDgduAb7TYdD3zQp4mI14CdwOgO3qNZUouklvXr12cZrlnuNN7yqw9evdGbb77JgQceyOWXX87UqVNZunQpY8aMYd26dSxenFyc2LJlC7t372bz5s0ceuih9OnThzlz5rBnz5693m/SpEnMmDGDXbt2AfDKK6+wdetWzjzzTObNm8eePXtYt24dTz/99D7jGjNmDKtXr+b3v/89AHPmzOGss8764Ad/+PDhtLa28otf/AKAoUOHMnToUJ5//nkA5s6dW54PiOx7An8D3BcRa9vdxDAI2Nxu383A4PZvEBEzgZkATU1NkVGcZlYBlR6Z9OKLLzJ16lT69OlD//79mTFjBh/72MeYN28eX/va19i2bRsHHHAAixYt4sYbb2Ty5MnMnj2b8847j4EDB+71ftdeey2rV69mwoQJRAT19fU8/PDDXHTRRTz11FMcd9xxNDQ08OlPf3qfcdXV1TFr1iwuvvhidu/ezcSJE7n++usZMGAA1113HWPHjuWQQw754JIVwKxZs7jmmmuQxLnnnlu2z0htledyk3QiMBc4KSJ2SpoGfDIiLpf0f4BfR8T3ivbfAnwmIpZ09p5NTU3hh8qYla6zIaJZDx19+eWXOfbYY8v+vta5jj5zSUsioqmj/bPsCXwGaATeKPQCBgF9JR0HPA6MLwrwKGAA8EqG8ZiZWTtZJoGZwD8VLf81SVK4ARgB/JukM4ClJHWD+S4Km5lVVmZJICLeIxn6CYCkVmB7RKwH1ku6nuRy0TBgEXB1VrGYWfVEhCeRq5DuXN6v2LQRETGt3fKDwIOVOr+ZVV5dXR0bN270dNIV0PY8gY6Gtu6L5w4ys8yMGjWKtWvX4uHdldH2ZLFSOAmYWWb69+9f0lOurPI8gZyZWY45CZiZ5ZiTgJlZjjkJmJnlmJOAmVmOOQmYmeWYk4CZWY45CZiZ5ZiTgJlZjjkJmJnlmJOAmVmOee4gsx4g6yd8mXXGPQEzsxzLNAlIekDSOknvSnpF0rWF9Y2SQlJr0eu2LGMxM7O9ZX056LvAX0bEDknHAM9I+n/AxsL2oRGxO+MYzMysE5n2BCJiRUTsaFssvI7O8pxmZpZe5jUBSfdIeg9YCawDHivavEbSWkmzJA3v5PhmSS2SWvx0IjOz8so8CUTEjcBg4AxgPrAD2ABMBI4ATi5sn9vJ8TMjoikimurr67MO18wsVyoyOigi9kTE88Ao4IaIaI2IlojYHRFvA1OAcyUNrkQ8ZmaWqPQQ0X50XBOIwn89ZNXMrIIy+9GVNELSJZIGSeoraRJwKfCkpFMljZHUR9Iw4C7gmYjYnFU8Zma2tyyHiAZwA/AjkmSzBvh6RPxS0qXAncAI4F1gIUmCMLMeoPgOZvBdzL1ZZkkgItYDZ3Wy7SHgoazObWZm6fgavJlZjjkJmJnlmJOAmVmOeSppM+uSp7ruvdwTMDPLMScBM7MccxIwM8sxJwEzsxxzYdgsYy6qWk/mnoCZWY45CZiZ5ZiTgJlZjjkJmJnlmJOAmVmOOQmYmeVYpklA0gOS1kl6V9Irkq4t2na2pJWS3pP0tKQjsozFzMz2lnVP4LtAY0QMAT4P3CHpZEnDgfnAbcDBQAswL+NYzMysnUxvFouIFcWLhdfRwMnAioj4OYCkacAGScdExMosYzIzsw9lXhOQdI+k94CVwDrgMeB4YFnbPhGxFXitsL798c2SWiS1rF+/PutwzcxyJfMkEBE3AoOBM0guAe0ABgGb2+26ubBf++NnRkRTRDTV19dnHa6ZWa5UZHRQROyJiOeBUcANQCswpN1uQ4AtlYjHzMwSlR4i2o+kJrACGN+2UtLAovVmZlYhmSUBSSMkXSJpkKS+kiYBlwJPAguAsZImS6oDvgX8zkVhM7PKynJ0UJBc+vkRSbJZA3w9In4JIGky8EPgAeA3wCUZxmLWI2Q9rbSnrbZSZZYEImI9cNY+ti8Cjsnq/GZm1jVPG2FmlmNOAmZmOeYkYGaWY37GsFkP4+KuVZJ7AmZmOeYkYGaWY04CZmY55iRgZpZjLgybWUlcuO5d3BMwM8sxJwEzsxxzEjAzy7FUSUDSuKwDMTOzyktbGL5H0gDgfmBuRLR/NKSZZcBFWMtaqp5ARJwBXAYcDiyR9KCkP880MjMzy1zqmkBEvArcCtxM8pyAuyStlPTFjvaXNEDSfZLWSNoi6d8l/UVhW6OkkNRa9LqtHA0yM7P0Ul0OknQCcDVwPrAQuDAilko6DPg3YH4n7/0HkoTxBvA54Gft6gtDI2L3fsRvZmb7IW1NYDrwj8A3I2Jb28qIeFPSrR0dEBFbgWlFqx6V9DpwMrCke+GamVk5pU0C5wPbImIPgKQ+QF1EvBcRc9K8gaSRwGhgRdHqNZKCpHcxNSI2pA/dzMz2V9oksAg4B2gtLB8IPAGcluZgSf2BucBPI2KlpEHARODfgWHA3YXtkzo4thloBmhoaEgZbr54BEm+FX//+7N/qe9jvUPawnBdRLQlAAp/PjDNgYVewxxgJzCl7fiIaImI3RHxdmH9uZIGtz8+ImZGRFNENNXX16cM18zM0kibBLZKmtC2IOlkYNs+9m/bT8B9wEhgckTs6mTXKDEeMzMrg7SXg74O/FzSm4CAQ4AvpzhuBnAscE5xQVnSqcAm4FXg48BdwDO+Cc3MrLJSJYGIWCzpGGBMYdWqffyrHgBJRwBfBXYAbyWdAiisex+4ExgBvEtSGL605OjNzGy/lPI8gYlAY+GYCZKIiNmd7RwRa0h6DZ15qIRzm/U6WRdiXei1NNLeLDYHOJpkNM+ewuoAOk0CZmbW86XtCTQBx0VEdLmnmZnVjLSjcZaTFIPNzKwXSdsTGA68JOm3JIVeACLi85lEZWZmFZE2CUzLMoi88p2+tcPflfVWaYeI/mthyOenImKRpAOBvtmGZmZmWUv7eMnrgF8A9xZWfQJ4OKugzMysMtIWhv8bcDrJjV1tD5gZkVVQZmZWGWmTwI6I2Nm2IKkfH873Y2ZmNSptYfhfJX0TOKDwbOEbgUeyC8vKwcXM6vHdulYr0vYEbgHWAy+SzP3zGMnzhs3MrIalHR30PvDjwsvMzHqJtHMHvU4HNYCIOKrsEZmZWcWUMndQmzrgYuDg8odjZmaVlPZy0MZ2q/5B0hLgW+UPyaz8ylkkd8G9Y/5calPay0ETihb7kPQMSnkWgZmZ9UBpf8j/V9GfdwOrgf+yrwMkDQDuAc4huXT0GvA/IuJfCtvPBu4GGoDfAFcVHkRjZmYVkvZy0H/q5nv/ATgLeAP4HPAzSeOAVmA+cC3J/QZ/A8wD/qwb5zEzs25KeznoG/vaHhH/u4N1W/no7KOPFkYZnQwMA1ZExM8L7z8N2CDpmIhYmS50MzPbX6WMDpoI/LKwfCHwW+DVtCeSNBIYDawAbgCWtW2LiK2SXgOOB1a2O64ZaAZoaGhIezqrkLwXA/Pefqt9aZPAKGBCRGyBD/7l/quIuDzNwZL6A3OBn0bESkmDSO5ALrYZGNz+2IiYCcwEaGpq8nxFZmZllHbaiJHAzqLlnYV1XZLUB5hTOGZKYXUrMKTdrkOALSnjMTOzMkjbE5gN/FbSgsLyF4CfdnWQJAH3kSSMz0XErsKmFcCVRfsNBI4urDczswpJ1ROIiL8Frgb+VHhdHRF3pjh0BnAscGFEbCtavwAYK2mypDqSm85+56KwmVlllXLD14HAuxExS1K9pCMj4vXOdi48jvKrJA+mfyvpFADw1YiYK2ky8EPgAZL7BC7pVgvMrGo8ZXbtSztE9NskI4TGALOA/iQ/3qd3dkzhxi/tY/si4JhSgjUzs/JKWxi+CPg8sBUgIt6kg5E8ZmZWW9ImgZ0RERSmky4Ucs3MrMalTQI/k3QvMFTSdcAi/IAZM7Oal3buoP9ZeLbwuyR1gW9FxMJMI7Oa5jtpy8+fqWWhyyQgqS+wqDCJnH/4zcx6kS4vB0XEHuB9SQdVIB4zM6ugtPcJtAIvSlpIYYQQQETclElUZmZWEWmTwPzCy8zMepF9JgFJDRHxRkR0OU+Q7R8X/awUvlPXyqWrmsDDbX+Q9M8Zx2JmZhXWVRIonvbhqCwDMTOzyusqCUQnfzYzs16gq8LweEnvkvQIDij8mcJyRET7B8OYmVkN2WcSiIi+lQrEKquzwmJxUTrNPj3Z/hZPSz3exVqrRWnnDjIzs14o0yQgaYqkFkk7JN1ftL5RUkhqLXrdlmUsZma2t1KeLNYdbwJ3AJOAAzrYPjQidmccg5mZdSLTJBAR8wEkNQGjsjyXmZmVLuueQFfWSAqS2UmnRsSG9jtIagaaARoaGiocXnWkKTDWSnHW8qnUO+B9x3z1VKswvAGYCBwBnEzyqMq5He0YETMjoikimurr6ysYoplZ71eVnkBEtAIthcW3JU0B1kkaHBFbqhGTmVke9ZQhom13I/eUeMzMciHTnoCkfoVz9AX6SqoDdpNcAtoEvAp8HLgLeCYiNmcZj5mZfVTWl4NuBb5dtHw58B1gFXAnMILkucULgUszjqVqXPT6kD8La9PZAAgXlSsr6yGi04BpnWx+KMtzm5lZ13wN3swsx5wEzMxyzEnAzCzHqn3HsHVTmqJarXJh0Kxy3BMwM8sxJwEzsxxzEjAzyzEnATOzHHNhuBs6K0T2tqJsLb5nmnPtq5DcG75Ds1K4J2BmlmNOAmZmOeYkYGaWY04CZmY55sLwfnIh8UP781n4c8yHcv0d8Z3h5eOegJlZjmWaBCRNkdQiaYek+9ttO1vSSknvSXpa0hFZxmJmZnvLuifwJnAH8JPilZKGA/OB24CDSR46Py/jWMzMrJ2snyw2H0BSEzCqaNMXgRUR8fPC9mnABknHRMTKLGMyM7MPVaswfDywrG0hIrZKeq2w/iNJQFIz0AzQ0NBQyRith6mVu5mtfPz9ZK9aheFBwOZ26zYDg9vvGBEzI6IpIprq6+srEpyZWV5UKwm0AkParRsCbKlCLGZmuVWtJLACGN+2IGkgcHRhvZmZVUjWQ0T7SaoD+gJ9JdVJ6gcsAMZKmlzY/i3gdy4Km5lVVtaF4VuBbxctXw58JyKmSZoM/BB4APgNcEnGseyXWi9Q1Xr8ZpaNrIeITgOmdbJtEXBMluc3M7N987QRZmY55iRgZpZjTgJmZjnmqaT3wXeoZsufRT70hO+5sxg8JbV7AmZmueYkYGaWY04CZmY55iRgZpZjLgy30xOKWPYhfx/WEf+9KB/3BMzMcsxJwMwsx5wEzMxyzEnAzCzHclsYLi4s+a7B0rgoZz2V/78unXsCZmY5VtUkIOkZSdsltRZeq6oZj5lZ3vSEnsCUiBhUeI2pdjBmZnnSE5KAmZlVSU9IAt+VtEHSryV9ptrBmJnlSbWTwM3AUcAngJnAI5KOLt5BUrOkFkkt69evr0aMZma9VlWTQET8JiK2RMSOiPgp8Gvgc+32mRkRTRHRVF9fX51Azcx6qWr3BNoLQNUOwswsL6qWBCQNlTRJUp2kfpIuA84EHq9WTGZmeVPNO4b7A3cAxwB7gJXAFyLilSrGZGaWK1VLAhGxHphYrfObWe+WZnoTTzPR82oCZmZWQU4CZmY55iRgZpZjTgJmZjmW2+cJmJl1Jk8FY/cEzMxyzEnAzCzHnATMzHLMScDMLMdyVRj2A9LNbH+k/Q2ppWKyewJmZjnmJGBmlmNOAmZmOeYkYGaWY7kqDJuZdaazom93BpSUesdxZ/tX4s5l9wTMzHKsqklA0sGSFkjaKmmNpK9UMx4zs7yp9uWgu4GdwEjgROBXkpZFxIrqhmVmlg/VfND8QGAycFtEtEbE88AvgSuqFZOZWd4oIqpzYukk4NcRcWDRur8GzoqIC4vWNQPNhcUxwKr9OO1wYMN+HF9r8tZecJvzwm0uzRERUd/RhmpeDhoEvNtu3WZgcPGKiJgJzCzHCSW1RERTOd6rFuStveA254XbXD7VLAy3AkParRsCbKlCLGZmuVTNJPAK0E/Sp4rWjQdcFDYzq5CqJYGI2ArMB26XNFDS6cB/BuZkeNqyXFaqIXlrL7jNeeE2l0nVCsOQ3CcA/AT4c2AjcEtEPFi1gMzMcqaqScDMzKrL00aYmeWYk4CZWY71qiSQdi4iJf5e0sbC6+8lqdLxlkMJbZ4qabmkLZJelzS10rGWS6lzTkn6mKSXJa2tVIzlVEp7JU2Q9KykVklvS/qrSsZaLiX8vR4g6UeFtv5R0iOSPlHpeMtB0hRJLZJ2SLq/i33/u6S3JL0r6SeSBnT3vL0qCfDRuYguA2ZIOr6D/ZqBL5AMST0BuBD4aqWCLLO0bRbwX4GPA+cBUyRdUrEoyyttm9tMBdZXIrCMpGqvpOHA48C9wDDgk8ATFYyznNJ+x38FfJrk/+PDgD8B0ysVZJm9CdxBMlimU5ImAbcAZwNHAEcB3+n2WSOiV7yAgSR/aUYXrZsD/F0H+74ANBct/yXwf6vdhizb3MGxdwHTq92GrNsMHAm8DPwFsLba8WfZXuBOYE61Y65wm2cA3ytaPh9YVe027Gf77wDu38f2B4E7i5bPBt7q7vl6U09gNLA7Il4pWrcM6OhfD8cXtnW1X09XSps/ULj0dQa1eWNeqW2eDnwT2JZ1YBkppb1/BvxR0guS3ilcGmmoSJTlVUqb7wNOl3SYpANJeg3/UoEYq6mj36+RkoZ15816UxJINRdR0b6b2+03qAbrAqW0udg0ku9+VgYxZS11myVdBPSNiAWVCCwjpXzHo4ArSS6RNACvAw9lGl02Smnzq8AfgP8oHHMscHum0VVfR79f0PX/9x3qTUmglLmI2u87BGiNQt+qhpQ8/5KkKSS1gfMjYkeGsWUlVZsLU5V/D7ipQnFlpZTveBuwICIWR8R2kuvEp0k6KOMYy62UNt8NDCCpgQwkmYWgt/cEOvr9gm7Ou9abkkApcxGtKGzrar+erqT5lyRdQ6GgFBE1OVKG9G3+FNAIPCfpLZIfh0MLIyoaKxBnuZTyHf8OKP6HTK39o6ZNKW0+keT6+R8L/6iZDpxSKJL3Vh39fr0dERu79W7VLoKUuaDyTyTd34HA6STdpOM72O96kmLhJ0hGFKwArq92/Bm3+TLgLeDYasdciTaTTJN+SNHriySjLw4huURU9XZk8B1/lmR0zIlAf+D7wHPVjj/jNs8C/hk4qNDmbwL/Ue34u9nmfkAd8F2SQngd0K+D/c4r/L98HDAUeIoUg0E6PW+1G17mD/Fg4GFgK/AG8JXC+jNILve07SeSSwV/LLy+R2EKjVp7ldDm14FdJF3JttePqh1/lm1ud8xnqMHRQaW2F7iB5Pr4n4BHgMOrHX+WbSa5DDQXeAfYBDwPnFLt+LvZ5mkkvbfi1zSS+k4r0FC07zeAt0nqILOAAd09r+cOMjPLsd5UEzAzsxI5CZiZ5ZiTgJlZjjkJmJnlmJOAmVmOOQmYmeWYk4CZWY45CZiZ5dj/BywbGaIaCXKXAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "మనం టెస్ట్ డేటాను కూడా స్కేల్ చేద్దాం\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 25, + "source": [ + "test['load'] = scaler.transform(test)\n", + "test.head()" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-12-30 00:00:000.33
2014-12-30 01:00:000.29
2014-12-30 02:00:000.27
2014-12-30 03:00:000.27
2014-12-30 04:00:000.30
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-12-30 00:00:00 0.33\n", + "2014-12-30 01:00:00 0.29\n", + "2014-12-30 02:00:00 0.27\n", + "2014-12-30 03:00:00 0.27\n", + "2014-12-30 04:00:00 0.30" + ] + }, + "metadata": {}, + "execution_count": 25 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## ARIMA పద్ధతిని అమలు చేయండి\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 26, + "source": [ + "# Specify the number of steps to forecast ahead\n", + "HORIZON = 3\n", + "print('Forecasting horizon:', HORIZON, 'hours')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Forecasting horizon: 3 hours\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 27, + "source": [ + "order = (4, 1, 0)\n", + "seasonal_order = (1, 1, 0, 24)\n", + "\n", + "model = SARIMAX(endog=train, order=order, seasonal_order=seasonal_order)\n", + "results = model.fit()\n", + "\n", + "print(results.summary())\n" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " SARIMAX Results \n", + "==========================================================================================\n", + "Dep. Variable: load No. Observations: 1416\n", + "Model: SARIMAX(4, 1, 0)x(1, 1, 0, 24) Log Likelihood 3477.239\n", + "Date: Thu, 30 Sep 2021 AIC -6942.477\n", + "Time: 14:36:28 BIC -6911.050\n", + "Sample: 11-01-2014 HQIC -6930.725\n", + " - 12-29-2014 \n", + "Covariance Type: opg \n", + "==============================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "ar.L1 0.8403 0.016 52.226 0.000 0.809 0.872\n", + "ar.L2 -0.5220 0.034 -15.388 0.000 -0.588 -0.456\n", + "ar.L3 0.1536 0.044 3.470 0.001 0.067 0.240\n", + "ar.L4 -0.0778 0.036 -2.158 0.031 -0.148 -0.007\n", + "ar.S.L24 -0.2327 0.024 -9.718 0.000 -0.280 -0.186\n", + "sigma2 0.0004 8.32e-06 47.358 0.000 0.000 0.000\n", + "===================================================================================\n", + "Ljung-Box (L1) (Q): 0.05 Jarque-Bera (JB): 1464.60\n", + "Prob(Q): 0.83 Prob(JB): 0.00\n", + "Heteroskedasticity (H): 0.84 Skew: 0.14\n", + "Prob(H) (two-sided): 0.07 Kurtosis: 8.02\n", + "===================================================================================\n", + "\n", + "Warnings:\n", + "[1] Covariance matrix calculated using the outer product of gradients (complex-step).\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## మోడల్‌ను అంచనా వేయండి\n" + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ప్రతి HORIZON దశ కోసం ఒక పరీక్ష డేటా పాయింట్ సృష్టించండి.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 28, + "source": [ + "test_shifted = test.copy()\n", + "\n", + "for t in range(1, HORIZON):\n", + " test_shifted['load+'+str(t)] = test_shifted['load'].shift(-t, freq='H')\n", + " \n", + "test_shifted = test_shifted.dropna(how='any')\n", + "test_shifted.head(5)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
loadload+1load+2
2014-12-30 00:00:000.330.290.27
2014-12-30 01:00:000.290.270.27
2014-12-30 02:00:000.270.270.30
2014-12-30 03:00:000.270.300.41
2014-12-30 04:00:000.300.410.57
\n", + "
" + ], + "text/plain": [ + " load load+1 load+2\n", + "2014-12-30 00:00:00 0.33 0.29 0.27\n", + "2014-12-30 01:00:00 0.29 0.27 0.27\n", + "2014-12-30 02:00:00 0.27 0.27 0.30\n", + "2014-12-30 03:00:00 0.27 0.30 0.41\n", + "2014-12-30 04:00:00 0.30 0.41 0.57" + ] + }, + "metadata": {}, + "execution_count": 28 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "పరీక్షా డేటాపై అంచనాలు చేయండి\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 29, + "source": [ + "%%time\n", + "training_window = 720 # dedicate 30 days (720 hours) for training\n", + "\n", + "train_ts = train['load']\n", + "test_ts = test_shifted\n", + "\n", + "history = [x for x in train_ts]\n", + "history = history[(-training_window):]\n", + "\n", + "predictions = list()\n", + "\n", + "# let's user simpler model for demonstration\n", + "order = (2, 1, 0)\n", + "seasonal_order = (1, 1, 0, 24)\n", + "\n", + "for t in range(test_ts.shape[0]):\n", + " model = SARIMAX(endog=history, order=order, seasonal_order=seasonal_order)\n", + " model_fit = model.fit()\n", + " yhat = model_fit.forecast(steps = HORIZON)\n", + " predictions.append(yhat)\n", + " obs = list(test_ts.iloc[t])\n", + " # move the training window\n", + " history.append(obs[0])\n", + " history.pop(0)\n", + " print(test_ts.index[t])\n", + " print(t+1, ': predicted =', yhat, 'expected =', obs)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "2014-12-30 00:00:00\n", + "1 : predicted = [0.32 0.29 0.28] expected = [0.32945389435989236, 0.2900626678603402, 0.2739480752014323]\n", + "2014-12-30 01:00:00\n", + "2 : predicted = [0.3 0.29 0.3 ] expected = [0.2900626678603402, 0.2739480752014323, 0.26812891674127126]\n", + "2014-12-30 02:00:00\n", + "3 : predicted = [0.27 0.28 0.32] expected = [0.2739480752014323, 0.26812891674127126, 0.3025962399283795]\n", + "2014-12-30 03:00:00\n", + "4 : predicted = [0.28 0.32 0.42] expected = [0.26812891674127126, 0.3025962399283795, 0.40823634735899716]\n", + "2014-12-30 04:00:00\n", + "5 : predicted = [0.3 0.39 0.54] expected = [0.3025962399283795, 0.40823634735899716, 0.5689346463742166]\n", + "2014-12-30 05:00:00\n", + "6 : predicted = [0.4 0.55 0.66] expected = [0.40823634735899716, 0.5689346463742166, 0.6799462846911368]\n", + "2014-12-30 06:00:00\n", + "7 : predicted = [0.57 0.68 0.75] expected = [0.5689346463742166, 0.6799462846911368, 0.7309758281110115]\n", + "2014-12-30 07:00:00\n", + "8 : predicted = [0.68 0.75 0.8 ] expected = [0.6799462846911368, 0.7309758281110115, 0.7511190689346463]\n", + "2014-12-30 08:00:00\n", + "9 : predicted = [0.75 0.8 0.82] expected = [0.7309758281110115, 0.7511190689346463, 0.7636526410026856]\n", + "2014-12-30 09:00:00\n", + "10 : predicted = [0.77 0.78 0.78] expected = [0.7511190689346463, 0.7636526410026856, 0.7381378692927483]\n", + "2014-12-30 10:00:00\n", + "11 : predicted = [0.76 0.75 0.74] expected = [0.7636526410026856, 0.7381378692927483, 0.7188898836168307]\n", + "2014-12-30 11:00:00\n", + "12 : predicted = [0.77 0.76 0.75] expected = [0.7381378692927483, 0.7188898836168307, 0.7090420769919425]\n", + "2014-12-30 12:00:00\n", + "13 : predicted = [0.7 0.68 0.69] expected = [0.7188898836168307, 0.7090420769919425, 0.7081468218442255]\n", + "2014-12-30 13:00:00\n", + "14 : predicted = [0.72 0.73 0.76] expected = [0.7090420769919425, 0.7081468218442255, 0.7385854968666068]\n", + "2014-12-30 14:00:00\n", + "15 : predicted = [0.71 0.73 0.86] expected = [0.7081468218442255, 0.7385854968666068, 0.8478066248880931]\n", + "2014-12-30 15:00:00\n", + "16 : predicted = [0.73 0.85 0.97] expected = [0.7385854968666068, 0.8478066248880931, 0.9516562220232765]\n", + "2014-12-30 16:00:00\n", + "17 : predicted = [0.87 0.99 0.97] expected = [0.8478066248880931, 0.9516562220232765, 0.934198746642793]\n", + "2014-12-30 17:00:00\n", + "18 : predicted = [0.94 0.92 0.86] expected = [0.9516562220232765, 0.934198746642793, 0.8876454789615038]\n", + "2014-12-30 18:00:00\n", + "19 : predicted = [0.94 0.89 0.82] expected = [0.934198746642793, 0.8876454789615038, 0.8294538943598924]\n", + "2014-12-30 19:00:00\n", + "20 : predicted = [0.88 0.82 0.71] expected = [0.8876454789615038, 0.8294538943598924, 0.7197851387645477]\n", + "2014-12-30 20:00:00\n", + "21 : predicted = [0.83 0.72 0.58] expected = [0.8294538943598924, 0.7197851387645477, 0.5747538048343777]\n", + "2014-12-30 21:00:00\n", + "22 : predicted = [0.72 0.58 0.47] expected = [0.7197851387645477, 0.5747538048343777, 0.4592658907788718]\n", + "2014-12-30 22:00:00\n", + "23 : predicted = [0.58 0.47 0.39] expected = [0.5747538048343777, 0.4592658907788718, 0.3858549686660697]\n", + "2014-12-30 23:00:00\n", + "24 : predicted = [0.46 0.38 0.34] expected = [0.4592658907788718, 0.3858549686660697, 0.34377797672336596]\n", + "2014-12-31 00:00:00\n", + "25 : predicted = [0.38 0.34 0.33] expected = [0.3858549686660697, 0.34377797672336596, 0.32542524619516544]\n", + "2014-12-31 01:00:00\n", + "26 : predicted = [0.36 0.34 0.34] expected = [0.34377797672336596, 0.32542524619516544, 0.33034914950760963]\n", + "2014-12-31 02:00:00\n", + "27 : predicted = [0.32 0.32 0.35] expected = [0.32542524619516544, 0.33034914950760963, 0.3706356311548791]\n", + "2014-12-31 03:00:00\n", + "28 : predicted = [0.32 0.36 0.47] expected = [0.33034914950760963, 0.3706356311548791, 0.470008952551477]\n", + "2014-12-31 04:00:00\n", + "29 : predicted = [0.37 0.48 0.65] expected = [0.3706356311548791, 0.470008952551477, 0.6145926589077886]\n", + "2014-12-31 05:00:00\n", + "30 : predicted = [0.48 0.64 0.75] expected = [0.470008952551477, 0.6145926589077886, 0.7247090420769919]\n", + "2014-12-31 06:00:00\n", + "31 : predicted = [0.63 0.73 0.79] expected = [0.6145926589077886, 0.7247090420769919, 0.786034019695613]\n", + "2014-12-31 07:00:00\n", + "32 : predicted = [0.71 0.76 0.79] expected = [0.7247090420769919, 0.786034019695613, 0.8012533572068039]\n", + "2014-12-31 08:00:00\n", + "33 : predicted = [0.79 0.82 0.83] expected = [0.786034019695613, 0.8012533572068039, 0.7994628469113696]\n", + "2014-12-31 09:00:00\n", + "34 : predicted = [0.82 0.83 0.81] expected = [0.8012533572068039, 0.7994628469113696, 0.780214861235452]\n", + "2014-12-31 10:00:00\n", + "35 : predicted = [0.8 0.78 0.76] expected = [0.7994628469113696, 0.780214861235452, 0.7587287376902416]\n", + "2014-12-31 11:00:00\n", + "36 : predicted = [0.77 0.75 0.74] expected = [0.780214861235452, 0.7587287376902416, 0.7367949865711727]\n", + "2014-12-31 12:00:00\n", + "37 : predicted = [0.77 0.76 0.76] expected = [0.7587287376902416, 0.7367949865711727, 0.7188898836168307]\n", + "2014-12-31 13:00:00\n", + "38 : predicted = [0.75 0.75 0.78] expected = [0.7367949865711727, 0.7188898836168307, 0.7273948075201431]\n", + "2014-12-31 14:00:00\n", + "39 : predicted = [0.73 0.75 0.87] expected = [0.7188898836168307, 0.7273948075201431, 0.8299015219337511]\n", + "2014-12-31 15:00:00\n", + "40 : predicted = [0.74 0.85 0.96] expected = [0.7273948075201431, 0.8299015219337511, 0.909579230080573]\n", + "2014-12-31 16:00:00\n", + "41 : predicted = [0.83 0.94 0.93] expected = [0.8299015219337511, 0.909579230080573, 0.855863921217547]\n", + "2014-12-31 17:00:00\n", + "42 : predicted = [0.94 0.93 0.88] expected = [0.909579230080573, 0.855863921217547, 0.7721575649059982]\n", + "2014-12-31 18:00:00\n", + "43 : predicted = [0.87 0.82 0.77] expected = [0.855863921217547, 0.7721575649059982, 0.7023276633840643]\n", + "2014-12-31 19:00:00\n", + "44 : predicted = [0.79 0.73 0.63] expected = [0.7721575649059982, 0.7023276633840643, 0.6195165622202325]\n", + "2014-12-31 20:00:00\n", + "45 : predicted = [0.7 0.59 0.46] expected = [0.7023276633840643, 0.6195165622202325, 0.5425246195165621]\n", + "2014-12-31 21:00:00\n", + "46 : predicted = [0.6 0.47 0.36] expected = [0.6195165622202325, 0.5425246195165621, 0.4735899731423454]\n", + "CPU times: user 12min 15s, sys: 2min 39s, total: 14min 54s\n", + "Wall time: 2min 36s\n" + ] + } + ], + "metadata": { + "scrolled": true + } + }, + { + "cell_type": "markdown", + "source": [ + "భవిష్యవాణీలను వాస్తవ లోడ్‌తో పోల్చండి\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 30, + "source": [ + "eval_df = pd.DataFrame(predictions, columns=['t+'+str(t) for t in range(1, HORIZON+1)])\n", + "eval_df['timestamp'] = test.index[0:len(test.index)-HORIZON+1]\n", + "eval_df = pd.melt(eval_df, id_vars='timestamp', value_name='prediction', var_name='h')\n", + "eval_df['actual'] = np.array(np.transpose(test_ts)).ravel()\n", + "eval_df[['prediction', 'actual']] = scaler.inverse_transform(eval_df[['prediction', 'actual']])\n", + "eval_df.head()" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timestamphpredictionactual
02014-12-30 00:00:00t+13,008.743,023.00
12014-12-30 01:00:00t+12,955.532,935.00
22014-12-30 02:00:00t+12,900.172,899.00
32014-12-30 03:00:00t+12,917.692,886.00
42014-12-30 04:00:00t+12,946.992,963.00
\n", + "
" + ], + "text/plain": [ + " timestamp h prediction actual\n", + "0 2014-12-30 00:00:00 t+1 3,008.74 3,023.00\n", + "1 2014-12-30 01:00:00 t+1 2,955.53 2,935.00\n", + "2 2014-12-30 02:00:00 t+1 2,900.17 2,899.00\n", + "3 2014-12-30 03:00:00 t+1 2,917.69 2,886.00\n", + "4 2014-12-30 04:00:00 t+1 2,946.99 2,963.00" + ] + }, + "metadata": {}, + "execution_count": 30 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "అన్ని అంచనాలపై **సగటు సాపేక్ష శాతం లోపం (MAPE)** ను లెక్కించండి\n", + "\n", + "$$MAPE = \\frac{1}{n} \\sum_{t=1}^{n}|\\frac{actual_t - predicted_t}{actual_t}|$$\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 31, + "source": [ + "if(HORIZON > 1):\n", + " eval_df['APE'] = (eval_df['prediction'] - eval_df['actual']).abs() / eval_df['actual']\n", + " print(eval_df.groupby('h')['APE'].mean())" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "h\n", + "t+1 0.01\n", + "t+2 0.01\n", + "t+3 0.02\n", + "Name: APE, dtype: float64\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 32, + "source": [ + "print('One step forecast MAPE: ', (mape(eval_df[eval_df['h'] == 't+1']['prediction'], eval_df[eval_df['h'] == 't+1']['actual']))*100, '%')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "One step forecast MAPE: 0.5570581332313952 %\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 33, + "source": [ + "print('Multi-step forecast MAPE: ', mape(eval_df['prediction'], eval_df['actual'])*100, '%')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Multi-step forecast MAPE: 1.1460048657704118 %\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "పరీక్ష సెట్ యొక్క మొదటి వారానికి భవిష్యవాణీలు మరియు వాస్తవాలను ప్లాట్ చేయండి.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 34, + "source": [ + "if(HORIZON == 1):\n", + " ## Plotting single step forecast\n", + " eval_df.plot(x='timestamp', y=['actual', 'prediction'], style=['r', 'b'], figsize=(15, 8))\n", + "\n", + "else:\n", + " ## Plotting multi step forecast\n", + " plot_df = eval_df[(eval_df.h=='t+1')][['timestamp', 'actual']]\n", + " for t in range(1, HORIZON+1):\n", + " plot_df['t+'+str(t)] = eval_df[(eval_df.h=='t+'+str(t))]['prediction'].values\n", + "\n", + " fig = plt.figure(figsize=(15, 8))\n", + " ax = plt.plot(plot_df['timestamp'], plot_df['actual'], color='red', linewidth=4.0)\n", + " ax = fig.add_subplot(111)\n", + " for t in range(1, HORIZON+1):\n", + " x = plot_df['timestamp'][(t-1):]\n", + " y = plot_df['t+'+str(t)][0:len(x)]\n", + " ax.plot(x, y, color='blue', linewidth=4*math.pow(.9,t), alpha=math.pow(0.8,t))\n", + " \n", + " ax.legend(loc='best')\n", + " \n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "No handles with labels found to put in legend.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని 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() + ``` + + ![full data](../../../../translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.te.png) + + ఇప్పుడు, మన 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() + ``` + + ![training and testing data](../../../../translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.te.png) + + + +### శిక్షణ కోసం డేటాను సిద్ధం చేయండి + +ఇప్పుడు, మీరు డేటాను ఫిల్టరింగ్ మరియు స్కేలింగ్ చేయడం ద్వారా శిక్షణ కోసం సిద్ధం చేయాలి. మీరు అవసరమైన కాలాలు మరియు కాలమ్స్ మాత్రమే ఉండేలా డేటాసెట్‌ను ఫిల్టర్ చేయండి, మరియు డేటా 0,1 మధ్యలో ప్రాజెక్ట్ అయ్యేలా స్కేలు చేయండి. + +1. ప్రాథమిక డేటాసెట్‌ను పై పేర్కొన్న కాలాలు మరియు 'load' కాలమ్ మరియు తేదీ మాత్రమే ఉండేలా ఫిల్టర్ చేయండి: [^2] + + ```python + train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']] + test = energy.copy()[energy.index >= test_start_dt][['load']] + + print('Training data shape: ', train.shape) + print('Test data shape: ', test.shape) + ``` + + ```output + Training data shape: (1416, 1) + Test data shape: (48, 1) + ``` + +2. శిక్షణ డేటాను (0, 1) పరిధిలో స్కేలు చేయండి: [^2] + + ```python + scaler = MinMaxScaler() + train['load'] = scaler.fit_transform(train) + ``` + +4. ఇప్పుడు, పరీక్ష డేటాను స్కేలు చేయండి: [^2] + + ```python + test['load'] = scaler.transform(test) + ``` + +### టైమ్-స్టెప్స్‌తో డేటాను సృష్టించండి [^1] + +SVR కోసం, మీరు ఇన్‌పుట్ డేటాను `[batch, timesteps]` రూపంలో మార్చాలి. కాబట్టి, మీరు ఉన్న `train_data` మరియు `test_data` ను పునఃరూపకల్పన చేసి, టైమ్‌స్టెప్స్‌కు సంబంధించిన కొత్త కొలతను కలిగి ఉండేలా చేస్తారు. + +```python +# నంపై అర్రేలుగా మార్చడం +train_data = train.values +test_data = test.values +``` + +ఈ ఉదాహరణకు, మనం `timesteps = 5` తీసుకుంటాము. కాబట్టి, మోడల్‌కు ఇన్‌పుట్స్ మొదటి 4 టైమ్‌స్టెప్స్ డేటా, అవుట్‌పుట్ 5వ టైమ్‌స్టెప్ డేటా అవుతుంది. + +```python +timesteps=5 +``` + +నెస్టెడ్ లిస్ట్ కంప్రెహెన్షన్ ఉపయోగించి శిక్షణ డేటాను 2D టెన్సర్‌గా మార్చడం: + +```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() +``` + +![training data prediction](../../../../translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.te.png) + +శిక్షణ డేటా కోసం MAPE ముద్రించండి + +```python +print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%') +``` + +```output +MAPE for training data: 1.7195710200875551 % +``` + +పరీక్ష డేటా కోసం అంచనాలను ప్లాట్ చేయండి + +```python +plt.figure(figsize=(10,3)) +plt.plot(test_timestamps, y_test, color = 'red', linewidth=2.0, alpha = 0.6) +plt.plot(test_timestamps, y_test_pred, color = 'blue', linewidth=0.8) +plt.legend(['Actual','Predicted']) +plt.xlabel('Timestamp') +plt.show() +``` + +![testing data prediction](../../../../translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.te.png) + +పరీక్ష డేటా కోసం MAPE ముద్రించండి + +```python +print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%') +``` + +```output +MAPE for testing data: 1.2623790187854018 % +``` + +🏆 మీరు పరీక్ష డేటాసెట్‌పై చాలా మంచి ఫలితాన్ని పొందారు! + +### మొత్తం డేటాసెట్‌పై మోడల్ పనితీరు తనిఖీ చేయండి [^1] + +```python +# లోడ్ విలువలను numpy అర్రేగా తీసుకోవడం +data = energy.copy().values + +# స్కేలింగ్ +data = scaler.transform(data) + +# మోడల్ ఇన్‌పుట్ అవసరానికి అనుగుణంగా 2D టెన్సర్‌గా మార్చడం +data_timesteps=np.array([[j for j in data[i:i+timesteps]] for i in range(0,len(data)-timesteps+1)])[:,:,0] +print("Tensor shape: ", data_timesteps.shape) + +# డేటా నుండి ఇన్‌పుట్లు మరియు అవుట్‌పుట్లను ఎంచుకోవడం +X, Y = data_timesteps[:,:timesteps-1],data_timesteps[:,[timesteps-1]] +print("X shape: ", X.shape,"\nY shape: ", Y.shape) +``` + +```output +Tensor shape: (26300, 5) +X shape: (26300, 4) +Y shape: (26300, 1) +``` + +```python +# మోడల్ అంచనాలు చేయండి +Y_pred = model.predict(X).reshape(-1,1) + +# వ్యతిరేక స్కేలు చేసి ఆకారాన్ని మార్చండి +Y_pred = scaler.inverse_transform(Y_pred) +Y = scaler.inverse_transform(Y) +``` + +```python +plt.figure(figsize=(30,8)) +plt.plot(Y, color = 'red', linewidth=2.0, alpha = 0.6) +plt.plot(Y_pred, color = 'blue', linewidth=0.8) +plt.legend(['Actual','Predicted']) +plt.xlabel('Timestamp') +plt.show() +``` + +![full data prediction](../../../../translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.te.png) + +```python +print('MAPE: ', mape(Y_pred, Y)*100, '%') +``` + +```output +MAPE: 2.0572089029888656 % +``` + + + +🏆 చాలా మంచి ప్లాట్లు, మంచి ఖచ్చితత్వం కలిగిన మోడల్‌ను చూపిస్తున్నాయి. బాగుంది! + +--- + +## 🚀సవాలు + +- మోడల్ సృష్టించే సమయంలో హైపర్‌పారామీటర్లను (gamma, C, epsilon) మార్చి పరీక్ష డేటాపై అంచనా వేయండి, ఏ హైపర్‌పారామీటర్ల సమూహం ఉత్తమ ఫలితాలు ఇస్తుందో చూడండి. ఈ హైపర్‌పారామీటర్ల గురించి మరింత తెలుసుకోవడానికి, మీరు [ఇక్కడ](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel) ఉన్న డాక్యుమెంటేషన్‌ను చూడవచ్చు. +- మోడల్ కోసం వేరే కర్నెల్ ఫంక్షన్లను ఉపయోగించి వాటి పనితీరును విశ్లేషించండి. సహాయక డాక్యుమెంటేషన్ [ఇక్కడ](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": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2012-01-01 00:00:002698.0
2012-01-01 01:00:002558.0
2012-01-01 02:00:002444.0
2012-01-01 03:00:002402.0
2012-01-01 04:00:002403.0
\n", + "
" + ], + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2698.0\n", + "2012-01-01 01:00:00 2558.0\n", + "2012-01-01 02:00:00 2444.0\n", + "2012-01-01 03:00:00 2402.0\n", + "2012-01-01 04:00:00 2403.0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "energy = load_data('../../data')[['load']]\n", + "energy.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "O0BWP13rGnh4" + }, + "source": [ + "### డేటాను ప్లాట్ చేయండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 486 + }, + "id": "hGaNPKu_Gidk", + "outputId": "7f89b326-9057-4f49-efbe-cb100ebdf76d" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAH1CAYAAABbUbvGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAC4S0lEQVR4nOzdd7wU1d0G8OfcQu9dQUA6goI0RQXFimL3jb3FrjHRmNg19hJrYo29d8WKFQQFC0WlSu8gvVzqBe695/1jd/bOzk7vs/t88/GTy+7M7NnZmTOn/o6QUoKIiIiIiIgIAIqiTgARERERERHFByuJRERERERElMFKIhEREREREWWwkkhEREREREQZrCQSERERERFRBiuJRERERERElFESdQKi0KxZM9m+ffuok0FERERERBSJX375Za2UsrneewVZSWzfvj0mTZoUdTKIiIiIiIgiIYRYbPQeh5sSERERERFRBiuJRERERERElMFKIhEREREREWUU5JxEIiIiIiIiANi1axeWLVuG8vLyqJMSiFq1aqFNmzYoLS21vQ8riUREREREVLCWLVuG+vXro3379hBCRJ0cX0kpsW7dOixbtgx77rmn7f043JSIiIiIiApWeXk5mjZtmncVRAAQQqBp06aOe0lZSSQiIiIiooKWjxVEhZvvxkoiERERERFRhOrVq+fLcW6//XY89NBDno/DSiIRERERERFlsJJIREREREQUA1JKXHvttejZsyf23ntvvPPOOwCALVu24LDDDkOfPn2w99574+OPP87sc88996BLly446KCDMHv2bF/SweimREREREREAO74dAZ+/2OTr8fca/cGuO24Hra2HT58OCZPnowpU6Zg7dq16N+/PwYPHozmzZvjww8/RIMGDbB27Vrsv//+OP744/Hrr7/i7bffxuTJk1FRUYE+ffqgb9++ntPMnkQiIiIiIqIYGDduHM444wwUFxejZcuWOPjggzFx4kRIKXHTTTdhn332weGHH47ly5dj1apVGDt2LE466STUqVMHDRo0wPHHH+9LOtiTSEREREREBNju8QvbG2+8gTVr1uCXX35BaWkp2rdv73hZCyfYk0hERERERBQDgwYNwjvvvIPKykqsWbMG33//PQYMGICysjK0aNECpaWlGD16NBYvXgwAGDx4MD766CNs374dmzdvxqeffupLOtiT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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IPuNor4eGwYY" + }, + "source": [ + "### శిక్షణ మరియు పరీక్షా డేటా సృష్టించండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "ysvsNyONGt0Q" + }, + "outputs": [], + "source": [ + "train_start_dt = '2014-11-01 00:00:00'\n", + "test_start_dt = '2014-12-30 00:00:00'" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 548 + }, + "id": "SsfdLoPyGy9w", + "outputId": "d6d6c25b-b1f4-47e5-91d1-707e043237d7" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAITCAYAAACqpFnEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9d7gkyVUmjL+RmVV1bdvpHitpRiOLJCQhCdCHkxAsEny4FQiz2mXNhzD74yfWsAgjFrMLfBghBAtIeCuMkLBCFllkRjNyYzTe9vS073v7+qrKjO+PyBMZmRURGSdv3+rb3fE+Tz/3dt2Kyqw0kXHO+573CCklIiIiIiIiIiIiIiIiIiIAILnQOxARERERERERERERERGxexCDxIiIiIiIiIiIiIiIiAiNGCRGREREREREREREREREaMQgMSIiIiIiIiIiIiIiIkIjBokRERERERERERERERERGjFIjIiIiIiIiIiIiIiIiNDILvQOXAhcccUV8vrrr7/QuxEREREREREREREREXFBcMstt5ySUh6y/e2yDBKvv/563HzzzRd6NyIiIiIiIiIiIiIiIi4IhBAPuf4W5aYRERERERERERERERERGjFIjIiIiIiIiIiIiIiIiNCIQWJERERERERERERERESExmVZkxgRERERERERERERcXljNBrhyJEj2NzcvNC7sqOYmZnBddddh16vFzwmBokREREREREREREREZcdjhw5gsXFRVx//fUQQlzo3dkRSClx+vRpHDlyBDfccEPwuCg3jYiIiIiIiIiIiIi47LC5uYmDBw9esgEiAAghcPDgQTZbGoPEiIiIiIiIiIiIiIjLEpdygEjo8h1jkBgRERERERERERERETFlLC0t4Td+4zfY4772a78WS0tL53+HDMQgMSIiIiIiIiIiIiIiYspwBYnj8dg77u1vfzv27du3Q3ulEI1rIiIiIiIiIiIiIiIipozXvOY1uO+++/Cc5zwHvV4PMzMz2L9/P+68807cfffd+KZv+iY88sgj2NzcxKtf/Wq86lWvAgBcf/31uPnmm7G6uoqXvexl+NIv/VJ85CMfwbXXXou//du/xezs7Lb3LQaJERERERERERERERGXNX7q72/HHUfPndfP/Lxr9uB/fv0znH//+Z//edx222349Kc/jfe///34uq/7Otx2223ahfT3fu/3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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \\\n", + " .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \\\n", + " .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XbFTqBw6G1Ch" + }, + "source": [ + "### శిక్షణ కోసం డేటాను సిద్ధం చేయడం\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ఇప్పుడు, మీరు మీ డేటాను శిక్షణ కోసం సిద్ధం చేయడానికి ఫిల్టరింగ్ మరియు స్కేలింగ్ చేయాలి.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cYivRdQpHDj3", + "outputId": "a138f746-461c-4fd6-bfa6-0cee094c4aa1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training data shape: (1416, 1)\n", + "Test data shape: (48, 1)\n" + ] + } + ], + "source": [ + "train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]\n", + "test = energy.copy()[energy.index >= test_start_dt][['load']]\n", + "\n", + "print('Training data shape: ', train.shape)\n", + "print('Test data shape: ', test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "డేటాను (0, 1) పరిధిలో ఉండేలా స్కేల్ చేయండి.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "3DNntGQnZX8G", + "outputId": "210046bc-7a66-4ccd-d70d-aa4a7309949c" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-11-01 00:00:000.101611
2014-11-01 01:00:000.065801
2014-11-01 02:00:000.046106
2014-11-01 03:00:000.042525
2014-11-01 04:00:000.059087
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-11-01 00:00:00 0.101611\n", + "2014-11-01 01:00:00 0.065801\n", + "2014-11-01 02:00:00 0.046106\n", + "2014-11-01 03:00:00 0.042525\n", + "2014-11-01 04:00:00 0.059087" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scaler = MinMaxScaler()\n", + "train['load'] = scaler.fit_transform(train)\n", + "train.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "26Yht-rzZexe", + "outputId": "20326077-a38a-4e78-cc5b-6fd7af95d301" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-12-30 00:00:000.329454
2014-12-30 01:00:000.290063
2014-12-30 02:00:000.273948
2014-12-30 03:00:000.268129
2014-12-30 04:00:000.302596
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-12-30 00:00:00 0.329454\n", + "2014-12-30 01:00:00 0.290063\n", + "2014-12-30 02:00:00 0.273948\n", + "2014-12-30 03:00:00 0.268129\n", + "2014-12-30 04:00:00 0.302596" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test['load'] = scaler.transform(test)\n", + "test.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x0n6jqxOQ41Z" + }, + "source": [ + "### టైమ్-స్టెప్స్‌తో డేటా సృష్టించడం\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fdmxTZtOQ8xs" + }, + "source": [ + "మా SVR కోసం, ఇన్‌పుట్ డేటాను `[batch, timesteps]` ఆకారంలోకి మార్చుతాము. కాబట్టి, మేము ఉన్న `train_data` మరియు `test_data` ను పునఃఆకారం చేస్తాము, తద్వారా ఒక కొత్త డైమెన్షన్ ఉంటుంది, ఇది టైమ్‌స్టెప్స్‌ను సూచిస్తుంది. మా ఉదాహరణకు, మేము `timesteps = 5` తీసుకుంటాము. కాబట్టి, మోడల్‌కు ఇన్‌పుట్స్ మొదటి 4 టైమ్‌స్టెప్స్‌కు సంబంధించిన డేటా ఉంటాయి, మరియు అవుట్‌పుట్ 5వ టైమ్‌స్టెప్‌కు సంబంధించిన డేటా ఉంటుంది.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "Rpju-Sc2HFm0" + }, + "outputs": [], + "source": [ + "# Converting to numpy arrays\n", + "\n", + "train_data = train.values\n", + "test_data = test.values" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Selecting the timesteps\n", + "\n", + "timesteps=5" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "O-JrsrsVJhUQ", + "outputId": "c90dbe71-bacc-4ec4-b452-f82fe5aefaef" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1412, 5)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Converting data to 2D tensor\n", + "\n", + "train_data_timesteps=np.array([[j for j in train_data[i:i+timesteps]] for i in range(0,len(train_data)-timesteps+1)])[:,:,0]\n", + "train_data_timesteps.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "exJD8AI7KE4g", + "outputId": "ce90260c-f327-427d-80f2-77307b5a6318" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(44, 5)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Converting test data to 2D tensor\n", + "\n", + "test_data_timesteps=np.array([[j for j in test_data[i:i+timesteps]] for i in range(0,len(test_data)-timesteps+1)])[:,:,0]\n", + "test_data_timesteps.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "2u0R2sIsLuq5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1412, 4) (1412, 1)\n", + "(44, 4) (44, 1)\n" + ] + } + ], + "source": [ + "x_train, y_train = train_data_timesteps[:,:timesteps-1],train_data_timesteps[:,[timesteps-1]]\n", + "x_test, y_test = test_data_timesteps[:,:timesteps-1],test_data_timesteps[:,[timesteps-1]]\n", + "\n", + "print(x_train.shape, y_train.shape)\n", + "print(x_test.shape, y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8wIPOtAGLZlh" + }, + "source": [ + "## SVR మోడల్ సృష్టించడం\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "EhA403BEPEiD" + }, + "outputs": [], + "source": [ + "# Create model using RBF kernel\n", + "\n", + "model = SVR(kernel='rbf',gamma=0.5, C=10, epsilon = 0.05)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GS0UA3csMbqp", + "outputId": "d86b6f05-5742-4c1d-c2db-c40510bd4f0d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "SVR(C=10, cache_size=200, coef0=0.0, degree=3, epsilon=0.05, gamma=0.5,\n", + " kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Fit model on training data\n", + "\n", + "model.fit(x_train, y_train[:,0])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Rz_x8S3UrlcF" + }, + "source": [ + "### మోడల్ అంచనా చేయండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XR0gnt3MnuYS", + "outputId": "157e40ab-9a23-4b66-a885-0d52a24b2364" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1412, 1) (44, 1)\n" + ] + } + ], + "source": [ + "# Making predictions\n", + "\n", + "y_train_pred = model.predict(x_train).reshape(-1,1)\n", + "y_test_pred = model.predict(x_test).reshape(-1,1)\n", + "\n", + "print(y_train_pred.shape, y_test_pred.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_2epncg-SGzr" + }, + "source": [ + "## మోడల్ పనితీరు విశ్లేషణ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1412 44\n" + ] + } + ], + "source": [ + "# Scaling the predictions\n", + "\n", + "y_train_pred = scaler.inverse_transform(y_train_pred)\n", + "y_test_pred = scaler.inverse_transform(y_test_pred)\n", + "\n", + "print(len(y_train_pred), len(y_test_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xmm_YLXhq7gV", + "outputId": "18392f64-4029-49ac-c71a-a4e2411152a1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1412 44\n" + ] + } + ], + "source": [ + "# Scaling the original values\n", + "\n", + "y_train = scaler.inverse_transform(y_train)\n", + "y_test = scaler.inverse_transform(y_test)\n", + "\n", + "print(len(y_train), len(y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "u3LBj93coHEi", + "outputId": "d4fd49e8-8c6e-4bb0-8ef9-ca0b26d725b4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1412 44\n" + ] + } + ], + "source": [ + "# Extract the timesteps for x-axis\n", + "\n", + "train_timestamps = energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)].index[timesteps-1:]\n", + "test_timestamps = energy[test_start_dt:].index[timesteps-1:]\n", + "\n", + "print(len(train_timestamps), len(test_timestamps))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(25,6))\n", + "plt.plot(train_timestamps, y_train, color = 'red', linewidth=2.0, alpha = 0.6)\n", + "plt.plot(train_timestamps, y_train_pred, color = 'blue', linewidth=0.8)\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.title(\"Training data prediction\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LnhzcnYtXHCm", + "outputId": "f5f0d711-f18b-4788-ad21-d4470ea2c02b" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAPE for training data: 1.7195710200875551 %\n" + ] + } + ], + "source": [ + "print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 225 + }, + "id": "53Q02FoqQH4V", + "outputId": "53e2d59b-5075-4765-ad9e-aed56c966583" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10,3))\n", + "plt.plot(test_timestamps, y_test, color = 'red', linewidth=2.0, alpha = 0.6)\n", + "plt.plot(test_timestamps, y_test_pred, color = 'blue', linewidth=0.8)\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "clOAUH-SXCJG", + "outputId": "a3aa85ff-126a-4a4a-cd9e-90b9cc465ef5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAPE for testing data: 1.2623790187854018 %\n" + ] + } + ], + "source": [ + "print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DHlKvVCId5ue" + }, + "source": [ + "## పూర్తి డేటాసెట్ అంచనా\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cOFJ45vreO0N", + "outputId": "35628e33-ecf9-4966-8036-f7ea86db6f16" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tensor shape: (26300, 5)\n", + "X shape: (26300, 4) \n", + "Y shape: (26300, 1)\n" + ] + } + ], + "source": [ + "# Extracting load values as numpy array\n", + "data = energy.copy().values\n", + "\n", + "# Scaling\n", + "data = scaler.transform(data)\n", + "\n", + "# Transforming to 2D tensor as per model input requirement\n", + "data_timesteps=np.array([[j for j in data[i:i+timesteps]] for i in range(0,len(data)-timesteps+1)])[:,:,0]\n", + "print(\"Tensor shape: \", data_timesteps.shape)\n", + "\n", + "# Selecting inputs and outputs from data\n", + "X, Y = data_timesteps[:,:timesteps-1],data_timesteps[:,[timesteps-1]]\n", + "print(\"X shape: \", X.shape,\"\\nY shape: \", Y.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "id": "ESSAdQgwexIi" + }, + "outputs": [], + "source": [ + "# Make model predictions\n", + "Y_pred = model.predict(X).reshape(-1,1)\n", + "\n", + "# Inverse scale and reshape\n", + "Y_pred = scaler.inverse_transform(Y_pred)\n", + "Y = scaler.inverse_transform(Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 328 + }, + "id": "M_qhihN0RVVX", + "outputId": "a89cb23e-1d35-437f-9d63-8b8907e12f80" + }, + "outputs": [ + { + "data": { + "image/png": "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/vvvj1/96ldYt25duq5TTjkFEydOBAAMHjwYRx55JA4//HCcfvrpWLp0KXr16oXnnnsOPXv2xJgxY7B+/XpccsklOProo3H00Ufjhx9+AABUV1fjzDPPxMEHH4zrr78eQgglv7WdkloIIYQQQgghhESX2lpg8mTghBMy2zZvDq8/hBBCCCGEEOXEYjF88803OPvsswEAkydPxsyZM9GjRw/06dMH22yzDSZMmICWlhYcf/zxOPPMMzFlyhTMmzcPs2fPRlVVFQ466CD88Y9/zKp3/fr1uOGGGzB69Gj06NEDNTU16NatG26++WZ06dIFd955JwDgyiuvxN/+9jeccMIJWL58Oc466yzMmTMH//73v3HCCSfggQcewNdff42+ffsq+b1UcBFCCCGEEEJIqfPMM0B1NfDxx2H3hBBCCCGEkJJG09TX6ebwtHnzZvTs2RNAwoPruuuuw9ixY3HMMcegR48eAIAhQ4Zg+vTp6fxadXV1WLBgAUaPHo3f/e53qKysxC677ILTTjstp/5x48bhpJNOStfVrVs3y3589913WTm76uvrsWnTJowePRqfJSNInHvuuejataun328HFVyEEEIIIYQQUupUV4fdA0IIIYQQQsoCRdH3PJHKwWVmyy23TH8WQuDFF1/EWWedlVVm0KBByvqh6zrGjRuHTp06KavTCebgIoQQQgghhBBCCCGEEEIIKWHOOussvPrqq2hrawMAzJ8/H42NjTjppJPw0UcfIR6PY82aNRgxYkTOsccddxxGjx6NJUuWAABqamoAAFtttRUaGhrS5c4880y8+OKL6e8ppdtJJ52EDz74AADwzTffoLa2VslvooKLEEIIIYQQQgghhBBCCCGkhLn++utx0EEH4cgjj8QhhxyCm266CbFYDBdddBH2228/HHTQQbj66qvxi1/8IufYHXbYAX369MHFF1+Mww8/HJdffjkA4De/+Q0GDBiAnj17YsyYMXjhhRcwceJEHHbYYTjooIPQq1cvAMCDDz6I0aNH4+CDD8Znn32GPfbYQ8lv0kQY/nKSHHXUUWLixIlhd4MQQgghhBBCipubbnLe37t3YfpBCCGEEEJIiTFnzhwceOCBYXejJLA6l5qmTRJCHGVVnh5chBBCCCGEEFLuRNjwkRBCCCGEEEKsoIKLEEIIIYQQQgghhBBCCCGEFBVUcBFCCCGE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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(30,8))\n", + "plt.plot(Y, color = 'red', linewidth=2.0, alpha = 0.6)\n", + "plt.plot(Y_pred, color = 'blue', linewidth=1)\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AcN7pMYXVGTK", + "outputId": "7e1c2161-47ce-496c-9d86-7ad9ae0df770" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAPE: 2.0572089029888656 %\n" + ] + } + ], + "source": [ + "print('MAPE: ', mape(Y_pred, Y)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "Recurrent_Neural_Networks.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + }, + "coopTranslator": { + "original_hash": "f8f3967282314d3995245835bdaa8418", + "translation_date": "2025-12-19T17:35:07+00:00", + "source_file": "7-TimeSeries/3-SVR/solution/notebook.ipynb", + "language_code": "te" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/te/7-TimeSeries/3-SVR/working/notebook.ipynb b/translations/te/7-TimeSeries/3-SVR/working/notebook.ipynb new file mode 100644 index 000000000..1ed8c6a9f --- /dev/null +++ b/translations/te/7-TimeSeries/3-SVR/working/notebook.ipynb @@ -0,0 +1,711 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "fv9OoQsMFk5A" + }, + "source": [ + "# సపోర్ట్ వెక్టర్ రిగ్రెసర్ ఉపయోగించి టైమ్ సిరీస్ ప్రిడిక్షన్\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ఈ నోట్‌బుక్‌లో, మేము ఎలా చేయాలో చూపిస్తాము:\n", + "\n", + "- 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": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2012-01-01 00:00:002698.0
2012-01-01 01:00:002558.0
2012-01-01 02:00:002444.0
2012-01-01 03:00:002402.0
2012-01-01 04:00:002403.0
\n", + "
" + ], + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2698.0\n", + "2012-01-01 01:00:00 2558.0\n", + "2012-01-01 02:00:00 2444.0\n", + "2012-01-01 03:00:00 2402.0\n", + "2012-01-01 04:00:00 2403.0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "energy = load_data('../../data')[['load']]\n", + "energy.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "O0BWP13rGnh4" + }, + "source": [ + "### డేటాను ప్లాట్ చేయండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 486 + }, + "id": "hGaNPKu_Gidk", + "outputId": "7f89b326-9057-4f49-efbe-cb100ebdf76d" + }, + "outputs": [], + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IPuNor4eGwYY" + }, + "source": [ + "### శిక్షణ మరియు పరీక్ష డేటా సృష్టించండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ysvsNyONGt0Q" + }, + "outputs": [], + "source": [ + "train_start_dt = '2014-11-01 00:00:00'\n", + "test_start_dt = '2014-12-30 00:00:00'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 548 + }, + "id": "SsfdLoPyGy9w", + "outputId": "d6d6c25b-b1f4-47e5-91d1-707e043237d7" + }, + "outputs": [], + "source": [ + "energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \\\n", + " .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \\\n", + " .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XbFTqBw6G1Ch" + }, + "source": [ + "### శిక్షణ కోసం డేటాను సిద్ధం చేయడం\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ఇప్పుడు, మీరు మీ డేటాను శిక్షణ కోసం సిద్ధం చేయడానికి ఫిల్టరింగ్ మరియు స్కేలింగ్ చేయాలి.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cYivRdQpHDj3", + "outputId": "a138f746-461c-4fd6-bfa6-0cee094c4aa1" + }, + "outputs": [], + "source": [ + "train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]\n", + "test = energy.copy()[energy.index >= test_start_dt][['load']]\n", + "\n", + "print('Training data shape: ', train.shape)\n", + "print('Test data shape: ', test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "డేటాను (0, 1) పరిధిలో ఉండేలా స్కేల్ చేయండి.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "3DNntGQnZX8G", + "outputId": "210046bc-7a66-4ccd-d70d-aa4a7309949c" + }, + "outputs": [], + "source": [ + "scaler = MinMaxScaler()\n", + "train['load'] = scaler.fit_transform(train)\n", + "train.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "26Yht-rzZexe", + "outputId": "20326077-a38a-4e78-cc5b-6fd7af95d301" + }, + "outputs": [], + "source": [ + "test['load'] = scaler.transform(test)\n", + "test.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x0n6jqxOQ41Z" + }, + "source": [ + "### టైమ్-స్టెప్స్‌తో డేటా సృష్టించడం\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fdmxTZtOQ8xs" + }, + "source": [ + "మా SVR కోసం, ఇన్‌పుట్ డేటాను `[batch, timesteps]` ఆకారంలోకి మార్చుతాము. కాబట్టి, మేము ఉన్న `train_data` మరియు `test_data` ను పునఃఆకారంలోకి మార్చుతాము, అందులో ఒక కొత్త డైమెన్షన్ ఉంటుంది, అది timesteps ను సూచిస్తుంది. మా ఉదాహరణకు, మేము `timesteps = 5` తీసుకుంటాము. కాబట్టి, మోడల్‌కు ఇన్‌పుట్‌లు మొదటి 4 timesteps కోసం డేటా ఉంటాయి, మరియు అవుట్‌పుట్ 5వ timestep కోసం డేటా ఉంటుంది.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Rpju-Sc2HFm0" + }, + "outputs": [], + "source": [ + "# Converting to numpy arrays\n", + "\n", + "train_data = train.values\n", + "test_data = test.values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Selecting the timesteps\n", + "\n", + "timesteps=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "O-JrsrsVJhUQ", + "outputId": "c90dbe71-bacc-4ec4-b452-f82fe5aefaef" + }, + "outputs": [], + "source": [ + "# Converting data to 2D tensor\n", + "\n", + "train_data_timesteps=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "exJD8AI7KE4g", + "outputId": "ce90260c-f327-427d-80f2-77307b5a6318" + }, + "outputs": [], + "source": [ + "# Converting test data to 2D tensor\n", + "\n", + "test_data_timesteps=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2u0R2sIsLuq5" + }, + "outputs": [], + "source": [ + "x_train, y_train = None\n", + "x_test, y_test = None\n", + "\n", + "print(x_train.shape, y_train.shape)\n", + "print(x_test.shape, y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8wIPOtAGLZlh" + }, + "source": [ + "## SVR మోడల్ సృష్టించడం\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EhA403BEPEiD" + }, + "outputs": [], + "source": [ + "# Create model using RBF kernel\n", + "\n", + "model = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GS0UA3csMbqp", + "outputId": "d86b6f05-5742-4c1d-c2db-c40510bd4f0d" + }, + "outputs": [], + "source": [ + "# Fit model on training data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Rz_x8S3UrlcF" + }, + "source": [ + "### మోడల్ అంచనా చేయండి\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XR0gnt3MnuYS", + "outputId": "157e40ab-9a23-4b66-a885-0d52a24b2364" + }, + "outputs": [], + "source": [ + "# Making predictions\n", + "\n", + "y_train_pred = None\n", + "y_test_pred = None" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_2epncg-SGzr" + }, + "source": [ + "## మోడల్ పనితీరు విశ్లేషణ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Scaling the predictions\n", + "\n", + "y_train_pred = scaler.inverse_transform(y_train_pred)\n", + "y_test_pred = scaler.inverse_transform(y_test_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xmm_YLXhq7gV", + "outputId": "18392f64-4029-49ac-c71a-a4e2411152a1" + }, + "outputs": [], + "source": [ + "# Scaling the original values\n", + "\n", + "y_train = scaler.inverse_transform(y_train)\n", + "y_test = scaler.inverse_transform(y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "u3LBj93coHEi", + "outputId": "d4fd49e8-8c6e-4bb0-8ef9-ca0b26d725b4" + }, + "outputs": [], + "source": [ + "# Extract the timesteps for x-axis\n", + "\n", + "train_timestamps = None\n", + "test_timestamps = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(25,6))\n", + "# plot original output\n", + "# plot predicted output\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.title(\"Training data prediction\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LnhzcnYtXHCm", + "outputId": "f5f0d711-f18b-4788-ad21-d4470ea2c02b" + }, + "outputs": [], + "source": [ + "print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 225 + }, + "id": "53Q02FoqQH4V", + "outputId": "53e2d59b-5075-4765-ad9e-aed56c966583" + }, + "outputs": [], + "source": [ + "plt.figure(figsize=(10,3))\n", + "# plot original output\n", + "# plot predicted output\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "clOAUH-SXCJG", + "outputId": "a3aa85ff-126a-4a4a-cd9e-90b9cc465ef5" + }, + "outputs": [], + "source": [ + "print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DHlKvVCId5ue" + }, + "source": [ + "## పూర్తి డేటాసెట్ అంచనా\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cOFJ45vreO0N", + "outputId": "35628e33-ecf9-4966-8036-f7ea86db6f16" + }, + "outputs": [], + "source": [ + "# Extracting load values as numpy array\n", + "data = None\n", + "\n", + "# Scaling\n", + "data = None\n", + "\n", + "# Transforming to 2D tensor as per model input requirement\n", + "data_timesteps=None\n", + "\n", + "# Selecting inputs and outputs from data\n", + "X, Y = None, None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ESSAdQgwexIi" + }, + "outputs": [], + "source": [ + "# Make model predictions\n", + "\n", + "# Inverse scale and reshape\n", + "Y_pred = None\n", + "Y = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 328 + }, + "id": "M_qhihN0RVVX", + "outputId": "a89cb23e-1d35-437f-9d63-8b8907e12f80" + }, + "outputs": [], + "source": [ + "plt.figure(figsize=(30,8))\n", + "# plot original output\n", + "# plot predicted output\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AcN7pMYXVGTK", + "outputId": "7e1c2161-47ce-496c-9d86-7ad9ae0df770" + }, + "outputs": [], + "source": [ + "print('MAPE: ', mape(Y_pred, Y)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారులు కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "Recurrent_Neural_Networks.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + }, + "coopTranslator": { + "original_hash": "e86ce102239a14c44585623b9b924a74", + "translation_date": "2025-12-19T17: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 @@ + +# టైమ్ సిరీస్ ఫోర్కాస్టింగ్ పరిచయం + +టైమ్ సిరీస్ ఫోర్కాస్టింగ్ అంటే ఏమిటి? ఇది గత ధోరణులను విశ్లేషించి భవిష్యత్తు సంఘటనలను అంచనా వేయడం. + +## ప్రాంతీయ విషయం: ప్రపంచవ్యాప్తంగా విద్యుత్ వినియోగం ✨ + +ఈ రెండు పాఠాలలో, మీరు టైమ్ సిరీస్ ఫోర్కాస్టింగ్‌కు పరిచయం అవుతారు, ఇది యంత్ర అభ్యాసంలో కొంతమేరకు తక్కువగా తెలిసిన ప్రాంతం అయినప్పటికీ, పరిశ్రమ మరియు వ్యాపార అనువర్తనాల కోసం చాలా విలువైనది, ఇతర రంగాలతో పాటు. న్యూరల్ నెట్‌వర్క్‌లను ఈ మోడల్స్ యొక్క ఉపయోగకరతను పెంచడానికి ఉపయోగించవచ్చు, కానీ మేము వాటిని క్లాసికల్ యంత్ర అభ్యాసం సందర్భంలో అధ్యయనం చేస్తాము, ఎందుకంటే మోడల్స్ గత ఆధారంగా భవిష్యత్తు పనితీరును అంచనా వేయడంలో సహాయపడతాయి. + +మా ప్రాంతీయ దృష్టి ప్రపంచంలో విద్యుత్ వినియోగం మీద ఉంది, ఇది గత లోడ్ నమూనాల ఆధారంగా భవిష్యత్తు విద్యుత్ వినియోగాన్ని అంచనా వేయడాన్ని నేర్చుకోవడానికి ఆసక్తికరమైన డేటాసెట్. ఈ రకమైన ఫోర్కాస్టింగ్ వ్యాపార వాతావరణంలో ఎంతగానో సహాయకరమవుతుందో మీరు చూడవచ్చు. + +![electric grid](../../../translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.te.jpg) + +ఫోటో [Peddi Sai hrithik](https://unsplash.com/@shutter_log?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) ద్వారా రాజస్థాన్‌లో రోడ్డుపై ఉన్న విద్యుత్ టవర్స్ యొక్క [Unsplash](https://unsplash.com/s/photos/electric-india?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) + +## పాఠాలు + +1. [టైమ్ సిరీస్ ఫోర్కాస్టింగ్ పరిచయం](1-Introduction/README.md) +2. [ARIMA టైమ్ సిరీస్ మోడల్స్ నిర్మాణం](2-ARIMA/README.md) +3. [టైమ్ సిరీస్ ఫోర్కాస్టింగ్ కోసం సపోర్ట్ వెక్టర్ రిగ్రెసర్ నిర్మాణం](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 @@ + +# రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ మరియు క్యూ-లెర్నింగ్ పరిచయం + +![మిషన్ లెర్నింగ్‌లో రీన్ఫోర్స్‌మెంట్ యొక్క సారాంశం స్కెచ్‌నోట్‌లో](../../../../translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.te.png) +> స్కెచ్‌నోట్ [టోమోమీ ఇమురా](https://www.twitter.com/girlie_mac) ద్వారా + +రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ మూడు ముఖ్యమైన భావనలను కలిగి ఉంటుంది: ఏజెంట్, కొన్ని స్టేట్స్, మరియు ప్రతి స్టేట్‌కు చర్యల సమూహం. ఒక నిర్దిష్ట స్టేట్‌లో చర్యను అమలు చేయడం ద్వారా, ఏజెంట్‌కు రివార్డు ఇవ్వబడుతుంది. మళ్లీ కంప్యూటర్ గేమ్ సూపర్ మారియోని ఊహించండి. మీరు మారియో, మీరు ఒక గేమ్ లెవెల్లో ఉన్నారు, ఒక క్లిఫ్ ఎడ్జ్ పక్కన నిలబడి ఉన్నారు. మీ పై ఒక నాణెం ఉంది. మీరు మారియోగా, ఒక గేమ్ లెవెల్లో, ఒక నిర్దిష్ట స్థితిలో ఉన్నారు ... అది మీ స్టేట్. కుడి వైపు ఒక అడుగు కదలడం (చర్య) మీను ఎడ్జ్ మీదకు తీసుకెళ్తుంది, మరియు అది తక్కువ సంఖ్యా స్కోర్ ఇస్తుంది. అయితే, జంప్ బటన్ నొక్కడం ద్వారా మీరు ఒక పాయింట్ పొందగలరు మరియు మీరు బతుకుతారు. అది ఒక సానుకూల ఫలితం మరియు అది మీకు సానుకూల సంఖ్యా స్కోర్ ఇవ్వాలి. + +రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ మరియు సిమ్యులేటర్ (గేమ్) ఉపయోగించి, మీరు గేమ్ ఆడటం నేర్చుకోవచ్చు, బతుకుతూ ఎక్కువ పాయింట్లు సాధించడానికి రివార్డును గరిష్టం చేయడానికి. + +[![రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ పరిచయం](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) + +> 🎥 పై చిత్రాన్ని క్లిక్ చేసి డ్మిత్రి రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ గురించి మాట్లాడుతున్నది వినండి + +## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) + +## ముందస్తు అవసరాలు మరియు సెటప్ + +ఈ పాఠంలో, మనం పాథాన్‌లో కొంత కోడ్‌తో ప్రయోగాలు చేస్తాము. మీరు ఈ పాఠం నుండి జూపిటర్ నోట్‌బుక్ కోడ్‌ను మీ కంప్యూటర్ లేదా క్లౌడ్‌లో ఎక్కడైనా నడపగలగాలి. + +మీరు [పాఠం నోట్‌బుక్](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) తెరవవచ్చు మరియు ఈ పాఠం ద్వారా నడవవచ్చు. + +> **గమనిక:** మీరు ఈ కోడ్‌ను క్లౌడ్ నుండి తెరవుతున్నట్లయితే, మీరు కూడా [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ఫైల్‌ను పొందాలి, ఇది నోట్‌బుక్ కోడ్‌లో ఉపయోగించబడుతుంది. దాన్ని నోట్‌బుక్ ఉన్న అదే డైరెక్టరీలో జోడించండి. + +## పరిచయం + +ఈ పాఠంలో, మనం **[పీటర్ మరియు వోల్ఫ్](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** ప్రపంచాన్ని అన్వేషిస్తాము, ఇది రష్యన్ కంపోజర్ [సెర్గే ప్రోకోఫీవ్](https://en.wikipedia.org/wiki/Sergei_Prokofiev) యొక్క సంగీత కథనంతో ప్రేరణ పొందింది. మనం **రీన్ఫోర్స్‌మెంట్ లెర్నింగ్** ఉపయోగించి, పీటర్ తన పరిసరాలను అన్వేషించి, రుచికరమైన ఆపిల్స్ సేకరించి, వోల్ఫ్‌ను కలవకుండా ఉండేందుకు సహాయపడతాము. + +**రీన్ఫోర్స్‌మెంట్ లెర్నింగ్** (RL) అనేది ఒక లెర్నింగ్ సాంకేతికత, ఇది మనకు ఒక **ఏజెంట్** యొక్క ఆప్టిమల్ ప్రవర్తనను కొన్ని **పరిసరాల్లో** అనేక ప్రయోగాలు నిర్వహించడం ద్వారా నేర్చుకోవడానికి అనుమతిస్తుంది. ఈ పరిసరంలో ఏజెంట్‌కు ఒక **లక్ష్యం** ఉండాలి, ఇది **రివార్డ్ ఫంక్షన్** ద్వారా నిర్వచించబడుతుంది. + +## పరిసరం + +సరళత కోసం, మనం పీటర్ ప్రపంచాన్ని `width` x `height` పరిమాణం గల చతురస్ర బోర్డు అని పరిగణిద్దాం, ఇలా: + +![పీటర్ పరిసరం](../../../../translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.te.png) + +ఈ బోర్డు లో ప్రతి సెల్: + +* **భూమి**, పీటర్ మరియు ఇతర జీవులు నడవగలిగే స్థలం. +* **నీరు**, ఇది మీరు స్పష్టంగా నడవలేరు. +* **చెట్టు** లేదా **గడ్డి**, మీరు విశ్రాంతి తీసుకునే స్థలం. +* **ఆపిల్**, ఇది పీటర్ తనకు ఆహారం కోసం కనుగొనడం ఇష్టపడే వస్తువు. +* **వోల్ఫ్**, ఇది ప్రమాదకరం మరియు దూరంగా ఉండాలి. + +ఈ పరిసరంతో పని చేయడానికి ప్రత్యేకమైన పాథాన్ మాడ్యూల్ [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ఉంది. ఈ కోడ్ మన భావనలను అర్థం చేసుకోవడానికి ముఖ్యమైనది కాదని, మనం మాడ్యూల్‌ను దిగుమతి చేసుకుని నమూనా బోర్డును సృష్టించడానికి ఉపయోగిస్తాము (కోడ్ బ్లాక్ 1): + +```python +from rlboard import * + +width, height = 8,8 +m = Board(width,height) +m.randomize(seed=13) +m.plot() +``` + +ఈ కోడ్ పై ఉన్న పరిసర చిత్రాన్ని ముద్రించాలి. + +## చర్యలు మరియు పాలసీ + +మన ఉదాహరణలో, పీటర్ లక్ష్యం ఆపిల్ కనుగొనడం, వోల్ఫ్ మరియు ఇతర అడ్డంకులను దూరంగా ఉంచడం. దీని కోసం, అతను సాదారణంగా నడవగలడు ఆపిల్ కనుగొనేవరకు. + +కాబట్టి, ఏ స్థితిలోనైనా, అతను క్రింది చర్యలలో ఒకదాన్ని ఎంచుకోవచ్చు: పైకి, కిందకి, ఎడమకి, కుడికి. + +మనం ఆ చర్యలను డిక్షనరీగా నిర్వచించి, వాటిని సంబంధిత కోఆర్డినేట్ మార్పుల జంటలకు మ్యాప్ చేస్తాము. ఉదాహరణకు, కుడికి కదలడం (`R`) జంట `(1,0)`కి సరిపోతుంది. (కోడ్ బ్లాక్ 2): + +```python +actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) } +action_idx = { a : i for i,a in enumerate(actions.keys()) } +``` + +మొత్తం చెప్పాలంటే, ఈ సన్నివేశం యొక్క వ్యూహం మరియు లక్ష్యం ఇలా ఉన్నాయి: + +- **వ్యూహం**, మన ఏజెంట్ (పీటర్) యొక్క, ఒక **పాలసీ** ద్వారా నిర్వచించబడుతుంది. పాలసీ అనేది ఏదైనా స్టేట్‌లో చర్యను తిరిగి ఇచ్చే ఫంక్షన్. మన సందర్భంలో, సమస్య యొక్క స్టేట్ బోర్డు ద్వారా ప్రాతినిధ్యం వహిస్తుంది, ఇందులో ప్లేయర్ ప్రస్తుత స్థానం కూడా ఉంటుంది. + +- **లక్ష్యం**, రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ యొక్క, చివరికి మంచి పాలసీ నేర్చుకోవడం, ఇది సమస్యను సమర్థవంతంగా పరిష్కరించడానికి అనుమతిస్తుంది. అయితే, ప్రాథమికంగా, మనం సులభమైన పాలసీ అయిన **రాండమ్ వాక్**ను పరిగణిద్దాం. + +## రాండమ్ వాక్ + +ముందుగా మన సమస్యను రాండమ్ వాక్ వ్యూహం అమలు చేసి పరిష్కరించుకుందాం. రాండమ్ వాక్‌తో, మనం అనుమతించబడిన చర్యల నుండి యాదృచ్ఛికంగా తదుపరి చర్యను ఎంచుకుంటాము, ఆపిల్ చేరేవరకు (కోడ్ బ్లాక్ 3). + +1. క్రింది కోడ్‌తో రాండమ్ వాక్‌ను అమలు చేయండి: + + ```python + def random_policy(m): + return random.choice(list(actions)) + + def walk(m,policy,start_position=None): + n = 0 # దశల సంఖ్య + # ప్రారంభ స్థానాన్ని సెట్ చేయండి + if start_position: + m.human = start_position + else: + m.random_start() + while True: + if m.at() == Board.Cell.apple: + return n # విజయం! + if m.at() in [Board.Cell.wolf, Board.Cell.water]: + return -1 # నక్క చేత తినబడింది లేదా మునిగిపోయింది + while True: + a = actions[policy(m)] + new_pos = m.move_pos(m.human,a) + if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water: + m.move(a) # నిజమైన కదలికను చేయండి + break + n+=1 + + walk(m,random_policy) + ``` + + `walk` కాల్ సంబంధిత మార్గం పొడవును తిరిగి ఇవ్వాలి, ఇది ఒక్కో రన్‌లో మారవచ్చు. + +1. వాక్ ప్రయోగాన్ని అనేక సార్లు (ఉదా: 100) నడిపించి, ఫలిత గణాంకాలను ముద్రించండి (కోడ్ బ్లాక్ 4): + + ```python + def print_statistics(policy): + s,w,n = 0,0,0 + for _ in range(100): + z = walk(m,policy) + if z<0: + w+=1 + else: + s += z + n += 1 + print(f"Average path length = {s/n}, eaten by wolf: {w} times") + + print_statistics(random_policy) + ``` + + గమనించండి, మార్గం సగటు పొడవు సుమారు 30-40 అడుగులు, ఇది చాలా ఎక్కువ, ఎందుకంటే సమీప ఆపిల్ దూరం సగటు 5-6 అడుగులు మాత్రమే. + + మీరు రాండమ్ వాక్ సమయంలో పీటర్ కదలిక ఎలా ఉందో కూడా చూడవచ్చు: + + ![పీటర్ రాండమ్ వాక్](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + +## రివార్డ్ ఫంక్షన్ + +మన పాలసీని మరింత తెలివైనదిగా చేయడానికి, ఏ కదలికలు "మంచివి" అన్నది అర్థం చేసుకోవాలి. దీని కోసం, మన లక్ష్యాన్ని నిర్వచించాలి. + +లక్ష్యం **రివార్డ్ ఫంక్షన్** రూపంలో నిర్వచించవచ్చు, ఇది ప్రతి స్టేట్‌కు కొంత స్కోర్ విలువను ఇస్తుంది. సంఖ్య ఎక్కువైతే, రివార్డ్ ఫంక్షన్ మెరుగైనది. (కోడ్ బ్లాక్ 5) + +```python +move_reward = -0.1 +goal_reward = 10 +end_reward = -10 + +def reward(m,pos=None): + pos = pos or m.human + if not m.is_valid(pos): + return end_reward + x = m.at(pos) + if x==Board.Cell.water or x == Board.Cell.wolf: + return end_reward + if x==Board.Cell.apple: + return goal_reward + return move_reward +``` + +రివార్డ్ ఫంక్షన్‌ల గురించి ఆసక్తికరమైన విషయం ఏమిటంటే, చాలా సందర్భాల్లో, *మనం గేమ్ చివరలోనే పెద్ద రివార్డ్ పొందుతాము*. అంటే మన అల్గోరిథం "మంచి" అడుగులను గుర్తుంచుకోవాలి, అవి చివరలో సానుకూల రివార్డ్‌కు దారితీస్తాయి, మరియు వాటి ప్రాధాన్యతను పెంచాలి. అలాగే, చెడు ఫలితాలకు దారితీసే అన్ని కదలికలను నిరుత్సాహపరచాలి. + +## క్యూ-లెర్నింగ్ + +ఇక్కడ మనం చర్చించబోయే అల్గోరిథం **క్యూ-లెర్నింగ్** అని పిలవబడుతుంది. ఈ అల్గోరిథంలో, పాలసీ ఒక ఫంక్షన్ (లేదా డేటా స్ట్రక్చర్) ద్వారా నిర్వచించబడుతుంది, దీనిని **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)`. + +![పీటర్ పరిసరం](../../../../translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.te.png) + +ప్రతి సెల్ మధ్యలో ఒక "అర్రో" ఉంటుంది, ఇది ప్రాధాన్యత ఉన్న కదలిక దిశను సూచిస్తుంది. అన్ని దిశలు సమానంగా ఉన్నప్పుడు, ఒక బిందువు ప్రదర్శించబడుతుంది. + +ఇప్పుడు మనం సిమ్యులేషన్ నడిపించి, మన పరిసరాన్ని అన్వేషించి, 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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAFpCAYAAAC8p8I3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd3xUxd7H8c9sS7KbShJCL1IEBAURFEUBxXoVVFBARS7YQETgiooFsaGAXgUsIGIDHzuCXiuKICDKpYoiHUJJAmkk2Wzfc+b5YzcRrgSQZHM2ZN6+8kr27ObMlyX8nMyZmSOklCiKoig1h8noAIqiKMrfowq3oihKDaMKt6IoSg2jCreiKEoNowq3oihKDaMKt6IoSg0TscIthLhCCLFVCLFDCDE+Uu0oiqLUNiIS87iFEGZgG3ApsB9YDQySUv5R5Y0piqLUMpHqcXcFdkgpd0kp/cAHQN8ItaUoilKrRKpwNwT2HfZ4f/iYoiiKUkmWCJ1XHOXYEWMyQog7gTsBrFZr5zPPPDNCUSrP5/PhdDpJS0szOkqFioqKsFqtOBwOo6NUKCcnh7p162I2m42OUqG9e/fSpEkTo2NUKBgMkpeXR/369Y2OUqHS0lKCwSDJyclGR6lQXl4eiYmJxMTEGB2lQps2bcLj8RytloKUsso/gG7At4c9fgh4qKLX161bV0az7du3y9mzZxsd45gWLFggV65caXSMY3rqqadkYWGh0TEqpOu6vOeee4yOcUwFBQVy0qRJRsc4phUrVsiFCxcaHeOYZs2aJbdv3250jGMK18Wj1sxIDZWsBloJIZoLIWzAQODzCLWlKIpSq0SkcEspg8A9wLfAZuAjKeWmSLSlKMqpZf369Xi9XqNjRLVIjXEjpfwK+CpS51cU5dSSlZXFq6++SkxMDPPnz6dVq1YMGTLE6FhRSa2cVBTFcFJKcnJy2LZtG8OHD6d79+589NFHZdfIlP+hCreiKIYLBAJMnjyZF198kX/961+cccYZDBgwgLfeesvoaFEpYkMliqIoJ8pmszF+/Hhuu+02OnTowMcff8z333/PV1+p0dajqXE97l27dvHRRx8ZHUNRlCrWtGlT+vfvj9lsZsqUKdx7771GR4paNarH3adPH2JjYzn33HPp0KEDS5YsiepFMYqinLj09HTuuOMO9u3bx6JFi+jVq5fRkaJWjelx79q1i9jYWGbNmkW/fv24/PLL+f33342OpShKFWvcuDHffPMN/fv3NzpKldu0aRO6rlf6PDWmcK9du5auXbtSUlLCW2+9Rb169Vi+fLm66qwop6D4+HjOPPNMVq1aZXSUKrNkyRLee+89NE2r9LlqzFDJDTfcQIcOHThw4AD169dn3Lhx5OTkIMTRl/IrilJzORwOLrjgAn744QfOPfdco+NU2s8//8zPP//MuHHjsFqtlT5fjelxQ+j/WFdffTUul4sDBw4wfPhwioqKjI6lKEoExMTEIKXE7/cbHeWkSSnZsmUL8+bNY/To0aSkpFTJeWtU4U5LS6Nnz55MmDCBjIwM3n77bSZMmMCOHTuMjqYoShW75JJLcDqd/PLLL0ZHOWmrVq1i2rRpvPLKK1W6c2eNKtxlyoZHkpOTGT16NPPmzSMzM9PYUIqiKIdZsmQJ33//PS+88EKVD+nWyMJ9uJYtWzJ06FAee+wx3G53xNurigsLkSSlrJKr1pFUEzLquq4ufEeB4cOH8/rrr1fLv+2qIqVkw4YN/PDDD4wcORK73V7lbdT4wg3QrFkzZs2axa233kpOTk7E2snKyqJfv35s3ryZgoKCiLVTGevXr+eOO+5gy5YtUfnDHgwGee+993jhhRfYsmVLVBZwp9PJxIkT+fLLL9m1a5fRcaJWdnZ2xMefmzZtihCC3bt3R7SdqrRlyxamT5/OhAkTqmxM+3+dEoUbwG6389JLL/HSSy+xffv2iLTx+eef89JLLzFmzBhmz54dkTYq6/PPP2f06NEMGDCAdevWGR3nL9xuN4WFhTRt2pSLL744Krfv3LFjB927d2fDhg1cd911RseJOkVFRcyZM4eXXnqJ2bNn88UXX0S0vbfffptbbrklom1UlWXLljFnzhzeeOMNbDZbxNqpMdMBT0T9+vUZOnQob7zxBmPHjiUjI6NKzz9ixAjGjBmDpml88sknbNmy5aTPFRcXx8yZM6t87Ou+++5j1KhR6LrOpEmTqFu37kmfq127djz44INVmA4SExPp3r0706ZNQ9M07rzzzkrdyuy6667j2muvrcKE0KlTJ95//322bdtGVlZWpbcWHT9+PG3btq2idMY7cOAA8+bN44033uC///0vzz33HFdffbXRsQy3fPlyVq5cyWOPPYbJFNk+8SlVuAFatWrF2LFjGTFiBPPmzavSK7kej4dRo0bx9ddfk5mZyV133XXS5/J6vXTu3LlKxlHbt29Pv379gND42vjx45kyZQqXX345nTt3Punz/v7773Tq1KnS+QAGDx5cnq9x48Y88MADbNy4kQcffJDY2NiTPu/HH3/ME088USUZp02bBoSGc3r06EGbNm1Yt24djz76aKXO+8QTT7BpU9XcR+STTz6p8LnS0lIuuuiiiI/Ne71ecnNzueGGG1iwYAFms5mXX36Ze+65JyLtCSGYPn06DzzwAFOnTo1IG5UhpWTz5s0sWLCAxx9/nMTExIi3ecoVboCMjAzmzZvHPffcw2OPPUbz5s2r5LzPPvss7du35+OPP+aOO+6gVatWJ30uKSVr1qypklwQGiIBGDlyJD169GDXrl20a9euUhlbtmxJ3759qySfEIJJkyZRVFTE1KlTSU1NJTk5mVatWlWqcD/00EOMHz++yjJ+8skn/PLLLyxfvpxNmzbRuXPnSr2HAHPnzq2SfMAx1y04HI4q/ZmqyJYtW7j//vuZM2cO27ZtY+bMmSxZsiRi7QkhqFevHgcPHoxYG5WxYcMGXnrpJebMmRPxnnaZU7JwQ+iH+LHHHuOdd95h8ODBtGjRotLnfPLJJ3nppZdYunRppYc4hBARWfU5a9Ys5s+fz48//ljpc0UiY0pKCqNHjyY/P59JkyZV+nxVmbGsp9q9e3ecTie33HILjRs3rvR5q+sfc6R+pv5Xeno6HTt2ZPbs2QQCAW6++eaIt1unTh2aNWvGhg0b6NixY0Tb+jt++OEHli5dyqxZs6rt7xlO4cIN0Lx5cwYPHsxzzz3HlClTSEpKqvQ5R40aVQXJIsfhcHDrrbcaHeOYasJ475VXXml0hKiVnp7OpEmT2LhxIy1atKjS4ciKpKWlcdppp7FmzRrOOussw7e6kFKyevVqVq5cydixYyN6IfJoTplZJRVp0aIFU6dOZciQIVE7hU9RaqIzzzyzWop2mQEDBrBmzZqoWCm9detW5syZw3333RexKX/HcsoXbgjNZHjzzTd5+umnIzZVUFGUyIqNjSUYDBq+CO7nn39mxowZvPbaa8TFxRmSoVYUbgiNkY0cOZJ58+axd+9eo+MoinISBg4cyNy5c6t94dbzzz+PpmksWbKEJUuW8Nxzzxk6XFNrCjeEZknccccdjB8/PipXFSqKcmy9e/fmm2++qbbtCL7++mvOPfdcTjvtNLp168a3337LiBEjqnWI6GhqVeGG0N013njjDYYOHcr+/fuNjqMoyt/UsmXLahnn9vl8ZGZmMnbsWFq2bEkwGERKWa2zRypifAIDxMXF8cILL7BixQqjoyiK8je9/fbb3H777RFvx+l0sm/fPjp06MDXX3/Nl19+icPhiIp9U2pl4QZo2LAhAwcONDqGoih/k81mY9CgQbz33nsRbSctLY0zzjiDf/7zn9xwww0MGzaMoqKiqJhHfkrP41YU5dRjsVjo2LEjn332GTfddFNE2+rbty8XXHAB9913Hy+//LIhU/+ORhVuRVFqnKSkJKxWK3l5eaSnp0esnfj4eOLj48v3iDF64U+ZWjtUoihKzXXGGWeQkJBQbbc1q67tBE6U6nErilIjDRgwwPBpeUapVOEWQmQCTkADglLKc4QQdYAPgWZAJnCjlPJQ5WIqiqIcqVmzZkZHMExVDJX0klJ2lFKeE348HlgspWwFLA4/VhRFUapIJMa4+wLvhL9+B6ja25MoiqLUcpUt3BJYJIRYK4S4M3wsQ0qZAxD+fPL3zlIURVH+orIXJy+QUmYLIeoC3wkhTvgmjOFCfyeEptxE8659+/fvp6ioKKoz5ufno+t6VGd0uVzs3r2b/Px8o6NUyO/3R/V7WFJSgsvliuqMBw4ciPp/L0VFRezbt6/a9jw5GcfaSKtShVtKmR3+nCuEWAB0BQ4KIepLKXOEEPWB3Aq+dzYwGyA1NVUuXbq0MlEiqqioiP379xPNGXfu3Indbo/qPcfz8/NZuXIlMTExRkepUGlpaVT/PXu9Xn7O+5nPln5mdJQK2XPsXOK5pNp38Ps7srKyWLt2bVTs7V2RY75/UsqT+gAcQMJhX68ErgCeA8aHj48Hph7vXHXr1pXRbPv27XL27NlGxzimBQsWyJUrVxod45ieeuopWVhYaHSMCum6Lu+55x6jYxxTQUGB7DypsySK/6u3op5cuHCh0W/VMc2aNUtu377d6BjHFK6LR62ZlRnjzgBWCCF+Bf4LfCml/AaYDFwqhNgOXBp+rPyPyy67LKp7JIqiRK+THiqRUu4CzjrK8QLgksqEqg3y8vKMjqAoSg2llrwriqLUMKpwK4qi1DCqcCuKotQwqnAriqLUMKpwK4qi1DC1snB7vV42btzIU089hdvtVtPyjqK0tJShQ4caHUNRaoTdu3fz8MMPV1t7tbJw9+jRg+eff5527drRvHlz9u7da3SkqKNpmnpfFOUE+f1+Dhw4UG3t1brCvXjxYi677DImT55MQkICL774Ip9++mlU71mgnNreeust9fNXw1X331+tK9wZGRlkZWXx8MMPU79+fbKysmjcuLHRsZRaaOHChVxzzTWYTCb69OlTfl9DRTmeWnfrsiZNmpCZmUkwGOSXX37hlVdeYfny5VF1Pznl1Fe2C+FNN91Er169cDgcbN++Hb/fj81mMzqeEuVqVY87OzubyZMnM3v2bObOnYumaWRmZqoet1LtMjMzKSoqwm63M3HiRLp3747b7Y7q3eqU6FFretzFxcW8+uqr9OvXj5YtWwIwfPhwg1MptVVsbCw//fQTzzzzDNu2bePuu++ma9eutGvXzuhoSg1QKwq3pmkMHz6cJ554gtatWxsdR6nlPB4PDz/8MJMnhzbOfPjhh3nggQdo0qSJwcmUmuKUL9x5eXk8+OCDTJs2jYyMDKPjKLVcdnY2Y8aM4e2338ZutwPw7rvvRvXNJaKBz+cjPz+fhg0bGh3lqKr7GtkpPcadk5PDq6++yr/+9S9VtBUgNG1r/vz51d5uSUkJs2fP5pVXXuHFF18sL9qAKtonYM+ePdW6wOXvUtMBq4jX62Xy5Mn06dOH9u3bGx1HiQIfffQRQ4YM4cCBAwwePLjablEmpWTChAnExcUxZMiQqO01KjXHKTlU4vF4GDx4MNOmTaNRo0ZGx6mRhBDExMTg8/mqrUdYWloa0Z7LqlWr6NmzJ9deey1+v5+tW7dy4YUXYjabI9amz+fj7rvvZty4cbRt2zZi7ZzKpJR4vV7i4uKMjlIhk8mE2WwmEAhgtVoj3t4pV7hzcnKYOnUq06ZNi+qeTceOHfn111/p1KmT0VGOKiEhgfvuu49nnnmGJ554olraHDFiBFlZWRE7/86dO1myZAlLlixh6tSpPPfcc2RlZUXsomBhYSHTp09n5MiRtGnTJiJtnOp27dpFZmYmw4cP57XXXiMnJ4f69esbHesvWrVqRbdu3fi///s//vnPf0a8vVOqcOfn5zN79mxuvfXWqO9pz5gxgz59+rBkyRKjoxyVEAIhRLWO3c2bNy+i53/ooYfIz8/nqaeeYuTIkVx55ZURK9ozZsygqKiInj17cvbZZ0ekjdrg9ddfZ//+/ZSUlPDiiy/Sp08fbr/9dqNj/UXZxcnq+vdyyoxxa5rGuHHj6N+/f9T2YhVjDR06lH79+nH//fdz5513csUVV1R5G1JKJk2aRIMGDbjqqqvo1atXlbdRW/z3v//Fbrczbdo0GjRowMyZM9m8eTP79u0zOprhToked1FREXfffTcvvviimj2iVKh169blv9ImJSVV+fn9fj9vvPEGbdq04dprr43o2Hlt0LFjRxYuXMjy5ctZtGgRH374Ia1ataJBgwZGRzNcjS/cWVlZzJo1i8cff1wVbeW4hBARKdqLFi0iMzOTmJgY+vXrV+Xnr41sNhvt27fn/fff5+DBgyxbtoy77rpL/Q+RGj5U4nQ6eemll7juuuvUikjFMB9//DEbN24kMTGRYcOGGR3nlHLTTTfxwQcfkJSUxIcffsjFF19sdKSoUGN73MFgkNtvv51nnnmGFi1aGB1HqaUWL17Mvn37uPvuu49YVKNUHSEEAwcONDpGVKmRhTs3N5dHH32U6dOnU69ePaPjKLVYz5496dmzp/r1XalWNa5wHzhwgNmzZ3PPPfeooq0YThVsxQg1rnBbrVb69OnDmWeeaXSUU9qoUaP47bffyMvLY+vWrbzxxhvEx8cbHUtRoo6u6/zzn/9ky5YtACxZsoS3334bkylylxBrXOFOTU0lNTXV6BinNJfLxdq1axk1ahSrVq1i27ZtFBYWqsKtKEfhdDrZsWMHN954I0II5s+fj9PpjMjspTI1rnArkffyyy8zbtw4mjdvTiAQ4JZbbuHJJ59kzpw5RkdTlKjz5JNPMmnSJPx+P0IIzj77bJ588kn+/e9/R6xNVbiVv3jwwQdp27Yt999/P82bN2fAgAGsWbPG6FiKEpWmTp1K8+bNmT59OlJKxowZw+7duyPa5nEHYYQQbwohcoUQvx92rI4Q4jshxPbw55TwcSGEmCGE2CGE2CiEUJs01FBvvvkmAD/++CNz5sxRwySKUgGTycS8efPIzMxk7969zJs3L6Lj23BiPe63gZeBuYcdGw8sllJOFkKMDz9+ELgSaBX+OBeYGf6s1DDdunWjS5cuBINBYmNjjY6j1DDVfUcYIwkh6NGjB926dQNCKz4j7bj/W5BSLgMK/+dwX+Cd8NfvANcednyuDPkFSBZCRN8ejMoJsVgsqmgrJ6W67wgTDWw2W7UUbTj5Je8ZUsocgPDnuuHjDYHDt+7aHz6mKIqiVJGqHog52u9HR/1frxDiTiHEGiHEGo/HU8UxottDDz3ERRddxNq1a+nUqRMrVqwwOpKiKDXIyRbug2VDIOHPueHj+4HGh72uEZB9tBNIKWdLKc+RUp4Tzbckqmq5ubk4nU7mzZvH2WefzciRI9mxYwfBYNDoaIqi1BAnOx3wc2AIMDn8+bPDjt8jhPiA0EXJ4rIhlWPRNI2FCxeeZJTIy8/PZ+fOnVWS8ZdffiElJYVNmzZhs9lIS0tj9uzZ2Gy2Sm1S9Pvvv7Nnzx4OHjxY6YyRcuDAAb755puovndgSUlJVP8sut1uHDkOTlt4mtFRKpSQmcDvrt+jepx7165dWCwWfv/99+O/2CCaplX43HELtxDifaAnkCaE2A9MJFSwPxJC3AbsBW4Iv/wr4CpgB+AGhp5IQL9fMGJE9O6lbbfrDBlir5L9vvv27Vv+ddm9HCdMmFDp8+7Zs4dZs5IoKore97FlyxiuvTYdh8NhdJQKWSyWqN7XvbS0lC4xXZicMdnoKBXacmgLTpMzqt9Hu93OM3WewZ3hNjpKhfzCX+Fzxy3cUspBFTx1yVFeK4GRJ5ys/PtMHDjQ7e9+W7VJStpB/foF5dN9otHBgwcpKsqI6vexUaPFdO7cGZvNhtPpJKVOMgcPZZPgSKIkkMuiQ3PZ5d6EKWAhRsQjdDM5zmzOS7mCy5oPxO/20Si9CSUlJTgcDg4dOoTdbicQCKBpGg6HAyklcXFx5Uv0y5Yelz32+XwkJSXh8/mQUhIbG4vJZCq/v+Z7771XJX/Puq6zaNEi9uzZw4ABA3A6nbzwwgs888wzlfqNo7CwkNWrV0f1z6Ku6+Tn50d1xo0bN1LQoYDilsVGR6lQvKnitRM1+kYKSs0jpU5BIJstrl9YVfgVM7Lv5MPsKXx28DU0P7S2nYtdT6e01EdD2+mcl3oFiTEp3L/kZiavu5/Nub/h1/0EAgFMJhO6rgOhRRCapqFpGj6fDyEEmqYhhCh/bdljv9+Ppmnouh6xawtut5vPPvuMXr160a9fPywWC02aNGHp0qURae/vWrZsWVQPZSjHppa8K9VKIlmfu4rp6yeR4cigSVJTioMBft39B5nZ+2jXsjHWgI1tu3aQ37qI5kltEewnRiYSJxJ5f8ObnF6nA5e3vIZYWxxCCMxmM7qulxeiQCCA1WpF0zQsFguaphETE4MQAovFUl6spZQEAoGIzL2Nj4/nuuuu47bbbmPv3r08/PDD+P1+xo4dW+Vt/R0//fQT//nPf0hISOCrr77isssuU3eVqYFUj1upViZh5py0i6kf6MymrYVs3JTH+o05lGTbiHHXw7XPTtY2P5vW57Fq/Xo27VrNsnVL8biCrNz5M7nOAmatfIVCXz5OpxMI/Wru8XiwWCyYTAK7PQ6v14PVasXn8xEbG4vL5SrvbTscjvIiHsm71nTt2pXJkyeTlpbGoEGDmDhxYsTaOhFSStauXUtCQgL33nsvGRkZrFy5UvW8ayBVuJVqpes6DpOdGdfMoHlqcxbv+I5PNsznxx0/sjFrI1+tXkrdpMbcdulweqXdQANPV9xuF96SAvILD7E9ZyfBgJm+M69Bs4V6zjabjZSUFHxeD+u/fpJ5Dzfhs8kdWPvFYyQmJuJ0OklNTUXXdeLi4sjPz0fTNPx+P4WF/7souOokJydzwQUXkJyczLnnnmv4fVG3bNlSfpu1Sy+9lGHDhuH3+1m3bp2huZS/TxVupVqZTCZiYmLwlnp4rd8srmrzDyxmM6eln8Z5Lc/jzGbt2ZO3h01Zv1PgLCSnIAdHQVNcW5PokNgWT3E+6F60YsHtM25HCIHX66WwsADnwU3s3LSCQyVeGrbvQ3KDjjhLSoiPjycvLw8hBC6Xi7S0NCwWCxaLheTkZKPfkmrTtm1bGjduzCOPPEJWVhaPP/44NpuNzp07Gx1N+ZvUGLdSraSU+P1+UlJSCAQCzOz3Ko/GTeDTtZ9SVFqEw+zALuLwCT+5BVsoPlRMgjWRvt36UuosJY46FOTlYkrJxn8wgKYFsVqtLFkwjdzMnziUs49OF4/lwj5jCQZDz3k8HlJSUtA0DbvdTnFxMWazGSklpaWlEd3wPtr07t2bhIQEPvjgA77//nveffddoyMpJ0H1uJVqZzKZMJlMSClJiavDk5c/yYBzBlEacLErbze/Z/3B6t2r2XtoH6c1akGTBk3YlbMLp9dJgkila5OLyF/jI6btAd5aOIeA38vqpfPx+iz0vetNulx6Z/n5y6b5ld0bsuxxmdq0ix1Au3btGDp0KIsXL6Zhw4acddZZRkdSToLqcSvVzmQyUVpaisPhwOVykRiTyOR/PMOTV07kuleu51DJIXbs20XdhDQKSwuItybgdXshIMnLKyDe6uDSzn3Yv38by+UCfhnxFima5Ipet9C0bTesVitut5uYmJjyi5OlpaXYbDb8fj92u718OqDVajX67TBE06ZNjY6gVIIq3Eq1klLi8/lITU2lsLCQ5ORkXC4XNqsNf6mfL0Z+QWZhJv9Z+x9cXhemoAmHzU5JUQlIgcftJcZsY0DvAZxz1jks27iI11c+Ro9/DOCs865G0zRKS0upU6cOJSUlJCUlUVRURFpaGk6nk7i4OAoKCrDb7UgpcblcUb3CL1JiY2M555xzWLlyJeeff77RcZS/SRVupVoJIYiJiaGwsJC4uDiKi4uxWq0Eg0Hi4+ORUtKybktGXToKKSU2i5kDK77nwH8/xR4TS2qvK0nudgnWmBgOHTpE4EAQT5Hggt79sNlsSClJTk4mPzOT1W+8TOH+vaS0aEvnIXeQXDe9fLxb1/XyWSa1kd1up3v37vzwww+qcNdAqnAr1aqsx52UlERxcTGJiYm43W4sFkv5XGz8Xkw+L1seG4X0e2l03c2c89Cz6MKE1Wxi9+wpFPy6lqCmsyO/iJi8XHy/r2bNT8vI3biOgKbRdsAwOl0/EL/Pi+b18f6dgyktKaXPY0+Q2LwFGY2bYDKZcLlcxMTEGP22KMrfogq3Uu3MZjOBQKB8FWPZhUSz2YzmLCZ79nO49u6g7b+exJqQSKDoEN5d20GAT0LD62+h6a0jCbqcNPxxMeds20zBT8toduHFdLjpdoJBP65Dh/A7i9Ek6Ej6PPI4QU1n+f/NZeOKFdw1521OO7tz+UXL2igjIwNN08jLyyM9Pd3oOMrfoAq3Uq2EEEfsI1K2daWUEoJB9sx8Fu1gNqfdPBx/3gGCeQcQSMomfwgJ/r278UqJDiSe3pbkjp3R/EE8RQWU7NmJJiWaBE1KdCnRdNClJKhLzr66DwFd5//G/YuBz06l1bm195aonTp1Yv78+fzxxx/06NHD6DjK36AKt1KtpJQEg0FSUlKOuDhpsVjYt+BdPDs20/yW4RDwInQQIvxxxDlCBRwkmtuFX8pQsQ4XaE2X6JLy4h3UJJrUCYZf0/6iXvi8fmaNuIuxH35M27PPNujdUJSTowq3Uq1MJhOxsbHk5OSQmppKfn4+DocDn9tF4fefc/rNI9HcxUgTIASmcA/dFK7cUspQ71wSquBlRVqX6LokKHU0XaJpEAwX7oCuE5QQ1HU0XaDpOm3Pv4Dc/fvx5OdH/M+s9gJRqpoq3Eq1Kutxx8XFEQgEyi8MFqz4HpsjHm9+FmaTwGQOrQ0TZjAfVrh1GepVS12ApqNLHSlB6uGetl5WoCUBPTQ8EtQlQUmogOuhYZRAUCe1UVNeHX0vr2/6AxHBse5oXuTTtWtX1qxZQ7du3SJ6h/Lvv/+eHTt20LBhQ6655pqItVNbqMIdhSZOnMiECRNCMyxOQWWFrOyzlBLnupXYm7VE87gQJoE0mULrek0CYRKYw5Vb6hIhJVIHqcnwtD7Cn0PFW9NDRQuL1LoAACAASURBVPrPwq0T0P8s3AEt1Atv0KoFW1avMuptiAp9+vShV69e3HnnnREt3LGxsSQkJLBr1y5uvvnmI54bOnQovXv3jljbp6JTszLUUF9++SXjxo1j2rRpdOnShWuuuYYnn3zS6FhVqmz/bKfTid1ux+VyYbfbMZtNSM2P5nFhMgl0kwlpIlTAzaHiDYS73ICuo5cVbglBLVSUg1qoxx0M97gDuiQQ1AhKiV+XBDRBQNPCRZzyGzEokdW9e3e6d++Ox+OhT58+Rzz32muvMW7cuCOOzZ8/n7S0tPLHJpOJhISEaslaE6jCHWF5eXn89ttvJ/TaVatW0bt3b2w2Gx9++CFz5szh4MGDp9TKPl3X8fl8JCcn43a7SUxMxO/34/f5kQUHiQnvYyLMApNJIMwCYTIR6n5LgoCm66HirMlwgQ59HZDh3rQWKtj+YKg4l5QUY7Y78GtlxTv8fHgRTm3XqVMn1q5dS8+ePSPeVlxcHM2bNz/i2LPPPsuzzz57xLGBAweSf9j1hzp16jBixIgjXtOkSRNatmx5Qu1mZmaSkJBAamrqSSaPLqpwR1hBQcEJ367qjz/+wOVysWzZMm6//Xbsdjt5eXmnVOE2mUzYbDYKCgpIT0/n0KFDJCQkEJuYRM6P32AzmSA5GcLFG1NoSknQ70PExKFTNvwBPpcTd34efk3HF9Tx6xKfpuMLSjSTBUtaBgEExdn7sddriF/XCWjg0zSCOuTlHMDv9Rr9lhju+eefp3Pnzqxfv96Q9o92DeDDDz884nFBQQHTp08/4ljZZmWHGzZsGI0aNSp/7PP5mDJlCrquI4QgKSmJMWPGVGF6Y6jCHWFt2rQ54eGOjz76iIkTJ/LCCy8waNAgzjzzTNq3bx/hhNVL13X8fj/p6aHl58nJyfj9fupffyt5Py2maOtvaA2b4Eiri24S6CZBUEBw306sjVsgAc/BbAIlxXh9PrylpXiDGn5N4glKfEENr6bjR6Dv24sfM3GNm1Cck4NwOAho4NV0igsL2bXpDzpefS1E8cVDJSQ1NfUv/452797N9u3bjzj2yCOPkJOTU/44GAxSUFDAJ598QklJCYMHD2b06NHVkjmSVOGOItdeey2XXnopd999N5988gnx8RXf5bkm03W9/D6RZdusxjRogm6xEXC5Yfd20DRs8fEEpIYZ8JcUIzb+NzRXW9MIaDp+Tcev/Tk8EpR6eO42BDQNb1EhvqBOQX4+noCGH0Fi42YcOnSI3KwDeP1Brh4xIqpnfVSXtLQ0CgoKatRQQvPmzf8y7HLeeeeVL+oCuOqqq9i5cyf9+/fn1VdfZdasWTzwwAMnPMQSrVThjiI2mw2bzcb7779vdJSIEUJgs9lwOp3ExMTg8XjKi7gWE4dfl8iAhrmkmKAWQMveF54OKBCAhixfZOPXdYKawK8fPnatl495B8MzTIJaAE2DQFDDU1pKYc5BdAkIE3HxDqPfEsOZTCZmzpzJ2LFjmTt3rtFxKiUxMfGIx4sWLeK8885j3rx5FBYWMmLECDZv3sxrr71mUMKqoW6koFSrsjvgJCcn4/F4SEhIQNd1LBYLzW6+HV94nNpVWIi71IlP0/FqOh5Nx63peIM6nmDosV8DX7jXfUTPW9dDKyZ1WT67JBiefVJSeCh0R3iTiS79rkfE1s7dAWuLmJgY7r77bhYsWMCqVasYP3680ZGqhOpxK9WqbFvX/Px84uPjKSoqwmazEQgEaHDBpazXQZc6ugygO90Q1EPXJ0WojyGlHl6EA8HwYht/+GKlXy+bLSLxa6HnA2UFXEpEbCxejy/0Gi1Ix549aXLaaQa/I0ok2Ww2Ro4cycGDB4mLi/tLj7ymUj1upVpJKQkEAqSlpeF2u0lKSiq/E43T5Sahy0WhXnZQo9RZijsQ6mG7A3r4axnqcQd1PEENT3hGiTeo4Qtq+DQNf1Di1zT8mn7YXG4dV6kbv89PQno6lw+/C3NsXETv8l6TxMTEkJiYeMQUvFNJRkbGKVO0QRVupZqVLcBxu91YrVa8Xm/5LoFxCQm0vuk2vEEZLtAa3vBsEW9QwxvUDivaoSEUb1CWD6/4NIkvPFzi1wR+HfyaPGK+d0BKMlq1oqTwEN2u6VNrb6Twvxo3bkzXrl1ZsGCB0VGUE6AKt1LtpJTl27qWLYCRUmKxWEhpeTqNLusTLtThXnUwNLb95/i2xBMIPe8Lv84XnmUSCBfv0HCJFiriusSvh1ZXtruoJ5qwcH6//lgsllp7z0mlZlOFW6lWZUXbbrcTCASIi4srv4mCx+PB5IgntX1H/JhCvW4tNDTiDmq4y4t4MHSxsvxxqDfu1UJzuH26xBsMLbbx6xq+cG9bFyZSGjbE6Syhw0UXoWkaLpfL6LckathsNoLBIMFg0OgoynGowq1Uq7JtXXNzc3E4HBQUFJTfESc5OZm4uDhaD7iVjPMuDA2N+DXcAQ13UA99BHTcfokvKPEGZXi4JNQL9wbBo0l8wdCUQG94+CSgaUiLlfYXX8rqxUt5dsFCYmJjsVqtNWrecqQNGDCAdevWsW3bNqOjKMehCrdSrcouTsbHx+Pz+XA4HOULcrxeL36/H5MQtO3TH80ai0cLj20HNDyBP3vX7sPHvLU/i7gvPGxy+DTBICYan9mJAIIL+/dDs/7ZsywtLTX6LYkaaiFSzXHcwi2EeFMIkSuE+P2wY48LIbKEEBvCH1cd9txDQogdQoitQojLIxVcqbnMZjOapmG1WgkEAuWrJy0WS/k9IJtcfDn2NmfgDUrcQVne4y6/MBk+Xjb+7QuExrt95Rct/xz3rtuyNfaUOmRu+oMOvXrhiI8v3+fiVN0692SV/V2omz9EtxPpcb8NXHGU4y9KKTuGP74CEEK0AwYCZ4S/51UhRO29G6vyF2X3nPT7/Ufce1JKecSmQbqu84+nnseUknpYwS4bMpG4whclvYE/i7lHA0+4aHs1Dd1iJbFRUyzxCRQXFnL96Hs5vWtXzGZzeQ51cfJIM2bM4K677jpi2bgSfY5buKWUy4ATnezaF/hASumTUu4GdgBdK5FPOcX871CJ3W5H13VMJhMej4dAIACELpQ1aNmKga++SUKTZngCevgjNETiK5vfXT7GrZfPRPEFQ2Pgfinw+gOUFB6iU+9L6T10KLFxcTidTjRNUxcnjyI2NhaPx2N0DOU4KjPGfY8QYmN4KCUlfKwhsO+w1+wPH/sLIcSdQog1Qog1gYD6QaktylZOFhUVERsbS0lJCRDaxc3hcBATE4OUEq/Xi9PppGXX87j6yWfpdP2N+KQon2XiN1tofmHP8imC3qBGbFpd4us1wKtpoeXwvgA2u53rRo3i0mHDEELg9XpJTk7GbDZjsVjU5vxH8eijj/5lu1QlupzsAN9M4ClCt2x9Cvg3MIwjb8Zd5qiDZVLK2cBsgISEDOnznWQSpcax2WzUrVsXs9lMenp6+UWxsmJhsViw2+3lxzpfegXtu3XnmvtD+0xICcIksCcnU3rYykeLLQaEOGKPbVtsLHWbNEEPTzmMi4tDCFG+8EZdkPur6667zugIynGcVOGWUh4s+1oI8TrwRfjhfqDxYS9tBGSfdDrllHT4WPbRenbm/7lxr8lkwpqSQnxKyl9em5JR74TaLDtjWXvVWbDVhT6lqp3U70NCiPqHPbwOKJtx8jkwUAgRI4RoDrQC/lu5iIpSs914443ld7NXlKogjtcbEEK8D/QE0oCDwMTw446EhkEygbuklDnh1z9CaNgkCIyRUn59vBBJSXVk69b/Otk/Q8RZrS7OOCOfpk2bGh2lQgcOHODXX2Pwev/aK40WKSnb6NateVTP5Pjtt9/o0KGD0TEqFAgEyMzMpFWrVkZHqVBhYSF+v5969U7styEjZGZm8kf6HwQcAaOjVGjbC9soLiw+6q+Gxy3c1SEhoa70+7caHaNCiYmZNGjwE1u23Gx0lAo1bfoNr76aTufOnY2OUqFp06YxdOhQkpKSjI5SoUceeYRJkyYZHaNCRUVFzJ07l3vvvdfoKBVas2YNBQUFXH559C7jmDdvHhdddFFUd8ZOP/10cnNzj1q4o2T1gcDvj96eYiBQgKbFRHVGTYvD4XCQcpRx4GhhtVpJSkqK2oxle6ZEaz4IZbRarVGd0W6343a7ozpjTEwM8fHxUZ3xWNdh1JwfRVGUGkYVbkVRlBpGFW5FUaKalJLdu3cbHSOqRMkYt6Ioyl+tXr2aX3/9tXy2z4UXXsjpp59udCzDqR63oihR69NPP2XXrl089thjrFq1iuXLlxsdKSqowq0oSlRasWIFDoeD8ePHM3ToUCZPnsxvv/2mhk1QhVtRlCh1wQUX4HK5ePvtt9m8eTP//ve/6dChA82aNTM62l+43W62bq2+tShqjFtRlKgkhKBXr14sXboUp9OJEIKOHTtG3cZgc+fOZc+ePQSDQWw2G8OHD4/4LfFUj1tRKqEm3C2mJmSsyGWXXcbTTz9N/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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(lpath)" + ] + }, + { + "source": [ + "## వ్యాయామం\n", + "## మరింత వాస్తవికమైన పీటర్ మరియు వోల్ఫ్ ప్రపంచం\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "width, height = 8,8\n", + "m = Board(width,height)\n", + "m.randomize(seed=13)\n", + "m.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "actions = { \"U\" : (0,-1), \"D\" : (0,1), \"L\" : (-1,0), \"R\" : (1,0) }\n", + "action_idx = { a : i for i,a in enumerate(actions.keys()) }" + ] + }, + { + "source": [ + "## స్థితిని నిర్వచించడం\n", + "\n", + "మన కొత్త ఆట నియమాలలో, ప్రతి బోర్డు స్థితిలో శక్తి మరియు అలసటను ట్రాక్ చేయాల్సి ఉంటుంది. అందువల్ల, ప్రస్తుత సమస్య స్థితి గురించి అవసరమైన అన్ని సమాచారాన్ని కలిగి ఉండే `state` అనే ఆబ్జెక్ట్‌ను సృష్టిస్తాము, ఇందులో బోర్డు స్థితి, ప్రస్తుత శక్తి మరియు అలసట స్థాయిలు, మరియు టర్మినల్ స్థితిలో ఉన్నప్పుడు మనం నక్కను గెలవగలమా అనే విషయం ఉంటుంది:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "class state:\n", + " def __init__(self,board,energy=10,fatigue=0,init=True):\n", + " self.board = board\n", + " self.energy = energy\n", + " self.fatigue = fatigue\n", + " self.dead = False\n", + " if init:\n", + " self.board.random_start()\n", + " self.update()\n", + "\n", + " def at(self):\n", + " return self.board.at()\n", + "\n", + " def update(self):\n", + " if self.at() == Board.Cell.water:\n", + " self.dead = True\n", + " return\n", + " if self.at() == Board.Cell.tree:\n", + " self.fatigue = 0\n", + " if self.at() == Board.Cell.apple:\n", + " self.energy = 10\n", + "\n", + " def move(self,a):\n", + " self.board.move(a)\n", + " self.energy -= 1\n", + " self.fatigue += 1\n", + " self.update()\n", + "\n", + " def is_winning(self):\n", + " return self.energy > self.fatigue" + ] + }, + { + "source": [ + "రాండమ్ వాక్ ఉపయోగించి సమస్యను పరిష్కరించడానికి ప్రయత్నిద్దాం మరియు మనం విజయవంతమవుతామా చూడండి:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "def random_policy(state):\n", + " return random.choice(list(actions))\n", + "\n", + "def walk(board,policy):\n", + " n = 0 # number of steps\n", + " s = state(board)\n", + " while True:\n", + " if s.at() == Board.Cell.wolf:\n", + " if s.is_winning():\n", + " return n # success!\n", + " else:\n", + " return -n # failure!\n", + " if s.at() == Board.Cell.water:\n", + " return 0 # died\n", + " a = actions[policy(m)]\n", + " s.move(a)\n", + " n+=1\n", + "\n", + "walk(m,random_policy)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Killed by wolf = 5, won: 1 times, drown: 94 times\n" + ] + } + ], + "source": [ + "def print_statistics(policy):\n", + " s,w,n = 0,0,0\n", + " for _ in range(100):\n", + " z = walk(m,policy)\n", + " if z<0:\n", + " w+=1\n", + " elif z==0:\n", + " n+=1\n", + " else:\n", + " s+=1\n", + " print(f\"Killed by wolf = {w}, won: {s} times, drown: {n} times\")\n", + "\n", + "print_statistics(random_policy)" + ] + }, + { + "source": [ + "## రివార్డ్ ఫంక్షన్\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def reward(s):\n", + " r = s.energy-s.fatigue\n", + " if s.at()==Board.Cell.wolf:\n", + " return 100 if s.is_winning() else -100\n", + " if s.at()==Board.Cell.water:\n", + " return -100\n", + " return r" + ] + }, + { + "source": [ + "## Q-లెర్నింగ్ అల్గోరిథం\n", + "\n", + "నిజమైన లెర్నింగ్ అల్గోరిథం చాలా వరకు మారదు, మేము కేవలం బోర్డు స్థానం బదులు `state` ను ఉపయోగిస్తాము.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def probs(v,eps=1e-4):\n", + " v = v-v.min()+eps\n", + " v = v/v.sum()\n", + " return v" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "" + ] + } + ], + "source": [ + "\n", + "from IPython.display import clear_output\n", + "\n", + "lpath = []\n", + "\n", + "for epoch in range(10000):\n", + " clear_output(wait=True)\n", + " print(f\"Epoch = {epoch}\",end='')\n", + "\n", + " # Pick initial point\n", + " s = state(m)\n", + " \n", + " # Start travelling\n", + " n=0\n", + " cum_reward = 0\n", + " while True:\n", + " x,y = s.board.human\n", + " v = probs(Q[x,y])\n", + " while True:\n", + " a = random.choices(list(actions),weights=v)[0]\n", + " dpos = actions[a]\n", + " if s.board.is_valid(s.board.move_pos(s.board.human,dpos)):\n", + " break \n", + " s.move(dpos)\n", + " r = reward(s)\n", + " if abs(r)==100: # end of game\n", + " print(f\" {n} steps\",end='\\r')\n", + " lpath.append(n)\n", + " break\n", + " alpha = np.exp(-n / 3000)\n", + " gamma = 0.5\n", + " ai = action_idx[a]\n", + " Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())\n", + " n+=1" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(lpath)" + ] + }, + { + "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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "width, height = 8,8\n", + "m = Board(width,height)\n", + "m.randomize(seed=13)\n", + "m.plot()" + ] + }, + { + "source": [ + "## చర్యలు మరియు విధానం\n", + "\n", + "మన ఉదాహరణలో, పీటర్ లక్ష్యం ఒక ఆపిల్ కనుగొనడం, అయితే నక్క మరియు ఇతర అడ్డంకులను తప్పించడం. దీని కోసం, అతను ప్రాథమికంగా ఆపిల్ కనుగొనేవరకు చుట్టూ నడవవచ్చు. అందువల్ల, ఏ స్థానంలోనైనా అతను క్రింది చర్యలలో ఒకదాన్ని ఎంచుకోవచ్చు: పైకి, కిందకి, ఎడమకి మరియు కుడికి. ఆ చర్యలను ఒక డిక్షనరీగా నిర్వచించి, వాటిని సంబంధిత కోఆర్డినేట్ మార్పుల జంటలకు మ్యాప్ చేస్తాము. ఉదాహరణకు, కుడికి కదలడం (`R`) జంట `(1,0)` కు సరిపోతుంది.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "actions = { \"U\" : (0,-1), \"D\" : (0,1), \"L\" : (-1,0), \"R\" : (1,0) }\n", + "action_idx = { a : i for i,a in enumerate(actions.keys()) }" + ] + }, + { + "source": [ + "మా ఏజెంట్ (పీటర్) యొక్క వ్యూహం ఒక **పాలసీ** అని పిలవబడే దానితో నిర్వచించబడుతుంది. మనం సులభమైన పాలసీ అయిన **యాదృచ్ఛిక నడక**ను పరిశీలిద్దాం.\n", + "\n", + "## యాదృచ్ఛిక నడక\n", + "\n", + "ముందుగా మన సమస్యను యాదృచ్ఛిక నడక వ్యూహాన్ని అమలు చేయడం ద్వారా పరిష్కరించుకుందాం.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "18" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "def random_policy(m):\n", + " return random.choice(list(actions))\n", + "\n", + "def walk(m,policy,start_position=None):\n", + " n = 0 # number of steps\n", + " # set initial position\n", + " if start_position:\n", + " m.human = start_position \n", + " else:\n", + " m.random_start()\n", + " while True:\n", + " if m.at() == Board.Cell.apple:\n", + " return n # success!\n", + " if m.at() in [Board.Cell.wolf, Board.Cell.water]:\n", + " return -1 # eaten by wolf or drowned\n", + " while True:\n", + " a = actions[policy(m)]\n", + " new_pos = m.move_pos(m.human,a)\n", + " if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:\n", + " m.move(a) # do the actual move\n", + " break\n", + " n+=1\n", + "\n", + "walk(m,random_policy)" + ] + }, + { + "source": [ + "రాండమ్ వాక్ ప్రయోగాన్ని అనేక సార్లు నిర్వహించి తీసుకున్న సగటు అడుగుల సంఖ్యను చూద్దాం:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average path length = 32.87096774193548, eaten by wolf: 7 times\n" + ] + } + ], + "source": [ + "def print_statistics(policy):\n", + " s,w,n = 0,0,0\n", + " for _ in range(100):\n", + " z = walk(m,policy)\n", + " if z<0:\n", + " w+=1\n", + " else:\n", + " s += z\n", + " n += 1\n", + " print(f\"Average path length = {s/n}, eaten by wolf: {w} times\")\n", + "\n", + "print_statistics(random_policy)" + ] + }, + { + "source": [ + "## రివార్డ్ ఫంక్షన్\n", + "\n", + "మన పాలసీని మరింత తెలివైనదిగా చేయడానికి, ఏ చర్యలు ఇతరుల కంటే \"మంచివి\" అని మనం అర్థం చేసుకోవాలి.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "move_reward = -0.1\n", + "goal_reward = 10\n", + "end_reward = -10\n", + "\n", + "def reward(m,pos=None):\n", + " pos = pos or m.human\n", + " if not m.is_valid(pos):\n", + " return end_reward\n", + " x = m.at(pos)\n", + " if x==Board.Cell.water or x == Board.Cell.wolf:\n", + " return end_reward\n", + " if x==Board.Cell.apple:\n", + " return goal_reward\n", + " return move_reward" + ] + }, + { + "source": [ + "## Q-లెర్నింగ్\n", + "\n", + "Q-టేబుల్ లేదా బహుమాణిక శ్రేణిని నిర్మించండి. మన బోర్డు `width` x `height` పరిమాణాలు కలిగి ఉన్నందున, Q-టేబుల్‌ను numpy శ్రేణిగా `width` x `height` x `len(actions)` ఆకారంలో ప్రాతినిధ్యం వహించవచ్చు:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)" + ] + }, + { + "source": [ + "Q-టేబుల్‌ను బోర్డు పై టేబుల్‌ను విజువలైజ్ చేయడానికి ప్లాట్ ఫంక్షన్‌కు పంపండి:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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1fB4PKxatYoRI0bw4YcfMn/+fDp27Mj69eutjlZjx44d2O12rrrqKv71r3+xcOFCCgoKOHDggNXRanz66acMGjSIDh064Ha7efHFF1m0aFFY/QX42muv8bvf/Q6n08mll17Kn/70J1577bVGXacUtzhC586d2b59O/369aNNmzZs2bKF7Oxsq2PVkp2dzY8//kj//v1JTU3l+++/p0uXLlbHqhEVFUXr1q1RStG/f38CgQCHDh2iVatWVkerkZaWhmmatGnThvPOO4+ioiKSkpKIj4+3OlqNdu3asWfPHs4//3zOPPNMtm/fTufOneudj/Fky87OJjc3l/79+9OiRQs2btzY6O8XKW5xhO7du1NQUMD8+fN57733eP/99znvvPOsjlXLeeedx5dffsn69eu55557yMvLo3v37lbHquFwOOjcuTNvvvkmLpeLoUOHopQiKyvL6mg1MjIySElJYebMmXi9XiZNmkRWVhaJiYlWR6vRsWNHXC4Xf/vb31i7di0vv/wy55xzTlgVd69evdi4cSPLly/nmWeeYc2aNY0+dBcms7yLcPPFF1/w3Xff8cMPP4TdmCJAcnIyubm5vPfee1x99dVhVdrV+vfvz9atW8nJyWHlypVhtSVb7b777uPee+9lypQpfP/991bHOaq3336bwsJClixZwrZt26yOcwSbzcaWLVv4/PPPUUoxY8aMRl+nFLeoU7du3ejWrZvVMeo1ZMgQqyMc09SpU62OUC+lFH/5y1+sjlGvVq1aceedd1odo14XX3zxSVuXDJUIIUSEkeIWQogII8UthBARRopbCCEijBS3EEJEGCluIYSIMMcsbqXU6Uqpz5RS3yulvlNK/SG0PF0p9YlSKjf0OS20XCmlnldK7VBKbVJKndvY/wghhDiVHM8WdxC4T2vdFbgA+L1SqivwELBCa90JWBH6GuBXQKfQx3jgxQZPLYQQp7BjFrfWulBr/Z/Q7UrgByALuA6YF3rYPOD60O3rgPm6yv8BqUqp8LlAgxBCRLifNcatlGoHnAOsBVporQtDd+0HWoRuZwE/Hva0vaFlP32t8Uqp9Uqp9YGA52fGFkKIU9dxF7dSKhFYBEzSWte6ar2uumr4z7pyuNZ6tta6t9a6t8MR93OeKoQQp7TjKm6llIOq0l6otX4/tLioeggk9Ln6Ir4FwOmHPb11aJkQQogGcDxHlShgDvCD1vrwy159CIwO3R4NLDls+ajQ0SUXAOWHDakIIYQ4QcdzdcCLgJHAZqXUhtCyKcCTwDtKqbHAbmBY6L5lwK+BHYAbGNOgiYUQ4hR3zOLWWn8N1HXV8sFHebwGfv/zozTu5JoNI/wzNvYkpQ0h3DOGez6QjA0lEjIejQqH4CkpabpnzxFWx6iT3e4nJcVJdHS61VHqFAxWkJoaFZYX66924MABMjIysNvtVkep0969+4iKOs3qGPUwCNj24ch0WB2kTqbbJDGYSHJystVR6lRaWkpiYiLR0dFWR6nT66+/zqFDh4660RDZX9YAACAASURBVBwWxZ2U1EI7nUVWx6hTSsoOnn76M8aNG2d1lDotXryYFi1acP755+Pz+XA4HP+bUNVmst+3m0PBIrSpiSIaUHgCbuLtyXRI7oYy7URHOzAMA6UUwWAQpRQ2m41gMEh0dHTN5+rXDwaD2O32Wo9VStU83+GoKpfqaaamTZvG73//e9LS0iz6LtVPa82wYRN5772/WR2lTjExpXT/0+V8O+Vbq6PUqeWqlswqnsV1111ndZQ6vfTSSwwePJiOHTtaHaVOLVq0oKio6KjFLTPgNDGGYVBSUkJsUjTrDi0lM7YtQZuXnc6NFPp3U+l1Uukt57S4Dnj8HjIdrcmN/YG8kh1MOH8qfl8ApRROpxOlFDExMTidTpo1a4bT6SQ9PZ3y8nLS09OpqKggISGBsrIyHA4H0dHRREdHExUVhdPpDNuCFiLSSXE3MTvKNrLo0ExUuWK/bzcOHUswqEkgjWYxWaSSRpnbhccMkB7TGkwHy3e+T1xUEo+vfIDh3cdyWvzpJCUlobUmGAySkZGBy+UiJiaG4uJiEhMTqaioIC4uDp/PR2pqKlprDMPA7XYDEB0dTUlJCampqURFya+ZEA1J3lFNTPP4try14r+kx6aT3Tyb9pld2LUvn3lfv0nHM1NonpBI7qZC7FlBLuo6AHswlrioVEori4mJT+LVdS9y1VnX0y3tbKKiHDgcDg4ePEhmZiYul4v0jAxKS0pISUmhvLychIQEKioqcDiqHpuQkIDNZsPlcpGWlobNJhegFKKhSXE3MXHEM/uqV3ng35P51/fL+XjLp8SY0bRIa4n/YAy+ymZ0ymzLvrI8jDKTNRvW0Lp7Ojv276Njhp8ydzlen0GHgV1IjYpDKUViYiJ+vx9fZSHbt35IZUUl6Zmn0az9YAzDIDY2tmYc2+/3A1UzX3u9XuLi4mruE0I0DNkcamJsNhtnpnfkkUumYotS7CzZySHPIRJjE3D73bgDLk7PPJ2zmvUk2dORdsldqdyuUX4TOz72HNjHx5tXkLN0GlC1w840TdAGBd9/zOdvTeLbZY/w7b+fRYX2a5umiWmaNYdW2Ww2tNYRe6iVEOFOiruJcTgcBPwB+rbuy6JbFtEsMQOb3U6ZtxxHdBQ+w8/3e7/jYOVBtu3Zylfr19A2vjvXthjJxhXbOK/L6cRX2nl3+bsEggEAKivKOLD7G778198oc8dw3pA5XHbbQgJG1VElfr+/5giW6p2UpmnK1rYQjUSGSpqY8vLymvHos1p2ZdXEr7nxlSEUlhQSo6OJ1jHEEsPBkoNov0mLtJYY2qDoQDHXnnsTZT+UkRJThi8ljp0/bqfLGd344oNn2PrtUk4/4yz6XTqe7n2upqKigsT4eLxeL+np6RiGQSAQwOl0orUmPj6e4uJiMjIyZOekEA1M3lFNTPXOwqioKLxeLy3iW/Lqza/yz83/5MWVL7KvtBD8mqSoJLpmdSVaRXOg7ADxUXFUVlSiDEgqb0dlchl/XjKJoR1uYscPm0ht2ZVrxv6VjBZt8Xq9xMfH4/f7cTgcuN3umuO34+KqrvRoGAZJSUmyc1KIRiDF3cRU7xAMBAI1J+F0bn4mZw66hz5Z51HkKuKJ956goHgfu4p2kh6bQTTRlBQX43MH8Do93HX9Xdx94QTK4/fy2synSDtgcN/jL5PW/HTcbjdxcXF4vV5iYmJqTsqpHueu3jlZXegxMTEWf0eEaHqkuJsY0zSJiorC7/fX2kmoNfRt35fYuFiu7HoljmgHzkon0XZFwa7tNE/JwKchPr05sdGxpKWmUVFxiG1nbGDQbVfRrlNPlFIYhoHNZsNZfJBAlJ2AYZJxWhY2m62mvIGax8oOSiEanhR3ExMbG1tzXLXP5wOouTZITEwMfr+fpNgkitevJjbgofJAEUn7dlNRdojUHueQ3PMCnPk7yPN4+HH/ATZ/tYoLzu1HoGAP+3K3EhsXR0ViGru/WsGeLRtJbN6K+PZnkpjRjKxu3WjRqXPNafApKSkyVCJEI5DibmJcLhcZGRk4nU5iY2MxTROfz4dSCo/HQ6ynkryFs0hIy8AfF09K85YkXzgQrRQK8OzdjS4vJcYMkpC3nQt9bvSKpewryEfZojgU8BOXmcWZg6+kw+Ar0IbJtlVfsn/LRvb891sqPV6un/JH0po1o7y8nIyMDClvIRqYFHcTk5ycXHWtkthY3G43NpsNh8OB1poEh50Nd48jpX0n0gZcjs0eBdrAX7Cn6sK9WmO3R5HSsQum1iSc3oGONw7HMEx87gqi4hIxtEkgEMRTXoqpwTA1rbufTSutKS8p4cPnZjDnd3cw4bXXSU1NDesrAQoRqWRTqImpqKigWbNmNYfkORwOAoEA3kMlrL39euJPy6LVr36DWVmOWV6KrixHeZ0ojxO8LrSrAqP0IMHSg5iuSoLlJRiVh1B+P/6yUgKHDhGsrCDochF0uwi4XfidlficVcMz1026D+f+Ql747Sh+3LkTwzCs/pYI0eTIFncTExsbi8vlQilFIBBAa43dbqfwn++QfnoHTrviWgLFhdhDh+/ZVGiWDKVQWmNqDVqh0GCaaA2G1gRNMEwTU2tMTehrjWFqAlpjaJOgqTBNzYXDb+GTua/y3WcrOaNzZ6u/JUI0OVLcTUx8fDyFhYWkpKTg8XiIjo7GFvBRuX0TLc7qSbB4PzabqipqG9hC5U1VVaNNE7QKlXboiBSj6tT3qqI2MU0ImCaGCUGtMUJfB7XG0Bob0K7H2axdsoT+vxlCesuW1n5ThGhipLgtorXG6XSSlJTUoK9bXl5OixYt8Hg8JCYmYpomBZ98CD4/phHA8LhQNhsoUPaq0rbbqnZMGpqqLWoTtAnaMDHNqq1wQxuYhgptfWuChknQhKBpEtAQMAwMDQGz6nbLjh3ZnZuL89ChRi1uj8dDVFRUzaQNomkyDAOv10tCQoLVUepUfRTXyTh3QYrbAps3byY/P58lS5YwdOhQevXqRbNmzRrktVNSUigqKiIpKQmXy4Xdbic+xkFltB3T78UMgrbZwAbapsCmsNltKFVV1srUYGq0qTENA7NmSCS0hW1UDY34TU3Q0FXFHdriDoS+9puhYZNgABrpOO5AIMDKlStZs2YNWVlZdO7cmQEDBjTKuoS11q1bR15eHmvXruWKK67goosuIjEx0epYNbTWrFixgk2bNgGQnZ3N4MGDG/U6PbJz0gLTp0/n66+/5pFHHuHpp59m/fr1DfbaHo+nZis+Jiam5tR30+fF9LgwPC5Mj7vqw+vG9HowPW60O/TZ4z7scR4MjxvD4yLocRPwuAl4qnZKBl1OAm4XPpcLv6sSn8uJz+XC63Ljc7nxOisxAoEG+3f9lMvl4ve//z2DBg0iNjaW8ePHN9q6hLUmT57Mvn37GD16NFOmTGHv3r1WR6rFNE3Gjh1Lx44d6dixI2PHjv3ftIGNRIr7JFu6dCm9e/dmx44dPPfcc7zyyissWrSIioqKBnl9u92O2+2umb1Ga02U3UFl7g/4SosxXC6CbidBj7uqgN1OAi43/pqjRJwE3W4Mt5OA20nA5STgqloecDrxOyvxu5z4XU58TidFW7/DU3YIr7MSr7MSj7MSr9OFp9JJoBGL+5577uHhhx/mscceo1u3bkyfPp2cnJxGW5+wxiuvvMJvf/tbPv74Yz766CNef/11cnJywupopfvuu4+//OUvPPfcc0RHR/P6669z3333Neo6ZajkJLv88su54447uP322znvvPOYMWMG11xzTYONdVcfN62UqrmWdkyz5uCIpuKHzagOndAxMWibDW1XaKXxuypRMfHgcGAEgwT8QXxeN2Vbv8MfDOINanymxhs08BomPgOSOnXHiI7GER+P1+UmqBQBQ+MzqoZM9u3ZTfnBg6hGOo572rRpjBw5krlz52Kz2bjrrrv47LPPGmVd4udrqGGCESNGcN1115GTk0ObNm144IEHuOeee8LqpK7HH3+cwYMH8+abbxIbG8tvfvMbPvnkk0ZdpxT3SRYdHc3555/P22+/TW5uLnv27GH48OEN9otefVnXyspKEhISCAaDkN2HjL6XULT8PQyPi9R2HTDi4zFsCrvSGEUFqKgYiI7GX1mOr/gAfqNqHNtnmAQNjT+oCRgGwaAmYJgUbPoGXxCimrXAFwhCQiJEx+LXirLiUnbn5nLxbeNIb9WqQf5dP5WWlkZWVhZz587l0KFD9O3bl/j4+EZZl/j5GuoaNbGxsfTv35+XX36Z9u3bEwwGadmyZVhd5z0hIYEePXowe/ZsALp169boO1GluC1w5513ctttt/Hxxx8zceLEBn3t+Ph4ysvLsdvteL1eoGor3OPzEzQ1PreLyqJ9xDfPxFNWil2b4HWD34dJ1Y5IU4cK24SAofGHdjoGzaojSgz9vx2Wrn0F+AyNxzCJyWiOy+enpOggpgnte2QT10g7keLj41mwYAHr16+nVatWZGVlNcp6hPUeeeQRysvL+c9//sODDz5odZwj2Gw25syZw9atW1FK0fkknLsgxW2R6OhorrnmmgZ/Xb/fT2JiYs0x3IZhYBgGcVlZBO0OCAZQlZXo6Gh0yUHs2kQpW9UZ74ChzaqTasyqk278psYfOmIkYEJAm6EjS0In4WiNQdUx3j6vF4/Tg6kUMYnJeH0+TNNs1D9re/fu3WivLcJHSkoKgwYNsjpGvbp06XLS1hU+A0WiwVT/mXr4n6vtR/wOW7OWuA0Dt9uLq7wcT8DAEzDxBEzcQRN3wMAdNPEENb4g+IImvqCJP1hV4AHDrPowNUbwf1vhfsPEROGqcOHxeAgGTc6+6koG3HqLVd8CIZo02eJuYqKjo/F4PNhstqrxbf43ea8ttTnBPXlobWA43dgME7vSVedMVu/MpOokHKP65JrQlrcvVNp+s2pHZSB04o3fDD0WMKgaQuly0QDs2IiPjQurnUhCNBXyrmpivF4vycnJQNWOnaioKEzTxDAM2o26C5+h8AZNPF5/1dZ2MPQRMPAGzaojRwKhz4bGZ2i8hok/aOILfQ4GNf7Q+HfQ1FXj4IEgXq8Xe2wMthgHV46/g4qKirA6bEuIpkK2uJuYpKQkiouLiY2Nxel0opTC4XBgt9s54/yLWBufiL+yHJuCKJvCZiqU0tVXdf3fae9UbXFXX4/EHyrogAF+E/ymgc+AgFH1OL+h0VEOLhw6nG3/3UDb7t1JSEiQiYKFaATH3OJWSp2ulPpMKfW9Uuo7pdQfQssfVUoVKKU2hD5+fdhzHlZK7VBKbVNKXdGY/wBRm9PpJCUlBa01sbGxOBwODMPANE3cgQCXPDe35nhst1E1tu0JmLhD49wew8ATNA7bAjfxBgz8QQN/9VCJYeIPVp/ebuAzIWiYdLmwH99+9hkTXppNdHQ0Tqez0c8gE+JUdDybQ0HgPq31f5RSScC3Sqnqo8tnaq2fOfzBSqmuwHCgG3Aa8KlS6kyttfzNfBJER0fj9XprzflYPc4cHR1NTGYLWl50CXu+WoEtdGlXRdU4t8aGRtdcytUIXco1GLqwVNU1SXTNIYJ+08RnVI13xySn4PH6Of/Xv6Zl27YYhoHD4Qir422FaCqOucWttS7UWv8ndLsS+AGo76DZ64C3tNY+rXUesAPo0xBhxbHFxsZSWVmJUgq/349pmtjt9qqLTcXHE5Wazml9LsQX1KGjSqq2rD1BXfU5dJSJJ2jiM6rGub0GoY+qrW2fUbWDsmqoxMRUUXS75FI8fj8XXns9ScnJGIZBQkKCFLcQjeBn7ZxUSrUDzgHWhhZNUEptUkq9qpRKCy3LAn487Gl7qb/oRQOqqKigefPmmKZZVdRRUQQCAQKBAIcOHSIhPp5uw0fTetDleMyqoRBXwMDlN3CHDg90h4ZKXKEC9wYMvMEgvoCBr3rHZdDEb5gYdged+w2ktLiEcy+9jKzu3SkrK8PhcFBcXCw7J4VoBMdd3EqpRGARMElrXQG8CHQAegKFwLM/Z8VKqfFKqfVKqfWBgOfnPFXUIzk5mdLSUmw2G263m0AggMPhwOFwkJqaitvtxu5w0OayXxN0xNUct+0xdNWx3Ebo66D+3xEnQRNvUOM1NJ7qMW5TQ2wsmR06oqPsuCvKyerSheSUFFJTUwkEAqSnp8uck0I0guPa5a+UclBV2gu11u8DaK2LDrv/ZWBp6MsC4PTDnt46tKwWrfVsYDZAUlILHboGuThBbreb5NBQRfUs79XHc/v9fmJjYzEMgz43DMVTWsLSRx+h9mjG/47nrjr9nZpT3IM6dBq8aaKVncTkNIiOoTAvn/FPP023/v3xeDwopYiKiqKyspLk5GQpbyEa2PEcVaKAOcAPWusZhy0//OpBNwBbQrc/BIYrpWKUUmcAnYB1DRdZ1CcuLo6Kigq01ni9XoLBIDabDZvNRkJCAl6vF601FRUVDLztDi5/5FGCdkfV1nToeG5P0MSv7HgOW+Y1TPzahjdo4AtqfCjcHi/78/cw8v/9mU7nn191JcKYGGJjYwkGgzLGLUQjOZ4t7ouAkcBmpdSG0LIpwM1KqZ5UXeIiH7gDQGv9nVLqHeB7qo5I+b0cUXLy2O12oqKiiIqKqjnlvfr24fdFRUURHRND31t/S8deF/DJiy9QUXwQqPqB9r3lVr5a+Dpag2lqouLiOb1HD35YswZTg0aR3qolt06ZQvrppxPlcNS8bvU6o6KipLiFaATHLG6t9deEJgL/iWX1PCcHkKvaW8Bms9U7DVpKSgpAzWUnMzMzyczMpNtRpv26fMztvziHzAEpROORU96FECLChMn5yJqYmFKrQ9QpOroCr9dLaWn4ZnS73TidzrDOGAgEKCsra7CL7DcOI6x/F2NiyrAH7MSUNv5M4r9UtDMat9sd1r+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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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DBhgaPG22+307NmTbt26hQv1W2+9xWuvvUbv3r0544wzDP/lEqvUr7UIevPNN7n55ptPuWhX8Xg8XHPNNaxcuTJCyequZcuWMWHCBGbMmMFzzz3HE088YXSkOkkIgc1mw2w289RTT7Fs2TKWLl164r9YCywWS/h2dtdddx2apjFv3jw+/vhjo6PFLFW4I2TBggXcddddR/VnCyFwOBwnbDUIIUhISDhq27Zt27j55pv57rvvopK3LiguLmbt2rUsWLCAl19+mcTERFq0aMHatWuNjlbnTZkyhT179sTkxcCxY8fy9NNPs3v3bj744AOj48QkVbhrSNM03n77bSZPnkxZWdlR32vVqhWzZ88+YX+d1WplyZIlpKSkHDVJZ/v27Vx55ZXs2LGjQY42SU5O5qyzzmLZsmWMGzeOyy67jBdffJFdu3ZRVlbWIF+TSLHb7XTp0oWcnJxqRzwZyW63M3bsWDZv3szKlStj/t+6trt0VOGuASklK1eu5Prrr6ekpCS8vXHjxvTv359vv/2WzMzMk/pHPfvss/n111+55557jmp95+bm0q9fP/Lz86PyHGKZxWKhdevWLF68mBUrVjBnzhzuv/9+9u/fz7XXXsvy5cvZs2eP0THrrAsvvJDmzZvz5ptvxmTxdjgcPPjggyxZsiTmuw1r+xeLKtw1oOs6f//734/q027atCnTpk3jk08+oVGjRid9rKrp8ZMmTeK22247agnQiooK5s6dG/Otjmg477zzWLZsGX6/n48//pg777yTKVOm8N5777FmzRreeOMNHnnkEbxer9FRj+nLL7/kvPPOi8klXYUQjBkzBiEE//d//2d0nGMSQvDMM8+wZs2amOzWqZKZmUnLli354YcfauV8qnDXgBCCVq1ahdcZsVqtTJ8+nVGjRpGcnPy73z4JIcjIyOC+++5j/Pjx4e12u73WR1IkJCQwatSomFnf4qabbjpqpl9cXBwPP/wwo0eP5txzz+XKK6/kiSeeCA91ixUrVqzgvPPOIy4uzugo1frLX/5Cy5YtefLJJ2PqtasihOCuu+7il19+4ZNPPonJjFWFe9OmTbVyPlW4a0AIwfTp05k8eTJt27Zl/fr1jB49+jcXGn/vf7S0tDRmzJjByy+/TJs2bZg9e3a4ZVRbqropYr0rok2bNgwaNIi33nqLjh070r17d7766isOHDhg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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## పాలసీని తనిఖీ చేయడం\n", + "\n", + "Q-టేబుల్ ప్రతి స్థితిలో ప్రతి చర్య యొక్క \"ఆకర్షణ\" ను జాబితా చేస్తుంది కాబట్టి, మన ప్రపంచంలో సమర్థవంతమైన నావిగేషన్ నిర్వచించడానికి దీన్ని ఉపయోగించడం చాలా సులభం. అత్యంత సాదారణ సందర్భంలో, మనం కేవలం అత్యధిక Q-టేబుల్ విలువకు సంబంధించిన చర్యను ఎంచుకోవచ్చు:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "def qpolicy_strict(m):\n", + " x,y = m.human\n", + " v = probs(Q[x,y])\n", + " a = list(actions)[np.argmax(v)]\n", + " return a\n", + "\n", + "walk(m,qpolicy_strict)" + ] + }, + { + "source": [ + "మీరు పై కోడ్‌ను అనేక సార్లు ప్రయత్నిస్తే, అది కొన్నిసార్లు \"అడ్డుకుంటుంది\" అని గమనించవచ్చు, మరియు మీరు దాన్ని ఆపడానికి నోట్‌బుక్‌లో STOP బటన్‌ను నొక్కాలి.\n", + "\n", + "> **పని 1:** `walk` ఫంక్షన్‌ను మార్చి మార్గం గరిష్ట పొడవును ఒక నిర్దిష్ట దశల సంఖ్య (ఉదాహరణకు, 100) తో పరిమితం చేయండి, మరియు పై కోడ్ ఈ విలువను సమయానుసారం తిరిగి ఇవ్వడం చూడండి.\n", + "\n", + "> **పని 2:** `walk` ఫంక్షన్‌ను మార్చి అది ఇప్పటికే వెళ్లిన ప్రదేశాలకు తిరిగి వెళ్లకుండా చేయండి. ఇది `walk` లూప్ అవ్వకుండా నివారిస్తుంది, అయితే ఏజెంట్ ఇంకా \"పట్టుబడి\" ఉండే స్థలంలో చిక్కుకోవచ్చు, అక్కడ నుండి బయటపడలేకపోవచ్చు.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average path length = 3.45, eaten by wolf: 0 times\n" + ] + } + ], + "source": [ + "\n", + "def qpolicy(m):\n", + " x,y = m.human\n", + " v = probs(Q[x,y])\n", + " a = random.choices(list(actions),weights=v)[0]\n", + " return a\n", + "\n", + "print_statistics(qpolicy)" + ] + }, + { + "source": [ + "## అభ్యాస ప్రక్రియను పరిశీలించడం\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 15 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(lpath)" + ] + }, + { + "source": [ + "మనం ఇక్కడ చూస్తున్నది ఏమిటంటే మొదట సగటు మార్గం పొడవు పెరిగింది. ఇది చాలా సార్లు వాతావరణం గురించి మనకు ఏమీ తెలియకపోతే - మనం చెడు స్థితులలో, నీరు లేదా నక్కలో చిక్కిపోవడం వల్ల కావచ్చు. మనం ఎక్కువగా నేర్చుకుంటూ ఈ జ్ఞానాన్ని ఉపయోగించడం ప్రారంభించినప్పుడు, మనం వాతావరణాన్ని ఎక్కువ కాలం అన్వేషించగలుగుతాము, కానీ మనకు ఎపిల్స్ ఎక్కడ ఉన్నాయో ఇంకా బాగా తెలియదు.\n", + "\n", + "మనం సరిపడా నేర్చుకున్న తర్వాత, ఏజెంట్ లక్ష్యాన్ని సాధించడం సులభమవుతుంది, మరియు మార్గం పొడవు తగ్గడం ప్రారంభమవుతుంది. అయితే, మనం ఇంకా అన్వేషణకు తెరచి ఉన్నాము, కాబట్టి మనం తరచుగా ఉత్తమ మార్గం నుండి దూరంగా వెళ్ళిపోతాము, మరియు కొత్త ఎంపికలను అన్వేషించి మార్గాన్ని ఆప్టిమల్ కంటే పొడవుగా చేస్తాము.\n", + "\n", + "ఈ గ్రాఫ్ పై మనం మరో విషయం గమనిస్తాము, అది ఏదో సమయంలో పొడవు అకస్మాత్తుగా పెరిగింది. ఇది ప్రక్రియ యొక్క యాదృచ్ఛిక స్వభావాన్ని సూచిస్తుంది, మరియు మనం ఏదో సమయంలో Q-టేబుల్ గుణకాలను \"స్పాయిల్\" చేయవచ్చు, వాటిని కొత్త విలువలతో మళ్లీ రాయడం ద్వారా. ఇది సాధారణంగా నేర్చుకునే రేటును తగ్గించడం ద్వారా తగ్గించాలి (అంటే శిక్షణ చివర్లో మనం Q-టేబుల్ విలువలను చిన్న విలువతో మాత్రమే సర్దుబాటు చేస్తాము).\n", + "\n", + "మొత్తానికి, శిక్షణ ప్రక్రియ విజయవంతం కావడం మరియు నాణ్యత చాలా వరకు పరామితులపై ఆధారపడి ఉంటుంది, ఉదాహరణకు నేర్చుకునే రేటు, నేర్చుకునే రేటు తగ్గింపు మరియు డిస్కౌంట్ ఫ్యాక్టర్. వీటిని తరచుగా **హైపర్‌పరామితులు** అని పిలుస్తారు, శిక్షణ సమయంలో మనం ఆప్టిమైజ్ చేసే **పరామితులు** (ఉదా: Q-టేబుల్ గుణకాలు) నుండి వేరుగా గుర్తించడానికి. ఉత్తమ హైపర్‌పరామితుల విలువలను కనుగొనడం ప్రక్రియను **హైపర్‌పరామితి ఆప్టిమైజేషన్** అంటారు, ఇది ఒక ప్రత్యేక విషయం.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "## వ్యాయామం\n", + "#### మరింత వాస్తవికమైన పీటర్ మరియు వోల్ఫ్ ప్రపంచం\n", + "\n", + "మన పరిస్థితిలో, పీటర్ దాదాపు అలసిపోకుండా లేదా ఆకలితో బాధపడకుండా చుట్టూ తిరగగలిగాడు. మరింత వాస్తవిక ప్రపంచంలో, అతను సమయానికి కూర్చొని విశ్రాంతి తీసుకోవాలి, అలాగే తినుకోవాలి కూడా. క్రింది నియమాలను అమలు చేయడం ద్వారా మన ప్రపంచాన్ని మరింత వాస్తవికంగా మార్చుకుందాం:\n", + "\n", + "1. ఒక చోట నుండి మరొక చోటికి కదలడం ద్వారా, పీటర్ **శక్తి** కోల్పోతాడు మరియు కొంత **దుర్బలత** పొందుతాడు.\n", + "2. పీటర్ ఆపిల్స్ తినడం ద్వారా మరింత శక్తిని పొందవచ్చు.\n", + "3. పీటర్ చెట్టు కింద లేదా గడ్డి మీద (అంటే - పచ్చని మైదానం ఉన్న బోర్డు స్థానం) విశ్రాంతి తీసుకోవడం ద్వారా దుర్బలతను తొలగించుకోవచ్చు.\n", + "4. పీటర్ నక్కను కనుగొని చంపాలి.\n", + "5. నక్కను చంపడానికి, పీటర్ కు నిర్దిష్ట స్థాయిల శక్తి మరియు దుర్బలత ఉండాలి, లేకపోతే అతను యుద్ధంలో ఓడిపోతాడు.\n", + "\n", + "పైన ఉన్న రివార్డ్ ఫంక్షన్ ను ఆట నియమాల ప్రకారం మార్చండి, గేమ్ గెలవడానికి ఉత్తమ వ్యూహాన్ని నేర్చుకోవడానికి రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ అల్గోరిథమ్ ను నడపండి, మరియు గేమ్ గెలిచిన మరియు ఓడిపోయిన సంఖ్యల పరంగా రాండమ్ వాక్ ఫలితాలను మీ అల్గోరిథమ్ తో పోల్చండి.\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-లెర్నింగ్ ఉపయోగించి నేర్చుకోవడం ఎలా అనేది మేము చూడబోతున్నాము. + +![The great escape!](../../../../translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.te.png) + +> పీటర్ మరియు అతని స్నేహితులు నక్క నుండి తప్పించుకోవడానికి సృజనాత్మకత చూపుతున్నారు! చిత్రం [Jen Looper](https://twitter.com/jenlooper) ద్వారా + +మేము సమతుల్యతను సాధించడానికి సులభీకరించిన వెర్షన్ అయిన **కార్ట్‌పోల్** సమస్యను ఉపయోగిస్తాము. కార్ట్‌పోల్ ప్రపంచంలో, మాకు ఎడమ లేదా కుడి వైపు కదలగల ఒక ఆడంబరమైన స్లైడర్ ఉంటుంది, మరియు లక్ష్యం స్లైడర్ పై ఒక నిలువెత్తు కాండాన్ని సమతుల్యం చేయడం. + +a cartpole + +## ముందస్తు అవగాహన + +ఈ పాఠంలో, మేము **OpenAI Gym** అనే లైబ్రరీని వాడి వివిధ **పరిసరాలను** అనుకరించబోతున్నాము. మీరు ఈ పాఠం కోడ్‌ను స్థానికంగా (ఉదా: Visual Studio Code నుండి) నడపవచ్చు, అప్పుడు అనుకరణ కొత్త విండోలో తెరుస్తుంది. ఆన్‌లైన్‌లో కోడ్ నడిపేటప్పుడు, మీరు కొంత మార్పులు చేయవలసి ఉండవచ్చు, వివరాలు [ఇక్కడ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) ఉన్నాయి. + +## OpenAI Gym + +మునుపటి పాఠంలో, ఆట నియమాలు మరియు స్థితి మేము నిర్వచించిన `Board` క్లాస్ ద్వారా ఇచ్చబడ్డాయి. ఇక్కడ మేము ఒక ప్రత్యేక **సిమ్యులేషన్ పరిసరాన్ని** ఉపయోగిస్తాము, ఇది సమతుల్య కాండం వెనుక భౌతిక శాస్త్రాన్ని అనుకరిస్తుంది. రీఇన్ఫోర్స్‌మెంట్ లెర్నింగ్ అల్గోరిథమ్స్ శిక్షణకు అత్యంత ప్రాచుర్యం పొందిన సిమ్యులేషన్ పరిసరాలలో ఒకటి [Gym](https://gym.openai.com/) అని పిలవబడుతుంది, ఇది [OpenAI](https://openai.com/) నిర్వహిస్తుంది. ఈ జిమ్ ఉపయోగించి మేము కార్ట్‌పోల్ సిమ్యులేషన్ నుండి అటారీ ఆటల వరకు వివిధ **పరిసరాలను** సృష్టించవచ్చు. + +> **గమనిక**: OpenAI Gym నుండి అందుబాటులో ఉన్న ఇతర పరిసరాలను మీరు [ఇక్కడ](https://gym.openai.com/envs/#classic_control) చూడవచ్చు. + +ముందుగా, జిమ్ ఇన్‌స్టాల్ చేసి అవసరమైన లైబ్రరీలను దిగుమతి చేసుకుందాం (కోడ్ బ్లాక్ 1): + +```python +import sys +!{sys.executable} -m pip install gym + +import gym +import matplotlib.pyplot as plt +import numpy as np +import random +``` + +## వ్యాయామం - కార్ట్‌పోల్ పరిసరాన్ని ప్రారంభించండి + +కార్ట్‌పోల్ సమతుల్యత సమస్యతో పని చేయడానికి, సంబంధిత పరిసరాన్ని ప్రారంభించాలి. ప్రతి పరిసరం క్రింది వాటితో అనుబంధించబడుతుంది: + +- **పరిశీలన స్థలం** ఇది పరిసరంనుంచి మాకు అందే సమాచార నిర్మాణాన్ని నిర్వచిస్తుంది. కార్ట్‌పోల్ సమస్యలో, మాకు కాండం స్థానం, వేగం మరియు కొన్ని ఇతర విలువలు అందుతాయి. + +- **చర్య స్థలం** ఇది సాధ్యమైన చర్యలను నిర్వచిస్తుంది. మన కేసులో చర్య స్థలం విభిన్నమైనది, మరియు రెండు చర్యలతో ఉంటుంది - **ఎడమ** మరియు **కుడి**. (కోడ్ బ్లాక్ 2) + +1. ప్రారంభించడానికి, క్రింది కోడ్ టైప్ చేయండి: + + ```python + env = gym.make("CartPole-v1") + print(env.action_space) + print(env.observation_space) + print(env.action_space.sample()) + ``` + +పరిసరం ఎలా పనిచేస్తుందో చూడటానికి, 100 దశల కొరకు చిన్న సిమ్యులేషన్ నడపండి. ప్రతి దశలో, తీసుకోవాల్సిన చర్యను అందిస్తాము - ఈ సిమ్యులేషన్‌లో మేము యాదృచ్ఛికంగా `action_space` నుండి ఒక చర్యను ఎంచుకుంటాము. + +1. క్రింది కోడ్ నడపండి మరియు దాని ఫలితాన్ని చూడండి. + + ✅ గమనించండి, ఈ కోడ్ స్థానిక Python ఇన్‌స్టాలేషన్‌లో నడపడం మంచిది! (కోడ్ బ్లాక్ 3) + + ```python + env.reset() + + for i in range(100): + env.render() + env.step(env.action_space.sample()) + env.close() + ``` + + మీరు ఈ చిత్రానికి సమానమైన దృశ్యాన్ని చూడవచ్చు: + + ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + +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) +``` + +![raw progress](../../../../translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.te.png) + +ఈ గ్రాఫ్ నుండి ఏమీ చెప్పలేము, ఎందుకంటే యాదృచ్ఛిక శిక్షణ ప్రక్రియ స్వభావం వల్ల శిక్షణ సెషన్ల పొడవు చాలా మారుతుంది. ఈ గ్రాఫ్‌కు అర్థం చేసుకోవడానికి, మేము అనేక ప్రయోగాలపై, ఉదా: 100, **రన్నింగ్ సగటు** లెక్కించవచ్చు. ఇది `np.convolve` ఉపయోగించి సులభంగా చేయవచ్చు: (కోడ్ బ్లాక్ 12) + +```python +def running_average(x,window): + return np.convolve(x,np.ones(window)/window,mode='valid') + +plt.plot(running_average(rewards,100)) +``` + +![training progress](../../../../translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.te.png) + +## హైపర్‌పారామీటర్ల మార్పులు + +లెర్నింగ్‌ను స్థిరంగా చేయడానికి, శిక్షణ సమయంలో కొన్ని హైపర్‌పారామీటర్లను సర్దుబాటు చేయడం మంచిది. ముఖ్యంగా: + +- **లెర్నింగ్ రేట్** `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() +``` + +మీకు ఇలాంటిది కనిపించాలి: + +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) + +--- + +## 🚀సవాలు + +> **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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(rewards)" + ] + }, + { + "source": [ + "ఈ గ్రాఫ్ నుండి ఏదైనా చెప్పడం సాధ్యం కాదు, ఎందుకంటే స్టోచాస్టిక్ శిక్షణ ప్రక్రియ స్వభావం కారణంగా శిక్షణ సెషన్ల పొడవు చాలా మారుతుంది. ఈ గ్రాఫ్‌ను మరింత అర్థవంతంగా చేయడానికి, మనం ప్రయోగాల సిరీస్ పై **రన్నింగ్ సగటు** లెక్కించవచ్చు, ఉదాహరణకు 100 ప్రయోగాలు. ఇది సౌకర్యవంతంగా `np.convolve` ఉపయోగించి చేయవచ్చు:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 22 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "#code block 12" + ] + }, + { + "source": [ + "## వేరియింగ్ హైపర్‌పారామీటర్లు మరియు ఫలితాన్ని చర్యలో చూడటం\n", + "\n", + "ఇప్పుడు శిక్షణ పొందిన మోడల్ ఎలా ప్రవర్తిస్తుందో నిజంగా చూడటం ఆసక్తికరం. సిమ్యులేషన్‌ను నడపుదాం, మరియు శిక్షణ సమయంలో అనుసరించిన అదే చర్య ఎంపిక వ్యూహాన్ని అనుసరిస్తాము: Q-టేబుల్‌లోని 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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(rewards)" + ] + }, + { + "source": [ + "ఈ గ్రాఫ్ నుండి ఏదైనా చెప్పడం సాధ్యం కాదు, ఎందుకంటే స్టోకాస్టిక్ శిక్షణ ప్రక్రియ స్వభావం కారణంగా శిక్షణ సెషన్ల పొడవు చాలా మారుతుంది. ఈ గ్రాఫ్‌ను మరింత అర్థవంతంగా చేయడానికి, మనం ప్రయోగాల సిరీస్‌పై **రన్నింగ్ సగటు** లెక్కించవచ్చు, ఉదాహరణకు 100. ఇది సౌకర్యవంతంగా `np.convolve` ఉపయోగించి చేయవచ్చు:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 22 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "def running_average(x,window):\n", + " return np.convolve(x,np.ones(window)/window,mode='valid')\n", + "\n", + "plt.plot(running_average(rewards,100))" + ] + }, + { + "source": [ + "## వేరియింగ్ హైపర్‌పారామీటర్లు మరియు ఫలితాన్ని చర్యలో చూడటం\n", + "\n", + "ఇప్పుడు శిక్షణ పొందిన మోడల్ ఎలా ప్రవర్తిస్తుందో నిజంగా చూడటం ఆసక్తికరం. సిమ్యులేషన్‌ను నడపుదాం, మరియు శిక్షణ సమయంలో అనుసరించిన అదే చర్య ఎంపిక వ్యూహాన్ని అనుసరిస్తాము: Q-టేబుల్‌లోని 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 అన్నది నిర్ణయాల గురించి: సరైన నిర్ణయాలను తీసుకోవడం లేదా కనీసం వాటి నుండి నేర్చుకోవడం. + +మీకు స్టాక్ మార్కెట్ వంటి అనుకరణాత్మక వాతావరణం ఉందని ఊహించుకోండి. మీరు ఒక నిర్దిష్ట నియంత్రణను విధిస్తే ఏమవుతుంది? అది సానుకూల లేదా ప్రతికూల ప్రభావం కలిగిస్తుందా? ఏదైనా ప్రతికూలం జరిగితే, మీరు ఆ _ప్రతికూల రీన్ఫోర్స్‌మెంట్_ తీసుకుని, దానినుండి నేర్చుకుని, మార్గాన్ని మార్చుకోవాలి. అది సానుకూల ఫలితం అయితే, మీరు ఆ _సానుకూల రీన్ఫోర్స్‌మెంట్_ పై ఆధారపడి నిర్మించుకోవాలి. + +![peter and the wolf](../../../translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.te.png) + +> పీటర్ మరియు అతని స్నేహితులు ఆకలితో ఉన్న నక్క నుండి తప్పించుకోవాలి! చిత్రం [Jen Looper](https://twitter.com/jenlooper) ద్వారా + +## ప్రాంతీయ విషయం: పీటర్ మరియు నక్క (రష్యా) + +[పీటర్ మరియు నక్క](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) అనేది రష్యన్ సంగీతకారుడు [సెర్గే ప్రోకోఫీవ్](https://en.wikipedia.org/wiki/Sergei_Prokofiev) రాసిన సంగీత కథ. ఇది యువ పయనికుడు పీటర్ గురించి, అతను ధైర్యంగా తన ఇంటి నుండి అడవి క్లియర్ చేయడానికి వెళ్లి నక్కను వెంబడిస్తాడు. ఈ విభాగంలో, మేము పీటర్‌కు సహాయపడే మెషీన్ లెర్నింగ్ అల్గోరిథమ్స్‌ను శిక్షణ ఇస్తాము: + +- **చుట్టుపక్కల ప్రాంతాన్ని అన్వేషించండి** మరియు ఉత్తమ నావిగేషన్ మ్యాప్‌ను నిర్మించండి +- **స్కేట్‌బోర్డ్‌ను ఉపయోగించడం మరియు దానిపై సమతుల్యం సాధించడం నేర్చుకోండి**, తద్వారా వేగంగా చలించగలుగుతాడు. + +[![Peter and the Wolf](https://img.youtube.com/vi/Fmi5zHg4QSM/0.jpg)](https://www.youtube.com/watch?v=Fmi5zHg4QSM) + +> 🎥 పై చిత్రాన్ని క్లిక్ చేసి ప్రోకోఫీవ్ రచించిన పీటర్ మరియు నక్కను వినండి + +## రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ + +మునుపటి విభాగాలలో, మీరు రెండు మెషీన్ లెర్నింగ్ సమస్యల ఉదాహరణలను చూశారు: + +- **పర్యవేక్షిత**, ఇక్కడ మనకు సమస్యను పరిష్కరించడానికి నమూనా పరిష్కారాలను సూచించే డేటాసెట్‌లు ఉంటాయి. [వర్గీకరణ](../4-Classification/README.md) మరియు [రెగ్రెషన్](../2-Regression/README.md) పర్యవేక్షిత లెర్నింగ్ పనులు. +- **పర్యవేక్షణ లేని**, ఇందులో మనకు లేబుల్ చేయబడిన శిక్షణ డేటా ఉండదు. పర్యవేక్షణ లేని లెర్నింగ్ యొక్క ప్రధాన ఉదాహరణ [క్లస్టరింగ్](../5-Clustering/README.md). + +ఈ విభాగంలో, లేబుల్ చేయబడిన శిక్షణ డేటా అవసరం లేని కొత్త రకమైన లెర్నింగ్ సమస్యను పరిచయం చేస్తాము. ఇలాంటి సమస్యలకి కొన్ని రకాలు ఉన్నాయి: + +- **[సెమీ-పర్యవేక్షిత లెర్నింగ్](https://wikipedia.org/wiki/Semi-supervised_learning)**, ఇక్కడ మనకు చాలా 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 @@ + +# పోస్ట్‌స్క్రిప్ట్: వాస్తవ ప్రపంచంలో మెషీన్ లెర్నింగ్ + + +![వాస్తవ ప్రపంచంలో మెషీన్ లెర్నింగ్ యొక్క సారాంశం స్కెచ్‌నోట్‌లో](../../../../translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.te.png) +> స్కెచ్‌నోట్ [టోమోమీ ఇమురా](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) + +> ![బాధ్యతాయుత AI టూల్స్ పై గిఫ్](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) + +## లోపాల విశ్లేషణ + +ఖచ్చితత్వాన్ని కొలవడానికి ఉపయోగించే సాంప్రదాయ మోడల్ పనితీరు మెట్రిక్స్ ఎక్కువగా సరైన మరియు తప్పు అంచనాల ఆధారంగా లెక్కింపులు. ఉదాహరణకు, ఒక మోడల్ 89% సార్లు ఖచ్చితంగా ఉందని, లోపం నష్టం 0.001 అని నిర్ణయించడం మంచి పనితీరు అని పరిగణించవచ్చు. లోపాలు సాధారణంగా మీ ప్రాథమిక డేటాసెట్‌లో సమానంగా పంపిణీ కావు. మీరు 89% మోడల్ ఖచ్చితత్వ స్కోరు పొందవచ్చు కానీ మోడల్ 42% సార్లు విఫలమవుతున్న డేటా ప్రాంతాలు వేరుగా ఉండవచ్చు. ఈ విఫలత నమూనాలు కొన్ని డేటా గుంపులతో న్యాయం లేదా నమ్మకదగినత సమస్యలకు దారితీస్తాయి. మోడల్ బాగా పనిచేస్తున్న లేదా చేయని ప్రాంతాలను అర్థం చేసుకోవడం అవసరం. మోడల్‌లో ఎక్కువ లోపాలు ఉన్న డేటా ప్రాంతాలు ముఖ్యమైన డేటా జనాభా కావచ్చు. + +![మోడల్ లోపాలను విశ్లేషించండి మరియు డీబగ్ చేయండి](../../../../translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.te.png) + +RAI డాష్‌బోర్డ్‌లో లోపాల విశ్లేషణ భాగం వివిధ కోహార్ట్లలో మోడల్ విఫలత ఎలా పంపిణీ అయిందో చెట్టు విజువలైజేషన్ ద్వారా చూపిస్తుంది. ఇది మీ డేటాసెట్‌లో ఎక్కువ లోపాలున్న లక్షణాలు లేదా ప్రాంతాలను గుర్తించడంలో ఉపయోగపడుతుంది. మోడల్ లోపాల ఎక్కువగా ఎక్కడ నుండి వస్తున్నాయో చూసి, మీరు మూల కారణాన్ని పరిశీలించవచ్చు. మీరు విశ్లేషణ కోసం డేటా కోహార్ట్లను కూడా సృష్టించవచ్చు. ఈ డేటా కోహార్ట్లు డీబగ్గింగ్ ప్రక్రియలో సహాయపడతాయి, ఎందుకు ఒక కోహార్ట్‌లో మోడల్ పనితీరు మంచిది కానీ మరొకదిలో లోపభూయిష్టమో తెలుసుకోవడానికి. + +![లోపాల విశ్లేషణ](../../../../translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.te.png) + +చెట్టు మ్యాప్‌పై విజువల్ సూచికలు సమస్య ప్రాంతాలను త్వరగా గుర్తించడంలో సహాయపడతాయి. ఉదాహరణకు, చెట్టు నోడ్ యొక్క ఎరుపు రంగు గాఢత ఎక్కువైతే, లోపాల రేటు ఎక్కువగా ఉంటుంది. + +హీట్ మ్యాప్ మరో విజువలైజేషన్ ఫంక్షనాలిటీ, ఇది ఒకటి లేదా రెండు లక్షణాలను ఉపయోగించి లోపాల రేటును పరిశీలించడానికి ఉపయోగపడుతుంది, మొత్తం డేటాసెట్ లేదా కోహార్ట్లలో మోడల్ లోపాలకు కారణం కనుగొనడానికి. + +![లోపాల విశ్లేషణ హీట్‌మ్యాప్](../../../../translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.te.png) + +లోపాల విశ్లేషణను ఉపయోగించండి, మీరు: + +* మోడల్ విఫలతలు డేటాసెట్ మరియు అనేక ఇన్‌పుట్ మరియు లక్షణ పరిమాణాలలో ఎలా పంపిణీ అయ్యాయో లోతుగా అర్థం చేసుకోవాలి. +* సమగ్ర పనితీరు మెట్రిక్స్‌ను విభజించి తప్పు ఉన్న కోహార్ట్లను ఆటోమేటిక్‌గా కనుగొని లక్ష్యిత పరిష్కార చర్యలకు దారితీయాలి. + +## మోడల్ అవలోకనం + +మెషీన్ లెర్నింగ్ మోడల్ పనితీరును అంచనా వేయడం అంటే దాని ప్రవర్తనను సమగ్రంగా అర్థం చేసుకోవడం. ఇది లోపాల రేటు, ఖచ్చితత్వం, రీకాల్, ప్రెసిషన్ లేదా MAE (Mean Absolute Error) వంటి metrics ను సమీక్షించడం ద్వారా సాధించవచ్చు, పనితీరు మెట్రిక్స్‌లో వ్యత్యాసాలను కనుగొనడానికి. ఒక పనితీరు మెట్రిక్ బాగుండవచ్చు, కానీ మరొక మెట్రిక్ లో లోపాలు కనిపించవచ్చు. అంతేకాక, మొత్తం డేటాసెట్ లేదా కోహార్ట్లలో metrics ను తులనాత్మకంగా పరిశీలించడం మోడల్ ఎక్కడ బాగా పనిచేస్తుందో లేదా చేయదో తెలియజేస్తుంది. ఇది ప్రత్యేకంగా సున్నితమైన లక్షణాలు (ఉదా: రోగి జాతి, లింగం, వయస్సు) ఉన్న కోహార్ట్లలో మోడల్ పనితీరును చూడటానికి ముఖ్యమైనది, ఇది మోడల్ లోపాలను వెలుగులోకి తీసుకురావచ్చు. ఉదాహరణకు, సున్నిత లక్షణాలు ఉన్న కోహార్ట్‌లో మోడల్ ఎక్కువ లోపాలు చూపిస్తే, అది మోడల్ లోపాలను సూచిస్తుంది. + +RAI డాష్‌బోర్డ్‌లో మోడల్ అవలోకనం భాగం కేవలం కోహార్ట్‌లో డేటా ప్రాతినిధ్యం పనితీరు మెట్రిక్స్‌ను విశ్లేషించడంలో మాత్రమే కాకుండా, వాడుకదారులకు వివిధ కోహార్ట్లలో మోడల్ ప్రవర్తనను తులనాత్మకంగా చూడటానికి అవకాశం ఇస్తుంది. + +![డేటాసెట్ కోహార్ట్లు - RAI డాష్‌బోర్డ్‌లో మోడల్ అవలోకనం](../../../../translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.te.png) + +ఈ భాగం లక్షణాల ఆధారిత విశ్లేషణ ఫంక్షనాలిటీ వాడుకదారులకు ఒక నిర్దిష్ట లక్షణంలో డేటా ఉపగుంపులను కుదించడానికి సహాయపడుతుంది, తద్వారా సూక్ష్మ స్థాయిలో అసాధారణతలను గుర్తించవచ్చు. ఉదాహరణకు, డాష్‌బోర్డ్‌లో ఒక వాడుకదారు ఎంచుకున్న లక్షణం కోసం ఆటోమేటిక్‌గా కోహార్ట్లను సృష్టించే ఇంటెలిజెన్స్ ఉంది (ఉదా: *"time_in_hospital < 3"* లేదా *"time_in_hospital >= 7"*). ఇది పెద్ద డేటా గుంపులోని ఒక లక్షణాన్ని వేరుచేసి, అది మోడల్ లోపాలపై కీలక ప్రభావం చూపుతున్నదా అని చూడటానికి సహాయపడుతుంది. + +![లక్షణ కోహార్ట్లు - RAI డాష్‌బోర్డ్‌లో మోడల్ అవలోకనం](../../../../translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.te.png) + +మోడల్ అవలోకనం భాగం రెండు తరహా వ్యత్యాస మెట్రిక్స్‌ను మద్దతు ఇస్తుంది: + +**మోడల్ పనితీరు వ్యత్యాసం**: ఈ మెట్రిక్స్ ఎంపిక చేసిన పనితీరు మెట్రిక్ విలువలలో డేటా ఉపగుంపుల మధ్య వ్యత్యాసాన్ని లెక్కిస్తాయి. కొన్ని ఉదాహరణలు: + +* ఖచ్చితత్వం రేటులో వ్యత్యాసం +* లోపాల రేటులో వ్యత్యాసం +* ప్రెసిషన్‌లో వ్యత్యాసం +* రీకాల్‌లో వ్యత్యాసం +* సగటు సార్వత్రిక లోపం (MAE)లో వ్యత్యాసం + +**ఎంపిక రేటులో వ్యత్యాసం**: ఈ మెట్రిక్ ఉపగుంపుల మధ్య ఎంపిక రేటులో (అనుకూల అంచనా) వ్యత్యాసాన్ని కలిగి ఉంటుంది. ఉదాహరణకు, రుణ ఆమోద రేట్లలో వ్యత్యాసం. ఎంపిక రేటు అంటే ప్రతి తరగతిలో 1గా (బైనరీ వర్గీకరణలో) వర్గీకరించిన డేటా పాయింట్ల శాతం లేదా అంచనా విలువల పంపిణీ (రెగ్రెషన్‌లో). + +## డేటా విశ్లేషణ + +> "మీరు డేటాను చాలాసేపు పీడిస్తే, అది ఏదైనా ఒప్పుకుంటుంది" - రోనాల్డ్ కోస్ + +ఈ వాక్యం తీవ్రంగా అనిపించవచ్చు, కానీ డేటాను ఏదైనా తర్కాన్ని మద్దతు ఇవ్వడానికి మానవీయంగా మార్చవచ్చు. అలాంటి మార్పులు కొన్నిసార్లు అనుకోకుండా జరుగుతాయి. మనుషులుగా, మనందరికీ పక్షపాతం ఉంటుంది, మరియు మీరు డేటాలో పక్షపాతం ప్రవేశపెడుతున్నప్పుడు అది తెలుసుకోవడం కష్టం. AI మరియు మెషీన్ లెర్నింగ్‌లో న్యాయాన్ని హామీ చేయడం ఒక క్లిష్టమైన సవాలు. + +సాంప్రదాయ మోడల్ పనితీరు మెట్రిక్స్‌లకు డేటా ఒక పెద్ద అంధ ప్రాంతం. మీరు అధిక ఖచ్చితత్వ స్కోర్లు పొందవచ్చు, కానీ ఇది మీ డేటాసెట్‌లో ఉండే డేటా పక్షపాతాన్ని ప్రతిబింబించకపోవచ్చు. ఉదాహరణకు, ఒక సంస్థలో ఉద్యోగుల డేటాసెట్‌లో 27% మహిళలు ఎగ్జిక్యూటివ్ స్థాయిలో ఉన్నారు మరియు 73% పురుషులు అదే స్థాయిలో ఉన్నారు అంటే, ఈ డేటాతో శిక్షణ పొందిన ఉద్యోగ ప్రకటన AI మోడల్ పెద్దగా పురుషుల ప్రేక్షకులను లక్ష్యంగా చేసుకోవచ్చు. ఈ అసమతుల్యత మోడల్ అంచనాను ఒక లింగాన్ని ప్రాధాన్యం ఇవ్వడానికి వక్రీకరిస్తుంది. ఇది AI మోడల్‌లో లింగ పక్షపాతం ఉన్న న్యాయ సమస్యను వెల్లడిస్తుంది. + +RAI డాష్‌బోర్డ్‌లో డేటా విశ్లేషణ భాగం డేటాసెట్‌లో అధిక మరియు తక్కువ ప్రాతినిధ్యం ఉన్న ప్రాంతాలను గుర్తించడంలో సహాయపడుతుంది. ఇది వాడుకదారులకు డేటా అసమతుల్యతల వల్ల లేదా నిర్దిష్ట డేటా గుంపు ప్రాతినిధ్యం లేకపోవడం వల్ల ఏర్పడిన లోపాలు మరియు న్యాయ సమస్యల మూల కారణాన్ని నిర్ధారించడంలో సహాయపడుతుంది. ఇది వాడుకదారులకు అంచనా మరియు వాస్తవ ఫలితాల, లోపాల గుంపులు, మరియు నిర్దిష్ట లక్షణాల ఆధారంగా డేటాసెట్లను విజువలైజ్ చేయడానికి అవకాశం ఇస్తుంది. కొన్నిసార్లు తక్కువ ప్రాతినిధ్యం ఉన్న డేటా గుంపును కనుగొనడం మోడల్ బాగా నేర్చుకోలేదని కూడా వెల్లడించవచ్చు, అందువల్ల ఎక్కువ లోపాలు ఉంటాయి. డేటా పక్షపాతం ఉన్న మోడల్ కేవలం న్యాయ సమస్య మాత్రమే కాకుండా, మోడల్ సమగ్రత లేదా నమ్మకదగినత లేని దాన్ని సూచిస్తుంది. + +![RAI డాష్‌బోర్డ్‌లో డేటా విశ్లేషణ భాగం](../../../../translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.te.png) + +డేటా విశ్లేషణను ఉపయోగించండి, మీరు: + +* వివిధ ఫిల్టర్లను ఎంచుకుని మీ డేటాను విభిన్న పరిమాణాలుగా (కోహార్ట్లుగా) విభజించి డేటా గణాంకాలను అన్వేషించండి. +* వివిధ కోహార్ట్లు మరియు లక్షణ గుంపులలో మీ డేటాసెట్ పంపిణీని అర్థం చేసుకోండి. +* న్యాయం, లోపాల విశ్లేషణ, మరియు కారణాత్మకత (ఇతర డాష్‌బోర్డ్ భాగాల నుండి పొందిన) సంబంధిత మీ కనుగొనుటలు మీ డేటాసెట్ పంపిణీ ఫలితమా అని నిర్ణయించండి. +* ప్రాతినిధ్యం సమస్యలు, లేబుల్ శబ్దం, లక్షణ శబ్దం, లేబుల్ పక్షపాతం మరియు ఇలాంటి అంశాల వల్ల వచ్చే లోపాలను తగ్గించడానికి ఏ ప్రాంతాల్లో మరిన్ని డేటా సేకరించాలో నిర్ణయించండి. + +## మోడల్ వివరణాత్మకత + +మెషీన్ లెర్నింగ్ మోడల్స్ బ్లాక్ బాక్స్‌లుగా ఉంటాయి. మోడల్ అంచనాను ప్రభావితం చేసే ముఖ్యమైన డేటా లక్షణాలను అర్థం చేసుకోవడం సవాలుగా ఉంటుంది. ఒక మోడల్ ఎందుకు ఒక నిర్దిష్ట అంచనాను చేస్తుందో పారదర్శకత ఇవ్వడం ముఖ్యం. ఉదాహరణకు, ఒక AI వ్యవస్థ ఒక మధుమేహ రోగి 30 రోజుల్లో ఆసుపత్రికి తిరిగి చేరే ప్రమాదంలో ఉన్నాడని అంచనా వేస్తే, అది తన అంచనాకు కారణమైన మద్దతు డేటాను అందించగలగాలి. మద్దతు డేటా సూచికలు క్లినిషియన్లు లేదా ఆసుపత్రులకు బాగా సమాచారం ఉన్న నిర్ణయాలు తీసుకోవడంలో పారదర్శకతను తీసుకువస్తాయి. అదనంగా, ఒక వ్యక్తిగత రోగి కోసం మోడల్ ఎందుకు అంచనా వేసిందో వివరించడం ఆరోగ్య నియంత్రణలతో బాధ్యతను కలిగిస్తుంది. మీరు ప్రజల జీవితాలను ప్రభావితం చేసే విధంగా మెషీన్ లెర్నింగ్ మోడల్స్ ఉపయోగిస్తున్నప్పుడు, మోడల్ ప్రవర్తనను ప్రభావితం చేసే అంశాలను అర్థం చేసుకోవడం మరియు వివరించడం చాలా ముఖ్యం. మోడల్ వివరణాత్మకత మరియు వివరణాత్మకత ఈ పరిస్థితుల్లో ప్రశ్నలకు సమాధానాలు ఇస్తుంది: + +* మోడల్ డీబగ్గింగ్: నా మోడల్ ఈ తప్పు ఎందుకు చేసింది? నేను నా మోడల్‌ను ఎలా మెరుగుపరుచుకోవచ్చు? +* మానవ-AI సహకారం: నేను మోడల్ నిర్ణయాలను ఎలా అర్థం చేసుకుని నమ్మగలను? +* నియంత్రణ అనుగుణత: నా మోడల్ చట్టపరమైన అవసరాలను తీరుస్తుందా? + +RAI డాష్‌బోర్డ్‌లో లక్షణ ప్రాముఖ్యత భాగం మోడల్ డీబగ్గింగ్ మరియు మోడల్ అంచనాలు ఎలా జరుగుతున్నాయో సమగ్రంగా అర్థం చేసుకోవడంలో సహాయపడుతుంది. ఇది మెషీన్ లెర్నింగ్ నిపుణులు మరియు నిర్ణయ తీసుకునే వారు మోడల్ ప్రవర్తనను ప్రభావితం చేసే లక్షణాలను వివరించడానికి మరియు నియంత్రణ అనుగుణత కోసం సాక్ష్యాలు చూపడానికి ఉపయోగపడే టూల్. తరువాత, వాడుకదారులు గ్లోబల్ మరియు లోకల్ వివరణలను అన్వేషించి ఏ లక్షణాలు మోడల్ అంచనాలను ప్రభావితం చేస్తున్నాయో ధృవీకరించవచ్చు. గ్లోబల్ వివరణలు మోడల్ మొత్తం అంచనాపై ప్రభావం చూపిన టాప్ లక్షణాలను చూపిస్తాయి. లోకల్ వివరణలు వ్యక్తిగత కేసు కోసం మోడల్ అంచనాకు కారణమైన లక్షణాలను చూపిస్తాయి. లోకల్ వివరణలను అంచనా వేయడం ఒక నిర్దిష్ట కేసును డీబగ్ చేయడంలో లేదా ఆడిట్ చేయడంలో సహాయపడుతుంది, ఎందుకు మోడల్ ఖచ్చితమైన లేదా తప్పు అంచనాను ఇచ్చిందో అర్థం చేసుకోవడానికి. + +![RAI డాష్‌బోర్డ్‌లో లక్షణ ప్రాముఖ్యత భాగం](../../../../translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.te.png) + +* గ్లోబల్ వివరణలు: ఉదాహరణకు, మధుమేహ ఆసుపత్రి తిరిగి చేరే మోడల్ మొత్తం ప్రవర్తనను ఏ లక్షణాలు ప్రభావితం చేస్తున్నాయి? +* లోకల్ వివరణలు: ఉదాహరణకు, 60 సంవత్సరాల పైబడిన మధుమేహ రోగి గత ఆసుపత్రి చేర్పులతో 30 రోజుల్లో తిరిగి చేరే లేదా చేరని అంచనాకు కారణమైనది ఏమిటి? + +వివిధ కోహార్ట్లలో మోడల్ పనితీరును పరిశీలించే డీబగ్గింగ్ ప్రక్రియలో, లక్షణ ప్రాముఖ్యత కోహార్ట్లలో లక్షణం ఎంత ప్రభావం చూపుతుందో చూపిస్తుంది. ఇది మోడల్ లోపభూయిష్ట అంచనాలను ప్రభావితం చేస్తున్న లక్షణం ప్రభావం స్థాయిలను పోల్చేటప్పుడు అసాధారణతలను వెలుగులోకి తీసుకువస్తుంది. లక్షణ ప్రాముఖ్యత భాగం ఒక లక్షణంలోని విలువలు మోడల్ ఫలితాన్ని సానుకూలంగా లేదా ప్రతికూలంగా ప్రభావితం చేశాయో చూపిస్తుంది. ఉదాహరణకు, ఒక మోడల్ తప్పు అంచనాను ఇచ్చినప్పుడు, ఈ భాగం మీరు లోతుగా వెళ్ళి ఏ లక్షణాలు లేదా లక్షణ విలువలు అంచనాను ప్రభావితం చేశాయో గుర్తించడానికి అవకాశం ఇస్తుంది. ఈ స్థాయి వివరాలు కేవలం డీబగ్గింగ్‌లో కాకుండా ఆడిట్ పరిస్థితుల్లో పారదర్శకత మరియు బాధ్యతను అందిస్తాయి. చివరగా, ఈ భాగం న్యాయ సమస్యలను గుర్తించడంలో సహాయపడుతుంది. ఉదాహరణకు, జాతి లేదా లింగం వంటి సున్నిత లక్షణం మోడల్ అంచనాను ఎక్కువగా ప్రభావితం చేస్తే, ఇది మోడల్‌లో జాతి లేదా లింగ పక్షపాతం సూచన కావచ్చు. + +![లక్షణ ప్రాముఖ్యత](../../../../translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.te.png) + +వివరణాత్మకతను ఉపయోగించండి, మీరు: + +* మీ 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ని ఆపరేషనలైజ్ చేయడానికి ఒకే చోటు - బేస్మిరా నుషి మరియు మెహ్ర్నూష్ సమేకి + +[![బాధ్యతాయుత AI డాష్‌బోర్డు: ప్రాక్టీస్‌లో RAIని ఆపరేషనలైజ్ చేయడానికి ఒకే చోటు](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](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 ఎలా ఉపయోగించబడుతున్నదో తెలుసుకోండి. + +![chess](../../../translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.te.jpg) + +> ఫోటో 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 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) + +### 🌐 బహుభాషా మద్దతు + +#### GitHub యాక్షన్ ద్వారా మద్దతు (ఆటోమేటెడ్ & ఎప్పుడూ తాజా) + + +[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../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) + + +#### మా కమ్యూనిటీకి చేరండి + +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) + +మేము డిస్కార్డ్ లో AI తో నేర్చుకునే సిరీస్ నిర్వహిస్తున్నాము, మరింత తెలుసుకోండి మరియు 18 - 30 సెప్టెంబర్, 2025 న [Learn with AI Series](https://aka.ms/learnwithai/discord) లో చేరండి. మీరు GitHub Copilot ను డేటా సైన్స్ కోసం ఉపయోగించే చిట్కాలు మరియు సలహాలు పొందుతారు. + +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.te.png) + +# ప్రారంభికుల కోసం మెషీన్ లెర్నింగ్ - ఒక పాఠ్యక్రమం + +> 🌍 ప్రపంచ సంస్కృతుల ద్వారా మెషీన్ లెర్నింగ్ ను అన్వేషిస్తూ ప్రపంచం చుట్టూ ప్రయాణించండి 🌍 + +Microsoft లో క్లౌడ్ అడ్వకేట్స్ 12 వారాల, 26 పాఠాల పాఠ్యక్రమాన్ని అందిస్తున్నందుకు సంతోషిస్తున్నాము, ఇది **మెషీన్ లెర్నింగ్** గురించి. ఈ పాఠ్యక్రమంలో, మీరు సాధారణంగా **క్లాసిక్ మెషీన్ లెర్నింగ్** అని పిలవబడే విషయాలను, ప్రధానంగా Scikit-learn లైబ్రరీ ఉపయోగించి నేర్చుకుంటారు మరియు డీప్ లెర్నింగ్ ను తప్పిస్తారు, ఇది మా [AI for Beginners' curriculum](https://aka.ms/ai4beginners) లో కవర్ చేయబడింది. ఈ పాఠ్యక్రమాన్ని మా ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) తో జతచేయండి. + +ప్రపంచం చుట్టూ ప్రయాణిస్తూ, ఈ క్లాసిక్ సాంకేతికతలను ప్రపంచంలోని వివిధ ప్రాంతాల డేటాకు వర్తింపజేస్తాము. ప్రతి పాఠం ముందు మరియు తర్వాత క్విజ్‌లు, పాఠం పూర్తి చేయడానికి రాసిన సూచనలు, పరిష్కారం, అసైన్‌మెంట్ మరియు మరిన్ని ఉంటాయి. మా ప్రాజెక్ట్ ఆధారిత పాఠ్య విధానం మీరు నిర్మిస్తూ నేర్చుకునేలా చేస్తుంది, ఇది కొత్త నైపుణ్యాలు 'ముడిపడటానికి' ఒక నిరూపిత మార్గం. + +**✍️ మా రచయితలకు హృదయపూర్వక ధన్యవాదాలు** జెన్ లూపర్, స్టీఫెన్ హావెల్, ఫ్రాన్సెస్కా లాజెరి, టోమోమీ ఇమురా, క్యాసీ బ్రేవియూ, డ్మిత్రి సోష్నికోవ్, క్రిస్ నోరింగ్, అనిర్బాన్ ముఖర్జీ, ఒర్నెల్లా ఆల్టున్యాన్, రూత్ యకుబు మరియు ఎమీ బాయిడ్ + +**🎨 మా చిత్రకారులకు కూడా ధన్యవాదాలు** టోమోమీ ఇమురా, దసాని మడిపల్లి, మరియు జెన్ లూపర్ + +**🙏 ప్రత్యేక ధన్యవాదాలు 🙏 మా Microsoft స్టూడెంట్ అంబాసిడర్ రచయితలు, సమీక్షకులు మరియు కంటెంట్ సహకారులకు**, ముఖ్యంగా రిషిత్ దాగ్లీ, ముహమ్మద్ సకీబ్ ఖాన్ ఇనాన్, రోహన్ రాజ్, అలెగ్జాండ్రూ పెట్రెస్కు, అభిషేక్ జైస్వాల్, నావ్రిన్ టబస్సుం, ఇఓన్ సముయిలా, మరియు స్నిగ్ధ అగర్వాల్ + +**🤩 Microsoft స్టూడెంట్ అంబాసిడర్స్ ఎరిక్ వాంజావ్, జస్లీన్ సొంధి, మరియు విదుషి గుప్తా గారికి మా R పాఠాల కోసం అదనపు కృతజ్ఞతలు!** + +# ప్రారంభించడం + +ఈ దశలను అనుసరించండి: +1. **రిపోజిటరీని ఫోర్క్ చేయండి**: ఈ పేజీ పై-కుడి మూలలో ఉన్న "Fork" బటన్ పై క్లిక్ చేయండి. +2. **రిపోజిటరీని క్లోన్ చేయండి**: `git clone https://github.com/microsoft/ML-For-Beginners.git` + +> [ఈ కోర్సు కోసం అన్ని అదనపు వనరులను మా Microsoft Learn సేకరణలో కనుగొనండి](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +> 🔧 **సహాయం కావాలా?** ఇన్‌స్టాలేషన్, సెటప్ మరియు పాఠాలు నడిపే సమయంలో సాధారణ సమస్యలకు పరిష్కారాల కోసం మా [Troubleshooting Guide](TROUBLESHOOTING.md) ను చూడండి. + + +**[విద్యార్థులు](https://aka.ms/student-page)**, ఈ పాఠ్యక్రమాన్ని ఉపయోగించడానికి, మొత్తం రిపోను మీ GitHub ఖాతాకు ఫోర్క్ చేసి, స్వయంగా లేదా గ్రూప్ తో వ్యాయామాలు పూర్తి చేయండి: + +- ప్రీ-లెక్చర్ క్విజ్ తో ప్రారంభించండి. +- లెక్చర్ చదవండి మరియు కార్యకలాపాలను పూర్తి చేయండి, ప్రతి జ్ఞాన పరీక్ష వద్ద ఆగి ఆలోచించండి. +- పరిష్కార కోడ్ నడపకుండా పాఠాలను అర్థం చేసుకుని ప్రాజెక్టులను సృష్టించడానికి ప్రయత్నించండి; అయితే ఆ కోడ్ ప్రతి ప్రాజెక్ట్-ఆధారిత పాఠంలో `/solution` ఫోల్డర్‌లో అందుబాటులో ఉంటుంది. +- పోస్ట్-లెక్చర్ క్విజ్ తీసుకోండి. +- ఛాలెంజ్ పూర్తి చేయండి. +- అసైన్‌మెంట్ పూర్తి చేయండి. +- ఒక పాఠం సమూహం పూర్తి చేసిన తర్వాత, [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) లో చూడవచ్చు, క్రింది చిత్రంపై క్లిక్ చేయండి. + +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.te.png)](https://aka.ms/ml-beginners-videos) + +--- + +## టీమ్‌ను కలవండి + +[![Promo video](../../images/ml.gif)](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 +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + +### Generative AI Series +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) + +--- + +### కోర్ లెర్నింగ్ +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + +### కోపైలట్ సిరీస్ +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + + +## సహాయం పొందడం + +మీరు అడ్డుకుపోతే లేదా AI యాప్స్ నిర్మించడంపై ఏవైనా ప్రశ్నలు ఉంటే. MCP గురించి చర్చల్లో సహచర అభ్యాసకులు మరియు అనుభవజ్ఞులైన డెవలపర్లతో చేరండి. ఇది ప్రశ్నలు స్వాగతించబడే మరియు జ్ఞానం స్వేచ్ఛగా పంచుకునే మద్దతు సమాజం. + +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) + +మీకు ఉత్పత్తి అభిప్రాయం లేదా నిర్మాణ సమయంలో లోపాలు ఉంటే సందర్శించండి: + +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/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)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +--- + + +**అస్పష్టత**: +ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము. + \ No newline at end of file diff --git a/translations/th/README.md b/translations/th/README.md index 10e76a94c..2adc90511 100644 --- a/translations/th/README.md +++ b/translations/th/README.md @@ -1,166 +1,175 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 รองรับหลายภาษา +### 🌐 การสนับสนุนหลายภาษา -#### รองรับผ่าน GitHub Action (อัตโนมัติและอัปเดตเสมอ) +#### สนับสนุนผ่าน GitHub Action (อัตโนมัติ & อัปเดตเสมอ) -[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) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/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) | [Thai](./README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + +[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](../te/README.md) | [Thai](./README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + -#### เข้าร่วมชุมชนของเรา +#### เข้าร่วมชุมชนของเรา -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -เรามีซีรีส์การเรียนรู้ AI บน Discord ที่กำลังดำเนินอยู่ เรียนรู้เพิ่มเติมและเข้าร่วมกับเราได้ที่ [Learn with AI Series](https://aka.ms/learnwithai/discord) ตั้งแต่วันที่ 18 - 30 กันยายน 2025 คุณจะได้รับเคล็ดลับและเทคนิคการใช้ GitHub Copilot สำหรับ Data Science +เรามีซีรีส์เรียนรู้กับ AI บน Discord อย่างต่อเนื่อง เรียนรู้เพิ่มเติมและเข้าร่วมกับเราที่ [Learn with AI Series](https://aka.ms/learnwithai/discord) ตั้งแต่วันที่ 18 - 30 กันยายน 2025 คุณจะได้รับเคล็ดลับและเทคนิคการใช้ GitHub Copilot สำหรับ Data Science -![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.th.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.th.png) -# การเรียนรู้ Machine Learning สำหรับผู้เริ่มต้น - หลักสูตร +# การเรียนรู้เครื่องสำหรับผู้เริ่มต้น - หลักสูตร -> 🌍 เดินทางรอบโลกพร้อมกับการเรียนรู้ Machine Learning ผ่านวัฒนธรรมโลก 🌍 +> 🌍 เดินทางรอบโลกในขณะที่เราสำรวจการเรียนรู้เครื่องผ่านวัฒนธรรมโลก 🌍 -ทีม Cloud Advocates ที่ Microsoft ยินดีนำเสนอหลักสูตร 12 สัปดาห์ 26 บทเรียนเกี่ยวกับ **Machine Learning** ในหลักสูตรนี้ คุณจะได้เรียนรู้เกี่ยวกับสิ่งที่บางครั้งเรียกว่า **Machine Learning แบบคลาสสิก** โดยใช้ Scikit-learn เป็นหลักและหลีกเลี่ยงการเรียนรู้เชิงลึก ซึ่งครอบคลุมใน [หลักสูตร AI สำหรับผู้เริ่มต้น](https://aka.ms/ai4beginners) นอกจากนี้ยังสามารถจับคู่บทเรียนเหล่านี้กับ [หลักสูตร Data Science สำหรับผู้เริ่มต้น](https://aka.ms/ds4beginners) ได้อีกด้วย! +Cloud Advocates ที่ Microsoft มีความยินดีที่จะนำเสนอหลักสูตร 12 สัปดาห์ 26 บทเรียนเกี่ยวกับ **การเรียนรู้เครื่อง** ในหลักสูตรนี้ คุณจะได้เรียนรู้เกี่ยวกับสิ่งที่บางครั้งเรียกว่า **การเรียนรู้เครื่องแบบคลาสสิก** โดยใช้ Scikit-learn เป็นไลบรารีหลักและหลีกเลี่ยงการเรียนรู้เชิงลึก ซึ่งครอบคลุมในหลักสูตร [AI for Beginners](https://aka.ms/ai4beginners) ของเรา จับคู่บทเรียนเหล่านี้กับหลักสูตร ['Data Science for Beginners'](https://aka.ms/ds4beginners) ของเราได้เช่นกัน! -เดินทางไปกับเราทั่วโลกในขณะที่เรานำเทคนิคแบบคลาสสิกเหล่านี้ไปใช้กับข้อมูลจากหลายพื้นที่ของโลก แต่ละบทเรียนประกอบด้วยแบบทดสอบก่อนและหลังบทเรียน คำแนะนำที่เขียนไว้สำหรับการทำบทเรียน โซลูชัน งานมอบหมาย และอื่นๆ วิธีการเรียนรู้แบบโครงการช่วยให้คุณเรียนรู้ในขณะที่สร้าง ซึ่งเป็นวิธีที่พิสูจน์แล้วว่าทักษะใหม่ๆ จะติดตัวคุณได้ดี +เดินทางกับเราไปรอบโลกในขณะที่เรานำเทคนิคคลาสสิกเหล่านี้ไปใช้กับข้อมูลจากหลายพื้นที่ของโลก แต่ละบทเรียนประกอบด้วยแบบทดสอบก่อนและหลังบทเรียน คำแนะนำเป็นลายลักษณ์อักษรเพื่อทำบทเรียนให้เสร็จสมบูรณ์ โซลูชัน งานมอบหมาย และอื่น ๆ วิธีการสอนที่เน้นโครงการช่วยให้คุณเรียนรู้ไปพร้อมกับการสร้าง ซึ่งเป็นวิธีที่พิสูจน์แล้วว่าสำหรับทักษะใหม่ ๆ ที่จะ 'ติดตัว' -**✍️ ขอบคุณผู้เขียนของเรา** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu และ Amy Boyd +**✍️ ขอขอบคุณอย่างจริงใจต่อผู้เขียนของเรา** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu และ Amy Boyd -**🎨 ขอบคุณนักวาดภาพประกอบของเรา** Tomomi Imura, Dasani Madipalli และ Jen Looper +**🎨 ขอบคุณด้วยสำหรับนักวาดภาพประกอบของเรา** Tomomi Imura, Dasani Madipalli และ Jen Looper -**🙏 ขอบคุณพิเศษ 🙏 สำหรับ Microsoft Student Ambassador ผู้เขียน ผู้ตรวจสอบ และผู้สนับสนุนเนื้อหา** โดยเฉพาะ Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila และ Snigdha Agarwal +**🙏 ขอบคุณเป็นพิเศษ 🙏 ต่อ Microsoft Student Ambassador ผู้เขียน ผู้ตรวจทาน และผู้มีส่วนร่วมเนื้อหา** โดยเฉพาะ Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila และ Snigdha Agarwal -**🤩 ขอบคุณเพิ่มเติมสำหรับ Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi และ Vidushi Gupta สำหรับบทเรียน R ของเรา!** +**🤩 ขอบคุณเพิ่มเติมต่อ Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi และ Vidushi Gupta สำหรับบทเรียน R ของเรา!** -# เริ่มต้นใช้งาน +# การเริ่มต้นใช้งาน -ทำตามขั้นตอนเหล่านี้: -1. **Fork Repository**: คลิกที่ปุ่ม "Fork" ที่มุมขวาบนของหน้านี้ -2. **Clone Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +ทำตามขั้นตอนเหล่านี้: +1. **Fork ที่เก็บข้อมูล**: คลิกปุ่ม "Fork" ที่มุมขวาบนของหน้านี้ +2. **โคลนที่เก็บข้อมูล**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [ค้นหาทรัพยากรเพิ่มเติมสำหรับหลักสูตรนี้ใน Microsoft Learn collection](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [ค้นหาทรัพยากรเพิ่มเติมทั้งหมดสำหรับหลักสูตรนี้ในคอลเลกชัน Microsoft Learn ของเรา](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **ต้องการความช่วยเหลือ?** ตรวจสอบ [คู่มือการแก้ปัญหา](TROUBLESHOOTING.md) ของเราสำหรับวิธีแก้ปัญหาทั่วไปเกี่ยวกับการติดตั้ง การตั้งค่า และการรันบทเรียน +> 🔧 **ต้องการความช่วยเหลือ?** ตรวจสอบ [คู่มือแก้ไขปัญหา](TROUBLESHOOTING.md) สำหรับวิธีแก้ไขปัญหาทั่วไปเกี่ยวกับการติดตั้ง การตั้งค่า และการรันบทเรียน -**[นักเรียน](https://aka.ms/student-page)** เพื่อใช้หลักสูตรนี้ ให้ fork repo ทั้งหมดไปยังบัญชี GitHub ของคุณเองและทำแบบฝึกหัดด้วยตัวเองหรือกับกลุ่ม: +**[นักเรียน](https://aka.ms/student-page)** เพื่อใช้หลักสูตรนี้ ให้ fork รีโปทั้งหมดไปยังบัญชี GitHub ของคุณเองและทำแบบฝึกหัดด้วยตัวเองหรือกับกลุ่ม: -- เริ่มต้นด้วยแบบทดสอบก่อนการบรรยาย -- อ่านการบรรยายและทำกิจกรรม หยุดและสะท้อนที่แต่ละจุดตรวจสอบความรู้ -- พยายามสร้างโครงการโดยทำความเข้าใจบทเรียนแทนที่จะรันโค้ดโซลูชัน อย่างไรก็ตาม โค้ดนั้นมีอยู่ในโฟลเดอร์ `/solution` ในแต่ละบทเรียนที่เน้นโครงการ -- ทำแบบทดสอบหลังการบรรยาย -- ทำความท้าทาย -- ทำงานมอบหมาย -- หลังจากจบบทเรียนกลุ่ม ให้ไปที่ [กระดานสนทนา](https://github.com/microsoft/ML-For-Beginners/discussions) และ "เรียนรู้ด้วยเสียงดัง" โดยกรอก PAT rubric ที่เหมาะสม 'PAT' คือเครื่องมือประเมินความก้าวหน้าที่เป็น rubric ที่คุณกรอกเพื่อพัฒนาการเรียนรู้ของคุณ คุณยังสามารถตอบสนองต่อ PAT อื่นๆ เพื่อที่เราจะได้เรียนรู้ร่วมกัน +- เริ่มด้วยแบบทดสอบก่อนบรรยาย +- อ่านบรรยายและทำกิจกรรมให้เสร็จสมบูรณ์ หยุดและไตร่ตรองในแต่ละจุดตรวจสอบความรู้ +- พยายามสร้างโครงการโดยเข้าใจบทเรียนแทนการรันโค้ดโซลูชัน อย่างไรก็ตาม โค้ดนั้นมีให้ในโฟลเดอร์ `/solution` ในแต่ละบทเรียนที่เน้นโครงการ +- ทำแบบทดสอบหลังบรรยาย +- ทำความท้าทายให้เสร็จ +- ทำงานมอบหมายให้เสร็จ +- หลังจากทำกลุ่มบทเรียนเสร็จแล้ว เยี่ยมชม [กระดานอภิปราย](https://github.com/microsoft/ML-For-Beginners/discussions) และ "เรียนรู้ออกเสียง" โดยกรอกแบบประเมิน PAT ที่เหมาะสม 'PAT' คือเครื่องมือประเมินความก้าวหน้าที่คุณกรอกเพื่อส่งเสริมการเรียนรู้ของคุณ คุณยังสามารถตอบสนองต่อ PAT อื่น ๆ เพื่อให้เราเรียนรู้ร่วมกันได้ -> สำหรับการศึกษาเพิ่มเติม เราแนะนำให้ติดตาม [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) โมดูลและเส้นทางการเรียนรู้ +> สำหรับการศึกษาต่อ เราแนะนำให้ติดตามโมดูลและเส้นทางการเรียนรู้ [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) เหล่านี้ -**ครู** เราได้ [รวมคำแนะนำบางส่วน](for-teachers.md) เกี่ยวกับวิธีการใช้หลักสูตรนี้ +**ครูผู้สอน** เราได้ [รวมคำแนะนำบางส่วน](for-teachers.md) เกี่ยวกับวิธีการใช้หลักสูตรนี้ ---- +--- -## วิดีโอแนะนำ +## วิดีโอสอน -บทเรียนบางส่วนมีให้ในรูปแบบวิดีโอสั้น คุณสามารถค้นหาทั้งหมดนี้ในบทเรียน หรือใน [เพลย์ลิสต์ ML for Beginners บนช่อง YouTube ของ Microsoft Developer](https://aka.ms/ml-beginners-videos) โดยคลิกที่ภาพด้านล่าง +บทเรียนบางบทมีในรูปแบบวิดีโอสั้น คุณสามารถหาทั้งหมดนี้ได้ในบทเรียน หรือใน [เพลย์ลิสต์ ML for Beginners บนช่อง Microsoft Developer YouTube](https://aka.ms/ml-beginners-videos) โดยคลิกที่ภาพด้านล่าง -[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.th.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.th.png)](https://aka.ms/ml-beginners-videos) ---- +--- -## พบกับทีมงาน +## พบกับทีมงาน -[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif โดย** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**ภาพเคลื่อนไหวโดย** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอเกี่ยวกับโครงการและผู้ที่สร้างมันขึ้นมา! +> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอเกี่ยวกับโครงการและผู้ที่สร้างมันขึ้นมา! ---- +--- -## วิธีการสอน +## วิธีการสอน -เราได้เลือกหลักการสอนสองข้อในขณะที่สร้างหลักสูตรนี้: การทำให้เป็น **โครงการที่เน้นการปฏิบัติ** และรวม **แบบทดสอบบ่อยครั้ง** นอกจากนี้ หลักสูตรนี้ยังมี **ธีมร่วม** เพื่อให้มีความสอดคล้องกัน +เราได้เลือกหลักการสอนสองประการขณะสร้างหลักสูตรนี้: การทำให้เป็น **โครงการที่ลงมือทำจริง** และการมี **แบบทดสอบบ่อยครั้ง** นอกจากนี้ หลักสูตรนี้ยังมี **ธีม** ร่วมเพื่อให้มีความสอดคล้องกัน -ด้วยการทำให้เนื้อหาสอดคล้องกับโครงการ กระบวนการนี้จะทำให้นักเรียนมีส่วนร่วมมากขึ้นและช่วยเพิ่มการจดจำแนวคิด นอกจากนี้ แบบทดสอบที่มีความเสี่ยงต่ำก่อนชั้นเรียนจะตั้งเจตนาของนักเรียนในการเรียนรู้หัวข้อ ในขณะที่แบบทดสอบที่สองหลังชั้นเรียนจะช่วยเพิ่มการจดจำเพิ่มเติม หลักสูตรนี้ได้รับการออกแบบให้ยืดหยุ่นและสนุกสนาน และสามารถเรียนได้ทั้งหมดหรือบางส่วน โครงการเริ่มต้นจากขนาดเล็กและซับซ้อนขึ้นเรื่อยๆ จนถึงสิ้นสุดรอบ 12 สัปดาห์ หลักสูตรนี้ยังรวมถึงภาคผนวกเกี่ยวกับการประยุกต์ใช้ ML ในโลกจริง ซึ่งสามารถใช้เป็นเครดิตเพิ่มเติมหรือเป็นพื้นฐานสำหรับการอภิปราย +โดยการทำให้เนื้อหาสอดคล้องกับโครงการ กระบวนการจะน่าสนใจมากขึ้นสำหรับนักเรียนและช่วยเพิ่มการจดจำแนวคิด นอกจากนี้ แบบทดสอบที่มีความเสี่ยงต่ำก่อนชั้นเรียนจะตั้งเจตนารมณ์ของนักเรียนในการเรียนรู้หัวข้อ ในขณะที่แบบทดสอบที่สองหลังชั้นเรียนช่วยเพิ่มการจดจำเพิ่มเติม หลักสูตรนี้ถูกออกแบบให้ยืดหยุ่นและสนุกสนาน และสามารถเรียนได้ทั้งหลักสูตรหรือบางส่วน โครงการเริ่มต้นเล็กและซับซ้อนขึ้นเรื่อย ๆ จนถึงสิ้นสุดรอบ 12 สัปดาห์ หลักสูตรนี้ยังรวมบทส่งท้ายเกี่ยวกับการประยุกต์ใช้ ML ในโลกจริง ซึ่งสามารถใช้เป็นเครดิตพิเศษหรือเป็นฐานสำหรับการอภิปราย -> ค้นหา [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), และ [Troubleshooting](TROUBLESHOOTING.md) แนวทางของเรา เรายินดีรับข้อเสนอแนะที่สร้างสรรค์ของคุณ! +> ค้นหา [จรรยาบรรณ](CODE_OF_CONDUCT.md), [การมีส่วนร่วม](CONTRIBUTING.md), [การแปล](TRANSLATIONS.md) และ [การแก้ไขปัญหา](TROUBLESHOOTING.md) ของเรา เราต้อนรับคำติชมเชิงสร้างสรรค์ของคุณ! -## แต่ละบทเรียนประกอบด้วย +## แต่ละบทเรียนประกอบด้วย -- sketchnote (ตัวเลือก) -- วิดีโอเสริม (ตัวเลือก) -- วิดีโอแนะนำ (บางบทเรียนเท่านั้น) -- [แบบทดสอบอุ่นเครื่องก่อนการบรรยาย](https://ff-quizzes.netlify.app/en/ml/) -- บทเรียนที่เขียนไว้ -- สำหรับบทเรียนที่เน้นโครงการ มีคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีการสร้างโครงการ -- การตรวจสอบความรู้ -- ความท้าทาย -- การอ่านเสริม -- งานมอบหมาย -- [แบบทดสอบหลังการบรรยาย](https://ff-quizzes.netlify.app/en/ml/) +- สเก็ตช์โน้ตเสริม (ถ้ามี) +- วิดีโอเสริม (ถ้ามี) +- วิดีโอสอน (เฉพาะบางบทเรียน) +- [แบบทดสอบวอร์มอัพก่อนบรรยาย](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 document` ดังนั้นจึงเป็นกรอบการเขียนที่เป็นตัวอย่างสำหรับวิทยาศาสตร์ข้อมูล เนื่องจากช่วยให้คุณรวมโค้ด ผลลัพธ์ และความคิดของคุณโดยเขียนลงใน Markdown นอกจากนี้ เอกสาร R Markdown ยังสามารถแสดงผลในรูปแบบผลลัพธ์ เช่น PDF, HTML หรือ Word +> **หมายเหตุเกี่ยวกับภาษา**: บทเรียนเหล่านี้เขียนเป็นหลักในภาษา Python แต่หลายบทเรียนก็มีในภาษา R ด้วย เพื่อทำบทเรียน R ให้ไปที่โฟลเดอร์ `/solution` และค้นหาบทเรียน R ซึ่งมีนามสกุล .rmd ซึ่งหมายถึงไฟล์ **R Markdown** ซึ่งสามารถนิยามได้ง่าย ๆ ว่าเป็นการฝัง `code chunks` (ของ R หรือภาษาอื่น ๆ) และ `YAML header` (ที่กำหนดวิธีการจัดรูปแบบผลลัพธ์ เช่น PDF) ใน `เอกสาร Markdown` ดังนั้นจึงเป็นกรอบการเขียนต้นฉบับที่ดีเยี่ยมสำหรับวิทยาศาสตร์ข้อมูล เพราะช่วยให้คุณรวมโค้ด ผลลัพธ์ และความคิดของคุณโดยการเขียนลงใน Markdown นอกจากนี้ เอกสาร R Markdown ยังสามารถเรนเดอร์เป็นรูปแบบผลลัพธ์ เช่น PDF, HTML หรือ Word -> **หมายเหตุเกี่ยวกับแบบทดสอบ**: แบบทดสอบทั้งหมดอยู่ใน [โฟลเดอร์ Quiz App](../../quiz-app) รวมทั้งหมด 52 แบบทดสอบ แต่ละแบบมีสามคำถาม แบบทดสอบเหล่านี้เชื่อมโยงจากในบทเรียน แต่แอปแบบทดสอบสามารถรันได้ในเครื่อง ให้ทำตามคำแนะนำในโฟลเดอร์ `quiz-app` เพื่อโฮสต์ในเครื่องหรือปรับใช้กับ Azure +> **หมายเหตุเกี่ยวกับแบบทดสอบ**: แบบทดสอบทั้งหมดอยู่ใน [โฟลเดอร์ Quiz App](../../quiz-app) รวมทั้งหมด 52 แบบทดสอบ แต่ละแบบมีสามคำถาม พวกมันลิงก์จากบทเรียน แต่แอปแบบทดสอบสามารถรันได้ในเครื่อง; ทำตามคำแนะนำในโฟลเดอร์ `quiz-app` เพื่อโฮสต์ในเครื่องหรือปรับใช้บน Azure -| หมายเลขบทเรียน | หัวข้อ | การจัดกลุ่มบทเรียน | วัตถุประสงค์การเรียนรู้ | บทเรียนที่เชื่อมโยง | ผู้เขียน | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 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 และ Amy | -| 03 | ความยุติธรรมและการเรียนรู้ของเครื่อง | [Introduction](1-Introduction/README.md) | ปัญหาทางปรัชญาที่สำคัญเกี่ยวกับความยุติธรรมที่นักเรียนควรพิจารณาเมื่อสร้างและใช้โมเดล ML คืออะไร? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | เทคนิคสำหรับการเรียนรู้ของเครื่อง | [Introduction](1-Introduction/README.md) | นักวิจัย ML ใช้เทคนิคอะไรในการสร้างโมเดล ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris และ 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) | แสดงภาพและทำความสะอาดข้อมูลเพื่อเตรียมพร้อมสำหรับ ML | [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 และ Dmitry • Eric Wanjau | +| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 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) | ปัญหาทางปรัชญาที่สำคัญเกี่ยวกับความยุติธรรมที่นักเรียนควรพิจารณาเมื่อสร้างและประยุกต์ใช้โมเดล ML คืออะไร? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | เทคนิคสำหรับการเรียนรู้ของเครื่อง | [Introduction](1-Introduction/README.md) | นักวิจัย ML ใช้เทคนิคอะไรในการสร้างโมเดล ML? | [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) | แสดงภาพและทำความสะอาดข้อมูลเพื่อเตรียมสำหรับ ML | [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 และ 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 และ 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 และ 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) | การแปลและการวิเคราะห์ความรู้สึกกับ Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 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) | การแปลและวิเคราะห์ความรู้สึกกับ Jane Austen | [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 | +| 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) | การพยากรณ์อนุกรมเวลาด้วย Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | แนะนำการเรียนรู้แบบเสริมกำลัง | [Reinforcement learning](8-Reinforcement/README.md) | แนะนำการเรียนรู้แบบเสริมกำลังด้วย Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | ช่วย Peter หนีหมาป่า! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | การเรียนรู้แบบเสริมกำลัง Gym | [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 | การแก้ไขข้อผิดพลาดโมเดลใน ML ด้วยแดชบอร์ด RAI | [ML in the Wild](9-Real-World/README.md) | การแก้ไขข้อผิดพลาดโมเดลใน Machine Learning ด้วยส่วนประกอบแดชบอร์ด Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +| 24 | บทนำสู่การเรียนรู้แบบเสริมแรง | [Reinforcement learning](8-Reinforcement/README.md) | บทนำสู่การเรียนรู้แบบเสริมแรงด้วย Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | ช่วย Peter หลีกเลี่ยงหมาป่า! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | การเรียนรู้แบบเสริมแรง Gym | [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 | การดีบักโมเดลใน ML โดยใช้แดชบอร์ด RAI | [ML in the Wild](9-Real-World/README.md) | การดีบักโมเดลใน Machine Learning โดยใช้ส่วนประกอบแดชบอร์ด Responsible 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) +> [ค้นหาทรัพยากรเพิ่มเติมทั้งหมดสำหรับหลักสูตรนี้ในคอลเลกชัน Microsoft Learn ของเรา](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## การเข้าถึงแบบออฟไลน์ -คุณสามารถเรียกใช้เอกสารนี้แบบออฟไลน์โดยใช้ [Docsify](https://docsify.js.org/#/). Fork repo นี้, [ติดตั้ง Docsify](https://docsify.js.org/#/quickstart) บนเครื่องของคุณ, และในโฟลเดอร์ root ของ repo นี้, พิมพ์ `docsify serve`. เว็บไซต์จะถูกให้บริการบนพอร์ต 3000 บน localhost ของคุณ: `localhost:3000`. +คุณสามารถเรียกใช้เอกสารนี้แบบออฟไลน์โดยใช้ [Docsify](https://docsify.js.org/#/). Fork รีโปนี้, [ติดตั้ง Docsify](https://docsify.js.org/#/quickstart) บนเครื่องของคุณ แล้วในโฟลเดอร์รากของรีโปนี้ พิมพ์ `docsify serve`. เว็บไซต์จะถูกให้บริการบนพอร์ต 3000 ที่ localhost ของคุณ: `localhost:3000`. -## PDFs +## ไฟล์ PDF ค้นหาไฟล์ pdf ของหลักสูตรพร้อมลิงก์ [ที่นี่](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 หลักสูตรอื่น ๆ +## 🎒 หลักสูตรอื่น ๆ + +ทีมของเราผลิตหลักสูตรอื่น ๆ! ตรวจสอบได้ที่: -ทีมของเราผลิตหลักสูตรอื่น ๆ! ลองดู: + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -170,7 +179,7 @@ CO_OP_TRANSLATOR_METADATA: --- -### Generative AI Series +### ชุด Generative AI [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) @@ -178,35 +187,36 @@ CO_OP_TRANSLATOR_METADATA: --- -### Core Learning -[![ML สำหรับผู้เริ่มต้น](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science สำหรับผู้เริ่มต้น](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI สำหรับผู้เริ่มต้น](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cybersecurity สำหรับผู้เริ่มต้น](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web Dev สำหรับผู้เริ่มต้น](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT สำหรับผู้เริ่มต้น](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR Development สำหรับผู้เริ่มต้น](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +### การเรียนรู้หลัก +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### ชุด Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### ซีรีส์ Copilot -[![Copilot สำหรับการเขียนโปรแกรมคู่ด้วย AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot สำหรับ C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## การขอความช่วยเหลือ +## ขอความช่วยเหลือ -หากคุณติดขัดหรือมีคำถามเกี่ยวกับการสร้างแอป AI เข้าร่วมกับผู้เรียนและนักพัฒนาที่มีประสบการณ์ในชุมชน MCP ที่นี่เป็นพื้นที่ที่สนับสนุนซึ่งคำถามได้รับการต้อนรับและความรู้ถูกแบ่งปันอย่างอิสระ +หากคุณติดขัดหรือต้องการคำถามเกี่ยวกับการสร้างแอป AI เข้าร่วมกับผู้เรียนและนักพัฒนาที่มีประสบการณ์ในการสนทนาเกี่ยวกับ MCP นี่คือชุมชนที่ให้การสนับสนุนซึ่งยินดีต้อนรับคำถามและแบ่งปันความรู้กันอย่างเสรี -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -หากคุณมีข้อเสนอแนะเกี่ยวกับผลิตภัณฑ์หรือพบข้อผิดพลาดขณะสร้างแอป โปรดเยี่ยมชม: +หากคุณมีข้อเสนอแนะเกี่ยวกับผลิตภัณฑ์หรือพบข้อผิดพลาดขณะสร้างโปรดเยี่ยมชม: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ แนะนำให้ใช้บริการแปลภาษามนุษย์ที่เป็นมืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/tl/README.md b/translations/tl/README.md index c4f4c195e..ff235b324 100644 --- a/translations/tl/README.md +++ b/translations/tl/README.md @@ -1,167 +1,176 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Suporta sa Iba't Ibang Wika +### 🌐 Suporta sa Maramihang Wika -#### Sinusuportahan sa pamamagitan ng GitHub Action (Automated at Laging Napapanahon) +#### Sinusuportahan sa pamamagitan ng GitHub Action (Awtomatiko at Laging Napapanahon) -[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) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/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)](./README.md) | [Tamil](../ta/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) +[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)](./README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) -#### Sumali sa Aming Komunidad +#### Sumali sa Aming Komunidad -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -May ongoing na Discord series tungkol sa pag-aaral gamit ang AI, alamin pa at sumali sa [Learn with AI Series](https://aka.ms/learnwithai/discord) mula Setyembre 18 - 30, 2025. Makakakuha ka ng mga tips at tricks sa paggamit ng GitHub Copilot para sa Data Science. +Mayroon kaming serye ng Discord na "learn with AI" na patuloy, alamin pa at sumali sa amin sa [Learn with AI Series](https://aka.ms/learnwithai/discord) mula Setyembre 18 - 30, 2025. Makakakuha ka ng mga tip at trick sa paggamit ng GitHub Copilot para sa Data Science. -![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.tl.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.tl.png) -# Machine Learning para sa mga Baguhan - Isang Kurikulum +# Machine Learning para sa mga Nagsisimula - Isang Kurikulum -> 🌍 Maglakbay sa buong mundo habang natututo ng Machine Learning gamit ang mga kultura ng iba't ibang bansa 🌍 +> 🌍 Maglakbay sa buong mundo habang tinutuklasan natin ang Machine Learning sa pamamagitan ng mga kultura ng mundo 🌍 -Ang mga Cloud Advocates sa Microsoft ay masayang nag-aalok ng isang 12-linggong, 26-leksyon na kurikulum tungkol sa **Machine Learning**. Sa kurikulum na ito, matututo ka tungkol sa tinatawag na **classic machine learning**, gamit ang Scikit-learn bilang pangunahing library at iniiwasan ang deep learning, na sakop sa aming [AI for Beginners' curriculum](https://aka.ms/ai4beginners). Maaari mo ring ipares ang mga leksyon na ito sa aming ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners). +Ang mga Cloud Advocates sa Microsoft ay natutuwa na mag-alok ng 12-linggong, 26-leksyon na kurikulum tungkol sa **Machine Learning**. Sa kurikulum na ito, matututuhan mo ang tinatawag na **classic machine learning**, gamit ang pangunahing Scikit-learn bilang library at iniiwasan ang deep learning, na sakop sa aming [AI for Beginners' curriculum](https://aka.ms/ai4beginners). Pagsamahin ang mga leksyon na ito sa aming ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners), din! -Sumama sa amin sa paglalakbay sa buong mundo habang ina-apply ang mga klasikong teknik na ito sa datos mula sa iba't ibang bahagi ng mundo. Ang bawat leksyon ay may kasamang pre- at post-lesson quizzes, nakasulat na mga tagubilin para tapusin ang leksyon, solusyon, assignment, at marami pa. Ang aming project-based na paraan ng pagtuturo ay nagbibigay-daan sa iyo na matuto habang gumagawa, isang napatunayang paraan para mas tumatak ang mga bagong kaalaman. +Maglakbay kasama namin sa buong mundo habang inilalapat natin ang mga klasikong teknik na ito sa data mula sa iba't ibang bahagi ng mundo. Bawat leksyon ay may kasamang pre- at post-lesson quizzes, nakasulat na mga tagubilin para tapusin ang leksyon, solusyon, assignment, at iba pa. Ang aming project-based na pedagogiya ay nagpapahintulot sa iyo na matuto habang nagtatayo, isang napatunayang paraan para manatili ang mga bagong kasanayan. -**✍️ Taos-pusong pasasalamat sa aming mga may-akda** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu at Amy Boyd +**✍️ Taos-pusong pasasalamat sa aming mga may-akda** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu at Amy Boyd -**🎨 Salamat din sa aming mga ilustrador** Tomomi Imura, Dasani Madipalli, at Jen Looper +**🎨 Salamat din sa aming mga ilustrador** Tomomi Imura, Dasani Madipalli, at Jen Looper -**🙏 Espesyal na pasasalamat 🙏 sa aming Microsoft Student Ambassador na mga may-akda, reviewer, at content contributors**, partikular na sina Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, at Snigdha Agarwal +**🙏 Espesyal na pasasalamat 🙏 sa aming mga Microsoft Student Ambassador na mga may-akda, tagasuri, at mga nag-ambag ng nilalaman**, lalo na kina Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, at Snigdha Agarwal -**🤩 Dagdag na pasasalamat sa Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, at Vidushi Gupta para sa aming mga R lessons!** +**🤩 Dagdag na pasasalamat sa Microsoft Student Ambassadors na sina Eric Wanjau, Jasleen Sondhi, at Vidushi Gupta para sa aming mga leksyon sa R!** -# Pagsisimula +# Pagsisimula -Sundin ang mga hakbang na ito: -1. **I-fork ang Repository**: I-click ang "Fork" button sa kanang-itaas ng pahinang ito. -2. **I-clone ang Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Sundin ang mga hakbang na ito: +1. **I-fork ang Repository**: I-click ang "Fork" na button sa itaas-kanang bahagi ng pahinang ito. +2. **I-clone ang Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -> [hanapin ang lahat ng karagdagang resources para sa kursong ito sa aming Microsoft Learn collection](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> [hanapin ang lahat ng karagdagang mga mapagkukunan para sa kursong ito sa aming Microsoft Learn collection](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Kailangan ng tulong?** Tingnan ang aming [Troubleshooting Guide](TROUBLESHOOTING.md) para sa mga solusyon sa karaniwang mga isyu sa pag-install, setup, at pagtakbo ng mga leksyon. +> 🔧 **Kailangan ng tulong?** Tingnan ang aming [Troubleshooting Guide](TROUBLESHOOTING.md) para sa mga solusyon sa karaniwang isyu sa pag-install, setup, at pagpapatakbo ng mga leksyon. -**[Mga Estudyante](https://aka.ms/student-page)**, para magamit ang kurikulum na ito, i-fork ang buong repo sa inyong sariling GitHub account at kumpletuhin ang mga gawain nang mag-isa o kasama ang grupo: -- Magsimula sa pre-lecture quiz. -- Basahin ang leksyon at kumpletuhin ang mga aktibidad, huminto at magmuni-muni sa bawat knowledge check. -- Subukang gawin ang mga proyekto sa pamamagitan ng pag-unawa sa mga leksyon sa halip na i-run ang solution code; gayunpaman, ang code na iyon ay makikita sa `/solution` folders sa bawat project-oriented na leksyon. -- Gawin ang post-lecture quiz. -- Kumpletuhin ang challenge. -- Kumpletuhin ang assignment. -- Pagkatapos makumpleto ang isang grupo ng leksyon, bisitahin ang [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) at "mag-aral nang malakas" sa pamamagitan ng pag-fill out ng angkop na PAT rubric. Ang 'PAT' ay isang Progress Assessment Tool na isang rubric na pinupunan mo para mapalalim ang iyong pagkatuto. Maaari ka ring mag-react sa ibang PATs para magtulungan tayong matuto. +**[Mga Estudyante](https://aka.ms/student-page)**, upang magamit ang kurikulum na ito, i-fork ang buong repo sa iyong sariling GitHub account at tapusin ang mga ehersisyo nang mag-isa o kasama ang grupo: -> Para sa karagdagang pag-aaral, inirerekomenda naming sundan ang mga [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modules at learning paths. +- Magsimula sa pre-lecture quiz. +- Basahin ang lektura at tapusin ang mga aktibidad, huminto at magmuni-muni sa bawat knowledge check. +- Subukang likhain ang mga proyekto sa pamamagitan ng pag-unawa sa mga leksyon sa halip na patakbuhin ang solution code; gayunpaman, ang code na iyon ay makikita sa mga `/solution` na folder sa bawat project-oriented na leksyon. +- Kunin ang post-lecture quiz. +- Tapusin ang hamon. +- Tapusin ang assignment. +- Pagkatapos makumpleto ang isang grupo ng leksyon, bisitahin ang [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) at "matuto nang malakas" sa pamamagitan ng pagpuno ng angkop na PAT rubric. Ang 'PAT' ay isang Progress Assessment Tool na isang rubric na pinupunan mo upang mapalalim ang iyong pagkatuto. Maaari ka ring mag-react sa ibang mga PAT upang sabay tayong matuto. -**Mga Guro**, naglagay kami ng [ilang mungkahi](for-teachers.md) kung paano gamitin ang kurikulum na ito. +> Para sa karagdagang pag-aaral, inirerekomenda naming sundan ang mga [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) na mga module at learning paths. + +**Mga Guro**, may [ilang mungkahi kami](for-teachers.md) kung paano gamitin ang kurikulum na ito. --- -## Mga Video Walkthrough +## Mga Video Walkthrough -Ang ilan sa mga leksyon ay available bilang maikling video. Makikita ang lahat ng ito in-line sa mga leksyon, o sa [ML for Beginners playlist sa Microsoft Developer YouTube channel](https://aka.ms/ml-beginners-videos) sa pamamagitan ng pag-click sa imahe sa ibaba. +Ang ilan sa mga leksyon ay available bilang maikling video. Makikita mo ang mga ito sa loob ng mga leksyon, o sa [ML for Beginners playlist sa Microsoft Developer YouTube channel](https://aka.ms/ml-beginners-videos) sa pamamagitan ng pag-click sa larawan sa ibaba. -[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.tl.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.tl.png)](https://aka.ms/ml-beginners-videos) --- -## Kilalanin ang Team +## Kilalanin ang Koponan -[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif ni** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif ni** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 I-click ang imahe sa itaas para sa isang video tungkol sa proyekto at sa mga taong lumikha nito! +> 🎥 I-click ang larawan sa itaas para sa isang video tungkol sa proyekto at sa mga taong lumikha nito! --- -## Pedagogy - -Pinili namin ang dalawang pedagogical tenets habang binubuo ang kurikulum na ito: tiyaking ito ay hands-on **project-based** at may kasamang **madalas na quizzes**. Bukod dito, ang kurikulum na ito ay may karaniwang **tema** upang bigyan ito ng pagkakaugnay. - -Sa pamamagitan ng pagtiyak na ang nilalaman ay naka-align sa mga proyekto, mas nagiging engaging ang proseso para sa mga estudyante at mas tumatatak ang mga konsepto. Bukod dito, ang low-stakes quiz bago ang klase ay nagtatakda ng intensyon ng estudyante na matutunan ang isang paksa, habang ang pangalawang quiz pagkatapos ng klase ay mas nagpapalalim ng retention. Ang kurikulum na ito ay dinisenyo upang maging flexible at masaya at maaaring kunin nang buo o bahagi lamang. Ang mga proyekto ay nagsisimula sa maliit at nagiging mas kumplikado sa pagtatapos ng 12-linggong cycle. Ang kurikulum na ito ay may kasamang postscript sa mga real-world applications ng ML, na maaaring gamitin bilang extra credit o bilang batayan para sa talakayan. - -> Hanapin ang aming [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), at [Troubleshooting](TROUBLESHOOTING.md) guidelines. Malugod naming tinatanggap ang inyong mga konstruktibong feedback! - -## Ang bawat leksyon ay may kasamang - -- opsyonal na sketchnote -- opsyonal na supplemental video -- video walkthrough (ilang leksyon lamang) -- [pre-lecture warmup quiz](https://ff-quizzes.netlify.app/en/ml/) -- nakasulat na leksyon -- para sa mga project-based na leksyon, step-by-step na gabay kung paano buuin ang proyekto -- knowledge checks -- isang challenge -- supplemental reading -- assignment -- [post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) - -> **Tungkol sa mga wika**: Ang mga leksyon na ito ay pangunahing nakasulat sa Python, ngunit marami rin ang available sa R. Para kumpletuhin ang isang R leksyon, pumunta sa `/solution` folder at hanapin ang R lessons. Mayroon itong .rmd extension na kumakatawan sa isang **R Markdown** file na maaaring ilarawan bilang isang pagsasama ng `code chunks` (ng R o iba pang wika) at isang `YAML header` (na gumagabay kung paano i-format ang outputs tulad ng PDF) sa isang `Markdown document`. Dahil dito, ito ay nagsisilbing isang halimbawa ng authoring framework para sa data science dahil pinapayagan kang pagsamahin ang iyong code, ang output nito, at ang iyong mga saloobin sa pamamagitan ng pagsulat ng mga ito sa Markdown. Bukod dito, ang mga R Markdown documents ay maaaring i-render sa output formats tulad ng PDF, HTML, o Word. - -> **Tungkol sa mga quizzes**: Ang lahat ng quizzes ay nasa [Quiz App folder](../../quiz-app), para sa kabuuang 52 quizzes na may tig-tatlong tanong bawat isa. Ang mga ito ay naka-link mula sa loob ng mga leksyon ngunit ang quiz app ay maaaring i-run locally; sundin ang mga tagubilin sa `quiz-app` folder para i-host locally o i-deploy sa Azure. - -| Bilang ng Leksiyon | Paksa | Pangkat ng Leksiyon | Mga Layunin sa Pagkatuto | Naka-link na Leksiyon | May-akda | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Panimula sa machine learning | [Panimula](1-Introduction/README.md) | Alamin ang mga pangunahing konsepto sa likod ng machine learning | [Aralin](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Kasaysayan ng machine learning | [Panimula](1-Introduction/README.md) | Alamin ang kasaysayan sa likod ng larangang ito | [Aralin](1-Introduction/2-history-of-ML/README.md) | Jen at Amy | -| 03 | Katarungan at machine learning | [Panimula](1-Introduction/README.md) | Ano ang mga mahahalagang isyung pilosopikal tungkol sa katarungan na dapat isaalang-alang ng mga mag-aaral sa paggawa at paggamit ng ML models? | [Aralin](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Mga Teknik para sa machine learning | [Panimula](1-Introduction/README.md) | Anong mga teknik ang ginagamit ng mga mananaliksik ng ML sa paggawa ng ML models? | [Aralin](1-Introduction/4-techniques-of-ML/README.md) | Chris at Jen | -| 05 | Panimula sa regression | [Regression](2-Regression/README.md) | Magsimula sa Python at Scikit-learn para sa regression models | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Presyo ng kalabasa sa Hilagang Amerika 🎃 | [Regression](2-Regression/README.md) | I-visualize at linisin ang data bilang paghahanda para sa ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Presyo ng kalabasa sa Hilagang Amerika 🎃 | [Regression](2-Regression/README.md) | Gumawa ng linear at polynomial regression models | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen at Dmitry • Eric Wanjau | -| 08 | Presyo ng kalabasa sa Hilagang Amerika 🎃 | [Regression](2-Regression/README.md) | Gumawa ng logistic regression model | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Isang Web App 🔌 | [Web App](3-Web-App/README.md) | Gumawa ng web app upang magamit ang iyong na-train na model | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Panimula sa classification | [Classification](4-Classification/README.md) | Linisin, ihanda, at i-visualize ang iyong data; panimula sa classification | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen at Cassie • Eric Wanjau | -| 11 | Masasarap na Asian at Indian cuisines 🍜 | [Classification](4-Classification/README.md) | Panimula sa classifiers | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen at Cassie • Eric Wanjau | -| 12 | Masasarap na Asian at Indian cuisines 🍜 | [Classification](4-Classification/README.md) | Higit pang classifiers | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen at Cassie • Eric Wanjau | -| 13 | Masasarap na Asian at Indian cuisines 🍜 | [Classification](4-Classification/README.md) | Gumawa ng recommender web app gamit ang iyong model | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Panimula sa clustering | [Clustering](5-Clustering/README.md) | Linisin, ihanda, at i-visualize ang iyong data; Panimula sa clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Pagsusuri sa Panlasa ng Musika ng Nigeria 🎧 | [Clustering](5-Clustering/README.md) | Suriin ang K-Means clustering method | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Panimula sa natural language processing ☕️ | [Natural language processing](6-NLP/README.md) | Alamin ang mga pangunahing kaalaman tungkol sa NLP sa pamamagitan ng paggawa ng simpleng bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Karaniwang Gawain sa NLP ☕️ | [Natural language processing](6-NLP/README.md) | Palalimin ang iyong kaalaman sa NLP sa pamamagitan ng pag-unawa sa mga karaniwang gawain na kinakailangan sa pagproseso ng mga istruktura ng wika | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Pagsasalin at pagsusuri ng damdamin ♥️ | [Natural language processing](6-NLP/README.md) | Pagsasalin at pagsusuri ng damdamin gamit ang mga akda ni Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Mga Romantic na Hotel sa Europa ♥️ | [Natural language processing](6-NLP/README.md) | Pagsusuri ng damdamin gamit ang mga review ng hotel 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Mga Romantic na Hotel sa Europa ♥️ | [Natural language processing](6-NLP/README.md) | Pagsusuri ng damdamin gamit ang mga review ng hotel 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Panimula sa time series forecasting | [Time series](7-TimeSeries/README.md) | Panimula sa time series forecasting | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +## Pedagohiya + +Pinili namin ang dalawang pedagogical na prinsipyo habang binubuo ang kurikulum na ito: tiyakin na ito ay hands-on at **project-based** at na ito ay may kasamang **madalas na quizzes**. Bukod dito, ang kurikulum na ito ay may isang karaniwang **tema** upang bigyan ito ng pagkakaisa. + +Sa pamamagitan ng pagtitiyak na ang nilalaman ay naka-align sa mga proyekto, nagiging mas nakakaengganyo ang proseso para sa mga estudyante at mapapalakas ang retention ng mga konsepto. Bukod dito, ang isang low-stakes quiz bago ang klase ay nagtatakda ng intensyon ng estudyante sa pag-aaral ng isang paksa, habang ang pangalawang quiz pagkatapos ng klase ay nagsisiguro ng karagdagang retention. Ang kurikulum na ito ay dinisenyo upang maging flexible at masaya at maaaring kunin nang buo o bahagi lamang. Ang mga proyekto ay nagsisimula sa maliit at unti-unting lumalalim hanggang sa katapusan ng 12-linggong siklo. Kasama rin sa kurikulum na ito ang isang postscript tungkol sa mga totoong aplikasyon ng ML, na maaaring gamitin bilang dagdag na kredito o bilang batayan para sa diskusyon. + +> Hanapin ang aming [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), at [Troubleshooting](TROUBLESHOOTING.md) na mga gabay. Malugod naming tinatanggap ang iyong makabuluhang puna! + +## Bawat leksyon ay may kasamang + +- opsyonal na sketchnote +- opsyonal na karagdagang video +- video walkthrough (ilang leksyon lamang) +- [pre-lecture warmup quiz](https://ff-quizzes.netlify.app/en/ml/) +- nakasulat na leksyon +- para sa mga project-based na leksyon, step-by-step na gabay kung paano buuin ang proyekto +- knowledge checks +- isang hamon +- karagdagang babasahin +- assignment +- [post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) + +> **Tungkol sa mga wika**: Ang mga leksyon na ito ay pangunahing nakasulat sa Python, ngunit marami rin ang available sa R. Upang tapusin ang isang R na leksyon, pumunta sa `/solution` na folder at hanapin ang mga leksyon sa R. Mayroon silang .rmd na extension na kumakatawan sa isang **R Markdown** na file na maaaring ipaliwanag bilang pagsasama ng `code chunks` (ng R o iba pang mga wika) at isang `YAML header` (na gumagabay kung paano i-format ang mga output tulad ng PDF) sa isang `Markdown document`. Dahil dito, nagsisilbi itong isang halimbawa ng authoring framework para sa data science dahil pinapayagan kang pagsamahin ang iyong code, ang output nito, at ang iyong mga saloobin sa pamamagitan ng pagsusulat ng mga ito sa Markdown. Bukod dito, ang mga R Markdown na dokumento ay maaaring i-render sa mga output format tulad ng PDF, HTML, o Word. + +> **Tungkol sa mga quiz**: Lahat ng quiz ay nasa [Quiz App folder](../../quiz-app), para sa kabuuang 52 na quiz na may tig-tatlong tanong bawat isa. Nakalink ang mga ito mula sa loob ng mga leksyon ngunit ang quiz app ay maaaring patakbuhin nang lokal; sundin ang mga tagubilin sa `quiz-app` na folder upang i-host nang lokal o i-deploy sa Azure. + +| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | Panimula sa machine learning | [Introduction](1-Introduction/README.md) | Alamin ang mga pangunahing konsepto sa likod ng machine learning | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Kasaysayan ng machine learning | [Introduction](1-Introduction/README.md) | Alamin ang kasaysayan sa likod ng larangang ito | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Katarungan at machine learning | [Introduction](1-Introduction/README.md) | Ano ang mga mahahalagang pilosopikal na isyu tungkol sa katarungan na dapat isaalang-alang ng mga estudyante sa pagbuo at paggamit ng mga ML na modelo? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Mga Teknik para sa machine learning | [Introduction](1-Introduction/README.md) | Anong mga teknik ang ginagamit ng mga mananaliksik ng ML para bumuo ng mga ML na modelo? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Panimula sa regression | [Regression](2-Regression/README.md) | Magsimula gamit ang Python at Scikit-learn para sa mga regression na modelo | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Mga Presyo ng Kalabasa sa Hilagang Amerika 🎃 | [Regression](2-Regression/README.md) | I-visualize at linisin ang datos bilang paghahanda para sa ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Mga Presyo ng Kalabasa sa Hilagang Amerika 🎃 | [Regression](2-Regression/README.md) | Bumuo ng linear at polynomial regression na mga modelo | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Mga Presyo ng Kalabasa sa Hilagang Amerika 🎃 | [Regression](2-Regression/README.md) | Bumuo ng logistic regression na modelo | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Isang Web App 🔌 | [Web App](3-Web-App/README.md) | Bumuo ng web app para gamitin ang iyong na-train na modelo | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Panimula sa classification | [Classification](4-Classification/README.md) | Linisin, ihanda, at i-visualize ang iyong datos; panimula sa classification | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Masasarap na Asian at Indian na lutuin 🍜 | [Classification](4-Classification/README.md) | Panimula sa mga classifier | [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 | Masasarap na Asian at Indian na lutuin 🍜 | [Classification](4-Classification/README.md) | Higit pang mga classifier | [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 | Masasarap na Asian at Indian na lutuin 🍜 | [Classification](4-Classification/README.md) | Bumuo ng recommender web app gamit ang iyong modelo | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Panimula sa clustering | [Clustering](5-Clustering/README.md) | Linisin, ihanda, at i-visualize ang iyong datos; Panimula sa clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Pagsusuri sa Nigerian Musical Tastes 🎧 | [Clustering](5-Clustering/README.md) | Suriin ang K-Means clustering na pamamaraan | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Panimula sa natural language processing ☕️ | [Natural language processing](6-NLP/README.md) | Alamin ang mga batayan tungkol sa NLP sa pamamagitan ng paggawa ng isang simpleng bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Mga Karaniwang Gawain sa NLP ☕️ | [Natural language processing](6-NLP/README.md) | Palalimin ang iyong kaalaman sa NLP sa pamamagitan ng pag-unawa sa mga karaniwang gawain na kailangan sa pagharap sa mga istruktura ng wika | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Pagsasalin at pagsusuri ng damdamin ♥️ | [Natural language processing](6-NLP/README.md) | Pagsasalin at pagsusuri ng damdamin gamit si Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Mga romantikong hotel sa Europa ♥️ | [Natural language processing](6-NLP/README.md) | Pagsusuri ng damdamin gamit ang mga review ng hotel 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Mga romantikong hotel sa Europa ♥️ | [Natural language processing](6-NLP/README.md) | Pagsusuri ng damdamin gamit ang mga review ng hotel 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Panimula sa time series forecasting | [Time series](7-TimeSeries/README.md) | Panimula sa time series forecasting | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | | 22 | ⚡️ Paggamit ng Kuryente sa Mundo ⚡️ - time series forecasting gamit ang ARIMA | [Time series](7-TimeSeries/README.md) | Time series forecasting gamit ang ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | | 23 | ⚡️ Paggamit ng Kuryente sa Mundo ⚡️ - time series forecasting gamit ang SVR | [Time series](7-TimeSeries/README.md) | Time series forecasting gamit ang Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Panimula sa reinforcement learning | [Reinforcement learning](8-Reinforcement/README.md) | Panimula sa reinforcement learning gamit ang Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Tulungan si Peter na iwasan ang lobo! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Mga Real-World ML Scenario at Aplikasyon | [ML in the Wild](9-Real-World/README.md) | Mga kawili-wili at nakaka-intrigang totoong aplikasyon ng klasikong ML | [Aralin](9-Real-World/1-Applications/README.md) | Team | -| Postscript | Pag-debug ng Model sa ML gamit ang RAI dashboard | [ML in the Wild](9-Real-World/README.md) | Pag-debug ng Model sa Machine Learning gamit ang mga bahagi ng Responsible AI dashboard | [Aralin](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +| 24 | Panimula sa reinforcement learning | [Reinforcement learning](8-Reinforcement/README.md) | Panimula sa reinforcement learning gamit ang Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Tulungan si Peter na iwasan ang lobo! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Mga totoong senaryo at aplikasyon ng ML | [ML in the Wild](9-Real-World/README.md) | Mga kawili-wili at nakapupukaw na totoong aplikasyon ng klasikong ML | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Pag-debug ng Modelo sa ML gamit ang RAI dashboard | [ML in the Wild](9-Real-World/README.md) | Pag-debug ng Modelo sa Machine Learning gamit ang Responsible AI dashboard components | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [hanapin ang lahat ng karagdagang mga mapagkukunan para sa kursong ito sa aming koleksyon sa Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +## Offline access + +Maaari mong patakbuhin ang dokumentasyong ito offline gamit ang [Docsify](https://docsify.js.org/#/). I-fork ang repo na ito, [i-install ang Docsify](https://docsify.js.org/#/quickstart) sa iyong lokal na makina, at pagkatapos sa root folder ng repo na ito, i-type ang `docsify serve`. Ang website ay ihahain sa port 3000 sa iyong localhost: `localhost:3000`. -> [hanapin ang lahat ng karagdagang mapagkukunan para sa kursong ito sa aming Microsoft Learn collection](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +## PDFs -## Offline na Pag-access +Hanapin ang pdf ng kurikulum na may mga link [dito](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -Maaari mong patakbuhin ang dokumentasyong ito offline gamit ang [Docsify](https://docsify.js.org/#/). I-fork ang repo na ito, [i-install ang Docsify](https://docsify.js.org/#/quickstart) sa iyong lokal na makina, at pagkatapos sa root folder ng repo na ito, i-type ang `docsify serve`. Ang website ay magsisilbi sa port 3000 sa iyong localhost: `localhost:3000`. -## Mga PDF +## 🎒 Iba Pang Mga Kurso -Hanapin ang PDF ng kurikulum na may mga link [dito](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Ang aming koponan ay gumagawa ng iba pang mga kurso! Tingnan ang: -## 🎒 Iba Pang Kurso + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) -Ang aming koponan ay gumagawa ng iba pang mga kurso! Tingnan: +--- ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -170,7 +179,7 @@ Ang aming koponan ay gumagawa ng iba pang mga kurso! Tingnan: [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### Generative AI Series [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) @@ -178,36 +187,37 @@ Ang aming koponan ay gumagawa ng iba pang mga kurso! Tingnan: [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - -### Core Learning -[![ML para sa mga Baguhan](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science para sa mga Baguhan](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI para sa mga Baguhan](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cybersecurity para sa mga Baguhan](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web Dev para sa mga Baguhan](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT para sa mga Baguhan](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR Development para sa mga Baguhan](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +### Pangunahing Pagkatuto +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Copilot Series +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot Series -[![Copilot para sa AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot para sa C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Pagkuha ng Tulong +## Pagkuha ng Tulong -Kung ikaw ay nahihirapan o may mga tanong tungkol sa paggawa ng AI apps, sumali sa mga kapwa mag-aaral at mga bihasang developer sa mga talakayan tungkol sa MCP. Ito ay isang suportadong komunidad kung saan ang mga tanong ay malugod na tinatanggap at ang kaalaman ay malayang ibinabahagi. +Kung ikaw ay na-stuck o may mga tanong tungkol sa paggawa ng mga AI app. Sumali sa mga kapwa nag-aaral at mga bihasang developer sa mga talakayan tungkol sa MCP. Ito ay isang suportadong komunidad kung saan malugod ang mga tanong at malayang ibinabahagi ang kaalaman. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Kung mayroon kang feedback sa produkto o mga error habang gumagawa, bisitahin: +Kung mayroon kang feedback sa produkto o mga error habang nagtatayo, bisitahin: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, pakitandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na dulot ng paggamit ng pagsasaling ito. +**Paalala**: +Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagamat nagsusumikap kami para sa katumpakan, pakatandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o di-tumpak na impormasyon. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito. \ No newline at end of file diff --git a/translations/tr/README.md b/translations/tr/README.md index 570b07936..10511ee90 100644 --- a/translations/tr/README.md +++ b/translations/tr/README.md @@ -1,176 +1,185 @@ -[![GitHub lisansı](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![GitHub katkıda bulunanlar](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![GitHub sorunlar](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![GitHub çekme istekleri](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![PR'ler Hoş Geldiniz](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub izleyiciler](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![GitHub çatallar](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![GitHub yıldızlar](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) ### 🌐 Çok Dilli Destek -#### GitHub Action ile Destekleniyor (Otomatik ve Her Zaman Güncel) +#### GitHub Action ile Desteklenmektedir (Otomatik ve Her Zaman Güncel) -[Arapça](../ar/README.md) | [Bengalce](../bn/README.md) | [Bulgarca](../bg/README.md) | [Burma (Myanmar)](../my/README.md) | [Çince (Basitleştirilmiş)](../zh/README.md) | [Çince (Geleneksel, Hong Kong)](../hk/README.md) | [Çince (Geleneksel, Makao)](../mo/README.md) | [Çince (Geleneksel, Tayvan)](../tw/README.md) | [Hırvatça](../hr/README.md) | [Çekçe](../cs/README.md) | [Danca](../da/README.md) | [Flemenkçe](../nl/README.md) | [Estonca](../et/README.md) | [Fince](../fi/README.md) | [Fransızca](../fr/README.md) | [Almanca](../de/README.md) | [Yunanca](../el/README.md) | [İbranice](../he/README.md) | [Hintçe](../hi/README.md) | [Macarca](../hu/README.md) | [Endonezce](../id/README.md) | [İtalyanca](../it/README.md) | [Japonca](../ja/README.md) | [Korece](../ko/README.md) | [Litvanca](../lt/README.md) | [Malayca](../ms/README.md) | [Marathi](../mr/README.md) | [Nepalce](../ne/README.md) | [Nijerya Pidgin](../pcm/README.md) | [Norveççe](../no/README.md) | [Farsça (Farsi)](../fa/README.md) | [Lehçe](../pl/README.md) | [Portekizce (Brezilya)](../br/README.md) | [Portekizce (Portekiz)](../pt/README.md) | [Pencapça (Gurmukhi)](../pa/README.md) | [Romence](../ro/README.md) | [Rusça](../ru/README.md) | [Sırpça (Kiril)](../sr/README.md) | [Slovakça](../sk/README.md) | [Slovence](../sl/README.md) | [İspanyolca](../es/README.md) | [Svahili](../sw/README.md) | [İsveççe](../sv/README.md) | [Tagalog (Filipince)](../tl/README.md) | [Tamilce](../ta/README.md) | [Tayca](../th/README.md) | [Türkçe](./README.md) | [Ukraynaca](../uk/README.md) | [Urduca](../ur/README.md) | [Vietnamca](../vi/README.md) +[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](../te/README.md) | [Thai](../th/README.md) | [Turkish](./README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) #### Topluluğumuza Katılın [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -AI ile öğrenme serimiz Discord'da devam ediyor. Daha fazla bilgi edinin ve 18 - 30 Eylül 2025 tarihleri arasında [AI ile Öğrenme Serisi](https://aka.ms/learnwithai/discord)'ne katılın. GitHub Copilot'ı Veri Bilimi için kullanma ipuçları ve püf noktalarını öğrenin. +Discord'da devam eden bir Yapay Zeka ile öğrenme serimiz var, daha fazla bilgi edinmek ve bize katılmak için [Learn with AI Series](https://aka.ms/learnwithai/discord) adresini ziyaret edin, 18 - 30 Eylül 2025 tarihleri arasında. GitHub Copilot'u Veri Bilimi için kullanmaya dair ipuçları ve püf noktaları alacaksınız. -![AI ile Öğrenme Serisi](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.tr.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.tr.png) # Yeni Başlayanlar için Makine Öğrenimi - Bir Müfredat -> 🌍 Dünya kültürleri aracılığıyla Makine Öğrenimini keşfederken dünyayı dolaşın 🌍 +> 🌍 Dünya kültürleri aracılığıyla Makine Öğrenimini keşfederken dünyayı gezin 🌍 -Microsoft'taki Cloud Advocates ekibi olarak, **Makine Öğrenimi** hakkında 12 haftalık, 26 derslik bir müfredat sunmaktan mutluluk duyuyoruz. Bu müfredatta, genellikle **klasik makine öğrenimi** olarak adlandırılan konuları, ağırlıklı olarak Scikit-learn kütüphanesini kullanarak ve derin öğrenmeden kaçınarak öğreneceksiniz. Derin öğrenme, [Yeni Başlayanlar için AI müfredatımızda](https://aka.ms/ai4beginners) ele alınmaktadır. Bu dersleri ['Yeni Başlayanlar için Veri Bilimi' müfredatımızla](https://aka.ms/ds4beginners) birleştirin! +Microsoft'taki Bulut Savunucuları, **Makine Öğrenimi** hakkında 12 haftalık, 26 derslik bir müfredat sunmaktan mutluluk duyar. Bu müfredatta, genellikle Scikit-learn kütüphanesini kullanarak ve derin öğrenmeden kaçınarak bazen **klasik makine öğrenimi** olarak adlandırılan konuları öğreneceksiniz; derin öğrenme ise [Yeni Başlayanlar için Yapay Zeka müfredatımızda](https://aka.ms/ai4beginners) ele alınmaktadır. Bu dersleri ayrıca ['Yeni Başlayanlar için Veri Bilimi müfredatıyla'](https://aka.ms/ds4beginners) eşleştirebilirsiniz! -Dünyanın dört bir yanından verileri kullanarak bu klasik teknikleri uygularken bizimle seyahat edin. Her ders, ders öncesi ve sonrası testler, dersi tamamlama talimatları, bir çözüm, bir ödev ve daha fazlasını içerir. Proje tabanlı pedagojimiz, yeni becerilerin 'kalıcı' olmasını sağlayan kanıtlanmış bir yöntem olan öğrenirken inşa etmenize olanak tanır. +Dünyanın birçok bölgesinden veriler üzerinde bu klasik teknikleri uygularken bizimle birlikte seyahat edin. Her ders, ders öncesi ve sonrası quizler, dersi tamamlamak için yazılı talimatlar, bir çözüm, bir ödev ve daha fazlasını içerir. Proje tabanlı pedagojimiz, yeni becerilerin 'kalıcı' olmasını sağlayan kanıtlanmış bir yöntemle öğrenirken inşa etmenize olanak tanır. **✍️ Yazarlarımıza içten teşekkürler** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu ve Amy Boyd **🎨 İllüstratörlerimize de teşekkürler** Tomomi Imura, Dasani Madipalli ve Jen Looper -**🙏 Özel teşekkürler 🙏 Microsoft Öğrenci Elçisi yazarlarımıza, gözden geçirenlerimize ve içerik katkıcılarımıza**, özellikle Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila ve Snigdha Agarwal +**🙏 Microsoft Öğrenci Elçisi yazarlarımıza, gözden geçirenlere ve içerik katkıcılarına özel teşekkürler**, özellikle Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila ve Snigdha Agarwal **🤩 R derslerimiz için Microsoft Öğrenci Elçileri Eric Wanjau, Jasleen Sondhi ve Vidushi Gupta'ya ekstra teşekkürler!** # Başlarken -Bu adımları izleyin: -1. **Depoyu Çatallayın**: Bu sayfanın sağ üst köşesindeki "Fork" düğmesine tıklayın. -2. **Depoyu Klonlayın**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +Bu adımları izleyin: +1. **Depoyu Forklayın**: Bu sayfanın sağ üst köşesindeki "Fork" butonuna tıklayın. +2. **Depoyu Klonlayın**: `git clone https://github.com/microsoft/ML-For-Beginners.git` > [Bu kurs için tüm ek kaynakları Microsoft Learn koleksiyonumuzda bulun](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **Yardıma mı ihtiyacınız var?** Kurulum, yapılandırma ve derslerin çalıştırılmasıyla ilgili yaygın sorunlara çözümler için [Sorun Giderme Kılavuzumuza](TROUBLESHOOTING.md) göz atın. +> 🔧 **Yardıma mı ihtiyacınız var?** Kurulum, yapılandırma ve derslerin çalıştırılmasıyla ilgili yaygın sorunlar için [Sorun Giderme Kılavuzumuza](TROUBLESHOOTING.md) bakın. -**[Öğrenciler](https://aka.ms/student-page)**, bu müfredatı kullanmak için tüm depoyu kendi GitHub hesabınıza çatallayın ve alıştırmaları bireysel olarak veya bir grup ile tamamlayın: -- Ders öncesi bir testle başlayın. -- Dersi okuyun ve etkinlikleri tamamlayın, her bilgi kontrolünde durup düşünün. -- Dersleri anlamaya çalışarak projeleri oluşturun, ancak çözüm kodu her proje odaklı dersin `/solution` klasörlerinde mevcuttur. -- Ders sonrası testi yapın. -- Zorluğu tamamlayın. -- Ödevi tamamlayın. -- Bir ders grubunu tamamladıktan sonra, [Tartışma Panosunu](https://github.com/microsoft/ML-For-Beginners/discussions) ziyaret edin ve uygun PAT rubriğini doldurarak "yüksek sesle öğrenin". Bir 'PAT', öğreniminizi ilerletmek için doldurduğunuz bir rubriktir. Ayrıca diğer PAT'lere tepki verebiliriz, böylece birlikte öğrenebiliriz. +**[Öğrenciler](https://aka.ms/student-page)**, bu müfredatı kullanmak için tüm depoyu kendi GitHub hesabınıza forklayın ve alıştırmaları kendi başınıza veya bir grupla tamamlayın: -> Daha fazla çalışma için, bu [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modüllerini ve öğrenme yollarını takip etmenizi öneririz. +- Ders öncesi quiz ile başlayın. +- Dersi okuyun ve etkinlikleri tamamlayın, her bilgi kontrolünde durup düşünün. +- Çözüm kodunu çalıştırmak yerine dersleri anlayarak projeleri oluşturmaya çalışın; ancak bu kod her proje odaklı dersin `/solution` klasöründe mevcuttur. +- Ders sonrası quizini yapın. +- Meydan okumayı tamamlayın. +- Ödevi tamamlayın. +- Bir ders grubunu tamamladıktan sonra [Tartışma Panosunu](https://github.com/microsoft/ML-For-Beginners/discussions) ziyaret edin ve uygun PAT rubriğini doldurarak "yüksek sesle öğrenin". 'PAT', öğrenmenizi ilerletmek için doldurduğunuz bir İlerleme Değerlendirme Aracıdır. Ayrıca diğer PAT'lere tepki verebilirsiniz, böylece birlikte öğrenebiliriz. -**Öğretmenler**, bu müfredatı nasıl kullanacağınızla ilgili [bazı öneriler ekledik](for-teachers.md). +> Daha ileri çalışmalar için bu [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modüllerini ve öğrenme yollarını takip etmenizi öneririz. + +**Öğretmenler**, bu müfredatı nasıl kullanacağınıza dair [bazı öneriler](for-teachers.md) ekledik. --- -## Video Anlatımları +## Video anlatımları -Bazı dersler kısa video formatında mevcuttur. Tüm bu videoları derslerin içinde veya [Microsoft Developer YouTube kanalındaki Yeni Başlayanlar için ML oynatma listesinde](https://aka.ms/ml-beginners-videos) bulabilirsiniz. Aşağıdaki görsele tıklayın. +Bazı dersler kısa form video olarak mevcuttur. Bunların tümünü derslerin içinde veya Microsoft Developer YouTube kanalındaki [ML for Beginners oynatma listesinde](https://aka.ms/ml-beginners-videos) aşağıdaki resme tıklayarak bulabilirsiniz. -[![Yeni Başlayanlar için ML afişi](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.tr.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.tr.png)](https://aka.ms/ml-beginners-videos) --- -## Ekibi Tanıyın +## Takım ile Tanışın -[![Tanıtım videosu](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif tasarımı** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif yapan** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Proje ve onu oluşturan kişiler hakkında bir video için yukarıdaki görsele tıklayın! +> 🎥 Proje ve yaratanları hakkında bir video için yukarıdaki resme tıklayın! --- ## Pedagoji -Bu müfredatı oluştururken iki pedagojik ilkeyi benimsedik: **proje tabanlı** ve **sık sık testler içeren** bir yaklaşım. Ayrıca, bu müfredatın bir **teması** vardır ve bu da ona bir bütünlük kazandırır. +Bu müfredatı oluştururken iki pedagojik ilke seçtik: uygulamalı **proje tabanlı** olması ve **sık quizler** içermesi. Ayrıca, bu müfredatın bir bütünlük sağlaması için ortak bir **tema** vardır. -İçeriğin projelerle uyumlu olmasını sağlayarak, süreç öğrenciler için daha ilgi çekici hale gelir ve kavramların kalıcılığı artırılır. Ayrıca, bir sınıftan önce yapılan düşük riskli bir test, öğrencinin bir konuyu öğrenmeye yönelik niyetini belirlerken, sınıf sonrası yapılan ikinci bir test daha fazla kalıcılık sağlar. Bu müfredat esnek ve eğlenceli olacak şekilde tasarlanmıştır ve tamamı veya bir kısmı alınabilir. Projeler küçük başlar ve 12 haftalık döngünün sonunda giderek daha karmaşık hale gelir. Bu müfredat ayrıca ML'nin gerçek dünya uygulamaları hakkında bir ek içerir ve bu, ekstra kredi olarak veya tartışma temeli olarak kullanılabilir. +İçeriğin projelerle uyumlu olmasını sağlayarak süreç öğrenciler için daha ilgi çekici hale gelir ve kavramların kalıcılığı artırılır. Ayrıca, ders öncesi düşük riskli bir quiz öğrencinin bir konuyu öğrenme niyetini belirlerken, ders sonrası ikinci bir quiz daha fazla kalıcılık sağlar. Bu müfredat esnek ve eğlenceli olacak şekilde tasarlanmıştır ve tamamı veya bir kısmı alınabilir. Projeler küçük başlar ve 12 haftalık döngünün sonunda giderek karmaşıklaşır. Bu müfredat ayrıca gerçek dünya ML uygulamaları hakkında bir son not içerir; bu ek kredi olarak veya tartışma temeli olarak kullanılabilir. -> [Davranış Kurallarımızı](CODE_OF_CONDUCT.md), [Katkıda Bulunma](CONTRIBUTING.md), [Çeviri](TRANSLATIONS.md) ve [Sorun Giderme](TROUBLESHOOTING.md) yönergelerimizi bulun. Yapıcı geri bildirimlerinizi memnuniyetle karşılıyoruz! +> [Davranış Kurallarımızı](CODE_OF_CONDUCT.md), [Katkıda Bulunma](CONTRIBUTING.md), [Çeviri](TRANSLATIONS.md) ve [Sorun Giderme](TROUBLESHOOTING.md) yönergelerimizi bulun. Yapıcı geri bildirimlerinizi bekliyoruz! -## Her Ders Şunları İçerir +## Her ders şunları içerir -- isteğe bağlı çizim notu -- isteğe bağlı ek video -- video anlatımı (bazı derslerde) -- [ders öncesi ısınma testi](https://ff-quizzes.netlify.app/en/ml/) -- yazılı ders -- proje tabanlı dersler için, projeyi nasıl oluşturacağınızı adım adım anlatan rehberler -- bilgi kontrolleri -- bir zorluk -- ek okuma -- ödev -- [ders sonrası test](https://ff-quizzes.netlify.app/en/ml/) +- isteğe bağlı eskiz notu +- isteğe bağlı ek video +- video anlatımı (sadece bazı derslerde) +- [ders öncesi ısınma quizi](https://ff-quizzes.netlify.app/en/ml/) +- yazılı ders +- proje tabanlı derslerde, projeyi nasıl oluşturacağınıza dair adım adım rehberler +- bilgi kontrolleri +- bir meydan okuma +- ek okuma +- ödev +- [ders sonrası quiz](https://ff-quizzes.netlify.app/en/ml/) -> **Diller hakkında bir not**: Bu dersler ağırlıklı olarak Python dilinde yazılmıştır, ancak birçoğu R dilinde de mevcuttur. Bir R dersini tamamlamak için `/solution` klasörüne gidin ve R derslerini arayın. Bunlar, bir **R Markdown** dosyasını temsil eden .rmd uzantısını içerir. Bu dosya, `kod parçacıkları` (R veya diğer dillerde) ve bir `YAML başlığı` (PDF gibi çıktıları nasıl biçimlendireceğinizi yönlendiren) içeren bir `Markdown belgesi` olarak tanımlanabilir. Bu nedenle, veri bilimi için örnek bir yazım çerçevesi olarak hizmet eder çünkü kodunuzu, çıktısını ve düşüncelerinizi Markdown'da yazmanıza olanak tanır. Ayrıca, R Markdown belgeleri PDF, HTML veya Word gibi çıktı formatlarına dönüştürülebilir. +> **Diller hakkında bir not**: Bu dersler öncelikle Python ile yazılmıştır, ancak birçoğu R dilinde de mevcuttur. Bir R dersini tamamlamak için `/solution` klasörüne gidin ve R derslerini arayın. Bunlar, `R Markdown` dosyasını temsil eden .rmd uzantısına sahiptir; bu, `kod parçacıkları` (R veya diğer dillerden) ve `YAML başlığı` (PDF gibi çıktıların nasıl biçimlendirileceğini yöneten) içeren bir `Markdown belgesi` olarak tanımlanabilir. Bu nedenle, kodunuzu, çıktısını ve düşüncelerinizi Markdown içinde yazmanıza olanak tanıyarak veri bilimi için örnek bir yazım çerçevesi olarak hizmet eder. Ayrıca, R Markdown belgeleri PDF, HTML veya Word gibi çıktı formatlarına dönüştürülebilir. -> **Testler hakkında bir not**: Tüm testler [Quiz App klasöründe](../../quiz-app) yer almaktadır ve toplamda 52 test, her biri üç sorudan oluşmaktadır. Derslerin içinden bağlantılıdır, ancak test uygulaması yerel olarak çalıştırılabilir; yerel olarak barındırmak veya Azure'a dağıtmak için `quiz-app` klasöründeki talimatları izleyin. +> **Quizler hakkında bir not**: Tüm quizler [Quiz App klasöründe](../../quiz-app) yer almaktadır, toplam 52 quiz ve her biri üç sorudan oluşmaktadır. Derslerin içinde bağlantılıdırlar ancak quiz uygulaması yerel olarak çalıştırılabilir; yerel barındırma veya Azure'a dağıtım için `quiz-app` klasöründeki talimatları izleyin. | Ders Numarası | Konu | Ders Grubu | Öğrenme Hedefleri | Bağlantılı Ders | Yazar | -| :-----------: | :------------------------------------------------------------: | :-------------------------------------------: | ----------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------: | -| 01 | Makine öğrenimine giriş | [Giriş](1-Introduction/README.md) | Makine öğreniminin temel kavramlarını öğrenin | [Ders](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Makine öğreniminin tarihi | [Giriş](1-Introduction/README.md) | Bu alanın temelindeki tarihi öğrenin | [Ders](1-Introduction/2-history-of-ML/README.md) | Jen ve Amy | -| 03 | Adalet ve makine öğrenimi | [Giriş](1-Introduction/README.md) | Öğrencilerin ML modelleri oluştururken ve uygularken dikkate alması gereken önemli felsefi konular nelerdir? | [Ders](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Makine öğrenimi teknikleri | [Giriş](1-Introduction/README.md) | ML araştırmacıları ML modelleri oluşturmak için hangi teknikleri kullanır? | [Ders](1-Introduction/4-techniques-of-ML/README.md) | Chris ve Jen | -| 05 | Regresyona giriş | [Regresyon](2-Regression/README.md) | Regresyon modelleri için Python ve Scikit-learn ile başlayın | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Kuzey Amerika kabak fiyatları 🎃 | [Regresyon](2-Regression/README.md) | ML için veri görselleştirin ve temizleyin | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Kuzey Amerika kabak fiyatları 🎃 | [Regresyon](2-Regression/README.md) | Doğrusal ve polinom regresyon modelleri oluşturun | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen ve Dmitry • Eric Wanjau | -| 08 | Kuzey Amerika kabak fiyatları 🎃 | [Regresyon](2-Regression/README.md) | Lojistik regresyon modeli oluşturun | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Bir Web Uygulaması 🔌 | [Web Uygulaması](3-Web-App/README.md) | Eğitilmiş modelinizi kullanmak için bir web uygulaması oluşturun | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Sınıflandırmaya giriş | [Sınıflandırma](4-Classification/README.md) | Verilerinizi temizleyin, hazırlayın ve görselleştirin; sınıflandırmaya giriş | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen ve Cassie • Eric Wanjau | -| 11 | Lezzetli Asya ve Hint mutfağı 🍜 | [Sınıflandırma](4-Classification/README.md) | Sınıflandırıcılarla tanışın | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen ve Cassie • Eric Wanjau | -| 12 | Lezzetli Asya ve Hint mutfağı 🍜 | [Sınıflandırma](4-Classification/README.md) | Daha fazla sınıflandırıcı | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen ve Cassie • Eric Wanjau | -| 13 | Lezzetli Asya ve Hint mutfağı 🍜 | [Sınıflandırma](4-Classification/README.md) | Modelinizi kullanarak bir öneri web uygulaması oluşturun | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Kümelemeye giriş | [Kümeleme](5-Clustering/README.md) | Verilerinizi temizleyin, hazırlayın ve görselleştirin; kümelemeye giriş | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Nijerya'nın Müzik Zevklerini Keşfetmek 🎧 | [Kümeleme](5-Clustering/README.md) | K-Means kümeleme yöntemini keşfedin | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | -| 16 | Doğal dil işleme giriş ☕️ | [Doğal dil işleme](6-NLP/README.md) | Basit bir bot oluşturarak NLP hakkında temel bilgileri öğrenin | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Yaygın NLP Görevleri ☕️ | [Doğal dil işleme](6-NLP/README.md) | Dil yapılarıyla çalışırken gereken yaygın görevleri anlayarak NLP bilginizi derinleştirin | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Çeviri ve duygu analizi ♥️ | [Doğal dil işleme](6-NLP/README.md) | Jane Austen ile çeviri ve duygu analizi | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Avrupa'nın Romantik Otelleri ♥️ | [Doğal dil işleme](6-NLP/README.md) | Otel yorumlarıyla duygu analizi 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Avrupa'nın Romantik Otelleri ♥️ | [Doğal dil işleme](6-NLP/README.md) | Otel yorumlarıyla duygu analizi 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Zaman serisi tahminine giriş | [Zaman serisi](7-TimeSeries/README.md) | Zaman serisi tahminine giriş | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Dünya Güç Kullanımı ⚡️ - ARIMA ile zaman serisi tahmini | [Zaman serisi](7-TimeSeries/README.md) | ARIMA ile zaman serisi tahmini | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Dünya Güç Kullanımı ⚡️ - SVR ile zaman serisi tahmini | [Zaman serisi](7-TimeSeries/README.md) | Destek Vektör Regresörü ile zaman serisi tahmini | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Pekiştirmeli öğrenmeye giriş | [Pekiştirmeli öğrenme](8-Reinforcement/README.md) | Q-Learning ile pekiştirmeli öğrenmeye giriş | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Peter'ı kurttan koruyun! 🐺 | [Pekiştirmeli öğrenme](8-Reinforcement/README.md) | Pekiştirmeli öğrenme Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Gerçek Dünya ML senaryoları ve uygulamaları | [Vahşi Doğada ML](9-Real-World/README.md) | Klasik ML'nin ilginç ve açıklayıcı gerçek dünya uygulamaları | [Ders](9-Real-World/1-Applications/README.md) | Ekip | -| Postscript | RAI panosu kullanarak ML model hata ayıklama | [Vahşi Doğada ML](9-Real-World/README.md) | Sorumlu AI panosu bileşenlerini kullanarak Makine Öğrenimi model hata ayıklama | [Ders](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | Makine öğrenimine giriş | [Introduction](1-Introduction/README.md) | Makine öğrenmesinin temel kavramlarını öğrenin | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Makine öğrenmesinin tarihi | [Introduction](1-Introduction/README.md) | Bu alanın tarihini öğrenin | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Adalet ve makine öğrenmesi | [Introduction](1-Introduction/README.md) | Öğrencilerin ML modelleri oluştururken ve uygularken dikkate almaları gereken adaletle ilgili önemli felsefi konular nelerdir? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Makine öğrenmesi teknikleri | [Introduction](1-Introduction/README.md) | ML araştırmacıları ML modelleri oluşturmak için hangi teknikleri kullanır? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Regresyona giriş | [Regression](2-Regression/README.md) | Regresyon modelleri için Python ve Scikit-learn ile başlayın | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Kuzey Amerika kabak fiyatları 🎃 | [Regression](2-Regression/README.md) | ML için veri görselleştirme ve temizleme | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Kuzey Amerika kabak fiyatları 🎃 | [Regression](2-Regression/README.md) | Doğrusal ve polinom regresyon modelleri oluşturun | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Kuzey Amerika kabak fiyatları 🎃 | [Regression](2-Regression/README.md) | Lojistik regresyon modeli oluşturun | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Bir Web Uygulaması 🔌 | [Web App](3-Web-App/README.md) | Eğittiğiniz modeli kullanmak için bir web uygulaması oluşturun | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Sınıflandırmaya giriş | [Classification](4-Classification/README.md) | Verilerinizi temizleyin, hazırlayın ve görselleştirin; sınıflandırmaya giriş | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Lezzetli Asya ve Hint mutfakları 🍜 | [Classification](4-Classification/README.md) | Sınıflandırıcılara giriş | [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 | Lezzetli Asya ve Hint mutfakları 🍜 | [Classification](4-Classification/README.md) | Daha fazla sınıflandırıcı | [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 | Lezzetli Asya ve Hint mutfakları 🍜 | [Classification](4-Classification/README.md) | Modelinizi kullanarak öneri web uygulaması oluşturun | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Kümelemeye giriş | [Clustering](5-Clustering/README.md) | Verilerinizi temizleyin, hazırlayın ve görselleştirin; kümelemeye giriş | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Nijerya Müzik Zevklerini Keşfetmek 🎧 | [Clustering](5-Clustering/README.md) | K-Means kümeleme yöntemini keşfedin | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau | +| 16 | Doğal dil işleme giriş ☕️ | [Natural language processing](6-NLP/README.md) | Basit bir bot oluşturarak NLP'nin temellerini öğrenin | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Yaygın NLP Görevleri ☕️ | [Natural language processing](6-NLP/README.md) | Dil yapılarıyla uğraşırken gereken yaygın görevleri anlayarak NLP bilginizi derinleştirin | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Çeviri ve duygu analizi ♥️ | [Natural language processing](6-NLP/README.md) | Jane Austen ile çeviri ve duygu analizi | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Avrupa'nın romantik otelleri ♥️ | [Natural language processing](6-NLP/README.md) | Otel yorumları ile duygu analizi 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Avrupa'nın romantik otelleri ♥️ | [Natural language processing](6-NLP/README.md) | Otel yorumları ile duygu analizi 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Zaman serisi tahminine giriş | [Time series](7-TimeSeries/README.md) | Zaman serisi tahminine giriş | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Dünya Güç Kullanımı ⚡️ - ARIMA ile zaman serisi tahmini | [Time series](7-TimeSeries/README.md) | ARIMA ile zaman serisi tahmini | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Dünya Güç Kullanımı ⚡️ - SVR ile zaman serisi tahmini | [Time series](7-TimeSeries/README.md) | Destek Vektör Regresörü ile zaman serisi tahmini | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Pekiştirmeli öğrenmeye giriş | [Reinforcement learning](8-Reinforcement/README.md) | Q-Öğrenme ile pekiştirmeli öğrenmeye giriş | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Peter'ın kurttan kaçmasına yardım et! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Pekiştirmeli öğrenme Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Gerçek Dünya ML senaryoları ve uygulamaları | [ML in the Wild](9-Real-World/README.md) | Klasik ML'nin ilginç ve aydınlatıcı gerçek dünya uygulamaları | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | RAI panosu kullanarak ML'de model hata ayıklama | [ML in the Wild](9-Real-World/README.md) | Sorumlu AI pano bileşenleri kullanarak Makine Öğrenmesinde Model Hata Ayıklama | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | > [Bu kurs için tüm ek kaynakları Microsoft Learn koleksiyonumuzda bulun](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Çevrimdışı erişim -Bu dokümantasyonu [Docsify](https://docsify.js.org/#/) kullanarak çevrimdışı çalıştırabilirsiniz. Bu repoyu çatallayın, [Docsify'i yükleyin](https://docsify.js.org/#/quickstart) yerel makinenize ve ardından bu repoyu kök klasöründe `docsify serve` yazın. Web sitesi localhost'ta 3000 portunda sunulacaktır: `localhost:3000`. +Bu dokümantasyonu çevrimdışı olarak [Docsify](https://docsify.js.org/#/) kullanarak çalıştırabilirsiniz. Bu depoyu çatallayın, yerel makinenize [Docsify kurun](https://docsify.js.org/#/quickstart) ve ardından bu deponun kök klasöründe `docsify serve` yazın. Web sitesi localhost'unuzda 3000 portunda sunulacaktır: `localhost:3000`. ## PDF'ler -Bağlantılarla müfredatın PDF'sini [burada](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) bulabilirsiniz. +Müfredatın bağlantılı pdf'sini [burada](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) bulun. + ## 🎒 Diğer Kurslar -Ekibimiz başka kurslar da üretiyor! Şunlara göz atın: +Ekibimiz başka kurslar da üretiyor! Göz atın: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- -### Azure / Edge / MCP / Ajanlar +### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) [![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) [![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### Üretken AI Serisi [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) @@ -178,37 +187,37 @@ Ekibimiz başka kurslar da üretiyor! Şunlara göz atın: [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### Temel Öğrenme -[![Başlangıç Seviyesi için ML](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Başlangıç Seviyesi için Veri Bilimi](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![Başlangıç Seviyesi için Yapay Zeka](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Başlangıç Seviyesi için Siber Güvenlik](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Başlangıç Seviyesi için Web Geliştirme](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![Başlangıç Seviyesi için IoT](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Başlangıç Seviyesi için XR Geliştirme](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Copilot Serisi -[![AI ile Eşli Programlama için Copilot](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![C#/.NET için Copilot](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Macerası](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + +### Copilot Serisi +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) -## Yardım Alma +## Yardım Alma -Eğer takılırsanız ya da AI uygulamaları oluşturma konusunda sorularınız olursa, diğer öğrenenler ve deneyimli geliştiricilerle MCP hakkında tartışmalara katılabilirsiniz. Soruların memnuniyetle karşılandığı ve bilginin özgürce paylaşıldığı destekleyici bir topluluk. +Yapay zeka uygulamaları geliştirirken takılırsanız veya herhangi bir sorunuz olursa, MCP hakkında tartışmalara katılmak için diğer öğrenenler ve deneyimli geliştiricilerle buluşun. Soruların hoş karşılandığı ve bilginin özgürce paylaşıldığı destekleyici bir topluluktur. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Eğer ürünle ilgili geri bildirimleriniz varsa ya da oluşturma sırasında hatalarla karşılaşırsanız, şu adresi ziyaret edin: +Ürün geri bildirimi veya geliştirme sırasında oluşan hatalar için ziyaret edin: -[![Microsoft Foundry Geliştirici Forumu](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Feragatname**: -Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çeviriler hata veya yanlışlıklar içerebilir. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. +Bu belge, AI çeviri servisi [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu oluşabilecek yanlış anlamalar veya yorum hatalarından sorumlu değiliz. \ No newline at end of file diff --git a/translations/tw/README.md b/translations/tw/README.md index 5b2c28872..43a5d38ec 100644 --- a/translations/tw/README.md +++ b/translations/tw/README.md @@ -1,8 +1,8 @@ -[阿拉伯文](../ar/README.md) | [孟加拉文](../bn/README.md) | [保加利亞文](../bg/README.md) | [緬甸文](../my/README.md) | [簡體中文](../zh/README.md) | [繁體中文(香港)](../hk/README.md) | [繁體中文(澳門)](../mo/README.md) | [繁體中文(台灣)](./README.md) | [克羅埃西亞文](../hr/README.md) | [捷克文](../cs/README.md) | [丹麥文](../da/README.md) | [荷蘭文](../nl/README.md) | [愛沙尼亞文](../et/README.md) | [芬蘭文](../fi/README.md) | [法文](../fr/README.md) | [德文](../de/README.md) | [希臘文](../el/README.md) | [希伯來文](../he/README.md) | [印地文](../hi/README.md) | [匈牙利文](../hu/README.md) | [印尼文](../id/README.md) | [義大利文](../it/README.md) | [日文](../ja/README.md) | [韓文](../ko/README.md) | [立陶宛文](../lt/README.md) | [馬來文](../ms/README.md) | [馬拉地文](../mr/README.md) | [尼泊爾文](../ne/README.md) | [奈及利亞皮欽語](../pcm/README.md) | [挪威文](../no/README.md) | [波斯文(法爾西)](../fa/README.md) | [波蘭文](../pl/README.md) | [葡萄牙文(巴西)](../br/README.md) | [葡萄牙文(葡萄牙)](../pt/README.md) | [旁遮普文(古木基文)](../pa/README.md) | [羅馬尼亞文](../ro/README.md) | [俄文](../ru/README.md) | [塞爾維亞文(西里爾字母)](../sr/README.md) | [斯洛伐克文](../sk/README.md) | [斯洛維尼亞文](../sl/README.md) | [西班牙文](../es/README.md) | [斯瓦希里文](../sw/README.md) | [瑞典文](../sv/README.md) | [他加祿文(菲律賓文)](../tl/README.md) | [泰米爾文](../ta/README.md) | [泰文](../th/README.md) | [土耳其文](../tr/README.md) | [烏克蘭文](../uk/README.md) | [烏爾都文](../ur/README.md) | [越南文](../vi/README.md) +[阿拉伯語](../ar/README.md) | [孟加拉語](../bn/README.md) | [保加利亞語](../bg/README.md) | [緬甸語 (Myanmar)](../my/README.md) | [中文 (簡體)](../zh/README.md) | [中文 (繁體,香港)](../hk/README.md) | [中文 (繁體,澳門)](../mo/README.md) | [中文 (繁體,台灣)](./README.md) | [克羅埃西亞語](../hr/README.md) | [捷克語](../cs/README.md) | [丹麥語](../da/README.md) | [荷蘭語](../nl/README.md) | [愛沙尼亞語](../et/README.md) | [芬蘭語](../fi/README.md) | [法語](../fr/README.md) | [德語](../de/README.md) | [希臘語](../el/README.md) | [希伯來語](../he/README.md) | [印地語](../hi/README.md) | [匈牙利語](../hu/README.md) | [印尼語](../id/README.md) | [義大利語](../it/README.md) | [日語](../ja/README.md) | [坎納達語](../kn/README.md) | [韓語](../ko/README.md) | [立陶宛語](../lt/README.md) | [馬來語](../ms/README.md) | [馬拉雅拉姆語](../ml/README.md) | [馬拉地語](../mr/README.md) | [尼泊爾語](../ne/README.md) | [奈及利亞皮欽語](../pcm/README.md) | [挪威語](../no/README.md) | [波斯語 (法爾西語)](../fa/README.md) | [波蘭語](../pl/README.md) | [葡萄牙語 (巴西)](../br/README.md) | [葡萄牙語 (葡萄牙)](../pt/README.md) | [旁遮普語 (Gurmukhi)](../pa/README.md) | [羅馬尼亞語](../ro/README.md) | [俄語](../ru/README.md) | [塞爾維亞語 (西里爾字母)](../sr/README.md) | [斯洛伐克語](../sk/README.md) | [斯洛維尼亞語](../sl/README.md) | [西班牙語](../es/README.md) | [斯瓦希里語](../sw/README.md) | [瑞典語](../sv/README.md) | [他加祿語 (菲律賓語)](../tl/README.md) | [泰米爾語](../ta/README.md) | [泰盧固語](../te/README.md) | [泰語](../th/README.md) | [土耳其語](../tr/README.md) | [烏克蘭語](../uk/README.md) | [烏爾都語](../ur/README.md) | [越南語](../vi/README.md) #### 加入我們的社群 [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -我們正在進行一個 AI 學習系列的 Discord 活動,了解更多並加入我們的 [Learn with AI Series](https://aka.ms/learnwithai/discord),活動時間為 2025 年 9 月 18 日至 30 日。您將學到使用 GitHub Copilot 進行資料科學的技巧和秘訣。 +我們正在進行 Discord 的 AI 學習系列,了解更多並於 2025 年 9 月 18 日至 30 日加入我們,請參考 [Learn with AI Series](https://aka.ms/learnwithai/discord)。您將獲得使用 GitHub Copilot 進行資料科學的技巧與秘訣。 ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.tw.png) -# 初學者的機器學習課程 +# 初學者機器學習課程 -> 🌍 隨著我們探索世界文化,環遊世界學習機器學習 🌍 +> 🌍 透過世界文化探索機器學習,環遊世界之旅 🌍 -Microsoft 的雲端倡導者很高興提供一個為期 12 週、共 26 節課的課程,內容全是關於 **機器學習**。在這個課程中,您將學習有時被稱為 **經典機器學習** 的技術,主要使用 Scikit-learn 作為庫,並避免深度學習,深度學習的內容已包含在我們的 [AI 初學者課程](https://aka.ms/ai4beginners) 中。此外,您也可以搭配我們的 ['資料科學初學者課程'](https://aka.ms/ds4beginners) 一起學習! +微軟的雲端推廣團隊很高興提供一個為期 12 週、共 26 課的 **機器學習** 課程。在此課程中,您將學習有時稱為 **經典機器學習** 的內容,主要使用 Scikit-learn 函式庫,並避免深度學習,深度學習部分則涵蓋於我們的 [AI 初學者課程](https://aka.ms/ai4beginners)。您也可以搭配我們的 ['資料科學初學者課程'](https://aka.ms/ds4beginners) 一起學習! -跟著我們環遊世界,將這些經典技術應用於來自世界各地的數據。每節課都包含課前和課後測驗、完成課程的書面指導、解決方案、作業等。我們的專案式教學法讓您在建構中學習,這是一種能讓新技能更容易記住的有效方法。 +跟著我們環遊世界,將這些經典技術應用於來自世界各地的資料。每堂課包含課前與課後測驗、書面教學、解答、作業等。我們採用專案導向的教學法,讓您在實作中學習,這是新技能能夠牢固掌握的有效方式。 -**✍️ 特別感謝我們的作者** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu 和 Amy Boyd +**✍️ 衷心感謝我們的作者** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu 與 Amy Boyd -**🎨 同樣感謝我們的插畫家** Tomomi Imura、Dasani Madipalli 和 Jen Looper +**🎨 也感謝我們的插畫師** Tomomi Imura、Dasani Madipalli 與 Jen Looper -**🙏 特別感謝 🙏 我們的 Microsoft 學生大使作者、審稿人和內容貢獻者**,尤其是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila 和 Snigdha Agarwal +**🙏 特別感謝 🙏 微軟學生大使作者、審閱者與內容貢獻者**,特別是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila 與 Snigdha Agarwal -**🤩 額外感謝 Microsoft 學生大使 Eric Wanjau、Jasleen Sondhi 和 Vidushi Gupta 為我們提供 R 課程!** +**🤩 額外感謝微軟學生大使 Eric Wanjau、Jasleen Sondhi 與 Vidushi Gupta 為我們的 R 課程所做的貢獻!** # 開始使用 -請按照以下步驟: -1. **Fork 此儲存庫**:點擊此頁面右上角的 "Fork" 按鈕。 +請依照以下步驟: +1. **Fork 此儲存庫**:點擊本頁右上角的「Fork」按鈕。 2. **Clone 此儲存庫**: `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) +> [在我們的 Microsoft Learn 集合中找到本課程的所有額外資源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **需要幫助嗎?** 查看我們的 [疑難排解指南](TROUBLESHOOTING.md),以解決安裝、設置和運行課程的常見問題。 +> 🔧 **需要幫助嗎?** 請參考我們的 [疑難排解指南](TROUBLESHOOTING.md),解決安裝、設定及執行課程時常見的問題。 -**[學生](https://aka.ms/student-page)**,要使用此課程,請將整個儲存庫 fork 到您的 GitHub 帳戶,並自行或與小組一起完成練習: +**[學生](https://aka.ms/student-page)**,使用此課程時,請將整個儲存庫 fork 到您自己的 GitHub 帳號,並自行或與團隊完成練習: - 從課前測驗開始。 -- 閱讀課程並完成活動,在每次知識檢查時停下來反思。 -- 嘗試通過理解課程來創建專案,而不是直接運行解決方案代碼;不過,解決方案代碼可在每個專案式課程的 `/solution` 資料夾中找到。 -- 完成課後測驗。 +- 閱讀課程並完成活動,每個知識檢查時暫停並反思。 +- 嘗試透過理解課程內容來建立專案,而非直接執行解答程式碼;不過解答程式碼可在每個專案導向課程的 `/solution` 資料夾中找到。 +- 進行課後測驗。 - 完成挑戰。 - 完成作業。 -- 完成一組課程後,訪問 [討論板](https://github.com/microsoft/ML-For-Beginners/discussions),並通過填寫適當的 PAT 評估表來 "大聲學習"。PAT 是一種進度評估工具,您可以填寫該工具來進一步學習。您也可以對其他 PAT 進行回應,讓我們一起學習。 +- 完成一組課程後,請造訪 [討論區](https://github.com/microsoft/ML-For-Beginners/discussions) 並透過填寫相應的 PAT 評分表「大聲學習」。PAT 是一種進度評估工具,您填寫後可促進學習。您也可以對其他人的 PAT 作出回應,讓我們一起學習。 -> 為了進一步學習,我們建議您參考這些 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 模組和學習路徑。 +> 若要進一步學習,我們建議您參考這些 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 模組與學習路徑。 -**教師們**,我們提供了一些 [使用此課程的建議](for-teachers.md)。 +**教師**,我們已在 [for-teachers.md](for-teachers.md) 中提供一些使用本課程的建議。 --- -## 影片教學 +## 影片導覽 -部分課程提供短影片形式的教學。您可以在課程中找到這些影片,或在 [Microsoft Developer YouTube 頻道的 ML 初學者播放清單](https://aka.ms/ml-beginners-videos) 中找到,點擊下方圖片即可。 +部分課程提供短片形式的影片。您可以在課程中內嵌觀看,或在 [Microsoft Developer YouTube 頻道的 ML for Beginners 播放清單](https://aka.ms/ml-beginners-videos) 中觀看,點擊下方圖片即可。 [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.tw.png)](https://aka.ms/ml-beginners-videos) --- -## 認識團隊 +## 團隊介紹 [![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif 作者** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif 製作者** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 點擊上方圖片觀看關於此專案及創作者的影片! +> 🎥 點擊上方圖片觀看關於此專案及其創作者的影片! --- ## 教學法 -我們在設計此課程時選擇了兩個教學原則:確保它是 **專案式** 且包含 **頻繁測驗**。此外,此課程還有一個共同的 **主題**,以增強其連貫性。 +我們在設計此課程時選擇了兩個教學原則:確保課程是動手做的 **專案導向**,並包含 **頻繁的測驗**。此外,課程有一個共同的 **主題** 以增強連貫性。 -透過確保內容與專案相符,學習過程對學生來說更具吸引力,概念的記憶也會得到增強。此外,課前的低壓測驗能讓學生專注於學習主題,而課後的第二次測驗則能進一步加強記憶。此課程設計靈活有趣,可以完整學習或部分學習。專案從小型開始,並在 12 週的課程結束時逐漸變得更複雜。此課程還包含一個關於機器學習實際應用的附錄,可作為額外學分或討論的基礎。 +透過確保內容與專案對齊,讓學生學習過程更具吸引力,並提升概念的記憶度。此外,課前的低壓力測驗設定學生的學習意圖,課後的第二次測驗則確保進一步的記憶。此課程設計靈活且有趣,可整體或部分學習。專案從簡單開始,至 12 週結束時逐漸變得複雜。課程還包含一篇關於機器學習實際應用的後記,可作為額外學分或討論基礎。 -> 查看我們的 [行為準則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)、[翻譯指南](TRANSLATIONS.md) 和 [疑難排解指南](TROUBLESHOOTING.md)。我們歡迎您的建設性反饋! +> 請參閱我們的 [行為準則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)、[翻譯指南](TRANSLATIONS.md) 及 [疑難排解](TROUBLESHOOTING.md) 指南。我們歡迎您的建設性回饋! -## 每節課包含 +## 每堂課包含 -- 可選的手繪筆記 -- 可選的補充影片 -- 影片教學(僅部分課程) +- 選擇性手繪筆記 +- 選擇性補充影片 +- 影片導覽(部分課程) - [課前暖身測驗](https://ff-quizzes.netlify.app/en/ml/) - 書面課程 -- 專案式課程的逐步建構指南 +- 專案導向課程的逐步專案建置指南 - 知識檢查 - 挑戰 - 補充閱讀 - 作業 - [課後測驗](https://ff-quizzes.netlify.app/en/ml/) -> **關於語言的說明**:這些課程主要使用 Python 編寫,但許多課程也提供 R 語言版本。要完成 R 課程,請前往 `/solution` 資料夾並尋找 R 課程。這些課程包含 .rmd 副檔名,代表 **R Markdown** 文件,可簡單定義為在 `Markdown 文件` 中嵌入 `代碼塊`(R 或其他語言)和 `YAML 標頭`(指導如何格式化輸出,例如 PDF)。因此,它是一個出色的資料科學創作框架,因為它允許您將代碼、輸出和想法結合在一起,並以 Markdown 的形式記錄下來。此外,R Markdown 文件可以渲染為 PDF、HTML 或 Word 等輸出格式。 +> **關於語言的說明**:這些課程主要以 Python 撰寫,但許多課程也提供 R 版本。若要完成 R 課程,請前往 `/solution` 資料夾尋找 R 課程。它們包含 .rmd 副檔名,代表 **R Markdown** 檔案,簡單來說是將 `程式碼區塊`(R 或其他語言)與 `YAML 標頭`(指示如何格式化輸出,如 PDF)嵌入 `Markdown 文件` 中。這使其成為資料科學的優秀撰寫框架,因為您可以結合程式碼、輸出結果與想法,並以 Markdown 撰寫。此外,R Markdown 文件可輸出為 PDF、HTML 或 Word 等格式。 -> **關於測驗的說明**:所有測驗都包含在 [Quiz App 資料夾](../../quiz-app) 中,共有 52 個測驗,每個測驗包含三個問題。測驗在課程中有連結,但測驗應用程式可以在本地運行;請按照 `quiz-app` 資料夾中的指示在本地主機或部署到 Azure。 +> **關於測驗的說明**:所有測驗皆包含於 [Quiz App 資料夾](../../quiz-app),共 52 個測驗,每個測驗有三題。測驗連結嵌入課程中,但測驗應用程式可在本機執行;請參考 `quiz-app` 資料夾中的說明以在本機架設或部署至 Azure。 | 課程編號 | 主題 | 課程分組 | 學習目標 | 連結課程 | 作者 | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 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 和 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 和 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 和 Dmitry • Eric Wanjau | +| 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 和 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 和 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 和 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) | 透過建立簡單的機器人學習自然語言處理的基礎知識 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | 常見的自然語言處理任務 ☕️ | [Natural language processing](6-NLP/README.md) | 透過了解處理語言結構時所需的常見任務來加深您的自然語言處理知識 | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | 翻譯與情感分析 ♥️ | [Natural language processing](6-NLP/README.md) | 使用 Jane Austen 的作品進行翻譯與情感分析 | [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-Learning 進行強化學習簡介 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | 幫助 Peter 避開狼 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 強化學習 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| 後記 | 真實世界的機器學習場景與應用 | [ML in the Wild](9-Real-World/README.md) | 有趣且揭示性的經典機器學習真實世界應用 | [Lesson](9-Real-World/1-Applications/README.md) | Team | -| 後記 | 使用 RAI 儀表板進行機器學習模型調試 | [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) +| 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-均值分群方法 | [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-Learning 進行強化學習入門 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | 幫助彼得避開狼!🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 強化學習 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| 後記 | 真實世界的機器學習場景與應用 | [ML in the Wild](9-Real-World/README.md) | 傳統機器學習有趣且具啟發性的真實世界應用 | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| 後記 | 使用 RAI 儀表板進行機器學習模型除錯 | [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/#/) 離線運行此文件。Fork 此 repo,並在您的本地機器上 [安裝 Docsify](https://docsify.js.org/#/quickstart),然後在此 repo 的根目錄中輸入 `docsify serve`。網站將在您的本地主機的 3000 端口上提供服務:`localhost:3000`。 +你可以使用 [Docsify](https://docsify.js.org/#/) 離線執行此文件。分叉此倉庫,在你的本機安裝 [Docsify](https://docsify.js.org/#/quickstart),然後在此倉庫的根目錄輸入 `docsify serve`。網站將在本地主機的 3000 埠提供服務:`localhost:3000`。 ## PDF -在 [這裡](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) 找到包含連結的課程 PDF。 +在此處找到帶有連結的課程大綱 pdf [here](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)。 -## 🎒 其他課程 +## 🎒 其他課程 -我們的團隊還製作了其他課程!查看以下內容: +我們團隊還製作其他課程!請查看: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -181,34 +188,35 @@ Microsoft 的雲端倡導者很高興提供一個為期 12 週、共 26 節課 --- ### 核心學習 -[![ML 初學者](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![資料科學初學者](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI 初學者](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![資安初學者](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![網頁開發初學者](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT 初學者](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR 開發初學者](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Copilot 系列 +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot 系列 -[![Copilot 用於 AI 配對程式設計](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot 用於 C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot 冒險](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## 尋求幫助 +## 尋求協助 -如果您在建立 AI 應用程式時遇到困難或有任何問題,歡迎加入其他學習者和有經驗的開發者的討論。這是一個支持性的社群,問題都會被歡迎,知識也會被自由分享。 +如果你遇到困難或對建立 AI 應用程式有任何疑問,歡迎加入學習者與經驗豐富的開發者討論 MCP。這是一個支持性的社群,歡迎提問並自由分享知識。 -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -如果您有產品回饋或在開發過程中遇到錯誤,請造訪: +如果你在開發過程中有產品回饋或錯誤,請造訪: -[![Microsoft Foundry 開發者論壇](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **免責聲明**: -本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用本翻譯而引起的任何誤解或誤釋不承擔責任。 +本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤譯負責。 \ No newline at end of file diff --git a/translations/uk/README.md b/translations/uk/README.md index 3d497b1c8..94f3aa740 100644 --- a/translations/uk/README.md +++ b/translations/uk/README.md @@ -1,8 +1,8 @@ -[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) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/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) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](./README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) +[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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](./README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) #### Приєднуйтесь до нашої спільноти [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -У нас триває серія навчання з AI у Discord, дізнайтеся більше та приєднуйтесь до нас на [Learn with AI Series](https://aka.ms/learnwithai/discord) з 18 по 30 вересня 2025 року. Ви отримаєте поради та хитрощі використання GitHub Copilot для Data Science. +У нас триває серія Discord "Вчимося з AI", дізнайтеся більше та приєднуйтесь до нас на [Learn with AI Series](https://aka.ms/learnwithai/discord) з 18 по 30 вересня 2025 року. Ви отримаєте поради та трюки щодо використання GitHub Copilot для Data Science. ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.uk.png) # Машинне навчання для початківців - навчальна програма -> 🌍 Подорожуйте світом, досліджуючи машинне навчання через культури світу 🌍 +> 🌍 Подорожуйте навколо світу, досліджуючи машинне навчання через культури світу 🌍 -Хмарні адвокати Microsoft раді запропонувати 12-тижневу навчальну програму з 26 уроків, присвячену **машинному навчанню**. У цій програмі ви дізнаєтеся про те, що іноді називають **класичним машинним навчанням**, використовуючи переважно бібліотеку Scikit-learn і уникаючи глибокого навчання, яке охоплюється в нашій [навчальній програмі "AI для початківців"](https://aka.ms/ai4beginners). Поєднуйте ці уроки з нашою [навчальною програмою "Data Science для початківців"](https://aka.ms/ds4beginners), також! +Cloud Advocates у Microsoft раді запропонувати 12-тижневу навчальну програму з 26 уроків, присвячену **машинному навчанню**. У цій програмі ви дізнаєтеся про те, що іноді називають **класичним машинним навчанням**, використовуючи переважно бібліотеку Scikit-learn і уникаючи глибинного навчання, яке розглядається у нашій [навчальній програмі AI для початківців](https://aka.ms/ai4beginners). Поєднуйте ці уроки з нашою ['Data Science для початківців'](https://aka.ms/ds4beginners)! -Подорожуйте з нами світом, застосовуючи ці класичні техніки до даних з різних куточків світу. Кожен урок включає тести до і після уроку, письмові інструкції для виконання уроку, рішення, завдання та багато іншого. Наш підхід, заснований на проектах, дозволяє навчатися, створюючи, що є перевіреним способом закріплення нових навичок. +Подорожуйте з нами навколо світу, застосовуючи ці класичні методи до даних з різних куточків світу. Кожен урок включає тести до та після уроку, письмові інструкції для виконання завдання, розв’язок, домашнє завдання та інше. Наша проектно-орієнтована педагогіка дозволяє вчитися, створюючи проекти — перевірений спосіб закріплення нових навичок. -**✍️ Щиро дякуємо нашим авторам** Джен Лупер, Стівену Хауеллу, Франчесці Лаццері, Томомі Імурі, Кассі Бревіу, Дмитру Сошникову, Крісу Норінгу, Анірбану Мукерджі, Орнеллі Алтунян, Рут Якобу та Емі Бойд +**✍️ Щира подяка нашим авторам** Джен Лупер, Стівен Гауелл, Франческа Лаззерi, Томомі Імура, Кессі Бревіу, Дмитру Сошникову, Крісу Норінгу, Анірбану Мукхерджі, Орнеллі Алтунян, Рут Якубу та Емі Бойд -**🎨 Дякуємо також нашим ілюстраторам** Томомі Імурі, Дасані Мадіпаллі та Джен Лупер +**🎨 Також дякуємо нашим ілюстраторам** Томомі Імура, Дасані Мадіпаллі та Джен Лупер -**🙏 Особлива подяка 🙏 нашим авторам, рецензентам та контриб'юторам контенту серед студентських амбасадорів Microsoft**, зокрема Рішиту Даглі, Мухаммаду Сакібу Хану Інану, Рохану Раджу, Александру Петреску, Абхішеку Джайсвалу, Наврін Табассум, Іоану Самуїлі та Снігдхі Агарвал +**🙏 Особлива подяка 🙏 нашим студентським амбасадорам Microsoft, авторам, рецензентам та контент-співавторам**, зокрема Рішиту Даглі, Мухаммаду Сакібу Хану Інану, Рохану Раджу, Александру Петреску, Абхішеку Джайсвалу, Наврін Табассум, Іоану Самуїлі та Снігдха Агарвал -**🤩 Окрема вдячність студентським амбасадорам Microsoft Еріку Ванджау, Джаслін Сонді та Відуші Гупті за наші уроки з R!** +**🤩 Особлива вдячність студентським амбасадорам 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.md) для вирішення поширених проблем з установкою, налаштуванням та виконанням уроків. +> 🔧 **Потрібна допомога?** Перегляньте наш [Посібник з усунення несправностей](TROUBLESHOOTING.md) для розв’язання поширених проблем з установкою, налаштуванням і запуском уроків. **[Студенти](https://aka.ms/student-page)**, щоб використовувати цю навчальну програму, форкніть весь репозиторій у свій обліковий запис GitHub і виконуйте вправи самостійно або в групі: - Почніть з тесту перед лекцією. -- Прочитайте лекцію та виконайте завдання, зупиняючись і розмірковуючи на кожному етапі перевірки знань. -- Спробуйте створити проекти, розуміючи уроки, а не просто запускаючи код рішення; однак цей код доступний у папках `/solution` у кожному проектно-орієнтованому уроці. +- Прочитайте лекцію та виконайте завдання, зупиняючись і розмірковуючи на кожній перевірці знань. +- Намагайтеся створювати проекти, розуміючи уроки, а не просто запускаючи код розв’язку; однак цей код доступний у папках `/solution` у кожному проектно-орієнтованому уроці. - Пройдіть тест після лекції. - Виконайте виклик. -- Виконайте завдання. -- Після завершення групи уроків відвідайте [Дошку обговорень](https://github.com/microsoft/ML-For-Beginners/discussions) і "навчайтеся вголос", заповнюючи відповідний рубрикатор PAT. 'PAT' - це інструмент оцінки прогресу, який є рубрикою, яку ви заповнюєте для подальшого навчання. Ви також можете реагувати на інші PAT, щоб ми могли навчатися разом. +- Виконайте домашнє завдання. +- Після завершення групи уроків відвідайте [Дошку обговорень](https://github.com/microsoft/ML-For-Beginners/discussions) і "вчіться вголос", заповнюючи відповідну рубрику PAT. 'PAT' — це інструмент оцінки прогресу, рубрика, яку ви заповнюєте для подальшого навчання. Ви також можете реагувати на інші PAT, щоб ми могли вчитися разом. -> Для подальшого навчання ми рекомендуємо пройти ці [модулі та навчальні шляхи Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +> Для подальшого вивчення рекомендуємо пройти ці [модулі та навчальні шляхи Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). -**Вчителі**, ми [включили деякі пропозиції](for-teachers.md) щодо використання цієї навчальної програми. +**Вчителі**, ми включили [деякі пропозиції](for-teachers.md) щодо використання цієї навчальної програми. --- -## Відео-огляди +## Відеоогляди -Деякі уроки доступні у вигляді коротких відео. Ви можете знайти їх у самих уроках або на [плейлисті ML для початківців на YouTube-каналі Microsoft Developer](https://aka.ms/ml-beginners-videos), натиснувши на зображення нижче. +Деякі уроки доступні у форматі коротких відео. Ви можете знайти їх у самих уроках або на [плейлисті ML for Beginners на каналі Microsoft Developer YouTube](https://aka.ms/ml-beginners-videos), натиснувши на зображення нижче. [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.uk.png)](https://aka.ms/ml-beginners-videos) --- -## Знайомство з командою +## Знайомтесь з командою [![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif створено** [Мохітом Джайсалом](https://linkedin.com/in/mohitjaisal) +**Гіф від** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Натисніть на зображення вище, щоб переглянути відео про проект та людей, які його створили! +> 🎥 Натисніть на зображення вище, щоб переглянути відео про проєкт і людей, які його створили! --- ## Педагогіка -Ми обрали два педагогічні принципи при створенні цієї навчальної програми: забезпечення того, щоб вона була практичною **заснованою на проектах** і включала **часті тести**. Крім того, ця навчальна програма має спільну **тему**, яка надає їй цілісності. +Ми обрали два педагогічні принципи при створенні цієї навчальної програми: забезпечити практичний **проектно-орієнтований** підхід і включити **часті тести**. Крім того, ця програма має спільну **тему** для цілісності. -Забезпечуючи відповідність контенту проектам, процес стає більш захоплюючим для студентів, а засвоєння концепцій буде посилено. Крім того, тест з низькими ставками перед заняттям налаштовує студента на вивчення теми, а другий тест після заняття забезпечує подальше засвоєння. Ця навчальна програма була розроблена, щоб бути гнучкою та цікавою і може бути пройдена повністю або частково. Проекти починаються з простих і стають дедалі складнішими до кінця 12-тижневого циклу. Ця навчальна програма також включає постскриптум про реальні застосування ML, який може бути використаний як додатковий кредит або як основа для обговорення. +Забезпечуючи відповідність контенту проектам, процес стає більш захопливим для студентів, а засвоєння концепцій покращується. Крім того, тест з низькою ставкою перед заняттям налаштовує студента на вивчення теми, а другий тест після заняття забезпечує подальше закріплення знань. Ця програма розроблена бути гнучкою та цікавою, її можна проходити повністю або частково. Проекти починаються з простих і стають дедалі складнішими до кінця 12-тижневого циклу. Програма також містить післямову про реальні застосування машинного навчання, яку можна використовувати як додаткові бали або як основу для обговорення. -> Знайдіть наші [Правила поведінки](CODE_OF_CONDUCT.md), [Рекомендації щодо внесення змін](CONTRIBUTING.md), [Переклад](TRANSLATIONS.md) та [Посібник з усунення несправностей](TROUBLESHOOTING.md). Ми вітаємо ваші конструктивні відгуки! +> Знайдіть наші [Кодекс поведінки](CODE_OF_CONDUCT.md), [Внесок](CONTRIBUTING.md), [Переклад](TRANSLATIONS.md) та [Посібник з усунення несправностей](TROUBLESHOOTING.md). Ми радо приймаємо ваші конструктивні відгуки! ## Кожен урок включає -- необов'язковий скетчнот -- необов'язкове додаткове відео -- відео-огляд (лише деякі уроки) -- [тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/) +- необов’язкову замальовку +- необов’язкове додаткове відео +- відеоогляд (лише деякі уроки) +- [тест для розігріву перед лекцією](https://ff-quizzes.netlify.app/en/ml/) - письмовий урок -- для уроків, заснованих на проектах, покрокові інструкції щодо створення проекту +- для проектно-орієнтованих уроків — покрокові інструкції зі створення проекту - перевірки знань - виклик - додаткове читання -- завдання +- домашнє завдання - [тест після лекції](https://ff-quizzes.netlify.app/en/ml/) -> **Примітка про мови**: Ці уроки переважно написані на Python, але багато з них також доступні на R. Щоб виконати урок на R, перейдіть до папки `/solution` і знайдіть уроки на R. Вони включають розширення .rmd, яке представляє **R Markdown** файл, який можна просто визначити як вбудовування `кодових блоків` (R або інших мов) та `YAML заголовка` (який керує форматуванням вихідних даних, таких як PDF) у `Markdown документ`. Таким чином, це служить зразковою авторською платформою для науки про дані, оскільки дозволяє комбінувати ваш код, його вихідні дані та ваші думки, дозволяючи записувати їх у Markdown. Крім того, документи R Markdown можуть бути перетворені у вихідні формати, такі як PDF, HTML або Word. +> **Примітка про мови**: Ці уроки переважно написані на Python, але багато з них також доступні на R. Щоб виконати урок на R, перейдіть у папку `/solution` і знайдіть уроки на R. Вони мають розширення .rmd, що означає **R Markdown** файл, який можна просто визначити як вбудовування `кодових блоків` (R або інших мов) і `YAML-заголовка` (який керує форматуванням виводу, наприклад PDF) у `Markdown-документ`. Таким чином, це є зразковою системою авторства для науки про дані, оскільки дозволяє поєднувати код, його вивід і ваші думки, записуючи їх у Markdown. Крім того, документи R Markdown можна конвертувати у формати виводу, такі як PDF, HTML або Word. -> **Примітка про тести**: Усі тести містяться у [папці Quiz App](../../quiz-app), всього 52 тести по три питання кожен. Вони пов'язані з уроками, але додаток для тестів можна запустити локально; дотримуйтесь інструкцій у папці `quiz-app`, щоб локально розмістити або розгорнути на Azure. +> **Примітка про тести**: Всі тести містяться у [папці Quiz App](../../quiz-app), загалом 52 тести по три питання кожен. Вони пов’язані з уроками, але додаток для тестів можна запускати локально; дотримуйтесь інструкцій у папці `quiz-app` для локального хостингу або розгортання в Azure. -| Номер уроку | Тема | Групування уроків | Навчальні цілі | Пов'язаний урок | Автор | +| Номер уроку | Тема | Група уроків | Навчальні цілі | Пов’язаний урок | Автор | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Вступ до машинного навчання | [Вступ](1-Introduction/README.md) | Дізнайтеся основні концепції машинного навчання | [Урок](1-Introduction/1-intro-to-ML/README.md) | Мухаммад | -| 02 | Історія машинного навчання | [Вступ](1-Introduction/README.md) | Дізнайтеся історію, яка лежить в основі цієї галузі | [Урок](1-Introduction/2-history-of-ML/README.md) | Джен і Емі | -| 03 | Справедливість і машинне навчання | [Вступ](1-Introduction/README.md) | Які важливі філософські питання щодо справедливості слід враховувати студентам при створенні та застосуванні моделей ML? | [Урок](1-Introduction/3-fairness/README.md) | Томомі | -| 04 | Техніки машинного навчання | [Вступ](1-Introduction/README.md) | Які техніки використовують дослідники ML для створення моделей ML? | [Урок](1-Introduction/4-techniques-of-ML/README.md) | Кріс і Джен | -| 05 | Вступ до регресії | [Регресія](2-Regression/README.md) | Почніть з Python і Scikit-learn для моделей регресії | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Джен • Ерік Ванджа | -| 06 | Ціни на гарбузи в Північній Америці 🎃 | [Регресія](2-Regression/README.md) | Візуалізуйте та очистіть дані для підготовки до ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Джен • Ерік Ванджа | -| 07 | Ціни на гарбузи в Північній Америці 🎃 | [Регресія](2-Regression/README.md) | Створіть лінійні та поліноміальні моделі регресії | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Джен і Дмитро • Ерік Ванджа | -| 08 | Ціни на гарбузи в Північній Америці 🎃 | [Регресія](2-Regression/README.md) | Створіть модель логістичної регресії | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Джен • Ерік Ванджа | -| 09 | Веб-додаток 🔌 | [Веб-додаток](3-Web-App/README.md) | Створіть веб-додаток для використання вашої навченої моделі | [Python](3-Web-App/1-Web-App/README.md) | Джен | -| 10 | Вступ до класифікації | [Класифікація](4-Classification/README.md) | Очистіть, підготуйте та візуалізуйте свої дані; вступ до класифікації | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Джен і Кессі • Ерік Ванджа | -| 11 | Смачні азійські та індійські страви 🍜 | [Класифікація](4-Classification/README.md) | Вступ до класифікаторів | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Джен і Кессі • Ерік Ванджа | -| 12 | Смачні азійські та індійські страви 🍜 | [Класифікація](4-Classification/README.md) | Більше класифікаторів | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Джен і Кессі • Ерік Ванджа | -| 13 | Смачні азійські та індійські страви 🍜 | [Класифікація](4-Classification/README.md) | Створіть веб-додаток-рекомендацію, використовуючи вашу модель | [Python](4-Classification/4-Applied/README.md) | Джен | -| 14 | Вступ до кластеризації | [Кластеризація](5-Clustering/README.md) | Очистіть, підготуйте та візуалізуйте свої дані; вступ до кластеризації | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Джен • Ерік Ванджа | -| 15 | Дослідження музичних смаків Нігерії 🎧 | [Кластеризація](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) | Джен • Ерік Ванджа | -| 16 | Вступ до обробки природної мови ☕️ | [Обробка природної мови](6-NLP/README.md) | Дізнайтеся основи NLP, створюючи простого бота | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Стівен | -| 17 | Загальні завдання NLP ☕️ | [Обробка природної мови](6-NLP/README.md) | Поглибте свої знання NLP, зрозумівши загальні завдання, пов'язані з мовними структурами | [Python](6-NLP/2-Tasks/README.md) | Стівен | -| 18 | Переклад і аналіз настроїв ♥️ | [Обробка природної мови](6-NLP/README.md) | Переклад і аналіз настроїв з Джейн Остін | [Python](6-NLP/3-Translation-Sentiment/README.md) | Стівен | -| 19 | Романтичні готелі Європи ♥️ | [Обробка природної мови](6-NLP/README.md) | Аналіз настроїв за відгуками про готелі 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Стівен | -| 20 | Романтичні готелі Європи ♥️ | [Обробка природної мови](6-NLP/README.md) | Аналіз настроїв за відгуками про готелі 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Стівен | -| 21 | Вступ до прогнозування часових рядів | [Часові ряди](7-TimeSeries/README.md) | Вступ до прогнозування часових рядів | [Python](7-TimeSeries/1-Introduction/README.md) | Франческа | -| 22 | ⚡️ Використання енергії у світі ⚡️ - прогнозування часових рядів з ARIMA | [Часові ряди](7-TimeSeries/README.md) | Прогнозування часових рядів з ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Франческа | -| 23 | ⚡️ Використання енергії у світі ⚡️ - прогнозування часових рядів з SVR | [Часові ряди](7-TimeSeries/README.md) | Прогнозування часових рядів з регресором підтримки векторів | [Python](7-TimeSeries/3-SVR/README.md) | Анірбан | -| 24 | Вступ до навчання з підкріпленням | [Навчання з підкріпленням](8-Reinforcement/README.md)| Вступ до навчання з підкріпленням з Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Дмитро | -| 25 | Допоможіть Пітеру уникнути вовка! 🐺 | [Навчання з підкріпленням](8-Reinforcement/README.md)| Навчання з підкріпленням у Gym | [Python](8-Reinforcement/2-Gym/README.md) | Дмитро | -| Постскриптум | Реальні сценарії та застосування ML | [ML у реальному світі](9-Real-World/README.md) | Цікаві та показові реальні застосування класичного ML | [Урок](9-Real-World/1-Applications/README.md) | Команда | -| Постскриптум | Налагодження моделей ML за допомогою панелі RAI | [ML у реальному світі](9-Real-World/README.md) | Налагодження моделей машинного навчання за допомогою компонентів панелі відповідального AI | [Урок](9-Real-World/2-Debugging-ML-Models/README.md) | Рут Якубу | +| 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-середніх | [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-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Допоможіть Пітеру уникнути вовка! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Підкріплювальне навчання Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Реальні сценарії та застосування МН | [ML in the Wild](9-Real-World/README.md) | Цікаві та пізнавальні реальні застосування класичного машинного навчання | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Відлагодження моделей МН за допомогою панелі RAI | [ML in the Wild](9-Real-World/README.md) | Відлагодження моделей машинного навчання за допомогою компонентів панелі Responsible 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: `localhost:3000`. +Ви можете переглядати цю документацію офлайн, використовуючи [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). +Знайдіть pdf навчальної програми з посиланнями [тут](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Інші курси -Наша команда створює інші курси! Ознайомтеся: +## 🎒 Інші курси -### Azure / Edge / MCP / Агенти -[![AZD для початківців](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI для початківців](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP для початківців](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI Агенти для початківців](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +Наша команда створює й інші курси! Перегляньте: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Серія про генеративний AI -[![Генеративний AI для початківців](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Генеративний AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Генеративний AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Генеративний AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Серія Generative AI +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +--- + ### Основне навчання -[![ML для початківців](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Наука про дані для початківців](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![Штучний інтелект для початківців](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Кібербезпека для початківців](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Веб-розробка для початківців](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT для початківців](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Розробка XR для початківців](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Серія Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Серія Copilot -[![Copilot для парного програмування з AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot для C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Пригоди з Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +## Отримання допомоги -## Отримання допомоги +Якщо ви застрягли або маєте питання щодо створення AI-додатків. Приєднуйтесь до інших учнів та досвідчених розробників у обговореннях про MCP. Це підтримуюча спільнота, де вітаються питання і знання вільно обмінюються. -Якщо ви застрягли або маєте питання щодо створення додатків зі штучним інтелектом, приєднуйтесь до обговорень про MCP разом з іншими учнями та досвідченими розробниками. Це підтримуюча спільнота, де питання вітаються, а знання діляться вільно. - -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Якщо у вас є відгуки про продукт або виникають помилки під час створення, відвідайте: +Якщо у вас є відгуки про продукт або помилки під час розробки, відвідайте: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **Відмова від відповідальності**: -Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується звертатися до професійного людського перекладу. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/ur/README.md b/translations/ur/README.md index 7613ad3ff..6d430ca91 100644 --- a/translations/ur/README.md +++ b/translations/ur/README.md @@ -1,8 +1,8 @@ +[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](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](./README.md) | [Vietnamese](../vi/README.md) + #### ہماری کمیونٹی میں شامل ہوں [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -ہمارے Discord پر AI کے ساتھ سیکھنے کی سیریز جاری ہے، مزید جانیں اور ہمارے ساتھ شامل ہوں [Learn with AI Series](https://aka.ms/learnwithai/discord) 18 - 30 ستمبر، 2025۔ آپ کو GitHub Copilot کو ڈیٹا سائنس کے لیے استعمال کرنے کے طریقے کے بارے میں تجاویز اور ترکیبیں ملیں گی۔ +ہمارے پاس ایک Discord پر AI کے ساتھ سیکھنے کی سیریز جاری ہے، مزید جاننے اور شامل ہونے کے لیے [Learn with AI Series](https://aka.ms/learnwithai/discord) پر جائیں، جو 18 سے 30 ستمبر، 2025 تک جاری رہے گی۔ آپ کو GitHub Copilot کے استعمال کے ٹپس اور ٹرکس ملیں گے جو ڈیٹا سائنس کے لیے ہیں۔ ![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.ur.png) -# مشین لرننگ برائے ابتدائی - ایک نصاب +# مشین لرننگ برائے مبتدی - ایک نصاب -> 🌍 دنیا کے مختلف ثقافتوں کے ذریعے مشین لرننگ کو دریافت کریں 🌍 +> 🌍 دنیا بھر کا سفر کریں جب ہم دنیا کی ثقافتوں کے ذریعے مشین لرننگ کو دریافت کرتے ہیں 🌍 -Microsoft کے Cloud Advocates خوشی کے ساتھ 12 ہفتوں، 26 اسباق پر مشتمل نصاب پیش کرتے ہیں جو مکمل طور پر **مشین لرننگ** کے بارے میں ہے۔ اس نصاب میں، آپ **کلاسک مشین لرننگ** کے بارے میں سیکھیں گے، بنیادی طور پر Scikit-learn لائبریری کا استعمال کرتے ہوئے اور گہرائی میں سیکھنے سے گریز کرتے ہوئے، جو ہمارے [AI for Beginners' curriculum](https://aka.ms/ai4beginners) میں شامل ہے۔ ان اسباق کو ہمارے ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) کے ساتھ جوڑیں! +مائیکروسافٹ کے کلاؤڈ ایڈووکیٹس خوشی سے 12 ہفتوں، 26 اسباق پر مشتمل نصاب پیش کرتے ہیں جو مکمل طور پر **مشین لرننگ** کے بارے میں ہے۔ اس نصاب میں، آپ کو وہ چیزیں سکھائی جائیں گی جنہیں کبھی کبھار **کلاسیکی مشین لرننگ** کہا جاتا ہے، جس میں بنیادی طور پر Scikit-learn لائبریری استعمال کی جاتی ہے اور ڈیپ لرننگ سے گریز کیا جاتا ہے، جو ہمارے [AI for Beginners' curriculum](https://aka.ms/ai4beginners) میں شامل ہے۔ ان اسباق کو ہمارے ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) کے ساتھ جوڑیں۔ -ہمارے ساتھ دنیا بھر کا سفر کریں کیونکہ ہم ان کلاسک تکنیکوں کو دنیا کے مختلف علاقوں کے ڈیٹا پر لاگو کرتے ہیں۔ ہر سبق میں سبق سے پہلے اور بعد کے کوئز، سبق مکمل کرنے کے لیے تحریری ہدایات، ایک حل، ایک اسائنمنٹ، اور مزید شامل ہیں۔ ہمارا پروجیکٹ پر مبنی تدریسی طریقہ آپ کو سیکھنے کے دوران تعمیر کرنے کی اجازت دیتا ہے، جو نئے مہارتوں کو 'یاد رکھنے' کا ایک ثابت شدہ طریقہ ہے۔ +ہمارے ساتھ دنیا بھر کا سفر کریں جب ہم ان کلاسیکی تکنیکوں کو دنیا کے مختلف علاقوں کے ڈیٹا پر لاگو کرتے ہیں۔ ہر سبق میں پری اور پوسٹ لیکچر کوئزز، تحریری ہدایات، حل، اسائنمنٹ، اور مزید شامل ہیں۔ ہمارا پروجیکٹ پر مبنی طریقہ تعلیم آپ کو سیکھنے کے ساتھ ساتھ بنانے کی اجازت دیتا ہے، جو نئی مہارتوں کو مضبوط کرنے کا ایک مؤثر طریقہ ہے۔ -**✍️ ہمارے مصنفین کا دل سے شکریہ** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu اور Amy Boyd +**✍️ ہمارے مصنفین کا دلی شکریہ** جن لوپر، اسٹیفن ہاؤل، فرانسسکا لازیری، ٹومومی ایمورا، کیسی بریویو، دمتری سوشنیکوف، کرس نورنگ، انربن مکھرجی، اورنیلا التونین، روتھ یاکوبو اور ایمی بوئڈ -**🎨 ہمارے مصوروں کا بھی شکریہ** Tomomi Imura, Dasani Madipalli, اور Jen Looper +**🎨 ہمارے مصوروں کا بھی شکریہ** ٹومومی ایمورا، داسانی مادپالی، اور جن لوپر -**🙏 خاص شکریہ 🙏 ہمارے Microsoft Student Ambassador مصنفین، جائزہ لینے والوں، اور مواد کے تعاون کرنے والوں کا**, خاص طور پر Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, اور Snigdha Agarwal +**🙏 خاص شکریہ 🙏 ہمارے مائیکروسافٹ اسٹوڈنٹ ایمبیسیڈر مصنفین، جائزہ لینے والوں، اور مواد کے تعاون کرنے والوں کو**، خاص طور پر رشت دگلی، محمد ساکب خان انان، روہن راج، الیگزینڈرو پیٹریسکو، ابھیشیک جیسوال، نوورین تبسم، ایوان سامویلا، اور سنگدھا اگروال -**🤩 اضافی شکریہ Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, اور Vidushi Gupta ہمارے R اسباق کے لیے!** +**🤩 اضافی شکریہ مائیکروسافٹ اسٹوڈنٹ ایمبیسیڈرز ایرک وانجاو، جیسلین سندھی، اور ویدوشی گپتا کو ہمارے R اسباق کے لیے!** -# شروع کریں +# شروع کرنے کا طریقہ -یہ اقدامات کریں: -1. **ریپوزیٹری کو فورک کریں**: اس صفحے کے اوپر دائیں کونے میں "Fork" بٹن پر کلک کریں۔ +مندرجہ ذیل اقدامات کریں: +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) +> [اس کورس کے تمام اضافی وسائل ہمارے Microsoft Learn کلیکشن میں تلاش کریں](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **مدد چاہیے؟** ہمارے [Troubleshooting Guide](TROUBLESHOOTING.md) کو چیک کریں تاکہ انسٹالیشن، سیٹ اپ، اور اسباق چلانے کے عام مسائل کے حل تلاش کیے جا سکیں۔ +> 🔧 **مدد چاہیے؟** ہمارے [Troubleshooting Guide](TROUBLESHOOTING.md) کو چیک کریں تاکہ انسٹالیشن، سیٹ اپ، اور اسباق چلانے کے عام مسائل کے حل مل سکیں۔ -**[طلباء](https://aka.ms/student-page)**، اس نصاب کو استعمال کرنے کے لیے، پورے ریپوزیٹری کو اپنے GitHub اکاؤنٹ میں فورک کریں اور مشقیں خود یا گروپ کے ساتھ مکمل کریں: +**[طلباء](https://aka.ms/student-page)**، اس نصاب کو استعمال کرنے کے لیے، پورے ریپو کو اپنے GitHub اکاؤنٹ پر فورک کریں اور مشقیں خود یا گروپ کے ساتھ مکمل کریں: -- سبق سے پہلے کوئز کے ساتھ شروع کریں۔ -- سبق پڑھیں اور سرگرمیاں مکمل کریں، ہر علم کی جانچ پر رکیں اور غور کریں۔ -- اسباق کو سمجھ کر پروجیکٹس بنانے کی کوشش کریں بجائے اس کے کہ حل کوڈ چلائیں؛ تاہم وہ کوڈ ہر پروجیکٹ پر مبنی سبق کے `/solution` فولڈرز میں دستیاب ہے۔ -- سبق کے بعد کوئز لیں۔ +- پری لیکچر کوئز سے شروع کریں۔ +- لیکچر پڑھیں اور سرگرمیاں مکمل کریں، ہر نالج چیک پر توقف کریں اور غور کریں۔ +- اسباق کو سمجھ کر پروجیکٹس بنانے کی کوشش کریں بجائے اس کے کہ حل کا کوڈ چلائیں؛ تاہم وہ کوڈ ہر پروجیکٹ پر مبنی سبق کے `/solution` فولڈر میں دستیاب ہے۔ +- پوسٹ لیکچر کوئز لیں۔ - چیلنج مکمل کریں۔ - اسائنمنٹ مکمل کریں۔ -- سبق گروپ مکمل کرنے کے بعد، [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) پر جائیں اور "بلند آواز میں سیکھیں" مناسب PAT rubric کو بھر کر۔ 'PAT' ایک Progress Assessment Tool ہے جو ایک rubric ہے جسے آپ اپنی سیکھنے کو مزید آگے بڑھانے کے لیے بھرتے ہیں۔ آپ دوسرے PATs پر بھی ردعمل دے سکتے ہیں تاکہ ہم مل کر سیکھ سکیں۔ +- ایک سبق کے گروپ کو مکمل کرنے کے بعد، [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) پر جائیں اور مناسب PAT روبریک بھر کر "آواز بلند کریں"۔ 'PAT' ایک پروگریس اسیسمنٹ ٹول ہے جو آپ کی سیکھنے میں مدد دیتا ہے۔ آپ دوسرے PATs پر بھی ردعمل دے سکتے ہیں تاکہ ہم سب مل کر سیکھ سکیں۔ -> مزید مطالعہ کے لیے، ہم ان [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) ماڈیولز اور سیکھنے کے راستوں کی پیروی کرنے کی تجویز کرتے ہیں۔ +> مزید مطالعے کے لیے، ہم ان [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) ماڈیولز اور لرننگ پاتھز کی پیروی کرنے کی سفارش کرتے ہیں۔ -**اساتذہ**, ہم نے اس نصاب کو استعمال کرنے کے لیے [کچھ تجاویز شامل کی ہیں](for-teachers.md)۔ +**اساتذہ**، ہم نے [کچھ تجاویز شامل کی ہیں](for-teachers.md) کہ اس نصاب کو کیسے استعمال کیا جائے۔ --- -## ویڈیو واک تھرو +## ویڈیو واک تھروز -کچھ اسباق مختصر ویڈیو کی شکل میں دستیاب ہیں۔ آپ ان سب کو اسباق میں ان لائن یا [Microsoft Developer YouTube چینل پر ML for Beginners پلے لسٹ](https://aka.ms/ml-beginners-videos) پر دیکھ سکتے ہیں، نیچے دی گئی تصویر پر کلک کریں۔ +کچھ اسباق مختصر ویڈیو کی شکل میں دستیاب ہیں۔ آپ انہیں اسباق کے اندر یا [Microsoft Developer YouTube چینل پر ML for Beginners پلے لسٹ](https://aka.ms/ml-beginners-videos) میں نیچے دی گئی تصویر پر کلک کر کے دیکھ سکتے ہیں۔ [![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ur.png)](https://aka.ms/ml-beginners-videos) --- -## ٹیم سے ملاقات کریں +## ٹیم سے ملاقات [![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif by** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**گیف بذریعہ** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ پروجیکٹ اور اسے بنانے والے افراد کے بارے میں ویڈیو دیکھ سکیں! +> 🎥 پروجیکٹ اور اس کے بنانے والوں کے بارے میں ویڈیو دیکھنے کے لیے اوپر تصویر پر کلک کریں! --- -## تدریسی طریقہ +## طریقہ تعلیم -ہم نے اس نصاب کو بناتے وقت دو تدریسی اصولوں کا انتخاب کیا ہے: یہ یقینی بنانا کہ یہ عملی **پروجیکٹ پر مبنی** ہے اور اس میں **بار بار کوئز** شامل ہیں۔ اس کے علاوہ، اس نصاب میں ایک عام **موضوع** شامل ہے تاکہ اسے ہم آہنگی دی جا سکے۔ +ہم نے اس نصاب کی تیاری میں دو تعلیمی اصول منتخب کیے ہیں: یہ کہ یہ ہاتھوں سے کرنے والا **پروجیکٹ پر مبنی** ہو اور اس میں **بار بار کوئزز** شامل ہوں۔ اس کے علاوہ، اس نصاب کا ایک مشترکہ **موضوع** ہے جو اسے مربوط بناتا ہے۔ -یہ یقینی بنا کر کہ مواد پروجیکٹس کے ساتھ ہم آہنگ ہے، عمل کو طلباء کے لیے زیادہ دلچسپ بنایا گیا ہے اور تصورات کی یادداشت کو بڑھایا جائے گا۔ اس کے علاوہ، کلاس سے پہلے ایک کم دباؤ والا کوئز طالب علم کو کسی موضوع کو سیکھنے کی طرف متوجہ کرتا ہے، جبکہ کلاس کے بعد دوسرا کوئز مزید یادداشت کو یقینی بناتا ہے۔ یہ نصاب لچکدار اور تفریحی طور پر ڈیزائن کیا گیا ہے اور اسے مکمل یا جزوی طور پر لیا جا سکتا ہے۔ پروجیکٹس چھوٹے سے شروع ہوتے ہیں اور 12 ہفتوں کے اختتام تک بتدریج پیچیدہ ہو جاتے ہیں۔ اس نصاب میں ML کے حقیقی دنیا کے اطلاقات پر ایک پوسٹ اسکرپٹ بھی شامل ہے، جسے اضافی کریڈٹ کے طور پر یا بحث کی بنیاد کے طور پر استعمال کیا جا سکتا ہے۔ +مواد کو پروجیکٹس کے ساتھ ہم آہنگ کر کے، عمل طلباء کے لیے زیادہ دلچسپ بنایا جاتا ہے اور تصورات کو یاد رکھنے میں مدد ملتی ہے۔ اس کے علاوہ، کلاس سے پہلے ایک کم دباؤ والا کوئز طالب علم کی نیت کو سیکھنے کی طرف متوجہ کرتا ہے، جبکہ کلاس کے بعد دوسرا کوئز مزید یادداشت کو یقینی بناتا ہے۔ یہ نصاب لچکدار اور دلچسپ بنانے کے لیے ڈیزائن کیا گیا ہے اور اسے مکمل یا جزوی طور پر لیا جا سکتا ہے۔ پروجیکٹس چھوٹے سے شروع ہوتے ہیں اور 12 ہفتوں کے دورانیے کے آخر تک پیچیدہ ہوتے جاتے ہیں۔ اس نصاب میں مشین لرننگ کی حقیقی دنیا میں اطلاق پر ایک پوسٹ اسکرپٹ بھی شامل ہے، جسے اضافی کریڈٹ کے طور پر یا بحث کے لیے استعمال کیا جا سکتا ہے۔ -> ہمارا [Code of Conduct](CODE_OF_CONDUCT.md)، [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), اور [Troubleshooting](TROUBLESHOOTING.md) رہنما خطوط تلاش کریں۔ ہم آپ کی تعمیری رائے کا خیر مقدم کرتے ہیں! +> ہمارا [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/) - تحریری سبق -- پروجیکٹ پر مبنی اسباق کے لیے، پروجیکٹ بنانے کے لیے مرحلہ وار گائیڈز -- علم کی جانچ +- پروجیکٹ پر مبنی اسباق کے لیے، پروجیکٹ بنانے کے مرحلہ وار رہنما +- نالج چیکس - ایک چیلنج - اضافی مطالعہ - اسائنمنٹ -- [سبق کے بعد کوئز](https://ff-quizzes.netlify.app/en/ml/) +- [پوسٹ لیکچر کوئز](https://ff-quizzes.netlify.app/en/ml/) -> **زبانوں کے بارے میں ایک نوٹ**: یہ اسباق بنیادی طور پر Python میں لکھے گئے ہیں، لیکن بہت سے R میں بھی دستیاب ہیں۔ R سبق مکمل کرنے کے لیے، `/solution` فولڈر پر جائیں اور R اسباق تلاش کریں۔ ان میں .rmd ایکسٹینشن شامل ہے جو **R Markdown** فائل کی نمائندگی کرتا ہے جسے آسانی سے 'کوڈ چنکس' (R یا دیگر زبانوں کے) اور 'YAML ہیڈر' (جو آؤٹ پٹ فارمیٹس جیسے PDF کو فارمیٹ کرنے کی رہنمائی کرتا ہے) کو 'Markdown دستاویز' میں شامل کرنے کے طور پر بیان کیا جا سکتا ہے۔ اس طرح، یہ ڈیٹا سائنس کے لیے ایک مثالی تصنیفی فریم ورک کے طور پر کام کرتا ہے کیونکہ یہ آپ کو اپنے کوڈ، اس کے آؤٹ پٹ، اور اپنے خیالات کو Markdown میں لکھنے کی اجازت دیتا ہے۔ مزید برآں، R Markdown دستاویزات کو آؤٹ پٹ فارمیٹس جیسے PDF، HTML، یا Word میں رینڈر کیا جا سکتا ہے۔ +> **زبانوں کے بارے میں ایک نوٹ**: یہ اسباق بنیادی طور پر Python میں لکھے گئے ہیں، لیکن بہت سے R میں بھی دستیاب ہیں۔ R سبق مکمل کرنے کے لیے، `/solution` فولڈر میں جائیں اور R اسباق تلاش کریں۔ ان میں .rmd توسیع ہوتی ہے جو ایک **R Markdown** فائل کی نمائندگی کرتی ہے، جسے آسانی سے `code chunks` (R یا دیگر زبانوں کے) اور `YAML header` (جو آؤٹ پٹ جیسے PDF کی فارمیٹنگ کی رہنمائی کرتا ہے) کو `Markdown document` میں شامل کرنے کے طور پر بیان کیا جا سکتا ہے۔ اس طرح، یہ ڈیٹا سائنس کے لیے ایک مثالی مصنفانہ فریم ورک کے طور پر کام کرتا ہے کیونکہ یہ آپ کو اپنے کوڈ، اس کے آؤٹ پٹ، اور اپنے خیالات کو Markdown میں لکھنے کی اجازت دیتا ہے۔ مزید برآں، R Markdown دستاویزات کو PDF، HTML، یا Word جیسے آؤٹ پٹ فارمیٹس میں رینڈر کیا جا سکتا ہے۔ -> **کوئز کے بارے میں ایک نوٹ**: تمام کوئز [Quiz App folder](../../quiz-app) میں موجود ہیں، کل 52 کوئز، ہر ایک میں تین سوالات۔ یہ اسباق کے اندر سے لنک کیے گئے ہیں لیکن کوئز ایپ کو مقامی طور پر چلایا جا سکتا ہے؛ `quiz-app` فولڈر میں دی گئی ہدایات پر عمل کریں تاکہ مقامی طور پر ہوسٹ کریں یا Azure پر تعینات کریں۔ +> **کوئزز کے بارے میں ایک نوٹ**: تمام کوئزز [Quiz App فولڈر](../../quiz-app) میں موجود ہیں، کل 52 کوئزز جن میں ہر ایک میں تین سوالات ہیں۔ یہ اسباق کے اندر سے لنک کیے گئے ہیں لیکن کوئز ایپ کو مقامی طور پر چلایا جا سکتا ہے؛ `quiz-app` فولڈر میں دی گئی ہدایات پر عمل کریں تاکہ مقامی ہوسٹنگ یا Azure پر تعیناتی کی جا سکے۔ -| سبق نمبر | موضوع | سبق گروپنگ | سیکھنے کے مقاصد | لنک شدہ سبق | مصنف | +| سبق نمبر | موضوع | سبق کا گروپ | تعلیمی مقاصد | منسلک سبق | مصنف | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | مشین لرننگ کا تعارف | [تعارف](1-Introduction/README.md) | مشین لرننگ کے بنیادی تصورات سیکھیں | [سبق](1-Introduction/1-intro-to-ML/README.md) | محمد | -| 02 | مشین لرننگ کی تاریخ | [تعارف](1-Introduction/README.md) | اس میدان کی تاریخ کے بارے میں جانیں | [سبق](1-Introduction/2-history-of-ML/README.md) | جین اور ایمی | -| 03 | مشین لرننگ اور انصاف | [تعارف](1-Introduction/README.md) | انصاف کے ارد گرد اہم فلسفیانہ مسائل کیا ہیں جن پر طلباء کو مشین لرننگ ماڈلز بناتے اور استعمال کرتے وقت غور کرنا چاہیے؟ | [سبق](1-Introduction/3-fairness/README.md) | تومومی | -| 04 | مشین لرننگ کے طریقے | [تعارف](1-Introduction/README.md) | مشین لرننگ کے محققین ماڈلز بنانے کے لیے کون سے طریقے استعمال کرتے ہیں؟ | [سبق](1-Introduction/4-techniques-of-ML/README.md) | کرس اور جین | -| 05 | ریگریشن کا تعارف | [ریگریشن](2-Regression/README.md) | ریگریشن ماڈلز کے لیے پائتھون اور سکائٹ لرن کے ساتھ شروعات کریں | [پائتھون](2-Regression/1-Tools/README.md) • [آر](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جین • ایرک وانجو | -| 06 | شمالی امریکی کدو کی قیمتیں 🎃 | [ریگریشن](2-Regression/README.md) | مشین لرننگ کی تیاری کے لیے ڈیٹا کو بصری بنائیں اور صاف کریں | [پائتھون](2-Regression/2-Data/README.md) • [آر](../../2-Regression/2-Data/solution/R/lesson_2.html) | جین • ایرک وانجو | -| 07 | شمالی امریکی کدو کی قیمتیں 🎃 | [ریگریشن](2-Regression/README.md) | لکیری اور پولینومیئل ریگریشن ماڈلز بنائیں | [پائتھون](2-Regression/3-Linear/README.md) • [آر](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جین اور دمتری • ایرک وانجو | -| 08 | شمالی امریکی کدو کی قیمتیں 🎃 | [ریگریشن](2-Regression/README.md) | لاجسٹک ریگریشن ماڈل بنائیں | [پائتھون](2-Regression/4-Logistic/README.md) • [آر](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | جین • ایرک وانجو | -| 09 | ایک ویب ایپ 🔌 | [ویب ایپ](3-Web-App/README.md) | اپنے تربیت یافتہ ماڈل کو استعمال کرنے کے لیے ایک ویب ایپ بنائیں | [پائتھون](3-Web-App/1-Web-App/README.md) | جین | -| 10 | درجہ بندی کا تعارف | [درجہ بندی](4-Classification/README.md) | اپنے ڈیٹا کو صاف کریں، تیار کریں، اور بصری بنائیں؛ درجہ بندی کا تعارف | [پائتھون](4-Classification/1-Introduction/README.md) • [آر](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جین اور کیسی • ایرک وانجو | -| 11 | مزیدار ایشیائی اور بھارتی کھانے 🍜 | [درجہ بندی](4-Classification/README.md) | درجہ بندی کرنے والوں کا تعارف | [پائتھون](4-Classification/2-Classifiers-1/README.md) • [آر](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جین اور کیسی • ایرک وانجو | -| 12 | مزیدار ایشیائی اور بھارتی کھانے 🍜 | [درجہ بندی](4-Classification/README.md) | مزید درجہ بندی کرنے والے | [پائتھون](4-Classification/3-Classifiers-2/README.md) • [آر](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | جین اور کیسی • ایرک وانجو | -| 13 | مزیدار ایشیائی اور بھارتی کھانے 🍜 | [درجہ بندی](4-Classification/README.md) | اپنے ماڈل کا استعمال کرتے ہوئے ایک سفارش کنندہ ویب ایپ بنائیں | [پائتھون](4-Classification/4-Applied/README.md) | جین | -| 14 | کلسٹرنگ کا تعارف | [کلسٹرنگ](5-Clustering/README.md) | اپنے ڈیٹا کو صاف کریں، تیار کریں، اور بصری بنائیں؛ کلسٹرنگ کا تعارف | [پائتھون](5-Clustering/1-Visualize/README.md) • [آر](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جین • ایرک وانجو | -| 15 | نائجیریا کے موسیقی کے ذوق کی تلاش 🎧 | [کلسٹرنگ](5-Clustering/README.md) | کے-میینز کلسٹرنگ طریقہ کی تلاش | [پائتھون](5-Clustering/2-K-Means/README.md) • [آر](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | جین • ایرک وانجو | -| 16 | قدرتی زبان کی پروسیسنگ کا تعارف ☕️ | [قدرتی زبان کی پروسیسنگ](6-NLP/README.md) | ایک سادہ بوٹ بنا کر قدرتی زبان کی پروسیسنگ کے بنیادی اصول سیکھیں | [پائتھون](6-NLP/1-Introduction-to-NLP/README.md) | اسٹیفن | -| 17 | عام NLP کام ☕️ | [قدرتی زبان کی پروسیسنگ](6-NLP/README.md) | زبان کے ڈھانچوں سے نمٹنے کے وقت درکار عام کاموں کو سمجھ کر اپنی NLP معلومات کو گہرا کریں | [پائتھون](6-NLP/2-Tasks/README.md) | اسٹیفن | -| 18 | ترجمہ اور جذباتی تجزیہ ♥️ | [قدرتی زبان کی پروسیسنگ](6-NLP/README.md) | جین آسٹن کے ساتھ ترجمہ اور جذباتی تجزیہ | [پائتھون](6-NLP/3-Translation-Sentiment/README.md) | اسٹیفن | -| 19 | یورپ کے رومانوی ہوٹل ♥️ | [قدرتی زبان کی پروسیسنگ](6-NLP/README.md) | ہوٹل کے جائزوں کے ساتھ جذباتی تجزیہ 1 | [پائتھون](6-NLP/4-Hotel-Reviews-1/README.md) | اسٹیفن | -| 20 | یورپ کے رومانوی ہوٹل ♥️ | [قدرتی زبان کی پروسیسنگ](6-NLP/README.md) | ہوٹل کے جائزوں کے ساتھ جذباتی تجزیہ 2 | [پائتھون](6-NLP/5-Hotel-Reviews-2/README.md) | اسٹیفن | -| 21 | وقت کی پیش گوئی کا تعارف | [وقت کی پیش گوئی](7-TimeSeries/README.md) | وقت کی پیش گوئی کا تعارف | [پائتھون](7-TimeSeries/1-Introduction/README.md) | فرانسسکا | -| 22 | ⚡️ دنیا کی بجلی کا استعمال ⚡️ - ARIMA کے ساتھ وقت کی پیش گوئی | [وقت کی پیش گوئی](7-TimeSeries/README.md) | ARIMA کے ساتھ وقت کی پیش گوئی | [پائتھون](7-TimeSeries/2-ARIMA/README.md) | فرانسسکا | -| 23 | ⚡️ دنیا کی بجلی کا استعمال ⚡️ - SVR کے ساتھ وقت کی پیش گوئی | [وقت کی پیش گوئی](7-TimeSeries/README.md) | سپورٹ ویکٹر ریگریسر کے ساتھ وقت کی پیش گوئی | [پائتھون](7-TimeSeries/3-SVR/README.md) | انربن | -| 24 | تقویت یافتہ لرننگ کا تعارف | [تقویت یافتہ لرننگ](8-Reinforcement/README.md) | کیو-لرننگ کے ساتھ تقویت یافتہ لرننگ کا تعارف | [پائتھون](8-Reinforcement/1-QLearning/README.md) | دمتری | -| 25 | پیٹر کو بھیڑیا سے بچائیں! 🐺 | [تقویت یافتہ لرننگ](8-Reinforcement/README.md) | تقویت یافتہ لرننگ جم | [پائتھون](8-Reinforcement/2-Gym/README.md) | دمتری | -| پوسٹ اسکرپٹ | حقیقی دنیا کے مشین لرننگ کے منظرنامے اور اطلاقات | [مشین لرننگ ان دی وائلڈ](9-Real-World/README.md) | کلاسیکل مشین لرننگ کے دلچسپ اور انکشاف کرنے والے حقیقی دنیا کے اطلاقات | [سبق](9-Real-World/1-Applications/README.md) | ٹیم | -| پوسٹ اسکرپٹ | RAI ڈیش بورڈ کا استعمال کرتے ہوئے مشین لرننگ میں ماڈل کی ڈیبگنگ | [مشین لرننگ ان دی وائلڈ](9-Real-World/README.md) | ذمہ دار AI ڈیش بورڈ کے اجزاء کا استعمال کرتے ہوئے مشین لرننگ میں ماڈل کی ڈیبگنگ | [سبق](9-Real-World/2-Debugging-ML-Models/README.md) | روتھ یاکوب | - -> [اس کورس کے لیے تمام اضافی وسائل ہماری مائیکروسافٹ لرن کلیکشن میں تلاش کریں](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 01 | مشین لرننگ کا تعارف | [Introduction](1-Introduction/README.md) | مشین لرننگ کے بنیادی تصورات سیکھیں | [Lesson](1-Introduction/1-intro-to-ML/README.md) | محمد | +| 02 | مشین لرننگ کی تاریخ | [Introduction](1-Introduction/README.md) | اس میدان کی تاریخ سیکھیں | [Lesson](1-Introduction/2-history-of-ML/README.md) | جین اور ایمی | +| 03 | انصاف اور مشین لرننگ | [Introduction](1-Introduction/README.md) | انصاف کے اہم فلسفیانہ مسائل کیا ہیں جن پر طلباء کو مشین لرننگ کے ماڈلز بنانے اور استعمال کرتے وقت غور کرنا چاہیے؟ | [Lesson](1-Introduction/3-fairness/README.md) | ٹومومی | +| 04 | مشین لرننگ کی تکنیکیں | [Introduction](1-Introduction/README.md) | مشین لرننگ کے محققین کون سی تکنیکیں استعمال کرتے ہیں؟ | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | کرس اور جین | +| 05 | ریگریشن کا تعارف | [Regression](2-Regression/README.md) | ریگریشن ماڈلز کے لیے پائتھون اور سکیٹ لرن کے ساتھ شروع کریں | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جین • ایرک وانجاو | +| 06 | شمالی امریکہ کے کدو کی قیمتیں 🎃 | [Regression](2-Regression/README.md) | مشین لرننگ کی تیاری کے لیے ڈیٹا کو دیکھیں اور صاف کریں | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | جین • ایرک وانجاو | +| 07 | شمالی امریکہ کے کدو کی قیمتیں 🎃 | [Regression](2-Regression/README.md) | لکیری اور کثیر رکنی ریگریشن ماڈلز بنائیں | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جین اور دمتری • ایرک وانجاو | +| 08 | شمالی امریکہ کے کدو کی قیمتیں 🎃 | [Regression](2-Regression/README.md) | لاجسٹک ریگریشن ماڈل بنائیں | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | جین • ایرک وانجاو | +| 09 | ایک ویب ایپ 🔌 | [Web App](3-Web-App/README.md) | اپنے تربیت یافتہ ماڈل کو استعمال کرنے کے لیے ویب ایپ بنائیں | [Python](3-Web-App/1-Web-App/README.md) | جین | +| 10 | درجہ بندی کا تعارف | [Classification](4-Classification/README.md) | اپنے ڈیٹا کو صاف کریں، تیار کریں، اور دیکھیں؛ درجہ بندی کا تعارف | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جین اور کیسی • ایرک وانجاو | +| 11 | مزیدار ایشیائی اور بھارتی کھانے 🍜 | [Classification](4-Classification/README.md) | درجہ بندی کرنے والوں کا تعارف | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جین اور کیسی • ایرک وانجاو | +| 12 | مزیدار ایشیائی اور بھارتی کھانے 🍜 | [Classification](4-Classification/README.md) | مزید درجہ بندی کرنے والے | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | جین اور کیسی • ایرک وانجاو | +| 13 | مزیدار ایشیائی اور بھارتی کھانے 🍜 | [Classification](4-Classification/README.md) | اپنے ماڈل کا استعمال کرتے ہوئے ایک سفارش کنندہ ویب ایپ بنائیں | [Python](4-Classification/4-Applied/README.md) | جین | +| 14 | کلسٹرنگ کا تعارف | [Clustering](5-Clustering/README.md) | اپنے ڈیٹا کو صاف کریں، تیار کریں، اور دیکھیں؛ کلسٹرنگ کا تعارف | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جین • ایرک وانجاو | +| 15 | نائجیریائی موسیقی کے ذوق کی تلاش 🎧 | [Clustering](5-Clustering/README.md) | K-Means کلسٹرنگ طریقہ دریافت کریں | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | جین • ایرک وانجاو | +| 16 | قدرتی زبان کی پروسیسنگ کا تعارف ☕️ | [Natural language processing](6-NLP/README.md) | ایک سادہ بوٹ بنا کر NLP کی بنیادی باتیں سیکھیں | [Python](6-NLP/1-Introduction-to-NLP/README.md) | اسٹیفن | +| 17 | عام NLP کے کام ☕️ | [Natural language processing](6-NLP/README.md) | زبان کی ساختوں سے نمٹنے کے لیے درکار عام کاموں کو سمجھ کر اپنے NLP کے علم کو گہرا کریں | [Python](6-NLP/2-Tasks/README.md) | اسٹیفن | +| 18 | ترجمہ اور جذباتی تجزیہ ♥️ | [Natural language processing](6-NLP/README.md) | جین آسٹن کے ساتھ ترجمہ اور جذباتی تجزیہ | [Python](6-NLP/3-Translation-Sentiment/README.md) | اسٹیفن | +| 19 | یورپ کے رومانوی ہوٹل ♥️ | [Natural language processing](6-NLP/README.md) | ہوٹل کے جائزوں کے ساتھ جذباتی تجزیہ 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | اسٹیفن | +| 20 | یورپ کے رومانوی ہوٹل ♥️ | [Natural language processing](6-NLP/README.md) | ہوٹل کے جائزوں کے ساتھ جذباتی تجزیہ 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | اسٹیفن | +| 21 | وقت کی سیریز کی پیش گوئی کا تعارف | [Time series](7-TimeSeries/README.md) | وقت کی سیریز کی پیش گوئی کا تعارف | [Python](7-TimeSeries/1-Introduction/README.md) | فرانسسکا | +| 22 | ⚡️ عالمی بجلی کا استعمال ⚡️ - ARIMA کے ساتھ وقت کی سیریز کی پیش گوئی | [Time series](7-TimeSeries/README.md) | ARIMA کے ساتھ وقت کی سیریز کی پیش گوئی | [Python](7-TimeSeries/2-ARIMA/README.md) | فرانسسکا | +| 23 | ⚡️ عالمی بجلی کا استعمال ⚡️ - SVR کے ساتھ وقت کی سیریز کی پیش گوئی | [Time series](7-TimeSeries/README.md) | سپورٹ ویکٹر ریگریسر کے ساتھ وقت کی سیریز کی پیش گوئی | [Python](7-TimeSeries/3-SVR/README.md) | انربن | +| 24 | تقویتی تعلیم کا تعارف | [Reinforcement learning](8-Reinforcement/README.md) | Q-Learning کے ساتھ تقویتی تعلیم کا تعارف | [Python](8-Reinforcement/1-QLearning/README.md) | دمتری | +| 25 | پیٹر کو بھیڑیا سے بچائیں! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | تقویتی تعلیم جِم | [Python](8-Reinforcement/2-Gym/README.md) | دمتری | +| Postscript | حقیقی دنیا کے مشین لرننگ کے منظرنامے اور اطلاقات | [ML in the Wild](9-Real-World/README.md) | کلاسیکی مشین لرننگ کی دلچسپ اور انکشاف کرنے والی حقیقی دنیا کی اطلاقات | [Lesson](9-Real-World/1-Applications/README.md) | ٹیم | +| Postscript | RAI ڈیش بورڈ کے ذریعے مشین لرننگ میں ماڈل کی خرابی کی جانچ | [ML in the Wild](9-Real-World/README.md) | ذمہ دار AI ڈیش بورڈ کے اجزاء کا استعمال کرتے ہوئے مشین لرننگ میں ماڈل کی خرابی کی جانچ | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | روتھ یاکوبو | + +> [اس کورس کے تمام اضافی وسائل ہماری Microsoft Learn کلیکشن میں تلاش کریں](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## آف لائن رسائی -آپ اس دستاویز کو آف لائن چلا سکتے ہیں [Docsify](https://docsify.js.org/#/) کا استعمال کرتے ہوئے۔ اس ریپو کو فورک کریں، [Docsify انسٹال کریں](https://docsify.js.org/#/quickstart) اپنی مقامی مشین پر، اور پھر اس ریپو کے روٹ فولڈر میں `docsify serve` ٹائپ کریں۔ ویب سائٹ آپ کے لوکل ہوسٹ پر پورٹ 3000 پر پیش کی جائے گی: `localhost:3000`۔ +آپ اس دستاویز کو آف لائن [Docsify](https://docsify.js.org/#/) استعمال کرکے چلا سکتے ہیں۔ اس ریپو کو فورک کریں، اپنے مقامی کمپیوٹر پر [Docsify انسٹال کریں](https://docsify.js.org/#/quickstart)، اور پھر اس ریپو کے روٹ فولڈر میں `docsify serve` ٹائپ کریں۔ ویب سائٹ آپ کے لوکل ہوسٹ پر پورٹ 3000 پر دستیاب ہوگی: `localhost:3000`۔ ## پی ڈی ایفز -نصاب کے لنکس کے ساتھ پی ڈی ایف [یہاں](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) تلاش کریں۔ +نصاب کا پی ڈی ایف لنکس کے ساتھ [یہاں](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) تلاش کریں۔ -## 🎒 دیگر کورسز +## 🎒 دیگر کورسز -ہماری ٹیم دیگر کورسز تیار کرتی ہے! دیکھیں: +ہماری ٹیم دیگر کورسز بھی تیار کرتی ہے! دیکھیں: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- ### Azure / Edge / MCP / Agents [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) @@ -168,46 +177,45 @@ Microsoft کے Cloud Advocates خوشی کے ساتھ 12 ہفتوں، 26 اسب [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### جنریٹو AI سیریز + +### Generative AI Series [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### بنیادی تعلیم -[![مشین لرننگ کے ابتدائی کورس](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![ڈیٹا سائنس کے ابتدائی کورس](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![مصنوعی ذہانت کے ابتدائی کورس](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![سائبر سیکیورٹی کے ابتدائی کورس](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![ویب ڈیولپمنٹ کے ابتدائی کورس](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![انٹرنیٹ آف تھنگز کے ابتدائی کورس](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![ایکس آر ڈیولپمنٹ کے ابتدائی کورس](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### کوپائلٹ سیریز +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### کوپائلٹ سیریز -[![کوپائلٹ برائے AI پیئرڈ پروگرامنگ](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![کوپائلٹ برائے C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![کوپائلٹ ایڈونچر](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +## مدد حاصل کرنا ---- - -## مدد حاصل کریں +اگر آپ پھنس جائیں یا AI ایپس بنانے کے بارے میں کوئی سوالات ہوں۔ MCP کے بارے میں بحث میں ساتھی سیکھنے والوں اور تجربہ کار ڈویلپرز میں شامل ہوں۔ یہ ایک معاون کمیونٹی ہے جہاں سوالات کا خیرمقدم کیا جاتا ہے اور علم آزادانہ طور پر شیئر کیا جاتا ہے۔ -اگر آپ کسی مسئلے میں پھنس جائیں یا AI ایپس بنانے کے بارے میں سوالات ہوں، تو MCP کے بارے میں گفتگو میں شامل ہوں۔ یہ ایک معاون کمیونٹی ہے جہاں سوالات کا خیر مقدم کیا جاتا ہے اور علم آزادانہ طور پر شیئر کیا جاتا ہے۔ - -[![مائیکروسافٹ فاؤنڈری ڈسکارڈ](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -اگر آپ کو پروڈکٹ کے بارے میں رائے دینی ہو یا ایپس بنانے کے دوران کوئی خرابی ہو تو یہاں جائیں: +اگر آپ کے پاس پروڈکٹ فیڈبیک یا تعمیر کے دوران غلطیاں ہوں تو یہاں جائیں: -[![مائیکروسافٹ فاؤنڈری ڈیولپر فورم](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**اعلانِ لاتعلقی**: -یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ +**دستخطی نوٹ**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے ترجمہ کی گئی ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں ہی معتبر ماخذ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم پر عائد نہیں ہوتی۔ \ No newline at end of file diff --git a/translations/vi/README.md b/translations/vi/README.md index 603dcc67c..3e6738e4d 100644 --- a/translations/vi/README.md +++ b/translations/vi/README.md @@ -1,213 +1,223 @@ -[![Giấy phép GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) -[![Người đóng góp GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) -[![Vấn đề GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) -[![Yêu cầu kéo GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) -[![Chào mừng PRs](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![Giấy phép GitHub](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![Người đóng góp GitHub](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![Vấn đề GitHub](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![Yêu cầu kéo GitHub](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![Chào mừng PRs](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Người theo dõi GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) -[![Forks GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) -[![Sao GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) +[![Người theo dõi GitHub](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![Forks GitHub](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![Sao GitHub](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) -### 🌐 Hỗ trợ đa ngôn ngữ +### 🌐 Hỗ trợ đa ngôn ngữ -#### Được hỗ trợ qua GitHub Action (Tự động & Luôn cập nhật) +#### Hỗ trợ qua GitHub Action (Tự động & Luôn cập nhật) - -[Tiếng Ả Rập](../ar/README.md) | [Tiếng Bengal](../bn/README.md) | [Tiếng Bulgaria](../bg/README.md) | [Tiếng Miến Điện (Myanmar)](../my/README.md) | [Tiếng Trung (Giản thể)](../zh/README.md) | [Tiếng Trung (Phồn thể, Hồng Kông)](../hk/README.md) | [Tiếng Trung (Phồn thể, Macau)](../mo/README.md) | [Tiếng Trung (Phồn thể, Đài Loan)](../tw/README.md) | [Tiếng Croatia](../hr/README.md) | [Tiếng Séc](../cs/README.md) | [Tiếng Đan Mạch](../da/README.md) | [Tiếng Hà Lan](../nl/README.md) | [Tiếng Estonia](../et/README.md) | [Tiếng Phần Lan](../fi/README.md) | [Tiếng Pháp](../fr/README.md) | [Tiếng Đức](../de/README.md) | [Tiếng Hy Lạp](../el/README.md) | [Tiếng Do Thái](../he/README.md) | [Tiếng Hindi](../hi/README.md) | [Tiếng Hungary](../hu/README.md) | [Tiếng Indonesia](../id/README.md) | [Tiếng Ý](../it/README.md) | [Tiếng Nhật](../ja/README.md) | [Tiếng Hàn](../ko/README.md) | [Tiếng Litva](../lt/README.md) | [Tiếng Mã Lai](../ms/README.md) | [Tiếng Marathi](../mr/README.md) | [Tiếng Nepal](../ne/README.md) | [Tiếng Pidgin Nigeria](../pcm/README.md) | [Tiếng Na Uy](../no/README.md) | [Tiếng Ba Tư (Farsi)](../fa/README.md) | [Tiếng Ba Lan](../pl/README.md) | [Tiếng Bồ Đào Nha (Brazil)](../br/README.md) | [Tiếng Bồ Đào Nha (Bồ Đào Nha)](../pt/README.md) | [Tiếng Punjab (Gurmukhi)](../pa/README.md) | [Tiếng Romania](../ro/README.md) | [Tiếng Nga](../ru/README.md) | [Tiếng Serbia (Cyrillic)](../sr/README.md) | [Tiếng Slovak](../sk/README.md) | [Tiếng Slovenia](../sl/README.md) | [Tiếng Tây Ban Nha](../es/README.md) | [Tiếng Swahili](../sw/README.md) | [Tiếng Thụy Điển](../sv/README.md) | [Tiếng Tagalog (Philippines)](../tl/README.md) | [Tiếng Tamil](../ta/README.md) | [Tiếng Thái](../th/README.md) | [Tiếng Thổ Nhĩ Kỳ](../tr/README.md) | [Tiếng Ukraina](../uk/README.md) | [Tiếng Urdu](../ur/README.md) | [Tiếng Việt](./README.md) - + +[Tiếng Ả Rập](../ar/README.md) | [Tiếng Bengal](../bn/README.md) | [Tiếng Bungari](../bg/README.md) | [Tiếng Miến Điện (Myanmar)](../my/README.md) | [Tiếng Trung (Giản thể)](../zh/README.md) | [Tiếng Trung (Phồn thể, Hồng Kông)](../hk/README.md) | [Tiếng Trung (Phồn thể, Macau)](../mo/README.md) | [Tiếng Trung (Phồn thể, Đài Loan)](../tw/README.md) | [Tiếng Croatia](../hr/README.md) | [Tiếng Séc](../cs/README.md) | [Tiếng Đan Mạch](../da/README.md) | [Tiếng Hà Lan](../nl/README.md) | [Tiếng Estonia](../et/README.md) | [Tiếng Phần Lan](../fi/README.md) | [Tiếng Pháp](../fr/README.md) | [Tiếng Đức](../de/README.md) | [Tiếng Hy Lạp](../el/README.md) | [Tiếng Do Thái](../he/README.md) | [Tiếng Hindi](../hi/README.md) | [Tiếng Hungary](../hu/README.md) | [Tiếng Indonesia](../id/README.md) | [Tiếng Ý](../it/README.md) | [Tiếng Nhật](../ja/README.md) | [Tiếng Kannada](../kn/README.md) | [Tiếng Hàn](../ko/README.md) | [Tiếng Litva](../lt/README.md) | [Tiếng Mã Lai](../ms/README.md) | [Tiếng Malayalam](../ml/README.md) | [Tiếng Marathi](../mr/README.md) | [Tiếng Nepal](../ne/README.md) | [Tiếng Pidgin Nigeria](../pcm/README.md) | [Tiếng Na Uy](../no/README.md) | [Tiếng Ba Tư (Farsi)](../fa/README.md) | [Tiếng Ba Lan](../pl/README.md) | [Tiếng Bồ Đào Nha (Brazil)](../br/README.md) | [Tiếng Bồ Đào Nha (Bồ Đào Nha)](../pt/README.md) | [Tiếng Punjabi (Gurmukhi)](../pa/README.md) | [Tiếng Romania](../ro/README.md) | [Tiếng Nga](../ru/README.md) | [Tiếng Serbia (Chữ Kirin)](../sr/README.md) | [Tiếng Slovakia](../sk/README.md) | [Tiếng Slovenia](../sl/README.md) | [Tiếng Tây Ban Nha](../es/README.md) | [Tiếng Swahili](../sw/README.md) | [Tiếng Thụy Điển](../sv/README.md) | [Tiếng Tagalog (Filipino)](../tl/README.md) | [Tiếng Tamil](../ta/README.md) | [Tiếng Telugu](../te/README.md) | [Tiếng Thái](../th/README.md) | [Tiếng Thổ Nhĩ Kỳ](../tr/README.md) | [Tiếng Ukraina](../uk/README.md) | [Tiếng Urdu](../ur/README.md) | [Tiếng Việt](./README.md) + -#### Tham gia cộng đồng của chúng tôi +#### Tham gia Cộng đồng của chúng tôi -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) + +Chúng tôi có một chuỗi học tập trên Discord về AI đang diễn ra, tìm hiểu thêm và tham gia cùng chúng tôi tại [Chuỗi học với AI](https://aka.ms/learnwithai/discord) từ ngày 18 - 30 tháng 9 năm 2025. Bạn sẽ nhận được các mẹo và thủ thuật sử dụng GitHub Copilot cho Khoa học Dữ liệu. -Chúng tôi đang tổ chức một chuỗi học tập với AI trên Discord, tìm hiểu thêm và tham gia tại [Learn with AI Series](https://aka.ms/learnwithai/discord) từ ngày 18 - 30 tháng 9, 2025. Bạn sẽ nhận được các mẹo và thủ thuật sử dụng GitHub Copilot cho Khoa học Dữ liệu. +![Chuỗi học với AI](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.vi.png) -![Chuỗi học với AI](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.vi.png) +# Học Máy cho Người Mới Bắt Đầu - Một Chương Trình Học -# Học máy cho người mới bắt đầu - Một chương trình học +> 🌍 Du lịch vòng quanh thế giới khi chúng ta khám phá Học Máy thông qua các nền văn hóa thế giới 🌍 -> 🌍 Du hành khắp thế giới khi chúng ta khám phá Học máy thông qua các nền văn hóa trên thế giới 🌍 +Các Nhà vận động Đám mây tại Microsoft vui mừng giới thiệu một chương trình học 12 tuần, 26 bài học về **Học Máy**. Trong chương trình này, bạn sẽ học về cái mà đôi khi được gọi là **học máy cổ điển**, chủ yếu sử dụng thư viện Scikit-learn và tránh học sâu, được đề cập trong chương trình [AI cho Người Mới Bắt Đầu](https://aka.ms/ai4beginners) của chúng tôi. Kết hợp các bài học này với chương trình ['Khoa học Dữ liệu cho Người Mới Bắt Đầu'](https://aka.ms/ds4beginners) của chúng tôi nữa nhé! -Nhóm Cloud Advocates tại Microsoft rất vui mừng giới thiệu một chương trình học kéo dài 12 tuần, gồm 26 bài học về **Học máy**. Trong chương trình này, bạn sẽ tìm hiểu về những gì đôi khi được gọi là **học máy cổ điển**, chủ yếu sử dụng thư viện Scikit-learn và tránh học sâu, nội dung được đề cập trong chương trình học [AI for Beginners](https://aka.ms/ai4beginners) của chúng tôi. Hãy kết hợp các bài học này với chương trình học ['Data Science for Beginners'](https://aka.ms/ds4beginners) của chúng tôi nhé! +Hãy cùng chúng tôi du lịch vòng quanh thế giới khi áp dụng các kỹ thuật cổ điển này vào dữ liệu từ nhiều khu vực trên thế giới. Mỗi bài học bao gồm các bài kiểm tra trước và sau bài học, hướng dẫn viết để hoàn thành bài học, một giải pháp, một bài tập, và nhiều hơn nữa. Phương pháp giảng dạy dựa trên dự án của chúng tôi cho phép bạn học trong khi xây dựng, một cách đã được chứng minh giúp kỹ năng mới "bám chắc". -Hãy cùng chúng tôi du hành khắp thế giới khi chúng tôi áp dụng các kỹ thuật cổ điển này vào dữ liệu từ nhiều khu vực trên thế giới. Mỗi bài học bao gồm các bài kiểm tra trước và sau bài học, hướng dẫn viết để hoàn thành bài học, giải pháp, bài tập và nhiều hơn nữa. Phương pháp học dựa trên dự án của chúng tôi cho phép bạn học trong khi xây dựng, một cách đã được chứng minh để các kỹ năng mới "bám rễ". +**✍️ Xin chân thành cảm ơn các tác giả của chúng tôi** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu và Amy Boyd -**✍️ Chân thành cảm ơn các tác giả** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu và Amy Boyd +**🎨 Cảm ơn các họa sĩ minh họa** Tomomi Imura, Dasani Madipalli, và Jen Looper -**🎨 Cảm ơn các họa sĩ minh họa** Tomomi Imura, Dasani Madipalli, và Jen Looper +**🙏 Cảm ơn đặc biệt 🙏 các tác giả, người đánh giá và đóng góp nội dung là Đại sứ Sinh viên Microsoft**, đặc biệt là Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, và Snigdha Agarwal -**🙏 Đặc biệt cảm ơn 🙏 các tác giả, người đánh giá và người đóng góp nội dung là Đại sứ Sinh viên Microsoft**, đặc biệt là Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, và Snigdha Agarwal +**🤩 Cảm ơn thêm các Đại sứ Sinh viên Microsoft Eric Wanjau, Jasleen Sondhi, và Vidushi Gupta cho các bài học R của chúng tôi!** -**🤩 Cảm ơn thêm Đại sứ Sinh viên Microsoft Eric Wanjau, Jasleen Sondhi, và Vidushi Gupta vì các bài học R của chúng tôi!** +# Bắt đầu -# Bắt đầu +Thực hiện các bước sau: +1. **Fork Kho Lưu trữ**: Nhấn nút "Fork" ở góc trên bên phải của trang này. +2. **Clone Kho Lưu trữ**: `git clone https://github.com/microsoft/ML-For-Beginners.git` -Thực hiện các bước sau: -1. **Fork kho lưu trữ**: Nhấp vào nút "Fork" ở góc trên bên phải của trang này. -2. **Clone kho lưu trữ**: `git clone https://github.com/microsoft/ML-For-Beginners.git` +> [tìm tất cả tài nguyên bổ sung cho khóa học này trong bộ sưu tập Microsoft Learn của chúng tôi](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> [tìm tất cả tài nguyên bổ sung cho khóa học này trong bộ sưu tập Microsoft Learn của chúng tôi](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +> 🔧 **Cần giúp đỡ?** Xem [Hướng dẫn Khắc phục sự cố](TROUBLESHOOTING.md) của chúng tôi để tìm giải pháp cho các vấn đề phổ biến về cài đặt, thiết lập và chạy bài học. -> 🔧 **Cần trợ giúp?** Kiểm tra [Hướng dẫn khắc phục sự cố](TROUBLESHOOTING.md) của chúng tôi để tìm giải pháp cho các vấn đề phổ biến với cài đặt, thiết lập và chạy bài học. -**[Sinh viên](https://aka.ms/student-page)**, để sử dụng chương trình học này, hãy fork toàn bộ repo vào tài khoản GitHub của bạn và hoàn thành các bài tập một mình hoặc cùng nhóm: +**[Học sinh](https://aka.ms/student-page)**, để sử dụng chương trình học này, hãy fork toàn bộ repo vào tài khoản GitHub của bạn và hoàn thành các bài tập một mình hoặc theo nhóm: -- Bắt đầu với bài kiểm tra trước bài giảng. -- Đọc bài giảng và hoàn thành các hoạt động, tạm dừng và suy ngẫm tại mỗi phần kiểm tra kiến thức. -- Cố gắng tạo các dự án bằng cách hiểu bài học thay vì chạy mã giải pháp; tuy nhiên mã đó có sẵn trong thư mục `/solution` trong mỗi bài học dựa trên dự án. -- Làm bài kiểm tra sau bài giảng. -- Hoàn thành thử thách. -- Hoàn thành bài tập. -- Sau khi hoàn thành một nhóm bài học, hãy truy cập [Bảng thảo luận](https://github.com/microsoft/ML-For-Beginners/discussions) và "học to" bằng cách điền vào rubric PAT phù hợp. Một 'PAT' là Công cụ Đánh giá Tiến độ, một rubric bạn điền để nâng cao việc học của mình. Bạn cũng có thể phản hồi các PAT khác để chúng ta cùng học hỏi. +- Bắt đầu với bài kiểm tra trước bài giảng. +- Đọc bài giảng và hoàn thành các hoạt động, tạm dừng và suy ngẫm tại mỗi điểm kiểm tra kiến thức. +- Cố gắng tạo các dự án bằng cách hiểu bài học thay vì chạy mã giải pháp; tuy nhiên mã đó có sẵn trong các thư mục `/solution` trong mỗi bài học theo dự án. +- Làm bài kiểm tra sau bài giảng. +- Hoàn thành thử thách. +- Hoàn thành bài tập. +- Sau khi hoàn thành một nhóm bài học, hãy truy cập [Bảng Thảo luận](https://github.com/microsoft/ML-For-Beginners/discussions) và "học cùng nhau" bằng cách điền vào bảng đánh giá PAT phù hợp. 'PAT' là Công cụ Đánh giá Tiến độ mà bạn điền để thúc đẩy việc học của mình. Bạn cũng có thể phản hồi các PAT khác để chúng ta cùng học. -> Để học thêm, chúng tôi khuyến nghị theo dõi các module và lộ trình học [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). +> Để học thêm, chúng tôi khuyên bạn theo dõi các mô-đun và lộ trình học tập [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott). -**Giáo viên**, chúng tôi đã [bao gồm một số gợi ý](for-teachers.md) về cách sử dụng chương trình học này. +**Giáo viên**, chúng tôi đã [bao gồm một số gợi ý](for-teachers.md) về cách sử dụng chương trình học này. --- -## Video hướng dẫn +## Video hướng dẫn -Một số bài học có sẵn dưới dạng video ngắn. Bạn có thể tìm thấy tất cả các video này trong các bài học hoặc trên [danh sách phát ML for Beginners trên kênh YouTube Microsoft Developer](https://aka.ms/ml-beginners-videos) bằng cách nhấp vào hình ảnh dưới đây. +Một số bài học có sẵn dưới dạng video ngắn. Bạn có thể tìm tất cả các video này ngay trong bài học, hoặc trên [danh sách phát ML for Beginners trên kênh Microsoft Developer YouTube](https://aka.ms/ml-beginners-videos) bằng cách nhấp vào hình ảnh bên dưới. -[![Biểu ngữ ML for beginners](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.vi.png)](https://aka.ms/ml-beginners-videos) +[![Biểu ngữ ML cho người mới bắt đầu](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.vi.png)](https://aka.ms/ml-beginners-videos) --- -## Gặp gỡ đội ngũ +## Gặp gỡ Đội ngũ -[![Video giới thiệu](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Video quảng bá](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif bởi** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**Gif bởi** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) -> 🎥 Nhấp vào hình ảnh trên để xem video về dự án và những người đã tạo ra nó! +> 🎥 Nhấp vào hình ảnh trên để xem video về dự án và những người đã tạo ra nó! --- -## Phương pháp sư phạm +## Phương pháp giảng dạy -Chúng tôi đã chọn hai nguyên tắc sư phạm khi xây dựng chương trình học này: đảm bảo rằng nó dựa trên **dự án thực hành** và bao gồm **các bài kiểm tra thường xuyên**. Ngoài ra, chương trình học này có một **chủ đề chung** để tạo sự gắn kết. +Chúng tôi đã chọn hai nguyên tắc giảng dạy khi xây dựng chương trình này: đảm bảo nó là dựa trên **dự án thực hành** và bao gồm **các bài kiểm tra thường xuyên**. Ngoài ra, chương trình này có một **chủ đề chung** để tạo sự liên kết. -Bằng cách đảm bảo rằng nội dung phù hợp với các dự án, quá trình học trở nên hấp dẫn hơn cho học sinh và khả năng ghi nhớ các khái niệm sẽ được tăng cường. Ngoài ra, một bài kiểm tra không áp lực trước lớp sẽ định hướng ý định của học sinh đối với việc học một chủ đề, trong khi một bài kiểm tra thứ hai sau lớp đảm bảo ghi nhớ thêm. Chương trình học này được thiết kế để linh hoạt và thú vị, có thể học toàn bộ hoặc một phần. Các dự án bắt đầu từ nhỏ và trở nên phức tạp hơn vào cuối chu kỳ 12 tuần. Chương trình học này cũng bao gồm một phần phụ về các ứng dụng thực tế của ML, có thể được sử dụng như điểm cộng thêm hoặc làm cơ sở cho các cuộc thảo luận. +Bằng cách đảm bảo nội dung phù hợp với các dự án, quá trình học trở nên hấp dẫn hơn với học sinh và tăng khả năng ghi nhớ các khái niệm. Thêm vào đó, một bài kiểm tra nhẹ nhàng trước lớp giúp học sinh định hướng học tập, trong khi bài kiểm tra thứ hai sau lớp giúp củng cố kiến thức. Chương trình này được thiết kế linh hoạt và vui nhộn, có thể học toàn bộ hoặc từng phần. Các dự án bắt đầu nhỏ và trở nên phức tạp hơn vào cuối chu kỳ 12 tuần. Chương trình cũng bao gồm phần hậu ký về các ứng dụng thực tế của ML, có thể dùng làm điểm cộng hoặc làm cơ sở thảo luận. -> Tìm [Quy tắc ứng xử](CODE_OF_CONDUCT.md), [Hướng dẫn đóng góp](CONTRIBUTING.md), [Dịch thuật](TRANSLATIONS.md), và [Khắc phục sự cố](TROUBLESHOOTING.md) của chúng tôi. Chúng tôi hoan nghênh phản hồi mang tính xây dựng của bạn! +> Tìm các hướng dẫn [Quy tắc ứng xử](CODE_OF_CONDUCT.md), [Đóng góp](CONTRIBUTING.md), [Dịch thuật](TRANSLATIONS.md), và [Khắc phục sự cố](TROUBLESHOOTING.md). Chúng tôi hoan nghênh phản hồi xây dựng của bạn! -## Mỗi bài học bao gồm +## Mỗi bài học bao gồm -- Sketchnote tùy chọn -- Video bổ sung tùy chọn -- Video hướng dẫn (chỉ một số bài học) -- [Bài kiểm tra khởi động trước bài giảng](https://ff-quizzes.netlify.app/en/ml/) -- Bài học viết -- Đối với các bài học dựa trên dự án, hướng dẫn từng bước về cách xây dựng dự án -- Kiểm tra kiến thức -- Một thử thách -- Đọc thêm tài liệu -- Bài tập -- [Bài kiểm tra sau bài giảng](https://ff-quizzes.netlify.app/en/ml/) +- ghi chú phác thảo tùy chọn +- video bổ sung tùy chọn +- video hướng dẫn (chỉ một số bài học) +- [bài kiểm tra khởi động trước bài giảng](https://ff-quizzes.netlify.app/en/ml/) +- bài học viết +- đối với bài học dựa trên dự án, hướng dẫn từng bước cách xây dựng dự án +- kiểm tra kiến thức +- một thử thách +- đọc thêm bổ sung +- bài tập +- [bài kiểm tra sau bài giảng](https://ff-quizzes.netlify.app/en/ml/) -> **Lưu ý về ngôn ngữ**: Các bài học này chủ yếu được viết bằng Python, nhưng nhiều bài cũng có sẵn bằng R. Để hoàn thành một bài học R, hãy vào thư mục `/solution` và tìm các bài học R. Chúng bao gồm phần mở rộng .rmd đại diện cho tệp **R Markdown**, có thể được định nghĩa đơn giản là sự kết hợp của `code chunks` (của R hoặc các ngôn ngữ khác) và `YAML header` (hướng dẫn cách định dạng đầu ra như PDF) trong một `tài liệu Markdown`. Do đó, nó phục vụ như một khung tác giả mẫu mực cho khoa học dữ liệu vì nó cho phép bạn kết hợp mã, kết quả đầu ra và suy nghĩ của mình bằng cách viết chúng trong Markdown. Hơn nữa, các tài liệu R Markdown có thể được xuất ra các định dạng như PDF, HTML hoặc Word. +> **Lưu ý về ngôn ngữ**: Các bài học này chủ yếu viết bằng Python, nhưng nhiều bài cũng có sẵn bằng R. Để hoàn thành bài học R, hãy vào thư mục `/solution` và tìm các bài học R. Chúng bao gồm phần mở rộng .rmd đại diện cho một tệp **R Markdown** có thể được định nghĩa đơn giản là nhúng các `đoạn mã` (của R hoặc các ngôn ngữ khác) và một `đầu YAML` (hướng dẫn cách định dạng đầu ra như PDF) trong một `tài liệu Markdown`. Do đó, nó là một khung tác giả mẫu cho khoa học dữ liệu vì cho phép bạn kết hợp mã, đầu ra và suy nghĩ của mình bằng cách viết chúng trong Markdown. Hơn nữa, tài liệu R Markdown có thể được xuất ra các định dạng như PDF, HTML hoặc Word. -> **Lưu ý về bài kiểm tra**: Tất cả các bài kiểm tra được chứa trong [thư mục Quiz App](../../quiz-app), với tổng cộng 52 bài kiểm tra, mỗi bài gồm ba câu hỏi. Chúng được liên kết từ trong các bài học nhưng ứng dụng kiểm tra có thể được chạy cục bộ; làm theo hướng dẫn trong thư mục `quiz-app` để lưu trữ cục bộ hoặc triển khai lên Azure. +> **Lưu ý về các bài kiểm tra**: Tất cả các bài kiểm tra đều nằm trong [thư mục Ứng dụng Quiz](../../quiz-app), tổng cộng 52 bài kiểm tra với mỗi bài gồm ba câu hỏi. Chúng được liên kết trong các bài học nhưng ứng dụng quiz có thể chạy cục bộ; làm theo hướng dẫn trong thư mục `quiz-app` để lưu trữ cục bộ hoặc triển khai lên Azure. | Số bài học | Chủ đề | Nhóm bài học | Mục tiêu học tập | Bài học liên kết | Tác giả | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | Giới thiệu về học máy | [Giới thiệu](1-Introduction/README.md) | Tìm hiểu các khái niệm cơ bản về học máy | [Bài học](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | Lịch sử của học máy | [Giới thiệu](1-Introduction/README.md) | Tìm hiểu lịch sử đằng sau lĩnh vực này | [Bài học](1-Introduction/2-history-of-ML/README.md) | Jen và Amy | -| 03 | Sự công bằng và học máy | [Giới thiệu](1-Introduction/README.md) | Những vấn đề triết học quan trọng về sự công bằng mà học viên cần cân nhắc khi xây dựng và áp dụng các mô hình học máy là gì? | [Bài học](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Các kỹ thuật trong học máy | [Giới thiệu](1-Introduction/README.md) | Các nhà nghiên cứu học máy sử dụng những kỹ thuật nào để xây dựng các mô hình học máy? | [Bài học](1-Introduction/4-techniques-of-ML/README.md) | Chris và Jen | -| 05 | Giới thiệu về hồi quy | [Hồi quy](2-Regression/README.md) | Bắt đầu với Python và Scikit-learn để xây dựng các mô hình hồi quy | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | -| 06 | Giá bí ngô Bắc Mỹ 🎃 | [Hồi quy](2-Regression/README.md) | Trực quan hóa và làm sạch dữ liệu để chuẩn bị cho học máy | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | -| 07 | Giá bí ngô Bắc Mỹ 🎃 | [Hồi quy](2-Regression/README.md) | Xây dựng các mô hình hồi quy tuyến tính và hồi quy đa thức | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen và Dmitry • Eric Wanjau | -| 08 | Giá bí ngô Bắc Mỹ 🎃 | [Hồi quy](2-Regression/README.md) | Xây dựng mô hình hồi quy logistic | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | -| 09 | Ứng dụng web 🔌 | [Ứng dụng web](3-Web-App/README.md) | Xây dựng một ứng dụng web để sử dụng mô hình đã được huấn luyện | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Giới thiệu về phân loại | [Phân loại](4-Classification/README.md) | Làm sạch, chuẩn bị và trực quan hóa dữ liệu; giới thiệu về phân loại | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen và Cassie • Eric Wanjau | -| 11 | Các món ăn ngon của châu Á và Ấn Độ 🍜 | [Phân loại](4-Classification/README.md) | Giới thiệu về các bộ phân loại | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen và Cassie • Eric Wanjau | -| 12 | Các món ăn ngon của châu Á và Ấn Độ 🍜 | [Phân loại](4-Classification/README.md) | Nhiều bộ phân loại hơn | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen và Cassie • Eric Wanjau | -| 13 | Các món ăn ngon của châu Á và Ấn Độ 🍜 | [Phân loại](4-Classification/README.md) | Xây dựng một ứng dụng web gợi ý sử dụng mô hình của bạn | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | Giới thiệu về phân cụm | [Phân cụm](5-Clustering/README.md) | Làm sạch, chuẩn bị và trực quan hóa dữ liệu; giới thiệu về phân cụm | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | -| 15 | Khám phá sở thích âm nhạc Nigeria 🎧 | [Phân cụm](5-Clustering/README.md) | Khám phá phương pháp phân cụm 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 | Giới thiệu về xử lý ngôn ngữ tự nhiên ☕️ | [Xử lý ngôn ngữ tự nhiên](6-NLP/README.md) | Tìm hiểu những điều cơ bản về NLP bằng cách xây dựng một bot đơn giản | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Các nhiệm vụ NLP phổ biến ☕️ | [Xử lý ngôn ngữ tự nhiên](6-NLP/README.md) | Nâng cao kiến thức về NLP bằng cách hiểu các nhiệm vụ phổ biến khi xử lý cấu trúc ngôn ngữ | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Dịch thuật và phân tích cảm xúc ♥️ | [Xử lý ngôn ngữ tự nhiên](6-NLP/README.md) | Dịch thuật và phân tích cảm xúc với Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Các khách sạn lãng mạn ở châu Âu ♥️ | [Xử lý ngôn ngữ tự nhiên](6-NLP/README.md) | Phân tích cảm xúc với đánh giá khách sạn 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Các khách sạn lãng mạn ở châu Âu ♥️ | [Xử lý ngôn ngữ tự nhiên](6-NLP/README.md) | Phân tích cảm xúc với đánh giá khách sạn 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Giới thiệu về dự báo chuỗi thời gian | [Chuỗi thời gian](7-TimeSeries/README.md) | Giới thiệu về dự báo chuỗi thời gian | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Sử dụng năng lượng thế giới ⚡️ - dự báo chuỗi thời gian với ARIMA | [Chuỗi thời gian](7-TimeSeries/README.md) | Dự báo chuỗi thời gian với ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ Sử dụng năng lượng thế giới ⚡️ - dự báo chuỗi thời gian với SVR | [Chuỗi thời gian](7-TimeSeries/README.md) | Dự báo chuỗi thời gian với Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | Giới thiệu về học tăng cường | [Học tăng cường](8-Reinforcement/README.md) | Giới thiệu về học tăng cường với Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | Giúp Peter tránh xa con sói! 🐺 | [Học tăng cường](8-Reinforcement/README.md) | Học tăng cường với Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Phụ lục | Các tình huống và ứng dụng ML thực tế | [ML trong thực tế](9-Real-World/README.md) | Các ứng dụng thực tế thú vị và tiết lộ của học máy cổ điển | [Bài học](9-Real-World/1-Applications/README.md) | Team | -| Phụ lục | Gỡ lỗi mô hình trong ML bằng bảng điều khiển RAI | [ML trong thực tế](9-Real-World/README.md) | Gỡ lỗi mô hình trong học máy bằng các thành phần bảng điều khiển AI có trách nhiệm | [Bài học](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | - -> [tìm tất cả tài nguyên bổ sung cho khóa học này trong bộ sưu tập Microsoft Learn của chúng tôi](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +| 01 | Giới thiệu về học máy | [Introduction](1-Introduction/README.md) | Tìm hiểu các khái niệm cơ bản đằng sau học máy | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | Lịch sử của học máy | [Introduction](1-Introduction/README.md) | Tìm hiểu lịch sử nền tảng của lĩnh vực này | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy | +| 03 | Công bằng và học máy | [Introduction](1-Introduction/README.md) | Những vấn đề triết học quan trọng về công bằng mà học viên nên cân nhắc khi xây dựng và áp dụng các mô hình ML là gì? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Kỹ thuật cho học máy | [Introduction](1-Introduction/README.md) | Các nhà nghiên cứu ML sử dụng những kỹ thuật nào để xây dựng mô hình ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen | +| 05 | Giới thiệu về hồi quy | [Regression](2-Regression/README.md) | Bắt đầu với Python và Scikit-learn cho các mô hình hồi quy | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau | +| 06 | Giá bí ngô Bắc Mỹ 🎃 | [Regression](2-Regression/README.md) | Trực quan hóa và làm sạch dữ liệu để chuẩn bị cho ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau | +| 07 | Giá bí ngô Bắc Mỹ 🎃 | [Regression](2-Regression/README.md) | Xây dựng các mô hình hồi quy tuyến tính và đa thức | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau | +| 08 | Giá bí ngô Bắc Mỹ 🎃 | [Regression](2-Regression/README.md) | Xây dựng mô hình hồi quy logistic | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau | +| 09 | Ứng dụng web 🔌 | [Web App](3-Web-App/README.md) | Xây dựng một ứng dụng web để sử dụng mô hình đã huấn luyện | [Python](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Giới thiệu về phân loại | [Classification](4-Classification/README.md) | Làm sạch, chuẩn bị và trực quan hóa dữ liệu; giới thiệu về phân loại | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau | +| 11 | Ẩm thực châu Á và Ấn Độ ngon miệng 🍜 | [Classification](4-Classification/README.md) | Giới thiệu về các bộ phân loại | [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 | Ẩm thực châu Á và Ấn Độ ngon miệng 🍜 | [Classification](4-Classification/README.md) | Thêm các bộ phân loại | [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 | Ẩm thực châu Á và Ấn Độ ngon miệng 🍜 | [Classification](4-Classification/README.md) | Xây dựng ứng dụng web đề xuất sử dụng mô hình của bạn | [Python](4-Classification/4-Applied/README.md) | Jen | +| 14 | Giới thiệu về phân cụm | [Clustering](5-Clustering/README.md) | Làm sạch, chuẩn bị và trực quan hóa dữ liệu; Giới thiệu về phân cụm | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau | +| 15 | Khám phá sở thích âm nhạc Nigeria 🎧 | [Clustering](5-Clustering/README.md) | Khám phá phương pháp phân cụm 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 | Giới thiệu về xử lý ngôn ngữ tự nhiên ☕️ | [Natural language processing](6-NLP/README.md) | Tìm hiểu những kiến thức cơ bản về NLP bằng cách xây dựng một bot đơn giản | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Các tác vụ NLP phổ biến ☕️ | [Natural language processing](6-NLP/README.md) | Nâng cao kiến thức NLP của bạn bằng cách hiểu các tác vụ phổ biến cần thiết khi xử lý cấu trúc ngôn ngữ | [Python](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Dịch thuật và phân tích cảm xúc ♥️ | [Natural language processing](6-NLP/README.md) | Dịch thuật và phân tích cảm xúc với Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Khách sạn lãng mạn ở châu Âu ♥️ | [Natural language processing](6-NLP/README.md) | Phân tích cảm xúc với đánh giá khách sạn 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Khách sạn lãng mạn ở châu Âu ♥️ | [Natural language processing](6-NLP/README.md) | Phân tích cảm xúc với đánh giá khách sạn 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Giới thiệu về dự báo chuỗi thời gian | [Time series](7-TimeSeries/README.md) | Giới thiệu về dự báo chuỗi thời gian | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Sử dụng điện năng thế giới ⚡️ - dự báo chuỗi thời gian với ARIMA | [Time series](7-TimeSeries/README.md) | Dự báo chuỗi thời gian với ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | ⚡️ Sử dụng điện năng thế giới ⚡️ - dự báo chuỗi thời gian với SVR | [Time series](7-TimeSeries/README.md) | Dự báo chuỗi thời gian với Hồi quy Vector Hỗ trợ | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | +| 24 | Giới thiệu về học tăng cường | [Reinforcement learning](8-Reinforcement/README.md) | Giới thiệu về học tăng cường với Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | Giúp Peter tránh con sói! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Học tăng cường Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Các kịch bản và ứng dụng ML trong thế giới thực | [ML in the Wild](9-Real-World/README.md) | Các ứng dụng thú vị và tiết lộ trong thế giới thực của ML cổ điển | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| Postscript | Gỡ lỗi mô hình trong ML sử dụng bảng điều khiển RAI | [ML in the Wild](9-Real-World/README.md) | Gỡ lỗi mô hình trong học máy sử dụng các thành phần bảng điều khiển Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu | + +> [tìm tất cả các tài nguyên bổ sung cho khóa học này trong bộ sưu tập Microsoft Learn của chúng tôi](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) ## Truy cập ngoại tuyến -Bạn có thể chạy tài liệu này ngoại tuyến bằng cách sử dụng [Docsify](https://docsify.js.org/#/). Fork repo này, [cài đặt Docsify](https://docsify.js.org/#/quickstart) trên máy của bạn, sau đó trong thư mục gốc của repo này, gõ `docsify serve`. Trang web sẽ được phục vụ trên cổng 3000 trên localhost của bạn: `localhost:3000`. +Bạn có thể chạy tài liệu này ngoại tuyến bằng cách sử dụng [Docsify](https://docsify.js.org/#/). Fork repo này, [cài đặt Docsify](https://docsify.js.org/#/quickstart) trên máy cục bộ của bạn, sau đó trong thư mục gốc của repo này, gõ `docsify serve`. Trang web sẽ được phục vụ trên cổng 3000 trên localhost của bạn: `localhost:3000`. -## PDFs +## PDF -Tìm tệp pdf của giáo trình với các liên kết [tại đây](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). +Tìm file pdf của chương trình học với các liên kết [tại đây](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf). -## 🎒 Các khóa học khác -Nhóm của chúng tôi sản xuất các khóa học khác! Hãy xem: +## 🎒 Các khóa học khác -### Azure / Edge / MCP / Agents -[![AZD cho người mới bắt đầu](https://img.shields.io/badge/AZD%20cho%20người%20mới%20bắt%20đầu-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI cho người mới bắt đầu](https://img.shields.io/badge/Edge%20AI%20cho%20người%20mới%20bắt%20đầu-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP cho người mới bắt đầu](https://img.shields.io/badge/MCP%20cho%20người%20mới%20bắt%20đầu-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI Agents cho người mới bắt đầu](https://img.shields.io/badge/AI%20Agents%20cho%20người%20mới%20bắt%20đầu-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +Nhóm của chúng tôi còn sản xuất các khóa học khác! Hãy xem: + + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Chuỗi Generative AI -[![Generative AI cho người mới bắt đầu](https://img.shields.io/badge/Generative%20AI%20cho%20người%20mới%20bắt%20đầu-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + +### Series AI Tạo sinh +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - -### Học tập cốt lõi -[![Học Máy cho Người Mới Bắt Đầu](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Khoa Học Dữ Liệu cho Người Mới Bắt Đầu](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![Trí Tuệ Nhân Tạo cho Người Mới Bắt Đầu](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![An Ninh Mạng cho Người Mới Bắt Đầu](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Phát Triển Web cho Người Mới Bắt Đầu](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT cho Người Mới Bắt Đầu](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Phát Triển XR cho Người Mới Bắt Đầu](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +### Học Tập Cốt Lõi +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Series Copilot +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Chuỗi Copilot -[![Copilot cho Lập Trình Đôi AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot cho C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Cuộc Phiêu Lưu Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) - -## Nhận Hỗ Trợ +## Nhận Trợ Giúp -Nếu bạn gặp khó khăn hoặc có bất kỳ câu hỏi nào về việc xây dựng ứng dụng AI, hãy tham gia cùng các học viên và nhà phát triển có kinh nghiệm trong các cuộc thảo luận về MCP. Đây là một cộng đồng hỗ trợ, nơi các câu hỏi được chào đón và kiến thức được chia sẻ tự do. +Nếu bạn bị mắc kẹt hoặc có bất kỳ câu hỏi nào về việc xây dựng ứng dụng AI. Hãy tham gia cùng những người học khác và các nhà phát triển có kinh nghiệm trong các cuộc thảo luận về MCP. Đây là một cộng đồng hỗ trợ, nơi các câu hỏi được chào đón và kiến thức được chia sẻ một cách tự do. [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) Nếu bạn có phản hồi về sản phẩm hoặc gặp lỗi trong quá trình xây dựng, hãy truy cập: -[![Diễn Đàn Nhà Phát Triển Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- -**Tuyên bố miễn trừ trách nhiệm**: -Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. +**Tuyên bố từ chối trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ gốc của nó nên được coi là nguồn chính xác và đáng tin cậy. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp do con người thực hiện. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/zh/README.md b/translations/zh/README.md index 7dccc183a..0963d0c8c 100644 --- a/translations/zh/README.md +++ b/translations/zh/README.md @@ -1,8 +1,8 @@ -[阿拉伯语](../ar/README.md) | [孟加拉语](../bn/README.md) | [保加利亚语](../bg/README.md) | [缅甸语](../my/README.md) | [中文(简体)](./README.md) | [中文(繁体,香港)](../hk/README.md) | [中文(繁体,澳门)](../mo/README.md) | [中文(繁体,台湾)](../tw/README.md) | [克罗地亚语](../hr/README.md) | [捷克语](../cs/README.md) | [丹麦语](../da/README.md) | [荷兰语](../nl/README.md) | [爱沙尼亚语](../et/README.md) | [芬兰语](../fi/README.md) | [法语](../fr/README.md) | [德语](../de/README.md) | [希腊语](../el/README.md) | [希伯来语](../he/README.md) | [印地语](../hi/README.md) | [匈牙利语](../hu/README.md) | [印尼语](../id/README.md) | [意大利语](../it/README.md) | [日语](../ja/README.md) | [韩语](../ko/README.md) | [立陶宛语](../lt/README.md) | [马来语](../ms/README.md) | [马拉地语](../mr/README.md) | [尼泊尔语](../ne/README.md) | [尼日利亚皮钦语](../pcm/README.md) | [挪威语](../no/README.md) | [波斯语(法尔西语)](../fa/README.md) | [波兰语](../pl/README.md) | [葡萄牙语(巴西)](../br/README.md) | [葡萄牙语(葡萄牙)](../pt/README.md) | [旁遮普语(古木基文)](../pa/README.md) | [罗马尼亚语](../ro/README.md) | [俄语](../ru/README.md) | [塞尔维亚语(西里尔文)](../sr/README.md) | [斯洛伐克语](../sk/README.md) | [斯洛文尼亚语](../sl/README.md) | [西班牙语](../es/README.md) | [斯瓦希里语](../sw/README.md) | [瑞典语](../sv/README.md) | [他加禄语(菲律宾语)](../tl/README.md) | [泰米尔语](../ta/README.md) | [泰语](../th/README.md) | [土耳其语](../tr/README.md) | [乌克兰语](../uk/README.md) | [乌尔都语](../ur/README.md) | [越南语](../vi/README.md) +[阿拉伯语](../ar/README.md) | [孟加拉语](../bn/README.md) | [保加利亚语](../bg/README.md) | [缅甸语 (Myanmar)](../my/README.md) | [中文(简体)](./README.md) | [中文(繁体,香港)](../hk/README.md) | [中文(繁体,澳门)](../mo/README.md) | [中文(繁体,台湾)](../tw/README.md) | [克罗地亚语](../hr/README.md) | [捷克语](../cs/README.md) | [丹麦语](../da/README.md) | [荷兰语](../nl/README.md) | [爱沙尼亚语](../et/README.md) | [芬兰语](../fi/README.md) | [法语](../fr/README.md) | [德语](../de/README.md) | [希腊语](../el/README.md) | [希伯来语](../he/README.md) | [印地语](../hi/README.md) | [匈牙利语](../hu/README.md) | [印度尼西亚语](../id/README.md) | [意大利语](../it/README.md) | [日语](../ja/README.md) | [卡纳达语](../kn/README.md) | [韩语](../ko/README.md) | [立陶宛语](../lt/README.md) | [马来语](../ms/README.md) | [马拉雅拉姆语](../ml/README.md) | [马拉地语](../mr/README.md) | [尼泊尔语](../ne/README.md) | [尼日利亚皮钦语](../pcm/README.md) | [挪威语](../no/README.md) | [波斯语 (法尔西)](../fa/README.md) | [波兰语](../pl/README.md) | [葡萄牙语(巴西)](../br/README.md) | [葡萄牙语(葡萄牙)](../pt/README.md) | [旁遮普语(古鲁姆奇)](../pa/README.md) | [罗马尼亚语](../ro/README.md) | [俄语](../ru/README.md) | [塞尔维亚语(西里尔字母)](../sr/README.md) | [斯洛伐克语](../sk/README.md) | [斯洛文尼亚语](../sl/README.md) | [西班牙语](../es/README.md) | [斯瓦希里语](../sw/README.md) | [瑞典语](../sv/README.md) | [他加禄语(菲律宾语)](../tl/README.md) | [泰米尔语](../ta/README.md) | [泰卢固语](../te/README.md) | [泰语](../th/README.md) | [土耳其语](../tr/README.md) | [乌克兰语](../uk/README.md) | [乌尔都语](../ur/README.md) | [越南语](../vi/README.md) #### 加入我们的社区 [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -我们正在进行一个关于 AI 学习的 Discord 系列活动,了解更多并加入我们 [AI 学习系列](https://aka.ms/learnwithai/discord),活动时间为 2025 年 9 月 18 日至 30 日。您将学习使用 GitHub Copilot 进行数据科学的技巧和方法。 +我们正在进行一个 Discord 的 AI 学习系列,了解更多并加入我们,时间为 2025 年 9 月 18 日至 30 日,访问 [Learn with AI Series](https://aka.ms/learnwithai/discord)。您将获得使用 GitHub Copilot 进行数据科学的技巧和窍门。 -![AI 学习系列](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.zh.png) +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.zh.png) -# 初学者的机器学习课程 +# 面向初学者的机器学习课程 -> 🌍 跟随我们环游世界,通过世界文化学习机器学习 🌍 +> 🌍 通过世界文化探索机器学习,环游世界 🌍 -微软的云倡导者团队很高兴为大家提供一个为期 12 周、共 26 节课的机器学习课程。在这个课程中,您将学习一些被称为“经典机器学习”的内容,主要使用 Scikit-learn 库,并避免涉及深度学习(深度学习内容在我们的 [AI 初学者课程](https://aka.ms/ai4beginners) 中有详细介绍)。同时,您也可以将这些课程与我们的 ['数据科学初学者课程'](https://aka.ms/ds4beginners) 搭配学习! +微软的云倡导者很高兴提供一个为期 12 周、包含 26 课的完整课程,专注于**机器学习**。在本课程中,您将学习有时称为**经典机器学习**的内容,主要使用 Scikit-learn 库,避免深度学习,后者在我们的[AI 初学者课程](https://aka.ms/ai4beginners)中涵盖。您还可以将这些课程与我们的[数据科学初学者课程](https://aka.ms/ds4beginners)配合学习。 -跟随我们环游世界,应用这些经典技术处理来自世界各地的数据。每节课都包括课前和课后测验、完成课程的书面指导、解决方案、作业等。我们的项目式教学法让您在实践中学习,这是一种被证明能让新技能更牢固掌握的方法。 +跟随我们环游世界,将这些经典技术应用于来自世界各地的数据。每节课包括课前和课后测验、完成课程的书面指导、解决方案、作业等。我们的项目驱动教学法让您在构建中学习,这是一种被证明能让新技能“扎根”的方法。 -**✍️ 特别感谢我们的作者** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu 和 Amy Boyd +**✍️ 衷心感谢我们的作者** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu 和 Amy Boyd -**🎨 同样感谢我们的插画师** Tomomi Imura, Dasani Madipalli 和 Jen Looper +**🎨 同时感谢我们的插画师** Tomomi Imura、Dasani Madipalli 和 Jen Looper -**🙏 特别感谢 🙏 我们的微软学生大使作者、审阅者和内容贡献者**,尤其是 Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila 和 Snigdha Agarwal +**🙏 特别感谢 🙏 我们的微软学生大使作者、审阅者和内容贡献者**,特别是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila 和 Snigdha Agarwal -**🤩 额外感谢微软学生大使 Eric Wanjau, Jasleen Sondhi 和 Vidushi Gupta 为我们提供的 R 课程!** +**🤩 额外感谢微软学生大使 Eric Wanjau、Jasleen Sondhi 和 Vidushi Gupta 为我们的 R 课程贡献!** -# 开始学习 +# 入门指南 -按照以下步骤: -1. **Fork 仓库**:点击页面右上角的 "Fork" 按钮。 +请按照以下步骤操作: +1. **Fork 仓库**:点击本页右上角的“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) +> [在我们的 Microsoft Learn 集合中查找本课程的所有额外资源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) -> 🔧 **需要帮助?** 查看我们的 [故障排除指南](TROUBLESHOOTING.md),解决安装、设置和运行课程时的常见问题。 +> 🔧 **需要帮助?** 请查看我们的[故障排除指南](TROUBLESHOOTING.md),解决安装、设置和运行课程的常见问题。 -**[学生](https://aka.ms/student-page)**,要使用此课程,请将整个仓库 fork 到您的 GitHub 账户,并独立或与小组一起完成练习: +**[学生](https://aka.ms/student-page)**,要使用本课程,请将整个仓库 Fork 到您自己的 GitHub 账户,并独立或组队完成练习: - 从课前测验开始。 -- 阅读课程内容并完成活动,在每个知识检查点暂停并反思。 -- 尝试通过理解课程内容来创建项目,而不是直接运行解决方案代码;不过这些代码可以在每个项目课程的 `/solution` 文件夹中找到。 -- 完成课后测验。 +- 阅读课程并完成活动,在每个知识点检查时暂停并反思。 +- 尽量通过理解课程内容来创建项目,而不是直接运行解决方案代码;不过每个项目导向课程的 `/solution` 文件夹中都提供了解决方案代码。 +- 参加课后测验。 - 完成挑战。 - 完成作业。 -- 完成一组课程后,访问 [讨论板](https://github.com/microsoft/ML-For-Beginners/discussions),通过填写相应的 PAT 评分表“公开学习”。PAT 是一个进度评估工具,您可以通过填写评分表来进一步学习。您还可以对其他 PAT 进行互动,以便我们共同学习。 +- 完成一组课程后,访问[讨论区](https://github.com/microsoft/ML-For-Beginners/discussions),通过填写相应的 PAT 评分表“边学边说”。“PAT”是进度评估工具,是您填写以促进学习的评分表。您也可以对其他人的 PAT 进行反馈,共同学习。 -> 为了进一步学习,我们推荐您学习这些 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 模块和学习路径。 +> 进一步学习,我们推荐以下[Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott)模块和学习路径。 -**教师们**,我们提供了 [一些建议](for-teachers.md) 来帮助您使用此课程。 +**教师**,我们提供了[一些建议](for-teachers.md)供您参考如何使用本课程。 --- ## 视频讲解 -部分课程提供了短视频形式的讲解。您可以在课程中找到这些视频,或者点击下方图片访问 [微软开发者 YouTube 频道上的初学者机器学习播放列表](https://aka.ms/ml-beginners-videos)。 +部分课程提供短视频形式。您可以在课程中内嵌观看,或在微软开发者 YouTube 频道的[ML for Beginners 播放列表](https://aka.ms/ml-beginners-videos)中观看,点击下方图片即可。 -[![初学者机器学习横幅](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.zh.png)](https://aka.ms/ml-beginners-videos) +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.zh.png)](https://aka.ms/ml-beginners-videos) --- ## 团队介绍 -[![宣传视频](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) -**Gif 作者** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) +**动图作者** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) > 🎥 点击上方图片观看关于项目及其创建者的视频! @@ -95,119 +95,128 @@ CO_OP_TRANSLATOR_METADATA: ## 教学法 -在设计此课程时,我们选择了两个教学原则:确保课程是 **项目驱动** 的,并且包含 **频繁测验**。此外,这个课程还有一个共同的 **主题**,使其更具连贯性。 +我们在构建本课程时选择了两个教学原则:确保课程是动手的**项目驱动**,并且包含**频繁测验**。此外,本课程有一个统一的**主题**以增强连贯性。 -通过确保内容与项目相结合,学习过程变得更加有趣,学生对概念的记忆也会得到增强。此外,课前的低风险测验可以让学生专注于学习一个主题,而课后的第二次测验可以进一步巩固记忆。这个课程设计灵活有趣,可以整体学习,也可以部分学习。项目从简单开始,到 12 周课程结束时逐渐变得复杂。课程还包括一个关于机器学习实际应用的附录,可以作为额外学分或讨论的基础。 +通过确保内容与项目对齐,过程对学生更具吸引力,概念的记忆也会增强。此外,课前的低风险测验设定了学生学习主题的意图,课后的测验则确保进一步巩固。该课程设计灵活有趣,可整体或部分学习。项目从简单开始,至 12 周周期结束时逐渐复杂。本课程还包括关于机器学习实际应用的附录,可作为额外学分或讨论基础。 -> 查看我们的 [行为准则](CODE_OF_CONDUCT.md)、[贡献指南](CONTRIBUTING.md)、[翻译指南](TRANSLATIONS.md) 和 [故障排除指南](TROUBLESHOOTING.md)。我们欢迎您的建设性反馈! +> 请查阅我们的[行为准则](CODE_OF_CONDUCT.md)、[贡献指南](CONTRIBUTING.md)、[翻译指南](TRANSLATIONS.md)和[故障排除指南](TROUBLESHOOTING.md)。我们欢迎您的建设性反馈! -## 每节课包括 +## 每节课包含 - 可选的手绘笔记 - 可选的补充视频 - 视频讲解(部分课程) - [课前热身测验](https://ff-quizzes.netlify.app/en/ml/) - 书面课程内容 -- 对于项目课程,提供逐步指导如何完成项目 -- 知识检查 +- 针对项目课程,逐步指导如何构建项目 +- 知识点检查 - 挑战 -- 补充阅读材料 +- 补充阅读 - 作业 - [课后测验](https://ff-quizzes.netlify.app/en/ml/) -> **关于语言的说明**:这些课程主要使用 Python 编写,但许多课程也提供 R 版本。要完成 R 课程,请转到 `/solution` 文件夹,寻找 R 课程。这些课程文件扩展名为 .rmd,表示 **R Markdown** 文件,它可以简单定义为在 `Markdown 文档` 中嵌入 `代码块`(R 或其他语言)和 `YAML 头部`(指导如何格式化输出,如 PDF)。因此,它是数据科学的一个优秀创作框架,因为它允许您将代码、输出和想法结合起来,用 Markdown 记录下来。此外,R Markdown 文档可以渲染为 PDF、HTML 或 Word 等输出格式。 +> **关于语言的说明**:这些课程主要使用 Python 编写,但许多课程也提供 R 版本。要完成 R 课程,请前往 `/solution` 文件夹查找 R 课程。它们包含 .rmd 扩展名,代表**R Markdown**文件,简单来说就是在 Markdown 文档中嵌入 `代码块`(R 或其他语言)和 `YAML 头部`(指导如何格式化输出,如 PDF)。因此,它是数据科学的示范性创作框架,允许您将代码、输出和想法结合起来,并用 Markdown 书写。此外,R Markdown 文档可以渲染为 PDF、HTML 或 Word 等输出格式。 -> **关于测验的说明**:所有测验都包含在 [测验应用文件夹](../../quiz-app) 中,共有 52 个测验,每个测验包含三个问题。测验链接嵌入在课程中,但测验应用可以本地运行;请按照 `quiz-app` 文件夹中的说明进行本地托管或部署到 Azure。 +> **关于测验的说明**:所有测验均包含在[测验应用文件夹](../../quiz-app)中,共 52 个测验,每个测验包含三个问题。它们在课程中有链接,但测验应用也可以本地运行;请按照 `quiz-app` 文件夹中的说明在本地托管或部署到 Azure。 -| 课程编号 | 主题 | 课程分组 | 学习目标 | 课程链接 | 作者 | +| 课程编号 | 主题 | 课程分组 | 学习目标 | 关联课程 | 作者 | | :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | -| 01 | 机器学习简介 | [简介](1-Introduction/README.md) | 学习机器学习的基本概念 | [课程](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | 机器学习的历史 | [简介](1-Introduction/README.md) | 学习这一领域的历史背景 | [课程](1-Introduction/2-history-of-ML/README.md) | Jen 和 Amy | -| 03 | 公平性与机器学习 | [简介](1-Introduction/README.md) | 学生在构建和应用机器学习模型时需要考虑哪些重要的哲学问题? | [课程](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | 机器学习的技术 | [简介](1-Introduction/README.md) | 机器学习研究人员使用哪些技术来构建机器学习模型? | [课程](1-Introduction/4-techniques-of-ML/README.md) | Chris 和 Jen | -| 05 | 回归简介 | [回归](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 | 北美南瓜价格 🎃 | [回归](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 | 北美南瓜价格 🎃 | [回归](2-Regression/README.md) | 构建线性和多项式回归模型 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen 和 Dmitry • Eric Wanjau | -| 08 | 北美南瓜价格 🎃 | [回归](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 | 一个网络应用 🔌 | [网络应用](3-Web-App/README.md) | 构建一个网络应用来使用您训练的模型 | [Python](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | 分类简介 | [分类](4-Classification/README.md) | 清理、准备和可视化数据;分类简介 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen 和 Cassie • Eric Wanjau | -| 11 | 美味的亚洲和印度美食 🍜 | [分类](4-Classification/README.md) | 分类器简介 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen 和 Cassie • Eric Wanjau | -| 12 | 美味的亚洲和印度美食 🍜 | [分类](4-Classification/README.md) | 更多分类器 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen 和 Cassie • Eric Wanjau | -| 13 | 美味的亚洲和印度美食 🍜 | [分类](4-Classification/README.md) | 使用您的模型构建一个推荐网络应用 | [Python](4-Classification/4-Applied/README.md) | Jen | -| 14 | 聚类简介 | [聚类](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 | 探索尼日利亚的音乐品味 🎧 | [聚类](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 | 自然语言处理简介 ☕️ | [自然语言处理](6-NLP/README.md) | 通过构建一个简单的机器人学习自然语言处理的基础知识 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | 常见的自然语言处理任务 ☕️ | [自然语言处理](6-NLP/README.md) | 通过理解处理语言结构时所需的常见任务加深您的自然语言处理知识 | [Python](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | 翻译和情感分析 ♥️ | [自然语言处理](6-NLP/README.md) | 使用 Jane Austen 进行翻译和情感分析 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | 欧洲浪漫酒店 ♥️ | [自然语言处理](6-NLP/README.md) | 酒店评论的情感分析 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | 欧洲浪漫酒店 ♥️ | [自然语言处理](6-NLP/README.md) | 酒店评论的情感分析 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | 时间序列预测简介 | [时间序列](7-TimeSeries/README.md) | 时间序列预测简介 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ 世界电力使用 ⚡️ - 使用 ARIMA 进行时间序列预测 | [时间序列](7-TimeSeries/README.md) | 使用 ARIMA 进行时间序列预测 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | ⚡️ 世界电力使用 ⚡️ - 使用 SVR 进行时间序列预测 | [时间序列](7-TimeSeries/README.md) | 使用支持向量回归器进行时间序列预测 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban | -| 24 | 强化学习简介 | [强化学习](8-Reinforcement/README.md) | 使用 Q-Learning 学习强化学习简介 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 25 | 帮助 Peter 避开狼 🐺 | [强化学习](8-Reinforcement/README.md) | 强化学习 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | -| 后记 | 真实世界中的机器学习场景和应用 | [真实世界中的机器学习](9-Real-World/README.md) | 有趣且揭示性的经典机器学习真实世界应用 | [课程](9-Real-World/1-Applications/README.md) | 团队 | -| 后记 | 使用 RAI 仪表板进行机器学习模型调试 | [真实世界中的机器学习](9-Real-World/README.md) | 使用负责任的 AI 仪表板组件进行机器学习模型调试 | [课程](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) +| 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 应用 🔌 | [Web App](3-Web-App/README.md) | 构建一个使用你训练模型的 Web 应用 | [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) | 使用你的模型构建推荐系统 Web 应用 | [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-Learning 进行强化学习简介 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 25 | 帮助彼得躲避狼!🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 强化学习 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry | +| 后记 | 真实世界的机器学习场景和应用 | [ML in the Wild](9-Real-World/README.md) | 经典机器学习的有趣且启发性的真实世界应用 | [Lesson](9-Real-World/1-Applications/README.md) | Team | +| 后记 | 使用 RAI 仪表板进行机器学习模型调试 | [ML in the Wild](9-Real-World/README.md) | 使用 Responsible 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/#/) 离线运行此文档。Fork 此仓库,在您的本地机器上[安装 Docsify](https://docsify.js.org/#/quickstart),然后在此仓库的根文件夹中输入 `docsify serve`。网站将在您的本地主机的 3000 端口上运行:`localhost:3000`。 +你可以使用 [Docsify](https://docsify.js.org/#/) 离线运行此文档。Fork 此仓库,在本地机器上[安装 Docsify](https://docsify.js.org/#/quickstart),然后在此仓库的根文件夹中输入 `docsify serve`。网站将在本地主机的 3000 端口提供服务:`localhost:3000`。 -## PDF +## PDF 文件 在[这里](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)找到带有链接的课程 PDF。 + ## 🎒 其他课程 -我们的团队还制作了其他课程!查看以下内容: +我们的团队还制作了其他课程!查看: -### Azure / Edge / MCP / Agents -[![AZD 初学者课程](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI 初学者课程](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP 初学者课程](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI Agents 初学者课程](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- +### Azure / Edge / MCP / Agents +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + ### 生成式 AI 系列 -[![生成式 AI 初学者课程](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![生成式 AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![生成式 AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) [![生成式 AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### 核心学习 -[![ML 初学者](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![数据科学初学者](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI 初学者](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![网络安全初学者](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web 开发初学者](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT 初学者](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR 开发初学者](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![初学者机器学习](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![初学者数据科学](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![初学者人工智能](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![初学者网络安全](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![初学者网页开发](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![初学者物联网](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![初学者 XR 开发](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- + +### Copilot 系列 +[![AI 配对编程 Copilot](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![C#/.NET Copilot](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot 冒险](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -### Copilot 系列 -[![Copilot AI 配对编程](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot 冒险](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +## 获取帮助 -## 获取帮助 +如果你遇到困难或对构建 AI 应用有任何疑问,加入学习者和经验丰富的开发者一起讨论 MCP。这里是一个支持性的社区,欢迎提问并自由分享知识。 -如果你遇到困难或对构建 AI 应用有任何疑问,可以加入其他学习者和经验丰富的开发者的讨论。这里是一个支持性的社区,欢迎提问并自由分享知识。 - -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -如果你在构建过程中遇到产品反馈或错误,请访问: +如果你在构建过程中有产品反馈或遇到错误,请访问: -[![Microsoft Foundry 开发者论坛](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) --- **免责声明**: -本文档使用AI翻译服务[Co-op Translator](https://github.com/Azure/co-op-translator)进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。原始语言的文档应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。 +本文件由人工智能翻译服务[Co-op Translator](https://github.com/Azure/co-op-translator)翻译而成。尽管我们力求准确,但请注意自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于重要信息,建议使用专业人工翻译。因使用本翻译而产生的任何误解或误释,我们概不负责。 \ No newline at end of file