{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# नोटबुक 3: उदाहरणों से मशीन लर्निंग (Machine Learning) और रिकमेंडेशन सिस्टम\n", "\n", "अध्याय 4 में हमने बंधे-बंधाए नियमों वाले सॉफ्टवेयर और **मशीन लर्निंग (Machine Learning)** के बीच का फर्क समझा: इसमें हर नियम को हाथों से नहीं लिखा जाता, बल्कि मशीन खुद लेबल किए गए डेटा (Labelled data) से बाउंड्री (Boundary) खोजना सीखती है।\n", "\n", "इस नोटबुक में हम बाउंड्री सीखने और नियरेस्ट नेबर (Nearest Neighbor) रिकमेंडेशन सिस्टम के प्रयोग करेंगे।" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## प्रयोग 1: कंप्यूटर उदाहरणों से खुद बाउंड्री तय करता है\n", "\n", "हम कंप्यूटर को कुछ नंबर देते हैं जिन पर `small` (छोटा) या `big` (बड़ा) लिखा है। ध्यान दें कि हम कोई `if number < 20` का नियम नहीं लिख रहे हैं। कंप्यूटर दोनों समूहों का औसत (Average) निकालता है और ठीक बीच में अपने आप बाउंड्री खींच देता है!" ] }, { "cell_type": "code", "metadata": {}, "source": [ "# हमारा लेबल किया हुआ ट्रेनिंग डेटासेट\n", "examples = [\n", " (2, \"small\"), (5, \"small\"), (3, \"small\"), (7, \"small\"), (4, \"small\"),\n", " (40, \"big\"), (35, \"big\"), (50, \"big\"), (42, \"big\"), (38, \"big\")\n", "]\n", "\n", "small_vals = [n for n, label in examples if label == \"small\"]\n", "big_vals = [n for n, label in examples if label == \"big\"]\n", "\n", "avg_small = sum(small_vals) / len(small_vals)\n", "avg_big = sum(big_vals) / len(big_vals)\n", "learned_boundary = (avg_small + avg_big) / 2\n", "\n", "print(f\"छोटे उदाहरणों का औसत: {avg_small}\")\n", "print(f\"बड़े उदाहरणों का औसत: {avg_big}\")\n", "print(f\"एआई ने अपने आप यह बाउंड्री सीखी: {learned_boundary}\")" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": {}, "source": [ "# आइए इस सीखी हुई बाउंड्री को नए नंबरों पर आज़माते हैं!\n", "def predict_size(n):\n", " return \"small\" if n < learned_boundary else \"big\"\n", "\n", "for new_n in [1, 12, 21, 30, 60]:\n", " print(f\"नंबर {new_n} -> एआई का अनुमान: {predict_size(new_n)}\")" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## प्रयोग 2: नियरेस्ट नेबर्स (`k-NN`) रिकमेंडेशन सिस्टम\n", "\n", "जब आप किसी ऑनलाइन वेबसाइट पर जाते हैं, तो एआई आपको वही चीज़ें दिखाता है जो आपकी पसंद के सबसे करीब (`Nearest Neighbors`) होती हैं।\n", "\n", "आइए एक ऐसा आसान पायथन प्रोग्राम बनाते हैं जो मिट्टी की नमी (Moisture) और धूप (Sunlight) के हिसाब से सबसे उपयुक्त फसल की सिफारिश (Recommend) करता है!" ] }, { "cell_type": "code", "metadata": {}, "source": [ "import math\n", "\n", "# पारंपरिक फसलों की सूची और उनकी ज़रूरतें: (नमी_स्कोर, धूप_स्कोर)\n", "crops = {\n", " \"खेजड़ी की फली (सांगरी)\": (20, 90),\n", " \"बाजरा (Pearl Millet)\": (30, 85),\n", " \"मूंग (Green Gram)\": (45, 75),\n", " \"ग्वार (Guar)\": (35, 80)\n", "}\n", "\n", "def recommend_crop(soil_moisture, sunlight_level):\n", " best_crop = None\n", " min_dist = float(\"inf\")\n", " \n", " for name, (m, s) in crops.items():\n", " # दो बिंदुओं के बीच की दूरी का फॉर्मूला\n", " dist = math.sqrt((soil_moisture - m)**2 + (sunlight_level - s)**2)\n", " if dist < min_dist:\n", " min_dist = dist\n", " best_crop = name\n", " return best_crop, min_dist\n", "\n", "# आइए नमी=25 और धूप=88 वाले खेत के लिए फसल की सिफारिश लेते हैं\n", "chosen, dist = recommend_crop(25, 88)\n", "print(f\"आपकी मिट्टी (नमी=25, धूप=88) के लिए एआई की सिफारिश: '{chosen}'\")" ], "execution_count": null, "outputs": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3" } }, "nbformat": 4, "nbformat_minor": 5 }