diff --git a/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.mr.png b/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.mr.png
new file mode 100644
index 000000000..21ac354d7
Binary files /dev/null and b/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.mr.png differ
diff --git a/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.ne.png b/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.ne.png
new file mode 100644
index 000000000..21ac354d7
Binary files /dev/null and b/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.ne.png differ
diff --git a/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.pa.png b/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.pa.png
new file mode 100644
index 000000000..21ac354d7
Binary files /dev/null and b/translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.pa.png differ
diff --git a/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.mr.png b/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.mr.png
new file mode 100644
index 000000000..c4dbb1e9c
Binary files /dev/null and b/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.mr.png differ
diff --git a/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.ne.png b/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.ne.png
new file mode 100644
index 000000000..c4dbb1e9c
Binary files /dev/null and b/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.ne.png differ
diff --git a/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.pa.png b/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.pa.png
new file mode 100644
index 000000000..c4dbb1e9c
Binary files /dev/null and b/translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.pa.png differ
diff --git a/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.mr.png b/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.mr.png
new file mode 100644
index 000000000..3117bbc41
Binary files /dev/null and b/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.mr.png differ
diff --git a/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.ne.png b/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.ne.png
new file mode 100644
index 000000000..3117bbc41
Binary files /dev/null and b/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.ne.png differ
diff --git a/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.pa.png b/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.pa.png
new file mode 100644
index 000000000..3117bbc41
Binary files /dev/null and b/translated_images/ROC.167a70519c5bf8983f04e959942bb550de0fa37c220ff12c0f272d1af16e764a.pa.png differ
diff --git a/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.mr.png b/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.mr.png
new file mode 100644
index 000000000..b5ee41043
Binary files /dev/null and b/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.mr.png differ
diff --git a/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.ne.png b/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.ne.png
new file mode 100644
index 000000000..b5ee41043
Binary files /dev/null and b/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.ne.png differ
diff --git a/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.pa.png b/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.pa.png
new file mode 100644
index 000000000..b5ee41043
Binary files /dev/null and b/translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.pa.png differ
diff --git a/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.mr.png b/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.mr.png
new file mode 100644
index 000000000..aa9d4d053
Binary files /dev/null and b/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.mr.png differ
diff --git a/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.ne.png b/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.ne.png
new file mode 100644
index 000000000..aa9d4d053
Binary files /dev/null and b/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.ne.png differ
diff --git a/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.pa.png b/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.pa.png
new file mode 100644
index 000000000..aa9d4d053
Binary files /dev/null and b/translated_images/accessibility.c1be5ce816eaea652fe1879bbaf74d97ef15d895ee852a7b0e3542a77b735137.pa.png differ
diff --git a/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.mr.png b/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.mr.png
new file mode 100644
index 000000000..591e7c695
Binary files /dev/null and b/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.mr.png differ
diff --git a/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.ne.png b/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.ne.png
new file mode 100644
index 000000000..591e7c695
Binary files /dev/null and b/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.ne.png differ
diff --git a/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.pa.png b/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.pa.png
new file mode 100644
index 000000000..591e7c695
Binary files /dev/null and b/translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.pa.png differ
diff --git a/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.mr.png b/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.mr.png
new file mode 100644
index 000000000..4fa08b2cc
Binary files /dev/null and b/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.mr.png differ
diff --git a/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.ne.png b/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.ne.png
new file mode 100644
index 000000000..4fa08b2cc
Binary files /dev/null and b/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.ne.png differ
diff --git a/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.pa.png b/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.pa.png
new file mode 100644
index 000000000..4fa08b2cc
Binary files /dev/null and b/translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.pa.png differ
diff --git a/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.mr.png b/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.mr.png
new file mode 100644
index 000000000..8ab82c166
Binary files /dev/null and b/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.mr.png differ
diff --git a/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.ne.png b/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.ne.png
new file mode 100644
index 000000000..8ab82c166
Binary files /dev/null and b/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.ne.png differ
diff --git a/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.pa.png b/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.pa.png
new file mode 100644
index 000000000..8ab82c166
Binary files /dev/null and b/translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.pa.png differ
diff --git a/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.mr.png b/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.mr.png
new file mode 100644
index 000000000..88f5c2e88
Binary files /dev/null and b/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.mr.png differ
diff --git a/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.ne.png b/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.ne.png
new file mode 100644
index 000000000..88f5c2e88
Binary files /dev/null and b/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.ne.png differ
diff --git a/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.pa.png b/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.pa.png
new file mode 100644
index 000000000..88f5c2e88
Binary files /dev/null and b/translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.pa.png differ
diff --git a/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.mr.png b/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.mr.png
new file mode 100644
index 000000000..a2f8cd88e
Binary files /dev/null and b/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.mr.png differ
diff --git a/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.ne.png b/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.ne.png
new file mode 100644
index 000000000..a2f8cd88e
Binary files /dev/null and b/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.ne.png differ
diff --git a/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.pa.png b/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.pa.png
new file mode 100644
index 000000000..a2f8cd88e
Binary files /dev/null and b/translated_images/apple.c81c8d5965e5e5daab4a5f6d6aa08162915f2118ce0e46f2867f1a46335e874c.pa.png differ
diff --git a/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.mr.png b/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.mr.png
new file mode 100644
index 000000000..1689371ad
Binary files /dev/null and b/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.mr.png differ
diff --git a/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.ne.png b/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.ne.png
new file mode 100644
index 000000000..1689371ad
Binary files /dev/null and b/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.ne.png differ
diff --git a/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.pa.png b/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.pa.png
new file mode 100644
index 000000000..1689371ad
Binary files /dev/null and b/translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.pa.png differ
diff --git a/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.mr.png b/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.mr.png
new file mode 100644
index 000000000..d51931923
Binary files /dev/null and b/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.mr.png differ
diff --git a/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.ne.png b/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.ne.png
new file mode 100644
index 000000000..d51931923
Binary files /dev/null and b/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.ne.png differ
diff --git a/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.pa.png b/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.pa.png
new file mode 100644
index 000000000..d51931923
Binary files /dev/null and b/translated_images/bellman-equation.7c0c4c722e5a6b7c208071a0bae51664965050848e4f8a84bb377cd18bdd838b.pa.png differ
diff --git a/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.mr.png b/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.mr.png
new file mode 100644
index 000000000..0a61a2ffc
Binary files /dev/null and b/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.mr.png differ
diff --git a/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.ne.png b/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.ne.png
new file mode 100644
index 000000000..0a61a2ffc
Binary files /dev/null and b/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.ne.png differ
diff --git a/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.pa.png b/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.pa.png
new file mode 100644
index 000000000..0a61a2ffc
Binary files /dev/null and b/translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.pa.png differ
diff --git a/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.mr.png b/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.mr.png
new file mode 100644
index 000000000..14982b3aa
Binary files /dev/null and b/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.mr.png differ
diff --git a/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.ne.png b/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.ne.png
new file mode 100644
index 000000000..14982b3aa
Binary files /dev/null and b/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.ne.png differ
diff --git a/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.pa.png b/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.pa.png
new file mode 100644
index 000000000..14982b3aa
Binary files /dev/null and b/translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.pa.png differ
diff --git a/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.mr.png b/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.mr.png
new file mode 100644
index 000000000..df42204e5
Binary files /dev/null and b/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.mr.png differ
diff --git a/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.ne.png b/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.ne.png
new file mode 100644
index 000000000..df42204e5
Binary files /dev/null and b/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.ne.png differ
diff --git a/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.pa.png b/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.pa.png
new file mode 100644
index 000000000..df42204e5
Binary files /dev/null and b/translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.pa.png differ
diff --git a/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.mr.png b/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.mr.png
new file mode 100644
index 000000000..76b66c47c
Binary files /dev/null and b/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.mr.png differ
diff --git a/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.ne.png b/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.ne.png
new file mode 100644
index 000000000..76b66c47c
Binary files /dev/null and b/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.ne.png differ
diff --git a/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.pa.png b/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.pa.png
new file mode 100644
index 000000000..76b66c47c
Binary files /dev/null and b/translated_images/cartpole.b5609cc0494a14f75d121299495ae24fd8f1c30465e7b40961af94ecda2e1cd0.pa.png differ
diff --git a/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.mr.png b/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.mr.png
new file mode 100644
index 000000000..81c85893c
Binary files /dev/null and b/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.mr.png differ
diff --git a/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.ne.png b/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.ne.png
new file mode 100644
index 000000000..81c85893c
Binary files /dev/null and b/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.ne.png differ
diff --git a/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.pa.png b/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.pa.png
new file mode 100644
index 000000000..81c85893c
Binary files /dev/null and b/translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.pa.png differ
diff --git a/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.mr.png b/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.mr.png
new file mode 100644
index 000000000..bbb373a47
Binary files /dev/null and b/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.mr.png differ
diff --git a/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.ne.png b/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.ne.png
new file mode 100644
index 000000000..bbb373a47
Binary files /dev/null and b/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.ne.png differ
diff --git a/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.pa.png b/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.pa.png
new file mode 100644
index 000000000..bbb373a47
Binary files /dev/null and b/translated_images/ceos.3de5d092ce8d2753d22b48605c1d936a1477081c0646c006a07e9c80a2249fe4.pa.png differ
diff --git a/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.mr.png b/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.mr.png
new file mode 100644
index 000000000..bbb373a47
Binary files /dev/null and b/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.mr.png differ
diff --git a/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.ne.png b/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.ne.png
new file mode 100644
index 000000000..bbb373a47
Binary files /dev/null and b/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.ne.png differ
diff --git a/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.pa.png b/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.pa.png
new file mode 100644
index 000000000..bbb373a47
Binary files /dev/null and b/translated_images/ceos.7a9a67871424a6c07986e7c22ddae062ac660c469f6a54435196e0ae73a1c4da.pa.png differ
diff --git a/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.mr.png b/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.mr.png
new file mode 100644
index 000000000..126b60378
Binary files /dev/null and b/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.mr.png differ
diff --git a/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.ne.png b/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.ne.png
new file mode 100644
index 000000000..126b60378
Binary files /dev/null and b/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.ne.png differ
diff --git a/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.pa.png b/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.pa.png
new file mode 100644
index 000000000..126b60378
Binary files /dev/null and b/translated_images/cf-what-if-features.5a92a6924da3e9b58b654c974d7560bfbfc067c123b73e98ab4935448b3f70d5.pa.png differ
diff --git a/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.mr.png b/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.mr.png
new file mode 100644
index 000000000..685bef623
Binary files /dev/null and b/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.mr.png differ
diff --git a/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.ne.png b/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.ne.png
new file mode 100644
index 000000000..685bef623
Binary files /dev/null and b/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.ne.png differ
diff --git a/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.pa.png b/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.pa.png
new file mode 100644
index 000000000..685bef623
Binary files /dev/null and b/translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.pa.png differ
diff --git a/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.mr.jpg b/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.mr.jpg
new file mode 100644
index 000000000..afef99916
Binary files /dev/null and b/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.mr.jpg differ
diff --git a/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.ne.jpg b/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.ne.jpg
new file mode 100644
index 000000000..afef99916
Binary files /dev/null and b/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.ne.jpg differ
diff --git a/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.pa.jpg b/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.pa.jpg
new file mode 100644
index 000000000..afef99916
Binary files /dev/null and b/translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.pa.jpg differ
diff --git a/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.mr.png b/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.mr.png
new file mode 100644
index 000000000..13cc9b4ed
Binary files /dev/null and b/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.mr.png differ
diff --git a/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.ne.png b/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.ne.png
new file mode 100644
index 000000000..13cc9b4ed
Binary files /dev/null and b/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.ne.png differ
diff --git a/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.pa.png b/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.pa.png
new file mode 100644
index 000000000..13cc9b4ed
Binary files /dev/null and b/translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.pa.png differ
diff --git a/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.mr.png b/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.mr.png
new file mode 100644
index 000000000..5f991e289
Binary files /dev/null and b/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.mr.png differ
diff --git a/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.ne.png b/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.ne.png
new file mode 100644
index 000000000..5f991e289
Binary files /dev/null and b/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.ne.png differ
diff --git a/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.pa.png b/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.pa.png
new file mode 100644
index 000000000..5f991e289
Binary files /dev/null and b/translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.pa.png differ
diff --git a/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.mr.png b/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.mr.png
new file mode 100644
index 000000000..a64781283
Binary files /dev/null and b/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.mr.png differ
diff --git a/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.ne.png b/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.ne.png
new file mode 100644
index 000000000..a64781283
Binary files /dev/null and b/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.ne.png differ
diff --git a/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.pa.png b/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.pa.png
new file mode 100644
index 000000000..a64781283
Binary files /dev/null and b/translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.pa.png differ
diff --git a/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.mr.png b/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.mr.png
new file mode 100644
index 000000000..aabba0910
Binary files /dev/null and b/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.mr.png differ
diff --git a/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.ne.png b/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.ne.png
new file mode 100644
index 000000000..aabba0910
Binary files /dev/null and b/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.ne.png differ
diff --git a/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.pa.png b/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.pa.png
new file mode 100644
index 000000000..aabba0910
Binary files /dev/null and b/translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.pa.png differ
diff --git a/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.mr.png b/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.mr.png
new file mode 100644
index 000000000..5dae1c7d5
Binary files /dev/null and b/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.mr.png differ
diff --git a/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.ne.png b/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.ne.png
new file mode 100644
index 000000000..5dae1c7d5
Binary files /dev/null and b/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.ne.png differ
diff --git a/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.pa.png b/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.pa.png
new file mode 100644
index 000000000..5dae1c7d5
Binary files /dev/null and b/translated_images/confusion-matrix.3cc5496a1a37c3e4311e74790f15a1426e03e27af7e611aaabda56bc0a802aaf.pa.png differ
diff --git a/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.mr.png b/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.mr.png
new file mode 100644
index 000000000..fa4dd0b42
Binary files /dev/null and b/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.mr.png differ
diff --git a/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.ne.png b/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.ne.png
new file mode 100644
index 000000000..fa4dd0b42
Binary files /dev/null and b/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.ne.png differ
diff --git a/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.pa.png b/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.pa.png
new file mode 100644
index 000000000..fa4dd0b42
Binary files /dev/null and b/translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.pa.png differ
diff --git a/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.mr.png b/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.mr.png
new file mode 100644
index 000000000..40dd5206e
Binary files /dev/null and b/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.mr.png differ
diff --git a/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.ne.png b/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.ne.png
new file mode 100644
index 000000000..40dd5206e
Binary files /dev/null and b/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.ne.png differ
diff --git a/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.pa.png b/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.pa.png
new file mode 100644
index 000000000..40dd5206e
Binary files /dev/null and b/translated_images/counterfactuals-examples.b38a50a504ee0a9fc6087aba050a212a5f838adc5b0d76c5c656f8b1ccaab822.pa.png differ
diff --git a/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.mr.png b/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.mr.png
new file mode 100644
index 000000000..97b45b02a
Binary files /dev/null and b/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.mr.png differ
diff --git a/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.ne.png b/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.ne.png
new file mode 100644
index 000000000..97b45b02a
Binary files /dev/null and b/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.ne.png differ
diff --git a/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.pa.png b/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.pa.png
new file mode 100644
index 000000000..97b45b02a
Binary files /dev/null and b/translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.pa.png differ
diff --git a/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.mr.png b/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.mr.png
new file mode 100644
index 000000000..0f56c6528
Binary files /dev/null and b/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.mr.png differ
diff --git a/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.ne.png b/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.ne.png
new file mode 100644
index 000000000..0f56c6528
Binary files /dev/null and b/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.ne.png differ
diff --git a/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.pa.png b/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.pa.png
new file mode 100644
index 000000000..0f56c6528
Binary files /dev/null and b/translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.pa.png differ
diff --git a/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.mr.png b/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.mr.png
new file mode 100644
index 000000000..76a1c12ad
Binary files /dev/null and b/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.mr.png differ
diff --git a/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.ne.png b/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.ne.png
new file mode 100644
index 000000000..76a1c12ad
Binary files /dev/null and b/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.ne.png differ
diff --git a/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.pa.png b/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.pa.png
new file mode 100644
index 000000000..76a1c12ad
Binary files /dev/null and b/translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.pa.png differ
diff --git a/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.mr.png b/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.mr.png
new file mode 100644
index 000000000..6568a1d64
Binary files /dev/null and b/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.mr.png differ
diff --git a/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.ne.png b/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.ne.png
new file mode 100644
index 000000000..6568a1d64
Binary files /dev/null and b/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.ne.png differ
diff --git a/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.pa.png b/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.pa.png
new file mode 100644
index 000000000..6568a1d64
Binary files /dev/null and b/translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.pa.png differ
diff --git a/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.mr.png b/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.mr.png
new file mode 100644
index 000000000..86c6b1f1f
Binary files /dev/null and b/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.mr.png differ
diff --git a/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.ne.png b/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.ne.png
new file mode 100644
index 000000000..86c6b1f1f
Binary files /dev/null and b/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.ne.png differ
diff --git a/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.pa.png b/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.pa.png
new file mode 100644
index 000000000..86c6b1f1f
Binary files /dev/null and b/translated_images/datapoints.aaf6815cd5d873541b61b73b9a6ee6a53914b5d62ed2cbbedaa2e1d9a414c5c1.pa.png differ
diff --git a/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.mr.png b/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.mr.png
new file mode 100644
index 000000000..102756eae
Binary files /dev/null and b/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.mr.png differ
diff --git a/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.ne.png b/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.ne.png
new file mode 100644
index 000000000..102756eae
Binary files /dev/null and b/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.ne.png differ
diff --git a/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.pa.png b/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.pa.png
new file mode 100644
index 000000000..102756eae
Binary files /dev/null and b/translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.pa.png differ
diff --git a/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.mr.jpg b/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.mr.jpg
new file mode 100644
index 000000000..a0790a754
Binary files /dev/null and b/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.mr.jpg differ
diff --git a/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.ne.jpg b/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.ne.jpg
new file mode 100644
index 000000000..a0790a754
Binary files /dev/null and b/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.ne.jpg differ
diff --git a/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.pa.jpg b/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.pa.jpg
new file mode 100644
index 000000000..a0790a754
Binary files /dev/null and b/translated_images/dplyr_filter.b480b264b03439ff7051232a8de1df9a8fd4df723db316feb4f9f5e990db4318.pa.jpg differ
diff --git a/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.mr.png b/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.mr.png
new file mode 100644
index 000000000..6f6a9f3c7
Binary files /dev/null and b/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.mr.png differ
diff --git a/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.ne.png b/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.ne.png
new file mode 100644
index 000000000..6f6a9f3c7
Binary files /dev/null and b/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.ne.png differ
diff --git a/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.pa.png b/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.pa.png
new file mode 100644
index 000000000..6f6a9f3c7
Binary files /dev/null and b/translated_images/dplyr_wrangling.f5f99c64fd4580f1377fee3ea428b6f8fd073845ec0f8409d483cfe148f0984e.pa.png differ
diff --git a/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.mr.png b/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.mr.png
new file mode 100644
index 000000000..1f3d2840b
Binary files /dev/null and b/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.mr.png differ
diff --git a/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.ne.png b/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.ne.png
new file mode 100644
index 000000000..1f3d2840b
Binary files /dev/null and b/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.ne.png differ
diff --git a/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.pa.png b/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.pa.png
new file mode 100644
index 000000000..1f3d2840b
Binary files /dev/null and b/translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.pa.png differ
diff --git a/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.mr.png b/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.mr.png
new file mode 100644
index 000000000..ddf5156e2
Binary files /dev/null and b/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.mr.png differ
diff --git a/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.ne.png b/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.ne.png
new file mode 100644
index 000000000..ddf5156e2
Binary files /dev/null and b/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.ne.png differ
diff --git a/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.pa.png b/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.pa.png
new file mode 100644
index 000000000..ddf5156e2
Binary files /dev/null and b/translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.pa.png differ
diff --git a/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.mr.png b/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.mr.png
new file mode 100644
index 000000000..ab9ecf66d
Binary files /dev/null and b/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.mr.png differ
diff --git a/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.ne.png b/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.ne.png
new file mode 100644
index 000000000..ab9ecf66d
Binary files /dev/null and b/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.ne.png differ
diff --git a/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.pa.png b/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.pa.png
new file mode 100644
index 000000000..ab9ecf66d
Binary files /dev/null and b/translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.pa.png differ
diff --git a/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.mr.png b/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.mr.png
new file mode 100644
index 000000000..1528be449
Binary files /dev/null and b/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.mr.png differ
diff --git a/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.ne.png b/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.ne.png
new file mode 100644
index 000000000..1528be449
Binary files /dev/null and b/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.ne.png differ
diff --git a/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.pa.png b/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.pa.png
new file mode 100644
index 000000000..1528be449
Binary files /dev/null and b/translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.pa.png differ
diff --git a/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.mr.jpg b/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.mr.jpg
new file mode 100644
index 000000000..9616118e7
Binary files /dev/null and b/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.mr.jpg differ
diff --git a/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.ne.jpg b/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.ne.jpg
new file mode 100644
index 000000000..9616118e7
Binary files /dev/null and b/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.ne.jpg differ
diff --git a/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.pa.jpg b/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.pa.jpg
new file mode 100644
index 000000000..9616118e7
Binary files /dev/null and b/translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.pa.jpg differ
diff --git a/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.mr.png b/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.mr.png
new file mode 100644
index 000000000..334858f4b
Binary files /dev/null and b/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.mr.png differ
diff --git a/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.ne.png b/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.ne.png
new file mode 100644
index 000000000..334858f4b
Binary files /dev/null and b/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.ne.png differ
diff --git a/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.pa.png b/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.pa.png
new file mode 100644
index 000000000..334858f4b
Binary files /dev/null and b/translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.pa.png differ
diff --git a/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.mr.png b/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.mr.png
new file mode 100644
index 000000000..459dcf565
Binary files /dev/null and b/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.mr.png differ
diff --git a/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.ne.png b/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.ne.png
new file mode 100644
index 000000000..459dcf565
Binary files /dev/null and b/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.ne.png differ
diff --git a/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.pa.png b/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.pa.png
new file mode 100644
index 000000000..459dcf565
Binary files /dev/null and b/translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.pa.png differ
diff --git a/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.mr.jpg b/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.mr.jpg
new file mode 100644
index 000000000..7e685a520
Binary files /dev/null and b/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.mr.jpg differ
diff --git a/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.ne.jpg b/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.ne.jpg
new file mode 100644
index 000000000..7e685a520
Binary files /dev/null and b/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.ne.jpg differ
diff --git a/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.pa.jpg b/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.pa.jpg
new file mode 100644
index 000000000..7e685a520
Binary files /dev/null and b/translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.pa.jpg differ
diff --git a/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.mr.png b/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.mr.png
new file mode 100644
index 000000000..9826bdb57
Binary files /dev/null and b/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.mr.png differ
diff --git a/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.ne.png b/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.ne.png
new file mode 100644
index 000000000..9826bdb57
Binary files /dev/null and b/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.ne.png differ
diff --git a/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.pa.png b/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.pa.png
new file mode 100644
index 000000000..9826bdb57
Binary files /dev/null and b/translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.pa.png differ
diff --git a/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.mr.png b/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.mr.png
new file mode 100644
index 000000000..15f84e910
Binary files /dev/null and b/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.mr.png differ
diff --git a/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.ne.png b/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.ne.png
new file mode 100644
index 000000000..15f84e910
Binary files /dev/null and b/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.ne.png differ
diff --git a/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.pa.png b/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.pa.png
new file mode 100644
index 000000000..15f84e910
Binary files /dev/null and b/translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.pa.png differ
diff --git a/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.mr.png b/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.mr.png
new file mode 100644
index 000000000..f340cf46f
Binary files /dev/null and b/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.mr.png differ
diff --git a/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.ne.png b/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.ne.png
new file mode 100644
index 000000000..f340cf46f
Binary files /dev/null and b/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.ne.png differ
diff --git a/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.pa.png b/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.pa.png
new file mode 100644
index 000000000..f340cf46f
Binary files /dev/null and b/translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.pa.png differ
diff --git a/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.mr.png b/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.mr.png
new file mode 100644
index 000000000..891e0750e
Binary files /dev/null and b/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.mr.png differ
diff --git a/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.ne.png b/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.ne.png
new file mode 100644
index 000000000..891e0750e
Binary files /dev/null and b/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.ne.png differ
diff --git a/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.pa.png b/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.pa.png
new file mode 100644
index 000000000..891e0750e
Binary files /dev/null and b/translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.pa.png differ
diff --git a/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.mr.png b/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.mr.png
new file mode 100644
index 000000000..e9871d987
Binary files /dev/null and b/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.mr.png differ
diff --git a/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.ne.png b/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.ne.png
new file mode 100644
index 000000000..e9871d987
Binary files /dev/null and b/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.ne.png differ
diff --git a/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.pa.png b/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.pa.png
new file mode 100644
index 000000000..e9871d987
Binary files /dev/null and b/translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.pa.png differ
diff --git a/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.mr.png b/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.mr.png
new file mode 100644
index 000000000..9a9d55f1d
Binary files /dev/null and b/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.mr.png differ
diff --git a/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.ne.png b/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.ne.png
new file mode 100644
index 000000000..9a9d55f1d
Binary files /dev/null and b/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.ne.png differ
diff --git a/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.pa.png b/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.pa.png
new file mode 100644
index 000000000..9a9d55f1d
Binary files /dev/null and b/translated_images/fairness.25d7c8ce9817272d25dd0e2b42a6addf7d3b8241cb6c3088fa9fc3eb7227781d.pa.png differ
diff --git a/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.mr.png b/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.mr.png
new file mode 100644
index 000000000..9a9d55f1d
Binary files /dev/null and b/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.mr.png differ
diff --git a/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.ne.png b/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.ne.png
new file mode 100644
index 000000000..9a9d55f1d
Binary files /dev/null and b/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.ne.png differ
diff --git a/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.pa.png b/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.pa.png
new file mode 100644
index 000000000..9a9d55f1d
Binary files /dev/null and b/translated_images/fairness.b9f9893a4e3dc28bec350a714555c3be39040c3fe7e0aa4da10bb8e3c54a1cc9.pa.png differ
diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.mr.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.mr.png
new file mode 100644
index 000000000..26e0ae439
Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.mr.png differ
diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ne.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ne.png
new file mode 100644
index 000000000..26e0ae439
Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ne.png differ
diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.pa.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.pa.png
new file mode 100644
index 000000000..26e0ae439
Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.pa.png differ
diff --git a/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.mr.png b/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.mr.png
new file mode 100644
index 000000000..a1648bf77
Binary files /dev/null and b/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.mr.png differ
diff --git a/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.ne.png b/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.ne.png
new file mode 100644
index 000000000..a1648bf77
Binary files /dev/null and b/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.ne.png differ
diff --git a/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.pa.png b/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.pa.png
new file mode 100644
index 000000000..a1648bf77
Binary files /dev/null and b/translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.pa.png differ
diff --git a/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.mr.png b/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.mr.png
new file mode 100644
index 000000000..23d0506f5
Binary files /dev/null and b/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.mr.png differ
diff --git a/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.ne.png b/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.ne.png
new file mode 100644
index 000000000..23d0506f5
Binary files /dev/null and b/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.ne.png differ
diff --git a/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.pa.png b/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.pa.png
new file mode 100644
index 000000000..23d0506f5
Binary files /dev/null and b/translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.pa.png differ
diff --git a/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.mr.png b/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.mr.png
new file mode 100644
index 000000000..c1029876e
Binary files /dev/null and b/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.mr.png differ
diff --git a/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.ne.png b/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.ne.png
new file mode 100644
index 000000000..c1029876e
Binary files /dev/null and b/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.ne.png differ
diff --git a/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.pa.png b/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.pa.png
new file mode 100644
index 000000000..c1029876e
Binary files /dev/null and b/translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.pa.png differ
diff --git a/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.mr.png b/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.mr.png
new file mode 100644
index 000000000..253ddfd62
Binary files /dev/null and b/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.mr.png differ
diff --git a/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.ne.png b/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.ne.png
new file mode 100644
index 000000000..253ddfd62
Binary files /dev/null and b/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.ne.png differ
diff --git a/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.pa.png b/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.pa.png
new file mode 100644
index 000000000..253ddfd62
Binary files /dev/null and b/translated_images/gender-bias-translate-en-tr.bfd87c45da23c08526ec072e397d571d96b6051c8b538600b1ada80289d6ac58.pa.png differ
diff --git a/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.mr.png b/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.mr.png
new file mode 100644
index 000000000..253ddfd62
Binary files /dev/null and b/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.mr.png differ
diff --git a/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.ne.png b/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.ne.png
new file mode 100644
index 000000000..253ddfd62
Binary files /dev/null and b/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.ne.png differ
diff --git a/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.pa.png b/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.pa.png
new file mode 100644
index 000000000..253ddfd62
Binary files /dev/null and b/translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.pa.png differ
diff --git a/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.mr.png b/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.mr.png
new file mode 100644
index 000000000..c0847d32d
Binary files /dev/null and b/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.mr.png differ
diff --git a/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.ne.png b/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.ne.png
new file mode 100644
index 000000000..c0847d32d
Binary files /dev/null and b/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.ne.png differ
diff --git a/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.pa.png b/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.pa.png
new file mode 100644
index 000000000..c0847d32d
Binary files /dev/null and b/translated_images/gender-bias-translate-tr-en.1f97568ba9e40e20eb5b40e8538fc38994b794597d2e446f8e43cf40a4baced9.pa.png differ
diff --git a/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.mr.png b/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.mr.png
new file mode 100644
index 000000000..c0847d32d
Binary files /dev/null and b/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.mr.png differ
diff --git a/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.ne.png b/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.ne.png
new file mode 100644
index 000000000..c0847d32d
Binary files /dev/null and b/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.ne.png differ
diff --git a/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.pa.png b/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.pa.png
new file mode 100644
index 000000000..c0847d32d
Binary files /dev/null and b/translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.pa.png differ
diff --git a/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.mr.jpg b/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.mr.jpg
new file mode 100644
index 000000000..31ba4b334
Binary files /dev/null and b/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.mr.jpg differ
diff --git a/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.ne.jpg b/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.ne.jpg
new file mode 100644
index 000000000..31ba4b334
Binary files /dev/null and b/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.ne.jpg differ
diff --git a/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.pa.jpg b/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.pa.jpg
new file mode 100644
index 000000000..31ba4b334
Binary files /dev/null and b/translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.pa.jpg differ
diff --git a/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.mr.png b/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.mr.png
new file mode 100644
index 000000000..bde6517f7
Binary files /dev/null and b/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.mr.png differ
diff --git a/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.ne.png b/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.ne.png
new file mode 100644
index 000000000..bde6517f7
Binary files /dev/null and b/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.ne.png differ
diff --git a/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.pa.png b/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.pa.png
new file mode 100644
index 000000000..bde6517f7
Binary files /dev/null and b/translated_images/grid.464370ad00f3696ce81c7488a963158b69d3b1cfd3f020c58a28360e5cf4239c.pa.png differ
diff --git a/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.mr.png b/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.mr.png
new file mode 100644
index 000000000..bc2472735
Binary files /dev/null and b/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.mr.png differ
diff --git a/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.ne.png b/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.ne.png
new file mode 100644
index 000000000..bc2472735
Binary files /dev/null and b/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.ne.png differ
diff --git a/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.pa.png b/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.pa.png
new file mode 100644
index 000000000..bc2472735
Binary files /dev/null and b/translated_images/heatmap.39952045da50b4eb206764735021552f31cff773a79997ece7481fe614897a25.pa.png differ
diff --git a/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.mr.png b/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.mr.png
new file mode 100644
index 000000000..eb84fc9a7
Binary files /dev/null and b/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.mr.png differ
diff --git a/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.ne.png b/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.ne.png
new file mode 100644
index 000000000..eb84fc9a7
Binary files /dev/null and b/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.ne.png differ
diff --git a/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.pa.png b/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.pa.png
new file mode 100644
index 000000000..eb84fc9a7
Binary files /dev/null and b/translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.pa.png differ
diff --git a/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.mr.png b/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.mr.png
new file mode 100644
index 000000000..3070781f6
Binary files /dev/null and b/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.mr.png differ
diff --git a/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.ne.png b/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.ne.png
new file mode 100644
index 000000000..3070781f6
Binary files /dev/null and b/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.ne.png differ
diff --git a/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.pa.png b/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.pa.png
new file mode 100644
index 000000000..3070781f6
Binary files /dev/null and b/translated_images/human.e3840390a2ab76901f465c17f568637801ab0df39d7c3fdcb6a112b0c74c6288.pa.png differ
diff --git a/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.mr.png b/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.mr.png
new file mode 100644
index 000000000..d0e31337f
Binary files /dev/null and b/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.mr.png differ
diff --git a/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.ne.png b/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.ne.png
new file mode 100644
index 000000000..d0e31337f
Binary files /dev/null and b/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.ne.png differ
diff --git a/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.pa.png b/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.pa.png
new file mode 100644
index 000000000..d0e31337f
Binary files /dev/null and b/translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.pa.png differ
diff --git a/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.mr.png b/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.mr.png
new file mode 100644
index 000000000..ce4e65402
Binary files /dev/null and b/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.mr.png differ
diff --git a/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.ne.png b/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.ne.png
new file mode 100644
index 000000000..ce4e65402
Binary files /dev/null and b/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.ne.png differ
diff --git a/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.pa.png b/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.pa.png
new file mode 100644
index 000000000..ce4e65402
Binary files /dev/null and b/translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.pa.png differ
diff --git a/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.mr.png b/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.mr.png
new file mode 100644
index 000000000..17be6837a
Binary files /dev/null and b/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.mr.png differ
diff --git a/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.ne.png b/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.ne.png
new file mode 100644
index 000000000..17be6837a
Binary files /dev/null and b/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.ne.png differ
diff --git a/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.pa.png b/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.pa.png
new file mode 100644
index 000000000..17be6837a
Binary files /dev/null and b/translated_images/individual-causal-what-if.00e7b86b52a083cea6344c73c76463e9d41e0fe44fecd6f48671cb2a2d280d81.pa.png differ
diff --git a/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.mr.jpg b/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.mr.jpg
new file mode 100644
index 000000000..97b3aa950
Binary files /dev/null and b/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.mr.jpg differ
diff --git a/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.ne.jpg b/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.ne.jpg
new file mode 100644
index 000000000..97b3aa950
Binary files /dev/null and b/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.ne.jpg differ
diff --git a/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.pa.jpg b/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.pa.jpg
new file mode 100644
index 000000000..97b3aa950
Binary files /dev/null and b/translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.pa.jpg differ
diff --git a/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.mr.jpg b/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.mr.jpg
new file mode 100644
index 000000000..cccf08c43
Binary files /dev/null and b/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.mr.jpg differ
diff --git a/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.ne.jpg b/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.ne.jpg
new file mode 100644
index 000000000..cccf08c43
Binary files /dev/null and b/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.ne.jpg differ
diff --git a/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.pa.jpg b/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.pa.jpg
new file mode 100644
index 000000000..cccf08c43
Binary files /dev/null and b/translated_images/janitor.e4a77dd3d3e6a32e25327090b8a9c00dc7cf459c44fa9f184c5ecb0d48ce3794.pa.jpg differ
diff --git a/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.mr.png b/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.mr.png
new file mode 100644
index 000000000..cfdf5122d
Binary files /dev/null and b/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.mr.png differ
diff --git a/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.ne.png b/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.ne.png
new file mode 100644
index 000000000..cfdf5122d
Binary files /dev/null and b/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.ne.png differ
diff --git a/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.pa.png b/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.pa.png
new file mode 100644
index 000000000..cfdf5122d
Binary files /dev/null and b/translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.pa.png differ
diff --git a/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.mr.png b/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.mr.png
new file mode 100644
index 000000000..fe1c23bf3
Binary files /dev/null and b/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.mr.png differ
diff --git a/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.ne.png b/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.ne.png
new file mode 100644
index 000000000..fe1c23bf3
Binary files /dev/null and b/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.ne.png differ
diff --git a/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.pa.png b/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.pa.png
new file mode 100644
index 000000000..fe1c23bf3
Binary files /dev/null and b/translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.pa.png differ
diff --git a/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.mr.png b/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.mr.png
new file mode 100644
index 000000000..1cdc61d30
Binary files /dev/null and b/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.mr.png differ
diff --git a/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.ne.png b/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.ne.png
new file mode 100644
index 000000000..1cdc61d30
Binary files /dev/null and b/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.ne.png differ
diff --git a/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.pa.png b/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.pa.png
new file mode 100644
index 000000000..1cdc61d30
Binary files /dev/null and b/translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.pa.png differ
diff --git a/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.mr.png b/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.mr.png
new file mode 100644
index 000000000..0fc22438a
Binary files /dev/null and b/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.mr.png differ
diff --git a/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.ne.png b/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.ne.png
new file mode 100644
index 000000000..0fc22438a
Binary files /dev/null and b/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.ne.png differ
diff --git a/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.pa.png b/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.pa.png
new file mode 100644
index 000000000..0fc22438a
Binary files /dev/null and b/translated_images/learned.ed28bcd8484b5287a31925c96c43b43e2c2bb876b8ca41a0e1e754f77bb3db20.pa.png differ
diff --git a/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.mr.png b/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.mr.png
new file mode 100644
index 000000000..7e7da0343
Binary files /dev/null and b/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.mr.png differ
diff --git a/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.ne.png b/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.ne.png
new file mode 100644
index 000000000..7e7da0343
Binary files /dev/null and b/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.ne.png differ
diff --git a/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.pa.png b/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.pa.png
new file mode 100644
index 000000000..7e7da0343
Binary files /dev/null and b/translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.pa.png differ
diff --git a/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.mr.png b/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.mr.png
new file mode 100644
index 000000000..2b636a72e
Binary files /dev/null and b/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.mr.png differ
diff --git a/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.ne.png b/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.ne.png
new file mode 100644
index 000000000..2b636a72e
Binary files /dev/null and b/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.ne.png differ
diff --git a/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.pa.png b/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.pa.png
new file mode 100644
index 000000000..2b636a72e
Binary files /dev/null and b/translated_images/linear-results.f7c3552c85b0ed1ce2808276c870656733f6878c8fd37ec220812ee77686c3ef.pa.png differ
diff --git a/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.mr.png b/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.mr.png
new file mode 100644
index 000000000..cae05d6af
Binary files /dev/null and b/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.mr.png differ
diff --git a/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.ne.png b/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.ne.png
new file mode 100644
index 000000000..cae05d6af
Binary files /dev/null and b/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.ne.png differ
diff --git a/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.pa.png b/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.pa.png
new file mode 100644
index 000000000..cae05d6af
Binary files /dev/null and b/translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.pa.png differ
diff --git a/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.mr.png b/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.mr.png
new file mode 100644
index 000000000..fd72fdf81
Binary files /dev/null and b/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.mr.png differ
diff --git a/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.ne.png b/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.ne.png
new file mode 100644
index 000000000..fd72fdf81
Binary files /dev/null and b/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.ne.png differ
diff --git a/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.pa.png b/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.pa.png
new file mode 100644
index 000000000..fd72fdf81
Binary files /dev/null and b/translated_images/linear.a1b0760a56132551947c85988ff1753b2bccea6c29097394744d3f8a986ac3bf.pa.png differ
diff --git a/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.mr.png b/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.mr.png
new file mode 100644
index 000000000..73ca29080
Binary files /dev/null and b/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.mr.png differ
diff --git a/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.ne.png b/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.ne.png
new file mode 100644
index 000000000..73ca29080
Binary files /dev/null and b/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.ne.png differ
diff --git a/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.pa.png b/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.pa.png
new file mode 100644
index 000000000..73ca29080
Binary files /dev/null and b/translated_images/lobe.2fa0806408ef9923ad81b63f5094b5d832a2e52227c4f0abb9fef6e1132fde15.pa.png differ
diff --git a/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.mr.png b/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.mr.png
new file mode 100644
index 000000000..46e4c00ec
Binary files /dev/null and b/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.mr.png differ
diff --git a/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.ne.png b/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.ne.png
new file mode 100644
index 000000000..46e4c00ec
Binary files /dev/null and b/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.ne.png differ
diff --git a/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.pa.png b/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.pa.png
new file mode 100644
index 000000000..46e4c00ec
Binary files /dev/null and b/translated_images/logistic-linear.0f2f6bb73b3134c1b1463fb22452aefe74b21b7c357ddccac31831a836dcce73.pa.png differ
diff --git a/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.mr.png b/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.mr.png
new file mode 100644
index 000000000..d745453cd
Binary files /dev/null and b/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.mr.png differ
diff --git a/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.ne.png b/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.ne.png
new file mode 100644
index 000000000..d745453cd
Binary files /dev/null and b/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.ne.png differ
diff --git a/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.pa.png b/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.pa.png
new file mode 100644
index 000000000..d745453cd
Binary files /dev/null and b/translated_images/logistic.b0cba6b7db4d57899f5a6ae74876bd34a0bd5dc492458b80b3293e948fa46a2d.pa.png differ
diff --git a/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.mr.png b/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.mr.png
new file mode 100644
index 000000000..3d6401011
Binary files /dev/null and b/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.mr.png differ
diff --git a/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.ne.png b/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.ne.png
new file mode 100644
index 000000000..3d6401011
Binary files /dev/null and b/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.ne.png differ
diff --git a/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.pa.png b/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.pa.png
new file mode 100644
index 000000000..3d6401011
Binary files /dev/null and b/translated_images/lpathlen.94f211521ed609400dc64c3d8423b9effc5406f33d2648d0002c14c04ba820c1.pa.png differ
diff --git a/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.mr.png b/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.mr.png
new file mode 100644
index 000000000..ca5ced7c0
Binary files /dev/null and b/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.mr.png differ
diff --git a/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.ne.png b/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.ne.png
new file mode 100644
index 000000000..ca5ced7c0
Binary files /dev/null and b/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.ne.png differ
diff --git a/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.pa.png b/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.pa.png
new file mode 100644
index 000000000..ca5ced7c0
Binary files /dev/null and b/translated_images/lpathlen1.0534784add58d4ebf25c21d4a1da9bceab4f96743a35817f1b49ab963c64c572.pa.png differ
diff --git a/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.mr.png b/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.mr.png
new file mode 100644
index 000000000..484731132
Binary files /dev/null and b/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.mr.png differ
diff --git a/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.ne.png b/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.ne.png
new file mode 100644
index 000000000..484731132
Binary files /dev/null and b/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.ne.png differ
diff --git a/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.pa.png b/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.pa.png
new file mode 100644
index 000000000..484731132
Binary files /dev/null and b/translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.pa.png differ
diff --git a/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.mr.png b/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.mr.png
new file mode 100644
index 000000000..6a061bf4d
Binary files /dev/null and b/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.mr.png differ
diff --git a/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.ne.png b/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.ne.png
new file mode 100644
index 000000000..6a061bf4d
Binary files /dev/null and b/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.ne.png differ
diff --git a/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.pa.png b/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.pa.png
new file mode 100644
index 000000000..6a061bf4d
Binary files /dev/null and b/translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.pa.png differ
diff --git a/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.mr.png b/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.mr.png
new file mode 100644
index 000000000..713b55034
Binary files /dev/null and b/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.mr.png differ
diff --git a/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.ne.png b/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.ne.png
new file mode 100644
index 000000000..713b55034
Binary files /dev/null and b/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.ne.png differ
diff --git a/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.pa.png b/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.pa.png
new file mode 100644
index 000000000..713b55034
Binary files /dev/null and b/translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.pa.png differ
diff --git a/translated_images/ml-for-beginners-video-banner.279f2a268d2130758668f4044f8c252d42f7c0a141c2cb56294c1ccc157cdd1c.mr.png b/translated_images/ml-for-beginners-video-banner.279f2a268d2130758668f4044f8c252d42f7c0a141c2cb56294c1ccc157cdd1c.mr.png
new file mode 100644
index 000000000..966c1b8c0
Binary files /dev/null and b/translated_images/ml-for-beginners-video-banner.279f2a268d2130758668f4044f8c252d42f7c0a141c2cb56294c1ccc157cdd1c.mr.png differ
diff --git a/translated_images/ml-for-beginners-video-banner.279f2a268d2130758668f4044f8c252d42f7c0a141c2cb56294c1ccc157cdd1c.ne.png b/translated_images/ml-for-beginners-video-banner.279f2a268d2130758668f4044f8c252d42f7c0a141c2cb56294c1ccc157cdd1c.ne.png
new file mode 100644
index 000000000..966c1b8c0
Binary files /dev/null and b/translated_images/ml-for-beginners-video-banner.279f2a268d2130758668f4044f8c252d42f7c0a141c2cb56294c1ccc157cdd1c.ne.png differ
diff --git a/translated_images/ml-for-beginners-video-banner.279f2a268d2130758668f4044f8c252d42f7c0a141c2cb56294c1ccc157cdd1c.pa.png b/translated_images/ml-for-beginners-video-banner.279f2a268d2130758668f4044f8c252d42f7c0a141c2cb56294c1ccc157cdd1c.pa.png
new file mode 100644
index 000000000..966c1b8c0
Binary files /dev/null and b/translated_images/ml-for-beginners-video-banner.279f2a268d2130758668f4044f8c252d42f7c0a141c2cb56294c1ccc157cdd1c.pa.png differ
diff --git a/translated_images/ml-for-beginners.7b65fdd1f4f4159800d88d4e11fac859dd5eb2dc500be72f788085b38ab1bccb.mr.png b/translated_images/ml-for-beginners.7b65fdd1f4f4159800d88d4e11fac859dd5eb2dc500be72f788085b38ab1bccb.mr.png
new file mode 100644
index 000000000..2b2904a4b
Binary files /dev/null and b/translated_images/ml-for-beginners.7b65fdd1f4f4159800d88d4e11fac859dd5eb2dc500be72f788085b38ab1bccb.mr.png differ
diff --git a/translated_images/ml-for-beginners.7b65fdd1f4f4159800d88d4e11fac859dd5eb2dc500be72f788085b38ab1bccb.ne.png b/translated_images/ml-for-beginners.7b65fdd1f4f4159800d88d4e11fac859dd5eb2dc500be72f788085b38ab1bccb.ne.png
new file mode 100644
index 000000000..2b2904a4b
Binary files /dev/null and b/translated_images/ml-for-beginners.7b65fdd1f4f4159800d88d4e11fac859dd5eb2dc500be72f788085b38ab1bccb.ne.png differ
diff --git a/translated_images/ml-for-beginners.7b65fdd1f4f4159800d88d4e11fac859dd5eb2dc500be72f788085b38ab1bccb.pa.png b/translated_images/ml-for-beginners.7b65fdd1f4f4159800d88d4e11fac859dd5eb2dc500be72f788085b38ab1bccb.pa.png
new file mode 100644
index 000000000..2b2904a4b
Binary files /dev/null and b/translated_images/ml-for-beginners.7b65fdd1f4f4159800d88d4e11fac859dd5eb2dc500be72f788085b38ab1bccb.pa.png differ
diff --git a/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.mr.png b/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.mr.png
new file mode 100644
index 000000000..b79ba265c
Binary files /dev/null and b/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.mr.png differ
diff --git a/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.ne.png b/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.ne.png
new file mode 100644
index 000000000..b79ba265c
Binary files /dev/null and b/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.ne.png differ
diff --git a/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.pa.png b/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.pa.png
new file mode 100644
index 000000000..b79ba265c
Binary files /dev/null and b/translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.pa.png differ
diff --git a/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.mr.png b/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.mr.png
new file mode 100644
index 000000000..9bd65dae9
Binary files /dev/null and b/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.mr.png differ
diff --git a/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.ne.png b/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.ne.png
new file mode 100644
index 000000000..9bd65dae9
Binary files /dev/null and b/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.ne.png differ
diff --git a/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.pa.png b/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.pa.png
new file mode 100644
index 000000000..9bd65dae9
Binary files /dev/null and b/translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.pa.png differ
diff --git a/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.mr.png b/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.mr.png
new file mode 100644
index 000000000..a6a94731a
Binary files /dev/null and b/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.mr.png differ
diff --git a/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.ne.png b/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.ne.png
new file mode 100644
index 000000000..a6a94731a
Binary files /dev/null and b/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.ne.png differ
diff --git a/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.pa.png b/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.pa.png
new file mode 100644
index 000000000..a6a94731a
Binary files /dev/null and b/translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.pa.png differ
diff --git a/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.mr.png b/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.mr.png
new file mode 100644
index 000000000..a6dfbc88c
Binary files /dev/null and b/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.mr.png differ
diff --git a/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.ne.png b/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.ne.png
new file mode 100644
index 000000000..a6dfbc88c
Binary files /dev/null and b/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.ne.png differ
diff --git a/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.pa.png b/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.pa.png
new file mode 100644
index 000000000..a6dfbc88c
Binary files /dev/null and b/translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.pa.png differ
diff --git a/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.mr.png b/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.mr.png
new file mode 100644
index 000000000..d4259d60d
Binary files /dev/null and b/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.mr.png differ
diff --git a/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.ne.png b/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.ne.png
new file mode 100644
index 000000000..d4259d60d
Binary files /dev/null and b/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.ne.png differ
diff --git a/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.pa.png b/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.pa.png
new file mode 100644
index 000000000..d4259d60d
Binary files /dev/null and b/translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.pa.png differ
diff --git a/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.mr.png b/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.mr.png
new file mode 100644
index 000000000..673aeaca4
Binary files /dev/null and b/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.mr.png differ
diff --git a/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.ne.png b/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.ne.png
new file mode 100644
index 000000000..673aeaca4
Binary files /dev/null and b/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.ne.png differ
diff --git a/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.pa.png b/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.pa.png
new file mode 100644
index 000000000..673aeaca4
Binary files /dev/null and b/translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.pa.png differ
diff --git a/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.mr.png b/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.mr.png
new file mode 100644
index 000000000..c8f514d41
Binary files /dev/null and b/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.mr.png differ
diff --git a/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.ne.png b/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.ne.png
new file mode 100644
index 000000000..c8f514d41
Binary files /dev/null and b/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.ne.png differ
diff --git a/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.pa.png b/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.pa.png
new file mode 100644
index 000000000..c8f514d41
Binary files /dev/null and b/translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.pa.png differ
diff --git a/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.mr.png b/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.mr.png
new file mode 100644
index 000000000..b8c9c5044
Binary files /dev/null and b/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.mr.png differ
diff --git a/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.ne.png b/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.ne.png
new file mode 100644
index 000000000..b8c9c5044
Binary files /dev/null and b/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.ne.png differ
diff --git a/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.pa.png b/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.pa.png
new file mode 100644
index 000000000..b8c9c5044
Binary files /dev/null and b/translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.pa.png differ
diff --git a/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.mr.png b/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.mr.png
new file mode 100644
index 000000000..f84dfd1a0
Binary files /dev/null and b/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.mr.png differ
diff --git a/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.ne.png b/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.ne.png
new file mode 100644
index 000000000..f84dfd1a0
Binary files /dev/null and b/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.ne.png differ
diff --git a/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.pa.png b/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.pa.png
new file mode 100644
index 000000000..f84dfd1a0
Binary files /dev/null and b/translated_images/mountaincar.43d56e588ce581c2d035f28cf038a9af112bec043b2ef8da40ac86119b1e3a93.pa.png differ
diff --git a/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.mr.png b/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.mr.png
new file mode 100644
index 000000000..a9d28008e
Binary files /dev/null and b/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.mr.png differ
diff --git a/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.ne.png b/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.ne.png
new file mode 100644
index 000000000..a9d28008e
Binary files /dev/null and b/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.ne.png differ
diff --git a/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.pa.png b/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.pa.png
new file mode 100644
index 000000000..a9d28008e
Binary files /dev/null and b/translated_images/multinomial-ordinal.944fe02295fd6cdffa68facf540d0534c6f428a5d906edc40507cda4356950ee.pa.png differ
diff --git a/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.mr.png b/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.mr.png
new file mode 100644
index 000000000..8e9246960
Binary files /dev/null and b/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.mr.png differ
diff --git a/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.ne.png b/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.ne.png
new file mode 100644
index 000000000..8e9246960
Binary files /dev/null and b/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.ne.png differ
diff --git a/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.pa.png b/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.pa.png
new file mode 100644
index 000000000..8e9246960
Binary files /dev/null and b/translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.pa.png differ
diff --git a/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.mr.png b/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.mr.png
new file mode 100644
index 000000000..29e55a863
Binary files /dev/null and b/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.mr.png differ
diff --git a/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.ne.png b/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.ne.png
new file mode 100644
index 000000000..29e55a863
Binary files /dev/null and b/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.ne.png differ
diff --git a/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.pa.png b/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.pa.png
new file mode 100644
index 000000000..29e55a863
Binary files /dev/null and b/translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.pa.png differ
diff --git a/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.mr.jpg b/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.mr.jpg
new file mode 100644
index 000000000..d1e4f52d6
Binary files /dev/null and b/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.mr.jpg differ
diff --git a/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.ne.jpg b/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.ne.jpg
new file mode 100644
index 000000000..d1e4f52d6
Binary files /dev/null and b/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.ne.jpg differ
diff --git a/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.pa.jpg b/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.pa.jpg
new file mode 100644
index 000000000..d1e4f52d6
Binary files /dev/null and b/translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.pa.jpg differ
diff --git a/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.mr.png b/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.mr.png
new file mode 100644
index 000000000..14649e72f
Binary files /dev/null and b/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.mr.png differ
diff --git a/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.ne.png b/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.ne.png
new file mode 100644
index 000000000..14649e72f
Binary files /dev/null and b/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.ne.png differ
diff --git a/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.pa.png b/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.pa.png
new file mode 100644
index 000000000..14649e72f
Binary files /dev/null and b/translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.pa.png differ
diff --git a/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.mr.png b/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.mr.png
new file mode 100644
index 000000000..65dc241c5
Binary files /dev/null and b/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.mr.png differ
diff --git a/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.ne.png b/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.ne.png
new file mode 100644
index 000000000..65dc241c5
Binary files /dev/null and b/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.ne.png differ
diff --git a/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.pa.png b/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.pa.png
new file mode 100644
index 000000000..65dc241c5
Binary files /dev/null and b/translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.pa.png differ
diff --git a/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.mr.jpg b/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.mr.jpg
new file mode 100644
index 000000000..81cca6e4c
Binary files /dev/null and b/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.mr.jpg differ
diff --git a/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.ne.jpg b/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.ne.jpg
new file mode 100644
index 000000000..81cca6e4c
Binary files /dev/null and b/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.ne.jpg differ
diff --git a/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.pa.jpg b/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.pa.jpg
new file mode 100644
index 000000000..81cca6e4c
Binary files /dev/null and b/translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.pa.jpg differ
diff --git a/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.mr.png b/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.mr.png
new file mode 100644
index 000000000..f78d1dc36
Binary files /dev/null and b/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.mr.png differ
diff --git a/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.ne.png b/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.ne.png
new file mode 100644
index 000000000..f78d1dc36
Binary files /dev/null and b/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.ne.png differ
diff --git a/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.pa.png b/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.pa.png
new file mode 100644
index 000000000..f78d1dc36
Binary files /dev/null and b/translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.pa.png differ
diff --git a/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.mr.jpg b/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.mr.jpg
new file mode 100644
index 000000000..f25b446ec
Binary files /dev/null and b/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.mr.jpg differ
diff --git a/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.ne.jpg b/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.ne.jpg
new file mode 100644
index 000000000..f25b446ec
Binary files /dev/null and b/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.ne.jpg differ
diff --git a/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.pa.jpg b/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.pa.jpg
new file mode 100644
index 000000000..f25b446ec
Binary files /dev/null and b/translated_images/parsnip.cd2ce92622976502a80714e69ce67e3f2da3274a9ef5ac484c1308c5f3cb0f4a.pa.jpg differ
diff --git a/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.mr.png b/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.mr.png
new file mode 100644
index 000000000..43581e5f3
Binary files /dev/null and b/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.mr.png differ
diff --git a/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.ne.png b/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.ne.png
new file mode 100644
index 000000000..43581e5f3
Binary files /dev/null and b/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.ne.png differ
diff --git a/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.pa.png b/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.pa.png
new file mode 100644
index 000000000..43581e5f3
Binary files /dev/null and b/translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.pa.png differ
diff --git a/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.mr.png b/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.mr.png
new file mode 100644
index 000000000..06ab9e06b
Binary files /dev/null and b/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.mr.png differ
diff --git a/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.ne.png b/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.ne.png
new file mode 100644
index 000000000..06ab9e06b
Binary files /dev/null and b/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.ne.png differ
diff --git a/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.pa.png b/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.pa.png
new file mode 100644
index 000000000..06ab9e06b
Binary files /dev/null and b/translated_images/pie-pumpkins-scatter.d14f9804a53f927e7fe39aa072486f4ed1bdd7f31c8bb08f476855f4b02350c3.pa.png differ
diff --git a/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.mr.png b/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.mr.png
new file mode 100644
index 000000000..e66b95652
Binary files /dev/null and b/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.mr.png differ
diff --git a/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.ne.png b/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.ne.png
new file mode 100644
index 000000000..e66b95652
Binary files /dev/null and b/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.ne.png differ
diff --git a/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.pa.png b/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.pa.png
new file mode 100644
index 000000000..e66b95652
Binary files /dev/null and b/translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.pa.png differ
diff --git a/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.mr.png b/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.mr.png
new file mode 100644
index 000000000..f6ee37ec1
Binary files /dev/null and b/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.mr.png differ
diff --git a/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.ne.png b/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.ne.png
new file mode 100644
index 000000000..f6ee37ec1
Binary files /dev/null and b/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.ne.png differ
diff --git a/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.pa.png b/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.pa.png
new file mode 100644
index 000000000..f6ee37ec1
Binary files /dev/null and b/translated_images/poly-results.ee587348f0f1f60bd16c471321b0b2f2457d0eaa99d99ec0ced4affc900fa96c.pa.png differ
diff --git a/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.mr.png b/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.mr.png
new file mode 100644
index 000000000..bdf4f7ffe
Binary files /dev/null and b/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.mr.png differ
diff --git a/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.ne.png b/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.ne.png
new file mode 100644
index 000000000..bdf4f7ffe
Binary files /dev/null and b/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.ne.png differ
diff --git a/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.pa.png b/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.pa.png
new file mode 100644
index 000000000..bdf4f7ffe
Binary files /dev/null and b/translated_images/polynomial.8fce4663e7283dfb9864eef62255b57cc2799e187c6d0a6dbfcf29fec6e52faa.pa.png differ
diff --git a/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.mr.png b/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.mr.png
new file mode 100644
index 000000000..384e2d9e3
Binary files /dev/null and b/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.mr.png differ
diff --git a/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.ne.png b/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.ne.png
new file mode 100644
index 000000000..384e2d9e3
Binary files /dev/null and b/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.ne.png differ
diff --git a/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.pa.png b/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.pa.png
new file mode 100644
index 000000000..384e2d9e3
Binary files /dev/null and b/translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.pa.png differ
diff --git a/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.mr.png b/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.mr.png
new file mode 100644
index 000000000..11efe5d61
Binary files /dev/null and b/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.mr.png differ
diff --git a/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.ne.png b/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.ne.png
new file mode 100644
index 000000000..11efe5d61
Binary files /dev/null and b/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.ne.png differ
diff --git a/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.pa.png b/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.pa.png
new file mode 100644
index 000000000..11efe5d61
Binary files /dev/null and b/translated_images/price-by-variety.744a2f9925d9bcb43a9a8c69469ce2520c9524fabfa270b1b2422cc2450d6d11.pa.png differ
diff --git a/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.mr.png b/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.mr.png
new file mode 100644
index 000000000..55a81a2f3
Binary files /dev/null and b/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.mr.png differ
diff --git a/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.ne.png b/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.ne.png
new file mode 100644
index 000000000..55a81a2f3
Binary files /dev/null and b/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.ne.png differ
diff --git a/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.pa.png b/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.pa.png
new file mode 100644
index 000000000..55a81a2f3
Binary files /dev/null and b/translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.pa.png differ
diff --git a/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.mr.png b/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.mr.png
new file mode 100644
index 000000000..3e303968f
Binary files /dev/null and b/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.mr.png differ
diff --git a/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.ne.png b/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.ne.png
new file mode 100644
index 000000000..3e303968f
Binary files /dev/null and b/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.ne.png differ
diff --git a/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.pa.png b/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.pa.png
new file mode 100644
index 000000000..3e303968f
Binary files /dev/null and b/translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.pa.png differ
diff --git a/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.mr.png b/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.mr.png
new file mode 100644
index 000000000..01a2dc518
Binary files /dev/null and b/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.mr.png differ
diff --git a/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.ne.png b/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.ne.png
new file mode 100644
index 000000000..01a2dc518
Binary files /dev/null and b/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.ne.png differ
diff --git a/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.pa.png b/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.pa.png
new file mode 100644
index 000000000..01a2dc518
Binary files /dev/null and b/translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.pa.png differ
diff --git a/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.mr.png b/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.mr.png
new file mode 100644
index 000000000..7de8e90f5
Binary files /dev/null and b/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.mr.png differ
diff --git a/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.ne.png b/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.ne.png
new file mode 100644
index 000000000..7de8e90f5
Binary files /dev/null and b/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.ne.png differ
diff --git a/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.pa.png b/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.pa.png
new file mode 100644
index 000000000..7de8e90f5
Binary files /dev/null and b/translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.pa.png differ
diff --git a/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.mr.jpeg b/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.mr.jpeg
new file mode 100644
index 000000000..2d42e2f24
Binary files /dev/null and b/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.mr.jpeg differ
diff --git a/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.ne.jpeg b/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.ne.jpeg
new file mode 100644
index 000000000..2d42e2f24
Binary files /dev/null and b/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.ne.jpeg differ
diff --git a/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.pa.jpeg b/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.pa.jpeg
new file mode 100644
index 000000000..2d42e2f24
Binary files /dev/null and b/translated_images/r_learners_sm.cd14eb3581a9f28d32086cc042ee8c46f621a5b4e0d59c75f7c642d891327043.pa.jpeg differ
diff --git a/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.mr.jpeg b/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.mr.jpeg
new file mode 100644
index 000000000..2d42e2f24
Binary files /dev/null and b/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.mr.jpeg differ
diff --git a/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.ne.jpeg b/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.ne.jpeg
new file mode 100644
index 000000000..2d42e2f24
Binary files /dev/null and b/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.ne.jpeg differ
diff --git a/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.pa.jpeg b/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.pa.jpeg
new file mode 100644
index 000000000..2d42e2f24
Binary files /dev/null and b/translated_images/r_learners_sm.e25fa9c205b3a3f98d66476321637b48f61d9c23526309ce82d0a43e88b90f66.pa.jpeg differ
diff --git a/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.mr.jpeg b/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.mr.jpeg
new file mode 100644
index 000000000..2d42e2f24
Binary files /dev/null and b/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.mr.jpeg differ
diff --git a/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.ne.jpeg b/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.ne.jpeg
new file mode 100644
index 000000000..2d42e2f24
Binary files /dev/null and b/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.ne.jpeg differ
diff --git a/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.pa.jpeg b/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.pa.jpeg
new file mode 100644
index 000000000..2d42e2f24
Binary files /dev/null and b/translated_images/r_learners_sm.e4a71b113ffbedfe727048ec69741a9295954195d8761c35c46f20277de5f684.pa.jpeg differ
diff --git a/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.mr.jpeg b/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.mr.jpeg
new file mode 100644
index 000000000..2d42e2f24
Binary files /dev/null and b/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.mr.jpeg differ
diff --git a/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.ne.jpeg b/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.ne.jpeg
new file mode 100644
index 000000000..2d42e2f24
Binary files /dev/null and b/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.ne.jpeg differ
diff --git a/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.pa.jpeg b/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.pa.jpeg
new file mode 100644
index 000000000..2d42e2f24
Binary files /dev/null and b/translated_images/r_learners_sm.f9199f76f1e2e49304b19155ebcfb8bad375aface4625be7e95404486a48d332.pa.jpeg differ
diff --git a/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.mr.png b/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.mr.png
new file mode 100644
index 000000000..75cc4826e
Binary files /dev/null and b/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.mr.png differ
diff --git a/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.ne.png b/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.ne.png
new file mode 100644
index 000000000..75cc4826e
Binary files /dev/null and b/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.ne.png differ
diff --git a/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.pa.png b/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.pa.png
new file mode 100644
index 000000000..75cc4826e
Binary files /dev/null and b/translated_images/recipes.186acfa8ed2e8f0059ce17ef22c9452d7b25e7e1e4b044573bacec9a18e040d2.pa.png differ
diff --git a/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.mr.png b/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.mr.png
new file mode 100644
index 000000000..75cc4826e
Binary files /dev/null and b/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.mr.png differ
diff --git a/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.ne.png b/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.ne.png
new file mode 100644
index 000000000..75cc4826e
Binary files /dev/null and b/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.ne.png differ
diff --git a/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.pa.png b/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.pa.png
new file mode 100644
index 000000000..75cc4826e
Binary files /dev/null and b/translated_images/recipes.9ad10d8a4056bf89413fc33644924e0bd29d7c12fb2154e03a1ca3d2d6ea9323.pa.png differ
diff --git a/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.mr.png b/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.mr.png
new file mode 100644
index 000000000..a11e46fae
Binary files /dev/null and b/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.mr.png differ
diff --git a/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.ne.png b/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.ne.png
new file mode 100644
index 000000000..a11e46fae
Binary files /dev/null and b/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.ne.png differ
diff --git a/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.pa.png b/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.pa.png
new file mode 100644
index 000000000..a11e46fae
Binary files /dev/null and b/translated_images/scaled.91897dfbaa26ca4a5f45c99aaabe79b1f1bcd1237f8124c20c0510df482e9f49.pa.png differ
diff --git a/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.mr.png b/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.mr.png
new file mode 100644
index 000000000..a11e46fae
Binary files /dev/null and b/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.mr.png differ
diff --git a/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.ne.png b/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.ne.png
new file mode 100644
index 000000000..a11e46fae
Binary files /dev/null and b/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.ne.png differ
diff --git a/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.pa.png b/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.pa.png
new file mode 100644
index 000000000..a11e46fae
Binary files /dev/null and b/translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.pa.png differ
diff --git a/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.mr.png b/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.mr.png
new file mode 100644
index 000000000..be0bf88f9
Binary files /dev/null and b/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.mr.png differ
diff --git a/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.ne.png b/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.ne.png
new file mode 100644
index 000000000..be0bf88f9
Binary files /dev/null and b/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.ne.png differ
diff --git a/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.pa.png b/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.pa.png
new file mode 100644
index 000000000..be0bf88f9
Binary files /dev/null and b/translated_images/scatter-dayofyear-color.65790faefbb9d54fb8f6223c566c445b9fac58a1c15f41f8641c3842af9d548b.pa.png differ
diff --git a/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.mr.png b/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.mr.png
new file mode 100644
index 000000000..38538e271
Binary files /dev/null and b/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.mr.png differ
diff --git a/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.ne.png b/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.ne.png
new file mode 100644
index 000000000..38538e271
Binary files /dev/null and b/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.ne.png differ
diff --git a/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.pa.png b/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.pa.png
new file mode 100644
index 000000000..38538e271
Binary files /dev/null and b/translated_images/scatter-dayofyear.bc171c189c9fd553fe93030180b9c00ed123148a577640e4d7481c4c01811972.pa.png differ
diff --git a/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.mr.png b/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.mr.png
new file mode 100644
index 000000000..0b61bb73f
Binary files /dev/null and b/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.mr.png differ
diff --git a/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.ne.png b/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.ne.png
new file mode 100644
index 000000000..0b61bb73f
Binary files /dev/null and b/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.ne.png differ
diff --git a/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.pa.png b/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.pa.png
new file mode 100644
index 000000000..0b61bb73f
Binary files /dev/null and b/translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.pa.png differ
diff --git a/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.mr.png b/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.mr.png
new file mode 100644
index 000000000..1dce2f9c3
Binary files /dev/null and b/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.mr.png differ
diff --git a/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.ne.png b/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.ne.png
new file mode 100644
index 000000000..1dce2f9c3
Binary files /dev/null and b/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.ne.png differ
diff --git a/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.pa.png b/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.pa.png
new file mode 100644
index 000000000..1dce2f9c3
Binary files /dev/null and b/translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.pa.png differ
diff --git a/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.mr.jpg b/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.mr.jpg
new file mode 100644
index 000000000..cfaa90905
Binary files /dev/null and b/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.mr.jpg differ
diff --git a/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.ne.jpg b/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.ne.jpg
new file mode 100644
index 000000000..cfaa90905
Binary files /dev/null and b/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.ne.jpg differ
diff --git a/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.pa.jpg b/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.pa.jpg
new file mode 100644
index 000000000..cfaa90905
Binary files /dev/null and b/translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.pa.jpg differ
diff --git a/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.mr.png b/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.mr.png
new file mode 100644
index 000000000..41dbdc339
Binary files /dev/null and b/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.mr.png differ
diff --git a/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.ne.png b/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.ne.png
new file mode 100644
index 000000000..41dbdc339
Binary files /dev/null and b/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.ne.png differ
diff --git a/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.pa.png b/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.pa.png
new file mode 100644
index 000000000..41dbdc339
Binary files /dev/null and b/translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.pa.png differ
diff --git a/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.mr.png b/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.mr.png
new file mode 100644
index 000000000..024fcdc3f
Binary files /dev/null and b/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.mr.png differ
diff --git a/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.ne.png b/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.ne.png
new file mode 100644
index 000000000..024fcdc3f
Binary files /dev/null and b/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.ne.png differ
diff --git a/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.pa.png b/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.pa.png
new file mode 100644
index 000000000..024fcdc3f
Binary files /dev/null and b/translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.pa.png differ
diff --git a/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.mr.png b/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.mr.png
new file mode 100644
index 000000000..9a25f6739
Binary files /dev/null and b/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.mr.png differ
diff --git a/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.ne.png b/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.ne.png
new file mode 100644
index 000000000..9a25f6739
Binary files /dev/null and b/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.ne.png differ
diff --git a/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.pa.png b/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.pa.png
new file mode 100644
index 000000000..9a25f6739
Binary files /dev/null and b/translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.pa.png differ
diff --git a/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.mr.png b/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.mr.png
new file mode 100644
index 000000000..636c5f258
Binary files /dev/null and b/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.mr.png differ
diff --git a/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.ne.png b/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.ne.png
new file mode 100644
index 000000000..636c5f258
Binary files /dev/null and b/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.ne.png differ
diff --git a/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.pa.png b/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.pa.png
new file mode 100644
index 000000000..636c5f258
Binary files /dev/null and b/translated_images/svm.621ae7b516d678e08ed23af77ff1750b5fe392976917f0606861567b779e8862.pa.png differ
diff --git a/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.mr.png b/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.mr.png
new file mode 100644
index 000000000..13510aa1f
Binary files /dev/null and b/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.mr.png differ
diff --git a/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.ne.png b/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.ne.png
new file mode 100644
index 000000000..13510aa1f
Binary files /dev/null and b/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.ne.png differ
diff --git a/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.pa.png b/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.pa.png
new file mode 100644
index 000000000..13510aa1f
Binary files /dev/null and b/translated_images/swarm.56d253ae80a2c0f5940dec8ed3c02e57161891ff44cc0dce5c3cb2f65a4233e7.pa.png differ
diff --git a/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.mr.png b/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.mr.png
new file mode 100644
index 000000000..425f08cd7
Binary files /dev/null and b/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.mr.png differ
diff --git a/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.ne.png b/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.ne.png
new file mode 100644
index 000000000..425f08cd7
Binary files /dev/null and b/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.ne.png differ
diff --git a/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.pa.png b/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.pa.png
new file mode 100644
index 000000000..425f08cd7
Binary files /dev/null and b/translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.pa.png differ
diff --git a/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.mr.png b/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.mr.png
new file mode 100644
index 000000000..1aa2d71ab
Binary files /dev/null and b/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.mr.png differ
diff --git a/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.ne.png b/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.ne.png
new file mode 100644
index 000000000..1aa2d71ab
Binary files /dev/null and b/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.ne.png differ
diff --git a/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.pa.png b/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.pa.png
new file mode 100644
index 000000000..1aa2d71ab
Binary files /dev/null and b/translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.pa.png differ
diff --git a/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.mr.jpg b/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.mr.jpg
new file mode 100644
index 000000000..d9f7349ab
Binary files /dev/null and b/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.mr.jpg differ
diff --git a/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.ne.jpg b/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.ne.jpg
new file mode 100644
index 000000000..d9f7349ab
Binary files /dev/null and b/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.ne.jpg differ
diff --git a/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.pa.jpg b/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.pa.jpg
new file mode 100644
index 000000000..d9f7349ab
Binary files /dev/null and b/translated_images/thai-food.c47a7a7f9f05c21892a1f9dc7bf30669e6d18dfda420c5c7ebb4153f6a304edd.pa.jpg differ
diff --git a/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.mr.png b/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.mr.png
new file mode 100644
index 000000000..d680b55de
Binary files /dev/null and b/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.mr.png differ
diff --git a/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.ne.png b/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.ne.png
new file mode 100644
index 000000000..d680b55de
Binary files /dev/null and b/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.ne.png differ
diff --git a/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.pa.png b/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.pa.png
new file mode 100644
index 000000000..d680b55de
Binary files /dev/null and b/translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.pa.png differ
diff --git a/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.mr.png b/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.mr.png
new file mode 100644
index 000000000..990cacf94
Binary files /dev/null and b/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.mr.png differ
diff --git a/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.ne.png b/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.ne.png
new file mode 100644
index 000000000..990cacf94
Binary files /dev/null and b/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.ne.png differ
diff --git a/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.pa.png b/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.pa.png
new file mode 100644
index 000000000..990cacf94
Binary files /dev/null and b/translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.pa.png differ
diff --git a/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.mr.png b/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.mr.png
new file mode 100644
index 000000000..253c13709
Binary files /dev/null and b/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.mr.png differ
diff --git a/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.ne.png b/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.ne.png
new file mode 100644
index 000000000..253c13709
Binary files /dev/null and b/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.ne.png differ
diff --git a/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.pa.png b/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.pa.png
new file mode 100644
index 000000000..253c13709
Binary files /dev/null and b/translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.pa.png differ
diff --git a/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.mr.png b/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.mr.png
new file mode 100644
index 000000000..1149b1644
Binary files /dev/null and b/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.mr.png differ
diff --git a/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.ne.png b/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.ne.png
new file mode 100644
index 000000000..1149b1644
Binary files /dev/null and b/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.ne.png differ
diff --git a/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.pa.png b/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.pa.png
new file mode 100644
index 000000000..1149b1644
Binary files /dev/null and b/translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.pa.png differ
diff --git a/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.mr.png b/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.mr.png
new file mode 100644
index 000000000..1149b1644
Binary files /dev/null and b/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.mr.png differ
diff --git a/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.ne.png b/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.ne.png
new file mode 100644
index 000000000..1149b1644
Binary files /dev/null and b/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.ne.png differ
diff --git a/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.pa.png b/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.pa.png
new file mode 100644
index 000000000..1149b1644
Binary files /dev/null and b/translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.pa.png differ
diff --git a/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.mr.png b/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.mr.png
new file mode 100644
index 000000000..b995b24b9
Binary files /dev/null and b/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.mr.png differ
diff --git a/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.ne.png b/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.ne.png
new file mode 100644
index 000000000..b995b24b9
Binary files /dev/null and b/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.ne.png differ
diff --git a/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.pa.png b/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.pa.png
new file mode 100644
index 000000000..b995b24b9
Binary files /dev/null and b/translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.pa.png differ
diff --git a/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.mr.png b/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.mr.png
new file mode 100644
index 000000000..f5527d750
Binary files /dev/null and b/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.mr.png differ
diff --git a/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.ne.png b/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.ne.png
new file mode 100644
index 000000000..f5527d750
Binary files /dev/null and b/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.ne.png differ
diff --git a/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.pa.png b/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.pa.png
new file mode 100644
index 000000000..f5527d750
Binary files /dev/null and b/translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.pa.png differ
diff --git a/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.mr.jpg b/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.mr.jpg
new file mode 100644
index 000000000..631db5fad
Binary files /dev/null and b/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.mr.jpg differ
diff --git a/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.ne.jpg b/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.ne.jpg
new file mode 100644
index 000000000..631db5fad
Binary files /dev/null and b/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.ne.jpg differ
diff --git a/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.pa.jpg b/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.pa.jpg
new file mode 100644
index 000000000..631db5fad
Binary files /dev/null and b/translated_images/turntable.f2b86b13c53302dc106aa741de9dc96ac372864cf458dd6f879119857aab01da.pa.jpg differ
diff --git a/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.mr.jpg b/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.mr.jpg
new file mode 100644
index 000000000..0db92ac89
Binary files /dev/null and b/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.mr.jpg differ
diff --git a/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.ne.jpg b/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.ne.jpg
new file mode 100644
index 000000000..0db92ac89
Binary files /dev/null and b/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.ne.jpg differ
diff --git a/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.pa.jpg b/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.pa.jpg
new file mode 100644
index 000000000..0db92ac89
Binary files /dev/null and b/translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.pa.jpg differ
diff --git a/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.mr.jpg b/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.mr.jpg
new file mode 100644
index 000000000..d09c41c8c
Binary files /dev/null and b/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.mr.jpg differ
diff --git a/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.ne.jpg b/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.ne.jpg
new file mode 100644
index 000000000..d09c41c8c
Binary files /dev/null and b/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.ne.jpg differ
diff --git a/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.pa.jpg b/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.pa.jpg
new file mode 100644
index 000000000..d09c41c8c
Binary files /dev/null and b/translated_images/unruly_data.0eedc7ced92d2d919cf5ea197bfe0fe9a30780c4bf7cdcf14ff4e9dc5a4c7267.pa.jpg differ
diff --git a/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.mr.png b/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.mr.png
new file mode 100644
index 000000000..935f6530f
Binary files /dev/null and b/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.mr.png differ
diff --git a/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.ne.png b/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.ne.png
new file mode 100644
index 000000000..935f6530f
Binary files /dev/null and b/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.ne.png differ
diff --git a/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.pa.png b/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.pa.png
new file mode 100644
index 000000000..935f6530f
Binary files /dev/null and b/translated_images/violin.ffceb68923177011dc8f1ae08f78297c69f2b868d82fa4e754cc923b185d4f7d.pa.png differ
diff --git a/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.mr.png b/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.mr.png
new file mode 100644
index 000000000..e4db5db46
Binary files /dev/null and b/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.mr.png differ
diff --git a/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.ne.png b/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.ne.png
new file mode 100644
index 000000000..e4db5db46
Binary files /dev/null and b/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.ne.png differ
diff --git a/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.pa.png b/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.pa.png
new file mode 100644
index 000000000..e4db5db46
Binary files /dev/null and b/translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.pa.png differ
diff --git a/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.mr.png b/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.mr.png
new file mode 100644
index 000000000..ebb533ea9
Binary files /dev/null and b/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.mr.png differ
diff --git a/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.ne.png b/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.ne.png
new file mode 100644
index 000000000..ebb533ea9
Binary files /dev/null and b/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.ne.png differ
diff --git a/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.pa.png b/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.pa.png
new file mode 100644
index 000000000..ebb533ea9
Binary files /dev/null and b/translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.pa.png differ
diff --git a/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.mr.png b/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.mr.png
new file mode 100644
index 000000000..a7f831a76
Binary files /dev/null and b/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.mr.png differ
diff --git a/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.ne.png b/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.ne.png
new file mode 100644
index 000000000..a7f831a76
Binary files /dev/null and b/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.ne.png differ
diff --git a/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.pa.png b/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.pa.png
new file mode 100644
index 000000000..a7f831a76
Binary files /dev/null and b/translated_images/wolf.a56d3d4070ca0c79007b28aa2203a1801ebd496f242525381225992ece6c369d.pa.png differ
diff --git a/translations/mr/1-Introduction/1-intro-to-ML/README.md b/translations/mr/1-Introduction/1-intro-to-ML/README.md
new file mode 100644
index 000000000..0cac71f92
--- /dev/null
+++ b/translations/mr/1-Introduction/1-intro-to-ML/README.md
@@ -0,0 +1,159 @@
+
+# मशीन लर्निंगची ओळख
+
+## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1/)
+
+---
+
+[](https://youtu.be/6mSx_KJxcHI "शिकणाऱ्यांसाठी मशीन लर्निंग - नवशिक्यांसाठी मशीन लर्निंगची ओळख")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा आणि या धड्याचा लहानसा व्हिडिओ पाहा.
+
+या नवशिक्यांसाठीच्या पारंपरिक मशीन लर्निंग अभ्यासक्रमात आपले स्वागत आहे! तुम्ही या विषयात अगदी नवीन असाल किंवा अनुभवी ML व्यावसायिक असाल, ज्यांना काही भाग पुन्हा शिकायचा आहे, तरीही आम्ही तुमचे स्वागत करतो! आम्ही तुमच्या ML अभ्यासासाठी एक मैत्रीपूर्ण प्रारंभिक ठिकाण तयार करू इच्छितो आणि तुमच्या [प्रतिक्रियेचा](https://github.com/microsoft/ML-For-Beginners/discussions) विचार करून त्यात सुधारणा करू इच्छितो.
+
+[](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 एक्सप्लोर करा**. [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) शी परिचित व्हा, ही ML लायब्ररींची एक मालिका आहे जी आम्ही या धड्यांमध्ये संदर्भित करतो.
+
+---
+## मशीन लर्निंग म्हणजे काय?
+
+'मशीन लर्निंग' हा शब्द आजकाल सर्वाधिक लोकप्रिय आणि वारंवार वापरला जाणारा शब्द आहे. तुम्ही कोणत्याही क्षेत्रात काम करत असाल तरी, तंत्रज्ञानाशी काही प्रमाणात परिचित असाल तर तुम्ही हा शब्द किमान एकदा ऐकला असेल. मात्र, मशीन लर्निंगची यांत्रिकी बहुतेक लोकांसाठी गूढच असते. मशीन लर्निंगच्या नवशिक्यांसाठी हा विषय कधी कधी गोंधळात टाकणारा वाटतो. त्यामुळे, मशीन लर्निंग म्हणजे नेमके काय हे समजून घेणे आणि ते टप्प्याटप्प्याने, व्यावहारिक उदाहरणांद्वारे शिकणे महत्त्वाचे आहे.
+
+---
+## हायप कर्व्ह
+
+
+
+> 'मशीन लर्निंग' या शब्दाचा अलीकडील 'हायप कर्व्ह' Google Trends वर दाखवला आहे
+
+---
+## एक गूढ विश्व
+
+आपण एका अशा विश्वात राहतो जे अनेक गूढ गोष्टींनी भरलेले आहे. स्टीफन हॉकिंग, अल्बर्ट आईन्स्टाईन यांसारख्या महान शास्त्रज्ञांनी आपल्या आजूबाजूच्या जगातील गूढ गोष्टी उलगडण्यासाठी अर्थपूर्ण माहिती शोधण्यास आपले जीवन समर्पित केले आहे. शिकण्याची हीच मानवी प्रवृत्ती आहे: एक मानवी मूल नवीन गोष्टी शिकते आणि प्रौढ होईपर्यंत दरवर्षी त्यांच्या जगाची रचना उलगडते.
+
+---
+## मुलाचे मेंदू
+
+मुलाचा मेंदू आणि इंद्रिये त्यांच्या आजूबाजूच्या गोष्टींचे निरीक्षण करतात आणि हळूहळू जीवनातील लपलेल्या पद्धती शिकतात, ज्यामुळे मुलाला शिकलेल्या पद्धती ओळखण्यासाठी तार्किक नियम तयार करता येतात. मानवी मेंदूची शिकण्याची प्रक्रिया मानवाला या जगातील सर्वात प्रगत सजीव बनवते. लपलेल्या पद्धती शोधून सतत शिकणे आणि नंतर त्या पद्धतींवर नावीन्यपूर्णता करणे आपल्याला आपल्या आयुष्यभर चांगले बनवण्यास सक्षम करते. शिकण्याची ही क्षमता आणि विकसित होण्याची क्षमता [मेंदूची प्लास्टिसिटी](https://www.simplypsychology.org/brain-plasticity.html) या संकल्पनेशी संबंधित आहे. वरवर पाहता, मानवी मेंदूच्या शिकण्याच्या प्रक्रियेतील प्रेरणादायक साम्य आणि मशीन लर्निंगच्या संकल्पनांमध्ये काही साम्य आहे.
+
+---
+## मानवी मेंदू
+
+[मानवी मेंदू](https://www.livescience.com/29365-human-brain.html) वास्तविक जगातील गोष्टींचे निरीक्षण करतो, प्राप्त माहिती प्रक्रिया करतो, तर्कसंगत निर्णय घेतो आणि परिस्थितीनुसार विशिष्ट कृती करतो. यालाच आपण बुद्धिमान वर्तन म्हणतो. जेव्हा आपण बुद्धिमान वर्तन प्रक्रियेची प्रतिकृती मशीनमध्ये प्रोग्राम करतो, तेव्हा त्याला कृत्रिम बुद्धिमत्ता (AI) म्हणतात.
+
+---
+## काही परिभाषा
+
+जरी हे शब्द गोंधळात टाकणारे असले तरी, मशीन लर्निंग (ML) ही कृत्रिम बुद्धिमत्तेची एक महत्त्वाची उपश्रेणी आहे. **ML चा उद्देश विशेष अल्गोरिदमचा वापर करून प्राप्त डेटामधून अर्थपूर्ण माहिती शोधणे आणि लपलेल्या पद्धती शोधणे हा आहे, ज्यामुळे तर्कसंगत निर्णय प्रक्रियेस समर्थन मिळते.**
+
+---
+## AI, ML, डीप लर्निंग
+
+
+
+> 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
+
+शिकण्याचा अनुभव अधिक चांगला करण्यासाठी, आम्ही न्यूरल नेटवर्क्सच्या क्लिष्टतेपासून, 'डीप लर्निंग' - न्यूरल नेटवर्क्स वापरून अनेक स्तरांचे मॉडेल तयार करणे - आणि AI पासून दूर राहू, ज्यावर आम्ही वेगळ्या अभ्यासक्रमात चर्चा करू. आम्ही डेटा सायन्सवर लक्ष केंद्रित करण्यासाठी एक आगामी अभ्यासक्रम देखील ऑफर करू.
+
+---
+## मशीन लर्निंग का शिकावे?
+
+सिस्टमच्या दृष्टिकोनातून, मशीन लर्निंग म्हणजे स्वयंचलित प्रणाली तयार करणे, ज्या डेटामधून लपलेल्या पद्धती शिकून बुद्धिमान निर्णय घेण्यास मदत करतात.
+
+ही प्रेरणा मानवी मेंदू बाह्य जगातून प्राप्त डेटाच्या आधारे विशिष्ट गोष्टी कशा शिकतो यावरून सैलपणे प्रेरित आहे.
+
+✅ विचार करा की एखाद्या व्यवसायाने हार्ड-कोडेड नियम-आधारित इंजिन तयार करण्याऐवजी मशीन लर्निंग धोरणे का वापरावी?
+
+---
+## मशीन लर्निंगचे अनुप्रयोग
+
+मशीन लर्निंगचे अनुप्रयोग आता जवळजवळ सर्वत्र आहेत आणि आपल्या समाजांमध्ये वाहणाऱ्या डेटासारखेच सर्वव्यापी आहेत, जे आपल्या स्मार्टफोन, कनेक्टेड डिव्हाइस आणि इतर प्रणालींनी निर्माण केले आहे. अत्याधुनिक मशीन लर्निंग अल्गोरिदमच्या प्रचंड क्षमतेचा विचार करता, संशोधक त्यांच्या बहुआयामी आणि बहुविषयक वास्तविक-जगातील समस्यांचे समाधान करण्याच्या क्षमतेचा शोध घेत आहेत, आणि त्यातून सकारात्मक परिणाम मिळत आहेत.
+
+---
+## लागू केलेल्या ML चे उदाहरणे
+
+**तुम्ही मशीन लर्निंगचा वापर अनेक प्रकारे करू शकता**:
+
+- रुग्णाच्या वैद्यकीय इतिहास किंवा अहवालांवरून आजार होण्याची शक्यता अंदाज करण्यासाठी.
+- हवामान डेटाचा उपयोग करून हवामानाच्या घटनांचा अंदाज लावण्यासाठी.
+- मजकुराचा भावार्थ समजून घेण्यासाठी.
+- खोट्या बातम्या शोधून प्रचार थांबवण्यासाठी.
+
+वित्त, अर्थशास्त्र, पृथ्वी विज्ञान, अवकाश अन्वेषण, जैववैद्यकीय अभियांत्रिकी, संज्ञानात्मक विज्ञान, आणि अगदी मानविकी क्षेत्रांनी देखील त्यांच्या क्षेत्रातील कठीण, डेटा-प्रक्रिया-प्रधान समस्यांचे समाधान करण्यासाठी मशीन लर्निंगचा अवलंब केला आहे.
+
+---
+## निष्कर्ष
+
+मशीन लर्निंग वास्तविक-जगातील किंवा निर्माण केलेल्या डेटामधून अर्थपूर्ण अंतर्दृष्टी शोधून पद्धती शोधण्याची प्रक्रिया स्वयंचलित करते. व्यवसाय, आरोग्य, आणि आर्थिक अनुप्रयोगांमध्ये याने स्वतःला अत्यंत मौल्यवान सिद्ध केले आहे.
+
+निकट भविष्यात, मशीन लर्निंगच्या मूलभूत गोष्टी समजून घेणे कोणत्याही क्षेत्रातील लोकांसाठी आवश्यक होणार आहे, कारण त्याचा व्यापक अवलंब होत आहे.
+
+---
+# 🚀 आव्हान
+
+कागदावर किंवा [Excalidraw](https://excalidraw.com/) सारख्या ऑनलाइन अॅपचा वापर करून, AI, ML, डीप लर्निंग, आणि डेटा सायन्स यांच्यातील फरक तुमच्या समजुतीनुसार रेखाटून दाखवा. तसेच, या तंत्रांचा कोणत्या समस्यांमध्ये चांगला उपयोग होतो याबद्दल काही कल्पना जोडा.
+
+# [व्याख्यानानंतरची प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2/)
+
+---
+# पुनरावलोकन आणि स्व-अभ्यास
+
+क्लाउडमध्ये 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) घ्या.
+
+---
+# असाइनमेंट
+
+[सुरू करा](assignment.md)
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/1-Introduction/1-intro-to-ML/assignment.md b/translations/mr/1-Introduction/1-intro-to-ML/assignment.md
new file mode 100644
index 000000000..88ac79e76
--- /dev/null
+++ b/translations/mr/1-Introduction/1-intro-to-ML/assignment.md
@@ -0,0 +1,23 @@
+
+# सुरुवात करा आणि कार्यान्वित व्हा
+
+## सूचना
+
+या नॉन-ग्रेडेड असाइनमेंटमध्ये, तुम्ही 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/mr/1-Introduction/2-history-of-ML/README.md b/translations/mr/1-Introduction/2-history-of-ML/README.md
new file mode 100644
index 000000000..4da1ac1cf
--- /dev/null
+++ b/translations/mr/1-Introduction/2-history-of-ML/README.md
@@ -0,0 +1,164 @@
+
+# मशीन लर्निंगचा इतिहास
+
+
+> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3/)
+
+---
+
+[](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 [Bayes Theorem](https://wikipedia.org/wiki/Bayes%27_theorem) आणि त्याचे पूर्ववर्ती. हा प्रमेय आणि त्याचे उपयोग संभाव्यता वर्णन करतात, जे पूर्वीच्या ज्ञानावर आधारित एखाद्या घटनेच्या घडण्याची शक्यता सांगतात.
+- 1805 [Least Square Theory](https://wikipedia.org/wiki/Least_squares) फ्रेंच गणितज्ञ Adrien-Marie Legendre यांनी मांडलेली. ही सिद्धांत, जी आपण Regression युनिटमध्ये शिकणार आहात, डेटा फिटिंगसाठी मदत करते.
+- 1913 [Markov Chains](https://wikipedia.org/wiki/Markov_chain), रशियन गणितज्ञ Andrey Markov यांच्या नावावर आधारित, पूर्वस्थितीवर आधारित संभाव्य घटनांच्या अनुक्रमाचे वर्णन करण्यासाठी वापरली जाते.
+- 1957 [Perceptron](https://wikipedia.org/wiki/Perceptron) हा एक प्रकारचा रेषीय वर्गीकरण करणारा अल्गोरिदम आहे, जो अमेरिकन मानसशास्त्रज्ञ Frank Rosenblatt यांनी शोधला आणि जो डीप लर्निंगच्या प्रगतीसाठी आधारभूत ठरला.
+
+---
+
+- 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor) हा अल्गोरिदम मूळतः मार्ग शोधण्यासाठी तयार करण्यात आला होता. ML संदर्भात तो नमुने ओळखण्यासाठी वापरला जातो.
+- 1970 [Backpropagation](https://wikipedia.org/wiki/Backpropagation) [feedforward neural networks](https://wikipedia.org/wiki/Feedforward_neural_network) प्रशिक्षणासाठी वापरला जातो.
+- 1982 [Recurrent Neural Networks](https://wikipedia.org/wiki/Recurrent_neural_network) हे कृत्रिम न्यूरल नेटवर्क्स आहेत, जे feedforward neural networks वर आधारित आहेत आणि तात्कालिक ग्राफ तयार करतात.
+
+✅ थोडे संशोधन करा. ML आणि AI च्या इतिहासातील आणखी कोणते महत्त्वाचे टप्पे आहेत?
+
+---
+## 1950: विचार करणाऱ्या मशीनची संकल्पना
+
+Alan Turing, एक विलक्षण व्यक्ती ज्याला [2019 मध्ये](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) सार्वजनिक मताने 20व्या शतकातील सर्वात महान वैज्ञानिक म्हणून निवडले गेले, 'विचार करू शकणाऱ्या मशीन' या संकल्पनेचा पाया घालण्यात मदत केल्याचे श्रेय दिले जाते. त्यांनी [Turing Test](https://www.bbc.com/news/technology-18475646) तयार करून या संकल्पनेच्या विरोधकांशी आणि स्वतःच्या अनुभवजन्य पुराव्याच्या गरजेशी सामना केला, ज्याचा अभ्यास आपण NLP धड्यांमध्ये करणार आहात.
+
+---
+## 1956: डार्टमथ समर रिसर्च प्रोजेक्ट
+
+"डार्टमथ समर रिसर्च प्रोजेक्ट ऑन आर्टिफिशियल इंटेलिजन्स हे कृत्रिम बुद्धिमत्ता क्षेत्रासाठी एक महत्त्वपूर्ण घटना होती," आणि याच ठिकाणी 'कृत्रिम बुद्धिमत्ता' हा शब्द तयार करण्यात आला ([source](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)).
+
+> शिकण्याचा प्रत्येक पैलू किंवा बुद्धिमत्तेची कोणतीही वैशिष्ट्ये इतक्या अचूकपणे वर्णन करता येऊ शकतात की मशीनला ते अनुकरण करता येईल.
+
+---
+
+प्रमुख संशोधक, गणिताचे प्राध्यापक John McCarthy, "शिकण्याचा प्रत्येक पैलू किंवा बुद्धिमत्तेची कोणतीही वैशिष्ट्ये इतक्या अचूकपणे वर्णन करता येऊ शकतात की मशीनला ते अनुकरण करता येईल" या गृहीतकाच्या आधारावर पुढे जाण्याची आशा व्यक्त केली. सहभागी व्यक्तींमध्ये Marvin Minsky यांचाही समावेश होता, जो या क्षेत्रातील आणखी एक दिग्गज होता.
+
+या कार्यशाळेने "प्रतीकात्मक पद्धतींचा उदय, मर्यादित डोमेनवर केंद्रित प्रणाली (प्रारंभिक तज्ज्ञ प्रणाली), आणि deductive प्रणाली विरुद्ध inductive प्रणाली" यासह अनेक चर्चांना चालना दिली ([source](https://wikipedia.org/wiki/Dartmouth_workshop)).
+
+---
+## 1956 - 1974: "सुवर्णयुग"
+
+1950 च्या दशकापासून ते 70 च्या दशकाच्या मध्यापर्यंत, AI अनेक समस्या सोडवू शकेल अशी आशा मोठ्या प्रमाणावर होती. 1967 मध्ये Marvin Minsky यांनी आत्मविश्वासाने सांगितले की "एका पिढीच्या आत ... 'कृत्रिम बुद्धिमत्ता' तयार करण्याचा प्रश्न मोठ्या प्रमाणात सोडवला जाईल." (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
+
+नैसर्गिक भाषा प्रक्रिया संशोधन फुलले, शोध अधिक परिष्कृत आणि शक्तिशाली बनला, आणि 'मायक्रो-वर्ल्ड्स' ही संकल्पना तयार झाली, जिथे साध्या कार्ये साध्या भाषेतील सूचनांचा वापर करून पूर्ण केली गेली.
+
+---
+
+सरकारी संस्थांकडून संशोधनाला चांगले अनुदान मिळाले, संगणकीय आणि अल्गोरिदम्समध्ये प्रगती झाली, आणि बुद्धिमान मशीनचे प्रोटोटाइप तयार करण्यात आले. या मशीनमध्ये काही उदाहरणे आहेत:
+
+* [Shakey the robot](https://wikipedia.org/wiki/Shakey_the_robot), जो कार्य 'बुद्धिमत्तेने' कसे करायचे ते ठरवू शकतो.
+
+ 
+ > Shakey, 1972 मध्ये
+
+---
+
+* Eliza, एक प्रारंभिक 'चॅटरबॉट', लोकांशी संवाद साधू शकतो आणि एक प्राथमिक 'थेरपिस्ट' म्हणून काम करू शकतो. NLP धड्यांमध्ये तुम्ही Eliza बद्दल अधिक शिकाल.
+
+ 
+ > Eliza, एक चॅटबॉट
+
+---
+
+* "Blocks world" हे मायक्रो-वर्ल्डचे एक उदाहरण होते जिथे ब्लॉक्स स्टॅक आणि सॉर्ट करता येत होते, आणि मशीनला निर्णय घेण्याचे शिक्षण देण्याचे प्रयोग केले जाऊ शकले. [SHRDLU](https://wikipedia.org/wiki/SHRDLU) सारख्या लायब्ररीसह तयार केलेल्या प्रगतींनी भाषा प्रक्रिया पुढे नेली.
+
+ [](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLU सह ब्लॉक्स वर्ल्ड")
+
+ > 🎥 वरील प्रतिमेवर क्लिक करा: SHRDLU सह ब्लॉक्स वर्ल्ड
+
+---
+## 1974 - 1980: "AI हिवाळा"
+
+1970 च्या दशकाच्या मध्यापर्यंत, 'बुद्धिमान मशीन' तयार करण्याची जटिलता कमी लेखली गेली होती आणि उपलब्ध संगणकीय शक्तीच्या तुलनेत त्याचे वचन अतिशयोक्तीपूर्ण असल्याचे स्पष्ट झाले. निधी कमी झाला आणि क्षेत्रातील आत्मविश्वास कमी झाला. आत्मविश्वासावर परिणाम करणाऱ्या काही मुद्द्यांमध्ये समाविष्ट होते:
+---
+- **मर्यादा**. संगणकीय शक्ती खूप मर्यादित होती.
+- **संयोजनात्मक स्फोट**. संगणकांकडून अधिक अपेक्षा केल्यामुळे प्रशिक्षित करावयाच्या पॅरामीटर्सची संख्या घातांकीय पद्धतीने वाढली, परंतु संगणकीय शक्ती आणि क्षमता यामध्ये समांतर प्रगती झाली नाही.
+- **डेटाची कमतरता**. डेटाची कमतरता होती ज्यामुळे अल्गोरिदम्सची चाचणी, विकास आणि सुधारणा करण्याची प्रक्रिया अडथळ्यात आली.
+- **आपण योग्य प्रश्न विचारतो आहोत का?**. विचारले जात असलेल्या प्रश्नांवरच प्रश्न उपस्थित होऊ लागले. संशोधकांना त्यांच्या दृष्टिकोनांबद्दल टीका सहन करावी लागली:
+ - Turing चाचण्यांवर 'चिनी खोली सिद्धांत' यासह प्रश्न उपस्थित करण्यात आले, ज्याने असे मांडले की, "डिजिटल संगणक प्रोग्रामिंगमुळे भाषा समजल्यासारखे वाटू शकते परंतु वास्तविक समज निर्माण करू शकत नाही." ([source](https://plato.stanford.edu/entries/chinese-room/))
+ - समाजात कृत्रिम बुद्धिमत्ता, जसे की "थेरपिस्ट" ELIZA, सादर करण्याच्या नैतिकतेवर प्रश्न उपस्थित करण्यात आले.
+
+---
+
+त्याच वेळी, विविध AI विचारधारा तयार होऊ लागल्या. ["scruffy" vs. "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies) पद्धतींमध्ये द्वंद्व निर्माण झाले. _Scruffy_ प्रयोगशाळा तासन्तास प्रोग्राम्समध्ये बदल करत होत्या जोपर्यंत त्यांना हवे असलेले परिणाम मिळत नाहीत. _Neat_ प्रयोगशाळा "तार्किक आणि औपचारिक समस्या सोडवण्यावर लक्ष केंद्रित करत होत्या". ELIZA आणि SHRDLU हे प्रसिद्ध _scruffy_ प्रणाली होते. 1980 च्या दशकात, ML प्रणाली पुनरुत्पादनीय बनवण्याची मागणी वाढल्यामुळे, _neat_ दृष्टिकोन हळूहळू पुढे आला कारण त्याचे परिणाम अधिक स्पष्टपणे समजावून सांगता येतात.
+
+---
+## 1980s तज्ज्ञ प्रणाली
+
+जसे क्षेत्र वाढले, त्याचा व्यवसायासाठी होणारा फायदा स्पष्ट झाला, आणि 1980 च्या दशकात 'तज्ज्ञ प्रणाली' चा प्रसार झाला. "तज्ज्ञ प्रणाली कृत्रिम बुद्धिमत्ता (AI) सॉफ्टवेअरच्या पहिल्या खऱ्या यशस्वी प्रकारांपैकी एक होती." ([source](https://wikipedia.org/wiki/Expert_system)).
+
+हा प्रकार प्रत्यक्षात _हायब्रिड_ होता, ज्यामध्ये व्यवसायाच्या गरजा परिभाषित करणारे नियम इंजिन आणि नियम प्रणालीचा उपयोग करून नवीन तथ्ये शोधण्यासाठी एक अनुमान इंजिन समाविष्ट होते.
+
+या काळात न्यूरल नेटवर्क्सकडे अधिक लक्ष दिले गेले.
+
+---
+## 1987 - 1993: AI 'थंडावलेला'
+
+विशेष तज्ज्ञ प्रणाली हार्डवेअरचा प्रसार झाल्यामुळे तो खूपच विशेष झाला. वैयक्तिक संगणकांचा उदय देखील या मोठ्या, विशेष, केंद्रीकृत प्रणालींशी स्पर्धा करत होता. संगणकीय लोकशाहीकरण सुरू झाले होते, आणि शेवटी यामुळे मोठ्या डेटाच्या आधुनिक स्फोटाला मार्ग मिळाला.
+
+---
+## 1993 - 2011
+
+या कालखंडाने ML आणि AI साठी नवीन युग पाहिले ज्यामुळे पूर्वी डेटाची कमतरता आणि संगणकीय शक्तीच्या अभावामुळे निर्माण झालेल्या काही समस्या सोडवता आल्या. डेटाची मात्रा वेगाने वाढू लागली आणि अधिक व्यापकपणे उपलब्ध होऊ लागली, चांगल्या आणि वाईटासाठी, विशेषतः 2007 च्या सुमारास स्मार्टफोनच्या आगमनासह. संगणकीय शक्ती घातांकीय पद्धतीने वाढली, आणि अल्गोरिदम्स त्याच्याबरोबर विकसित झाले. क्षेत्राने परिपक्वता मिळवायला सुरुवात केली कारण भूतकाळातील मुक्तपणे चालणारे दिवस खऱ्या शिस्तीत रूपांतरित होऊ लागले.
+
+---
+## आज
+
+आज मशीन लर्निंग आणि AI आपल्या जीवनाच्या जवळजवळ प्रत्येक भागाला स्पर्श करतात. या युगात या अल्गोरिदम्सचा मानवी जीवनावर होणाऱ्या परिणामांचा काळजीपूर्वक अभ्यास करण्याची गरज आहे. Microsoft चे Brad Smith म्हणतात, "माहिती तंत्रज्ञान मूलभूत मानवी अधिकार संरक्षणांसारख्या मुद्द्यांना उभे करते जसे की गोपनीयता आणि अभिव्यक्ती स्वातंत्र्य. हे मुद्दे या उत्पादने तयार करणाऱ्या तंत्रज्ञान कंपन्यांसाठी जबाबदारी वाढवतात. आमच्या मते, ते विचारशील सरकारी नियमन आणि स्वीकारार्ह उपयोगांभोवती मानदंडांच्या विकासासाठी देखील कॉल करतात" ([source](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)).
+
+---
+
+भविष्य काय आहे हे पाहायचे आहे, परंतु या संगणकीय प्रणाली आणि त्यावर चालणारे सॉफ्टवेअर आणि अल्गोरिदम्स समजून घेणे महत्त्वाचे आहे. आम्हाला आशा आहे की हा अभ्यासक्रम तुम्हाला चांगले समजून घेण्यास मदत करेल जेणेकरून तुम्ही स्वतः निर्णय घेऊ शकाल.
+
+[](https://www.youtube.com/watch?v=mTtDfKgLm54 "डीप लर्निंगचा इतिहास")
+> 🎥 वरील प्रतिमेवर क्लिक करा: Yann LeCun या व्याख्यानात डीप लर्निंगच्या इतिहासावर चर्चा करतात
+
+---
+## 🚀आव्हान
+
+या ऐतिहासिक क्षणांपैकी एका क्षणाचा अभ्यास करा आणि त्यामागील लोकांबद्दल अधिक जाणून घ्या. तेथील पात्रे खूपच मनोरंजक आहेत, आणि कोणताही वैज्ञानिक शोध सांस्कृतिक निर्वातात तयार झाला नाही. तुम्हाला काय सापडते?
+
+## [व्याख्यानानंतरची प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4/)
+
+---
+## पुनरावलोकन आणि स्व-अभ्यास
+
+पाहण्यासाठी आणि ऐकण्यासाठी काही गोष्टी येथे दिल्या आहेत:
+
+[Amy Boyd यांचा AI च्या उत्क्रांतीवर चर्चा करणारा पॉडकास्ट](http://runasradio.com/Shows/Show/739)
+
+[](https://www.youtube.com/watch?v=EJt3_bFYKss "Amy Boyd द्वारे AI चा इतिहास")
+
+---
+
+## असाइनमेंट
+
+[एक टाइमलाइन तयार करा](assignment.md)
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/1-Introduction/2-history-of-ML/assignment.md b/translations/mr/1-Introduction/2-history-of-ML/assignment.md
new file mode 100644
index 000000000..af86f7ec3
--- /dev/null
+++ b/translations/mr/1-Introduction/2-history-of-ML/assignment.md
@@ -0,0 +1,25 @@
+
+# टाइमलाइन तयार करा
+
+## सूचना
+
+[या रेपो](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/mr/1-Introduction/3-fairness/README.md b/translations/mr/1-Introduction/3-fairness/README.md
new file mode 100644
index 000000000..9f948313f
--- /dev/null
+++ b/translations/mr/1-Introduction/3-fairness/README.md
@@ -0,0 +1,156 @@
+
+# जबाबदार AI सह मशीन लर्निंग सोल्यूशन्स तयार करणे
+
+
+> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/5/)
+
+## परिचय
+
+या अभ्यासक्रमात, तुम्ही मशीन लर्निंग आपल्या दैनंदिन जीवनावर कसा आणि किती प्रभाव टाकतो हे शोधायला सुरुवात कराल. अगदी आत्ताच, आरोग्य तपासणी, कर्ज मंजुरी किंवा फसवणूक शोधणे यांसारख्या दैनंदिन निर्णय प्रक्रियेत प्रणाली आणि मॉडेल्स सहभागी आहेत. त्यामुळे हे मॉडेल्स विश्वासार्ह परिणाम देण्यासाठी चांगले कार्य करणे महत्त्वाचे आहे. जसे कोणतेही सॉफ्टवेअर अॅप्लिकेशन अपूर्ण असते, तसेच AI प्रणाली देखील अपेक्षांवर खरी उतरणार नाहीत किंवा अवांछित परिणाम देऊ शकतात. म्हणूनच, AI मॉडेलच्या वर्तनाला समजून घेणे आणि स्पष्ट करणे आवश्यक आहे.
+
+कल्पना करा, जेव्हा तुम्ही मॉडेल तयार करण्यासाठी वापरत असलेल्या डेटामध्ये विशिष्ट लोकसंख्येचा अभाव असेल, जसे की वंश, लिंग, राजकीय दृष्टिकोन, धर्म, किंवा काही लोकसंख्येचे असमान प्रतिनिधित्व असेल, तेव्हा काय होईल? जर मॉडेलचा परिणाम विशिष्ट लोकसंख्येला प्राधान्य देण्यासाठी वापरला गेला तर काय होईल? अशा परिस्थितीत अॅप्लिकेशनवर काय परिणाम होईल? याशिवाय, जर मॉडेलचा प्रतिकूल परिणाम झाला आणि तो लोकांसाठी हानिकारक ठरला, तर त्यासाठी कोण जबाबदार असेल? या अभ्यासक्रमात आपण या प्रश्नांचा शोध घेणार आहोत.
+
+या धड्यात, तुम्ही:
+
+- मशीन लर्निंगमधील न्याय्यतेचे महत्त्व आणि त्यासंबंधित हानींबद्दल जागरूकता वाढवाल.
+- विश्वासार्हता आणि सुरक्षिततेसाठी अपवादात्मक परिस्थितींचा शोध घेण्याच्या पद्धतींशी परिचित व्हाल.
+- सर्वांना सक्षम करण्यासाठी समावेशक प्रणाली डिझाइन करण्याची गरज समजून घ्याल.
+- डेटा आणि लोकांच्या गोपनीयतेचे आणि सुरक्षिततेचे संरक्षण करणे किती महत्त्वाचे आहे हे शोधाल.
+- AI मॉडेल्सच्या वर्तनाचे स्पष्टीकरण देण्यासाठी "ग्लास बॉक्स" दृष्टिकोनाचे महत्त्व पाहाल.
+- AI प्रणालींवर विश्वास निर्माण करण्यासाठी जबाबदारी किती महत्त्वाची आहे याची जाणीव ठेवाल.
+
+## पूर्वअट
+
+पूर्वअट म्हणून, कृपया "जबाबदार AI तत्त्वे" शिकण्याचा मार्ग घ्या आणि खालील व्हिडिओ पहा:
+
+[जबाबदार AI बद्दल अधिक जाणून घ्या](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+
+[](https://youtu.be/dnC8-uUZXSc "Microsoft चा जबाबदार AI दृष्टिकोन")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा: Microsoft चा जबाबदार AI दृष्टिकोन
+
+## न्याय्यता
+
+AI प्रणालींनी प्रत्येकाला न्याय्य वागणूक द्यावी आणि समान गटांवर वेगळा परिणाम होणार नाही याची खात्री करावी. उदाहरणार्थ, जेव्हा AI प्रणाली वैद्यकीय उपचार, कर्ज अर्ज किंवा रोजगाराबाबत मार्गदर्शन देते, तेव्हा समान लक्षणे, आर्थिक परिस्थिती किंवा व्यावसायिक पात्रता असलेल्या प्रत्येकासाठी समान शिफारसी कराव्यात. प्रत्येक माणसामध्ये काही पूर्वग्रह असतात, जे त्यांच्या निर्णयांवर आणि कृतींवर परिणाम करतात. हे पूर्वग्रह आपण AI प्रणाली तयार करण्यासाठी वापरत असलेल्या डेटामध्ये दिसून येऊ शकतात. कधी कधी असे पूर्वग्रह अनवधानाने घडतात. डेटामध्ये पूर्वग्रह कधी आणि कसा येतो हे जाणून घेणे कठीण असते.
+
+**"अन्याय"** म्हणजे लोकांच्या गटावर होणारे नकारात्मक परिणाम किंवा "हानी". हे मुख्यतः खालीलप्रमाणे वर्गीकृत केले जाऊ शकते:
+
+- **वाटप**: जसे की, एका लिंगाला किंवा वंशाला दुसऱ्याच्या तुलनेत प्राधान्य दिले जाते.
+- **सेवेची गुणवत्ता**: जर डेटा एका विशिष्ट परिस्थितीसाठी तयार केला गेला असेल, पण वास्तविकता अधिक गुंतागुंतीची असेल, तर सेवा खराब होऊ शकते. उदाहरणार्थ, एक साबण डिस्पेंसर जो गडद त्वचेच्या लोकांना ओळखू शकत नाही. [संदर्भ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **निंदा**: एखाद्या गोष्टीवर अन्यायकारक टीका करणे किंवा चुकीचे लेबल लावणे. उदाहरणार्थ, एक प्रतिमा लेबलिंग तंत्रज्ञानाने गडद त्वचेच्या लोकांच्या प्रतिमांना चुकीचे लेबल दिले.
+- **अतिरिक्त किंवा अपूर्ण प्रतिनिधित्व**: विशिष्ट गट एका विशिष्ट व्यवसायात दिसत नाही, आणि कोणतीही सेवा किंवा कार्य जे असेच चित्रित करते, ते हानिकारक ठरते.
+- **स्टीरिओटायपिंग**: विशिष्ट गटाशी पूर्वनिर्धारित गुणधर्म जोडणे. उदाहरणार्थ, इंग्रजी आणि तुर्की भाषांतर प्रणालीमध्ये लिंगाशी संबंधित पूर्वग्रहामुळे अचूकतेचा अभाव असू शकतो.
+
+
+> तुर्की भाषांतर
+
+
+> परत इंग्रजी भाषांतर
+
+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 मधील सुरक्षा](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 प्रणालीचा व्यक्ती किंवा समाजावर होणाऱ्या परिणामासाठी जबाबदार असले पाहिजे.
+
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft चा जबाबदार AI दृष्टिकोन")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा: चेहऱ्याच्या ओळखीच्या तंत्रज्ञानावरील इशारा
+
+शेवटी, आमच्या पिढीसमोर असलेला सर्वात मोठा प्रश्न म्हणजे, AI समाजात आणणारी पहिली पिढी म्हणून, संगणक लोकांसाठी जबाबदार कसे राहतील याची खात्री कशी करायची आणि संगणक डिझाइन करणारे लोक इतर सर्वांसाठी जबाबदार राहतील याची खात्री कशी करायची.
+
+## परिणाम मूल्यांकन
+
+मशीन लर्निंग मॉडेल प्रशिक्षण देण्यापूर्वी, AI प्रणालीचा उद्देश समजून घेण्यासाठी, त्याचा हेतू काय आहे, तो कोठे तैनात केला जाईल आणि कोण प्रणालीशी संवाद साधेल हे समजून घेण्यासाठी परिणाम मूल्यांकन करणे महत्त्वाचे आहे. प्रणालीचे पुनरावलोकन करणाऱ्या किंवा चाचणी करणाऱ्या व्यक्तींसाठी संभाव्य जोखमी आणि अपेक्षित परिणाम ओळखताना कोणत्या घटकांचा विचार करायचा हे जाणून घेण्यासाठी हे उपयुक्त आहे.
+
+परिणाम मूल्यांकन करताना लक्ष केंद्रित करण्याचे क्षेत्र खालीलप्रमाणे आहेत:
+
+* **व्यक्तींवर होणारा प्रतिकूल परिणाम**: प्रणालीच्या कार्यक्षमतेस अडथळा आणणाऱ्या कोणत्याही मर्यादा, आवश्यकता किंवा अयोग्य वापराची जाणीव असणे महत्त्वाचे आहे, जेणेकरून प्रणाली व्यक्तींना हानी पोहोचविणाऱ्या पद्धतीने वापरली जाणार नाही याची खात्री होईल.
+* **डेटा आवश्यकता**: प्रणाली डेटा कसा आणि कोठे वापरेल हे समजून घेणे पुनरावलोकनकर्त्यांना कोणत्याही डेटा आवश्यकता लक्षात घेण्यास सक्षम करते (उदा., GDPR किंवा HIPPA डेटा नियम). याशिवाय, प्रशिक्षणासाठी डेटाचा स्रोत किंवा प्रमाण पुरेसे आहे का हे तपासा.
+* **परिणामाचा सारांश**: प्रणालीचा वापर केल्याने उद्भवू शकणाऱ्या संभाव्य हानींची यादी तयार करा. ML जीवनचक्रादरम्यान, ओळखलेल्या समस्यांचे निराकरण किंवा निराकरण केले आहे का ते पुनरावलोकन करा.
+* **सहा मुख्य तत्त्वांसाठी लागू लक्ष्य**: प्रत्येक तत्त्वांमधील लक्ष्ये पूर्ण झाली आहेत का आणि कोणत्याही अंतर आहेत का याचे मूल्यांकन करा.
+
+## जबाबदार AI सह डीबगिंग
+
+सॉफ्टवेअर अॅप्लिकेशन डीबग करण्यासारखेच, AI प्रणाली डीबग करणे ही प्रणालीतील समस्या ओळखण्याची आणि सोडवण्याची आवश्यक प्रक्रिया आहे. मॉडेल अपेक्षेप्रमाणे किंवा जबाबदारीने कार्य करत नाही यावर परिणाम करणारे अनेक घटक असतात. पारंपरिक मॉडेल कार्यप्रदर्शन मेट्रिक्स हे मॉडेलच्या कार्यप्रदर्शनाचे प्रमाणात्मक एकत्रीकरण असते, जे जबाबदार AI तत्त्वांचे उल्लंघन कसे होते हे विश्लेषण करण्यासाठी पुरेसे नाही. याव्यतिरिक्त, मशीन लर्निंग मॉडेल हा एक "ब्लॅक बॉक्स" आहे, ज्यामुळे त्याच्या परिणामांचे स्पष्टीकरण देणे किंवा चूक झाल्यास स्पष्टीकरण देणे कठीण होते. या अभ्यासक्रमात पुढे, आपण जबाबदार AI डॅशबोर्डचा वापर करून AI प्रणाली डीबग कशी करायची ते शिकू. डॅशबोर्ड डेटा सायंटिस्ट आणि AI डेव्हलपरसाठी खालील गोष्टी करण्यासाठी एक सर्वसमावेशक साधन प्रदान करतो:
+
+* **त्रुटी विश्लेषण**: मॉडेलच्या त्रुटींचे वितरण ओळखण्यासाठी, जे प्रणालीच्या न्याय्यतेवर किंवा विश्वासार्हतेवर परिणाम करू शकते.
+* **मॉडेल विहंगावलोकन**: डेटाच्या विविध गटांमध्ये मॉडेलच्या कार्यक्षमतेतील विसंगती शोधण्यासाठी.
+* **डेटा विश्लेषण**: डेटाचे वितरण समजून घेण्यासाठी आणि डेटामध्ये संभाव्य पूर्वग्रह ओळखण्यासाठी, ज्यामुळे न्याय्यता, समाव
+या धड्यात, तुम्ही मशीन लर्निंगमधील न्याय आणि अन्याय या संकल्पनांचे काही मूलभूत ज्ञान शिकले आहे.
+
+या विषयांमध्ये अधिक सखोल जाण्यासाठी हा कार्यशाळा पाहा:
+
+- जबाबदार AI च्या शोधात: तत्त्वांना प्रत्यक्षात आणणे - बेशमिरा नुशी, मेहरनूश समेकी आणि अमित शर्मा यांच्याकडून
+
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: जबाबदार AI तयार करण्यासाठी एक मुक्त स्रोत फ्रेमवर्क")
+
+
+> 🎥 वरील प्रतिमेवर क्लिक करा व्हिडिओसाठी: 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/mr/1-Introduction/3-fairness/assignment.md b/translations/mr/1-Introduction/3-fairness/assignment.md
new file mode 100644
index 000000000..d35feaa07
--- /dev/null
+++ b/translations/mr/1-Introduction/3-fairness/assignment.md
@@ -0,0 +1,25 @@
+
+# जबाबदार 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/mr/1-Introduction/4-techniques-of-ML/README.md b/translations/mr/1-Introduction/4-techniques-of-ML/README.md
new file mode 100644
index 000000000..05de5e102
--- /dev/null
+++ b/translations/mr/1-Introduction/4-techniques-of-ML/README.md
@@ -0,0 +1,132 @@
+
+# मशीन लर्निंगच्या तंत्रज्ञानाचे तंत्र
+
+मशीन लर्निंग मॉडेल तयार करणे, वापरणे आणि त्यांचे व्यवस्थापन करणे हा इतर विकास प्रक्रियांपेक्षा खूप वेगळा प्रवास आहे. या धड्यात, आपण या प्रक्रियेचे गूढ उकलू आणि तुम्हाला आवश्यक असलेल्या मुख्य तंत्रांची रूपरेषा मांडू. तुम्ही:
+
+- मशीन लर्निंग प्रक्रियेच्या उच्च-स्तरीय प्रक्रियेचे आकलन कराल.
+- 'मॉडेल्स', 'भाकिते', आणि 'ट्रेनिंग डेटा' यांसारख्या मूलभूत संकल्पना शोधाल.
+
+## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/7/)
+
+[](https://youtu.be/4NGM0U2ZSHU "मशीन लर्निंगसाठी नवशिक्यांसाठी - मशीन लर्निंगच्या तंत्रज्ञानाचे तंत्र")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा आणि या धड्याचा लघु व्हिडिओ पाहा.
+
+## परिचय
+
+उच्च-स्तरावर, मशीन लर्निंग (ML) प्रक्रियेची निर्मिती ही काही टप्प्यांमध्ये विभागलेली असते:
+
+1. **प्रश्न ठरवा**. बहुतेक ML प्रक्रिया अशा प्रश्नाने सुरू होतात ज्याचे उत्तर साध्या अटींवर आधारित प्रोग्राम किंवा नियम-आधारित इंजिनद्वारे देता येत नाही. हे प्रश्न सहसा डेटाच्या संग्रहावर आधारित भाकितांभोवती फिरतात.
+2. **डेटा गोळा करा आणि तयार करा**. तुमच्या प्रश्नाचे उत्तर देण्यासाठी तुम्हाला डेटा आवश्यक आहे. तुमच्या डेटाची गुणवत्ता आणि कधी कधी प्रमाण हे ठरवते की तुम्ही तुमच्या मूळ प्रश्नाचे उत्तर किती चांगल्या प्रकारे देऊ शकता. डेटाचे व्हिज्युअलायझेशन हा या टप्प्याचा महत्त्वाचा भाग आहे. या टप्प्यात डेटाला ट्रेनिंग आणि टेस्टिंग गटांमध्ये विभागणे देखील समाविष्ट आहे.
+3. **ट्रेनिंग पद्धत निवडा**. तुमच्या प्रश्नावर आणि डेटाच्या स्वरूपावर अवलंबून, तुम्हाला तुमच्या डेटाचे सर्वोत्तम प्रतिबिंबित करण्यासाठी आणि त्यावर अचूक भाकिते करण्यासाठी मॉडेल कसे ट्रेन करायचे ते निवडावे लागेल. ही तुमच्या ML प्रक्रियेची ती पायरी आहे ज्यासाठी विशिष्ट कौशल्य आणि बऱ्याच वेळा मोठ्या प्रमाणात प्रयोग आवश्यक असतो.
+4. **मॉडेल ट्रेन करा**. तुमच्या ट्रेनिंग डेटाचा वापर करून, तुम्ही विविध अल्गोरिदम वापरून मॉडेलला डेटामधील पॅटर्न ओळखण्यासाठी ट्रेन कराल. मॉडेल अंतर्गत वजनांचा लाभ घेऊ शकते, जे डेटाच्या विशिष्ट भागांना इतरांपेक्षा अधिक महत्त्व देण्यासाठी समायोजित केले जाऊ शकते, ज्यामुळे चांगले मॉडेल तयार होईल.
+5. **मॉडेलचे मूल्यमापन करा**. तुमच्या गोळा केलेल्या सेटमधील कधीही न पाहिलेल्या डेटाचा (तुमचा टेस्टिंग डेटा) वापर करून तुम्ही मॉडेल कसे कार्य करत आहे ते पाहता.
+6. **पॅरामीटर ट्यूनिंग**. तुमच्या मॉडेलच्या कार्यक्षमतेच्या आधारे, तुम्ही वेगवेगळ्या पॅरामीटर्स किंवा व्हेरिएबल्स वापरून प्रक्रिया पुन्हा करू शकता, जे मॉडेल ट्रेन करण्यासाठी वापरल्या जाणाऱ्या अल्गोरिदमच्या वर्तनावर नियंत्रण ठेवतात.
+7. **भाकित करा**. तुमच्या मॉडेलची अचूकता तपासण्यासाठी नवीन इनपुट्स वापरा.
+
+## कोणता प्रश्न विचारायचा?
+
+संगणक डेटामधील लपलेले पॅटर्न शोधण्यात विशेषतः कुशल असतात. ही उपयुक्तता संशोधकांसाठी खूप उपयुक्त ठरते, ज्यांना एखाद्या विशिष्ट क्षेत्राबद्दल असे प्रश्न असतात ज्यांचे उत्तर सशर्त नियम-आधारित इंजिन तयार करून सहज देता येत नाही. उदाहरणार्थ, एखाद्या विमा गणितीय कार्यासाठी, डेटा सायंटिस्ट स्मोकर्स आणि नॉन-स्मोकर्सच्या मृत्युदरावर आधारित नियम तयार करू शकतो.
+
+परंतु जेव्हा अनेक इतर व्हेरिएबल्स समीकरणात आणले जातात, तेव्हा ML मॉडेल भूतकाळातील आरोग्य इतिहासावर आधारित भविष्यातील मृत्युदर भाकित करण्यासाठी अधिक कार्यक्षम ठरू शकते. एक आनंददायक उदाहरण म्हणजे एप्रिल महिन्यासाठी हवामान भाकित करणे, ज्यामध्ये अक्षांश, रेखांश, हवामान बदल, समुद्राजवळील अंतर, जेट स्ट्रीमचे पॅटर्न आणि बरेच काही यांचा समावेश आहे.
+
+✅ हवामान विश्लेषणात ML चा वापर करण्यासाठी ऐतिहासिक दृष्टिकोन देणारी ही [स्लाइड डेक](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) पहा.
+
+## मॉडेल तयार करण्यापूर्वीची कामे
+
+तुमचे मॉडेल तयार करण्यास सुरुवात करण्यापूर्वी, तुम्हाला काही कामे पूर्ण करावी लागतील. तुमच्या प्रश्नाची चाचणी घेण्यासाठी आणि मॉडेलच्या भाकितांवर आधारित गृहीतक तयार करण्यासाठी, तुम्हाला काही घटक ओळखणे आणि कॉन्फिगर करणे आवश्यक आहे.
+
+### डेटा
+
+तुमच्या प्रश्नाचे कोणत्याही प्रकारे निश्चित उत्तर देण्यासाठी, तुम्हाला योग्य प्रकारचा पुरेसा डेटा आवश्यक आहे. या टप्प्यावर तुम्हाला दोन गोष्टी कराव्या लागतील:
+
+- **डेटा गोळा करा**. डेटा विश्लेषणातील निष्पक्षतेवरील मागील धडा लक्षात ठेवून, तुमचा डेटा काळजीपूर्वक गोळा करा. या डेटाच्या स्रोतांची, त्यामध्ये असलेल्या कोणत्याही अंतर्निहित पूर्वग्रहांची जाणीव ठेवा आणि त्याचा उगम दस्तऐवजीकरण करा.
+- **डेटा तयार करा**. डेटा तयार करण्याच्या प्रक्रियेत अनेक पायऱ्या असतात. जर डेटा विविध स्रोतांमधून आला असेल, तर तुम्हाला डेटा एकत्रित करणे आणि सामान्य करणे आवश्यक असू शकते. तुम्ही मूळ डेटावर आधारित नवीन डेटा तयार करू शकता (जसे आपण [वर्गीकरण](../../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') पाठवता.
+
+### मॉडेलचे मूल्यमापन करा
+
+ट्रेनिंग प्रक्रिया पूर्ण झाल्यानंतर (मोठ्या मॉडेलला ट्रेन करण्यासाठी अनेक पुनरावृत्ती किंवा 'epochs' लागू शकतात), तुम्ही टेस्ट डेटाचा वापर करून मॉडेलच्या गुणवत्तेचे मूल्यमापन करू शकता. ही डेटा मूळ डेटाचा एक उपसंच आहे, जो मॉडेलने यापूर्वी कधीही विश्लेषण केलेला नाही. तुम्ही तुमच्या मॉडेलच्या गुणवत्तेबद्दल मेट्रिक्सची टेबल प्रिंट करू शकता.
+
+🎓 **मॉडेल फिटिंग**
+
+मशीन लर्निंगच्या संदर्भात, मॉडेल फिटिंग म्हणजे मॉडेलच्या अंतर्गत फंक्शनची अचूकता, जे डेटा विश्लेषण करण्याचा प्रयत्न करते ज्यासह ते परिचित नाही.
+
+🎓 **अंडरफिटिंग** आणि **ओव्हरफिटिंग** ही सामान्य समस्या आहेत ज्या मॉडेलची गुणवत्ता कमी करतात, कारण मॉडेल ट्रेनिंग डेटाशी किंवा खूप घट्ट किंवा खूप सैलपणे जुळते. ओव्हरफिट मॉडेल ट्रेनिंग डेटाचे खूप चांगले भाकित करते कारण त्याने डेटाचे तपशील आणि आवाज खूप चांगल्या प्रकारे शिकले आहे. अंडरफिट मॉडेल अचूक नाही कारण ते त्याच्या ट्रेनिंग डेटाचे किंवा त्याने अद्याप 'पाहिलेले' डेटाचे अचूक विश्लेषण करू शकत नाही.
+
+
+> [जेन लूपर](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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+डेटा सायंटिस्ट्सच्या दैनंदिन कामाबद्दल चर्चा करणाऱ्या मुलाखती ऑनलाइन शोधा. येथे [एक](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/mr/1-Introduction/4-techniques-of-ML/assignment.md b/translations/mr/1-Introduction/4-techniques-of-ML/assignment.md
new file mode 100644
index 000000000..fa8fd4eac
--- /dev/null
+++ b/translations/mr/1-Introduction/4-techniques-of-ML/assignment.md
@@ -0,0 +1,25 @@
+
+# डेटा सायंटिस्टची मुलाखत घ्या
+
+## सूचना
+
+तुमच्या कंपनीत, वापरकर्त्यांच्या गटात, किंवा तुमच्या मित्रांमध्ये किंवा सहाध्यायांमध्ये, अशा व्यक्तीशी चर्चा करा जी व्यावसायिकरित्या डेटा सायंटिस्ट म्हणून काम करते. त्यांच्या दैनंदिन कामकाजाबद्दल ५०० शब्दांचा एक छोटा लेख लिहा. ते विशेषज्ञ आहेत का, किंवा 'फुल स्टॅक' पद्धतीने काम करतात?
+
+## मूल्यांकन निकष
+
+| निकष | उत्कृष्ट | पुरेसे | सुधारणा आवश्यक |
+| ---------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------- | --------------------- |
+| | योग्य लांबीचा लेख, स्रोतांसह सादर केलेला .doc फाईलमध्ये आहे | लेख योग्य प्रकारे स्रोतांसह सादर केलेला नाही किंवा आवश्यक लांबीपेक्षा कमी आहे | लेख सादर केलेला नाही |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/1-Introduction/README.md b/translations/mr/1-Introduction/README.md
new file mode 100644
index 000000000..8d769c700
--- /dev/null
+++ b/translations/mr/1-Introduction/README.md
@@ -0,0 +1,37 @@
+
+# मशीन लर्निंगची ओळख
+
+या अभ्यासक्रमाच्या विभागात, तुम्हाला मशीन लर्निंग क्षेत्राशी संबंधित मूलभूत संकल्पना, त्याचा अर्थ, त्याचा इतिहास आणि संशोधक त्यावर काम करण्यासाठी वापरत असलेल्या तंत्रज्ञानाची ओळख करून दिली जाईल. चला, आपण एकत्रितपणे या नवीन ML च्या जगाचा शोध घेऊया!
+
+
+> फोटो बिल ऑक्सफर्ड यांनी Unsplash वर घेतला आहे
+
+### धडे
+
+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/mr/2-Regression/1-Tools/README.md b/translations/mr/2-Regression/1-Tools/README.md
new file mode 100644
index 000000000..9ada383c0
--- /dev/null
+++ b/translations/mr/2-Regression/1-Tools/README.md
@@ -0,0 +1,239 @@
+
+# Python आणि Scikit-learn वापरून Regression Models सुरू करा
+
+
+
+> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांनी तयार केले आहे
+
+## [पूर्व-व्याख्यान क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9/)
+
+> ### [हा धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+
+## परिचय
+
+या चार धड्यांमध्ये, तुम्ही regression models कसे तयार करायचे ते शिकाल. हे मॉडेल्स कशासाठी वापरले जातात यावर लवकरच चर्चा करू. पण काहीही करण्यापूर्वी, प्रक्रिया सुरू करण्यासाठी योग्य साधने तुमच्याकडे आहेत याची खात्री करा!
+
+या धड्यात, तुम्ही शिकाल:
+
+- स्थानिक मशीन लर्निंग कार्यांसाठी तुमच्या संगणकाचे कॉन्फिगरेशन कसे करायचे.
+- Jupyter notebooks कसे वापरायचे.
+- Scikit-learn वापरणे, त्यात स्थापना समाविष्ट आहे.
+- Linear regression हाताळणीच्या सरावासह एक्सप्लोर करणे.
+
+## स्थापना आणि कॉन्फिगरेशन
+
+[](https://youtu.be/-DfeD2k2Kj0 "मशीन लर्निंगसाठी सुरुवात - मशीन लर्निंग मॉडेल्स तयार करण्यासाठी तुमची साधने सेट करा")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा आणि तुमच्या संगणकासाठी 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/) या सूचनांचे अनुसरण करा. या कोर्समध्ये तुम्ही Visual Studio Code मध्ये Python वापरणार आहात, त्यामुळे 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) चा सराव करा.
+ >
+ > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code सह Python सेटअप करा")
+ >
+ > 🎥 वरील प्रतिमेवर क्लिक करा आणि VS Code मध्ये Python कसे वापरायचे ते पाहा.
+
+3. **Scikit-learn स्थापित करा**, [या सूचनांचे अनुसरण करून](https://scikit-learn.org/stable/install.html). Python 3 वापरण्याची खात्री करण्यासाठी virtual environment वापरण्याची शिफारस केली जाते. जर तुम्ही M1 Mac वर हे लायब्ररी स्थापित करत असाल, तर वरील पृष्ठावर विशेष सूचना आहेत.
+
+4. **Jupyter Notebook स्थापित करा**. तुम्हाला [Jupyter package](https://pypi.org/project/jupyter/) स्थापित करावे लागेल.
+
+## तुमचे ML लेखन वातावरण
+
+तुम्ही **notebooks** वापरून Python कोड विकसित कराल आणि मशीन लर्निंग मॉडेल्स तयार कराल. डेटा सायंटिस्ट्ससाठी हा एक सामान्य साधन प्रकार आहे, आणि त्यांना `.ipynb` या विस्ताराने ओळखले जाते.
+
+Notebooks एक इंटरॅक्टिव्ह वातावरण आहे जेथे तुम्ही कोड लिहू शकता आणि त्याभोवती टिपा आणि दस्तऐवज जोडू शकता, जे प्रायोगिक किंवा संशोधन प्रकल्पांसाठी उपयुक्त ठरते.
+
+[](https://youtu.be/7E-jC8FLA2E "मशीन लर्निंगसाठी सुरुवात - Regression Models तयार करण्यासाठी Jupyter Notebooks सेट करा")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा आणि या सरावासाठी Jupyter Notebooks कसे सेट करायचे ते पाहा.
+
+### सराव - Notebook सह काम करा
+
+या फोल्डरमध्ये, तुम्हाला _notebook.ipynb_ नावाची फाईल सापडेल.
+
+1. _notebook.ipynb_ Visual Studio Code मध्ये उघडा.
+
+ Jupyter server Python 3+ सह सुरू होईल. तुम्हाला notebook मध्ये `run` करण्यायोग्य कोड ब्लॉक्स सापडतील. कोड ब्लॉक चालवण्यासाठी प्ले बटणासारख्या चिन्हावर क्लिक करा.
+
+2. `md` चिन्ह निवडा आणि markdown मध्ये **# Welcome to your notebook** हा मजकूर जोडा.
+
+ त्यानंतर, काही Python कोड जोडा.
+
+3. कोड ब्लॉकमध्ये **print('hello notebook')** टाइप करा.
+4. कोड चालवण्यासाठी बाण निवडा.
+
+ तुम्हाला प्रिंट केलेला मजकूर दिसेल:
+
+ ```output
+ hello notebook
+ ```
+
+
+
+तुम्ही तुमच्या कोडमध्ये टिप्पण्या जोडून notebook स्वतःच दस्तऐवजीकरण करू शकता.
+
+✅ विचार करा की वेब डेव्हलपरचे कार्य वातावरण डेटा सायंटिस्टच्या कार्य वातावरणापेक्षा किती वेगळे आहे.
+
+## Scikit-learn सह सुरुवात
+
+आता Python तुमच्या स्थानिक वातावरणात सेट केले आहे, आणि तुम्ही Jupyter notebooks मध्ये आरामदायक आहात, चला Scikit-learn मध्येही तितकेच आरामदायक होऊया. Scikit-learn (याला `sci` म्हणतात, जसे `science`) ML कार्ये करण्यासाठी एक [विस्तृत API](https://scikit-learn.org/stable/modules/classes.html#api-ref) प्रदान करते.
+
+त्यांच्या [वेबसाइटनुसार](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn ही एक ओपन सोर्स मशीन लर्निंग लायब्ररी आहे जी supervised आणि unsupervised learning ला समर्थन देते. यामध्ये मॉडेल फिटिंग, डेटा प्रीप्रोसेसिंग, मॉडेल निवड आणि मूल्यांकन, आणि इतर अनेक उपयुक्तता साधने समाविष्ट आहेत."
+
+या कोर्समध्ये, तुम्ही Scikit-learn आणि इतर साधने वापरून 'पारंपरिक मशीन लर्निंग' कार्ये कराल. आम्ही neural networks आणि deep learning टाळले आहे, कारण ते आमच्या आगामी 'AI for Beginners' अभ्यासक्रमात चांगल्या प्रकारे समाविष्ट केले जातील.
+
+Scikit-learn मॉडेल्स तयार करणे आणि त्यांचे मूल्यांकन करणे सोपे करते. हे प्रामुख्याने संख्यात्मक डेटावर लक्ष केंद्रित करते आणि शिकण्यासाठी तयार केलेले datasets समाविष्ट करते. चला, Scikit-learn च्या काही मूलभूत डेटासह पहिला ML मॉडेल तयार करण्याची प्रक्रिया एक्सप्लोर करूया.
+
+## सराव - तुमचा पहिला Scikit-learn notebook
+
+> हा ट्युटोरियल 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) प्रेरित आहे.
+
+[](https://youtu.be/2xkXL5EUpS0 "मशीन लर्निंगसाठी सुरुवात - Python मध्ये तुमचा पहिला Linear Regression प्रकल्प")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा आणि या सरावासाठी मार्गदर्शन पाहा.
+
+_notebook.ipynb_ फाईलमधील सर्व सेल्स 'trash can' चिन्हावर क्लिक करून साफ करा.
+
+या विभागात, तुम्ही Scikit-learn मध्ये शिकण्यासाठी तयार केलेल्या diabetes dataset सह काम कराल. कल्पना करा की तुम्हाला diabetic रुग्णांसाठी उपचार चाचणी करायची आहे. मशीन लर्निंग मॉडेल्स तुम्हाला कोणते रुग्ण उपचारांना चांगला प्रतिसाद देतील हे ठरवण्यासाठी मदत करू शकतात. अगदी मूलभूत regression मॉडेल देखील, जेव्हा व्हिज्युअलाइझ केले जाते, तेव्हा तुम्हाला clinical trials आयोजित करण्यासाठी उपयुक्त माहिती देऊ शकते.
+
+✅ Regression पद्धतींच्या विविध प्रकारांबद्दल विचार करा. तुम्हाला एखाद्या व्यक्तीच्या वयावर आधारित उंचीचा अंदाज घ्यायचा असल्यास, तुम्ही linear regression वापराल, कारण तुम्ही **संख्यात्मक मूल्य** शोधत आहात. जर तुम्हाला एखाद्या प्रकारच्या खाद्यपदार्थाला vegan मानावे की नाही हे शोधायचे असेल, तर तुम्ही **category assignment** शोधत आहात, त्यामुळे logistic regression वापराल. Logistic regression बद्दल तुम्ही नंतर अधिक शिकाल. डेटा संबंधित काही प्रश्नांबद्दल विचार करा आणि कोणती पद्धत अधिक योग्य असेल हे ठरवा.
+
+चला, या कार्याला सुरुवात करूया.
+
+### लायब्ररी आयात करा
+
+या कार्यासाठी आम्ही काही लायब्ररी आयात करू:
+
+- **matplotlib**. हे एक उपयुक्त [ग्राफिंग साधन](https://matplotlib.org/) आहे आणि आम्ही याचा वापर line plot तयार करण्यासाठी करू.
+- **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` डेटा प्रशिक्षण आणि चाचणी सेट्समध्ये विभाजित करण्यासाठी वापरले जाते.
+
+### Diabetes dataset
+
+Scikit-learn मध्ये तयार केलेल्या [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) मध्ये diabetes संबंधित 442 नमुने आहेत, ज्यामध्ये 10 वैशिष्ट्ये आहेत. त्यापैकी काही:
+
+- age: वय वर्षांमध्ये
+- bmi: बॉडी मास इंडेक्स
+- bp: सरासरी रक्तदाब
+- s1 tc: T-Cells (पांढऱ्या रक्त पेशींचा एक प्रकार)
+
+✅ या dataset मध्ये 'sex' ही एक वैशिष्ट्य आहे, जी diabetes संशोधनासाठी महत्त्वाची मानली जाते. वैद्यकीय datasets मध्ये अशा प्रकारचे binary वर्गीकरण सामान्यतः समाविष्ट असते. अशा वर्गीकरणांमुळे लोकसंख्येच्या काही भागांना उपचारांपासून वगळले जाऊ शकते याबद्दल विचार करा.
+
+आता X आणि y डेटा लोड करा.
+
+> 🎓 लक्षात ठेवा, हे supervised learning आहे, आणि आपल्याला 'y' target आवश्यक आहे.
+
+एका नवीन कोड सेलमध्ये, `load_diabetes()` कॉल करून diabetes dataset लोड करा. `return_X_y=True` इनपुटमुळे `X` डेटा मॅट्रिक्स असेल, आणि `y` regression target असेल.
+
+1. डेटा मॅट्रिक्सचे आकार आणि त्याचा पहिला घटक दाखवण्यासाठी काही print कमांड जोडा:
+
+ ```python
+ X, y = datasets.load_diabetes(return_X_y=True)
+ print(X.shape)
+ print(X[0])
+ ```
+
+ तुम्हाला प्रतिसाद म्हणून tuple मिळत आहे. तुम्ही tuple मधील दोन पहिल्या मूल्ये अनुक्रमे `X` आणि `y` ला असाइन करत आहात. [tuples बद्दल अधिक जाणून घ्या](https://wikipedia.org/wiki/Tuple).
+
+ तुम्ही पाहू शकता की या डेटामध्ये 442 आयटम्स आहेत, जे 10 घटकांच्या arrays मध्ये आहेत:
+
+ ```text
+ (442, 10)
+ [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076
+ -0.04340085 -0.00259226 0.01990842 -0.01764613]
+ ```
+
+ ✅ डेटा आणि regression target यांच्यातील संबंधाबद्दल विचार करा. Linear regression feature X आणि target variable y यांच्यातील संबंधांचा अंदाज लावते. [diabetes dataset साठी target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) शोधा. हा dataset काय दर्शवतो?
+
+2. नंतर, या dataset चा एक भाग प्लॉट करण्यासाठी निवडा, dataset च्या तिसऱ्या कॉलमची निवड करा. `:` ऑपरेटर वापरून सर्व रांगा निवडा, आणि नंतर index (2) वापरून तिसरा कॉलम निवडा. डेटा 2D array मध्ये रूपांतरित करण्यासाठी `reshape(n_rows, n_columns)` वापरा. जर एक पॅरामीटर -1 असेल, तर संबंधित परिमाण आपोआप गणना केली जाते.
+
+ ```python
+ X = X[:, 2]
+ X = X.reshape((-1,1))
+ ```
+
+ ✅ कोणत्याही वेळी, डेटा प्रिंट करून त्याचा आकार तपासा.
+
+3. आता तुमच्याकडे प्लॉट करण्यासाठी डेटा तयार आहे, तुम्ही मशीनला या dataset मधील संख्यांमध्ये logical split ठरवण्यासाठी मदत करू शकता. यासाठी, तुम्हाला डेटा (X) आणि target (y) दोन्ही test आणि training sets मध्ये विभाजित करावे लागेल. Scikit-learn मध्ये हे सोपे आहे; तुम्ही तुमचा test डेटा दिलेल्या बिंदूवर विभाजित करू शकता.
+
+ ```python
+ X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
+ ```
+
+4. आता तुमचे मॉडेल प्रशिक्षणासाठी तयार आहे! Linear regression मॉडेल लोड करा आणि `model.fit()` वापरून तुमच्या X आणि y training sets सह त्याचे प्रशिक्षण घ्या:
+
+ ```python
+ model = linear_model.LinearRegression()
+ model.fit(X_train, y_train)
+ ```
+
+ ✅ `model.fit()` ही TensorFlow सारख्या अनेक ML लायब्ररींमध्ये दिसणारी function आहे.
+
+5. नंतर, `predict()` function वापरून test डेटा वापरून एक prediction तयार करा. हे डेटा गटांमधील रेषा काढण्यासाठी वापरले जाईल.
+
+ ```python
+ y_pred = model.predict(X_test)
+ ```
+
+6. आता डेटा प्लॉटमध्ये दाखवण्याची वेळ आली आहे. Matplotlib हे यासाठी खूप उपयुक्त साधन आहे. सर्व X आणि y test डेटा scatterplot मध्ये तयार करा, आणि 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()
+ ```
+
+ 
+✅ विचार करा की येथे नेमके काय चालले आहे. अनेक छोटे डेटा बिंदूंच्या माध्यमातून एक सरळ रेषा जात आहे, पण ती नेमके काय करत आहे? तुम्हाला दिसते का की तुम्ही या रेषेचा उपयोग करून नवीन, न पाहिलेला डेटा बिंदू प्लॉटच्या y अक्षाशी कसा संबंधित आहे हे अंदाज लावू शकता? या मॉडेलचा व्यावहारिक उपयोग शब्दांत मांडण्याचा प्रयत्न करा.
+
+अभिनंदन, तुम्ही तुमचे पहिले रेषीय प्रतिगमन मॉडेल तयार केले, त्याचा उपयोग करून अंदाज तयार केला आणि ते प्लॉटमध्ये प्रदर्शित केले!
+
+---
+## 🚀चॅलेंज
+
+या डेटासेटमधून वेगळा व्हेरिएबल प्लॉट करा. सूचना: ही ओळ संपादित करा: `X = X[:,2]`. या डेटासेटच्या लक्ष्यानुसार, तुम्ही मधुमेह या आजाराच्या प्रगतीबद्दल काय शोधू शकता?
+
+## [पाठानंतरचा क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+या ट्युटोरियलमध्ये, तुम्ही साध्या रेषीय प्रतिगमनासोबत काम केले, बहुविध किंवा एकच व्हेरिएबल असलेल्या प्रतिगमनाऐवजी. या पद्धतींमधील फरकांबद्दल थोडे वाचा किंवा [हा व्हिडिओ](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/mr/2-Regression/1-Tools/assignment.md b/translations/mr/2-Regression/1-Tools/assignment.md
new file mode 100644
index 000000000..ec8f5bcc6
--- /dev/null
+++ b/translations/mr/2-Regression/1-Tools/assignment.md
@@ -0,0 +1,27 @@
+
+# Scikit-learn सह रिग्रेशन
+
+## सूचना
+
+Scikit-learn मधील [Linnerud dataset](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) वर एक नजर टाका. या डेटासेटमध्ये अनेक [targets](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset) आहेत: 'यामध्ये तीन व्यायाम (data) आणि तीन शारीरिक (target) घटकांचा समावेश आहे, जे एका फिटनेस क्लबमधील वीस मध्यमवयीन पुरुषांकडून गोळा केले गेले आहेत.'
+
+तुमच्या स्वतःच्या शब्दांत, कंबर आणि किती situps पूर्ण केले जातात यामधील संबंध दाखवणारा Regression मॉडेल कसे तयार करावे हे वर्णन करा. या डेटासेटमधील इतर डेटा पॉइंट्ससाठीही हेच करा.
+
+## मूल्यांकन निकष
+
+| निकष | उत्कृष्ट | समाधानकारक | सुधारणा आवश्यक |
+| ----------------------------- | ------------------------------------ | --------------------------- | -------------------------- |
+| वर्णनात्मक परिच्छेद सादर करा | चांगल्या प्रकारे लिहिलेला परिच्छेद सादर केला आहे | काही वाक्ये सादर केली आहेत | कोणतेही वर्णन सादर केलेले नाही |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/2-Regression/1-Tools/notebook.ipynb b/translations/mr/2-Regression/1-Tools/notebook.ipynb
new file mode 100644
index 000000000..e69de29bb
diff --git a/translations/mr/2-Regression/1-Tools/solution/Julia/README.md b/translations/mr/2-Regression/1-Tools/solution/Julia/README.md
new file mode 100644
index 000000000..b834f1b2a
--- /dev/null
+++ b/translations/mr/2-Regression/1-Tools/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb b/translations/mr/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb
new file mode 100644
index 000000000..89a990861
--- /dev/null
+++ b/translations/mr/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb
@@ -0,0 +1,447 @@
+{
+ "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-08-29T19:00:29+00:00",
+ "source_file": "2-Regression/1-Tools/solution/R/lesson_1-R.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [],
+ "metadata": {
+ "id": "YJUHCXqK57yz"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## रिग्रेशनची ओळख - धडा 1\n",
+ "\n",
+ "#### दृष्टीकोनातून पाहणे\n",
+ "\n",
+ "✅ रिग्रेशनच्या अनेक पद्धती आहेत, आणि तुम्ही कोणती निवडता हे तुम्हाला शोधायच्या उत्तरावर अवलंबून असते. जर तुम्हाला दिलेल्या वयाच्या व्यक्तीची संभाव्य उंची अंदाज करायची असेल, तर तुम्ही `linear regression` वापराल, कारण तुम्ही **सांख्यिकीय मूल्य** शोधत आहात. जर तुम्हाला एखाद्या प्रकारच्या खाद्यपदार्थाला शाकाहारी मानावे की नाही हे शोधायचे असेल, तर तुम्ही **वर्गीकृत असाइनमेंट** शोधत आहात, त्यामुळे तुम्ही `logistic 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",
+ "> 🎓 लक्षात ठेवा, हे सुपरवाइज्ड लर्निंग आहे, आणि आपल्याला '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",
+ "> `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",
+ "- मॉडेल **मोड** सामान्य पर्यायांचा समावेश करतो जसे की प्रतिगमन आणि वर्गीकरण; काही मॉडेल प्रकार या दोन्ही मोड्सना समर्थन देतात तर काहींमध्ये फक्त एकच मोड असतो.\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",
+ "## ५. चाचणी संचावर अंदाज वर्तवा\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 चा प्रघात नेहमीच परिणामांसाठी मानक स्तंभ नावांसह tibble/data frame तयार करणे आहे. यामुळे मूळ डेटा आणि अंदाज एकत्र करून त्याचा वापर पुढील ऑपरेशन्ससाठी, जसे की प्लॉटिंग, सोप्या स्वरूपात करता येतो.\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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/2-Regression/1-Tools/solution/notebook.ipynb b/translations/mr/2-Regression/1-Tools/solution/notebook.ipynb
new file mode 100644
index 000000000..ae12672d0
--- /dev/null
+++ b/translations/mr/2-Regression/1-Tools/solution/notebook.ipynb
@@ -0,0 +1,671 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "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": []
+ },
+ {
+ "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.
"
+ ]
+ },
+ "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"
+ ]
+ }
+ ],
+ "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-08-29T18:59:08+00:00",
+ "source_file": "2-Regression/1-Tools/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/mr/2-Regression/2-Data/README.md b/translations/mr/2-Regression/2-Data/README.md
new file mode 100644
index 000000000..4d6229509
--- /dev/null
+++ b/translations/mr/2-Regression/2-Data/README.md
@@ -0,0 +1,226 @@
+
+# Scikit-learn वापरून Regression मॉडेल तयार करा: डेटा तयार करा आणि व्हिज्युअलाइझ करा
+
+
+
+इन्फोग्राफिक: [Dasani Madipalli](https://twitter.com/dasani_decoded)
+
+## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11/)
+
+> ### [हे धडा 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' आणि इतर मूल्यांचे मिश्रण आहे. खरं तर, हा डेटा थोडासा गोंधळलेला आहे.
+
+[](https://youtu.be/5qGjczWTrDQ "ML for beginners - डेटासेट कसा विश्लेषण आणि स्वच्छ करायचा")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा आणि या धड्यासाठी डेटा तयार करण्याची प्रक्रिया पाहा.
+
+खरं तर, पूर्णपणे तयार डेटासेट मिळणे, जे 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) कडून काढलेला आहे, जो United States Department of Agriculture द्वारे वितरित केला जातो.
+
+### डेटा तयार करणे
+
+हा डेटा सार्वजनिक डोमेनमध्ये आहे. तो USDA वेबसाइटवरून वेगवेगळ्या शहरांनुसार अनेक फाइल्समध्ये डाउनलोड केला जाऊ शकतो. खूप वेगळ्या फाइल्स टाळण्यासाठी, आम्ही सर्व शहरांचा डेटा एका स्प्रेडशीटमध्ये एकत्र केला आहे, त्यामुळे आम्ही आधीच डेटा थोडासा _तयार_ केला आहे. आता, डेटा अधिक जवळून पाहूया.
+
+### भोपळ्यांचा डेटा - प्राथमिक निरीक्षणे
+
+तुम्हाला या डेटाबद्दल काय दिसते? तुम्ही आधीच पाहिले आहे की स्ट्रिंग्स, संख्या, रिकाम्या जागा आणि विचित्र मूल्यांचे मिश्रण आहे, ज्याचा अर्थ लावणे आवश्यक आहे.
+
+Regression तंत्र वापरून तुम्ही या डेटावर कोणता प्रश्न विचारू शकता? "एखाद्या महिन्यात विक्रीसाठी भोपळ्याची किंमत काय असेल?" हा प्रश्न विचारता येईल. पुन्हा डेटा पाहिल्यास, तुम्हाला डेटा संरचना तयार करण्यासाठी काही बदल करावे लागतील.
+
+## व्यायाम - भोपळ्यांचा डेटा विश्लेषण करा
+
+आता [Pandas](https://pandas.pydata.org/) वापरूया, (याचा अर्थ `Python Data Analysis`) डेटा आकार देण्यासाठी उपयुक्त साधन, भोपळ्यांचा डेटा विश्लेषण आणि तयार करण्यासाठी.
+
+### प्रथम, गहाळ तारखा तपासा
+
+तुम्हाला प्रथम गहाळ तारखा तपासण्यासाठी काही पावले उचलावी लागतील:
+
+1. तारखांना महिन्याच्या स्वरूपात रूपांतरित करा (या US तारखा आहेत, त्यामुळे स्वरूप `MM/DD/YYYY` आहे).
+2. नवीन कॉलममध्ये महिना काढा.
+
+_नोटबुक.ipynb_ फाइल Visual Studio Code मध्ये उघडा आणि स्प्रेडशीट नवीन Pandas dataframe मध्ये आयात करा.
+
+1. `head()` फंक्शन वापरून पहिल्या पाच ओळी पहा.
+
+ ```python
+ import pandas as pd
+ pumpkins = pd.read_csv('../data/US-pumpkins.csv')
+ pumpkins.head()
+ ```
+
+ ✅ शेवटच्या पाच ओळी पाहण्यासाठी तुम्ही कोणते फंक्शन वापराल?
+
+1. सध्याच्या dataframe मध्ये गहाळ डेटा आहे का ते तपासा:
+
+ ```python
+ pumpkins.isnull().sum()
+ ```
+
+ गहाळ डेटा आहे, परंतु कदाचित तो सध्याच्या कार्यासाठी महत्त्वाचा नसेल.
+
+1. तुमचा dataframe अधिक सोपा करण्यासाठी, तुम्हाला आवश्यक असलेल्या कॉलम्स निवडा, `loc` फंक्शन वापरून, जे मूळ dataframe मधून ओळींचा गट (पहिला पॅरामीटर म्हणून पास केला जातो) आणि कॉलम्स (दुसरा पॅरामीटर म्हणून पास केला जातो) काढते. खालील प्रकरणात `:` चा अर्थ "सर्व ओळी" असा आहे.
+
+ ```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 dataframe मध्ये कॉपी करा:
+
+ ```python
+ new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
+ ```
+
+ तुमचा dataframe प्रिंट केल्यास, तुम्हाला एक स्वच्छ, व्यवस्थित डेटासेट दिसेल, ज्यावर तुम्ही तुमचे नवीन regression मॉडेल तयार करू शकता.
+
+### पण थांबा! येथे काहीतरी विचित्र आहे
+
+जर तुम्ही `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 ओळींचा डेटा दिसेल, ज्यामध्ये फक्त bushel मध्ये विकलेले भोपळे आहेत.
+
+### पण थांबा! अजून एक गोष्ट करायची आहे
+
+तुम्ही लक्षात घेतले का की bushel प्रमाण प्रत्येक ओळीत वेगळे आहे? तुम्हाला किंमती normalize करायच्या आहेत, त्यामुळे तुम्ही bushel प्रमाणे किंमती दाखवू शकता. त्यामुळे किंमती standardize करण्यासाठी गणित करा.
+
+1. नवीन_pumpkins dataframe तयार करण्याच्या ब्लॉकनंतर हे ओळी जोडा:
+
+ ```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) नुसार, bushel चे वजन उत्पादनाच्या प्रकारावर अवलंबून असते, कारण ते व्हॉल्यूम मोजमाप आहे. "उदाहरणार्थ, टोमॅटोच्या bushel चे वजन 56 पाउंड असते... पानं आणि हिरव्या भाज्या अधिक जागा घेतात पण कमी वजन असते, त्यामुळे पालकाच्या bushel चे वजन फक्त 20 पाउंड असते." हे सर्व खूप गुंतागुंतीचे आहे! चला bushel-to-pound रूपांतरण करण्याचा विचार न करता, फक्त bushel प्रमाणे किंमत मोजूया. भोपळ्यांच्या bushels चा अभ्यास करताना, तुमच्या डेटाच्या स्वरूपाचे महत्त्व समजणे किती महत्त्वाचे आहे हे लक्षात येते!
+
+आता, तुम्ही bushel मोजमापाच्या आधारावर युनिटप्रमाणे किंमतींचे विश्लेषण करू शकता. जर तुम्ही डेटा पुन्हा प्रिंट केला, तर तुम्हाला तो standardize झालेला दिसेल.
+
+✅ तुम्ही लक्षात घेतले का की अर्ध्या-bushel ने विकले जाणारे भोपळे खूप महाग आहेत? तुम्ही याचे कारण शोधू शकता का? सूचना: लहान भोपळे मोठ्या भोपळ्यांपेक्षा खूप महाग असतात, कदाचित कारण bushel मध्ये मोठ्या पोकळ pie भोपळ्यामुळे अधिक जागा वाया जाते.
+
+## व्हिज्युअलायझेशन धोरणे
+
+डेटा सायंटिस्टची भूमिका म्हणजे ते ज्या डेटावर काम करत आहेत त्याची गुणवत्ता आणि स्वरूप दाखवणे. हे करण्यासाठी, ते डेटाचे वेगवेगळे पैलू दाखवणारे प्लॉट्स, ग्राफ्स, आणि चार्ट्स तयार करतात. यामुळे, ते नातेसंबंध आणि अंतर दाखवू शकतात, जे अन्यथा शोधणे कठीण असते.
+
+[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - Matplotlib वापरून डेटा कसा व्हिज्युअलायझ करायचा")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा आणि या धड्यासाठी डेटा व्हिज्युअलायझ करण्याची प्रक्रिया पाहा.
+
+व्हिज्युअलायझेशन तुम्हाला डेटासाठी योग्य मशीन लर्निंग तंत्र ठरवण्यास मदत करू शकते. उदाहरणार्थ, जर scatterplot एका रेषेचे अनुसरण करत असेल, तर डेटा linear regression साठी योग्य उमेदवार असल्याचे सूचित करते.
+
+Jupyter notebooks मध्ये चांगले काम करणारे एक डेटा व्हिज्युअलायझेशन लायब्ररी म्हणजे [Matplotlib](https://matplotlib.org/) (जे तुम्ही मागील धड्यातही पाहिले).
+
+> डेटा व्हिज्युअलायझेशनचा अधिक अनुभव मिळवण्यासाठी [या ट्युटोरियल्स](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) पहा.
+
+## व्यायाम - Matplotlib सह प्रयोग करा
+
+तुम्ही नुकत्याच तयार केलेल्या नवीन dataframe चे प्रदर्शन करण्यासाठी काही मूलभूत प्लॉट्स तयार करण्याचा प्रयत्न करा. मूलभूत line plot काय दाखवेल?
+
+1. फाइलच्या सुरुवातीला Pandas आयाताखाली Matplotlib आयात करा:
+
+ ```python
+ import matplotlib.pyplot as plt
+ ```
+
+1. संपूर्ण notebook पुन्हा चालवा.
+1. notebook च्या तळाशी, डेटा box म्हणून प्लॉट करण्यासाठी एक सेल जोडा:
+
+ ```python
+ price = new_pumpkins.Price
+ month = new_pumpkins.Month
+ plt.scatter(price, month)
+ plt.show()
+ ```
+
+ 
+
+ हा प्लॉट उपयुक्त आहे का? याबद्दल तुम्हाला काही आश्चर्य वाटते का?
+
+ हा फारसा उपयुक्त नाही, कारण तो फक्त तुमच्या डेटामधील एका महिन्यातील पॉइंट्सचा प्रसार दाखवतो.
+
+### याला उपयुक्त बनवा
+
+डेटा उपयुक्ततेने प्रदर्शित करण्यासाठी, तुम्हाला सहसा डेटा गटबद्ध करावा लागतो. चला एक प्लॉट तयार करण्याचा प्रयत्न करूया, जिथे y अक्ष महिन्यांना दर्शवतो आणि डेटा वितरण दर्शवतो.
+
+1. गटबद्ध बार चार्ट तयार करण्यासाठी एक सेल जोडा:
+
+ ```python
+ new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
+ plt.ylabel("Pumpkin Price")
+ ```
+
+ 
+
+ हा डेटा व्हिज्युअलायझेशन अधिक उपयुक्त आहे! असे दिसते की भोपळ्यांची सर्वाधिक किंमत सप्टेंबर आणि ऑक्टोबरमध्ये असते. हे तुमच्या अपेक्षांना पूर्ण करते का? का किंवा का नाही?
+
+---
+
+## 🚀चॅलेंज
+
+Matplotlib विविध प्रकारच्या व्हिज्युअलायझेशन ऑफर करतो. Regression समस्यांसाठी कोणते प्रकार सर्वात योग्य आहेत?
+
+## [व्याख्यानानंतरची प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+डेटा व्हिज्युअलायझेशनचे अनेक मार्ग पाहा. उपलब्ध विविध लायब्ररींची यादी तयार करा आणि कोणत्या प्रकारच्या कार्यांसाठी कोणत्या लायब्ररी सर्वोत्तम आहेत ते नोंदवा, उदाहरणार्थ 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/mr/2-Regression/2-Data/assignment.md b/translations/mr/2-Regression/2-Data/assignment.md
new file mode 100644
index 000000000..5ecc0b299
--- /dev/null
+++ b/translations/mr/2-Regression/2-Data/assignment.md
@@ -0,0 +1,23 @@
+
+# दृश्यांकनांचा अभ्यास
+
+डेटा दृश्यांकनासाठी अनेक वेगवेगळ्या लायब्ररी उपलब्ध आहेत. या धड्यातील Pumpkin डेटाचा वापर करून matplotlib आणि seaborn च्या सहाय्याने काही दृश्यांकन तयार करा एका नमुना नोटबुकमध्ये. कोणत्या लायब्ररीसह काम करणे सोपे आहे?
+
+## मूल्यांकन निकष
+
+| निकष | उत्कृष्ट | समाधानकारक | सुधारणा आवश्यक |
+| -------- | --------- | -------- | ----------------- |
+| | दोन अभ्यास/दृश्यांकनांसह नोटबुक सादर केले आहे | एक अभ्यास/दृश्यांकनासह नोटबुक सादर केले आहे | नोटबुक सादर केलेले नाही |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज [Co-op Translator](https://github.com/Azure/co-op-translator) या एआय भाषांतर सेवेचा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/2-Regression/2-Data/notebook.ipynb b/translations/mr/2-Regression/2-Data/notebook.ipynb
new file mode 100644
index 000000000..8c4271780
--- /dev/null
+++ b/translations/mr/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-08-29T19:02:34+00:00",
+ "source_file": "2-Regression/2-Data/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/2-Regression/2-Data/solution/Julia/README.md b/translations/mr/2-Regression/2-Data/solution/Julia/README.md
new file mode 100644
index 000000000..11c15fea4
--- /dev/null
+++ b/translations/mr/2-Regression/2-Data/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/2-Regression/2-Data/solution/R/lesson_2-R.ipynb b/translations/mr/2-Regression/2-Data/solution/R/lesson_2-R.ipynb
new file mode 100644
index 000000000..0973aa15c
--- /dev/null
+++ b/translations/mr/2-Regression/2-Data/solution/R/lesson_2-R.ipynb
@@ -0,0 +1,668 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "metadata": {
+ "colab": {
+ "name": "lesson_2-R.ipynb",
+ "provenance": [],
+ "collapsed_sections": [],
+ "toc_visible": true
+ },
+ "kernelspec": {
+ "name": "ir",
+ "display_name": "R"
+ },
+ "language_info": {
+ "name": "R"
+ },
+ "coopTranslator": {
+ "original_hash": "f3c335f9940cfd76528b3ef918b9b342",
+ "translation_date": "2025-08-29T19:04:28+00:00",
+ "source_file": "2-Regression/2-Data/solution/R/lesson_2-R.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# पुनरावृत्ती मॉडेल तयार करा: डेटा तयार करा आणि दृश्यात्मक करा\n",
+ "\n",
+ "## **पंपकिन्ससाठी रेषीय पुनरावृत्ती - धडा 2**\n",
+ "#### परिचय\n",
+ "\n",
+ "आता तुम्ही Tidymodels आणि Tidyverse च्या मदतीने मशीन लर्निंग मॉडेल तयार करण्यासाठी आवश्यक साधनांमध्ये प्रवीण झाला आहात, त्यामुळे तुम्ही तुमच्या डेटावर प्रश्न विचारायला तयार आहात. डेटा हाताळताना आणि मशीन लर्निंग उपाय लागू करताना, योग्य प्रश्न विचारणे खूप महत्त्वाचे आहे, जेणेकरून तुमच्या डेटासेटची क्षमता योग्य प्रकारे उलगडता येईल.\n",
+ "\n",
+ "या धड्यात, तुम्ही शिकाल:\n",
+ "\n",
+ "- तुमच्या डेटाला मॉडेल तयार करण्यासाठी कसे तयार करायचे.\n",
+ "\n",
+ "- डेटा दृश्यात्मकतेसाठी `ggplot2` कसे वापरायचे.\n",
+ "\n",
+ "तुम्हाला उत्तर हवे असलेला प्रश्न ठरवेल की तुम्ही कोणत्या प्रकारचे मशीन लर्निंग अल्गोरिदम वापरणार आहात. आणि तुम्हाला मिळणाऱ्या उत्तराची गुणवत्ता तुमच्या डेटाच्या स्वरूपावर मोठ्या प्रमाणात अवलंबून असेल.\n",
+ "\n",
+ "चला, हे एका व्यावहारिक उदाहरणाद्वारे पाहूया.\n",
+ "\n",
+ "
\n",
+ " \n",
+ " @allison_horst यांचे कलाकृती\n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "metadata": {
+ "id": "Pg5aexcOPqAZ"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 1. भोपळ्यांचा डेटा आयात करणे आणि Tidyverse वापरणे\n",
+ "\n",
+ "या धड्याला व्यवस्थित समजून घेण्यासाठी आपल्याला खालील पॅकेजेसची आवश्यकता असेल:\n",
+ "\n",
+ "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) हा [R पॅकेजेसचा संग्रह](https://www.tidyverse.org/packages) आहे, जो डेटा सायन्स अधिक वेगवान, सोपा आणि मजेदार बनवण्यासाठी डिझाइन केला आहे!\n",
+ "\n",
+ "आपण हे पॅकेजेस खालीलप्रमाणे इन्स्टॉल करू शकता:\n",
+ "\n",
+ "`install.packages(c(\"tidyverse\"))`\n",
+ "\n",
+ "खालील स्क्रिप्ट तपासते की या मॉड्यूलसाठी आवश्यक पॅकेजेस तुमच्याकडे आहेत का आणि जर काही पॅकेजेस गायब असतील तर ती तुमच्यासाठी इन्स्टॉल करते.\n"
+ ],
+ "metadata": {
+ "id": "dc5WhyVdXAjR"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n",
+ "pacman::p_load(tidyverse)"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "GqPYUZgfXOBt"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "आता, काही पॅकेजेस सुरू करूया आणि या धड्यासाठी दिलेला [डेटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) लोड करूया!\n"
+ ],
+ "metadata": {
+ "id": "kvjDTPDSXRr2"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Load the core Tidyverse packages\n",
+ "library(tidyverse)\n",
+ "\n",
+ "# Import the pumpkins data\n",
+ "pumpkins <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/2-Regression/data/US-pumpkins.csv\")\n",
+ "\n",
+ "\n",
+ "# Get a glimpse and dimensions of the data\n",
+ "glimpse(pumpkins)\n",
+ "\n",
+ "\n",
+ "# Print the first 50 rows of the data set\n",
+ "pumpkins %>% \n",
+ " slice_head(n =50)"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "VMri-t2zXqgD"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "`glimpse()` वापरल्यावर लगेच लक्षात येते की डेटा मध्ये रिक्त जागा आहेत आणि स्ट्रिंग्स (`chr`) आणि संख्यात्मक डेटा (`dbl`) यांचा मिश्रण आहे. `Date` हा प्रकार कॅरेक्टर आहे आणि एक विचित्र कॉलम `Package` नावाचा आहे जिथे डेटा `sacks`, `bins` आणि इतर मूल्यांचे मिश्रण आहे. खरं तर, हा डेटा थोडासा गोंधळात टाकणारा आहे 😤.\n",
+ "\n",
+ "खरं तर, पूर्णपणे तयार असलेला डेटासेट मिळणे, ज्याचा थेट ML मॉडेलसाठी वापर करता येईल, हे फारसे सामान्य नाही. पण काळजी करू नका, या धड्यात तुम्ही स्टँडर्ड R लायब्ररी वापरून कच्चा डेटासेट तयार करण्याची प्रक्रिया शिकाल 🧑🔧. तुम्ही डेटा व्हिज्युअलाइझ करण्यासाठी विविध तंत्रज्ञान देखील शिकाल.📈📊\n",
+ " \n",
+ "\n",
+ "> एक पुनरावलोकन: पाइप ऑपरेटर (`%>%`) लॉजिकल क्रमाने ऑपरेशन्स करते, जिथे एखादी ऑब्जेक्ट पुढे फंक्शन किंवा कॉल एक्सप्रेशनमध्ये पास केली जाते. तुम्ही पाइप ऑपरेटरला तुमच्या कोडमध्ये \"आणि मग\" असे म्हणत असल्यासारखे समजू शकता.\n"
+ ],
+ "metadata": {
+ "id": "REWcIv9yX29v"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2. डेटा गायब असल्याची तपासणी करा\n",
+ "\n",
+ "डेटा शास्त्रज्ञांना सर्वात जास्त सामोरे जावे लागणारे सामान्य प्रश्न म्हणजे अपूर्ण किंवा गायब डेटा. R गायब किंवा अज्ञात मूल्ये `NA` (Not Available) या विशेष चिन्हांकित मूल्याने दर्शवतो.\n",
+ "\n",
+ "मग आपल्याला डेटा फ्रेममध्ये गायब मूल्ये आहेत हे कसे कळेल? \n",
+ " \n",
+ "- एक सोपा मार्ग म्हणजे बेस R फंक्शन `anyNA` वापरणे, जे लॉजिकल ऑब्जेक्ट्स `TRUE` किंवा `FALSE` परत करते.\n"
+ ],
+ "metadata": {
+ "id": "Zxfb3AM5YbUe"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "pumpkins %>% \n",
+ " anyNA()"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "G--DQutAYltj"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "छान, काही डेटा गायब असल्याचे दिसते! हे सुरू करण्यासाठी चांगले ठिकाण आहे.\n",
+ "\n",
+ "- आणखी एक मार्ग म्हणजे `is.na()` फंक्शन वापरणे, जे लॉजिकल `TRUE` सह कोणते विशिष्ट स्तंभ घटक गायब आहेत हे दर्शवते.\n"
+ ],
+ "metadata": {
+ "id": "mU-7-SB6YokF"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "pumpkins %>% \n",
+ " is.na() %>% \n",
+ " head(n = 7)"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "W-DxDOR4YxSW"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "ठीक आहे, काम पूर्ण झाले पण अशा मोठ्या डेटा फ्रेमसाठी प्रत्येक ओळ आणि स्तंभ स्वतंत्रपणे तपासणे अप्रभावी आणि प्रत्यक्षात अशक्य होईल😴.\n",
+ "\n",
+ "- अधिक सोपी पद्धत म्हणजे प्रत्येक स्तंभासाठी गहाळ मूल्यांची बेरीज मोजणे:\n"
+ ],
+ "metadata": {
+ "id": "xUWxipKYY0o7"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "pumpkins %>% \n",
+ " is.na() %>% \n",
+ " colSums()"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "ZRBWV6P9ZArL"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "खूपच चांगलं! काही डेटा गायब आहे, पण कदाचित तो दिलेल्या कामासाठी महत्त्वाचा नसेल. पाहूया पुढील विश्लेषण काय समोर आणते.\n",
+ "\n",
+ "> R मध्ये उत्कृष्ट पॅकेजेस आणि फंक्शन्सच्या संचासोबतच खूप चांगली दस्तऐवजीकरण प्रणाली आहे. उदाहरणार्थ, `help(colSums)` किंवा `?colSums` वापरून त्या फंक्शनबद्दल अधिक माहिती मिळवा.\n"
+ ],
+ "metadata": {
+ "id": "9gv-crB6ZD1Y"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 3. Dplyr: डेटा हाताळणीसाठी व्याकरण\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. तारीख (सध्या कॅरेक्टर प्रकारात आहे) महिन्याच्या स्वरूपात रूपांतरित करा (या US तारखा आहेत, त्यामुळे स्वरूप `MM/DD/YYYY` आहे).\n",
+ "\n",
+ "2. तारखांमधून महिन्याची माहिती नवीन कॉलममध्ये काढा.\n",
+ "\n",
+ "R मध्ये, [lubridate](https://lubridate.tidyverse.org/) पॅकेज डेट-टाइम डेटा सोप्या पद्धतीने हाताळण्यासाठी उपयुक्त आहे. त्यामुळे, `dplyr::mutate()`, `lubridate::mdy()`, `lubridate::month()` वापरून वरील उद्दिष्टे कशी साध्य करायची ते पाहू. आपण Date कॉलम काढून टाकू शकतो कारण पुढील ऑपरेशन्ससाठी त्याची गरज नाही.\n"
+ ],
+ "metadata": {
+ "id": "2KKo0Ed9Z1VB"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Load lubridate\n",
+ "library(lubridate)\n",
+ "\n",
+ "pumpkins <- pumpkins %>% \n",
+ " # Convert the Date column to a date object\n",
+ " mutate(Date = mdy(Date)) %>% \n",
+ " # Extract month from Date\n",
+ " mutate(Month = month(Date)) %>% \n",
+ " # Drop Date column\n",
+ " select(-Date)\n",
+ "\n",
+ "# View the first few rows\n",
+ "pumpkins %>% \n",
+ " slice_head(n = 7)"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "5joszIVSZ6xe"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "व्वा! 🤩\n",
+ "\n",
+ "आता, नवीन स्तंभ `Price` तयार करूया, जो भोपळ्याच्या सरासरी किंमतीचे प्रतिनिधित्व करतो. आता, `Low Price` आणि `High Price` या स्तंभांचा सरासरी घेऊन नवीन Price स्तंभ भरूया. \n"
+ ],
+ "metadata": {
+ "id": "nIgLjNMCZ-6Y"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Create a new column Price\n",
+ "pumpkins <- pumpkins %>% \n",
+ " mutate(Price = (`Low Price` + `High Price`)/2)\n",
+ "\n",
+ "# View the first few rows of the data\n",
+ "pumpkins %>% \n",
+ " slice_head(n = 5)"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "Zo0BsqqtaJw2"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "येस्स!💪\n",
+ "\n",
+ "\"पण थांबा!\", तुम्ही `View(pumpkins)` वापरून संपूर्ण डेटा सेट पाहिल्यानंतर म्हणाल, \"इथे काहीतरी विचित्र आहे!\"🤔\n",
+ "\n",
+ "जर तुम्ही `Package` कॉलमकडे पाहिलं, तर कळेल की भोपळे वेगवेगळ्या प्रकारांमध्ये विकले जात आहेत. काही `1 1/9 bushel` मोजमापात विकले जातात, काही `1/2 bushel` मोजमापात, काही प्रति भोपळा, काही प्रति पाउंड, आणि काही मोठ्या बॉक्समध्ये वेगवेगळ्या रुंदीमध्ये विकले जातात.\n",
+ "\n",
+ "चला हे तपासून पाहू:\n"
+ ],
+ "metadata": {
+ "id": "p77WZr-9aQAR"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Verify the distinct observations in Package column\n",
+ "pumpkins %>% \n",
+ " distinct(Package)"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "XISGfh0IaUy6"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "अप्रतिम!👏\n",
+ "\n",
+ "फळकुटे (Pumpkins) सतत एकसारखे वजन करणे कठीण वाटते, त्यामुळे आपण त्यांना फिल्टर करूया. `Package` स्तंभामध्ये *bushel* हा शब्द असलेल्या फळकुट्यांची निवड करून त्यांना एका नवीन डेटा फ्रेममध्ये `new_pumpkins` ठेवूया.\n"
+ ],
+ "metadata": {
+ "id": "7sMjiVujaZxY"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "#### dplyr::filter() आणि stringr::str_detect()\n",
+ "\n",
+ "[`dplyr::filter()`](https://dplyr.tidyverse.org/reference/filter.html): डेटा सेटमधून फक्त त्या **ओळी** निवडतो ज्या तुमच्या अटी पूर्ण करतात. या प्रकरणात, `Package` कॉलममध्ये *bushel* हा शब्द असलेल्या pumpkins निवडतो.\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"
+ ],
+ "metadata": {
+ "id": "VrDwF031avlR"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "#### dplyr::case_when()\n",
+ "\n",
+ "**पण थांबा! अजून एक गोष्ट करायची आहे**\n",
+ "\n",
+ "तुमच्या लक्षात आलं का की प्रत्येक रांगेत बशेलची मात्रा वेगळी आहे? तुम्हाला किंमत प्रति बशेल दाखवायची आहे, 1 1/9 किंवा 1/2 बशेलसाठी नाही. किंमतींचे प्रमाण एकसमान करण्यासाठी गणित करायची वेळ आली आहे.\n",
+ "\n",
+ "आपण [`case_when()`](https://dplyr.tidyverse.org/reference/case_when.html) फंक्शन वापरणार आहोत *Price* कॉलम बदलण्यासाठी, काही अटींवर आधारित. `case_when` तुम्हाला अनेक `if_else()` स्टेटमेंट्स व्हेक्टराइझ करण्याची परवानगी देते.\n"
+ ],
+ "metadata": {
+ "id": "mLpw2jH4a0tx"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Convert the price if the Package contains fractional bushel values\n",
+ "new_pumpkins <- new_pumpkins %>% \n",
+ " mutate(Price = case_when(\n",
+ " str_detect(Package, \"1 1/9\") ~ Price/(1 + 1/9),\n",
+ " str_detect(Package, \"1/2\") ~ Price/(1/2),\n",
+ " TRUE ~ Price))\n",
+ "\n",
+ "# View the first few rows of the data\n",
+ "new_pumpkins %>% \n",
+ " slice_head(n = 30)"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "P68kLVQmbM6I"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "आता आपण त्यांच्या बुशेल मोजमापावर आधारित प्रति युनिट किंमतीचे विश्लेषण करू शकतो. मात्र, कद्दूंच्या बुशेलचा अभ्यास करताना हे स्पष्ट होते की `तुमच्या डेटाचा स्वभाव समजून घेणे` किती `महत्त्वाचे` आहे!\n",
+ "\n",
+ "> ✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) नुसार, बुशेलचे वजन उत्पादनाच्या प्रकारावर अवलंबून असते, कारण ते एक प्रमाण मोजमाप आहे. \"उदाहरणार्थ, टोमॅटोचा बुशेल ५६ पाउंड वजनाचा असतो... पाने आणि हिरव्या भाज्या अधिक जागा घेतात पण कमी वजन असते, त्यामुळे पालकाचा बुशेल फक्त २० पाउंड असतो.\" हे सगळं खूपच गुंतागुंतीचं आहे! चला बुशेल-टू-पाउंड रूपांतरण करण्याचा विचार न करता बुशेलनुसार किंमत ठरवूया. कद्दूंच्या बुशेलचा अभ्यास करताना हे स्पष्ट होते की तुमच्या डेटाचा स्वभाव समजून घेणे किती महत्त्वाचे आहे!\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"
+ ],
+ "metadata": {
+ "id": "y8TJ0Za_bn5Y"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 4. ggplot2 सह डेटा व्हिज्युअलायझेशन\n",
+ "\n",
+ "
\n",
+ " \n",
+ " डासानी मदीपल्ली यांचे माहितीपट\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "एक *शहाणपणाचे* वाक्य असे आहे:\n",
+ "\n",
+ "> \"साधा ग्राफ डेटाच्या विश्लेषकाच्या मनात इतर कोणत्याही साधनापेक्षा जास्त माहिती पोहोचवतो.\" --- जॉन टुकी\n",
+ "\n",
+ "डेटा सायंटिस्टच्या भूमिकेचा एक भाग म्हणजे त्यांनी काम करत असलेल्या डेटाची गुणवत्ता आणि स्वरूप प्रदर्शित करणे. हे करण्यासाठी, ते अनेकदा डेटाचे वेगवेगळे पैलू दाखवणारे मनोरंजक व्हिज्युअलायझेशन, प्लॉट्स, ग्राफ्स आणि चार्ट तयार करतात. अशा प्रकारे, ते नातेसंबंध आणि अंतर सहजपणे उघड करू शकतात जे अन्यथा शोधणे कठीण असते.\n",
+ "\n",
+ "व्हिज्युअलायझेशन मशीन लर्निंग तंत्र ठरवण्यासाठी देखील उपयुक्त ठरू शकते, जे डेटासाठी सर्वात योग्य आहे. उदाहरणार्थ, जर स्कॅटरप्लॉट एका रेषेचे अनुसरण करत असल्याचे दिसत असेल, तर याचा अर्थ असा होतो की डेटा लीनियर रिग्रेशनसाठी चांगला उमेदवार आहे.\n",
+ "\n",
+ "R मध्ये ग्राफ तयार करण्यासाठी अनेक प्रणाली उपलब्ध आहेत, परंतु [`ggplot2`](https://ggplot2.tidyverse.org/index.html) ही सर्वात मोहक आणि बहुपयोगी प्रणालींपैकी एक आहे. `ggplot2` तुम्हाला **स्वतंत्र घटक एकत्र करून** ग्राफ तयार करण्याची परवानगी देते.\n",
+ "\n",
+ "चला, Price आणि Month कॉलमसाठी एक साधा स्कॅटर प्लॉट तयार करून सुरुवात करूया.\n",
+ "\n",
+ "या प्रकरणात, आपण [`ggplot()`](https://ggplot2.tidyverse.org/reference/ggplot.html) सह सुरुवात करू, डेटासेट आणि सौंदर्यात्मक मॅपिंग (सह [`aes()`](https://ggplot2.tidyverse.org/reference/aes.html)) पुरवू आणि नंतर स्कॅटर प्लॉटसाठी [`geom_point()`](https://ggplot2.tidyverse.org/reference/geom_point.html) सारख्या लेयर्स जोडू.\n"
+ ],
+ "metadata": {
+ "id": "mYSH6-EtbvNa"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Set a theme for the plots\n",
+ "theme_set(theme_light())\n",
+ "\n",
+ "# Create a scatter plot\n",
+ "p <- ggplot(data = new_pumpkins, aes(x = Price, y = Month))\n",
+ "p + geom_point()"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "g2YjnGeOcLo4"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "हा उपयुक्त प्लॉट आहे का 🤷? यात काही आश्चर्यकारक गोष्ट आहे का?\n",
+ "\n",
+ "हा विशेषतः उपयुक्त नाही कारण तो फक्त तुमच्या डेटामधील एका महिन्यातील पॉइंट्सचा प्रसार दाखवतो. \n"
+ ],
+ "metadata": {
+ "id": "Ml7SDCLQcPvE"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### **हे उपयुक्त कसे बनवायचे?**\n",
+ "\n",
+ "चार्ट्समध्ये उपयुक्त डेटा दाखवण्यासाठी, तुम्हाला सहसा डेटा कशातरी प्रकारे गटबद्ध करावा लागतो. उदाहरणार्थ, आमच्या बाबतीत, प्रत्येक महिन्यासाठी भोपळ्यांची सरासरी किंमत शोधणे आमच्या डेटामधील अंतर्निहित नमुन्यांबद्दल अधिक अंतर्दृष्टी प्रदान करेल. यामुळे आम्हाला **dplyr** चा आणखी एक झलक मिळतो:\n",
+ "\n",
+ "#### `dplyr::group_by() %>% summarize()`\n",
+ "\n",
+ "R मध्ये गटबद्ध संकलन सहजपणे खालीलप्रमाणे गणना करता येते:\n",
+ "\n",
+ "`dplyr::group_by() %>% summarize()`\n",
+ "\n",
+ "- `dplyr::group_by()` विश्लेषणाची एकक संपूर्ण डेटासेटवरून वैयक्तिक गटांमध्ये बदलते, जसे की प्रति महिना.\n",
+ "\n",
+ "- `dplyr::summarize()` एक नवीन डेटा फ्रेम तयार करते ज्यामध्ये प्रत्येक गटबद्ध व्हेरिएबलसाठी एक कॉलम आणि तुम्ही निर्दिष्ट केलेल्या प्रत्येक सारांश आकडेवारीसाठी एक कॉलम असतो.\n",
+ "\n",
+ "उदाहरणार्थ, आपण `dplyr::group_by() %>% summarize()` वापरून **Month** कॉलमवर आधारित भोपळ्यांना गटांमध्ये विभागू शकतो आणि प्रत्येक महिन्यासाठी **mean price** शोधू शकतो.\n"
+ ],
+ "metadata": {
+ "id": "jMakvJZIcVkh"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Find the average price of pumpkins per month\r\n",
+ "new_pumpkins %>%\r\n",
+ " group_by(Month) %>% \r\n",
+ " summarise(mean_price = mean(Price))"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "6kVSUa2Bcilf"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "संक्षिप्त!✨\n",
+ "\n",
+ "महिने यांसारख्या श्रेणीसंबंधी वैशिष्ट्यांचे बार प्लॉट 📊 वापरून चांगले प्रतिनिधित्व करता येते. बार चार्टसाठी जबाबदार असलेल्या स्तरांमध्ये `geom_bar()` आणि `geom_col()` यांचा समावेश आहे. अधिक माहितीसाठी `?geom_bar` पाहा.\n",
+ "\n",
+ "चला, एक तयार करूया!\n"
+ ],
+ "metadata": {
+ "id": "Kds48GUBcj3W"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Find the average price of pumpkins per month then plot a bar chart\r\n",
+ "new_pumpkins %>%\r\n",
+ " group_by(Month) %>% \r\n",
+ " summarise(mean_price = mean(Price)) %>% \r\n",
+ " ggplot(aes(x = Month, y = mean_price)) +\r\n",
+ " geom_col(fill = \"midnightblue\", alpha = 0.7) +\r\n",
+ " ylab(\"Pumpkin Price\")"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "VNbU1S3BcrxO"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "🤩🤩हे अधिक उपयुक्त डेटा व्हिज्युअलायझेशन आहे! असे दिसते की सप्टेंबर आणि ऑक्टोबरमध्ये भोपळ्यांची सर्वाधिक किंमत असते. हे तुमच्या अपेक्षांना पूर्ण करते का? का किंवा का नाही?\n",
+ "\n",
+ "दुसरा धडा पूर्ण केल्याबद्दल अभिनंदन 👏! तुम्ही मॉडेल तयार करण्यासाठी तुमचा डेटा तयार केला, आणि नंतर व्हिज्युअलायझेशनचा वापर करून अधिक अंतर्दृष्टी शोधल्या!\n"
+ ],
+ "metadata": {
+ "id": "zDm0VOzzcuzR"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n---\n\n**अस्वीकरण**: \nहा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.\n"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/2-Regression/2-Data/solution/notebook.ipynb b/translations/mr/2-Regression/2-Data/solution/notebook.ipynb
new file mode 100644
index 000000000..3bc91382e
--- /dev/null
+++ b/translations/mr/2-Regression/2-Data/solution/notebook.ipynb
@@ -0,0 +1,437 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
City Name
\n",
+ "
Type
\n",
+ "
Package
\n",
+ "
Variety
\n",
+ "
Sub Variety
\n",
+ "
Grade
\n",
+ "
Date
\n",
+ "
Low Price
\n",
+ "
High Price
\n",
+ "
Mostly Low
\n",
+ "
...
\n",
+ "
Unit of Sale
\n",
+ "
Quality
\n",
+ "
Condition
\n",
+ "
Appearance
\n",
+ "
Storage
\n",
+ "
Crop
\n",
+ "
Repack
\n",
+ "
Trans Mode
\n",
+ "
Unnamed: 24
\n",
+ "
Unnamed: 25
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
70
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
1 1/9 bushel cartons
\n",
+ "
PIE TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
15.0
\n",
+ "
15.0
\n",
+ "
15.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
71
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
1 1/9 bushel cartons
\n",
+ "
PIE TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
18.0
\n",
+ "
18.0
\n",
+ "
18.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
72
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
1 1/9 bushel cartons
\n",
+ "
PIE TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
10/1/16
\n",
+ "
18.0
\n",
+ "
18.0
\n",
+ "
18.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
73
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
1 1/9 bushel cartons
\n",
+ "
PIE TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
10/1/16
\n",
+ "
17.0
\n",
+ "
17.0
\n",
+ "
17.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
74
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
1 1/9 bushel cartons
\n",
+ "
PIE TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
10/8/16
\n",
+ "
15.0
\n",
+ "
15.0
\n",
+ "
15.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ " \n",
+ "
\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",
+ "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"
+ ]
+ }
+ ],
+ "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-08-29T19:02:46+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/mr/2-Regression/3-Linear/README.md b/translations/mr/2-Regression/3-Linear/README.md
new file mode 100644
index 000000000..5973a936b
--- /dev/null
+++ b/translations/mr/2-Regression/3-Linear/README.md
@@ -0,0 +1,371 @@
+
+# Scikit-learn वापरून रिग्रेशन मॉडेल तयार करा: चार प्रकारे रिग्रेशन
+
+
+> माहितीपट [Dasani Madipalli](https://twitter.com/dasani_decoded) यांनी तयार केला आहे
+## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13/)
+
+> ### [हा धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
+### परिचय
+
+आतापर्यंत तुम्ही रिग्रेशन म्हणजे काय हे समजून घेतले आहे, ज्यासाठी आपण कद्दूच्या किंमतींच्या डेटासेटचा वापर केला आहे, जो आपण या धड्यादरम्यान वापरणार आहोत. तुम्ही Matplotlib वापरून त्याचे व्हिज्युअलायझेशन देखील केले आहे.
+
+आता तुम्ही मशीन लर्निंगसाठी रिग्रेशन अधिक सखोलपणे समजून घेण्यासाठी तयार आहात. व्हिज्युअलायझेशन तुम्हाला डेटाचा अर्थ लावण्यास मदत करते, परंतु मशीन लर्निंगची खरी ताकद _मॉडेल प्रशिक्षण_ मध्ये आहे. मॉडेल ऐतिहासिक डेटावर प्रशिक्षित केले जातात जेणेकरून डेटा अवलंबित्व आपोआप कॅप्चर करता येईल आणि नवीन डेटासाठी परिणामांची भविष्यवाणी करता येईल, ज्याला मॉडेलने पूर्वी पाहिलेले नाही.
+
+या धड्यात, तुम्ही रिग्रेशनचे दोन प्रकार अधिक सखोलपणे शिकाल: _मूलभूत रेखीय रिग्रेशन_ आणि _बहुपद रिग्रेशन_, तसेच या तंत्रांच्या पाठीमागील गणित. ही मॉडेल्स आपल्याला विविध इनपुट डेटाच्या आधारे कद्दूच्या किंमतींची भविष्यवाणी करण्यास अनुमती देतील.
+
+[](https://youtu.be/CRxFT8oTDMg "मशीन लर्निंगसाठी नवशिके - रेखीय रिग्रेशन समजून घेणे")
+
+> 🎥 रेखीय रिग्रेशनचा संक्षिप्त व्हिडिओ आढावा पाहण्यासाठी वरील प्रतिमेवर क्लिक करा.
+
+> या अभ्यासक्रमादरम्यान, आम्ही गणिताचे किमान ज्ञान गृहीत धरतो आणि इतर क्षेत्रांमधून आलेल्या विद्यार्थ्यांसाठी ते सुलभ करण्याचा प्रयत्न करतो, त्यामुळे नोट्स, 🧮 गणितीय कॉलआउट्स, आकृत्या आणि समज सुलभ करण्यासाठी इतर शिकण्याची साधने शोधा.
+
+### पूर्वतयारी
+
+आतापर्यंत तुम्ही कद्दूच्या डेटाच्या संरचनेशी परिचित असले पाहिजे, ज्याचा आपण अभ्यास करत आहोत. तुम्हाला ते या धड्याच्या _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` च्या मूल्याचा संदर्भ देतो.
+>
+>
+>
+> प्रथम, उतार `b` ची गणना करा. माहितीपट [Jen Looper](https://twitter.com/jenlooper) यांनी तयार केला आहे.
+>
+> दुसऱ्या शब्दांत, आणि कद्दूच्या डेटाच्या मूळ प्रश्नाचा संदर्भ देऊन: "महिन्याने प्रति बस्शेल कद्दूची किंमत भाकीत करा", `X` किंमतीचा संदर्भ देईल आणि `Y` विक्रीच्या महिन्याचा संदर्भ देईल.
+>
+>
+>
+> `Y` चे मूल्य काढा. जर तुम्ही सुमारे $4 खर्च करत असाल, तर तो एप्रिल असला पाहिजे! माहितीपट [Jen Looper](https://twitter.com/jenlooper) यांनी तयार केला आहे.
+>
+> रेषेचा उतार दर्शविणारे गणित, जे y-अंतरावर देखील अवलंबून आहे, किंवा `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 च्या जवळ) सहसंबंध गुणांक असेल.
+
+✅ या धड्याच्या सोबतच्या नोटबुक चालवा आणि महिना ते किंमत स्कॅटरप्लॉट पहा. कद्दू विक्रीसाठी महिना ते किंमत डेटा उच्च किंवा कमी सहसंबंध असल्याचे दिसते का, तुमच्या स्कॅटरप्लॉटच्या व्हिज्युअल व्याख्येनुसार? जर तुम्ही `महिना` ऐवजी अधिक सूक्ष्म उपाय वापरला तर ते बदलते का, उदा. *वर्षाचा दिवस* (उदा. वर्षाच्या सुरुवातीपासून दिवसांची संख्या)?
+
+खालील कोडमध्ये, आम्ही गृहीत धरतो की आम्ही डेटा साफ केला आहे आणि `new_pumpkins` नावाचा डेटा फ्रेम प्राप्त केला आहे, जो खालीलप्रमाणे आहे:
+
+ID | महिना | वर्षाचा दिवस | प्रकार | शहर | पॅकेज | कमी किंमत | जास्त किंमत | किंमत
+---|-------|-----------|---------|------|---------|-----------|------------|-------
+70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 बस्शेल कार्टन्स | 15.0 | 15.0 | 13.636364
+71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 बस्शेल कार्टन्स | 18.0 | 18.0 | 16.363636
+72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 बस्शेल कार्टन्स | 18.0 | 18.0 | 16.363636
+73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 बस्शेल कार्टन्स | 17.0 | 17.0 | 15.454545
+74 | 10 | 281 | PIE TYPE | BALTIMORE | 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)
+```
+
+आता तुम्हाला रेखीय रिग्रेशनच्या पाठीमागील गणिताची समज आहे, चला रिग्रेशन मॉडेल तयार करूया आणि पाहूया की कद्दूच्या पॅकेजपैकी कोणते पॅकेज सर्वोत्तम कद्दूच्या किंमती देईल. सुट्टीतील कद्दूच्या पॅचसाठी कद्दू खरेदी करणाऱ्या एखाद्याला कदाचित कद्दूच्या पॅचसाठी कद्दूच्या पॅकेजेसच्या खरेदीचा ऑप्टिमायझेशन करण्यासाठी ही माहिती हवी असेल.
+
+## सहसंबंध शोधणे
+
+[](https://youtu.be/uoRq-lW2eQo "मशीन लर्निंगसाठी नवशिके - सहसंबंध शोधणे: रेखीय रिग्रेशनची गुरुकिल्ली")
+
+> 🎥 सहसंबंधाचा संक्षिप्त व्हिडिओ आढावा पाहण्यासाठी वरील प्रतिमेवर क्लिक करा.
+
+मागील धड्यात तुम्ही कदाचित पाहिले असेल की वेगवेगळ्या महिन्यांसाठी सरासरी किंमत अशी दिसते:
+
+
+
+याचा अर्थ असा आहे की काही सहसंबंध असावा, आणि आपण `महिना` आणि `किंमत` यांच्यातील संबंध किंवा `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()
+```
+
+आणखी एक दृष्टिकोन म्हणजे त्या रिक्त मूल्यांना संबंधित कॉलममधील सरासरी मूल्यांनी भरून टाकणे.
+
+## साधे रेखीय रिग्रेशन
+
+[](https://youtu.be/e4c_UP2fSjg "मशीन लर्निंगसाठी नवशिके - Scikit-learn वापरून रेखीय आणि बहुपद रिग्रेशन")
+
+> 🎥 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)
+```
+
+`LinearRegression` ऑब्जेक्टमध्ये `fit` केल्यानंतर रिग्र
+आमची चूक सुमारे 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)
+```
+
+
+
+## बहुपद रिग्रेशन
+
+रेषीय रिग्रेशनचा आणखी एक प्रकार म्हणजे बहुपद रिग्रेशन. कधी कधी व्हेरिएबल्समध्ये रेषीय संबंध असतो - जसे की भोपळ्याचा आकार मोठा असेल तर किंमत जास्त असेल - परंतु कधी कधी हे संबंध सरळ रेषा किंवा पृष्ठभाग म्हणून प्लॉट करता येत नाहीत.
+
+✅ येथे [काही अधिक उदाहरणे](https://online.stat.psu.edu/stat501/lesson/9/9.8) आहेत ज्यामध्ये बहुपद रिग्रेशनचा उपयोग होऊ शकतो.
+
+Date आणि Price यांच्यातील संबंध पुन्हा एकदा पाहा. हा स्कॅटरप्लॉट सरळ रेषेने विश्लेषित केला जावा असे वाटते का? किंमती बदलू शकत नाहीत का? अशा परिस्थितीत, तुम्ही बहुपद रिग्रेशन वापरून पाहू शकता.
+
+✅ बहुपद म्हणजे गणितीय अभिव्यक्ती ज्यामध्ये एक किंवा अधिक व्हेरिएबल्स आणि गुणांक असू शकतात.
+
+बहुपद रिग्रेशन वक्र रेषा तयार करते जे नॉन-रेषीय डेटाशी चांगले जुळते. आमच्या बाबतीत, जर आम्ही `DayOfYear` च्या वर्गाचा व्हेरिएबल इनपुट डेटामध्ये समाविष्ट केला, तर आम्ही एका परबोलिक वक्रासह आमचा डेटा फिट करू शकतो, ज्याचा किमान बिंदू वर्षाच्या विशिष्ट बिंदूवर असेल.
+
+Scikit-learn मध्ये डेटा प्रक्रिया एकत्र करण्यासाठी एक उपयुक्त [pipeline 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` वापरून अंदाज परिणाम मिळवू शकतो. येथे चाचणी डेटा आणि अंदाज वक्र दर्शविणारा ग्राफ आहे:
+
+
+
+बहुपद रिग्रेशन वापरून, आम्हाला किंचित कमी MSE आणि उच्च निर्धारण मिळू शकते, परंतु फारसे महत्त्वाचे नाही. आम्हाला इतर वैशिष्ट्यांचा विचार करणे आवश्यक आहे!
+
+> तुम्ही पाहू शकता की किमान भोपळ्याच्या किंमती हॅलोविनच्या आसपास दिसतात. तुम्ही हे कसे स्पष्ट कराल?
+
+🎃 अभिनंदन, तुम्ही एक मॉडेल तयार केले आहे जे पाई भोपळ्याच्या किंमतींचा अंदाज लावण्यास मदत करू शकते. तुम्ही कदाचित सर्व प्रकारच्या भोपळ्यांसाठी समान प्रक्रिया पुन्हा करू शकता, परंतु ते कंटाळवाणे होईल. आता आपण आपल्या मॉडेलमध्ये भोपळ्याच्या प्रकाराचा विचार कसा करायचा ते शिकूया!
+
+## श्रेणी वैशिष्ट्ये
+
+आदर्श जगात, आम्हाला समान मॉडेल वापरून भोपळ्याच्या विविध प्रकारांसाठी किंमतींचा अंदाज लावता यावा अशी इच्छा आहे. तथापि, `Variety` कॉलम `Month` सारख्या कॉलमपेक्षा थोडा वेगळा आहे, कारण त्यामध्ये नॉन-न्यूमेरिक मूल्ये आहेत. अशा कॉलम्सला **श्रेणी** म्हणतात.
+
+[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा श्रेणी वैशिष्ट्ये वापरण्याचा संक्षिप्त व्हिडिओ आढावा पाहण्यासाठी.
+
+येथे तुम्ही पाहू शकता की प्रकारानुसार सरासरी किंमत कशी बदलते:
+
+
+
+प्रकाराचा विचार करण्यासाठी, प्रथम त्याला न्यूमेरिक स्वरूपात रूपांतरित करणे आवश्यक आहे, किंवा **एन्कोड** करणे आवश्यक आहे. हे करण्याचे अनेक मार्ग आहेत:
+
+* साधे **न्यूमेरिक एन्कोडिंग** विविध प्रकारांची टेबल तयार करेल आणि नंतर प्रकाराचे नाव त्या टेबलमधील निर्देशांकाने बदलले जाईल. हे रेषीय रिग्रेशनसाठी सर्वोत्तम कल्पना नाही, कारण रेषीय रिग्रेशन निर्देशांकाच्या वास्तविक न्यूमेरिक मूल्याचा विचार करते आणि काही गुणांकाने गुणाकार करून निकालात जोडते. आमच्या बाबतीत, निर्देशांक क्रमांक आणि किंमत यांच्यातील संबंध स्पष्टपणे नॉन-रेषीय आहे, जरी आम्ही सुनिश्चित केले की निर्देशांक विशिष्ट क्रमाने क्रमवारीत आहेत.
+* **वन-हॉट एन्कोडिंग** `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
+# set up training data
+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']
+
+# make train-test split
+X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
+
+# setup and train the pipeline
+pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
+pipeline.fit(X_train,y_train)
+
+# predict results for test data
+pred = pipeline.predict(X_test)
+
+# calculate MSE and determination
+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` Linear | 2.77 (17.2%) | 0.07 |
+| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 |
+| `Variety` Linear | 5.24 (19.7%) | 0.77 |
+| All features Linear | 2.84 (10.5%) | 0.94 |
+| All features Polynomial | 2.23 (8.25%) | 0.97 |
+
+🏆 खूप छान! तुम्ही एका धड्यात चार रिग्रेशन मॉडेल्स तयार केली आणि मॉडेलची गुणवत्ता 97% पर्यंत सुधारली. रिग्रेशनवरील अंतिम विभागात, तुम्ही श्रेणी निश्चित करण्यासाठी लॉजिस्टिक रिग्रेशनबद्दल शिकाल.
+
+---
+## 🚀चॅलेंज
+
+या नोटबुकमध्ये अनेक वेगवेगळ्या व्हेरिएबल्सची चाचणी करा आणि पाहा की सहसंबंध मॉडेल अचूकतेशी कसा संबंधित आहे.
+
+## [पाठानंतरचा क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+या धड्यात आपण रेषीय रिग्रेशनबद्दल शिकलो. रिग्रेशनचे इतर महत्त्वाचे प्रकार आहेत. 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/mr/2-Regression/3-Linear/assignment.md b/translations/mr/2-Regression/3-Linear/assignment.md
new file mode 100644
index 000000000..de533655c
--- /dev/null
+++ b/translations/mr/2-Regression/3-Linear/assignment.md
@@ -0,0 +1,25 @@
+
+# रिग्रेशन मॉडेल तयार करा
+
+## सूचना
+
+या धड्यात तुम्हाला लीनियर आणि पॉलिनोमियल रिग्रेशन वापरून मॉडेल तयार करण्याची पद्धत दाखवली गेली. या ज्ञानाचा उपयोग करून, एक डेटासेट शोधा किंवा Scikit-learn च्या अंगभूत सेट्सपैकी एक वापरून नवीन मॉडेल तयार करा. तुम्ही निवडलेली तंत्रज्ञान का निवडली हे तुमच्या नोटबुकमध्ये स्पष्ट करा आणि तुमच्या मॉडेलची अचूकता दाखवा. जर ते अचूक नसेल, तर का ते स्पष्ट करा.
+
+## मूल्यांकन निकष
+
+| निकष | उत्कृष्ट | पुरेसे | सुधारणा आवश्यक |
+| --------- | ------------------------------------------------------------- | ------------------------ | ---------------------------- |
+| | पूर्ण नोटबुक सादर करते ज्यामध्ये उत्तम प्रकारे दस्तऐवजीकरण केलेले समाधान आहे | समाधान अपूर्ण आहे | समाधान त्रुटीपूर्ण किंवा बगयुक्त आहे |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/2-Regression/3-Linear/notebook.ipynb b/translations/mr/2-Regression/3-Linear/notebook.ipynb
new file mode 100644
index 000000000..9f0587dcc
--- /dev/null
+++ b/translations/mr/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हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.\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-08-29T18:43:52+00:00",
+ "source_file": "2-Regression/3-Linear/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/mr/2-Regression/3-Linear/solution/Julia/README.md b/translations/mr/2-Regression/3-Linear/solution/Julia/README.md
new file mode 100644
index 000000000..78a1a0809
--- /dev/null
+++ b/translations/mr/2-Regression/3-Linear/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb b/translations/mr/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb
new file mode 100644
index 000000000..1b83b77ba
--- /dev/null
+++ b/translations/mr/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-08-29T18:47:56+00:00",
+ "source_file": "2-Regression/3-Linear/solution/R/lesson_3-R.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [],
+ "metadata": {
+ "id": "EgQw8osnsUV-"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## भोपळ्याच्या किंमतीसाठी रेषीय आणि बहुपदीय पुनरावृत्ती - धडा 3\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",
+ "जसे तुम्ही पहिल्या धड्यात शिकले, रेषीय प्रतिगमनाचा उद्देश म्हणजे *सर्वोत्तम तंदुरुस्तीची रेषा* काढणे:\n",
+ "\n",
+ "- **चलांमधील संबंध दाखवणे**. चलांमधील संबंध स्पष्ट करणे.\n",
+ "\n",
+ "- **भविष्यवाणी करणे**. नवीन डेटा पॉइंट त्या रेषेच्या संदर्भात कुठे येईल याची अचूक भविष्यवाणी करणे.\n",
+ "\n",
+ "या प्रकारची रेषा काढण्यासाठी, आम्ही **लीस्ट-स्क्वेअर प्रतिगमन** नावाची सांख्यिकी तंत्र वापरतो. `लीस्ट-स्क्वेअर` म्हणजे प्रतिगमन रेषेच्या आजूबाजूच्या सर्व डेटा पॉइंट्सचे वर्गाकार करून त्यांची बेरीज केली जाते. आदर्शतः, अंतिम बेरीज शक्य तितकी कमी असावी, कारण आम्हाला त्रुटींचा कमी आकडा हवा आहे, म्हणजेच `लीस्ट-स्क्वेअर`. म्हणूनच, सर्वोत्तम तंदुरुस्तीची रेषा ही ती रेषा आहे जी वर्गाकार त्रुटींच्या बेरीजसाठी सर्वात कमी मूल्य देते - म्हणूनच नाव *लीस्ट-स्क्वेअर प्रतिगमन*.\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",
+ "> \n",
+ " जेन लूपर यांनी तयार केलेले माहितीपट\n",
+ ">\n",
+ "> प्रथम, उतार `b` काढा.\n",
+ ">\n",
+ "> दुसऱ्या शब्दांत, आणि आमच्या भोपळ्याच्या डेटाच्या मूळ प्रश्नाचा संदर्भ देऊन: \"महिन्यानुसार प्रति बुशेल भोपळ्याची किंमत भाकीत करा\", `X` किंमतीला सूचित करेल आणि `Y` विक्रीच्या महिन्याला सूचित करेल.\n",
+ ">\n",
+ "> \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": [
+ "## **२. डेटासोबतचा नृत्य: मॉडेलिंगसाठी वापरला जाणारा डेटा फ्रेम तयार करणे**\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": [
+ "🤔 आपण अधिक चांगले करू शकतो. चला या स्तंभांच्या नावांना `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": [
+ "खूपच स्वच्छ 🧹! आता, मागील धड्यातीलप्रमाणे `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` या वर्णात्मक प्रकाराच्या स्तंभांवर आधारित `pumpkin` च्या `price` ची भविष्यवाणी करायची असेल तर काय कराल? किंवा आणखी सोप्या पद्धतीने, जर आपल्याला `package` आणि `price` यांच्यातील संबंध शोधायचा असेल (ज्यासाठी दोन्ही इनपुट्स संख्यात्मक असणे आवश्यक आहे) तर काय कराल? 🤷🤷\n",
+ "\n",
+ "यंत्र शिक्षण मॉडेल्स संख्यात्मक वैशिष्ट्यांसोबत अधिक चांगले कार्य करतात, मजकूर मूल्यांऐवजी. त्यामुळे सामान्यतः श्रेणीबद्ध वैशिष्ट्यांना संख्यात्मक स्वरूपात रूपांतरित करणे आवश्यक असते.\n",
+ "\n",
+ "याचा अर्थ असा की आपल्याला आपल्या भविष्यवाणी करणाऱ्या घटकांना मॉडेलसाठी अधिक प्रभावीपणे वापरण्यास सोपे बनवण्यासाठी पुनर्रचना करावी लागेल, ज्याला `feature engineering` म्हणतात.\n"
+ ],
+ "metadata": {
+ "id": "7hsHoxsStyjJ"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 3. मॉडेलसाठी डेटा पूर्वतयारी `recipes` च्या मदतीने 👩🍳👨🍳\n",
+ "\n",
+ "मॉडेलला प्रभावीपणे वापरण्यास सुलभ करण्यासाठी प्रेडिक्टर मूल्यांचे पुनर्रचना करणे म्हणजेच `फीचर इंजिनिअरिंग` असे म्हणतात.\n",
+ "\n",
+ "वेगवेगळ्या मॉडेल्सना वेगवेगळ्या प्रकारच्या पूर्वतयारीची आवश्यकता असते. उदाहरणार्थ, `least squares` ला `categorical variables` जसे की महिना, प्रकार, आणि शहराचे नाव `encode` करणे आवश्यक असते. याचा अर्थ असा की `categorical values` असलेल्या एका स्तंभाला `numeric columns` मध्ये रूपांतरित करणे, जे मूळ स्तंभाची जागा घेतील.\n",
+ "\n",
+ "उदाहरणार्थ, समजा तुमच्या डेटामध्ये खालीलप्रमाणे एक `categorical feature` आहे:\n",
+ "\n",
+ "| city |\n",
+ "|:-------:|\n",
+ "| Denver |\n",
+ "| Nairobi |\n",
+ "| Tokyo |\n",
+ "\n",
+ "तुम्ही *ordinal encoding* वापरून प्रत्येक श्रेणीसाठी एक अद्वितीय पूर्णांक मूल्य देऊ शकता, जसे:\n",
+ "\n",
+ "| city |\n",
+ "|:----:|\n",
+ "| 0 |\n",
+ "| 1 |\n",
+ "| 2 |\n",
+ "\n",
+ "आणि हेच आपण आपल्या डेटावर करणार आहोत!\n",
+ "\n",
+ "या विभागात, आपण `Tidymodels` च्या आणखी एका अप्रतिम पॅकेजचा अभ्यास करू: [recipes](https://tidymodels.github.io/recipes/) - जे तुमचा डेटा **मॉडेल प्रशिक्षणापूर्वी** पूर्वतयार करण्यासाठी डिझाइन केले गेले आहे. मुख्यतः, एक `recipe` म्हणजे एक ऑब्जेक्ट आहे जो डेटासेटवर कोणते टप्पे लागू करायचे आहेत हे परिभाषित करतो, जेणेकरून तो मॉडेलिंगसाठी तयार होईल.\n",
+ "\n",
+ "आता, आपण एक `recipe` तयार करूया, जी प्रेडिक्टर कॉलममधील सर्व निरीक्षणांसाठी एक अद्वितीय पूर्णांक बदलून आपला डेटा मॉडेलिंगसाठी तयार करेल:\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` डेटाचा संदर्भ वापरून व्हेरिएबल्सच्या *roles* रेसिपीला सांगितल्या जातात. उदाहरणार्थ, `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",
+ "> टीप: जेव्हा तुम्ही **`pumpkins_prep`** नावाच्या तयार केलेल्या रेसिपीला **`bake()`** करता आणि **`new_data = NULL`** सेट करता, तेव्हा तुम्हाला प्रक्रिया केलेले (उदा. एन्कोड केलेले) प्रशिक्षण डेटा मिळतो. उदाहरणार्थ, जर तुमच्याकडे दुसरा डेटा सेट असेल, जसे की चाचणी सेट, आणि तुम्हाला पाहायचे असेल की रेसिपी त्यावर कशी पूर्व-प्रक्रिया करेल, तर तुम्ही फक्त **`pumpkins_prep`** ला **`new_data = test_set`** सह बेक कराल.\n",
+ "\n",
+ "## ४. रेषीय प्रतिगमन मॉडेल तयार करा\n",
+ "\n",
+ "
\n",
+ " \n",
+ " दासानी मदीपल्ली यांनी तयार केलेले माहितीपट\n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "metadata": {
+ "id": "YqXjLuWavNxW"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "आता आपण एक रेसिपी तयार केली आहे आणि डेटा योग्य प्रकारे पूर्व-प्रक्रिया होईल याची प्रत्यक्षात पुष्टी केली आहे, तर आता आपण एक रिग्रेशन मॉडेल तयार करूया ज्यामुळे या प्रश्नाचे उत्तर मिळेल: `दिलेल्या भोपळ्याच्या पॅकेजची किंमत किती अपेक्षित आहे?`\n",
+ "\n",
+ "#### प्रशिक्षण संच वापरून एक रेषीय रिग्रेशन मॉडेल तयार करा\n",
+ "\n",
+ "तुम्हाला आधीच लक्षात आले असेल, *price* हा स्तंभ `outcome` व्हेरिएबल आहे तर *package* हा स्तंभ `predictor` व्हेरिएबल आहे.\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",
+ "आता आपण मॉडेल प्रशिक्षित केले आहे, आपण `parsnip::predict()` वापरून चाचणी संचासाठी अंदाज तयार करू शकतो. त्यानंतर आपण हे अंदाज वास्तविक लेबल मूल्यांशी तुलना करू शकतो, जेणेकरून मॉडेल किती चांगले (किंवा नाही!) कार्य करत आहे ते मूल्यांकन करता येईल.\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",
+ "## ५. बहुपद प्रतिगमन मॉडेल तयार करा\n",
+ "\n",
+ "
\n",
+ " \n",
+ " दासानी मदीपल्ली यांनी तयार केलेले माहितीग्राफिक\n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "metadata": {
+ "id": "HOCqJXLTwtWI"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "कधी कधी आपल्या डेटामध्ये रेषीय संबंध नसतो, पण तरीही आपल्याला एखाद्या परिणामाचा अंदाज घ्यायचा असतो. अशा अधिक जटिल, रेषीय नसलेल्या संबंधांसाठी बहुपदीय प्रतिगमन (polynomial regression) आपल्याला मदत करू शकते.\n",
+ "\n",
+ "उदाहरणार्थ, आपल्या भोपळ्यांच्या डेटासेटमध्ये पॅकेज आणि किंमत यांच्यातील संबंध पाहा. कधी कधी चलांमध्ये रेषीय संबंध असतो - जसे की भोपळ्याचा आकार जसा मोठा तसा त्याची किंमत जास्त - पण कधी कधी हे संबंध सरळ रेषा किंवा पातळीवर मांडता येत नाहीत.\n",
+ "\n",
+ "> ✅ येथे [काही अधिक उदाहरणे](https://online.stat.psu.edu/stat501/lesson/9/9.8) दिली आहेत जिथे बहुपदीय प्रतिगमन उपयोगी ठरू शकते.\n",
+ ">\n",
+ "> मागील प्लॉटमध्ये Variety आणि Price यांच्यातील संबंध पुन्हा एकदा पाहा. हा scatterplot सरळ रेषेने विश्लेषित केला जावा असे तुम्हाला वाटते का? कदाचित नाही. अशा परिस्थितीत, तुम्ही बहुपदीय प्रतिगमन वापरून पाहू शकता.\n",
+ ">\n",
+ "> ✅ बहुपद (Polynomials) हे गणितीय समीकरणे आहेत ज्यामध्ये एक किंवा अधिक चल (variables) आणि गुणांक (coefficients) असू शकतात.\n",
+ "\n",
+ "#### प्रशिक्षण सेट वापरून बहुपदीय प्रतिगमन मॉडेल तयार करा\n",
+ "\n",
+ "बहुपदीय प्रतिगमन *वाकलेली रेषा* तयार करते जी रेषीय नसलेल्या डेटाला अधिक चांगल्या प्रकारे जुळवते.\n",
+ "\n",
+ "चला पाहूया की बहुपदीय मॉडेल अंदाज वर्तवण्यात अधिक चांगले कार्य करते का. आपण यापूर्वी केलेल्या प्रक्रियेप्रमाणेच काहीशी प्रक्रिया अनुसरण करू:\n",
+ "\n",
+ "- एक recipe तयार करा ज्यामध्ये आपल्या डेटावर मॉडेलिंगसाठी आवश्यक असलेल्या पूर्वप्रक्रिया पायऱ्या नमूद केल्या जातील, जसे की: predictors चे encoding करणे आणि *n* डिग्रीचे बहुपद तयार करणे.\n",
+ "\n",
+ "- मॉडेल स्पेसिफिकेशन तयार करा\n",
+ "\n",
+ "- recipe आणि मॉडेल स्पेसिफिकेशनला workflow मध्ये एकत्र करा\n",
+ "\n",
+ "- workflow फिट करून मॉडेल तयार करा\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": [
+ "`polynomial model` चा अंदाज योग्य वाटतो, दिलेल्या `price` आणि `package` च्या scatter plots पाहता! आणि, जर हा मागील मॉडेलपेक्षा चांगला मॉडेल असेल, तर त्याच डेटावरून पाहता, तुम्हाला या महागड्या भोपळ्यांसाठी बजेट तयार करावे लागेल!\n",
+ "\n",
+ "🏆 छान काम केले! तुम्ही एका धड्यात दोन regression मॉडेल्स तयार केले. Regression च्या अंतिम विभागात, तुम्ही logistic regression शिकाल ज्यामुळे श्रेणी निश्चित करता येतील.\n",
+ "\n",
+ "## **🚀चॅलेंज**\n",
+ "\n",
+ "या नोटबुकमध्ये विविध variables तपासा आणि correlation कसा मॉडेल accuracy शी संबंधित आहे ते पाहा.\n",
+ "\n",
+ "## [**Post-lecture quiz**](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 framework कसे वापरायचे याबद्दल अधिक शिकायचे असेल, तर कृपया खालील संसाधने तपासा:\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 अधिक स्वागतार्ह आणि आकर्षक बनवणाऱ्या अप्रतिम चित्रे तयार केल्याबद्दल. तिच्या [gallery](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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/2-Regression/3-Linear/solution/notebook.ipynb b/translations/mr/2-Regression/3-Linear/solution/notebook.ipynb
new file mode 100644
index 000000000..26613a26a
--- /dev/null
+++ b/translations/mr/2-Regression/3-Linear/solution/notebook.ipynb
@@ -0,0 +1,1109 @@
+{
+ "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",
+ "
City Name
\n",
+ "
Type
\n",
+ "
Package
\n",
+ "
Variety
\n",
+ "
Sub Variety
\n",
+ "
Grade
\n",
+ "
Date
\n",
+ "
Low Price
\n",
+ "
High Price
\n",
+ "
Mostly Low
\n",
+ "
...
\n",
+ "
Unit of Sale
\n",
+ "
Quality
\n",
+ "
Condition
\n",
+ "
Appearance
\n",
+ "
Storage
\n",
+ "
Crop
\n",
+ "
Repack
\n",
+ "
Trans Mode
\n",
+ "
Unnamed: 24
\n",
+ "
Unnamed: 25
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
4/29/17
\n",
+ "
270.0
\n",
+ "
280.0
\n",
+ "
270.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
E
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
5/6/17
\n",
+ "
270.0
\n",
+ "
280.0
\n",
+ "
270.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
E
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
11/5/16
\n",
+ "
90.0
\n",
+ "
100.0
\n",
+ "
90.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ " \n",
+ "
\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": [
+ "
"
+ ]
+ },
+ "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",
+ "* साधे संख्यात्मक एन्कोडिंग, जे विविध प्रकारांची एक टेबल तयार करेल आणि नंतर त्या टेबलमधील अनुक्रमांकाने प्रकाराचे नाव बदलून टाकेल. हे रेषीय प्रतिगमनासाठी (linear regression) सर्वोत्तम कल्पना नाही, कारण रेषीय प्रतिगमन अनुक्रमांकाच्या संख्यात्मक मूल्याचा विचार करते, आणि हे संख्यात्मक मूल्य किंमतीशी संख्यात्मकदृष्ट्या संबंधित असण्याची शक्यता कमी असते.\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",
+ "
FAIRYTALE
\n",
+ "
MINIATURE
\n",
+ "
MIXED HEIRLOOM VARIETIES
\n",
+ "
PIE TYPE
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
70
\n",
+ "
0
\n",
+ "
0
\n",
+ "
0
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
71
\n",
+ "
0
\n",
+ "
0
\n",
+ "
0
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
72
\n",
+ "
0
\n",
+ "
0
\n",
+ "
0
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
73
\n",
+ "
0
\n",
+ "
0
\n",
+ "
0
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
74
\n",
+ "
0
\n",
+ "
0
\n",
+ "
0
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
\n",
+ "
\n",
+ "
1738
\n",
+ "
0
\n",
+ "
1
\n",
+ "
0
\n",
+ "
0
\n",
+ "
\n",
+ "
\n",
+ "
1739
\n",
+ "
0
\n",
+ "
1
\n",
+ "
0
\n",
+ "
0
\n",
+ "
\n",
+ "
\n",
+ "
1740
\n",
+ "
0
\n",
+ "
1
\n",
+ "
0
\n",
+ "
0
\n",
+ "
\n",
+ "
\n",
+ "
1741
\n",
+ "
0
\n",
+ "
1
\n",
+ "
0
\n",
+ "
0
\n",
+ "
\n",
+ "
\n",
+ "
1742
\n",
+ "
0
\n",
+ "
1
\n",
+ "
0
\n",
+ "
0
\n",
+ "
\n",
+ " \n",
+ "
\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"
+ ]
+ }
+ ],
+ "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-08-29T18:44:38+00:00",
+ "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/mr/2-Regression/4-Logistic/README.md b/translations/mr/2-Regression/4-Logistic/README.md
new file mode 100644
index 000000000..fb240a2b5
--- /dev/null
+++ b/translations/mr/2-Regression/4-Logistic/README.md
@@ -0,0 +1,401 @@
+
+# वर्गांचे अंदाज लावण्यासाठी लॉजिस्टिक रिग्रेशन
+
+
+
+## [पूर्व-व्याख्यान प्रश्नमंजूषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/15/)
+
+> ### [हा धडा 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), जरी ती लीनियर-आधारित आहे. डेटा वर्गीकृत करण्याच्या इतर पद्धतींबद्दल पुढील धड्यांमध्ये जाणून घ्या.
+
+## प्रश्न परिभाषित करा
+
+आपल्या उद्देशांसाठी, आपण याला द्विआधारी स्वरूपात व्यक्त करू: 'पांढरा' किंवा 'पांढरा नाही'. आमच्या डेटासेटमध्ये 'पट्टेदार' श्रेणी देखील आहे परंतु त्याचे काहीच उदाहरण आहे, त्यामुळे आपण ते वापरणार नाही. डेटासेटमधून null मूल्ये काढून टाकल्यानंतर ते अदृश्य होते.
+
+> 🎃 मजेदार तथ्य, आम्ही कधी कधी पांढऱ्या कद्दूला 'भूत' कद्दू म्हणतो. ते कोरायला फारसे सोपे नसते, त्यामुळे ते नारंगी कद्दूपेक्षा कमी लोकप्रिय असतात पण ते छान दिसतात! त्यामुळे आपण आपला प्रश्न पुन्हा असेही मांडू शकतो: 'भूत' किंवा 'भूत नाही'. 👻
+
+## लॉजिस्टिक रिग्रेशनबद्दल
+
+लॉजिस्टिक रिग्रेशन लीनियर रिग्रेशनपेक्षा, ज्याबद्दल तुम्ही यापूर्वी शिकले होते, काही महत्त्वाच्या प्रकारांनी वेगळे आहे.
+
+[](https://youtu.be/KpeCT6nEpBY "मशीन लर्निंग वर्गीकरणासाठी लॉजिस्टिक रिग्रेशन समजून घेणे")
+
+> 🎥 लॉजिस्टिक रिग्रेशनचा संक्षिप्त व्हिडिओ आढावा घेण्यासाठी वरील प्रतिमेवर क्लिक करा.
+
+### द्विआधारी वर्गीकरण
+
+लॉजिस्टिक रिग्रेशन लीनियर रिग्रेशनसारखी वैशिष्ट्ये देत नाही. पूर्वीचे द्विआधारी श्रेणी ("पांढरा किंवा पांढरा नाही") बद्दल अंदाज देते तर नंतरचे सतत मूल्यांचा अंदाज लावण्यास सक्षम आहे, उदाहरणार्थ कद्दूचा उगम आणि कापणीचा वेळ दिल्यास, _त्याच्या किंमतीत किती वाढ होईल_.
+
+
+> माहितीपट [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) यांनी तयार केला आहे.
+
+### इतर वर्गीकरण
+
+लॉजिस्टिक रिग्रेशनचे इतर प्रकार आहेत, ज्यात मल्टिनॉमियल आणि ऑर्डिनल समाविष्ट आहेत:
+
+- **मल्टिनॉमियल**, ज्यामध्ये एकापेक्षा जास्त श्रेणी असते - "नारंगी, पांढरा आणि पट्टेदार".
+- **ऑर्डिनल**, ज्यामध्ये क्रमबद्ध श्रेणी असते, जेव्हा आपण आपल्या परिणामांना तार्किकरित्या क्रमबद्ध करायचे असते तेव्हा उपयुक्त, जसे की कद्दू जे मर्यादित आकारांनुसार क्रमबद्ध केले जातात (mini, sm, med, lg, xl, xxl).
+
+
+
+### व्हेरिएबल्सला सहसंबद्ध असण्याची गरज नाही
+
+लक्षात ठेवा की लीनियर रिग्रेशन अधिक सहसंबद्ध व्हेरिएबल्ससह चांगले कार्य करते? लॉजिस्टिक रिग्रेशन उलट आहे - व्हेरिएबल्सला जुळण्याची गरज नाही. हे डेटा साठी कार्य करते ज्यामध्ये काहीसे कमजोर सहसंबंध आहेत.
+
+### तुम्हाला स्वच्छ डेटाची गरज आहे
+
+लॉजिस्टिक रिग्रेशन अधिक डेटा वापरल्यास अधिक अचूक परिणाम देईल; आमचे छोटे डेटासेट या कार्यासाठी आदर्श नाही, त्यामुळे हे लक्षात ठेवा.
+
+[](https://youtu.be/B2X4H9vcXTs "लॉजिस्टिक रिग्रेशनसाठी डेटा विश्लेषण आणि तयारी")
+
+✅ लॉजिस्टिक रिग्रेशनसाठी चांगल्या प्रकारे उपयुक्त असलेल्या डेटाच्या प्रकारांबद्दल विचार करा.
+
+## व्यायाम - डेटा स्वच्छ करा
+
+सुरुवातीला, null मूल्ये काढून टाकून आणि फक्त काही स्तंभ निवडून डेटा थोडा स्वच्छ करा:
+
+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` फंक्शन वापरून, आणि प्रत्येक कद्दू श्रेणीसाठी (नारंगी किंवा पांढरा) रंग मॅपिंग निर्दिष्ट करून, अशा प्रकारचा प्लॉट तयार करा:
+
+ ```python
+ import seaborn as sns
+
+ palette = {
+ 'ORANGE': 'orange',
+ 'WHITE': 'wheat',
+ }
+
+ sns.catplot(
+ data=pumpkins, y="Variety", hue="Color", kind="count",
+ palette=palette,
+ )
+ ```
+
+ 
+
+ डेटा पाहून, तुम्ही पाहू शकता की `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}")
+```
+
+
+
+### स्वॉर्म प्लॉट वापरा
+
+`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)
+ ```
+
+ 
+
+**लक्ष द्या**: वरील कोड चेतावणी निर्माण करू शकतो, कारण Seaborn अशा मोठ्या प्रमाणातील डेटा पॉइंट्स स्वॉर्म प्लॉटमध्ये दर्शविण्यात अयशस्वी होतो. संभाव्य उपाय म्हणजे मार्करचा आकार कमी करणे, 'size' पॅरामीटर वापरून. तथापि, लक्षात ठेवा की यामुळे प्लॉटची वाचनीयता प्रभावित होते.
+
+> **🧮 गणित दाखवा**
+>
+> लॉजिस्टिक रिग्रेशन 'मॅक्सिमम लाइकलीहुड' संकल्पनेवर आधारित आहे, ज्यासाठी [सिग्मॉइड फंक्शन्स](https://wikipedia.org/wiki/Sigmoid_function) वापरल्या जातात. 'सिग्मॉइड फंक्शन' प्लॉटवर 'S' आकारासारखे दिसते. ते एखाद्या मूल्याला घेते आणि ते 0 ते 1 दरम्यान कुठेतरी मॅप करते. त्याचे वक्र 'लॉजिस्टिक वक्र' म्हणूनही ओळखले जाते. त्याचा फॉर्म्युला असा दिसतो:
+>
+> 
+>
+> जिथे सिग्मॉइडचा मध्यबिंदू x च्या 0 पॉइंटवर असतो, L वक्राचे जास्तीत जास्त मूल्य असते आणि k वक्राची तीव्रता असते. जर फंक्शनचा परिणाम 0.5 पेक्षा जास्त असेल, तर संबंधित लेबलला द्विआधारी निवडीचा '1' वर्ग दिला जाईल. अन्यथा, त्याचे वर्गीकरण '0' म्हणून केले जाईल.
+
+## तुमचे मॉडेल तयार करा
+
+Scikit-learn मध्ये द्विआधारी वर्गीकरण शोधण्यासाठी मॉडेल तयार करणे आश्चर्यकारकपणे सोपे आहे.
+
+[](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/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 मध्ये, गोंधळाच्या मॅट्रिक्समध्ये पंक्ती (axis 0) वास्तविक लेबल्स असतात आणि स्तंभ (axis 1) अंदाजित लेबल्स असतात.
+
+| | 0 | 1 |
+| :---: | :---
+गोंधळ मॅट्रिक्सचा प्रिसिजन आणि रिकॉलशी कसा संबंध आहे? लक्षात ठेवा, वरील प्रिंट केलेल्या वर्गीकरण अहवालात प्रिसिजन (0.85) आणि रिकॉल (0.67) दर्शविले होते.
+
+प्रिसिजन = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461
+
+रिकॉल = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666
+
+✅ प्रश्न: गोंधळ मॅट्रिक्सनुसार, मॉडेलने कसे काम केले? उत्तर: वाईट नाही; बऱ्याच प्रमाणात खरे निगेटिव्ह्स आहेत, पण काही खोटे निगेटिव्ह्सही आहेत.
+
+चला, आपण यापूर्वी पाहिलेल्या संज्ञा पुन्हा गोंधळ मॅट्रिक्समधील TP/TN आणि FP/FN च्या मॅपिंगच्या मदतीने पाहूया:
+
+🎓 प्रिसिजन: TP/(TP + FP) पुनर्प्राप्त केलेल्या उदाहरणांपैकी संबंधित उदाहरणांचे प्रमाण (उदा. कोणते लेबल्स योग्यरित्या लेबल केले गेले)
+
+🎓 रिकॉल: TP/(TP + FN) पुनर्प्राप्त केलेल्या संबंधित उदाहरणांचे प्रमाण, योग्यरित्या लेबल केले गेले असो वा नसो
+
+🎓 f1-स्कोअर: (2 * प्रिसिजन * रिकॉल)/(प्रिसिजन + रिकॉल) प्रिसिजन आणि रिकॉलचा भारित सरासरी, सर्वोत्तम 1 आणि सर्वात वाईट 0
+
+🎓 सपोर्ट: प्रत्येक लेबलच्या पुनर्प्राप्त झालेल्या उदाहरणांची संख्या
+
+🎓 अचूकता: (TP + TN)/(TP + TN + FP + FN) नमुन्यासाठी अचूकपणे अंदाज लावलेल्या लेबल्सचे टक्केवारी
+
+🎓 मॅक्रो सरासरी: प्रत्येक लेबलसाठी वजन न देता मेट्रिक्सची सरासरी गणना, लेबल असमतोल विचारात न घेता.
+
+🎓 वजनित सरासरी: प्रत्येक लेबलसाठी मेट्रिक्सची सरासरी गणना, सपोर्ट (प्रत्येक लेबलसाठी खऱ्या उदाहरणांची संख्या) ने त्यांना वजन देऊन लेबल असमतोल विचारात घेणे.
+
+✅ तुम्हाला वाटते की जर तुम्हाला तुमच्या मॉडेलने खोट्या निगेटिव्ह्सची संख्या कमी करायची असेल, तर कोणता मेट्रिक पाहायला हवा?
+
+## या मॉडेलचा ROC कर्व्ह व्हिज्युअलाइझ करा
+
+[](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 अक्षावर खोटे पॉझिटिव्ह रेट असतो." त्यामुळे कर्व्हची तीव्रता आणि मध्यरेषा व कर्व्ह यांच्यातील जागा महत्त्वाची ठरते: तुम्हाला अशी कर्व्ह हवी आहे जी पटकन वर जाईल आणि रेषेच्या वर जाईल. आपल्या बाबतीत, सुरुवातीला खोटे पॉझिटिव्ह्स आहेत, आणि नंतर रेषा योग्यरित्या वर जाते:
+
+
+
+शेवटी, 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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/16/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+[स्टॅनफोर्डच्या या पेपरच्या](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/mr/2-Regression/4-Logistic/assignment.md b/translations/mr/2-Regression/4-Logistic/assignment.md
new file mode 100644
index 000000000..ce80bd6ad
--- /dev/null
+++ b/translations/mr/2-Regression/4-Logistic/assignment.md
@@ -0,0 +1,25 @@
+
+# पुनर्प्रयत्न काही पुनरावृत्ती
+
+## सूचना
+
+पाठामध्ये, तुम्ही भोपळ्याच्या डेटाचा एक उपसंच वापरला होता. आता मूळ डेटावर परत जा आणि संपूर्ण डेटाचा वापर करा, स्वच्छ आणि प्रमाणित करून, लॉजिस्टिक रिग्रेशन मॉडेल तयार करण्याचा प्रयत्न करा.
+
+## मूल्यांकन निकष
+
+| निकष | उत्कृष्ट | पुरेसे | सुधारणा आवश्यक |
+| --------- | ----------------------------------------------------------------------- | ---------------------------------------------------------- | --------------------------------------------------------- |
+| | एक नोटबुक सादर केली जाते ज्यामध्ये चांगले स्पष्ट केलेले आणि चांगले कार्य करणारे मॉडेल आहे | एक नोटबुक सादर केली जाते ज्यामध्ये किमान कार्य करणारे मॉडेल आहे | एक नोटबुक सादर केली जाते ज्यामध्ये कमी कार्य करणारे मॉडेल आहे किंवा नाही |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/2-Regression/4-Logistic/notebook.ipynb b/translations/mr/2-Regression/4-Logistic/notebook.ipynb
new file mode 100644
index 000000000..9d9e91e7b
--- /dev/null
+++ b/translations/mr/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",
+ "
City Name
\n",
+ "
Type
\n",
+ "
Package
\n",
+ "
Variety
\n",
+ "
Sub Variety
\n",
+ "
Grade
\n",
+ "
Date
\n",
+ "
Low Price
\n",
+ "
High Price
\n",
+ "
Mostly Low
\n",
+ "
...
\n",
+ "
Unit of Sale
\n",
+ "
Quality
\n",
+ "
Condition
\n",
+ "
Appearance
\n",
+ "
Storage
\n",
+ "
Crop
\n",
+ "
Repack
\n",
+ "
Trans Mode
\n",
+ "
Unnamed: 24
\n",
+ "
Unnamed: 25
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
4/29/17
\n",
+ "
270.0
\n",
+ "
280.0
\n",
+ "
270.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
E
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
5/6/17
\n",
+ "
270.0
\n",
+ "
280.0
\n",
+ "
270.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
E
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
11/5/16
\n",
+ "
90.0
\n",
+ "
100.0
\n",
+ "
90.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ " \n",
+ "
\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"
+ ]
+ }
+ ],
+ "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-08-29T18:52:49+00:00",
+ "source_file": "2-Regression/4-Logistic/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/mr/2-Regression/4-Logistic/solution/Julia/README.md b/translations/mr/2-Regression/4-Logistic/solution/Julia/README.md
new file mode 100644
index 000000000..6bd6a3f30
--- /dev/null
+++ b/translations/mr/2-Regression/4-Logistic/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb b/translations/mr/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb
new file mode 100644
index 000000000..3b281cc2a
--- /dev/null
+++ b/translations/mr/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb
@@ -0,0 +1,686 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## लॉजिस्टिक रिग्रेशन मॉडेल तयार करा - धडा 4\n",
+ "\n",
+ "\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",
+ "आपल्या उद्दिष्टांसाठी, आपण याला द्विपद स्वरूपात मांडू: 'पांढरा' किंवा 'पांढरा नाही'. आमच्या डेटासेटमध्ये 'पट्टेदार' नावाची एक श्रेणी देखील आहे, परंतु त्याचे उदाहरणे फारच कमी आहेत, त्यामुळे आपण ती वापरणार नाही. तसेही, जेव्हा आपण डेटासेटमधून null मूल्ये काढून टाकतो, तेव्हा ती श्रेणी आपोआप गायब होते.\n",
+ "\n",
+ "> 🎃 मजेदार गोष्ट, कधी कधी आम्ही पांढऱ्या भोपळ्यांना 'भूत' भोपळे म्हणतो. त्यांना कोरणे सोपे नसते, त्यामुळे ते नारिंगी भोपळ्यांइतके लोकप्रिय नाहीत, पण ते दिसायला खूप छान असतात! त्यामुळे आपण आपला प्रश्न असा देखील मांडू शकतो: 'भूत' किंवा 'भूत नाही'. 👻\n",
+ "\n",
+ "## **लॉजिस्टिक रिग्रेशनबद्दल माहिती**\n",
+ "\n",
+ "लॉजिस्टिक रिग्रेशन काही महत्त्वाच्या बाबतीत रेषीय रिग्रेशनपेक्षा वेगळे आहे, ज्याबद्दल तुम्ही आधी शिकले होते.\n",
+ "\n",
+ "#### **द्विपद वर्गीकरण**\n",
+ "\n",
+ "लॉजिस्टिक रिग्रेशन रेषीय रिग्रेशनसारखी वैशिष्ट्ये देत नाही. लॉजिस्टिक रिग्रेशन `द्विपद श्रेणी` (\"नारिंगी किंवा नारिंगी नाही\") याबद्दल अंदाज देते, तर रेषीय रिग्रेशन `सातत्यपूर्ण मूल्ये` अंदाज करू शकते, जसे की भोपळ्याचे मूळ आणि कापणीचा वेळ दिल्यास, *त्याच्या किमतीत किती वाढ होईल*.\n",
+ "\n",
+ "\n",
+ "\n",
+ "### इतर वर्गीकरण\n",
+ "\n",
+ "लॉजिस्टिक रिग्रेशनचे इतर प्रकार देखील आहेत, ज्यामध्ये बहुपद आणि क्रमवार यांचा समावेश होतो:\n",
+ "\n",
+ "- **बहुपद (Multinomial)**, ज्यामध्ये एकापेक्षा जास्त श्रेणी असतात - \"नारिंगी, पांढरा, आणि पट्टेदार\".\n",
+ "\n",
+ "- **क्रमवार (Ordinal)**, ज्यामध्ये क्रमबद्ध श्रेणी असतात, जेव्हा आपण आपल्या परिणामांना तार्किकरित्या क्रमबद्ध करायचे असेल, जसे की भोपळ्यांचे आकार (लहान, मध्यम, मोठा, खूप मोठा) यावर आधारित क्रम.\n",
+ "\n",
+ "\n",
+ "\n",
+ "#### **चलांमध्ये परस्परसंबंध असणे आवश्यक नाही**\n",
+ "\n",
+ "रेषीय रिग्रेशनमध्ये चलांमध्ये जास्त परस्परसंबंध असणे चांगले असते, हे लक्षात आहे का? लॉजिस्टिक रिग्रेशन याच्या उलट आहे - चलांमध्ये परस्परसंबंध असणे आवश्यक नाही. हे या डेटासाठी योग्य आहे, कारण यामध्ये परस्परसंबंध तुलनेने कमी आहेत.\n",
+ "\n",
+ "#### **तुमच्याकडे स्वच्छ डेटा मोठ्या प्रमाणात असणे आवश्यक आहे**\n",
+ "\n",
+ "लॉजिस्टिक रिग्रेशन अधिक अचूक परिणाम देते जर तुम्ही जास्त डेटा वापरला; आमचा लहान डेटासेट या कार्यासाठी आदर्श नाही, त्यामुळे हे लक्षात ठेवा.\n",
+ "\n",
+ "✅ अशा प्रकारच्या डेटाबद्दल विचार करा जे लॉजिस्टिक रिग्रेशनसाठी उपयुक्त ठरू शकते.\n",
+ "\n",
+ "## व्यायाम - डेटा स्वच्छ करा\n",
+ "\n",
+ "सुरुवातीला, डेटा थोडा स्वच्छ करा, null मूल्ये काढून टाका आणि फक्त काही स्तंभ निवडा:\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",
+ "आता तुम्ही पुन्हा एकदा भोपळ्यांचा डेटा लोड केला आहे आणि तो स्वच्छ केला आहे, ज्यामुळे Color यासारख्या काही व्हेरिएबल्ससह डेटासेट जतन केले गेले आहे. चला 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 असेल जर भोपळा त्या Variety मध्ये असेल आणि अन्यथा 0 असेल.\n",
+ "\n",
+ "Tidymodels आणखी एक उपयुक्त पॅकेज प्रदान करते: [recipes](https://recipes.tidymodels.org/) - डेटा पूर्व-प्रक्रियेसाठी एक पॅकेज. आपण एक `recipe` परिभाषित करू ज्यामध्ये सर्व प्रेडिक्टर स्तंभांना संख्यांमध्ये एन्कोड करण्याचे निर्दिष्ट केले जाईल, `prep` करून आवश्यक प्रमाण आणि आकडेवारी अंदाजित केली जाईल आणि शेवटी `bake` करून नवीन डेटावर गणना लागू केली जाईल.\n",
+ "\n",
+ "> सामान्यतः, recipes सहसा मॉडेलिंगसाठी पूर्व-प्रक्रियेसाठी वापरले जाते जिथे ते एका डेटासेटवर कोणते टप्पे लागू करायचे आहेत हे परिभाषित करते जेणेकरून ते मॉडेलिंगसाठी तयार होईल. अशा परिस्थितीत, **खूप शिफारस केली जाते** की आपण `workflow()` वापरावे, recipe मॅन्युअली prep आणि bake करण्याऐवजी. आपण हे सर्व थोड्याच वेळात पाहू.\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 च्या संदर्भात दाखवण्यासाठी `स्वॉर्म प्लॉट` वापरून पहा.\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 पेक्षा जास्त असेल, तेव्हा अंदाज वर्ग `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",
+ "[**`conf_mat()`**](https://tidymodels.github.io/yardstick/reference/conf_mat.html) ही yardstick मधील फंक्शन, निरीक्षित आणि अंदाजित वर्गांचे हे क्रॉस-टॅब्युलेशन मोजते.\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": [
+ "चुकीचा मॅट्रिक्स समजून घेऊया. आपल्या मॉडेलला दोन द्विआधारी श्रेणींमध्ये भोपळ्यांचे वर्गीकरण करायचे आहे, श्रेणी `पांढरा` आणि श्रेणी `न पांढरा`.\n",
+ "\n",
+ "- जर तुमचे मॉडेल भोपळ्याला पांढरा म्हणून वर्गीकृत करते आणि तो प्रत्यक्षात 'पांढऱ्या' श्रेणीत येतो, तर आपण त्याला `खरा सकारात्मक` म्हणतो, जो वरच्या डाव्या क्रमांकाने दर्शविला जातो.\n",
+ "\n",
+ "- जर तुमचे मॉडेल भोपळ्याला न पांढरा म्हणून वर्गीकृत करते आणि तो प्रत्यक्षात 'पांढऱ्या' श्रेणीत येतो, तर आपण त्याला `खोटा नकारात्मक` म्हणतो, जो खालच्या डाव्या क्रमांकाने दर्शविला जातो.\n",
+ "\n",
+ "- जर तुमचे मॉडेल भोपळ्याला पांढरा म्हणून वर्गीकृत करते आणि तो प्रत्यक्षात 'न पांढऱ्या' श्रेणीत येतो, तर आपण त्याला `खोटा सकारात्मक` म्हणतो, जो वरच्या उजव्या क्रमांकाने दर्शविला जातो.\n",
+ "\n",
+ "- जर तुमचे मॉडेल भोपळ्याला न पांढरा म्हणून वर्गीकृत करते आणि तो प्रत्यक्षात 'न पांढऱ्या' श्रेणीत येतो, तर आपण त्याला `खरा नकारात्मक` म्हणतो, जो खालच्या उजव्या क्रमांकाने दर्शविला जातो.\n",
+ "\n",
+ "| सत्य |\n",
+ "|:-----:|\n",
+ "\n",
+ "\n",
+ "| | | |\n",
+ "|---------------|--------|-------|\n",
+ "| **भाकीत** | पांढरा | नारंगी |\n",
+ "| पांढरा | TP | FP |\n",
+ "| नारंगी | FN | TN |\n",
+ "\n",
+ "तुम्ही अंदाज केला असेलच की, खऱ्या सकारात्मक आणि खऱ्या नकारात्मकांची संख्या जास्त असणे आणि खोट्या सकारात्मक व खोट्या नकारात्मकांची संख्या कमी असणे चांगले आहे, याचा अर्थ मॉडेल चांगले कार्य करते.\n",
+ "\n",
+ "चुकीचा मॅट्रिक्स उपयुक्त आहे कारण यामुळे इतर मेट्रिक्स तयार होतात जे वर्गीकरण मॉडेलचे कार्यप्रदर्शन अधिक चांगल्या प्रकारे मूल्यांकन करण्यात मदत करू शकतात. चला त्यापैकी काही मेट्रिक्स पाहूया:\n",
+ "\n",
+ "🎓 अचूकता (Precision): `TP/(TP + FP)` म्हणजे अंदाजे सकारात्मकांपैकी प्रत्यक्षात सकारात्मक असलेल्यांचे प्रमाण. याला [सकारात्मक भविष्यसूचक मूल्य](https://en.wikipedia.org/wiki/Positive_predictive_value \"Positive predictive value\") असेही म्हणतात.\n",
+ "\n",
+ "🎓 पुनरावृत्ती (Recall): `TP/(TP + FN)` म्हणजे प्रत्यक्षात सकारात्मक असलेल्या नमुन्यांपैकी सकारात्मक निकालांचे प्रमाण. याला `संवेदनशीलता` असेही म्हणतात.\n",
+ "\n",
+ "🎓 विशिष्टता (Specificity): `TN/(TN + FP)` म्हणजे प्रत्यक्षात नकारात्मक असलेल्या नमुन्यांपैकी नकारात्मक निकालांचे प्रमाण.\n",
+ "\n",
+ "🎓 अचूकता (Accuracy): `TP + TN/(TP + TN + FP + FN)` म्हणजे नमुन्यासाठी अचूकपणे अंदाज केलेल्या लेबलांचे टक्केवारी.\n",
+ "\n",
+ "🎓 एफ मोजमाप (F Measure): अचूकता आणि पुनरावृत्ती यांचे भारित सरासरी, सर्वोत्तम 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 वक्रामध्ये सामान्यतः `True Positive Rate`/संवेदनशीलता Y अक्षावर आणि `False Positive Rate`/1-विशिष्टता X अक्षावर असते. त्यामुळे वक्राची तीव्रता आणि मध्यरेषा व वक्र यामधील अंतर महत्त्वाचे ठरते: तुम्हाला असा वक्र हवा आहे जो पटकन वर जाईल आणि रेषेच्या पलीकडे जाईल. आपल्या बाबतीत, सुरुवातीला काही खोटे सकारात्मक असतात, आणि नंतर रेषा योग्य प्रकारे वर आणि पलीकडे जाते.\n",
+ "\n",
+ "शेवटी, `yardstick::roc_auc()` चा वापर करून वक्राखालील क्षेत्रफळ (Area Under the Curve) मोजूया. 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"
+ ]
+ }
+ ],
+ "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-08-29T18:55:15+00:00",
+ "source_file": "2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
\ No newline at end of file
diff --git a/translations/mr/2-Regression/4-Logistic/solution/notebook.ipynb b/translations/mr/2-Regression/4-Logistic/solution/notebook.ipynb
new file mode 100644
index 000000000..414c83909
--- /dev/null
+++ b/translations/mr/2-Regression/4-Logistic/solution/notebook.ipynb
@@ -0,0 +1,1255 @@
+{
+ "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",
+ "
City Name
\n",
+ "
Type
\n",
+ "
Package
\n",
+ "
Variety
\n",
+ "
Sub Variety
\n",
+ "
Grade
\n",
+ "
Date
\n",
+ "
Low Price
\n",
+ "
High Price
\n",
+ "
Mostly Low
\n",
+ "
...
\n",
+ "
Unit of Sale
\n",
+ "
Quality
\n",
+ "
Condition
\n",
+ "
Appearance
\n",
+ "
Storage
\n",
+ "
Crop
\n",
+ "
Repack
\n",
+ "
Trans Mode
\n",
+ "
Unnamed: 24
\n",
+ "
Unnamed: 25
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
4/29/17
\n",
+ "
270.0
\n",
+ "
280.0
\n",
+ "
270.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
E
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
5/6/17
\n",
+ "
270.0
\n",
+ "
280.0
\n",
+ "
270.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
E
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
11/5/16
\n",
+ "
90.0
\n",
+ "
100.0
\n",
+ "
90.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ " \n",
+ "
\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",
+ "
City Name
\n",
+ "
Package
\n",
+ "
Variety
\n",
+ "
Origin
\n",
+ "
Item Size
\n",
+ "
Color
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
2
\n",
+ "
BALTIMORE
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
DELAWARE
\n",
+ "
med
\n",
+ "
ORANGE
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
BALTIMORE
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
VIRGINIA
\n",
+ "
med
\n",
+ "
ORANGE
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
BALTIMORE
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
MARYLAND
\n",
+ "
lge
\n",
+ "
ORANGE
\n",
+ "
\n",
+ "
\n",
+ "
5
\n",
+ "
BALTIMORE
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
MARYLAND
\n",
+ "
lge
\n",
+ "
ORANGE
\n",
+ "
\n",
+ "
\n",
+ "
6
\n",
+ "
BALTIMORE
\n",
+ "
36 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
MARYLAND
\n",
+ "
med
\n",
+ "
ORANGE
\n",
+ "
\n",
+ " \n",
+ "
\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": [
+ "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"
+ ]
+ }
+ ],
+ "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-08-29T18:53:12+00:00",
+ "source_file": "2-Regression/4-Logistic/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/mr/2-Regression/README.md b/translations/mr/2-Regression/README.md
new file mode 100644
index 000000000..9db17bf09
--- /dev/null
+++ b/translations/mr/2-Regression/README.md
@@ -0,0 +1,54 @@
+
+# मशीन लर्निंगसाठी रिग्रेशन मॉडेल्स
+## प्रादेशिक विषय: उत्तर अमेरिकेत कद्दूच्या किंमतींसाठी रिग्रेशन मॉडेल्स 🎃
+
+उत्तर अमेरिकेत, कद्दू हॅलोविनसाठी भीतीदायक चेहऱ्यांमध्ये कोरले जातात. चला या आकर्षक भाजीपाल्याबद्दल अधिक जाणून घेऊया!
+
+
+> फोटो बेथ टॉयचमन यांनी Unsplash वर Unsplash वर दिला आहे.
+
+## तुम्ही काय शिकाल
+
+[](https://youtu.be/5QnJtDad4iQ "रिग्रेशनची ओळख व्हिडिओ - पाहण्यासाठी क्लिक करा!")
+> 🎥 वरील प्रतिमेवर क्लिक करा या धड्याचा जलद ओळख व्हिडिओ पाहण्यासाठी
+
+या विभागातील धडे मशीन लर्निंगच्या संदर्भात रिग्रेशन प्रकारांवर आधारित आहेत. रिग्रेशन मॉडेल्स व्हेरिएबल्समधील _संबंध_ ठरवण्यास मदत करू शकतात. या प्रकारचे मॉडेल लांबी, तापमान किंवा वय यासारख्या मूल्यांची भविष्यवाणी करू शकते, अशा प्रकारे डेटा पॉइंट्सचे विश्लेषण करताना व्हेरिएबल्समधील संबंध उलगडते.
+
+या धड्यांच्या मालिकेत, तुम्ही लीनियर आणि लॉजिस्टिक रिग्रेशनमधील फरक शोधाल आणि कोणत्या परिस्थितीत कोणता प्रकार निवडावा हे शिकाल.
+
+[](https://youtu.be/XA3OaoW86R8 "मशीन लर्निंगसाठी रिग्रेशन मॉडेल्सची ओळख - नवशिक्यांसाठी")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा रिग्रेशन मॉडेल्सची ओळख करून देणारा लहान व्हिडिओ पाहण्यासाठी.
+
+या धड्यांच्या गटात, तुम्ही मशीन लर्निंग कार्य सुरू करण्यासाठी सेटअप कराल, ज्यामध्ये नोटबुक्स व्यवस्थापित करण्यासाठी 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)
+
+---
+### श्रेय
+
+"रिग्रेशनसह मशीन लर्निंग" हे [जेन लूपर](https://twitter.com/jenlooper) यांनी ♥️ सह लिहिले आहे.
+
+♥️ क्विझ योगदानकर्त्यांमध्ये: [मुहम्मद साकिब खान इनान](https://twitter.com/Sakibinan) आणि [ऑर्नेला अल्टुन्यान](https://twitter.com/ornelladotcom)
+
+कद्दू डेटासेट [Kaggle वरील या प्रकल्पाने](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) कडून मिळवला आहे, जो United States Department of Agriculture द्वारे वितरित केला जातो. आम्ही वितरण सामान्य करण्यासाठी विविधतेनुसार रंगाभोवती काही पॉइंट्स जोडले आहेत. हा डेटा सार्वजनिक डोमेनमध्ये आहे.
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/3-Web-App/1-Web-App/README.md b/translations/mr/3-Web-App/1-Web-App/README.md
new file mode 100644
index 000000000..d8d69dab8
--- /dev/null
+++ b/translations/mr/3-Web-App/1-Web-App/README.md
@@ -0,0 +1,359 @@
+
+# वेब अॅप तयार करा ज्यामध्ये ML मॉडेल वापरता येईल
+
+या धड्यात, तुम्ही एका अनोख्या डेटासेटवर ML मॉडेल ट्रेन कराल: _गेल्या शतकातील UFO दिसण्याच्या घटना_, ज्याचे स्रोत NUFORC च्या डेटाबेसमधून घेतले आहे.
+
+तुम्ही शिकाल:
+
+- प्रशिक्षित मॉडेल 'pickle' कसे करायचे
+- Flask अॅपमध्ये ते मॉडेल कसे वापरायचे
+
+आम्ही डेटा साफ करण्यासाठी आणि मॉडेल ट्रेन करण्यासाठी नोटबुक्सचा वापर सुरू ठेवू, पण तुम्ही प्रक्रिया पुढे नेऊन मॉडेल 'जंगलात', म्हणजेच वेब अॅपमध्ये वापरण्याचा शोध घेऊ शकता.
+
+हे करण्यासाठी, तुम्हाला Flask वापरून वेब अॅप तयार करावे लागेल.
+
+## [पूर्व-व्याख्यान प्रश्नमंजूषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/17/)
+
+## अॅप तयार करणे
+
+मशीन लर्निंग मॉडेल्स वापरण्यासाठी वेब अॅप्स तयार करण्याचे अनेक मार्ग आहेत. तुमची वेब आर्किटेक्चर तुमच्या मॉडेलच्या ट्रेनिंग पद्धतीवर परिणाम करू शकते. कल्पना करा की तुम्ही अशा व्यवसायात काम करत आहात जिथे डेटा सायन्स ग्रुपने एक मॉडेल तयार केले आहे जे ते तुम्हाला अॅपमध्ये वापरायचे आहे.
+
+### विचार करण्यासारखे मुद्दे
+
+तुम्हाला अनेक प्रश्न विचारावे लागतील:
+
+- **वेब अॅप आहे की मोबाइल अॅप?** जर तुम्ही मोबाइल अॅप तयार करत असाल किंवा IoT संदर्भात मॉडेल वापरण्याची गरज असेल, तर तुम्ही [TensorFlow Lite](https://www.tensorflow.org/lite/) वापरू शकता आणि मॉडेल Android किंवा iOS अॅपमध्ये वापरू शकता.
+- **मॉडेल कुठे ठेवले जाईल?** क्लाउडमध्ये की स्थानिक पातळीवर?
+- **ऑफलाइन समर्थन.** अॅपला ऑफलाइन काम करावे लागेल का?
+- **मॉडेल ट्रेन करण्यासाठी कोणती तंत्रज्ञान वापरली गेली?** निवडलेले तंत्रज्ञान तुम्हाला वापरायच्या टूल्सवर परिणाम करू शकते.
+ - **TensorFlow वापरणे.** जर तुम्ही TensorFlow वापरून मॉडेल ट्रेन करत असाल, तर त्या इकोसिस्टममध्ये [TensorFlow.js](https://www.tensorflow.org/js/) वापरून वेब अॅपसाठी TensorFlow मॉडेल रूपांतरित करण्याची क्षमता आहे.
+ - **PyTorch वापरणे.** जर तुम्ही [PyTorch](https://pytorch.org/) सारख्या लायब्ररीचा वापर करून मॉडेल तयार करत असाल, तर तुम्ही ते [ONNX](https://onnx.ai/) (Open Neural Network Exchange) फॉरमॅटमध्ये निर्यात करू शकता, जे JavaScript वेब अॅप्ससाठी वापरले जाऊ शकते जे [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 वापरून JavaScript संदर्भात देखील करता येते.
+
+आमच्या उद्देशासाठी, कारण आम्ही 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' करण्यास सांगितले गेले तर काळजी घ्या. Pickled फाइलला `.pkl` हा प्रत्यय असतो.
+
+## व्यायाम - तुमचा डेटा साफ करा
+
+या धड्यात तुम्ही [NUFORC](https://nuforc.org) (The National UFO Reporting Center) कडून गोळा केलेल्या 80,000 UFO दिसण्याच्या घटनांचा डेटा वापराल. या डेटामध्ये UFO दिसण्याच्या काही मनोरंजक वर्णनांचा समावेश आहे, उदाहरणार्थ:
+
+- **लांब उदाहरण वर्णन.** "एका प्रकाशाच्या किरणातून एक माणूस बाहेर पडतो जो रात्री गवताच्या मैदानावर चमकतो आणि तो टेक्सास इन्स्ट्रुमेंट्सच्या पार्किंग लॉटकडे धावतो".
+- **लहान उदाहरण वर्णन.** "प्रकाश आमच्यामागे लागला".
+
+[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) स्प्रेडशीटमध्ये `city`, `state` आणि `country` जिथे दिसण्याची घटना घडली, ऑब्जेक्टचा `shape` आणि त्याचा `latitude` आणि `longitude` याबद्दलचे कॉलम आहेत.
+
+या धड्यात समाविष्ट केलेल्या रिक्त [notebook](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` इनपुट करायचे आहे आणि देशाचा आयडी परत मिळवायचा आहे.
+
+ ```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. Logistic Regression वापरून तुमचे मॉडेल ट्रेन करा:
+
+ ```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_ करण्याची वेळ आली आहे! तुम्ही ते काही ओळींच्या कोडमध्ये करू शकता. एकदा ते _pickled_ झाले की, तुमचे pickled मॉडेल लोड करा आणि सेकंद, 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'** परत करते, जे 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 }}
+
+
+
+
+
+
+
+ ```
+
+ या फाइलमधील टेम्पलेटिंग पहा. लक्ष द्या की अॅपद्वारे प्रदान केलेल्या व्हेरिएबल्सभोवती 'mustache' सिंटॅक्स आहे, जसे की प्रेडिक्शन टेक्स्ट: `{{}}`. येथे एक फॉर्म आहे जो `/predict` रूटवर प्रेडिक्शन पोस्ट करतो.
+
+ शेवटी, तुम्ही मॉडेलचा वापर आणि प्रेडिक्शन प्रदर्शित करण्यासाठी 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 अॅरेमध्ये रूपांतरित केले जातात. त्यानंतर ते मॉडेलला पाठवले जातात आणि प्रेडिक्शन परत केले जाते.
+2. आम्हाला प्रदर्शित करायचे असलेले देश त्यांच्या प्रेडिक्टेड देश कोडमधून वाचण्यायोग्य मजकूर म्हणून पुन्हा रेंडर केले जातात, आणि ती मूल्ये index.html मध्ये टेम्पलेटमध्ये रेंडर करण्यासाठी परत पाठवली जातात.
+
+Flask आणि pickled मॉडेलसह मॉडेल वापरणे तुलनेने सोपे आहे. सर्वात कठीण गोष्ट म्हणजे मॉडेलला प्रेडिक्शन मिळवण्यासाठी पाठवले जाणारे डेटा कोणत्या स्वरूपात आहे हे समजून घेणे. ते सर्व मॉडेल कसे ट्रेन केले गेले यावर अवलंबून असते. या मॉडेलमध्ये प्रेडिक्शन मिळवण्यासाठी तीन डेटा पॉइंट्स इनपुट करणे आवश्यक आहे.
+
+व्यावसायिक सेटिंगमध्ये, तुम्ही पाहू शकता की मॉडेल ट्रेन करणाऱ्या लोकांमध्ये आणि वेब किंवा मोबाइल अॅपमध्ये ते वापरणाऱ्या लोकांमध्ये चांगला संवाद किती आवश्यक आहे. आमच्या बाबतीत, तो फक्त एक व्यक्ती आहे, तुम्ही!
+
+---
+
+## 🚀 आव्हान
+
+नोटबुकमध्ये काम करण्याऐवजी आणि Flask अॅपमध्ये मॉडेल आयात करण्याऐवजी, तुम्ही Flask अॅपमध्येच मॉडेल ट्रेन करू शकता! तुमच्या Python कोडला नोटबुकमध्ये रूपांतरित करण्याचा प्रयत्न करा, कदाचित तुमचा डेटा साफ केल्यानंतर, अॅपमध्येच `train` नावाच्या रूटवर मॉडेल ट्रेन करण्यासाठी. या पद्धतीचा अवलंब करण्याचे फायदे आणि तोटे काय आहेत?
+
+## [व्याख्यानानंतरची प्रश्नमंजूषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/18/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+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/mr/3-Web-App/1-Web-App/assignment.md b/translations/mr/3-Web-App/1-Web-App/assignment.md
new file mode 100644
index 000000000..a5bcd881c
--- /dev/null
+++ b/translations/mr/3-Web-App/1-Web-App/assignment.md
@@ -0,0 +1,25 @@
+
+# वेगळा मॉडेल वापरून पहा
+
+## सूचना
+
+तुम्ही प्रशिक्षित Regression मॉडेल वापरून एक वेब अॅप तयार केला आहे. आता, Regression धड्याच्या आधीच्या मॉडेल्सपैकी एक वापरून हा वेब अॅप पुन्हा तयार करा. तुम्ही आधीचा डिझाइन ठेवू शकता किंवा भोपळ्याच्या डेटाचे प्रतिबिंब दाखवण्यासाठी वेगळा डिझाइन करू शकता. तुमच्या मॉडेलच्या प्रशिक्षण पद्धतीनुसार इनपुट्स बदलण्याची काळजी घ्या.
+
+## मूल्यमापन निकष
+
+| निकष | उत्कृष्ट | समाधानकारक | सुधारणा आवश्यक आहे |
+| -------------------------- | --------------------------------------------------------- | ------------------------------------------------------ | ----------------------------------- |
+| | वेब अॅप अपेक्षेप्रमाणे चालतो आणि क्लाउडवर तैनात केला जातो | वेब अॅपमध्ये त्रुटी आहेत किंवा अनपेक्षित परिणाम दिसतात | वेब अॅप योग्य प्रकारे कार्य करत नाही |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/3-Web-App/1-Web-App/notebook.ipynb b/translations/mr/3-Web-App/1-Web-App/notebook.ipynb
new file mode 100644
index 000000000..e69de29bb
diff --git a/translations/mr/3-Web-App/1-Web-App/solution/notebook.ipynb b/translations/mr/3-Web-App/1-Web-App/solution/notebook.ipynb
new file mode 100644
index 000000000..f2adbaebc
--- /dev/null
+++ b/translations/mr/3-Web-App/1-Web-App/solution/notebook.ipynb
@@ -0,0 +1,267 @@
+{
+ "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-08-29T19:23:27+00:00",
+ "source_file": "3-Web-App/1-Web-App/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "source": [],
+ "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": "
"
+ },
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/3-Web-App/README.md b/translations/mr/3-Web-App/README.md
new file mode 100644
index 000000000..fbb08b711
--- /dev/null
+++ b/translations/mr/3-Web-App/README.md
@@ -0,0 +1,35 @@
+
+# तुमच्या ML मॉडेलसाठी वेब अॅप तयार करा
+
+या अभ्यासक्रमाच्या या विभागात, तुम्हाला एक अनुप्रयुक्त ML विषयाची ओळख करून दिली जाईल: तुमचे Scikit-learn मॉडेल कसे जतन करायचे जेणेकरून ते वेब अॅप्लिकेशनमध्ये अंदाज वर्तवण्यासाठी वापरले जाऊ शकेल. एकदा मॉडेल जतन केल्यानंतर, तुम्ही ते Flask मध्ये तयार केलेल्या वेब अॅपमध्ये कसे वापरायचे ते शिकाल. तुम्ही प्रथम UFO पाहण्याच्या डेटाचा वापर करून एक मॉडेल तयार कराल! त्यानंतर, तुम्ही एक वेब अॅप तयार कराल जो तुम्हाला सेकंदांची संख्या, अक्षांश, आणि रेखांश मूल्य प्रविष्ट करून अंदाज लावण्याची परवानगी देईल की कोणत्या देशाने UFO पाहिल्याचा अहवाल दिला आहे.
+
+
+
+फोटो मायकेल हेरन यांनी Unsplash वर प्रकाशित केला.
+
+## धडे
+
+1. [वेब अॅप तयार करा](1-Web-App/README.md)
+
+## श्रेय
+
+"वेब अॅप तयार करा" हे [जेन लूपर](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) मधून अभिनव सागर यांनी सुचवला आहे.
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/4-Classification/1-Introduction/README.md b/translations/mr/4-Classification/1-Introduction/README.md
new file mode 100644
index 000000000..42c74cfc3
--- /dev/null
+++ b/translations/mr/4-Classification/1-Introduction/README.md
@@ -0,0 +1,313 @@
+
+# वर्गीकरणाची ओळख
+
+या चार धड्यांमध्ये, तुम्ही क्लासिक मशीन लर्निंगच्या मूलभूत घटकांपैकी एक - _वर्गीकरण_ - याचा अभ्यास कराल. आम्ही आशिया आणि भारतातील विविध स्वादिष्ट पदार्थांबद्दलच्या डेटासेटसह विविध वर्गीकरण अल्गोरिदम वापरण्याची प्रक्रिया पाहू. आशा आहे की तुम्हाला भूक लागली असेल!
+
+
+
+> या धड्यांमध्ये पॅन-आशियाई पदार्थांचा उत्सव साजरा करा! प्रतिमा [Jen Looper](https://twitter.com/jenlooper) यांची आहे.
+
+वर्गीकरण ही [सुपरवाइज्ड लर्निंग](https://wikipedia.org/wiki/Supervised_learning) ची एक पद्धत आहे, जी रिग्रेशन तंत्रांशी बरीचशी साम्य दर्शवते. जर मशीन लर्निंगचा उद्देश डेटासेट्स वापरून मूल्ये किंवा गोष्टींची नावे अंदाज लावणे असेल, तर वर्गीकरण प्रामुख्याने दोन गटांमध्ये विभागले जाते: _बायनरी वर्गीकरण_ आणि _मल्टिक्लास वर्गीकरण_.
+
+[](https://youtu.be/eg8DJYwdMyg "वर्गीकरणाची ओळख")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा: MIT चे John Guttag वर्गीकरणाची ओळख करून देतात.
+
+लक्षात ठेवा:
+
+- **रेखीय रिग्रेशन** तुम्हाला व्हेरिएबल्समधील संबंधांचा अंदाज लावण्यास आणि नवीन डेटा पॉइंट त्या रेषेच्या संदर्भात कुठे असेल हे अचूकपणे भाकीत करण्यास मदत करते. उदाहरणार्थ, तुम्ही अंदाज लावू शकता की _सप्टेंबर आणि डिसेंबरमध्ये भोपळ्याची किंमत किती असेल_.
+- **लॉजिस्टिक रिग्रेशन** तुम्हाला "बायनरी श्रेणी" शोधण्यास मदत करते: या किंमतीच्या टप्प्यावर, _हा भोपळा नारिंगी आहे की नाही_?
+
+वर्गीकरण विविध अल्गोरिदम वापरून डेटा पॉइंटचे लेबल किंवा वर्ग ठरवण्याचे इतर मार्ग शोधते. चला, या पदार्थांच्या डेटावर काम करून पाहूया की, घटकांचा गट पाहून आपण त्याचा मूळ पदार्थ कोणता आहे हे ठरवू शकतो का.
+
+## [पूर्व-व्याख्यान क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/19/)
+
+> ### [हा धडा R मध्ये उपलब्ध आहे!](../../../../4-Classification/1-Introduction/solution/R/lesson_10.html)
+
+### परिचय
+
+वर्गीकरण हे मशीन लर्निंग संशोधक आणि डेटा वैज्ञानिकांसाठी मूलभूत कार्यांपैकी एक आहे. बायनरी मूल्याचे मूलभूत वर्गीकरण ("हा ईमेल स्पॅम आहे का नाही?") पासून ते संगणकीय दृष्टिकोन वापरून जटिल प्रतिमा वर्गीकरण आणि विभागणीपर्यंत, डेटा वर्गांमध्ये विभागणे आणि त्यावर प्रश्न विचारणे नेहमीच उपयुक्त ठरते.
+
+वैज्ञानिक दृष्टिकोनातून सांगायचे झाले तर, तुमची वर्गीकरण पद्धत एक प्रेडिक्टिव्ह मॉडेल तयार करते, जे तुम्हाला इनपुट व्हेरिएबल्स आणि आउटपुट व्हेरिएबल्स यांच्यातील संबंध मॅप करण्यास सक्षम करते.
+
+
+
+> बायनरी वि. मल्टिक्लास समस्यांचे वर्गीकरण अल्गोरिदम हाताळतात. [Jen Looper](https://twitter.com/jenlooper) यांची माहितीपट प्रतिमा.
+
+आपला डेटा साफ करण्याची, त्याचे व्हिज्युअलायझेशन करण्याची आणि आपल्या एमएल कार्यांसाठी तयार करण्याची प्रक्रिया सुरू करण्यापूर्वी, मशीन लर्निंगचा डेटा वर्गीकरणासाठी कसा उपयोग केला जाऊ शकतो याबद्दल थोडेसे शिकूया.
+
+[आकडेवारी](https://wikipedia.org/wiki/Statistical_classification) वरून प्रेरित, क्लासिक मशीन लर्निंग वापरून वर्गीकरण `smoker`, `weight`, आणि `age` यांसारख्या वैशिष्ट्यांचा उपयोग करून _X आजार होण्याची शक्यता_ ठरवते. रिग्रेशन सरावांप्रमाणेच ही एक सुपरवाइज्ड लर्निंग तंत्र आहे, जिथे तुमचा डेटा लेबल केलेला असतो आणि एमएल अल्गोरिदम त्या लेबल्सचा उपयोग करून डेटासेटच्या वर्गांचे (किंवा 'वैशिष्ट्यांचे') वर्गीकरण आणि अंदाज लावतात आणि त्यांना गट किंवा परिणामाशी जोडतात.
+
+✅ एका पदार्थांच्या डेटासेटची कल्पना करा. मल्टिक्लास मॉडेल कोणते प्रश्न सोडवू शकेल? बायनरी मॉडेल कोणते प्रश्न सोडवू शकेल? जर तुम्हाला ठरवायचे असेल की एखाद्या पदार्थात मेथी वापरली जाते का? किंवा जर तुम्हाला पाहायचे असेल की, जर तुम्हाला स्टार अनीस, आर्टिचोक्स, फुलकोबी, आणि हॉर्सरॅडिशने भरलेली किराणा पिशवी दिली, तर तुम्ही एक पारंपरिक भारतीय पदार्थ तयार करू शकता का?
+
+[](https://youtu.be/GuTeDbaNoEU "क्रेझी मिस्ट्री बास्केट्स")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा. 'Chopped' या शोचा संपूर्ण आधार म्हणजे 'मिस्ट्री बास्केट', जिथे शेफ्सना निवडलेल्या घटकांपासून काहीतरी बनवायचे असते. नक्कीच, एखाद्या एमएल मॉडेलने मदत केली असती!
+
+## हॅलो 'क्लासिफायर'
+
+आपण या पदार्थांच्या डेटासेटबद्दल विचारू इच्छित असलेला प्रश्न हा खरोखरच **मल्टिक्लास प्रश्न** आहे, कारण आपल्याकडे काम करण्यासाठी अनेक संभाव्य राष्ट्रीय पदार्थ आहेत. घटकांचा एक गट दिल्यास, या अनेक वर्गांपैकी कोणत्या वर्गात डेटा बसेल?
+
+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()
+ ```
+
+ 
+
+ पदार्थांची संख्या मर्यादित आहे, परंतु डेटाचे वितरण असमान आहे. तुम्ही ते सुधारू शकता! तसे करण्यापूर्वी, आणखी थोडे शोधा.
+
+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()
+ ```
+
+ 
+
+1. जपानी डेटासाठीही तेच करा:
+
+ ```python
+ japanese_ingredient_df = create_ingredient_df(japanese_df)
+ japanese_ingredient_df.head(10).plot.barh()
+ ```
+
+ 
+
+1. आता चिनी घटकांसाठी:
+
+ ```python
+ chinese_ingredient_df = create_ingredient_df(chinese_df)
+ chinese_ingredient_df.head(10).plot.barh()
+ ```
+
+ 
+
+1. भारतीय घटक प्लॉट करा:
+
+ ```python
+ indian_ingredient_df = create_ingredient_df(indian_df)
+ indian_ingredient_df.head(10).plot.barh()
+ ```
+
+ 
+
+1. शेवटी, कोरियन घटक प्लॉट करा:
+
+ ```python
+ korean_ingredient_df = create_ingredient_df(korean_df)
+ korean_ingredient_df.head(10).plot.barh()
+ ```
+
+ 
+
+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)
+ ```
+
+ तुमचा डेटा संतुलित केल्याने, तुम्हाला वर्गीकरण करताना चांगले परिणाम मिळतील. बायनरी वर्गीकरणाचा विचार करा. जर तुमच्या डेटाचा जास्त भाग एका वर्गाचा असेल, तर एमएल मॉडेल त्या वर्गाचा अंदाज जास्त वेळा लावेल, कारण त्याच्यासाठी जास्त डेटा उपलब्ध आहे. डेटा संतुलित केल्याने कोणताही असमतोल डेटा काढून टाकण्यास मदत होते.
+
+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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/20/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+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/mr/4-Classification/1-Introduction/assignment.md b/translations/mr/4-Classification/1-Introduction/assignment.md
new file mode 100644
index 000000000..6c91ccd75
--- /dev/null
+++ b/translations/mr/4-Classification/1-Introduction/assignment.md
@@ -0,0 +1,25 @@
+
+# वर्गीकरण पद्धतींचा अभ्यास करा
+
+## सूचना
+
+[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/mr/4-Classification/1-Introduction/notebook.ipynb b/translations/mr/4-Classification/1-Introduction/notebook.ipynb
new file mode 100644
index 000000000..b80098054
--- /dev/null
+++ b/translations/mr/4-Classification/1-Introduction/notebook.ipynb
@@ -0,0 +1,39 @@
+{
+ "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-08-29T19:32:26+00:00",
+ "source_file": "4-Classification/1-Introduction/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "source": [],
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/4-Classification/1-Introduction/solution/Julia/README.md b/translations/mr/4-Classification/1-Introduction/solution/Julia/README.md
new file mode 100644
index 000000000..ff77e5866
--- /dev/null
+++ b/translations/mr/4-Classification/1-Introduction/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb b/translations/mr/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb
new file mode 100644
index 000000000..d6ee8c8d8
--- /dev/null
+++ b/translations/mr/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb
@@ -0,0 +1,719 @@
+{
+ "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-08-29T19:34:54+00:00",
+ "source_file": "4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [],
+ "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) मधून घेतलेले, क्लासिक मशीन लर्निंग वापरून वर्गीकरण `smoker`, `weight`, आणि `age` सारख्या वैशिष्ट्यांचा वापर करून *X आजार होण्याची शक्यता* ठरवते. रिग्रेशन सरावांप्रमाणेच एक सुपरव्हाइज्ड लर्निंग तंत्र म्हणून, तुमचा डेटा लेबल केलेला असतो आणि एमएल अल्गोरिदम त्या लेबल्सचा वापर करून डेटासेटच्या वर्ग (किंवा 'वैशिष्ट्ये') वर्गीकृत आणि भाकीत करतो आणि त्यांना गट किंवा परिणामाशी जोडतो.\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": [],
+ "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": [
+ "## **व्यायाम - 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 verbs](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 यांनी तयार केलेल्या [*art*-ने भरलेल्या 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": [],
+ "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": [],
+ "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": [],
+ "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",
+ "\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` डेटाचा संदर्भ वापरून रेसिपीला व्हेरिएबल्सचे *roles* सांगितले जातात. उदाहरणार्थ, `cuisine` कॉलमला `outcome` भूमिका दिली गेली आहे, तर उर्वरित कॉलम्सना `predictor` भूमिका दिली गेली आहे.\n",
+ "\n",
+ "- [`step_smote(cuisine)`](https://themis.tidymodels.org/reference/step_smote.html) एक रेसिपी स्टेपची *specification* तयार करते जी अल्पसंख्याक वर्गाचे नवीन उदाहरणे सिंथेटिक पद्धतीने तयार करते, ज्यासाठी त्या केसचे जवळचे शेजारी वापरले जातात.\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",
+ "> त्यामुळे, तुम्हाला सामान्यतः **`prep()`** आणि **`bake()`** कृतींची गरज नसते जेव्हा तुम्ही tidymodels वापरता, पण त्या तुमच्या टूलकिटमध्ये उपयुक्त फंक्शन्स असतात, जे कृती अपेक्षेप्रमाणे कार्य करत आहेत का हे पुष्टी करण्यासाठी उपयोगी ठरतात, जसे आपल्या उदाहरणात आहे.\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",
+ "- [पॅकेज themis](https://github.com/tidymodels/themis) तपासा. असमतोल डेटाशी व्यवहार करण्यासाठी आपण कोणत्या इतर तंत्रांचा वापर करू शकतो?\n",
+ "\n",
+ "- टायडी मॉडेल्स [संदर्भ वेबसाइट](https://www.tidymodels.org/start/).\n",
+ "\n",
+ "- एच. विकहॅम आणि जी. ग्रोलमंड, [*R फॉर डेटा सायन्स: व्हिज्युअलाइझ, मॉडेल, ट्रान्सफॉर्म, टायडी, आणि इम्पोर्ट डेटा*](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हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.\n"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/4-Classification/1-Introduction/solution/notebook.ipynb b/translations/mr/4-Classification/1-Introduction/solution/notebook.ipynb
new file mode 100644
index 000000000..24749721a
--- /dev/null
+++ b/translations/mr/4-Classification/1-Introduction/solution/notebook.ipynb
@@ -0,0 +1,701 @@
+{
+ "cells": [
+ {
+ "source": [
+ "# स्वादिष्ट आशियाई आणि भारतीय पदार्थ\n",
+ "\n",
+ "## परिचय \n",
+ "आशियाई आणि भारतीय पदार्थ जगभरात त्यांच्या चवदार मसाल्यांसाठी, विविधतेसाठी आणि अनोख्या पाककृतींसाठी प्रसिद्ध आहेत. या पदार्थांमध्ये प्रादेशिक चव आणि सांस्कृतिक परंपरांचा सुंदर संगम दिसतो.\n",
+ "\n",
+ "## लोकप्रिय भारतीय पदार्थ \n",
+ "### 1. बटर चिकन \n",
+ "बटर चिकन हा उत्तर भारतातील एक प्रसिद्ध पदार्थ आहे. तो मऊ चिकन तुकड्यांसह तयार केला जातो, जे मसालेदार टोमॅटो ग्रेव्हीमध्ये शिजवले जातात आणि क्रीमने सजवले जातात. \n",
+ "[!TIP] हा पदार्थ गरम नान किंवा बासमती भातासोबत अप्रतिम लागतो.\n",
+ "\n",
+ "### 2. बिर्याणी \n",
+ "बिर्याणी हा एक मसालेदार तांदळाचा पदार्थ आहे, जो मांस, मासे किंवा भाज्यांसोबत तयार केला जातो. प्रत्येक प्रांताची स्वतःची खास बिर्याणी शैली असते, जसे की हैदराबादी बिर्याणी, कोलकाता बिर्याणी, आणि लखनवी बिर्याणी. \n",
+ "[!NOTE] बिर्याणी बनवताना ताज्या मसाल्यांचा वापर करा, कारण ते पदार्थाची चव वाढवतात.\n",
+ "\n",
+ "## लोकप्रिय आशियाई पदार्थ \n",
+ "### 1. सुशी \n",
+ "सुशी हा जपानी पदार्थ आहे, जो मुख्यतः व्हिनेगरयुक्त तांदळासोबत कच्च्या मासे किंवा भाज्यांसह तयार केला जातो. सुशी रोल्स विविध प्रकारांमध्ये उपलब्ध असतात, जसे की निगिरी, माकी, आणि उरमाकी. \n",
+ "[!WARNING] कच्च्या मासे वापरताना त्याची गुणवत्ता आणि ताजेपणा तपासा.\n",
+ "\n",
+ "### 2. पद थाई \n",
+ "पद थाई हा थायलंडमधील एक प्रसिद्ध नूडल्सचा पदार्थ आहे. तो तांदळाच्या नूडल्स, टोफू, कोळंबी, अंडी, आणि शेंगदाण्यांसह तयार केला जातो. त्याला गोडसर, आंबट आणि मसालेदार चव असते. \n",
+ "[!IMPORTANT] पारंपरिक चव मिळवण्यासाठी तामारिंड पेस्ट वापरणे महत्त्वाचे आहे.\n",
+ "\n",
+ "## आरोग्यदायी पर्याय \n",
+ "### 1. सूप्स आणि सॅलड्स \n",
+ "आशियाई आणि भारतीय पदार्थांमध्ये विविध प्रकारचे सूप्स आणि सॅलड्स आरोग्यदायी पर्याय म्हणून उपलब्ध आहेत. उदाहरणार्थ, मिसो सूप, टॉम यम सूप, आणि कचुंबर सॅलड. \n",
+ "[!CAUTION] सूप्समध्ये जास्त मीठ टाळा, कारण ते आरोग्यासाठी हानिकारक ठरू शकते.\n",
+ "\n",
+ "### 2. वाफवलेले पदार्थ \n",
+ "वाफवलेले पदार्थ, जसे की डिम सम्स आणि इडली, हे कमी तेलकट आणि पचनास सोपे असतात. \n",
+ "\n",
+ "## निष्कर्ष \n",
+ "आशियाई आणि भारतीय पदार्थ केवळ चवदारच नाहीत तर ते विविध पोषणमूल्यांनी समृद्ध असतात. या पदार्थांचा आस्वाद घेताना त्यांच्या सांस्कृतिक महत्त्वाचा आदर करा आणि नवीन चवींचा आनंद घ्या!\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "source": [],
+ "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"
+ ]
+ },
+ "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",
+ "जसे तुम्ही मूळ डेटा सेटमध्ये तसेच आमच्या प्रशिक्षण सेटमध्ये पाहिले असेल, तिथे स्वयंपाक प्रकारांच्या संख्येमध्ये खूपच असमान वितरण आहे. कोरियन स्वयंपाक प्रकार *जवळजवळ* थाई स्वयंपाक प्रकारांच्या तीन पट आहेत. असमतोल डेटा मॉडेलच्या कार्यक्षमतेवर नकारात्मक परिणाम करू शकतो. अनेक मॉडेल्स तेव्हा चांगले कार्य करतात जेव्हा निरीक्षणांची संख्या समान असते आणि त्यामुळे असमतोल डेटासह संघर्ष करतात.\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",
+ " @allison_horst यांचे कलाकृती\n"
+ ],
+ "metadata": {
+ "id": "NBL3PqIWJBBB"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "आता आपल्याला ठरवायचे आहे की या कामासाठी कोणता अल्गोरिदम वापरायचा 🤔.\n",
+ "\n",
+ "Tidymodels मध्ये, [`parsnip पॅकेज`](https://parsnip.tidymodels.org/index.html) विविध इंजिन्स (पॅकेजेस) मध्ये मॉडेल्ससह काम करण्यासाठी सुसंगत इंटरफेस प्रदान करते. कृपया [मॉडेल प्रकार आणि इंजिन्स](https://www.tidymodels.org/find/parsnip/#models) आणि त्यांचे संबंधित [मॉडेल आर्ग्युमेंट्स](https://www.tidymodels.org/find/parsnip/#model-args) शोधण्यासाठी parsnip दस्तऐवज पहा. सुरुवातीला विविधता थोडी गोंधळात टाकणारी वाटू शकते. उदाहरणार्थ, खालील पद्धतींमध्ये वर्गीकरण तंत्रांचा समावेश आहे:\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",
+ "- **दोन-वर्ग वर्गीकरणकर्ता नाही**. आपण दोन-वर्ग वर्गीकरणकर्ता वापरत नाही, त्यामुळे one-vs-all पद्धत नाकारली जाते.\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": [
+ "
"
+ },
+ "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"
+ ]
+ }
+ ],
+ "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-08-29T19:23:50+00:00",
+ "source_file": "4-Classification/2-Classifiers-1/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
\ No newline at end of file
diff --git a/translations/mr/4-Classification/3-Classifiers-2/README.md b/translations/mr/4-Classification/3-Classifiers-2/README.md
new file mode 100644
index 000000000..d50c8d1c4
--- /dev/null
+++ b/translations/mr/4-Classification/3-Classifiers-2/README.md
@@ -0,0 +1,249 @@
+
+# पाककृती वर्गीकरण 2
+
+या दुसऱ्या वर्गीकरणाच्या धड्यात, तुम्ही संख्यात्मक डेटा वर्गीकृत करण्याचे अधिक मार्ग शोधाल. तसेच, एका वर्गीकर्त्याच्या निवडीचे परिणाम दुसऱ्याच्या तुलनेत काय असतात हे शिकाल.
+
+## [पूर्व-व्याख्यान प्रश्नमंजूषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/23/)
+
+### पूर्वतयारी
+
+आम्ही गृहीत धरतो की तुम्ही मागील धडे पूर्ण केले आहेत आणि तुमच्या `data` फोल्डरमध्ये _cleaned_cuisines.csv_ नावाचा स्वच्छ डेटा संच आहे, जो या 4-धड्यांच्या फोल्डरच्या मूळ भागात आहे.
+
+### तयारी
+
+आम्ही तुमच्या _notebook.ipynb_ फाइलमध्ये स्वच्छ डेटा संच लोड केला आहे आणि तो X आणि y डेटा फ्रेम्समध्ये विभागला आहे, जे मॉडेल तयार करण्याच्या प्रक्रियेसाठी तयार आहेत.
+
+## वर्गीकरणाचा नकाशा
+
+यापूर्वी, तुम्ही मायक्रोसॉफ्टच्या चीट शीटचा वापर करून डेटा वर्गीकृत करण्याचे विविध पर्याय शिकले. Scikit-learn एक समान, पण अधिक तपशीलवार चीट शीट ऑफर करते जी तुमच्या वर्गीकर्त्यांना (वर्गीकर्त्यांसाठी दुसरा शब्द) अधिक चांगल्या प्रकारे निवडण्यास मदत करू शकते:
+
+
+> टिप: [हा नकाशा ऑनलाइन पहा](https://scikit-learn.org/stable/tutorial/machine_learning_map/) आणि मार्गावर क्लिक करून दस्तऐवज वाचा.
+
+### योजना
+
+तुमच्या डेटाचा स्पष्ट अंदाज घेतल्यानंतर हा नकाशा खूप उपयुक्त ठरतो, कारण तुम्ही त्याच्या मार्गावरून निर्णय घेऊ शकता:
+
+- आमच्याकडे >50 नमुने आहेत
+- आम्हाला श्रेणीचा अंदाज लावायचा आहे
+- आमच्याकडे लेबल केलेला डेटा आहे
+- आमच्याकडे 100K पेक्षा कमी नमुने आहेत
+- ✨ आम्ही Linear 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)
+ ```
+
+## Linear SVC वर्गीकर्ता
+
+Support-Vector clustering (SVC) ही Support-Vector machines च्या ML तंत्रज्ञानाच्या कुटुंबातील एक शाखा आहे (खाली याबद्दल अधिक जाणून घ्या). या पद्धतीत, तुम्ही लेबल्स कसे क्लस्टर करायचे ते ठरवण्यासाठी 'kernel' निवडू शकता. 'C' पॅरामीटर 'regularization' संदर्भित करते जे पॅरामीटर्सच्या प्रभावाचे नियमन करते. kernel [काही](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) पैकी एक असू शकतो; येथे आम्ही 'linear' सेट करतो जेणेकरून आम्ही linear SVC वापरू शकू. Probability डीफॉल्टनुसार 'false' असते; येथे आम्ही probability estimates गोळा करण्यासाठी 'true' सेट करतो. आम्ही random state '0' वर सेट करतो जेणेकरून डेटा shuffle होईल आणि probabilities मिळतील.
+
+### व्यायाम - Linear SVC लागू करा
+
+वर्गीकर्त्यांची एक array तयार करून सुरुवात करा. आम्ही चाचणी करत असताना तुम्ही हळूहळू या array मध्ये भर घालाल.
+
+1. Linear SVC सह सुरुवात करा:
+
+ ```python
+ C = 10
+ # Create different classifiers.
+ classifiers = {
+ 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0)
+ }
+ ```
+
+2. Linear 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" कुटुंबाचा भाग आहे, जो supervised आणि unsupervised learning साठी वापरला जाऊ शकतो. या पद्धतीत, पूर्वनिर्धारित बिंदू तयार केले जातात आणि डेटा या बिंदूंभोवती गोळा केला जातो जेणेकरून डेटासाठी सामान्यीकृत लेबल्सचा अंदाज लावता येईल.
+
+### व्यायाम - K-Neighbors वर्गीकर्ता लागू करा
+
+मागील वर्गीकर्ता चांगला होता आणि डेटासह चांगले काम केले, परंतु कदाचित आम्ही अधिक चांगली अचूकता मिळवू शकतो. K-Neighbors वर्गीकर्ता वापरून पहा.
+
+1. तुमच्या वर्गीकर्ता array मध्ये एक ओळ जोडा (Linear 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 classifiers हे ML पद्धतींच्या [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) कुटुंबाचा भाग आहेत जे वर्गीकरण आणि regression कार्यांसाठी वापरले जातात. SVMs "प्रशिक्षण उदाहरणांना जागेतील बिंदूंमध्ये मॅप करतात" जेणेकरून दोन श्रेणींमधील अंतर जास्तीत जास्त होईल. त्यानंतरचा डेटा या जागेत मॅप केला जातो जेणेकरून त्यांची श्रेणी अंदाज करता येईल.
+
+### व्यायाम - 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) बद्दल जाणून घ्या
+
+Machine Learning ची ही पद्धत "काही बेस estimators च्या अंदाजांना एकत्र करते" जेणेकरून मॉडेलची गुणवत्ता सुधारता येईल. आमच्या उदाहरणात, आम्ही Random Trees आणि AdaBoost वापरले.
+
+- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), एक averaging पद्धत, 'decision trees' चा 'forest' तयार करते ज्यामध्ये randomness असते जे overfitting टाळते. n_estimators पॅरामीटर झाडांची संख्या सेट करते.
+
+- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) एका डेटासेटवर वर्गीकर्ता फिट करते आणि नंतर त्या वर्गीकर्त्याच्या प्रती त्या डेटासेटवर फिट करते. हे चुकीच्या प्रकारे वर्गीकृत आयटम्सच्या वजनांवर लक्ष केंद्रित करते आणि पुढील वर्गीकर्त्यासाठी फिट समायोजित करते जेणेकरून दुरुस्ती करता येईल.
+
+---
+
+## 🚀चॅलेंज
+
+या तंत्रांमध्ये अनेक पॅरामीटर्स असतात जे तुम्ही बदलू शकता. प्रत्येकाच्या डीफॉल्ट पॅरामीटर्सचा अभ्यास करा आणि या पॅरामीटर्स बदलल्याने मॉडेलच्या गुणवत्तेसाठी काय परिणाम होईल याचा विचार करा.
+
+## [व्याख्यानानंतरची प्रश्नमंजूषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/24/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+या धड्यांमध्ये बरीच तांत्रिक शब्दावली आहे, त्यामुळे [या यादी](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/mr/4-Classification/3-Classifiers-2/assignment.md b/translations/mr/4-Classification/3-Classifiers-2/assignment.md
new file mode 100644
index 000000000..e4773a67b
--- /dev/null
+++ b/translations/mr/4-Classification/3-Classifiers-2/assignment.md
@@ -0,0 +1,25 @@
+
+# पॅरामीटर प्ले
+
+## सूचना
+
+जेव्हा तुम्ही या वर्गीकरण करणाऱ्या तंत्रांसोबत काम करता, तेव्हा बरेच पॅरामीटर डीफॉल्टने सेट केलेले असतात. VS Code मधील Intellisense तुम्हाला त्यांच्याबद्दल अधिक जाणून घेण्यास मदत करू शकते. या धड्यातील कोणत्याही मशीन लर्निंग वर्गीकरण तंत्राचा अवलंब करा आणि विविध पॅरामीटर मूल्ये बदलून मॉडेल्स पुन्हा प्रशिक्षण द्या. काही बदल मॉडेलच्या गुणवत्तेस मदत का करतात आणि काही का घसरण करतात हे स्पष्ट करणारे एक नोटबुक तयार करा. तुमच्या उत्तरात सविस्तरपणे लिहा.
+
+## मूल्यमापन निकष
+
+| निकष | उत्कृष्ट | समाधानकारक | सुधारणा आवश्यक |
+| --------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | ------------------------------- |
+| | एक नोटबुक सादर केले आहे ज्यामध्ये वर्गीकरण करणारे मॉडेल पूर्णपणे तयार केले आहे आणि त्याचे पॅरामीटर बदलले आहेत व बदलांचे स्पष्टीकरण दिले आहे | एक नोटबुक अर्धवट सादर केले आहे किंवा नीट समजावलेले नाही | एक नोटबुक बगयुक्त किंवा दोषपूर्ण आहे |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/4-Classification/3-Classifiers-2/notebook.ipynb b/translations/mr/4-Classification/3-Classifiers-2/notebook.ipynb
new file mode 100644
index 000000000..592cc9c16
--- /dev/null
+++ b/translations/mr/4-Classification/3-Classifiers-2/notebook.ipynb
@@ -0,0 +1,163 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "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": "
"
+ },
+ "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"
+ ]
+ }
+ ],
+ "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-08-29T19:28:25+00:00",
+ "source_file": "4-Classification/3-Classifiers-2/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
\ No newline at end of file
diff --git a/translations/mr/4-Classification/3-Classifiers-2/solution/Julia/README.md b/translations/mr/4-Classification/3-Classifiers-2/solution/Julia/README.md
new file mode 100644
index 000000000..c8fc06758
--- /dev/null
+++ b/translations/mr/4-Classification/3-Classifiers-2/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb b/translations/mr/4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb
new file mode 100644
index 000000000..1cf6f628b
--- /dev/null
+++ b/translations/mr/4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb
@@ -0,0 +1,648 @@
+{
+ "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-08-29T19:29:52+00:00",
+ "source_file": "4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "jsFutf_ygqSx"
+ },
+ "source": []
+ },
+ {
+ "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": [
+ "## **1. वर्गीकरण नकाशा**\n",
+ "\n",
+ "आपल्या [मागील धड्यात](https://github.com/microsoft/ML-For-Beginners/tree/main/4-Classification/2-Classifiers-1), आपण हा प्रश्न सोडवण्याचा प्रयत्न केला: अनेक मॉडेल्समधून कसे निवडायचे? मोठ्या प्रमाणावर, हे डेटाच्या वैशिष्ट्यांवर आणि आपण सोडवू इच्छित समस्येच्या प्रकारावर (उदाहरणार्थ वर्गीकरण किंवा पुनरावृत्ती?) अवलंबून असते.\n",
+ "\n",
+ "यापूर्वी, आपण Microsoft च्या चीट शीटचा वापर करून डेटा वर्गीकृत करण्यासाठी असलेल्या विविध पर्यायांबद्दल शिकलो. Python च्या मशीन लर्निंग फ्रेमवर्क, Scikit-learn, एक समान पण अधिक तपशीलवार चीट शीट प्रदान करते जी तुमच्या वर्गीकरणासाठी (क्लासिफायर्ससाठी आणखी एक शब्द) पर्याय निवडण्यात मदत करू शकते:\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",
+ "- ✨ आम्ही Linear SVC निवडू शकतो\n",
+ "\n",
+ "- जर ते काम केले नाही, कारण आमच्याकडे संख्यात्मक डेटा आहे\n",
+ "\n",
+ " - आम्ही ✨ KNeighbors Classifier वापरून पाहू शकतो\n",
+ "\n",
+ " - जर तेही काम केले नाही, तर ✨ SVC आणि ✨ Ensemble Classifiers वापरून पाहा\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",
+ "- अल्पसंख्याक वर्गामध्ये निरीक्षणे वाढवणे: `Over-sampling` उदा. SMOTE अल्गोरिदम वापरून, जो अल्पसंख्याक वर्गाचे नवीन उदाहरणे त्यांच्या जवळच्या शेजाऱ्यांचा वापर करून कृत्रिमरीत्या तयार करतो.\n",
+ "\n",
+ "- बहुसंख्य वर्गामधून निरीक्षणे काढून टाकणे: `Under-sampling`\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) ही मशीन लर्निंग तंत्रांच्या सपोर्ट-व्हेक्टर मशीन कुटुंबातील एक शाखा आहे. SVC मध्ये, हायपरप्लेन अशा प्रकारे निवडले जाते की ते `बहुतेक` प्रशिक्षण निरीक्षणे योग्यरित्या वेगळी करते, परंतु काही निरीक्षणे `चुकीची वर्गीकृत` होऊ शकतात. काही बिंदूंना चुकीच्या बाजूला जाऊ देऊन, SVM बाहेरच्या डेटाप्रती अधिक मजबूत बनते आणि त्यामुळे नवीन डेटावर चांगले सामान्यीकरण करते. या उल्लंघनाचे नियमन करणाऱ्या पॅरामीटरला `cost` म्हणतात, ज्याची डीफॉल्ट किंमत 1 आहे (`help(\"svm_poly\")` पहा).\n",
+ "\n",
+ "आता, `degree = 1` सेट करून बहुपदीय SVM मॉडेलमध्ये एक रेखीय 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": [
+ "#### सपोर्ट व्हेक्टर मशीन\n",
+ "\n",
+ "सपोर्ट व्हेक्टर मशीन (SVM) हा सपोर्ट व्हेक्टर क्लासिफायरचा विस्तार आहे, जो वर्गांमधील नॉन-लिनिअर सीमारेषा समाविष्ट करण्यासाठी तयार केला गेला आहे. मूलत: SVMs *कर्नल ट्रिक* चा वापर करून फीचर स्पेस मोठा करतात, ज्यामुळे वर्गांमधील नॉन-लिनिअर नातेसंबंध जुळवता येतात. SVMs द्वारे वापरले जाणारे एक लोकप्रिय आणि अत्यंत लवचिक कर्नल फंक्शन म्हणजे *रेडियल बेसिस फंक्शन.* चला पाहूया की हे आपल्या डेटावर कसे कार्य करते.\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), Hands-on Machine Learning with R\n",
+ ">\n",
+ "> - [*Support Vector Machines*](https://www.statlearning.com/), An Introduction to Statistical Learning with Applications in 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 classifiers बद्दल अधिक जाणून घेण्यासाठी.\n",
+ "\n",
+ "### Ensemble classifiers\n",
+ "\n",
+ "Ensemble अल्गोरिदम्स अनेक बेस estimators एकत्र करून एक उत्कृष्ट मॉडेल तयार करतात, जे खालीलपैकी एका पद्धतीने कार्य करते:\n",
+ "\n",
+ "`bagging`: बेस मॉडेल्सच्या संग्रहावर *average function* लागू करणे\n",
+ "\n",
+ "`boosting`: एकमेकांवर आधारित मॉडेल्सची मालिका तयार करणे जे predictive performance सुधारण्यासाठी मदत करते.\n",
+ "\n",
+ "चला Random Forest मॉडेल वापरून सुरुवात करूया, जे अनेक निर्णय वृक्ष तयार करते आणि नंतर एक average function लागू करून एक चांगले एकत्रित मॉडेल तयार करते.\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 एक ensemble पद्धत परिभाषित करते ज्यामध्ये अनुक्रमिक निर्णय वृक्षांची मालिका तयार केली जाते, जिथे प्रत्येक वृक्ष मागील वृक्षांच्या निकालांवर अवलंबून असतो, त्रुटी हळूहळू कमी करण्याचा प्रयत्न केला जातो. हे चुकीच्या वर्गीकृत आयटम्सच्या वजनांवर लक्ष केंद्रित करते आणि पुढील वर्गीकर्त्यासाठी फिट समायोजित करते जेणेकरून दुरुस्ती करता येईल.\n",
+ "\n",
+ "हा मॉडेल फिट करण्याचे वेगवेगळे मार्ग आहेत (पहा `help(\"boost_tree\")`). या उदाहरणात, आपण Boosted trees `xgboost` इंजिनद्वारे फिट करू.\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",
+ "> - [Machine Learning for Social Scientists](https://cimentadaj.github.io/ml_socsci/tree-based-methods.html#random-forests)\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",
+ "> - - AdaBoost मॉडेलचा अभ्यास करते, जो xgboost साठी एक चांगला पर्याय आहे.\n",
+ ">\n",
+ "> Ensemble classifiers बद्दल अधिक जाणून घेण्यासाठी.\n",
+ "\n",
+ "## 4. अतिरिक्त - अनेक मॉडेल्सची तुलना करणे\n",
+ "\n",
+ "या प्रयोगशाळेत आपण बऱ्याच मॉडेल्स फिट केले आहेत 🙌. वेगवेगळ्या preprocessors आणि/किंवा मॉडेल स्पेसिफिकेशन्सच्या सेट्समधून अनेक workflows तयार करणे आणि नंतर एक-एक करून performance metrics मोजणे हे कंटाळवाणे किंवा कठीण होऊ शकते.\n",
+ "\n",
+ "चला पाहूया की आपण प्रशिक्षण सेटवर workflows च्या यादीला फिट करणारी आणि चाचणी सेटवर आधारित performance metrics परत करणारी एक फंक्शन तयार करून हे सोडवू शकतो का. यासाठी आपण [purrr](https://purrr.tidyverse.org/) पॅकेजमधील `map()` आणि `map_dfr()` वापरणार आहोत, ज्यामुळे यादीतील प्रत्येक घटकावर फंक्शन्स लागू करता येतील.\n",
+ "\n",
+ "> [`map()`](https://purrr.tidyverse.org/reference/map.html) फंक्शन्स तुम्हाला अनेक for loops बदलून कोड अधिक संक्षिप्त आणि वाचायला सोपा बनवण्याची परवानगी देतात. [`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": []
+ },
+ {
+ "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` (Randomly Selected Predictors).\n",
+ "\n",
+ "प्रत्येक मॉडेलचे डिफॉल्ट पॅरामीटर्स शोधा आणि या पॅरामीटर्समध्ये बदल केल्याने मॉडेलच्या गुणवत्तेसाठी काय परिणाम होईल याचा विचार करा.\n",
+ "\n",
+ "एखाद्या विशिष्ट मॉडेल आणि त्याच्या पॅरामीटर्सबद्दल अधिक जाणून घेण्यासाठी, वापरा: `help(\"model\")` उदा. `help(\"rand_forest\")`\n",
+ "\n",
+ "> प्रत्यक्षात, आपण सहसा *सर्वोत्तम मूल्ये* *अंदाज* लावतो, यासाठी अनेक मॉडेल्स `simulated data set` वर प्रशिक्षण देतो आणि या सर्व मॉडेल्सची कामगिरी कशी आहे हे मोजतो. या प्रक्रियेला **tuning** म्हणतात.\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 अधिक स्वागतार्ह आणि आकर्षक बनवणाऱ्या अप्रतिम चित्रणांसाठी. तिच्या [gallery](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), Gold Microsoft Learn Student Ambassador.\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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/4-Classification/3-Classifiers-2/solution/notebook.ipynb b/translations/mr/4-Classification/3-Classifiers-2/solution/notebook.ipynb
new file mode 100644
index 000000000..777d9109b
--- /dev/null
+++ b/translations/mr/4-Classification/3-Classifiers-2/solution/notebook.ipynb
@@ -0,0 +1,300 @@
+{
+ "cells": [
+ {
+ "source": [],
+ "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": "
"
+ },
+ "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": []
+ },
+ {
+ "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"
+ ]
+ }
+ ],
+ "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-08-29T19:28:36+00:00",
+ "source_file": "4-Classification/3-Classifiers-2/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
\ No newline at end of file
diff --git a/translations/mr/4-Classification/4-Applied/README.md b/translations/mr/4-Classification/4-Applied/README.md
new file mode 100644
index 000000000..f8264183d
--- /dev/null
+++ b/translations/mr/4-Classification/4-Applied/README.md
@@ -0,0 +1,329 @@
+
+# क्युझिन शिफारस वेब अॅप तयार करा
+
+या धड्यात, तुम्ही मागील धड्यांमध्ये शिकलेल्या तंत्रांचा वापर करून आणि या मालिकेत वापरलेल्या स्वादिष्ट क्युझिन डेटासेटसह वर्गीकरण मॉडेल तयार कराल. याशिवाय, तुम्ही जतन केलेल्या मॉडेलचा वापर करण्यासाठी एक छोटासा वेब अॅप तयार कराल, ज्यामध्ये Onnx च्या वेब रनटाइमचा उपयोग केला जाईल.
+
+यंत्रमानव शिक्षणाचा सर्वात उपयुक्त व्यावहारिक उपयोग म्हणजे शिफारस प्रणाली तयार करणे, आणि तुम्ही आज त्या दिशेने पहिले पाऊल उचलू शकता!
+
+[](https://youtu.be/17wdM9AHMfg "Applied ML")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा व्हिडिओसाठी: जेन लूपर वर्गीकृत क्युझिन डेटाचा वापर करून वेब अॅप तयार करतात
+
+## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/25/)
+
+या धड्यात तुम्ही शिकाल:
+
+- मॉडेल कसे तयार करायचे आणि ते Onnx मॉडेल म्हणून कसे जतन करायचे
+- Netron चा वापर करून मॉडेल कसे तपासायचे
+- तुमच्या वेब अॅपमध्ये अंदाजासाठी मॉडेलचा वापर कसा करायचा
+
+## तुमचे मॉडेल तयार करा
+
+व्यवसाय प्रणालींसाठी या तंत्रज्ञानाचा उपयोग करण्यासाठी लागू ML प्रणाली तयार करणे महत्त्वाचे आहे. तुम्ही तुमच्या वेब अॅप्लिकेशनमध्ये मॉडेल्स वापरू शकता (आणि आवश्यक असल्यास ऑफलाइन संदर्भात देखील वापरू शकता) Onnx चा वापर करून.
+
+[मागील धड्यात](../../3-Web-App/1-Web-App/README.md), तुम्ही UFO sightings वर आधारित एक Regression मॉडेल तयार केले होते, "pickle" केले होते, आणि Flask अॅपमध्ये वापरले होते. ही आर्किटेक्चर जाणून घेणे खूप उपयुक्त आहे, परंतु हे पूर्ण-स्टॅक Python अॅप आहे, आणि तुमच्या गरजा JavaScript अॅप्लिकेशनचा वापर समाविष्ट करू शकतात.
+
+या धड्यात, तुम्ही अंदाजासाठी JavaScript-आधारित प्रणाली तयार करू शकता. परंतु, प्रथम तुम्हाला मॉडेल प्रशिक्षण द्यावे लागेल आणि ते Onnx सह वापरण्यासाठी रूपांतरित करावे लागेल.
+
+## व्यायाम - वर्गीकरण मॉडेल प्रशिक्षण द्या
+
+प्रथम, आपण वापरलेल्या स्वच्छ क्युझिन डेटासेटचा वापर करून वर्गीकरण मॉडेल प्रशिक्षण द्या.
+
+1. उपयुक्त लायब्ररी आयात करून सुरुवात करा:
+
+ ```python
+ !pip install skl2onnx
+ import pandas as pd
+ ```
+
+ तुम्हाला '[skl2onnx](https://onnx.ai/sklearn-onnx/)' ची आवश्यकता आहे जे Scikit-learn मॉडेलला 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 मध्ये रूपांतरित करा
+
+योग्य Tensor क्रमांकासह रूपांतर सुनिश्चित करा. या डेटासेटमध्ये 380 घटक सूचीबद्ध आहेत, त्यामुळे तुम्हाला `FloatTensorType` मध्ये तो क्रमांक नमूद करणे आवश्यक आहे:
+
+1. 380 Tensor क्रमांक वापरून रूपांतरित करा.
+
+ ```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())
+ ```
+
+ > लक्षात ठेवा, तुम्ही तुमच्या रूपांतरण स्क्रिप्टमध्ये [options](https://onnx.ai/sklearn-onnx/parameterized.html) पास करू शकता. या प्रकरणात, आम्ही 'nocl' True आणि 'zipmap' False पास केला. कारण हे वर्गीकरण मॉडेल आहे, तुम्हाला ZipMap काढण्याचा पर्याय आहे जो डिक्शनरींची यादी तयार करतो (आवश्यक नाही). `nocl` वर्ग माहिती मॉडेलमध्ये समाविष्ट केली जात आहे याचा संदर्भ देते. `nocl` True सेट करून तुमच्या मॉडेलचा आकार कमी करा.
+
+संपूर्ण नोटबुक चालवल्यानंतर आता Onnx मॉडेल तयार होईल आणि या फोल्डरमध्ये जतन होईल.
+
+## तुमचे मॉडेल पहा
+
+Onnx मॉडेल्स Visual Studio Code मध्ये फारसे दृश्यमान नाहीत, परंतु एक अतिशय चांगले विनामूल्य सॉफ्टवेअर आहे जे अनेक संशोधक मॉडेल योग्य प्रकारे तयार झाले आहे याची खात्री करण्यासाठी वापरतात. [Netron](https://github.com/lutzroeder/Netron) डाउनलोड करा आणि तुमची model.onnx फाइल उघडा. तुम्ही तुमचे साधे मॉडेल 380 इनपुट्स आणि वर्गीकरणासह व्हिज्युअलाइज केलेले पाहू शकता:
+
+
+
+Netron तुमचे मॉडेल पाहण्यासाठी एक उपयुक्त साधन आहे.
+
+आता तुम्ही हे छान मॉडेल वेब अॅपमध्ये वापरण्यास तयार आहात. चला एक अॅप तयार करूया जे तुमच्या फ्रिजमध्ये पाहताना आणि तुमच्या उरलेल्या घटकांच्या कोणत्या संयोजनाचा उपयोग करून दिलेल्या क्युझिन तयार करता येईल हे ठरवताना उपयुक्त ठरेल.
+
+## शिफारस वेब अॅप्लिकेशन तयार करा
+
+तुम्ही तुमचे मॉडेल थेट वेब अॅपमध्ये वापरू शकता. ही आर्किटेक्चर तुम्हाला ते स्थानिक पातळीवर आणि आवश्यक असल्यास ऑफलाइन चालवण्याची परवानगी देते. जिथे तुमची `model.onnx` फाइल जतन केली आहे त्या फोल्डरमध्ये `index.html` फाइल तयार करून सुरुवात करा.
+
+1. या फाइलमध्ये _index.html_, खालील मार्कअप जोडा:
+
+ ```html
+
+
+
+ Cuisine Matcher
+
+
+ ...
+
+
+ ```
+
+1. आता, `body` टॅगमध्ये काम करताना, काही घटक दर्शविण्यासाठी चेकबॉक्सची यादी दाखवण्यासाठी थोडासा मार्कअप जोडा:
+
+ ```html
+
Check your refrigerator. What can you create?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ```
+
+ लक्षात घ्या की प्रत्येक चेकबॉक्सला एक मूल्य दिले आहे. हे डेटासेटनुसार घटक जिथे सापडतो त्या अनुक्रमणिकेचे प्रतिबिंबित करते. उदाहरणार्थ, Apple या वर्णमालिक यादीमध्ये पाचव्या स्तंभात आहे, त्यामुळे त्याचे मूल्य '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. Runtime ठेवल्यानंतर, तुम्ही ते कॉल करू शकता:
+
+ ```html
+
+ ```
+
+या कोडमध्ये, अनेक गोष्टी घडत आहेत:
+
+1. तुम्ही 380 संभाव्य मूल्ये (1 किंवा 0) सेट करण्यासाठी आणि मॉडेलला अंदाजासाठी पाठवण्यासाठी एक array तयार केली आहे, घटक चेकबॉक्स तपासले गेले आहेत की नाही यावर अवलंबून.
+2. तुम्ही चेकबॉक्सेसची array तयार केली आणि अॅप्लिकेशन सुरू झाल्यावर `init` फंक्शनमध्ये तपासले गेले आहेत की नाही हे ठरवण्याचा मार्ग तयार केला. जेव्हा चेकबॉक्स तपासले जाते, तेव्हा `ingredients` array निवडलेल्या घटकाचे प्रतिबिंबित करण्यासाठी बदलले जाते.
+3. तुम्ही `testCheckboxes` फंक्शन तयार केले जे तपासते की कोणताही चेकबॉक्स तपासला गेला आहे का.
+4. तुम्ही बटण दाबले असता `startInference` फंक्शन वापरता आणि, जर कोणताही चेकबॉक्स तपासला गेला असेल, तर तुम्ही अंदाज सुरू करता.
+5. अंदाज दिनचर्या समाविष्ट करते:
+ 1. मॉडेलचे असिंक्रोनस लोड सेट करणे
+ 2. मॉडेलला पाठवण्यासाठी Tensor संरचना तयार करणे
+ 3. 'feeds' तयार करणे जे तुम्ही तुमचे मॉडेल प्रशिक्षण देताना तयार केलेल्या `float_input` इनपुटचे प्रतिबिंबित करते (तुम्ही Netron वापरून ते नाव सत्यापित करू शकता)
+ 4. हे 'feeds' मॉडेलला पाठवणे आणि प्रतिसादाची वाट पाहणे
+
+## तुमचे अॅप्लिकेशन तपासा
+
+Visual Studio Code मध्ये टर्मिनल सत्र उघडा जिथे तुमची index.html फाइल आहे. सुनिश्चित करा की तुमच्याकडे [http-server](https://www.npmjs.com/package/http-server) जागतिक स्तरावर स्थापित आहे, आणि प्रॉम्प्टवर `http-server` टाइप करा. एक localhost उघडेल आणि तुम्ही तुमचे वेब अॅप पाहू शकता. विविध घटकांवर आधारित कोणते क्युझिन शिफारस केले जाते ते तपासा:
+
+
+
+अभिनंदन, तुम्ही काही फील्डसह 'शिफारस' वेब अॅप तयार केले आहे. या प्रणालीला तयार करण्यात थोडा वेळ घ्या!
+
+## 🚀चॅलेंज
+
+तुमचे वेब अॅप खूपच साधे आहे, त्यामुळे [ingredient_indexes](../../../../4-Classification/data/ingredient_indexes.csv) डेटामधील घटक आणि त्यांची अनुक्रमणिका वापरून ते तयार करत रहा. कोणते स्वाद संयोजन दिलेल्या राष्ट्रीय पदार्थ तयार करण्यासाठी कार्य करते?
+
+## [व्याख्यानानंतरची प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/26/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+या धड्यात फक्त अन्न घटकांसाठी शिफारस प्रणाली तयार करण्याच्या उपयुक्ततेचा उल्लेख केला आहे, परंतु 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/mr/4-Classification/4-Applied/assignment.md b/translations/mr/4-Classification/4-Applied/assignment.md
new file mode 100644
index 000000000..2512ec2b7
--- /dev/null
+++ b/translations/mr/4-Classification/4-Applied/assignment.md
@@ -0,0 +1,25 @@
+
+# शिफारस प्रणाली तयार करा
+
+## सूचना
+
+या धड्यांमधील तुमच्या सरावांनुसार, तुम्हाला आता Onnx Runtime आणि रूपांतरित Onnx मॉडेल वापरून JavaScript-आधारित वेब अॅप तयार करणे कसे करायचे हे माहित आहे. या धड्यांमधील डेटाचा किंवा इतरत्रून मिळवलेल्या डेटाचा वापर करून नवीन शिफारस प्रणाली तयार करण्याचा प्रयत्न करा (कृपया श्रेय द्या). तुम्ही विविध व्यक्तिमत्व वैशिष्ट्यांवर आधारित पाळीव प्राण्यांची शिफारस करणारी प्रणाली तयार करू शकता, किंवा एखाद्या व्यक्तीच्या मूडवर आधारित संगीत शैली शिफारस करणारी प्रणाली तयार करू शकता. सर्जनशील व्हा!
+
+## मूल्यमापन निकष
+
+| निकष | उत्कृष्ट | समाधानकारक | सुधारणा आवश्यक |
+| --------- | --------------------------------------------------------------------- | ------------------------------------ | ---------------------------------- |
+| | एक वेब अॅप आणि नोटबुक सादर केले आहेत, दोन्ही चांगले दस्तऐवजीकरण केलेले आणि कार्यरत आहेत | त्यापैकी एक गहाळ आहे किंवा दोषपूर्ण आहे | दोन्ही गहाळ आहेत किंवा दोषपूर्ण आहेत |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/4-Classification/4-Applied/notebook.ipynb b/translations/mr/4-Classification/4-Applied/notebook.ipynb
new file mode 100644
index 000000000..eb46f4f30
--- /dev/null
+++ b/translations/mr/4-Classification/4-Applied/notebook.ipynb
@@ -0,0 +1,39 @@
+{
+ "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-08-29T19:27:59+00:00",
+ "source_file": "4-Classification/4-Applied/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "source": [],
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/4-Classification/4-Applied/solution/notebook.ipynb b/translations/mr/4-Classification/4-Applied/solution/notebook.ipynb
new file mode 100644
index 000000000..f725b671c
--- /dev/null
+++ b/translations/mr/4-Classification/4-Applied/solution/notebook.ipynb
@@ -0,0 +1,290 @@
+{
+ "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-08-29T19:28:12+00:00",
+ "source_file": "4-Classification/4-Applied/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "source": [],
+ "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": "
"
+ },
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/4-Classification/README.md b/translations/mr/4-Classification/README.md
new file mode 100644
index 000000000..3c3fcac47
--- /dev/null
+++ b/translations/mr/4-Classification/README.md
@@ -0,0 +1,41 @@
+
+# वर्गीकरणासह सुरुवात करा
+
+## प्रादेशिक विषय: स्वादिष्ट आशियाई आणि भारतीय खाद्यपदार्थ 🍜
+
+आशिया आणि भारतात अन्न परंपरा अत्यंत विविध आणि अतिशय स्वादिष्ट आहेत! त्यांच्या घटकांचा अभ्यास करण्यासाठी प्रादेशिक खाद्यपदार्थांबद्दलच्या डेटावर एक नजर टाकूया.
+
+
+> फोटो लिशेंग चांग यांनी अनस्प्लॅश वर दिला आहे
+
+## तुम्ही काय शिकाल
+
+या विभागात, तुम्ही रिग्रेशनच्या आधीच्या अभ्यासावर आधारित शिकाल आणि डेटा अधिक चांगल्या प्रकारे समजून घेण्यासाठी वापरता येणाऱ्या इतर वर्गीकरण साधनांबद्दल जाणून घ्याल.
+
+> वर्गीकरण मॉडेल्ससह काम करण्याबद्दल शिकण्यासाठी उपयुक्त लो-कोड टूल्स उपलब्ध आहेत. [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/mr/5-Clustering/1-Visualize/README.md b/translations/mr/5-Clustering/1-Visualize/README.md
new file mode 100644
index 000000000..5873355cc
--- /dev/null
+++ b/translations/mr/5-Clustering/1-Visualize/README.md
@@ -0,0 +1,345 @@
+
+# क्लस्टरिंगची ओळख
+
+क्लस्टरिंग ही [अनसुपरवाइज्ड लर्निंग](https://wikipedia.org/wiki/Unsupervised_learning) प्रकारातील एक पद्धत आहे ज्यामध्ये डेटासेट लेबल नसलेला किंवा त्याचे इनपुट्स पूर्वनिर्धारित आउटपुट्सशी जुळलेले नसतात असे गृहीत धरले जाते. ही पद्धत विविध अल्गोरिदम वापरून लेबल नसलेल्या डेटामधून गट तयार करते आणि डेटामधील नमुन्यांनुसार गट तयार करते.
+
+[](https://youtu.be/ty2advRiWJM "PSquare द्वारे No One Like You")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा व्हिडिओसाठी. क्लस्टरिंगसह मशीन लर्निंग शिकत असताना, काही नायजेरियन डान्स हॉल ट्रॅक्सचा आनंद घ्या - PSquare चा 2014 मधील हा गाणं खूप लोकप्रिय आहे.
+
+## [पूर्व-व्याख्यान क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/27/)
+
+### परिचय
+
+[क्लस्टरिंग](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) डेटा एक्सप्लोरेशनसाठी खूप उपयुक्त आहे. चला पाहूया की नायजेरियन प्रेक्षक संगीत कसे वापरतात यामध्ये ट्रेंड्स आणि नमुने शोधण्यात ते मदत करू शकते का.
+
+✅ क्लस्टरिंगच्या उपयोगांबद्दल विचार करण्यासाठी एक मिनिट घ्या. वास्तविक जीवनात, क्लस्टरिंग तेव्हा होते जेव्हा तुमच्याकडे कपड्यांचा ढीग असतो आणि तुम्हाला तुमच्या कुटुंबातील सदस्यांचे कपडे वेगळे करायचे असतात 🧦👕👖🩲. डेटा सायन्समध्ये, क्लस्टरिंग वापरकर्त्याच्या पसंतींचा विश्लेषण करताना किंवा कोणत्याही लेबल नसलेल्या डेटासेटच्या वैशिष्ट्ये ठरवताना होते. एका प्रकारे, क्लस्टरिंग गोंधळाचा अर्थ लावण्यास मदत करते, जसे की मोज्यांच्या ड्रॉवरसारखे.
+
+[](https://youtu.be/esmzYhuFnds "क्लस्टरिंगची ओळख")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा व्हिडिओसाठी: MIT चे जॉन गुट्टाग क्लस्टरिंगची ओळख करून देतात.
+
+व्यावसायिक सेटिंगमध्ये, क्लस्टरिंगचा उपयोग बाजार विभागणीसाठी, कोणत्या वयोगटाने कोणती उत्पादने खरेदी केली यासारख्या गोष्टी ठरवण्यासाठी केला जाऊ शकतो. आणखी एक उपयोग म्हणजे अनियमितता शोधणे, कदाचित क्रेडिट कार्ड व्यवहारांच्या डेटासेटमधून फसवणूक शोधण्यासाठी. किंवा तुम्ही वैद्यकीय स्कॅनच्या बॅचमधून ट्यूमर ठरवण्यासाठी क्लस्टरिंग वापरू शकता.
+
+✅ बँकिंग, ई-कॉमर्स किंवा व्यवसाय सेटिंगमध्ये तुम्ही 'इन द वाइल्ड' क्लस्टरिंग कसे अनुभवले आहे याचा विचार करा.
+
+> 🎓 मनोरंजकपणे, क्लस्टर विश्लेषणाची सुरुवात 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) वक्रावर मोजले जाते. जर तुमचा डेटा, व्हिज्युअलाइज्ड, प्लेनवर अस्तित्वात नसल्यासारखा वाटत असेल, तर तुम्हाला त्याचा हाताळण्यासाठी विशेष अल्गोरिदम वापरण्याची आवश्यकता असू शकते.
+>
+
+> माहितीपट [दसानी मदीपल्ली](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 चे agglomerative क्लस्टरिंग हायरार्किकल आहे.
+
+ 
+ > माहितीपट [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) द्वारे
+
+- **सेंट्रॉइड क्लस्टरिंग**. ही लोकप्रिय पद्धत 'k', किंवा तयार करायच्या क्लस्टर्सची संख्या निवडण्याची आवश्यकता असते, त्यानंतर अल्गोरिदम क्लस्टरचा मध्य पॉइंट ठरवतो आणि त्या पॉइंटभोवती डेटा गोळा करतो. [K-means क्लस्टरिंग](https://wikipedia.org/wiki/K-means_clustering) सेंट्रॉइड क्लस्टरिंगचा लोकप्रिय प्रकार आहे. मध्य पॉइंट जवळच्या सरासरीने ठरवला जातो, त्यामुळे नाव. क्लस्टरपासूनचे चौरस अंतर कमी केले जाते.
+
+ 
+ > माहितीपट [दसानी मदीपल्ली](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()
+ ```
+
+ डेटाच्या पहिल्या काही ओळी तपासा:
+
+ | | नाव | अल्बम | कलाकार | कलाकाराचा टॉप शैली | रिलीज तारीख | लांबी | लोकप्रियता | नृत्यक्षमता | ध्वनिकी | ऊर्जा | वाद्यत्व | जिवंतपणा | आवाज | भाषणपणा | टेम्पो | वेळ सिग्नेचर |
+ | --- | ------------------------ | ----------------
+| 2 | LITT! | LITT! | AYLØ | इंडी 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 | नायजेरियन पॉप | 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 असल्याची खात्री करून null मूल्ये पुन्हा तपासा:
+
+ ```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')
+ ```
+
+ 
+
+✅ तुम्हाला अधिक टॉप मूल्ये पाहायची असल्यास, टॉप `[: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')
+ ```
+
+ आता शैली पुन्हा तपासा:
+
+ 
+
+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)
+ ```
+
+ 
+
+ `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) ग्राफ वापरला जातो जो सतत संभाव्यता घनता वक्र वापरून डेटा दर्शवतो. हे एकाधिक वितरणांसह काम करताना डेटा समजून घेण्यास अनुमती देते.
+
+ सामान्यतः, लोकप्रियता आणि डान्सेबिलिटीच्या बाबतीत तीन शैली सैलपणे संरेखित होतात. या सैल-संरेखित डेटामध्ये क्लस्टर ठरवणे एक आव्हान असेल:
+
+ 
+
+1. स्कॅटर प्लॉट तयार करा:
+
+ ```python
+ sns.FacetGrid(df, hue="artist_top_genre", height=5) \
+ .map(plt.scatter, "popularity", "danceability") \
+ .add_legend()
+ ```
+
+ त्याच अक्षांवरील स्कॅटरप्लॉट एकसारखा एकत्रीकरण नमुना दर्शवतो.
+
+ 
+
+सामान्यतः, क्लस्टरिंगसाठी, तुम्ही डेटा क्लस्टर दर्शवण्यासाठी स्कॅटरप्लॉट्स वापरू शकता, त्यामुळे व्हिज्युअलायझेशनचा हा प्रकार मास्टर करणे खूप उपयुक्त आहे. पुढील धड्यात, आम्ही हा फिल्टर केलेला डेटा घेऊ आणि k-means क्लस्टरिंग वापरून या डेटामध्ये गट शोधू जे मनोरंजक प्रकारे ओव्हरलॅप होतात.
+
+---
+
+## 🚀चॅलेंज
+
+पुढील धड्याच्या तयारीसाठी, तुम्ही शोधू शकता आणि उत्पादन वातावरणात वापरू शकता अशा विविध क्लस्टरिंग अल्गोरिदम्सबद्दल चार्ट तयार करा. क्लस्टरिंग कोणत्या प्रकारच्या समस्यांचे निराकरण करण्याचा प्रयत्न करत आहे?
+
+## [पोस्ट-लेक्चर क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/28/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+क्लस्टरिंग अल्गोरिदम लागू करण्यापूर्वी, जसे आपण शिकले आहे, तुमच्या डेटासेटच्या स्वरूपाची समजून घेणे चांगली कल्पना आहे. या विषयावर अधिक वाचा [येथे](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/mr/5-Clustering/1-Visualize/assignment.md b/translations/mr/5-Clustering/1-Visualize/assignment.md
new file mode 100644
index 000000000..a5a21e413
--- /dev/null
+++ b/translations/mr/5-Clustering/1-Visualize/assignment.md
@@ -0,0 +1,25 @@
+
+# क्लस्टरिंगसाठी इतर व्हिज्युअलायझेशन्सचा अभ्यास करा
+
+## सूचना
+
+या धड्यात, तुम्ही क्लस्टरिंगसाठी डेटा तयार करताना प्लॉटिंग तंत्रांचा अभ्यास केला आहे. विशेषतः, स्कॅटरप्लॉट्स वस्तूंच्या गटांचा शोध घेण्यासाठी उपयुक्त ठरतात. स्कॅटरप्लॉट्स तयार करण्यासाठी वेगवेगळ्या पद्धती आणि वेगवेगळ्या लायब्ररींचा अभ्यास करा आणि तुमचे काम एका नोटबुकमध्ये नोंदवा. तुम्ही या धड्यातील डेटा, इतर धड्यांमधील डेटा किंवा स्वतः मिळवलेला डेटा वापरू शकता (तथापि, कृपया त्याचा स्रोत तुमच्या नोटबुकमध्ये नमूद करा). स्कॅटरप्लॉट्स वापरून काही डेटा प्लॉट करा आणि तुम्हाला काय आढळले ते स्पष्ट करा.
+
+## मूल्यांकन निकष
+
+| निकष | उत्कृष्ट | समाधानकारक | सुधारणा आवश्यक |
+| ---------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ---------------------------------- |
+| | पाच चांगल्या प्रकारे दस्तऐवजीकरण केलेले स्कॅटरप्लॉट्स असलेले नोटबुक सादर केले आहे | पाचपेक्षा कमी स्कॅटरप्लॉट्स असलेले आणि कमी दस्तऐवजीकरण केलेले नोटबुक सादर केले आहे | अपूर्ण नोटबुक सादर केले आहे |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/5-Clustering/1-Visualize/notebook.ipynb b/translations/mr/5-Clustering/1-Visualize/notebook.ipynb
new file mode 100644
index 000000000..20eae5f80
--- /dev/null
+++ b/translations/mr/5-Clustering/1-Visualize/notebook.ipynb
@@ -0,0 +1,50 @@
+{
+ "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-08-29T19:12:22+00:00",
+ "source_file": "5-Clustering/1-Visualize/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "source": [],
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/5-Clustering/1-Visualize/solution/Julia/README.md b/translations/mr/5-Clustering/1-Visualize/solution/Julia/README.md
new file mode 100644
index 000000000..5141fa11c
--- /dev/null
+++ b/translations/mr/5-Clustering/1-Visualize/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb b/translations/mr/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb
new file mode 100644
index 000000000..0911310bb
--- /dev/null
+++ b/translations/mr/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb
@@ -0,0 +1,493 @@
+{
+ "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",
+ "✅ एकदा तुमचा डेटा क्लस्टर्समध्ये आयोजित झाला की, तुम्ही त्याला क्लस्टर आयडी असाइन करता. ही तंत्र डेटासेटची गोपनीयता जपण्यासाठी उपयुक्त ठरते; तुम्ही क्लस्टरमधील अधिक उघड करणाऱ्या ओळखण्याजोग्या डेटाऐवजी क्लस्टर आयडीने डेटा पॉइंटचा संदर्भ घेऊ शकता. क्लस्टर आयडीचा संदर्भ घेण्याचे इतर कोणते कारण असू शकते याचा विचार करा.\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-Means क्लस्टरिंग विरुद्ध HDBSCAN अल्गोरिदम वापरण्याचा फरक दर्शवतो.\n",
+ "\n",
+ "क्लस्टरिंग तंत्रांचा सखोल अभ्यास करण्यासाठी [Learn module](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' किंवा तयार करावयाच्या क्लस्टर्सची संख्या निवडण्याची आवश्यकता करतो, त्यानंतर अल्गोरिदम क्लस्टरचा मध्यबिंदू ठरवतो आणि त्या बिंदूभोवती डेटा गोळा करतो. [K-means क्लस्टरिंग](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": [
+ "कधी कधी, आपल्याला आपल्या डेटाबद्दल थोडी अधिक माहिती हवी असते. आपण `data` आणि `त्याची रचना` [*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",
+ "आता आपण सामान्य केंद्रीय प्रवृत्तीचे सांख्यिकी (उदा. [mean](https://en.wikipedia.org/wiki/Arithmetic_mean) आणि [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": [
+ "आपल्या डेटासेटमधील संख्यात्मक व्हेरिएबल्समध्ये कोणतेही स्पष्ट रेखीय संबंध आहे का ते पाहूया. हा संबंध गणितीयदृष्ट्या [संबंध सांख्यांक](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` शी संबंध आहे, जो देखील समजण्यासारखा आहे, कारण अलीकडील गाणी कदाचित अधिक लोकप्रिय असतात. गाण्याची लांबी आणि ऊर्जा यांच्यातही काही प्रमाणात संबंध दिसतो.\n",
+ "\n",
+ "हे पाहणे मनोरंजक ठरेल की क्लस्टरिंग अल्गोरिदम या डेटामधून काय शोधून काढू शकतो!\n",
+ "\n",
+ "> 🎓 लक्षात ठेवा की सहसंबंध म्हणजे कारणमीमांसा नव्हे! आपल्याकडे सहसंबंधाचा पुरावा आहे, परंतु कारणमीमांसेचा पुरावा नाही. [एक मनोरंजक वेबसाइट](https://tylervigen.com/spurious-correlations) काही दृश्ये प्रदान करते जी या मुद्द्यावर भर देतात.\n",
+ "\n",
+ "### २. डेटा वितरणाचा अभ्यास करा\n",
+ "\n",
+ "आता काही अधिक सूक्ष्म प्रश्न विचारूया. त्यांच्या लोकप्रियतेच्या आधारे, विविध संगीत प्रकारांमध्ये त्यांच्या नृत्ययोग्यतेच्या आकलनात लक्षणीय फरक आहे का? आपले शीर्ष तीन संगीत प्रकार लोकप्रियता आणि नृत्ययोग्यतेसाठी दिलेल्या x आणि y अक्षांवर [घनतेचे आलेख](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-means क्लस्टरिंग वापरू आणि या डेटामध्ये काही रोचक प्रकारे ओव्हरलॅप होणाऱ्या गटांचा शोध घेऊ.\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) यांना या मॉड्यूलची मूळ Python आवृत्ती तयार केल्याबद्दल ♥️\n",
+ "\n",
+ "[`दसानी मदीपल्ली`](https://twitter.com/dasani_decoded) यांना आश्चर्यकारक चित्रण तयार केल्याबद्दल ज्यामुळे मशीन लर्निंग संकल्पना अधिक समजण्यास सोप्या आणि सुलभ झाल्या.\n",
+ "\n",
+ "आनंदी शिक्षण,\n",
+ "\n",
+ "[एरिक](https://twitter.com/ericntay), गोल्ड Microsoft Learn स्टुडंट अॅम्बेसेडर.\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n---\n\n**अस्वीकरण**: \nहा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.\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-08-29T19:14:46+00:00",
+ "source_file": "5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
\ No newline at end of file
diff --git a/translations/mr/5-Clustering/1-Visualize/solution/notebook.ipynb b/translations/mr/5-Clustering/1-Visualize/solution/notebook.ipynb
new file mode 100644
index 000000000..e75dcf9a9
--- /dev/null
+++ b/translations/mr/5-Clustering/1-Visualize/solution/notebook.ipynb
@@ -0,0 +1,817 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "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": [
+ "
"
+ ]
+ },
+ "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"
+ ]
+ }
+ ],
+ "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-08-29T19:12:41+00:00",
+ "source_file": "5-Clustering/1-Visualize/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/mr/5-Clustering/2-K-Means/README.md b/translations/mr/5-Clustering/2-K-Means/README.md
new file mode 100644
index 000000000..71fa5db76
--- /dev/null
+++ b/translations/mr/5-Clustering/2-K-Means/README.md
@@ -0,0 +1,261 @@
+
+# K-Means क्लस्टरिंग
+
+## [पूर्व-व्याख्यान प्रश्नमंजूषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/29/)
+
+या धड्यात, तुम्ही Scikit-learn आणि तुम्ही यापूर्वी आयात केलेल्या नायजेरियन संगीत डेटासेटचा वापर करून क्लस्टर्स कसे तयार करायचे ते शिकाल. आपण क्लस्टरिंगसाठी K-Means च्या मूलभूत गोष्टींचा अभ्यास करू. लक्षात ठेवा, जसे तुम्ही मागील धड्यात शिकले, क्लस्टर्ससह काम करण्याचे अनेक मार्ग आहेत आणि तुम्ही वापरलेली पद्धत तुमच्या डेटावर अवलंबून असते. आपण K-Means वापरून पाहू कारण ही सर्वात सामान्य क्लस्टरिंग तंत्र आहे. चला सुरुवात करूया!
+
+तुम्ही शिकणार असलेल्या संज्ञा:
+
+- सिल्हूट स्कोअरिंग
+- एल्बो पद्धत
+- इनर्शिया
+- व्हेरियन्स
+
+## परिचय
+
+[K-Means Clustering](https://wikipedia.org/wiki/K-means_clustering) ही सिग्नल प्रोसेसिंगच्या क्षेत्रातून आलेली पद्धत आहे. ही पद्धत 'k' क्लस्टर्समध्ये डेटा गट विभाजित आणि विभागण्यासाठी वापरली जाते, ज्यामध्ये निरीक्षणांची मालिका असते. प्रत्येक निरीक्षण दिलेल्या डेटापॉइंटला त्याच्या जवळच्या 'मीन' किंवा क्लस्टरच्या केंद्र बिंदूपर्यंत गटबद्ध करण्यासाठी कार्य करते.
+
+क्लस्टर्स [वोरोनोई डायग्राम्स](https://wikipedia.org/wiki/Voronoi_diagram) म्हणून व्हिज्युअलाइझ केले जाऊ शकतात, ज्यामध्ये एक बिंदू (किंवा 'सीड') आणि त्याचा संबंधित प्रदेश समाविष्ट असतो.
+
+
+
+> [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' म्हणजे सेंट्रॉइड्सची संख्या निश्चित करावी लागेल. सुदैवाने, 'एल्बो पद्धत' '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)
+ ```
+
+ हा डेटा थोडा गोंधळलेला आहे: प्रत्येक स्तंभ बॉक्सप्लॉट म्हणून पाहिल्यास, तुम्हाला बाहेर पडणारे डेटा दिसतील.
+
+ 
+
+तुम्ही डेटासेटमधून बाहेर पडणारे डेटा काढून टाकू शकता, परंतु त्यामुळे डेटा खूपच कमी होईल.
+
+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)
+
+ # Predict the cluster for each data point
+
+ 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-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** असेल!
+
+ 
+
+## व्यायाम - क्लस्टर्स प्रदर्शित करा
+
+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)))
+ ```
+
+ या मॉडेलची अचूकता फारशी चांगली नाही आणि क्लस्टर्सचा आकार तुम्हाला का हे सांगतो.
+
+ 
+
+ हा डेटा खूप असंतुलित आहे, खूप कमी संबंधित आहे आणि स्तंभ मूल्यांमध्ये खूप जास्त फरक आहे ज्यामुळे चांगले क्लस्टर तयार होऊ शकत नाहीत. खरं तर, तयार होणारे क्लस्टर्स कदाचित आपण वर परिभाषित केलेल्या तीन शैली श्रेणींनी मोठ्या प्रमाणावर प्रभावित किंवा वाकवले जातात. हे एक शिकण्याचे प्रकरण होते!
+
+ Scikit-learn च्या दस्तऐवजांमध्ये, तुम्ही पाहू शकता की अशा मॉडेलमध्ये, ज्यामध्ये क्लस्टर्स फारसे चांगले परिभाषित नाहीत, 'व्हेरियन्स' समस्या आहे:
+
+ 
+ > 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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/30/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+K-Means सिम्युलेटर [जसे की हा](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/) पहा. तुम्ही या साधनाचा वापर नमुना डेटा बिंदू व्हिज्युअलाइझ करण्यासाठी आणि त्याचे सेंट्रॉइड्स निश्चित करण्यासाठी करू शकता. तुम्ही डेटाच्या यादृच्छिकतेत, क्लस्टर्सच्या संख्येत आणि सेंट्रॉइड्सच्या संख्येत संपादन करू शकता. यामुळे तुम्हाला डेटा कसा गटबद्ध केला जाऊ शकतो याची कल्पना मिळते का?
+
+तसेच, [Stanford कडून 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/mr/5-Clustering/2-K-Means/assignment.md b/translations/mr/5-Clustering/2-K-Means/assignment.md
new file mode 100644
index 000000000..e44649fbd
--- /dev/null
+++ b/translations/mr/5-Clustering/2-K-Means/assignment.md
@@ -0,0 +1,25 @@
+
+# वेगवेगळ्या क्लस्टरिंग पद्धती वापरून पहा
+
+## सूचना
+
+या धड्यात तुम्ही 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/mr/5-Clustering/2-K-Means/notebook.ipynb b/translations/mr/5-Clustering/2-K-Means/notebook.ipynb
new file mode 100644
index 000000000..5387f3efe
--- /dev/null
+++ b/translations/mr/5-Clustering/2-K-Means/notebook.ipynb
@@ -0,0 +1,229 @@
+{
+ "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-08-29T19:17:46+00:00",
+ "source_file": "5-Clustering/2-K-Means/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "source": [],
+ "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": [],
+ "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": "
"
+ },
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/5-Clustering/2-K-Means/solution/Julia/README.md b/translations/mr/5-Clustering/2-K-Means/solution/Julia/README.md
new file mode 100644
index 000000000..c93c9e53f
--- /dev/null
+++ b/translations/mr/5-Clustering/2-K-Means/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb b/translations/mr/5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb
new file mode 100644
index 000000000..5392cf26e
--- /dev/null
+++ b/translations/mr/5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb
@@ -0,0 +1,640 @@
+{
+ "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-08-29T19:20:23+00:00",
+ "source_file": "5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "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 Clustering](https://wikipedia.org/wiki/K-means_clustering) ही सिग्नल प्रोसेसिंगच्या क्षेत्रातून आलेली पद्धत आहे. ती डेटाच्या वैशिष्ट्यांमधील समानतेच्या आधारे `k क्लस्टर` मध्ये गट विभाजित आणि विभागण्यासाठी वापरली जाते.\n",
+ "\n",
+ "क्लस्टर [Voronoi diagrams](https://wikipedia.org/wiki/Voronoi_diagram) म्हणून व्हिज्युअलाइझ केले जाऊ शकतात, ज्यामध्ये एक बिंदू (किंवा 'बीज') आणि त्याचा संबंधित प्रदेश समाविष्ट असतो.\n",
+ "\n",
+ "
\n",
+ " \n",
+ " Jen Looper द्वारे माहितीग्राफिक\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` स्थापित करावे लागेल, म्हणजेच `सेंटरॉइड्स`ची संख्या. सुदैवाने, `एल्बो पद्धत` `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",
+ "हा डेटा किती स्वच्छ आहे? बॉक्स प्लॉट्स वापरून बाहेरच्या मूल्यांची तपासणी करूया. आपण अशा संख्यात्मक स्तंभांवर लक्ष केंद्रित करू जेथे बाहेरची मूल्ये कमी आहेत (जरी तुम्ही बाहेरची मूल्ये साफ करू शकता). बॉक्स प्लॉट्स डेटाचा श्रेणी दर्शवू शकतात आणि कोणते स्तंभ वापरायचे ते निवडण्यास मदत करतील. लक्षात घ्या, बॉक्स प्लॉट्स वैविध्य (variance) दाखवत नाहीत, जे चांगल्या क्लस्टर करण्यायोग्य डेटाचे एक महत्त्वाचे घटक आहे. कृपया अधिक वाचनासाठी [ही चर्चा](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": [
+ "आता आपण पाहू शकतो की हे डेटा थोडासा गोंधळलेला आहे: प्रत्येक स्तंभाचा बॉक्सप्लॉट म्हणून निरीक्षण केल्यावर, तुम्हाला बाहेरच्या मूल्यांचा अंदाज येईल. तुम्ही डेटासेटमधून ही बाहेरची मूल्ये काढून टाकू शकता, पण त्यामुळे डेटा खूपच कमी होईल.\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 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-Means क्लस्टरिंगमध्ये एक मूलभूत प्रश्न वारंवार विचारला जातो - जर वर्ग लेबल्स माहित नसतील, तर तुम्हाला तुमचा डेटा किती क्लस्टर्समध्ये विभाजित करायचा आहे हे कसे कळेल?\n",
+ "\n",
+ "याचा शोध घेण्याचा एक मार्ग म्हणजे डेटा नमुना वापरून `क्लस्टरिंग मॉडेल्सची मालिका तयार करणे` ज्यामध्ये क्लस्टर्सची संख्या क्रमाक्रमाने वाढवली जाते (उदा. 1-10 पर्यंत), आणि **Silhouette स्कोअर** सारख्या क्लस्टरिंग मेट्रिक्सचे मूल्यांकन करणे.\n",
+ "\n",
+ "चला *k* च्या वेगवेगळ्या मूल्यांसाठी क्लस्टरिंग अल्गोरिदमची गणना करून आणि **Within Cluster Sum of Squares** (WCSS) चे मूल्यांकन करून आदर्श क्लस्टर्सची संख्या निश्चित करूया. एकूण Within-Cluster Sum of Squares (WCSS) क्लस्टरिंगची सघनता मोजते आणि ते शक्य तितके कमी असावे अशी आपली इच्छा आहे, कारण कमी मूल्ये सूचित करतात की डेटा पॉइंट्स एकमेकांच्या जवळ आहेत.\n",
+ "\n",
+ "चला `k` च्या वेगवेगळ्या निवडींचा, 1 ते 10 पर्यंत, या क्लस्टरिंगवर होणारा परिणाम पाहूया.\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 मध्ये मोठी घट (म्हणजे अधिक *घनता*) दिसते जेव्हा क्लस्टर्सची संख्या एकापासून दोनपर्यंत वाढते, आणि दोन ते तीन क्लस्टर्सपर्यंत आणखी एक लक्षणीय घट दिसते. त्यानंतर, घट कमी ठळक होते, ज्यामुळे चार्टमध्ये सुमारे तीन क्लस्टर्सवर एक `elbow` 💪 तयार होते. हे सूचित करते की डेटा पॉइंट्सचे दोन ते तीन चांगल्या प्रकारे वेगळे क्लस्टर्स आहेत.\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 Clustering साठी योग्य नसावा. हा डेटा खूप असंतुलित आहे, फारसा संबंधित नाही आणि स्तंभांच्या मूल्यांमध्ये खूपच फरक असल्यामुळे क्लस्टरिंग चांगल्या प्रकारे होत नाही. खरं तर, तयार होणारे क्लस्टर्स कदाचित आपण वर परिभाषित केलेल्या तीन शैली श्रेणींनी मोठ्या प्रमाणावर प्रभावित किंवा वाकवले जात असतील.\n",
+ "\n",
+ "तरीही, हा एक चांगला शिकण्याचा अनुभव होता!\n",
+ "\n",
+ "Scikit-learn च्या दस्तऐवजांमध्ये, तुम्ही पाहू शकता की अशा प्रकारच्या मॉडेलमध्ये, जिथे क्लस्टर्स स्पष्टपणे वेगळे नाहीत, 'variance' समस्या असते:\n",
+ "\n",
+ "
\n",
+ " \n",
+ " Scikit-learn मधील माहितीपट\n",
+ "\n",
+ "\n",
+ "\n",
+ "## **Variance**\n",
+ "\n",
+ "Variance म्हणजे \"मध्यम मूल्यापासून चौरस फरकांचे सरासरी\" [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",
+ "> '[variance calculator](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' वापरून संकल्पना अधिक चांगल्या प्रकारे समजून घ्या.\n",
+ "\n",
+ "------------------------------------------------------------------------\n",
+ "\n",
+ "## **🚀Challenge**\n",
+ "\n",
+ "या नोटबुकसह काही वेळ घालवा आणि पॅरामीटर्स बदलून पहा. डेटा अधिक स्वच्छ करून (उदाहरणार्थ, बाह्य घटक काढून) मॉडेलची अचूकता सुधारू शकता का? तुम्ही दिलेल्या डेटा नमुन्यांना अधिक वजन देण्यासाठी वजन वापरू शकता. चांगले क्लस्टर्स तयार करण्यासाठी आणखी काय करू शकता?\n",
+ "\n",
+ "सूचक: तुमचा डेटा स्केल करण्याचा प्रयत्न करा. नोटबुकमध्ये टिप्पणी केलेला कोड आहे जो मानक स्केलिंग जोडतो, ज्यामुळे डेटा स्तंभ श्रेणीच्या बाबतीत एकमेकांशी अधिक जवळीक साधतात. तुम्हाला असे आढळेल की जरी सिल्हूट स्कोअर कमी होतो, तरीही एल्बो ग्राफमधील 'किंक' गुळगुळीत होतो. कारण डेटा स्केल न केल्याने कमी variance असलेल्या डेटाला अधिक वजन मिळते. या समस्येवर अधिक वाचा [येथे](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226).\n",
+ "\n",
+ "## [**Post-lecture quiz**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/30/)\n",
+ "\n",
+ "## **Review & Self Study**\n",
+ "\n",
+ "- K-Means Simulator [जसे की हा](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/) पाहा. तुम्ही या साधनाचा वापर नमुना डेटा पॉइंट्स व्हिज्युअलाइझ करण्यासाठी आणि त्याचे सेंटरॉइड्स ठरवण्यासाठी करू शकता. तुम्ही डेटाच्या randomness, क्लस्टर्सची संख्या आणि सेंटरॉइड्सची संख्या संपादित करू शकता. यामुळे तुम्हाला डेटा कसा गटबद्ध करता येतो याची कल्पना मिळते का?\n",
+ "\n",
+ "- [Stanford मधील 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 Business Analytics R Programming Guide\n",
+ "\n",
+ "- [K-means clustering with tidy data principles](https://www.tidymodels.org/learn/statistics/k-means/)\n",
+ "\n",
+ "## **Assignment**\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) यांना या मॉड्यूलची मूळ Python आवृत्ती तयार केल्याबद्दल ♥️\n",
+ "\n",
+ "[`Allison Horst`](https://twitter.com/allison_horst/) यांना R अधिक स्वागतार्ह आणि आकर्षक बनवणाऱ्या अप्रतिम चित्रण तयार केल्याबद्दल. तिच्या [gallery](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), Gold Microsoft Learn Student Ambassador.\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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/5-Clustering/2-K-Means/solution/notebook.ipynb b/translations/mr/5-Clustering/2-K-Means/solution/notebook.ipynb
new file mode 100644
index 000000000..c615ed4be
--- /dev/null
+++ b/translations/mr/5-Clustering/2-K-Means/solution/notebook.ipynb
@@ -0,0 +1,544 @@
+{
+ "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-08-29T19:18:14+00:00",
+ "source_file": "5-Clustering/2-K-Means/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "source": [],
+ "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": [],
+ "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": "
"
+ },
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/5-Clustering/README.md b/translations/mr/5-Clustering/README.md
new file mode 100644
index 000000000..d7a6a76c3
--- /dev/null
+++ b/translations/mr/5-Clustering/README.md
@@ -0,0 +1,42 @@
+
+# मशीन लर्निंगसाठी क्लस्टरिंग मॉडेल्स
+
+क्लस्टरिंग ही मशीन लर्निंगची एक कार्यप्रणाली आहे ज्यामध्ये एकमेकांसारखे दिसणारे ऑब्जेक्ट शोधले जातात आणि त्यांना क्लस्टर्स नावाच्या गटांमध्ये वर्गीकृत केले जाते. मशीन लर्निंगमधील इतर पद्धतींपेक्षा क्लस्टरिंग वेगळे आहे कारण गोष्टी आपोआप घडतात. खरं तर, हे सुपरवाइज्ड लर्निंगच्या अगदी उलट आहे असे म्हणणे योग्य ठरेल.
+
+## प्रादेशिक विषय: नायजेरियन प्रेक्षकांच्या संगीत आवडीसाठी क्लस्टरिंग मॉडेल्स 🎧
+
+नायजेरियाच्या विविध प्रेक्षकांची संगीताची आवडही विविध आहे. Spotify वरून डेटा स्क्रॅप करून (या [लेखातून प्रेरित](https://towardsdatascience.com/country-wise-visual-analysis-of-music-taste-using-spotify-api-seaborn-in-python-77f5b749b421)), नायजेरियामध्ये लोकप्रिय असलेल्या काही संगीतावर नजर टाकूया. या डेटासेटमध्ये विविध गाण्यांच्या 'danceability' स्कोअर, 'acousticness', loudness, 'speechiness', लोकप्रियता आणि ऊर्जा याबद्दलचा डेटा समाविष्ट आहे. या डेटामध्ये नमुने शोधणे खूपच मनोरंजक ठरेल!
+
+
+
+> 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. [K-Means क्लस्टरिंग](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) डेटासेट Kaggle वरून Spotify मधून स्क्रॅप केलेले आहे.
+
+K-Means च्या उपयुक्त उदाहरणांमध्ये या [iris exploration](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/mr/6-NLP/1-Introduction-to-NLP/README.md b/translations/mr/6-NLP/1-Introduction-to-NLP/README.md
new file mode 100644
index 000000000..3562c14cb
--- /dev/null
+++ b/translations/mr/6-NLP/1-Introduction-to-NLP/README.md
@@ -0,0 +1,179 @@
+
+# नैसर्गिक भाषा प्रक्रिया परिचय
+
+ही धडा *नैसर्गिक भाषा प्रक्रिया* या *संगणकीय भाषाशास्त्र* उपक्षेत्राचा थोडक्यात इतिहास आणि महत्त्वाच्या संकल्पनांचा आढावा घेते.
+
+## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/31/)
+
+## परिचय
+
+NLP, ज्याला सामान्यतः ओळखले जाते, हे मशीन लर्निंग उत्पादन सॉफ्टवेअरमध्ये लागू आणि वापरले गेलेल्या सर्वात प्रसिद्ध क्षेत्रांपैकी एक आहे.
+
+✅ तुम्ही दररोज वापरत असलेल्या सॉफ्टवेअरबद्दल विचार करू शकता ज्यामध्ये कदाचित काही NLP समाविष्ट आहे? तुमच्या शब्द प्रक्रिया प्रोग्राम्स किंवा तुम्ही नियमितपणे वापरत असलेल्या मोबाइल अॅप्सबद्दल काय?
+
+तुम्ही शिकाल:
+
+- **भाषांचा विचार**. भाषा कशा विकसित झाल्या आणि अभ्यासाचे प्रमुख क्षेत्र कोणते आहेत.
+- **परिभाषा आणि संकल्पना**. तुम्ही संगणक मजकूर कसा प्रक्रिया करतो याबद्दल परिभाषा आणि संकल्पना शिकाल, ज्यामध्ये पार्सिंग, व्याकरण, आणि नाम व क्रियापद ओळखणे समाविष्ट आहे. या धड्यात काही कोडिंग कार्ये आहेत आणि काही महत्त्वाच्या संकल्पना सादर केल्या जातात ज्या तुम्ही पुढील धड्यांमध्ये कोड करायला शिकाल.
+
+## संगणकीय भाषाशास्त्र
+
+संगणकीय भाषाशास्त्र हे अनेक दशकांपासून संशोधन आणि विकासाचे क्षेत्र आहे जे संगणक भाषांसोबत काम करू शकतात, समजू शकतात, भाषांतर करू शकतात आणि संवाद साधू शकतात याचा अभ्यास करते. नैसर्गिक भाषा प्रक्रिया (NLP) हे संबंधित क्षेत्र आहे जे संगणक 'नैसर्गिक', किंवा मानवी, भाषा कशा प्रक्रिया करू शकतात यावर लक्ष केंद्रित करते.
+
+### उदाहरण - फोन डिक्टेशन
+
+जर तुम्ही कधी फोनवर टाइप करण्याऐवजी बोलून सांगितले असेल किंवा व्हर्च्युअल सहाय्यकाला प्रश्न विचारला असेल, तर तुमचे भाषण मजकूर स्वरूपात रूपांतरित केले गेले आणि नंतर तुम्ही बोललेल्या भाषेतून प्रक्रिया किंवा *पार्स* केले गेले. ओळखलेले कीवर्ड नंतर फोन किंवा सहाय्यक समजू शकतील आणि त्यावर कृती करू शकतील अशा स्वरूपात प्रक्रिया केली गेली.
+
+
+> खऱ्या भाषाशास्त्रीय समजणे कठीण आहे! प्रतिमा [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) तपासा.
+
+## मशीनशी संवाद साधणे
+
+मानवी भाषा संगणकांना समजून घेण्याचा प्रयत्न करण्याचा इतिहास अनेक दशकांपूर्वीचा आहे, आणि नैसर्गिक भाषा प्रक्रिया विचार करणाऱ्या सर्वात पहिल्या शास्त्रज्ञांपैकी एक होता *Alan Turing*.
+
+### 'Turing चाचणी'
+
+जेव्हा Turing 1950 च्या दशकात *कृत्रिम बुद्धिमत्ता* संशोधन करत होता, तेव्हा त्याने विचार केला की मानवी आणि संगणकाला (टाइप केलेल्या पत्रव्यवहाराद्वारे) संभाषण चाचणी दिली जाऊ शकते जिथे संभाषणातील माणसाला खात्री नसते की ते दुसऱ्या माणसाशी बोलत आहेत की संगणकाशी.
+
+जर, विशिष्ट कालावधीनंतर, माणूस ठरवू शकला नाही की उत्तर संगणकाकडून आले आहे की नाही, तर संगणकाला *विचार करणे* म्हणता येईल का?
+
+### प्रेरणा - 'नक्कल खेळ'
+
+याची कल्पना एका पार्टी गेममधून आली ज्याला *नक्कल खेळ* म्हणतात जिथे एक चौकशी करणारा एका खोलीत एकटा असतो आणि त्याला दुसऱ्या खोलीतील दोन व्यक्तींपैकी कोण पुरुष आणि कोण स्त्री आहे हे ठरवायचे असते. चौकशी करणारा नोट्स पाठवू शकतो आणि त्याला असे प्रश्न विचारायचे असते जिथे लिखित उत्तरांमधून रहस्यमय व्यक्तीचे लिंग उघड होते. अर्थात, दुसऱ्या खोलीतील खेळाडू चौकशी करणाऱ्याला गोंधळात टाकण्याचा प्रयत्न करत असतात आणि प्रामाणिकपणे उत्तर देत असल्याचे भासवून प्रश्नांची उत्तरे देतात.
+
+### Eliza विकसित करणे
+
+1960 च्या दशकात MIT च्या एका शास्त्रज्ञाने *Joseph Weizenbaum* ने [*Eliza*](https://wikipedia.org/wiki/ELIZA) नावाचा संगणक 'थेरपिस्ट' विकसित केला जो मानवी प्रश्न विचारेल आणि त्यांच्या उत्तरांना समजून घेण्याचा भास देईल. तथापि, जरी Eliza वाक्य पार्स करू शकते आणि विशिष्ट व्याकरणात्मक रचना आणि कीवर्ड ओळखू शकते जेणेकरून योग्य उत्तर दिले जाऊ शकते, तरीही त्याला वाक्य *समजले* असे म्हणता येणार नाही. जर Eliza ला "**I am** sad" या स्वरूपाचे वाक्य सादर केले गेले तर ते वाक्याचे ताण बदलून आणि काही शब्द जोडून "How long have **you been** sad" असे उत्तर तयार करू शकते.
+
+यामुळे Eliza ला विधान समजले आणि पुढील प्रश्न विचारला असे वाटले, परंतु प्रत्यक्षात, ते ताण बदलत होते आणि काही शब्द जोडत होते. जर Eliza ला कीवर्ड ओळखता आला नाही ज्यासाठी त्याच्याकडे उत्तर होते, तर ते त्याऐवजी अनेक वेगवेगळ्या विधानांसाठी लागू होऊ शकणारे यादृच्छिक उत्तर देईल. Eliza ला सहजपणे फसवता येते, उदाहरणार्थ जर वापरकर्त्याने "**You are** a bicycle" असे लिहिले तर ते "How long have **I been** a bicycle?" असे उत्तर देईल, अधिक तर्कसंगत उत्तर देण्याऐवजी.
+
+[](https://youtu.be/RMK9AphfLco "Eliza सोबत संभाषण")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा Eliza च्या मूळ प्रोग्रामबद्दल व्हिडिओसाठी
+
+> टीप: तुम्ही [Eliza](https://cacm.acm.org/magazines/1966/1/13317-elizaa-computer-program-for-the-study-of-natural-language-communication-between-man-and-machine/abstract) चे मूळ वर्णन 1966 मध्ये प्रकाशित वाचू शकता जर तुमच्याकडे ACM खाते असेल. पर्यायाने, [wikipedia](https://wikipedia.org/wiki/ELIZA) वर Eliza बद्दल वाचा.
+
+## व्यायाम - मूलभूत संभाषणात्मक बॉट कोडिंग
+
+संभाषणात्मक बॉट, 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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/32/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+खाली दिलेल्या संदर्भांकडे पुढील वाचन संधी म्हणून पहा.
+
+### संदर्भ
+
+1. Schubert, Lenhart, "Computational Linguistics", *The Stanford Encyclopedia of Philosophy* (Spring 2020 Edition), Edward N. Zalta (ed.), URL = .
+2. Princeton University "About WordNet." [WordNet](https://wordnet.princeton.edu/). Princeton University. 2010.
+
+## असाइनमेंट
+
+[बॉट शोधा](assignment.md)
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/6-NLP/1-Introduction-to-NLP/assignment.md b/translations/mr/6-NLP/1-Introduction-to-NLP/assignment.md
new file mode 100644
index 000000000..0f1387137
--- /dev/null
+++ b/translations/mr/6-NLP/1-Introduction-to-NLP/assignment.md
@@ -0,0 +1,25 @@
+
+# बॉट शोधा
+
+## सूचना
+
+बॉट्स सर्वत्र आहेत. तुमचे काम: एक बॉट शोधा आणि त्याला स्वीकारा! तुम्हाला ते वेबसाइट्सवर, बँकिंग अॅप्लिकेशन्समध्ये, आणि फोनवर सापडतील, उदाहरणार्थ, जेव्हा तुम्ही आर्थिक सेवा कंपन्यांना सल्ल्यासाठी किंवा खात्याच्या माहितीसाठी कॉल करता. बॉटचे विश्लेषण करा आणि पाहा की तुम्ही त्याला गोंधळात टाकू शकता का. जर तुम्ही बॉटला गोंधळात टाकू शकत असाल, तर असे का झाले असे तुम्हाला वाटते? तुमच्या अनुभवाबद्दल एक छोटा लेख लिहा.
+
+## मूल्यांकन निकष
+
+| निकष | उत्कृष्ट | पुरेसे | सुधारणा आवश्यक |
+| --------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------ |
+| | एक पूर्ण पानाचा लेख लिहिला आहे, ज्यामध्ये बॉटची संभाव्य रचना स्पष्ट केली आहे आणि त्यासोबतचा तुमचा अनुभव मांडला आहे | लेख अपूर्ण आहे किंवा पुरेसा संशोधन केलेला नाही | लेख सादर केलेला नाही |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/6-NLP/2-Tasks/README.md b/translations/mr/6-NLP/2-Tasks/README.md
new file mode 100644
index 000000000..8f6b5ff35
--- /dev/null
+++ b/translations/mr/6-NLP/2-Tasks/README.md
@@ -0,0 +1,228 @@
+
+# सामान्य नैसर्गिक भाषा प्रक्रिया कार्ये आणि तंत्रे
+
+बहुतेक *नैसर्गिक भाषा प्रक्रिया* कार्यांसाठी, प्रक्रिया करायच्या मजकुराचे तुकडे करणे, त्याचे विश्लेषण करणे आणि परिणाम नियम व डेटासेटसह संग्रहित किंवा क्रॉस-रेफरन्स करणे आवश्यक असते. या कार्यांमुळे प्रोग्रामरला मजकुरातील _अर्थ_, _उद्देश_ किंवा फक्त शब्दांची _वारंवारता_ समजण्याची क्षमता मिळते.
+
+## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/33/)
+
+मजकुरावर प्रक्रिया करण्यासाठी वापरल्या जाणाऱ्या सामान्य तंत्रांचा शोध घेऊया. मशीन लर्निंगसह एकत्रितपणे, ही तंत्रे तुम्हाला मोठ्या प्रमाणात मजकुराचे कार्यक्षमतेने विश्लेषण करण्यात मदत करतात. मात्र, ML लागू करण्यापूर्वी, NLP तज्ञांना येणाऱ्या समस्यांचे समजून घेऊया.
+
+## NLP मध्ये सामान्य कार्ये
+
+तुम्ही काम करत असलेल्या मजकुराचे विश्लेषण करण्याचे वेगवेगळे मार्ग आहेत. तुम्ही काही कार्ये करू शकता आणि या कार्यांद्वारे तुम्हाला मजकुराचे आकलन होऊन निष्कर्ष काढता येतात. ही कार्ये सहसा एका क्रमाने केली जातात.
+
+### टोकनायझेशन
+
+बहुतेक NLP अल्गोरिदमने करायचे पहिले काम म्हणजे मजकुराचे टोकन किंवा शब्दांमध्ये विभाजन करणे. हे सोपे वाटत असले तरी, विरामचिन्हे आणि वेगवेगळ्या भाषांचे शब्द व वाक्य विभाजक विचारात घेणे कठीण होऊ शकते. तुम्हाला विभाजन निश्चित करण्यासाठी विविध पद्धती वापराव्या लागू शकतात.
+
+
+> **Pride and Prejudice** मधील एका वाक्याचे टोकनायझेशन. माहितीग्राफिक [Jen Looper](https://twitter.com/jenlooper) यांनी तयार केले.
+
+### एम्बेडिंग्ज
+
+[शब्द एम्बेडिंग्ज](https://wikipedia.org/wiki/Word_embedding) म्हणजे तुमच्या मजकुराच्या डेटाला संख्यात्मक स्वरूपात रूपांतरित करण्याचा एक मार्ग आहे. एम्बेडिंग्ज अशा प्रकारे केली जातात की समान अर्थ असलेले किंवा एकत्र वापरलेले शब्द एकत्र गटबद्ध होतात.
+
+
+> "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` मध्ये POS टॅगिंग असे असू शकते: fox = संज्ञा, jumped = क्रियापद.
+
+
+
+> **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**
+
+
+
+> एन-ग्राम मूल्य 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` दोन संज्ञा वाक्यांश आहेत: **quick red fox** आणि **lazy brown dog**.
+
+### भावना विश्लेषण
+
+वाक्य किंवा मजकुराचे विश्लेषण करून त्याची भावना, म्हणजेच *सकारात्मक* किंवा *नकारात्मक* कशी आहे हे ठरवता येते. भावना *ध्रुवता* आणि *वस्तुनिष्ठता/विषयवस्तु* यामध्ये मोजली जाते. ध्रुवता -1.0 ते 1.0 (नकारात्मक ते सकारात्मक) आणि 0.0 ते 1.0 (सर्वात वस्तुनिष्ठ ते सर्वात विषयवस्तु) मध्ये मोजली जाते.
+
+✅ नंतर तुम्ही शिकाल की भावना ठरवण्यासाठी मशीन लर्निंग वापरण्याचे वेगवेगळे मार्ग आहेत, पण एक मार्ग म्हणजे मानव तज्ञाने सकारात्मक किंवा नकारात्मक म्हणून वर्गीकृत केलेल्या शब्द आणि वाक्यांशांची यादी असणे आणि त्या मॉडेलला मजकुरावर लागू करणे. तुम्हाला काही परिस्थितीत हे कसे कार्य करेल आणि काही परिस्थितीत कमी कार्यक्षम असेल हे दिसते का?
+
+### शब्दरूप बदलणे
+
+शब्दरूप बदलणे तुम्हाला एखाद्या शब्दाचे एकवचनी किंवा अनेकवचनी रूप मिळविण्यास सक्षम करते.
+
+### लेमॅटायझेशन
+
+*लेमा* म्हणजे शब्दांचा मूळ किंवा मुख्य शब्द, उदाहरणार्थ *flew*, *flies*, *flying* यांचा लेमा म्हणजे क्रियापद *fly*.
+
+NLP संशोधकांसाठी उपयुक्त डेटाबेस उपलब्ध आहेत, विशेषतः:
+
+### वर्डनेट
+
+[वर्डनेट](https://wordnet.princeton.edu/) हा शब्दांचा, समानार्थी शब्दांचा, विरुद्धार्थी शब्दांचा आणि अनेक भाषांमधील प्रत्येक शब्दासाठी अनेक तपशीलांचा डेटाबेस आहे. भाषांतर, स्पेल चेकर्स किंवा कोणत्याही प्रकारचे भाषा टूल्स तयार करताना हे अत्यंत उपयुक्त आहे.
+
+## NLP लायब्ररी
+
+सुदैवाने, तुम्हाला ही सर्व तंत्रे स्वतः तयार करण्याची गरज नाही, कारण उत्कृष्ट Python लायब्ररी उपलब्ध आहेत ज्या नैसर्गिक भाषा प्रक्रिया किंवा मशीन लर्निंगमध्ये विशेष नसलेल्या विकसकांसाठी अधिक सुलभ बनवतात. पुढील धड्यांमध्ये याचे अधिक उदाहरणे समाविष्ट आहेत, पण येथे तुम्हाला पुढील कार्यासाठी मदत करणारी काही उपयुक्त उदाहरणे शिकायला मिळतील.
+
+### व्यायाम - `TextBlob` लायब्ररी वापरणे
+
+TextBlob नावाची लायब्ररी वापरूया कारण ती या प्रकारच्या कार्यांसाठी उपयुक्त API समाविष्ट करते. TextBlob "[NLTK](https://nltk.org) आणि [pattern](https://github.com/clips/pattern) च्या मजबूत आधारावर उभी आहे आणि दोघांसोबत चांगले कार्य करते." त्याच्या API मध्ये मोठ्या प्रमाणात ML समाविष्ट आहे.
+
+> टीप: TextBlob साठी एक उपयुक्त [Quick Start](https://textblob.readthedocs.io/en/dev/quickstart.html#quickstart) मार्गदर्शक उपलब्ध आहे जो अनुभवी Python विकसकांसाठी शिफारस केलेला आहे.
+
+संज्ञा वाक्यांश ओळखण्याचा प्रयत्न करताना, TextBlob संज्ञा वाक्यांश शोधण्यासाठी अनेक पर्याय ऑफर करते.
+
+1. `ConllExtractor` पाहा.
+
+ ```python
+ from textblob import TextBlob
+ from textblob.np_extractors import ConllExtractor
+ # import and create a Conll extractor to use later
+ extractor = ConllExtractor()
+
+ # later when you need a noun phrase extractor:
+ user_input = input("> ")
+ user_input_blob = TextBlob(user_input, np_extractor=extractor) # note non-default extractor specified
+ 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 म्हणजे Computational Natural Language Learning च्या 2000 परिषद. प्रत्येक वर्षी परिषदेत एक कठीण NLP समस्या सोडवण्यासाठी कार्यशाळा आयोजित केली जात असे, आणि 2000 मध्ये ती संज्ञा चंकिंग होती. एक मॉडेल Wall Street Journal वर प्रशिक्षित केले गेले, "sections 15-18 प्रशिक्षण डेटा म्हणून (211727 टोकन्स) आणि section 20 चाचणी डेटा म्हणून (47377 टोकन्स)." तुम्ही वापरलेल्या प्रक्रियांचा [इथे](https://www.clips.uantwerpen.be/conll2000/chunking/) आणि [परिणाम](https://ifarm.nl/erikt/research/np-chunking.html) पाहू शकता.
+
+### आव्हान - NLP सह तुमच्या बॉटमध्ये सुधारणा करणे
+
+मागील धड्यात तुम्ही एक साधा Q&A बॉट तयार केला. आता, तुम्ही Marvin ला थोडा अधिक सहानुभूतीपूर्ण बनवणार आहात, तुमच्या इनपुटचे विश्लेषण करून भावना ठरवणार आणि त्या भावनेशी जुळणारा प्रतिसाद देणार. तुम्हाला `noun_phrase` ओळखून त्या विषयावर अधिक इनपुट विचारावे लागेल.
+
+तुमच्या बॉटला अधिक चांगले संवाद साधण्यासाठी तयार करताना पायऱ्या:
+
+1. वापरकर्त्याला बॉटशी संवाद कसा साधायचा याबद्दल सूचना प्रिंट करा
+2. लूप सुरू करा
+ 1. वापरकर्ता इनपुट स्वीकारा
+ 2. वापरकर्त्याने exit विचारल्यास, exit करा
+ 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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/34/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+पुढील काही धड्यांमध्ये तुम्ही भावना विश्लेषणाबद्दल अधिक शिकाल. [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/mr/6-NLP/2-Tasks/assignment.md b/translations/mr/6-NLP/2-Tasks/assignment.md
new file mode 100644
index 000000000..0106908bf
--- /dev/null
+++ b/translations/mr/6-NLP/2-Tasks/assignment.md
@@ -0,0 +1,25 @@
+
+# बॉटला उत्तर देण्यास तयार करा
+
+## सूचना
+
+मागील काही धड्यांमध्ये, तुम्ही एक साधा बॉट प्रोग्राम केला ज्याच्याशी तुम्ही गप्पा मारू शकता. हा बॉट यादृच्छिक उत्तरं देतो जोपर्यंत तुम्ही 'bye' म्हणत नाही. तुम्ही उत्तरं थोडी कमी यादृच्छिक बनवू शकता का आणि विशिष्ट गोष्टी जसे 'का' किंवा 'कसे' म्हटल्यावर उत्तरं ट्रिगर करू शकता का? तुमचा बॉट विस्तारित करताना मशीन लर्निंगने हे काम कसे कमी श्रमदक्ष होऊ शकते याचा विचार करा. तुमची कामं सोपी करण्यासाठी तुम्ही 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/mr/6-NLP/3-Translation-Sentiment/README.md b/translations/mr/6-NLP/3-Translation-Sentiment/README.md
new file mode 100644
index 000000000..e3952f93e
--- /dev/null
+++ b/translations/mr/6-NLP/3-Translation-Sentiment/README.md
@@ -0,0 +1,200 @@
+
+# मशीन लर्निंगसह भाषांतर आणि भावना विश्लेषण
+
+मागील धड्यांमध्ये तुम्ही `TextBlob` वापरून एक साधा बॉट कसा तयार करायचा हे शिकले, जो ML च्या मदतीने नामफ्रासेस काढणे यासारखी मूलभूत NLP कामे करतो. संगणकीय भाषाशास्त्रातील आणखी एक महत्त्वाचे आव्हान म्हणजे एका भाषेतून दुसऱ्या भाषेत वाक्याचे अचूक _भाषांतर_ करणे.
+
+## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/35/)
+
+भाषांतर हे एक कठीण काम आहे, कारण जगात हजारो भाषा आहेत आणि प्रत्येक भाषेचे व्याकरणाचे नियम वेगळे असू शकतात. एक पद्धत म्हणजे एका भाषेच्या व्याकरणाच्या नियमांना (उदा. इंग्रजी) एका भाषाविरहित संरचनेत रूपांतरित करणे आणि नंतर ती दुसऱ्या भाषेत परत रूपांतरित करणे. या पद्धतीत खालील टप्पे असतात:
+
+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*) असेल, तर हे भाषांतरात उपयुक्त ठरू शकते.
+
+उदाहरणार्थ, *Pride and Prejudice* या जेन ऑस्टेनने 1813 मध्ये लिहिलेल्या प्रसिद्ध इंग्रजी कादंबरीचा विचार करा. जर तुम्ही ही कादंबरी इंग्रजीत आणि तिचे *फ्रेंच* भाषांतर वाचले, तर तुम्ही एका भाषेतील वाक्ये दुसऱ्या भाषेत *रूढीप्रमाणे* भाषांतरित झालेली ओळखू शकता. तुम्ही हे लगेचच करून पाहणार आहात.
+
+उदाहरणार्थ, इंग्रजी वाक्य `I have no money` चे शाब्दिक भाषांतर फ्रेंचमध्ये `Je n'ai pas de monnaie` असे होईल. "Monnaie" हा एक गोंधळात टाकणारा फ्रेंच शब्द आहे, कारण 'money' आणि 'monnaie' समानार्थी नाहीत. एक चांगले भाषांतर असेल `Je n'ai pas d'argent`, कारण ते अधिक चांगल्या प्रकारे व्यक्त करते की तुमच्याकडे पैसे नाहीत (तर 'monnaie' म्हणजे 'सुटे पैसे').
+
+
+
+> प्रतिमा [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 भाषांतरात इतके चांगले का आहे? कारण, 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' पेक्षा जास्त वेळा दिसतो).
+
+> ⚖️ **उदाहरण**: समजा तुम्ही एखाद्या राजकारण्याच्या कार्यालयात काम करता आणि काही नवीन कायद्यावर चर्चा होत आहे. नागरिक कार्यालयाला त्या कायद्याच्या समर्थनार्थ किंवा विरोधात ईमेल पाठवतात. समजा तुम्हाला त्या ईमेल्स वाचून दोन गटांमध्ये वर्गीकृत करायचे आहे - *साठी* आणि *विरुद्ध*. जर खूप ईमेल्स असतील, तर तुम्हाला सर्व वाचण्यात अडचण येईल. जर एखादा बॉट सर्व ईमेल्स वाचून त्यांचा अर्थ समजून घेतला आणि प्रत्येक ईमेल कोणत्या गटात आहे हे सांगितले, तर किती सोपे होईल ना?
+>
+> हे साध्य करण्यासाठी मशीन लर्निंगचा वापर करता येईल. तुम्ही मॉडेलला काही *विरुद्ध* ईमेल्स आणि काही *साठी* ईमेल्ससह प्रशिक्षण द्याल. मॉडेल काही शब्द आणि वाक्ये *विरुद्ध* किंवा *साठी* ईमेल्समध्ये जास्त वेळा दिसतात हे ओळखेल, *पण त्याला मजकूराचा अर्थ समजणार नाही*, फक्त विशिष्ट शब्द आणि पॅटर्न जास्त वेळा दिसतात हे ओळखेल. तुम्ही मॉडेलला अशा ईमेल्ससह चाचणी करू शकता, जे तुम्ही प्रशिक्षणासाठी वापरले नाहीत, आणि पाहू शकता की ते तुमच्यासारखेच निष्कर्ष काढते का. एकदा तुम्हाला मॉडेलच्या अचूकतेबद्दल खात्री पटली की, तुम्ही भविष्यातील ईमेल्स प्रक्रिया करू शकता, प्रत्येक ईमेल वाचण्याची गरज न पडता.
+
+✅ ही प्रक्रिया तुम्ही मागील धड्यांमध्ये वापरलेल्या प्रक्रियांसारखी वाटते का?
+
+## व्यायाम - भावनिक वाक्ये
+
+भावना *polarity* -1 ते 1 मध्ये मोजली जाते, म्हणजे -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` ठरवू शकता (तुम्हाला स्वतःचा भावना कॅल्क्युलेटर लिहायची गरज नाही) पुढील कार्यात.
+
+```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)
+```
+
+## आव्हान - भावना polarity तपासा
+
+तुमचे कार्य म्हणजे भावना polarity वापरून ठरवणे की *Pride and Prejudice* मध्ये पूर्णपणे सकारात्मक वाक्ये नकारात्मक वाक्यांपेक्षा जास्त आहेत का. या कार्यासाठी, तुम्ही गृहीत धरू शकता की 1 किंवा -1 चा polarity स्कोअर पूर्णपणे सकारात्मक किंवा नकारात्मक आहे.
+
+**पायऱ्या:**
+
+1. [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. शेवटी, सर्व सकारात्मक वाक्ये आणि नकारात्मक वाक्ये (वेगवेगळी) आणि त्यांची संख्या प्रिंट करा.
+
+येथे एक नमुना [solution](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb) आहे.
+
+✅ ज्ञान तपासणी
+
+1. भावना वाक्यात वापरलेल्या शब्दांवर आधारित आहे, पण कोडला *शब्द समजतात का*?
+2. तुम्हाला भावना 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 वाक्यांना पूर्णपणे सकारात्मक भावना दिली गेली, पण बारकाईने वाचल्यावर ती सकारात्मक वाक्ये नाहीत. भावना विश्लेषणाला ती सकारात्मक वाक्ये का वाटली?
+ * 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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/36/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+पाठ्यापासून भावना काढण्यासाठी अनेक पद्धती आहेत. या तंत्राचा उपयोग करणाऱ्या व्यावसायिक अनुप्रयोगांचा विचार करा. तसेच, हे कसे चुकू शकते याचाही विचार करा. भावना विश्लेषण करणाऱ्या प्रगत आणि एंटरप्राइझ-रेडी प्रणालींबद्दल अधिक वाचा, जसे की [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). वरील "Pride and Prejudice" वाक्ये काही तपासा आणि ती सूक्ष्मता ओळखू शकते का ते पाहा.
+
+## असाइनमेंट
+
+[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/mr/6-NLP/3-Translation-Sentiment/assignment.md b/translations/mr/6-NLP/3-Translation-Sentiment/assignment.md
new file mode 100644
index 000000000..6c78845f0
--- /dev/null
+++ b/translations/mr/6-NLP/3-Translation-Sentiment/assignment.md
@@ -0,0 +1,25 @@
+
+# काव्यात्मक परवाना
+
+## सूचना
+
+[या नोटबुकमध्ये](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/mr/6-NLP/3-Translation-Sentiment/solution/Julia/README.md b/translations/mr/6-NLP/3-Translation-Sentiment/solution/Julia/README.md
new file mode 100644
index 000000000..4bc735517
--- /dev/null
+++ b/translations/mr/6-NLP/3-Translation-Sentiment/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/6-NLP/3-Translation-Sentiment/solution/R/README.md b/translations/mr/6-NLP/3-Translation-Sentiment/solution/R/README.md
new file mode 100644
index 000000000..25754c6e2
--- /dev/null
+++ b/translations/mr/6-NLP/3-Translation-Sentiment/solution/R/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb b/translations/mr/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb
new file mode 100644
index 000000000..ca26e8f06
--- /dev/null
+++ b/translations/mr/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-08-29T19:47:18+00:00",
+ "source_file": "6-NLP/3-Translation-Sentiment/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/6-NLP/4-Hotel-Reviews-1/README.md b/translations/mr/6-NLP/4-Hotel-Reviews-1/README.md
new file mode 100644
index 000000000..bdab394ff
--- /dev/null
+++ b/translations/mr/6-NLP/4-Hotel-Reviews-1/README.md
@@ -0,0 +1,416 @@
+
+# हॉटेल पुनरावलोकनांसह भावना विश्लेषण - डेटाचे प्रक्रिया करणे
+
+या विभागात तुम्ही मागील धड्यांमधील तंत्रांचा वापर करून मोठ्या डेटासेटचे अन्वेषणात्मक डेटा विश्लेषण कराल. विविध स्तंभांच्या उपयुक्ततेची चांगली समज मिळाल्यानंतर, तुम्ही शिकाल:
+
+- अनावश्यक स्तंभ कसे काढून टाकायचे
+- विद्यमान स्तंभांवर आधारित नवीन डेटा कसा मोजायचा
+- अंतिम आव्हानासाठी परिणामी डेटासेट कसे जतन करायचे
+
+## [पूर्व-व्याख्यान क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/37/)
+
+### परिचय
+
+आतापर्यंत तुम्ही शिकले आहे की मजकूर डेटा संख्यात्मक डेटापेक्षा खूप वेगळा असतो. जर तो माणसाने लिहिलेला किंवा बोललेला मजकूर असेल, तर त्याचे विश्लेषण करून नमुने, वारंवारता, भावना आणि अर्थ शोधता येतो. हा धडा तुम्हाला एका वास्तविक डेटासेटमध्ये घेऊन जातो ज्यामध्ये एक वास्तविक आव्हान आहे: **[युरोपमधील 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* चा वापर करून तुम्ही हॉटेल स्थानांचे नकाशे तयार करू शकता (कदाचित नकारात्मक आणि सकारात्मक पुनरावलोकनांसाठी रंग कोडिंगसह)
+ * 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`
+ - हे शिफारस मॉडेलमध्ये एक घटक असू शकतो, उदाहरणार्थ, जर तुम्ही ठरवू शकला की शंभराहून अधिक पुनरावलोकने असलेले अधिक पुनरावलोकनकर्ते नकारात्मक होण्याची शक्यता जास्त आहे. तथापि, कोणत्याही विशिष्ट पुनरावलोकनाचा पुनरावलोकनकर्ता अद्वितीय कोडसह ओळखला जात नाही आणि म्हणूनच पुनरावलोकनांच्या संचाशी जोडला जाऊ शकत नाही. 30 पुनरावलोकनकर्त्यांकडे 100 किंवा अधिक पुनरावलोकने आहेत, परंतु हे शिफारस मॉडेलसाठी कसे उपयुक्त ठरू शकते हे पाहणे कठीण आहे.
+- `Reviewer_Nationality`
+ - काही लोकांना असे वाटू शकते की विशिष्ट राष्ट्रीयत्व सकारात्मक किंवा नकारात्मक पुनरावलोकन देण्याची अधिक शक्यता आहे. अशा अनुभवांवर आधारित मॉडेल तयार करताना सावधगिरी बाळगा. हे राष्ट्रीय (आणि कधीकधी वांशिक) रूढी आहेत, आणि प्रत्येक पुनरावलोकनकर्ता हा एक व्यक्ती होता ज्याने त्यांच्या अनुभवावर आधारित पुनरावलोकन लिहिले. त्यांचे पुनरावलोकन त्यांच्या मागील हॉटेल मुक्काम, प्रवासाचा अंतर, आणि त्यांच्या वैयक्तिक स्वभाव यासारख्या अनेक घटकांमधून फिल्टर केले गेले असू शकते. त्यांच्या राष्ट्रीयत्वामुळे पुनरावलोकन गुण मिळाले असे मानणे कठीण आहे.
+
+##### उदाहरणे
+
+| Average Score | Total Number Reviews | Reviewer Score | Negative Review | Positive Review | Tags |
+| -------------- | ---------------------- | ---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- |
+| 7.8 | 1945 | 2.5 | हे सध्या हॉटेल नाही तर बांधकाम साइट आहे. मला सकाळी लवकर आणि दिवसभर असह्य बांधकामाच्या आवाजाने त्रास झाला. मी खोली बदलण्याची विनंती केली, परंतु शांत खोली उपलब्ध नव्हती. परिस्थिती आणखी वाईट करण्यासाठी, माझ्याकडून जास्त शुल्क आकारले गेले. मी संध्याकाळी चेक आउट केले आणि योग्य बिल मिळाले. दुसऱ्या दिवशी, हॉटेलने माझ्या संमतीशिवाय जास्त शुल्क आकारले. हे एक भयंकर ठिकाण आहे. येथे बुकिंग करून स्वतःला शिक्षा करू नका. | काहीही नाही. भयंकर ठिकाण. दूर रहा. | व्यवसाय प्रवास, जोडपे, स्टँडर्ड डबल रूम, 2 रात्री मुक्काम |
+
+जसे तुम्ही पाहू शकता, या पाहुण्याचा हॉटेलमध्ये मुक्काम आनंददायक नव्हता. हॉटेलला 7.8 चा चांगला सरासरी गुण आणि 1945 पुनरावलोकने आहेत, परंतु या पुनरावलोकनकर्त्याने 2.5 गुण दिले आणि त्यांच्या नकारात्मक अनुभवाबद्दल 115 शब्द लिहिले. जर त्यांनी सकारात्मक पुनरावलोकन स्तंभात काहीही लिहिले नसते, तर तुम्ही गृहीत धरू शकता की काहीही सकारात्मक नव्हते, परंतु त्यांनी 7 शब्द लिहून इशारा दिला. जर आपण शब्दांची फक्त मोजणी केली, तर पुनरावलोकनकर्त्याच्या हेतूचा चुकीचा अर्थ लागू शकतो. आश्चर्यकारकपणे, त्यांचा 2.5 चा गुण गोंधळात टाकणारा आहे, कारण जर हॉटेलचा अनुभव इतका वाईट असेल, तर त्यांनी काही गुण का दिले? डेटासेटचे बारकाईने निरीक्षण केल्यास, तुम्हाला दिसेल की किमान गुण 2.5 आहेत, 0 नाही. जास्तीत जास्त गुण 10 आहेत.
+
+##### टॅग्स
+
+वर नमूद केल्याप्रमाणे, प्रथमदर्शनी, डेटाचे वर्गीकरण करण्यासाठी `Tags` वापरण्याची कल्पना योग्य वाटते. दुर्दैवाने, हे टॅग्स प्रमाणित नाहीत, म्हणजे एका हॉटेलमध्ये पर्याय *सिंगल रूम*, *ट्विन रूम*, आणि *डबल रूम* असू शकतात, तर दुसऱ्या हॉटेलमध्ये ते *डिलक्स सिंगल रूम*, *क्लासिक क्वीन रूम*, आणि *एक्झिक्युटिव्ह किंग रूम* असू शकतात. हे कदाचित समान असतील, परंतु इतक्या विविधता आहेत की निवड अशी होते:
+
+1. सर्व अटी एका मानकात बदलण्याचा प्रयत्न करा, जे खूप कठीण आहे, कारण प्रत्येक प्रकरणात रूपांतरण मार्ग स्पष्ट नाही (उदा. *क्लासिक सिंगल रूम* ला *सिंगल रूम* मध्ये नकाशा तयार करणे सोपे आहे, परंतु *सुपीरियर क्वीन रूम विथ कोर्टयार्ड गार्डन ऑर सिटी व्ह्यू* हे नकाशा तयार करणे खूप कठीण आहे)
+
+1. NLP दृष्टिकोन स्वीकारा आणि *सोलो*, *बिझनेस ट्रॅव्हलर*, किंवा *लहान मुलांसह कुटुंब* यासारख्या विशिष्ट अटींच्या वारंवारतेचे मोजमाप करा आणि ते शिफारस मॉडेलमध्ये समाविष्ट करा
+
+टॅग्स सहसा (पण नेहमीच नाहीत) एकाच फील्डमध्ये 5 ते 6 अल्पविरामाने विभक्त मूल्यांची यादी असते, जी *प्रवासाचा प्रकार*, *पाहुण्यांचा प्रकार*, *खोलीचा प्रकार*, *रात्रींची संख्या*, आणि *पुनरावलोकन सबमिट करण्यासाठी वापरलेले डिव्हाइस* यांना संरेखित करते. तथापि, काही पुनरावलोकनकर्ते प्रत्येक फील्ड भरत नाहीत (ते एक रिकामे ठेवू शकतात), त्यामुळे मूल्ये नेहमीच एका क्रमाने नसतात.
+
+उदाहरणार्थ, *गटाचा प्रकार* घ्या. `Tags` स्तंभातील या फील्डमध्ये 1025 अद्वितीय शक्यता आहेत, आणि दुर्दैवाने त्यापैकी काहीच गटाचा संदर्भ देतात (काही खोलीच्या प्रकाराशी संबंधित आहेत). जर तुम्ही फक्त कुटुंबाचा उल्लेख करणारे फिल्टर केले, तर परिणामांमध्ये अनेक *फॅमिली रूम* प्रकारचे परिणाम असतात. जर तुम्ही *with* हा शब्द समाविष्ट केला, म्हणजे *फॅमिली विथ* मूल्यांची मोजणी केली, तर परिणाम चांगले होतात, 515,000 परिणामांपैकी 80,000 हून अधिक परिणाम "लहान मुलांसह कुटुंब" किंवा "मोठ्या मुलांसह कुटुंब" या वाक्यांशांचा समावेश करतात.
+
+याचा अर्थ टॅग्स स्तंभ आपल्यासाठी पूर्णपणे निरुपयोगी नाही, परंतु तो उपयुक्त बनवण्यासाठी थोडे काम करावे लागेल.
+
+##### हॉटेलचा सरासरी गुण
+
+डेटासेटमध्ये काही विचित्रता किंवा विसंगती आहेत ज्या मला समजत नाहीत, परंतु त्या येथे स्पष्ट केल्या आहेत जेणेकरून तुम्ही तुमची मॉडेल तयार करताना त्यांची जाणीव ठेवाल. जर तुम्ही त्याचा उलगडा केला, तर कृपया चर्चेच्या विभागात आम्हाला कळवा!
+
+डेटासेटमध्ये सरासरी गुण आणि पुनरावलोकनांच्या संख्येशी संबंधित खालील स्तंभ आहेत:
+
+1. Hotel_Name
+2. Additional_Number_of_Scoring
+3. Average_Score
+4. Total_Number_of_Reviews
+5. Reviewer_Score
+
+या डेटासेटमधील सर्वाधिक पुनरावलोकन असलेले एकमेव हॉटेल *ब्रिटानिया इंटरनॅशनल हॉटेल कॅनरी व्हार्फ* आहे, ज्यामध्ये 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 पर्यंत वाढ
+या हॉटेल्सचा डेटा काही प्रमाणात अपवादात्मक असू शकतो, आणि बहुतेक मूल्ये जुळत असतील (पण काही कारणास्तव काही जुळत नाहीत), म्हणून आम्ही पुढे एक छोटा प्रोग्राम लिहिणार आहोत जो डेटासेटमधील मूल्ये तपासेल आणि योग्य वापर (किंवा गैरवापर) निश्चित करेल.
+
+> 🚨 एक महत्त्वाची सूचना
+>
+> या डेटासेटवर काम करताना तुम्ही कोड लिहाल जो मजकुरातून काहीतरी मोजेल, स्वतः मजकूर वाचण्याची किंवा विश्लेषण करण्याची गरज नसेल. हे NLP चे सार आहे, मानवी हस्तक्षेपाशिवाय अर्थ किंवा भावना समजून घेणे. मात्र, काही नकारात्मक पुनरावलोकने वाचण्याची शक्यता आहे. मी तुम्हाला ते वाचू नका असे सुचवतो, कारण त्याची गरज नाही. काही पुनरावलोकने मूर्खपणाची किंवा अप्रासंगिक असू शकतात, जसे की "हवामान चांगले नव्हते", जे हॉटेलच्या किंवा कोणाच्याही नियंत्रणाबाहेर आहे. पण काही पुनरावलोकनांमध्ये गडद बाजू असते. कधी कधी नकारात्मक पुनरावलोकने वांशिक, लैंगिक किंवा वयावर आधारित असतात. हे दुर्दैवी आहे पण सार्वजनिक वेबसाइटवरून स्क्रॅप केलेल्या डेटासेटमध्ये अपेक्षित आहे. काही पुनरावलोकक असे पुनरावलोकने देतात जी तुम्हाला अप्रिय, अस्वस्थ किंवा त्रासदायक वाटू शकतात. कोडला भावना मोजू द्या, स्वतः वाचून त्रास होऊ नये. असे म्हणता येईल की अशा गोष्टी लिहिणारे अल्पसंख्याक आहेत, पण ते अस्तित्वात आहेत.
+
+## व्यायाम - डेटा अन्वेषण
+### डेटा लोड करा
+
+डेटा व्हिज्युअली तपासणे पुरेसे झाले, आता तुम्ही काही कोड लिहाल आणि उत्तर मिळवाल! या विभागात pandas लायब्ररीचा वापर केला जातो. तुमचे पहिले काम म्हणजे CSV डेटा लोड आणि वाचण्याची खात्री करणे. pandas लायब्ररीकडे एक जलद CSV लोडर आहे, आणि परिणाम एका dataframe मध्ये ठेवला जातो, जसे मागील धड्यांमध्ये पाहिले आहे. आपण लोड करत असलेला CSV अर्धा मिलियन ओळींचा आहे, पण फक्त 17 स्तंभ आहेत. pandas तुम्हाला dataframe सह संवाद साधण्यासाठी अनेक शक्तिशाली मार्ग देते, ज्यामध्ये प्रत्येक ओळीवर ऑपरेशन्स करण्याची क्षमता आहे.
+
+या धड्याच्या पुढील भागात कोडचे तुकडे आणि कोडचे स्पष्टीकरण तसेच परिणामांचा अर्थ काय आहे यावर चर्चा असेल. तुमच्या कोडसाठी समाविष्ट _notebook.ipynb_ वापरा.
+
+चला डेटा फाइल लोड करण्यापासून सुरुवात करूया:
+
+```python
+# Load the hotel reviews from CSV
+import pandas as pd
+import time
+# importing time so the start and end time can be used to calculate file loading time
+print("Loading data file now, this could take a while depending on file size")
+start = time.time()
+# df is 'DataFrame' - make sure you downloaded the file to the data folder
+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. डेटासेटमधील प्रत्येक हॉटेलसाठी पुनरावलोकक स्कोअरचे सरासरी मिळवून सरासरी स्कोअर काढता येतो. तुमच्या डेटा फ्रेममध्ये `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() creates a Series object that has index and values in this case, the country and the frequency they occur in reviewer nationality
+ nationality_freq = df["Reviewer_Nationality"].value_counts()
+ print("There are " + str(nationality_freq.size) + " different nationalities")
+ # print first and last rows of the Series. Change to nationality_freq.to_string() to print all of the data
+ 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.")
+ # Notice there is a leading space on the values, strip() removes that for printing
+ # What is the top 10 most common nationalities and their frequencies?
+ 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
+ # What was the most frequently reviewed hotel for the top 10 nationalities
+ # Normally with pandas you will avoid an explicit loop, but wanted to show creating a new dataframe using criteria (don't do this with large amounts of data because it could be very slow)
+ for nat in nationality_freq[:10].index:
+ # First, extract all the rows that match the criteria into a new dataframe
+ nat_df = df[df["Reviewer_Nationality"] == nat]
+ # Now get the hotel freq
+ 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
+ # First create a new dataframe based on the old one, removing the uneeded columns
+ 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)
+
+ # Group the rows by Hotel_Name, count them and put the result in a new column Total_Reviews_Found
+ hotel_freq_df['Total_Reviews_Found'] = hotel_freq_df.groupby('Hotel_Name').transform('count')
+
+ # Get rid of all the duplicated rows
+ 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. डेटासेटमधील प्रत्येक हॉटेलसाठी पुनरावलोकक स्कोअरचे सरासरी मिळवून सरासरी स्कोअर काढता येतो. तुमच्या डेटा फ्रेममध्ये `Calc_Average_Score` नावाचा नवीन स्तंभ जोडा ज्यामध्ये ती गणना केलेली सरासरी असेल. `Hotel_Name`, `Average_Score`, आणि `Calc_Average_Score` स्तंभ प्रिंट करा.
+
+ ```python
+ # define a function that takes a row and performs some calculation with it
+ def get_difference_review_avg(row):
+ return row["Average_Score"] - row["Calc_Average_Score"]
+
+ # 'mean' is mathematical word for 'average'
+ df['Calc_Average_Score'] = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1)
+
+ # Add a new column with the difference between the two average scores
+ df["Average_Score_Difference"] = df.apply(get_difference_review_avg, axis = 1)
+
+ # Create a df without all the duplicates of Hotel_Name (so only 1 row per hotel)
+ review_scores_df = df.drop_duplicates(subset = ["Hotel_Name"])
+
+ # Sort the dataframe to find the lowest and highest average score difference
+ 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 हॉटेलमध्ये स्कोअरचा फरक 1 पेक्षा जास्त आहे, याचा अर्थ आम्ही फरक दुर्लक्षित करू शकतो आणि गणना केलेला सरासरी स्कोअर वापरू शकतो.
+
+6. `Negative_Review` स्तंभात "No Negative" मूल्य असलेल्या किती ओळी आहेत ते मोजा आणि प्रिंट करा.
+
+7. `Positive_Review` स्तंभात "No Positive" मूल्य असलेल्या किती ओळी आहेत ते मोजा आणि प्रिंट करा.
+
+8. `Positive_Review` स्तंभात "No Positive" **आणि** `Negative_Review` स्तंभात "No Negative" मूल्य असलेल्या किती ओळी आहेत ते मोजा आणि प्रिंट करा.
+
+ ```python
+ # with lambdas:
+ 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
+ # without lambdas (using a mixture of notations to show you can use both)
+ 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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/38/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+[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/mr/6-NLP/4-Hotel-Reviews-1/assignment.md b/translations/mr/6-NLP/4-Hotel-Reviews-1/assignment.md
new file mode 100644
index 000000000..eb007b1b9
--- /dev/null
+++ b/translations/mr/6-NLP/4-Hotel-Reviews-1/assignment.md
@@ -0,0 +1,19 @@
+
+# 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/mr/6-NLP/4-Hotel-Reviews-1/notebook.ipynb b/translations/mr/6-NLP/4-Hotel-Reviews-1/notebook.ipynb
new file mode 100644
index 000000000..e69de29bb
diff --git a/translations/mr/6-NLP/4-Hotel-Reviews-1/solution/Julia/README.md b/translations/mr/6-NLP/4-Hotel-Reviews-1/solution/Julia/README.md
new file mode 100644
index 000000000..fca84b9eb
--- /dev/null
+++ b/translations/mr/6-NLP/4-Hotel-Reviews-1/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/6-NLP/4-Hotel-Reviews-1/solution/R/README.md b/translations/mr/6-NLP/4-Hotel-Reviews-1/solution/R/README.md
new file mode 100644
index 000000000..cf6c5b6f3
--- /dev/null
+++ b/translations/mr/6-NLP/4-Hotel-Reviews-1/solution/R/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb b/translations/mr/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb
new file mode 100644
index 000000000..82fcdcecb
--- /dev/null
+++ b/translations/mr/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-08-29T19:47:08+00:00",
+ "source_file": "6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/6-NLP/5-Hotel-Reviews-2/README.md b/translations/mr/6-NLP/5-Hotel-Reviews-2/README.md
new file mode 100644
index 000000000..06c2545a2
--- /dev/null
+++ b/translations/mr/6-NLP/5-Hotel-Reviews-2/README.md
@@ -0,0 +1,388 @@
+
+# हॉटेल पुनरावलोकनांसह भावना विश्लेषण
+
+आता तुम्ही डेटासेटचा सविस्तर अभ्यास केला आहे, आता स्तंभ फिल्टर करण्याची आणि हॉटेल्सबद्दल नवीन अंतर्दृष्टी मिळवण्यासाठी डेटासेटवर NLP तंत्र वापरण्याची वेळ आली आहे.
+## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/39/)
+
+### फिल्टरिंग आणि भावना विश्लेषण प्रक्रिया
+
+तुम्ही कदाचित लक्षात घेतले असेल की डेटासेटमध्ये काही समस्या आहेत. काही स्तंभ निरुपयोगी माहितीने भरलेले आहेत, तर काही चुकीचे वाटतात. जर ते योग्य असतील, तरीही ते कसे मोजले गेले हे अस्पष्ट आहे, आणि तुमच्या स्वतःच्या गणनांद्वारे उत्तरांची स्वतंत्रपणे पडताळणी करता येत नाही.
+
+## व्यायाम: डेटा प्रक्रिया थोडी अधिक
+
+डेटा थोडा अधिक स्वच्छ करा. अशा स्तंभांची भर घाला जे नंतर उपयुक्त ठरतील, इतर स्तंभांमधील मूल्ये बदला आणि काही स्तंभ पूर्णपणे काढून टाका.
+
+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"
+
+ # Replace all the addresses with a shortened, more useful form
+ df["Hotel_Address"] = df.apply(replace_address, axis = 1)
+ # The sum of the value_counts() should add up to the total number of reviews
+ 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` काढा
+
+ 1. `Total_Number_of_Reviews` त्या हॉटेलसाठी डेटासेटमध्ये प्रत्यक्षात असलेल्या पुनरावलोकनांच्या एकूण संख्येसह बदला
+
+ 1. `Average_Score` आमच्याच गणनेनुसार बदला
+
+ ```python
+ # Drop `Additional_Number_of_Scoring`
+ df.drop(["Additional_Number_of_Scoring"], axis = 1, inplace=True)
+ # Replace `Total_Number_of_Reviews` and `Average_Score` with our own calculated values
+ 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 प्रकारचे टॅग ठेवा आणि इतर काढा**.
+
+प्रथम, तुम्हाला टॅग्स मोजायचे नाहीत जोपर्यंत ते चांगल्या स्वरूपात नसतील, त्यामुळे चौकोनी कंस आणि उद्धरण काढणे आवश्यक आहे. तुम्ही हे अनेक प्रकारे करू शकता, परंतु तुम्हाला सर्वात जलद पद्धत हवी आहे कारण खूप डेटा प्रक्रिया करणे वेळखाऊ ठरू शकते. सुदैवाने, पॅंडासमध्ये प्रत्येक चरण करण्याचा सोपा मार्ग आहे.
+
+```Python
+# Remove opening and closing brackets
+df.Tags = df.Tags.str.strip("[']")
+# remove all quotes too
+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 notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) मध्ये आहे.
+
+अंतिम टप्पा म्हणजे प्रत्येक टॅगसाठी नवीन स्तंभ तयार करणे. मग, प्रत्येक पुनरावलोकन ओळीसाठी, जर `Tag` स्तंभ नवीन स्तंभांपैकी एखाद्या स्तंभाशी जुळत असेल, तर 1 जोडा, अन्यथा 0 जोडा. अंतिम परिणाम असा असेल की किती पुनरावलोकनकर्त्यांनी हॉटेल निवडले (एकत्रितपणे) व्यवसाय विरुद्ध विश्रांतीसाठी, किंवा पाळीव प्राणी आणण्यासाठी, आणि हॉटेलची शिफारस करताना ही उपयुक्त माहिती असेल.
+
+```python
+# Process the Tags into new columns
+# The file Hotel_Reviews_Tags.py, identifies the most important tags
+# Leisure trip, Couple, Solo traveler, Business trip, Group combined with Travelers with friends,
+# Family with young children, Family with older children, With a pet
+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)
+
+# Saving new data file with calculated columns
+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')
+
+# Load the filtered hotel reviews from CSV
+df = pd.read_csv('../../data/Hotel_Reviews_Filtered.csv')
+
+# You code will be added here
+
+
+# Finally remember to save the hotel reviews with new NLP data added
+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
+
+# Load the hotel reviews from CSV
+df = pd.read_csv("../../data/Hotel_Reviews_Filtered.csv")
+
+# Remove stop words - can be slow for a lot of text!
+# Ryan Han (ryanxjhan on Kaggle) has a great post measuring performance of different stop words removal approaches
+# https://www.kaggle.com/ryanxjhan/fast-stop-words-removal # using the approach that Ryan recommends
+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
+
+# Remove the stop words from both columns
+df.Negative_Review = df.Negative_Review.apply(remove_stopwords)
+df.Positive_Review = df.Positive_Review.apply(remove_stopwords)
+```
+
+### भावना विश्लेषण करणे
+आता तुम्हाला नकारात्मक आणि सकारात्मक पुनरावलोकन स्तंभांसाठी भावना विश्लेषणाची गणना करायची आहे आणि निकाल दोन नवीन स्तंभांमध्ये संग्रहित करायचा आहे. भावना विश्लेषणाची चाचणी म्हणजे तीच भावना पुनरावलोकनासाठी पुनरावलोकनकर्त्याच्या स्कोअरशी तुलना करणे. उदाहरणार्थ, जर भावना विश्लेषकाला वाटले की नकारात्मक पुनरावलोकनाची भावना 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
+
+# Create the vader sentiment analyser (there are others in NLTK you can try too)
+vader_sentiment = SentimentIntensityAnalyzer()
+# 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.
+
+# There are 3 possibilities of input for a review:
+# It could be "No Negative", in which case, return 0
+# It could be "No Positive", in which case, return 0
+# It could be a review, in which case calculate the sentiment
+def calc_sentiment(review):
+ if review == "No Negative" or review == "No Positive":
+ return 0
+ return vader_sentiment.polarity_scores(review)["compound"]
+```
+
+तुमच्या प्रोग्राममध्ये जेव्हा तुम्ही भावना मोजण्यासाठी तयार असाल, तेव्हा तुम्ही प्रत्येक पुनरावलोकनावर खालीलप्रमाणे लागू करू शकता:
+
+```python
+# Add a negative sentiment and positive sentiment column
+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
+# Reorder the columns (This is cosmetic, but to make it easier to explore the data later)
+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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/40/)
+
+## चॅलेंज
+
+आता तुमचं डेटासेट भावना विश्लेषणासाठी तयार आहे, तुम्ही या अभ्यासक्रमात शिकलेल्या रणनीती (क्लस्टरिंग, कदाचित?) वापरून भावना संबंधित नमुने शोधू शकता का ते पाहा.
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+[हा Learn मॉड्यूल](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/mr/6-NLP/5-Hotel-Reviews-2/assignment.md b/translations/mr/6-NLP/5-Hotel-Reviews-2/assignment.md
new file mode 100644
index 000000000..13d28b1e7
--- /dev/null
+++ b/translations/mr/6-NLP/5-Hotel-Reviews-2/assignment.md
@@ -0,0 +1,25 @@
+
+# वेगळ्या डेटासेटचा प्रयत्न करा
+
+## सूचना
+
+आता तुम्ही NLTK चा वापर करून मजकूराला भावना कशी जोडायची हे शिकला आहात, तर वेगळ्या डेटासेटचा प्रयत्न करा. कदाचित तुम्हाला त्याभोवती काही डेटा प्रक्रिया करावी लागेल, त्यामुळे एक नोटबुक तयार करा आणि तुमच्या विचार प्रक्रियेचे दस्तऐवजीकरण करा. तुम्हाला काय सापडते?
+
+## मूल्यांकन निकष
+
+| निकष | उत्कृष्ट | समाधानकारक | सुधारणा आवश्यक |
+| ---------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ----------------------- |
+| | एक संपूर्ण नोटबुक आणि डेटासेट सादर केले गेले आहे, ज्यामध्ये भावना कशी जोडली जाते हे स्पष्ट करणाऱ्या चांगल्या टिपण्या आहेत | नोटबुकमध्ये चांगल्या स्पष्टीकरणांचा अभाव आहे | नोटबुकमध्ये त्रुटी आहेत |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/6-NLP/5-Hotel-Reviews-2/notebook.ipynb b/translations/mr/6-NLP/5-Hotel-Reviews-2/notebook.ipynb
new file mode 100644
index 000000000..e69de29bb
diff --git a/translations/mr/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb b/translations/mr/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb
new file mode 100644
index 000000000..cba152bd6
--- /dev/null
+++ b/translations/mr/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-08-29T19:47:27+00:00",
+ "source_file": "6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb b/translations/mr/6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb
new file mode 100644
index 000000000..fec19978c
--- /dev/null
+++ b/translations/mr/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-08-29T19:47:38+00:00",
+ "source_file": "6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb b/translations/mr/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb
new file mode 100644
index 000000000..441a49441
--- /dev/null
+++ b/translations/mr/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-08-29T19:47:47+00:00",
+ "source_file": "6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md b/translations/mr/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md
new file mode 100644
index 000000000..6739d79dc
--- /dev/null
+++ b/translations/mr/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/6-NLP/5-Hotel-Reviews-2/solution/R/README.md b/translations/mr/6-NLP/5-Hotel-Reviews-2/solution/R/README.md
new file mode 100644
index 000000000..70f82b7a3
--- /dev/null
+++ b/translations/mr/6-NLP/5-Hotel-Reviews-2/solution/R/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/6-NLP/README.md b/translations/mr/6-NLP/README.md
new file mode 100644
index 000000000..3c9bc1e14
--- /dev/null
+++ b/translations/mr/6-NLP/README.md
@@ -0,0 +1,38 @@
+
+# नैसर्गिक भाषा प्रक्रिया सुरू करणे
+
+नैसर्गिक भाषा प्रक्रिया (NLP) म्हणजे संगणक प्रोग्रामची मानवी भाषा समजून घेण्याची क्षमता, जशी ती बोलली आणि लिहिली जाते -- याला नैसर्गिक भाषा म्हणतात. ही कृत्रिम बुद्धिमत्ता (AI) चा एक घटक आहे. NLP चा इतिहास ५० वर्षांहून अधिक जुना आहे आणि त्याची मुळे भाषाशास्त्राच्या क्षेत्रात आहेत. हे संपूर्ण क्षेत्र मशीनला मानवी भाषा समजून घेण्यास आणि प्रक्रिया करण्यास मदत करण्यासाठी समर्पित आहे. याचा वापर मग स्पेल चेक किंवा मशीन ट्रान्सलेशनसारखी कामे करण्यासाठी केला जाऊ शकतो. याचा वैद्यकीय संशोधन, सर्च इंजिन्स आणि बिझनेस इंटेलिजन्स यांसारख्या अनेक क्षेत्रांमध्ये विविध प्रकारे उपयोग होतो.
+
+## प्रादेशिक विषय: युरोपियन भाषा आणि साहित्य आणि युरोपमधील रोमँटिक हॉटेल्स ❤️
+
+या अभ्यासक्रमाच्या या विभागात, तुम्हाला मशीन लर्निंगच्या सर्वात व्यापक उपयोगांपैकी एकाची ओळख करून दिली जाईल: नैसर्गिक भाषा प्रक्रिया (NLP). संगणकीय भाषाशास्त्रापासून प्रेरित, कृत्रिम बुद्धिमत्तेची ही श्रेणी मानवी आणि मशीन यांच्यातील संवादासाठी आवाज किंवा मजकूराच्या माध्यमातून पूल तयार करते.
+
+या धड्यांमध्ये आपण NLP चे मूलभूत तत्त्व शिकू, जिथे लहान संवादात्मक बॉट्स तयार करून मशीन लर्निंग कसे या संवादांना अधिकाधिक 'स्मार्ट' बनवते हे समजून घेऊ. तुम्ही भूतकाळात प्रवास कराल, जेन ऑस्टेनच्या १८१३ मध्ये प्रकाशित झालेल्या **Pride and Prejudice** या क्लासिक कादंबरीतील एलिझाबेथ बेनेट आणि मिस्टर डार्सी यांच्याशी संवाद साधाल. त्यानंतर, युरोपमधील हॉटेल पुनरावलोकनांद्वारे भावना विश्लेषण शिकून तुमचे ज्ञान वाढवाल.
+
+
+> फोटो 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/mr/6-NLP/data/README.md b/translations/mr/6-NLP/data/README.md
new file mode 100644
index 000000000..8abab7907
--- /dev/null
+++ b/translations/mr/6-NLP/data/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/7-TimeSeries/1-Introduction/README.md b/translations/mr/7-TimeSeries/1-Introduction/README.md
new file mode 100644
index 000000000..0c0a4f33a
--- /dev/null
+++ b/translations/mr/7-TimeSeries/1-Introduction/README.md
@@ -0,0 +1,199 @@
+
+# टाइम सिरीज अंदाजाची ओळख
+
+
+
+> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+या धड्यात आणि पुढील धड्यात तुम्ही टाइम सिरीज अंदाजाबद्दल थोडं शिकाल, जे मशीन लर्निंग वैज्ञानिकांच्या कौशल्यात एक महत्त्वाचा आणि उपयुक्त भाग आहे, पण इतर विषयांइतकं प्रसिद्ध नाही. टाइम सिरीज अंदाज म्हणजे एक प्रकारचा 'क्रिस्टल बॉल': एखाद्या व्हेरिएबलच्या (जसे की किंमत) मागील कामगिरीच्या आधारे, तुम्ही त्याची भविष्यातील संभाव्य किंमत अंदाज करू शकता.
+
+[](https://youtu.be/cBojo1hsHiI "टाइम सिरीज अंदाजाची ओळख")
+
+> 🎥 टाइम सिरीज अंदाजाबद्दल व्हिडिओ पाहण्यासाठी वरील प्रतिमेवर क्लिक करा
+
+## [पूर्व-व्याख्यान प्रश्नमंजूषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/41/)
+
+किंमती, इन्व्हेंटरी आणि पुरवठा साखळी समस्यांवर थेट उपयोग असल्यामुळे हे क्षेत्र व्यवसायासाठी उपयुक्त आणि मनोरंजक आहे. जरी भविष्यातील कामगिरी अधिक चांगल्या प्रकारे अंदाज करण्यासाठी डीप लर्निंग तंत्र वापरण्यास सुरुवात झाली असली तरी, टाइम सिरीज अंदाज अजूनही पारंपरिक मशीन लर्निंग तंत्रांनी खूप प्रभावित आहे.
+
+> पेन स्टेटचा उपयुक्त टाइम सिरीज अभ्यासक्रम [येथे](https://online.stat.psu.edu/stat510/lesson/1) सापडतो.
+
+## ओळख
+
+समजा तुम्ही स्मार्ट पार्किंग मीटरचा एक संच व्यवस्थापित करता, जो वेळोवेळी किती वेळा वापरला जातो आणि किती वेळासाठी याचा डेटा प्रदान करतो.
+
+> मीटरच्या मागील कामगिरीच्या आधारे, पुरवठा आणि मागणीच्या नियमांनुसार त्याची भविष्यातील किंमत अंदाज करता येईल का?
+
+तुमचं लक्ष्य साध्य करण्यासाठी कधी कृती करायची हे अचूकपणे अंदाज करणं हे एक आव्हान आहे, ज्यावर टाइम सिरीज अंदाजाद्वारे काम करता येईल. व्यस्त वेळेत पार्किंग स्पॉट शोधत असलेल्या लोकांना जास्त शुल्क आकारणं त्यांना आनंदी करणार नाही, पण रस्ते स्वच्छ करण्यासाठी महसूल निर्माण करण्याचा हा एक खात्रीशीर मार्ग असेल!
+
+चला, टाइम सिरीज अल्गोरिदमच्या काही प्रकारांचा अभ्यास करूया आणि डेटा स्वच्छ आणि तयार करण्यासाठी एक नोटबुक सुरू करूया. तुम्ही विश्लेषण करणार असलेला डेटा GEFCom2014 अंदाज स्पर्धेतून घेतला आहे. यात 2012 ते 2014 दरम्यान 3 वर्षांच्या तासागणिक वीज वापर आणि तापमान मूल्यांचा समावेश आहे. वीज वापर आणि तापमानाच्या ऐतिहासिक पॅटर्न्सच्या आधारे, तुम्ही वीज वापराचे भविष्यातील मूल्य अंदाज करू शकता.
+
+या उदाहरणात, तुम्ही फक्त ऐतिहासिक वीज वापर डेटा वापरून एक वेळ पायरी पुढे अंदाज कसा करायचा ते शिकाल. मात्र, सुरुवात करण्यापूर्वी, पडद्यामागे काय चाललं आहे ते समजून घेणं उपयुक्त ठरेल.
+
+## काही संज्ञा
+
+'टाइम सिरीज' हा शब्द ऐकताना, तुम्हाला त्याचा वेगवेगळ्या संदर्भांमध्ये उपयोग समजून घेणं आवश्यक आहे.
+
+🎓 **टाइम सिरीज**
+
+गणितात, "टाइम सिरीज म्हणजे वेळेच्या क्रमाने अनुक्रमित (किंवा सूचीबद्ध किंवा ग्राफ केलेले) डेटा पॉइंट्सची मालिका. सर्वसामान्यपणे, टाइम सिरीज म्हणजे वेळेच्या समान अंतरावर घेतलेला अनुक्रम." टाइम सिरीजचं एक उदाहरण म्हणजे [Dow Jones Industrial Average](https://wikipedia.org/wiki/Time_series) चा दैनिक बंद मूल्य. टाइम सिरीज प्लॉट्स आणि सांख्यिकीय मॉडेलिंगचा उपयोग सिग्नल प्रोसेसिंग, हवामान अंदाज, भूकंप अंदाज आणि इतर क्षेत्रांमध्ये वारंवार केला जातो, जिथे घटना घडतात आणि डेटा पॉइंट्स वेळोवेळी प्लॉट करता येतात.
+
+🎓 **टाइम सिरीज विश्लेषण**
+
+टाइम सिरीज विश्लेषण म्हणजे वरील उल्लेखित टाइम सिरीज डेटाचं विश्लेषण. टाइम सिरीज डेटा वेगवेगळ्या स्वरूपात असू शकतो, ज्यात 'इंटरप्टेड टाइम सिरीज' समाविष्ट आहे, जे एखाद्या टाइम सिरीजच्या विकासामध्ये एखाद्या अडथळा आणणाऱ्या घटनेच्या आधी आणि नंतरच्या पॅटर्न्स शोधतं. टाइम सिरीजसाठी आवश्यक असलेलं विश्लेषण डेटाच्या स्वरूपावर अवलंबून असतं. टाइम सिरीज डेटा स्वतःच संख्यांची किंवा अक्षरांची मालिका असू शकतो.
+
+विश्लेषणासाठी विविध पद्धती वापरल्या जातात, ज्यात फ्रिक्वेन्सी-डोमेन आणि टाइम-डोमेन, रेषीय आणि गैर-रेषीय, आणि अधिक समाविष्ट आहेत. [येथे अधिक जाणून घ्या](https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm) या प्रकारच्या डेटाचं विश्लेषण कसं करायचं.
+
+🎓 **टाइम सिरीज अंदाज**
+
+टाइम सिरीज अंदाज म्हणजे मागील गोळा केलेल्या डेटाच्या पॅटर्न्सच्या आधारे भविष्यातील मूल्यांचा अंदाज करण्यासाठी मॉडेलचा उपयोग. जरी टाइम सिरीज डेटाचं अन्वेषण करण्यासाठी रिग्रेशन मॉडेल्स वापरणं शक्य असलं तरी, अशा डेटाचं विश्लेषण विशेष प्रकारच्या मॉडेल्सद्वारे चांगल्या प्रकारे केलं जातं.
+
+टाइम सिरीज डेटा म्हणजे क्रमाने व्यवस्थित निरीक्षणांची यादी, जी रेषीय रिग्रेशनद्वारे विश्लेषण करता येणाऱ्या डेटापेक्षा वेगळी आहे. सर्वात सामान्य मॉडेल म्हणजे 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), जो Mauna Loa Observatory मध्ये मासिक 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) आहे, जो काही वर्षांमध्ये दैनिक इन-गेम करन्सी खर्च दर्शवतो. तुम्ही वरील सूचीतील कोणतेही गुणधर्म या डेटामध्ये ओळखू शकता का?
+
+
+
+## व्यायाम - वीज वापर डेटा वापरून सुरुवात करा
+
+चला, मागील वापराच्या आधारे भविष्यातील वीज वापराचा अंदाज करण्यासाठी टाइम सिरीज मॉडेल तयार करूया.
+
+> या उदाहरणातील डेटा GEFCom2014 अंदाज स्पर्धेतून घेतला आहे. यात 2012 ते 2014 दरम्यान 3 वर्षांच्या तासागणिक वीज वापर आणि तापमान मूल्यांचा समावेश आहे.
+>
+> Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli आणि Rob J. Hyndman, "Probabilistic energy forecasting: Global Energy Forecasting Competition 2014 and beyond", International Journal of Forecasting, vol.32, no.3, pp 896-913, July-September, 2016.
+
+1. या धड्याच्या `working` फोल्डरमध्ये, _notebook.ipynb_ फाइल उघडा. डेटा लोड आणि व्हिज्युअलाइझ करण्यात मदत करणाऱ्या लायब्ररीज जोडा.
+
+ ```python
+ import os
+ import matplotlib.pyplot as plt
+ from common.utils import load_data
+ %matplotlib inline
+ ```
+
+ लक्षात ठेवा, तुम्ही समाविष्ट केलेल्या `common` फोल्डरमधील फाइल्स वापरत आहात, ज्या तुमचं वातावरण सेट करतात आणि डेटा डाउनलोड हाताळतात.
+
+2. पुढे, `load_data()` आणि `head()` कॉल करून डेटा डेटा फ्रेम म्हणून तपासा:
+
+ ```python
+ data_dir = './data'
+ energy = load_data(data_dir)[['load']]
+ energy.head()
+ ```
+
+ तुम्हाला दिसेल की दोन कॉलम आहेत, जे तारीख आणि वीज वापर दर्शवतात:
+
+ | | load |
+ | :-----------------: | :----: |
+ | 2012-01-01 00:00:00 | 2698.0 |
+ | 2012-01-01 01:00:00 | 2558.0 |
+ | 2012-01-01 02:00:00 | 2444.0 |
+ | 2012-01-01 03:00:00 | 2402.0 |
+ | 2012-01-01 04:00:00 | 2403.0 |
+
+3. आता, `plot()` कॉल करून डेटा प्लॉट करा:
+
+ ```python
+ energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
+ plt.xlabel('timestamp', fontsize=12)
+ plt.ylabel('load', fontsize=12)
+ plt.show()
+ ```
+
+ 
+
+4. आता, 2014 च्या जुलै महिन्याचा पहिला आठवडा प्लॉट करा, `energy` मध्ये `[from date]: [to date]` पॅटर्न म्हणून इनपुट प्रदान करून:
+
+ ```python
+ energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
+ plt.xlabel('timestamp', fontsize=12)
+ plt.ylabel('load', fontsize=12)
+ plt.show()
+ ```
+
+ 
+
+ एक सुंदर प्लॉट! या प्लॉट्सकडे पाहा आणि तुम्ही वरील सूचीतील कोणतेही गुणधर्म ओळखू शकता का ते तपासा. डेटा व्हिज्युअलाइझ करून आपण काय निष्कर्ष काढू शकतो?
+
+पुढील धड्यात, तुम्ही ARIMA मॉडेल तयार करून काही अंदाज तयार कराल.
+
+---
+
+## 🚀चॅलेंज
+
+तुम्ही विचार करू शकता अशा सर्व उद्योग आणि चौकशीच्या क्षेत्रांची यादी तयार करा, ज्यांना टाइम सिरीज अंदाजाचा फायदा होईल. तुम्ही या तंत्रांचा उपयोग कला, अर्थमिती, पर्यावरणशास्त्र, किरकोळ विक्री, उद्योग, वित्त अशा क्षेत्रांमध्ये कसा होईल याचा विचार करू शकता का? आणखी कुठे?
+
+## [व्याख्यानानंतरची प्रश्नमंजूषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/42/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+जरी आम्ही येथे त्यांचा समावेश करणार नाही, तरी क्लासिक टाइम सिरीज अंदाज पद्धतींना सुधारण्यासाठी कधीकधी न्यूरल नेटवर्क्सचा उपयोग केला जातो. [या लेखात](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/mr/7-TimeSeries/1-Introduction/assignment.md b/translations/mr/7-TimeSeries/1-Introduction/assignment.md
new file mode 100644
index 000000000..0e21c4112
--- /dev/null
+++ b/translations/mr/7-TimeSeries/1-Introduction/assignment.md
@@ -0,0 +1,25 @@
+
+# काही अधिक टाइम सिरीजचे व्हिज्युअलायझेशन करा
+
+## सूचना
+
+तुम्ही टाइम सिरीज फोरकास्टिंगबद्दल शिकायला सुरुवात केली आहे, ज्यामध्ये अशा प्रकारच्या डेटाची गरज असते ज्यासाठी विशेष मॉडेलिंग आवश्यक असते. तुम्ही ऊर्जा संबंधित काही डेटा व्हिज्युअलाइज केला आहे. आता, अशा इतर डेटाचा शोध घ्या ज्याला टाइम सिरीज फोरकास्टिंगचा फायदा होईल. तीन उदाहरणे शोधा (प्रयत्न करा [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/mr/7-TimeSeries/1-Introduction/solution/Julia/README.md b/translations/mr/7-TimeSeries/1-Introduction/solution/Julia/README.md
new file mode 100644
index 000000000..c65ef9114
--- /dev/null
+++ b/translations/mr/7-TimeSeries/1-Introduction/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/7-TimeSeries/1-Introduction/solution/R/README.md b/translations/mr/7-TimeSeries/1-Introduction/solution/R/README.md
new file mode 100644
index 000000000..9927209f8
--- /dev/null
+++ b/translations/mr/7-TimeSeries/1-Introduction/solution/R/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/7-TimeSeries/1-Introduction/solution/notebook.ipynb b/translations/mr/7-TimeSeries/1-Introduction/solution/notebook.ipynb
new file mode 100644
index 000000000..405177669
--- /dev/null
+++ b/translations/mr/7-TimeSeries/1-Introduction/solution/notebook.ipynb
@@ -0,0 +1,171 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# डेटा सेटअप\n",
+ "\n",
+ "या नोटबुकमध्ये, आम्ही कसे करायचे ते दाखवतो:\n",
+ "- या मॉड्यूलसाठी टाइम सिरीज डेटाचे सेटअप करणे\n",
+ "- डेटाचे व्हिज्युअलायझेशन करणे\n",
+ "\n",
+ "या उदाहरणातील डेटा GEFCom2014 अंदाज वर्तविण्याच्या स्पर्धेतून घेतलेला आहे. \n",
+ "तो 2012 ते 2014 या कालावधीत 3 वर्षांच्या तासागणिक वीज लोड आणि तापमानाच्या मूल्यांचा समावेश करतो. \n",
+ "\n",
+ "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.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "import matplotlib.pyplot as plt\n",
+ "from common.utils import load_data\n",
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "CSV मधून डेटा Pandas डेटा फ्रेममध्ये लोड करा\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ " load\n",
+ "2012-01-01 00:00:00 2698.0\n",
+ "2012-01-01 01:00:00 2558.0\n",
+ "2012-01-01 02:00:00 2444.0\n",
+ "2012-01-01 03:00:00 2402.0\n",
+ "2012-01-01 04:00:00 2403.0"
+ ],
+ "text/html": "
",
+ "image/svg+xml": "\n\n\n\n",
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAHiCAYAAABFgonlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXhb5ZU/8O+r3bYkO7bl3YljZ3dCnJBASCCQFkqBgUDpBrRMZ6YLMJ2l26/TTjtDmelMp09nOtNOaUt31tKFtRToQAkpSUhIiJPY2Z14X+VFkiVL1vL+/pBkjHESL5Ku7r3fz/P4IbF07z1Gsa1z3/OeI6SUICIiIiIiIgIAg9IBEBERERERUfZgkkhEREREREQTmCQSERERERHRBCaJRERERERENIFJIhEREREREU1gkkhEREREREQTTEoHoITi4mJZU1OjdBhERERERESKOHDggFtK6ZruMV0miTU1Ndi/f7/SYRARERERESlCCNF2rsdYbkpEREREREQTmCQSERERERHRBCaJRERERERENEGXexKJiIiIiIgAIBwOo7OzE8FgUOlQ0sJms6Gqqgpms3nGxzBJJCIiIiIi3ers7ITD4UBNTQ2EEEqHk1JSSgwODqKzsxOLFy+e8XEsNyUiIiIiIt0KBoMoKirSXIIIAEIIFBUVzXqVlEkiERERERHpmhYTxKS5fG1MEomIiIiIiBRkt9tTcp57770X3/rWt+Z9HiaJRERERERENIFJIhERERERURaQUuILX/gCVq9ejTVr1uDxxx8HAIyOjuLd73431q9fjzVr1uDpp5+eOObrX/86li1bhssvvxwnTpxISRzsbkpERERERATga88242i3N6XnXFXhxD/fWD+j5z7xxBNobGzEoUOH4Ha7sXHjRmzduhUulwtPPvkknE4n3G43Nm3ahJtuuglvvvkmfvnLX6KxsRGRSATr16/HxRdfPO+YuZJIRERERESUBV577TXcdtttMBqNKC0txZVXXok33ngDUkp8+ctfxkUXXYSrr74aXV1d6Ovrw5/+9CfccsstyM3NhdPpxE033ZSSOLiSSEREREREBMx4xS/THnnkEQwMDODAgQMwm82oqamZ9ViL2eBKIhERERERURa44oor8PjjjyMajWJgYAA7d+7EJZdcAo/Hg5KSEpjNZrzy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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n",
+ "plt.xlabel('timestamp', fontsize=12)\n",
+ "plt.ylabel('load', fontsize=12)\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n---\n\n**अस्वीकरण**: \nहा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.\n"
+ ]
+ }
+ ],
+ "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-08-29T19:09:49+00:00",
+ "source_file": "7-TimeSeries/1-Introduction/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/mr/7-TimeSeries/1-Introduction/working/notebook.ipynb b/translations/mr/7-TimeSeries/1-Introduction/working/notebook.ipynb
new file mode 100644
index 000000000..8e4308931
--- /dev/null
+++ b/translations/mr/7-TimeSeries/1-Introduction/working/notebook.ipynb
@@ -0,0 +1,63 @@
+{
+ "cells": [
+ {
+ "source": [
+ "# डेटा सेटअप\n",
+ "\n",
+ "या नोटबुकमध्ये, आम्ही कसे करायचे ते दाखवतो:\n",
+ "\n",
+ "या मॉड्यूलसाठी टाइम सिरीज डेटा सेटअप करणे \n",
+ "डेटा व्हिज्युअलाइझ करणे \n",
+ "या उदाहरणातील डेटा GEFCom2014 अंदाज स्पर्धेतून घेतलेला आहे. यात 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"
+ ]
+ }
+ ],
+ "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-08-29T19:10:18+00:00",
+ "source_file": "7-TimeSeries/1-Introduction/working/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/mr/7-TimeSeries/2-ARIMA/README.md b/translations/mr/7-TimeSeries/2-ARIMA/README.md
new file mode 100644
index 000000000..19fc00f32
--- /dev/null
+++ b/translations/mr/7-TimeSeries/2-ARIMA/README.md
@@ -0,0 +1,407 @@
+
+# ARIMA वापरून टाइम सिरीज अंदाज
+
+मागील धड्यात, तुम्ही टाइम सिरीज अंदाजाबद्दल थोडं शिकला आणि एका कालावधीत विद्युत लोडच्या चढ-उतारांचे डेटा सेट लोड केले.
+
+[](https://youtu.be/IUSk-YDau10 "ARIMA ची ओळख")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा: ARIMA मॉडेल्सची संक्षिप्त ओळख. उदाहरण R मध्ये दिले आहे, परंतु संकल्पना सार्वत्रिक आहेत.
+
+## [पूर्व-व्याख्यान प्रश्नमंजूषा](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/43/)
+
+## परिचय
+
+या धड्यात, तुम्ही [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)**. सांख्यिकी संदर्भात, डिफरन्सिंग म्हणजे नॉन-स्टेशनरी डेटा स्टेशनरी बनवण्यासाठी त्याचा नॉन-कॉन्स्टंट ट्रेंड काढून टाकण्याची प्रक्रिया. "डिफरन्सिंग टाइम सिरीजच्या पातळीतील बदल काढून टाकते, ट्रेंड आणि हंगामीपणा काढून टाकते आणि परिणामी टाइम सिरीजचा सरासरी स्थिर करते." [Shixiong 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` 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") # specify to ignore warning messages
+ ```
+
+1. `/data/energy.csv` फाइलमधून डेटा Pandas डेटा फ्रेममध्ये लोड करा आणि त्यावर नजर टाका:
+
+ ```python
+ energy = load_data('./data')[['load']]
+ energy.head(10)
+ ```
+
+1. जानेवारी 2012 ते डिसेंबर 2014 पर्यंत उपलब्ध ऊर्जा डेटा प्लॉट करा. मागील धड्यात आपण हा डेटा पाहिल्यामुळे काही आश्चर्य वाटणार नाही:
+
+ ```python
+ energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
+ plt.xlabel('timestamp', fontsize=12)
+ plt.ylabel('load', fontsize=12)
+ plt.show()
+ ```
+
+ आता, मॉडेल तयार करूया!
+
+### प्रशिक्षण आणि चाचणी डेटासेट तयार करा
+
+आता तुमचा डेटा लोड झाला आहे, त्यामुळे तुम्ही तो ट्रेन आणि टेस्ट सेटमध्ये विभाजित करू शकता. तुम्ही तुमच्या ट्रेन सेटवर मॉडेल प्रशिक्षण द्याल. नेहमीप्रमाणे, मॉडेल प्रशिक्षण पूर्ण झाल्यानंतर, तुम्ही टेस्ट सेट वापरून त्याची अचूकता मूल्यांकन कराल. ट्रेनिंग सेटमधून टेस्ट सेट नंतरच्या कालावधीचा समावेश करतो याची खात्री करणे आवश्यक आहे जेणेकरून मॉडेलला भविष्यातील कालावधीची माहिती मिळणार नाही.
+
+1. सप्टेंबर 1 ते ऑक्टोबर 31, 2014 पर्यंत दोन महिन्यांचा कालावधी ट्रेनिंग सेटसाठी वाटप करा. टेस्ट सेटमध्ये नोव्हेंबर 1 ते डिसेंबर 31, 2014 चा दोन महिन्यांचा कालावधी समाविष्ट असेल:
+
+ ```python
+ train_start_dt = '2014-11-01 00:00:00'
+ test_start_dt = '2014-12-30 00:00:00'
+ ```
+
+ हा डेटा ऊर्जा वापराचा दैनिक उपभोग दर्शवतो, त्यामुळे एक मजबूत हंगामी नमुना आहे, परंतु उपभोग अलीकडील दिवसांतील उपभोगाशी सर्वाधिक समान आहे.
+
+1. फरकांचे व्हिज्युअलायझेशन करा:
+
+ ```python
+ energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \
+ .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \
+ .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)
+ plt.xlabel('timestamp', fontsize=12)
+ plt.ylabel('load', fontsize=12)
+ plt.show()
+ ```
+
+ 
+
+ त्यामुळे, डेटा प्रशिक्षणासाठी तुलनेने छोट्या विंडोचा वापर पुरेसा असावा.
+
+ > टीप: आम्ही ARIMA मॉडेल फिट करण्यासाठी वापरत असलेल्या फंक्शनमध्ये फिटिंग दरम्यान इन-सॅम्पल व्हॅलिडेशन वापरले जाते, त्यामुळे आम्ही व्हॅलिडेशन डेटा वगळू.
+
+### प्रशिक्षणासाठी डेटा तयार करा
+
+आता, तुम्हाला तुमचा डेटा फिल्टर आणि स्केल करून प्रशिक्षणासाठी तयार करणे आवश्यक आहे. तुमच्या डेटासेटला फक्त आवश्यक कालावधी आणि स्तंभ समाविष्ट करण्यासाठी फिल्टर करा आणि डेटा 0,1 अंतरात प्रोजेक्ट करण्यासाठी स्केलिंग करा.
+
+1. मूळ डेटासेट फिल्टर करा जेणेकरून फक्त वरील नमूद कालावधी प्रति सेट आणि फक्त आवश्यक 'load' स्तंभ आणि तारीख समाविष्ट असेल:
+
+ ```python
+ train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]
+ test = energy.copy()[energy.index >= test_start_dt][['load']]
+
+ print('Training data shape: ', train.shape)
+ print('Test data shape: ', test.shape)
+ ```
+
+ तुम्ही डेटाचा आकार पाहू शकता:
+
+ ```output
+ Training data shape: (1416, 1)
+ Test data shape: (48, 1)
+ ```
+
+1. डेटा (0, 1) श्रेणीत स्केल करा.
+
+ ```python
+ scaler = MinMaxScaler()
+ train['load'] = scaler.fit_transform(train)
+ train.head(10)
+ ```
+
+1. मूळ डेटा आणि स्केल केलेला डेटा व्हिज्युअलायझेशन करा:
+
+ ```python
+ energy[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']].rename(columns={'load':'original load'}).plot.hist(bins=100, fontsize=12)
+ train.rename(columns={'load':'scaled load'}).plot.hist(bins=100, fontsize=12)
+ plt.show()
+ ```
+
+ 
+
+ > मूळ डेटा
+
+ 
+
+ > स्केल केलेला डेटा
+
+1. आता तुम्ही स्केल केलेला डेटा कॅलिब्रेट केला आहे, तुम्ही टेस्ट डेटा स्केल करू शकता:
+
+ ```python
+ test['load'] = scaler.transform(test)
+ test.head()
+ ```
+
+### ARIMA लागू करा
+
+आता ARIMA लागू करण्याची वेळ आली आहे! तुम्ही यापूर्वी स्थापित केलेल्या `statsmodels` लायब्ररीचा वापर कराल.
+
+आता तुम्हाला काही पायऱ्या फॉलो कराव्या लागतील:
+
+ 1. `SARIMAX()` कॉल करून मॉडेल परिभाषित करा आणि मॉडेल पॅरामीटर्स: p, d, आणि q पॅरामीटर्स, आणि P, D, आणि Q पॅरामीटर्स पास करा.
+ 2. `fit()` फंक्शन कॉल करून ट्रेनिंग डेटासाठी मॉडेल तयार करा.
+ 3. `forecast()` फंक्शन कॉल करून अंदाज तयार करा आणि अंदाज लावण्यासाठी स्टेप्स (होरायझन) निर्दिष्ट करा.
+
+> 🎓 हे सर्व पॅरामीटर्स कशासाठी आहेत? ARIMA मॉडेलमध्ये 3 पॅरामीटर्स असतात जे टाइम सिरीजचे मुख्य पैलू मॉडेल करण्यात मदत करतात: हंगामीपणा, ट्रेंड, आणि आवाज. हे पॅरामीटर्स आहेत:
+
+`p`: मॉडेलच्या ऑटो-रेग्रेसिव्ह पैलूसाठी संबंधित पॅरामीटर, जो *मागील* मूल्यांचा समावेश करतो.
+`d`: मॉडेलच्या इंटिग्रेटेड भागाशी संबंधित पॅरामीटर, जो टाइम सिरीजवर लागू करावयाच्या *डिफरन्सिंग* (🎓 डिफरन्सिंग लक्षात ठेवा 👆?) च्या प्रमाणावर परिणाम करतो.
+`q`: मॉडेलच्या मूव्हिंग-अॅव्हरेज भागाशी संबंधित पॅरामीटर.
+
+> टीप: जर तुमच्या डेटामध्ये हंगामी पैलू असेल - जो या डेटामध्ये आहे - , तर आपण हंगामी ARIMA मॉडेल (SARIMA) वापरतो. अशा परिस्थितीत तुम्हाला आणखी एक पॅरामीटर्स सेट वापरावे लागेल: `P`, `D`, आणि `Q` जे `p`, `d`, आणि `q` प्रमाणेच असोसिएशन वर्णन करतात, परंतु मॉडेलच्या हंगामी घटकांशी संबंधित आहेत.
+
+1. तुमचा प्राधान्य होरायझन मूल्य सेट करा. चला 3 तासांचा प्रयत्न करूया:
+
+ ```python
+ # Specify the number of steps to forecast ahead
+ 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 # dedicate 30 days (720 hours) for training
+
+ 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])
+ # move the training window
+ 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 |
+
+ तासागणिक डेटाचा अंदाज, वास्तविक लोडशी तुलना करा. हे किती अचूक आहे?
+
+### मॉडेलची अचूकता तपासा
+
+तुमच्या सर्व अंदाजांवर मॉडेलची mean absolute percentage error (MAPE) तपासून त्याची अचूकता तपासा.
+> **🧮 गणित दाखवा**
+>
+> 
+>
+> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/) वापरून अंदाज अचूकता दाखवली जाते, जी वरील सूत्राने परिभाषित केलेली आहे. प्रत्यक्ष आणि अंदाजित यामधील फरक प्रत्यक्षावर विभागला जातो.
+
+"या गणनेतील पूर्णांक मूल्य प्रत्येक अंदाजित वेळेसाठी जमा केले जाते आणि फिट केलेल्या बिंदूंच्या संख्येने 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 %
+ ```
+
+ एक चांगला कमी आकडा सर्वोत्तम आहे: लक्षात ठेवा की 10 चा MAPE असलेला अंदाज 10% ने चुकतो.
+
+1. पण नेहमीप्रमाणे, अशा प्रकारचे अचूकतेचे मोजमाप दृश्य स्वरूपात पाहणे सोपे असते, म्हणून चला ते प्लॉट करूया:
+
+ ```python
+ if(HORIZON == 1):
+ ## Plotting single step forecast
+ eval_df.plot(x='timestamp', y=['actual', 'prediction'], style=['r', 'b'], figsize=(15, 8))
+
+ else:
+ ## Plotting multi step forecast
+ plot_df = eval_df[(eval_df.h=='t+1')][['timestamp', 'actual']]
+ for t in range(1, HORIZON+1):
+ plot_df['t+'+str(t)] = eval_df[(eval_df.h=='t+'+str(t))]['prediction'].values
+
+ fig = plt.figure(figsize=(15, 8))
+ ax = plt.plot(plot_df['timestamp'], plot_df['actual'], color='red', linewidth=4.0)
+ ax = fig.add_subplot(111)
+ for t in range(1, HORIZON+1):
+ x = plot_df['timestamp'][(t-1):]
+ y = plot_df['t+'+str(t)][0:len(x)]
+ ax.plot(x, y, color='blue', linewidth=4*math.pow(.9,t), alpha=math.pow(0.8,t))
+
+ ax.legend(loc='best')
+
+ plt.xlabel('timestamp', fontsize=12)
+ plt.ylabel('load', fontsize=12)
+ plt.show()
+ ```
+
+ 
+
+🏆 एक अतिशय छान प्लॉट, जो चांगल्या अचूकतेसह मॉडेल दर्शवतो. छान काम केले!
+
+---
+
+## 🚀चॅलेंज
+
+टाइम सिरीज मॉडेलची अचूकता तपासण्याचे विविध मार्ग शोधा. या धड्यात आपण MAPE वर चर्चा केली आहे, पण तुम्ही इतर कोणते पद्धती वापरू शकता? त्यांचा अभ्यास करा आणि त्यावर टिपण्या लिहा. [येथे](https://otexts.com/fpp2/accuracy.html) एक उपयुक्त दस्तऐवज सापडू शकतो.
+
+## [पाठानंतरचा क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/44/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+या धड्यात 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/mr/7-TimeSeries/2-ARIMA/assignment.md b/translations/mr/7-TimeSeries/2-ARIMA/assignment.md
new file mode 100644
index 000000000..98794e780
--- /dev/null
+++ b/translations/mr/7-TimeSeries/2-ARIMA/assignment.md
@@ -0,0 +1,25 @@
+
+# एक नवीन ARIMA मॉडेल
+
+## सूचना
+
+आता तुम्ही एक ARIMA मॉडेल तयार केले आहे, तर नवीन डेटासह एक नवीन मॉडेल तयार करा (ड्यूकच्या [या डेटासेट्सपैकी एक](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/mr/7-TimeSeries/2-ARIMA/solution/Julia/README.md b/translations/mr/7-TimeSeries/2-ARIMA/solution/Julia/README.md
new file mode 100644
index 000000000..57ecc702c
--- /dev/null
+++ b/translations/mr/7-TimeSeries/2-ARIMA/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/7-TimeSeries/2-ARIMA/solution/R/README.md b/translations/mr/7-TimeSeries/2-ARIMA/solution/R/README.md
new file mode 100644
index 000000000..311f57f1d
--- /dev/null
+++ b/translations/mr/7-TimeSeries/2-ARIMA/solution/R/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/7-TimeSeries/2-ARIMA/solution/notebook.ipynb b/translations/mr/7-TimeSeries/2-ARIMA/solution/notebook.ipynb
new file mode 100644
index 000000000..ddff9f5d3
--- /dev/null
+++ b/translations/mr/7-TimeSeries/2-ARIMA/solution/notebook.ipynb
@@ -0,0 +1,1126 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# ARIMA सह टाइम सिरीज अंदाज\n",
+ "\n",
+ "या नोटबुकमध्ये, आम्ही कसे करायचे ते दाखवतो:\n",
+ "- ARIMA टाइम सिरीज अंदाज मॉडेलसाठी टाइम सिरीज डेटा तयार करणे\n",
+ "- टाइम सिरीजमध्ये पुढील HORIZON पायऱ्यांचे (वेळ *t+1* ते *t+HORIZON*) अंदाज करण्यासाठी एक साधे ARIMA मॉडेल अंमलात आणणे\n",
+ "- मॉडेलचे मूल्यमापन करणे\n",
+ "\n",
+ "या उदाहरणातील डेटा GEFCom2014 अंदाज स्पर्धेतून घेतला आहे. यात 2012 ते 2014 दरम्यान 3 वर्षांचे तासागणिक वीज लोड आणि तापमान मूल्ये समाविष्ट आहेत. कार्य म्हणजे वीज लोडच्या भविष्यातील मूल्यांचा अंदाज लावणे. या उदाहरणात, आम्ही केवळ ऐतिहासिक लोड डेटाचा वापर करून एका वेळेच्या टप्प्याचा अंदाज कसा लावायचा ते दाखवतो.\n",
+ "\n",
+ "ताओ हाँग, पियरे पिन्सन, शू फॅन, हामिदरेझा झारेइपूर, अल्बर्टो ट्रोक्कोली आणि रॉब जे. हायंडमन, \"प्रोबॅबिलिस्टिक एनर्जी फोरकास्टिंग: ग्लोबल एनर्जी फोरकास्टिंग कॉम्पिटिशन 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": [
+ "
"
+ ]
+ },
+ "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"
+ ]
+ }
+ ],
+ "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-08-29T19:08:04+00:00",
+ "source_file": "7-TimeSeries/2-ARIMA/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/mr/7-TimeSeries/2-ARIMA/working/notebook.ipynb b/translations/mr/7-TimeSeries/2-ARIMA/working/notebook.ipynb
new file mode 100644
index 000000000..d1ee5bf77
--- /dev/null
+++ b/translations/mr/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-08-29T19:09:19+00:00",
+ "source_file": "7-TimeSeries/2-ARIMA/working/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "source": [
+ "# ARIMA सह टाइम सिरीज अंदाज\n",
+ "\n",
+ "या नोटबुकमध्ये, आम्ही कसे करायचे ते दाखवतो:\n",
+ "- ARIMA टाइम सिरीज अंदाज मॉडेलसाठी टाइम सिरीज डेटा तयार करणे\n",
+ "- टाइम सिरीजमध्ये पुढील HORIZON पायऱ्यांचे (वेळ *t+1* ते *t+HORIZON*) अंदाज करण्यासाठी एक साधे ARIMA मॉडेल अंमलात आणणे\n",
+ "- मॉडेलचे मूल्यमापन करणे\n",
+ "\n",
+ "या उदाहरणातील डेटा GEFCom2014 अंदाज स्पर्धेतून घेतलेला आहे. यात 2012 ते 2014 दरम्यान 3 वर्षांचे तासागणिक वीज लोड आणि तापमान मूल्ये समाविष्ट आहेत. कार्य म्हणजे वीज लोडच्या भविष्यातील मूल्यांचा अंदाज लावणे. या उदाहरणात, आम्ही केवळ ऐतिहासिक लोड डेटाचा वापर करून एका वेळेच्या टप्प्याचा अंदाज कसा लावायचा ते दाखवतो.\n",
+ "\n",
+ "ताओ हाँग, पियरे पिन्सन, शू फॅन, हामिदरेझा झारेइपूर, अल्बर्टो ट्रोक्कोली आणि रॉब जे. हायंडमन, \"प्रोबॅबिलिस्टिक एनर्जी फोरकास्टिंग: ग्लोबल एनर्जी फोरकास्टिंग कॉम्पिटिशन 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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/7-TimeSeries/3-SVR/README.md b/translations/mr/7-TimeSeries/3-SVR/README.md
new file mode 100644
index 000000000..e387a740c
--- /dev/null
+++ b/translations/mr/7-TimeSeries/3-SVR/README.md
@@ -0,0 +1,393 @@
+
+# टाइम सिरीज फोरकास्टिंग विथ सपोर्ट व्हेक्टर रिग्रेसर
+
+मागील धड्यात, तुम्ही ARIMA मॉडेलचा वापर करून टाइम सिरीज प्रेडिक्शन कसे करायचे ते शिकलात. आता तुम्ही सपोर्ट व्हेक्टर रिग्रेसर मॉडेलकडे पाहणार आहात, जे सतत डेटा प्रेडिक्ट करण्यासाठी वापरले जाणारे एक रिग्रेसर मॉडेल आहे.
+
+## [प्री-लेक्चर क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/51/)
+
+## परिचय
+
+या धड्यात, तुम्ही [**SVM**: **S**upport **V**ector **M**achine](https://en.wikipedia.org/wiki/Support-vector_machine) चा वापर करून रिग्रेशनसाठी, किंवा **SVR: Support Vector Regressor** साठी मॉडेल तयार करण्याचा एक विशिष्ट मार्ग शोधाल.
+
+### टाइम सिरीजच्या संदर्भात SVR [^1]
+
+टाइम सिरीज प्रेडिक्शनमध्ये SVR चे महत्त्व समजून घेण्यापूर्वी, तुम्हाला खालील महत्त्वाच्या संकल्पना माहित असणे आवश्यक आहे:
+
+- **रिग्रेशन:** दिलेल्या इनपुट्सच्या संचावरून सतत मूल्ये प्रेडिक्ट करण्यासाठीचा सुपरवाइज्ड लर्निंग तंत्र. यामध्ये फीचर स्पेसमध्ये जास्तीत जास्त डेटा पॉइंट्स असलेली वक्र (किंवा रेषा) बसवण्याचा विचार केला जातो. [अधिक माहितीसाठी येथे क्लिक करा](https://en.wikipedia.org/wiki/Regression_analysis).
+- **सपोर्ट व्हेक्टर मशीन (SVM):** वर्गीकरण, रिग्रेशन आणि आउटलाईयर डिटेक्शनसाठी वापरले जाणारे सुपरवाइज्ड मशीन लर्निंग मॉडेल. हे मॉडेल फीचर स्पेसमधील एक हायपरप्लेन आहे, जे वर्गीकरणाच्या बाबतीत सीमा म्हणून कार्य करते, आणि रिग्रेशनच्या बाबतीत सर्वोत्तम-फिट रेषा म्हणून कार्य करते. SVM मध्ये, डेटासेटला जास्त डिमेन्शन्सच्या स्पेसमध्ये ट्रान्सफॉर्म करण्यासाठी सामान्यतः कर्नल फंक्शनचा वापर केला जातो, ज्यामुळे ते सहजपणे विभाजनीय होतात. [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` फाईलमधून डेटा Pandas डेटाफ्रेममध्ये लोड करा आणि त्यावर नजर टाका: [^2]
+
+ ```python
+ energy = load_data('../../data')[['load']]
+ ```
+
+3. जानेवारी 2012 ते डिसेंबर 2014 पर्यंतचा सर्व उपलब्ध ऊर्जा डेटा प्लॉट करा: [^2]
+
+ ```python
+ energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
+ plt.xlabel('timestamp', fontsize=12)
+ plt.ylabel('load', fontsize=12)
+ plt.show()
+ ```
+
+ 
+
+ आता, आपले SVR मॉडेल तयार करूया.
+
+### प्रशिक्षण आणि चाचणी डेटासेट तयार करा
+
+आता तुमचा डेटा लोड झाला आहे, त्यामुळे तुम्ही तो ट्रेन आणि टेस्ट सेट्समध्ये विभाजित करू शकता. त्यानंतर, तुम्ही डेटा रेशेप करून टाइम-स्टेप आधारित डेटासेट तयार कराल, जे SVR साठी आवश्यक आहे. तुम्ही तुमचे मॉडेल ट्रेन सेटवर ट्रेन कराल. मॉडेलचे प्रशिक्षण पूर्ण झाल्यानंतर, तुम्ही ट्रेनिंग सेट, टेस्टिंग सेट आणि नंतर पूर्ण डेटासेटवर त्याची अचूकता तपासाल, जेणेकरून एकूण कामगिरी पाहता येईल. तुम्हाला हे सुनिश्चित करायचे आहे की टेस्ट सेट ट्रेनिंग सेटच्या नंतरच्या कालावधीचा समावेश करतो, जेणेकरून मॉडेल भविष्यातील कालावधीची माहिती मिळवू शकणार नाही [^2] (याला *ओव्हरफिटिंग* म्हणतात).
+
+1. 1 सप्टेंबर ते 31 ऑक्टोबर 2014 या दोन महिन्यांच्या कालावधीला ट्रेनिंग सेटसाठी वाटप करा. टेस्ट सेटमध्ये 1 नोव्हेंबर ते 31 डिसेंबर 2014 या दोन महिन्यांचा कालावधी समाविष्ट असेल: [^2]
+
+ ```python
+ train_start_dt = '2014-11-01 00:00:00'
+ test_start_dt = '2014-12-30 00:00:00'
+ ```
+
+2. फरकांचे व्हिज्युअलायझेशन करा: [^2]
+
+ ```python
+ energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \
+ .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \
+ .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)
+ plt.xlabel('timestamp', fontsize=12)
+ plt.ylabel('load', fontsize=12)
+ plt.show()
+ ```
+
+ 
+
+### प्रशिक्षणासाठी डेटा तयार करा
+
+आता, तुम्हाला तुमच्या डेटावर फिल्टरिंग आणि स्केलिंग करून प्रशिक्षणासाठी तयार करायचे आहे. तुमच्या डेटासेटला फक्त आवश्यक कालावधी आणि कॉलम्स समाविष्ट करण्यासाठी फिल्टर करा, आणि डेटा 0,1 या श्रेणीत प्रोजेक्ट करण्यासाठी स्केल करा.
+
+1. मूळ डेटासेट फिल्टर करा, ज्यामध्ये फक्त वरील नमूद कालावधी आणि 'load' कॉलमसह तारीख समाविष्ट असेल: [^2]
+
+ ```python
+ train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]
+ test = energy.copy()[energy.index >= test_start_dt][['load']]
+
+ print('Training data shape: ', train.shape)
+ print('Test data shape: ', test.shape)
+ ```
+
+ ```output
+ Training data shape: (1416, 1)
+ Test data shape: (48, 1)
+ ```
+
+2. ट्रेनिंग डेटा (0, 1) श्रेणीत स्केल करा: [^2]
+
+ ```python
+ scaler = MinMaxScaler()
+ train['load'] = scaler.fit_transform(train)
+ ```
+
+4. आता, टेस्टिंग डेटा स्केल करा: [^2]
+
+ ```python
+ test['load'] = scaler.transform(test)
+ ```
+
+### टाइम-स्टेप्ससह डेटा तयार करा [^1]
+
+SVR साठी, तुम्ही इनपुट डेटा `[batch, timesteps]` स्वरूपात ट्रान्सफॉर्म करता. त्यामुळे, तुम्ही विद्यमान `train_data` आणि `test_data` असे रेशेप करता की एक नवीन डिमेन्शन तयार होईल, जे टाइमस्टेप्सला संदर्भित करते.
+
+```python
+# Converting to numpy arrays
+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
+# Scaling the predictions
+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
+# Scaling the original values
+y_train = scaler.inverse_transform(y_train)
+y_test = scaler.inverse_transform(y_test)
+
+print(len(y_train), len(y_test))
+```
+
+#### ट्रेनिंग आणि टेस्टिंग डेटावर मॉडेलची कामगिरी तपासा [^1]
+
+आम्ही आमच्या प्लॉटच्या x-अक्षावर दाखवण्यासाठी डेटासेटमधून टाइमस्टॅम्प्स काढतो. लक्षात घ्या की आम्ही पहिल्या ```timesteps-1``` मूल्यांचा वापर पहिल्या आउटपुटसाठी इनपुट म्हणून करतो, त्यामुळे आउटपुटसाठी टाइमस्टॅम्प्स त्यानंतर सुरू होतील.
+
+```python
+train_timestamps = energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)].index[timesteps-1:]
+test_timestamps = energy[test_start_dt:].index[timesteps-1:]
+
+print(len(train_timestamps), len(test_timestamps))
+```
+
+```output
+1412 44
+```
+
+ट्रेनिंग डेटासाठी प्रेडिक्शन प्लॉट करा:
+
+```python
+plt.figure(figsize=(25,6))
+plt.plot(train_timestamps, y_train, color = 'red', linewidth=2.0, alpha = 0.6)
+plt.plot(train_timestamps, y_train_pred, color = 'blue', linewidth=0.8)
+plt.legend(['Actual','Predicted'])
+plt.xlabel('Timestamp')
+plt.title("Training data prediction")
+plt.show()
+```
+
+
+
+ट्रेनिंग डेटासाठी MAPE प्रिंट करा:
+
+```python
+print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%')
+```
+
+```output
+MAPE for training data: 1.7195710200875551 %
+```
+
+टेस्टिंग डेटासाठी प्रेडिक्शन प्लॉट करा:
+
+```python
+plt.figure(figsize=(10,3))
+plt.plot(test_timestamps, y_test, color = 'red', linewidth=2.0, alpha = 0.6)
+plt.plot(test_timestamps, y_test_pred, color = 'blue', linewidth=0.8)
+plt.legend(['Actual','Predicted'])
+plt.xlabel('Timestamp')
+plt.show()
+```
+
+
+
+टेस्टिंग डेटासाठी MAPE प्रिंट करा:
+
+```python
+print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%')
+```
+
+```output
+MAPE for testing data: 1.2623790187854018 %
+```
+
+🏆 तुम्हाला टेस्टिंग डेटासेटवर खूप चांगला परिणाम मिळाला आहे!
+
+### पूर्ण डेटासेटवर मॉडेलची कामगिरी तपासा [^1]
+
+```python
+# Extracting load values as numpy array
+data = energy.copy().values
+
+# Scaling
+data = scaler.transform(data)
+
+# Transforming to 2D tensor as per model input requirement
+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)
+
+# Selecting inputs and outputs from data
+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
+# Make model predictions
+Y_pred = model.predict(X).reshape(-1,1)
+
+# Inverse scale and reshape
+Y_pred = scaler.inverse_transform(Y_pred)
+Y = scaler.inverse_transform(Y)
+```
+
+```python
+plt.figure(figsize=(30,8))
+plt.plot(Y, color = 'red', linewidth=2.0, alpha = 0.6)
+plt.plot(Y_pred, color = 'blue', linewidth=0.8)
+plt.legend(['Actual','Predicted'])
+plt.xlabel('Timestamp')
+plt.show()
+```
+
+
+
+```python
+print('MAPE: ', mape(Y_pred, Y)*100, '%')
+```
+
+```output
+MAPE: 2.0572089029888656 %
+```
+
+🏆 खूप छान प्लॉट्स, जे चांगल्या अचूकतेसह मॉडेल दर्शवतात. उत्तम कामगिरी!
+
+---
+
+## 🚀चॅलेंज
+
+- मॉडेल तयार करताना हायपरपॅरामिटर्स (gamma, C, epsilon) बदलून पहा आणि टेस्टिंग डेटावर मूल्यांकन करा, कोणता हायपरपॅरामिटर्सचा संच सर्वोत्तम परिणाम देतो ते पाहा. या हायपरपॅरामिटर्सबद्दल अधिक जाणून घेण्यासाठी, तुम्ही [येथे](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel) वाचू शकता.
+- मॉडेलसाठी वेगवेगळ्या कर्नल फंक्शन्सचा वापर करून पहा आणि त्यांच्या कामगिरीचे विश्लेषण करा. उपयुक्त डक्युमेंट [येथे](https://scikit-learn.org/stable/modules/svm.html#kernel-functions) सापडू शकते.
+- मॉडेल प्रेडिक्शनसाठी `timesteps` साठी वेगवेगळ्या मूल्यांचा वापर करून पहा.
+
+## [पोस्ट-लेक्चर क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/52/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+हा धडा टाइम सिरीज फोरकास्टिंगसाठी 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/mr/7-TimeSeries/3-SVR/assignment.md b/translations/mr/7-TimeSeries/3-SVR/assignment.md
new file mode 100644
index 000000000..a8e2be657
--- /dev/null
+++ b/translations/mr/7-TimeSeries/3-SVR/assignment.md
@@ -0,0 +1,29 @@
+
+# एक नवीन SVR मॉडेल
+
+## सूचना [^1]
+
+आता तुम्ही एक SVR मॉडेल तयार केले आहे, तर नवीन डेटासह एक नवीन मॉडेल तयार करा (ड्यूकच्या [या डेटासेट्सपैकी एक](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/mr/7-TimeSeries/3-SVR/solution/notebook.ipynb b/translations/mr/7-TimeSeries/3-SVR/solution/notebook.ipynb
new file mode 100644
index 000000000..7b90ae4b5
--- /dev/null
+++ b/translations/mr/7-TimeSeries/3-SVR/solution/notebook.ipynb
@@ -0,0 +1,1011 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "fv9OoQsMFk5A"
+ },
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "या नोटबुकमध्ये, आम्ही दाखवतो कसे:\n",
+ "\n",
+ "- 2D टाइम सिरीज डेटा SVM रिग्रेशन मॉडेलसाठी प्रशिक्षणासाठी तयार करायचा\n",
+ "- RBF कर्नल वापरून SVR अंमलात आणायचा\n",
+ "- प्लॉट्स आणि MAPE वापरून मॉडेलचे मूल्यांकन करायचे\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "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": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "8fywSjC6GsRz"
+ },
+ "source": [
+ "### डेटा लोड करा\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 363
+ },
+ "id": "aBDkEB11Fumg",
+ "outputId": "99cf7987-0509-4b73-8cc2-75d7da0d2740"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
"
+ ],
+ "text/plain": [
+ " load\n",
+ "2012-01-01 00:00:00 2698.0\n",
+ "2012-01-01 01:00:00 2558.0\n",
+ "2012-01-01 02:00:00 2444.0\n",
+ "2012-01-01 03:00:00 2402.0\n",
+ "2012-01-01 04:00:00 2403.0"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "energy = load_data('../../data')[['load']]\n",
+ "energy.head(5)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "O0BWP13rGnh4"
+ },
+ "source": []
+ },
+ {
+ "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": []
+ },
+ {
+ "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": []
+ },
+ {
+ "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": []
+ },
+ {
+ "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": []
+ },
+ {
+ "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": []
+ },
+ {
+ "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": []
+ },
+ {
+ "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": []
+ },
+ {
+ "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": []
+ },
+ {
+ "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"
+ ]
+ }
+ ],
+ "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-08-29T19:11:43+00:00",
+ "source_file": "7-TimeSeries/3-SVR/working/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
\ No newline at end of file
diff --git a/translations/mr/7-TimeSeries/README.md b/translations/mr/7-TimeSeries/README.md
new file mode 100644
index 000000000..d550af51c
--- /dev/null
+++ b/translations/mr/7-TimeSeries/README.md
@@ -0,0 +1,37 @@
+
+# टाइम सिरीज अंदाजाची ओळख
+
+टाइम सिरीज अंदाज म्हणजे काय? भूतकाळातील ट्रेंड्सचा अभ्यास करून भविष्यातील घटनांची भविष्यवाणी करणे.
+
+## प्रादेशिक विषय: जागतिक वीज वापर ✨
+
+या दोन धड्यांमध्ये, तुम्हाला टाइम सिरीज अंदाजाची ओळख करून दिली जाईल, मशीन लर्निंगमधील एक तुलनेने कमी परिचित क्षेत्र, जे उद्योग आणि व्यवसाय अनुप्रयोगांसह इतर क्षेत्रांसाठी अत्यंत मौल्यवान आहे. जरी न्यूरल नेटवर्क्स या मॉडेल्सची उपयुक्तता वाढवण्यासाठी वापरली जाऊ शकतात, तरी आपण त्यांचा अभ्यास पारंपरिक मशीन लर्निंगच्या संदर्भात करू, कारण मॉडेल्स भूतकाळाच्या आधारे भविष्यातील कामगिरीची भविष्यवाणी करण्यात मदत करतात.
+
+आपला प्रादेशिक फोकस जागतिक वीज वापरावर आहे, जो भूतकाळातील लोडच्या पॅटर्न्सच्या आधारे भविष्यातील वीज वापराचा अंदाज लावण्यासाठी एक मनोरंजक डेटासेट आहे. व्यवसायाच्या वातावरणात अशा प्रकारचा अंदाज किती उपयुक्त ठरू शकतो हे तुम्हाला पाहता येईल.
+
+
+
+[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" 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/mr/8-Reinforcement/1-QLearning/README.md b/translations/mr/8-Reinforcement/1-QLearning/README.md
new file mode 100644
index 000000000..9dd1fc371
--- /dev/null
+++ b/translations/mr/8-Reinforcement/1-QLearning/README.md
@@ -0,0 +1,256 @@
+
+# रिइन्फोर्समेंट लर्निंग आणि Q-लर्निंगची ओळख
+
+
+> स्केच नोट: [टोमोमी इमुरा](https://www.twitter.com/girlie_mac)
+
+रिइन्फोर्समेंट लर्निंगमध्ये तीन महत्त्वाचे घटक असतात: एजंट, काही स्टेट्स, आणि प्रत्येक स्टेटसाठी क्रियांची एक सेट. एका विशिष्ट स्टेटमध्ये एखादी क्रिया करून एजंटला एक रिवॉर्ड दिला जातो. पुन्हा सुपर मारिओ या संगणक खेळाची कल्पना करा. तुम्ही मारिओ आहात, एका गेम लेव्हलमध्ये आहात, एका कड्याच्या काठावर उभे आहात. तुमच्या वर एक नाणं आहे. तुम्ही मारिओ आहात, एका गेम लेव्हलमध्ये, एका विशिष्ट ठिकाणी ... हे तुमचं स्टेट आहे. उजवीकडे एक पाऊल टाकणं (एक क्रिया) तुम्हाला कड्यावरून खाली नेईल, आणि त्यासाठी तुम्हाला कमी संख्यात्मक स्कोअर मिळेल. मात्र, जंप बटण दाबल्यास तुम्हाला एक पॉइंट मिळेल आणि तुम्ही जिवंत राहाल. हा एक सकारात्मक परिणाम आहे आणि त्यासाठी तुम्हाला सकारात्मक संख्यात्मक स्कोअर मिळायला हवा.
+
+रिइन्फोर्समेंट लर्निंग आणि सिम्युलेटर (गेम) वापरून, तुम्ही गेम कसा खेळायचा आणि जास्तीत जास्त रिवॉर्ड कसा मिळवायचा हे शिकू शकता, ज्यामध्ये जिवंत राहणं आणि जास्तीत जास्त पॉइंट्स मिळवणं याचा समावेश आहे.
+
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+
+> 🎥 वरील प्रतिमेवर क्लिक करून दिमित्री यांचं रिइन्फोर्समेंट लर्निंगवरील भाषण ऐका
+
+## [पूर्व-व्याख्यान क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/45/)
+
+## पूर्वतयारी आणि सेटअप
+
+या धड्यात, आपण पायथनमध्ये काही कोडसह प्रयोग करणार आहोत. तुम्ही हा धड्याचा 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` आकाराच्या चौकोनी बोर्डासारखं आहे, असं समजू:
+
+
+
+या बोर्डातील प्रत्येक सेल हे खालीलपैकी काहीतरी असू शकतं:
+
+* **जमीन**, ज्यावर पीटर आणि इतर प्राणी चालू शकतात.
+* **पाणी**, ज्यावर तुम्ही चालू शकत नाही.
+* **झाड** किंवा **गवत**, जिथे तुम्ही विश्रांती घेऊ शकता.
+* **सफरचंद**, जे पीटरला स्वतःला खायला मिळालं तर आनंद होईल.
+* **लांडगा**, जो धोकादायक आहे आणि टाळला पाहिजे.
+
+यासाठी एक स्वतंत्र पायथन मॉड्यूल आहे, [`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 # number of steps
+ # set initial position
+ if start_position:
+ m.human = start_position
+ else:
+ m.random_start()
+ while True:
+ if m.at() == Board.Cell.apple:
+ return n # success!
+ if m.at() in [Board.Cell.wolf, Board.Cell.water]:
+ return -1 # eaten by wolf or drowned
+ 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) # do the actual move
+ break
+ n+=1
+
+ walk(m,random_policy)
+ ```
+
+ `walk`ला कॉल केल्यावर संबंधित मार्गाची लांबी परत मिळेल, जी एका रनवरून दुसऱ्या रनपर्यंत बदलू शकते.
+
+1. वॉक प्रयोग अनेक वेळा (उदा. 100) चालवा आणि परिणामी आकडेवारी छापा (कोड ब्लॉक 4):
+
+ ```python
+ def print_statistics(policy):
+ s,w,n = 0,0,0
+ for _ in range(100):
+ z = walk(m,policy)
+ if z<0:
+ w+=1
+ else:
+ s += z
+ n += 1
+ print(f"Average path length = {s/n}, eaten by wolf: {w} times")
+
+ print_statistics(random_policy)
+ ```
+
+ लक्षात घ्या की मार्गाची सरासरी लांबी सुमारे 30-40 पावलं आहे, जी खूप जास्त आहे, कारण जवळच्या सफरचंदापर्यंतचं सरासरी अंतर सुमारे 5-6 पावलं आहे.
+
+ तुम्ही पीटरच्या रँडम वॉक दरम्यानच्या हालचालीही पाहू शकता:
+
+ 
+
+## रिवॉर्ड फंक्शन
+
+आपल्या धोरणाला अधिक हुशार बनवण्यासाठी, कोणत्या हालचाली "चांगल्या" आहेत हे समजून घेणं आवश्यक आहे. हे करण्यासाठी, आपल्याला आपलं उद्दिष्ट परिभाषित करावं लागेल.
+
+उद्दिष्ट **रिवॉर्ड फंक्शन**च्या स्वरूपात परिभाषित केलं जाऊ शकतं, जे प्रत्येक स्थितीसाठी काही स्कोअर मूल्य परत करेल. संख्या जितकी जास्त, तितका रिवॉर्ड चांगला. (कोड ब्लॉक 5)
+
+```python
+move_reward = -0.1
+goal_reward = 10
+end_reward = -10
+
+def reward(m,pos=None):
+ pos = pos or m.human
+ if not m.is_valid(pos):
+ return end_reward
+ x = m.at(pos)
+ if x==Board.Cell.water or x == Board.Cell.wolf:
+ return end_reward
+ if x==Board.Cell.apple:
+ return goal_reward
+ return move_reward
+```
+
+रिवॉर्ड फंक्शनबद्दल एक मनोरंजक गोष्ट म्हणजे बहुतेक प्रकरणांमध्ये, *आपल्याला फक्त गेमच्या शेवटी महत्त्वपूर्ण रिवॉर्ड दिलं जातं*. याचा अर्थ असा की आपला अल्गोरिदम "चांगल्या" पावलांना लक्षात ठेवायला हवा, ज्यामुळे शेवटी सकारात्मक रिवॉर्ड मिळतो, आणि त्यांचं महत्त्व वाढवायला हवं. त्याचप्रमाणे, जे सर्व पावलं वाईट परिणामांकडे नेतात, त्यांना हतोत्साहित केलं पाहिजे.
+
+## Q-लर्निंग
+
+आपण इथे चर्चा करणार असलेला अल्गोरिदम **Q-लर्निंग** म्हणून ओळखला जातो. या अल्गोरिदममध्ये, धोरण **Q-टेबल** नावाच्या फंक्शन (किंवा डेटा स्ट्रक्चर)द्वारे परिभाषित केलं जातं. हे दिलेल्या स्थितीत प्रत्येक क्रियेच्या "चांगुलपणाची" नोंद ठेवतं.
+
+याला Q-टेबल म्हणतात कारण ते टेबल किंवा बहु-आयामी अॅरे म्हणून सादर करणं सोयीचं असतं. कारण आपला बोर्ड `width` x `height` परिमाणांचा आहे, आपण Q-टेबलला `width` x `height` x `len(actions)` आकाराच्या numpy अॅरेद्वारे सादर करू शकतो: (कोड ब्लॉक 6)
+
+```python
+Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
+```
+
+लक्षात घ्या की आपण Q-टेबलच्या सर्व मूल्यांना समान मूल्याने प्रारंभ करतो, आपल्या प्रकरणात - 0.25. हे "रँडम वॉक" धोरणाशी संबंधित आहे, कारण प्रत्येक स्थितीत सर्व हालचाली समान चांगल्या आहेत. आपण Q-टेबलला `plot` फंक्शनमध्ये पास करू शकतो, जेणेकरून बोर्डावर टेबल व्हिज्युअलाइझ करता येईल: `m.plot(Q)`.
+
+
+
+प्रत्येक सेलच्या मध्यभागी एक "बाण" आहे, जो हालचालीच्या प्राधान्य दिशेकडे निर्देश करतो. कारण सर्व दिशांना समान महत्त्व आहे, एक बिंदू दर्शविला जातो.
+
+आता आपल्याला सिम्युलेशन चालवायचं आहे, आपलं वातावरण शोधायचं आहे, आणि Q-टेबलच्या मूल्यांचं चांगलं वितरण शिकायचं आहे, ज्यामुळे सफरचंदापर्यंतचा मार्ग खूपच जलद सापडेल.
+
+## Q-लर्निंगचा सार: बेलमन समीकरण
+
+एकदा आपण हालचाल सुरू केली की, प्रत्येक क्रियेसाठी एक संबंधित रिवॉर्ड असेल, म्हणजे आपण सैद्धांतिकदृष्ट्या सर्वाधिक तात्काळ रिवॉर्डच्या आधारे पुढील क्रिया निवडू शकतो. मात्र, बहुतेक स्थितींमध्ये, हालचाल आपलं सफरचंद गाठण्याचं उद्दिष्ट साध्य करणार नाही, आणि त्यामुळे कोणती दिशा चांगली आहे हे लगेच ठरवता येणार नाही.
+
+> लक्षात ठेवा की तात्काळ परिणाम महत्त्वाचा नाही, तर अंतिम परिणाम महत्त्वाचा आहे, जो आपल्याला सिम्युलेशनच्या शेवटी मिळेल.
+
+या विलंबित रिवॉर्डचा विचार करण्यासाठी, आपल्याला **[डायनॅमिक प्रोग्रामिंग](https://en.wikipedia.org/wiki/Dynamic_programming)** च्या तत्त्वांचा वापर करावा लागेल, ज्यामुळे आपल्याला आपल्या समस्येचा पुनरावृत्तीने विचार करता येईल.
+
+समजा आपण सध्या स्थिती *s* वर आहोत, आणि आपण पुढील स्थिती *s'* वर जायचं आहे. असं केल्याने, आपल्याला रिवॉर्ड फंक्शनद्वारे परिभाषित केलेला तात्काळ रिवॉर्ड *r(s,a)* मिळेल, त्यासोबत काही भविष्यातील रिवॉर्ड मिळेल. जर आपण गृहीत धरलं की आपलं Q-टेबल प्रत्येक क्रियेच्या "आकर्षकतेचं" योग्य प्रतिबिंब देतं, तर स्थिती *s'* वर आपण *a'* क्रिया निवडू, जी *Q(s',a')* च्या जास्तीत जास्त मूल्याशी संबंधित असेल. त्यामुळे, स्थिती *s* वर आपल्याला मिळू शकणारा सर्वोत्तम संभाव्य भविष्यातील रिवॉर्ड `max` असेल.
+
+## धोरण तपासणे
+
+Q-Table प्रत्येक स्थितीत प्रत्येक कृतीची "आकर्षकता" सूचीबद्ध करते, त्यामुळे आपल्या जगात कार्यक्षम नेव्हिगेशन परिभाषित करण्यासाठी त्याचा वापर करणे सोपे आहे. सर्वात सोप्या प्रकरणात, आपण सर्वाधिक Q-Table मूल्याशी संबंधित कृती निवडू शकतो: (कोड ब्लॉक 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` लूप होण्यापासून रोखले जाईल, परंतु एजंट अजूनही अशा ठिकाणी "अडकलेला" असू शकतो जिथून तो बाहेर पडू शकत नाही.
+
+## नेव्हिगेशन
+
+एक चांगले नेव्हिगेशन धोरण म्हणजे ते जे आम्ही प्रशिक्षणादरम्यान वापरले होते, जे शोषण आणि अन्वेषण यांचे संयोजन करते. या धोरणात, आम्ही प्रत्येक कृती एक विशिष्ट संभाव्यतेसह निवडतो, जी Q-Table मधील मूल्यांशी प्रमाणबद्ध असते. ही रणनीती अजूनही एजंटला आधीच शोधलेल्या स्थानावर परत जाण्यास कारणीभूत ठरू शकते, परंतु, खालील कोडमधून तुम्ही पाहू शकता की, हे इच्छित स्थानापर्यंत पोहोचण्यासाठी खूपच कमी सरासरी पथ लांबी देते (लक्षात ठेवा की `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-Table गुणांक नवीन मूल्यांसह अधिलिखित करून "बिघडवू" शकतो. हे आदर्शतः शिकण्याचा दर कमी करून (उदाहरणार्थ, प्रशिक्षणाच्या शेवटी, आपण फक्त Q-Table मूल्ये एका छोट्या मूल्याने समायोजित करतो) कमी केले पाहिजे.
+
+एकूणच, हे लक्षात ठेवणे महत्त्वाचे आहे की शिकण्याच्या प्रक्रियेचा यश आणि गुणवत्ता शिकण्याचा दर, शिकण्याचा दर कमी होणे, आणि सवलत घटक यासारख्या पॅरामीटर्सवर मोठ्या प्रमाणात अवलंबून असते. यांना **हायपरपॅरामीटर्स** म्हणतात, जे **पॅरामीटर्स** पासून वेगळे असतात, जे आपण प्रशिक्षणादरम्यान ऑप्टिमाइझ करतो (उदाहरणार्थ, Q-Table गुणांक). सर्वोत्तम हायपरपॅरामीटर मूल्ये शोधण्याच्या प्रक्रियेस **हायपरपॅरामीटर ऑप्टिमायझेशन** म्हणतात, आणि यासाठी स्वतंत्र विषय आवश्यक आहे.
+
+## [व्याख्यानानंतरचा क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/46/)
+
+## असाइनमेंट
+[एक अधिक वास्तववादी जग](assignment.md)
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/8-Reinforcement/1-QLearning/assignment.md b/translations/mr/8-Reinforcement/1-QLearning/assignment.md
new file mode 100644
index 000000000..f8665bed7
--- /dev/null
+++ b/translations/mr/8-Reinforcement/1-QLearning/assignment.md
@@ -0,0 +1,41 @@
+
+# एक अधिक वास्तववादी जग
+
+आपल्या परिस्थितीत, पीटर जवळजवळ थकवा किंवा भूक न लागता फिरू शकत होता. एका अधिक वास्तववादी जगात, त्याला वेळोवेळी बसून विश्रांती घ्यावी लागेल आणि स्वतःला खायला द्यावे लागेल. खालील नियम लागू करून आपण आपले जग अधिक वास्तववादी बनवूया:
+
+1. एका ठिकाणाहून दुसऱ्या ठिकाणी हलताना, पीटरची **ऊर्जा** कमी होते आणि त्याला काही **थकवा** येतो.
+2. सफरचंद खाल्ल्याने पीटरला अधिक ऊर्जा मिळते.
+3. झाडाखाली किंवा गवतावर (म्हणजे झाड किंवा गवत असलेल्या बोर्डाच्या ठिकाणी चालून गेल्यावर - हिरवे क्षेत्र) विश्रांती घेतल्याने पीटरचा थकवा कमी होतो.
+4. पीटरला लांडग्याला शोधून ठार मारावे लागेल.
+5. लांडग्याला ठार मारण्यासाठी, पीटरकडे विशिष्ट पातळीची ऊर्जा आणि थकवा असणे आवश्यक आहे, अन्यथा तो लढाई हरतो.
+
+## सूचना
+
+तुमच्या समाधानासाठी मूळ [notebook.ipynb](notebook.ipynb) नोटबुकचा प्रारंभिक बिंदू म्हणून वापरा.
+
+वरील नियमांनुसार बक्षीस फंक्शन (reward function) बदला, reinforcement learning अल्गोरिदम चालवा जेणेकरून खेळ जिंकण्यासाठी सर्वोत्तम रणनीती शिकता येईल, आणि तुमच्या अल्गोरिदमचे निकाल random walk च्या तुलनेत जिंकलेल्या आणि हरलेल्या खेळांच्या संख्येच्या दृष्टीने तुलना करा.
+
+> **Note**: तुमच्या नवीन जगात, स्थिती अधिक जटिल आहे, आणि मानवी स्थानाशिवाय थकवा आणि ऊर्जा पातळी देखील समाविष्ट आहे. तुम्ही स्थितीचे प्रतिनिधित्व (Board, energy, fatigue) अशा ट्युपल स्वरूपात करू शकता, किंवा स्थितीसाठी एक वर्ग (class) परिभाषित करू शकता (तुम्ही तो `Board` पासूनही व्युत्पन्न करू शकता), किंवा मूळ `Board` वर्ग [rlboard.py](../../../../8-Reinforcement/1-QLearning/rlboard.py) मध्ये बदलू शकता.
+
+तुमच्या समाधानात, कृपया random walk रणनीतीसाठी जबाबदार असलेला कोड ठेवा, आणि शेवटी तुमच्या अल्गोरिदमचे random walk सोबत निकालांची तुलना करा.
+
+> **Note**: हे कार्य करण्यासाठी तुम्हाला हायपरपॅरामीटर्स समायोजित करावे लागू शकतात, विशेषतः epochs ची संख्या. कारण खेळाचा यशस्वी परिणाम (लांडग्याशी लढाई) दुर्मिळ घटना आहे, त्यामुळे तुम्हाला खूप जास्त प्रशिक्षण वेळ अपेक्षित आहे.
+
+## मूल्यांकन निकष
+
+| निकष | उत्कृष्ट | समाधानकारक | सुधारणा आवश्यक |
+| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
+| | नवीन जगाच्या नियमांची व्याख्या, Q-Learning अल्गोरिदम आणि काही मजकूरात्मक स्पष्टीकरणांसह नोटबुक सादर केले आहे. Q-Learning random walk च्या तुलनेत निकाल लक्षणीयरीत्या सुधारतो. | नोटबुक सादर केले आहे, Q-Learning लागू केले आहे आणि random walk च्या तुलनेत निकाल सुधारतो, पण लक्षणीयरीत्या नाही; किंवा नोटबुक नीट दस्तऐवजीकरण केलेले नाही आणि कोड चांगल्या प्रकारे संरचित नाही. | जगाच्या नियमांची पुन्हा व्याख्या करण्याचा काही प्रयत्न केला आहे, पण Q-Learning अल्गोरिदम कार्य करत नाही, किंवा बक्षीस फंक्शन पूर्णपणे परिभाषित केलेले नाही. |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/8-Reinforcement/1-QLearning/notebook.ipynb b/translations/mr/8-Reinforcement/1-QLearning/notebook.ipynb
new file mode 100644
index 000000000..727b055dc
--- /dev/null
+++ b/translations/mr/8-Reinforcement/1-QLearning/notebook.ipynb
@@ -0,0 +1,411 @@
+{
+ "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-08-29T19:38:33+00:00",
+ "source_file": "8-Reinforcement/1-QLearning/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "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": [
+ "## क्यू-लर्निंग\n",
+ "\n",
+ "क्यू-टेबल किंवा बहुआयामी अॅरे तयार करा. आपला बोर्ड `width` x `height` या परिमाणांचा असल्यामुळे, आपण क्यू-टेबलला `width` x `height` x `len(actions)` या आकाराच्या numpy अॅरेद्वारे दर्शवू शकतो:\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-Learning चा सार: बेलमन समीकरण आणि शिक्षण अल्गोरिदम\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",
+ "## Python अंमलबजावणी\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",
+ "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-Table प्रत्येक स्थितीतील प्रत्येक क्रियेच्या \"आकर्षकतेची\" यादी देते, त्यामुळे आपल्या जगात कार्यक्षम नेव्हिगेशन परिभाषित करण्यासाठी याचा वापर करणे खूप सोपे आहे. सर्वात सोप्या प्रकरणात, आपण फक्त Q-Table मधील सर्वाधिक मूल्याशी संबंधित क्रिया निवडू शकतो:\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": [],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 57
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": "
",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/png": "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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "plt.plot(lpath)"
+ ]
+ },
+ {
+ "source": [
+ "## व्यायाम\n",
+ "## एक अधिक वास्तववादी पीटर आणि वुल्फ जग\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n---\n\n**अस्वीकरण**: \nहा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.\n"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/8-Reinforcement/1-QLearning/solution/Julia/README.md b/translations/mr/8-Reinforcement/1-QLearning/solution/Julia/README.md
new file mode 100644
index 000000000..881e63916
--- /dev/null
+++ b/translations/mr/8-Reinforcement/1-QLearning/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/8-Reinforcement/1-QLearning/solution/R/README.md b/translations/mr/8-Reinforcement/1-QLearning/solution/R/README.md
new file mode 100644
index 000000000..afc8a5f85
--- /dev/null
+++ b/translations/mr/8-Reinforcement/1-QLearning/solution/R/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb b/translations/mr/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb
new file mode 100644
index 000000000..3edf10121
--- /dev/null
+++ b/translations/mr/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb
@@ -0,0 +1,455 @@
+{
+ "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-08-29T19:43:38+00:00",
+ "source_file": "8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "source": [
+ "# पीटर आणि लांडगा: वास्तववादी वातावरण\n",
+ "\n",
+ "आपल्या परिस्थितीत, पीटर जवळजवळ थकलेला किंवा भुकेला न होता फिरू शकत होता. अधिक वास्तववादी जगात, त्याला वेळोवेळी बसून विश्रांती घ्यावी लागते आणि स्वतःला खायला लागते. खालील नियम लागू करून आपण आपले जग अधिक वास्तववादी बनवूया:\n",
+ "\n",
+ "1. एका ठिकाणाहून दुसऱ्या ठिकाणी जाताना, पीटरची **ऊर्जा** कमी होते आणि त्याला **थकवा** येतो.\n",
+ "2. पीटर सफरचंद खाऊन अधिक ऊर्जा मिळवू शकतो.\n",
+ "3. पीटर झाडाखाली किंवा गवतावर विश्रांती घेऊन थकवा दूर करू शकतो (उदा. झाड किंवा गवत असलेल्या बोर्डच्या ठिकाणी चालत जाणे - हिरव्या रंगाचा भाग).\n",
+ "4. पीटरला लांडगा शोधून मारावा लागतो.\n",
+ "5. लांडग्याला मारण्यासाठी, पीटरकडे विशिष्ट पातळीची ऊर्जा आणि थकवा असणे आवश्यक आहे, अन्यथा तो लढाई हरतो.\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "import random\n",
+ "import math\n",
+ "from rlboard import *"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": "
",
+ "image/svg+xml": "\n\n\n\n",
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAFpCAYAAAC8p8I3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeZxcVZ3//9fn1l7V3dV7J2QjIexBwhaIC6MgyKACg47iyogzqD9QZ8YZdUZnXJDBr8vgMF8V40hEXFBHWYavy2AGR1lEQCEkbAkkgSSdpbu6u/a6yzm/P+p209F09k5VJZ8nj3pU1b23qj65Tb9zcu45p8Rai1JKqdbhNLoApZRSe0eDWymlWowGt1JKtRgNbqWUajEa3Eop1WI0uJVSqsVMW3CLyAUi8rSIrBWRj07X5yil1OFGpmMct4hEgGeA84CNwEPAW6y1TxzwD1NKqcPMdLW4lwBrrbXPWWtd4Fbg4mn6LKWUOqxMV3DPAl6Y9HxjuE0ppdR+ijbqg0XkSuBKgFgsdtpLXvKS/Xq/kZERPM+b/P709fXt13uOq9VqFAoFent7D8j7TYfR0VFisRiZTKbRpUxpcHCQ/v5+IpFIo0uZ0vPPP8/cuXMbXcaUfN9n+/btzJw5s9GlTKlYLOL7Pp2dnY0uZUrbt2+no6ODRCLR6FKmtHr1aiqViux0p7X2gN+ApcDPJz3/B+Afpjq+v7/f7o9bbrnF9vT0WGDiFo1G7T/90z/t1/uOW7NmjV22bNkBea/pctttt9n777+/0WXs0jXXXGNzuVyjy5iSMcZeffXVjS5jl4aHh+21117b6DJ26d5777W33357o8vYpRtvvNGuWbOm0WXsUpiLO83M6WpxPwQcLSLzgU3AZcBbD/SH+L7P97//fT7wgQ8wMjLyR/u+8IUvAPCRj3yEdDqNyM7/8lJKqVYyLX3c1lofuBr4OfAk8ANr7eoD/TmbNm3iHe94xx+F9rhKpcJnPvMZfvGLXxzoj1ZKqYaZtj5ua+1PgJ9M1/sDbN68GcdxCIJgymNEhK1btxIEAdFow7r0lVLqgGnpmZMPPvjgLkMbwBjD73//+x0uXCqlVCtr6eB+wxvesNsRCo7jcOGFF5JMJg9SVUopNb1aOrhjsRiLFy/e5THz58+np6fnIFWklFLTr6WDu6+vj6uuumqXx1x44YWceuqpOqJEKXXIaOngdhyHiy++mDvvvJNjjz12h32ZTIbvfe97fPjDH27qQfZKKbW3Wjq4oT5q5Ic//CHPPPPMDttLpRKf//znxycATdwrpVSra+ngXrt2LR/60Ie45ZZbdhrMv/vd77jiiit48MEHMcY0oEKllDrwWjK4jTE8/fTTfPCDH2T58uW7PPYXv/gF733ve/nNb36z26GDSinVCloquK21VKtVPvvZz/Lyl7+cn//853v0uscee4yLLrqIt7/97eTz+clrqiilVMtpqamErutyww038LGPfWyvX5vL5bj11ltJpVJ87nOf0yGCSqmW1VLB/bnPfY5PfOIT+/Uey5cvJxaL8eUvf1mnwCulWlJLdJVYa7nuuuu47rrrDkgXx/Lly/mLv/gLvWCplGpJTR/cruvyb//2b3zyk5+kUqnssO/kk0/eoynvxx9//A6ta8/zuPXWW7nyyivJ5/PTUrdSSk2Xpg5uay1f/vKX+fCHP4zrujvsO+ecc/jhD3+4R8H9pS99ife9730sWbJkYnsQBHzzm9/kox/9KMVicVrqV0qp6dDUwf2///u/fPzjH99hZb+5c+dy3XXX8fWvf51sNrvH73X99ddz/fXXc9ZZZ01Mfw+CgBtvvJFbb71VR5kopVpG0wa3MYbvfve7VKvViW19fX3ccMMN/O3f/i3z58/fq/dzHIclS5bwxS9+kcnfb2mtZfny5drfrZRqGU0b3CLCW97yFhYtWgTAMcccw3/8x3/w+te/nng8vteLRokI0WiUpUuXsnz5cpYsWYKIMHfuXK688kocp2lPhVJK7aBpx8OJCK985StZtmwZd9xxB5deeimnn376Hx23t10cIsIpp5zCHXfcwb//+7+zdOlSzj//fF09UCnVMpo2uMctWbKEM844Y6fBWi6X8X1/l68PgoByuYy1dof3GBgY4JprrtHAVkq1nKbuHxARRATHcXYasDNnzuTTn/70Lt/jLW95Cy9/+ct3+t7j76vhrZRqJU0d3LsTiUTo6ura5TFtbW0kk0kNZ6XUIaOlg1sppQ5HGtxKKdViNLiVUqrFaHArpVSL0eBWSqkWo8GtlFItRoNbKaVajAa3Ukq1mJYObmvtbqe8G2N05T+l1CFlv4JbRNaLyOMi8qiIPBxu6xaRu0VkTXi/66mN+yEajTJv3ryJWZHJZJJFixbtMJuyv7+f9vb26SpBKaUOugOxyNSrrLVDk55/FFhhrf2siHw0fP6RA/A5O3XkkUdy+eWXU6vVWLBgAZ/5zGe46aabWLFiBZFIhDPOOGO6PloppRpiOlYHvBh4Zfj4ZuCXTFNwiwiLFy9m+fLlO2y/4ooruOKKK6bjI5VSquH2t4/bAv8tIo+IyJXhtgFr7WD4eAswsJ+foZRSapL9bXG/3Fq7SUT6gbtF5KnJO621VkR2+k0HYdBfCfUV/NasWbOfpUyfjRs3Mjo62tQ1Dg0NYYxp6hpLpRLr1q1jaGho9wc3iOu6TX0O8/k8pVKpqWvcsmVL0/++jI6O8sILLzT1d83ualDFfgW3tXZTeL9NRG4DlgBbRWSmtXZQRGYC26Z47TJgGUBPT4/95S9/uT+lTKvR0VE2btxIM9f47LPPkk6nGR4ebnQpUxoaGuL+++8nkUg0upQpFYvFpv45V6tVHtj+AHf88o5GlzKl9GCacyvnNvVork2bNvHII4+wdu3aRpcypV2eP2vtPt2ADNA+6fH9wAXA54GPhts/Cnxud+/V399vm9maNWvssmXLGl3GLt122232/vvvb3QZu3TNNdfYXC7X6DKmZIyxV199daPL2KXh4WF72rWnWZr4vxn3zrC33357o0/VLt144412zZo1jS5jl8Jc3Glm7k+LewC4LRyKFwW+a639mYg8BPxARN4NbADetB+foZRS6g/sc3Bba58DTt7J9mHg3P0pSiml1NRaeuakUkodjjS4lVKqxWhwK6VUi9HgVkqpFqPBrZRSLUaDWymlWowGt1JKtRgNbqWUajEa3Eop1WI0uJVSqsVocCulVIvR4FZKqRajwa2UUi1Gg1sppVqMBrdSSrUYDW6llGoxGtxKKdViNLiVUqrFaHArpVSL0eBWSqkWo8GtlFItRoNbKaVajAa3Ukq1GA1upZRqMRrcSinVYjS4lVKqxWhwK6VUi9HgVkqpFqPBrZRSLUaDWymlWsxug1tEbhKRbSKyatK2bhG5W0TWhPdd4XYRkRtEZK2IrBSRU6ezeKWUOhztSYv7m8AFf7Dto8AKa+3RwIrwOcCfAkeHtyuBrx6YMpVSrUREGl3CIW23wW2t/RWQ+4PNFwM3h49vBi6ZtP1btu43QKeIzDxQxSqlWoO1ttElHNL2tY97wFo7GD7eAgyEj2cBL0w6bmO4TSml1AGy3xcnbf2v1r3+61VErhSRh0Xk4Uqlsr9lKKXUYWNfg3vreBdIeL8t3L4JmDPpuNnhtj9irV1mrT3dWnt6KpXaxzKUUurwE93H190JXA58Nry/Y9L2q0XkVuBMYGxSl8qUgiDg9ttv38dSpt/Q0BDPPvtsU9e4atUqNmzYwNatWxtdypS2bNnCz372M5r5L+p8Pt/UP+dyuUxmMMOC2xc0upQpta9vZ1VpVVP3cz/33HNEo1FWrVq1+4MbJAiCKfftNrhF5HvAK4FeEdkIfIJ6YP9ARN4NbADeFB7+E+BCYC1QBt61JwW6rvC+9w3s/sAGSacNl1+eZmCgeWvcsGEDN96YZXS0eWtcuDDBJZf0kclkGl3KlKLRaFP/nIvFImckzuCzA59tdClTemrkKQpOoanPYzqd5l+6/4XyQLnRpUzJFXfKfbsNbmvtW6bYde5OjrXAVXtc2cTrHLZsWbq3Lztostm1zJw5zNKlzVvj1q1bGR0daOrzOHv2Ck477TTi8TiFQoGu7k62jmymPZMl723jv0e+xXPl1ThelIS0ISbCYGEzZ3VdwPnzL8Mt15jdN5d8Pk8mk2FkZIR0Oo3neQRBQCaTwVpLKpUil8vR1tZGoVAgm81OPK/VamSzWWq1GtZakskkjuMgIlhr+e53v9vUP+dcLsdDDz3U1DUaYxgaGmrqGleuXMnwScOMLRxrdClTanPapty3r10lSu0Taw3D3maeK63GwXDn4FdYmDkV17jESXFM/Ew2155nrDLKcZ2nMK/nJXTEuvj7e95Ge6yHq075OH3xmcS9OI7jYIwBwHEcgiDAWkutVkNECIIAEcHzvIn9IoLruhP/DPV9n3g83shTotRe0+BWB5XF8vttD/Jvv7+WgcwAc7PzGPM9Hlv3BOs3v8AJC+cQ8+I889xaho4ZZX72eISNJGwHKenge4/exLHdJ/Gaha8nGU8hIkQiEYwxE32qnucRi8UIgoBoNEoQBCQSCUSEaDSK7/v1WqzF8zwNbtVyNLjVQeVIhNN7z2Gm9zMef3olo5k02ViNYiFOojyD0gtpSvkyqx/fzpZSjvLcIrnRKn39M1m98QFO6j+Ve576MmfMWUp7pZOOjg6MMVQqFTo7OzEmIJlMksvlaG/vIJ/P09XVxdDQEO3t7dRqNbq6uiiXy0QiEZLJZKNPiVJ7TYNbHVTGGDKRNDe8/gauuO1d/HTVTzA1SNkkcRvnd2sD/nzJG3j3eWcwVholXomzsfxTqvlhhnIjrAmexfciXPzV13P3++8BIB6Pk0wmqVbKrFrxWdY+9G18P+D4pZdz2us+TaFQoKenh2q1SiqVYmhoiEQige/7lMtlenp6GnxWlNo7ujqgOqgcxyGRSFAtVvjaG27kwuNeSzQSYUHfAs5aeBYvOXIRG7ZvYPWmVQwXcgwOD5IZnkfp6SwndRxPZWwITJVgTPjLG/4SEaFarZLLDVPYuppnV9/LSL7KrEUX0XnEYgr5PG1tbWzfvh0RoVQq0dvbSzQaJRqN0tnZ2ehTotRe0xa3OqistbiuS1dXF57n8dU3fIWPp/6JHz/yY0aLo2QiGdKSoiYu24afYmxkjPZYBxcvvZhioUiKboa3b8Pp2oy71SMIfGKxGPfc9iW2rb+PkcEXOOWcv+EVF/0Nvl/fV6lU6OrqIggC0uk0Y2NjRCIRrLUUi0Wy2WyjT4tSe0WDWx10juPgOA7WWrpS3Xz6NZ8mJgl++NsfsDW3DTwQDyQQTpl9CqlIiucGnyMVTdEe6+Goucfxvf++mQXnb2H57f/BO193OQ/98kcMzJzNxe+5iYEjXzLx/uPD/CKRyMSokskTQ3QVO9WKNLjVQec4DsVikUwmQ6lUoiPRwWdf+y98+k8/wZ99+VJG8iOsfeE5+tt7yRWHaYu1Uy1XwbNs3z5MWyzDeaddxMaNz/Brexu/ed9yugLLBa96O/OOX0osFqNcLpNIJKjVaiSTSYrFIvF4HNd1SafTBEGAMYZYLNbo06HUXtPgVgfV+Djrnp4ecrkcnZ2dlEol4rE4btHlrqvuYn1uPf/1yH9RqpZwfIdMPE1+NA9WqJSrJCJx3vzqN3P6yafzq5X/zdfv/2f+5LVv5uSzXkcQBBSLRbq7u8nn82SzWUZHR+nt7aVQKJBKpRgeHiadTmOtpVQqNfUMP6V2RoNbHVQiQiKRIJfLkUqlGBsbIxaL4fs+bW1tWGtZ2L+Q95/3fqy1xKMRttz7C7b89sekE0l6XvWndC49l1giwcjICN4Wn8qo8LJXv4F4PI61ls7OTobWr+ehb/xfchufp+uo4znt8r+is79vor/bGIMxpqnXTVFqKhrc6qAab3Fns1nGxsbo6OigXC4TjUapVCpEo1Fwqzi1Kk/98/uxbpXZf/Y2Tv+H6zDiEIs4rFv2fxh+7BH8wLB2aJTE9m3UVj3Ew/f9im0rf4cXBBz/5is45dLLcGtVgmqN7135Dor5Ihf986fomH8UA3Pm4jgOpVKJRCLR6NOi1F7R4FYHXSQSwfO8iVmM4xcSI5EIQWGMzcs+T+n5tRz/t58m1t6BNzpC9bk1IFCzMOvStzPvnVfhlwrM+t8VnP7Mkwzf9yuOfMU5nPTWv8T3XUojI7iFMQILBstFH/skfmD49Xe+xcp77+U9//FNFpx6GpFIpNGnQ6m9psGtDioR2WEdkfE1Q6y14Pts+Op1BFs3s+Bt78XdvgV/+xYEy/jgD7HgPr+OqrUYoOPY4+lcfBqB61MZHSa/4VkCawksBNZirCUwYKzFN5ZTX3cRnjF85+/+lsuu+xxHn3lm406GUvtIg1sdVNZafN+nq6trh4uT0WiUF277NpW1TzL/7e8Fr4oYEAlvO7xHPcDBEpRLuNbWwzoM6MBYjGUivP3AEliDHx6z6OxXUau63Pi+9/A33/8hx596aoPOhlL7RoNbHVSO45BMJhkcHKSnp4ehoSEymQy1concL+7k2LddRVAewzqACE7YQnfC5LbW1lvnlnqCj4e0sRhj8a0hMJYgAD8Mbs8YfAu+MQRGCIzh+Je+jG0bN1IZGmrk6VBqn2hwq4NqvMWdSqXwPG/iwuDwvb8gnmmjOrSJiCM4kfpqDBKByKTgNrbeqrZGIDAYa7AWrAlb2mY8oC2eqXeP+MbiW+oBburdKJ5v6Jk9j6988AN8ffUTiPZ1qxaiwa0OuvHZiuP31loKv7uf9JELCSolxBGs49RX0nEEcYRImNzWWMRarAEb2HBYH+F9PbwDUw/pF4Pb4JkXg9sL6q3wI44+iqceerBRp0GpfabBrQ6q8fWzC4UC6XSaUqlEOp0mEnGwgUtQKeE4gnEcrEM9wCP18AbCJjdgDGY8uC34QT2U/aDe4vbDFrdnLJ4f4FuLayxeIHhBEIY4E1/EoFQr0eBWB5UxhlqtRmdnJ+VymY6ODlzXxa252OGtJMJ1TCQiOI4gEUEch3rz2+IDgTH1cA5sGND1x54NW9NBPbBdvx7O+fwYkXQGNxgP73B/OAlHqVajwa0OKsdxiMfjDA8P09fXx8jICO3t7SQ7sgz+78+IOw50dkIY3jj1ISW+W0MSKQzj3R9QKxUoD23HDQw13+AaSy0w1HxL4ESJ9g7gIYxt3kh6xixcY/ACqAUBvoHtg1twq9VGnxKl9poGtzqojDG4rktfX9/Et9a4rsvMS9/J9vtWMPr04wSz5pLp7cc4gnEEX8B/4Vlic47CApWtm/HyY1RrNarFIlU/wA0sFd9S8wOqgcFFMC88j0uE1Jy5jA0OIpkMXgDVwDCWy/Hc6idY/LpLQFcIVC1Gg1sddMaYie+JHF9mNXHEXEw0jlcqw7o1EATE29rwbEAEcPNjyMrf1sdqBwFeYHADgxu82D3iWxOO3QYvCKiO5qj5huGhISpegIvQMedIRkZG2LZpC1XX53Xve58u7apajga3OqhEhHg8TqFQIJFIUKlUJkI8SKRwjcV6AZH8GH7gEWx+IRwOKAgQYCcm2bjG4AeCayb3XZuJPm8/HGHiBx5BAJ4fUCkWyQ1uxVhAHFJtmUafEqX2mn51mTqoxr8Bp7Ozk0qlQnt7O8YYotEoR77tL6mF/dSlXI5ysUAtMFQDQyUwlAND1TdU/PpzN4Ba2OreoeVtTH3GpLETo0v8cPRJPjdS/0Z4x+GMN1yKJHV1QNV6tMWtDqrxZV2HhoZoa2tjdHSUeDyO53kc8bLz+L0BYw3GephCGXxTvz4p9TaGtSachAN+ONnGDS9WumZ8tIjFDer7vfEAtxZJJqlWavVjAp/Fr3wlcxcsaPAZUWrvaYtbHVTWWjzPo7e3l3K5TDabnfgmmkKpTPsZZ9db2X5AsVCk7NVb2GXPhI9tvcXtGyp+QCUcUVL1A2p+QC0IcH2LGwS4gZk0lttQKpZxay7tfX285r3vIZJMkcvlGn1KlNprGtzqoBqfgFMul4nFYlSr1YlVAlPt7Rzz1ndT9W0Y0AHVcLRI1Q+o+sGk0K53oVR9O9G9UgsstbC7xA0E14Ab2B3Ge3vWMnD00eRzIyx9/UX6RQqqJWlwq4POWjuxrOv4BBhrLdFolK6FxzL7/IvCoA5b1X69b/vF/m1Lxavvr4XH1cJRJl4Y3vXukqAe4sbimvrsyhPOfiWBRHnpG95INBrV75xULUmDWx1U46GdTqfxPI9UKjXxJQqVSgUn00bPosW4OPVWd1DvGin7AeWJEPfrFysnntdb49WgPoa7ZixVvz7ZxjUBtbC1bcSha9YsCoU8J519NkEQUCqVGn1KlNprenFSHVTjy7pu27aNnp4ehoeHaWtrw/M8Ojs7CYKAY978Tp6995ds+NUKBJlYkxvA2vq4bwDfvjg00LP1dUq8cP1tL+w+8YzFCww2GmfR2a/ioRW/5MsP3Ec8mcRaS0dHRwPPhlL7Rlvc6qAavzjZ1tZGrVYjk8lMTMipVqu4rosjwvEXvZEglqQShH3bXkDFe7F1XZ7c5x1Yqr6tt7bDbpPJwwR9HOa85BQ8hFe88Q0EsTi+7+P7PsVisdGnRKm9ttvgFpGbRGSbiKyatO2TIrJJRB4NbxdO2vcPIrJWRJ4WkddMV+GqdUUiEYIgIBaL4XnexOzJaDQ68R2Qc895DenjTqTqW8q+pewbypMvTIbbx/u/a169v7s2cdHyxX7v/oXHkO7qZv3qJzjpVa8i09aGEy5mFY3qPzpV69mTFvc3gQt2sv16a+3i8PYTABE5AbgMODF8zVdERFeoVxPGv3PSdd0dvnvSWjsRplCfFv/aa76A09UzKbCDMMAtpfCiZNV7McwrAVTC0K4GASYao2P2PKJt7Yzlclz6wQ9w7JIlRCKRiTr04qRqRbsNbmvtr4A9Hex6MXCrtbZmrV0HrAWW7Ed96hDzh10l6XQaYwyO41CpVPA8D4B4PM4RC4/msq/cRPvcI6l4JrzVu0hq4+O7x2dTBmZiJErNt9R8i2uFquuRz41wyqvP49XvehfJVIpCoUAQBHpxUrWs/enjvlpEVoZdKV3htlnAC5OO2Rhu+yMicqWIPCwiD3teZT/KUK1kfObk6OgoyWSSfD4PgO/7ZDIZEokE1lqq1SqFQoGFS87idZ++jlMufRM1KxOjTNxIlPmveOXEEMGqH5Ds7adtxhFUg6A+Hb7mEU+n+bP3v5/zrrgCEaFardLZ2UkkEiEajdLe3t7gM6LU3tvXDr6vAtdQ/8rWa4AvAlfszRtYa5cBywDa2wdsrbaPlaiWE4/H6e/vJxKJ0NfXN7E633g3STQaJZ1OT2w77bwLWLT05bz+7z8KhN/y7gjpzk6Kk2Y+RuMJENlhje14Mkn/3LmYcMhhKpVCRCYm3ujKgKoV7VNwW2u3jj8Wka8Dd4VPNwFzJh06O9ym1ITJfdnj95NF/uCLex3HIdbVRVtX1x8d2zUwY48+c/wdxz9PA1u1sn3qKhGRmZOe/hkwPuLkTuAyEUmIyHzgaOC3+1eiUkqpyWR8MsOUB4h8D3gl0AtsBT4RPl9MvatkPfAea+1gePzHqHeb+MBfW2t/ursistlue8wxf7uvf4ZpF4uVOPHEIebNm9foUqa0ZcsWHnssQbX6x63SZtHV9QxLl85v6pEcjz/+OCeddFKjy5iS53msX7+eo48+utGlTCmXy+G6LjNm7Nm/hhph/fr1PNH3BF7Ga3QpU3rmX59hLDe2038a7ja4D4b29n7ruk83uowpdXSs54gj7uOpp97W6FKmNG/ez/jKV/o47bTTGl3KlL70pS/xrne9i2w22+hSpvSxj32Ma6+9ttFlTGl0dJRvfetbfOADH2h0KVN6+OGHGR4e5jWvad5pHLfccgtnn312UzfGjj32WLZt27bT4G6S2QeC6zZvS9HzhgmCRFPXGAQpMpkMXTvpB24WsViMbDbbtDWOr5nSrPVBvcZYLNbUNabTacrlclPXmEgkaGtra+oad3UdRqe8K6VUi9HgVkqpFqPBrZRSLUaDWymlWowGt1JKtRgNbqWUajEa3Eop1WI0uJVSqsVocCulVIvR4FZKqRajwa2UUi1Gg1sppVqMBrdSSrUYDW6llGoxGtxKKdViNLiVUqrFaHArpVSL0eBWSqkWo8GtlFItRoNbKaVajAa3Ukq1GA1upZRqMRrcSinVYjS4lVKqxWhwK6VUi9HgVkqpFqPBrZRSLUaDWymlWowGt1JKtZjdBreIzBGRe0TkCRFZLSIfDLd3i8jdIrImvO8Kt4uI3CAia0VkpYicOt1/CKWUOpzsSYvbBz5krT0BOAu4SkROAD4KrLDWHg2sCJ8D/ClwdHi7EvjqAa9aKaUOY7sNbmvtoLX2d+HjAvAkMAu4GLg5POxm4JLw8cXAt2zdb4BOEZl5wCtXSqnD1F71cYvIkcApwIPAgLV2MNy1BRgIH88CXpj0so3htj98rytF5GERedjzKntZtlJKHb72OLhFpA34EfDX1tr85H3WWgvYvflga+0ya+3p1trTY7HU3rxUKaUOa3sU3CISox7a37HW/jjcvHW8CyS83xZu3wTMmfTy2eE2pZRSB8CejCoR4BvAk9baf520607g8vDx5cAdk7a/MxxdchYwNqlLRSml1H6K7sExLwPeATwuIo+G2/4R+CzwAxF5N7ABeFO47yfAhcBaoAy864BWrJRSh7ndBre19l5Apth97k6Ot8BVe1/KXnWRN0jz11g//c2t2Wts9vpAazxQWqHGnZFmKDyb7bKLF7+90WVMKRJxyWaLxOPdjS5lSr6fp7MzSjqdbnQpU9q2bRs9PT1EIpFGlzKljRs3E40e0egydiHAczYT6481upApmbKhzW+jo6Oj0aVMKZfL0dbWRjweb3QpU/r2t7/NyMjIThvNTRHc7e0Dtljc2ugyppTNruXzn7+Hv/qrv2p0KVO6/fbbGRgY4Mwzz6RWqxGLxTDG1Hc6hi21DYz4W7HGEiUOCBWvTDrSwVEdJyImQjweIwgCRATf9xERHMfB933i8fjE/fj7+75PJBLZ4VgRmXh9LFYPl/plEvjMZzWBPQ4AACAASURBVD7DVVddRVdXV4PO0q5Za3nTmz7Af/7nvze6lCklEjkW/fP5PPKPjzS6lCnNuG8GNw7dyMUXX9zoUqb0ta99jXPPPZeFCxc2upQpDQwMsHXr1p0G9570casWEgQBw8PDJNvj/HbkLvqT8/CdKs8WH2PQ3UChWqRQHeOI1FFU3Ar9sdmsST7JuuG1XH3mx3BrHiJCsVhEREgkEhSLRXp7eykWi3R3dzM2NkZ3dzf5fJ5MJsPo6CixWIx4PE48HicajVIsFps2oJVqdRrch5i1o4/xo5HrkTFhS20DMZvE9y0ZuuhNzKKTLkbLJSrGozsxG0yMnz77Y1LRdq75nw9z2aJ3c0R6Du3t7Vhr8X2fnp4eSqUSiUSCoaEh2trayOfzpFIparUanZ2dWGsJgoByuQxAPB5neHiYzs5OolH930ypA0l/ow4xfel53Lri93Qnu3lJ30tY0H8cz21ez833fo+Fx2Tpy7SxZuUgkVk+LzvhbCJ+klS0k1xhiES6nZt++1Vee/wlnNh1MtFojFgsxvbt2+nv76dUKtHd00NueJhsNsvY2BiZTIZ8Pk8sVj82k8ngOA6lUomuri4cRxegVOpA0+A+xKRIs+y1N/Hh//57/t8TP+Xnq35BwsQZ6JqBuz1BrdDL0f3z2Dy6jmDU8MCjDzB7UTdrt2xmYY/LaHmMai3gqD85js5oChGhra0N13WpFQZ55qk7KeQLdPcfQe+CcwmCgGQyOdGP7bouAI7jUK1WSaVSE/uUUgeGNocOMY7jcEz3Qj5+zsdwosKzw88yUhmhLZmh7JYpeyXm9M/h+N7FdFQWcmTHCRSesYhriFDj+W2b+fnjK7j2rs8A9Qt2xhiwAZue+Dm/vPWveeQnH+eR//4iEl7XNsZgjJkYWuU4Dtbalh1qpVSz0+A+xMRiMTzXY+nspfzorT+it60HJxJhtDpGLB6lFrg8sXE12wvbefr5p/j1ww8wL72IiwbewWMrnuaM4+aQLkT44U9/iOd7ABTyo2zb8BC/+n//zmg5wRlv/AbnXfEdvKA+qsR13YkRLOMXKY0x2tpWappoV8khZmxsbKI/+vgZJ3DfB+7l0v94I4PDgyRsnLhNkCTB9uHtWNcw0DWDwAZs3TbERae+mdEnR8kmRqllUzz7wjMcN/9E/ve2L/DUI3cxZ/7xvPzVV7JoyevI5/O0pdNUq1W6u7sJggDP8ygWi1hrSafTDA0N0dPToxcnlTrA9DfqEDN+sTAajVKtVhlIz+Cmt9zEfz3+X3z1f77K5twguJb2aDsnzDqBuMTZNrqNdDRFIV9AAmgfO5JCxyifuuOv+fOj3szaJ1fSOeMEXv/uL9EzMI9qtUo6ncZ1XWKxGOVyeWL8dipVX+kxCALa29v14qRS00CD+xAzfkHQ87yJSTjH9h3DMa/6G5bMOoOtpa38y3/+C5uGNvPc1mfpTvYQJ87w0BC1ske1WOF9l7yP97/0asbSG/nm9f+Hrm0BH7rm63T1zaFcLpNKpahWqyQSiYlJOeP93OMXJ8cDPZFINPiMKHXo0eA+xBhjiEajuK67w0VCa2HpgqUkU0kuOOECYvEYxUKReETY9Nwz9GV7qFlId/eRjCfp6uwinx/h6fmP8qorXsuRRy9GRAiCAMdxKA5tx4tG8AJDzxGzcBxnIryBiWP1AqVSB54G9yEmmUxOjKuu1WoAE2uDJBIJXNelPdnO0MP3k/QqFLZtpX3zBvKjI3SedAodi8+iuH4t6yoVXtiyjcd/fR9nnfpyvE3Ps3nNUyRTKfJtXWz49QqeX/UYbX0zSS84hraeXmadeCIDRx87MQ0+m81qV4lS00CD+xBTKpXo6emhWCySTCYxxlCr1RARKpUKyUqBdd+5kUxXD24qTbZvBh0v/ROsCAJUNm7AjuVIGJ/Mumd4aa2MXXEXmzetR5woI55Lqn8Wx5x7AUed+xpsYHj6vl+xZdVjPP/7RyhUqlzyj/9EV28vY2Nj9PT0aHgrdYBpcB9iOjo66muVJJOUy2UcxyEWi2GtJROL8Oj7/4rsgqPpOvt8nEgUbIC76fn6wr3WEolEyS48DmMtmTlHsfDSywgCQ62cJ5pqI7AGz/OpjOUwFgJjmb3oZGZay9jwMHf+27/yjf/vPVz9zW/T2dnZ1CsBKtWqtCl0iMnn8/T29k4MyYvFYnieR3VkmAf/8hLSR8xi5p++AVMYw4zlsIUxpFpEKkWolrClPEFuO35uO6ZUwB8bJiiMIK6LO5rDGxnBL+TxSyX8cgmvXMItFqgV690zF//1hyhuGeT//sU7eeHZZwmCoNGnRKlDjra4DzHJZJJSqYSI4Hke1loikQiD//UDuuccxRGvuQhvaJBIOHzPkfBbMkQQazHWghUEC8ZgLQTW4hsIjMFYi7GEzy2BsXjWEliDbwRjLC+97K3cvfwmVt/zP8w/9thGnxKlDjka3IeYdDrN4OAg2WyWSqVCPB7H8WoUnlnJwPGL8Ye24DhSD2oHnDC8qUc11hiwEoZ2OCIlqE99rwe1wRjwjCEw4FtLED73rSWwFgc48qSTefCOO3jFG95I94wZjT0pSh1iNLgPMWNjYwwMDFCpVGhra8MYw6a774Saiwk8gkoJcRwQkEg9tCNO/cJkYKm3qA1YAzYwGFNvhQc2wAQStr4tfmDwDfjG4FnwgoDAgmfqj2csXMiGNWsojoxocCt1gGlwH2Ky2Sxbt26lvb2dUqlEJBIhnYhRiEcwbhXjg3UccMA6Ao7gRBxE6mEtxoKxWGMxQYCZ6BIJW9hBvWvENRY/sPXgDlvcXvjcNWG3ie+BjuNW6oDT4D7EVCoV2tvbASZmLVarVUytiqmUCByIOBGMAyYiGMfBOIKDYGwY2MYQGIsJXuwe8Y0NW9NmosXtGXADE4a1xQvAMzYMcUPgeY08FUodsjS4DzGRSGTi22mCICASiRCNxCiseZJUexZJpfAjDhKpt7rFEZAIAhjqoVu/8BjgBbZ+MxbPGjwf3CDAt/XAdgPYtmEd6f4ZeE4EL6DeEjfg+vVFp5RSB54G9yFmfNy0iEyspZ3o7YNYnPyTjyNHHY1NJLCOg40IVixuqYAk0hCLEfg+nutTq5YZfWo1ru9T9S01Y6n6AdXAUAug/ehFBPE4sXSaaqmML4IXWGpBvctk8/MbGNu+HdFx3IclXc53emlwH2LGl3UtFApkMhl834eXLKFn6Tls/el/ElRKdB55FEE6TeAIEbEEWzch0QTE47iFMWpD23CDej92LTD4gcX1LV4Q4PsWLzBsWvkQNR+ivQPUPB8ybRBP4lphdCjHhjVreOUVf0X3zJmNPiWqAXSNmumlwX2ISafTjI2NEYlEqFarQL0VXqm5+MZSK5cobN1Muq+fymiOiDVQLYNbw1C/EGlsGNgGvMDihhcdfVMfURLYFy9YljZvohZYKoEh0dNHqeYyvHU7xsCCk15Cqq2tsSdEqUOQBvchxnVd2traJsZwB0FAEASkZs3Cj8TA95BCARuPY4e3E7EGEac+4x0IbP3CpDfeV20sbjhixDPgWROOLAkn4VhLQP0iZq1apVKsYERItHVQrdUwxuhaJUodYPobdQga/2fq5H+uLnj7/4fTO4NyEFAuVymNjVHxAiqeoeIZyr6h7AWUfUPFt9R8qPmGmm9wfcJRI/XRIp6xBP6LrXA3MBiEUr5EpVLB9w0nv/YCzn7bWxt1CpQ6pGmL+xATj8epVCo4jlPv3+bFL+91Ovvwn1+HtQFBsYwTGCJi63Mmxy9mUp+EE4xPrglb3rUwtF1Tv1DphRNvXBMeCwTUu1COe9nZRHBIJ1Pa2lZqGuhv1SGmWq3S0dEB1NctiUaj9XHZQcCR73wftUCo+oZK1a23tv3w5gVUfVMfOeKF94GlFliqgcH1DbXw3vctbtj/7Zv6kEHX86lWq0SSCZxEjAuufA/5fF4XmVJqGmiL+xDT3t7O0NAQyWSSYrGIiBCLxYhEIsw/82U8mG7DLYzhCEQdwTGCiB1f1fXFae/UW9zj65G4YUDXx2qDawJqAXhB/Tg3sNhojJf++WU8/ftHmbdoEZlMRr8oWKlpsNsWt4jMEZF7ROQJEVktIh8Mt39SRDaJyKPh7cJJr/kHEVkrIk+LyGum8w+gdlQsFslms1hrSSaTxGIxgiDAGEPZ8zjn35ZPjMcuB/W+7YpnKIf93JUgoOIHk1rghqoX4PpBfdJNOETQ9centwfUDPiB4biXvpxH7rmHq7+2jHg8TrFYnPgqM6XUgbMnzSEf+JC19nci0g48IiJ3h/uut9Z+YfLBInICcBlwInAE8AsROcZaq/9mPgji8TjVanWH73wc72eOx+Mk+geY8bJzeP7XK3DCpV2Fej+3xcFiJ5ZyDcKlXP1wYan6miR2Yoigawy1oN7fnejIUqm6nHnhhcyYN48gCIjFYjoRQ6lpsNsWt7V20Fr7u/BxAXgSmLWLl1wM3GqtrVlr1wFrgSUHoli1e8lkkkKhgIjgui7GGCKRSH2xqXSaaGc3Ryx5KTXfhqNK6i3rim/r9+Eok4pvqAX1fu5qQHirt7ZrQf0CZb2rxGAkyonnvJqK6/LSiy6hvaODIAjIZDIa3EpNg726OCkiRwKnAA+Gm64WkZUicpOIdIXbZgEvTHrZRnYd9OoAyufz9PX1YYypB3U0iud5eJ7HyMgImXSaEy+7nNmvOp+KqXeFlLyAkhtQDocHlsOuklIY4FUvoOr71LyA2viFS9/gBoYgEuPYl/8JuaFhTn31ecxatIjR0VFisRhDQ0N6cVKpabDHwS0ibcCPgL+21uaBrwJHAYuBQeCLe/PBInKliDwsIg97XmVvXqp2oaOjg1wuh+M4lMtlPM8jFosRi8Xo7OykXC4TicWYe96F+LHUxLjtSmDrY7mD8LlvXxxx4huqvqUaWCrjfdzGQjJJ/1ELsdEI5fwYs447jo5sls7OTjzPo7u7W79zUqlpsEeX/EUkRj20v2Ot/TGAtXbrpP1fB+4Kn24C5kx6+exw2w6stcuAZQDt7QO2VtuX8tUfKpfLdIRdFePf8j4+ntt1XZLJJEEQsOTP/pxKbpi7PvlxduzNeHE8d336OxNT3H0bToM3BisR2jq6IJ5gcN16rvz85znxFa+gUqkgIkSjUQqFAh0dHRreSh1gezKqRIBvAE9aa/910vbJqwf9GbAqfHwncJmIJERkPnA08NsDV7LalVQqRT6fx1pLtVrF930cx8FxHDKZDNVqFWst+XyeP7niPZz/8U/iR2L11nQ4nrviG1yJUJm0rRoYXOtQ9QNqvqWGUK5U2bL+ed7xiU9x9Jln1lciTCRIJpP4vq993EpNkz1pcb8MeAfwuIg8Gm77R+AtIrKY+hIX64H3AFhrV4vID4AnqI9IuUpHlBw8kUiEaDRKNBqdmPI+/njyvmg0SjyRYOnb/oKFp53F3V/9v+SHtgP1H+jSt76NX3/n21gLxliiqTRzTjqJJx94AGPBInTPnMHb/vEf6Z4zh2gsNvG+458ZjUY1uJWaBrsNbmvtvYRfBP4HfrKL11wLXLsfdal95DgOvb29U+7PZrMAZDIZAPr7++nv7+fEs8/+o2PPf9df7nMdsVhsn1+rlNo1nfKulFItpknmI1sSiVyji5hSPJ6nWq2SyzVvjeVymWKx2NQ1ep7H6Ohoky+yHzT1/4uJxCgRL0Iil2h0KVOKF+OUy+Wm/n+xWq2Sz+ebusZd/Z5IM/wSdXd327/7u79rdBlTKpVKbN++nSOPPLLRpUxpcHCQRCJBd3d3o0uZ0tNPP82CBQuauhvlscce4+STT250GVPyPI97732OkZFjG13KlJLJHKecUmNmE3/70bp16+jv75/oMmxGX/jCF8jlcju/SGStbfitv7/fNrM1a9bYZcuWNbqMXbrtttvs/fff3+gydumaa66xuVyu0WVMyRhjr7766kaXsUvDw8P2tNOutfUlwZrzNmPGvfb2229v9KnapRtvvNGuWbOm0WXsUpiLO81M7eNWSqkWo8GtlFItRoNbKaVajAa3Ukq1GA1upZRqMRrcSinVYjS4lVKqxWhwK6VUi9HgVkqpFqPBrZRSLUaDWymlWowGt1JKtRgNbqWUajEa3Eop1WI0uJVSqsVocCulVIvR4FZKqRajwa2UUi1Gg1sppVqMBrdSSrUYDW6llGoxGtxKKdViNLiVUqrFaHArpVSL0eBWSqkWo8GtlFItZrfBLSJJEfmtiDwmIqtF5FPh9vki8qCIrBWR74tIPNyeCJ+vDfcfOb1/BKWUOrzsSYu7BpxjrT0ZWAxcICJnAf8HuN5auxAYAd4dHv9uYCTcfn14nFJKqQNkt8Ft64rh01h4s8A5wH+G228GLgkfXxw+J9x/rojIAatYKaUOc3vUxy0iERF5FNgG3A08C4xaa/3wkI3ArPDxLOAFgHD/GNBzIItWSqnD2R4Ft7U2sNYuBmYDS4Dj9veDReRKEXlYRB6uVCr7+3ZKKXXY2KtRJdbaUeAeYCnQKSLRcNdsYFP4eBMwByDcnwWGd/Jey6y1p1trT0+lUvtYvlJKHX72ZFRJn4h0ho9TwHnAk9QD/I3hYZcDd4SP7wyfE+7/H2utPZBFK6XU4Sy6+0OYCdwsIhHqQf8Da+1dIvIEcKuIfAb4PfCN8PhvALeIyFogB1w2DXUrpdRha7fBba1dCZyyk+3PUe/v/sPtVeDPD0h1Siml/ojOnFRKqRajwa2UUi1Gg1sppVrMnlycnHbGGO67775GlzGlLVu2MDg42NQ1rl+/npGREYwxjS5lSrlcjoceeohMJtPoUqZULpeb+udcLBZJJnPMmNG8NXZ1Pc369YWmPo+Dg4OsXLmSrVu3NrqUKe3qd7kpgttay/DwHw31bhpjY2NUKpWmrrFUKrF8uUOh0Lw1zp3rcuaZI1Sr1UaXMqWREZ93vKN5z2E0WmbmBQ+R+vCPG13KlOLrOiiV3tTUvy/VapWPj36carR5/1+s2dqU+5oiuCORCBdddFGjy5jS2rVrCYKgqWs0xrBt2wBbtixtdClT6ulZyfnnn09XV1ejS9kpay233HI369Y17885kcjRMeMLrLtoXaNLmdKM+2Zw4tCJTf37Mjg4yOazNzO2cKzRpUypLdI25T7t41ZKqRajwa2UUi1Gg1sppVqMBrdSSrUYDW6llGoxGtxKKdViNLiVUqrFaHArpVSL0eBWSqkWo8GtlFItRoNbKaVajAa3Ukq1GA1upZRqMRrcSinVYjS4lVKqxWhwK6VUi9HgVkqpFqPBrZRSLUaDWymlWowGt1JKtRgNbqWUajEa3Eop1WI0uJVSqsVocCulVIvZbXCLSFJEfisij4nIahH5VLj9myKyTkQeDW+Lw+0iIjeIyFoRWSkip073H0IppQ4n0T04pgacY60tikgMuFdEfhru+3tr7X/+wfF/Chwd3s4EvhreK6WUOgB22+K2dcXwaSy82V285GLgW+HrfgN0isjM/S9VKaUU7GEft4hERORRYBtwt7X2wXDXtWF3yPUikgi3zQJemPTyjeE2pZRSB8AeBbe1NrDWLgZmA0tEZBHwD8BxwBlAN/CRvflgEblSRB4WkYcrlcpelq2UUoevvRpVYq0dBe4BLrDWDobdITVgObAkPGwTMGfSy2aH2/7wvZZZa0+31p6eSqX2rXqllDoM7cmokj4R6Qwfp4DzgKfG+61FRIBLgFXhS+4E3hmOLjkLGLPWDk5L9UopdRjak1ElM4GbRSRCPeh/YK29S0T+R0T6AAEeBd4bHv8T4EJgLVAG3nXgy1ZKqcPXboPbWrsSOGUn28+Z4ngLXLX/pSmllNoZnTmplFItRoNbKaVajAa3Ukq1GA1upZRqMRrcSinVYvZkOOC0832fr33ta40uY0pjY2Ns3LixqWt87rnnmDs3TW/vykaXMqWOjvXccsstJBKJ3R/cIL6fY9Gi5v05RyJVsuuyLPraokaXMqX0YJoHqg+wZcuWRpcypVWrVnHU2FG4WbfRpUzpef/5Kfc1RXBHIhHOPffcRpcxpY0bN+I4TlPXGI1GOeusbk466aRGlzKlb3xjPddc8wo8r73RpUzpvPN+x223Ne/POZ/P86MfbeNd5+58eoTFYjFYaxFkYhuAI5GJbdNp5cqVjI6OcvbZZ0/7Z+2rsbExvrjki8yePbvRpUxpqbN0yn1NEdwiwsKFCxtdxi6tWbOmqWtctWoVAwMDTV1jJpOhUDiSWq2r0aVMweI48aY+h7lcjkwmw/z58xkeHq5vTHnkS6Nks508tu0e7ivfRaE6gvGFjNNNqVaiXCvx7gWfIhlLMbNtNl2ZHsbGxojFYhSLRXp7exkaGqKjo4NyuUxvby+lUolIJILneQRBQCQSoVQqTezLZrNs376d3t5eAByn3vO6detWIpFIU5/HbDbL7NmzmTNnDsVikVQqRalUIhaLEY1GqVQqtLe3T+yr1WqICLFYjHK5TEdHB4VCgVQqhed5JBIJ6lNYIB6PUywWaWtro1QqkU6n8X0fYwyJRIJCoUB7ezvlcplkMokxBt/3iUajJJNJ6pPRXzyfO9MUwa2U2jsVv8jjlV9S9MfYmF/NcHULyVw7YqL0O/OZlTqJJ4YeIhppZ1H7Ypy2CI/lHuCutd/nNfP+nHPnvY6B5CystSSTSWq12kSIjIeTMWYijMZDZPxYEaFcLhOPxyfu4/F4I0/JPikWi2SzWYrFIl1dXfi+j+d5dHd3MzIyQldX10QIW2up1Wr09vYyMjJCd3c35XKZdDpNpVJBRDDGTLzn8PAw2WyWsbExotEojuOQy+Xo7OxkeHiYjo4O8vk8IkIikaBSqZBIJCaCe1c0uJVqQY443PDbL+MFNWZ3zGZB1wISkQzf/J9b6GiPc8y8mQxvKDFcW83Ji0bpjvfjBYaZqaNYvWUl+FH6EgO85piLACZCZ/yx4zgYY3AcB9/3d/hsEZk4Buqhvidh04xSqRTFYpFoNEo+nycSieA4DmNjY7z//e/n9NNP5z3veQ/lcnnizzw6OkoymSSfzxONRqlWq0Sj9Sh1HGfiL7dsNovrumQyGYwx3HzzzaxYsYKvfe1rZLNZPM+b2Get3ePQBg1upVpSIpLmM2d8hUu+fzHb4gFroznSkqZb5pGuJiivb2NoU4WntmwjkX6c5HA3I91DZKLdRJ04Y/kqVdflrNlnE7UxMpkMpVIJEan/0z9mcaslYtEISBJjLZFIhFqtRiaTwfd9YrEYpVKJ9vb2lg3uUqlEV1cX+XyetrY2giDA8zw6Ojr4yU9+wh133EEQBLzzne+ks7OTWq1GR0fHRIu7WCwSj8epVqsAEy3uzs5ORkdHyWazbNq0iRUrVvCRj3yEWq3G8uXLGR0dpaOjg2Kx/h0142GfSqW0xa3UoaparbKg70h+8KYf8JYfvplH1j9CzI/SE+/GumBcw3Vv+Sy/efwB5nbM5eerf86sOV2sf347ifY2BrcPU3V9rrv7X/jE6z5FqVSio6ODWq1GzFb59j+dhvGrIJZL//73pDpnYIyh8/9v79zD5KqqRP/b59Srux5d/cibQAJpJciVVxInQBhINBDlOYPDQ5GryPgKdxQYAp9fAJ07d3iYBMVHZABhYBCUUQGZUVBUvntnBEMCJBEijSTk2d3pR3VXnao6j73vH+eR6pBHJ2NSXbh/31dfnbPP6Torq1LrrLP22mvl85RKJWKxGIVCgebmZgYGBmhubqa5ubneajlg4vE4rutimiae5/mTusETBUC5XGbJkiUsXbqUZ555hpNOOimKR7uui2EYKKWip44w7KGUIpFI8Oqrr3LOOedQKBQAP4nANM0orBSPx4FdTzna49Zo3sU0NzfT29vLlPRkvvNXK7nmB9fQM9DDjPZOTGUibY8f/r/HSJtpyhWLRCxO94sxjj1qFtt63mSovYcOZyrf//ljLJx2Dh/+wIfp7e0llYCXfv51CkWH8UfOovPEDyLizVSrVUzTpL+/P5qcbGtro7e3l/b29ob1uGOxGI7jYBgGjuNE/477778/8qIBbNvm8ssv54orruCiiy5i2rRp3H777Sil8DwvMsDxeJyrr76a7u5uHnnkER599NHIaAN4nsc999zD1VdfjZSSWCwWzSOYpjl6uf8U/3iNRnN4sSyLTCYDwKzULL5/xSNc8M8X8nrPBrKxLE2iiaqo0lvdyY7e7fTv7Ocjs8+lIzEZicn7M7N45pX/oC0ZI2nEGR4eptDTxVNP3kXPplWMn3Iy8/5mGfnx0zCEwDRNpJS0t7dHHndfXx/ZbLahPe5yuUxbWxtDQ0Pkcjlc18W2bR555BFse2SO97Zt27j99tt5+umnSafTrFq1Cs/zRpxjGAZPP/00SinWrFnzjusppbjnnnu49NJLyefzFItFhBCkUils2448/v2hV05qNA1I6J0ppTCEwYy2Tn752V8yY+J7GKoMsWHHH1i1aTWvbn6VbCbH7PfNpuyUebt7EyJmMLTV5sxjFpFpjrH04cW8ta2Lt7vW8fral5h3/k389eKHaJ94NAL/MT40KGFaoBCCWCyGlBLTNN/hLTaKBx7eeJLJJP39/ViWBYDjONE5y5cvH7GGY926dbzwwgvvMNrgx7hXr149wmhPmDCBBx98MNqPxWKMGzcOx3FoaWkhnU4D/lOUDpVoNO9iDMOgUqkgAm/YcRwmtkzkZ5/5KU+vfZqfrv13/mv9f7KjrxvLLtEnTaqmjbQluPDaht+zcPbZnNFxMePnCq5Zfhnv7TU5cdYC3nPKIpozLZGRDrMehBDYtk08HsfzPBKJRDRJubvBCR//xzphGuDQ0BBtbW2Rxx2GPsA34j/+8Y9pbW3do7HeHwsWLBhxI3Bdl507d5LP5ykUCpHHrdMBNZp3OZVKJQpNlMtl0uk0g4ODZLNZ5s9YwF/Pvpifrf4ZO4Z3YFdssqkM9DO91QAAGQdJREFUZatMtWyDErhnuRw5YSrz58ynrbWN3I42Nv/nK3zor75Ax/jJ9PX1kU6ncRyHWCwWGekwPzmVSjE4OBgt3Mlmsw2Zxx2mA8bjfrgonCCsNdBNTU0cbEPzT33qU9xxxx0888wz0ZhpmuRyuRHpgOAv3NEet0bzLqa5uZmhoSHA/8GHq/HCmG2pVOLsk86mMDhIcyJBebCPtx/8JpWu10hNmsKxX/oH7HgcE9i5Yzs71mwjmR7P1CNnMNTfT2s2i+04dD31I1764UOIeIpjz/8bjjlzPq3t7XieR0dHB8Vikfb29iiPudGoVqtkMhksy6KpqSlaxZhKpaJzbNsmmUxGmScHwgUXXAAwYqJTKUWpVCKdTkfjiURihFe+PxpT2xrNnzmlUilazVcul8lkMlHecPjeveYFxJa32Pj0D4g3pXn/V1aAEUeYBt7OHby29EY8YSArEvnaWsa//2Q2Pv4Am5//FdbwEJmp03nvhZdx3leXIV2H3z/3LA9/8jISLa3M/1/Xkpk4maM6OykUCjQ1NUWTpY1EbfxeKRWFeH7yk58wceJEhoeH2bRpE6tXr37HQqTR0NXVxSmnnEJXV1d0vYsuuiiaE6hNPTyQeQFtuDWaBiSZTI6Icdu2TSqVwnEcUqkUO5//OZuWLWXqpZ/mfTf8H4SA0obXCG2DEoLjly5HCajs2E7rb/8vtm1jCoNZi2+AWJxq2cIuW1h9PUilOOqU2Rx5yhwK/f38281fJjf1SK782l005XIN63HH43Gq1SqGYURL+YUQIzzku+++m7vvvvugPv+6665j27ZtLFu2DPDnJr74xS+STCaRUpJIJKKbxYHoUGeVaDQNSJjNUbsAREqJEILeX/+MN+66lWmXf4bc0e+hunUj1S2bEJUSolKCSgnKJcpvvo71xmu4w4OMnzOXyaf/JS1HTqfcu4PS1s1U+nbilkq4ZQvHsqgOF6kMFTBNk7+84hMMbd7MvZ//XJTG1oiEaZVhvDk0pMuWLTvouPbuhEYb/O9t6dKlFAq+HovFIuVyOaqDMlo9NuZtUqP5MyfM6hBCRCv5LMtC9HXT/ZOHOfLCj5Fs60AW+jAwECJYEQgIQKJA+ttIhW0V8ZTCleBJhVQKqfxtN3yXCg+J40Ei2cTpl3+cJ76+gm9+6pNc/8j366uQgyRcvp5KpRgYGEApxbe+9S2+9rWvjQiNtLa2YprmiLTIgYGBPX5mS0sL8Xg8upFKKaNzlVLce++9mKbJLbfcEmWqeJ53QOmA2uPWaBqQMKYdVp4rFArkW1rYsXYNuY6JpPPtyOIgVCxEtYhRtTCrJYyq5b9C77tcgkoRyiWkVUJZRTyriGsVcUvD2KUiTnEYuziMXRqmOuy/V4pDSNfhQ1d9moEtWxju6am3Sg6K4eFh8vk8tm2TzWb57ne/y1e/+tURi2+OO+44Vq9ezZYtW3jzzTfp6elh1apVzJ49+x2fN3PmTJ577jm2bNnC2rVr2bJlCy+++CInnHBCdI7neXz729/mjjvuYNu2bZRKJcD3/kfrcWvDrdE0IGFBomQyied5flpbYZDB3/wMoymFMzwAFQtVtqDiG2qjahGrljCrFqJiQdWKzvGsEqpsIcslZNlCWhauZeFaRRyrhB2+l0rYpSJ2qUi1VMSp2MTTGX79aGN63E1NTViWRSwWo7u7m5tvvnnE8fe9732sXLmStra2KBY+NDTEuHHjWLZsGZ2dndG5yWSS66+/ns7OTqrVKtlsFsdxmDBhAvfddx9z5swZ8dnLli2jVCpFHaF0OqBG8y4nDI2A/4O3bZukIaj88fe0LzgXWS7hGQamIXz3zADTMDEMkAqEVCAVSiqUlChPISV4UiIluFLhSIWjJI7nh1BcKf0xqXC9YFvBxGlH4fyJ4sGHG8dxaG5uplKp8NnPfjbKLgnZvn07N9xwA57nceyxx/LNb36TVCqFZVmcdNJJLFy4kDfeeAOAhQsXctZZZ2HbdnRDuPXWW1mzZg1SSjZt2jTi2kIIvvCFL/CjH/2IRCJxQKmG2nBrNA1IbfpalNJmCJT0kBUL1wDDMJGGQBkCDIEyBYSGSYKSCikl0vPfXQmuJ3EVOK7EVX5c2/akb8g9iSslthQ4nsKREseTVErFeqvjoAkbGMRiMe677z5+85vfcPnll0fH+/v7+e1vf8sxxxzDbbfdhmmaWJZFMpmkWq2OyATJZrOMGzcuyvJJp9PcfPPNLFq0iNWrV7/j2t/4xje47LLLRjSwGC3acGs0DYht29FKRc/zSKVSVAqDeCWLSvc2mnIteIaJYQqEAcIUIAwkBhKFqxSe9A2y64VetcJVEtsDJ/SoPX8yslwuU3UcSDZhSxUYbnCkR9WyaMycEkYUdTJNk+eff/4d58ycOZPHHnuMTCZDLBbj2Wefpaenh3w+zwknnMCVV16J67p84AMf4IUXXmDjxo00NTVx4YUXkkqleOKJJzj33HN55ZVXRnzu7373Oz760Y9GHv6BZOZow63RNCCpVIqenh6EEKTTab8PYjaDVDD0+nrMzmMRTSkwjMDTDjJJHBeRTOEp6Rte16W0bTOVUomKJ7E9RdVVVKVH1YV4+wTI5qhYZaq2jXA97OA8Ryps12PTunXMmD1n/0KPUcJOP8VikZUrV3L++eezYcMGNmzYABClB955550IIejr6+Paa6/l1FNP5fHHH+eiiy6KyrN+5jOf4fHHH2f58uWAX5dk6dKlI4zylClTWLBgAQ8//DBLliyhubl51FUBQ7Th1mgakLBZb7hYJJvNMlwc5rgl/8j6r3wRb22Jjvcej0om8AyBJ0BULeTgAOaEyUjXY7hrPZ6rqFSrVB2HqiepulB2PaqupOJJnB3bcDBR6RbMljzKquCaMRwPbE/StfZVjEQzx50+r94qOSjCxr6pVIpUKsWLL75IR0cHH//4x6NzXn/9dTZs2MDzzz/PJZdcwlVXXUVbW1uU7ud5XtQ8wfM8MpkM5513Hvfffz8rVqxg48aNUT0SgHw+z4oVK7jmmmuYPn161HXoQBbgaMOt0TQonudFfR99r9FEZFtxXIlRKtH/+5dpmXEshudiSg/hVHF6t8L2LX6utgRHSmzpe9C263vRHkHutgK7alNxPCqFYaqbN1PxJG48SXriZLZt3MTwsMW0Oe/h+DPOqLM2Do6wsW+1WqWtrY3W1lY2b95MpVKJFjWB73W/9dZb3Hbbbaxfv54nn3yS733veyilaGpqitIHjz/+eK6//npuvPFGHnvssXeEPwzDoFwus337dmbOnBkt8onH41QqlSjDZH+M2nALIUxgFbBVKXWuEGI68CjQDrwEXKGUsoUQSeBfgFOAPuASpdTG0V5Ho9Hsn3Cpdmi8w/KqRUCmUtjVCjgupcEBKA0hisMYhsBAoFB4SiKVb7hdSRCz3hW7dsP4t/Tj4VIqPKXwJHiOQ3FgkIpVxkymUKpx6m/vTiaTibqxDw4OkkgkePPNNzn11FM5++yzGRoaiiYwV65ciVKKp556irlz57JkyZKo2306nUYpxXXXXcdDDz00wmgvXrw48sjD4mBdXV1MnjyZXC6H53lRJspoORCP+++A14BcsH87sEIp9agQYiVwFfCd4H1AKTVDCHFpcN4lB3AdjUazH6rValTBzrIsmpub/TKrM/8HracvpPvnP0Hiovr6iAmJ4UqEIRCB4ZaqxhAr5ce2PTXCgLs1k5eu8icsPaVwHUV1oIBUYKZSnHfD30c1UhqNMORk2zYtLS0opZg3bx7z58+nUqlEnWkMw6Czs5Nrr70WgLvuuosvfelLUTqhbdvRKsnly5dHRvuWW27hc5/7HKlUKlrlmkqlqFQqUVVHIOoWP9rSuKNagCOEOAL4CHBvsC+A+cDjwSkPAhcG2xcE+wTHF4hGvR1rNGOUdDpNsVgcUUu6paWFqjDJHTUDV0LVkZStMuWyjeVJyq7Ecv33siupuL6xLjvKn5iUEjtI/3OUoioVrqdwlcAOPG5HSox0xg8lJJpwXJe5Hzq7IduWgV8et1aHYchjaGiIpqYmhoaGou72M2fOjP7Odd2ol2SlUiEej49oAhzS2dlJa2sr8XgcwzDI5XKUy2VaWlqi+iihp30g9cxH63HfBdwAZIP9dmBQKRUu5t8CTAm2pwCbAZRSrhCiEJy/c9RSaTSafWJZFtlsdsR2oVAgm81iTOvEGDeZyo4tOMrGRGAaBJUBfV9NqZFed7i4JsoW8TwczzfetgzzuRWuB5WBQaSA9y84i1RbO729veTz+UieRiKs8xLmUYdzBrFYLGoCrJTCNM0Rk4dCiCjvOqxhUvsKCbvBh2OO40R53mGIK4yj105g7o/9etxCiHOBHqXUS6P+1FEghPhbIcQqIcSqP1UVLo3mz4Uw7loul6MJr/Cx/qjTziQ15UjKnqQSZIf4Hrak4rpUXJey61F2vV3HIyMdTFR6ys/nDo15kOftSD+E0jFtOn9ct55zP7+YXC7XkN1vYFcqYGica3O6wwqMYfXF6dOnj2iM8Itf/AIgCpGE8e++vj7Ab1l2/PHHR8fCrBPDMPA8b8TfwZ8+j/s04HwhxIeBFH6M++tAXggRC7zuI4CtwflbganAFiFEDGjBn6QcgVLqHuAegAkTJjRq/r5GUxfCH3744w8zIEKDM+vvv8pTHz+PcrmIKYQ/Mal8r1sBEpBhFUAUrutnkvjGWeJ6YEvfmDtSBtknvgFPZnOMn/Fexs2YQdukSVG7r0YkbBKcy+UoFAokEgni8XjUSai/v59sNotlWeTzeebNm8cTTzxBqVRi8eLFTJ06NTLsAFu2bIkqAZ5yyilMmjQpqpMe1pQZGBiIOsuHrcts2/7TpgMqpW4CbgIQQpwJXK+U+pgQ4ofAxfiZJVcCTwR/8mSw/1/B8edUoxbr1WjGKJ7nRT/08JHesiwSiQTlcpn80cfQfOR0eta/jCEMzKikq0RhoETgAQaTk55UQQnXsB6JiDxtR0oqnh8ysaVHNpfHSCSYfsIJZPN5hoaGMAyjIb3usDpgpVIhn88jpcTzPNra2qK2bOVymWw2i1Iqqg8D0NvbS29v714/O3wKCmtvG4bBwMAA6XSa/v7+KIYehl3CZsGj4b9THXAJcK0Qogs/hn1fMH4f0B6MXwvc+N+4hkaj2QPpdJrh4WGKxSKxWCzKR7Ysi/b2dizLYtG3vkfVkVRdj7LjBeER5b/bkrLjh0+qYRjFU5Q9qLiCiiuxPUnV88cdT2K7Hq1TjqTztHmkmtMsvPRShoeH6ejoaNjJyWw2y8DAAIlEgoGBgSivOmyAvHPnTkzTZGhoCMuymD17NlOnTt3v506cOJGzzjoruiEkk0kMw4j6gXZ0dESZLOl0GuCAdHhAhlsp9Wul1LnB9h+VUnOUUjOUUh9VSlWD8UqwPyM4/scDuYZGo9k/5XKZ5uZmmpqaoiL84QrAQqFAKpVCxRKccMWnfUPt+YbbcnbFtv3sEs+Pf3uqxoj7y9qrrqQaxbsVuYlTOHrWHLZt3MgHP/lJCsNFmpqaGBwcHNHqq5GwLCvquJ7L5aKUxnw+H4VHPM8jnU6TSqU47bTTePDBB8nn83v9zEQiwb333suZZ55JMplkeHgYx3FQSkXZKgMDA37efdABBzggHep63BpNA5JMJnEcJ8pSKJfL0Qq+TCbjNwZobaNj7hkY4yZRdhWWK7E8PyVwV1qg2rXtSSqO53vZrp8iWPU8bKlI5FoYP6OTvp5urOEiR594Itlslmq1SjqdPqDKdmOJVCpFqVQiFotRKpWidMDwJjg8PIxpmlQqlagn5cyZM1mzZg0PPPAAuVyObDZLLpcjl8uxYsUKNmzYwNy5c8lms9i2TXNzM7FYLKorE5YocF2X5ubmEfW4R4te8q7RNCC1S7HDjIja2hnhpOX0OXOZ9YlP89yKO3GsUvT3KliIo5Q/SekRxrvxy7lGC3AkqbYOMhMmYZXLJJMpbn/2mUiG2knRRqS2vVhIbXuy2mNh+VzDMBg/fjyLFi3i7bffxnXdaGUkEM03hPW1pZRR9kjtdwT+/ERt1slo0YZbo2lAPM+LUtVCw+m6LoZh4DhO9J5IJJh31WfxlOKn//srqBEGys8w8RR+Tne4rF3tqsvtKoHhKQoDA0ybNIlP33knRlAJr1qtRjnJQoiG7PRea3TD1Y3ge+JhuVwY6Q2Hx2oXztSm9DmOQzwejzJFHMeJ/ta27ehY+J3V3ihGiw6VaDQNSJizXalUouL+4VjYtTx81DcMgzmXf4KLv/YNjjhpth/PDl5TZs0hNWEiFU8GL0XnGWdSlfhL4CVUrDInf+iDfPKf/onm1laSySRSSjKZDNVqlUwm05AZJUBkWMPFMKHxrDW64VL10AMPK/mFYZUwN1sIgWEYxOPxqJmzlJJYLBYdj8fjuK474lh4wzuQp5bGu0VqNBoA2traAP8RvqmpCSFENNba2ooQgsmTJ0fH53/ifzLvo5fg1XiAZjyOlB7S2+WJxxIJnJpmuQCJVIpEKhV5h7lcDiEE7e3tDZvDDf4NMJlMjtAh7AqXhMdqCbux7+lYyL7i1gcT094dbbg1mgYlXPQBu6rz7e/dzGRG9dmpIEVtd/b2uY1KuIgp3K4d331sNMcOFzpUotFoNA2GGAuLGltbW9UVV1xRbzH2SrVajVZRjVUKhQKxWCxK5h+LdHd3093dgVJjNwMhn9/KUUdN2f+JdcLzPPr6+hg/fny9RdkrpVIJz/PI5XL7P7lO9PX1kclkRr1SsR489NBDDAwM7NGtHxOGWwjRC5QYuxUEO9CyHQxatoNDy3ZwvNtkO0opNW5PB8aE4QYQQqxSSs2qtxx7Qst2cGjZDg4t28Hx5ySbjnFrNBpNg6ENt0aj0TQYY8lw31NvAfaBlu3g0LIdHFq2g+PPRrYxE+PWaDQazegYSx63RqPRaEZB3Q23EOIcIcQGIUSXEKLuTReEEBuFEGuFEC8LIVYFY21CiGeFEG8E762HSZb7hRA9Qoh1NWN7lEX4fCPQ46tCiJPrJN+tQoitgf5eDlrehcduCuTbIIQ4+xDKNVUI8SshxO+FEOuFEH8XjNddd/uQre56C66VEkK8KIR4JZDvK8H4dCHEC4EcjwkhEsF4MtjvCo5Pq4NsDwgh3qrR3YnBeD1+E6YQYo0Q4qfB/qHR2+7diQ/nCzCBN4GjgQTwCnBcnWXaCHTsNnYHcGOwfSNw+2GS5QzgZGDd/mQBPgz8ByCAvwBeqJN8t+K3t9v93OOC7zcJTA++d/MQyTUJODnYzgJ/CK5fd93tQ7a66y24ngAywXYceCHQyQ+AS4PxlcDngu3PAyuD7UuBx+og2wPAxXs4vx6/iWuBR4CfBvuHRG/19rjnAF3K76Zj4/evvKDOMu2JC4AHg+0HgQsPx0WVUs8D/aOU5QLgX5TPb/GbOU+qg3x74wLgUaVUVSn1FtCF//0fCrm2K6VWB9vDwGvAFMaA7vYh2944bHoLZFJKqWKwGw9eCpgPPB6M7667UKePAwuEODRFPPYh2944rL8JIcQRwEeAe4N9wSHSW70N9xRgc83+Fvb9n/hwoIBnhBAvCSH+NhiboJTaHmzvACbUR7R9yjKWdLk4eDS9vyasVBf5gkfQk/C9szGlu91kgzGit+Bx/2WgB3gW38sfVEq5e5Ahki84XsDvQXtYZFNKhbr7x0B3K4QQ4Tr2w627u4AbgLDUYjuHSG/1NtxjkdOVUicDi4AvCCHOqD2o/GebMZGKM5ZkqeE7wDHAicB2YFm9BBFCZIB/A76olBqqPVZv3e1BtjGjN6WUp5Q6ETgC37s/tl6y7M7usgkhjgduwpdxNtCG38j8sCKEOBfoUUq9dDiuV2/DvRWobZl8RDBWN5RSW4P3HuDH+P9xu8NHrOC9p34S7lWWMaFLpVR38OOSwD+z67H+sMonhIjjG8Z/VUr9KBgeE7rbk2xjRW+1KKUGgV8Bc/HDDGEZ6FoZIvmC4y1A32GU7Zwg/KSU37D8e9RHd6cB5wshNuKHfOcDX+cQ6a3ehvt3QGcw85rAD9I/WS9hhBBpIUQ23AYWAusCma4MTrsSeKI+EsI+ZHkS+EQwk/4XQKEmLHDY2C2GeBG+/kL5Lg1m06cDncCLh0gGAdwHvKaUWl5zqO6625tsY0FvgRzjhBD5YLsJ+BB+HP5XwMXBabvrLtTpxcBzwdPM4ZLt9ZqbscCPIdfq7rB8r0qpm5RSRyilpuHbseeUUh/jUOntUMysHsgLf+b3D/hxtC/XWZaj8WfwXwHWh/Lgx55+CbwB/AJoO0zyfB//sdnBj49dtTdZ8GfOvxXocS0wq07yPRRc/9XgP+ekmvO/HMi3AVh0COU6HT8M8irwcvD68FjQ3T5kq7vegmu9H1gTyLEOuLnmt/Ei/uToD4FkMJ4K9ruC40fXQbbnAt2tAx5mV+bJYf9NBNc9k11ZJYdEb3rlpEaj0TQY9Q6VaDQajeYA0YZbo9FoGgxtuDUajabB0IZbo9FoGgxtuDUajabB0IZbo9FoGgxtuDUajabB0IZbo9FoGoz/D3T+NYP8qlB8AAAAAElFTkSuQmCC\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": [],
+ "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",
+ "\n",
+ "### ओळख\n",
+ "बक्षीस फंक्शन हे एजंटच्या वर्तनाचे मूल्यांकन करण्यासाठी वापरले जाते. हे एजंटला योग्य कृती करण्यासाठी प्रोत्साहन देते आणि चुकीच्या कृती टाळण्यासाठी दंड देते.\n",
+ "\n",
+ "### महत्त्व\n",
+ "बक्षीस फंक्शन योग्य प्रकारे डिझाइन करणे अत्यंत महत्त्वाचे आहे कारण ते एजंटच्या शिकण्याच्या प्रक्रियेवर थेट परिणाम करते. चुकीचे बक्षीस फंक्शन एजंटला अयोग्य वर्तन शिकवू शकते.\n",
+ "\n",
+ "### डिझाइन टिप्स\n",
+ "- **स्पष्टता:** बक्षीस फंक्शन स्पष्ट आणि सोपे असावे. जटिल बक्षीस प्रणाली एजंटसाठी गोंधळ निर्माण करू शकते.\n",
+ "- **सुसंगतता:** बक्षीस फंक्शन एजंटच्या उद्दिष्टांशी सुसंगत असावे.\n",
+ "- **तत्काळता:** बक्षीस त्वरित दिले जावे, जेणेकरून एजंटला त्याच्या कृतींचा परिणाम समजेल.\n",
+ "\n",
+ "### उदाहरण\n",
+ "खाली दिलेले बक्षीस फंक्शन एजंटला लक्ष्य गाठण्यासाठी प्रोत्साहन देते:\n",
+ "\n",
+ "```python\n",
+ "def reward_function(agent_position, target_position):\n",
+ " distance = calculate_distance(agent_position, target_position)\n",
+ " if distance == 0:\n",
+ " return 100 # लक्ष्य गाठल्यावर मोठा बक्षीस\n",
+ " else:\n",
+ " return -distance # लक्ष्यापासून अंतरावर आधारित दंड\n",
+ "```\n",
+ "\n",
+ "### सामान्य चुका\n",
+ "- **अतिशय कठोर दंड:** कठोर दंड एजंटला गोंधळात टाकू शकतो आणि शिकण्याची प्रक्रिया मंद करू शकतो.\n",
+ "- **अतिशय उदार बक्षीस:** उदार बक्षीस एजंटला अयोग्य वर्तनासाठी प्रोत्साहन देऊ शकते.\n",
+ "- **अस्पष्ट उद्दिष्टे:** अस्पष्ट बक्षीस प्रणाली एजंटला योग्य वर्तन शिकण्यात अडथळा आणू शकते.\n",
+ "\n",
+ "### निष्कर्ष\n",
+ "बक्षीस फंक्शन डिझाइन करताना काळजीपूर्वक विचार करणे आवश्यक आहे. योग्य बक्षीस प्रणाली एजंटला प्रभावीपणे शिकण्यास मदत करू शकते आणि त्याच्या उद्दिष्टांपर्यंत पोहोचण्याची शक्यता वाढवते.\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-Learning अल्गोरिदम\n",
+ "\n",
+ "खरं तर शिकण्याचा अल्गोरिदम फारसा बदलत नाही, आपण फक्त बोर्ड स्थितीऐवजी `state` वापरतो.\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def probs(v,eps=1e-4):\n",
+ " v = v-v.min()+eps\n",
+ " v = v/v.sum()\n",
+ " return v"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ ""
+ ]
+ }
+ ],
+ "source": [
+ "\n",
+ "from IPython.display import clear_output\n",
+ "\n",
+ "lpath = []\n",
+ "\n",
+ "for epoch in range(10000):\n",
+ " clear_output(wait=True)\n",
+ " print(f\"Epoch = {epoch}\",end='')\n",
+ "\n",
+ " # Pick initial point\n",
+ " s = state(m)\n",
+ " \n",
+ " # Start travelling\n",
+ " n=0\n",
+ " cum_reward = 0\n",
+ " while True:\n",
+ " x,y = s.board.human\n",
+ " v = probs(Q[x,y])\n",
+ " while True:\n",
+ " a = random.choices(list(actions),weights=v)[0]\n",
+ " dpos = actions[a]\n",
+ " if s.board.is_valid(s.board.move_pos(s.board.human,dpos)):\n",
+ " break \n",
+ " s.move(dpos)\n",
+ " r = reward(s)\n",
+ " if abs(r)==100: # end of game\n",
+ " print(f\" {n} steps\",end='\\r')\n",
+ " lpath.append(n)\n",
+ " break\n",
+ " alpha = np.exp(-n / 3000)\n",
+ " gamma = 0.5\n",
+ " ai = action_idx[a]\n",
+ " Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())\n",
+ " n+=1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": "
",
+ "image/svg+xml": "\n\n\n\n",
+ "image/png": "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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "m.plot(Q)"
+ ]
+ },
+ {
+ "source": [
+ "## निकाल\n",
+ "\n",
+ "पहा, आपण पीटरला लांडग्याशी लढण्यासाठी प्रशिक्षण देण्यात यशस्वी झालो का!\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Killed by wolf = 1, won: 9 times, drown: 90 times\n"
+ ]
+ }
+ ],
+ "source": [
+ "def qpolicy(m):\n",
+ " x,y = m.human\n",
+ " v = probs(Q[x,y])\n",
+ " a = random.choices(list(actions),weights=v)[0]\n",
+ " return a\n",
+ "\n",
+ "print_statistics(qpolicy)"
+ ]
+ },
+ {
+ "source": [
+ "आता आपल्याला बुडण्याच्या खूपच कमी घटना दिसतात, पण पीटर अजूनही नेहमी लांडग्याला मारू शकत नाही. हायपरपॅरामिटर्ससह प्रयोग करून पाहा आणि तुम्ही हा परिणाम सुधारू शकता का ते पाहा.\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 13
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": "
",
+ "image/svg+xml": "\n\n\n\n",
+ "image/png": "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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "plt.plot(lpath)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n---\n\n**अस्वीकरण**: \nहा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.\n"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/8-Reinforcement/1-QLearning/solution/notebook.ipynb b/translations/mr/8-Reinforcement/1-QLearning/solution/notebook.ipynb
new file mode 100644
index 000000000..3261f6593
--- /dev/null
+++ b/translations/mr/8-Reinforcement/1-QLearning/solution/notebook.ipynb
@@ -0,0 +1,577 @@
+{
+ "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-08-29T19:41:12+00:00",
+ "source_file": "8-Reinforcement/1-QLearning/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "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` नावाची एक वर्ग (class) परिभाषित करू. या नोटबुकमध्ये खूप गोंधळ होऊ नये म्हणून, बोर्डासोबत काम करण्यासाठी लागणारा सर्व कोड स्वतंत्र `rlboard` मॉड्यूलमध्ये हलवला आहे, जो आपण आता आयात करू. या मॉड्यूलच्या आत डोकावून, अंमलबजावणीच्या अंतर्गत तपशीलांबद्दल अधिक माहिती मिळवू शकता.\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from rlboard import *"
+ ]
+ },
+ {
+ "source": [
+ "आता एक यादृच्छिक बोर्ड तयार करूया आणि तो कसा दिसतो ते पाहूया:\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": "
",
+ "image/svg+xml": "\n\n\n\n",
+ "image/png": "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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "width, height = 8,8\n",
+ "m = Board(width,height)\n",
+ "m.randomize(seed=13)\n",
+ "m.plot()"
+ ]
+ },
+ {
+ "source": [
+ "## क्रिया आणि धोरण\n",
+ "\n",
+ "आपल्या उदाहरणात, पीटरचा उद्देश सफरचंद शोधणे आहे, तर लांडगा आणि इतर अडथळ्यांपासून दूर राहणे आहे. हे करण्यासाठी, तो सफरचंद सापडेपर्यंत फिरू शकतो. त्यामुळे, कोणत्याही स्थानावर तो खालीलपैकी एक क्रिया निवडू शकतो: वर, खाली, डावीकडे आणि उजवीकडे. आपण या क्रियांना एक शब्दकोश म्हणून परिभाषित करू आणि त्यांना संबंधित समन्वय बदलांच्या जोड्यांशी नकाशित करू. उदाहरणार्थ, उजवीकडे (`R`) जाणे `(1,0)` या जोड्येशी संबंधित असेल.\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "actions = { \"U\" : (0,-1), \"D\" : (0,1), \"L\" : (-1,0), \"R\" : (1,0) }\n",
+ "action_idx = { a : i for i,a in enumerate(actions.keys()) }"
+ ]
+ },
+ {
+ "source": [
+ "आपल्या एजंट (पीटर) ची रणनीती तथाकथित **धोरण** द्वारे परिभाषित केली जाते. चला सर्वात सोप्या धोरणाचा विचार करू, ज्याला **रँडम वॉक** म्हणतात.\n",
+ "\n",
+ "## रँडम वॉक\n",
+ "\n",
+ "चला प्रथम रँडम वॉक रणनीती अंमलात आणून आपली समस्या सोडवूया.\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "18"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 5
+ }
+ ],
+ "source": [
+ "def random_policy(m):\n",
+ " return random.choice(list(actions))\n",
+ "\n",
+ "def walk(m,policy,start_position=None):\n",
+ " n = 0 # number of steps\n",
+ " # set initial position\n",
+ " if start_position:\n",
+ " m.human = start_position \n",
+ " else:\n",
+ " m.random_start()\n",
+ " while True:\n",
+ " if m.at() == Board.Cell.apple:\n",
+ " return n # success!\n",
+ " if m.at() in [Board.Cell.wolf, Board.Cell.water]:\n",
+ " return -1 # eaten by wolf or drowned\n",
+ " while True:\n",
+ " a = actions[policy(m)]\n",
+ " new_pos = m.move_pos(m.human,a)\n",
+ " if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:\n",
+ " m.move(a) # do the actual move\n",
+ " break\n",
+ " n+=1\n",
+ "\n",
+ "walk(m,random_policy)"
+ ]
+ },
+ {
+ "source": [
+ "चला रँडम वॉक प्रयोग अनेक वेळा चालवूया आणि घेतलेल्या सरासरी पावलांची संख्या पाहूया:\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Average path length = 32.87096774193548, eaten by wolf: 7 times\n"
+ ]
+ }
+ ],
+ "source": [
+ "def print_statistics(policy):\n",
+ " s,w,n = 0,0,0\n",
+ " for _ in range(100):\n",
+ " z = walk(m,policy)\n",
+ " if z<0:\n",
+ " w+=1\n",
+ " else:\n",
+ " s += z\n",
+ " n += 1\n",
+ " print(f\"Average path length = {s/n}, eaten by wolf: {w} times\")\n",
+ "\n",
+ "print_statistics(random_policy)"
+ ]
+ },
+ {
+ "source": [
+ "## बक्षीस फंक्शन\n",
+ "\n",
+ "आपली धोरण अधिक बुद्धिमान बनवण्यासाठी, आपल्याला समजून घ्यावे लागेल की कोणते हालचाली इतरांपेक्षा \"चांगल्या\" आहेत.\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "move_reward = -0.1\n",
+ "goal_reward = 10\n",
+ "end_reward = -10\n",
+ "\n",
+ "def reward(m,pos=None):\n",
+ " pos = pos or m.human\n",
+ " if not m.is_valid(pos):\n",
+ " return end_reward\n",
+ " x = m.at(pos)\n",
+ " if x==Board.Cell.water or x == Board.Cell.wolf:\n",
+ " return end_reward\n",
+ " if x==Board.Cell.apple:\n",
+ " return goal_reward\n",
+ " return move_reward"
+ ]
+ },
+ {
+ "source": [
+ "## क्यू-लर्निंग\n",
+ "\n",
+ "क्यू-टेबल किंवा बहुआयामी अॅरे तयार करा. आपला बोर्ड `width` x `height` या परिमाणांचा असल्यामुळे, आपण क्यू-टेबलला `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-टेबल बोर्डवर टेबल दर्शविण्यासाठी प्लॉट फंक्शनला पास करा:\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": "
",
+ "image/svg+xml": "\n\n\n\n",
+ "image/png": "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1fB4PKxatYoRI0bw4YcfMn/+fDp27Mj69eutjlZjx44d2O12rrrqKv71r3+xcOFCCgoKOHDggNXRanz66acMGjSIDh064Ha7efHFF1m0aFFY/QX42muv8bvf/Q6n08mll17Kn/70J1577bVGXacUtzhC586d2b59O/369aNNmzZs2bKF7Oxsq2PVkp2dzY8//kj//v1JTU3l+++/p0uXLlbHqhEVFUXr1q1RStG/f38CgQCHDh2iVatWVkerkZaWhmmatGnThvPOO4+ioiKSkpKIj4+3OlqNdu3asWfPHs4//3zOPPNMtm/fTufOneudj/Fky87OJjc3l/79+9OiRQs2btzY6O8XKW5xhO7du1NQUMD8+fN57733eP/99znvvPOsjlXLeeedx5dffsn69eu55557yMvLo3v37lbHquFwOOjcuTNvvvkmLpeLoUOHopQiKyvL6mg1MjIySElJYebMmXi9XiZNmkRWVhaJiYlWR6vRsWNHXC4Xf/vb31i7di0vv/wy55xzTlgVd69evdi4cSPLly/nmWeeYc2aNY0+dBcms7yLcPPFF1/w3Xff8cMPP4TdmCJAcnIyubm5vPfee1x99dVhVdrV+vfvz9atW8nJyWHlypVhtSVb7b777uPee+9lypQpfP/991bHOaq3336bwsJClixZwrZt26yOcwSbzcaWLVv4/PPPUUoxY8aMRl+nFLeoU7du3ejWrZvVMeo1ZMgQqyMc09SpU62OUC+lFH/5y1+sjlGvVq1aceedd1odo14XX3zxSVuXDJUIIUSEkeIWQogII8UthBARRopbCCEijBS3EEJEGCluIYSIMMcsbqXU6Uqpz5RS3yulvlNK/SG0PF0p9YlSKjf0OS20XCmlnldK7VBKbVJKndvY/wghhDiVHM8WdxC4T2vdFbgA+L1SqivwELBCa90JWBH6GuBXQKfQx3jgxQZPLYQQp7BjFrfWulBr/Z/Q7UrgByALuA6YF3rYPOD60O3rgPm6yv8BqUqp8LlAgxBCRLifNcatlGoHnAOsBVporQtDd+0HWoRuZwE/Hva0vaFlP32t8Uqp9Uqp9YGA52fGFkKIU9dxF7dSKhFYBEzSWte6ar2uumr4z7pyuNZ6tta6t9a6t8MR93OeKoQQp7TjKm6llIOq0l6otX4/tLioeggk9Ln6Ir4FwOmHPb11aJkQQogG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1r+LXq+XioqKsM5Y3/tEhcObKD09Xd9///1Wx6iTy+Xi4MGDtGvXzuoodSosLCQmJob09HSro9Rp27ZttG/fPqyHUTZu3MjZZ59tdYw6BQIBvv56F4cONf7F+n+p2NhSzjnHR6tGmv2oIeTl5ZGZmdnoM9WciGeeeYbS0tKj7yTSWlv+kZmZqcNZbm6unj17ttUx6vXBBx/o1atXWx2jXo8//rguLS21OkadTNPUEyZMsDpGvUpKSnSvXjm66pJg4fnRsuXXevHixVZ/q+o1a9YsnZuba3WMeoV68aidKWPcQggRYaS4hRAiwkhxCyFEhJHiFkKICCPFLYQQEUaKWwghIowUtxBCRBgpbiGEiDBS3EIIEWGkuIUQIsJIcQshRISR4hZCiAgjxS2EEBFGilsIISKMFLcQQkQYKW4hhIgwTba4V69eHdZTZAWDQdatW2d1jHqVlJSQm5trdYx67dixg5KSEqtj1Oubb74hGAxaHSOiuVwuNm/ebHWMeu3du5eCgoKTsq4wmXOy4axfv54PPviA2NhY/vWvf3HxxRdz2WWXWR2rlnfffZeNGzcSHR3NkiVLGD16NGeeeabVsWp55plnqKiowGazEQgEeOSRR4iLi7M6Vg2Px8O0adNwOByYpklSUhKTJ0+2OlYtO3bsYO7cucTExLBkyRKys7MZNmyY1bEizssvv8zu3btxOBy89dZbTJo0iebNm1sdq4Zpmjz22GM1G4pKKf70pz9hszXednGT2uLWWrNhwwZM0+QPf/gDLVu25PPPPw+rLW+tNf/85z/p3r07d999N0VFRezatSvsMs6bN48bbriB3/72t3zyySe43W6rY9Xi9Xr597//zejRo7nxxhuZP39+2H0Pd+3axf79+5kwYQJnn302H374YVhljARaaxYuXMill17K+PHj2bhxI8XFxWH1fTRNk7fffpvhw4dz8803884772CaZqOus0kVd35+Pps2baKyspJf/epXjB49mtjYWFavXm11tBrvv/8+F1xwAXPnzmXy5MlMmzaNhQsXUlFRYXW0GlOnTiUnJ4fbbruN5cuX88YbbzB+/HirY9Uybtw4Jk2axI033ojP5+P5559nypQpVseqUVlZyfz588nKymLw4MEMHjyYiy66iEWLFlkdLaL87W9/48477+Shhx7ixRdf5B//+AdTp05t9GL8OcaP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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "m.plot(Q)"
+ ]
+ },
+ {
+ "source": [
+ "## Q-Learning चा सार: बेलमन समीकरण आणि शिक्षण अल्गोरिदम\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",
+ "## 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": [
+ "आम्ही मूळ व्हेक्टरमध्ये `eps` ची थोडीशी मात्रा जोडतो जेणेकरून प्रारंभिक स्थितीत, जेव्हा व्हेक्टरचे सर्व घटक समान असतात, शून्याने भागण्याची समस्या टाळता येईल.\n",
+ "\n",
+ "खरा शिक्षण अल्गोरिदम आम्ही 5000 प्रयोगांसाठी चालवणार आहोत, ज्याला **epochs** असेही म्हणतात:\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ ""
+ ]
+ }
+ ],
+ "source": [
+ "\n",
+ "from IPython.display import clear_output\n",
+ "\n",
+ "lpath = []\n",
+ "\n",
+ "for epoch in range(10000):\n",
+ " clear_output(wait=True)\n",
+ " print(f\"Epoch = {epoch}\",end='')\n",
+ "\n",
+ " # Pick initial point\n",
+ " m.random_start()\n",
+ " \n",
+ " # Start travelling\n",
+ " n=0\n",
+ " cum_reward = 0\n",
+ " while True:\n",
+ " x,y = m.human\n",
+ " v = probs(Q[x,y])\n",
+ " a = random.choices(list(actions),weights=v)[0]\n",
+ " dpos = actions[a]\n",
+ " m.move(dpos,check_correctness=False) # we allow player to move outside the board, which terminates episode\n",
+ " r = reward(m)\n",
+ " cum_reward += r\n",
+ " if r==end_reward or cum_reward < -1000:\n",
+ " print(f\" {n} steps\",end='\\r')\n",
+ " lpath.append(n)\n",
+ " break\n",
+ " alpha = np.exp(-n / 3000)\n",
+ " gamma = 0.5\n",
+ " ai = action_idx[a]\n",
+ " Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())\n",
+ " n+=1"
+ ]
+ },
+ {
+ "source": [
+ "अल्गोरिदम कार्यान्वित केल्यानंतर, Q-टेबलमध्ये प्रत्येक टप्प्यावर विविध कृतींच्या आकर्षकतेची व्याख्या करणाऱ्या मूल्यांसह अद्यतनित केले पाहिजे. येथे टेबल दृश्यात दाखवा:\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": "
",
+ "image/svg+xml": "\n\n\n\n",
+ "image/png": "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DBhgaPG22+307NmTbt26hQv1W2+9xWuvvUbv3r0544wzDP/lEqvUr7UIevPNN7n55ptPuWhX8Xg8XHPNNaxcuTJCyequZcuWMWHCBGbMmMFzzz3HE088YXSkOkkIgc1mw2w289RTT7Fs2TKWLl164r9YCywWS/h2dtdddx2apjFv3jw+/vhjo6PFLFW4I2TBggXcddddR/VnCyFwOBwnbDUIIUhISDhq27Zt27j55pv57rvvopK3LiguLmbt2rUsWLCAl19+mcTERFq0aMHatWuNjlbnTZkyhT179sTkxcCxY8fy9NNPs3v3bj744AOj48QkVbhrSNM03n77bSZPnkxZWdlR32vVqhWzZ88+YX+d1WplyZIlpKSkHDVJZ/v27Vx55ZXs2LGjQY42SU5O5qyzzmLZsmWMGzeOyy67jBdffJFdu3ZRVlbWIF+TSLHb7XTp0oWcnJxqRzwZyW63M3bsWDZv3szKlStj/t+6trt0VOGuASklK1eu5Prrr6ekpCS8vXHjxvTv359vv/2WzMzMk/pHPfvss/n111+55557jmp95+bm0q9fP/Lz86PyHGKZxWKhdevWLF68mBUrVjBnzhzuv/9+9u/fz7XXXsvy5cvZs2eP0THrrAsvvJDmzZvz5ptvxmTxdjgcPPjggyxZsiTmuw1r+xeLKtw1oOs6f//734/q027atCnTpk3jk08+oVGjRid9rKrp8ZMmTeK22247agnQiooK5s6dG/Otjmg477zzWLZsGX6/n48//pg777yTKVOm8N5777FmzRreeOMNHnnkEbxer9FRj+nLL7/kvPPOi8klXYUQjBkzBiEE//d//2d0nGMSQvDMM8+wZs2amOzWqZKZmUnLli354YcfauV8qnDXgBCCVq1ahdcZsVqtTJ8+nVGjRpGcnPy73z4JIcjIyOC+++5j/Pjx4e12u73WR1IkJCQwatSomFnf4qabbjpqpl9cXBwPP/wwo0eP5txzz+XKK6/kiSeeCA91ixUrVqzgvPPOIy4uzugo1frLX/5Cy5YtefLJJ2PqtasihOCuu+7il19+4ZNPPonJjFWFe9OmTbVyPlW4a0AIwfTp05k8eTJt27Zl/fr1jB49+jcXGn/vf7S0tDRmzJjByy+/TJs2bZg9e3a4ZVRbqropYr0rok2bNgwaNIi33nqLjh070r17d7766isOHDhg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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "m.plot(Q)"
+ ]
+ },
+ {
+ "source": [
+ "## धोरण तपासणे\n",
+ "\n",
+ "Q-Table प्रत्येक स्थितीतील प्रत्येक क्रियेच्या \"आकर्षकतेची\" यादी देते, त्यामुळे आपल्या जगात कार्यक्षम नेव्हिगेशन परिभाषित करण्यासाठी याचा वापर करणे खूप सोपे आहे. सर्वात सोप्या प्रकरणात, आपण फक्त Q-Table मधील सर्वाधिक मूल्याशी संबंधित क्रिया निवडू शकतो:\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": [],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 15
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": "
",
+ "image/svg+xml": "\n\n\n\n",
+ "image/png": "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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "plt.plot(lpath)"
+ ]
+ },
+ {
+ "source": [
+ "जेव्हा आपण पाहतो की सुरुवातीला सरासरी मार्गाची लांबी वाढली आहे. याचे कारण असे असू शकते की जेव्हा आपल्याला वातावरणाबद्दल काहीही माहिती नसते - तेव्हा आपण खराब स्थितीत, पाण्यात किंवा लांडग्याच्या जाळ्यात अडकण्याची शक्यता असते. जसजसे आपण अधिक शिकतो आणि ही माहिती वापरायला सुरुवात करतो, तसतसे आपण वातावरणाचा अधिक वेळासाठी शोध घेऊ शकतो, परंतु तरीही आपल्याला सफरचंद कुठे आहेत हे चांगल्या प्रकारे माहित नसते.\n",
+ "\n",
+ "जेव्हा आपण पुरेसे शिकतो, तेव्हा एजंटसाठी उद्दिष्ट साध्य करणे सोपे होते आणि मार्गाची लांबी कमी होऊ लागते. तथापि, आपण अजूनही शोध घेण्यास मोकळे असतो, त्यामुळे आपण अनेकदा सर्वोत्तम मार्गापासून दूर जातो आणि नवीन पर्यायांचा शोध घेतो, ज्यामुळे मार्ग अपेक्षेपेक्षा लांब होतो.\n",
+ "\n",
+ "आपण या ग्राफवर आणखी एक गोष्ट पाहतो, ती म्हणजे काही वेळानंतर लांबी अचानक वाढली. याचा अर्थ प्रक्रियेचा स्टोकेस्टिक (अनिश्चित) स्वभाव आहे, आणि कधीकधी आपण Q-Table गुणांक खराब करू शकतो, त्यांना नवीन मूल्यांनी अधिलिखित करून. हे आदर्शतः शिकण्याचा दर कमी करून (उदा. प्रशिक्षणाच्या शेवटी आपण Q-Table मूल्ये फक्त थोड्या प्रमाणात समायोजित करतो) कमी केले पाहिजे.\n",
+ "\n",
+ "एकूणच, हे लक्षात ठेवणे महत्त्वाचे आहे की शिकण्याच्या प्रक्रियेचा यश आणि गुणवत्ता मोठ्या प्रमाणात अशा पॅरामीटर्सवर अवलंबून असते, जसे की शिकण्याचा दर, शिकण्याचा दर कमी होणे आणि डिस्काउंट फॅक्टर. यांना **हायपरपॅरामीटर्स** म्हणतात, जे प्रशिक्षणादरम्यान आपण ऑप्टिमाइझ करतो अशा **पॅरामीटर्स** पासून वेगळे असतात (उदा. Q-Table गुणांक). सर्वोत्तम हायपरपॅरामीटर मूल्ये शोधण्याच्या प्रक्रियेला **हायपरपॅरामीटर ऑप्टिमायझेशन** म्हणतात, आणि यासाठी स्वतंत्र विषय आवश्यक आहे.\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "source": [
+ "## व्यायाम\n",
+ "#### एक अधिक वास्तववादी पीटर आणि वुल्फ जग\n",
+ "\n",
+ "आपल्या परिस्थितीत, पीटर जवळजवळ थकलेला किंवा भुकेला न होता फिरू शकत होता. अधिक वास्तववादी जगात, त्याला वेळोवेळी बसून विश्रांती घ्यावी लागते आणि स्वतःला अन्न द्यावे लागते. खालील नियम लागू करून आपले जग अधिक वास्तववादी बनवूया:\n",
+ "\n",
+ "1. एका ठिकाणाहून दुसऱ्या ठिकाणी जाण्याने पीटरची **ऊर्जा** कमी होते आणि त्याला **थकवा** येतो.\n",
+ "2. सफरचंद खाल्ल्याने पीटर अधिक ऊर्जा मिळवू शकतो.\n",
+ "3. झाडाखाली किंवा गवतावर विश्रांती घेऊन (उदा. झाड किंवा गवत असलेल्या बोर्डच्या ठिकाणी चालत जाणे - हिरव्या क्षेत्रात) पीटर थकवा दूर करू शकतो.\n",
+ "4. पीटरला वुल्फ शोधून त्याला मारावे लागते.\n",
+ "5. वुल्फला मारण्यासाठी, पीटरकडे विशिष्ट पातळीची ऊर्जा आणि थकवा असणे आवश्यक आहे, अन्यथा तो लढाई हरतो.\n",
+ "\n",
+ "वर दिलेल्या बक्षीस फंक्शनमध्ये खेळाच्या नियमांनुसार बदल करा, reinforcement learning algorithm चालवा जेणेकरून खेळ जिंकण्यासाठी सर्वोत्तम रणनीती शिकता येईल, आणि random walk च्या निकालांची तुमच्या algorithm सोबत तुलना करा जिंकलेल्या आणि हरलेल्या खेळांच्या संख्येच्या दृष्टीने.\n",
+ "\n",
+ "> **Note**: तुम्हाला 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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/8-Reinforcement/2-Gym/README.md b/translations/mr/8-Reinforcement/2-Gym/README.md
new file mode 100644
index 000000000..4b82dd581
--- /dev/null
+++ b/translations/mr/8-Reinforcement/2-Gym/README.md
@@ -0,0 +1,333 @@
+
+## पूर्वअट
+
+या धड्यात, आम्ही **OpenAI Gym** नावाच्या लायब्ररीचा वापर विविध **परिसरांचे** अनुकरण करण्यासाठी करणार आहोत. तुम्ही हा धडा स्थानिकरित्या (उदा. Visual Studio Code मधून) चालवू शकता, अशा वेळी अनुकरण एका नवीन विंडोमध्ये उघडेल. ऑनलाइन कोड चालवताना, तुम्हाला कोडमध्ये काही बदल करावे लागू शकतात, जसे [येथे](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णन केले आहे.
+
+## OpenAI Gym
+
+मागील धड्यात, खेळाचे नियम आणि स्थिती आम्ही स्वतः परिभाषित केलेल्या `Board` वर्गाद्वारे दिले होते. येथे आम्ही एक विशेष **अनुकरण वातावरण** वापरणार आहोत, जे संतुलन राखणाऱ्या खांबाच्या भौतिकशास्त्राचे अनुकरण करेल. reinforcement learning अल्गोरिदम प्रशिक्षणासाठी सर्वात लोकप्रिय अनुकरण वातावरणांपैकी एक [Gym](https://gym.openai.com/) आहे, ज्याचे व्यवस्थापन [OpenAI](https://openai.com/) करते. या जिमचा वापर करून आम्ही cartpole अनुकरणापासून Atari गेम्सपर्यंत विविध **परिसर** तयार करू शकतो.
+
+> **टीप**: 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
+```
+
+## व्यायाम - cartpole वातावरण प्रारंभ करा
+
+cartpole संतुलन समस्येसाठी काम करण्यासाठी, आपल्याला संबंधित वातावरण प्रारंभ करणे आवश्यक आहे. प्रत्येक वातावरणाशी संबंधित असते:
+
+- **Observation space** जे वातावरणाकडून मिळणाऱ्या माहितीची रचना परिभाषित करते. cartpole समस्येसाठी, आपल्याला खांबाची स्थिती, वेग आणि इतर काही मूल्ये मिळतात.
+
+- **Action space** जे संभाव्य क्रिया परिभाषित करते. आपल्या प्रकरणात action space discrete आहे आणि दोन क्रिया आहेत - **डावीकडे** आणि **उजवीकडे**. (कोड ब्लॉक 2)
+
+1. प्रारंभ करण्यासाठी, खालील कोड टाइप करा:
+
+ ```python
+ env = gym.make("CartPole-v1")
+ print(env.action_space)
+ print(env.observation_space)
+ print(env.action_space.sample())
+ ```
+
+वातावरण कसे कार्य करते हे पाहण्यासाठी, 100 टप्प्यांसाठी एक लहान अनुकरण चालवूया. प्रत्येक टप्प्यावर, आम्ही घेण्याची क्रिया प्रदान करतो - या अनुकरणात आम्ही `action_space` मधून यादृच्छिकपणे एक क्रिया निवडतो.
+
+1. खालील कोड चालवा आणि त्याचा परिणाम पहा.
+
+ ✅ लक्षात ठेवा की हा कोड स्थानिक Python इंस्टॉलेशनवर चालवणे अधिक योग्य आहे! (कोड ब्लॉक 3)
+
+ ```python
+ env.reset()
+
+ for i in range(100):
+ env.render()
+ env.step(env.action_space.sample())
+ env.close()
+ ```
+
+ तुम्हाला खालील प्रतिमेसारखे काहीतरी दिसेल:
+
+ 
+
+1. अनुकरणादरम्यान, आपल्याला कसे कार्य करावे हे ठरवण्यासाठी निरीक्षणे मिळवणे आवश्यक आहे. प्रत्यक्षात, step फंक्शन वर्तमान निरीक्षणे, एक reward फंक्शन, आणि 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
+ ```
+
+ अनुकरणाच्या प्रत्येक टप्प्यावर परत केलेला observation vector खालील मूल्ये समाविष्ट करतो:
+ - गाडीची स्थिती
+ - गाडीचा वेग
+ - खांबाचा कोन
+ - खांबाचा फिरण्याचा दर
+
+1. त्या संख्यांचे किमान आणि जास्तीत जास्त मूल्य मिळवा: (कोड ब्लॉक 5)
+
+ ```python
+ print(env.observation_space.low)
+ print(env.observation_space.high)
+ ```
+
+ तुम्ही हे देखील लक्षात घेऊ शकता की प्रत्येक अनुकरण टप्प्यावर reward मूल्य नेहमी 1 असते. कारण आपले ध्येय शक्य तितक्या वेळा टिकून राहणे आहे, म्हणजे खांबाला शक्य तितक्या वेळेस सरळ स्थितीत ठेवणे.
+
+ ✅ प्रत्यक्षात, CartPole अनुकरण सोडवले जाते जर आपण 100 सलग चाचण्यांमध्ये सरासरी 195 reward मिळवू शकलो.
+
+## स्थितीचे discretization
+
+Q-Learning मध्ये, आपल्याला Q-Table तयार करणे आवश्यक आहे जे प्रत्येक स्थितीत काय करावे हे परिभाषित करते. हे करण्यासाठी, स्थिती **discreet** असणे आवश्यक आहे, अधिक स्पष्टपणे, त्यात मर्यादित संख्येने discrete मूल्ये असावीत. म्हणून, आपल्याला काहीतरी करून आपली निरीक्षणे **discretize** करणे आवश्यक आहे, त्यांना मर्यादित स्थितींच्या संचाशी नकाशित करणे.
+
+हे करण्याचे काही मार्ग आहेत:
+
+- **Bins मध्ये विभागणे**. जर आपल्याला एखाद्या मूल्याचा अंतराल माहित असेल, तर आपण या अंतरालाला **bins** मध्ये विभागू शकतो आणि नंतर मूल्य बदलून त्याच्या bin क्रमांकाने बदलू शकतो. हे numpy च्या [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) पद्धतीचा वापर करून केले जाऊ शकते. या प्रकरणात, आपल्याला स्थितीचा आकार अचूकपणे माहित असेल, कारण तो डिजिटलायझेशनसाठी निवडलेल्या bins च्या संख्येवर अवलंबून असेल.
+
+✅ आपण linear interpolation वापरून मूल्ये काही मर्यादित अंतरालात (उदा. -20 ते 20) आणू शकतो आणि नंतर rounding करून संख्यांना integers मध्ये रूपांतरित करू शकतो. यामुळे स्थितीच्या आकारावर थोडेसे नियंत्रण मिळते, विशेषतः जर आपल्याला इनपुट मूल्यांच्या अचूक श्रेणी माहित नसतील. उदाहरणार्थ, आपल्या प्रकरणात 4 पैकी 2 मूल्ये त्यांच्या वरच्या/खालच्या मर्यादांवर मर्यादित नाहीत, ज्यामुळे स्थितींची अमर्यादित संख्या होऊ शकते.
+
+आपल्या उदाहरणात, आपण दुसऱ्या दृष्टिकोनाचा अवलंब करू. तुम्ही नंतर लक्षात घेऊ शकता की अपरिभाषित वरच्या/खालच्या मर्यादांनंतरही, ती मूल्ये क्वचितच विशिष्ट मर्यादित अंतरालाच्या बाहेर जातात, त्यामुळे ती स्थिती ज्यांचे मूल्य अत्यंत आहे ते फारच दुर्मिळ असतील.
+
+1. येथे एक फंक्शन आहे जे आपल्या मॉडेलकडून निरीक्षण घेईल आणि 4 integer मूल्यांच्या tuple तयार करेल: (कोड ब्लॉक 6)
+
+ ```python
+ def discretize(x):
+ return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
+ ```
+
+1. चला bins वापरून दुसऱ्या discretization पद्धतीचा शोध घेऊया: (कोड ब्लॉक 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)] # intervals of values for each parameter
+ nbins = [20,20,10,10] # number of bins for each parameter
+ 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. आता एक लहान अनुकरण चालवूया आणि त्या discrete वातावरण मूल्यांचे निरीक्षण करूया. `discretize` आणि `discretize_bins` दोन्ही वापरून पहा आणि काही फरक आहे का ते पहा.
+
+ ✅ `discretize_bins` bin क्रमांक परत करते, जे 0-आधारित असते. त्यामुळे इनपुट व्हेरिएबलच्या 0 च्या आसपासच्या मूल्यांसाठी ते अंतरालाच्या मध्यभागी असलेल्या क्रमांक (10) परत करते. `discretize` मध्ये, आम्ही आउटपुट मूल्यांच्या श्रेणीची काळजी घेतली नाही, त्यांना नकारात्मक होऊ दिले, त्यामुळे स्थिती मूल्ये shift झाली नाहीत आणि 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` सुरू असलेली ओळ uncomment करा जर तुम्हाला वातावरण कसे कार्य करते ते पाहायचे असेल. अन्यथा तुम्ही ते background मध्ये चालवू शकता, जे जलद आहे. आम्ही Q-Learning प्रक्रियेदरम्यान हे "अदृश्य" कार्य वापरणार आहोत.
+
+## Q-Table ची रचना
+
+मागील धड्यात, स्थिती 0 ते 8 पर्यंतच्या संख्यांच्या साध्या जोड्या होती, त्यामुळे Q-Table ला numpy tensor द्वारे 8x8x2 आकाराने दर्शवणे सोयीचे होते. जर आपण bins discretization वापरतो, तर आपल्या स्थिती व्हेक्टरचा आकार देखील माहित आहे, त्यामुळे आपण समान दृष्टिकोन वापरू शकतो आणि स्थितीला 20x20x10x10x2 आकाराच्या array ने दर्शवू शकतो (येथे 2 म्हणजे action space चे परिमाण आहे, आणि पहिली परिमाणे observation space मधील प्रत्येक पॅरामीटरसाठी निवडलेल्या bins च्या संख्येशी संबंधित आहेत).
+
+तथापि, कधीकधी observation space च्या अचूक परिमाणे माहित नसतात. `discretize` फंक्शनच्या बाबतीत, आपली स्थिती विशिष्ट मर्यादेत राहते याची आपल्याला कधीही खात्री नसते, कारण काही मूळ मूल्ये मर्यादित नाहीत. त्यामुळे, आम्ही थोडा वेगळा दृष्टिकोन वापरणार आहोत आणि Q-Table ला dictionary द्वारे दर्शवणार आहोत.
+
+1. *(state,action)* जोड्याचा dictionary key म्हणून वापर करा, आणि value Q-Table entry value शी संबंधित असेल. (कोड ब्लॉक 9)
+
+ ```python
+ Q = {}
+ actions = (0,1)
+
+ def qvalues(state):
+ return [Q.get((state,a),0) for a in actions]
+ ```
+
+ येथे आम्ही `qvalues()` नावाचे फंक्शन देखील परिभाषित करतो, जे दिलेल्या स्थितीसाठी Q-Table मूल्यांची यादी परत करते जी सर्व संभाव्य क्रियांशी संबंधित असते. जर entry Q-Table मध्ये उपस्थित नसेल, तर आम्ही default म्हणून 0 परत करू.
+
+## चला Q-Learning सुरू करूया
+
+आता पीटरला संतुलन शिकवण्यासाठी तयार आहोत!
+
+1. प्रथम, काही hyperparameters सेट करूया: (कोड ब्लॉक 10)
+
+ ```python
+ # hyperparameters
+ alpha = 0.3
+ gamma = 0.9
+ epsilon = 0.90
+ ```
+
+ येथे, `alpha` म्हणजे **learning rate** जे प्रत्येक टप्प्यावर Q-Table च्या वर्तमान मूल्ये किती प्रमाणात adjust करावी हे परिभाषित करते. मागील धड्यात आम्ही 1 ने सुरुवात केली आणि नंतर प्रशिक्षणादरम्यान `alpha` कमी केले. या उदाहरणात आपण सोपेपणासाठी ते स्थिर ठेवणार आहोत, आणि तुम्ही नंतर `alpha` मूल्ये adjust करण्याचा प्रयोग करू शकता.
+
+ `gamma` म्हणजे **discount factor** जे भविष्याच्या reward ला वर्तमान reward वर किती प्रमाणात प्राधान्य द्यावे हे दर्शवते.
+
+ `epsilon` म्हणजे **exploration/exploitation factor** जे ठरवते की आपल्याला exploration ला प्राधान्य द्यावे की exploitation ला. आपल्या अल्गोरिदममध्ये, आम्ही `epsilon` टक्के प्रकरणांमध्ये Q-Table मूल्यांनुसार पुढील क्रिया निवडणार आहोत, आणि उर्वरित प्रकरणांमध्ये आम्ही यादृच्छिक क्रिया अंमलात आणणार आहोत. यामुळे आपल्याला शोध स्थानाच्या अशा भागांचा शोध घेता येईल जे आपण कधीही पाहिले नाहीत.
+
+ ✅ संतुलनाच्या बाबतीत - यादृच्छिक क्रिया निवडणे (exploration) चुकीच्या दिशेने यादृच्छिक धक्का देण्यासारखे असेल, आणि खांबाने त्या "चुका" मधून संतुलन कसे पुनर्प्राप्त करावे हे शिकले पाहिजे.
+
+### अल्गोरिदम सुधारित करा
+
+आपल्या मागील धड्यातील अल्गोरिदममध्ये दोन सुधारणा करू शकतो:
+
+- **सरासरी cumulative reward** गणना करा, अनेक अनुकरणांवर. आम्ही प्रत्येक 5000 iterations नंतर प्रगती प्रिंट करू आणि त्या कालावधीतील cumulative reward ची सरासरी काढू. याचा अर्थ असा की जर आपण 195 पेक्षा जास्त गुण मिळवले - तर आपण समस्या सोडवली असे मानू शकतो, आवश्यकतेपेक्षा उच्च गुणवत्तेसह.
+
+- **कमाल सरासरी cumulative परिणाम** (`Qmax`) गणना करा, आणि आम्ही त्या परिणामाशी संबंधित Q-Table साठवू. तुम्ही प्रशिक्षण चालवताना लक्षात येईल की कधीकधी सरासरी cumulative परिणाम कमी होतो, आणि आम्हाला प्रशिक्षणादरम्यान पाहिलेल्या सर्वोत्तम मॉडेलशी संबंधित Q-Table च्या मूल्ये ठेवायची आहेत.
+
+1. प्रत्येक अनुकरणाच्या cumulative rewards `rewards` व्हेक्टरमध्ये गोळा करा जेणेकरून नंतर plotting करता येईल. (कोड ब्लॉक 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
+ # == do the simulation ==
+ while not done:
+ s = discretize(obs)
+ if random.random() Qmax:
+ Qmax = np.average(cum_rewards)
+ Qbest = Q
+ cum_rewards=[]
+ ```
+
+तुम्ही या परिणामांमधून काय लक्षात घेऊ शकता:
+
+- **आपल्या ध्येयाच्या जवळ**. आम्ही 100+ सलग अनुकरणांच्या सरासरी cumulative rewards मध्ये 195 मिळवण्याच्या ध्येयाच्या खूप जवळ आहोत, किंवा आम्ही प्रत्यक्षात ते साध्य केले असेल! जरी आपल्याला कमी संख्या मिळाल्या तरी, आम्हाला माहित नाही, कारण आम्ही 5000 runs वर सरासरी काढतो, आणि औपचारिक निकषांमध्ये फक्त 100 runs आवश्यक आहेत.
+
+- **Reward कमी होतो**. कधीकधी reward कमी होतो, याचा अर्थ असा की आपण Q-Table मध्ये आधी शिकलेल्या मूल्यांना "नष्ट" करू शकतो आणि परिस्थिती वाईट बनवणाऱ्या नवीन मूल्यांसह बदलू शकतो.
+
+हे निरीक्षण अधिक स्पष्टपणे दिसते जर आपण प्रशिक्षण प्रगतीचे प्लॉटिंग केले.
+
+## प्रशिक्षण प्रगतीचे प्लॉटिंग
+
+प्रशिक्षणादरम्यान, आम्ही प्रत्येक iteration वर cumulative reward मूल्य `rewards` व्हेक्टरमध्ये गोळा केले आहे. येथे ते iteration क्रमांकाच्या विरुद्ध प्लॉट केल्यावर कसे दिसते:
+
+```python
+plt.plot(rewards)
+```
+
+
+
+या ग्राफमधून काहीही सांगणे शक्य नाही, कारण stochastic प्रशिक्षण प्रक्रियेच्या स्वरूपामुळे प्रशिक्षण सत्रांची लांबी खूप वेगळी असते. या ग्राफचा अधिक अर्थ लावण्यासाठी, आपण 100 चाचण्यांवर **running average** गणना करू शकतो. हे सोयीस्करपणे `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))
+```
+
+
+
+## hyperparameters बदलणे
+
+शिकणे अधिक स्थिर करण्यासाठी, प्रशिक्षणादरम्यान काही hyperparameters adjust करणे योग्य ठरते. विशेषतः:
+
+- **learning rate** (`alpha`) साठी, आपण 1 च्या जवळपासच्या मूल्यांनी सुरुवात करू शकतो आणि नंतर हा parameter कमी करत राहू शकतो. कालांतराने, आपल्याला Q-Table मध्ये चांगले probability मूल्ये मिळतील, आणि त्यामुळे आपल्याला त्यांना थोडे adjust करावे लागेल, आणि नवीन मूल्यांसह पूर्णपणे overwrite करू नये.
+
+- **epsilon वाढवा**. आपण `epsilon` हळूहळू वाढवू इच्छितो, जेणेकरून कमी शोध घेऊन अधिक exploitation करू शकू. कमी `epsilon` मूल्याने सुरुवात करणे आणि जवळजवळ 1 पर्यंत जाणे योग्य ठरते.
+> **कार्य 1**: हायपरपॅरामीटरच्या मूल्यांशी खेळा आणि पाहा की तुम्ही उच्च एकूण बक्षीस मिळवू शकता का. तुम्हाला 195 पेक्षा जास्त मिळत आहे का?
+> **कार्य 2**: समस्या औपचारिकपणे सोडवण्यासाठी, तुम्हाला 100 सलग रनमध्ये 195 सरासरी बक्षीस मिळवणे आवश्यक आहे. प्रशिक्षणादरम्यान ते मोजा आणि खात्री करा की तुम्ही समस्या औपचारिकपणे सोडवली आहे!
+
+## कृतीत परिणाम पाहणे
+
+प्रशिक्षित मॉडेल कसे वागते हे प्रत्यक्ष पाहणे मनोरंजक ठरेल. चला सिम्युलेशन चालवूया आणि प्रशिक्षणादरम्यान वापरलेल्या त्याच कृती निवड धोरणाचे अनुसरण करूया, Q-Table मधील संभाव्यता वितरणानुसार नमुना घेऊन: (कोड ब्लॉक 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()
+```
+
+तुम्हाला असे काहीतरी दिसेल:
+
+
+
+---
+
+## 🚀आव्हान
+
+> **कार्य 3**: येथे, आम्ही Q-Table ची अंतिम प्रत वापरत होतो, जी कदाचित सर्वोत्तम नसेल. लक्षात ठेवा की आम्ही सर्वोत्तम कामगिरी करणारा Q-Table `Qbest` व्हेरिएबलमध्ये साठवला आहे! `Qbest` ला `Q` वर कॉपी करून आणि त्याच उदाहरणाचा प्रयत्न करून पहा की तुम्हाला काही फरक जाणवतो का.
+
+> **कार्य 4**: येथे आम्ही प्रत्येक टप्प्यावर सर्वोत्तम कृती निवडत नव्हतो, तर संबंधित संभाव्यता वितरणासह नमुना घेत होतो. नेहमीच सर्वोत्तम कृती निवडणे, ज्या Q-Table मूल्य सर्वाधिक आहे, अधिक अर्थपूर्ण ठरेल का? हे `np.argmax` फंक्शन वापरून करता येते, जे उच्च Q-Table मूल्याशी संबंधित कृती क्रमांक शोधते. हे धोरण अंमलात आणा आणि ते संतुलन सुधारते का ते पाहा.
+
+## [व्याख्यानानंतरचा क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/48/)
+
+## असाइनमेंट
+[माउंटन कार ट्रेन करा](assignment.md)
+
+## निष्कर्ष
+
+आता आपण एजंट्सना चांगले परिणाम साध्य करण्यासाठी प्रशिक्षण देणे शिकले आहे, फक्त त्यांना गेमच्या इच्छित स्थितीची व्याख्या करणारे बक्षीस फंक्शन प्रदान करून आणि त्यांना हुशारीने शोध जागा एक्सप्लोर करण्याची संधी देऊन. आपण Q-Learning अल्गोरिदम यशस्वीरित्या डिस्क्रीट आणि सतत वातावरणाच्या बाबतीत लागू केला आहे, परंतु डिस्क्रीट कृतींसह.
+
+हे देखील महत्त्वाचे आहे की ज्या परिस्थितीत कृती स्थिती सतत असते आणि निरीक्षण जागा खूपच जटिल असते, जसे की अटारी गेम स्क्रीनवरील प्रतिमा, त्या अभ्यासाव्यात. अशा समस्यांमध्ये चांगले परिणाम साध्य करण्यासाठी आपल्याला अधिक शक्तिशाली मशीन लर्निंग तंत्रांचा, जसे की न्यूरल नेटवर्क्सचा, वापर करावा लागतो. हे अधिक प्रगत विषय आपल्या आगामी प्रगत AI कोर्सचा विषय आहेत.
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/8-Reinforcement/2-Gym/assignment.md b/translations/mr/8-Reinforcement/2-Gym/assignment.md
new file mode 100644
index 000000000..48def24a5
--- /dev/null
+++ b/translations/mr/8-Reinforcement/2-Gym/assignment.md
@@ -0,0 +1,57 @@
+
+# ट्रेन माउंटन कार
+
+[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-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/mr/8-Reinforcement/2-Gym/notebook.ipynb b/translations/mr/8-Reinforcement/2-Gym/notebook.ipynb
new file mode 100644
index 000000000..3b30490dd
--- /dev/null
+++ b/translations/mr/8-Reinforcement/2-Gym/notebook.ipynb
@@ -0,0 +1,392 @@
+{
+ "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-08-29T19:44:53+00:00",
+ "source_file": "8-Reinforcement/2-Gym/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "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": [],
+ "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": [],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#code block 9"
+ ]
+ },
+ {
+ "source": [],
+ "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": [],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 20
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": "
",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/png": "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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "plt.plot(rewards)"
+ ]
+ },
+ {
+ "source": [
+ "या ग्राफवरून काहीही सांगणे शक्य नाही, कारण स्टोकेस्टिक प्रशिक्षण प्रक्रियेच्या स्वरूपामुळे प्रशिक्षण सत्रांची लांबी मोठ्या प्रमाणात बदलते. या ग्राफचा अधिक अर्थ लावण्यासाठी, आपण प्रयोगांच्या मालिकेवर **संचलित सरासरी** गणना करू शकतो, समजा 100. हे `np.convolve` वापरून सोयीस्करपणे करता येते:\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 22
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": "
",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/png": "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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "#code block 12"
+ ]
+ },
+ {
+ "source": [
+ "## हायपरपॅरामीटर्स बदलणे आणि परिणाम प्रत्यक्षात पाहणे\n",
+ "\n",
+ "आता प्रशिक्षित मॉडेल कसे वागते हे प्रत्यक्ष पाहणे मनोरंजक ठरेल. चला सिम्युलेशन चालवूया, आणि आम्ही प्रशिक्षणादरम्यान वापरलेल्या त्याच कृती निवडण्याच्या धोरणाचे अनुसरण करू: Q-टेबलमधील संभाव्यता वितरणानुसार नमुना घेणे:\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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/8-Reinforcement/2-Gym/solution/Julia/README.md b/translations/mr/8-Reinforcement/2-Gym/solution/Julia/README.md
new file mode 100644
index 000000000..dd8223ce6
--- /dev/null
+++ b/translations/mr/8-Reinforcement/2-Gym/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/8-Reinforcement/2-Gym/solution/R/README.md b/translations/mr/8-Reinforcement/2-Gym/solution/R/README.md
new file mode 100644
index 000000000..d09ca7462
--- /dev/null
+++ b/translations/mr/8-Reinforcement/2-Gym/solution/R/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/8-Reinforcement/2-Gym/solution/notebook.ipynb b/translations/mr/8-Reinforcement/2-Gym/solution/notebook.ipynb
new file mode 100644
index 000000000..4ef58341e
--- /dev/null
+++ b/translations/mr/8-Reinforcement/2-Gym/solution/notebook.ipynb
@@ -0,0 +1,524 @@
+{
+ "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-08-29T19:46:12+00:00",
+ "source_file": "8-Reinforcement/2-Gym/solution/notebook.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "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": [],
+ "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": [],
+ "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": [],
+ "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": [],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 20
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": "
",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/png": "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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "plt.plot(rewards)"
+ ]
+ },
+ {
+ "source": [
+ "या ग्राफवरून काहीही सांगणे शक्य नाही, कारण स्टोकेस्टिक प्रशिक्षण प्रक्रियेच्या स्वरूपामुळे प्रशिक्षण सत्रांची लांबी मोठ्या प्रमाणात बदलते. या ग्राफचा अधिक अर्थ लावण्यासाठी, आपण प्रयोगांच्या मालिकेवर **रनिंग सरासरी** गणना करू शकतो, समजा 100. हे `np.convolve` वापरून सोयीस्करपणे करता येऊ शकते:\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 22
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": "
",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/png": "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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "def running_average(x,window):\n",
+ " return np.convolve(x,np.ones(window)/window,mode='valid')\n",
+ "\n",
+ "plt.plot(running_average(rewards,100))"
+ ]
+ },
+ {
+ "source": [
+ "## हायपरपॅरामिटर्स बदलणे आणि परिणाम प्रत्यक्षात पाहणे\n",
+ "\n",
+ "आता प्रशिक्षित मॉडेल कसे वागते हे प्रत्यक्ष पाहणे मनोरंजक ठरेल. चला सिम्युलेशन चालवूया, आणि आम्ही प्रशिक्षणादरम्यान ज्या कृती निवडण्याच्या धोरणाचे अनुसरण केले होते, त्याचप्रमाणे पुढे जाऊ: Q-टेबलमधील संभाव्यता वितरणानुसार नमुना घेणे:\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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/8-Reinforcement/README.md b/translations/mr/8-Reinforcement/README.md
new file mode 100644
index 000000000..f95b74a01
--- /dev/null
+++ b/translations/mr/8-Reinforcement/README.md
@@ -0,0 +1,67 @@
+
+# reinforcement learning ची ओळख
+
+reinforcement learning, RL, हे supervised learning आणि unsupervised learning यांच्यासोबत मशीन लर्निंगचे एक मूलभूत पॅराडाइम मानले जाते. RL म्हणजे निर्णय घेणे: योग्य निर्णय देणे किंवा त्यातून शिकणे.
+
+कल्पना करा की तुमच्याकडे स्टॉक मार्केटसारखे एक सिम्युलेटेड वातावरण आहे. जर तुम्ही एखादा नियम लागू केला तर काय होईल? त्याचा सकारात्मक परिणाम होतो का किंवा नकारात्मक? जर काही नकारात्मक घडले, तर तुम्हाला त्या _नकारात्मक reinforcement_ वरून शिकून मार्ग बदलण्याची गरज आहे. जर सकारात्मक परिणाम झाला, तर तुम्हाला त्या _सकारात्मक reinforcement_ वर आधारित पुढे जायचे आहे.
+
+
+
+> पीटर आणि त्याचे मित्र भुकेल्या लांडग्यापासून पळून जाण्याचा प्रयत्न करत आहेत! प्रतिमा [Jen Looper](https://twitter.com/jenlooper) यांच्याकडून
+
+## प्रादेशिक विषय: पीटर आणि लांडगा (रशिया)
+
+[पीटर आणि लांडगा](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) हे रशियन संगीतकार [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) यांनी लिहिलेले एक संगीत परीकथा आहे. ही कथा तरुण पायोनियर पीटरची आहे, जो धाडसाने आपल्या घरातून बाहेर पडून जंगलात लांडग्याचा पाठलाग करतो. या विभागात, आपण मशीन लर्निंग अल्गोरिदम्स प्रशिक्षित करू जे पीटरला मदत करतील:
+
+- **आसपासचा परिसर शोधणे** आणि एक आदर्श नेव्हिगेशन नकाशा तयार करणे
+- **स्केटबोर्ड वापरणे शिकणे** आणि त्यावर संतुलन राखणे, जेणेकरून तो वेगाने फिरू शकेल.
+
+[](https://www.youtube.com/watch?v=Fmi5zHg4QSM)
+
+> 🎥 वर दिलेल्या प्रतिमेवर क्लिक करा आणि Prokofiev यांचे पीटर आणि लांडगा ऐका
+
+## reinforcement learning
+
+मागील विभागांमध्ये, तुम्ही मशीन लर्निंग समस्यांचे दोन प्रकार पाहिले:
+
+- **Supervised**, जिथे आपल्याकडे अशा डेटासेट्स असतात जे आपण सोडवू इच्छित समस्येचे नमुना समाधान सुचवतात. [Classification](../4-Classification/README.md) आणि [Regression](../2-Regression/README.md) हे supervised learning चे कार्य आहेत.
+- **Unsupervised**, जिथे आपल्याकडे लेबल केलेले प्रशिक्षण डेटा नसतो. unsupervised learning चे मुख्य उदाहरण म्हणजे [Clustering](../5-Clustering/README.md).
+
+या विभागात, आम्ही तुम्हाला एका नवीन प्रकारच्या लर्निंग समस्येशी परिचित करून देऊ ज्यासाठी लेबल केलेल्या प्रशिक्षण डेटाची आवश्यकता नसते. अशा समस्यांचे अनेक प्रकार आहेत:
+
+- **[Semi-supervised learning](https://wikipedia.org/wiki/Semi-supervised_learning)**, जिथे आपल्याकडे मोठ्या प्रमाणात unlabeled डेटा असतो जो मॉडेल प्री-ट्रेन करण्यासाठी वापरला जाऊ शकतो.
+- **[Reinforcement learning](https://wikipedia.org/wiki/Reinforcement_learning)**, जिथे एखादा agent काही सिम्युलेटेड वातावरणात प्रयोग करून कसे वागावे हे शिकतो.
+
+### उदाहरण - संगणक खेळ
+
+समजा तुम्हाला संगणकाला एखादा खेळ खेळायला शिकवायचे आहे, जसे की चेस किंवा [Super Mario](https://wikipedia.org/wiki/Super_Mario). संगणकाला खेळ खेळण्यासाठी, प्रत्येक गेम स्टेटमध्ये कोणते पाऊल उचलायचे हे त्याला अंदाज करावे लागेल. हे classification समस्येसारखे वाटू शकते, पण तसे नाही - कारण आपल्याकडे स्टेट्स आणि संबंधित कृतींसह डेटासेट नाही. जरी आपल्याकडे चेसच्या विद्यमान सामन्यांचा डेटा किंवा Super Mario खेळणाऱ्या खेळाडूंच्या रेकॉर्डिंगचा डेटा असला तरी, तो डेटा पुरेशा मोठ्या संख्येने संभाव्य स्टेट्स कव्हर करणार नाही.
+
+विद्यमान गेम डेटाचा शोध घेण्याऐवजी, **Reinforcement Learning** (RL) ही कल्पना *संगणकाला अनेक वेळा खेळायला लावणे* आणि परिणामांचे निरीक्षण करणे यावर आधारित आहे. त्यामुळे, Reinforcement Learning लागू करण्यासाठी आपल्याला दोन गोष्टींची आवश्यकता आहे:
+
+- **एक वातावरण** आणि **एक सिम्युलेटर** जे आपल्याला अनेक वेळा खेळ खेळण्याची परवानगी देईल. हा सिम्युलेटर सर्व गेम नियम तसेच संभाव्य स्टेट्स आणि कृती परिभाषित करेल.
+
+- **एक reward function**, जे प्रत्येक पाऊल किंवा खेळादरम्यान आपण किती चांगले काम केले हे सांगेल.
+
+इतर प्रकारच्या मशीन लर्निंग आणि RL मधील मुख्य फरक म्हणजे RL मध्ये आपल्याला खेळ संपेपर्यंत आपण जिंकतो की हरतो हे सहसा माहित नसते. त्यामुळे, एखादे विशिष्ट पाऊल चांगले आहे की नाही हे आपण सांगू शकत नाही - आपल्याला फक्त खेळाच्या शेवटी एक reward मिळते. आणि आपले उद्दिष्ट असे अल्गोरिदम्स डिझाइन करणे आहे जे अनिश्चित परिस्थितीत मॉडेल प्रशिक्षित करण्यास अनुमती देतील. आपण **Q-learning** नावाच्या एका RL अल्गोरिदमबद्दल शिकू.
+
+## धडे
+
+1. [reinforcement learning आणि Q-Learning ची ओळख](1-QLearning/README.md)
+2. [gym simulation environment वापरणे](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/mr/9-Real-World/1-Applications/README.md b/translations/mr/9-Real-World/1-Applications/README.md
new file mode 100644
index 000000000..db4d1c85e
--- /dev/null
+++ b/translations/mr/9-Real-World/1-Applications/README.md
@@ -0,0 +1,147 @@
+
+# पोस्टस्क्रिप्ट: वास्तविक जगतात मशीन लर्निंग
+
+
+> स्केच नोट: [टोमोमी इमुरा](https://www.twitter.com/girlie_mac)
+
+या अभ्यासक्रमात, तुम्ही डेटाचे प्रशिक्षणासाठी तयारी करण्याचे आणि मशीन लर्निंग मॉडेल तयार करण्याचे अनेक मार्ग शिकला आहात. तुम्ही क्लासिक रिग्रेशन, क्लस्टरिंग, क्लासिफिकेशन, नॅचरल लँग्वेज प्रोसेसिंग, आणि टाइम सिरीज मॉडेल्स तयार केले. अभिनंदन! आता तुम्हाला कदाचित प्रश्न पडत असेल की, हे सर्व कशासाठी आहे... या मॉडेल्सचे वास्तविक जगात काय उपयोग आहेत?
+
+उद्योगात AI (जो प्रामुख्याने डीप लर्निंगचा उपयोग करतो) बद्दल खूप रस निर्माण झाला असला तरी, क्लासिकल मशीन लर्निंग मॉडेल्ससाठी अजूनही महत्त्वाचे उपयोग आहेत. तुम्ही कदाचित आजही यापैकी काही उपयोग करत असाल! या धड्यात, तुम्ही पाहाल की आठ वेगवेगळ्या उद्योगांमध्ये आणि विषय-विशिष्ट क्षेत्रांमध्ये हे मॉडेल्स कसे वापरले जातात, ज्यामुळे त्यांच्या अनुप्रयोगांना अधिक कार्यक्षम, विश्वासार्ह, बुद्धिमान आणि वापरकर्त्यांसाठी उपयुक्त बनवले जाते.
+
+## [पूर्व-व्याख्यान क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/49/)
+
+## 💰 वित्त
+
+वित्त क्षेत्रात मशीन लर्निंगसाठी अनेक संधी आहेत. या क्षेत्रातील अनेक समस्या ML च्या मदतीने मॉडेलिंग आणि सोडवण्यासाठी योग्य आहेत.
+
+### क्रेडिट कार्ड फसवणूक शोधणे
+
+आम्ही या अभ्यासक्रमात [k-means क्लस्टरिंग](../../5-Clustering/2-K-Means/README.md) बद्दल शिकलो, पण ते क्रेडिट कार्ड फसवणुकीशी संबंधित समस्या सोडवण्यासाठी कसे वापरले जाऊ शकते?
+
+k-means क्लस्टरिंग क्रेडिट कार्ड फसवणूक शोधण्याच्या तंत्रात **आउटलायर डिटेक्शन** म्हणून उपयुक्त ठरते. डेटाच्या संचातील निरीक्षणांमधील अपवाद किंवा विचलने आपल्याला सांगू शकतात की क्रेडिट कार्ड सामान्य पद्धतीने वापरले जात आहे की काहीतरी असामान्य घडत आहे. खालील पेपरमध्ये दाखवल्याप्रमाणे, तुम्ही k-means क्लस्टरिंग अल्गोरिदम वापरून क्रेडिट कार्ड डेटा वर्गीकृत करू शकता आणि प्रत्येक व्यवहाराला तो किती आउटलायर आहे यावर आधारित क्लस्टरमध्ये वर्गीकृत करू शकता. नंतर, तुम्ही फसवणूक आणि वैध व्यवहारांसाठी सर्वात जोखमीच्या क्लस्टर्सचे मूल्यांकन करू शकता.
+[संदर्भ](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/)
+
+## 🎓 शिक्षण
+
+शैक्षणिक क्षेत्र देखील एक खूपच मनोरंजक क्षेत्र आहे जिथे ML लागू केले जाऊ शकते. परीक्षांमध्ये किंवा निबंधांमध्ये फसवणूक शोधणे किंवा दुरुस्ती प्रक्रियेमध्ये जाणिवपूर्वक किंवा अनवधानाने होणारा पक्षपात व्यवस्थापित करणे यासारख्या समस्या सोडवता येऊ शकतात.
+
+### विद्यार्थ्यांचे वर्तन भाकीत करणे
+
+[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/)
+
+## 👜 किरकोळ व्यापार
+
+किरकोळ व्यापार क्षेत्राला ML चा फायदा होऊ शकतो, ग्राहकांचा प्रवास अधिक चांगला बनवण्यापासून ते इन्व्हेंटरी योग्य प्रकारे साठवण्यापर्यंत.
+
+### ग्राहक प्रवास वैयक्तिकृत करणे
+
+Wayfair, एक कंपनी जी फर्निचरसारख्या घरगुती वस्तू विकते, ग्राहकांना त्यांच्या आवडीनुसार आणि गरजेनुसार योग्य उत्पादने शोधण्यात मदत करणे महत्त्वाचे मानते. या लेखात, कंपनीचे अभियंते वर्णन करतात की ते ML आणि NLP चा वापर करून "ग्राहकांसाठी योग्य निकाल कसे सादर करतात". विशेषतः, त्यांचा क्वेरी इंटेंट इंजिन ग्राहक पुनरावलोकनांवर एंटिटी एक्स्ट्रॅक्शन, क्लासिफायर ट्रेनिंग, अॅसेट आणि मत एक्स्ट्रॅक्शन, आणि सेंटिमेंट टॅगिंग वापरतो. हा ऑनलाइन किरकोळ व्यापारात 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/)
+
+## 🏥 आरोग्य सेवा
+
+आरोग्य सेवा क्षेत्रात संशोधन कार्ये ऑप्टिमाइझ करण्यासाठी आणि रुग्णांना पुन्हा भरती करणे किंवा रोगांचा प्रसार थांबवणे यासारख्या लॉजिस्टिक समस्यांसाठी ML चा उपयोग होऊ शकतो.
+
+### क्लिनिकल चाचण्यांचे व्यवस्थापन
+
+क्लिनिकल चाचण्यांमधील विषारीपणा औषध निर्मात्यांसाठी एक मोठी चिंता आहे. किती विषारीपणा सहनशील आहे? या अभ्यासात, विविध क्लिनिकल चाचणी पद्धतींचे विश्लेषण केल्यामुळे क्लिनिकल चाचणी परिणामांच्या शक्यता भाकीत करण्यासाठी एक नवीन दृष्टिकोन विकसित झाला. विशेषतः, त्यांनी रँडम फॉरेस्टचा वापर करून एक [क्लासिफायर](../../4-Classification/README.md) तयार केला जो औषधांच्या गटांमध्ये फरक करू शकतो.
+[संदर्भ](https://www.sciencedirect.com/science/article/pii/S2451945616302914)
+
+### रुग्णालय पुन्हा भरती व्यवस्थापन
+
+रुग्णालयातील काळजी महागडी आहे, विशेषतः जेव्हा रुग्णांना पुन्हा भरती करावे लागते. या पेपरमध्ये, एका कंपनीने [क्लस्टरिंग](../../5-Clustering/README.md) अल्गोरिदम वापरून पुन्हा भरती होण्याची शक्यता भाकीत करण्यासाठी ML चा कसा उपयोग केला यावर चर्चा केली आहे. हे क्लस्टर्स विश्लेषकांना "पुन्हा भरती होणाऱ्या गटांचा शोध घेण्यास मदत करतात ज्यांचा एक सामान्य कारण असू शकतो".
+[संदर्भ](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)" नावाच्या नाविन्यपूर्ण दृष्टिकोनाचा वापर करून, त्यांनी जंगलातील वणव्याला "लँडस्केपमधील कोणत्याही सेलमधील एजंट" म्हणून पाहिले.
+[संदर्भ](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 तंत्रांचा वापर करून एक प्रणाली तयार केली जाऊ शकते आणि सर्वोत्तम मॉडेल तैनात केले जाऊ शकते: "ही प्रणाली डेटामधून वैशिष्ट्ये काढण्यासाठी नॅचरल लँग्वेज प्रोसेसिंगवर आधारित आहे आणि नंतर ही वैशिष्ट्ये Naive Bayes, Support Vector Machine (SVM), Random Forest (RF), Stochastic Gradient Descent (SGD), आणि Logistic Regression (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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/50/)
+
+## पुनरावलोकन आणि स्व-अभ्यास
+
+Wayfair च्या डेटा सायन्स टीमने त्यांच्या कंपनीत मशीन लर्निंगचा कसा उपयोग केला आहे यावर काही रोचक व्हिडिओ तयार केले आहेत. [त्यावर एक नजर टाकणे](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos) नक्कीच फायदेशीर ठरेल!
+
+## असाइनमेंट
+
+[मशीन लर्निंग scavenger hunt](assignment.md)
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही.
\ No newline at end of file
diff --git a/translations/mr/9-Real-World/1-Applications/assignment.md b/translations/mr/9-Real-World/1-Applications/assignment.md
new file mode 100644
index 000000000..918f170f3
--- /dev/null
+++ b/translations/mr/9-Real-World/1-Applications/assignment.md
@@ -0,0 +1,27 @@
+
+# एक एमएल शोध मोहीम
+
+## सूचना
+
+या धड्यात, तुम्ही अनेक वास्तविक जीवनातील समस्या जाणून घेतल्या ज्या पारंपरिक मशीन लर्निंग (ML) वापरून सोडवल्या गेल्या. जरी डीप लर्निंग, एआयमधील नवीन तंत्र आणि साधनांचा वापर, तसेच न्यूरल नेटवर्क्सचा उपयोग यामुळे या क्षेत्रांमध्ये मदत करणारी साधने तयार करण्याचा वेग वाढला असला तरी, या अभ्यासक्रमातील तंत्रांचा वापर करून पारंपरिक एमएल अजूनही खूप महत्त्वाचे आहे.
+
+या असाइनमेंटमध्ये, कल्पना करा की तुम्ही एका हॅकाथॉनमध्ये सहभागी होत आहात. या अभ्यासक्रमातून शिकलेल्या गोष्टींचा वापर करून, या धड्यात चर्चिलेल्या क्षेत्रांपैकी एका क्षेत्रातील समस्या सोडवण्यासाठी पारंपरिक एमएलचा वापर करून उपाय सुचवा. एक सादरीकरण तयार करा ज्यामध्ये तुम्ही तुमची कल्पना कशी अंमलात आणाल हे चर्चा करा. जर तुम्ही नमुना डेटा गोळा करून तुमच्या संकल्पनेला समर्थन देण्यासाठी एक एमएल मॉडेल तयार करू शकला, तर बोनस गुण मिळतील!
+
+## मूल्यमापन निकष
+
+| निकष | उत्कृष्ट | समाधानकारक | सुधारणा आवश्यक |
+| ---------- | ----------------------------------------------------------------- | --------------------------------------------- | ---------------------- |
+| | पॉवरपॉइंट सादरीकरण सादर केले आहे - मॉडेल तयार केल्यास बोनस गुण | एक साधे, नाविन्यशून्य सादरीकरण सादर केले आहे | काम अपूर्ण आहे |
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/9-Real-World/2-Debugging-ML-Models/README.md b/translations/mr/9-Real-World/2-Debugging-ML-Models/README.md
new file mode 100644
index 000000000..c6e1442ca
--- /dev/null
+++ b/translations/mr/9-Real-World/2-Debugging-ML-Models/README.md
@@ -0,0 +1,162 @@
+
+# पोस्टस्क्रिप्ट: मशीन लर्निंगमध्ये जबाबदार AI डॅशबोर्ड घटकांचा वापर करून मॉडेल डीबगिंग
+
+## [पूर्व-व्याख्यान क्विझ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/5/)
+
+## परिचय
+
+मशीन लर्निंग आपल्या दैनंदिन जीवनावर प्रभाव टाकते. AI आता आरोग्यसेवा, वित्त, शिक्षण, रोजगार यांसारख्या महत्त्वाच्या प्रणालींमध्ये प्रवेश करत आहे, ज्या आपल्याला वैयक्तिक तसेच सामाजिक पातळीवर प्रभावित करतात. उदाहरणार्थ, आरोग्य निदान किंवा फसवणूक शोधण्यासारख्या दैनंदिन निर्णय प्रक्रियेत प्रणाली आणि मॉडेल्स सहभागी असतात. परिणामी, AI मधील प्रगती आणि त्याचा वेगाने होणारा स्वीकार यामुळे समाजाच्या अपेक्षा बदलत आहेत आणि त्यासोबतच नियमांमध्येही बदल होत आहेत. आपण वारंवार पाहतो की AI प्रणाली अपेक्षांवर खरे उतरत नाहीत, नवीन आव्हाने निर्माण करतात, आणि सरकार AI उपायांवर नियमन लागू करत आहेत. त्यामुळे हे मॉडेल्स सर्वांसाठी न्याय्य, विश्वासार्ह, समावेशक, पारदर्शक आणि जबाबदार परिणाम देतात की नाही हे विश्लेषित करणे महत्त्वाचे आहे.
+
+या अभ्यासक्रमात, आपण अशा व्यावहारिक साधनांचा अभ्यास करू जे मॉडेलमध्ये जबाबदार AI संबंधित समस्या आहेत का हे तपासण्यासाठी वापरले जाऊ शकतात. पारंपरिक मशीन लर्निंग डीबगिंग तंत्रे प्रामुख्याने एकत्रित अचूकता किंवा सरासरी त्रुटी हानी यांसारख्या परिमाणांवर आधारित असतात. कल्पना करा की आपण ज्या डेटाचा वापर करून हे मॉडेल तयार करत आहात त्यामध्ये विशिष्ट लोकसंख्येचा अभाव आहे, जसे की वंश, लिंग, राजकीय दृष्टिकोन, धर्म, किंवा काही लोकसंख्येचे प्रमाण जास्त आहे. जर मॉडेलचे आउटपुट काही लोकसंख्येला प्राधान्य देण्यासाठी व्याख्या केले गेले असेल तर काय? यामुळे संवेदनशील वैशिष्ट्य गटांचे अति किंवा कमी प्रतिनिधित्व होऊ शकते, ज्यामुळे मॉडेलमध्ये न्याय, समावेश किंवा विश्वासार्हतेच्या समस्या निर्माण होऊ शकतात. आणखी एक घटक म्हणजे, मशीन लर्निंग मॉडेल्स "ब्लॅक बॉक्स" मानले जातात, ज्यामुळे मॉडेलच्या अंदाजामागील कारणे समजणे आणि स्पष्ट करणे कठीण होते. जेव्हा डेटा सायंटिस्ट्स आणि AI विकसकांकडे मॉडेलचे न्याय किंवा विश्वासार्हता तपासण्यासाठी पुरेशी साधने नसतात, तेव्हा त्यांना या सर्व आव्हानांचा सामना करावा लागतो.
+
+या धड्यात, आपण आपल्या मॉडेल्सचे डीबगिंग शिकाल:
+
+- **त्रुटी विश्लेषण**: आपल्या डेटाच्या वितरणामध्ये जिथे मॉडेलमध्ये उच्च त्रुटी दर आहेत तेथे ओळखणे.
+- **मॉडेल विहंगावलोकन**: विविध डेटा गटांमध्ये तुलना करून मॉडेलच्या कार्यक्षमतेतील विसंगती शोधणे.
+- **डेटा विश्लेषण**: जिथे डेटा अति किंवा कमी प्रमाणात सादर केला जातो तेथे तपासणे, ज्यामुळे मॉडेल एका लोकसंख्येला दुसऱ्याच्या तुलनेत प्राधान्य देऊ शकतो.
+- **वैशिष्ट्य महत्त्व**: जागतिक किंवा स्थानिक स्तरावर कोणती वैशिष्ट्ये मॉडेलच्या अंदाजांना चालना देत आहेत हे समजून घेणे.
+
+## पूर्वअट
+
+पूर्वअटी म्हणून, कृपया [विकसकांसाठी जबाबदार AI साधने](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) पुनरावलोकन करा.
+
+> 
+
+## त्रुटी विश्लेषण
+
+पारंपरिक मॉडेल कार्यक्षमता मेट्रिक्स अचूकता मोजण्यासाठी प्रामुख्याने योग्य विरुद्ध अयोग्य अंदाजांवर आधारित गणना असतात. उदाहरणार्थ, जर एखाद्या मॉडेलने 89% वेळा अचूक अंदाज लावला आणि त्रुटी हानी 0.001 आहे, तर ते चांगले कार्य मानले जाऊ शकते. परंतु त्रुटी नेहमीच आपल्या मूळ डेटासेटमध्ये समान रीतीने वितरित नसतात. आपल्याला 89% मॉडेल अचूकता स्कोअर मिळू शकतो, परंतु असे आढळते की डेटाच्या विशिष्ट भागांमध्ये मॉडेल 42% वेळा अयशस्वी होत आहे. विशिष्ट डेटा गटांमध्ये या अपयशाच्या पद्धतींमुळे न्याय किंवा विश्वासार्हतेच्या समस्या उद्भवू शकतात. ज्या भागांमध्ये मॉडेल चांगले कार्य करत आहे किंवा नाही हे समजून घेणे आवश्यक आहे. ज्या डेटा भागांमध्ये मॉडेलमध्ये जास्त अचूकता नसते, ते महत्त्वाचे डेटा लोकसंख्येचे प्रतिनिधित्व करू शकतात.
+
+RAI डॅशबोर्डवरील त्रुटी विश्लेषण घटक विविध गटांमध्ये मॉडेल अपयश कसे वितरित केले जाते हे ट्री व्हिज्युअलायझेशनद्वारे दर्शविते. हे आपल्या डेटासेटमधील ज्या भागांमध्ये जास्त त्रुटी दर आहे तेथे वैशिष्ट्ये किंवा क्षेत्रे ओळखण्यासाठी उपयुक्त आहे. जिथे मॉडेलच्या अचूकतेत त्रुटी आहेत, तिथून आपण मूळ कारण तपासण्यास सुरुवात करू शकता. आपण डेटा गट तयार करून त्यावर विश्लेषण करू शकता. हे डेटा गट डीबगिंग प्रक्रियेत मदत करतात, जसे की एक गट चांगले कार्य करत असताना दुसऱ्या गटात का त्रुटी आहेत हे शोधणे.
+
+
+
+ट्री मॅपवरील दृश्य निर्देशक समस्या क्षेत्रे जलद ओळखण्यात मदत करतात. उदाहरणार्थ, ट्री नोडचा गडद लाल रंग जितका जास्त असेल, तितका त्रुटी दर जास्त असेल.
+
+हीट मॅप हे आणखी एक व्हिज्युअलायझेशन फंक्शन आहे, जे वापरकर्त्यांना एक किंवा दोन वैशिष्ट्यांचा वापर करून त्रुटी दर तपासण्यासाठी उपयुक्त ठरते, ज्यामुळे संपूर्ण डेटासेट किंवा गटांमध्ये मॉडेल त्रुटींचे योगदानकर्ता शोधता येतात.
+
+
+
+त्रुटी विश्लेषण वापरा जेव्हा आपल्याला:
+
+* मॉडेल अपयश कसे वितरित केले जाते हे डेटासेट आणि विविध इनपुट व वैशिष्ट्य परिमाणांमध्ये सखोल समजून घ्यायचे आहे.
+* एकत्रित कार्यक्षमता मेट्रिक्सचे विश्लेषण करून त्रुटी गट शोधायचे आहेत, ज्यामुळे लक्ष्यित सुधारणा पावले उचलता येतील.
+
+## मॉडेल विहंगावलोकन
+
+मशीन लर्निंग मॉडेलची कार्यक्षमता मूल्यांकन करण्यासाठी त्याच्या वर्तनाचा सर्वसमावेशक आढावा घेणे आवश्यक आहे. हे एकापेक्षा जास्त मेट्रिक्स (जसे की त्रुटी दर, अचूकता, रीकॉल, प्रिसिजन, किंवा MAE) पुनरावलोकन करून साध्य केले जाऊ शकते, ज्यामुळे कार्यक्षमतेतील विसंगती शोधता येतात. एक मेट्रिक चांगले दिसू शकते, परंतु दुसऱ्या मेट्रिकमध्ये अचूकतेतील त्रुटी उघड होऊ शकतात. याशिवाय, संपूर्ण डेटासेट किंवा गटांमध्ये मेट्रिक्सची तुलना केल्याने मॉडेल चांगले कार्य करत आहे की नाही हे स्पष्ट होते. हे विशेषतः संवेदनशील आणि असंवेदनशील वैशिष्ट्यांमध्ये (उदा., रुग्णाचा वंश, लिंग, किंवा वय) मॉडेलची कार्यक्षमता पाहण्यासाठी महत्त्वाचे आहे, ज्यामुळे मॉडेलमध्ये संभाव्य अन्याय उघड होतो.
+
+RAI डॅशबोर्डवरील मॉडेल विहंगावलोकन घटक केवळ गटांमधील डेटा प्रतिनिधित्वाच्या कार्यक्षमता मेट्रिक्सचे विश्लेषण करण्यात मदत करत नाही, तर विविध गटांमध्ये मॉडेलच्या वर्तनाची तुलना करण्याची क्षमता देखील देते.
+
+
+
+घटकाची वैशिष्ट्य-आधारित विश्लेषण कार्यक्षमता वापरकर्त्यांना विशिष्ट वैशिष्ट्यांमध्ये डेटा उपगट कमी करण्यास अनुमती देते, ज्यामुळे सूक्ष्म स्तरावर विसंगती ओळखता येतात. उदाहरणार्थ, डॅशबोर्डमध्ये वापरकर्त्याद्वारे निवडलेल्या वैशिष्ट्यासाठी (उदा., *"time_in_hospital < 3"* किंवा *"time_in_hospital >= 7"*) स्वयंचलितपणे गट तयार करण्याची अंतर्गत बुद्धिमत्ता आहे. यामुळे वापरकर्त्याला मोठ्या डेटा गटातून विशिष्ट वैशिष्ट्य वेगळे करण्यास आणि ते मॉडेलच्या त्रुटीपूर्ण परिणामांचे मुख्य प्रभावक आहे का हे पाहण्यास अनुमती मिळते.
+
+
+
+मॉडेल विहंगावलोकन घटक दोन प्रकारच्या विसंगती मेट्रिक्सला समर्थन देते:
+
+**मॉडेल कार्यक्षमतेतील विसंगती**: या मेट्रिक्सचा संच डेटा उपगटांमध्ये निवडलेल्या कार्यक्षमता मेट्रिकच्या मूल्यांमधील विसंगती (फरक) मोजतो. काही उदाहरणे:
+
+* अचूकता दरातील विसंगती
+* त्रुटी दरातील विसंगती
+* प्रिसिजनमधील विसंगती
+* रीकॉलमधील विसंगती
+* सरासरी त्रुटी (MAE) मधील विसंगती
+
+**निवड दरातील विसंगती**: हा मेट्रिक उपगटांमधील निवड दरातील (अनुकूल अंदाज) फरक मोजतो. याचे एक उदाहरण म्हणजे कर्ज मंजुरी दरातील विसंगती. निवड दर म्हणजे प्रत्येक वर्गातील डेटा पॉइंट्सचा अंश जो 1 म्हणून वर्गीकृत केला जातो (बायनरी वर्गीकरणामध्ये) किंवा अंदाज मूल्यांचे वितरण (प्रगतीशील विश्लेषणामध्ये).
+
+## डेटा विश्लेषण
+
+> "जर तुम्ही डेटा पुरेसा छळलात, तर तो काहीही कबूल करेल" - रोनाल्ड कोस
+
+हे विधान अतिशयोक्तीपूर्ण वाटते, परंतु हे खरे आहे की डेटा कोणत्याही निष्कर्षाला समर्थन देण्यासाठी हाताळला जाऊ शकतो. कधी कधी अशी हाताळणी अनवधानाने होते. माणूस म्हणून, आपल्याकडे सर्वांनाच पूर्वग्रह असतो, आणि डेटा तयार करताना आपण पूर्वग्रह कधी आणतो हे जाणून घेणे कठीण असते. AI आणि मशीन लर्निंगमध्ये न्याय सुनिश्चित करणे हे एक गुंतागुंतीचे आव्हान आहे.
+
+डेटा पारंपरिक मॉडेल कार्यक्षमता मेट्रिक्ससाठी एक मोठा अंध भाग आहे. आपल्याकडे उच्च अचूकता स्कोअर असू शकतात, परंतु याचा अर्थ असा नाही की आपल्या डेटासेटमध्ये अंतर्निहित डेटा पूर्वग्रह नाही. उदाहरणार्थ, जर एखाद्या कंपनीतील कार्यकारी पदांवरील महिलांचे प्रमाण 27% आणि पुरुषांचे प्रमाण 73% असेल, तर या डेटावर प्रशिक्षित केलेले नोकरी जाहिरात AI मॉडेल वरिष्ठ पदांसाठी प्रामुख्याने पुरुष प्रेक्षकांना लक्ष्य करू शकते. डेटामधील हा असमतोल मॉडेलच्या अंदाजाला एका लिंगाला प्राधान्य देण्यासाठी वाकवतो. यामुळे AI मॉडेलमध्ये लिंग पूर्वग्रह असल्याचे दिसून येते, जे न्यायाच्या समस्येचे निदर्शक आहे.
+
+RAI डॅशबोर्डवरील डेटा विश्लेषण घटक डेटासेटमध्ये जिथे अति-प्रतिनिधित्व किंवा कमी-प्रतिनिधित्व आहे तेथे ओळखण्यात मदत करतो. डेटा असमतोल किंवा विशिष्ट डेटा गटाच्या प्रतिनिधित्वाच्या अभावामुळे त्रुटी आणि न्यायाच्या समस्यांचे मूळ कारण शोधण्यात हे वापरकर्त्यांना मदत करते. यामुळे वापरकर्त्यांना अंदाजित आणि वास्तविक परिणाम, त्रुटी गट, आणि विशिष्ट वैशिष्ट्यांवर आधारित डेटासेट व्हिज्युअलायझ करण्याची क्षमता मिळते. कधी कधी कमी प्रतिनिधित्व असलेला डेटा गट शोधल्याने असेही दिसून येते की मॉडेल चांगले शिकत नाही, म्हणूनच अचूकतेतील त्रुटी जास्त आहेत. डेटा पूर्वग्रह असलेले मॉडेल केवळ न्यायाच्या समस्येचे निदर्शक नाही, तर ते समावेशक किंवा विश्वासार्ह नाही हे देखील दर्शवते.
+
+
+
+डेटा विश्लेषण वापरा जेव्हा आपल्याला:
+
+* विविध फिल्टर निवडून आपला डेटासेट विविध परिमाणांमध्ये (गटांमध्ये) विभागायचा आहे.
+* विविध गट आणि वैशिष्ट्य गटांमध्ये आपल्या डेटासेटचे वितरण समजून घ्यायचे आहे.
+* न्याय, त्रुटी विश्लेषण, आणि कारणात्मकता (डॅशबोर्डच्या इतर घटकांमधून प्राप्त) संबंधित निष्कर्ष आपल्या डेटासेटच्या वितरणामुळे आहेत का हे ठरवायचे आहे.
+* प्रतिनिधित्वाच्या समस्यांमुळे, लेबल आवाज, वैशिष्ट्य आवाज, लेबल पूर्वग्रह, आणि तत्सम घटकांमुळे उद्भवलेल्या त्रुटी कमी करण्यासाठी कोणत्या भागांमध्ये अधिक डेटा गोळा करायचा आहे हे ठरवायचे आहे.
+
+## मॉडेल समज
+
+मशीन लर्निंग मॉडेल्स "ब्लॅक बॉक्स" असल्याने, मॉडेलच्या अंदाजांना चालना देणारी प्रमुख डेटा वैशिष्ट्ये समजणे आव्हानात्मक ठरते. मॉडेलने विशिष्ट अंदाज का लावला हे समजावून सांगणे महत्त्वाचे आहे. उदाहरणार्थ, जर एखाद्या AI प्रणालीने अंदाज लावला की मधुमेह असलेल्या रुग्णाला 30 दिवसांच्या आत पुन्हा रुग्णालयात दाखल होण्याचा धोका आहे, तर त्या अंदाजामागील आधारभूत डेटा प्रदान करणे आवश्यक आहे. आधारभूत डेटा निर्देशक असल्याने पारदर्शकता निर्माण होते, ज्यामुळे डॉक्टर किंवा रुग्णालये माहितीपूर्ण निर्णय घेऊ शकतात. याशिवाय, एखाद्या रुग्णासाठी मॉडेलने विशिष्ट अंदाज का लावला हे स्पष्ट करण्याची क्षमता आरोग्य नियमांशी जबाबदारी सुनिश्चित करते. जेव्हा मशीन लर्निंग मॉडेल्स लोकांच्या जीवनावर परिणाम करणाऱ्या पद्धतींमध्ये वापरले जातात, तेव्हा मॉडेलच्या वर्तनावर परिणाम करणारे घटक समजून घेणे आणि स्पष्ट करणे महत्त्वाचे ठरते. मॉडेल समज आणि स्पष्टता खालील परिस्थितींमध्ये प्रश्नांची उत्तरे देण्यास मदत करते:
+
+* मॉडेल डीबगिंग: माझ्या मॉडेलने ही चूक का केली? मी माझे मॉडेल कसे सुधारू शकतो?
+* मानव-AI सहकार्य: मी मॉडेलच्या निर्णयांवर कसे विश्वास ठेवू शकतो?
+* नियामक अनुपालन: माझे मॉडेल कायदेशीर आवश्यकता पूर्ण करते का?
+
+RAI डॅशबोर्डवरील वैशिष्ट्य महत्त्व घटक आपल्याला डीबगिंग करण्यास आणि मॉडेल अंदाज कसे करतो याचे सर्वसमावेशक समज मिळविण्यास मदत करतो. मशीन लर्निंग व्यावसायिक आणि निर्णय घेणाऱ्यांसाठी हे एक उपयुक्त साधन आहे, जे मॉडेलच्या वर्तनावर परिणाम करणाऱ्या वैशिष्ट्यांचे पुरावे स्पष्ट करण्यासाठी आणि दाखवण्यासाठी उपयुक्त ठरते. यानंतर, वापरकर्ते जागतिक आणि स्थानिक स्पष्टीकरणे दोन्ही शोधू शकतात, ज्यामुळे कोणती वैशिष्ट्ये मॉडेलच्या अंदाजांना चालना देतात हे सत्यापित करता येते. जागतिक स्पष्टीकरणे मॉडेलच्या एकूण अंदाजांवर परिणाम करणाऱ्या शीर्ष वैशिष्ट्यांची यादी करतात. स्थानिक स्पष्टीकरणे विशिष्ट प्रकरणासाठी मॉडेलच्या अंदाजामागील वैशिष्ट्ये दर्शवितात. स्थानिक स्पष्टीकरणे तपासणे किंवा विशिष्ट प्रकरण डीबगिंगमध्ये उपयुक्त ठरते, ज्यामुळे मॉडेलने अचूक किंवा अचूक नसलेला अंदाज का लावला हे समजून घेता येते.
+
+
+
+* जागतिक स्पष्टीकरणे: उदाहरणार्थ, मधुमेह रुग्णालय पुन्हा प्रवेश मॉडेलच्या एकूण वर्तनावर कोणती वैशिष्ट्ये परिणाम करतात?
+* स्थानिक स्पष्टीकरणे: उदाहरणार्थ, 60 वर्षांपेक्षा जास्त वयाच्या आणि पूर्वीच्या रुग्णालयात दाखल झालेल्या मधुमेह रुग्णाला 30 दिवसांच्या आत पुन्हा रुग्णालयात दाखल होण्याचा किंवा न होण्याचा अंदाज का लावला गेला?
+
+विविध गटांमध्ये मॉडेलच्या कार्यक्षमतेचे परीक्षण करताना, वैशिष्ट्य महत्त्व हे दर्शवते की गटांमध्ये वैशिष्ट्याचा प्रभाव किती आहे. मॉडेलच्या त्र
+- **अतिशय किंवा कमी प्रतिनिधित्व**. कल्पना अशी आहे की एखादा विशिष्ट गट एखाद्या व्यवसायात दिसत नाही, आणि कोणतीही सेवा किंवा कार्य जे हे पुढे चालू ठेवते ते नुकसान पोहोचवण्यास योगदान देते.
+
+### Azure RAI डॅशबोर्ड
+
+[Azure RAI डॅशबोर्ड](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) हे ओपन-सोर्स टूल्सवर आधारित आहे जे प्रमुख शैक्षणिक संस्थांनी आणि संस्थांनी विकसित केले आहे, ज्यामध्ये Microsoft चा समावेश आहे. हे डेटा वैज्ञानिक आणि AI विकसकांना मॉडेलचे वर्तन अधिक चांगल्या प्रकारे समजून घेण्यासाठी, AI मॉडेलमधील अवांछनीय समस्या शोधण्यासाठी आणि कमी करण्यासाठी उपयुक्त आहे.
+
+- 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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/6/)
+## पुनरावलोकन आणि स्व-अभ्यास
+
+या धड्यात, तुम्ही मशीन लर्निंगमध्ये जबाबदार AI समाविष्ट करण्याचे काही व्यावहारिक टूल्स शिकले आहेत.
+
+या कार्यशाळेचे निरीक्षण करा आणि विषयांमध्ये अधिक खोलवर जा:
+
+- जबाबदार AI डॅशबोर्ड: Besmira Nushi आणि Mehrnoosh Sameki द्वारे प्रत्यक्षात RAI कार्यान्वित करण्यासाठी एक-स्टॉप शॉप
+
+[](https://www.youtube.com/watch?v=f1oaDNl3djg "जबाबदार AI डॅशबोर्ड: प्रत्यक्षात RAI कार्यान्वित करण्यासाठी एक-स्टॉप शॉप")
+
+> 🎥 वरील प्रतिमेवर क्लिक करा: Besmira Nushi आणि Mehrnoosh Sameki द्वारे जबाबदार AI डॅशबोर्ड: प्रत्यक्षात RAI कार्यान्वित करण्यासाठी एक-स्टॉप शॉप
+
+जबाबदार AI आणि अधिक विश्वासार्ह मॉडेल तयार करण्याबद्दल अधिक जाणून घेण्यासाठी खालील साहित्याचा संदर्भ घ्या:
+
+- ML मॉडेल्स डिबग करण्यासाठी Microsoft चे RAI डॅशबोर्ड टूल्स: [जबाबदार 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/mr/9-Real-World/2-Debugging-ML-Models/assignment.md b/translations/mr/9-Real-World/2-Debugging-ML-Models/assignment.md
new file mode 100644
index 000000000..62904ad17
--- /dev/null
+++ b/translations/mr/9-Real-World/2-Debugging-ML-Models/assignment.md
@@ -0,0 +1,25 @@
+
+# जबाबदार AI (RAI) डॅशबोर्ड एक्सप्लोर करा
+
+## सूचना
+
+या धड्यात तुम्ही RAI डॅशबोर्डबद्दल शिकलात, जो "ओपन-सोर्स" साधनांवर आधारित घटकांचा संच आहे. हा डॅशबोर्ड डेटा सायंटिस्टना त्रुटी विश्लेषण, डेटा एक्सप्लोरेशन, न्याय्यता मूल्यांकन, मॉडेल समज, प्रतिकृती/जर-तर मूल्यांकन आणि कारणात्मक विश्लेषण करण्यासाठी मदत करतो. या असाइनमेंटसाठी, 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/mr/9-Real-World/README.md b/translations/mr/9-Real-World/README.md
new file mode 100644
index 000000000..2d227392a
--- /dev/null
+++ b/translations/mr/9-Real-World/README.md
@@ -0,0 +1,32 @@
+
+# पोस्टस्क्रिप्ट: क्लासिक मशीन लर्निंगचे वास्तविक जगातील उपयोग
+
+या अभ्यासक्रमाच्या विभागात, तुम्हाला क्लासिक मशीन लर्निंगचे काही वास्तविक जगातील उपयोग समजावून सांगितले जातील. आम्ही इंटरनेटवर शोध घेतला आहे आणि अशा पद्धतींचा वापर करणाऱ्या अनुप्रयोगांबद्दल श्वेतपत्रे आणि लेख शोधले आहेत, ज्यामध्ये न्यूरल नेटवर्क्स, डीप लर्निंग आणि AI यांचा शक्य तितका कमी वापर केला आहे. व्यवसाय प्रणाली, पर्यावरणीय उपयोग, वित्त, कला आणि संस्कृती, आणि इतर क्षेत्रांमध्ये मशीन लर्निंगचा कसा उपयोग केला जातो हे जाणून घ्या.
+
+
+
+> फोटो Alexis Fauvet यांनी Unsplash वर घेतला आहे
+
+## धडा
+
+1. [मशीन लर्निंगसाठी वास्तविक जगातील उपयोग](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/mr/CODE_OF_CONDUCT.md b/translations/mr/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..051e7b677
--- /dev/null
+++ b/translations/mr/CODE_OF_CONDUCT.md
@@ -0,0 +1,23 @@
+
+# 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/mr/CONTRIBUTING.md b/translations/mr/CONTRIBUTING.md
new file mode 100644
index 000000000..0941d7dcc
--- /dev/null
+++ b/translations/mr/CONTRIBUTING.md
@@ -0,0 +1,24 @@
+
+# योगदान देणे
+
+या प्रकल्पात योगदान आणि सूचना स्वागतार्ह आहेत. बहुतेक योगदानांसाठी तुम्हाला एक Contributor License Agreement (CLA) मान्य करणे आवश्यक आहे, ज्यामध्ये तुम्ही जाहीर करता की तुम्हाला तुमचे योगदान वापरण्याचे अधिकार आहेत आणि तुम्ही आम्हाला ते अधिकार प्रत्यक्षात देत आहात. अधिक माहितीसाठी, https://cla.microsoft.com ला भेट द्या.
+
+> महत्त्वाचे: या रेपोमधील मजकूर अनुवादित करताना कृपया मशीन अनुवादाचा वापर करू नका. आम्ही अनुवाद समुदायाद्वारे सत्यापित करू, त्यामुळे कृपया फक्त त्या भाषांमध्ये अनुवादासाठी स्वयंसेवा करा ज्यामध्ये तुम्हाला प्रवीणता आहे.
+
+जेव्हा तुम्ही एक pull request सबमिट करता, तेव्हा CLA-bot आपोआप ठरवेल की तुम्हाला 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/mr/PyTorch_Fundamentals.ipynb b/translations/mr/PyTorch_Fundamentals.ipynb
new file mode 100644
index 000000000..203fcc03f
--- /dev/null
+++ b/translations/mr/PyTorch_Fundamentals.ipynb
@@ -0,0 +1,2828 @@
+{
+ "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-08-29T18:43:32+00:00",
+ "source_file": "PyTorch_Fundamentals.ipynb",
+ "language_code": "mr"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": []
+ },
+ {
+ "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": [],
+ "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": [],
+ "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": [],
+ "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": [],
+ "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": [],
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/mr/README.md b/translations/mr/README.md
new file mode 100644
index 000000000..f24716613
--- /dev/null
+++ b/translations/mr/README.md
@@ -0,0 +1,178 @@
+
+[](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE)
+[](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/)
+[](https://GitHub.com/microsoft/ML-For-Beginners/issues/)
+[](https://GitHub.com/microsoft/ML-For-Beginners/pulls/)
+[](http://makeapullrequest.com)
+
+[](https://GitHub.com/microsoft/ML-For-Beginners/watchers/)
+[](https://GitHub.com/microsoft/ML-For-Beginners/network/)
+[](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/)
+
+### 🌐 बहुभाषिक समर्थन
+
+#### GitHub Action च्या माध्यमातून समर्थित (स्वयंचलित आणि नेहमी अद्ययावत)
+
+[French](../fr/README.md) | [Spanish](../es/README.md) | [German](../de/README.md) | [Russian](../ru/README.md) | [Arabic](../ar/README.md) | [Persian (Farsi)](../fa/README.md) | [Urdu](../ur/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Japanese](../ja/README.md) | [Korean](../ko/README.md) | [Hindi](../hi/README.md) | [Bengali](../bn/README.md) | [Marathi](./README.md) | [Nepali](../ne/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Portuguese (Brazil)](../br/README.md) | [Italian](../it/README.md) | [Polish](../pl/README.md) | [Turkish](../tr/README.md) | [Greek](../el/README.md) | [Thai](../th/README.md) | [Swedish](../sv/README.md) | [Danish](../da/README.md) | [Norwegian](../no/README.md) | [Finnish](../fi/README.md) | [Dutch](../nl/README.md) | [Hebrew](../he/README.md) | [Vietnamese](../vi/README.md) | [Indonesian](../id/README.md) | [Malay](../ms/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Swahili](../sw/README.md) | [Hungarian](../hu/README.md) | [Czech](../cs/README.md) | [Slovak](../sk/README.md) | [Romanian](../ro/README.md) | [Bulgarian](../bg/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Croatian](../hr/README.md) | [Slovenian](../sl/README.md) | [Ukrainian](../uk/README.md) | [Burmese (Myanmar)](../my/README.md)
+
+#### समुदायामध्ये सामील व्हा
+
+[](https://discord.gg/kzRShWzttr)
+
+# मशीन लर्निंगसाठी नवशिक्यांसाठी - अभ्यासक्रम
+
+> 🌍 जगभर प्रवास करा आणि मशीन लर्निंगचा अभ्यास सांस्कृतिक दृष्टिकोनातून करा 🌍
+
+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
+
+**🎨 आमच्या चित्रकारांचे आभार** 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)
+
+**[विद्यार्थी](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) वर क्लिक करून खालील प्रतिमेवर क्लिक करू शकता.
+
+[](https://aka.ms/ml-beginners-videos)
+
+---
+
+## टीमशी भेटा
+
+[](https://youtu.be/Tj1XWrDSYJU "Promo video")
+
+**Gif द्वारे** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
+
+> 🎥 वरच्या प्रतिमेवर क्लिक करा प्रकल्प आणि ते तयार करणाऱ्या लोकांबद्दल व्हिडिओसाठी!
+
+---
+
+## शिक्षण पद्धती
+
+आम्ही हा अभ्यासक्रम तयार करताना दोन शिक्षण पद्धती निवडल्या आहेत: हे **प्रोजेक्ट-आधारित** आणि **वारंवार क्विझ** समाविष्ट करते याची खात्री करणे. याशिवाय, या अभ्यासक्रमाला एक सामान्य **थीम** आहे ज्यामुळे त्याला सुसंगतता मिळते.
+
+सामग्री प्रोजेक्टशी संरेखित असल्याची खात्री करून, प्रक्रिया विद्यार्थ्यांसाठी अधिक आकर्षक बनवली जाते आणि संकल्पनांचे टिकून राहणे वाढवले जाते. याशिवाय, वर्गाच्या आधी कमी-जोखीम क्विझ विद्यार्थ्याला विषय शिकण्याच्या उद्देशाने सेट करते, तर वर्गानंतर दुसरी क्विझ आणखी टिकवून ठेवते. हा अभ्यासक्रम लवचिक आणि मजेदार बनवण्यासाठी डिझाइन केला गेला आहे आणि संपूर्ण किंवा अंशतः घेतला जाऊ शकतो. प्रकल्प लहान सुरू होतात आणि 12 आठवड्यांच्या चक्राच्या शेवटी अधिकाधिक जटिल होतात. या अभ्यासक्रमात ML च्या वास्तविक-जगातील अनुप्रयोगांवर एक पोस्टस्क्रिप्ट देखील समाविष्ट आहे, ज्याचा अतिरिक्त क्रेडिट म्हणून किंवा चर्चेचा आधार म्हणून वापर केला जाऊ शकतो.
+
+> आमचा [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), आणि [Translation](TRANSLATIONS.md) मार्गदर्शक शोधा. आम्ही तुमच्या रचनात्मक अभिप्रायाचे स्वागत करतो!
+
+## प्रत्येक धड्यात समाविष्ट आहे
+
+- पर्यायी स्केच नोट
+- पर्यायी पूरक व्हिडिओ
+- व्हिडिओ वॉकथ्रू (काही धडे फक्त)
+- प्री-लेक्चर वॉर्मअप क्विझ
+- लेखी धडा
+- प्रोजेक्ट-आधारित धड्यांसाठी, प्रोजेक्ट कसे तयार करायचे यावर चरण-दर-चरण मार्गदर्शक
+- ज्ञान तपासणी
+- एक चॅलेंज
+- पूरक वाचन
+- असाइनमेंट
+- पोस्ट-लेक्चर क्विझ
+
+> **भाषांबद्दल एक टीप**: हे धडे मुख्यतः Python मध्ये लिहिलेले आहेत, परंतु अनेक R मध्ये देखील उपलब्ध आहेत. R धडा पूर्ण करण्यासाठी, `/solution` फोल्डरमध्ये जा आणि R धडे शोधा. त्यात .rmd विस्तार समाविष्ट आहे जो **R Markdown** फाइलचे प्रतिनिधित्व करतो ज्याला `Markdown document` मध्ये `code chunks` (R किंवा इतर भाषांचे) आणि `YAML header` (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) | 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 | रिग्रेशनची ओळख | [Regression](2-Regression/README.md) | रिग्रेशन मॉडेलसाठी Python आणि Scikit-learn वापरण्यास सुरुवात करा |
+
|
+| 13 | स्वादिष्ट आशियाई आणि भारतीय पदार्थ 🍜 | [Classification](4-Classification/README.md) | तुमच्या मॉडेलचा वापर करून शिफारस करणारा वेब अॅप तयार करा | [Python](4-Classification/4-Applied/README.md) | Jen |
+| 14 | क्लस्टरिंगची ओळख | [Clustering](5-Clustering/README.md) | तुमचा डेटा स्वच्छ करा, तयार करा आणि व्हिज्युअलाइझ करा; क्लस्टरिंगची ओळख |
|
+| 16 | नैसर्गिक भाषा प्रक्रिया (NLP) ची ओळख ☕️ | [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 |
+| 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) | पारंपरिक मशीन लर्निंगचे मनोरंजक आणि उघड करणारे वास्तविक जगातील अनुप्रयोग | [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`.
+
+## PDFs
+
+लिंक्ससह अभ्यासक्रमाचा PDF [इथे](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) शोधा.
+
+
+## 🎒 इतर कोर्सेस
+
+आमची टीम इतर कोर्सेस तयार करते! पहा:
+
+- [Generative AI for Beginners](https://aka.ms/genai-beginners)
+- [Generative AI for Beginners .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet)
+- [Generative AI with JavaScript](https://github.com/microsoft/generative-ai-with-javascript)
+- [Generative AI with Java](https://github.com/microsoft/Generative-AI-for-beginners-java)
+- [AI for Beginners](https://aka.ms/ai-beginners)
+- [Data Science for Beginners](https://aka.ms/datascience-beginners)
+- [ML for Beginners](https://aka.ms/ml-beginners)
+- [Cybersecurity for Beginners](https://github.com/microsoft/Security-101)
+- [Web Dev for Beginners](https://aka.ms/webdev-beginners)
+- [IoT for Beginners](https://aka.ms/iot-beginners)
+- [XR Development for Beginners](https://github.com/microsoft/xr-development-for-beginners)
+- [Mastering GitHub Copilot for Paired Programming](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming)
+- [Mastering GitHub Copilot for C#/.NET Developers](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers)
+- [Choose Your Own Copilot Adventure](https://github.com/microsoft/CopilotAdventures)
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/SECURITY.md b/translations/mr/SECURITY.md
new file mode 100644
index 000000000..981aa8740
--- /dev/null
+++ b/translations/mr/SECURITY.md
@@ -0,0 +1,51 @@
+
+## सुरक्षा
+
+मायक्रोसॉफ्ट आपल्या सॉफ्टवेअर उत्पादने आणि सेवांच्या सुरक्षेला गंभीरपणे घेतो, ज्यामध्ये आमच्या 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 समस्यांद्वारे सुरक्षा असुरक्षितता कळवू नका.**
+
+त्याऐवजी, कृपया 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 page](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) पृष्ठाला भेट द्या जेथे आमच्या सक्रिय कार्यक्रमांबद्दल अधिक तपशील दिले आहेत.
+
+## प्राधान्य दिलेली भाषा
+
+आम्हाला सर्व संवाद इंग्रजीमध्ये असणे अधिक सोयीचे वाटते.
+
+## धोरण
+
+मायक्रोसॉफ्ट [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/mr/SUPPORT.md b/translations/mr/SUPPORT.md
new file mode 100644
index 000000000..79189ebc0
--- /dev/null
+++ b/translations/mr/SUPPORT.md
@@ -0,0 +1,24 @@
+
+# समर्थन
+## समस्या नोंदविणे आणि मदत कशी मिळवायची
+
+या प्रकल्पासाठी बग्स आणि वैशिष्ट्य विनंत्या ट्रॅक करण्यासाठी GitHub Issues वापरले जाते. डुप्लिकेट्स टाळण्यासाठी नवीन समस्या नोंदवण्यापूर्वी विद्यमान समस्यांचा शोध घ्या. नवीन समस्यांसाठी, तुमचा बग किंवा वैशिष्ट्य विनंती नवीन Issue म्हणून नोंदवा.
+
+या प्रकल्पाचा वापर करण्याबद्दल मदत आणि प्रश्नांसाठी, एक Issue नोंदवा.
+
+## Microsoft समर्थन धोरण
+
+या रिपॉझिटरीसाठी समर्थन वरील सूचीबद्ध संसाधनांपुरते मर्यादित आहे.
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/mr/docs/_sidebar.md b/translations/mr/docs/_sidebar.md
new file mode 100644
index 000000000..445c29764
--- /dev/null
+++ b/translations/mr/docs/_sidebar.md
@@ -0,0 +1,57 @@
+
+- परिचय
+ - [मशीन लर्निंगचा परिचय](../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)
+
+- नैसर्गिक भाषा प्रक्रिया (NLP)
+ - [NLP चा परिचय](../6-NLP/1-Introduction-to-NLP/README.md)
+ - [NLP कार्ये](../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)
+ - [एआरआयएमए (ARIMA)](../7-TimeSeries/2-ARIMA/README.md)
+ - [एसव्हीआर (SVR)](../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/mr/for-teachers.md b/translations/mr/for-teachers.md
new file mode 100644
index 000000000..b1833932b
--- /dev/null
+++ b/translations/mr/for-teachers.md
@@ -0,0 +1,37 @@
+
+## शिक्षकांसाठी
+
+आपण आपल्या वर्गात हा अभ्यासक्रम वापरू इच्छिता? कृपया जरूर वापरा!
+
+खरं तर, आपण 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/mr/quiz-app/README.md b/translations/mr/quiz-app/README.md
new file mode 100644
index 000000000..775557a1e
--- /dev/null
+++ b/translations/mr/quiz-app/README.md
@@ -0,0 +1,127 @@
+
+# क्विझेस
+
+ही क्विझेस ML अभ्यासक्रमासाठीच्या व्याख्यानांपूर्वी आणि नंतर घेण्यात येणाऱ्या क्विझेस आहेत. अधिक माहितीसाठी भेट द्या: https://aka.ms/ml-beginners
+
+## प्रकल्प सेटअप
+
+```
+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 Static Web App तयार करा
+- [Azure खाते](http://azure.microsoft.com) तयार करा
+- [Azure पोर्टल](https://portal.azure.com) वर जा
+- “Create a resource” वर क्लिक करा आणि “Static Web App” शोधा.
+- “Create” वर क्लिक करा.
+
+3. Static Web App कॉन्फिगर करा
+- #### बेसिक्स:
+ - Subscription: तुमची Azure सबस्क्रिप्शन निवडा.
+ - Resource Group: नवीन रिसोर्स ग्रुप तयार करा किंवा विद्यमान वापरा.
+ - Name: तुमच्या स्थिर वेब अॅपसाठी नाव द्या.
+ - Region: तुमच्या वापरकर्त्यांच्या जवळचा प्रदेश निवडा.
+
+- #### डिप्लॉयमेंट तपशील:
+ - Source: “GitHub” निवडा.
+ - GitHub Account: Azure ला तुमच्या GitHub खात्याचा प्रवेश अधिकृत करा.
+ - Organization: तुमची GitHub संस्था निवडा.
+ - Repository: तुमच्या स्थिर वेब अॅप असलेल्या रेपॉझिटरीची निवड करा.
+ - Branch: ज्या शाखेतून तुम्हाला डिप्लॉय करायचे आहे ती निवडा.
+
+- #### बिल्ड तपशील:
+ - Build Presets: तुमचे अॅप ज्या फ्रेमवर्कवर आधारित आहे ते निवडा (उदा., React, Angular, Vue, इ.).
+ - App Location: तुमच्या अॅप कोड असलेल्या फोल्डरचे स्थान निर्दिष्ट करा (उदा., / जर ते रूटमध्ये असेल).
+ - API Location: जर तुमच्याकडे API असेल, तर त्याचे स्थान निर्दिष्ट करा (पर्यायी).
+ - Output Location: बिल्ड आउटपुट जिथे तयार होते तो फोल्डर निर्दिष्ट करा (उदा., 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 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/mr/sketchnotes/LICENSE.md b/translations/mr/sketchnotes/LICENSE.md
new file mode 100644
index 000000000..534c4c395
--- /dev/null
+++ b/translations/mr/sketchnotes/LICENSE.md
@@ -0,0 +1,119 @@
+
+अट्रिब्युशन-शेअरअलाइक 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. **प्रभावी तांत्रिक उपाय** म्हणजे असे उपाय, जे योग्य प्राधिकरणाशिवाय, डिसेंबर 20, 1996 रोजी स्वीकारलेल्या WIPO कॉपीराइट कराराच्या कलम 11 अंतर्गत किंवा तत्सम आंतरराष्ट्रीय करारांनुसार बायपास करता येत नाहीत.
+
+ f. **अपवाद आणि मर्यादा** म्हणजे फेअर युज, फेअर डीलिंग, आणि/किंवा कॉपीराइट आणि तत्सम हक्कांवरील कोणताही इतर अपवाद किंवा मर्यादा, जी परवानाधीन सामग्रीच्या तुमच्या वापरावर लागू होते.
+
+ g. **परवाना घटक** म्हणजे क्रिएटिव कॉमन्स सार्वजनिक परवान्याच्या नावात सूचीबद्ध परवाना गुणधर्म. या सार्वजनिक परवान्याचे परवाना घटक म्हणजे अट्रिब्युशन आणि शेअरअलाइक.
+
+ h. **परवानाधीन सामग्री** म्हणजे कलात्मक किंवा साहित्यिक काम, डेटाबेस, किंवा इतर सामग्री ज्यावर परवानाधारकाने हा सार्वजनिक परवाना लागू केला आहे.
+
+ i. **परवानाधीन हक्क** म्हणजे या सार्वजनिक परवान्याच्या अटी व शर्तींनुसार तुम्हाला दिलेले हक्क, जे परवानाधीन सामग्रीच्या तुमच्या वापरावर लागू होणाऱ्या सर्व कॉपीराइट आणि तत्सम हक्कांपुरते मर्यादित आहेत आणि जे परवानाधारक परवानगी देण्याचा अधिकार ठेवतो.
+
+ j. **परवानाधारक** म्हणजे या सार्वजनिक परवान्याअंतर्गत हक्क प्रदान करणारी व्यक्ती(व्यक्ती) किंवा संस्था(संस्था).
+
+ k. **सामायिकरण** म्हणजे परवानाधीन हक्कांअंतर्गत परवानगी आवश्यक असलेल्या कोणत्याही माध्यमाने किंवा प्रक्रियेद्वारे सामग्री सार्वजनिकरित्या उपलब्ध करून देणे, जसे की पुनरुत्पादन, सार्वजनिक प्रदर्शन, सार्वजनिक सादरीकरण, वितरण, प्रसार, संवाद, किंवा आयात करणे, आणि सामग्री सार्वजनिकरित्या उपलब्ध करून देणे, ज्यामध्ये सार्वजनिक सदस्य त्यांना सोयीस्कर असलेल्या ठिकाणाहून आणि वेळेवर सामग्रीवर प्रवेश करू शकतात.
+
+ l. **Sui Generis डेटाबेस हक्क** म्हणजे 11 मार्च 1996 रोजी युरोपियन संसदेच्या आणि परिषदेच्या डेटाबेसच्या कायदेशीर संरक्षणावरील निर्देश 96/9/EC पासून व्युत्पन्न हक्क, सुधारित आणि/किंवा यशस्वी, तसेच जगभरातील इतर मूलत: समतुल्य हक्क.
+
+ m. **तुम्ही** म्हणजे या सार्वजनिक परवान्याअंतर्गत परवानाधीन हक्कांचा वापर करणारी व्यक्ती किंवा संस्था. "तुमचे" याला संबंधित अर्थ आहे.
+अधिकार, त्यानंतर ज्या डेटाबेसमध्ये तुम्हाला Sui Generis Database Rights आहेत (पण त्यातील वैयक्तिक सामग्री नाही) ते Adapted Material आहे,
+
+यामध्ये कलम 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. या सार्वजनिक परवान्यात काहीही परवानाधारक किंवा तुम्हाला लागू असलेल्या कोणत्याही विशेषाधिकार आणि प्रतिकारांवर मर्यादा किंवा त्याग म्हणून समजले जाणार नाही किंवा समजले जाऊ शकत नाही, यामध्ये कोणत्याही न्यायालयीन प्रक्रियेच्या अधिकारक्षेत्र किंवा प्राधिकरणाचा समावेश आहे.
+
+
+=======================================================================
+
+Creative Commons हे त्याच्या सार्वजनिक परवान्यांचे पक्षकार नाही. तथापि, Creative Commons त्याच्या सार्वजनिक परवान्यांपैकी एक परवाना त्याने प्रकाशित केलेल्या सामग्रीवर लागू करण्याचा निर्णय घेऊ शकतो आणि अशा प्रकरणांमध्ये "परवानाधारक" मानले जाईल. Creative Commons सार्वजनिक परवान्यांचा मजकूर CC0 सार्वजनिक डोमेन समर्पण अंतर्गत सार्वजनिक डोमेनसाठी समर्पित आहे. Creative Commons धोरणांमध्ये नमूद केल्याप्रमाणे, सामग्री सार्वजनिक परवान्याखाली शेअर केली जाते हे सूचित करण्याच्या मर्यादित उद्देशासाठी किंवा अन्यथा परवानगी दिल्याशिवाय, Creative Commons "Creative Commons" या ट्रेडमार्कचा किंवा Creative Commons चा कोणताही ट्रेडमार्क किंवा लोगोचा वापर त्याच्या पूर्व लेखी संमतीशिवाय अधिकृत करत नाही, यामध्ये मर्यादेशिवाय, त्याच्या सार्वजनिक परवान्यांमध्ये कोणत्याही अनधिकृत बदलांसाठी किंवा परवानाधीन सामग्रीच्या वापराबाबत कोणत्याही व्यवस्था, समज, किंवा करार यासाठी समाविष्ट आहे. स्पष्टतेसाठी, हा परिच्छेद सार्वजनिक परवान्यांचा भाग नाही.
+
+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/mr/sketchnotes/README.md b/translations/mr/sketchnotes/README.md
new file mode 100644
index 000000000..227a7858e
--- /dev/null
+++ b/translations/mr/sketchnotes/README.md
@@ -0,0 +1,21 @@
+
+संपूर्ण अभ्यासक्रमाच्या स्केच नोट्स येथे डाउनलोड केल्या जाऊ शकतात.
+
+🖨 उच्च-रिझोल्यूशनमध्ये प्रिंटिंगसाठी, TIFF आवृत्त्या [या रेपो](https://github.com/girliemac/a-picture-is-worth-a-1000-words/tree/main/ml/tiff) वर उपलब्ध आहेत.
+
+🎨 तयार केलेले: [टोमोमी इमुरा](https://github.com/girliemac) (ट्विटर: [@girlie_mac](https://twitter.com/girlie_mac))
+
+[](https://creativecommons.org/licenses/by-sa/4.0/)
+
+---
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
diff --git a/translations/ne/1-Introduction/1-intro-to-ML/README.md b/translations/ne/1-Introduction/1-intro-to-ML/README.md
new file mode 100644
index 000000000..74d71a48b
--- /dev/null
+++ b/translations/ne/1-Introduction/1-intro-to-ML/README.md
@@ -0,0 +1,159 @@
+
+# मेसिन लर्निङको परिचय
+
+## [पूर्व-व्याख्यान क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1/)
+
+---
+
+[](https://youtu.be/6mSx_KJxcHI "शुरुआतीहरूको लागि मेसिन लर्निङ - मेसिन लर्निङको परिचय")
+
+> 🎥 माथिको तस्बिरमा क्लिक गरेर यो पाठको छोटो भिडियो हेर्नुहोस्।
+
+शुरुआतीहरूको लागि क्लासिकल मेसिन लर्निङको यो पाठ्यक्रममा स्वागत छ! तपाईं यस विषयमा पूर्ण रूपमा नयाँ हुनुहुन्छ वा मेसिन लर्निङको कुनै क्षेत्रमा आफ्नो ज्ञान ताजा गर्न चाहनुहुन्छ भने, हामी तपाईंलाई यहाँ स्वागत गर्न पाउँदा खुसी छौं! हामी तपाईंको मेसिन लर्निङ अध्ययनको लागि एक मैत्रीपूर्ण सुरुवातको ठाउँ सिर्जना गर्न चाहन्छौं र तपाईंको [प्रतिक्रिया](https://github.com/microsoft/ML-For-Beginners/discussions)लाई मूल्यांकन, प्रतिक्रिया, र समावेश गर्न इच्छुक छौं।
+
+[](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/) इन्स्टल गर्नुपर्नेछ, साथै [Visual Studio Code](https://code.visualstudio.com/) पनि Python र JavaScript विकासका लागि उपलब्ध हुनुपर्छ।
+- **GitHub खाता बनाउनुहोस्**। तपाईंले हामीलाई [GitHub](https://github.com) मा भेट्नुभएको हुनाले, तपाईंको खाता पहिले नै हुन सक्छ, तर नभए, एउटा खाता बनाउनुहोस् र यो पाठ्यक्रमलाई आफ्नो लागि फोर्क गर्नुहोस्। (हामीलाई एक स्टार दिन नबिर्सनुहोस् 😊)
+- **Scikit-learn अन्वेषण गर्नुहोस्**। [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) सँग परिचित हुनुहोस्, जुन मेसिन लर्निङ पुस्तकालयहरूको सेट हो, जसलाई हामी यी पाठहरूमा सन्दर्भ दिन्छौं।
+
+---
+## मेसिन लर्निङ के हो?
+
+'मेसिन लर्निङ' शब्द आजको सबैभन्दा लोकप्रिय र बारम्बार प्रयोग गरिने शब्दहरूमध्ये एक हो। तपाईंले यो शब्द कम्तिमा एक पटक सुन्नुभएको हुन सक्छ, यदि तपाईं प्रविधिसँग कुनै प्रकारको परिचित हुनुहुन्छ भने, चाहे तपाईं जुनसुकै क्षेत्रमा काम गर्नुहोस्। तर, मेसिन लर्निङको यान्त्रिकी धेरै मानिसहरूका लागि रहस्यमय छ। मेसिन लर्निङको शुरुवातीका लागि, यो विषय कहिलेकाहीँ भारी लाग्न सक्छ। त्यसैले, मेसिन लर्निङ वास्तवमा के हो भन्ने बुझ्न र यसलाई व्यावहारिक उदाहरणहरू मार्फत क्रमशः सिक्न महत्त्वपूर्ण छ।
+
+---
+## हाइप कर्भ
+
+
+
+> Google Trends ले 'मेसिन लर्निङ' शब्दको हालको 'हाइप कर्भ' देखाउँछ।
+
+---
+## एक रहस्यमय ब्रह्माण्ड
+
+हामी एक रहस्यमय ब्रह्माण्डमा बाँचिरहेका छौं। स्टेफन हकिङ, अल्बर्ट आइन्स्टाइन, र अन्य धेरै महान वैज्ञानिकहरूले आफ्नो जीवन यस संसारका रहस्यहरू पत्ता लगाउने अर्थपूर्ण जानकारी खोज्न समर्पित गरेका छन्। यो सिक्ने मानव अवस्था हो: एउटा बच्चाले नयाँ कुरा सिक्छ र वयस्क हुँदै जाँदा आफ्नो संसारको संरचना पत्ता लगाउँछ।
+
+---
+## बच्चाको मस्तिष्क
+
+बच्चाको मस्तिष्क र इन्द्रियहरूले आफ्नो वरपरका तथ्यहरू बुझ्छन् र जीवनका लुकेका ढाँचाहरू क्रमशः सिक्छन्, जसले बच्चालाई सिकेका ढाँचाहरू पहिचान गर्न तार्किक नियमहरू निर्माण गर्न मद्दत गर्छ। मानव मस्तिष्कको सिक्ने प्रक्रियाले मानिसलाई यो संसारको सबैभन्दा परिष्कृत जीवित प्राणी बनाउँछ। लुकेका ढाँचाहरू पत्ता लगाएर र त्यसपछि ती ढाँचाहरूमा नवीनता ल्याएर निरन्तर सिक्नुले हामीलाई हाम्रो जीवनभरि आफूलाई अझ राम्रो बनाउन सक्षम बनाउँछ। यो सिक्ने क्षमता र विकास गर्ने क्षमता [मस्तिष्कको प्लास्टिसिटी](https://www.simplypsychology.org/brain-plasticity.html) नामक अवधारणासँग सम्बन्धित छ। सतही रूपमा, हामी मानव मस्तिष्कको सिक्ने प्रक्रियाको र मेसिन लर्निङको अवधारणाहरू बीच केही प्रेरणादायक समानताहरू तान्न सक्छौं।
+
+---
+## मानव मस्तिष्क
+
+[मानव मस्तिष्क](https://www.livescience.com/29365-human-brain.html)ले वास्तविक संसारबाट कुरा बुझ्छ, बुझिएको जानकारीलाई प्रक्रिया गर्छ, तार्किक निर्णयहरू लिन्छ, र परिस्थितिका आधारमा निश्चित कार्यहरू गर्छ। यसलाई हामी बुद्धिमानीपूर्वक व्यवहार गर्नु भन्छौं। जब हामी यो बुद्धिमानीपूर्ण व्यवहार प्रक्रियाको नक्कल मेसिनमा प्रोग्राम गर्छौं, यसलाई कृत्रिम बुद्धिमत्ता (AI) भनिन्छ।
+
+---
+## केही शब्दावली
+
+यद्यपि यी शब्दहरू प्रायः भ्रमित गरिन्छन्, मेसिन लर्निङ (ML) कृत्रिम बुद्धिमत्ताको महत्त्वपूर्ण उपसमूह हो। **ML विशेष एल्गोरिदमहरू प्रयोग गरेर बुझिएको डाटाबाट अर्थपूर्ण जानकारी पत्ता लगाउन र लुकेका ढाँचाहरू फेला पार्न सम्बन्धित छ, जसले तार्किक निर्णय प्रक्रियालाई समर्थन गर्छ।**
+
+---
+## AI, ML, डीप लर्निङ
+
+
+
+> 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 प्रयोग गरेर कभर गर्छौं, जुन धेरै विद्यार्थीहरूले आधारभूत कुरा सिक्न प्रयोग गर्छन्। कृत्रिम बुद्धिमत्ता वा डीप लर्निङका व्यापक अवधारणाहरू बुझ्न, मेसिन लर्निङको बलियो आधारभूत ज्ञान अपरिहार्य छ, र त्यसैले हामी यसलाई यहाँ प्रस्ताव गर्न चाहन्छौं।
+
+---
+## यस पाठ्यक्रममा तपाईंले सिक्नुहुनेछ:
+
+- मेसिन लर्निङका आधारभूत अवधारणाहरू
+- मेसिन लर्निङको इतिहास
+- मेसिन लर्निङ र निष्पक्षता
+- रिग्रेसन मेसिन लर्निङ प्रविधिहरू
+- वर्गीकरण मेसिन लर्निङ प्रविधिहरू
+- क्लस्टरिङ मेसिन लर्निङ प्रविधिहरू
+- प्राकृतिक भाषा प्रशोधन मेसिन लर्निङ प्रविधिहरू
+- समय श्रृंखला पूर्वानुमान मेसिन लर्निङ प्रविधिहरू
+- सुदृढीकरण लर्निङ
+- मेसिन लर्निङका वास्तविक जीवनका प्रयोगहरू
+
+---
+## हामी के कभर गर्नेछैनौं
+
+- डीप लर्निङ
+- न्युरल नेटवर्क
+- AI
+
+सिकाइ अनुभवलाई अझ राम्रो बनाउन, हामी न्युरल नेटवर्क, 'डीप लर्निङ' - धेरै तह भएको मोडेल निर्माण, र AI को जटिलताहरूबाट टाढा रहनेछौं, जुन हामी अर्को पाठ्यक्रममा छलफल गर्नेछौं। हामी डाटा साइन्समा केन्द्रित अर्को पाठ्यक्रम पनि प्रस्ताव गर्नेछौं।
+
+---
+## किन मेसिन लर्निङ अध्ययन गर्ने?
+
+सिस्टमको दृष्टिकोणबाट, मेसिन लर्निङलाई स्वचालित प्रणालीहरूको निर्माणको रूपमा परिभाषित गरिएको छ, जसले डाटाबाट लुकेका ढाँचाहरू सिक्न र बुद्धिमानीपूर्ण निर्णय लिन मद्दत पुर्याउँछ।
+
+यो प्रेरणा मानव मस्तिष्कले बाह्य संसारबाट बुझ्ने डाटाका आधारमा केही कुरा कसरी सिक्छ भन्ने कुराबाट प्रेरित छ।
+
+✅ एक मिनेट सोच्नुहोस् कि किन कुनै व्यवसायले हार्ड-कोड गरिएको नियम-आधारित इन्जिन बनाउने सट्टा मेसिन लर्निङ रणनीतिहरू प्रयोग गर्न चाहन्छ।
+
+---
+## मेसिन लर्निङका प्रयोगहरू
+
+मेसिन लर्निङका प्रयोगहरू अहिले लगभग हरेक ठाउँमा छन्, र हाम्रो समाजमा बगिरहेको डाटाजस्तै सर्वव्यापी छन्, जुन हाम्रो स्मार्टफोन, जडित उपकरणहरू, र अन्य प्रणालीहरूले उत्पन्न गरेका छन्। अत्याधुनिक मेसिन लर्निङ एल्गोरिदमहरूको विशाल सम्भावनालाई ध्यानमा राख्दै, अनुसन्धानकर्ताहरूले बहुआयामिक र बहुविषयक वास्तविक जीवनका समस्याहरू समाधान गर्न यसको क्षमताको अन्वेषण गरेका छन्, जसले सकारात्मक परिणामहरू ल्याएको छ।
+
+---
+## लागू गरिएको मेसिन लर्निङका उदाहरणहरू
+
+**तपाईंले मेसिन लर्निङ धेरै तरिकामा प्रयोग गर्न सक्नुहुन्छ**:
+
+- बिरामीको मेडिकल इतिहास वा रिपोर्टबाट रोगको सम्भावना पूर्वानुमान गर्न।
+- मौसम डाटालाई उपयोग गरेर मौसम घटनाहरूको पूर्वानुमान गर्न।
+- पाठको भावना बुझ्न।
+- गलत समाचार पत्ता लगाएर प्रचार रोक्न।
+
+वित्त, अर्थशास्त्र, पृथ्वी विज्ञान, अन्तरिक्ष अन्वेषण, जैवचिकित्सा इन्जिनियरिङ, संज्ञानात्मक विज्ञान, र मानविकीका क्षेत्रहरूले पनि मेसिन लर्निङलाई आफ्नो क्षेत्रका कठिन, डाटा-प्रशोधन भारी समस्याहरू समाधान गर्न अनुकूल बनाएका छन्।
+
+---
+## निष्कर्ष
+
+मेसिन लर्निङले वास्तविक संसार वा उत्पन्न डाटाबाट अर्थपूर्ण अन्तर्दृष्टि पत्ता लगाएर ढाँचाहरू पत्ता लगाउने प्रक्रियालाई स्वचालित बनाउँछ। यसले व्यवसाय, स्वास्थ्य, र वित्तीय अनुप्रयोगहरूमा, अन्य धेरै क्षेत्रमा, आफूलाई अत्यन्त मूल्यवान साबित गरेको छ।
+
+निकट भविष्यमा, मेसिन लर्निङका आधारभूत कुरा बुझ्नु कुनै पनि क्षेत्रका मानिसहरूको लागि आवश्यक हुन गइरहेको छ, यसको व्यापक अपनत्वका कारण।
+
+---
+# 🚀 चुनौती
+
+कागजमा वा [Excalidraw](https://excalidraw.com/) जस्ता अनलाइन एप प्रयोग गरेर, AI, ML, डीप लर्निङ, र डाटा साइन्स बीचको भिन्नताहरूको तपाईंको बुझाइको स्केच बनाउनुहोस्। यी प्रविधिहरूले समाधान गर्न सक्ने समस्याहरूका केही विचारहरू थप्नुहोस्।
+
+# [पश्च-व्याख्यान क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2/)
+
+---
+# समीक्षा र आत्म-अध्ययन
+
+क्लाउडमा मेसिन लर्निङ एल्गोरिदमहरूसँग कसरी काम गर्न सकिन्छ भन्ने बारे थप जान्न, यो [लर्निङ पाथ](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott) अनुसरण गर्नुहोस्।
+
+मेसिन लर्निङका आधारभूत कुराहरूको बारेमा [लर्निङ पाथ](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/ne/1-Introduction/1-intro-to-ML/assignment.md b/translations/ne/1-Introduction/1-intro-to-ML/assignment.md
new file mode 100644
index 000000000..625a924e8
--- /dev/null
+++ b/translations/ne/1-Introduction/1-intro-to-ML/assignment.md
@@ -0,0 +1,23 @@
+
+# सुरु गर्नुहोस् र चलाउनुहोस्
+
+## निर्देशनहरू
+
+यस गैर-ग्रेडेड असाइनमेन्टमा, तपाईंले Python को पुनरावलोकन गर्नुपर्छ र आफ्नो वातावरण सेटअप गर्नुपर्छ ताकि नोटबुकहरू चलाउन सकियोस्।
+
+यो [Python सिक्ने मार्ग](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/ne/1-Introduction/2-history-of-ML/README.md b/translations/ne/1-Introduction/2-history-of-ML/README.md
new file mode 100644
index 000000000..ad0b3f2dc
--- /dev/null
+++ b/translations/ne/1-Introduction/2-history-of-ML/README.md
@@ -0,0 +1,165 @@
+
+# मेसिन लर्निङको इतिहास
+
+
+> स्केच नोट [टोमोमी इमुरा](https://www.twitter.com/girlie_mac) द्वारा
+
+## [पाठ अघि क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3/)
+
+---
+
+[](https://youtu.be/N6wxM4wZ7V0 "मेसिन लर्निङका लागि शुरुआतीहरू - मेसिन लर्निङको इतिहास")
+
+> 🎥 माथिको तस्बिरमा क्लिक गरेर यस पाठको छोटो भिडियो हेर्नुहोस्।
+
+यस पाठमा, हामी मेसिन लर्निङ र कृत्रिम बुद्धिमत्ताको इतिहासका प्रमुख माइलस्टोनहरूबारे छलफल गर्नेछौं।
+
+कृत्रिम बुद्धिमत्ता (AI) को इतिहास मेसिन लर्निङको इतिहाससँग गहिरो रूपमा जोडिएको छ, किनभने ML का एल्गोरिदम र कम्प्युटेसनल प्रगतिहरूले AI को विकासलाई सहयोग पुर्याएका छन्। यद्यपि यी क्षेत्रहरू १९५० को दशकमा छुट्टाछुट्टै अध्ययनका रूपमा स्थापित भए, [एल्गोरिदमिक, सांख्यिकीय, गणितीय, कम्प्युटेसनल र प्राविधिक खोजहरू](https://wikipedia.org/wiki/Timeline_of_machine_learning) यस युगभन्दा पहिले नै भएका थिए। वास्तवमा, मानिसहरूले [सयौं वर्षदेखि](https://wikipedia.org/wiki/History_of_artificial_intelligence) 'सोच्ने मेसिन' को अवधारणाबारे विचार गरिरहेका थिए।
+
+---
+## उल्लेखनीय खोजहरू
+
+- १७६३, १८१२ [बेयस प्रमेय](https://wikipedia.org/wiki/Bayes%27_theorem) र यसको पूर्ववर्तीहरू। यो प्रमेय र यसको प्रयोगहरूले पूर्व ज्ञानको आधारमा कुनै घटनाको सम्भावना वर्णन गर्दछ।
+- १८०५ [लिस्ट स्क्वायर थ्योरी](https://wikipedia.org/wiki/Least_squares) फ्रेन्च गणितज्ञ एड्रियन-मेरी लेजेन्ड्रे द्वारा। यो सिद्धान्त, जुन तपाईं हाम्रो रिग्रेसन युनिटमा सिक्नुहुनेछ, डाटा फिटिङमा सहयोग गर्दछ।
+- १९१३ [मार्कोभ चेन](https://wikipedia.org/wiki/Markov_chain), जसले अघिल्लो अवस्थाको आधारमा सम्भावित घटनाहरूको क्रम वर्णन गर्दछ।
+- १९५७ [पर्सेप्ट्रोन](https://wikipedia.org/wiki/Perceptron), अमेरिकी मनोवैज्ञानिक फ्र्यांक रोसेनब्लाट द्वारा आविष्कार गरिएको एक प्रकारको रेखीय वर्गीकरणकर्ता, जसले गहिरो शिक्षणमा प्रगति ल्यायो।
+
+---
+
+- १९६७ [नियरस्ट नेबर](https://wikipedia.org/wiki/Nearest_neighbor), मूलतः मार्गहरू नक्सा बनाउन डिजाइन गरिएको एल्गोरिदम। ML सन्दर्भमा, यो ढाँचाहरू पत्ता लगाउन प्रयोग गरिन्छ।
+- १९७० [ब्याकप्रोपोगेसन](https://wikipedia.org/wiki/Backpropagation), [फिडफर्वार्ड न्यूरल नेटवर्क](https://wikipedia.org/wiki/Feedforward_neural_network) लाई तालिम दिन प्रयोग गरिन्छ।
+- १९८२ [रिकरेन्ट न्यूरल नेटवर्क](https://wikipedia.org/wiki/Recurrent_neural_network), फिडफर्वार्ड न्यूरल नेटवर्कबाट व्युत्पन्न कृत्रिम न्यूरल नेटवर्कहरू, जसले समयक्रमिक ग्राफहरू सिर्जना गर्दछ।
+
+✅ अलिकति अनुसन्धान गर्नुहोस्। ML र AI को इतिहासमा अरू कुन मितिहरू महत्त्वपूर्ण छन्?
+
+---
+## १९५०: सोच्ने मेसिनहरू
+
+एलन ट्युरिङ, जसलाई [२०१९ मा जनताले](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) २०औं शताब्दीको महान वैज्ञानिकको रूपमा मतदान गरेका थिए, 'सोच्न सक्ने मेसिन' को अवधारणाको जग बसाल्न मद्दत गरेको श्रेय दिइन्छ। उनले [ट्युरिङ टेस्ट](https://www.bbc.com/news/technology-18475646) सिर्जना गरेर यो अवधारणाको अनुभवजन्य प्रमाण खोज्ने प्रयास गरे, जुन तपाईं हाम्रो NLP पाठहरूमा अन्वेषण गर्नुहुनेछ।
+
+---
+## १९५६: डार्टमाउथ ग्रीष्मकालीन अनुसन्धान परियोजना
+
+"डार्टमाउथ ग्रीष्मकालीन अनुसन्धान परियोजना कृत्रिम बुद्धिमत्ताको क्षेत्रमा एक ऐतिहासिक घटना थियो," र यहीं 'कृत्रिम बुद्धिमत्ता' शब्दको निर्माण गरियो ([स्रोत](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))।
+
+> सिकाइ वा बुद्धिमत्ताको कुनै पनि पक्षलाई यति स्पष्ट रूपमा वर्णन गर्न सकिन्छ कि मेसिनलाई यसलाई अनुकरण गर्न बनाइन्छ।
+
+---
+
+नेतृत्वकर्ता, गणितका प्राध्यापक जोन म्याककार्थीले "सिकाइ वा बुद्धिमत्ताको कुनै पनि पक्षलाई यति स्पष्ट रूपमा वर्णन गर्न सकिन्छ कि मेसिनलाई यसलाई अनुकरण गर्न बनाइन्छ" भन्ने अनुमानको आधारमा अघि बढ्ने आशा राखेका थिए। सहभागीहरूमा यस क्षेत्रका अर्को प्रसिद्ध व्यक्तित्व मार्भिन मिन्स्की पनि थिए।
+
+यो कार्यशालाले "प्रतीकात्मक विधिहरूको उदय, सीमित डोमेनमा केन्द्रित प्रणालीहरू (प्रारम्भिक विशेषज्ञ प्रणालीहरू), र निगमनात्मक प्रणालीहरू विरुद्ध प्रेरणात्मक प्रणालीहरू" जस्ता छलफलहरूलाई प्रोत्साहित गरेको श्रेय पाएको छ। ([स्रोत](https://wikipedia.org/wiki/Dartmouth_workshop))।
+
+---
+## १९५६ - १९७४: "सुनौलो वर्षहरू"
+
+१९५० को दशकदेखि ७० को दशकको मध्यसम्म, AI ले धेरै समस्याहरू समाधान गर्न सक्छ भन्ने आशा उच्च थियो। १९६७ मा, मार्भिन मिन्स्कीले आत्मविश्वासका साथ भने, "एक पुस्ताभित्र ... 'कृत्रिम बुद्धिमत्ता' सिर्जना गर्ने समस्या धेरै हदसम्म समाधान हुनेछ।"
+
+प्राकृतिक भाषा प्रशोधन अनुसन्धान फस्टायो, खोजलाई परिष्कृत गरियो, र 'माइक्रो-वर्ल्ड' को अवधारणा सिर्जना गरियो, जहाँ साधारण कार्यहरू साधारण भाषा निर्देशनहरू प्रयोग गरेर पूरा गरिन्थ्यो।
+
+---
+
+अनुसन्धानलाई सरकारी एजेन्सीहरूले राम्रोसँग वित्त पोषण गरे, कम्प्युटेसन र एल्गोरिदममा प्रगति गरियो, र बुद्धिमान मेसिनहरूको प्रोटोटाइपहरू निर्माण गरियो। ती मेसिनहरूमा समावेश छन्:
+
+* [शेकी रोबोट](https://wikipedia.org/wiki/Shakey_the_robot), जसले 'बुद्धिमानी' रूपमा कार्यहरू प्रदर्शन गर्ने निर्णय गर्न सक्थ्यो।
+
+ 
+ > १९७२ मा शेकी
+
+---
+
+* एलिजा, एक प्रारम्भिक 'च्याटरबोट', मानिसहरूसँग संवाद गर्न र एक प्राथमिक 'थेरापिस्ट' को रूपमा कार्य गर्न सक्थ्यो। तपाईं NLP पाठहरूमा एलिजाबारे थप जान्नुहुनेछ।
+
+ 
+ > एलिजाको एक संस्करण
+
+---
+
+* "ब्लक वर्ल्ड" एक माइक्रो-वर्ल्डको उदाहरण थियो, जहाँ ब्लकहरू थुपार्न र क्रमबद्ध गर्न सकिन्थ्यो, र मेसिनलाई निर्णय लिन सिकाउने प्रयोगहरू परीक्षण गरिन्थ्यो। [SHRDLU](https://wikipedia.org/wiki/SHRDLU) जस्ता पुस्तकालयहरूसँग निर्माण गरिएका प्रगतिहरूले भाषा प्रशोधनलाई अगाडि बढायो।
+
+ [](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLU सँग ब्लक वर्ल्ड")
+
+ > 🎥 माथिको तस्बिरमा क्लिक गरेर भिडियो हेर्नुहोस्: SHRDLU सँग ब्लक वर्ल्ड
+
+---
+## १९७४ - १९८०: "AI जाडो"
+
+१९७० को दशकको मध्यसम्म, 'बुद्धिमान मेसिन' बनाउने जटिलता कम आँकलन गरिएको र उपलब्ध कम्प्युट पावरको आधारमा यसको वाचा अत्यधिक भएको स्पष्ट भयो। वित्त पोषण सुक्यो र क्षेत्रप्रति विश्वास घट्यो। केही समस्याहरू जसले विश्वासलाई असर गरे:
+
+---
+- **सीमितताहरू**। कम्प्युट पावर पर्याप्त थिएन।
+- **कम्बिनेटोरियल विस्फोट**। कम्प्युटरहरूबाट बढी अपेक्षा गरिएसँगै तालिम दिनुपर्ने प्यारामिटरहरूको संख्या तीव्र रूपमा बढ्यो।
+- **डाटाको अभाव**। परीक्षण, विकास, र एल्गोरिदम परिष्कृत गर्न डाटाको अभावले प्रक्रिया अवरुद्ध गर्यो।
+- **के हामी सही प्रश्न सोधिरहेका छौं?**। सोधिएका प्रश्नहरू नै प्रश्न गर्न थालियो। अनुसन्धानकर्ताहरूले आफ्नो दृष्टिकोणको आलोचना सामना गर्न थाले:
+ - ट्युरिङ परीक्षणहरूलाई 'चाइनिज रूम थ्योरी' जस्ता विचारहरूले प्रश्न गरे, जसले "डिजिटल कम्प्युटरलाई प्रोग्रामिङ गर्दा यसले भाषा बुझेजस्तो देखिन सक्छ तर वास्तविक बुझाइ उत्पादन गर्न सक्दैन" भनेको थियो। ([स्रोत](https://plato.stanford.edu/entries/chinese-room/))
+ - "थेरापिस्ट" ELIZA जस्ता कृत्रिम बुद्धिमत्ताहरू समाजमा परिचय गराउने नैतिकतामाथि चुनौती दिइयो।
+
+---
+
+त्यसै समयमा, AI का विभिन्न विद्यालयहरू गठन हुन थाले। ["स्क्रफी" बनाम "नीट AI"](https://wikipedia.org/wiki/Neats_and_scruffies) अभ्यासहरू बीच एक विभाजन स्थापित भयो। _स्क्रफी_ प्रयोगशालाहरूले चाहिएको परिणाम प्राप्त नभएसम्म कार्यक्रमहरूलाई घण्टौंसम्म परिमार्जन गर्थे। _नीट_ प्रयोगशालाहरू "तर्क र औपचारिक समस्या समाधानमा केन्द्रित" थिए। ELIZA र SHRDLU प्रख्यात _स्क्रफी_ प्रणालीहरू थिए। १९८० को दशकमा, ML प्रणालीहरूलाई पुनरुत्पादनयोग्य बनाउन माग बढेसँगै, _नीट_ दृष्टिकोणले अग्रता लिन थाल्यो किनभने यसको परिणामहरू बढी व्याख्यायोग्य थिए।
+
+---
+## १९८० को दशक: विशेषज्ञ प्रणालीहरू
+
+क्षेत्र बढ्दै जाँदा, यसको व्यापारिक फाइदा स्पष्ट हुँदै गयो, र १९८० को दशकमा 'विशेषज्ञ प्रणालीहरू' को प्रसार भयो। "विशेषज्ञ प्रणालीहरू कृत्रिम बुद्धिमत्ता (AI) सफ्टवेयरका पहिलो सफल रूपहरू मध्ये थिए।" ([स्रोत](https://wikipedia.org/wiki/Expert_system))।
+
+यस प्रकारको प्रणाली वास्तवमा _हाइब्रिड_ हो, जसमा आंशिक रूपमा व्यापारिक आवश्यकताहरू परिभाषित गर्ने नियम इन्जिन र नयाँ तथ्यहरू अनुमान गर्न नियम प्रणाली प्रयोग गर्ने इन्फरेन्स इन्जिन समावेश छ।
+
+यस युगमा न्यूरल नेटवर्कप्रति पनि बढ्दो ध्यान दिइयो।
+
+---
+## १९८७ - १९९३: AI 'चिसो'
+
+विशेषज्ञ प्रणालीहरूको अत्यधिक विशेषज्ञताले दुर्भाग्यवश तिनीहरूलाई अत्यधिक सीमित बनायो। व्यक्तिगत कम्प्युटरहरूको उदयले यी ठूला, विशेषज्ञ, केन्द्रीकृत प्रणालीहरूसँग प्रतिस्पर्धा गर्यो। कम्प्युटिङको लोकतान्त्रिकरण सुरु भयो, जसले ठूलो डाटाको आधुनिक विस्फोटको बाटो खोल्यो।
+
+---
+## १९९३ - २०११
+
+यस युगले ML र AI लाई पहिले डाटा र कम्प्युट पावरको अभावले सिर्जना गरेका केही समस्याहरू समाधान गर्न सक्षम बनायो। डाटाको मात्रा तीव्र रूपमा बढ्न थाल्यो र राम्रो र नराम्रो दुबैका लागि व्यापक रूपमा उपलब्ध भयो, विशेष गरी २००७ को आसपास स्मार्टफोनको आगमनसँगै। कम्प्युट पावर तीव्र रूपमा विस्तार भयो, र एल्गोरिदमहरू पनि विकसित भए। क्षेत्रले परिपक्वता प्राप्त गर्न थाल्यो, किनभने विगतका स्वतन्त्र दिनहरू एक साँचो अनुशासनमा परिणत हुन थाले।
+
+---
+## अहिले
+
+आज मेसिन लर्निङ र AI ले हाम्रो जीवनका लगभग हरेक भागलाई छोएको छ। यो युगले यी एल्गोरिदमहरूको मानव जीवनमा पर्ने जोखिम र सम्भावित प्रभावहरूको सावधानीपूर्वक बुझाइको माग गर्दछ। माइक्रोसफ्टका ब्राड स्मिथले भनेझैं, "सूचना प्रविधिले गोपनीयता र अभिव्यक्तिको स्वतन्त्रता जस्ता मौलिक मानव-अधिकार संरक्षणको केन्द्रमा जाने मुद्दाहरू उठाउँछ। यी मुद्दाहरूले यी उत्पादनहरू सिर्जना गर्ने प्रविधि कम्पनीहरूको जिम्मेवारीलाई बढाउँछन्। हाम्रो दृष्टिमा, तिनीहरूले विचारशील सरकारी नियमन र स्वीकार्य प्रयोगहरूको वरिपरि मानदण्डहरूको विकासको लागि पनि आह्वान गर्छन्।" ([स्रोत](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/))।
+
+---
+
+भविष्यले के ल्याउँछ भन्ने हेर्न बाँकी छ, तर यी कम्प्युटर प्रणालीहरू र तिनीहरूले चलाउने सफ्टवेयर र एल्गोरिदमहरू बुझ्न महत्त्वपूर्ण छ। हामी आशा गर्दछौं कि यो पाठ्यक्रमले तपाईंलाई राम्रो बुझाइ प्राप्त गर्न मद्दत गर्नेछ ताकि तपाईं आफैं निर्णय गर्न सक्नुहुनेछ।
+
+[](https://www.youtube.com/watch?v=mTtDfKgLm54 "गहिरो शिक्षणको इतिहास")
+> 🎥 माथिको तस्बिरमा क्लिक गरेर भिडियो हेर्नुहोस्: यान लेकुनले गहिरो शिक्षणको इतिहासबारे यस व्याख्यानमा छलफल गरेका छन्
+
+---
+## 🚀चुनौती
+
+यी ऐतिहासिक क्षणहरू मध्ये कुनै एकमा गहिरो अध्ययन गर्नुहोस् र तिनीहरूका पछाडि रहेका व्यक्तिहरूबारे थप जान्नुहोस्। त्यहाँ रोचक पात्रहरू छन्, र कुनै पनि वैज्ञानिक खोज सांस्कृतिक निर्वातमा सिर्जना गरिएको थिएन। तपाईंले के पत्ता लगाउनुहुन्छ?
+
+## [पाठपछि क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4/)
+
+---
+## समीक्षा र आत्म अध्ययन
+
+यहाँ हेर्न र सुन्नका लागि केही सामग्रीहरू छन्:
+
+[यो पोडकास्ट जहाँ एमी बोयडले AI को विकासबारे छलफल गरेकी छिन्](http://runasradio.com/Shows/Show/739)
+
+[](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/ne/1-Introduction/2-history-of-ML/assignment.md b/translations/ne/1-Introduction/2-history-of-ML/assignment.md
new file mode 100644
index 000000000..310243ba1
--- /dev/null
+++ b/translations/ne/1-Introduction/2-history-of-ML/assignment.md
@@ -0,0 +1,24 @@
+
+# टाइमलाइन बनाउनुहोस्
+
+## निर्देशनहरू
+
+[यो रिपोजिटरी](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/ne/1-Introduction/3-fairness/README.md b/translations/ne/1-Introduction/3-fairness/README.md
new file mode 100644
index 000000000..bbd4c357d
--- /dev/null
+++ b/translations/ne/1-Introduction/3-fairness/README.md
@@ -0,0 +1,163 @@
+
+# जिम्मेवार AI को साथमा मेसिन लर्निङ समाधानहरू निर्माण गर्नुहोस्
+
+
+> स्केच नोट [टोमोमी इमुरा](https://www.twitter.com/girlie_mac) द्वारा
+
+## [पूर्व-व्याख्यान प्रश्नोत्तरी](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/5/)
+
+## परिचय
+
+यस पाठ्यक्रममा, तपाईंले मेसिन लर्निङले हाम्रो दैनिक जीवनमा कसरी प्रभाव पारिरहेको छ र पार्न सक्छ भन्ने कुरा पत्ता लगाउन सुरु गर्नुहुनेछ। अहिले पनि, प्रणालीहरू र मोडेलहरू स्वास्थ्य सेवा निदान, ऋण स्वीकृति, वा ठगी पत्ता लगाउने जस्ता दैनिक निर्णय प्रक्रियाहरूमा संलग्न छन्। त्यसैले, यी मोडेलहरूले विश्वासयोग्य परिणामहरू प्रदान गर्न राम्रोसँग काम गर्नु महत्त्वपूर्ण छ। कुनै पनि सफ्टवेयर अनुप्रयोग जस्तै, AI प्रणालीहरूले कहिलेकाहीँ अपेक्षाहरू पूरा गर्न सक्दैनन् वा अवाञ्छित परिणाम दिन सक्छन्। त्यसैले, AI मोडेलको व्यवहार बुझ्न र व्याख्या गर्न सक्षम हुनु अत्यावश्यक छ।
+
+कल्पना गर्नुहोस्, तपाईंले यी मोडेलहरू निर्माण गर्न प्रयोग गर्ने डाटामा कुनै निश्चित जनसांख्यिकीय, जस्तै जाति, लिङ्ग, राजनीतिक दृष्टिकोण, धर्म, वा असमान रूपमा प्रतिनिधित्व गर्ने जनसांख्यिकीयको अभाव छ भने के हुन्छ? यदि मोडेलको परिणामले कुनै जनसांख्यिकीयलाई प्राथमिकता दिएको रूपमा व्याख्या गरिन्छ भने के हुन्छ? अनुप्रयोगको लागि यसको परिणाम के हुन्छ? साथै, यदि मोडेलको प्रतिकूल परिणामले मानिसहरूलाई हानि पुर्याउँछ भने के हुन्छ? AI प्रणालीको व्यवहारको लागि को जिम्मेवार हुन्छ? यी केही प्रश्नहरू हुन् जुन हामी यस पाठ्यक्रममा अन्वेषण गर्नेछौं।
+
+यस पाठमा, तपाईं:
+
+- मेसिन लर्निङमा निष्पक्षताको महत्त्व र निष्पक्षतासँग सम्बन्धित हानिहरूप्रति सचेत हुनुहुनेछ।
+- असामान्य परिदृश्यहरू अन्वेषण गर्ने अभ्याससँग परिचित हुनुहुनेछ ताकि विश्वसनीयता र सुरक्षाको सुनिश्चितता गर्न सकियोस्।
+- सबैलाई सशक्त बनाउन समावेशी प्रणालीहरू डिजाइन गर्ने आवश्यकतालाई बुझ्नुहुनेछ।
+- डाटा र व्यक्तिहरूको गोपनीयता र सुरक्षाको रक्षा गर्न कत्तिको महत्त्वपूर्ण छ भन्ने कुरा अन्वेषण गर्नुहोस्।
+- AI मोडेलहरूको व्यवहार व्याख्या गर्न "ग्लास बक्स" दृष्टिकोणको महत्त्व देख्नुहोस्।
+- AI प्रणालीहरूमा विश्वास निर्माण गर्न उत्तरदायित्व कत्तिको महत्त्वपूर्ण छ भन्ने कुरा बुझ्नुहोस्।
+
+## पूर्वआवश्यकता
+
+पूर्वआवश्यकताका रूपमा, कृपया "जिम्मेवार AI सिद्धान्तहरू" सिक्ने मार्ग लिनुहोस् र तलको भिडियो हेर्नुहोस्:
+
+जिम्मेवार AI को बारेमा थप जान्न यो [सिक्ने मार्ग](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) अनुसरण गर्नुहोस्।
+
+[](https://youtu.be/dnC8-uUZXSc "Microsoft को जिम्मेवार AI को दृष्टिकोण")
+
+> 🎥 माथिको छवि क्लिक गर्नुहोस्: Microsoft को जिम्मेवार AI को दृष्टिकोण
+
+## निष्पक्षता
+
+AI प्रणालीहरूले सबैलाई निष्पक्ष रूपमा व्यवहार गर्नुपर्छ र समान समूहका मानिसहरूलाई फरक तरिकाले असर गर्नबाट बच्नुपर्छ। उदाहरणका लागि, जब AI प्रणालीहरूले चिकित्सा उपचार, ऋण आवेदन, वा रोजगारीमा मार्गदर्शन प्रदान गर्छन्, तिनीहरूले समान लक्षण, आर्थिक अवस्था, वा व्यावसायिक योग्यतासहित सबैलाई समान सिफारिस गर्नुपर्छ। हामी प्रत्येक मानिसले हाम्रो निर्णय र कार्यहरूलाई असर गर्ने पूर्वाग्रहहरू बोक्छौं। यी पूर्वाग्रहहरू हामीले AI प्रणालीहरूलाई तालिम दिन प्रयोग गर्ने डाटामा देखिन सक्छ। यस्तो हेरफेर कहिलेकाहीँ अनजानेमा हुन सक्छ। डाटामा पूर्वाग्रह कहिले परिचय गराइन्छ भन्ने कुरा सचेत रूपमा जान्न गाह्रो हुन्छ।
+
+**"असमानता"** भनेको कुनै समूहका मानिसहरूका लागि नकारात्मक प्रभावहरू, वा "हानिहरू" समावेश गर्दछ, जस्तै जाति, लिङ्ग, उमेर, वा अपाङ्गता स्थितिको आधारमा परिभाषित गरिएका। मुख्य निष्पक्षतासँग सम्बन्धित हानिहरूलाई यसरी वर्गीकृत गर्न सकिन्छ:
+
+- **आवंटन**, यदि कुनै लिङ्ग वा जातिलाई अर्कोभन्दा प्राथमिकता दिइन्छ भने।
+- **सेवाको गुणस्तर**। यदि तपाईंले डाटालाई कुनै विशिष्ट परिदृश्यका लागि तालिम दिनुभयो तर वास्तविकता धेरै जटिल छ भने, यसले खराब प्रदर्शन गर्ने सेवामा पुर्याउँछ। उदाहरणका लागि, एउटा हात धुने साबुन डिस्पेन्सरले गाढा छालाका मानिसहरूलाई चिन्न नसक्ने समस्या। [सन्दर्भ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **अपमान**। कुनै कुरा वा कसैलाई अन्यायपूर्ण रूपमा आलोचना र लेबल गर्नु। उदाहरणका लागि, छविलाई लेबल गर्ने प्रविधिले गाढा छालाका मानिसहरूको छविलाई गोरिल्ला भनेर गलत लेबल गरेको थियो।
+- **अधिक वा कम प्रतिनिधित्व**। विचार यो हो कि कुनै निश्चित समूहलाई कुनै निश्चित पेशामा देखिँदैन, र कुनै पनि सेवा वा कार्यले यसलाई निरन्तर प्रवर्द्धन गरिरहन्छ भने, यसले हानि पुर्याउँछ।
+- **रूढीवादी सोच**। कुनै समूहलाई पूर्वनिर्धारित विशेषतासँग जोड्नु। उदाहरणका लागि, अंग्रेजी र टर्किश भाषाको अनुवाद प्रणालीले लिङ्गसँग रूढीवादी सम्बन्ध भएका शब्दहरूको कारण गलत अनुवाद गर्न सक्छ।
+
+
+> टर्किशमा अनुवाद
+
+
+> अंग्रेजीमा पुन: अनुवाद
+
+AI प्रणालीहरू डिजाइन र परीक्षण गर्दा, हामीले सुनिश्चित गर्नुपर्छ कि AI निष्पक्ष छ र पूर्वाग्रही वा भेदभावपूर्ण निर्णयहरू गर्न प्रोग्राम गरिएको छैन, जुन मानिसहरूलाई पनि गर्न निषेध गरिएको छ। AI र मेसिन लर्निङमा निष्पक्षता सुनिश्चित गर्नु एक जटिल सामाजिक-प्राविधिक चुनौती हो।
+
+### विश्वसनीयता र सुरक्षा
+
+विश्वास निर्माण गर्न, AI प्रणालीहरू विश्वसनीय, सुरक्षित, र सामान्य र अप्रत्याशित अवस्थाहरूमा स्थिर हुनुपर्छ। AI प्रणालीहरूले विभिन्न परिस्थितिहरूमा कसरी व्यवहार गर्नेछन् भन्ने कुरा जान्न महत्त्वपूर्ण छ, विशेष गरी जब तिनीहरू असामान्य हुन्छन्। AI समाधानहरू निर्माण गर्दा, AI समाधानहरूले सामना गर्ने विभिन्न परिस्थितिहरूलाई कसरी व्यवस्थापन गर्ने भन्नेमा पर्याप्त ध्यान केन्द्रित गर्न आवश्यक छ। उदाहरणका लागि, एउटा स्वचालित कारले मानिसहरूको सुरक्षालाई उच्च प्राथमिकतामा राख्नुपर्छ। त्यसैले, कारलाई शक्ति दिने AI ले रात, आँधीबेहरी, वा हिउँको आँधी, सडकमा दौडिरहेका बच्चाहरू, घरपालुवा जनावरहरू, सडक निर्माणहरू आदि जस्ता सबै सम्भावित परिदृश्यहरू विचार गर्नुपर्छ। AI प्रणालीले विभिन्न अवस्थाहरूलाई विश्वसनीय र सुरक्षित रूपमा कसरी व्यवस्थापन गर्न सक्छ भन्ने कुरा डेटा वैज्ञानिक वा AI विकासकर्ताले प्रणालीको डिजाइन वा परीक्षणको क्रममा कत्तिको विचार गरे भन्ने स्तरलाई प्रतिबिम्बित गर्दछ।
+
+> [🎥 यहाँ क्लिक गर्नुहोस्: भिडियो](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+
+### समावेशिता
+
+AI प्रणालीहरू सबैलाई संलग्न र सशक्त बनाउन डिजाइन गरिनुपर्छ। AI प्रणालीहरू डिजाइन र कार्यान्वयन गर्दा, डेटा वैज्ञानिक र 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 प्रणालीले व्यक्तिहरू वा समाजलाई कसरी असर गर्छ भन्ने कुराको लागि जिम्मेवार हुनुपर्छ।
+
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft को जिम्मेवार AI को दृष्टिकोण")
+
+> 🎥 माथिको छवि क्लिक गर्नुहोस्: अनुहार पहिचान मार्फत व्यापक निगरानीको चेतावनी
+
+अन्ततः, हाम्रो पुस्ताका लागि सबैभन्दा ठूलो प्रश्नहरूमध्ये एक, AI लाई समाजमा ल्याउने पहिलो पुस्ताका रूपमा, कम्प्युटरहरू मानिसहरूप्रति उत्तरदायी रहन कसरी सुनिश्चित गर्ने र कम्प्युटरहरू डिजाइन गर्ने मानिसहरू सबैप्रति उत्तरदायी रहन कसरी सुनिश्चित गर्ने भन्ने हो।
+
+## प्रभाव मूल्याङ्कन
+
+मेसिन लर्निङ मोडेल तालिम दिनुअघि, AI प्रणालीको उद्देश्य बुझ्न, यसको इच्छित प्रयोग के हो, यो कहाँ तैनाथ हुनेछ, र प्रणालीसँग को अन्तरक्रिया गर्नेछ भन्ने कुरा बुझ्न प्रभाव मूल्याङ्कन गर्नु महत्त्वपूर्ण छ। यी समीक्षक(हरू) वा प्रणालीको मूल्याङ्कन गर्ने परीक्षकहरूको लागि उपयोगी हुन्छन् ताकि सम्भावित जोखिमहरू र अपेक्षित परिणामहरू पहिचान गर्दा कुन कारकहरू विचार गर्नुपर्छ भन्ने कुरा थाहा पाउन सकियोस्।
+
+प्रभाव मूल्याङ्कन गर्दा ध्यान दिनुपर्ने क्षेत्रहरू:
+
+* **व्यक्तिहरूमा प्रतिकूल प्रभाव**। प्रणालीको प्रदर्शनलाई बाधा पुर्याउने कुनै पनि प्रतिबन्ध वा आवश्यकताहरू, असमर्थित प्रयोग वा कुनै ज्ञात सीमाहरूको बारेमा सचेत हुनु महत्त्वपूर्ण छ ताकि प्रणालीलाई व्यक्तिहरूलाई हानि पुर्याउने तरिकामा प्रयोग नगरियोस्।
+* **डाटा आवश्यकताहरू**। प्रणालीले डाटालाई कसरी र कहाँ प्रयोग गर्नेछ भन्ने कुरा बुझेर समीक्षकहरूले तपाईंले विचार गर्नुपर्ने कुनै पनि डाटा आवश्यकताहरू (जस्तै, GDPR वा HIPPA डेटा नियमहरू) अन्वेषण गर्न सक्षम बनाउँछ। साथै, तालिमका लागि स्रोत वा डाटाको मात्रा पर्याप्त छ कि छैन भन्ने कुरा जाँच गर्नुहोस्।
+* **प्रभावको सारांश**। प्रणाली प्रयोग गर्दा उत्पन्न हुन सक्ने सम्भावित हानिहरूको सूची सङ्कलन गर्नुहोस्। ML जीवनचक्रभरि, पहिचान गरिएका मुद्दाहरू कम गरिएका छन् वा सम्बोधन गरिएका छन् कि छैनन् भन्ने कुरा समीक्षा गर्नुहोस्।
+* **छ वटा मुख्य सिद्धान्तहरूको लागि लागू हुने लक्ष्यहरू**। प्रत्येक सिद्धान्तका लक्ष्यहरू पूरा भएका छन् कि छैनन् र कुनै खाडलहरू छन् कि छैनन् भन्ने कुरा मूल्याङ्कन गर्नुहोस्।
+
+## जिम्मेवार AI को साथमा डिबगिङ
+
+सफ्टवेयर अनुप्रयोग डिबगिङ जस्तै, AI प्रणाली डिबगिङ भनेको प्रणालीमा समस्या पहिचान र समाधान गर्ने आवश्यक प्रक्रिया हो। प्रणालीले अपेक्षाअनुसार वा जिम्मेवार रूपमा प्रदर्शन नगर्ने धेरै कारकहरू छन्। अधिकांश परम्परागत मोडेल प्रदर्शन मेट्रिक्स मोडेलको प्रदर्शनको मात्रात्मक समग्र हुन्, जसले मोडेलले जिम्मेवार AI सिद्धान्तहरूको उल्लङ्घन कसरी गर्छ भन्ने कुरा विश्लेषण गर्न पर्याप्त हुँदैन। अझै, मेसिन लर्निङ मोडेल एउटा ब्ल्याक बक्स हो जसले यसको परिणामलाई के चलाउँछ भन्ने कुरा बुझ्न वा गल्ती गर्दा व्याख्या प्रदान गर्न गाह्रो बनाउँछ। यस पाठ्यक्रमको पछि, हामी जिम्मेवार AI ड्यासबोर्ड प्रयोग गरेर AI प्रणालीहरू डिबग गर्न सिक्नेछौं। ड्यासबोर्डले डेटा वैज्ञानिक र AI विकासकर्ताहरूलाई निम्न कार्यहरू गर्न समग्र उपकरण प्रदान गर्दछ:
+
+* **त्रुटि विश्लेषण**। मोडेलको त्रुटि वितरण पहिचान गर्न जसले प्रणालीको निष्पक्षता वा विश्वसनीयतालाई असर गर्न सक्छ।
+* **मोडेल अवलोकन**। डेटा समूहहरूमा मोडेलको प्रदर्शनमा असमानता कहाँ छ भनेर पत्ता लगाउन।
+* **डाटा विश्लेषण**। डाटा वितरण बुझ्न र डाटामा कुनै सम्भावित पूर्वाग्रह पहिचान गर्न जसले निष्पक्षता, समावेशिता, र विश्वसनीयता मुद्दाहरू निम्त्याउन सक्छ।
+* **मोडेल व्याख्यात्मकता**। मोडेलको भविष्यवाणीलाई के असर गर्छ वा प्रभाव पार्छ भन्ने कुरा बुझ्न। यसले मोडेलको व्यवहार व्याख्या गर्न मद्दत गर्छ, जुन पारदर्शिता र उत्तरदायित्वका लागि महत्त्वपूर्ण छ।
+
+## 🚀 चुनौती
+
+हानिहरूलाई सुरुमा नै रोक्न, हामीले:
+
+- प्रणालीहरूमा काम गर्ने मानिसहरूको पृष्ठ
+यस पाठमा, तपाईंले मेसिन लर्निङमा निष्पक्षता र अन्यायका अवधारणाहरूको केही आधारभूत कुरा सिक्नुभएको छ।
+
+यो कार्यशालालाई हेरेर विषयहरूमा अझ गहिरो जानकारी लिनुहोस्:
+
+- जिम्मेवार AI को खोजीमा: सिद्धान्तलाई व्यवहारमा ल्याउने Besmira Nushi, Mehrnoosh Sameki र Amit Sharma द्वारा
+
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: जिम्मेवार AI निर्माणका लागि खुला स्रोत फ्रेमवर्क")
+
+
+> 🎥 माथिको तस्बिरमा क्लिक गर्नुहोस् भिडियोका लागि: RAI Toolbox: जिम्मेवार AI निर्माणका लागि खुला स्रोत फ्रेमवर्क Besmira Nushi, Mehrnoosh Sameki, र Amit Sharma द्वारा
+
+साथै, पढ्नुहोस्:
+
+- 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/ne/1-Introduction/3-fairness/assignment.md b/translations/ne/1-Introduction/3-fairness/assignment.md
new file mode 100644
index 000000000..ffa35768e
--- /dev/null
+++ b/translations/ne/1-Introduction/3-fairness/assignment.md
@@ -0,0 +1,25 @@
+
+# जिम्मेवार 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/ne/1-Introduction/4-techniques-of-ML/README.md b/translations/ne/1-Introduction/4-techniques-of-ML/README.md
new file mode 100644
index 000000000..d59418673
--- /dev/null
+++ b/translations/ne/1-Introduction/4-techniques-of-ML/README.md
@@ -0,0 +1,132 @@
+
+# मेसिन लर्निङका प्रविधिहरू
+
+मेसिन लर्निङ मोडेलहरू निर्माण, प्रयोग, र मर्मत गर्ने प्रक्रिया तथा तिनीहरूले प्रयोग गर्ने डाटा अन्य विकास कार्यप्रवाहहरू भन्दा धेरै फरक छ। यस पाठमा, हामी यस प्रक्रियालाई स्पष्ट पार्नेछौं र तपाईंलाई जान्न आवश्यक मुख्य प्रविधिहरूको रूपरेखा प्रस्तुत गर्नेछौं। तपाईं:
+
+- मेसिन लर्निङको आधारभूत प्रक्रियाहरू उच्च स्तरमा बुझ्नुहोस्।
+- 'मोडेल', 'पूर्वानुमान', र 'प्रशिक्षण डाटा' जस्ता आधारभूत अवधारणाहरू अन्वेषण गर्नुहोस्।
+
+## [पाठ अघि क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/7/)
+
+[](https://youtu.be/4NGM0U2ZSHU "मेसिन लर्निङका प्रविधिहरू")
+
+> 🎥 माथिको तस्बिरमा क्लिक गरेर यस पाठको छोटो भिडियो हेर्नुहोस्।
+
+## परिचय
+
+उच्च स्तरमा, मेसिन लर्निङ (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') पठाउनुहुन्छ।
+
+### मोडेलको मूल्याङ्कन गर्नुहोस्
+
+एक पटक प्रशिक्षण प्रक्रिया पूरा भएपछि (ठूलो मोडेललाई प्रशिक्षण दिन धेरै पुनरावृत्ति, वा 'epochs', लाग्न सक्छ), तपाईंले परीक्षण डाटाको प्रयोग गरेर मोडेलको प्रदर्शनको मूल्याङ्कन गर्न सक्नुहुन्छ। यो डाटा मूल डाटाको उपसमुच्ची हो जसलाई मोडेलले पहिले विश्लेषण गरेको छैन। तपाईंले आफ्नो मोडेलको गुणस्तरको बारेमा मेट्रिक्सको तालिका प्रिन्ट गर्न सक्नुहुन्छ।
+
+🎓 **मोडेल फिटिङ**
+
+मेसिन लर्निङको सन्दर्भमा, मोडेल फिटिङले मोडेलको अन्तर्निहित कार्यको सटीकतालाई जनाउँछ जब यसले डाटालाई विश्लेषण गर्न प्रयास गर्दछ जससँग यो परिचित छैन।
+
+🎓 **अन्डरफिटिङ** र **ओभरफिटिङ** सामान्य समस्याहरू हुन् जसले मोडेलको गुणस्तरलाई घटाउँछन्, किनभने मोडेलले प्रशिक्षण डाटासँग धेरै राम्रोसँग वा पर्याप्त राम्रोसँग फिट गर्दैन। यसले मोडेललाई प्रशिक्षण डाटासँग धेरै नजिक वा धेरै ढिलो मिल्दो पूर्वानुमान गर्न बनाउँछ। ओभरफिट मोडेलले प्रशिक्षण डाटालाई धेरै राम्रोसँग पूर्वानुमान गर्छ किनभने यसले डाटाको विवरण र शोरलाई धेरै राम्रोसँग सिकेको छ। अन्डरफिट मोडेल सटीक छैन किनभने यसले न त यसको प्रशिक्षण डाटालाई सही रूपमा विश्लेषण गर्न सक्छ न त यसले पहिले 'देखेको छैन' डाटालाई।
+
+
+> [Jen Looper](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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8/)
+
+## समीक्षा र आत्म अध्ययन
+
+डाटा वैज्ञानिकहरूको अन्तर्वार्ता खोज्नुहोस् जसले आफ्नो दैनिक कामको बारेमा छलफल गर्छन्। यहाँ [एक](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/ne/1-Introduction/4-techniques-of-ML/assignment.md b/translations/ne/1-Introduction/4-techniques-of-ML/assignment.md
new file mode 100644
index 000000000..34679351d
--- /dev/null
+++ b/translations/ne/1-Introduction/4-techniques-of-ML/assignment.md
@@ -0,0 +1,25 @@
+
+# डेटा वैज्ञानिकसँग अन्तर्वार्ता गर्नुहोस्
+
+## निर्देशनहरू
+
+तपाईंको कम्पनीमा, प्रयोगकर्ता समूहमा, वा तपाईंका साथीहरू वा सहपाठीहरू बीच, कुनै व्यक्तिसँग कुरा गर्नुहोस् जो व्यावसायिक रूपमा डेटा वैज्ञानिकको रूपमा काम गर्छन्। उनीहरूको दैनिक कामकाजको बारेमा ५०० शब्दको छोटो लेख लेख्नुहोस्। के उनीहरू विशेषज्ञ हुन्, वा 'फुल स्ट्याक' काम गर्छन्?
+
+## मूल्यांकन मापदण्ड
+
+| मापदण्ड | उत्कृष्टता | पर्याप्तता | सुधार आवश्यक छ |
+| -------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | --------------------- |
+| | सही लम्बाइको निबन्ध, स्रोतहरू उल्लेख गरिएको, .doc फाइलको रूपमा प्रस्तुत गरिएको छ | निबन्ध राम्रोसँग उल्लेख गरिएको छैन वा आवश्यक लम्बाइभन्दा छोटो छ | कुनै निबन्ध प्रस्तुत गरिएको छैन |
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/1-Introduction/README.md b/translations/ne/1-Introduction/README.md
new file mode 100644
index 000000000..975b8d8ad
--- /dev/null
+++ b/translations/ne/1-Introduction/README.md
@@ -0,0 +1,37 @@
+
+# मेसिन लर्निङको परिचय
+
+यस पाठ्यक्रमको यस खण्डमा, तपाईंलाई मेसिन लर्निङ क्षेत्रको आधारभूत अवधारणाहरू, यसको अर्थ के हो, यसको इतिहास, र अनुसन्धानकर्ताहरूले यससँग काम गर्न प्रयोग गर्ने प्रविधिहरूको बारेमा परिचय गराइनेछ। आउनुहोस्, हामी सँगै यो नयाँ मेसिन लर्निङको संसार अन्वेषण गरौं!
+
+
+> फोटो: बिल अक्सफोर्ड द्वारा अनस्प्ल्यास मा
+
+### पाठहरू
+
+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) द्वारा लेखिएको हो।
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/2-Regression/1-Tools/README.md b/translations/ne/2-Regression/1-Tools/README.md
new file mode 100644
index 000000000..5b4b4f87a
--- /dev/null
+++ b/translations/ne/2-Regression/1-Tools/README.md
@@ -0,0 +1,239 @@
+
+# Python र Scikit-learn प्रयोग गरेर Regression Models सुरु गर्नुहोस्
+
+
+
+> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+## [Pre-lecture quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9/)
+
+> ### [यो पाठ R मा पनि उपलब्ध छ!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+
+## परिचय
+
+यी चार पाठहरूमा, तपाईंले regression models कसरी निर्माण गर्ने भनेर सिक्नुहुनेछ। हामी चाँडै नै यी मोडेलहरू केका लागि प्रयोग गरिन्छ भन्ने छलफल गर्नेछौं। तर, कुनै पनि कुरा सुरु गर्नु अघि, प्रक्रिया सुरु गर्नका लागि तपाईंले सही उपकरणहरू तयार गर्नुभएको छ भनेर सुनिश्चित गर्नुहोस्!
+
+यस पाठमा, तपाईंले सिक्नुहुनेछ:
+
+- आफ्नो कम्प्युटरलाई स्थानीय मशीन लर्निङ कार्यहरूको लागि कन्फिगर गर्ने।
+- Jupyter notebooks सँग काम गर्ने।
+- Scikit-learn प्रयोग गर्ने, जसमा यसको स्थापना पनि समावेश छ।
+- Linear regression को अभ्यास गर्ने।
+
+## स्थापना र कन्फिगरेसनहरू
+
+[](https://youtu.be/-DfeD2k2Kj0 "मशीन लर्निङका लागि उपकरणहरू सेटअप गर्नुहोस्")
+
+> 🎥 माथिको छवि क्लिक गरेर 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) को यो संग्रह प्रयोग गर्नुहोस्।
+ >
+ > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code मा Python सेटअप गर्नुहोस्")
+ >
+ > 🎥 माथिको छवि क्लिक गरेर Python VS Code मा प्रयोग गर्ने भिडियो हेर्नुहोस्।
+
+3. **Scikit-learn स्थापना गर्नुहोस्।** [यी निर्देशनहरू](https://scikit-learn.org/stable/install.html) पालना गरेर Scikit-learn स्थापना गर्नुहोस्। तपाईंले Python 3 प्रयोग गर्नु पर्छ भन्ने सुनिश्चित गर्नुपर्ने भएकाले virtual environment प्रयोग गर्न सिफारिस गरिन्छ। यदि तपाईं M1 Mac मा यो लाइब्रेरी स्थापना गर्दै हुनुहुन्छ भने, माथि दिइएको पृष्ठमा विशेष निर्देशनहरू छन्।
+
+4. **Jupyter Notebook स्थापना गर्नुहोस्।** तपाईंले [Jupyter package](https://pypi.org/project/jupyter/) स्थापना गर्नुपर्नेछ।
+
+## तपाईंको ML लेखन वातावरण
+
+तपाईंले **notebooks** प्रयोग गरेर Python कोड विकास गर्नुहुनेछ र मशीन लर्निङ मोडेलहरू निर्माण गर्नुहुनेछ। यो प्रकारको फाइल डेटा वैज्ञानिकहरूको लागि सामान्य उपकरण हो, र तिनीहरूलाई `.ipynb` एक्स्टेन्सनले चिनिन्छ।
+
+Notebooks एक अन्तरक्रियात्मक वातावरण हो जसले विकासकर्तालाई कोड लेख्न र कोडको वरिपरि नोटहरू र डकुमेन्टेसन थप्न अनुमति दिन्छ, जुन प्रायः प्रयोगात्मक वा अनुसन्धान-उन्मुख परियोजनाहरूका लागि उपयोगी हुन्छ।
+
+[](https://youtu.be/7E-jC8FLA2E "Jupyter Notebooks सेटअप गर्नुहोस्")
+
+> 🎥 माथिको छवि क्लिक गरेर यो अभ्यासको छोटो भिडियो हेर्नुहोस्।
+
+### अभ्यास - नोटबुकसँग काम गर्नुहोस्
+
+यस फोल्डरमा, तपाईंले _notebook.ipynb_ फाइल पाउनुहुनेछ।
+
+1. _notebook.ipynb_ Visual Studio Code मा खोल्नुहोस्।
+
+ Jupyter server Python 3+ सँग सुरु हुनेछ। तपाईंले नोटबुकका क्षेत्रहरू पाउनुहुनेछ जसलाई `run` गर्न सकिन्छ। तपाईंले कोड ब्लक चलाउन, प्ले बटन जस्तो देखिने आइकन चयन गर्न सक्नुहुन्छ।
+
+2. `md` आइकन चयन गर्नुहोस् र केही markdown थप्नुहोस्, जस्तै **# Welcome to your notebook**।
+
+ त्यसपछि, केही Python कोड थप्नुहोस्।
+
+3. कोड ब्लकमा **print('hello notebook')** टाइप गर्नुहोस्।
+4. कोड चलाउनको लागि एरो चयन गर्नुहोस्।
+
+ तपाईंले प्रिन्ट गरिएको कथन देख्नु पर्नेछ:
+
+ ```output
+ hello notebook
+ ```
+
+
+
+तपाईं आफ्नो कोडसँगै नोटहरू थपेर नोटबुकलाई स्व-डकुमेन्ट गर्न सक्नुहुन्छ।
+
+✅ एक मिनेट सोच्नुहोस् कि वेब विकासकर्ताको कार्य वातावरण डेटा वैज्ञानिकको वातावरणभन्दा कति फरक छ।
+
+## Scikit-learn सँग सुरु गर्नुहोस्
+
+अब Python तपाईंको स्थानीय वातावरणमा सेटअप भइसकेको छ, र तपाईं Jupyter notebooks सँग सहज हुनुहुन्छ, Scikit-learn सँग पनि सहज बनौं। 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 learning समर्थन गर्दछ। यसले मोडेल फिटिंग, डेटा प्रि-प्रोसेसिङ, मोडेल चयन र मूल्याङ्कन, र अन्य धेरै उपयोगिताहरूका लागि विभिन्न उपकरणहरू प्रदान गर्दछ।"
+
+यस पाठक्रममा, तपाईं Scikit-learn र अन्य उपकरणहरू प्रयोग गरेर 'पारम्परिक मशीन लर्निङ' कार्यहरू प्रदर्शन गर्न मोडेलहरू निर्माण गर्नुहुनेछ। हामीले neural networks र deep learning जस्ता विषयहरूलाई जानाजानी समावेश गरेका छैनौं, किनभने ती हाम्रो आगामी 'AI for Beginners' पाठक्रममा राम्रोसँग समेटिनेछन्।
+
+Scikit-learn ले मोडेलहरू निर्माण गर्न र तिनीहरूलाई मूल्याङ्कन गर्न सजिलो बनाउँछ। यो मुख्य रूपमा संख्यात्मक डेटा प्रयोगमा केन्द्रित छ र सिकाइ उपकरणको रूपमा प्रयोग गर्नका लागि केही तयार-गरेका datasets समावेश गर्दछ। यसमा विद्यार्थीहरूले प्रयास गर्नका लागि पूर्व-निर्मित मोडेलहरू पनि समावेश छन्। अब, prepackaged डेटा लोड गर्ने र Scikit-learn को पहिलो ML मोडेल प्रयोग गर्ने प्रक्रिया अन्वेषण गरौं।
+
+## अभ्यास - तपाईंको पहिलो Scikit-learn नोटबुक
+
+> यो ट्युटोरियल Scikit-learn को वेबसाइटमा रहेको [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) बाट प्रेरित छ।
+
+[](https://youtu.be/2xkXL5EUpS0 "Python मा तपाईंको पहिलो Linear Regression प्रोजेक्ट")
+
+> 🎥 माथिको छवि क्लिक गरेर यो अभ्यासको छोटो भिडियो हेर्नुहोस्।
+
+यस पाठसँग सम्बन्धित _notebook.ipynb_ फाइलमा, सबै सेलहरू खाली गर्न 'trash can' आइकन थिच्नुहोस्।
+
+यस खण्डमा, तपाईं Scikit-learn मा सिकाइ उद्देश्यका लागि निर्मित सानो dataset सँग काम गर्नुहुनेछ। यो dataset मधुमेह (diabetes) सम्बन्धी हो। कल्पना गर्नुहोस् कि तपाईं मधुमेहका बिरामीहरूको उपचार परीक्षण गर्न चाहनुहुन्छ। मशीन लर्निङ मोडेलहरूले तपाईंलाई कुन बिरामीहरूले उपचारमा राम्रो प्रतिक्रिया दिनेछन् भनेर निर्धारण गर्न मद्दत गर्न सक्छ, भिन्न चरहरूको संयोजनको आधारमा। एउटा धेरै आधारभूत regression मोडेलले पनि, जब visualization गरिन्छ, चरहरूको बारेमा जानकारी देखाउन सक्छ जसले तपाईंलाई सैद्धान्तिक क्लिनिकल परीक्षणहरू व्यवस्थित गर्न मद्दत गर्दछ।
+
+✅ धेरै प्रकारका regression विधिहरू छन्, र कुन विधि छनोट गर्ने भन्ने कुरा तपाईंले खोज्न चाहेको उत्तरमा निर्भर गर्दछ। यदि तपाईं कुनै व्यक्तिको उमेरको आधारमा सम्भावित उचाइको भविष्यवाणी गर्न चाहनुहुन्छ भने, तपाईं linear regression प्रयोग गर्नुहुनेछ, किनभने तपाईं **संख्यात्मक मान** खोज्दै हुनुहुन्छ। यदि तपाईं कुनै प्रकारको भोजनलाई vegan मान्नुपर्छ कि हुँदैन भनेर पत्ता लगाउन चाहनुहुन्छ भने, तपाईं **श्रेणी निर्धारण** खोज्दै हुनुहुन्छ, त्यसैले तपाईं logistic regression प्रयोग गर्नुहुनेछ। पछि तपाईं logistic regression को बारेमा थप जान्नुहुनेछ। डेटा सम्बन्धी केही प्रश्नहरू सोच्नुहोस्, र यी विधिहरूमध्ये कुन उपयुक्त हुनेछ भनेर विचार गर्नुहोस्।
+
+अब यो कार्य सुरु गरौं।
+
+### लाइब्रेरीहरू आयात गर्नुहोस्
+
+यस कार्यका लागि हामी केही लाइब्रेरीहरू आयात गर्नेछौं:
+
+- **matplotlib**। यो एक उपयोगी [ग्राफिङ उपकरण](https://matplotlib.org/) हो, र हामी यसलाई line plot बनाउन प्रयोग गर्नेछौं।
+- **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` डेटा प्रशिक्षण र परीक्षण सेटहरूमा विभाजन गर्न प्रयोग गरिन्छ।
+
+### मधुमेह dataset
+
+निर्मित [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) मा मधुमेह सम्बन्धी 442 नमूनाहरू छन्, जसमा 10 feature variables छन्। तीमध्ये केही:
+
+- age: उमेर (वर्षमा)
+- bmi: शरीरको मास सूचकांक
+- bp: औसत रक्तचाप
+- s1 tc: T-Cells (सेतो रक्त कोशिकाको प्रकार)
+
+✅ यो dataset मा मधुमेह अनुसन्धानका लागि महत्त्वपूर्ण feature variable को रूपमा 'sex' को अवधारणा समावेश छ। धेरै चिकित्सा datasets मा यस्तो binary classification समावेश हुन्छ। यस्तो वर्गीकरणले जनसंख्याको केही भागलाई उपचारबाट कसरी बाहिर राख्न सक्छ भन्ने बारे सोच्नुहोस्।
+
+अब, X र y डेटा लोड गर्नुहोस्।
+
+> 🎓 सम्झनुहोस्, यो supervised learning हो, र हामीलाई नाम गरिएको 'y' target चाहिन्छ।
+
+नयाँ कोड सेलमा, `load_diabetes()` कल गरेर मधुमेह dataset लोड गर्नुहोस्। इनपुट `return_X_y=True` ले संकेत गर्दछ कि `X` डेटा म्याट्रिक्स हुनेछ, र `y` regression target हुनेछ।
+
+1. डेटा म्याट्रिक्सको आकार र यसको पहिलो तत्व देखाउन केही print आदेशहरू थप्नुहोस्:
+
+ ```python
+ X, y = datasets.load_diabetes(return_X_y=True)
+ print(X.shape)
+ print(X[0])
+ ```
+
+ तपाईंले प्रतिक्रिया स्वरूप पाउनु भएको कुरा tuple हो। तपाईंले tuple का दुई पहिलो मानहरू क्रमशः `X` र `y` मा असाइन गर्दै हुनुहुन्छ। [tuples](https://wikipedia.org/wiki/Tuple) को बारेमा थप जान्नुहोस्।
+
+ तपाईंले देख्न सक्नुहुन्छ कि यो डेटा 442 वस्तुहरूमा 10 तत्वहरूको array को रूपमा आकारमा छ:
+
+ ```text
+ (442, 10)
+ [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076
+ -0.04340085 -0.00259226 0.01990842 -0.01764613]
+ ```
+
+ ✅ डेटा र regression target बीचको सम्बन्धको बारेमा सोच्नुहोस्। Linear regression ले feature X र target variable y बीचको सम्बन्धको भविष्यवाणी गर्दछ। के तपाईं मधुमेह dataset को [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) लाई डकुमेन्टेसनमा फेला पार्न सक्नुहुन्छ? यो dataset के प्रदर्शन गर्दैछ?
+
+2. अब, यो dataset को तेस्रो स्तम्भ चयन गरेर plot गर्नको लागि एउटा भाग चयन गर्नुहोस्। तपाईं `:` अपरेटर प्रयोग गरेर सबै पङ्क्तिहरू चयन गर्न सक्नुहुन्छ, र त्यसपछि तेस्रो स्तम्भ (2) चयन गर्न सक्नुहुन्छ। तपाईं `reshape(n_rows, n_columns)` प्रयोग गरेर डेटा 2D array मा पुनःआकार दिन सक्नुहुन्छ। यदि कुनै एक प्यारामिटर -1 छ भने, सम्बन्धित आयाम स्वचालित रूपमा गणना गरिन्छ।
+
+ ```python
+ X = X[:, 2]
+ X = X.reshape((-1,1))
+ ```
+
+ ✅ कुनै पनि समयमा, डेटा प्रिन्ट गरेर यसको आकार जाँच गर्नुहोस्।
+
+3. अब तपाईंले डेटा plot गर्न तयार गर्नुभएको छ। अब, तपाईंले यो dataset मा संख्याहरू बीचको तार्किक विभाजन निर्धारण गर्न मेसिनको मद्दत लिन सक्नुहुन्छ। यसका लागि, तपाईंले डेटा (X) र target (y) दुवैलाई परीक्षण र प्रशिक्षण सेटहरूमा विभाजन गर्नुपर्छ। Scikit-learn ले यो गर्न सजिलो तरिका प्रदान गर्दछ; तपाईं आफ्नो परीक्षण डेटा निश्चित बिन्दुमा विभाजन गर्न सक्नुहुन्छ।
+
+ ```python
+ X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
+ ```
+
+4. अब तपाईं आफ्नो मोडेल प्रशिक्षण गर्न तयार हुनुहुन्छ! Linear regression मोडेल लोड गर्नुहोस् र `model.fit()` प्रयोग गरेर आफ्नो X र y प्रशिक्षण सेटहरूसँग यसलाई प्रशिक्षण गर्नुहोस्:
+
+ ```python
+ model = linear_model.LinearRegression()
+ model.fit(X_train, y_train)
+ ```
+
+ ✅ `model.fit()` यस्तो function हो जुन तपाईं TensorFlow जस्ता धेरै ML लाइब्रेरीहरूमा देख्नुहुनेछ।
+
+5. त्यसपछि, परीक्षण डेटा प्रयोग गरेर `predict()` function प्रयोग गरेर भविष्यवाणी सिर्जना गर्नुहोस्। यो डेटा समूहहरू बीचको रेखा कोर्न प्रयोग गरिनेछ।
+
+ ```python
+ y_pred = model.predict(X_test)
+ ```
+
+6. अब डेटा plot मा देखाउने समय हो। Matplotlib यो कार्यका लागि धेरै उपयोगी उपकरण हो। सबै X र y परीक्षण डेटा को scatterplot सिर्जना गर्नुहोस्, र मोडेलको डेटा समूहहरू बीचको सबैभन्दा उपयुक्त स्थानमा रेखा कोर्न भविष्यवाणी प्रयोग गर्नुहोस्।
+
+ ```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()
+ ```
+
+ 
+✅ यहाँ के भइरहेको छ भनेर अलिकति सोच्नुहोस्। धेरै साना डाटाका बिन्दुहरूमा एउटा सिधा रेखा चलिरहेको छ, तर यो वास्तवमा के गरिरहेको छ? के तपाईं देख्न सक्नुहुन्छ कि यो रेखा प्रयोग गरेर नयाँ, नदेखिएको डाटा बिन्दु प्लटको y अक्षसँग सम्बन्धित कहाँ फिट हुन्छ भनेर भविष्यवाणी गर्न सकिन्छ? यस मोडेलको व्यावहारिक उपयोगलाई शब्दमा व्यक्त गर्न प्रयास गर्नुहोस्।
+
+बधाई छ, तपाईंले आफ्नो पहिलो रेखीय प्रतिगमन मोडेल निर्माण गर्नुभयो, यसबाट भविष्यवाणी गर्नुभयो, र प्लटमा प्रदर्शन गर्नुभयो!
+
+---
+## 🚀चुनौती
+
+यस डेटासेटबाट फरक चर प्लट गर्नुहोस्। संकेत: यो लाइन सम्पादन गर्नुहोस्: `X = X[:,2]`। यस डेटासेटको लक्ष्यलाई ध्यानमा राख्दै, मधुमेह रोगको प्रगति बारे तपाईं के पत्ता लगाउन सक्षम हुनुहुन्छ?
+
+## [पोस्ट-व्याख्यान क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/)
+
+## समीक्षा र आत्म अध्ययन
+
+यस ट्युटोरियलमा, तपाईंले साधारण रेखीय प्रतिगमनसँग काम गर्नुभयो, बहुविध वा बहुपरिमाणीय रेखीय प्रतिगमनको सट्टा। यी विधिहरूको बीचको भिन्नताबारे अलिकति पढ्नुहोस्, वा [यो भिडियो](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/ne/2-Regression/1-Tools/assignment.md b/translations/ne/2-Regression/1-Tools/assignment.md
new file mode 100644
index 000000000..f633fca8d
--- /dev/null
+++ b/translations/ne/2-Regression/1-Tools/assignment.md
@@ -0,0 +1,27 @@
+
+# Scikit-learn सँग Regression
+
+## निर्देशनहरू
+
+Scikit-learn मा [Linnerud dataset](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) हेर्नुहोस्। यो dataset मा धेरै [targets](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset) छन्: 'यसमा तीन exercise (data) र तीन physiological (target) variables छन्, जुन बीस जना मध्यम उमेरका पुरुषहरूबाट fitness club मा सङ्कलन गरिएको हो।'
+
+आफ्नै शब्दमा, Regression model कसरी बनाउने भनेर वर्णन गर्नुहोस्, जसले waistline र कति situps गर्न सकिन्छ भन्ने सम्बन्धलाई plot गर्छ। यस dataset का अन्य datapoints का लागि पनि यस्तै गर्नुहोस्।
+
+## मूल्याङ्कन मापदण्ड
+
+| मापदण्ड | उत्कृष्ट | पर्याप्त | सुधार आवश्यक |
+| ------------------------------ | ----------------------------------- | ----------------------------- | -------------------------- |
+| वर्णनात्मक अनुच्छेद पेश गर्नुहोस् | राम्रोसँग लेखिएको अनुच्छेद पेश गरिएको छ | केही वाक्यहरू पेश गरिएको छ | कुनै वर्णन पेश गरिएको छैन |
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/2-Regression/1-Tools/notebook.ipynb b/translations/ne/2-Regression/1-Tools/notebook.ipynb
new file mode 100644
index 000000000..e69de29bb
diff --git a/translations/ne/2-Regression/1-Tools/solution/Julia/README.md b/translations/ne/2-Regression/1-Tools/solution/Julia/README.md
new file mode 100644
index 000000000..18fc04a8b
--- /dev/null
+++ b/translations/ne/2-Regression/1-Tools/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb b/translations/ne/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb
new file mode 100644
index 000000000..8e150148a
--- /dev/null
+++ b/translations/ne/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb
@@ -0,0 +1,449 @@
+{
+ "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-08-29T19:01:26+00:00",
+ "source_file": "2-Regression/1-Tools/solution/R/lesson_1-R.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [],
+ "metadata": {
+ "id": "YJUHCXqK57yz"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## रिग्रेशनको परिचय - पाठ १\n",
+ "\n",
+ "#### परिप्रेक्ष्यमा राख्दै\n",
+ "\n",
+ "✅ रिग्रेशनका धेरै प्रकारका विधिहरू छन्, र तपाईंले कुन विधि चयन गर्नुहुन्छ भन्ने कुरा तपाईंले खोजिरहेको उत्तरमा निर्भर गर्दछ। यदि तपाईंलाई कुनै निश्चित उमेरको व्यक्तिको सम्भावित उचाइ अनुमान गर्न चाहनुहुन्छ भने, तपाईं `linear regression` प्रयोग गर्नुहुनेछ, किनभने तपाईं **संख्यात्मक मान** खोज्दै हुनुहुन्छ। यदि तपाईंलाई थाहा पाउन चाहनुहुन्छ कि कुनै प्रकारको खाना शाकाहारी मान्नुपर्छ कि हुँदैन, तपाईं **श्रेणी निर्धारण** खोज्दै हुनुहुन्छ, त्यसैले तपाईं `logistic 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": [
+ "## १. हाम्रो उपकरण सेट लोड गर्दै\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": [
+ "## २. डायबिटीज डाटासेट\n",
+ "\n",
+ "यस अभ्यासमा, हामी हाम्रो रिग्रेसन सीपलाई प्रदर्शन गर्नेछौं डायबिटीज डाटासेटमा भविष्यवाणी गरेर। [डायबिटीज डाटासेट](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.rwrite1.txt) मा डायबिटीजसँग सम्बन्धित `४४२ नमूनाहरू` समावेश छन्, जसमा १० भविष्यवाणी गर्ने विशेषता भेरिएबलहरू छन्: `उमेर`, `लिङ्ग`, `शरीरको मास सूचकांक`, `औसत रक्तचाप`, र `छ वटा रक्त सीरम मापनहरू`, साथै परिणाम भेरिएबल `y`: आधाररेखापछि एक वर्षमा रोगको प्रगतिको मात्रात्मक मापन।\n",
+ "\n",
+ "|अवलोकनहरूको संख्या|४४२|\n",
+ "|------------------|:---|\n",
+ "|भविष्यवाणी गर्ने विशेषताहरू|पहिला १० स्तम्भहरू संख्यात्मक भविष्यवाणी गर्ने हुन्|\n",
+ "|परिणाम/लक्ष्य|११औं स्तम्भ आधाररेखापछि एक वर्षमा रोगको प्रगतिको मात्रात्मक मापन हो|\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",
+ "> 🎓 सम्झनुहोस्, यो सुपरभाइज्ड लर्निङ हो, र हामीलाई 'y' नामक लक्ष्य चाहिन्छ।\n",
+ "\n",
+ "तपाईंले R मा डाटा ह्यान्डल गर्नुअघि, डाटालाई R को मेमोरीमा आयात गर्नुपर्छ, वा R ले टाढाबाट डाटामा पहुँच गर्न प्रयोग गर्न सक्ने कनेक्शन बनाउनुपर्छ।\n",
+ "\n",
+ "> [readr](https://readr.tidyverse.org/) प्याकेज, जुन Tidyverse को हिस्सा हो, आयताकार डाटालाई R मा छिटो र सजिलो तरिकाले पढ्नको लागि एक उपयोगी उपाय प्रदान गर्दछ।\n",
+ "\n",
+ "अब, हामी यो स्रोत URL मा उपलब्ध डायबिटीज डाटासेट लोड गर्नेछौं: \n",
+ "\n",
+ "त्यसपछि, हामी हाम्रो डाटामा `glimpse()` प्रयोग गरेर एक स्यानिटी चेक गर्नेछौं र `slice()` प्रयोग गरेर पहिलो ५ पङ्क्तिहरू प्रदर्शन गर्नेछौं।\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": [
+ "## ३. प्रशिक्षण र परीक्षण डेटा\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",
+ "- मोडेल **मोड**ले सामान्य विकल्पहरू जस्तै प्रतिगमन र वर्गीकरण समावेश गर्दछ; केही मोडेल प्रकारहरूले यीमध्ये कुनै पनि समर्थन गर्छन् भने केहीले मात्र एक मोड समर्थन गर्छन्।\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",
+ "\n",
+ "## ५. परीक्षण सेटमा भविष्यवाणी गर्नुहोस्\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 को परम्परा सधैं परिणामहरूको लागि मानकीकृत स्तम्भ नामहरू भएको tibble/data frame उत्पादन गर्नु हो। यसले मूल डेटा र भविष्यवाणीहरूलाई प्रयोगयोग्य स्वरूपमा संयोजन गर्न सजिलो बनाउँछ, जस्तै प्लटिङ जस्ता पछिल्ला कार्यहरूको लागि।\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": [
+ "## ६. मोडेलिङ नतिजा प्लट गर्नुहोस्\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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/ne/2-Regression/1-Tools/solution/notebook.ipynb b/translations/ne/2-Regression/1-Tools/solution/notebook.ipynb
new file mode 100644
index 000000000..78a172a63
--- /dev/null
+++ b/translations/ne/2-Regression/1-Tools/solution/notebook.ipynb
@@ -0,0 +1,671 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "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": []
+ },
+ {
+ "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.
"
+ ]
+ },
+ "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"
+ ]
+ }
+ ],
+ "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-08-29T18:59:20+00:00",
+ "source_file": "2-Regression/1-Tools/solution/notebook.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/ne/2-Regression/2-Data/README.md b/translations/ne/2-Regression/2-Data/README.md
new file mode 100644
index 000000000..3b0821203
--- /dev/null
+++ b/translations/ne/2-Regression/2-Data/README.md
@@ -0,0 +1,226 @@
+
+# Scikit-learn प्रयोग गरेर Regression मोडेल बनाउने: डेटा तयार पार्ने र दृश्यात्मक बनाउने
+
+
+
+इन्फोग्राफिक: [Dasani Madipalli](https://twitter.com/dasani_decoded)
+
+## [पाठ अघि क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11/)
+
+> ### [यो पाठ R मा पनि उपलब्ध छ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+
+## परिचय
+
+अब तपाईं Scikit-learn प्रयोग गरेर मेसिन लर्निङ मोडेल निर्माण गर्न आवश्यक उपकरणहरूसँग तयार हुनुहुन्छ। तपाईं आफ्नो डेटासँग काम गर्न र ML समाधानहरू लागू गर्न तयार हुनुहुन्छ। डेटा प्रयोग गर्दा र ML समाधानहरू लागू गर्दा, सही प्रश्न सोध्न जान्नु महत्त्वपूर्ण छ ताकि तपाईं आफ्नो डेटाको सम्भावनाहरू सही रूपमा अनलक गर्न सक्नुहुन्छ।
+
+यस पाठमा, तपाईं सिक्नुहुनेछ:
+
+- मोडेल निर्माणका लागि डेटा कसरी तयार गर्ने।
+- डेटा दृश्यात्मकताका लागि Matplotlib कसरी प्रयोग गर्ने।
+
+## आफ्नो डेटाबाट सही प्रश्न सोध्ने
+
+तपाईंलाई चाहिएको उत्तरले तपाईंले कुन प्रकारको ML एल्गोरिदम प्रयोग गर्नुहुन्छ भन्ने निर्धारण गर्दछ। तपाईंले पाउने उत्तरको गुणस्तर तपाईंको डेटाको प्रकृतिमा निर्भर गर्दछ।
+
+यस पाठका लागि दिइएको [डेटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) हेर्नुहोस्। तपाईं यो .csv फाइललाई VS Code मा खोल्न सक्नुहुन्छ। छिटो हेर्दा नै देखिन्छ कि यसमा खाली ठाउँहरू छन् र स्ट्रिङ र संख्यात्मक डेटाको मिश्रण छ। त्यहाँ 'Package' नामको एउटा अचम्मको स्तम्भ पनि छ, जहाँ डेटा 'sacks', 'bins' र अन्य मानहरूको मिश्रण छ। वास्तवमा, यो डेटा अलि अस्तव्यस्त छ।
+
+[](https://youtu.be/5qGjczWTrDQ "ML for beginners - डेटा विश्लेषण र सफा गर्ने")
+
+> 🎥 माथिको छविमा क्लिक गरेर यस पाठका लागि डेटा तयार गर्ने छोटो भिडियो हेर्नुहोस्।
+
+वास्तवमा, पूर्ण रूपमा तयार डेटासेट पाउनु दुर्लभ कुरा हो, जसलाई ML मोडेल बनाउन सिधै प्रयोग गर्न सकिन्छ। यस पाठमा, तपाईंले कच्चा डेटासेटलाई मानक Python पुस्तकालयहरू प्रयोग गरेर कसरी तयार गर्ने सिक्नुहुनेछ। साथै, डेटा दृश्यात्मक बनाउन विभिन्न प्रविधिहरू पनि सिक्नुहुनेछ।
+
+## केस अध्ययन: 'कद्दू बजार'
+
+यस फोल्डरमा, तपाईंलाई [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) नामक .csv फाइल फोल्डरको `data` रुटमा भेट्नुहुनेछ। यसमा 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/) प्रयोग गरौं, जुन डेटा आकार दिनका लागि धेरै उपयोगी उपकरण हो, र यस कद्दू डेटालाई विश्लेषण र तयार पारौं।
+
+### पहिलो, हराएका मितिहरू जाँच गर्नुहोस्
+
+तपाईंले पहिले हराएका मितिहरू जाँच गर्नका लागि केही कदम चाल्नुपर्नेछ:
+
+1. मितिहरूलाई महिना ढाँचामा रूपान्तरण गर्नुहोस् (यी अमेरिकी मितिहरू हुन्, त्यसैले ढाँचा `MM/DD/YYYY` हो)।
+2. नयाँ स्तम्भमा महिना निकाल्नुहोस्।
+
+_नोटबुक.ipynb_ फाइललाई Visual Studio Code मा खोल्नुहोस् र स्प्रेडशीटलाई नयाँ Pandas dataframe मा आयात गर्नुहोस्।
+
+1. `head()` फंक्शन प्रयोग गरेर पहिलो पाँच पङ्क्तिहरू हेर्नुहोस्।
+
+ ```python
+ import pandas as pd
+ pumpkins = pd.read_csv('../data/US-pumpkins.csv')
+ pumpkins.head()
+ ```
+
+ ✅ अन्तिम पाँच पङ्क्तिहरू हेर्नका लागि तपाईं कुन फंक्शन प्रयोग गर्नुहुन्छ?
+
+1. हालको dataframe मा हराएको डेटा छ कि छैन जाँच गर्नुहोस्:
+
+ ```python
+ pumpkins.isnull().sum()
+ ```
+
+ हराएको डेटा छ, तर यो कार्यका लागि सायद महत्त्वपूर्ण नहोला।
+
+1. आफ्नो dataframe लाई सजिलो बनाउन, `loc` फंक्शन प्रयोग गरेर तपाईंलाई चाहिने स्तम्भहरू मात्र चयन गर्नुहोस्। `:` को अर्थ "सबै पङ्क्तिहरू" हो।
+
+ ```python
+ columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
+ pumpkins = pumpkins.loc[:, columns_to_select]
+ ```
+
+### दोस्रो, कद्दूको औसत मूल्य निर्धारण गर्नुहोस्
+
+दिइएको महिनामा कद्दूको औसत मूल्य निर्धारण गर्न तपाईंले कुन स्तम्भहरू चयन गर्नुहुन्छ? संकेत: तपाईंलाई ३ स्तम्भहरू चाहिन्छ।
+
+समाधान: `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 dataframe मा प्रतिलिपि गर्नुहोस्:
+
+ ```python
+ new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
+ ```
+
+ आफ्नो dataframe प्रिन्ट गर्दा, तपाईंले नयाँ regression मोडेल निर्माण गर्नका लागि सफा र व्यवस्थित डेटासेट देख्नुहुनेछ।
+
+### तर पर्खनुहोस्! यहाँ केही अचम्मको कुरा छ
+
+यदि तपाईं `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)]
+ ```
+
+ अब डेटा प्रिन्ट गर्दा, तपाईंले 'bushel' भएका करिब 415 पङ्क्तिहरू मात्र देख्नुहुनेछ।
+
+### तर पर्खनुहोस्! अझै केही गर्न बाँकी छ
+
+के तपाईंले देख्नुभयो कि पङ्क्तिहरूमा bushel को मात्रा फरक छ? तपाईंले मूल्यलाई प्रति bushel देखाउन सामान्यीकरण गर्नुपर्नेछ, त्यसैले मूल्यलाई मानकीकरण गर्न केही गणना गर्नुहोस्।
+
+1. नयाँ_pumpkins dataframe सिर्जना गर्ने ब्लकपछि यी लाइनहरू थप्नुहोस्:
+
+ ```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) अनुसार, bushel को तौल उत्पादनको प्रकारमा निर्भर गर्दछ, किनभने यो आयतनको मापन हो। "टमाटरको bushel, उदाहरणका लागि, 56 पाउन्ड तौल हुनुपर्छ... पात र हरियो सागले कम तौल लिन्छ, त्यसैले पालुङ्गोको bushel मात्र 20 पाउन्ड हुन्छ।" यो सबै धेरै जटिल छ! हामी bushel-देखि-पाउन्ड रूपान्तरण नगरी, प्रति bushel मूल्य निर्धारण गरौं। कद्दूको bushel को अध्ययनले देखाउँछ कि तपाईंको डेटाको प्रकृति बुझ्न कति महत्त्वपूर्ण छ!
+
+अब, तपाईं bushel मापनको आधारमा प्रति एकाइ मूल्य विश्लेषण गर्न सक्नुहुन्छ। डेटा फेरि प्रिन्ट गर्दा, तपाईंले यसलाई मानकीकृत देख्नुहुनेछ।
+
+✅ के तपाईंले देख्नुभयो कि आधा-bushel मा बेचिएका कद्दूहरू धेरै महँगा छन्? तपाईं यसको कारण पत्ता लगाउन सक्नुहुन्छ? संकेत: साना कद्दूहरू ठूला कद्दूहरूको तुलनामा धेरै महँगा हुन्छन्, सायद किनभने प्रति bushel धेरै साना कद्दूहरू हुन्छन्, जबकि ठूला कद्दूहरूले धेरै ठाउँ लिन्छन्।
+
+## दृश्यात्मकता रणनीतिहरू
+
+डेटा वैज्ञानिकको भूमिकाको एक हिस्सा भनेको उनीहरूले काम गरिरहेको डेटाको गुणस्तर र प्रकृति प्रदर्शन गर्नु हो। यसका लागि, उनीहरूले प्रायः रोचक दृश्यात्मकता, जस्तै प्लट, ग्राफ, र चार्टहरू सिर्जना गर्छन्, जसले डेटाका विभिन्न पक्षहरू देखाउँछ। यसरी, उनीहरूले अन्यथा पत्ता लगाउन गाह्रो हुने सम्बन्ध र खालिहरू दृश्यात्मक रूपमा देखाउन सक्छन्।
+
+[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - Matplotlib प्रयोग गरेर डेटा दृश्यात्मकता")
+
+> 🎥 माथिको छविमा क्लिक गरेर यस पाठका लागि डेटा दृश्यात्मकता गर्ने छोटो भिडियो हेर्नुहोस्।
+
+दृश्यात्मकताले मेसिन लर्निङ प्रविधि छनोट गर्न पनि मद्दत गर्न सक्छ। उदाहरणका लागि, यदि स्क्याटरप्लटले रेखा पछ्याएजस्तो देखिन्छ भने, डेटा linear regression अभ्यासका लागि उपयुक्त छ।
+
+Jupyter नोटबुकमा राम्रोसँग काम गर्ने डेटा दृश्यात्मकता पुस्तकालय [Matplotlib](https://matplotlib.org/) हो (जसलाई तपाईंले अघिल्लो पाठमा पनि देख्नुभयो)।
+
+> डेटा दृश्यात्मकतामा थप अनुभव लिन [यी ट्युटोरियलहरू](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) हेर्नुहोस्।
+
+## अभ्यास - Matplotlib सँग प्रयोग गर्नुहोस्
+
+तपाईंले भर्खरै सिर्जना गर्नुभएको नयाँ dataframe प्रदर्शन गर्न केही आधारभूत प्लटहरू बनाउन प्रयास गर्नुहोस्। आधारभूत लाइन प्लटले के देखाउँछ?
+
+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()
+ ```
+
+ 
+
+ के यो उपयोगी प्लट हो? यसले तपाईंलाई के अचम्मित गरायो?
+
+ यो विशेष रूपमा उपयोगी छैन, किनभने यसले तपाईंको डेटालाई महिनामा बिन्दुको रूपमा मात्र देखाउँछ।
+
+### यसलाई उपयोगी बनाउनुहोस्
+
+चार्टहरूले उपयोगी डेटा प्रदर्शन गर्न, तपाईंले प्रायः डेटालाई कुनै न कुनै रूपमा समूह गर्न आवश्यक पर्छ। महिनाहरू y-अक्षमा देखाउने र डेटा वितरण प्रदर्शन गर्ने प्लट सिर्जना गरौं।
+
+1. समूहित बार चार्ट बनाउन एउटा सेल थप्नुहोस्:
+
+ ```python
+ new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
+ plt.ylabel("Pumpkin Price")
+ ```
+
+ 
+
+ यो अधिक उपयोगी डेटा दृश्यात्मकता हो! यसले देखाउँछ कि कद्दूको उच्चतम मूल्य सेप्टेम्बर र अक्टोबरमा हुन्छ। के यो तपाईंको अपेक्षासँग मेल खान्छ? किन?
+
+---
+
+## 🚀 चुनौती
+
+Matplotlib ले प्रदान गर्ने विभिन्न प्रकारका दृश्यात्मकताहरू अन्वेषण गर्नुहोस्। Regression समस्याहरूका लागि कुन प्रकारका दृश्यात्मकता सबैभन्दा उपयुक्त छन्?
+
+## [पाठपछि क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/)
+
+## समीक्षा र आत्म अध्ययन
+
+डेटा दृश्यात्मकताका विभिन्न तरिकाहरूको अध्ययन गर्नुहोस्। उपलब्ध विभिन्न पुस्तकालयहरूको सूची बनाउनुहोस् र कुन पुस्तकालय कुन प्रकारका कार्यहरूको लागि उपयुक्त छ भनेर नोट गर्नुहोस्, जस्तै 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/ne/2-Regression/2-Data/assignment.md b/translations/ne/2-Regression/2-Data/assignment.md
new file mode 100644
index 000000000..547b1f2cf
--- /dev/null
+++ b/translations/ne/2-Regression/2-Data/assignment.md
@@ -0,0 +1,23 @@
+
+# दृश्यात्मकता अन्वेषण गर्दै
+
+डाटा दृश्यात्मकताका लागि विभिन्न पुस्तकालयहरू उपलब्ध छन्। यस पाठमा रहेको कद्दू डाटाको प्रयोग गरेर matplotlib र seaborn को सहायताले केही दृश्यात्मकता बनाउनुहोस्। कुन पुस्तकालयहरूसँग काम गर्न सजिलो छ?
+
+## मूल्यांकन मापदण्ड
+
+| मापदण्ड | उत्कृष्ट | पर्याप्त | सुधार आवश्यक |
+| -------- | --------- | -------- | ------------- |
+| | दुई अन्वेषण/दृश्यात्मकतासहितको नोटबुक पेश गरिएको छ | एक अन्वेषण/दृश्यात्मकतासहितको नोटबुक पेश गरिएको छ | नोटबुक पेश गरिएको छैन |
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/2-Regression/2-Data/notebook.ipynb b/translations/ne/2-Regression/2-Data/notebook.ipynb
new file mode 100644
index 000000000..7bdde25ed
--- /dev/null
+++ b/translations/ne/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-08-29T19:02:37+00:00",
+ "source_file": "2-Regression/2-Data/notebook.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/ne/2-Regression/2-Data/solution/Julia/README.md b/translations/ne/2-Regression/2-Data/solution/Julia/README.md
new file mode 100644
index 000000000..ebc2c423c
--- /dev/null
+++ b/translations/ne/2-Regression/2-Data/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/2-Regression/2-Data/solution/R/lesson_2-R.ipynb b/translations/ne/2-Regression/2-Data/solution/R/lesson_2-R.ipynb
new file mode 100644
index 000000000..ee0289095
--- /dev/null
+++ b/translations/ne/2-Regression/2-Data/solution/R/lesson_2-R.ipynb
@@ -0,0 +1,668 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "metadata": {
+ "colab": {
+ "name": "lesson_2-R.ipynb",
+ "provenance": [],
+ "collapsed_sections": [],
+ "toc_visible": true
+ },
+ "kernelspec": {
+ "name": "ir",
+ "display_name": "R"
+ },
+ "language_info": {
+ "name": "R"
+ },
+ "coopTranslator": {
+ "original_hash": "f3c335f9940cfd76528b3ef918b9b342",
+ "translation_date": "2025-08-29T19:05:52+00:00",
+ "source_file": "2-Regression/2-Data/solution/R/lesson_2-R.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# रिग्रेसन मोडेल बनाउनुहोस्: डेटा तयार पार्नुहोस् र भिजुअलाइज गर्नुहोस्\n",
+ "\n",
+ "## **कद्दूहरूको लागि रेखीय रिग्रेसन - पाठ २**\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",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "metadata": {
+ "id": "Pg5aexcOPqAZ"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## १. कद्दूको डेटा आयात गर्दै र टाइडिवर्सलाई बोलाउँदै\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": [
+ "## २. हराएको डाटाको जाँच गर्नुहोस्\n",
+ "\n",
+ "डाटा वैज्ञानिकहरूले प्रायः सामना गर्नुपर्ने समस्याहरू मध्ये एक अधुरो वा हराएको डाटा हो। R ले हराएको वा अज्ञात मानहरूलाई विशेष संकेत मान `NA` (Not Available) को रूपमा प्रतिनिधित्व गर्छ।\n",
+ "\n",
+ "त्यसो भए हामी कसरी थाहा पाउने कि डाटा फ्रेममा हराएका मानहरू छन्?\n",
+ " \n",
+ "- एउटा सोझो तरिका भनेको `anyNA` नामक base R function प्रयोग गर्नु हो, जसले `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",
+ " कलाकृति @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. मिति (हाल क्यारेक्टर प्रकारको)लाई महिना स्वरूपमा परिवर्तन गर्नुहोस् (यी अमेरिकी मितिहरू हुन्, त्यसैले स्वरूप `MM/DD/YYYY` छ)।\n",
+ "\n",
+ "2. मितिबाट महिना निकालेर नयाँ स्तम्भमा राख्नुहोस्।\n",
+ "\n",
+ "R मा, [lubridate](https://lubridate.tidyverse.org/) प्याकेजले मिति-समय डाटासँग काम गर्न सजिलो बनाउँछ। त्यसैले, `dplyr::mutate()`, `lubridate::mdy()`, `lubridate::month()` प्रयोग गरेर माथिका उद्देश्यहरू कसरी प्राप्त गर्ने देखौं। हामी `Date` स्तम्भलाई हटाउन सक्छौं किनभने यसलाई आगामी कार्यहरूमा फेरि आवश्यक पर्दैन।\n"
+ ],
+ "metadata": {
+ "id": "2KKo0Ed9Z1VB"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Load lubridate\n",
+ "library(lubridate)\n",
+ "\n",
+ "pumpkins <- pumpkins %>% \n",
+ " # Convert the Date column to a date object\n",
+ " mutate(Date = mdy(Date)) %>% \n",
+ " # Extract month from Date\n",
+ " mutate(Month = month(Date)) %>% \n",
+ " # Drop Date column\n",
+ " select(-Date)\n",
+ "\n",
+ "# View the first few rows\n",
+ "pumpkins %>% \n",
+ " slice_head(n = 7)"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "5joszIVSZ6xe"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "वाह! 🤩\n",
+ "\n",
+ "अब, नयाँ स्तम्भ `Price` बनाउँ, जसले कद्दूको औसत मूल्यलाई प्रतिनिधित्व गर्छ। अब, `Low Price` र `High Price` स्तम्भहरूको औसत लिई नयाँ Price स्तम्भमा भरौं।\n"
+ ],
+ "metadata": {
+ "id": "nIgLjNMCZ-6Y"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Create a new column Price\n",
+ "pumpkins <- pumpkins %>% \n",
+ " mutate(Price = (`Low Price` + `High Price`)/2)\n",
+ "\n",
+ "# View the first few rows of the data\n",
+ "pumpkins %>% \n",
+ " slice_head(n = 5)"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "Zo0BsqqtaJw2"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "येस्स!💪\n",
+ "\n",
+ "\"तर पर्खिनुहोस्!\", तपाईंले `View(pumpkins)` प्रयोग गरेर सम्पूर्ण डेटा सेट हेरेपछि भन्नुहुनेछ, \"यहाँ केही अजीब छ!\"🤔\n",
+ "\n",
+ "यदि तपाईं `Package` स्तम्भ हेर्नुहुन्छ भने, कद्दूहरू विभिन्न प्रकारका संरचनामा बेचिन्छन्। केही `1 1/9 bushel` मापनमा बेचिन्छन्, केही `1/2 bushel` मापनमा, केही प्रति कद्दू, केही प्रति पाउन्ड, र केही फरक चौडाइ भएका ठूला बक्सहरूमा बेचिन्छन्।\n",
+ "\n",
+ "आउनुहोस् यसलाई पुष्टि गरौं:\n"
+ ],
+ "metadata": {
+ "id": "p77WZr-9aQAR"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Verify the distinct observations in Package column\n",
+ "pumpkins %>% \n",
+ " distinct(Package)"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "XISGfh0IaUy6"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "अद्भुत!👏\n",
+ "\n",
+ "कद्दूहरूलाई स्थिर रूपमा तौल गर्न धेरै गाह्रो देखिन्छ, त्यसैले हामी तिनीहरूलाई फिल्टर गरेर `Package` स्तम्भमा *bushel* स्ट्रिङ भएका कद्दूहरू मात्र चयन गरौं र यसलाई नयाँ डेटा फ्रेम `new_pumpkins` मा राखौं।\n"
+ ],
+ "metadata": {
+ "id": "7sMjiVujaZxY"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "#### dplyr::filter() र stringr::str_detect()\n",
+ "\n",
+ "[`dplyr::filter()`](https://dplyr.tidyverse.org/reference/filter.html): यो डेटा सेटको एउटा उपसमूह बनाउँछ जसमा केवल ती **पङ्क्तिहरू** समावेश हुन्छन् जसले तपाईंको सर्तहरू पूरा गर्छन्। यस अवस्थामा, `Package` स्तम्भमा *bushel* शब्द भएको pumpkins समावेश गरिन्छ।\n",
+ "\n",
+ "[stringr::str_detect()](https://stringr.tidyverse.org/reference/str_detect.html): स्ट्रिङमा कुनै ढाँचा (pattern) को उपस्थिति वा अनुपस्थिति पत्ता लगाउँछ।\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": [
+ "तपाईं देख्न सक्नुहुन्छ कि हामीले करिब ४१५ पङ्क्तिहरूमा सीमित गरेका छौं जसमा बुसलको आधारमा कद्दूहरू छन्।🤩 \n",
+ " \n"
+ ],
+ "metadata": {
+ "id": "VrDwF031avlR"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "#### dplyr::case_when()\n",
+ "\n",
+ "**तर पर्खिनुहोस्! अझै एउटा काम गर्न बाँकी छ**\n",
+ "\n",
+ "के तपाईंले ध्यान दिनुभयो कि बुसलको मात्रा प्रत्येक पङ्क्तिमा फरक छ? तपाईंले मूल्यलाई सामान्यीकृत गर्न आवश्यक छ ताकि तपाईं प्रति 1 1/9 वा 1/2 बुसल होइन, प्रति बुसलको मूल्य देखाउनुहोस्। यसलाई मानकीकरण गर्न गणित गर्नुपर्ने समय आएको छ।\n",
+ "\n",
+ "हामी [`case_when()`](https://dplyr.tidyverse.org/reference/case_when.html) फङ्क्सन प्रयोग गर्नेछौं *म्युटेट* गर्नका लागि Price स्तम्भलाई केही सर्तहरूमा निर्भर गर्दै। `case_when` ले तपाईंलाई धेरै `if_else()` कथनहरूलाई भेक्टराइज गर्न अनुमति दिन्छ।\n"
+ ],
+ "metadata": {
+ "id": "mLpw2jH4a0tx"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Convert the price if the Package contains fractional bushel values\n",
+ "new_pumpkins <- new_pumpkins %>% \n",
+ " mutate(Price = case_when(\n",
+ " str_detect(Package, \"1 1/9\") ~ Price/(1 + 1/9),\n",
+ " str_detect(Package, \"1/2\") ~ Price/(1/2),\n",
+ " TRUE ~ Price))\n",
+ "\n",
+ "# View the first few rows of the data\n",
+ "new_pumpkins %>% \n",
+ " slice_head(n = 30)"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "P68kLVQmbM6I"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "अब, हामी बसल मापनको आधारमा प्रति इकाई मूल्यको विश्लेषण गर्न सक्छौं। तर, कद्दूको बसलको अध्ययनले देखाउँछ कि `तपाईंको डाटाको प्रकृति बुझ्नु` कति `महत्वपूर्ण` छ!\n",
+ "\n",
+ "> ✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) अनुसार, बसलको तौल उत्पादनको प्रकारमा निर्भर गर्दछ, किनभने यो एक मात्रा मापन हो। \"उदाहरणका लागि, टमाटरको बसल ५६ पाउन्ड तौल हुने मानिन्छ... पात र हरियो तरकारीले कम तौलमा धेरै ठाउँ लिन्छन्, त्यसैले पालुङ्गोको बसल मात्र २० पाउन्ड हुन्छ।\" यो सबै निकै जटिल छ! बसललाई पाउन्डमा रूपान्तरण गर्न झन्झट नगरी बसलको आधारमा मूल्य निर्धारण गरौं। तर, कद्दूको बसलको अध्ययनले देखाउँछ कि तपाईंको डाटाको प्रकृति बुझ्नु कति महत्वपूर्ण छ!\n",
+ "\n",
+ "> ✅ के तपाईंले ध्यान दिनुभयो कि आधा बसलमा बेचिएका कद्दूहरू धेरै महंगा छन्? तपाईं यसको कारण पत्ता लगाउन सक्नुहुन्छ? संकेत: साना कद्दूहरू ठूला कद्दूहरूभन्दा धेरै महंगा हुन्छन्, सम्भवतः किनभने बसलमा धेरै साना कद्दूहरू हुन्छन्, जबकि ठूला खोक्रा पाई कद्दूले धेरै ठाउँ लिन्छ।\n"
+ ],
+ "metadata": {
+ "id": "pS2GNPagbSdb"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "महिनाको स्तम्भलाई पहिलो स्थानमा सार्नको लागि, अर्थात् `Package` स्तम्भभन्दा अगाडि, `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"
+ ],
+ "metadata": {
+ "id": "y8TJ0Za_bn5Y"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## ४. ggplot2 को साथमा डाटा भिजुअलाइजेसन\n",
+ "\n",
+ "
\n",
+ " \n",
+ " डासानी मडिपल्लीद्वारा इन्फोग्राफिक\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "यहाँ एउटा *बुद्धिमानीपूर्ण* भनाइ छ, जसले यसो भन्छ:\n",
+ "\n",
+ "> \"साधारण ग्राफले डाटा विश्लेषकको दिमागमा अरू कुनै उपकरणभन्दा बढी जानकारी पुर्याएको छ।\" --- जोन टुकी\n",
+ "\n",
+ "डाटा वैज्ञानिकको भूमिकाको एउटा हिस्सा भनेको उनीहरूले काम गरिरहेको डाटाको गुणस्तर र प्रकृति प्रदर्शन गर्नु हो। यो गर्नका लागि, उनीहरूले प्रायः रोचक भिजुअलाइजेसनहरू, वा प्लटहरू, ग्राफहरू, र चार्टहरू बनाउँछन्, जसले डाटाका विभिन्न पक्षहरू देखाउँछन्। यसरी, उनीहरूले अन्यथा पत्ता लगाउन गाह्रो हुने सम्बन्धहरू र खाडलहरू दृश्यात्मक रूपमा देखाउन सक्छन्।\n",
+ "\n",
+ "भिजुअलाइजेसनहरूले डाटाका लागि सबैभन्दा उपयुक्त मेसिन लर्निङ प्रविधि निर्धारण गर्न पनि मद्दत गर्न सक्छ। उदाहरणका लागि, यदि स्क्याटरप्लटले रेखालाई पछ्याएजस्तो देखिन्छ भने, यो डाटा रेखीय रिग्रेसन अभ्यासको लागि राम्रो उम्मेदवार हो भन्ने संकेत दिन्छ।\n",
+ "\n",
+ "R ले ग्राफ बनाउनका लागि धेरै प्रणालीहरू प्रदान गर्दछ, तर [`ggplot2`](https://ggplot2.tidyverse.org/index.html) सबैभन्दा आकर्षक र बहुमुखीमध्ये एक हो। `ggplot2` ले तपाईंलाई **स्वतन्त्र कम्पोनेन्टहरू संयोजन गरेर** ग्राफहरू तयार गर्न अनुमति दिन्छ।\n",
+ "\n",
+ "हामी Price र Month स्तम्भहरूको लागि एउटा साधारण स्क्याटर प्लटबाट सुरु गरौं।\n",
+ "\n",
+ "यस अवस्थामा, हामी [`ggplot()`](https://ggplot2.tidyverse.org/reference/ggplot.html) बाट सुरु गर्नेछौं, डाटासेट र एस्थेटिक म्यापिङ (साथमा [`aes()`](https://ggplot2.tidyverse.org/reference/aes.html)) प्रदान गर्नेछौं, त्यसपछि स्क्याटर प्लटहरूको लागि लेयरहरू (जस्तै [`geom_point()`](https://ggplot2.tidyverse.org/reference/geom_point.html)) थप्नेछौं।\n"
+ ],
+ "metadata": {
+ "id": "mYSH6-EtbvNa"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Set a theme for the plots\n",
+ "theme_set(theme_light())\n",
+ "\n",
+ "# Create a scatter plot\n",
+ "p <- ggplot(data = new_pumpkins, aes(x = Price, y = Month))\n",
+ "p + geom_point()"
+ ],
+ "outputs": [],
+ "metadata": {
+ "id": "g2YjnGeOcLo4"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "यो उपयोगी प्लट हो 🤷? के यसमा केही चकित पार्ने कुरा छ?\n",
+ "\n",
+ "यो विशेष रूपमा उपयोगी छैन किनभने यसले केवल तपाईंको डाटालाई एक महिनामा बिन्दुहरूको फैलावटको रूपमा देखाउँछ।\n"
+ ],
+ "metadata": {
+ "id": "Ml7SDCLQcPvE"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### **यसलाई उपयोगी कसरी बनाउने?**\n",
+ "\n",
+ "चार्टहरूमा उपयोगी डाटा देखाउनको लागि, प्रायः तपाईंले डाटालाई कुनै तरिकाले समूहबद्ध गर्न आवश्यक पर्छ। उदाहरणका लागि, हाम्रो केसमा, प्रत्येक महिनाको लागि कद्दूहरूको औसत मूल्य पत्ता लगाउँदा हाम्रो डाटामा रहेको आधारभूत ढाँचाहरूको बारेमा थप जानकारी प्राप्त गर्न सकिन्छ। यसले हामीलाई अर्को **dplyr** को झलकतर्फ लैजान्छ:\n",
+ "\n",
+ "#### `dplyr::group_by() %>% summarize()`\n",
+ "\n",
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/ne/2-Regression/2-Data/solution/notebook.ipynb b/translations/ne/2-Regression/2-Data/solution/notebook.ipynb
new file mode 100644
index 000000000..eb60740c4
--- /dev/null
+++ b/translations/ne/2-Regression/2-Data/solution/notebook.ipynb
@@ -0,0 +1,437 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
City Name
\n",
+ "
Type
\n",
+ "
Package
\n",
+ "
Variety
\n",
+ "
Sub Variety
\n",
+ "
Grade
\n",
+ "
Date
\n",
+ "
Low Price
\n",
+ "
High Price
\n",
+ "
Mostly Low
\n",
+ "
...
\n",
+ "
Unit of Sale
\n",
+ "
Quality
\n",
+ "
Condition
\n",
+ "
Appearance
\n",
+ "
Storage
\n",
+ "
Crop
\n",
+ "
Repack
\n",
+ "
Trans Mode
\n",
+ "
Unnamed: 24
\n",
+ "
Unnamed: 25
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
70
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
1 1/9 bushel cartons
\n",
+ "
PIE TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
15.0
\n",
+ "
15.0
\n",
+ "
15.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
71
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
1 1/9 bushel cartons
\n",
+ "
PIE TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
18.0
\n",
+ "
18.0
\n",
+ "
18.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
72
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
1 1/9 bushel cartons
\n",
+ "
PIE TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
10/1/16
\n",
+ "
18.0
\n",
+ "
18.0
\n",
+ "
18.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
73
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
1 1/9 bushel cartons
\n",
+ "
PIE TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
10/1/16
\n",
+ "
17.0
\n",
+ "
17.0
\n",
+ "
17.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
74
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
1 1/9 bushel cartons
\n",
+ "
PIE TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
10/8/16
\n",
+ "
15.0
\n",
+ "
15.0
\n",
+ "
15.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ " \n",
+ "
\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",
+ "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"
+ ]
+ }
+ ],
+ "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-08-29T19:02:50+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/ne/2-Regression/3-Linear/README.md b/translations/ne/2-Regression/3-Linear/README.md
new file mode 100644
index 000000000..cf11330d7
--- /dev/null
+++ b/translations/ne/2-Regression/3-Linear/README.md
@@ -0,0 +1,380 @@
+
+# Scikit-learn प्रयोग गरेर रिग्रेसन मोडेल बनाउने: चार तरिकामा रिग्रेसन
+
+
+> इन्फोग्राफिक: [Dasani Madipalli](https://twitter.com/dasani_decoded)
+## [पाठ अघि क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13/)
+
+> ### [यो पाठ R मा उपलब्ध छ!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
+### परिचय
+
+अहिलेसम्म तपाईंले रिग्रेसन के हो भनेर बुझ्नुभएको छ, जसमा हामीले कद्दूको मूल्य निर्धारण डेटासेटबाट नमूना डेटा संकलन गरेका छौं, जुन हामीले यो पाठभर प्रयोग गर्नेछौं। तपाईंले यसलाई Matplotlib प्रयोग गरेर दृश्यात्मक रूपमा पनि हेर्नुभएको छ।
+
+अब तपाईं मेशिन लर्निङका लागि रिग्रेसनमा गहिरो रूपमा जान तयार हुनुहुन्छ। दृश्यात्मकता डेटा बुझ्न मद्दत गर्दछ, तर मेशिन लर्निङको वास्तविक शक्ति _मोडेल प्रशिक्षण_ बाट आउँछ। मोडेलहरू ऐतिहासिक डेटा मा आधारित भएर प्रशिक्षित गरिन्छन् ताकि डेटा निर्भरता स्वचालित रूपमा समात्न सकियोस्, र तिनीहरूले नयाँ डेटा (जसलाई मोडेलले पहिले देखेको छैन) को लागि परिणामहरू भविष्यवाणी गर्न अनुमति दिन्छन्।
+
+यस पाठमा, तपाईं दुई प्रकारका रिग्रेसनबारे थप जान्नुहुनेछ: _सामान्य रेखीय रिग्रेसन_ र _बहुपद रिग्रेसन_, साथै यी प्रविधिहरूको आधारभूत गणित। यी मोडेलहरूले हामीलाई विभिन्न इनपुट डेटाको आधारमा कद्दूको मूल्य भविष्यवाणी गर्न अनुमति दिनेछन्।
+
+[](https://youtu.be/CRxFT8oTDMg "मेशिन लर्निङका लागि शुरुआती - रेखीय रिग्रेसन बुझ्ने")
+
+> 🎥 माथिको छवि क्लिक गरेर रेखीय रिग्रेसनको छोटो भिडियो अवलोकन हेर्नुहोस्।
+
+> यस पाठ्यक्रमभर, हामी न्यूनतम गणितीय ज्ञानलाई मान्यता दिन्छौं, र अन्य क्षेत्रबाट आएका विद्यार्थीहरूको लागि यसलाई पहुँचयोग्य बनाउन प्रयास गर्छौं। नोटहरू, 🧮 गणितीय संकेतहरू, रेखाचित्रहरू, र अन्य शिक्षण उपकरणहरूमा ध्यान दिनुहोस्।
+
+### पूर्वआवश्यकता
+
+तपाईंले अहिले सम्म कद्दूको डेटा संरचनासँग परिचित हुनुहुन्छ, जुन हामी अध्ययन गर्दैछौं। यो पाठको _notebook.ipynb_ फाइलमा यो डेटा पहिले नै लोड गरिएको र सफा गरिएको छ। फाइलमा, कद्दूको मूल्य प्रति बुसल नयाँ डेटा फ्रेममा देखाइएको छ। सुनिश्चित गर्नुहोस् कि तपाईं यी नोटबुकहरू Visual Studio Code मा चलाउन सक्नुहुन्छ।
+
+### तयारी
+
+याद दिलाउनका लागि, तपाईं यो डेटा लोड गर्दै हुनुहुन्छ ताकि यसबाट प्रश्न सोध्न सकियोस्।
+
+- कद्दू किन्ने उत्तम समय कहिले हो?
+- मिनिएचर कद्दूको केसको मूल्य कति अपेक्षा गर्न सकिन्छ?
+- म तिनीहरूलाई आधा-बुसल टोकरीमा किन्ने कि 1 1/9 बुसल बक्समा किन्ने?
+आउनुहोस्, यस डेटामा अझै गहिरो अध्ययन गरौं।
+
+पछिल्लो पाठमा, तपाईंले Pandas डेटा फ्रेम सिर्जना गर्नुभयो र मूल डेटासेटको भागसँग यसलाई भर्नुभयो, मूल्यलाई बुसलद्वारा मानकीकरण गर्दै। तर, यसो गर्दा, तपाईंले केवल लगभग 400 डेटा पोइन्टहरू संकलन गर्न सक्नुभयो, र केवल शरद ऋतु महिनाहरूको लागि।
+
+यस पाठको साथमा रहेको नोटबुकमा लोड गरिएको डेटा हेर्नुहोस्। डेटा लोड गरिएको छ र प्रारम्भिक स्क्याटरप्लट चार्ट गरिएको छ ताकि महिनाको डेटा देखाउन सकियोस्। सायद हामी डेटा सफा गरेर यसको प्रकृतिबारे थप विवरण प्राप्त गर्न सक्छौं।
+
+## रेखीय रिग्रेसन रेखा
+
+पाठ 1 मा तपाईंले सिक्नुभएको अनुसार, रेखीय रिग्रेसन अभ्यासको लक्ष्य एउटा रेखा प्लट गर्न सक्षम हुनु हो:
+
+- **चरहरूको सम्बन्ध देखाउनुहोस्**। चरहरू बीचको सम्बन्ध देखाउनुहोस्।
+- **भविष्यवाणी गर्नुहोस्**। नयाँ डेटा पोइन्ट उक्त रेखासँगको सम्बन्धमा कहाँ पर्नेछ भन्ने सटीक भविष्यवाणी गर्नुहोस्।
+
+यो प्रकारको रेखा कोर्नको लागि **Least-Squares Regression** सामान्य हो। 'least-squares' शब्दको अर्थ हो कि रिग्रेसन रेखाको वरिपरिका सबै डेटा पोइन्टहरू वर्गाकार गरिन्छ र त्यसपछि जोडिन्छ। आदर्श रूपमा, अन्तिम योग यथासम्भव सानो हुनुपर्छ, किनकि हामी कम त्रुटिहरू चाहन्छौं, वा `least-squares`।
+
+हामी यसो गर्छौं किनकि हामी एउटा रेखा मोडेल गर्न चाहन्छौं जसको सबै डेटा पोइन्टहरूको कुल दूरी कम होस्। हामीले तिनीहरूलाई वर्गाकार गरेर जोड्छौं किनकि हामी यसको दिशा भन्दा यसको परिमाणमा चासो राख्छौं।
+
+> **🧮 गणित देखाउनुहोस्**
+>
+> यो रेखा, जसलाई _सबैभन्दा राम्रो फिटको रेखा_ भनिन्छ, [एक समीकरण](https://en.wikipedia.org/wiki/Simple_linear_regression) द्वारा व्यक्त गर्न सकिन्छ:
+>
+> ```
+> Y = a + bX
+> ```
+>
+> `X` 'व्याख्यात्मक चर' हो। `Y` 'निर्भर चर' हो। रेखाको ढलान `b` हो र `a` y-अवरोध हो, जसले `X = 0` हुँदा `Y` को मानलाई जनाउँछ।
+>
+>
+>
+> पहिले, ढलान `b` गणना गर्नुहोस्। इन्फोग्राफिक: [Jen Looper](https://twitter.com/jenlooper)
+>
+> अर्को शब्दमा, र हाम्रो कद्दू डेटाको मूल प्रश्नलाई सन्दर्भ गर्दै: "महिनाद्वारा प्रति बुसल कद्दूको मूल्य भविष्यवाणी गर्नुहोस्", `X` मूल्यलाई जनाउँछ र `Y` बिक्रीको महिनालाई जनाउँछ।
+>
+>
+>
+> `Y` को मान गणना गर्नुहोस्। यदि तपाईं लगभग $4 तिर्दै हुनुहुन्छ भने, यो अप्रिल हुनुपर्छ! इन्फोग्राफिक: [Jen Looper](https://twitter.com/jenlooper)
+>
+> रेखाको ढलान गणना गर्ने गणित, जुन y-अवरोधमा पनि निर्भर छ, `X = 0` हुँदा `Y` कहाँ स्थित छ भनेर देखाउनुपर्छ।
+>
+> तपाईंले [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) वेबसाइटमा यी मानहरूको गणना विधि अवलोकन गर्न सक्नुहुन्छ। [यो Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) पनि भ्रमण गर्नुहोस् ताकि संख्याहरूको मानहरूले रेखामा कस्तो प्रभाव पार्छ हेर्न सकियोस्।
+
+## सम्बन्ध
+
+अर्को शब्द बुझ्नुपर्ने भनेको **Correlation Coefficient** हो, जुन दिइएको X र Y चरहरू बीचको सम्बन्ध हो। स्क्याटरप्लट प्रयोग गरेर, तपाईंले यो गुणांक छिटो देख्न सक्नुहुन्छ। यदि प्लटमा डेटा पोइन्टहरू एक सुन्दर रेखामा छरिएका छन् भने उच्च सम्बन्ध हुन्छ, तर यदि प्लटमा डेटा पोइन्टहरू X र Y बीचमा जताततै छरिएका छन् भने कम सम्बन्ध हुन्छ।
+
+एक राम्रो रेखीय रिग्रेसन मोडेल भनेको उच्च (1 नजिक, 0 भन्दा टाढा) Correlation Coefficient भएको मोडेल हो, Least-Squares Regression विधि प्रयोग गरेर रिग्रेसन रेखासँग।
+
+✅ यस पाठसँगको नोटबुक चलाउनुहोस् र महिना र मूल्यको स्क्याटरप्लट हेर्नुहोस्। कद्दू बिक्रीको लागि महिना र मूल्यको सम्बन्ध स्क्याटरप्लटको दृश्य व्याख्याको आधारमा उच्च वा कम सम्बन्ध भएको देखिन्छ? यदि तपाईं `महिना` को सट्टा *वर्षको दिन* (जस्तै, वर्षको सुरुबाट दिनहरूको संख्या) जस्ता अधिक सूक्ष्म उपाय प्रयोग गर्नुहुन्छ भने के यो परिवर्तन हुन्छ?
+
+कोडमा, हामीले डेटा सफा गरेको छौं र `new_pumpkins` नामक डेटा फ्रेम प्राप्त गरेका छौं, जुन निम्नानुसार देखिन्छ:
+
+ID | महिना | वर्षको दिन | प्रकार | सहर | प्याकेज | न्यूनतम मूल्य | उच्चतम मूल्य | मूल्य
+---|-------|-----------|---------|------|---------|-----------|------------|-------
+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)
+```
+
+अब तपाईंले रेखीय रिग्रेसनको गणितको समझ पाउनुभएको छ, आउनुहोस् रिग्रेसन मोडेल बनाउँ। हामी हेर्नेछौं कि कद्दूको प्याकेजहरू मध्ये कुनले उत्तम मूल्य प्रदान गर्दछ। छुट्टीको लागि कद्दूको बगैचा किन्ने कोहीले कद्दू प्याकेजहरूको खरीदलाई अनुकूलित गर्न यो जानकारी चाहन सक्छ।
+
+## सम्बन्ध खोज्दै
+
+[](https://youtu.be/uoRq-lW2eQo "मेशिन लर्निङका लागि शुरुआती - सम्बन्ध खोज्दै: रेखीय रिग्रेसनको कुञ्जी")
+
+> 🎥 माथिको छवि क्लिक गरेर सम्बन्धको छोटो भिडियो अवलोकन हेर्नुहोस्।
+
+पछिल्लो पाठबाट तपाईंले सम्भवतः विभिन्न महिनाहरूको औसत मूल्य यसरी देख्नुभएको छ:
+
+
+
+यसले सुझाव दिन्छ कि केही सम्बन्ध हुनुपर्छ, र हामी `महिना` र `मूल्य` बीचको सम्बन्ध, वा `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')
+```
+
+
+
+आउनुहोस् अहिले 'pie type' कद्दूको प्रकारमा मात्र ध्यान केन्द्रित गरौं, र हेर्नुहोस् कि मितिले मूल्यमा कस्तो प्रभाव पार्छ:
+
+```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()
+```
+
+अर्को दृष्टिकोण भनेको ती खाली मानहरूलाई सम्बन्धित स्तम्भको औसत मानले भरिदिनु हो।
+
+## साधारण रेखीय रिग्रेसन
+
+[](https://youtu.be/e4c_UP2fSjg "मेशिन लर्निङका लागि शुरुआती - 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
+```
+
+हामी इनपुट मानहरू (features) र अपेक्षित आउटपुट (label) लाई अलग numpy arrays मा विभाजन गरेर सुरु गर्छौं:
+
+```python
+X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
+y = pie_pumpkins['Price']
+```
+
+> ध्यान दिनुहोस् कि हामीले इनपुट डेटामा `reshape` प्रदर्शन गर्नुपर्यो ताकि रेखीय रिग्रेसन प्याकेजले यसलाई सही रूपमा बुझ्न सकियोस्। रेखीय रिग्रेसनले इनपुटको रूपमा 2D-array अपेक्षा गर्दछ, जहाँ array को प्रत्येक पङ्क्ति इनपुट features को भेक्टरसँग मेल खान्छ। हाम्रो केसमा, किनकि हामीसँग केवल एक इनपुट छ - हामीलाई आकार N×1 भएको array चाहिन्छ, जहाँ 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)
+```
+
+`LinearRegression` वस्तु `fit` गरेपछि रिग्रेसनका सबै गुणांकहरू समावेश गर्दछ, जसलाई `.coef_` प्रोपर्टी प्रयोग गरेर पहुँच गर्न सकिन्छ। हाम्रो केसमा, केवल एक गुणांक छ, जुन `-0.017` को वरिपरि हुनुपर्छ। यसको अर्थ मूल्य समयसँगै थोरै घट्छ, तर धेरै होइन, लगभग प्रति दिन 2 सेन्ट। हामी रिग्रेसनको Y-अक्षसँगको intersection बिन्दु `lin_reg.intercept_` प्रयोग गरेर पनि पहुँच गर्न सक्छौं - यो हाम्रो केसमा लगभग `21` हुनेछ, जसले वर्षको सुरुमा मूल्य संकेत गर्दछ।
+
+हाम्रो मोडेल कति सटीक छ हेर्नको लागि, हामी परीक्षण डेटासेटमा मूल्यहरू भविष्यवाणी गर्न सक्छौं, र त्यसपछि अपेक्षित मानहरूसँग हाम्रो भविष्यवाणीहरू कति नजिक छन् मापन गर्न सक्छौं। यो mean square error (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}%)')
+```
+हाम्रो त्रुटि लगभग २ बुँदामा देखिन्छ, जुन ~१७% हो। यो धेरै राम्रो छैन। मोडेलको गुणस्तरको अर्को सूचक **निर्धारण गुणांक** हो, जुन यसरी प्राप्त गर्न सकिन्छ:
+
+```python
+score = lin_reg.score(X_train,y_train)
+print('Model determination: ', score)
+```
+यदि मान ० छ भने, यसको अर्थ मोडेलले इनपुट डाटालाई ध्यानमा राख्दैन र *सबैभन्दा खराब रेखीय भविष्यवक्ता* को रूपमा कार्य गर्दछ, जुन परिणामको औसत मान मात्र हो। मान १ भएमा, हामीले सबै अपेक्षित परिणामहरू पूर्ण रूपमा भविष्यवाणी गर्न सक्छौं। हाम्रो अवस्थामा, निर्धारण गुणांक लगभग ०.०६ छ, जुन धेरै कम हो।
+
+हामी परीक्षण डाटालाई रिग्रेसन रेखासँगै प्लट गर्न सक्छौं, जसले हाम्रो अवस्थामा रिग्रेसन कसरी काम गर्छ भन्ने राम्रोसँग देखाउँछ:
+
+```python
+plt.scatter(X_test,y_test)
+plt.plot(X_test,pred)
+```
+
+
+
+## बहुपद रिग्रेसन
+
+रेखीय रिग्रेसनको अर्को प्रकार बहुपद रिग्रेसन हो। कहिलेकाहीँ चरहरू बीच रेखीय सम्बन्ध हुन्छ - जस्तै, कद्दूको आयतन ठूलो भएमा मूल्य उच्च हुन्छ - तर कहिलेकाहीँ यी सम्बन्धहरू समतल वा सिधा रेखाको रूपमा प्लट गर्न सकिँदैन।
+
+✅ यहाँ [केही थप उदाहरणहरू](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) प्रदान गर्छ, जसले डाटा प्रशोधनका विभिन्न चरणहरूलाई संयोजन गर्न मद्दत गर्छ। **पाइपलाइन** भनेको **अनुमानकर्ताहरू** को श्रृंखला हो। हाम्रो अवस्थामा, हामी एउटा पाइपलाइन बनाउनेछौं, जसले पहिले हाम्रो मोडेलमा बहुपद विशेषताहरू थप्छ, र त्यसपछि रिग्रेसनलाई प्रशिक्षण दिन्छ:
+
+```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` प्रयोग गरेर भविष्यवाणी परिणामहरू प्राप्त गर्न सक्छौं। यहाँ परीक्षण डाटा र अनुमान वक्र देखाउने ग्राफ छ:
+
+
+
+बहुपद रिग्रेसन प्रयोग गर्दा, हामी थोरै कम MSE र उच्च निर्धारण प्राप्त गर्न सक्छौं, तर धेरै महत्त्वपूर्ण रूपमा होइन। हामीले अन्य विशेषताहरूलाई पनि ध्यानमा राख्नुपर्छ!
+
+> तपाईंले देख्न सक्नुहुन्छ कि कद्दूको न्यूनतम मूल्यहरू प्रायः हेलोविनको आसपास देखिन्छ। तपाईं यसलाई कसरी व्याख्या गर्नुहुन्छ?
+
+🎃 बधाई छ, तपाईंले एउटा मोडेल सिर्जना गर्नुभयो, जसले पाई कद्दूको मूल्य भविष्यवाणी गर्न मद्दत गर्न सक्छ। तपाईंले सम्भवतः सबै कद्दू प्रकारहरूको लागि यो प्रक्रिया दोहोर्याउन सक्नुहुन्छ, तर त्यो धेरै समय लाग्ने काम हुनेछ। अब हामी मोडेलमा कद्दूको विविधतालाई कसरी ध्यानमा राख्ने भन्ने कुरा सिक्नेछौं!
+
+## श्रेणीगत विशेषताहरू
+
+आदर्श संसारमा, हामी एउटै मोडेल प्रयोग गरेर विभिन्न कद्दू प्रकारहरूको मूल्य भविष्यवाणी गर्न सक्षम हुन चाहन्छौं। तर, `Variety` स्तम्भ `Month` जस्ता स्तम्भहरू भन्दा केही फरक छ, किनभने यसमा गैर-संख्यात्मक मानहरू छन्। यस्ता स्तम्भहरूलाई **श्रेणीगत** भनिन्छ।
+
+[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
+
+> 🎥 माथिको छविमा क्लिक गरेर श्रेणीगत विशेषताहरू प्रयोग गर्ने छोटो भिडियो हेर्नुहोस्।
+
+यहाँ तपाईंले देख्न सक्नुहुन्छ कि औसत मूल्य विविधतामा कसरी निर्भर गर्दछ:
+
+
+
+विविधतालाई ध्यानमा राख्न, हामीले पहिले यसलाई संख्यात्मक रूपमा रूपान्तरण गर्नुपर्छ, वा **एन्कोड** गर्नुपर्छ। यसलाई गर्नका लागि केही तरिकाहरू छन्:
+
+* साधारण **संख्यात्मक एन्कोडिङ** ले विभिन्न विविधताहरूको तालिका बनाउनेछ, र त्यसपछि विविधताको नामलाई उक्त तालिकाको सूचकांकले प्रतिस्थापन गर्नेछ। यो रेखीय रिग्रेसनको लागि उत्तम विचार होइन, किनभने रेखीय रिग्रेसनले सूचकांकको वास्तविक संख्यात्मक मानलाई ध्यानमा राख्छ, र यसलाई केही गुणांकले गुणा गरेर परिणाममा थप्छ। हाम्रो अवस्थामा, सूचकांक संख्या र मूल्य बीचको सम्बन्ध स्पष्ट रूपमा रेखीय छैन, चाहे हामीले सूचकांकहरूलाई कुनै विशिष्ट तरिकामा क्रमबद्ध गरे पनि।
+* **वन-हट एन्कोडिङ** ले `Variety` स्तम्भलाई ४ फरक स्तम्भहरूले प्रतिस्थापन गर्नेछ, प्रत्येक विविधताका लागि एउटा। प्रत्येक स्तम्भले `१` समावेश गर्नेछ, यदि सम्बन्धित पङ्क्ति दिइएको विविधताको हो भने, र `०` अन्यथा। यसको अर्थ, रेखीय रिग्रेसनमा चारवटा गुणांक हुनेछन्, प्रत्येक कद्दू प्रकारको लागि, जसले "सुरुवाती मूल्य" (वा "थप मूल्य") को जिम्मेवारी लिनेछ।
+
+तलको कोडले विविधतालाई वन-हट एन्कोड कसरी गर्न सकिन्छ भन्ने देखाउँछ:
+
+```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']
+```
+
+बाकी कोड माथि प्रयोग गरिएको रेखीय रिग्रेसन प्रशिक्षण दिन प्रयोग गरिएको जस्तै हो। यदि तपाईंले यसलाई प्रयास गर्नुभयो भने, तपाईंले देख्नुहुनेछ कि औसत वर्ग त्रुटि लगभग उस्तै छ, तर निर्धारण गुणांक धेरै उच्च (~७७%) छ। अझ बढी सटीक भविष्यवाणीहरू प्राप्त गर्न, हामीले थप श्रेणीगत विशेषताहरू, साथै संख्यात्मक विशेषताहरू, जस्तै `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 २.८४ (१०%) र निर्धारण ०.९४ दिन्छ!
+
+## सबै कुरा एकसाथ राख्दै
+
+सर्वश्रेष्ठ मोडेल बनाउन, हामी माथिको उदाहरणबाट संयुक्त (वन-हट एन्कोड गरिएको श्रेणीगत + संख्यात्मक) डाटा बहुपद रिग्रेसनसँग प्रयोग गर्न सक्छौं। यहाँ तपाईंको सुविधाको लागि पूर्ण कोड छ:
+
+```python
+# set up training data
+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']
+
+# make train-test split
+X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
+
+# setup and train the pipeline
+pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
+pipeline.fit(X_train,y_train)
+
+# predict results for test data
+pred = pipeline.predict(X_test)
+
+# calculate MSE and determination
+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)
+```
+
+यसले हामीलाई लगभग ९७% को निर्धारण गुणांक र MSE=२.२३ (~८% भविष्यवाणी त्रुटि) दिन्छ।
+
+| मोडेल | MSE | निर्धारण |
+|-------|-----|-----------|
+| `DayOfYear` Linear | २.७७ (१७.२%) | ०.०७ |
+| `DayOfYear` Polynomial | २.७३ (१७.०%) | ०.०८ |
+| `Variety` Linear | ५.२४ (१९.७%) | ०.७७ |
+| All features Linear | २.८४ (१०.५%) | ०.९४ |
+| All features Polynomial | २.२३ (८.२५%) | ०.९७ |
+
+🏆 राम्रो काम! तपाईंले एक पाठमा चारवटा रिग्रेसन मोडेलहरू सिर्जना गर्नुभयो, र मोडेलको गुणस्तरलाई ९७% सम्म सुधार गर्नुभयो। रिग्रेसनको अन्तिम खण्डमा, तपाईंले श्रेणी निर्धारण गर्नका लागि Logistic Regression को बारेमा सिक्नुहुनेछ।
+
+---
+## 🚀 चुनौती
+
+यस नोटबुकमा विभिन्न चरहरू परीक्षण गर्नुहोस् र हेर्नुहोस् कि सम्बन्ध मोडेलको सटीकतासँग कसरी मेल खान्छ।
+
+## [पाठपछिको प्रश्नोत्तरी](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/)
+
+## समीक्षा र आत्म-अध्ययन
+
+यस पाठमा हामीले रेखीय रिग्रेसनको बारेमा सिक्यौं। रिग्रेसनका अन्य महत्त्वपूर्ण प्रकारहरू पनि छन्। 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/ne/2-Regression/3-Linear/assignment.md b/translations/ne/2-Regression/3-Linear/assignment.md
new file mode 100644
index 000000000..1d5691222
--- /dev/null
+++ b/translations/ne/2-Regression/3-Linear/assignment.md
@@ -0,0 +1,25 @@
+
+# रिग्रेशन मोडेल बनाउनुहोस्
+
+## निर्देशनहरू
+
+यस पाठमा तपाईंलाई लीनियर र पोलिनोमियल रिग्रेशन प्रयोग गरेर मोडेल बनाउने तरिका देखाइएको थियो। यस ज्ञानको प्रयोग गर्दै, कुनै डेटासेट खोज्नुहोस् वा Scikit-learn का बिल्ट-इन सेटहरू मध्ये एक प्रयोग गरेर नयाँ मोडेल बनाउनुहोस्। आफ्नो नोटबुकमा किन तपाईंले उक्त प्रविधि चयन गर्नुभयो भनेर व्याख्या गर्नुहोस्, र आफ्नो मोडेलको सटीकता प्रदर्शन गर्नुहोस्। यदि यो सटीक छैन भने, किन भनेर व्याख्या गर्नुहोस्।
+
+## मूल्यांकन मापदण्ड
+
+| मापदण्ड | उत्कृष्टता | पर्याप्त | सुधार आवश्यक |
+| -------- | ------------------------------------------------------------ | -------------------------- | ------------------------------- |
+| | पूर्ण नोटबुक प्रस्तुत गर्दछ जसमा राम्रोसँग दस्तावेज गरिएको समाधान छ | समाधान अपूर्ण छ | समाधान त्रुटिपूर्ण वा बगयुक्त छ |
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/2-Regression/3-Linear/notebook.ipynb b/translations/ne/2-Regression/3-Linear/notebook.ipynb
new file mode 100644
index 000000000..c823e4a2c
--- /dev/null
+++ b/translations/ne/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यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।\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-08-29T18:44:00+00:00",
+ "source_file": "2-Regression/3-Linear/notebook.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/ne/2-Regression/3-Linear/solution/Julia/README.md b/translations/ne/2-Regression/3-Linear/solution/Julia/README.md
new file mode 100644
index 000000000..5e94a8e9d
--- /dev/null
+++ b/translations/ne/2-Regression/3-Linear/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb b/translations/ne/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb
new file mode 100644
index 000000000..1bbb762a1
--- /dev/null
+++ b/translations/ne/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-08-29T18:50:04+00:00",
+ "source_file": "2-Regression/3-Linear/solution/R/lesson_3-R.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [],
+ "metadata": {
+ "id": "EgQw8osnsUV-"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## कद्दूको मूल्य निर्धारणका लागि रेखीय र बहुपदीय प्रतिगमन - पाठ ३\n",
+ "
\n",
+ " \n",
+ " डासानी मडिपल्लीद्वारा इन्फोग्राफिक\n",
+ "\n",
+ "\n",
+ "#### परिचय\n",
+ "\n",
+ "अहिलेसम्म तपाईंले कद्दूको मूल्य निर्धारण डेटासेटबाट सङ्कलित नमूना डाटाको साथ प्रतिगमन के हो भनेर अन्वेषण गर्नुभएको छ, जुन हामीले यस पाठभरि प्रयोग गर्नेछौं। तपाईंले यसलाई `ggplot2` प्रयोग गरेर दृश्यात्मक पनि गर्नुभएको छ।💪\n",
+ "\n",
+ "अब तपाईं एमएलका लागि प्रतिगमनमा गहिरो रूपमा जान तयार हुनुहुन्छ। यस पाठमा, तपाईं दुई प्रकारका प्रतिगमनबारे थप जान्नुहुनेछ: *आधारभूत रेखीय प्रतिगमन* र *बहुपदीय प्रतिगमन*, साथै यी प्रविधिहरूको आधारभूत गणितबारे पनि।\n",
+ "\n",
+ "> यस पाठ्यक्रमभरि, हामी न्यूनतम गणितीय ज्ञानलाई मान्यता दिन्छौं, र अन्य क्षेत्रबाट आएका विद्यार्थीहरूका लागि यसलाई पहुँचयोग्य बनाउन खोज्छौं। त्यसैले नोटहरू, 🧮 गणितीय संकेतहरू, रेखाचित्रहरू, र अन्य सिकाइ उपकरणहरूलाई बुझ्न मद्दतका लागि ध्यान दिनुहोस्।\n",
+ "\n",
+ "#### तयारी\n",
+ "\n",
+ "स्मरण गराउनका लागि, तपाईंले यस डाटालाई लोड गर्दै हुनुहुन्छ ताकि यसबाट प्रश्नहरू सोध्न सक्नुहोस्।\n",
+ "\n",
+ "- कद्दू किन्ने उत्तम समय कहिले हो?\n",
+ "\n",
+ "- साना कद्दूहरूको केसको मूल्य कति अपेक्षा गर्न सकिन्छ?\n",
+ "\n",
+ "- मैले तिनीहरूलाई आधा-बुशल टोकरीमा किन्ने कि १ १/९ बुशल बक्समा किन्ने? यस डाटामा अझै गहिरो रूपमा खन्ने प्रयास गरौं।\n",
+ "\n",
+ "अघिल्लो पाठमा, तपाईंले `tibble` (डाटा फ्रेमको आधुनिक पुनःकल्पना) सिर्जना गर्नुभएको थियो र मूल डेटासेटको भागसँग यसलाई भरिएको थियो, बुशलद्वारा मूल्यलाई मानकीकरण गर्दै। तर, त्यसो गर्दा, तपाईंले केवल लगभग ४०० डाटा बिन्दुहरू सङ्कलन गर्न सक्नुभयो र केवल शरद ऋतु महिनाहरूका लागि। सायद हामी डाटाको प्रकृतिबारे अझै धेरै विवरण प्राप्त गर्न यसलाई सफा गरेर गर्न सक्छौं? हेर्नेछौं... 🕵️♀️\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",
+ "## १. रेखीय प्रतिगमन रेखा\n",
+ "\n",
+ "जसरी तपाईंले पाठ १ मा सिक्नुभयो, रेखीय प्रतिगमन अभ्यासको उद्देश्य *सर्वोत्तम फिटको रेखा* को ग्राफ बनाउन सक्षम हुनु हो:\n",
+ "\n",
+ "- **चरहरूको सम्बन्ध देखाउनुहोस्**। चरहरू बीचको सम्बन्ध देखाउनुहोस्।\n",
+ "\n",
+ "- **पूर्वानुमान गर्नुहोस्**। नयाँ डेटा बिन्दु त्यो रेखासँगको सम्बन्धमा कहाँ पर्नेछ भनेर सही पूर्वानुमान गर्नुहोस्।\n",
+ "\n",
+ "यस प्रकारको रेखा कोर्नको लागि, हामी **सर्वोत्तम वर्ग प्रतिगमन** भनिने सांख्यिकीय प्रविधि प्रयोग गर्छौं। `सर्वोत्तम वर्ग` भन्ने शब्दले अर्थ दिन्छ कि प्रतिगमन रेखाको वरिपरिका सबै डेटा बिन्दुहरू वर्गाकार गरिन्छ र त्यसपछि जोडिन्छ। आदर्श रूपमा, त्यो अन्तिम योग जति सानो हुन्छ, त्यति राम्रो, किनभने हामी कम त्रुटिहरू चाहन्छौं, वा `सर्वोत्तम वर्ग`। त्यसैले, सर्वोत्तम फिटको रेखा भनेको वर्ग त्रुटिहरूको योगको सबैभन्दा कम मान दिने रेखा हो - त्यसैले यसलाई *सर्वोत्तम वर्ग प्रतिगमन* भनिन्छ।\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",
+ "> \n",
+ " इन्फोग्राफिक: जेन लूपर\n",
+ ">\n",
+ "> पहिलो, ढलान `b` गणना गर्नुहोस्।\n",
+ ">\n",
+ "> अर्को शब्दमा, र हाम्रो कद्दू डेटा सम्बन्धी मूल प्रश्नलाई सन्दर्भ गर्दै: \"महिनाको आधारमा प्रति बुशल कद्दूको मूल्यको पूर्वानुमान गर्नुहोस्\", `X` ले मूल्यलाई जनाउँछ र `Y` ले बिक्रीको महिनालाई जनाउँछ।\n",
+ ">\n",
+ "> \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",
+ "एक राम्रो रेखीय प्रतिगमन मोडेल भनेको यस्तो मोडेल हो जसले सर्वोत्तम वर्ग प्रतिगमन विधि प्रयोग गरेर रेखासँग उच्च (१ नजिक, ० भन्दा टाढा) सम्बन्ध गुणांक राख्छ।\n"
+ ],
+ "metadata": {
+ "id": "cdX5FRpvsoP5"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## **२. डाटासँगको नृत्य: मोडेलिङका लागि प्रयोग गरिने डेटा फ्रेम तयार गर्दै**\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": [
+ "🤔 हामी अझ राम्रो गर्न सक्छौं। यी स्तम्भ नामहरूलाई `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` जस्ता क्यारेक्टर प्रकारका स्तम्भहरूको आधारमा कद्दूको `price` भविष्यवाणी गर्न चाह्यौं भने के गर्ने? वा अझ सरल रूपमा, यदि हामीले `package` र `price` बीचको सम्बन्ध (जसका लागि दुवै इनपुटहरू संख्यात्मक हुन आवश्यक छ) पत्ता लगाउन चाह्यौं भने के गर्ने? 🤷🤷\n",
+ "\n",
+ "मेसिन लर्निङ मोडेलहरू पाठ मानहरूभन्दा संख्यात्मक विशेषताहरूमा राम्रोसँग काम गर्छन्, त्यसैले सामान्यतया तपाईँले श्रेणीगत विशेषताहरूलाई संख्यात्मक प्रतिनिधित्वमा रूपान्तरण गर्न आवश्यक पर्छ।\n",
+ "\n",
+ "यसको अर्थ, हामीले हाम्रो भविष्यवक्ताहरूलाई मोडेलले प्रभावकारी रूपमा प्रयोग गर्न सजिलो बनाउन पुनःस्वरूप दिनको लागि कुनै तरिका खोज्नुपर्छ, जसलाई `feature engineering` भनिन्छ।\n"
+ ],
+ "metadata": {
+ "id": "7hsHoxsStyjJ"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## ३. मोडेलिङका लागि डेटा पूर्वप्रक्रिया गर्न recipes प्रयोग गर्दै 👩🍳👨🍳\n",
+ "\n",
+ "पूर्वानुमान गर्ने मानहरूलाई पुनःस्वरूप दिनु, जसले मोडेललाई प्रभावकारी रूपमा प्रयोग गर्न सजिलो बनाउँछ, `फिचर इन्जिनियरिङ` भनिन्छ।\n",
+ "\n",
+ "विभिन्न मोडेलहरूलाई विभिन्न प्रकारका पूर्वप्रक्रियाहरू आवश्यक पर्छ। उदाहरणका लागि, least squares लाई `श्रेणीगत भेरिएबलहरूको इन्कोडिङ` जस्तै महिना, प्रकार, र city_name आवश्यक पर्छ। यसको मतलब `श्रेणीगत मानहरू` भएको स्तम्भलाई `संख्यात्मक स्तम्भहरू` मा रूपान्तरण गर्नु हो, जसले मूल स्तम्भलाई प्रतिस्थापन गर्छ।\n",
+ "\n",
+ "उदाहरणका लागि, मानौं तपाईंको डेटामा निम्न श्रेणीगत फिचर समावेश छ:\n",
+ "\n",
+ "| city |\n",
+ "|:-------:|\n",
+ "| Denver |\n",
+ "| Nairobi |\n",
+ "| Tokyo |\n",
+ "\n",
+ "तपाईं *ordinal encoding* प्रयोग गरेर प्रत्येक श्रेणीको लागि एक अद्वितीय पूर्णांक मान प्रतिस्थापन गर्न सक्नुहुन्छ, यसरी:\n",
+ "\n",
+ "| city |\n",
+ "|:----:|\n",
+ "| 0 |\n",
+ "| १ |\n",
+ "| २ |\n",
+ "\n",
+ "र, हामी हाम्रो डेटामा यही गर्नेछौं!\n",
+ "\n",
+ "यस खण्डमा, हामी अर्को अद्भुत Tidymodels प्याकेज [recipes](https://tidymodels.github.io/recipes/) को अन्वेषण गर्नेछौं - जुन तपाईंको डेटालाई मोडेल प्रशिक्षण गर्नु **अगाडि** पूर्वप्रक्रिया गर्न मद्दत गर्न डिजाइन गरिएको हो। यसको मुख्यतामा, recipe भनेको एउटा वस्तु हो जसले डेटासेटलाई मोडेलिङका लागि तयार पार्नका लागि कुन चरणहरू लागू गरिनुपर्छ भनेर परिभाषित गर्छ।\n",
+ "\n",
+ "अब, हामी एउटा recipe बनाउँछौं जसले पूर्वानुमान गर्ने स्तम्भहरूमा भएका सबै अवलोकनहरूको लागि अद्वितीय पूर्णांक प्रतिस्थापन गरेर हाम्रो डेटालाई मोडेलिङका लागि तयार पार्छ:\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): तयार गरिएको recipe लाई लिन्छ र कुनै पनि डाटा सेटमा ती कार्यहरू लागू गर्छ।\n",
+ "\n",
+ "त्यसैले, हाम्रा recipe हरू तयार (prep) र लागू (bake) गरौं ताकि यो पक्का गर्न सकियोस् कि भित्री प्रक्रियामा, भविष्यवक्ता स्तम्भहरूलाई पहिले एन्कोड गरिनेछ र त्यसपछि मोडेल फिट गरिनेछ।\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` का सबै भविष्यवक्ता (predictors) को एन्कोडिङ गरिएको छ, जसले पुष्टि गर्दछ कि हाम्रो परिभाषित preprocessing चरणहरू हाम्रो recipe अनुसार अपेक्षित रूपमा काम गर्नेछन्। यो तपाईंको लागि पढ्न अलि गाह्रो हुन सक्छ, तर Tidymodels का लागि यो धेरै बुझ्न सजिलो हुन्छ! केहि समय निकालेर पत्ता लगाउनुहोस् कि कुन observation लाई कुन integer मा म्याप गरिएको छ।\n",
+ "\n",
+ "यो पनि उल्लेखनीय छ कि `baked_pumpkins` एउटा data frame हो जसमा हामी गणना गर्न सक्छौं।\n",
+ "\n",
+ "उदाहरणका लागि, तपाईंको डेटा भित्रका दुई बिन्दुहरू बीच राम्रो सम्बन्ध (correlation) पत्ता लगाएर सम्भावित रूपमा राम्रो predictive model निर्माण गर्न प्रयास गरौं। यसका लागि हामी `cor()` function प्रयोग गर्नेछौं। यस function को बारेमा थप जान्न `?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",
+ "## ४. रेखीय प्रतिगमन मोडेल निर्माण गर्नुहोस्\n",
+ "\n",
+ "
\n",
+ " \n",
+ " डासानी मडिपल्लीद्वारा इन्फोग्राफिक\n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "metadata": {
+ "id": "YqXjLuWavNxW"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "अब हामीले एउटा रेसिपी तयार गरिसकेका छौं, र वास्तवमा पुष्टि गरिसकेका छौं कि डाटा उपयुक्त रूपमा पूर्व-प्रक्रिया गरिनेछ, अब हामी एउटा रिग्रेसन मोडेल निर्माण गर्नेछौं जसले यो प्रश्नको उत्तर दिनेछ: `दिइएको कद्दू प्याकेजको मूल्य कति अपेक्षा गर्न सकिन्छ?`\n",
+ "\n",
+ "#### प्रशिक्षण सेट प्रयोग गरेर एउटा लीनियर रिग्रेसन मोडेल प्रशिक्षण गर्नुहोस्\n",
+ "\n",
+ "जसरी तपाईंले पहिले नै अनुमान गर्नुभएको हुन सक्छ, *price* स्तम्भ `outcome` भेरिएबल हो भने *package* स्तम्भ `predictor` भेरिएबल हो।\n",
+ "\n",
+ "यसलाई गर्नका लागि, हामीले पहिलोमा डाटालाई यसरी विभाजन गर्नेछौं कि ८०% प्रशिक्षण सेटमा जानेछ र २०% परीक्षण सेटमा जानेछ, त्यसपछि एउटा रेसिपी परिभाषित गर्नेछौं जसले predictor स्तम्भलाई पूर्णांकहरूको सेटमा एन्कोड गर्नेछ, त्यसपछि मोडेल स्पेसिफिकेसन निर्माण गर्नेछौं। हामी हाम्रो रेसिपीलाई prep र bake गर्नेछैनौं किनकि हामीलाई पहिले नै थाहा छ कि यसले डाटालाई अपेक्षित रूपमा पूर्व-प्रक्रिया गर्नेछ।\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",
+ "अब हामीले मोडेललाई प्रशिक्षण गरिसकेपछि, हामी यसलाई `parsnip::predict()` प्रयोग गरेर परीक्षण सेटको लागि भविष्यवाणी गर्न प्रयोग गर्न सक्छौं। त्यसपछि हामी यी भविष्यवाणीहरूलाई वास्तविक लेबल मानहरूसँग तुलना गर्न सक्छौं ताकि मोडेल कत्तिको राम्रो (वा नराम्रो!) काम गरिरहेको छ मूल्यांकन गर्न सकियोस्।\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",
+ "## ५. बहुपद रिग्रेसन मोडेल बनाउनुहोस्\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",
+ "> ✅ बहुपद (Polynomials) गणितीय अभिव्यक्तिहरू हुन्, जसमा एक वा बढी चर र गुणांकहरू समावेश हुन सक्छन्।\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": [
+ "Woo-hoo, आउनुहोस् `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` लगभग ७ बाट घटेर लगभग ३ मा पुगेको छ, जसले वास्तविक मूल्य र अनुमानित मूल्य बीचको त्रुटि कम भएको संकेत गर्दछ। तपाईं यसलाई *ढिलो* रूपमा व्याख्या गर्न सक्नुहुन्छ कि औसतमा, गलत अनुमानहरू लगभग \\$३ ले गलत छन्। `rsq` लगभग ०.४ बाट बढेर ०.८ मा पुगेको छ।\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 हेर्दा अर्थपूर्ण देखिन्छ! र, यदि यो अघिल्लो मोडलभन्दा राम्रो छ भने, उही डेटा हेर्दा, तपाईंले यी महँगो pumpkins को लागि बजेट बनाउन आवश्यक छ!\n",
+ "\n",
+ "🏆 राम्रो काम! तपाईंले एक पाठमा दुई regression models बनाउनु भयो। Regression को अन्तिम खण्डमा, तपाईंले logistic regression सिक्नुहुनेछ जसले categories निर्धारण गर्न मद्दत गर्दछ।\n",
+ "\n",
+ "## **🚀चुनौती**\n",
+ "\n",
+ "यस notebook मा विभिन्न variables परीक्षण गर्नुहोस् र correlation कसरी model accuracy संग सम्बन्धित छ हेर्नुहोस्।\n",
+ "\n",
+ "## [**पाठपछिको क्विज**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/)\n",
+ "\n",
+ "## **पुनरावलोकन र आत्म-अध्ययन**\n",
+ "\n",
+ "यस पाठमा हामीले Linear Regression को बारेमा सिक्यौं। Regression का अन्य महत्वपूर्ण प्रकारहरू पनि छन्। Stepwise, Ridge, Lasso र Elasticnet techniques को बारेमा पढ्नुहोस्। थप जान्नको लागि राम्रो कोर्स [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) हो।\n",
+ "\n",
+ "यदि तपाईं Tidymodels framework प्रयोग गर्न थप जान्न चाहनुहुन्छ भने, निम्न स्रोतहरू जाँच गर्नुहोस्:\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 लाई अझ स्वागतयोग्य र आकर्षक बनाउने अद्भुत चित्रणहरू सिर्जना गरेकोमा। उनको [gallery](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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/ne/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ne/2-Regression/3-Linear/solution/notebook.ipynb
new file mode 100644
index 000000000..d9ffb1ea8
--- /dev/null
+++ b/translations/ne/2-Regression/3-Linear/solution/notebook.ipynb
@@ -0,0 +1,1111 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## कद्दूको मूल्य निर्धारणका लागि रेखीय र बहुपद प्रतिगमन - पाठ ३\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",
+ "
City Name
\n",
+ "
Type
\n",
+ "
Package
\n",
+ "
Variety
\n",
+ "
Sub Variety
\n",
+ "
Grade
\n",
+ "
Date
\n",
+ "
Low Price
\n",
+ "
High Price
\n",
+ "
Mostly Low
\n",
+ "
...
\n",
+ "
Unit of Sale
\n",
+ "
Quality
\n",
+ "
Condition
\n",
+ "
Appearance
\n",
+ "
Storage
\n",
+ "
Crop
\n",
+ "
Repack
\n",
+ "
Trans Mode
\n",
+ "
Unnamed: 24
\n",
+ "
Unnamed: 25
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
4/29/17
\n",
+ "
270.0
\n",
+ "
280.0
\n",
+ "
270.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
E
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
5/6/17
\n",
+ "
270.0
\n",
+ "
280.0
\n",
+ "
270.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
E
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
11/5/16
\n",
+ "
90.0
\n",
+ "
100.0
\n",
+ "
90.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ " \n",
+ "
\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": [
+ "
"
+ ]
+ },
+ "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": []
+ },
+ {
+ "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",
+ "कहिलेकाहीं विशेषताहरू र परिणामहरू बीचको सम्बन्ध स्वाभाविक रूपमा गैर-रेखीय हुन्छ। उदाहरणका लागि, फर्सीको मूल्य जाडोमा (महिना=१,२) उच्च हुन सक्छ, त्यसपछि गर्मीमा (महिना=५-७) घट्न सक्छ, र फेरि बढ्न सक्छ। रेखीय रिग्रेशनले यो सम्बन्धलाई सही रूपमा पत्ता लगाउन सक्दैन।\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",
+ "* साधारण संख्यात्मक एन्कोडिङ, जसले विभिन्न प्रकारहरूको तालिका बनाउँछ, र त्यसपछि तालिकामा रहेको सूचकांकद्वारा प्रकारको नामलाई प्रतिस्थापन गर्छ। यो रैखिक प्रतिगमन (linear regression) का लागि उत्तम विचार होइन, किनभने रैखिक प्रतिगमनले सूचकांकको संख्यात्मक मानलाई ध्यानमा राख्छ, र संख्यात्मक मान सम्भवतः मूल्यसँग संख्यात्मक रूपमा सम्बन्धित हुँदैन।\n",
+ "* वन-हट एन्कोडिङ (One-hot encoding), जसले `Variety` स्तम्भलाई ४ फरक स्तम्भहरूसँग प्रतिस्थापन गर्छ, प्रत्येक प्रकारका लागि एउटा, जसले १ समावेश गर्छ यदि सम्बन्धित पंक्ति दिइएको प्रकारको हो भने, र अन्यथा ०।\n",
+ "\n",
+ "तलको कोडले देखाउँछ कि हामीले कसरी प्रकारलाई वन-हट एन्कोड गर्न सक्छौं:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 181,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
FAIRYTALE
\n",
+ "
MINIATURE
\n",
+ "
MIXED HEIRLOOM VARIETIES
\n",
+ "
PIE TYPE
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
70
\n",
+ "
0
\n",
+ "
0
\n",
+ "
0
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
71
\n",
+ "
0
\n",
+ "
0
\n",
+ "
0
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
72
\n",
+ "
0
\n",
+ "
0
\n",
+ "
0
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
73
\n",
+ "
0
\n",
+ "
0
\n",
+ "
0
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
74
\n",
+ "
0
\n",
+ "
0
\n",
+ "
0
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
\n",
+ "
\n",
+ "
1738
\n",
+ "
0
\n",
+ "
1
\n",
+ "
0
\n",
+ "
0
\n",
+ "
\n",
+ "
\n",
+ "
1739
\n",
+ "
0
\n",
+ "
1
\n",
+ "
0
\n",
+ "
0
\n",
+ "
\n",
+ "
\n",
+ "
1740
\n",
+ "
0
\n",
+ "
1
\n",
+ "
0
\n",
+ "
0
\n",
+ "
\n",
+ "
\n",
+ "
1741
\n",
+ "
0
\n",
+ "
1
\n",
+ "
0
\n",
+ "
0
\n",
+ "
\n",
+ "
\n",
+ "
1742
\n",
+ "
0
\n",
+ "
1
\n",
+ "
0
\n",
+ "
0
\n",
+ "
\n",
+ " \n",
+ "
\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"
+ ]
+ }
+ ],
+ "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-08-29T18:45:08+00:00",
+ "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/ne/2-Regression/4-Logistic/README.md b/translations/ne/2-Regression/4-Logistic/README.md
new file mode 100644
index 000000000..fcb907508
--- /dev/null
+++ b/translations/ne/2-Regression/4-Logistic/README.md
@@ -0,0 +1,407 @@
+
+# वर्गहरू भविष्यवाणी गर्नका लागि Logistic Regression
+
+
+
+## [पाठ अघि क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/15/)
+
+> ### [यो पाठ R मा उपलब्ध छ!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html)
+
+## परिचय
+
+Regression को अन्तिम पाठमा, जो एक आधारभूत _क्लासिक_ ML प्रविधि हो, हामी Logistic Regression को अध्ययन गर्नेछौं। यो प्रविधि प्रयोग गरेर तपाईंले binary वर्गहरू भविष्यवाणी गर्नका लागि ढाँचाहरू पत्ता लगाउन सक्नुहुन्छ। यो क्यान्डी चकलेट हो कि होइन? यो रोग संक्रामक हो कि होइन? यो ग्राहकले यो उत्पादन रोज्नेछ कि छैन?
+
+यस पाठमा, तपाईंले सिक्नुहुनेछ:
+
+- डेटा visualization को लागि नयाँ पुस्तकालय
+- Logistic Regression को प्रविधिहरू
+
+✅ यस प्रकारको regression मा काम गर्ने आफ्नो समझलाई गहिरो बनाउनुहोस् यस [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott) मा।
+
+## पूर्व-आवश्यकता
+
+Pumpkin डेटा संग काम गरेपछि, हामी यसमा पर्याप्त परिचित छौं कि एउटा binary वर्ग छ जसमा हामी काम गर्न सक्छौं: `Color`।
+
+आउनुहोस्, Logistic Regression मोडेल निर्माण गरौं जसले केही चरहरू दिएर _कुन रंगको pumpkin सम्भावित छ_ (orange 🎃 वा white 👻) भविष्यवाणी गर्न सक्छ।
+
+> किन हामी regression को पाठ समूहमा binary classification को कुरा गर्दैछौं? केवल भाषिक सुविधा को लागि, किनकि Logistic Regression [वास्तवमा एक classification विधि हो](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), यद्यपि यो linear आधारित छ। डेटा वर्गीकरणका अन्य तरिकाहरूको बारेमा अर्को पाठ समूहमा जान्नुहोस्।
+
+## प्रश्न परिभाषित गर्नुहोस्
+
+हाम्रो उद्देश्यका लागि, हामी यसलाई binary रूपमा व्यक्त गर्नेछौं: 'White' वा 'Not White'। हाम्रो dataset मा 'striped' नामक अर्को वर्ग पनि छ तर यसको उदाहरणहरू कम छन्, त्यसैले हामी यसलाई प्रयोग गर्नेछैनौं। यो dataset बाट null मानहरू हटाएपछि हराउँछ।
+
+> 🎃 रमाइलो तथ्य, हामी कहिलेकाहीं सेतो pumpkins लाई 'ghost' pumpkins भन्छौं। तिनीहरू carving गर्न धेरै सजिलो छैनन्, त्यसैले तिनीहरू orange भन्दा कम लोकप्रिय छन् तर तिनीहरू आकर्षक देखिन्छन्! त्यसैले हामी हाम्रो प्रश्नलाई यसरी पनि पुनःव्यक्त गर्न सक्छौं: 'Ghost' वा 'Not Ghost'। 👻
+
+## Logistic Regression को बारेमा
+
+Logistic Regression linear regression भन्दा केही महत्त्वपूर्ण तरिकामा फरक छ, जुन तपाईंले पहिले सिक्नुभएको थियो।
+
+[](https://youtu.be/KpeCT6nEpBY "ML for beginners - Understanding Logistic Regression for Machine Learning Classification")
+
+> 🎥 माथिको छवि क्लिक गरेर Logistic Regression को छोटो भिडियो अवलोकन हेर्नुहोस्।
+
+### Binary Classification
+
+Logistic Regression ले linear regression जस्तै सुविधाहरू प्रदान गर्दैन। पूर्वले binary वर्ग ("white or not white") को बारेमा भविष्यवाणी प्रदान गर्दछ जबकि पछिल्लोले निरन्तर मानहरू भविष्यवाणी गर्न सक्षम छ, उदाहरणका लागि pumpkin को उत्पत्ति र harvesting को समय दिएर, _कसरी यसको मूल्य बढ्नेछ_।
+
+
+> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
+
+### अन्य वर्गीकरणहरू
+
+Logistic Regression का अन्य प्रकारहरू पनि छन्, जस्तै multinomial र ordinal:
+
+- **Multinomial**, जसमा एकभन्दा बढी वर्गहरू हुन्छन् - "Orange, White, and Striped"।
+- **Ordinal**, जसमा ordered वर्गहरू हुन्छन्, उपयोगी यदि हामीले हाम्रो परिणामहरूलाई तार्किक रूपमा क्रमबद्ध गर्न चाह्यौं, जस्तै हाम्रो pumpkins जसलाई सीमित संख्याका आकारहरू (mini, sm, med, lg, xl, xxl) द्वारा क्रमबद्ध गरिएको छ।
+
+
+
+### चरहरू अनिवार्य रूपमा सम्बन्धित हुनु पर्दैन
+
+Linear regression सम्बन्धित चरहरूसँग राम्रोसँग काम गर्थ्यो भन्ने कुरा सम्झनुहोस्? Logistic Regression विपरीत छ - चरहरू अनिवार्य रूपमा सम्बन्धित हुनु पर्दैन। यो डेटा संग काम गर्दछ जसको सम्बन्ध केही कमजोर छ।
+
+### तपाईंलाई धेरै सफा डेटा चाहिन्छ
+
+Logistic Regression ले धेरै डेटा प्रयोग गर्दा अधिक सटीक परिणाम दिन्छ; हाम्रो सानो dataset यस कार्यका लागि उपयुक्त छैन, त्यसैले यो ध्यानमा राख्नुहोस्।
+
+[](https://youtu.be/B2X4H9vcXTs "ML for beginners - Data Analysis and Preparation for Logistic Regression")
+
+> 🎥 माथिको छवि क्लिक गरेर linear regression को लागि डेटा तयार गर्ने छोटो भिडियो अवलोकन हेर्नुहोस्।
+
+✅ Logistic Regression को लागि उपयुक्त डेटा प्रकारहरूको बारेमा सोच्नुहोस्।
+
+## अभ्यास - डेटा सफा गर्नुहोस्
+
+पहिले, डेटा अलिकति सफा गर्नुहोस्, null मानहरू हटाएर र केही स्तम्भहरू चयन गरेर:
+
+1. निम्न कोड थप्नुहोस्:
+
+ ```python
+
+ columns_to_select = ['City Name','Package','Variety', 'Origin','Item Size', 'Color']
+ pumpkins = full_pumpkins.loc[:, columns_to_select]
+
+ pumpkins.dropna(inplace=True)
+ ```
+
+ तपाईं आफ्नो नयाँ dataframe हेर्न सक्नुहुन्छ:
+
+ ```python
+ pumpkins.info
+ ```
+
+### Visualization - categorical plot
+
+अब सम्म तपाईंले [starter notebook](./notebook.ipynb) मा pumpkin डेटा लोड गर्नुभएको छ र यसलाई सफा गर्नुभएको छ ताकि केही चरहरू सहितको dataset सुरक्षित रहोस्, जस्तै `Color`। आउनुहोस्, notebook मा नयाँ पुस्तकालय [Seaborn](https://seaborn.pydata.org/index.html) प्रयोग गरेर dataframe visualization गरौं, जुन पहिले प्रयोग गरिएको Matplotlib मा आधारित छ।
+
+Seaborn ले तपाईंको डेटा visualization गर्न केही आकर्षक तरिकाहरू प्रदान गर्दछ। उदाहरणका लागि, तपाईं `Variety` र `Color` को डेटा वितरण तुलना गर्न सक्नुहुन्छ।
+
+1. `catplot` function प्रयोग गरेर, हाम्रो pumpkin डेटा `pumpkins` प्रयोग गर्दै, र प्रत्येक pumpkin वर्गको लागि रंग mapping निर्दिष्ट गर्दै यस्तो plot बनाउनुहोस्:
+
+ ```python
+ import seaborn as sns
+
+ palette = {
+ 'ORANGE': 'orange',
+ 'WHITE': 'wheat',
+ }
+
+ sns.catplot(
+ data=pumpkins, y="Variety", hue="Color", kind="count",
+ palette=palette,
+ )
+ ```
+
+ 
+
+ डेटा अवलोकन गरेर, तपाईं देख्न सक्नुहुन्छ कि Color डेटा Variety संग कसरी सम्बन्धित छ।
+
+ ✅ यस categorical plot लाई हेरेर, केहि रोचक अन्वेषणहरू के हुन् भनेर कल्पना गर्नुहोस्।
+
+### डेटा पूर्व-प्रक्रिया: feature र label encoding
+हाम्रो pumpkins dataset मा सबै स्तम्भहरूको लागि string मानहरू छन्। मानवीय दृष्टिकोणबाट categorical डेटा संग काम गर्न सहज छ तर मेसिनहरूको लागि होइन। Machine learning algorithms संख्याहरू संग राम्रोसँग काम गर्छन्। त्यसैले encoding डेटा पूर्व-प्रक्रिया चरणमा एक महत्त्वपूर्ण कदम हो, किनकि यसले categorical डेटा लाई संख्यात्मक डेटा मा बदल्न सक्षम बनाउँछ, कुनै पनि जानकारी गुमाउनु बिना। राम्रो encoding ले राम्रो मोडेल निर्माण गर्न मद्दत गर्दछ।
+
+Feature encoding को लागि दुई मुख्य प्रकारका encoders छन्:
+
+1. Ordinal encoder: यो ordinal variables का लागि उपयुक्त छ, जुन categorical variables हुन् जहाँ तिनीहरूको डेटा तार्किक क्रम अनुसरण गर्दछ, जस्तै हाम्रो dataset मा `Item Size` स्तम्भ। यसले एक mapping सिर्जना गर्दछ जसले प्रत्येक वर्गलाई एक संख्याले प्रतिनिधित्व गर्दछ, जुन स्तम्भमा वर्गको क्रम हो।
+
+ ```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. Categorical encoder: यो nominal variables का लागि उपयुक्त छ, जुन categorical variables हुन् जहाँ तिनीहरूको डेटा तार्किक क्रम अनुसरण गर्दैन, जस्तै `Item Size` बाहेकका सबै features। यो एक one-hot encoding हो, जसको मतलब प्रत्येक वर्गलाई एक binary स्तम्भले प्रतिनिधित्व गर्दछ: encoded variable बराबर 1 हुन्छ यदि pumpkin त्यो Variety मा पर्छ र अन्यथा 0।
+
+ ```python
+ from sklearn.preprocessing import OneHotEncoder
+
+ categorical_features = ['City Name', 'Package', 'Variety', 'Origin']
+ categorical_encoder = OneHotEncoder(sparse_output=False)
+ ```
+त्यसपछि, `ColumnTransformer` प्रयोग गरेर धेरै encoders लाई एकल चरणमा संयोजन गरिन्छ र तिनीहरूलाई उपयुक्त स्तम्भहरूमा लागू गरिन्छ।
+
+```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)
+```
+अर्कोतर्फ, label लाई encode गर्न, हामी scikit-learn को `LabelEncoder` class प्रयोग गर्छौं, जुन एक utility class हो जसले labels लाई सामान्य बनाउन मद्दत गर्दछ ताकि तिनीहरू केवल 0 देखि n_classes-1 (यहाँ, 0 र 1) सम्मका मानहरू समावेश गर्छन्।
+
+```python
+ from sklearn.preprocessing import LabelEncoder
+
+ label_encoder = LabelEncoder()
+ encoded_label = label_encoder.fit_transform(pumpkins['Color'])
+```
+Features र label लाई encode गरेपछि, हामी तिनीहरूलाई नयाँ dataframe `encoded_pumpkins` मा merge गर्न सक्छौं।
+
+```python
+ encoded_pumpkins = encoded_features.assign(Color=encoded_label)
+```
+✅ `Item Size` स्तम्भको लागि ordinal encoder प्रयोग गर्ने के फाइदाहरू छन्?
+
+### चरहरू बीचको सम्बन्ध विश्लेषण गर्नुहोस्
+
+अब हामीले हाम्रो डेटा पूर्व-प्रक्रिया गरिसकेपछि, हामी features र label बीचको सम्बन्ध विश्लेषण गर्न सक्छौं ताकि मोडेलले features दिएर label कत्तिको राम्रोसँग भविष्यवाणी गर्न सक्नेछ भन्ने कुरा बुझ्न सकौं।
+यस प्रकारको विश्लेषण गर्नको लागि डेटा plot गर्नु सबैभन्दा राम्रो तरिका हो। हामी फेरि Seaborn को `catplot` function प्रयोग गर्नेछौं, `Item Size`, `Variety` र `Color` बीचको सम्बन्धलाई categorical plot मा visualization गर्न। डेटा राम्रोसँग plot गर्नको लागि हामी encoded `Item Size` स्तम्भ र unencoded `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}")
+```
+
+
+### Swarm plot प्रयोग गर्नुहोस्
+
+किनकि Color एक binary वर्ग हो (White वा Not), यसलाई visualization को लागि 'एक [विशेष विधि](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar)' चाहिन्छ। यो वर्गको अन्य चरहरूसँगको सम्बन्ध visualization गर्न अन्य तरिकाहरू छन्।
+
+तपाईं Seaborn plots प्रयोग गरेर चरहरूलाई सँगसँगै visualization गर्न सक्नुहुन्छ।
+
+1. 'Swarm' plot प्रयोग गरेर मानहरूको वितरण देखाउनुहोस्:
+
+ ```python
+ palette = {
+ 0: 'orange',
+ 1: 'wheat'
+ }
+ sns.swarmplot(x="Color", y="ord__Item Size", data=encoded_pumpkins, palette=palette)
+ ```
+
+ 
+
+**ध्यान दिनुहोस्**: माथिको कोडले warning उत्पन्न गर्न सक्छ, किनकि seaborn ले यति धेरै datapoints लाई swarm plot मा प्रतिनिधित्व गर्न असफल हुन्छ। सम्भावित समाधान भनेको marker को आकार घटाउनु हो, 'size' parameter प्रयोग गरेर। तर, ध्यान दिनुहोस् कि यसले plot को readability मा असर गर्छ।
+
+> **🧮 गणित देखाउनुहोस्**
+>
+> Logistic Regression 'maximum likelihood' को अवधारणामा आधारित छ [sigmoid functions](https://wikipedia.org/wiki/Sigmoid_function) प्रयोग गरेर। 'Sigmoid Function' को plot 'S' आकारको देखिन्छ। यसले मानलाई 0 र 1 बीचमा map गर्छ। यसको curve लाई 'logistic curve' पनि भनिन्छ। यसको formula यस्तो देखिन्छ:
+>
+> 
+>
+> जहाँ sigmoid को midpoint x को 0 बिन्दुमा हुन्छ, L curve को अधिकतम मान हो, र k curve को steepness हो। यदि function को परिणाम 0.5 भन्दा बढी छ भने, सो label लाई binary choice को '1' वर्ग दिइनेछ। यदि होइन भने, यसलाई '0' वर्गमा वर्गीकृत गरिनेछ।
+
+## आफ्नो मोडेल निर्माण गर्नुहोस्
+
+Scikit-learn मा binary classification पत्ता लगाउन मोडेल निर्माण गर्नु आश्चर्यजनक रूपमा सरल छ।
+
+[](https://youtu.be/MmZS2otPrQ8 "ML for beginners - Logistic Regression for classification of data")
+
+> 🎥 माथिको छवि क्लिक गरेर linear regression मोडेल निर्माण गर्ने छोटो भिडियो अवलोकन हेर्नुहोस्।
+
+1. तपाईं आफ्नो classification मोडेलमा प्रयोग गर्न चाहनुभएको चरहरू चयन गर्नुहोस् र `train_test_split()` बोलाएर training र test sets विभाजन गर्नुहोस्:
+
+ ```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. अब तपाईं आफ्नो मोडेललाई training डेटा प्रयोग गरेर `fit()` बोलाएर train गर्न सक्नुहुन्छ, र यसको परिणाम print गर्न सक्नुहुन्छ:
+
+ ```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))
+ ```
+
+ आफ्नो मोडेलको स्कोरबोर्ड हेर्नुहोस्। यो खराब छैन, तपाईंको dataset मा केवल लगभग 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
+ ```
+
+## Confusion Matrix मार्फत राम्रो समझ
+
+जब तपाईं माथिका वस्तुहरू print गरेर स्कोरबोर्ड रिपोर्ट [terms](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report) प्राप्त गर्न सक्नुहुन्छ, तपाईं आफ्नो मोडेललाई [confusion matrix](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) प्रयोग गरेर अझ सजिलै बुझ्न सक्नुहुन्छ।
+
+> 🎓 '[Confusion matrix](https://wikipedia.org/wiki/Confusion_matrix)' (वा 'error matrix') एक तालिका हो जसले तपाईंको मोडेलको true vs. false positives र negatives व्यक्त गर्दछ, यसरी predictions को accuracy मापन गर्दछ।
+
+1. Confusion matrix प्रयोग गर्न `confusion_matrix()` बोलाउनुहोस्:
+
+ ```python
+ from sklearn.metrics import confusion_matrix
+ confusion_matrix(y_test, predictions)
+ ```
+
+ आफ्नो मोडेलको confusion matrix हेर्नुहोस्:
+
+ ```output
+ array([[162, 4],
+ [ 11, 22]])
+ ```
+
+Scikit-learn मा confusion matrices Rows (axis 0) actual labels हुन् र columns (axis 1) predicted labels हुन्।
+
+| | 0 | 1 |
+| :---: | :---: | :---: |
+| 0 | TN | FP |
+| 1 | FN | TP |
+
+यहाँ के भइरहेको छ? मानौं हाम्रो मोडेललाई pumpkins लाई दुई binary वर्गहरू बीच वर्गीकृत गर्न भनिएको छ, वर्ग 'white' र वर्ग 'not-white'।
+
+- यदि तपाईंको मोडेलले pumpkin लाई not white भनेर भविष्यवाणी गर्छ र यो वास्तवमा 'not-white' वर्गमा पर्छ भने हामी यसलाई true negative भन्छौं, जुन माथिको बायाँ नम्बरले देखाउँछ।
+- यदि तपाईंको मोडेलले pumpkin लाई white भनेर भविष्यवाणी गर्छ र यो वास्तवमा 'not-white' वर्गमा पर्छ भने हामी यसलाई false negative भन्छौं, जुन तलको बायाँ नम्बरले देखाउँछ।
+- यदि तपाईंको मोडेलले pumpkin लाई not white भनेर भविष्यवाणी गर्छ र यो वास्तवमा 'white' वर्गमा पर्छ भने हामी यसलाई false positive भन्छौं, जुन माथिको दायाँ नम्बरले देखाउँछ।
+- यदि तपाईंको मोडेलले pumpkin लाई white भनेर भविष्यवाणी गर्छ र यो वास्तवमा 'white' वर्गमा पर्छ भने हामी यसलाई true positive भन्छौं, जुन तलको दायाँ नम्बरले देखाउँछ।
+
+जसरी तपाईंले अनुमान गर्नुभएको छ, true positives र true negatives को संख्या बढी हुनु र false positives र false negatives को संख्या कम हुनु राम्रो हो, जसले मोडेल राम्रो प्रदर्शन गरेको संकेत गर्दछ।
+कन्फ्युजन म्याट्रिक्सले प्रिसिजन र रिकलसँग कसरी सम्बन्ध राख्छ? याद गर्नुहोस्, माथि प्रिन्ट गरिएको क्लासिफिकेसन रिपोर्टले प्रिसिजन (0.85) र रिकल (0.67) देखाएको थियो।
+
+प्रिसिजन = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461
+
+रिकल = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666
+
+✅ प्रश्न: कन्फ्युजन म्याट्रिक्स अनुसार, मोडेलले कस्तो प्रदर्शन गर्यो? उत्तर: नराम्रो होइन; धेरै साँचो नेगेटिभ्स छन्, तर केही गलत नेगेटिभ्स पनि छन्।
+
+अब हामी कन्फ्युजन म्याट्रिक्सको TP/TN र FP/FN म्यापिङको मद्दतले पहिले देखिएका शब्दहरूलाई फेरि हेर्छौं:
+
+🎓 प्रिसिजन: TP/(TP + FP) पुनःप्राप्त गरिएका उदाहरणहरूमा सान्दर्भिक उदाहरणहरूको अंश (जस्तै, कुन लेबलहरू राम्रोसँग लेबल गरिएका थिए)
+
+🎓 रिकल: TP/(TP + FN) सान्दर्भिक उदाहरणहरूको अंश जुन पुनःप्राप्त गरियो, चाहे राम्रोसँग लेबल गरिएको होस् वा नभएको होस्
+
+🎓 f1-स्कोर: (2 * प्रिसिजन * रिकल)/(प्रिसिजन + रिकल) प्रिसिजन र रिकलको भारित औसत, जसको उच्चतम मान 1 र न्यूनतम मान 0 हुन्छ
+
+🎓 सपोर्ट: प्रत्येक लेबल पुनःप्राप्त भएको घटनाहरूको संख्या
+
+🎓 एक्युरेसी: (TP + TN)/(TP + TN + FP + FN) कुनै नमुनाका लागि सही रूपमा भविष्यवाणी गरिएका लेबलहरूको प्रतिशत।
+
+🎓 म्याक्रो औसत: प्रत्येक लेबलको लागि तौल नलिई गणना गरिएको औसत मेट्रिक्स।
+
+🎓 तौलित औसत: प्रत्येक लेबलको लागि तौलको आधारमा गणना गरिएको औसत मेट्रिक्स, जसमा तौल सपोर्ट (प्रत्येक लेबलको साँचो घटनाहरूको संख्या) द्वारा निर्धारण गरिन्छ।
+
+✅ के तपाईं अनुमान गर्न सक्नुहुन्छ कि यदि तपाईं आफ्नो मोडेलले गलत नेगेटिभ्सको संख्या घटाओस् भन्ने चाहनुहुन्छ भने कुन मेट्रिकलाई ध्यान दिनुपर्छ?
+
+## यो मोडेलको ROC कर्भलाई भिजुअलाइज गर्नुहोस्
+
+[](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 अक्षमा गलत पोजिटिभ दर हुन्छ।" त्यसैले, कर्भको उचाइ र मध्यरेखा र कर्भको बीचको स्थान महत्त्वपूर्ण हुन्छ: तपाईं चाहनुहुन्छ कि कर्भ छिट्टै माथि र रेखा पार गरेर जाओस्। हाम्रो केसमा, सुरुमा केही गलत पोजिटिभ्स छन्, र त्यसपछि रेखा सही रूपमा माथि र पार जान्छ:
+
+
+
+अन्तमा, 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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/16/)
+
+## समीक्षा र आत्म-अध्ययन
+
+[स्ट्यानफोर्डको यो पेपर](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/ne/2-Regression/4-Logistic/assignment.md b/translations/ne/2-Regression/4-Logistic/assignment.md
new file mode 100644
index 000000000..fa077ef52
--- /dev/null
+++ b/translations/ne/2-Regression/4-Logistic/assignment.md
@@ -0,0 +1,25 @@
+
+# केही पुनः Regression प्रयास गर्दै
+
+## निर्देशनहरू
+
+पाठमा, तपाईंले कद्दू डाटाको उपसमूह प्रयोग गर्नुभएको थियो। अब, मूल डाटामा फर्किनुहोस् र सबै डाटा, सफा गरिएको र मानकीकृत गरिएको, प्रयोग गरेर एक Logistic Regression मोडेल निर्माण गर्न प्रयास गर्नुहोस्।
+
+## मूल्यांकन मापदण्ड
+
+| मापदण्ड | उत्कृष्टता | पर्याप्त | सुधार आवश्यक छ |
+| -------- | ----------------------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------- |
+| | राम्रोसँग व्याख्या गरिएको र राम्रो प्रदर्शन गर्ने मोडेलसहितको नोटबुक प्रस्तुत गरिएको छ | न्यूनतम प्रदर्शन गर्ने मोडेलसहितको नोटबुक प्रस्तुत गरिएको छ | कमजोर प्रदर्शन गर्ने मोडेल वा कुनै मोडेल नभएको नोटबुक प्रस्तुत गरिएको छ |
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी यथार्थताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/2-Regression/4-Logistic/notebook.ipynb b/translations/ne/2-Regression/4-Logistic/notebook.ipynb
new file mode 100644
index 000000000..c3e6b99c6
--- /dev/null
+++ b/translations/ne/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",
+ "
City Name
\n",
+ "
Type
\n",
+ "
Package
\n",
+ "
Variety
\n",
+ "
Sub Variety
\n",
+ "
Grade
\n",
+ "
Date
\n",
+ "
Low Price
\n",
+ "
High Price
\n",
+ "
Mostly Low
\n",
+ "
...
\n",
+ "
Unit of Sale
\n",
+ "
Quality
\n",
+ "
Condition
\n",
+ "
Appearance
\n",
+ "
Storage
\n",
+ "
Crop
\n",
+ "
Repack
\n",
+ "
Trans Mode
\n",
+ "
Unnamed: 24
\n",
+ "
Unnamed: 25
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
4/29/17
\n",
+ "
270.0
\n",
+ "
280.0
\n",
+ "
270.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
E
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
5/6/17
\n",
+ "
270.0
\n",
+ "
280.0
\n",
+ "
270.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
E
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
11/5/16
\n",
+ "
90.0
\n",
+ "
100.0
\n",
+ "
90.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ " \n",
+ "
\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"
+ ]
+ }
+ ],
+ "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-08-29T18:52:53+00:00",
+ "source_file": "2-Regression/4-Logistic/notebook.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/ne/2-Regression/4-Logistic/solution/Julia/README.md b/translations/ne/2-Regression/4-Logistic/solution/Julia/README.md
new file mode 100644
index 000000000..7e9da10ae
--- /dev/null
+++ b/translations/ne/2-Regression/4-Logistic/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb b/translations/ne/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb
new file mode 100644
index 000000000..5470950f3
--- /dev/null
+++ b/translations/ne/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb
@@ -0,0 +1,686 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Logistic Regression मोडेल बनाउनुहोस् - पाठ ४\n",
+ "\n",
+ "\n",
+ "\n",
+ "#### **[पाठ अघि क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/15/)**\n",
+ "\n",
+ "#### परिचय\n",
+ "\n",
+ "Regression को यो अन्तिम पाठमा, जुन *classic* ML प्रविधिहरू मध्ये एक हो, हामी Logistic Regression को अध्ययन गर्नेछौं। तपाईंले यो प्रविधि प्रयोग गरेर ढाँचाहरू पत्ता लगाउन सक्नुहुन्छ जसले द्विआधारी श्रेणीहरूको भविष्यवाणी गर्न मद्दत गर्दछ। यो क्यान्डी चकलेट हो कि होइन? यो रोग संक्रामक हो कि होइन? यो ग्राहकले यो उत्पादन रोज्नेछ कि छैन?\n",
+ "\n",
+ "यस पाठमा, तपाईंले सिक्नुहुनेछ:\n",
+ "\n",
+ "- Logistic Regression का प्रविधिहरू\n",
+ "\n",
+ "✅ यो प्रकारको Regression मा काम गर्ने आफ्नो बुझाइलाई यो [Learn module](https://learn.microsoft.com/training/modules/introduction-classification-models/?WT.mc_id=academic-77952-leestott) मा गहिरो बनाउनुहोस्।\n",
+ "\n",
+ "## पूर्वशर्त\n",
+ "\n",
+ "Pumpkin डेटा संग काम गरेपछि, हामी यससँग पर्याप्त परिचित छौं कि हामीले महसुस गर्न सक्छौं कि त्यहाँ एउटा द्विआधारी श्रेणी छ जसमा हामी काम गर्न सक्छौं: `Color`।\n",
+ "\n",
+ "आउनुहोस्, Logistic Regression मोडेल बनाऔं जसले केही चरहरू दिइएको अवस्थामा *कुन रंगको Pumpkin हुने सम्भावना छ* (orange 🎃 वा white 👻) भनेर भविष्यवाणी गर्न सक्छ।\n",
+ "\n",
+ "> किन हामी Regression को पाठ समूहमा द्विआधारी वर्गीकरणको कुरा गर्दैछौं? केवल भाषिक सुविधाको लागि, किनकि Logistic Regression [वास्तवमा एक वर्गीकरण विधि हो](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), यद्यपि यो linear-आधारित हो। अर्को पाठ समूहमा डेटा वर्गीकरण गर्ने अन्य तरिकाहरूको बारेमा जान्नुहोस्।\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 प्रयोग गरेर beeswarm-शैलीका प्लटहरू बनाउनका लागि विधिहरू प्रदान गर्दछ।\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",
+ "हाम्रो उद्देश्यका लागि, हामी यसलाई दुईवटा श्रेणीमा व्यक्त गर्नेछौं: 'सेतो' वा 'सेतो होइन'। हाम्रो डेटासेटमा 'धारीदार' नामको अर्को श्रेणी पनि छ, तर यसको उदाहरणहरू कम छन्, त्यसैले हामी यसलाई प्रयोग गर्नेछैनौं। यो श्रेणी डेटासेटबाट null मानहरू हटाएपछि हराउँछ।\n",
+ "\n",
+ "> 🎃 रमाइलो तथ्य, हामी कहिलेकाहीं सेतो कद्दूलाई 'भूत' कद्दू भन्छौं। तिनीहरू कुँद्न सजिलो हुँदैनन्, त्यसैले तिनीहरू सुन्तला रंगका कद्दूहरू जत्तिकै लोकप्रिय छैनन्, तर तिनीहरू आकर्षक देखिन्छन्! त्यसैले हामी हाम्रो प्रश्नलाई यसरी पनि पुनःव्यक्त गर्न सक्छौं: 'भूत' वा 'भूत होइन'। 👻\n",
+ "\n",
+ "## **लजिस्टिक रिग्रेसनको बारेमा**\n",
+ "\n",
+ "लजिस्टिक रिग्रेसनले केही महत्त्वपूर्ण तरिकामा लीनियर रिग्रेसनबाट फरक छ, जुन तपाईंले पहिले सिक्नुभएको थियो।\n",
+ "\n",
+ "#### **द्विविधात्मक वर्गीकरण**\n",
+ "\n",
+ "लजिस्टिक रिग्रेसनले लीनियर रिग्रेसनजस्तै विशेषताहरू प्रदान गर्दैन। लजिस्टिक रिग्रेसनले `द्विविधात्मक श्रेणी` (\"सुन्तला वा सुन्तला होइन\") को भविष्यवाणी प्रदान गर्छ भने लीनियर रिग्रेसनले `निरन्तर मानहरू`को भविष्यवाणी गर्न सक्षम छ, जस्तै कद्दूको उत्पत्ति र कटनीको समय दिइएको अवस्थामा, *यसको मूल्य कति बढ्नेछ*।\n",
+ "\n",
+ "\n",
+ "\n",
+ "### अन्य वर्गीकरणहरू\n",
+ "\n",
+ "लजिस्टिक रिग्रेसनका अन्य प्रकारहरू पनि छन्, जस्तै मल्टिनोमियल र अर्डिनल:\n",
+ "\n",
+ "- **मल्टिनोमियल**, जसमा एकभन्दा बढी श्रेणीहरू हुन्छन् - \"सुन्तला, सेतो, र धारीदार\"।\n",
+ "\n",
+ "- **अर्डिनल**, जसमा क्रमबद्ध श्रेणीहरू हुन्छन्, यदि हामी हाम्रो परिणामहरूलाई तार्किक रूपमा क्रमबद्ध गर्न चाहन्छौं भने उपयोगी हुन्छ, जस्तै कद्दूहरू जुन निश्चित संख्याका आकारहरू (mini, sm, med, lg, xl, xxl) द्वारा क्रमबद्ध गरिएका छन्।\n",
+ "\n",
+ "\n",
+ "\n",
+ "#### **भेरिएबलहरू अनिवार्य रूपमा सम्बन्धित हुनु पर्दैन**\n",
+ "\n",
+ "तपाईंलाई याद छ लीनियर रिग्रेसनले बढी सम्बन्धित भेरिएबलहरूसँग राम्रो काम गर्थ्यो? लजिस्टिक रिग्रेसन यसको विपरीत हो - भेरिएबलहरू अनिवार्य रूपमा मिल्नुपर्दैन। यो डेटा, जसको सम्बन्धहरू केही कमजोर छन्,का लागि उपयुक्त छ।\n",
+ "\n",
+ "#### **तपाईंलाई धेरै सफा डेटा चाहिन्छ**\n",
+ "\n",
+ "लजिस्टिक रिग्रेसनले बढी डेटा प्रयोग गर्दा बढी सटीक परिणाम दिन्छ; हाम्रो सानो डेटासेट यो कार्यका लागि उपयुक्त छैन, त्यसैले यो कुरा ध्यानमा राख्नुहोस्।\n",
+ "\n",
+ "✅ सोच्नुहोस् कि कुन प्रकारको डेटा लजिस्टिक रिग्रेसनका लागि उपयुक्त हुन्छ।\n",
+ "\n",
+ "## अभ्यास - डेटा सफा गर्नुहोस्\n",
+ "\n",
+ "पहिले, डेटा अलि सफा गर्नुहोस्, null मानहरू हटाएर र केही स्तम्भहरू मात्र चयन गरेर:\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 लाइब्रेरीले तपाईंको डेटा दृश्यात्मक बनाउन केही राम्रो तरिकाहरू प्रदान गर्दछ। उदाहरणका लागि, तपाईं प्रत्येक प्रकार र रंगको लागि डेटा वितरणलाई श्रेणीगत प्लटमा तुलना गर्न सक्नुहुन्छ।\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",
+ "रंगको वितरणलाई वस्तुको आकारसँग सम्बन्धित देखाउन `स्वार्म प्लट` प्रयोग गर्नुहोस्।\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 regression मोडेल निर्दिष्ट गर्ने धेरै तरिकाहरू छन्। `?logistic_reg()` हेर्नुहोस्। अहिलेको लागि, हामी डिफल्ट `stats::glm()` इन्जिन मार्फत logistic regression मोडेल निर्दिष्ट गर्नेछौं।\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) प्रयोग गरेर परीक्षण डाटामा भविष्यवाणी गर्न सक्छौं। सुरुमा, मोडेल प्रयोग गरेर हाम्रो परीक्षण सेटका लागि लेबलहरू र प्रत्येक लेबलको सम्भावनाहरू भविष्यवाणी गरौं। जब सम्भावना ०.५ भन्दा बढी हुन्छ, भविष्यवाणी गरिएको वर्ग `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": [
+ "यो धेरै राम्रो छ! यसले logistic regression कसरी काम गर्छ भन्ने बारेमा थप जानकारी प्रदान गर्दछ।\n",
+ "\n",
+ "### भ्रम निवारण म्याट्रिक्स मार्फत राम्रो बुझाइ\n",
+ "\n",
+ "प्रत्येक भविष्यवाणीलाई यसको \"ग्राउन्ड ट्रुथ\" वास्तविक मानसँग तुलना गर्नु भनेको मोडेलले कत्तिको राम्रो भविष्यवाणी गरिरहेको छ भन्ने निर्धारण गर्ने कुशल तरिका होइन। भाग्यवश, Tidymodelsसँग केही थप उपायहरू छन्: [`yardstick`](https://yardstick.tidymodels.org/) - प्रदर्शन मेट्रिक्स प्रयोग गरेर मोडेलहरूको प्रभावकारिता मापन गर्न प्रयोग गरिने एक प्याकेज।\n",
+ "\n",
+ "वर्गीकरण समस्यासँग सम्बन्धित एक प्रदर्शन मेट्रिक्स भनेको [`confusion matrix`](https://wikipedia.org/wiki/Confusion_matrix) हो। एक confusion matrix ले वर्गीकरण मोडेलले कत्तिको राम्रो प्रदर्शन गरिरहेको छ भन्ने वर्णन गर्दछ। confusion matrix ले प्रत्येक वर्गमा कति उदाहरणहरू सही रूपमा वर्गीकृत गरिएका छन् भन्ने ट्याबुलेट गर्दछ। हाम्रो केसमा, यसले देखाउनेछ कि कति सुन्तला रंगका कद्दूहरू सुन्तला रंगका रूपमा वर्गीकृत गरिए र कति सेतो कद्दूहरू सेतो रूपमा वर्गीकृत गरिए; confusion matrix ले यो पनि देखाउनेछ कि कति गलत वर्गहरूमा वर्गीकृत गरिए।\n",
+ "\n",
+ "[`conf_mat()`](https://tidymodels.github.io/yardstick/reference/conf_mat.html) नामक yardstick को फङ्सनले अवलोकन गरिएका र भविष्यवाणी गरिएका वर्गहरूको क्रस-ट्याबुलेशन गणना गर्दछ।\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": [
+ "आउनुहोस् भ्रमित म्याट्रिक्सलाई व्याख्या गरौं। हाम्रो मोडेललाई दुई बाइनरी श्रेणीहरू, श्रेणी `सेतो` र श्रेणी `सेतो नभएको` बीचमा कद्दू वर्गीकरण गर्न भनिएको छ।\n",
+ "\n",
+ "- यदि तपाईंको मोडेलले कद्दूलाई सेतो भनेर भविष्यवाणी गर्छ र वास्तवमा त्यो श्रेणी 'सेतो' मा पर्छ भने हामी यसलाई `साँचो सकारात्मक` भन्छौं, जुन माथिल्लो बायाँ नम्बरले देखाउँछ।\n",
+ "\n",
+ "- यदि तपाईंको मोडेलले कद्दूलाई सेतो नभएको भनेर भविष्यवाणी गर्छ र वास्तवमा त्यो श्रेणी 'सेतो' मा पर्छ भने हामी यसलाई `झुटो नकारात्मक` भन्छौं, जुन तल्लो बायाँ नम्बरले देखाउँछ।\n",
+ "\n",
+ "- यदि तपाईंको मोडेलले कद्दूलाई सेतो भनेर भविष्यवाणी गर्छ र वास्तवमा त्यो श्रेणी 'सेतो नभएको' मा पर्छ भने हामी यसलाई `झुटो सकारात्मक` भन्छौं, जुन माथिल्लो दायाँ नम्बरले देखाउँछ।\n",
+ "\n",
+ "- यदि तपाईंको मोडेलले कद्दूलाई सेतो नभएको भनेर भविष्यवाणी गर्छ र वास्तवमा त्यो श्रेणी 'सेतो नभएको' मा पर्छ भने हामी यसलाई `साँचो नकारात्मक` भन्छौं, जुन तल्लो दायाँ नम्बरले देखाउँछ।\n",
+ "\n",
+ "| सत्यता |\n",
+ "|:-----:|\n",
+ "\n",
+ "\n",
+ "| | | |\n",
+ "|---------------|--------|-------|\n",
+ "| **भविष्यवाणी गरिएको** | सेतो | सुन्तला |\n",
+ "| सेतो | TP | FP |\n",
+ "| सुन्तला | FN | TN |\n",
+ "\n",
+ "जसरी तपाईंले अनुमान गर्नुभयो, साँचो सकारात्मक र साँचो नकारात्मकको संख्या धेरै हुनु राम्रो हो, र झुटो सकारात्मक र झुटो नकारात्मकको संख्या कम हुनु राम्रो हो, जसले मोडेल राम्रो प्रदर्शन गरेको संकेत गर्छ।\n",
+ "\n",
+ "भ्रमित म्याट्रिक्स उपयोगी छ किनभने यसले अन्य मेट्रिक्सलाई जन्म दिन्छ जसले वर्गीकरण मोडेलको प्रदर्शनलाई राम्रोसँग मूल्याङ्कन गर्न मद्दत गर्न सक्छ। आउनुहोस् ती मध्ये केहीलाई हेरौं:\n",
+ "\n",
+ "🎓 Precision: `TP/(TP + FP)` भविष्यवाणी गरिएको सकारात्मकहरू मध्ये वास्तवमा सकारात्मकको अनुपातको रूपमा परिभाषित गरिएको। यसलाई [सकारात्मक भविष्यवाणी मूल्य](https://en.wikipedia.org/wiki/Positive_predictive_value \"Positive predictive value\") पनि भनिन्छ।\n",
+ "\n",
+ "🎓 Recall: `TP/(TP + FN)` वास्तवमा सकारात्मक नमूनाहरूको संख्याबाट सकारात्मक परिणामहरूको अनुपातको रूपमा परिभाषित गरिएको। यसलाई `संवेदनशीलता` पनि भनिन्छ।\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()` प्रयोग गरेर वक्रको क्षेत्रफल (Area Under the Curve) गणना गरौं। 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 ० देखि १ सम्मको दायरामा हुन्छ, र तपाईं ठूलो स्कोर चाहनुहुन्छ, किनभने यदि कुनै मोडेलले आफ्ना भविष्यवाणीहरूमा १००% सहि छ भने, त्यसको 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यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।\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-08-29T18:56:56+00:00",
+ "source_file": "2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
\ No newline at end of file
diff --git a/translations/ne/2-Regression/4-Logistic/solution/notebook.ipynb b/translations/ne/2-Regression/4-Logistic/solution/notebook.ipynb
new file mode 100644
index 000000000..d367561c6
--- /dev/null
+++ b/translations/ne/2-Regression/4-Logistic/solution/notebook.ipynb
@@ -0,0 +1,1255 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Logistic Regression - पाठ ४\n",
+ "\n",
+ "आवश्यक लाइब्रेरीहरू र डाटासेट लोड गर्नुहोस्। डाटालाई एउटा डाटाफ्रेममा रूपान्तरण गर्नुहोस् जसमा डाटाको उपसेट समावेश छ:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
City Name
\n",
+ "
Type
\n",
+ "
Package
\n",
+ "
Variety
\n",
+ "
Sub Variety
\n",
+ "
Grade
\n",
+ "
Date
\n",
+ "
Low Price
\n",
+ "
High Price
\n",
+ "
Mostly Low
\n",
+ "
...
\n",
+ "
Unit of Sale
\n",
+ "
Quality
\n",
+ "
Condition
\n",
+ "
Appearance
\n",
+ "
Storage
\n",
+ "
Crop
\n",
+ "
Repack
\n",
+ "
Trans Mode
\n",
+ "
Unnamed: 24
\n",
+ "
Unnamed: 25
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
4/29/17
\n",
+ "
270.0
\n",
+ "
280.0
\n",
+ "
270.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
E
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
5/6/17
\n",
+ "
270.0
\n",
+ "
280.0
\n",
+ "
270.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
E
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9/24/16
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
160.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
BALTIMORE
\n",
+ "
NaN
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
11/5/16
\n",
+ "
90.0
\n",
+ "
100.0
\n",
+ "
90.0
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
N
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ " \n",
+ "
\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",
+ "
City Name
\n",
+ "
Package
\n",
+ "
Variety
\n",
+ "
Origin
\n",
+ "
Item Size
\n",
+ "
Color
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
2
\n",
+ "
BALTIMORE
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
DELAWARE
\n",
+ "
med
\n",
+ "
ORANGE
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
BALTIMORE
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
VIRGINIA
\n",
+ "
med
\n",
+ "
ORANGE
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
BALTIMORE
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
MARYLAND
\n",
+ "
lge
\n",
+ "
ORANGE
\n",
+ "
\n",
+ "
\n",
+ "
5
\n",
+ "
BALTIMORE
\n",
+ "
24 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
MARYLAND
\n",
+ "
lge
\n",
+ "
ORANGE
\n",
+ "
\n",
+ "
\n",
+ "
6
\n",
+ "
BALTIMORE
\n",
+ "
36 inch bins
\n",
+ "
HOWDEN TYPE
\n",
+ "
MARYLAND
\n",
+ "
med
\n",
+ "
ORANGE
\n",
+ "
\n",
+ " \n",
+ "
\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": "iVBORw0KGgoAAAANSUhEUgAAAjQAAAHpCAYAAACVw6ZvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABU3klEQVR4nO3deVRU5f8H8PeFkQFZZXNQ2RQBwy3NNRVGMTCz3JW0JJcyjdwXLJcwBSszTcU0wKxccl9KyoVxS0VTEhXXRM1A+7qwmOz394eH+/M6A7IKV9+vc+7Jee6zfO7IkXfP3JkRRFEUQURERKRgRlVdABEREVF5MdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdDQc0sURaSnp4MfxUREpHwMNPTcysjIgLW1NTIyMqq6FCIiKicGGiIiIlI8BhoiIiJSPAYaIiIiUjwGGiIiIlI8VVUXQFTVrq5qAkszZnsipXIbdqWqS6BqgP+KExERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdAQERGR4jHQEBERkeIx0BAREZHiMdCUU3BwMHr27KnXrtPpIAgC7t27J7Xl5+djwYIFaNKkCUxNTVGrVi1069YNhw4dkvqcO3cOgiDgyJEjsvnatm0LU1NTZGVlSW1ZWVkwNTVFVFSUVIsgCBAEATVq1EDt2rXRtWtXREdHo6CgQDafm5ub1PfRIyIiAgCQnJwMQRDg6OiIjIwM2djmzZtj1qxZBp8PPz8/g/MWHo0bN4ZGo8HcuXP1xvbv3x9t27ZFfn4+Zs2aJY1RqVRwc3PDuHHjkJmZKavP0PH4c0dERM8+BpqnRBRFDBw4EGFhYRgzZgySkpKg0+ng7OwMPz8/bNmyBQDg7e0NjUYDnU4njc3IyMCJEyfg4OAg+2V9+PBhZGdno3PnzlJbYGAgUlJSkJycjJ07d0Kr1WLMmDF47bXXkJeXJ6spLCwMKSkpsiMkJETWJyMjA1988UWJr3PTpk3SXPHx8QCA3bt3S2379+/H8uXL8cknnyAxMVEat379euzYsQPfffcdjI2NAQA+Pj7StcybNw/Lly/HhAkTZOs9Onfh0bJlyxLXS0REzwZVVRfwvPjpp5+wYcMGbNu2DT169JDaly9fjtu3b2P48OHo2rUrzM3NodVqodPpMHXqVADAwYMH4enpiU6dOkGn08HPzw/Aw10gV1dXuLu7S/Op1WpoNBoAQN26ddGiRQu0bdsWXbp0wcqVKzF8+HCpr6WlpdS3KCEhIfjyyy8xevRoODo6PvE6bW1tpT8X7ibZ2dnJ1nn99dfx5ptvYsiQITh69Cju3buH0aNHIyIiAl5eXlI/lUoljRswYAD27NmDbdu24ZtvvpH6PD43ERE9n7hD85SsXr0anp6esjBTaMKECbh9+zZ27doFANBqtTh48KC0oxIXFwc/Pz/4+voiLi5OGhcXFwetVvvEtTt37oxmzZph06ZNpa47KCgIHh4eCAsLK/XY4ixcuBC3b9/G7NmzMWrUKDRu3Fhvd+hxZmZmyMnJKfOa2dnZSE9Plx1ERPRs4A5NBdixYwcsLCxkbfn5+bLHFy5cQKNGjQyOL2y/cOECgIeB5v79+zh27BjatWsHnU6HSZMmoUOHDhgyZAiysrIgiiLi4+NlOy7F8fb2xqlTp2RtU6ZMwccffyxr27lzJzp27Cg9LryvpkePHhg3bhwaNGhQovWexMrKCjExMXjllVdgbm6OU6dOQRCEIvv/8ccfWL16tezlNQBo3749jIzkubzwPpvHhYeH45NPPtFrd307EVZWVmW4CiIiqi4YaCqAVqtFZGSkrO3o0aMYPHiwrE0UxRLN5+HhgXr16kGn08HHxwcnT56Er68vHB0d4eLigsOHD0MURWRnZ5doh6Zw7ccDw6RJkxAcHCxrq1u3rt7YgIAAdOjQAdOnT8fq1atLtF5JdO7cGW3btkXz5s3h6uqqdz4xMREWFhbIz89HTk4OunfvjsWLF8v6rFu3rsig+LjQ0FCMHz9eepyeng5nZ+fyXQQREVULDDQVwNzcHB4eHrK2v//+W/bY09MTSUlJBscXtnt6ekptfn5+iIuLQ9OmTdGwYUPp/pXCl51EUYSHh0eJfyEnJSXJ7rUBAHt7e726ixIREYF27dph0qRJJepfUiqVCiqV4R9DLy8vbNu2DSqVCnXq1IGJiYleH2dn5xJfg1qthlqtLle9RERUPfEemqdk4MCBuHjxIrZv3653bv78+bCzs0PXrl2lNq1Wi99//x27du2SbgIGIN0YrNPpSrw7s3fvXiQmJqJPnz5lrr9169bo3bu3dKPy02BiYgIPDw+4ubkZDDNERESFuEPzlAwcOBDr16/HkCFD8Pnnn6NLly5IT0/HkiVLsG3bNqxfvx7m5uZS/8L7aKKjo7FixQqp3dfXV7pvZtSoUXrrZGdnIzU1Ffn5+bh58yZiY2MRHh6O1157DW+//basb0ZGBlJTU2VtNWvWLPJ+kjlz5sDHx6fIHZWqcPv2bb1rsLGxgampaRVVREREVYE7NE+JIAj46aefMG3aNCxYsABeXl7o2LEjrl69Cp1Op/fhfO7u7nB1dUVGRgZ8fX2ldhcXF9SpUwc5OTmynZtCsbGxcHJygpubGwIDAxEXF4dFixZh69at0ue7FJoxYwacnJxkx+TJk4u8Bk9PTwwdOlT24X5Vzd/fX+8aCj/Th4iInh+CWNI7VYmeMenp6bC2tkZaWhrf5UREpHDcoSEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVTVXUBRFXt6qomsDRjtq8obsOuVHUJRPQc4r/iREREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0z5ng4GAIggBBEGBiYgIPDw+EhYUhLy8PAKDT6SAIAu7duyd7bOhITU3Vm3/WrFlF9i88/P39ERAQoDd26dKlsLGxwd9//623bu3atdGnTx/89ddfUn83NzeD80dERFTOk0dERNWWqqoLoKcvMDAQMTExyM7Oxi+//ILRo0ejRo0aCA0NLXLM+fPnYWVlJWtzdHTU6zdx4kSMHDlSetyqVSu8++67GDFihNSWm5uLJk2a4JtvvsF7770HALhy5QomT56MyMhI1KtXD5cuXZLWtbS0xMWLF/Huu++iR48eOHXqFIyNjQEAYWFhsrkBwNLSspTPCBERKR0DzXNIrVZDo9EAAN5//31s3rwZ27ZtKzbQODo6wsbG5olzW1hYwMLCQnpsbGwMS0tLab1CCxcuxAcffIBXXnkFbm5uGDZsGF555RW89dZbBtd1cnLCjBkzMGjQIFy6dAleXl4AYHDuomRnZyM7O1t6nJ6eXqJxRERU/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": [
+ "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"
+ ]
+ }
+ ],
+ "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-08-29T18:53:24+00:00",
+ "source_file": "2-Regression/4-Logistic/solution/notebook.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/ne/2-Regression/README.md b/translations/ne/2-Regression/README.md
new file mode 100644
index 000000000..b6abc5911
--- /dev/null
+++ b/translations/ne/2-Regression/README.md
@@ -0,0 +1,54 @@
+
+# मेसिन लर्निङका लागि रिग्रेसन मोडेलहरू
+## क्षेत्रीय विषय: उत्तर अमेरिकामा कद्दूको मूल्यका लागि रिग्रेसन मोडेलहरू 🎃
+
+उत्तर अमेरिकामा, कद्दूहरू प्रायः हेलोविनको लागि डर लाग्दो अनुहारमा कुँदिन्छन्। यी रोचक तरकारीहरूको बारेमा थप जानौं!
+
+
+> फोटो बेथ ट्युट्सम्यान द्वारा अनस्प्ल्यास मा
+
+## तपाईंले के सिक्नुहुनेछ
+
+[](https://youtu.be/5QnJtDad4iQ "रिग्रेसन परिचय भिडियो - हेर्न क्लिक गर्नुहोस्!")
+> 🎥 माथिको तस्बिरमा क्लिक गरेर यस पाठको लागि छोटो परिचय भिडियो हेर्नुहोस्
+
+यस खण्डका पाठहरूले मेसिन लर्निङको सन्दर्भमा रिग्रेसनका प्रकारहरू समेट्छ। रिग्रेसन मोडेलहरूले भेरिएबलहरू बीचको _सम्बन्ध_ निर्धारण गर्न मद्दत गर्न सक्छ। यस प्रकारको मोडेलले लम्बाइ, तापक्रम, वा उमेर जस्ता मानहरू भविष्यवाणी गर्न सक्छ, यसरी डाटा बिन्दुहरूको विश्लेषण गर्दै भेरिएबलहरू बीचको सम्बन्ध पत्ता लगाउँछ।
+
+यस पाठहरूको श्रृंखलामा, तपाईंले रेखीय र लजिस्टिक रिग्रेसन बीचको भिन्नता पत्ता लगाउनुहुनेछ, र कुन अवस्थामा कुन मोडेल प्रयोग गर्ने भन्ने निर्णय गर्न सिक्नुहुनेछ।
+
+[](https://youtu.be/XA3OaoW86R8 "सुरुवातकर्ता लागि मेसिन लर्निङ - मेसिन लर्निङका लागि रिग्रेसन मोडेलहरूको परिचय")
+
+> 🎥 माथिको तस्बिरमा क्लिक गरेर रिग्रेसन मोडेलहरूको परिचय दिने छोटो भिडियो हेर्नुहोस्।
+
+यस पाठहरूको समूहमा, तपाईं मेसिन लर्निङ कार्यहरू सुरु गर्न सेटअप गर्नुहुनेछ, जसमा नोटबुकहरू व्यवस्थापन गर्न भिजुअल स्टुडियो कोड कन्फिगर गर्ने, डाटा वैज्ञानिकहरूको सामान्य वातावरण समावेश छ। तपाईंले स्की-किट लर्न, मेसिन लर्निङका लागि पुस्तकालय, पत्ता लगाउनुहुनेछ, र तपाईंले आफ्नो पहिलो मोडेलहरू निर्माण गर्नुहुनेछ, यस अध्यायमा रिग्रेसन मोडेलहरूमा केन्द्रित।
+
+> रिग्रेसन मोडेलहरूसँग काम गर्न सिक्न मद्दत गर्ने उपयोगी लो-कोड उपकरणहरू छन्। यस कार्यका लागि [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)
+
+---
+### श्रेय
+
+"रिग्रेसनसहितको मेसिन लर्निङ" ♥️ सहित [जेन लूपर](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/ne/3-Web-App/1-Web-App/README.md b/translations/ne/3-Web-App/1-Web-App/README.md
new file mode 100644
index 000000000..cace79ee2
--- /dev/null
+++ b/translations/ne/3-Web-App/1-Web-App/README.md
@@ -0,0 +1,359 @@
+
+# ML मोडेल प्रयोग गर्न वेब एप बनाउनुहोस्
+
+यस पाठमा, तपाईंले एक डाटासेटमा ML मोडेल प्रशिक्षण गर्नुहुनेछ जुन पृथ्वीभन्दा बाहिरको छ: _पछिल्लो शताब्दीभरिका UFO देखाइहरू_, जुन NUFORC को डाटाबेसबाट लिइएको हो।
+
+तपाईंले सिक्नुहुनेछ:
+
+- कसरी प्रशिक्षित मोडेललाई 'pickle' गर्ने
+- कसरी त्यो मोडेललाई Flask एपमा प्रयोग गर्ने
+
+हामीले डाटा सफा गर्न र मोडेल प्रशिक्षण गर्न नोटबुकहरूको प्रयोग जारी राख्नेछौं, तर तपाईं यस प्रक्रियालाई अझ अगाडि लैजान सक्नुहुन्छ र मोडेललाई 'जंगली' मा, अर्थात् वेब एपमा प्रयोग गरेर अन्वेषण गर्न सक्नुहुन्छ।
+
+यसका लागि, तपाईंले Flask प्रयोग गरेर वेब एप निर्माण गर्न आवश्यक छ।
+
+## [पाठपूर्व प्रश्नोत्तरी](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/17/)
+
+## एप निर्माण गर्दै
+
+मेसिन लर्निङ मोडेलहरू उपभोग गर्नका लागि वेब एपहरू निर्माण गर्ने धेरै तरिकाहरू छन्। तपाईंको वेब आर्किटेक्चरले तपाईंको मोडेल कसरी प्रशिक्षण गरिन्छ भन्नेमा प्रभाव पार्न सक्छ। कल्पना गर्नुहोस् कि तपाईं यस्तो व्यवसायमा काम गर्दै हुनुहुन्छ जहाँ डाटा विज्ञान समूहले मोडेल प्रशिक्षण गरेको छ, जुन उनीहरूले तपाईंलाई एपमा प्रयोग गर्न चाहन्छन्।
+
+### विचार गर्नुपर्ने कुराहरू
+
+तपाईंले धेरै प्रश्नहरू सोध्नुपर्नेछ:
+
+- **यो वेब एप हो कि मोबाइल एप?** यदि तपाईं मोबाइल एप निर्माण गर्दै हुनुहुन्छ वा IoT सन्दर्भमा मोडेल प्रयोग गर्न आवश्यक छ भने, तपाईं [TensorFlow Lite](https://www.tensorflow.org/lite/) प्रयोग गर्न सक्नुहुन्छ र मोडेललाई Android वा 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/) प्रयोग गर्ने JavaScript वेब एपहरूमा प्रयोग गर्न सकिन्छ। यो विकल्पलाई भविष्यको पाठमा 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 प्रयोग गरेर JavaScript सन्दर्भमा पनि गर्न सकिन्छ।
+
+हाम्रो उद्देश्यका लागि, किनभने हामी Python-आधारित नोटबुकहरूसँग काम गर्दैछौं, आउनुहोस्, प्रशिक्षित मोडेललाई Python-निर्मित वेब एपले पढ्न मिल्ने ढाँचामा निर्यात गर्नका लागि आवश्यक चरणहरूको अन्वेषण गरौं।
+
+## उपकरण
+
+यस कार्यका लागि तपाईंलाई दुई उपकरणहरू चाहिन्छ: Flask र Pickle, दुवै Python मा चल्छन्।
+
+✅ [Flask](https://palletsprojects.com/p/flask/) के हो? यसको सिर्जनाकर्ताहरूले 'माइक्रो-फ्रेमवर्क' भनेर परिभाषित गरेको Flask ले Python प्रयोग गरेर वेब फ्रेमवर्कहरूको आधारभूत सुविधाहरू र वेब पृष्ठहरू निर्माण गर्न टेम्प्लेटिङ इन्जिन प्रदान गर्दछ। Flask प्रयोग गरेर निर्माण अभ्यास गर्न [यो सिकाइ मोड्युल](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' गर्न भनिएको छ भने सावधान रहनुहोस्। Pickled फाइलको उपसर्ग `.pkl` हुन्छ।
+
+## अभ्यास - तपाईंको डाटा सफा गर्नुहोस्
+
+यस पाठमा तपाईंले [NUFORC](https://nuforc.org) (The National UFO Reporting Center) द्वारा सङ्कलित ८०,००० UFO देखाइहरूको डाटाको प्रयोग गर्नुहुनेछ। यस डाटामा UFO देखाइहरूको केही रोचक विवरणहरू छन्, जस्तै:
+
+- **लामो विवरणको उदाहरण।** "रातको समयमा घाँसे मैदानमा प्रकाशको किरणबाट एक व्यक्ति बाहिर निस्कन्छ र टेक्सास इन्स्ट्रुमेन्ट्सको पार्किङ क्षेत्रमा दौडन्छ।"
+- **छोटो विवरणको उदाहरण।** "प्रकाशहरूले हामीलाई पछ्यायो।"
+
+[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) स्प्रेडशीटमा `city`, `state` र `country` जहाँ देखाइ भएको थियो, वस्तुको `shape` र यसको `latitude` र `longitude` बारेका स्तम्भहरू समावेश छन्।
+
+यस पाठमा समावेश गरिएको खाली [notebook](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 मानहरू हटाएर र १-६० सेकेन्डको बीचका देखाइहरू मात्र आयात गरेर डाटा घटाउन सक्नुहुन्छ:
+
+ ```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. Logistic regression प्रयोग गरेर तपाईंको मोडेल प्रशिक्षण गर्नुहोस्:
+
+ ```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))
+ ```
+
+सटीकता नराम्रो छैन **(करिब ९५%)**, जुन आश्चर्यजनक होइन, किनभने `Country` र `Latitude/Longitude` सम्बन्धित छन्।
+
+तपाईंले निर्माण गर्नुभएको मोडेल धेरै क्रान्तिकारी छैन, किनभने तपाईंले `Latitude` र `Longitude` बाट `Country` अनुमान गर्न सक्नुहुन्छ, तर यो कच्चा डाटाबाट प्रशिक्षण गर्ने, निर्यात गर्ने, र त्यसपछि यो मोडेललाई वेब एपमा प्रयोग गर्ने अभ्यास गर्न राम्रो हो।
+
+## अभ्यास - तपाईंको मोडेललाई 'pickle' गर्नुहोस्
+
+अब, तपाईंको मोडेललाई _pickle_ गर्ने समय हो! तपाईंले यो केही लाइनको कोडमा गर्न सक्नुहुन्छ। एक पटक यो _pickled_ भएपछि, तपाईंको pickled मोडेल लोड गर्नुहोस् र सेकेन्ड, अक्षांश र देशान्तरका मानहरू समावेश भएको नमूना डाटा एरेमा परीक्षण गर्नुहोस्,
+
+```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. _web-app_ को रुटमा **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 }}
+
+
+
+
+
+
+
+ ```
+
+ यस फाइलमा टेम्प्लेटिङलाई हेर्नुहोस्। ध्यान दिनुहोस्, यसमा एपले प्रदान गर्ने भेरिएबलहरू वरिपरि 'mustache' सिन्ट्याक्स छ, जस्तै भविष्यवाणी पाठ: `{{}}`। त्यहाँ एउटा फारम पनि छ, जसले `/predict` रूटमा भविष्यवाणी पोस्ट गर्दछ।
+
+ अन्ततः, तपाईंले 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 एरेमा रूपान्तरण गरिन्छ। त्यसपछि तिनीहरूलाई मोडेलमा पठाइन्छ र भविष्यवाणी फिर्ता गरिन्छ।
+2. हामीले प्रदर्शन गर्न चाहेका देशहरूलाई भविष्यवाणी गरिएको देश कोडबाट पठनीय पाठको रूपमा पुनः प्रस्तुत गरिन्छ, र त्यो मान index.html मा पठाइन्छ, जसले टेम्प्लेटमा प्रस्तुत गर्दछ।
+
+Flask र pickled मोडेलको साथमा मोडेल प्रयोग गर्नु तुलनात्मक रूपमा सरल छ। सबैभन्दा गाह्रो कुरा भनेको मोडेललाई भविष्यवाणी प्राप्त गर्न पठाउनुपर्ने डाटाको स्वरूप बुझ्नु हो। यो सबै मोडेल कसरी प्रशिक्षण गरियो भन्नेमा निर्भर गर्दछ। यसमा भविष्यवाणी प्राप्त गर्न तीनवटा डाटा पोइन्टहरू इनपुट गर्नुपर्छ।
+
+पेशागत सेटिङमा, तपाईंले मोडेल प्रशिक्षण गर्ने व्यक्तिहरू र वेब वा मोबाइल एपमा यसलाई उपभोग गर्ने व्यक्तिहरूबीच राम्रो सञ्चार आवश्यक छ भन्ने देख्न सक्नुहुन्छ। हाम्रो मामिलामा, यो केवल एक व्यक्ति, तपाईं हो!
+
+---
+
+## 🚀 चुनौती
+
+नोटबुकमा काम गरेर मोडेललाई Flask एपमा आयात गर्नुको सट्टा, तपाईंले Flask एपभित्रै मोडेल प्रशिक्षण गर्न सक्नुहुन्छ! तपाईंको नोटबुकमा रहेको Python कोडलाई रूपान्तरण गरेर, सम्भवतः तपाईंको डाटा सफा भएपछि, एपभित्रै `train` नामक रूटमा मोडेल प्रशिक्षण गर्न प्रयास गर्नुहोस्। यो विधि अपनाउँदा के फाइदा र बेफाइदा छन्?
+
+## [पाठपछिको प्रश्नोत्तरी](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/18/)
+
+## समीक्षा र आत्म अध्ययन
+
+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/ne/3-Web-App/1-Web-App/assignment.md b/translations/ne/3-Web-App/1-Web-App/assignment.md
new file mode 100644
index 000000000..f73fd9ac0
--- /dev/null
+++ b/translations/ne/3-Web-App/1-Web-App/assignment.md
@@ -0,0 +1,25 @@
+
+# अर्को मोडेल प्रयास गर्नुहोस्
+
+## निर्देशनहरू
+
+अब तपाईंले प्रशिक्षित Regression मोडेल प्रयोग गरेर एउटा वेब एप निर्माण गर्नुभएको छ, पहिलेको Regression पाठबाट कुनै एक मोडेल प्रयोग गरेर यो वेब एप पुनः बनाउनुहोस्। तपाईंले शैली राख्न सक्नुहुन्छ वा यसलाई कद्दूको डाटालाई प्रतिबिम्बित गर्न फरक तरिकाले डिजाइन गर्न सक्नुहुन्छ। आफ्नो मोडेलको प्रशिक्षण विधिलाई प्रतिबिम्बित गर्न इनपुटहरू परिवर्तन गर्न ध्यान दिनुहोस्।
+
+## मूल्यांकन मापदण्ड
+
+| मापदण्ड | उत्कृष्ट | पर्याप्त | सुधार आवश्यक |
+| -------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | ---------------------------------- |
+| | वेब एप अपेक्षाकृत रूपमा चल्छ र क्लाउडमा तैनात गरिएको छ | वेब एपमा त्रुटिहरू छन् वा अप्रत्याशित परिणाम देखाउँछ | वेब एप ठीकसँग काम गर्दैन |
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/3-Web-App/1-Web-App/notebook.ipynb b/translations/ne/3-Web-App/1-Web-App/notebook.ipynb
new file mode 100644
index 000000000..e69de29bb
diff --git a/translations/ne/3-Web-App/1-Web-App/solution/notebook.ipynb b/translations/ne/3-Web-App/1-Web-App/solution/notebook.ipynb
new file mode 100644
index 000000000..d246f4dda
--- /dev/null
+++ b/translations/ne/3-Web-App/1-Web-App/solution/notebook.ipynb
@@ -0,0 +1,267 @@
+{
+ "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-08-29T19:23:31+00:00",
+ "source_file": "3-Web-App/1-Web-App/solution/notebook.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "source": [],
+ "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": "
"
+ },
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/ne/3-Web-App/README.md b/translations/ne/3-Web-App/README.md
new file mode 100644
index 000000000..a1a8cf598
--- /dev/null
+++ b/translations/ne/3-Web-App/README.md
@@ -0,0 +1,35 @@
+
+# आफ्नो ML मोडेल प्रयोग गर्न वेब एप बनाउनुहोस्
+
+यस पाठ्यक्रमको यस भागमा, तपाईंलाई एक प्रयोगात्मक ML विषयमा परिचय गराइनेछ: कसरी आफ्नो Scikit-learn मोडेललाई फाइलको रूपमा सुरक्षित गर्ने जसलाई वेब एप्लिकेसनमा भविष्यवाणी गर्न प्रयोग गर्न सकिन्छ। मोडेल सुरक्षित गरेपछि, तपाईंले यसलाई Flask मा बनाइएको वेब एपमा प्रयोग गर्न सिक्नुहुनेछ। तपाईंले पहिलोमा केही डाटाको प्रयोग गरेर मोडेल बनाउनुहुनेछ, जुन UFO देखिएको घटनाको बारेमा हुनेछ! त्यसपछि, तपाईंले एउटा वेब एप बनाउनुहुनेछ जसले तपाईंलाई सेकन्डको संख्या, अक्षांश र देशान्तरको मान प्रविष्ट गर्न अनुमति दिनेछ, ताकि कुन देशले UFO देखेको रिपोर्ट गरेको हो भनेर भविष्यवाणी गर्न सकियोस्।
+
+
+
+फोटो माइकल हेरेन द्वारा 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) द्वारा अभिनव सागरको सुझावमा आधारित छ।
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/4-Classification/1-Introduction/README.md b/translations/ne/4-Classification/1-Introduction/README.md
new file mode 100644
index 000000000..4c51dd39c
--- /dev/null
+++ b/translations/ne/4-Classification/1-Introduction/README.md
@@ -0,0 +1,313 @@
+
+# वर्गीकरणको परिचय
+
+यी चार पाठहरूमा, तपाईं क्लासिक मेसिन लर्निङको एक आधारभूत ध्यान केन्द्रित गर्नेछौं - _वर्गीकरण_। हामी एशिया र भारतका सबै उत्कृष्ट परिकारहरूको डाटासेट प्रयोग गरेर विभिन्न वर्गीकरण एल्गोरिदमहरूको प्रयोग गर्नेछौं। आशा छ तपाईं भोकै हुनुहुन्छ!
+
+
+
+> यी पाठहरूमा प्यान-एशियाली परिकारहरूको उत्सव मनाउनुहोस्! छवि [Jen Looper](https://twitter.com/jenlooper) द्वारा
+
+वर्गीकरण [सुपरभाइज्ड लर्निङ](https://wikipedia.org/wiki/Supervised_learning) को एक प्रकार हो जसले रिग्रेसन प्रविधिहरूसँग धेरै समानता राख्छ। यदि मेसिन लर्निङ डाटासेटहरू प्रयोग गरेर मूल्यहरू वा वस्तुहरूको नामको भविष्यवाणी गर्ने बारेमा हो भने, वर्गीकरण सामान्यतया दुई समूहमा विभाजित हुन्छ: _बाइनरी वर्गीकरण_ र _मल्टिक्लास वर्गीकरण_।
+
+[](https://youtu.be/eg8DJYwdMyg "वर्गीकरणको परिचय")
+
+> 🎥 माथिको छविमा क्लिक गर्नुहोस्: MIT का John Guttag ले वर्गीकरणको परिचय दिनुहुन्छ
+
+स्मरण गर्नुहोस्:
+
+- **लिनियर रिग्रेसन** ले तपाईंलाई भेरिएबलहरू बीचको सम्बन्धको भविष्यवाणी गर्न र नयाँ डाटाप्वाइन्ट उक्त रेखासँग सम्बन्धित कहाँ पर्नेछ भनेर सटीक भविष्यवाणी गर्न मद्दत गर्यो। उदाहरणका लागि, तपाईं _सेप्टेम्बर बनाम डिसेम्बरमा कद्दूको मूल्य कति हुनेछ_ भविष्यवाणी गर्न सक्नुहुन्छ।
+- **लजिस्टिक रिग्रेसन** ले तपाईंलाई "बाइनरी श्रेणीहरू" पत्ता लगाउन मद्दत गर्यो: यो मूल्य बिन्दुमा, _यो कद्दू सुन्तला हो वा गैर-सुन्तला_?
+
+वर्गीकरणले विभिन्न एल्गोरिदमहरू प्रयोग गरेर डाटाप्वाइन्टको लेबल वा वर्ग निर्धारण गर्ने अन्य तरिकाहरू पत्ता लगाउँछ। आउनुहोस्, हामी यो परिकार डाटासँग काम गरौं र हेर्नुहोस् कि सामग्रीहरूको समूहलाई अवलोकन गरेर, हामी यसको उत्पत्तिको परिकार पत्ता लगाउन सक्छौं कि सक्दैनौं।
+
+## [पाठ अघि क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/19/)
+
+> ### [यो पाठ R मा उपलब्ध छ!](../../../../4-Classification/1-Introduction/solution/R/lesson_10.html)
+
+### परिचय
+
+वर्गीकरण मेसिन लर्निङ अनुसन्धानकर्ता र डाटा वैज्ञानिकको आधारभूत गतिविधिहरूमध्ये एक हो। बाइनरी मानको आधारभूत वर्गीकरण ("यो इमेल स्प्याम हो वा होइन?") देखि लिएर कम्प्युटर भिजन प्रयोग गरेर जटिल छवि वर्गीकरण र खण्डनसम्म, डाटालाई वर्गमा क्रमबद्ध गर्न र यसबाट प्रश्न सोध्न सक्षम हुनु सधैं उपयोगी हुन्छ।
+
+वैज्ञानिक तरिकामा प्रक्रिया बताउन, तपाईंको वर्गीकरण विधिले एक भविष्यवाणी मोडेल सिर्जना गर्दछ जसले इनपुट भेरिएबलहरू र आउटपुट भेरिएबलहरू बीचको सम्बन्धलाई म्याप गर्न सक्षम बनाउँछ।
+
+
+
+> वर्गीकरण एल्गोरिदमहरूले सामना गर्नुपर्ने बाइनरी बनाम मल्टिक्लास समस्या। [Jen Looper](https://twitter.com/jenlooper) द्वारा इन्फोग्राफिक
+
+हाम्रो डाटा सफा गर्ने, दृश्यात्मक बनाउने, र यसलाई हाम्रो एमएल कार्यहरूको लागि तयार गर्ने प्रक्रिया सुरु गर्नु अघि, मेसिन लर्निङले डाटालाई वर्गीकृत गर्न प्रयोग गर्न सक्ने विभिन्न तरिकाहरूको बारेमा थोरै सिकौं।
+
+[सांख्यिकी](https://wikipedia.org/wiki/Statistical_classification) बाट व्युत्पन्न, क्लासिक मेसिन लर्निङ प्रयोग गरेर वर्गीकरणले `smoker`, `weight`, र `age` जस्ता विशेषताहरू प्रयोग गर्दछ _X रोग विकासको सम्भावना_ निर्धारण गर्न। तपाईंले पहिले प्रदर्शन गरेको रिग्रेसन अभ्यासहरू जस्तै सुपरभाइज्ड लर्निङ प्रविधिको रूपमा, तपाईंको डाटा लेबल गरिएको छ र एमएल एल्गोरिदमहरूले ती लेबलहरू प्रयोग गरेर डाटासेटको वर्गहरू (वा 'विशेषताहरू') वर्गीकृत र भविष्यवाणी गर्दछ र तिनीहरूलाई समूह वा परिणाममा असाइन गर्दछ।
+
+✅ परिकारहरूको बारेमा डाटासेट कल्पना गर्न एक क्षण लिनुहोस्। मल्टिक्लास मोडेलले के उत्तर दिन सक्छ? बाइनरी मोडेलले के उत्तर दिन सक्छ? यदि तपाईंले पत्ता लगाउन चाहनुहुन्छ कि कुनै परिकारले मेथी प्रयोग गर्ने सम्भावना छ कि छैन भने के हुन्छ? यदि तपाईंले तारा सौंफ, आर्टिचोक, फूलगोभी, र हर्सराडिशले भरिएको किराना झोला उपहार पाएर, तपाईंले एक सामान्य भारतीय परिकार बनाउन सक्नुहुन्छ भने के हुन्छ?
+
+[](https://youtu.be/GuTeDbaNoEU "पागल रहस्यमय बास्केटहरू")
+
+> 🎥 माथिको छविमा क्लिक गर्नुहोस्। 'Chopped' शोको सम्पूर्ण आधार 'रहस्यमय बास्केट' हो जहाँ शेफहरूले सामग्रीहरूको अनियमित छनोटबाट केही परिकार बनाउनुपर्छ। निश्चय नै एमएल मोडेलले मद्दत गर्थ्यो!
+
+## हेलो 'क्लासिफायर'
+
+हामीले यो परिकार डाटासेटबाट सोध्न चाहेको प्रश्न वास्तवमा एक **मल्टिक्लास प्रश्न** हो, किनकि हामीसँग काम गर्न धेरै सम्भावित राष्ट्रिय परिकारहरू छन्। सामग्रीहरूको एक ब्याच दिइएको छ, यी धेरै वर्गहरू मध्ये कुनमा डाटा फिट हुनेछ?
+
+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()
+ ```
+
+ 
+
+ परिकारहरूको संख्या सीमित छ, तर डाटाको वितरण असमान छ। तपाईं यसलाई ठीक गर्न सक्नुहुन्छ! त्यसो गर्नु अघि, थोरै थप अन्वेषण गर्नुहोस्।
+
+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()
+ ```
+
+ 
+
+1. जापानी डाटाको लागि पनि त्यही गर्नुहोस्:
+
+ ```python
+ japanese_ingredient_df = create_ingredient_df(japanese_df)
+ japanese_ingredient_df.head(10).plot.barh()
+ ```
+
+ 
+
+1. अब चिनियाँ सामग्रीहरूको लागि:
+
+ ```python
+ chinese_ingredient_df = create_ingredient_df(chinese_df)
+ chinese_ingredient_df.head(10).plot.barh()
+ ```
+
+ 
+
+1. भारतीय सामग्रीहरू प्लट गर्नुहोस्:
+
+ ```python
+ indian_ingredient_df = create_ingredient_df(indian_df)
+ indian_ingredient_df.head(10).plot.barh()
+ ```
+
+ 
+
+1. अन्तमा, कोरियाली सामग्रीहरू प्लट गर्नुहोस्:
+
+ ```python
+ korean_ingredient_df = create_ingredient_df(korean_df)
+ korean_ingredient_df.head(10).plot.barh()
+ ```
+
+ 
+
+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) - "Synthetic Minority Over-sampling Technique" - प्रयोग गरेर यसलाई सन्तुलित गर्नुहोस्।
+
+1. `fit_resample()` कल गर्नुहोस्, यो रणनीतिले इन्टरपोलेशनद्वारा नयाँ नमूनाहरू उत्पन्न गर्दछ।
+
+ ```python
+ oversample = SMOTE()
+ transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df)
+ ```
+
+ तपाईंको डाटालाई सन्तुलित गरेर, तपाईंले यसलाई वर्गीकृत गर्दा राम्रो परिणाम प्राप्त गर्नुहुनेछ। बाइनरी वर्गीकरणको बारेमा सोच्नुहोस्। यदि तपाईंको अधिकांश डाटा एक वर्ग हो भने, एमएल मोडेलले उक्त वर्गलाई बढी बारम्बार भविष्यवाणी गर्नेछ, केवल त्यहाँ यसको लागि बढी डाटा भएको कारण। डाटालाई सन्तुलित गर्दा कुनै पनि असमान डाटालाई हटाउन मद्दत गर्दछ।
+
+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://gray-sand-07a10f403.1.azurestaticapps.net/quiz/20/)
+
+## समीक्षा र आत्म अध्ययन
+
+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/ne/4-Classification/1-Introduction/assignment.md b/translations/ne/4-Classification/1-Introduction/assignment.md
new file mode 100644
index 000000000..c3a7314c7
--- /dev/null
+++ b/translations/ne/4-Classification/1-Introduction/assignment.md
@@ -0,0 +1,25 @@
+
+# वर्गीकरण विधिहरू अन्वेषण गर्नुहोस्
+
+## निर्देशनहरू
+
+[Scikit-learn दस्तावेज](https://scikit-learn.org/stable/supervised_learning.html) मा तपाईंले डेटा वर्गीकरण गर्ने धेरै विधिहरूको सूची पाउन सक्नुहुन्छ। यी दस्तावेजहरूमा सानो खोजी गर्नुहोस्: तपाईंको लक्ष्य वर्गीकरण विधिहरू खोज्नु र यस पाठ्यक्रममा रहेको कुनै डेटासेट, त्यसमा सोध्न सकिने प्रश्न, र वर्गीकरणको प्रविधिलाई मिलाउनु हो। एउटा स्प्रेडशीट वा .doc फाइलमा तालिका बनाउनुहोस् र डेटासेट वर्गीकरण एल्गोरिदमसँग कसरी काम गर्नेछ भनेर व्याख्या गर्नुहोस्।
+
+## मूल्यांकन मापदण्ड
+
+| मापदण्ड | उत्कृष्ट | पर्याप्त | सुधार आवश्यक |
+| -------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| | ५ एल्गोरिदमहरूको साथमा वर्गीकरण प्रविधिको अवलोकन प्रस्तुत गरिएको छ। अवलोकन राम्रोसँग व्याख्या गरिएको र विस्तृत छ। | ३ एल्गोरिदमहरूको साथमा वर्गीकरण प्रविधिको अवलोकन प्रस्तुत गरिएको छ। अवलोकन राम्रोसँग व्याख्या गरिएको र विस्तृत छ। | ३ भन्दा कम एल्गोरिदमहरूको साथमा वर्गीकरण प्रविधिको अवलोकन प्रस्तुत गरिएको छ र अवलोकन न त राम्रोसँग व्याख्या गरिएको छ न विस्तृत छ। |
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/4-Classification/1-Introduction/notebook.ipynb b/translations/ne/4-Classification/1-Introduction/notebook.ipynb
new file mode 100644
index 000000000..1197a61af
--- /dev/null
+++ b/translations/ne/4-Classification/1-Introduction/notebook.ipynb
@@ -0,0 +1,39 @@
+{
+ "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-08-29T19:32:29+00:00",
+ "source_file": "4-Classification/1-Introduction/notebook.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "source": [],
+ "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"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/ne/4-Classification/1-Introduction/solution/Julia/README.md b/translations/ne/4-Classification/1-Introduction/solution/Julia/README.md
new file mode 100644
index 000000000..8ad2476c5
--- /dev/null
+++ b/translations/ne/4-Classification/1-Introduction/solution/Julia/README.md
@@ -0,0 +1,15 @@
+
+
+
+---
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
diff --git a/translations/ne/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb b/translations/ne/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb
new file mode 100644
index 000000000..737e2eb63
--- /dev/null
+++ b/translations/ne/4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb
@@ -0,0 +1,718 @@
+{
+ "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-08-29T19:36:15+00:00",
+ "source_file": "4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb",
+ "language_code": "ne"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [],
+ "metadata": {
+ "id": "ItETB4tSFprR"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## वर्गीकरणको परिचय: आफ्नो डाटा सफा गर्नुहोस्, तयार गर्नुहोस्, र दृश्यात्मक बनाउनुहोस्\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",
+ "[सांख्यिकी](https://wikipedia.org/wiki/Statistical_classification) बाट व्युत्पन्न, क्लासिक मेसिन लर्निङ प्रयोग गरेर वर्गीकरणले `स्मोकर`, `वजन`, र `उमेर` जस्ता विशेषताहरू प्रयोग गरेर *X रोग विकासको सम्भावना* निर्धारण गर्दछ। तपाईंले पहिले गरेका रिग्रेसन अभ्यासहरू जस्तै सुपरभाइज्ड लर्निङ प्रविधिको रूपमा, तपाईंको डाटा लेबल गरिएको हुन्छ र एमएल एल्गोरिदमहरूले ती लेबलहरू प्रयोग गरेर डाटासेटको वर्गहरू (वा 'विशेषताहरू') वर्गीकृत र भविष्यवाणी गर्छन् र तिनीहरूलाई समूह वा परिणाममा असाइन गर्छन्।\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",
+ "अब, प्रत्येक खानालाई यसको आफ्नै tibble मा विभाजन गरौं र प्रत्येक खानाका लागि कति डाटा उपलब्ध छ (पंक्ति, स्तम्भ) पत्ता लगाऔं।\n",
+ "\n",
+ "> [tibble](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": [
+ "## **अभ्यास - dplyr प्रयोग गरेर विभिन्न खानाका शीर्ष सामग्री पत्ता लगाउनुहोस्**\n",
+ "\n",
+ "अब तपाईंले डाटामा गहिरो अध्ययन गर्न सक्नुहुन्छ र विभिन्न खानाका लागि सामान्य सामग्रीहरू के हुन् भनेर जान्न सक्नुहुन्छ। तपाईंले बारम्बार दोहोरिने डाटा हटाउनुपर्छ जसले विभिन्न खानाहरू बीच भ्रम सिर्जना गर्दछ, त्यसैले यस समस्याबारे सिकौं।\n",
+ "\n",
+ "R मा `create_ingredient()` नामको एउटा function बनाउनुहोस् जसले सामग्रीको dataframe फिर्ता गर्छ। यो function ले एउटा अनुपयोगी स्तम्भ हटाएर सामग्रीलाई तिनीहरूको गणनाका आधारमा क्रमबद्ध गर्न सुरु गर्नेछ।\n",
+ "\n",
+ "R मा function को आधारभूत संरचना यस्तो छ:\n",
+ "\n",
+ "`myFunction <- function(arglist){`\n",
+ "\n",
+ "**`...`**\n",
+ "\n",
+ "**`return`**`(value)`\n",
+ "\n",
+ "`}`\n",
+ "\n",
+ "R functions को बारेमा व्यवस्थित परिचय [यहाँ](https://skirmer.github.io/presentations/functions_with_r.html#1) भेट्न सकिन्छ।\n",
+ "\n",
+ "अब काम सुरु गरौं! हामीले अघिल्लो पाठहरूमा सिकेका [dplyr verbs](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 द्वारा तयार गरिएको [*art*-ले भरिएको learnr tutorial](https://allisonhorst.shinyapps.io/dplyr-learnr/#section-welcome) हेर्नुहोस्, जसले dplyr *(Tidyverse को भाग)* मा केही उपयोगी डाटा व्यवस्थापन functions प्रस्तुत गर्दछ।\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": [],
+ "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": [],
+ "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": [],
+ "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": [
+ "जस्तो देखिन्छ, यहाँ परिकारहरूको संख्यामा धेरै असमान वितरण छ। कोरियन परिकारहरू थाई परिकारहरूको लगभग तीन गुणा छन्। असन्तुलित डाटाले प्रायः मोडेलको प्रदर्शनमा नकारात्मक प्रभाव पार्छ। एउटा बाइनरी वर्गीकरणको बारेमा सोच्नुहोस्। यदि तपाईंको अधिकांश डाटा एउटै वर्गको हो भने, एउटा 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",
+ "> जब तपाईं **`new_data = NULL`** को साथमा प्रिप गरिएको रेसिपीलाई **`bake()`** गर्नुहुन्छ, तपाईंले रेसिपी परिभाषा गर्दा दिएको डाटा फिर्ता पाउनुहुन्छ, तर यसले प्रिप्रोसेसिङ चरणहरू पार गरिसकेको हुन्छ।\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",
+ "- [प्याकेज themis](https://github.com/tidymodels/themis) हेर्नुहोस्। असन्तुलित डेटा समाधान गर्न हामी कुन अन्य प्रविधिहरू प्रयोग गर्न सक्दछौं?\n",
+ "\n",
+ "- Tidy models [सन्दर्भ वेबसाइट](https://www.tidymodels.org/start/)।\n",
+ "\n",
+ "- एच. विकह्याम र जी. ग्रोलमन्ड, [*R for Data Science: Visualize, Model, Transform, Tidy, and Import Data*](https://r4ds.had.co.nz/)।\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",
+ "[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यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।\n"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/ne/4-Classification/1-Introduction/solution/notebook.ipynb b/translations/ne/4-Classification/1-Introduction/solution/notebook.ipynb
new file mode 100644
index 000000000..2f220284d
--- /dev/null
+++ b/translations/ne/4-Classification/1-Introduction/solution/notebook.ipynb
@@ -0,0 +1,695 @@
+{
+ "cells": [
+ {
+ "source": [
+ "# स्वादिष्ट एशियाली र भारतीय परिकारहरू\n",
+ "\n",
+ "## परिचय\n",
+ "एशियाली र भारतीय परिकारहरू विश्वभरि लोकप्रिय छन्। यी परिकारहरू स्वाद, मसला, र विविधताका लागि चिनिन्छन्। यस गाइडले तपाईंलाई केही प्रसिद्ध परिकारहरूको बारेमा जानकारी दिनेछ।\n",
+ "\n",
+ "## एशियाली परिकारहरू\n",
+ "### सुशी\n",
+ "सुशी जापानी परिकार हो जसमा भात, समुद्री खाना, र अन्य सामग्रीहरू समावेश गरिन्छ। यो ताजा र स्वस्थ विकल्प हो।\n",
+ "\n",
+ "### थाई करी\n",
+ "थाई करी विभिन्न प्रकारका हुन्छन्, जस्तै रातो, हरियो, र पहेंलो। यसमा मसला, नारियलको दूध, र तरकारीहरू प्रयोग गरिन्छ।\n",
+ "\n",
+ "### डिम सम\n",
+ "डिम सम सानो आकारका परिकारहरू हुन्, प्रायः स्टीम गरिएका वा फ्राई गरिएका। यो चाइनिज परिकार हो जुन चिया संग खाइन्छ।\n",
+ "\n",
+ "## भारतीय परिकारहरू\n",
+ "### बटर चिकन\n",
+ "बटर चिकन एक लोकप्रिय भारतीय परिकार हो। यसमा चिकनलाई मसालेदार टमाटरको ग्रेवीमा पकाइन्छ।\n",
+ "\n",
+ "### बिरयानी\n",
+ "बिरयानी मसालेदार भातको परिकार हो जसमा मासु, तरकारी, र मसालाहरू मिसाइन्छ। यो विभिन्न क्षेत्रहरूमा फरक शैलीमा बनाइन्छ।\n",
+ "\n",
+ "### समोसा\n",
+ "समोसा एक स्न्याक हो जसमा आलु, मटर, र मसालाहरू भरिएको हुन्छ। यसलाई डीप फ्राई गरिन्छ र चटनीसँग खाइन्छ।\n",
+ "\n",
+ "## निष्कर्ष\n",
+ "एशियाली र भारतीय परिकारहरू स्वाद र विविधताका लागि उत्कृष्ट छन्। यी परिकारहरू घरमै बनाउन सकिन्छ वा रेस्टुरेन्टमा मजा लिन सकिन्छ।\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "source": [],
+ "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": [
+ "यो डेटासेटमा विभिन्न परिकारहरूको सेटबाट विभिन्न परिकारहरूमा सबै प्रकारका सामग्रीहरू संकेत गर्ने ३८५ स्तम्भहरू समावेश छन्।\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"
+ ]
+ },
+ "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",
+ "जसरी तपाईंले मूल डाटा सेट र हाम्रो प्रशिक्षण सेटमा देख्नुभएको छ, त्यहाँ खानाका प्रकारहरूको संख्यामा धेरै असमान वितरण छ। कोरियन खानाहरू *लगभग* थाई खानाहरूको तीन गुणा छन्। असन्तुलित डाटाले मोडेलको प्रदर्शनमा नकारात्मक प्रभाव पार्न सक्छ। धेरै मोडेलहरू तब राम्रो प्रदर्शन गर्छन् जब अवलोकनहरूको संख्या समान हुन्छ, र त्यसैले असन्तुलित डाटासँग संघर्ष गर्न सक्छन्।\n",
+ "\n",
+ "असन्तुलित डाटासँग व्यवहार गर्नका लागि मुख्यत: दुई तरिकाहरू छन्:\n",
+ "\n",
+ "- अल्पसंख्यक वर्गमा अवलोकनहरू थप्ने: `Over-sampling` जस्तै SMOTE एल्गोरिदम प्रयोग गरेर, जसले यी केसहरूको नजिकका छिमेकीहरूको प्रयोग गरी अल्पसंख्यक वर्गका नयाँ उदाहरणहरू कृत्रिम रूपमा सिर्जना गर्छ।\n",
+ "\n",
+ "- बहुसंख्यक वर्गबाट अवलोकनहरू हटाउने: `Under-sampling`\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",
+ "## ३. तपाईंको वर्गीकरणकर्ता चयन गर्दै\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) ले विभिन्न इन्जिनहरू (प्याकेजहरू) मा आधारित मोडेलहरूसँग काम गर्नको लागि एक समान इन्टरफेस प्रदान गर्दछ। कृपया [मोडेल प्रकारहरू र इन्जिनहरू](https://www.tidymodels.org/find/parsnip/#models) र तिनीहरूको [मोडेल आर्गुमेन्टहरू](https://www.tidymodels.org/find/parsnip/#model-args) अन्वेषण गर्न parsnip को डकुमेन्टेशन हेर्नुहोस्। सुरुमा यो विविधता अलि झन्झटिलो लाग्न सक्छ। उदाहरणका लागि, निम्न विधिहरू सबै वर्गीकरण प्रविधिहरू समावेश गर्छन्:\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 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",
+ "- **दुई-वर्ग वर्गीकरणकर्ता प्रयोग गरिँदैन।** हामी दुई-वर्ग वर्गीकरणकर्ता प्रयोग गर्दैनौं, त्यसैले one-vs-all विधि उपयुक्त हुँदैन।\n",
+ "\n",
+ "- **डिसिजन ट्री वा लजिस्टिक रिग्रेसन उपयुक्त हुन सक्छ।** डिसिजन ट्री उपयुक्त हुन सक्छ, वा बहुवर्गीय डेटाका लागि बहुवर्गीय रिग्रेसन/लजिस्टिक रिग्रेसन।\n",
+ "\n",
+ "- **बहुवर्गीय बुस्टेड डिसिजन ट्री फरक समस्या समाधान गर्न डिजाइन गरिएको छ।** बहुवर्गीय बुस्टेड डिसिजन ट्री गैर-प्यारामेट्रिक कार्यहरूको लागि उपयुक्त छ, जस्तै रैंकिङ निर्माण गर्ने कार्यहरू, त्यसैले यो हाम्रो लागि उपयोगी छैन।\n",
+ "\n",
+ "सामान्यतया, जटिल मेसिन लर्निङ मोडेलहरू (जस्तै, एन्सेम्बल विधिहरू) सुरु गर्नु अघि, सबैभन्दा साधारण मोडेल निर्माण गरेर के भइरहेको छ भन्ने बुझ्न राम्रो हुन्छ। त्यसैले यस पाठका लागि, हामी `multinomial regression` मोडेलबाट सुरु गर्नेछौं।\n",
+ "\n",
+ "> लजिस्टिक रिग्रेसन एउटा प्रविधि हो जुन परिणाम चर श्रेणीगत (वा नाममात्र) हुँदा प्रयोग गरिन्छ। बाइनरी लजिस्टिक रिग्रेसनमा परिणाम चरहरूको संख्या दुई हुन्छ, जबकि बहुवर्गीय लजिस्टिक रिग्रेसनमा परिणाम चरहरूको संख्या दुईभन्दा बढी हुन्छ। थप जानकारीका लागि [Advanced Regression Methods](https://bookdown.org/chua/ber642_advanced_regression/multinomial-logistic-regression.html) हेर्नुहोस्।\n",
+ "\n",
+ "## ४. बहुवर्गीय लजिस्टिक रिग्रेसन मोडेल प्रशिक्षण र मूल्याङ्कन गर्नुहोस्।\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": [
+ "